pi-straw-boss 0.65.0 → 0.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/gui/assets/{allyasks-D6-qbc1-.js → allyasks-BZNhcAzR.js} +1 -1
- package/dist/gui/assets/{allyunits-9F0EL2hS.js → allyunits-CiWQ_1fg.js} +1 -1
- package/dist/gui/assets/{answer-BGx_MR0_.js → answer-Bg3gEVd2.js} +1 -1
- package/dist/gui/assets/{ask-B4kFu14y.js → ask-MmIfppi0.js} +1 -1
- package/dist/gui/assets/{asks-6rFpxtfn.js → asks-5KFUVA6K.js} +1 -1
- package/dist/gui/assets/{blockschunk-_O5tzIz3.js → blockschunk-BUDWgG4j.js} +1 -1
- package/dist/gui/assets/{box-CWgt0ohk.js → box-Cv20rAxe.js} +1 -1
- package/dist/gui/assets/{chat-DKFeuNgT.js → chat-C-vINaW-.js} +2 -2
- package/dist/gui/assets/{drawer-OeEwoJQo.js → drawer-BY8_MqRm.js} +1 -1
- package/dist/gui/assets/index-BFhWoJqT.css +1 -0
- package/dist/gui/assets/{index-BFO7v8ut.js → index-K5BhU6id.js} +4 -4
- package/dist/gui/assets/{lanwait-Dd6xb1DG.js → lanwait-CNC6w8PS.js} +1 -1
- package/dist/gui/assets/{layer-BRVFIM1z.js → layer-DqNskYw2.js} +1 -1
- package/dist/gui/assets/{lightbox-8sSJm5zd.js → lightbox-D1aF3asz.js} +1 -1
- package/dist/gui/assets/{link-R-YY568H.js → link-N9pbMKZh.js} +1 -1
- package/dist/gui/assets/{linkdialogs-DxTu0D8T.js → linkdialogs-B-z94zEB.js} +1 -1
- package/dist/gui/assets/{mdbody-EVPNIWL0.js → mdbody-D2QvBfGJ.js} +2 -2
- package/dist/gui/assets/{pair-kfzneaUc.js → pair-DwbeqJNd.js} +1 -1
- package/dist/gui/assets/{picker-BAmCvIzI.js → picker-4z4w7Aox.js} +1 -1
- package/dist/gui/assets/{server-Bjho0xHo.js → server-DjAhrgPY.js} +1 -1
- package/dist/gui/assets/{sessionfacts-DraVqcn8.js → sessionfacts-CQdTlg5C.js} +1 -1
- package/dist/gui/assets/{settings-CWhBk3Lf.js → settings-_YuZVrAU.js} +2 -2
- package/dist/gui/assets/{spawn-hu6o_tH_.js → spawn-BHbkUTsF.js} +1 -1
- package/dist/gui/assets/{termcard-MF6BEhAM.js → termcard-fWsD3lx5.js} +1 -1
- package/dist/gui/assets/{trains-CHUnHCnc.js → trains-yl3Sz8PH.js} +1 -1
- package/dist/gui/assets/{trust-CRK0Pg4y.js → trust-CzO-DRZZ.js} +1 -1
- package/dist/gui/assets/views-B7aYMOO6.js +2 -0
- package/dist/gui/assets/{waitcard-Cg2QRetc.js → waitcard-Bz_xIwD_.js} +1 -1
- package/dist/gui/assets/{yard-CiF27mUk.js → yard-C3aXe5mu.js} +1 -1
- package/dist/gui/index.html +3 -3
- package/dist/gui/themes/geek/{geek-TbhSeyh9.css → geek-DKklPcga.css} +1 -1
- package/dist/gui/themes/raven/{raven-BYj3LJuz.js → raven-BZ3QG_Lj.js} +2 -2
- package/dist/gui/themes/raven/raven-D4iCVluC.css +1 -0
- package/dist/gui/themes/zen/{zen-BNitiN-F.js → zen-CwUmHrpT.js} +2 -2
- package/dist/gui/themes.json +5 -5
- package/dist/server/main.mjs +931 -808
- package/package.json +1 -1
- package/src/board.ts +3 -2
- package/src/boardcmd.ts +11 -0
- package/src/boardread.ts +9 -4
- package/src/boardview.ts +125 -0
- package/src/boss.ts +5 -2
- package/src/control.ts +4 -3
- package/src/gui.ts +3 -3
- package/src/header.ts +1 -1
- package/src/net.ts +5 -3
- package/src/operateroutes.ts +1 -0
- package/src/server/boardpanel.ts +63 -0
- package/src/server/guihost.ts +7 -1
- package/src/server/main.ts +3 -0
- package/dist/gui/assets/index-DINtJ4UN.css +0 -1
- package/dist/gui/assets/views-D__gY2Z_.js +0 -2
- package/dist/gui/themes/raven/raven-D3jHFcTF.css +0 -1
- /package/dist/gui/themes/geek/{geek-CcMn_xUX.js → geek-BKd8_UaJ.js} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as e}from"./towermodel-BpgH7epr.js";import{t}from"./runtime-ZX6HkxDa.js";import{ct as n,ft as r,ut as i}from"./index-
|
|
1
|
+
import{C as e}from"./towermodel-BpgH7epr.js";import{t}from"./runtime-ZX6HkxDa.js";import{ct as n,ft as r,ut as i}from"./index-K5BhU6id.js";import{mountDialogCards as a}from"./linkdialogs-B-z94zEB.js";var o=t=>{let n=e(`en`,t?.count,{},!0);return n===`one`?`${t?.count} question waits for you: answer it here`:n===`other`?`${t?.count} questions wait for you: answer them here`:`ally_asks_button`},s=e=>`${e?.count} 個問題等你回答,在這裡回答`,c=((e,n={})=>(n.locale??t())===`zh-TW`?s(e):o(e)),l=e=>e.tower===`blocked`||e.tabs.some(e=>e.state===`blocked`);function u(e){let t=new Map,r=i(e?.allies??[]);for(let i of e?.alerts??[]){let e=i.kind===`dialog`?n(i):void 0;if(e!==`open`&&e!==`sent`)continue;let a=r.filter(e=>e.device===i.data.device),o=a.filter(e=>e.teams.some(e=>e.team===i.team)),s=o.length?o:a,c=s.find(l)??s[0];c&&t.set(c.id,[...t.get(c.id)??[],i])}return t}var d=`.ally-unit[data-state="blocked"], .ally-tab[data-state="blocked"]`;function f(){let e=new WeakMap,t=t=>{let i=e.get(t);if(i)return i;let o=r(`button`,{type:`button`,class:`ally-asks-btn`,"aria-expanded":`false`}),s=r(`ul`,{class:`ally-asks-list`}),c=r(`div`,{class:`ally-asks`},o,s);return i={box:c,btn:o,list:s,cards:a(),ids:``},e.set(t,i),o.onclick=()=>n(t),t.addEventListener(`click`,e=>{let r=e.target?.closest?.(d);r&&t.contains(r)&&t.dataset.asks&&!e.target.closest(`details`)&&n(t)}),t.append(c),i};function n(t){let n=e.get(t);if(!n||!t.dataset.asks)return;let r=t.dataset.asking===void 0;r?t.dataset.asking=``:delete t.dataset.asking,n.list.hidden=!r,n.btn.setAttribute(`aria-expanded`,String(r))}function i(n,r){if(!r.length&&!e.has(n))return;let i=t(n);if(i.box.hidden=!r.length,!r.length){delete n.dataset.asks,delete n.dataset.asking,i.btn.setAttribute(`aria-expanded`,`false`),i.cards.keep(new Set),i.list.replaceChildren(),i.ids=``;return}n.dataset.asks=String(r.length),i.btn.textContent=c({count:r.length}),i.list.hidden=n.dataset.asking===void 0,i.cards.keep(new Set(r.map(e=>e.id)));let a=r.map(e=>i.cards.row(e)),o=r.map(e=>e.id).join(`
|
|
2
2
|
`);o!==i.ids&&(i.list.replaceChildren(...a),i.ids=o)}return{toggle:n,fill:i,show:(e,t,n)=>i(e,u(n).get(t.id)??[])}}export{f as mountAllyAsks};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as e}from"./towermodel-BpgH7epr.js";import{t}from"./runtime-ZX6HkxDa.js";import{t as n}from"./sentencepack-DtYqpppS.js";import{t as r}from"./link_unit_ago-CvB9wMxM.js";import{Dt as i,E as a,K as o,Rt as s,T as c,W as l,dt as u,j as d,kt as f,u as ee,y as p}from"./index-
|
|
1
|
+
import{C as e}from"./towermodel-BpgH7epr.js";import{t}from"./runtime-ZX6HkxDa.js";import{t as n}from"./sentencepack-DtYqpppS.js";import{t as r}from"./link_unit_ago-CvB9wMxM.js";import{Dt as i,E as a,K as o,Rt as s,T as c,W as l,dt as u,j as d,kt as f,u as ee,y as p}from"./index-K5BhU6id.js";var m=e=>`by ${e?.who}`,h=e=>`派工者 ${e?.who}`,g=((e,n={})=>(n.locale??t())===`zh-TW`?h(e):m(e)),_=((e={},n={})=>(n.locale??t())===`zh-TW`?`中斷並停止`:`Interrupt and stop`),te=e=>`${e?.box} was not asked: ${e?.reason}`,ne=e=>`沒有請 ${e?.box} 停止:${e?.reason}`,v=((e,n={})=>(n.locale??t())===`zh-TW`?ne(e):te(e)),y=((e={},n={})=>(n.locale??t())===`zh-TW`?`停止`:`Stop`),b=e=>`Stop the main ${e?.name}`,x=e=>`停止主智慧體 ${e?.name}`,S=((e,n={})=>(n.locale??t())===`zh-TW`?x(e):b(e)),C=(e,t)=>n(`link_main_stop_aria`,S,e,t),w=e=>`Ask ${e?.box} to stop the main ${e?.name}? Stop lets it quit when it is idle; Interrupt and stop aborts the turn it is in first. The box decides and tells you what happened.`,T=e=>`要請 ${e?.box} 停止主智慧體 ${e?.name} 嗎?「停止」等它閒下來才結束;「中斷並停止」會先中止它進行中的回合。由那台機器決定,結果會通知你。`,E=((e,n={})=>(n.locale??t())===`zh-TW`?T(e):w(e)),D=(e,t)=>n(`link_main_stop_ask`,E,e,t),O=e=>`Mains (${e?.count})`,k=e=>`主智慧體(${e?.count})`,A=((e,n={})=>(n.locale??t())===`zh-TW`?k(e):O(e)),j=(e,t)=>n(`link_mains`,A,e,t),M=((e={},n={})=>(n.locale??t())===`zh-TW`?`發生了什麼事`:`What happened`),N=((e={},n={})=>(n.locale??t())===`zh-TW`?`這個單位最後一次回報的時間`:`When this unit last reported`),P=t=>{let n=e(`en`,t?.count,{},!0);return n===`one`?`${t?.count} monitor`:n===`other`?`${t?.count} monitors`:`link_unit_monitors`},F=e=>`${e?.count} 個監看程序`,I=((e,n={})=>(n.locale??t())===`zh-TW`?F(e):P(e)),re=((e={},n={})=>(n.locale??t())===`zh-TW`?`最後回報`:`Last report`),L=((e={},n={})=>(n.locale??t())===`zh-TW`?`最近沒有狀態`:`no status lately`),R=((e={},n={})=>(n.locale??t())===`zh-TW`?`盒子已超過 3 分鐘沒送狀態,這是它最後一次的內容`:`The box has sent no status for 3 minutes; this is its last one`),z=((e={},n={})=>(n.locale??t())===`zh-TW`?`請在盒子的 trust.json 加入這個專案`:`Add the project to the box's trust.json`),B=((e={},n={})=>(n.locale??t())===`zh-TW`?`為什麼停了`:`Why it stopped`),V=((e={},n={})=>(n.locale??t())===`zh-TW`?`前更新`:` ago`),H=((e={},n={})=>(n.locale??t())===`zh-TW`?``:`updated `),U={choose:d,post:(e,t)=>o(e,t)},W=12e4,G=new Map,K=(e,t)=>`${e.device}/${t.handle}`,q=(e,t,n=Date.now())=>n-(G.get(K(e,t))??-1/0)<W;async function J(e,t,n){let r=await U.choose(D({box:n,name:t.name}),[{label:y(),value:`quit`},{label:_(),value:`interrupt`,tone:`danger`}]);if(!r)return!1;let a=await U.post(`link/unit-stop`,{team:t.team,device:e.device,handle:t.handle,mode:r,reason:``}).catch(()=>({ok:!1,status:0,body:{}}));return a.ok?(G.set(K(e,t),Date.now()),!0):(await U.choose(v({box:n,reason:a.body.reason??(a.status?i({status:a.status}):f())}),[]),!1)}var Y=()=>p(`<li class="ally-unit"><div class="au-head"><i class="au-dot"></i><b class="au-word"></b><span class="au-name"></span><span class="au-time" hidden><span class="au-pre"></span><span class="age"></span><span class="au-ago"></span></span><em class="au-stale" hidden></em></div><p class="au-mons" hidden><b></b><span></span></p><details class="au-mains" hidden><summary><b class="au-mains-label"></b></summary><ul class="au-main-list"></ul></details><details class="au-crash" hidden><summary><b></b><span class="au-time"><span class="age"></span><span class="au-ago"></span></span></summary><pre></pre><p class="au-hint" hidden></p></details><details class="au-report" hidden><summary><b class="au-label"></b><span class="au-peek"></span></summary><div class="md au-md"></div></details></li>`),X,Z=new WeakMap;function Q(e){let t=e.querySelector(`.au-md`),n=Z.get(e)??``;e.open&&t.dataset.report!==n&&(X?Promise.resolve(X):l(()=>import(`./markdown-Bk5NWfKQ.js`).then(e=>e.t).then(e=>X=e),[],import.meta.url)).then(({mount:r,parse:i})=>{e.open&&Z.get(e)===n&&(t.dataset.report=n,t.replaceChildren(r(i(n))))})}function $(e,t,n=``,i=r()){let a=e.querySelector(`.age`);a.dataset.since=String(t),a.textContent=ee(t),e.querySelector(`.au-pre`)?.replaceChildren(n),e.querySelector(`.au-ago`).textContent=i}var ie=()=>p(`<li class="au-main"><span class="au-mdot"></span><b class="au-mname"></b><span class="au-mstate"></span><span class="au-mby" hidden></span><button type="button" class="au-stop" hidden></button></li>`);function ae(e,t,n){let r=e.querySelector(`.au-mains`);r.hidden=!t.mains.length,t.mains.length&&(a(r,`.au-mains-label`,j({count:t.mains.length})),c(r.querySelector(`.au-main-list`),t.mains.map(e=>({...e,id:e.handle})),ie,(e,r)=>{let i=r.stopping||q(t,r),o=i?s():r.word;e.dataset.tone=i?`other`:r.tone,a(e,`.au-mname`,r.name),a(e,`.au-mstate`,o);let c=e.querySelector(`.au-mby`);c.hidden=r.byLabel===void 0,c.textContent=r.byLabel===void 0?``:g({who:r.byLabel});let l=e.querySelector(`.au-stop`);l.hidden=!r.canStop||i,l.textContent=y(),l.setAttribute(`aria-label`,C({name:r.name})),l.onclick=()=>{l.disabled=!0,J(t,r,n).then(t=>{l.disabled=!1,t&&(e.dataset.tone=`other`,a(e,`.au-mstate`,s()),l.hidden=!0)})}}))}function oe(e,t,n,r=``){c(e,t.map(e=>({...e,id:e.unit,named:n})),Y,(e,t)=>{e.dataset.state=t.state,e.dataset.tone=t.tone,e.classList.toggle(`stale`,t.stale),a(e,`.au-word`,t.word),a(e,`.au-name`,t.named?t.unit:``);let n=e.querySelector(`.au-head > .au-time`);n.hidden=!1,n.title=N(),$(n,t.at,H(),V());let i=e.querySelector(`.au-stale`);i.hidden=!t.stale,i.textContent=t.stale?L():``,i.title=t.stale?R():``;let o=e.querySelector(`.au-mons`);o.hidden=!t.monitors.length,t.monitors.length&&(a(o,`b`,I({count:t.monitors.length})),a(o,`span`,t.monitors.join(` · `)),o.title=t.monitors.join(`
|
|
2
2
|
`)),ae(e,t,r);let s=e.querySelector(`.au-crash`);if(s.hidden=!t.crash,s.toggleAttribute(`data-trust`,t.crash?.trust===!0),t.crash){a(s,`summary > b`,t.crash.trust?B():M()),$(s.querySelector(`summary > .au-time`),t.crash.at),a(s,`pre`,t.crash.text);let e=s.querySelector(`.au-hint`);e.hidden=!t.crash.trust,e.textContent=t.crash.trust?z():``}let c=e.querySelector(`.au-report`);c.hidden=!t.report,t.report&&(a(c,`.au-label`,re()),a(c,`.au-peek`,u(t.report)),Z.set(c,t.report),c.ontoggle=()=>Q(c),Q(c))})}export{oe as fillAllyUnits};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DK3Fl9T5.js";import{t}from"./ask-
|
|
1
|
+
import{t as e}from"./rolldown-runtime-DK3Fl9T5.js";import{t}from"./ask-MmIfppi0.js";import{K as n}from"./index-K5BhU6id.js";var r=e({answerPost:()=>i,canAnswer:()=>o,mountAnswer:()=>s,trustPost:()=>a}),i=(e,t)=>t?.(e)??((t,r)=>n(e.startsWith(`grant:`)?`panes/${encodeURIComponent(e.slice(6))}/${t}`:`sessions/${encodeURIComponent(e)}/${t}`,r)),a=e=>e??(e=>n(`trust/answer`,e)),o=(e,...t)=>e===`waiting`&&t.every(Boolean),s=(e,{key:n,show:r,post:i,remote:a,accepted:o,label:s,box:c})=>t(e,i,a,{key:n,show:r},o,s,c);export{a,s as i,r as n,o as r,i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./runtime-ZX6HkxDa.js";import{a as t,i as n,n as r,r as i,t as a}from"./sending-aEpvzoz2.js";import{Dt as o,Xt as s,ft as c,t as l}from"./index-BFO7v8ut.js";var u=((t={},n={})=>(n.locale??e())===`zh-TW`?`請在終端機中回答。`:`Answer it in the terminal.`),d=((t={},n={})=>(n.locale??e())===`zh-TW`?`請在終端機中回答。`:`Answer them in the terminal.`),f=((t={},n={})=>(n.locale??e())===`zh-TW`?`作用在那台機器本身畫面的選項,從這裡不能選。`:`Choices that act on the machine's own screen are not available from here.`),p=((t={},n={})=>(n.locale??e())===`zh-TW`?`下方還有 ▾`:`More below ▾`),m=((t={},n={})=>(n.locale??e())===`zh-TW`?`也可以自己輸入答案。`:`It also takes your own words.`),h=((t={},n={})=>(n.locale??e())===`zh-TW`?`可以複選。`:`It takes several choices.`),g=((t={},n={})=>(n.locale??e())===`zh-TW`?`已取消。`:`Cancelled.`),_=((t={},n={})=>(n.locale??e())===`zh-TW`?`選擇`:`Choices`),v=((t={},n={})=>(n.locale??e())===`zh-TW`?`瀏覽器拒絕存取剪貼簿。`:`The browser refused the clipboard.`),y=((t={},n={})=>(n.locale??e())===`zh-TW`?`已複製到這台裝置的剪貼簿。`:`Copied to this device's clipboard.`),ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`複製指令`:`Copy command`),b=((t={},n={})=>(n.locale??e())===`zh-TW`?`這個選項有預覽;請在終端機中查看。`:`It has a preview; see it in the terminal.`),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`備註`:`Note`),S=((t={},n={})=>(n.locale??e())===`zh-TW`?`備註(選填)`:`Note (optional)`),C=e=>`Opened while ${e?.tool} was running; it may not be about that call.`,w=e=>`在 ${e?.tool} 執行時開啟,不一定與該呼叫有關。`,T=((t,n={})=>(n.locale??e())===`zh-TW`?w(t):C(t)),E=((t={},n={})=>(n.locale??e())===`zh-TW`?`選項`:`Options`),D=((t={},n={})=>(n.locale??e())===`zh-TW`?`另一個答案沒有被採用;這個可以送出。`:`The other answer was not taken; this one can go.`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`你的答案`:`Your own answer`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`或自己輸入答案`:`Or type your own answer`),A=((t={},n={})=>(n.locale??e())===`zh-TW`?`問題已變更,請重新閱讀。`:`The question changed; read it again.`),j=((t={},n={})=>(n.locale??e())===`zh-TW`?`session 讀不懂這個答案。`:`The session could not read that answer.`),M=((t={},n={})=>(n.locale??e())===`zh-TW`?`這個答案不符合問題。`:`That answer does not fit the question.`),N=((t={},n={})=>(n.locale??e())===`zh-TW`?`session 拒絕了這個答案。`:`The session refused that answer.`),P=((t={},n={})=>(n.locale??e())===`zh-TW`?`安全考量,遠端不支援輸入機密。請到執行 GUI 的那台電腦的終端機中回答。`:`For security, entering a secret is not supported remotely. Answer it in the terminal on the computer the GUI runs on.`),te=((t={},n={})=>(n.locale??e())===`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.`),ne=((t={},n={})=>(n.locale??e())===`zh-TW`?`送出答案`:`Send answer`),re=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示終端機`:`Show terminal`),F=((t={},n={})=>(n.locale??e())===`zh-TW`?`已在終端機中關閉。`:`It was dismissed in the terminal.`),I=((t={},n={})=>(n.locale??e())===`zh-TW`?`它已不再開啟。`:`It is no longer open.`),L=((t={},n={})=>(n.locale??e())===`zh-TW`?`已在終端機中回答。`:`It was already answered in the terminal.`),R=((t={},n={})=>(n.locale??e())===`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`){let e=r[a-1],i=n.part===`opt`?o.own||o.note:n.part===`own`&&o.note;return t?n.part===`opt`&&e?{to:{q:a-1,part:e.note?`note`:e.own?`own`:`opt`}}:void 0:i||a===r.length-1?void 0:{to:{q:a+1,part:`opt`}}}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,c=!1;return e.addEventListener(`keydown`,i=>{i.key===` `&&(c=!0);let o=a(i.target);if(!o||i.ctrlKey||i.altKey||i.metaKey||i.isComposing)return;let l=i.target;if(o.part!==`opt`&&(i.key===`ArrowUp`?l.selectionStart!==0:i.key===`ArrowDown`&&l.selectionEnd!==l.value.length))return;let u=B(i.key,i.shiftKey,o,t.map(e=>({options:e.opts.length,multiple:e.multiple,own:!!e.own,note:!!e.note})),t.map(e=>e.answered()));if(!u||(i.preventDefault(),i.repeat&&[`Enter`,` `].includes(i.key)))return;if(s=i.key===` `,u.pick!==void 0){let e=t[o.q].opts[u.pick];e.getAttribute(`aria-checked`)!==`true`&&e.click()}let d=u.to===`send`?void 0:t[u.to.q],f=u.to===`send`?n():u.to.part===`opt`?d.opts[u.to.o??r(d)]:u.to.part===`own`?d.own:d.note;f&&!f.disabled&&(e.dispatchEvent(new CustomEvent(`ask-reveal`,{detail:f})),f.focus())}),e.addEventListener(`keyup`,e=>{e.key===` `&&((s||!c)&&e.preventDefault(),s=c=!1)}),()=>t[0]?.opts[r(t[0])]}var H=e=>e.multiple?h():e.freeform&&e.options.length?m():``,U=90,W=(e,t)=>c(`div`,{class:`ask-one`},e.header&&c(`b`,{class:`ask-head`},e.header),c(`p`,{class:`ask-q`,...e.question.length>U?{"data-long":``}:{}},e.question),e.context&&c(`div`,{class:`ask-ctx`},e.context),e.options.length>0&&c(`ol`,{class:`ask-opts`,"aria-label":E()},...e.options.map(e=>c(`li`,{class:`ask-opt`},c(`b`,null,e.title),e.description&&c(`small`,null,e.description)))),t&&H(e)&&c(`small`,{class:`ask-how`},H(e))),G=e=>e.replace(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f\p{Cf}]/gu,`�`),K=e=>(e.select?.choices??[]).map((e,t)=>({...e,i:t})),q=(e,t,n)=>({...e.size?{choices:[...e].sort((e,t)=>e-t)}:{},...t.trim()?{text:t}:{},...n.trim()?{note:n}:{}}),J=(e,t,n)=>({dialog:e.dialog,digest:e.digest,answerId:n,...t}),Y=(e,t)=>({dialog:e.dialog,digest:e.digest,answerId:t,cancel:!0}),ie=(e,t)=>e.cancel===!0&&!(t&&e.select?.choices.every(e=>e.hereOnly)),X={digest:A,"not-allowed":M,malformed:j};function ae(e,i=!1){let{outcome:a,reason:s,by:c}=e.body;return a===`accepted`?[`ok`,i?g():n()]:a===`stale`?[`error`,c===`local`?L():c===`cancel`?F():I()]:a===`rejected`?[`error`,(Object.hasOwn(X,String(s))?X[String(s)]:N)()]:a===`busy`?[`error`,t()]:a===`unknown`||e.status===504?[`error`,r(),!0]:[`error`,s??o({status:e.status})]}var oe=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 se(e){if(e.dataset.cued)return;e.dataset.cued=`1`;let t=()=>{e.toggleAttribute(`data-more`,e.scrollHeight-e.scrollTop-e.clientHeight>4);for(let t of e.querySelectorAll(`.ask-acts`))t.dataset.cue=p()};for(let n of[`scroll`,`input`])e.addEventListener(n,t,{passive:!0});typeof ResizeObserver<`u`&&new ResizeObserver(t).observe(e),typeof MutationObserver<`u`&&new MutationObserver(t).observe(e,{childList:!0,subtree:!0,characterData:!0}),typeof requestAnimationFrame<`u`&&requestAnimationFrame(t)}var ce=0;function Q(e,t,n=location.hostname!==`127.0.0.1`,o,p,m=re,h=!1){let g=()=>typeof h==`function`?h():h,C=()=>n||g(),w,A,j,M=!1,N,F=!1,I;for(let e of[`focusin`,`pointerdown`])document.addEventListener(e,e=>A&&!A.el.contains(e.target)&&(A.lost=void 0));let L=(e,t,n,...r)=>(e.dataset.tone=t,e.replaceChildren(n,...r)),z=()=>{if(!A)return;let e=document.activeElement;e&&e!==document.body&&e!==A.lost&&(A.lost=void 0),A.controls.forEach(e=>e.disabled=!M||F||A.done),A.send&&(A.send.disabled=!M||F||A.done||!A.pick()),N&&!M&&!F&&!A.done&&!A.sending?(L(A.note,``,N),A.away=!0):A.away&&(L(A.note,``,``),A.away=!1),e&&A.el.contains(e)&&e.disabled&&(A.lost=e);let t=A.lost;t&&!t.disabled&&A.el.contains(t)&&(!document.activeElement||document.activeElement===document.body)&&(t.focus(),A.lost=void 0)};async function B(e,n){[e.sending,F,e.spell]=[!0,!0,!1],z(),L(e.note,``,a());let s=await t(`answer`,n).catch(()=>void 0),u=c(`button`,{type:`button`,class:`cmp-link`},i());u.onclick=()=>void B(e,n);let[d,f,m]=s?ae(s,n.cancel===!0):[`error`,r(),!0];[e.done,e.sending,F,e.busy]=[!s||oe(s),!1,!1,s?.body.outcome===`busy`],L(e.note,d,f,...m?[u]:[]);let h=s?.body.outcome===`accepted`?s.body.then:void 0,g=h&&l(h,{key:o?.key??``,command:e.copy,answerId:String(n.answerId??``)});g&&L(e.note,d,`${f} ${g}`),z(),e.note.scrollIntoView?.({block:`nearest`}),p&&s?.body.outcome===`accepted`&&setTimeout(()=>p(!!h&&!g),h&&!g?0:1200)}let X=(e,t,n,r,i)=>{let a=c(`button`,{type:`button`,class:`ask-opt`,role:e,"aria-checked":`false`},c(`b`,i?{"data-n":String(i)}:null,t),...n.filter(Boolean).map(e=>c(`small`,null,e)));return a.onclick=r,a};function Q(e,t){let n,r=K(t).map(e=>X(`radio`,G(e.label),[e.note&&G(e.note)],()=>(n=e.i,r.forEach((n,r)=>n.setAttribute(`aria-checked`,String(K(t)[r].i===e.i))),z()),e.i+1)),i=t.select?.copy!==void 0&&c(`button`,{type:`button`,class:`cmp-link`},ee());i&&(i.disabled=!navigator.clipboard,i.onclick=()=>void navigator.clipboard.writeText(t.select.copy).then(()=>L(e.note,`ok`,y()),()=>L(e.note,`error`,v())));let a=e=>C()&&e.hereOnly===!0||g()&&e.next===`pane`,o=r.filter((e,n)=>!a(K(t)[n])),s=r.filter(e=>!o.includes(e));s.forEach(e=>e.disabled=!0);let l=s.length>0?c(`p`,{class:`ask-why ask-reason`,id:`ask-why-${++ce}`},f()):void 0;return l&&s.forEach(e=>e.setAttribute(`aria-describedby`,l.id)),e.pick=()=>n===void 0?void 0:{choice:n},e.first=V(e.el,[{opts:r,multiple:!1,answered:()=>n!==void 0}],()=>e.send),e.controls=o,[c(`pre`,{class:`ask-title`},G(t.select.title)),c(`div`,{class:`ask-opts`,role:`radiogroup`,"aria-label":_()},...r),...l?[l]:[],c(`div`,{class:`ask-acts`},e.send,e.cancel,i)]}function le(e,t){let n=t.questions.map(()=>({picks:new Set,text:c(`textarea`,{rows:`1`,maxlength:`8192`,class:`ask-own`,placeholder:k(),"aria-label":O()}),note:c(`input`,{type:`text`,maxlength:`2048`,class:`ask-own ask-memo`,placeholder:S(),"aria-label":x()})})),r=[],i=t.questions.map((t,i)=>{let a=n[i],o=t.multiple?`checkbox`:`radio`,s=t.options.map((e,n)=>X(o,e.title,[e.description,e.preview&&b()],()=>{t.multiple||(a.picks.clear(),a.text.value=``),a.picks.has(n)?a.picks.delete(n):a.picks.add(n),s.forEach((e,t)=>e.setAttribute(`aria-checked`,String(a.picks.has(t)))),z()}));return a.text.oninput=()=>(t.multiple||(a.picks.clear(),s.forEach(e=>e.setAttribute(`aria-checked`,`false`))),z()),e.controls.push(...s,a.text,a.note),r.push({opts:s,multiple:!!t.multiple,own:a.text,note:a.note,answered:()=>a.picks.size>0||a.text.value.trim()!==``}),c(`div`,{class:`ask-one`},t.header&&c(`b`,{class:`ask-head`},t.header),c(`p`,{class:`ask-q`,...t.question.length>U?{"data-long":``}:{}},t.question),c(`div`,{class:`ask-opts`,role:t.multiple?`group`:`radiogroup`,"aria-label":E()},...s),a.text,a.note)});return e.pick=()=>n.every(e=>e.picks.size||e.text.value.trim())?{answers:n.map(e=>q(e.picks,e.text.value,e.note.value))}:void 0,e.first=V(e.el,r,()=>e.send),[...i,c(`div`,{class:`ask-acts`},e.send,e.cancel)]}function ue(e){let t=e.asks??(e.ask?[e.ask]:[]),n=t.length>1,r=e.answer,i={copy:r?.select?.copy,key:Z(e),el:c(`section`,{class:`ask`}),note:c(`p`,{class:`ask-note`,role:`status`,"aria-live":`polite`}),controls:[],pick:()=>void 0,done:!1,sending:!1};r&&((i.send=c(`button`,{type:`button`,class:`ask-send`},ne())).onclick=()=>void(i.pick()&&B(i,J(r,i.pick(),crypto.randomUUID()))));let a=e.tool===`secret_drop`;r&&!a&&ie(r,C())&&((i.cancel=c(`button`,{type:`button`,class:`ask-cancel`},s())).onclick=()=>void B(i,Y(r,crypto.randomUUID())));let l=c(`p`,{class:`ask-term`},e.why&&t.length?e.why:`${n?d():u()} ${n||!t[0]?``:H(t[0])}`.trim()),f=o&&e.tool!==`secret_drop`&&c(`button`,{type:`button`,class:`cmp-link`},m());f&&(f.onclick=o.show);let p=e.answer?.twin&&e.tool&&e.tool!==`dialog`?[c(`p`,{class:`ask-why`},T({tool:e.tool}))]:[];return i.el.append(...p,...r&&!a?r.select?Q(i,r):le(i,r):[...t.length?t.map(e=>W(e,n)):[c(`p`,{class:`ask-why`},a?C()?P():te():e.why??R())],c(`div`,{class:`ask-acts`},a?c(`p`,{class:`ask-term`},u()):l,f)],i.note),i.cancel&&i.controls.push(i.cancel),i}let $=(t,n)=>{let r=document.activeElement;A&&A!==n&&(A.focus=A.el.contains(r)?r:void 0),[w,A,j]=[t,n,n?.send?n:j],e.replaceChildren(...n?[n.el]:[]),n&&se(n.el),z(),n?.focus&&(!document.activeElement||document.activeElement===document.body)&&n.focus.focus()};return{enter(){let e=A&&!A.done?A.first?.():void 0;return!!(e&&!e.disabled&&(e.focus(),1))},cancel(){let e=A&&!A.done?A.cancel:void 0;return!!(e&&!e.disabled&&(e.click(),1))},sending:()=>F,update(e,t,n){[M,N]=[t,n],e&&(I=void clearTimeout(I)),!e&&(A?.done||A?.sending)?I??=setTimeout(()=>(I=void 0,$()),6e3):e?A&&(Z(e)===A.key||!e.answer&&(A.done||A.sending)&&e.callId===w?.callId)?((A.busy||A.sending)&&!e.answer?A.spell=!0:A.busy&&A.spell&&e.answer&&([A.done,A.busy]=[!1,!1],L(A.note,``,D())),w=e):$(e,j?.key===Z(e)&&!j.done?j:ue(e)):$(),z()}}}export{Q as t};
|
|
1
|
+
import{t as e}from"./runtime-ZX6HkxDa.js";import{a as t,i as n,n as r,r as i,t as a}from"./sending-aEpvzoz2.js";import{Dt as o,Xt as s,ft as c,t as l}from"./index-K5BhU6id.js";var u=((t={},n={})=>(n.locale??e())===`zh-TW`?`請在終端機中回答。`:`Answer it in the terminal.`),d=((t={},n={})=>(n.locale??e())===`zh-TW`?`請在終端機中回答。`:`Answer them in the terminal.`),f=((t={},n={})=>(n.locale??e())===`zh-TW`?`作用在那台機器本身畫面的選項,從這裡不能選。`:`Choices that act on the machine's own screen are not available from here.`),p=((t={},n={})=>(n.locale??e())===`zh-TW`?`下方還有 ▾`:`More below ▾`),m=((t={},n={})=>(n.locale??e())===`zh-TW`?`也可以自己輸入答案。`:`It also takes your own words.`),h=((t={},n={})=>(n.locale??e())===`zh-TW`?`可以複選。`:`It takes several choices.`),g=((t={},n={})=>(n.locale??e())===`zh-TW`?`已取消。`:`Cancelled.`),_=((t={},n={})=>(n.locale??e())===`zh-TW`?`選擇`:`Choices`),v=((t={},n={})=>(n.locale??e())===`zh-TW`?`瀏覽器拒絕存取剪貼簿。`:`The browser refused the clipboard.`),y=((t={},n={})=>(n.locale??e())===`zh-TW`?`已複製到這台裝置的剪貼簿。`:`Copied to this device's clipboard.`),ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`複製指令`:`Copy command`),b=((t={},n={})=>(n.locale??e())===`zh-TW`?`這個選項有預覽;請在終端機中查看。`:`It has a preview; see it in the terminal.`),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`備註`:`Note`),S=((t={},n={})=>(n.locale??e())===`zh-TW`?`備註(選填)`:`Note (optional)`),C=e=>`Opened while ${e?.tool} was running; it may not be about that call.`,w=e=>`在 ${e?.tool} 執行時開啟,不一定與該呼叫有關。`,T=((t,n={})=>(n.locale??e())===`zh-TW`?w(t):C(t)),E=((t={},n={})=>(n.locale??e())===`zh-TW`?`選項`:`Options`),D=((t={},n={})=>(n.locale??e())===`zh-TW`?`另一個答案沒有被採用;這個可以送出。`:`The other answer was not taken; this one can go.`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`你的答案`:`Your own answer`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`或自己輸入答案`:`Or type your own answer`),A=((t={},n={})=>(n.locale??e())===`zh-TW`?`問題已變更,請重新閱讀。`:`The question changed; read it again.`),j=((t={},n={})=>(n.locale??e())===`zh-TW`?`session 讀不懂這個答案。`:`The session could not read that answer.`),M=((t={},n={})=>(n.locale??e())===`zh-TW`?`這個答案不符合問題。`:`That answer does not fit the question.`),N=((t={},n={})=>(n.locale??e())===`zh-TW`?`session 拒絕了這個答案。`:`The session refused that answer.`),P=((t={},n={})=>(n.locale??e())===`zh-TW`?`安全考量,遠端不支援輸入機密。請到執行 GUI 的那台電腦的終端機中回答。`:`For security, entering a secret is not supported remotely. Answer it in the terminal on the computer the GUI runs on.`),te=((t={},n={})=>(n.locale??e())===`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.`),ne=((t={},n={})=>(n.locale??e())===`zh-TW`?`送出答案`:`Send answer`),re=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示終端機`:`Show terminal`),F=((t={},n={})=>(n.locale??e())===`zh-TW`?`已在終端機中關閉。`:`It was dismissed in the terminal.`),I=((t={},n={})=>(n.locale??e())===`zh-TW`?`它已不再開啟。`:`It is no longer open.`),L=((t={},n={})=>(n.locale??e())===`zh-TW`?`已在終端機中回答。`:`It was already answered in the terminal.`),R=((t={},n={})=>(n.locale??e())===`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`){let e=r[a-1],i=n.part===`opt`?o.own||o.note:n.part===`own`&&o.note;return t?n.part===`opt`&&e?{to:{q:a-1,part:e.note?`note`:e.own?`own`:`opt`}}:void 0:i||a===r.length-1?void 0:{to:{q:a+1,part:`opt`}}}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,c=!1;return e.addEventListener(`keydown`,i=>{i.key===` `&&(c=!0);let o=a(i.target);if(!o||i.ctrlKey||i.altKey||i.metaKey||i.isComposing)return;let l=i.target;if(o.part!==`opt`&&(i.key===`ArrowUp`?l.selectionStart!==0:i.key===`ArrowDown`&&l.selectionEnd!==l.value.length))return;let u=B(i.key,i.shiftKey,o,t.map(e=>({options:e.opts.length,multiple:e.multiple,own:!!e.own,note:!!e.note})),t.map(e=>e.answered()));if(!u||(i.preventDefault(),i.repeat&&[`Enter`,` `].includes(i.key)))return;if(s=i.key===` `,u.pick!==void 0){let e=t[o.q].opts[u.pick];e.getAttribute(`aria-checked`)!==`true`&&e.click()}let d=u.to===`send`?void 0:t[u.to.q],f=u.to===`send`?n():u.to.part===`opt`?d.opts[u.to.o??r(d)]:u.to.part===`own`?d.own:d.note;f&&!f.disabled&&(e.dispatchEvent(new CustomEvent(`ask-reveal`,{detail:f})),f.focus())}),e.addEventListener(`keyup`,e=>{e.key===` `&&((s||!c)&&e.preventDefault(),s=c=!1)}),()=>t[0]?.opts[r(t[0])]}var H=e=>e.multiple?h():e.freeform&&e.options.length?m():``,U=90,W=(e,t)=>c(`div`,{class:`ask-one`},e.header&&c(`b`,{class:`ask-head`},e.header),c(`p`,{class:`ask-q`,...e.question.length>U?{"data-long":``}:{}},e.question),e.context&&c(`div`,{class:`ask-ctx`},e.context),e.options.length>0&&c(`ol`,{class:`ask-opts`,"aria-label":E()},...e.options.map(e=>c(`li`,{class:`ask-opt`},c(`b`,null,e.title),e.description&&c(`small`,null,e.description)))),t&&H(e)&&c(`small`,{class:`ask-how`},H(e))),G=e=>e.replace(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f\p{Cf}]/gu,`�`),K=e=>(e.select?.choices??[]).map((e,t)=>({...e,i:t})),q=(e,t,n)=>({...e.size?{choices:[...e].sort((e,t)=>e-t)}:{},...t.trim()?{text:t}:{},...n.trim()?{note:n}:{}}),J=(e,t,n)=>({dialog:e.dialog,digest:e.digest,answerId:n,...t}),Y=(e,t)=>({dialog:e.dialog,digest:e.digest,answerId:t,cancel:!0}),ie=(e,t)=>e.cancel===!0&&!(t&&e.select?.choices.every(e=>e.hereOnly)),X={digest:A,"not-allowed":M,malformed:j};function ae(e,i=!1){let{outcome:a,reason:s,by:c}=e.body;return a===`accepted`?[`ok`,i?g():n()]:a===`stale`?[`error`,c===`local`?L():c===`cancel`?F():I()]:a===`rejected`?[`error`,(Object.hasOwn(X,String(s))?X[String(s)]:N)()]:a===`busy`?[`error`,t()]:a===`unknown`||e.status===504?[`error`,r(),!0]:[`error`,s??o({status:e.status})]}var oe=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 se(e){if(e.dataset.cued)return;e.dataset.cued=`1`;let t=()=>{e.toggleAttribute(`data-more`,e.scrollHeight-e.scrollTop-e.clientHeight>4);for(let t of e.querySelectorAll(`.ask-acts`))t.dataset.cue=p()};for(let n of[`scroll`,`input`])e.addEventListener(n,t,{passive:!0});typeof ResizeObserver<`u`&&new ResizeObserver(t).observe(e),typeof MutationObserver<`u`&&new MutationObserver(t).observe(e,{childList:!0,subtree:!0,characterData:!0}),typeof requestAnimationFrame<`u`&&requestAnimationFrame(t)}var ce=0;function Q(e,t,n=location.hostname!==`127.0.0.1`,o,p,m=re,h=!1){let g=()=>typeof h==`function`?h():h,C=()=>n||g(),w,A,j,M=!1,N,F=!1,I;for(let e of[`focusin`,`pointerdown`])document.addEventListener(e,e=>A&&!A.el.contains(e.target)&&(A.lost=void 0));let L=(e,t,n,...r)=>(e.dataset.tone=t,e.replaceChildren(n,...r)),z=()=>{if(!A)return;let e=document.activeElement;e&&e!==document.body&&e!==A.lost&&(A.lost=void 0),A.controls.forEach(e=>e.disabled=!M||F||A.done),A.send&&(A.send.disabled=!M||F||A.done||!A.pick()),N&&!M&&!F&&!A.done&&!A.sending?(L(A.note,``,N),A.away=!0):A.away&&(L(A.note,``,``),A.away=!1),e&&A.el.contains(e)&&e.disabled&&(A.lost=e);let t=A.lost;t&&!t.disabled&&A.el.contains(t)&&(!document.activeElement||document.activeElement===document.body)&&(t.focus(),A.lost=void 0)};async function B(e,n){[e.sending,F,e.spell]=[!0,!0,!1],z(),L(e.note,``,a());let s=await t(`answer`,n).catch(()=>void 0),u=c(`button`,{type:`button`,class:`cmp-link`},i());u.onclick=()=>void B(e,n);let[d,f,m]=s?ae(s,n.cancel===!0):[`error`,r(),!0];[e.done,e.sending,F,e.busy]=[!s||oe(s),!1,!1,s?.body.outcome===`busy`],L(e.note,d,f,...m?[u]:[]);let h=s?.body.outcome===`accepted`?s.body.then:void 0,g=h&&l(h,{key:o?.key??``,command:e.copy,answerId:String(n.answerId??``)});g&&L(e.note,d,`${f} ${g}`),z(),e.note.scrollIntoView?.({block:`nearest`}),p&&s?.body.outcome===`accepted`&&setTimeout(()=>p(!!h&&!g),h&&!g?0:1200)}let X=(e,t,n,r,i)=>{let a=c(`button`,{type:`button`,class:`ask-opt`,role:e,"aria-checked":`false`},c(`b`,i?{"data-n":String(i)}:null,t),...n.filter(Boolean).map(e=>c(`small`,null,e)));return a.onclick=r,a};function Q(e,t){let n,r=K(t).map(e=>X(`radio`,G(e.label),[e.note&&G(e.note)],()=>(n=e.i,r.forEach((n,r)=>n.setAttribute(`aria-checked`,String(K(t)[r].i===e.i))),z()),e.i+1)),i=t.select?.copy!==void 0&&c(`button`,{type:`button`,class:`cmp-link`},ee());i&&(i.disabled=!navigator.clipboard,i.onclick=()=>void navigator.clipboard.writeText(t.select.copy).then(()=>L(e.note,`ok`,y()),()=>L(e.note,`error`,v())));let a=e=>C()&&e.hereOnly===!0||g()&&e.next===`pane`,o=r.filter((e,n)=>!a(K(t)[n])),s=r.filter(e=>!o.includes(e));s.forEach(e=>e.disabled=!0);let l=s.length>0?c(`p`,{class:`ask-why ask-reason`,id:`ask-why-${++ce}`},f()):void 0;return l&&s.forEach(e=>e.setAttribute(`aria-describedby`,l.id)),e.pick=()=>n===void 0?void 0:{choice:n},e.first=V(e.el,[{opts:r,multiple:!1,answered:()=>n!==void 0}],()=>e.send),e.controls=o,[c(`pre`,{class:`ask-title`},G(t.select.title)),c(`div`,{class:`ask-opts`,role:`radiogroup`,"aria-label":_()},...r),...l?[l]:[],c(`div`,{class:`ask-acts`},e.send,e.cancel,i)]}function le(e,t){let n=t.questions.map(()=>({picks:new Set,text:c(`textarea`,{rows:`1`,maxlength:`8192`,class:`ask-own`,placeholder:k(),"aria-label":O()}),note:c(`input`,{type:`text`,maxlength:`2048`,class:`ask-own ask-memo`,placeholder:S(),"aria-label":x()})})),r=[],i=t.questions.map((t,i)=>{let a=n[i],o=t.multiple?`checkbox`:`radio`,s=t.options.map((e,n)=>X(o,e.title,[e.description,e.preview&&b()],()=>{t.multiple||(a.picks.clear(),a.text.value=``),a.picks.has(n)?a.picks.delete(n):a.picks.add(n),s.forEach((e,t)=>e.setAttribute(`aria-checked`,String(a.picks.has(t)))),z()}));return a.text.oninput=()=>(t.multiple||(a.picks.clear(),s.forEach(e=>e.setAttribute(`aria-checked`,`false`))),z()),e.controls.push(...s,a.text,a.note),r.push({opts:s,multiple:!!t.multiple,own:a.text,note:a.note,answered:()=>a.picks.size>0||a.text.value.trim()!==``}),c(`div`,{class:`ask-one`},t.header&&c(`b`,{class:`ask-head`},t.header),c(`p`,{class:`ask-q`,...t.question.length>U?{"data-long":``}:{}},t.question),c(`div`,{class:`ask-opts`,role:t.multiple?`group`:`radiogroup`,"aria-label":E()},...s),a.text,a.note)});return e.pick=()=>n.every(e=>e.picks.size||e.text.value.trim())?{answers:n.map(e=>q(e.picks,e.text.value,e.note.value))}:void 0,e.first=V(e.el,r,()=>e.send),[...i,c(`div`,{class:`ask-acts`},e.send,e.cancel)]}function ue(e){let t=e.asks??(e.ask?[e.ask]:[]),n=t.length>1,r=e.answer,i={copy:r?.select?.copy,key:Z(e),el:c(`section`,{class:`ask`}),note:c(`p`,{class:`ask-note`,role:`status`,"aria-live":`polite`}),controls:[],pick:()=>void 0,done:!1,sending:!1};r&&((i.send=c(`button`,{type:`button`,class:`ask-send`},ne())).onclick=()=>void(i.pick()&&B(i,J(r,i.pick(),crypto.randomUUID()))));let a=e.tool===`secret_drop`;r&&!a&&ie(r,C())&&((i.cancel=c(`button`,{type:`button`,class:`ask-cancel`},s())).onclick=()=>void B(i,Y(r,crypto.randomUUID())));let l=c(`p`,{class:`ask-term`},e.why&&t.length?e.why:`${n?d():u()} ${n||!t[0]?``:H(t[0])}`.trim()),f=o&&e.tool!==`secret_drop`&&c(`button`,{type:`button`,class:`cmp-link`},m());f&&(f.onclick=o.show);let p=e.answer?.twin&&e.tool&&e.tool!==`dialog`?[c(`p`,{class:`ask-why`},T({tool:e.tool}))]:[];return i.el.append(...p,...r&&!a?r.select?Q(i,r):le(i,r):[...t.length?t.map(e=>W(e,n)):[c(`p`,{class:`ask-why`},a?C()?P():te():e.why??R())],c(`div`,{class:`ask-acts`},a?c(`p`,{class:`ask-term`},u()):l,f)],i.note),i.cancel&&i.controls.push(i.cancel),i}let $=(t,n)=>{let r=document.activeElement;A&&A!==n&&(A.focus=A.el.contains(r)?r:void 0),[w,A,j]=[t,n,n?.send?n:j],e.replaceChildren(...n?[n.el]:[]),n&&se(n.el),z(),n?.focus&&(!document.activeElement||document.activeElement===document.body)&&n.focus.focus()};return{enter(){let e=A&&!A.done?A.first?.():void 0;return!!(e&&!e.disabled&&(e.focus(),1))},cancel(){let e=A&&!A.done?A.cancel:void 0;return!!(e&&!e.disabled&&(e.click(),1))},sending:()=>F,update(e,t,n){[M,N]=[t,n],e&&(I=void clearTimeout(I)),!e&&(A?.done||A?.sending)?I??=setTimeout(()=>(I=void 0,$()),6e3):e?A&&(Z(e)===A.key||!e.answer&&(A.done||A.sending)&&e.callId===w?.callId)?((A.busy||A.sending)&&!e.answer?A.spell=!0:A.busy&&A.spell&&e.answer&&([A.done,A.busy]=[!1,!1],L(A.note,``,D())),w=e):$(e,j?.key===Z(e)&&!j.done?j:ue(e)):$(),z()}}}export{Q as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-DK3Fl9T5.js";import{m as t}from"./towermodel-BpgH7epr.js";import{t as n}from"./runtime-ZX6HkxDa.js";import{Dt as r,K as i}from"./index-
|
|
1
|
+
import{t as e}from"./rolldown-runtime-DK3Fl9T5.js";import{m as t}from"./towermodel-BpgH7epr.js";import{t as n}from"./runtime-ZX6HkxDa.js";import{Dt as r,K as i}from"./index-K5BhU6id.js";var a=((e={},t={})=>(t.locale??n())===`zh-TW`?`沒有符合這個號碼的請求。`:`No request has that number.`),o=((e={},t={})=>(t.locale??n())===`zh-TW`?`這個請求已經不在了。`:`That request is gone.`),s=((e={},t={})=>(t.locale??n())===`zh-TW`?`連續輸入三次錯誤號碼,所以所有等待中的請求都已拒絕。請按「新的配對碼」重新配對。`:`Three wrong numbers in a row, so every waiting request was denied. Press New code and pair again.`),c=((e={},t={})=>(t.locale??n())===`zh-TW`?`這個請求已經變了,請重新看過。`:`That request changed. Look at it again.`),l=((e={},t={})=>(t.locale??n())===`zh-TW`?`這個請求已經不在了,或已逾時。`:`That request is gone or has timed out.`),u=((e={},t={})=>(t.locale??n())===`zh-TW`?`這個團隊沒有在這台裝置上執行。`:`That team is not running on this device.`),d=((e={},t={})=>(t.locale??n())===`zh-TW`?`已在該裝置上取消。`:`It was cancelled at the device.`),f=((e={},t={})=>(t.locale??n())===`zh-TW`?`你已從這裡回答。`:`You answered it from here.`),p=((e={},t={})=>(t.locale??n())===`zh-TW`?`已在該裝置上回答。`:`Answered at the device itself.`),m=((e={},t={})=>(t.locale??n())===`zh-TW`?`已由團隊的另一個控制端回答。`:`Answered by another controller of this team.`),h=e=>`The answer was not sent: ${e?.reason}`,g=e=>`答案沒有送出:${e?.reason}`,_=((e,t={})=>(t.locale??n())===`zh-TW`?g(e):h(e)),v=((e={},t={})=>(t.locale??n())===`zh-TW`?`問題在有人回答前就結束了。`:`It ended before anyone answered it.`),y=((e={},t={})=>(t.locale??n())===`zh-TW`?`已送出你的答案;對方裝置還沒關閉這個問題。`:`Your answer was sent; the device has not closed the question yet.`),b=((e={},t={})=>(t.locale??n())===`zh-TW`?`你已不再負責回答這台裝置的問題;問題在那邊仍未結束。`:`You no longer answer this device's questions; it is still open there.`);function x(e){switch(e){case`sent`:return y();case`done-here`:return f();case`done-other`:return m();case`done-local`:return p();case`cancelled`:return d();case`expired`:return v();case`withdrawn`:return b()}}var S=e=>typeof e==`object`&&!!e&&!Array.isArray(e),C=e=>typeof e==`string`,w=e=>Array.isArray(e)&&e.every(e=>S(e)&&C(e.title));function T(e){let{dialog:t,dialogId:n,digest:r}=e.data;if(!C(t)||!C(n)||!C(r))return;let i;try{i=JSON.parse(t)}catch{return}if(!S(i))return;let{select:a,questions:o,cancel:s}=i,c={dialog:n,digest:r,...s===!0?{cancel:!0}:{}};if(S(a)&&C(a.title)&&Array.isArray(a.choices)&&a.choices.every(e=>S(e)&&C(e.label)))return{callId:n,tool:`dialog`,answer:{...c,select:a}};if(Array.isArray(o)&&o.length>0&&o.every(e=>S(e)&&C(e.question)&&w(e.options)))return{callId:n,tool:`dialog`,answer:{...c,questions:o}}}var E=e=>e.cancel===!0?{cancel:!0}:e.choice===void 0?{answers:e.answers}:{choice:e.choice},D=e({confirmActions:()=>M,confirmWhy:()=>N,forwardedAnswer:()=>P,joined:()=>k,lanActions:()=>I,lanReading:()=>L,outcome:()=>O,proposalActions:()=>F,taken:()=>j,waitActions:()=>A}),O=e=>{let t=e.body.outcome;return t===void 0?e.status===504?`unknown`:e.ok&&(e.body.accepted===!0||Array.isArray(e.body.entries))?`accepted`:`refused`:t===`accepted`?`accepted`:t===`unknown`?`unknown`:`refused`},k=e=>e.replace(/^([A-Z])(?=[a-z])/,e=>e.toLowerCase()),A=(e,n)=>({tell:t=>n(`input`,{text:t,as:`send`,answers:e.id}),press:(n,r)=>i(`${t(e.ws)}/memory`,{op:`press`,id:e.id,act:n,...r}),read:()=>i(`${t(e.ws)}/memory`,{op:`read`}),goto:{view:`session`,ws:e.ws,key:e.tower}}),j=e=>e.ok&&e.body.outcome===void 0?{...e,body:{...e.body,outcome:`accepted`}}:e,M=e=>{let t=t=>i(`link/confirm-answer`,{dialogId:e.dialogId,digest:e.digest,allow:t}).then(j);return{allow:()=>t(!0),deny:()=>t(!1)}},N=e=>{let t=String(e.body.reason??e.body.error??``);return[[/^That request is gone/,l],[/^That team is not running/,u],[/^That request changed/,c]].find(([e])=>e.test(t))?.[1]()??(t||r({status:e.status}))},P=e=>async(t,n)=>{let a=await i(`link/dialog-answer`,{device:e.device,dialogId:e.dialogId,digest:e.digest,answer:E(n)});return a.ok?j(a):{ok:!1,status:a.status,body:{reason:_({reason:a.body.reason??r({status:a.status})})}}},F=e=>({confirm:()=>i(`${t(e.ws)}/memory`,{op:`confirm`,proposal:e.id,rev:e.rev()}),reject:()=>i(`${t(e.ws)}/memory`,{op:`reject`,proposal:e.id})}),I=e=>({approve:t=>e(`lan/approve`,{number:t}).then(j),deny:t=>e(`lan/approve`,{deny:t}).then(e=>e.ok&&e.body.denied===0?{...e,ok:!1,body:{error:`gone`,reason:o()}}:j(e)),denyAll:()=>e(`lan/approve`,{deny:`all`}).then(j)});function L(e){let t=!e.ok&&e.body.error===`no_match`&&Number(e.body.denied)>0;return{answer:e.ok||t?``:e.body.error===`no_match`?a():String(e.body.reason??r({status:e.status})),verdict:t?s():``}}export{k as a,O as c,x as d,T as f,P as i,F as l,M as n,I as o,N as r,L as s,D as t,A as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./runtime-ZX6HkxDa.js";import{r as t}from"./sessionfacts-
|
|
1
|
+
import{t as e}from"./runtime-ZX6HkxDa.js";import{r as t}from"./sessionfacts-CQdTlg5C.js";import{i as n}from"./mdbody-D2QvBfGJ.js";import{n as r,r as i}from"./markdown-Bk5NWfKQ.js";import{ft as a}from"./index-K5BhU6id.js";import{t as o}from"./focusback-DGGGUsJl.js";var s=((t={},n={})=>(n.locale??e())===`zh-TW`?`返回`:`Back`),c=((t={},n={})=>(n.locale??e())===`zh-TW`?`送出`:`Send`),l=((t={},n={})=>(n.locale??e())===`zh-TW`?`你的回答會以這段文字送出:`:`Your answer goes out as this text:`),u=((t={},n={})=>(n.locale??e())===`zh-TW`?`傳送中…`:`Sending…`),d=((t={},n={})=>(n.locale??e())===`zh-TW`?`無法讀取這題是否已回答。`:`Whether this was answered could not be read.`),f=(e,t)=>e.find(([e])=>e===t)?.[1],p=(e,t)=>e.filter(([e])=>e===t).map(([,e])=>e);function m(e){return`User submitted a form in the HTML review pane:\n${e.map(([e,t])=>`- ${e}: ${t}`).join(`
|
|
2
2
|
`)||`(no fields)`}`}function h(e,t){let n=p(e,`quote`),r=p(e,`comment`),i=n.map((e,t)=>[e?e.split(`
|
|
3
3
|
`).map(e=>`> ${e}`).join(`
|
|
4
4
|
`):``,r[t]||`(no comment)`].filter(Boolean).join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./runtime-ZX6HkxDa.js";import{t}from"./link_unit_ago-CvB9wMxM.js";import{C as n,E as r,T as i,d as a,g as o,p as s,u as c,y as l}from"./index-
|
|
1
|
+
import{t as e}from"./runtime-ZX6HkxDa.js";import{t}from"./link_unit_ago-CvB9wMxM.js";import{C as n,E as r,T as i,d as a,g as o,p as s,u as c,y as l}from"./index-K5BhU6id.js";var u=((t={},n={})=>(n.locale??e())===`zh-TW`?`這台機器的狀態卡`:`This machine's status card`),d=((t={},n={})=>(n.locale??e())===`zh-TW`?`對這台機器的操作已結束`:`Operating this machine has ended`),f=((t={},n={})=>(n.locale??e())===`zh-TW`?`這台機器不讓這部裝置操作`:`This machine does not let this device operate it`),p=((t={},n={})=>(n.locale??e())===`zh-TW`?`操作權限已撤銷`:`Operate permission was withdrawn`),m=e=>`Open ${e?.name}, an earlier run`,h=e=>`開啟先前的執行 ${e?.name}`,g=((t,n={})=>(n.locale??e())===`zh-TW`?h(t):m(t)),_=e=>`Earlier runs (${e?.count})`,v=e=>`先前的執行(${e?.count})`,y=((t,n={})=>(n.locale??e())===`zh-TW`?v(t):_(t)),b=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示更多`:`Show more`),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`最後看到 `:`last seen `),S=e=>`Team ${e?.team}`,C=e=>`團隊 ${e?.team}`,w=((t,n={})=>(n.locale??e())===`zh-TW`?C(t):S(t)),T=((t={},n={})=>(n.locale??e())===`zh-TW`?`連不上`:`unreachable`),E=new Set([`policy`,`roster`]),D=new Set([`not-granted`,`not-admin`,`out-of-scope`,`local-only`]),O=e=>e!==void 0&&E.has(e)?`revoked`:e!==void 0&&D.has(e)?`refused`:`other`,k=e=>typeof e==`string`&&/^x[0-9a-f]{16}$/.test(e),A=(e,t)=>typeof e==`string`&&e.length>0&&e.length<=t,j=e=>typeof e==`number`&&Number.isFinite(e);function M(e){let t=typeof e==`object`&&e?e:{},n=[];for(let e of Array.isArray(t.rows)?t.rows.slice(0,50):[]){let t=typeof e==`object`&&e?e:{};!k(t.key)||!A(t.name,200)||!A(t.role,40)||typeof t.workspace!=`string`||t.workspace.length>200||!j(t.first)||!j(t.last)||!j(t.size)||n.push({key:t.key,name:t.name,role:t.role,workspace:t.workspace,first:t.first,last:t.last,size:t.size,...A(t.dispatcher,100)?{dispatcher:t.dispatcher}:{}})}return{rows:n,...A(t.before,200)?{before:t.before}:{}}}var N=e=>fetch(`api/${e}`,{cache:`no-store`}).then(e=>e.ok?e.json():Promise.reject(Error(String(e.status)))),P=e=>void(N=e),F=1e4,I=3e4,L=new WeakMap,R=e=>{let t=[],n=e=>e.forEach(e=>(t.push(e.key),n(e.subs)));return n([...e.tower?.subs??[],...e.tabs.flatMap(e=>e.units),...e.outside]),t.sort().join()},z=()=>l(`<li class="box-run"><a class="box-open"><span class="name"></span><em class="role"></em><span class="when"><span class="age"></span><span class="post"></span></span></a></li>`),B=(e,t)=>(e.dataset.since=String(t),e.textContent=c(t));function V(e,o,s){let c=e.querySelector(`.box-runs`);if(c.hidden=o.box?.state!==`live`||!s.rows.length,c.hidden)return;r(c,`summary`,y({count:s.rows.length})),i(c.querySelector(`.box-run-list`),s.rows.map(e=>({...e,id:e.key})),z,(e,i)=>{let s=e.querySelector(`a`);a(s,{view:`session`,ws:o.id,key:i.key}),s.setAttribute(`aria-label`,g({name:i.name})),r(e,`.name`,i.name),r(e,`.role`,n(i.role)),B(e.querySelector(`.age`),i.last),r(e,`.post`,t())});let l=c.querySelector(`.box-more`);l.hidden=!s.before,l.textContent=b()}function H(e,t,n,r){n.busy||(n.busy=!0,n.sig=R(t),n.at=Date.now(),N(`transcripts?base=${t.id}${r?`&before=${encodeURIComponent(r)}`:``}`).then(e=>{let t=M(e);n.failed=!1,n.rows=r?[...n.rows,...t.rows.filter(e=>!n.rows.some(t=>t.key===e.key))]:t.rows,n.before=t.before},()=>void(n.failed=!0)).finally(()=>(n.busy=!1,L.get(e)===n&&V(e,n.base??t,n))))}function U(e,t){let n=L.get(e)??(L.set(e,{rows:[],at:0,busy:!1,failed:!1}),L.get(e)),r=e.querySelector(`.box-more`);if(n.base=t,r.onclick=()=>n.before&&H(e,n.base??t,n,n.before),t.box?.state===`live`&&k(t.id)){let r=Date.now()-n.at>=(n.failed?I:F);!n.busy&&(n.at===0||r&&(n.failed||n.sig!==R(t)))&&H(e,t,n)}V(e,t,n)}function W(e,n){let i=e.querySelector(`.box-seen`),a=n.box,o=a.state===`unreachable`;if(i.hidden=!o,!o)return;r(i,`.bs-state`,T());let s=a.seen!==void 0&&Number.isFinite(a.seen);i.querySelector(`.bs-when`).hidden=!s,s&&(r(i,`.bs-pre`,x()),B(i.querySelector(`.age`),a.seen),r(i,`.bs-post`,t()))}function G(e,t,n=[],a){let c=t.box,l=c?.state===`ended`,m=t=>e.querySelector(t);m(`.box-line`).hidden=!c,c&&(r(e,`.box-dev`,`${c.label} · ${c.short}`),r(e,`.box-team`,w({team:c.team})),W(e,t));let h=m(`.box-ended`);h.hidden=!l,h.textContent=l?{revoked:p,refused:f,other:d}[O(c.why)]():``,m(`.title .tstate`).closest(`p`).hidden=l||!(!c||t.tower);for(let e of[`.tower-subs`,`.tower-notices`,`.tabs`,`.outposts`])m(e).hidden=l;let g=m(`.box-ally`);g.hidden=!c||!n.length,g.hidden||(r(g,`summary`,u()),i(g.querySelector(`.box-ally-in`),n.map(e=>({...e,id:`ally/${e.id}`})),s,(e,t)=>o(e,t,a))),U(e,t)}export{G as fillBox,P as useRuns};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-
|
|
2
|
-
import{r as e}from"./towermodel-BpgH7epr.js";import{t}from"./runtime-ZX6HkxDa.js";import{i as n,r,t as i}from"./mdbody-EVPNIWL0.js";import{t as a}from"./sentencepack-DtYqpppS.js";import{i as o,l as s,n as c,r as l,t as u}from"./towerturns-CkLhxaZZ.js";import{C as d,G as ee,K as te,W as ne,ft as f,mt as re,nt as ie,rt as p,s as ae,y as m}from"./index-BFO7v8ut.js";var oe=((e={},n={})=>(n.locale??t())===`zh-TW`?`可能已被當機的 run 處理過:動手前先確認。`:`A run that crashed may already have handled this: check before acting.`),se=((e={},n={})=>(n.locale??t())===`zh-TW`?`分支摘要`:`branch summary`),ce=((e={},n={})=>(n.locale??t())===`zh-TW`?`通訊紀錄`:`Comms log`),h=e=>`context compacted · ${e?.tokens} tokens summarized`,g=e=>`上下文已壓縮 · 摘要了 ${e?.tokens} tokens`,le=((e,n={})=>(n.locale??t())===`zh-TW`?g(e):h(e)),ue=((e={},n={})=>(n.locale??t())===`zh-TW`?`…(於 1 MB 截斷)`:`… (cut at 1 MB)`),_=e=>`exit ${e?.code}`,v=e=>`結束碼 ${e?.code}`,de=((e,n={})=>(n.locale??t())===`zh-TW`?v(e):_(e)),y=e=>`New chapter · ${e?.date} · ${e?.why}`,b=e=>`新的一章・${e?.date}・${e?.why}`,fe=((e,n={})=>(n.locale??t())===`zh-TW`?b(e):y(e)),pe=((e={},n={})=>(n.locale??t())===`zh-TW`?`第一次對話`:`the first conversation`),x=((e={},n={})=>(n.locale??t())===`zh-TW`?`你要求開新對話`:`you asked for a new conversation`),S=((e={},n={})=>(n.locale??t())===`zh-TW`?`上一章太長了`:`the last one grew too large`),C=((e={},n={})=>(n.locale??t())===`zh-TW`?`上一章無法接續`:`the last one could not be resumed`),w=e=>`Image ${e?.n}`,T=e=>`圖片 ${e?.n}`,me=((e,n={})=>(n.locale??t())===`zh-TW`?T(e):w(e)),he=((e={},n={})=>(n.locale??t())===`zh-TW`?`圖片無法讀取`:`Image unavailable`),E=e=>`${e?.count} image(s)`,D=e=>`${e?.count} 張圖片`,ge=((e,n={})=>(n.locale??t())===`zh-TW`?D(e):E(e)),_e=((e={},n={})=>(n.locale??t())===`zh-TW`?`收到`:`incoming`),O=((e={},n={})=>(n.locale??t())===`zh-TW`?`跳到最新`:`jump to latest`),k=e=>`${e?.count} new`,A=e=>`${e?.count} 則新訊息`,j=((e,n={})=>(n.locale??t())===`zh-TW`?A(e):k(e)),ve=((e={},n={})=>(n.locale??t())===`zh-TW`?`還沒有通訊。`:`No transmissions yet.`),ye=((e={},n={})=>(n.locale??t())===`zh-TW`?`通知`:`notice`),be=((e={},n={})=>(n.locale??t())===`zh-TW`?`細節`:`details`),M=((e={},n={})=>(n.locale??t())===`zh-TW`?`表單回覆`:`form answers`),xe=((e={},n={})=>(n.locale??t())===`zh-TW`?`訊息,來自`:`message from`),N=e=>`answer from ${e?.from}`,P=e=>`${e?.from} 的回答`,Se=((e,n={})=>(n.locale??t())===`zh-TW`?P(e):N(e)),Ce=e=>`request from ${e?.from}`,F=e=>`${e?.from} 的請求`,we=((e,n={})=>(n.locale??t())===`zh-TW`?F(e):Ce(e)),Te=e=>`message from ${e?.from}`,Ee=e=>`${e?.from} 的訊息`,De=((e,n={})=>(n.locale??t())===`zh-TW`?Ee(e):Te(e)),I=e=>`reply to your ask from ${e?.from}`,L=e=>`${e?.from} 回覆了你的詢問`,Oe=((e,n={})=>(n.locale??t())===`zh-TW`?L(e):I(e)),ke=((e={},n={})=>(n.locale??t())===`zh-TW`?`記憶`:`memory`),R=((e={},n={})=>(n.locale??t())===`zh-TW`?`監看`:`monitor`),Ae=((e={},n={})=>(n.locale??t())===`zh-TW`?`本機`:`this computer`),je=((e={},n={})=>(n.locale??t())===`zh-TW`?`隊友`:`teammate`),z=((e={},n={})=>(n.locale??t())===`zh-TW`?`提問,來自`:`question from`),B=((e={},n={})=>(n.locale??t())===`zh-TW`?`回報,來自`:`report from`),Me=((e={},n={})=>(n.locale??t())===`zh-TW`?`sb server 的通知`:`notice from the sb server`),V=((e={},n={})=>(n.locale??t())===`zh-TW`?`狀態:`:`status of`),Ne=((e={},n={})=>(n.locale??t())===`zh-TW`?`Straw Link 訊息`:`Straw Link message`),Pe=((e={},n={})=>(n.locale??t())===`zh-TW`?`喚醒鬧鐘`:`wake-up call`),H=((e={},n={})=>(n.locale??t())===`zh-TW`?`塔台事件`:`tower event`),Fe=(e,t)=>a(`notice_tower`,H,e,t),Ie=((e={},n={})=>(n.locale??t())===`zh-TW`?`在旁開啟`:`open beside`),U=e=>`Open image ${e?.n}`,Le=e=>`打開圖片 ${e?.n}`,Re=((e,n={})=>(n.locale??t())===`zh-TW`?Le(e):U(e)),W=e=>`show all (${e?.size})`,G=e=>`顯示全部(${e?.size})`,ze=((e,n={})=>(n.locale??t())===`zh-TW`?G(e):W(e)),Be=((e={},n={})=>(n.locale??t())===`zh-TW`?`顯示全部參數`:`show all arguments`),K=e=>`◇ thought · ${e?.count} chars`,q=e=>`◇ 思考 · ${e?.count} 字元`,Ve=((e,n={})=>(n.locale??t())===`zh-TW`?q(e):K(e)),He=((e={},n={})=>(n.locale??t())===`zh-TW`?`◇ 思考 · 已遮蔽`:`◇ thought · redacted`),J=((e={},n={})=>(n.locale??t())===`zh-TW`?`這座塔台正在待命。有訊息進來時,sb server 會喚醒它跑一個 run;你在這裡送出的第一則訊息就會啟動它。`:`This tower stands by. The sb server wakes it for a run when a message arrives; your first message here starts that run.`),Ue=(e,t)=>a(`tower_empty`,J,e,t),We=((e={},n={})=>(n.locale??t())===`zh-TW`?`無法取得`:`unavailable`);function Ge(){let e=!0,t=0,n=!0,r=0;return{get pinned(){return e},scrolled(r){r!==n&&(n=e=r,r&&(t=0))},parked:e=>void(r=e),moved(i,a){let o=i-r;return r=i,o<-.5&&e&&a()-i>1?!(e=!1):o!==0&&!e&&n&&a()-i<=1&&(e=!0,t=0,!0)},hold:()=>void(n=e=!1),arrived(n){return e||(t+=n),e},jump:()=>void(n=e=!0,t=0),button:n=>e&&!n?void 0:t&&!n?j({count:t}):O()}}async function Ke(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)}var Y={},qe=3e3,X=new Map,Z=new Map;async function Q(e){try{let t=Y.get?await Y.get(e):await ee(`answered/${encodeURIComponent(e)}`).then(e=>e.ok?e.body:void 0);if(!t||!Array.isArray(t.done)||!Array.isArray(t.pending))return!1;let r=new Map,i=e=>r.get(e)??(r.set(e,{done:[],pending:[]}),r.get(e));for(let[e,n,r]of t.done)i(e).done.push([n,r]);for(let[e,n]of t.pending)i(e).pending.push(n);for(let t of Z.get(e)??[])r.has(t)||n(e,t).seed({done:[],pending:[]});for(let[t,i]of r)n(e,t).seed(i);return Z.set(e,new Set(r.keys())),!t.unreadable}catch{return!1}}function Je(e){let t=X.get(e);if(t&&Date.now()-t.at<qe)return t.read;let n=Q(e);return X.set(e,{at:Date.now(),read:n}),n}function Ye(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 Xe=(e,t)=>({first:pe,new:x,size:S,unreadable:C})[e??``]?.()??t??``,Ze=e=>e.head?ie(`head_tower`):d(e.role),Qe=e=>e?new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,hour12:!1}):``,$e=e=>e>=1024?`${(e/1024).toFixed(e>=10240?0:1)} KB`:`${e} B`,et={intercom_message:xe,subagent_result:B,subagent_ping:z,subagent_status:V,"pi-loop-monitor":R,"memory-context":ke,"doc-review":M,"straw-tower":Fe,"straw-link":Ne},tt=e=>{let t=m(`<span class="ava"><svg><use/></svg></span>`),n=t.querySelector(`use`),r=ae[e]??e;return n.dataset.icon=r,n.setAttribute(`href`,p(r)),t};function nt(e){let t=[],n=0;for(let r of e.matchAll(/https?:\/\/[^\s<>)\]]+/g))t.push(e.slice(n,r.index),f(`a`,{href:r[0],rel:`noopener noreferrer`,target:`_blank`},r[0])),n=r.index+r[0].length;return[...t,e.slice(n)]}function $(n,a,{who:d,link:ee,docFor:p,page:ae,away:m}){let h=Ye(),g=new Map,_=new Set,v=()=>_.forEach(e=>e.button.isConnected?(e.shown=!0,e.button.hidden=!e.paths.some(e=>p?.(e))):e.shown&&_.delete(e)),y=f(`div`,{class:`chat-list`}),b=f(`div`,{class:`chat-top`}),pe=f(`div`,{class:`chat-end`}),x=f(`button`,{class:`chat-pill`,type:`button`,hidden:``}),S=f(`p`,{class:`chat-empty`},ve()),C=f(`div`,{class:`chat-scroll`,tabindex:`-1`,"aria-label":ce()},b,y,pe);n.replaceChildren(C,x);let w=Ge(),T=!1,E=!1,D,O,k=0,A=!1,j,M=()=>A||j!==void 0,N=()=>(clearTimeout(j),j=setTimeout(()=>(j=void 0,w.pinned&&!h.detached&&F()),250)),P=(e=w.button(h.detached))=>(x.hidden=!e,x.textContent=e??``),Ce=()=>(C.scrollTop=C.scrollHeight,w.parked(C.scrollTop)),F=()=>(w.jump(),O=void 0,Ce(),P());async function Te(e){T=!0;let t=await Ke(h,a,e,e=>(q(e),X(e))).finally(()=>T=!1),n=g.get(e);if(D===e){if(!t||!n)return F();w.hold(),O=n,n.scrollIntoView({block:`center`}),re(n,`lit`),clearTimeout(k),k=window.setTimeout(()=>(O=void 0,n.classList.remove(`lit`)),2e3),P()}}let Ee=()=>D?void Te(D):F(),I=(e,t,n,r)=>{e.disabled=!0,a.entry(n).then(n=>{let i=n&&r(n);if(i===void 0)return void(e.textContent=We());t.textContent=i,e.remove()},()=>e.textContent=We())};function L(e,t=0){if(!t||!a.pic)return null;let n=Array.from({length:t},(t,n)=>a.pic(e,n));return f(`div`,{class:`pics`},...n.map((e,t)=>{let r=f(`img`,{src:e,alt:me({n:t+1}),loading:`lazy`,decoding:`async`}),i=f(`button`,{type:`button`,class:`pic`,"aria-label":Re({n:t+1})},r);return r.addEventListener(`error`,()=>i.replaceWith(f(`em`,{class:`pic-gone`},he()))),i.addEventListener(`click`,()=>void ne(async()=>{let{lightbox:e}=await import(`./lightbox-8sSJm5zd.js`);return{lightbox:e}},__vite__mapDeps([0]),import.meta.url).then(({lightbox:e})=>e(n,t))),i}))}function ke(e,t){let n=h.result(e.id),r=f(`pre`,{class:`out`},n?.text??``),i=f(`pre`,{class:`args`},e.args??``),a=e.cut?f(`button`,{class:`more`,type:`button`},Be()):null;a?.addEventListener(`click`,()=>I(a,i,t,t=>(e=>e&&`${e.args??``}${e.cut?`\n${ue()}`:``}`)(t.tools?.find(t=>t.id===e.id))));let o=n?.more?f(`button`,{class:`more`,type:`button`},ze({size:$e(n.bytes??0)})):null;o?.addEventListener(`click`,()=>I(o,r,n.id,e=>e.text));let s=e.name===`show_doc`&&p?f(`button`,{class:`more open`,type:`button`,hidden:``},Ie()):null;s?.addEventListener(`click`,t=>(t.preventDefault(),e.summary.split(`, `).forEach(e=>p?.(e)?.()))),s&&_.add({paths:e.summary.split(`, `),button:s}),s&&queueMicrotask(v);let c=f(`details`,{class:`act`},f(`summary`,{"data-mark":n?n.isError?`error`:`done`:`working`},f(`b`,{class:`badge`}),f(`code`,null,e.name),f(`span`,{class:`sum`},e.summary),s),i,a,n&&f(`div`,{class:`result`},n.images?f(`em`,null,ge({count:n.images})):null,r,o)),l=n&&L(n.id,n.images);return l?[c,l]:[c]}let R=e=>f(`time`,null,Qe(e.at)),z=(e,t,n,r)=>f(`article`,{class:`tx you`},f(`header`,null,R(e),f(`b`,null,ie(`you`)),tt(`user`)),f(`div`,{class:`bubble`,title:r},n?f(`small`,{class:`boss-flag`},oe()):null,...nt(t),L(e.id,e.images))),B=(e,t,n,r={})=>f(`article`,{class:`tx sys`},f(`details`,{class:`notice`},f(`summary`,null,tt(`comms`),f(`em`,null,_e()),...t,R(e)),r.crashed?f(`small`,{class:`boss-flag`},oe()):null,f(`pre`,null,n),r.raw?f(`details`,{class:`notice-raw`},f(`summary`,null,be()),f(`pre`,{class:`raw`},r.raw)):null)),V=e=>{let t=o(e);return[xe(),` `,t.name&&ee(t.name)||t.name,t.id?` (${t.id})`:``,` · `,Ae()]},Ne=e=>e.kind===`link`?[{ask:we,reply:Oe,answer:Se,message:De}[e.what]({from:e.from}),` · `,je()]:e.kind===`intercom`?V(e.from):[e.kind===`server`?Me():Pe()],H=new Set,Fe=()=>H.forEach(e=>e.deref()||H.delete(e)),U=m&&{why:()=>m()?s():void 0,watch:e=>(H.size>=256&&Fe(),void H.add(new WeakRef(e)))},Le=(e,t)=>{let n=d().key,o=e=>a.post?a.post(`input`,e):te(`sessions/${encodeURIComponent(n)}/input`,e);return i(t,`md`,{density:`compact`,doc:`chat:${e}`,scope:[n,e],ready:()=>Je(n),...U?{away:U}:{},send:(t,n)=>r(o,{entry:e,index:t.ref.block,fields:t.fields})(n)})},W=()=>ae===!0&&d().head===!0,G=()=>f(`article`,{class:`tx skip`,hidden:``});function K(e){switch(e.kind){case`user`:{let t=d().service?l(e.text):void 0;if(t)return B(e,t.kind===`intercom`?V(t.from):[t.kind===`server`?Me():Pe()],e.text??``);let n=d().service?u(e.text):void 0;return z(e,n?n.body:e.text??``,n?.crashed,n?e.text??``:``)}case`assistant`:{let t=d();if(W()&&!e.text&&!e.thought&&!e.error&&!e.stop)return G();let n=f(`pre`,{class:`thought-text`}),r=e.thought?f(`button`,{class:`thought`,type:`button`},e.thought<0?He():Ve({count:e.thought.toLocaleString()})):null;return e.thought&&e.thought>0&&r?.addEventListener(`click`,()=>I(r,n,e.id,e=>e.thoughtText)),f(`article`,{class:t.head?`tx in head`:`tx in`},tt(t.head?`crown`:t.role),f(`div`,{class:`tx-body`},f(`header`,null,f(`b`,null,Ze(t)),e.model?f(`span`,null,e.model):null,R(e),e.stop?f(`span`,{class:`stop`,"data-mark":`error`},e.stop):null),r,n,e.text?Le(e.id,e.text):null,e.error?f(`p`,{class:`fault`},e.error):null,...(W()?[]:e.tools??[]).flatMap(t=>ke(t,e.id))))}case`bash`:return W()?G():f(`article`,{class:`tx sys`},f(`details`,{class:`act`},f(`summary`,{"data-mark":e.exit?`error`:`done`},f(`b`,{class:`badge`}),f(`code`,null,`shell`),f(`span`,{class:`sum`},`! ${e.command}`),e.exit?f(`span`,{class:`stop`,"data-mark":`error`},de({code:e.exit})):null),e.text?f(`pre`,{class:`out`},e.text):null));case`notice`:{let t=c(e);return t?.kind===`boss`&&d().service?z(e,t.body,t.crashed,e.text??``):W()&&(t?.kind===`server`||t?.kind===`timer`)?G():t&&t.kind!==`boss`?B(e,Ne(t),t.body,t.kind===`link`?{raw:t.raw}:{crashed:t.crashed}):B(e,[et[e.type??``]?.()??e.type??ye(),` `,e.from&&ee(e.from)||(e.from??``)],e.text??``)}case`divider`:return e.type===`chapter`?f(`article`,{class:`tx rule chapter`},f(`p`,null,fe({date:e.at?new Date(e.at).toLocaleDateString(t(),{year:`numeric`,month:`short`,day:`numeric`}):``,why:Xe(e.code,e.text)}))):f(`article`,{class:`tx rule`},f(`details`,null,f(`summary`,null,e.type===`compaction`?le({tokens:(e.tokens??0).toLocaleString()}):se()),f(`pre`,null,e.text??``)));default:return f(`article`,{class:`tx note`},e.text??``,` `,R(e))}}function q(e){e.rebuild&&(g.clear(),y.replaceChildren());for(let t of e.dropped)g.get(t)?.remove(),g.delete(t);let t=e.added.map(e=>(g.set(e.id,K(e)),g.get(e.id)));e.front?y.prepend(...t):y.append(...t),E&&!e.front&&!e.rebuild&&t.forEach(e=>(e.classList.add(`fresh`),e.dataset.born=String(Date.now()))),S.remove();let n=d().service;S.textContent=n?.state===`standing`&&!n.run?Ue():ve(),h.items.length||y.append(S),b.hidden=!h.before,qe()}let J=[],Y=new Map;function qe(){let t=new Set;for(let n of J){let r=Date.parse(n.startedAt),i=h.items.findIndex(e=>e.at!==void 0&&Date.parse(e.at)>=r);if(i===0&&h.before)continue;let a=i<0?``:h.items[i].id,o=JSON.stringify([a,e(n)]),s=Y.get(n.id);if(t.add(n.id),s&&s.sig===o&&s.el.isConnected)continue;s?.el.remove();let c=e(n),l=f(`article`,{class:`tx rule conv-rule`},f(`div`,null,f(`b`,null,c.title),c.ended?f(`small`,null,c.ended):null));Y.set(n.id,{el:l,sig:o});let u=a?g.get(a):void 0;u?u.before(l):y.append(l)}for(let[e,n]of Y)t.has(e)||(n.el.remove(),Y.delete(e))}let X=e=>e.touched.forEach(e=>{let t=g.get(e),n=h.items.find(t=>t.id===e);if(t&&n){let r=K(n);t.classList.contains(`fresh`)&&Date.now()-Number(t.dataset.born??0)<400&&r.classList.add(`fresh`),t.replaceWith(r),g.set(e,r)}}),Z=async()=>{if(!T&&h.before&&E){T=!0;try{let e=C.scrollHeight,t=h.prepend(await a.older(h.before));q(t),X(t),C.scrollTop+=C.scrollHeight-e}finally{T=!1}h.before&&C.clientHeight&&b.getBoundingClientRect().bottom>=C.getBoundingClientRect().top&&Z()}};x.addEventListener(`click`,()=>{D=void 0,h.detached?a.latest().then(e=>(q(h.reset(e)),F())):F()});let Q=[new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&void Z(),{root:C}),new IntersectionObserver(e=>C.clientHeight&&(w.scrolled(e.at(-1).isIntersecting),P()),{root:C,rootMargin:`0px 0px 67px`})],$,rt=()=>($??(Q[0].observe(b),Q[1].observe(pe)),clearTimeout($),$=setTimeout(()=>($=void 0,Q.forEach(e=>e.disconnect())),600));C.addEventListener(`scroll`,()=>(rt(),w.moved(C.scrollTop,()=>C.scrollHeight-C.clientHeight)&&P(),!A&&j!==void 0&&N()),{passive:!0}),C.addEventListener(`wheel`,e=>e.deltaY<0&&N(),{passive:!0}),C.addEventListener(`keydown`,e=>([`ArrowUp`,`PageUp`,`Home`].includes(e.key)||e.key===` `&&e.shiftKey)&&N(),{passive:!0}),C.addEventListener(`touchstart`,()=>(A=!0,clearTimeout(j),j=void 0),{passive:!0});for(let e of[`touchend`,`touchcancel`])C.addEventListener(e,()=>(A=!1,N()),{passive:!0});for(let e of[`wheel`,`touchstart`,`pointerdown`,`keydown`])C.addEventListener(e,()=>O=D=void 0,{passive:!0});let it=new ResizeObserver(()=>M()?w.parked(C.scrollTop):w.pinned&&!h.detached?Ce():O?.scrollIntoView({block:`center`}));return it.observe(y),it.observe(C),{log:C,docs:v,box:()=>H.forEach(e=>{let t=e.deref();t?t.refresh():H.delete(e)}),runs(e){JSON.stringify(e)!==JSON.stringify(J)&&(J=e,qe())},apply(e){if(e.reset)q(h.reset({items:e.items??[],before:e.before})),E=!0,Ee();else if(e.items?.length){let t=h.append(e.items);q(t),X(t),w.arrived(t.added.length)&&!h.detached&&!M()?F():P()}},reveal(e){D=e,E&&Ee()}}}export{$ as mountChat,me as t};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-BFhWoJqT.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as e}from"./towermodel-BpgH7epr.js";import{t}from"./runtime-ZX6HkxDa.js";import{i as n,r,t as i}from"./mdbody-D2QvBfGJ.js";import{t as a}from"./sentencepack-DtYqpppS.js";import{i as o,l as s,n as c,r as l,t as u}from"./towerturns-CkLhxaZZ.js";import{C as d,G as ee,K as te,W as ne,ft as f,mt as re,nt as ie,rt as p,s as ae,y as m}from"./index-K5BhU6id.js";var oe=((e={},n={})=>(n.locale??t())===`zh-TW`?`可能已被當機的 run 處理過:動手前先確認。`:`A run that crashed may already have handled this: check before acting.`),se=((e={},n={})=>(n.locale??t())===`zh-TW`?`分支摘要`:`branch summary`),ce=((e={},n={})=>(n.locale??t())===`zh-TW`?`通訊紀錄`:`Comms log`),h=e=>`context compacted · ${e?.tokens} tokens summarized`,g=e=>`上下文已壓縮 · 摘要了 ${e?.tokens} tokens`,le=((e,n={})=>(n.locale??t())===`zh-TW`?g(e):h(e)),ue=((e={},n={})=>(n.locale??t())===`zh-TW`?`…(於 1 MB 截斷)`:`… (cut at 1 MB)`),_=e=>`exit ${e?.code}`,v=e=>`結束碼 ${e?.code}`,de=((e,n={})=>(n.locale??t())===`zh-TW`?v(e):_(e)),y=e=>`New chapter · ${e?.date} · ${e?.why}`,b=e=>`新的一章・${e?.date}・${e?.why}`,fe=((e,n={})=>(n.locale??t())===`zh-TW`?b(e):y(e)),pe=((e={},n={})=>(n.locale??t())===`zh-TW`?`第一次對話`:`the first conversation`),x=((e={},n={})=>(n.locale??t())===`zh-TW`?`你要求開新對話`:`you asked for a new conversation`),S=((e={},n={})=>(n.locale??t())===`zh-TW`?`上一章太長了`:`the last one grew too large`),C=((e={},n={})=>(n.locale??t())===`zh-TW`?`上一章無法接續`:`the last one could not be resumed`),w=e=>`Image ${e?.n}`,T=e=>`圖片 ${e?.n}`,me=((e,n={})=>(n.locale??t())===`zh-TW`?T(e):w(e)),he=((e={},n={})=>(n.locale??t())===`zh-TW`?`圖片無法讀取`:`Image unavailable`),E=e=>`${e?.count} image(s)`,D=e=>`${e?.count} 張圖片`,ge=((e,n={})=>(n.locale??t())===`zh-TW`?D(e):E(e)),_e=((e={},n={})=>(n.locale??t())===`zh-TW`?`收到`:`incoming`),O=((e={},n={})=>(n.locale??t())===`zh-TW`?`跳到最新`:`jump to latest`),k=e=>`${e?.count} new`,A=e=>`${e?.count} 則新訊息`,j=((e,n={})=>(n.locale??t())===`zh-TW`?A(e):k(e)),ve=((e={},n={})=>(n.locale??t())===`zh-TW`?`還沒有通訊。`:`No transmissions yet.`),ye=((e={},n={})=>(n.locale??t())===`zh-TW`?`通知`:`notice`),be=((e={},n={})=>(n.locale??t())===`zh-TW`?`細節`:`details`),M=((e={},n={})=>(n.locale??t())===`zh-TW`?`表單回覆`:`form answers`),xe=((e={},n={})=>(n.locale??t())===`zh-TW`?`訊息,來自`:`message from`),N=e=>`answer from ${e?.from}`,P=e=>`${e?.from} 的回答`,Se=((e,n={})=>(n.locale??t())===`zh-TW`?P(e):N(e)),Ce=e=>`request from ${e?.from}`,F=e=>`${e?.from} 的請求`,we=((e,n={})=>(n.locale??t())===`zh-TW`?F(e):Ce(e)),Te=e=>`message from ${e?.from}`,Ee=e=>`${e?.from} 的訊息`,De=((e,n={})=>(n.locale??t())===`zh-TW`?Ee(e):Te(e)),I=e=>`reply to your ask from ${e?.from}`,L=e=>`${e?.from} 回覆了你的詢問`,Oe=((e,n={})=>(n.locale??t())===`zh-TW`?L(e):I(e)),ke=((e={},n={})=>(n.locale??t())===`zh-TW`?`記憶`:`memory`),R=((e={},n={})=>(n.locale??t())===`zh-TW`?`監看`:`monitor`),Ae=((e={},n={})=>(n.locale??t())===`zh-TW`?`本機`:`this computer`),je=((e={},n={})=>(n.locale??t())===`zh-TW`?`隊友`:`teammate`),z=((e={},n={})=>(n.locale??t())===`zh-TW`?`提問,來自`:`question from`),B=((e={},n={})=>(n.locale??t())===`zh-TW`?`回報,來自`:`report from`),Me=((e={},n={})=>(n.locale??t())===`zh-TW`?`sb server 的通知`:`notice from the sb server`),V=((e={},n={})=>(n.locale??t())===`zh-TW`?`狀態:`:`status of`),Ne=((e={},n={})=>(n.locale??t())===`zh-TW`?`Straw Link 訊息`:`Straw Link message`),Pe=((e={},n={})=>(n.locale??t())===`zh-TW`?`喚醒鬧鐘`:`wake-up call`),H=((e={},n={})=>(n.locale??t())===`zh-TW`?`塔台事件`:`tower event`),Fe=(e,t)=>a(`notice_tower`,H,e,t),Ie=((e={},n={})=>(n.locale??t())===`zh-TW`?`在旁開啟`:`open beside`),U=e=>`Open image ${e?.n}`,Le=e=>`打開圖片 ${e?.n}`,Re=((e,n={})=>(n.locale??t())===`zh-TW`?Le(e):U(e)),W=e=>`show all (${e?.size})`,G=e=>`顯示全部(${e?.size})`,ze=((e,n={})=>(n.locale??t())===`zh-TW`?G(e):W(e)),Be=((e={},n={})=>(n.locale??t())===`zh-TW`?`顯示全部參數`:`show all arguments`),K=e=>`◇ thought · ${e?.count} chars`,q=e=>`◇ 思考 · ${e?.count} 字元`,Ve=((e,n={})=>(n.locale??t())===`zh-TW`?q(e):K(e)),He=((e={},n={})=>(n.locale??t())===`zh-TW`?`◇ 思考 · 已遮蔽`:`◇ thought · redacted`),J=((e={},n={})=>(n.locale??t())===`zh-TW`?`這座塔台正在待命。有訊息進來時,sb server 會喚醒它跑一個 run;你在這裡送出的第一則訊息就會啟動它。`:`This tower stands by. The sb server wakes it for a run when a message arrives; your first message here starts that run.`),Ue=(e,t)=>a(`tower_empty`,J,e,t),We=((e={},n={})=>(n.locale??t())===`zh-TW`?`無法取得`:`unavailable`);function Ge(){let e=!0,t=0,n=!0,r=0;return{get pinned(){return e},scrolled(r){r!==n&&(n=e=r,r&&(t=0))},parked:e=>void(r=e),moved(i,a){let o=i-r;return r=i,o<-.5&&e&&a()-i>1?!(e=!1):o!==0&&!e&&n&&a()-i<=1&&(e=!0,t=0,!0)},hold:()=>void(n=e=!1),arrived(n){return e||(t+=n),e},jump:()=>void(n=e=!0,t=0),button:n=>e&&!n?void 0:t&&!n?j({count:t}):O()}}async function Ke(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)}var Y={},qe=3e3,X=new Map,Z=new Map;async function Q(e){try{let t=Y.get?await Y.get(e):await ee(`answered/${encodeURIComponent(e)}`).then(e=>e.ok?e.body:void 0);if(!t||!Array.isArray(t.done)||!Array.isArray(t.pending))return!1;let r=new Map,i=e=>r.get(e)??(r.set(e,{done:[],pending:[]}),r.get(e));for(let[e,n,r]of t.done)i(e).done.push([n,r]);for(let[e,n]of t.pending)i(e).pending.push(n);for(let t of Z.get(e)??[])r.has(t)||n(e,t).seed({done:[],pending:[]});for(let[t,i]of r)n(e,t).seed(i);return Z.set(e,new Set(r.keys())),!t.unreadable}catch{return!1}}function Je(e){let t=X.get(e);if(t&&Date.now()-t.at<qe)return t.read;let n=Q(e);return X.set(e,{at:Date.now(),read:n}),n}function Ye(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 Xe=(e,t)=>({first:pe,new:x,size:S,unreadable:C})[e??``]?.()??t??``,Ze=e=>e.head?ie(`head_tower`):d(e.role),Qe=e=>e?new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,hour12:!1}):``,$e=e=>e>=1024?`${(e/1024).toFixed(e>=10240?0:1)} KB`:`${e} B`,et={intercom_message:xe,subagent_result:B,subagent_ping:z,subagent_status:V,"pi-loop-monitor":R,"memory-context":ke,"doc-review":M,"straw-tower":Fe,"straw-link":Ne},tt=e=>{let t=m(`<span class="ava"><svg><use/></svg></span>`),n=t.querySelector(`use`),r=ae[e]??e;return n.dataset.icon=r,n.setAttribute(`href`,p(r)),t};function nt(e){let t=[],n=0;for(let r of e.matchAll(/https?:\/\/[^\s<>)\]]+/g))t.push(e.slice(n,r.index),f(`a`,{href:r[0],rel:`noopener noreferrer`,target:`_blank`},r[0])),n=r.index+r[0].length;return[...t,e.slice(n)]}function $(n,a,{who:d,link:ee,docFor:p,page:ae,away:m}){let h=Ye(),g=new Map,_=new Set,v=()=>_.forEach(e=>e.button.isConnected?(e.shown=!0,e.button.hidden=!e.paths.some(e=>p?.(e))):e.shown&&_.delete(e)),y=f(`div`,{class:`chat-list`}),b=f(`div`,{class:`chat-top`}),pe=f(`div`,{class:`chat-end`}),x=f(`button`,{class:`chat-pill`,type:`button`,hidden:``}),S=f(`p`,{class:`chat-empty`},ve()),C=f(`div`,{class:`chat-scroll`,tabindex:`-1`,"aria-label":ce()},b,y,pe);n.replaceChildren(C,x);let w=Ge(),T=!1,E=!1,D,O,k=0,A=!1,j,M=()=>A||j!==void 0,N=()=>(clearTimeout(j),j=setTimeout(()=>(j=void 0,w.pinned&&!h.detached&&F()),250)),P=(e=w.button(h.detached))=>(x.hidden=!e,x.textContent=e??``),Ce=()=>(C.scrollTop=C.scrollHeight,w.parked(C.scrollTop)),F=()=>(w.jump(),O=void 0,Ce(),P());async function Te(e){T=!0;let t=await Ke(h,a,e,e=>(q(e),X(e))).finally(()=>T=!1),n=g.get(e);if(D===e){if(!t||!n)return F();w.hold(),O=n,n.scrollIntoView({block:`center`}),re(n,`lit`),clearTimeout(k),k=window.setTimeout(()=>(O=void 0,n.classList.remove(`lit`)),2e3),P()}}let Ee=()=>D?void Te(D):F(),I=(e,t,n,r)=>{e.disabled=!0,a.entry(n).then(n=>{let i=n&&r(n);if(i===void 0)return void(e.textContent=We());t.textContent=i,e.remove()},()=>e.textContent=We())};function L(e,t=0){if(!t||!a.pic)return null;let n=Array.from({length:t},(t,n)=>a.pic(e,n));return f(`div`,{class:`pics`},...n.map((e,t)=>{let r=f(`img`,{src:e,alt:me({n:t+1}),loading:`lazy`,decoding:`async`}),i=f(`button`,{type:`button`,class:`pic`,"aria-label":Re({n:t+1})},r);return r.addEventListener(`error`,()=>i.replaceWith(f(`em`,{class:`pic-gone`},he()))),i.addEventListener(`click`,()=>void ne(async()=>{let{lightbox:e}=await import(`./lightbox-D1aF3asz.js`);return{lightbox:e}},__vite__mapDeps([0]),import.meta.url).then(({lightbox:e})=>e(n,t))),i}))}function ke(e,t){let n=h.result(e.id),r=f(`pre`,{class:`out`},n?.text??``),i=f(`pre`,{class:`args`},e.args??``),a=e.cut?f(`button`,{class:`more`,type:`button`},Be()):null;a?.addEventListener(`click`,()=>I(a,i,t,t=>(e=>e&&`${e.args??``}${e.cut?`\n${ue()}`:``}`)(t.tools?.find(t=>t.id===e.id))));let o=n?.more?f(`button`,{class:`more`,type:`button`},ze({size:$e(n.bytes??0)})):null;o?.addEventListener(`click`,()=>I(o,r,n.id,e=>e.text));let s=e.name===`show_doc`&&p?f(`button`,{class:`more open`,type:`button`,hidden:``},Ie()):null;s?.addEventListener(`click`,t=>(t.preventDefault(),e.summary.split(`, `).forEach(e=>p?.(e)?.()))),s&&_.add({paths:e.summary.split(`, `),button:s}),s&&queueMicrotask(v);let c=f(`details`,{class:`act`},f(`summary`,{"data-mark":n?n.isError?`error`:`done`:`working`},f(`b`,{class:`badge`}),f(`code`,null,e.name),f(`span`,{class:`sum`},e.summary),s),i,a,n&&f(`div`,{class:`result`},n.images?f(`em`,null,ge({count:n.images})):null,r,o)),l=n&&L(n.id,n.images);return l?[c,l]:[c]}let R=e=>f(`time`,null,Qe(e.at)),z=(e,t,n,r)=>f(`article`,{class:`tx you`},f(`header`,null,R(e),f(`b`,null,ie(`you`)),tt(`user`)),f(`div`,{class:`bubble`,title:r},n?f(`small`,{class:`boss-flag`},oe()):null,...nt(t),L(e.id,e.images))),B=(e,t,n,r={})=>f(`article`,{class:`tx sys`},f(`details`,{class:`notice`},f(`summary`,null,tt(`comms`),f(`em`,null,_e()),...t,R(e)),r.crashed?f(`small`,{class:`boss-flag`},oe()):null,f(`pre`,null,n),r.raw?f(`details`,{class:`notice-raw`},f(`summary`,null,be()),f(`pre`,{class:`raw`},r.raw)):null)),V=e=>{let t=o(e);return[xe(),` `,t.name&&ee(t.name)||t.name,t.id?` (${t.id})`:``,` · `,Ae()]},Ne=e=>e.kind===`link`?[{ask:we,reply:Oe,answer:Se,message:De}[e.what]({from:e.from}),` · `,je()]:e.kind===`intercom`?V(e.from):[e.kind===`server`?Me():Pe()],H=new Set,Fe=()=>H.forEach(e=>e.deref()||H.delete(e)),U=m&&{why:()=>m()?s():void 0,watch:e=>(H.size>=256&&Fe(),void H.add(new WeakRef(e)))},Le=(e,t)=>{let n=d().key,o=e=>a.post?a.post(`input`,e):te(`sessions/${encodeURIComponent(n)}/input`,e);return i(t,`md`,{density:`compact`,doc:`chat:${e}`,scope:[n,e],ready:()=>Je(n),...U?{away:U}:{},send:(t,n)=>r(o,{entry:e,index:t.ref.block,fields:t.fields})(n)})},W=()=>ae===!0&&d().head===!0,G=()=>f(`article`,{class:`tx skip`,hidden:``});function K(e){switch(e.kind){case`user`:{let t=d().service?l(e.text):void 0;if(t)return B(e,t.kind===`intercom`?V(t.from):[t.kind===`server`?Me():Pe()],e.text??``);let n=d().service?u(e.text):void 0;return z(e,n?n.body:e.text??``,n?.crashed,n?e.text??``:``)}case`assistant`:{let t=d();if(W()&&!e.text&&!e.thought&&!e.error&&!e.stop)return G();let n=f(`pre`,{class:`thought-text`}),r=e.thought?f(`button`,{class:`thought`,type:`button`},e.thought<0?He():Ve({count:e.thought.toLocaleString()})):null;return e.thought&&e.thought>0&&r?.addEventListener(`click`,()=>I(r,n,e.id,e=>e.thoughtText)),f(`article`,{class:t.head?`tx in head`:`tx in`},tt(t.head?`crown`:t.role),f(`div`,{class:`tx-body`},f(`header`,null,f(`b`,null,Ze(t)),e.model?f(`span`,null,e.model):null,R(e),e.stop?f(`span`,{class:`stop`,"data-mark":`error`},e.stop):null),r,n,e.text?Le(e.id,e.text):null,e.error?f(`p`,{class:`fault`},e.error):null,...(W()?[]:e.tools??[]).flatMap(t=>ke(t,e.id))))}case`bash`:return W()?G():f(`article`,{class:`tx sys`},f(`details`,{class:`act`},f(`summary`,{"data-mark":e.exit?`error`:`done`},f(`b`,{class:`badge`}),f(`code`,null,`shell`),f(`span`,{class:`sum`},`! ${e.command}`),e.exit?f(`span`,{class:`stop`,"data-mark":`error`},de({code:e.exit})):null),e.text?f(`pre`,{class:`out`},e.text):null));case`notice`:{let t=c(e);return t?.kind===`boss`&&d().service?z(e,t.body,t.crashed,e.text??``):W()&&(t?.kind===`server`||t?.kind===`timer`)?G():t&&t.kind!==`boss`?B(e,Ne(t),t.body,t.kind===`link`?{raw:t.raw}:{crashed:t.crashed}):B(e,[et[e.type??``]?.()??e.type??ye(),` `,e.from&&ee(e.from)||(e.from??``)],e.text??``)}case`divider`:return e.type===`chapter`?f(`article`,{class:`tx rule chapter`},f(`p`,null,fe({date:e.at?new Date(e.at).toLocaleDateString(t(),{year:`numeric`,month:`short`,day:`numeric`}):``,why:Xe(e.code,e.text)}))):f(`article`,{class:`tx rule`},f(`details`,null,f(`summary`,null,e.type===`compaction`?le({tokens:(e.tokens??0).toLocaleString()}):se()),f(`pre`,null,e.text??``)));default:return f(`article`,{class:`tx note`},e.text??``,` `,R(e))}}function q(e){e.rebuild&&(g.clear(),y.replaceChildren());for(let t of e.dropped)g.get(t)?.remove(),g.delete(t);let t=e.added.map(e=>(g.set(e.id,K(e)),g.get(e.id)));e.front?y.prepend(...t):y.append(...t),E&&!e.front&&!e.rebuild&&t.forEach(e=>(e.classList.add(`fresh`),e.dataset.born=String(Date.now()))),S.remove();let n=d().service;S.textContent=n?.state===`standing`&&!n.run?Ue():ve(),h.items.length||y.append(S),b.hidden=!h.before,qe()}let J=[],Y=new Map;function qe(){let t=new Set;for(let n of J){let r=Date.parse(n.startedAt),i=h.items.findIndex(e=>e.at!==void 0&&Date.parse(e.at)>=r);if(i===0&&h.before)continue;let a=i<0?``:h.items[i].id,o=JSON.stringify([a,e(n)]),s=Y.get(n.id);if(t.add(n.id),s&&s.sig===o&&s.el.isConnected)continue;s?.el.remove();let c=e(n),l=f(`article`,{class:`tx rule conv-rule`},f(`div`,null,f(`b`,null,c.title),c.ended?f(`small`,null,c.ended):null));Y.set(n.id,{el:l,sig:o});let u=a?g.get(a):void 0;u?u.before(l):y.append(l)}for(let[e,n]of Y)t.has(e)||(n.el.remove(),Y.delete(e))}let X=e=>e.touched.forEach(e=>{let t=g.get(e),n=h.items.find(t=>t.id===e);if(t&&n){let r=K(n);t.classList.contains(`fresh`)&&Date.now()-Number(t.dataset.born??0)<400&&r.classList.add(`fresh`),t.replaceWith(r),g.set(e,r)}}),Z=async()=>{if(!T&&h.before&&E){T=!0;try{let e=C.scrollHeight,t=h.prepend(await a.older(h.before));q(t),X(t),C.scrollTop+=C.scrollHeight-e}finally{T=!1}h.before&&C.clientHeight&&b.getBoundingClientRect().bottom>=C.getBoundingClientRect().top&&Z()}};x.addEventListener(`click`,()=>{D=void 0,h.detached?a.latest().then(e=>(q(h.reset(e)),F())):F()});let Q=[new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&void Z(),{root:C}),new IntersectionObserver(e=>C.clientHeight&&(w.scrolled(e.at(-1).isIntersecting),P()),{root:C,rootMargin:`0px 0px 67px`})],$,rt=()=>($??(Q[0].observe(b),Q[1].observe(pe)),clearTimeout($),$=setTimeout(()=>($=void 0,Q.forEach(e=>e.disconnect())),600));C.addEventListener(`scroll`,()=>(rt(),w.moved(C.scrollTop,()=>C.scrollHeight-C.clientHeight)&&P(),!A&&j!==void 0&&N()),{passive:!0}),C.addEventListener(`wheel`,e=>e.deltaY<0&&N(),{passive:!0}),C.addEventListener(`keydown`,e=>([`ArrowUp`,`PageUp`,`Home`].includes(e.key)||e.key===` `&&e.shiftKey)&&N(),{passive:!0}),C.addEventListener(`touchstart`,()=>(A=!0,clearTimeout(j),j=void 0),{passive:!0});for(let e of[`touchend`,`touchcancel`])C.addEventListener(e,()=>(A=!1,N()),{passive:!0});for(let e of[`wheel`,`touchstart`,`pointerdown`,`keydown`])C.addEventListener(e,()=>O=D=void 0,{passive:!0});let it=new ResizeObserver(()=>M()?w.parked(C.scrollTop):w.pinned&&!h.detached?Ce():O?.scrollIntoView({block:`center`}));return it.observe(y),it.observe(C),{log:C,docs:v,box:()=>H.forEach(e=>{let t=e.deref();t?t.refresh():H.delete(e)}),runs(e){JSON.stringify(e)!==JSON.stringify(J)&&(J=e,qe())},apply(e){if(e.reset)q(h.reset({items:e.items??[],before:e.before})),E=!0,Ee();else if(e.items?.length){let t=h.append(e.items);q(t),X(t),w.arrived(t.added.length)&&!h.detached&&!M()?F():P()}},reveal(e){D=e,E&&Ee()}}}export{$ as mountChat,me as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./runtime-ZX6HkxDa.js";import{t}from"./open_main_title-DyToxqLu.js";import{t as n}from"./unit_count-DESQ_h2Y.js";import"./headkey-BhBqIerz.js";import{A as r,C as i,E as a,F as o,H as s,Kt as c,M as l,N as ee,S as u,T as d,_ as f,bt as p,d as m,f as te,ft as h,l as g,nt as _,w as ne,y as v,z as re}from"./index-
|
|
1
|
+
import{t as e}from"./runtime-ZX6HkxDa.js";import{t}from"./open_main_title-DyToxqLu.js";import{t as n}from"./unit_count-DESQ_h2Y.js";import"./headkey-BhBqIerz.js";import{A as r,C as i,E as a,F as o,H as s,Kt as c,M as l,N as ee,S as u,T as d,_ as f,bt as p,d as m,f as te,ft as h,l as g,nt as _,w as ne,y as v,z as re}from"./index-K5BhU6id.js";var y=((t={},n={})=>(n.locale??e())===`zh-TW`?`關閉清單`:`Close the list`),b=((t={},n={})=>(n.locale??e())===`zh-TW`?`切換到其他單位`:`Switch to a unit`),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`回到主地圖`:`Back to the map`),S=((t={},n={})=>(n.locale??e())===`zh-TW`?`所有單位`:`All units`),C=((t={},n={})=>(n.locale??e())===`zh-TW`?`指揮中`:`commanding`),w=((t={},n={})=>(n.locale??e())===`zh-TW`?`已結束`:`ended`),T=((t={},n={})=>(n.locale??e())===`zh-TW`?`錯誤`:`error`),E=((t={},n={})=>(n.locale??e())===`zh-TW`?`閒置`:`idle`),D=((t={},n={})=>(n.locale??e())===`zh-TW`?`無狀態`:`unknown`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`等待`:`waiting`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`工作中`:`working`),A=.4;function j(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 M=(e,t,n)=>Math.abs(n)>=.45?n>0:e>=t*A,N=(e,t)=>t||e.some(e=>e.editable||e.sink||e.scrollsX||[`input`,`textarea`,`select`].includes(e.tag));function P(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 F=e=>{let t=[];for(let n=e;n;n=n.parentElement)t.push(P(n));return t},I={working:k,waiting:O,idle:E,done:w,error:T,unknown:D,commanding:C},L=(e,t,n)=>(t?w:I[e])({},n&&{locale:n}),R=(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,control:!!t.control})));function z(e){return e.bases.flatMap(e=>{let t=[{id:`tower`,rows:e.tower?R(e.id,[{...e.tower,role:`tower`}]):[]},...e.tabs.map(t=>({id:t.id,label:p({label:t.label}),rows:R(e.id,t.units)})),{id:`outside`,label:_(`outside_net`),rows:R(e.id,e.outside)}].filter(e=>e.rows.length);return t.length?[{id:e.id,label:e.label,mark:e.mark,groups:t}]:[]})}var B=(e,t)=>e?.head?{mark:e.head.mark,word:e.head.state===`absent`?c({},t&&{locale:t}):L(e.head.mark,!1,t)}:void 0,V=e=>e.role===`main`&&e.mark===`idle`,H=e=>e.reduce((e,t)=>(t.sub?e.at(-1)?.subs.push(t):e.push({...t,subs:[]}),e),[]),U=()=>v(`<div class="unit"><div class="card"><a class="hit"></a>${g}<div class="meta"><span class="name"></span><span class="line"><em class="role"></em><b class="dstate"></b><span class="note"></span></span></div><button type="button" class="quit-btn" data-close="unit" hidden></button></div><div class="subs"></div></div>`),W=()=>v(`<div class="unit tower-row"><div class="trow"><a class="tower-go">${g}<span class="meta"><span class="name"></span><span class="line"><em class="role"></em><b class="dstate"></b></span></span></a><button type="button" class="pair-btn tower-add"></button></div><div class="subs"></div></div>`),G=()=>v(`<section class="dbase"><h3><a></a><small></small></h3><div class="dgroups"></div></section>`),K=()=>v(`<div class="dgroup"><h4></h4><div class="drows"></div></div>`),q=()=>matchMedia(`(max-width: 640px)`).matches;function J(e=()=>!1){let c=h(`div`,{class:`drawer-body`}),p=h(`button`,{type:`button`,class:`x`,"aria-label":y()},`×`),g=h(`a`,{class:`drawer-map`},x()),C=h(`button`,{type:`button`,class:`pair-btn`,"data-close":`dismiss-all`,hidden:``}),w=h(`div`,{class:`drawer-sweep`,hidden:``},C);m(g,{view:`map`});let T=v(`<a class="drawer-head"><svg viewBox="0 0 512 512" aria-hidden="true"><use data-icon="crown"/></svg><span class="name"></span><b class="dstate"></b></a>`);T.hidden=!0,m(T,{view:`head`});let E=h(`aside`,{class:`drawer`,"aria-label":b()},h(`header`,null,h(`b`,null,S()),p),T,c,h(`footer`,{class:`drawer-foot`},w,g)),D=h(`div`,{class:`drawer-veil`});document.body.append(D,E);let O,k,A=!1,P=!1,I=0,R=0,J,Y=()=>{let e=B(O);T.hidden=!e,e&&(u(T,e.mark),a(T,`.name`,_(`head_tower`)),a(T,`.dstate`,e.word),T.classList.toggle(`current`,A),T.toggleAttribute(`data-news`,re(O?.head,s())&&!A)),ee(C,O??{bases:[]}),w.hidden=C.hidden;let l=(e,t)=>{m(e.querySelector(`.hit`),{view:`session`,ws:t.ws,key:t.key}),e.querySelector(`.hit`).setAttribute(`aria-label`,`${t.name}: ${L(t.mark,t.ended)}`),e.classList.toggle(`current`,t.key===k),e.toggleAttribute(`data-dismiss`,t.role===`subagent`&&t.ended),e.dataset.key=t.key,u(e,t.mark),f(e.querySelector(`.plate`),t.role,t.mark),a(e,`.name`,t.name),a(e,`.role`,i(t.role)),a(e,`.dstate`,L(t.mark,t.ended)),ne(e,`.note`,t.note,t.mark,t.note?void 0:``);let n=e.querySelector(`:scope > .card > .quit-btn`);V(t)?r(n,t,e=>o(O?.bases.find(e=>e.id===t.ws),e)):n.hidden=!0,d(e.querySelector(`.subs`),t.subs??[],U,l)},p=(e,n)=>{let r=e.querySelector(`.tower-go`),o=e.querySelector(`.tower-add`),s=O?.bases.find(e=>e.id===n.ws);m(r,{view:`session`,ws:n.ws,key:n.key}),r.setAttribute(`aria-label`,`${n.name}: ${L(n.mark,n.ended)}`),e.classList.toggle(`current`,n.key===k),e.dataset.key=n.key,u(e,n.mark),f(r.querySelector(`.plate`),`tower`,n.mark),a(r,`.name`,n.name),a(r,`.role`,i(`tower`)),a(r,`.dstate`,L(n.mark,n.ended)),o.hidden=!s,s&&(te(o,s),o.setAttribute(`aria-label`,t({base:s.label}))),d(e.querySelector(`.subs`),n.subs,U,l)};d(c,z(O??{bases:[]}),G,(e,t)=>{u(e,t.mark),a(e,`h3 a`,t.label),m(e.querySelector(`h3 a`),{view:`workspace`,ws:t.id}),a(e,`small`,n({count:t.groups.reduce((e,t)=>e+t.rows.length,0)})),d(e.querySelector(`.dgroups`),t.groups,K,(e,t)=>{a(e,`h4`,t.label??``),e.querySelector(`h4`).toggleAttribute(`hidden`,!t.label),t.id===`tower`?d(e.querySelector(`.drows`),H(t.rows),W,p):d(e.querySelector(`.drows`),H(t.rows),U,l)})})},X=e=>{I=Math.max(0,Math.min(R,e)),E.style.setProperty(`--dx`,`${I}px`),D.style.opacity=String(R?I/R:0),D.style.pointerEvents=I>0?`auto`:`none`},Z=e=>{P=e,E.classList.toggle(`on`,e),E.inert=!e,document.documentElement.classList.remove(`drawer-drag`),X(e?R:0)},Q=()=>{R=E.offsetWidth,Y(),E.classList.add(`on`),document.documentElement.classList.add(`drawer-drag`)};E.inert=!0,document.addEventListener(`touchstart`,t=>{let n=t.target,r=E.contains(n)||n===D;if(J=void 0,!q()||e()||t.touches.length!==1||document.querySelector(`dialog.sheet[open], dialog.lightbox[open], [popover]:popover-open`)||(P?!r:N(F(n),!!getSelection()?.toString())))return;let i=t.touches[0],a=P?n.closest(`.unit[data-dismiss] > .card`)??void 0:void 0;J={x0:i.clientX,y0:i.clientY,mode:`wait`,was:P,base:I,last:i.clientX,at:performance.now(),v:0,card:a}},{passive:!0}),document.addEventListener(`touchmove`,e=>{if(!J||J.mode===`pass`)return;let t=e.touches[0],n=t.clientX-J.x0,r=t.clientY-J.y0;if(J.mode===`wait`){let e=j(n,r,J.was);if(e===`wait`)return;if(e===`pass`&&J.card&&j(n,r,!1)===`drag`)J.mode=`card`,J.card.classList.add(`swiping`);else if(e===`pass`)return void(J.mode=`pass`);else J.mode=`drag`,Q()}e.preventDefault();let i=performance.now();if(J.v=(t.clientX-J.last)/Math.max(1,i-J.at),[J.last,J.at]=[t.clientX,i],J.mode!==`card`)return X(J.base+n);let a=Math.max(0,n);J.card.style.setProperty(`--sx`,`${a}px`),J.card.style.setProperty(`--so`,String(1-a/J.card.offsetWidth))},{passive:!1});let ie=(e,t)=>{e.classList.remove(`swiping`),e.style.removeProperty(`--sx`),e.style.removeProperty(`--so`),t&&(e.classList.add(`gone`),l({key:e.parentElement.dataset.key}).then(t=>t||e.classList.remove(`gone`)))},$=e=>{let t=J;J=void 0,t?.mode===`drag`&&Z(M(I,R,t.v)),t?.mode===`card`&&ie(t.card,e.type===`touchend`&&M(Math.max(0,t.last-t.x0),t.card.offsetWidth,t.v))};return document.addEventListener(`touchend`,$),document.addEventListener(`touchcancel`,$),D.addEventListener(`click`,()=>Z(!1)),E.addEventListener(`click`,e=>e.target.closest(`a[data-route], button[data-open], .x`)&&Z(!1)),document.addEventListener(`keydown`,e=>P&&e.key===`Escape`&&(e.preventDefault(),Z(!1)),!0),document.addEventListener(`sb-drawer`,()=>(P||Q(),Z(!P))),{net(e){O=e,P&&Y()},route(e){k=e.view===`session`?e.key:void 0,A=e.view===`head`||e.view===`session`&&e.ws===`@head`,g.toggleAttribute(`aria-current`,e.view===`map`),P&&Y()}}}export{J as mountDrawer};
|