pi-straw-boss 0.59.5 → 0.59.6
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-BIlfqOp9.js → allyasks-CTUiK5Ht.js} +1 -1
- package/dist/gui/assets/{answer-CHQVR5mQ.js → answer-D403RHyM.js} +1 -1
- package/dist/gui/assets/ask-tXVEUKiF.js +1 -0
- package/dist/gui/assets/{asks-DNIo2F_C.js → asks-DU25Zsis.js} +1 -1
- package/dist/gui/assets/{chat-BZL32SEm.js → chat-I4VvpYyG.js} +1 -1
- package/dist/gui/assets/{drawer-UYaHVDRb.js → drawer-wBIYsu9b.js} +1 -1
- package/dist/gui/assets/{index-B215TfVX.js → index-CkdCrste.js} +1 -1
- package/dist/gui/assets/{lanwait-DJuC5jm7.js → lanwait-sVzvVJ6q.js} +1 -1
- package/dist/gui/assets/{layer-Dbdje1d1.js → layer-IY4EhFST.js} +1 -1
- package/dist/gui/assets/{lightbox-BrrWiyxu.js → lightbox-B8HApcBz.js} +1 -1
- package/dist/gui/assets/{link-C6yv4Q5G.js → link-CZN40s8s.js} +1 -1
- package/dist/gui/assets/{linkdialogs-kIN1e-EH.js → linkdialogs-Deiaw55t.js} +1 -1
- package/dist/gui/assets/{pair-D5freLFO.js → pair-CfFNN-re.js} +1 -1
- package/dist/gui/assets/{picker-CVicIn3o.js → picker-DXgdpMA0.js} +1 -1
- package/dist/gui/assets/{post-CmicYl-f.js → post-DDdE-PdN.js} +1 -1
- package/dist/gui/assets/{refusal-CTAnRvLI.js → refusal--wJ5SRx-.js} +1 -1
- package/dist/gui/assets/rolldown-runtime-DK3Fl9T5.js +1 -0
- package/dist/gui/assets/{server-OLrQYtGt.js → server-kDaAFu34.js} +1 -1
- package/dist/gui/assets/{sessionfacts-BJDNynyj.js → sessionfacts-Bf2gYU0C.js} +1 -1
- package/dist/gui/assets/{settings-wETE1YH1.js → settings-Bc7Yefkm.js} +1 -1
- package/dist/gui/assets/{spawn-7FS1DO0-.js → spawn-1_5KXhD5.js} +1 -1
- package/dist/gui/assets/termcard-0sRxxgI7.js +6 -0
- package/dist/gui/assets/{trust-B04w3ioA.js → trust-C-LiJfO0.js} +1 -1
- package/dist/gui/assets/{views-Dq3jgjQh.js → views-CeY-q5tM.js} +1 -1
- package/dist/gui/assets/{waitpanel-DC-rmnXC.js → waitpanel-SWbCnm0P.js} +1 -1
- package/dist/gui/assets/zenchunk-MeFqgUsg.js +2 -0
- package/dist/gui/index.html +1 -1
- package/dist/server/main.mjs +3 -1
- package/package.json +1 -1
- package/prompts/integrator.md +5 -4
- package/src/ending.ts +5 -0
- package/src/probe.ts +2 -2
- package/dist/gui/assets/ask-cOhDmYjA.js +0 -1
- package/dist/gui/assets/rolldown-runtime-4tVxZq34.js +0 -1
- package/dist/gui/assets/termcard-DLEcVHbw.js +0 -6
- package/dist/gui/assets/zenchunk-BZYINjVd.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./runtime-ZX6HkxDa.js";import{S as t}from"./towermodel-YlF7HR2k.js";import{J as n,X as r}from"./index-
|
|
1
|
+
import{t as e}from"./runtime-ZX6HkxDa.js";import{S as t}from"./towermodel-YlF7HR2k.js";import{J as n,X as r}from"./index-CkdCrste.js";import{mountDialogCards as i}from"./linkdialogs-Deiaw55t.js";var a=e=>{let n=t(`en`,e?.count,{},!0);return n===`one`?`${e?.count} question waits for you: answer it here`:n===`other`?`${e?.count} questions wait for you: answer them here`:`ally_asks_button`},o=e=>`${e?.count} 個問題等你回答,在這裡回答`,s=((t,n={})=>(n.locale??e())===`zh-TW`?o(t):a(t)),c=e=>e.tower===`blocked`||e.tabs.some(e=>e.state===`blocked`);function l(e){let t=new Map;for(let r of e?.alerts??[]){let i=r.kind===`dialog`?n(r):void 0;if(i!==`open`&&i!==`sent`)continue;let a=(e?.allies??[]).filter(e=>e.device===r.data.device),o=a.filter(e=>e.team===r.team),s=(o.length?o:a).find(c)??(o.length?o:a)[0];s&&t.set(s.id,[...t.get(s.id)??[],r])}return t}var u=`.ally-unit[data-state="blocked"], .ally-tab[data-state="blocked"]`;function d(){let e=new WeakMap,t=t=>{let a=e.get(t);if(a)return a;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 a={box:c,btn:o,list:s,cards:i(),ids:``},e.set(t,a),o.onclick=()=>n(t),t.addEventListener(`click`,e=>{let r=e.target?.closest?.(u);r&&t.contains(r)&&t.dataset.asks&&n(t)}),t.append(c),a};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 a(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=s({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:a,show:(e,t,n)=>a(e,l(n).get(t.id)??[])}}export{d as mountAllyAsks};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{t as e}from"./rolldown-runtime-DK3Fl9T5.js";import{t}from"./ask-tXVEUKiF.js";import{n}from"./post-DDdE-PdN.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})=>t(e,i,a,{key:n,show:r},o,s);export{a,s as i,r as n,o as r,i as t};
|
|
@@ -0,0 +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{Ut as o,X as s,t as c,vt as l}from"./index-CkdCrste.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`?`下方還有 ▾`:`More below ▾`),p=((t={},n={})=>(n.locale??e())===`zh-TW`?`也可以自己輸入答案。`:`It also takes your own words.`),m=((t={},n={})=>(n.locale??e())===`zh-TW`?`可以複選。`:`It takes several choices.`),h=((t={},n={})=>(n.locale??e())===`zh-TW`?`已取消。`:`Cancelled.`),g=((t={},n={})=>(n.locale??e())===`zh-TW`?`選擇`:`Choices`),_=((t={},n={})=>(n.locale??e())===`zh-TW`?`瀏覽器拒絕存取剪貼簿。`:`The browser refused the clipboard.`),v=((t={},n={})=>(n.locale??e())===`zh-TW`?`已複製到這台裝置的剪貼簿。`:`Copied to this device's clipboard.`),y=((t={},n={})=>(n.locale??e())===`zh-TW`?`複製指令`:`Copy command`),ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`這個選項有預覽;請在終端機中查看。`:`It has a preview; see it in the terminal.`),b=((t={},n={})=>(n.locale??e())===`zh-TW`?`備註`:`Note`),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`備註(選填)`:`Note (optional)`),S=e=>`Opened while ${e?.tool} was running; it may not be about that call.`,C=e=>`在 ${e?.tool} 執行時開啟,不一定與該呼叫有關。`,te=((t,n={})=>(n.locale??e())===`zh-TW`?C(t):S(t)),w=((t={},n={})=>(n.locale??e())===`zh-TW`?`選項`:`Options`),T=((t={},n={})=>(n.locale??e())===`zh-TW`?`另一個答案沒有被採用;這個可以送出。`:`The other answer was not taken; this one can go.`),E=((t={},n={})=>(n.locale??e())===`zh-TW`?`你的答案`:`Your own answer`),D=((t={},n={})=>(n.locale??e())===`zh-TW`?`或自己輸入答案`:`Or type your own answer`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`問題已變更,請重新閱讀。`:`The question changed; read it again.`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`session 讀不懂這個答案。`:`The session could not read that answer.`),A=((t={},n={})=>(n.locale??e())===`zh-TW`?`這個答案不符合問題。`:`That answer does not fit the question.`),j=((t={},n={})=>(n.locale??e())===`zh-TW`?`session 拒絕了這個答案。`:`The session refused that answer.`),M=((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.`),N=((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.`),P=((t={},n={})=>(n.locale??e())===`zh-TW`?`送出答案`:`Send answer`),F=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示終端機`:`Show terminal`),I=((t={},n={})=>(n.locale??e())===`zh-TW`?`已在終端機中關閉。`:`It was dismissed in the terminal.`),L=((t={},n={})=>(n.locale??e())===`zh-TW`?`它已不再開啟。`:`It is no longer open.`),R=((t={},n={})=>(n.locale??e())===`zh-TW`?`已在終端機中回答。`:`It was already answered in the terminal.`),z=((t={},n={})=>(n.locale??e())===`zh-TW`?`它在等待對話框。`:`It waits on a dialog.`),B={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1};function V(e,t,n,r,i){let{q:a}=n,o=r[a],s=B[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 H(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=V(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 U=e=>e.multiple?m():e.freeform&&e.options.length?p():``,W=90,G=(e,t)=>s(`div`,{class:`ask-one`},e.header&&s(`b`,{class:`ask-head`},e.header),s(`p`,{class:`ask-q`,...e.question.length>W?{"data-long":``}:{}},e.question),e.context&&s(`div`,{class:`ask-ctx`},e.context),e.options.length>0&&s(`ol`,{class:`ask-opts`,"aria-label":w()},...e.options.map(e=>s(`li`,{class:`ask-opt`},s(`b`,null,e.title),e.description&&s(`small`,null,e.description)))),t&&U(e)&&s(`small`,{class:`ask-how`},U(e))),K=e=>e.replace(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f\p{Cf}]/gu,`�`),q=e=>(e.select?.choices??[]).map((e,t)=>({...e,i:t})),J=(e,t,n)=>({...e.size?{choices:[...e].sort((e,t)=>e-t)}:{},...t.trim()?{text:t}:{},...n.trim()?{note:n}:{}}),Y=(e,t,n)=>({dialog:e.dialog,digest:e.digest,answerId:n,...t}),X=(e,t)=>({dialog:e.dialog,digest:e.digest,answerId:t,cancel:!0}),Z=(e,t)=>e.cancel===!0&&!(t&&e.select?.choices.every(e=>e.hereOnly)),Q={digest:O,"not-allowed":A,malformed:k};function ne(e,i=!1){let{outcome:a,reason:o,by:s}=e.body;return a===`accepted`?[`ok`,i?h():n()]:a===`stale`?[`error`,s===`local`?R():s===`cancel`?I():L()]:a===`rejected`?[`error`,(Object.hasOwn(Q,String(o))?Q[String(o)]:j)()]:a===`busy`?[`error`,t()]:a===`unknown`||e.status===504?[`error`,r(),!0]:[`error`,o??l({status:e.status})]}var re=e=>[`accepted`,`stale`,`busy`,`unknown`].includes(String(e.body.outcome))||e.status===504,$=e=>e.answer?`d\n${e.answer.dialog}\n${e.answer.digest}`:`c\n${e.callId}\n${e.why??``}`;function ie(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=f()};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)}function ae(e,t,n=location.hostname!==`127.0.0.1`,l,f,p=F){let m,h,S,C=!1,O=!1,k;for(let e of[`focusin`,`pointerdown`])document.addEventListener(e,e=>h&&!h.el.contains(e.target)&&(h.lost=void 0));let A=(e,t,n,...r)=>(e.dataset.tone=t,e.replaceChildren(n,...r)),j=()=>{if(!h)return;let e=document.activeElement;e&&e!==document.body&&e!==h.lost&&(h.lost=void 0),h.controls.forEach(e=>e.disabled=!C||O||h.done),h.send&&(h.send.disabled=!C||O||h.done||!h.pick()),e&&h.el.contains(e)&&e.disabled&&(h.lost=e);let t=h.lost;t&&!t.disabled&&h.el.contains(t)&&(!document.activeElement||document.activeElement===document.body)&&(t.focus(),h.lost=void 0)};async function I(e,n){[e.sending,O,e.spell]=[!0,!0,!1],j(),A(e.note,``,a());let o=await t(`answer`,n).catch(()=>void 0),u=s(`button`,{type:`button`,class:`cmp-link`},i());u.onclick=()=>void I(e,n);let[d,p,m]=o?ne(o,n.cancel===!0):[`error`,r(),!0];[e.done,e.sending,O,e.busy]=[!o||re(o),!1,!1,o?.body.outcome===`busy`],A(e.note,d,p,...m?[u]:[]);let h=o?.body.outcome===`accepted`?o.body.then:void 0,g=h&&c(h,{key:l?.key??``,command:e.copy,answerId:String(n.answerId??``)});g&&A(e.note,d,`${p} ${g}`),j(),e.note.scrollIntoView?.({block:`nearest`}),f&&o?.body.outcome===`accepted`&&setTimeout(()=>f(!!h&&!g),h&&!g?0:1200)}let L=(e,t,n,r,i)=>{let a=s(`button`,{type:`button`,class:`ask-opt`,role:e,"aria-checked":`false`},s(`b`,i?{"data-n":String(i)}:null,t),...n.filter(Boolean).map(e=>s(`small`,null,e)));return a.onclick=r,a};function R(e,t){let r,i=q(t).map(e=>L(`radio`,K(e.label),[e.note&&K(e.note)],()=>(r=e.i,i.forEach((n,r)=>n.setAttribute(`aria-checked`,String(q(t)[r].i===e.i))),j()),e.i+1)),a=t.select?.copy!==void 0&&s(`button`,{type:`button`,class:`cmp-link`},y());a&&(a.disabled=!navigator.clipboard,a.onclick=()=>void navigator.clipboard.writeText(t.select.copy).then(()=>A(e.note,`ok`,v()),()=>A(e.note,`error`,_())));let o=i.filter((e,r)=>!(n&&q(t)[r].hereOnly));return i.forEach(e=>!o.includes(e)&&(e.disabled=!0)),e.pick=()=>r===void 0?void 0:{choice:r},e.first=H(e.el,[{opts:i,multiple:!1,answered:()=>r!==void 0}],()=>e.send),e.controls=o,[s(`pre`,{class:`ask-title`},K(t.select.title)),s(`div`,{class:`ask-opts`,role:`radiogroup`,"aria-label":g()},...i),s(`div`,{class:`ask-acts`},e.send,e.cancel,a)]}function B(e,t){let n=t.questions.map(()=>({picks:new Set,text:s(`textarea`,{rows:`1`,maxlength:`8192`,class:`ask-own`,placeholder:D(),"aria-label":E()}),note:s(`input`,{type:`text`,maxlength:`2048`,class:`ask-own ask-memo`,placeholder:x(),"aria-label":b()})})),r=[],i=t.questions.map((t,i)=>{let a=n[i],o=t.multiple?`checkbox`:`radio`,c=t.options.map((e,n)=>L(o,e.title,[e.description,e.preview&&ee()],()=>{t.multiple||(a.picks.clear(),a.text.value=``),a.picks.has(n)?a.picks.delete(n):a.picks.add(n),c.forEach((e,t)=>e.setAttribute(`aria-checked`,String(a.picks.has(t)))),j()}));return a.text.oninput=()=>(t.multiple||(a.picks.clear(),c.forEach(e=>e.setAttribute(`aria-checked`,`false`))),j()),e.controls.push(...c,a.text,a.note),r.push({opts:c,multiple:!!t.multiple,own:a.text,note:a.note,answered:()=>a.picks.size>0||a.text.value.trim()!==``}),s(`div`,{class:`ask-one`},t.header&&s(`b`,{class:`ask-head`},t.header),s(`p`,{class:`ask-q`,...t.question.length>W?{"data-long":``}:{}},t.question),s(`div`,{class:`ask-opts`,role:t.multiple?`group`:`radiogroup`,"aria-label":w()},...c),a.text,a.note)});return e.pick=()=>n.every(e=>e.picks.size||e.text.value.trim())?{answers:n.map(e=>J(e.picks,e.text.value,e.note.value))}:void 0,e.first=H(e.el,r,()=>e.send),[...i,s(`div`,{class:`ask-acts`},e.send,e.cancel)]}function V(e){let t=e.asks??(e.ask?[e.ask]:[]),r=t.length>1,i=e.answer,a={copy:i?.select?.copy,key:$(e),el:s(`section`,{class:`ask`}),note:s(`p`,{class:`ask-note`,role:`status`,"aria-live":`polite`}),controls:[],pick:()=>void 0,done:!1,sending:!1};i&&((a.send=s(`button`,{type:`button`,class:`ask-send`},P())).onclick=()=>void(a.pick()&&I(a,Y(i,a.pick(),crypto.randomUUID()))));let c=e.tool===`secret_drop`;i&&!c&&Z(i,n)&&((a.cancel=s(`button`,{type:`button`,class:`ask-cancel`},o())).onclick=()=>void I(a,X(i,crypto.randomUUID())));let f=s(`p`,{class:`ask-term`},e.why&&t.length?e.why:`${r?d():u()} ${r||!t[0]?``:U(t[0])}`.trim()),m=l&&e.tool!==`secret_drop`&&s(`button`,{type:`button`,class:`cmp-link`},p());m&&(m.onclick=l.show);let h=e.answer?.twin&&e.tool&&e.tool!==`dialog`?[s(`p`,{class:`ask-why`},te({tool:e.tool}))]:[];return a.el.append(...h,...i&&!c?i.select?R(a,i):B(a,i):[...t.length?t.map(e=>G(e,r)):[s(`p`,{class:`ask-why`},c?n?M():N():e.why??z())],s(`div`,{class:`ask-acts`},c?s(`p`,{class:`ask-term`},u()):f,m)],a.note),a.cancel&&a.controls.push(a.cancel),a}let Q=(t,n)=>{let r=document.activeElement;h&&h!==n&&(h.focus=h.el.contains(r)?r:void 0),[m,h,S]=[t,n,n?.send?n:S],e.replaceChildren(...n?[n.el]:[]),n&&ie(n.el),j(),n?.focus&&(!document.activeElement||document.activeElement===document.body)&&n.focus.focus()};return{enter(){let e=h&&!h.done?h.first?.():void 0;return!!(e&&!e.disabled&&(e.focus(),1))},cancel(){let e=h&&!h.done?h.cancel:void 0;return!!(e&&!e.disabled&&(e.click(),1))},sending:()=>O,update(e,t){C=t,e&&(k=void clearTimeout(k)),!e&&(h?.done||h?.sending)?k??=setTimeout(()=>(k=void 0,Q()),6e3):e?h&&($(e)===h.key||!e.answer&&(h.done||h.sending)&&e.callId===m?.callId)?((h.busy||h.sending)&&!e.answer?h.spell=!0:h.busy&&h.spell&&e.answer&&([h.done,h.busy]=[!1,!1],A(h.note,``,T())),m=e):Q(e,S?.key===$(e)&&!S.done?S:V(e)):Q(),j()}}}export{ae as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{t as e}from"./rolldown-runtime-DK3Fl9T5.js";import{t}from"./runtime-ZX6HkxDa.js";import{m as n}from"./towermodel-YlF7HR2k.js";import{n as r}from"./post-DDdE-PdN.js";import{vt as i}from"./index-CkdCrste.js";var a=((e={},n={})=>(n.locale??t())===`zh-TW`?`沒有符合這個號碼的請求。`:`No request has that number.`),o=((e={},n={})=>(n.locale??t())===`zh-TW`?`這個請求已經不在了。`:`That request is gone.`),s=((e={},n={})=>(n.locale??t())===`zh-TW`?`連續輸入三次錯誤號碼,所以所有等待中的請求都已拒絕。請按「新的配對碼」重新配對。`:`Three wrong numbers in a row, so every waiting request was denied. Press New code and pair again.`),c=((e={},n={})=>(n.locale??t())===`zh-TW`?`這個請求已經變了,請重新看過。`:`That request changed. Look at it again.`),l=((e={},n={})=>(n.locale??t())===`zh-TW`?`這個請求已經不在了,或已逾時。`:`That request is gone or has timed out.`),u=((e={},n={})=>(n.locale??t())===`zh-TW`?`這個團隊沒有在這台裝置上執行。`:`That team is not running on this device.`),d=((e={},n={})=>(n.locale??t())===`zh-TW`?`已在該裝置上取消。`:`It was cancelled at the device.`),f=((e={},n={})=>(n.locale??t())===`zh-TW`?`你已從這裡回答。`:`You answered it from here.`),p=((e={},n={})=>(n.locale??t())===`zh-TW`?`已在該裝置上回答。`:`Answered at the device itself.`),m=((e={},n={})=>(n.locale??t())===`zh-TW`?`已由團隊的另一個控制端回答。`:`Answered by another controller of this team.`),h=e=>`The answer was not sent: ${e?.reason}`,g=e=>`答案沒有送出:${e?.reason}`,_=((e,n={})=>(n.locale??t())===`zh-TW`?g(e):h(e)),v=((e={},n={})=>(n.locale??t())===`zh-TW`?`問題在有人回答前就結束了。`:`It ended before anyone answered it.`),y=((e={},n={})=>(n.locale??t())===`zh-TW`?`已送出你的答案;對方裝置還沒關閉這個問題。`:`Your answer was sent; the device has not closed the question yet.`),b=((e={},n={})=>(n.locale??t())===`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,t)=>({tell:n=>t(`input`,{text:n,as:`send`,answers:e.id}),dismiss:()=>r(`${n(e.ws)}/memory`,{op:`drop`,id:e.id}),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=>r(`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||i({status:e.status}))},P=e=>async(t,n)=>{let a=await r(`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??i({status:a.status})})}}},F=e=>({confirm:()=>r(`${n(e.ws)}/memory`,{op:`confirm`,proposal:e.id,rev:e.rev()}),reject:()=>r(`${n(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??i({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,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-Cr2P3LZC.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./runtime-ZX6HkxDa.js";import{r as t}from"./towermodel-YlF7HR2k.js";import{i as n,n as r,r as i,t as a}from"./towerturns-sm4atUwy.js";import{n as o,t as s}from"./markdown-DvbY97ID.js";import{F as c,Lt as l,Q as u,X as d,b as f,d as p,w as m}from"./index-B215TfVX.js";var ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`可能已被當機的 run 處理過:動手前先確認。`:`A run that crashed may already have handled this: check before acting.`),te=((t={},n={})=>(n.locale??e())===`zh-TW`?`分支摘要`:`branch summary`),ne=((t={},n={})=>(n.locale??e())===`zh-TW`?`通訊紀錄`:`Comms log`),h=e=>`context compacted · ${e?.tokens} tokens summarized`,g=e=>`上下文已壓縮 · 摘要了 ${e?.tokens} tokens`,re=((t,n={})=>(n.locale??e())===`zh-TW`?g(t):h(t)),ie=((t={},n={})=>(n.locale??e())===`zh-TW`?`…(於 1 MB 截斷)`:`… (cut at 1 MB)`),_=e=>`exit ${e?.code}`,v=e=>`結束碼 ${e?.code}`,ae=((t,n={})=>(n.locale??e())===`zh-TW`?v(t):_(t)),y=e=>`New chapter · ${e?.date} · ${e?.why}`,b=e=>`新的一章・${e?.date}・${e?.why}`,oe=((t,n={})=>(n.locale??e())===`zh-TW`?b(t):y(t)),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`第一次對話`:`the first conversation`),S=((t={},n={})=>(n.locale??e())===`zh-TW`?`你要求開新對話`:`you asked for a new conversation`),C=((t={},n={})=>(n.locale??e())===`zh-TW`?`上一章太長了`:`the last one grew too large`),w=((t={},n={})=>(n.locale??e())===`zh-TW`?`上一章無法接續`:`the last one could not be resumed`),T=e=>`Image ${e?.n}`,E=e=>`圖片 ${e?.n}`,se=((t,n={})=>(n.locale??e())===`zh-TW`?E(t):T(t)),ce=((t={},n={})=>(n.locale??e())===`zh-TW`?`圖片無法讀取`:`Image unavailable`),D=e=>`${e?.count} image(s)`,O=e=>`${e?.count} 張圖片`,le=((t,n={})=>(n.locale??e())===`zh-TW`?O(t):D(t)),ue=((t={},n={})=>(n.locale??e())===`zh-TW`?`收到`:`incoming`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`跳到最新`:`jump to latest`),A=e=>`${e?.count} new`,j=e=>`${e?.count} 則新訊息`,M=((t,n={})=>(n.locale??e())===`zh-TW`?j(t):A(t)),de=((t={},n={})=>(n.locale??e())===`zh-TW`?`還沒有通訊。`:`No transmissions yet.`),fe=((t={},n={})=>(n.locale??e())===`zh-TW`?`通知`:`notice`),pe=((t={},n={})=>(n.locale??e())===`zh-TW`?`細節`:`details`),N=((t={},n={})=>(n.locale??e())===`zh-TW`?`表單回覆`:`form answers`),me=((t={},n={})=>(n.locale??e())===`zh-TW`?`訊息,來自`:`message from`),P=e=>`answer from ${e?.from}`,F=e=>`${e?.from} 的回答`,he=((t,n={})=>(n.locale??e())===`zh-TW`?F(t):P(t)),I=e=>`request from ${e?.from}`,L=e=>`${e?.from} 的請求`,ge=((t,n={})=>(n.locale??e())===`zh-TW`?L(t):I(t)),R=e=>`message from ${e?.from}`,_e=e=>`${e?.from} 的訊息`,ve=((t,n={})=>(n.locale??e())===`zh-TW`?_e(t):R(t)),z=e=>`reply to your ask from ${e?.from}`,B=e=>`${e?.from} 回覆了你的詢問`,ye=((t,n={})=>(n.locale??e())===`zh-TW`?B(t):z(t)),V=((t={},n={})=>(n.locale??e())===`zh-TW`?`記憶`:`memory`),be=((t={},n={})=>(n.locale??e())===`zh-TW`?`監看`:`monitor`),xe=((t={},n={})=>(n.locale??e())===`zh-TW`?`本機`:`this computer`),Se=((t={},n={})=>(n.locale??e())===`zh-TW`?`隊友`:`teammate`),H=((t={},n={})=>(n.locale??e())===`zh-TW`?`提問,來自`:`question from`),U=((t={},n={})=>(n.locale??e())===`zh-TW`?`回報,來自`:`report from`),Ce=((t={},n={})=>(n.locale??e())===`zh-TW`?`sb server 的通知`:`notice from the sb server`),W=((t={},n={})=>(n.locale??e())===`zh-TW`?`狀態:`:`status of`),G=((t={},n={})=>(n.locale??e())===`zh-TW`?`Straw Link 訊息`:`Straw Link message`),we=((t={},n={})=>(n.locale??e())===`zh-TW`?`喚醒鬧鐘`:`wake-up call`),Te=((t={},n={})=>(n.locale??e())===`zh-TW`?`塔台事件`:`tower event`),Ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`在旁開啟`:`open beside`),K=e=>`Open image ${e?.n}`,q=e=>`打開圖片 ${e?.n}`,De=((t,n={})=>(n.locale??e())===`zh-TW`?q(t):K(t)),J=e=>`show all (${e?.size})`,Y=e=>`顯示全部(${e?.size})`,Oe=((t,n={})=>(n.locale??e())===`zh-TW`?Y(t):J(t)),ke=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示全部參數`:`show all arguments`),X=e=>`◇ thought · ${e?.count} chars`,Z=e=>`◇ 思考 · ${e?.count} 字元`,Ae=((t,n={})=>(n.locale??e())===`zh-TW`?Z(t):X(t)),je=((t={},n={})=>(n.locale??e())===`zh-TW`?`◇ 思考 · 已遮蔽`:`◇ thought · redacted`),Me=((t={},n={})=>(n.locale??e())===`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.`),Ne=((t={},n={})=>(n.locale??e())===`zh-TW`?`無法取得`:`unavailable`),Pe=((t={},n={})=>(n.locale??e())===`zh-TW`?`你`:`you`);function Fe(){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?M({count:t}):k()}}async function Ie(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 Le(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 Re=(e,t)=>({first:x,new:S,size:C,unreadable:w})[e??``]?.()??t??``,ze=e=>e.head?l():m(e.role),Be=e=>e?new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,hour12:!1}):``,Ve=e=>e>=1024?`${(e/1024).toFixed(e>=10240?0:1)} KB`:`${e} B`,He={intercom_message:me,subagent_result:U,subagent_ping:H,subagent_status:W,"pi-loop-monitor":be,"memory-context":V,"doc-review":N,"straw-tower":Te,"straw-link":G},Q=e=>{let t=f(`<span class="ava"><svg><use/></svg></span>`);return t.querySelector(`use`).setAttribute(`href`,`#i-${p[e]??e}`),t};function Ue(e){let t=[],n=0;for(let r of e.matchAll(/https?:\/\/[^\s<>)\]]+/g))t.push(e.slice(n,r.index),d(`a`,{href:r[0],rel:`noopener noreferrer`,target:`_blank`},r[0])),n=r.index+r[0].length;return[...t,e.slice(n)]}function We(l,f,{who:p,link:m,docFor:h}){let g=Le(),_=new Map,v=new Set,y=()=>v.forEach(e=>e.button.isConnected?(e.shown=!0,e.button.hidden=!e.paths.some(e=>h?.(e))):e.shown&&v.delete(e)),b=d(`div`,{class:`chat-list`}),x=d(`div`,{class:`chat-top`}),S=d(`div`,{class:`chat-live`}),C=d(`div`,{class:`chat-end`}),w=d(`button`,{class:`chat-pill`,type:`button`,hidden:``}),T=d(`p`,{class:`chat-empty`},de()),E=d(`div`,{class:`chat-scroll`,tabindex:`-1`,"aria-label":ne()},x,b,S,C);l.replaceChildren(E,w);let D=Fe(),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&&!g.detached&&R()),250)),L=(e=D.button(g.detached))=>(w.hidden=!e,w.textContent=e??``),R=()=>(D.jump(),j=void 0,E.scrollTop=E.scrollHeight,L());async function _e(e){O=!0;let t=await Ie(g,f,e,e=>(q(e),Z(e))).finally(()=>O=!1),n=_.get(e);if(A===e){if(!t||!n)return R();D.hold(),j=n,n.scrollIntoView({block:`center`}),u(n,`lit`),clearTimeout(M),M=window.setTimeout(()=>(j=void 0,n.classList.remove(`lit`)),2e3),L()}}let z=()=>A?void _e(A):R(),B=(e,t,n,r)=>{e.disabled=!0,f.entry(n).then(n=>{let i=n&&r(n);if(i===void 0)return void(e.textContent=Ne());t.textContent=i,e.remove()},()=>e.textContent=Ne())};function V(e,t=0){if(!t||!f.pic)return null;let n=Array.from({length:t},(t,n)=>f.pic(e,n));return d(`div`,{class:`pics`},...n.map((e,t)=>{let r=d(`img`,{src:e,alt:se({n:t+1}),loading:`lazy`,decoding:`async`}),i=d(`button`,{type:`button`,class:`pic`,"aria-label":De({n:t+1})},r);return r.addEventListener(`error`,()=>i.replaceWith(d(`em`,{class:`pic-gone`},ce()))),i.addEventListener(`click`,()=>void c(async()=>{let{lightbox:e}=await import(`./lightbox-BrrWiyxu.js`);return{lightbox:e}},__vite__mapDeps([0]),import.meta.url).then(({lightbox:e})=>e(n,t))),i}))}function be(e,t){let n=g.result(e.id),r=d(`pre`,{class:`out`},n?.text??``),i=d(`pre`,{class:`args`},e.args??``),a=e.cut?d(`button`,{class:`more`,type:`button`},ke()):null;a?.addEventListener(`click`,()=>B(a,i,t,t=>(e=>e&&`${e.args??``}${e.cut?`\n${ie()}`:``}`)(t.tools?.find(t=>t.id===e.id))));let o=n?.more?d(`button`,{class:`more`,type:`button`},Oe({size:Ve(n.bytes??0)})):null;o?.addEventListener(`click`,()=>B(o,r,n.id,e=>e.text));let s=e.name===`show_doc`&&h?d(`button`,{class:`more open`,type:`button`,hidden:``},Ee()):null;s?.addEventListener(`click`,t=>(t.preventDefault(),e.summary.split(`, `).forEach(e=>h?.(e)?.()))),s&&v.add({paths:e.summary.split(`, `),button:s}),s&&queueMicrotask(y);let c=d(`details`,{class:`act`},d(`summary`,{"data-mark":n?n.isError?`error`:`done`:`working`},d(`b`,{class:`badge`}),d(`code`,null,e.name),d(`span`,{class:`sum`},e.summary),s),i,a,n&&d(`div`,{class:`result`},n.images?d(`em`,null,le({count:n.images})):null,r,o)),l=n&&V(n.id,n.images);return l?[c,l]:[c]}let H=e=>d(`time`,null,Be(e.at)),U=(e,t,n,r)=>d(`article`,{class:`tx you`},d(`header`,null,H(e),d(`b`,null,Pe()),Q(`user`)),d(`div`,{class:`bubble`,title:r},n?d(`small`,{class:`boss-flag`},ee()):null,...Ue(t),V(e.id,e.images))),W=(e,t,n,r={})=>d(`article`,{class:`tx sys`},d(`details`,{class:`notice`},d(`summary`,null,Q(`comms`),d(`em`,null,ue()),...t,H(e)),r.crashed?d(`small`,{class:`boss-flag`},ee()):null,d(`pre`,null,n),r.raw?d(`details`,{class:`notice-raw`},d(`summary`,null,pe()),d(`pre`,{class:`raw`},r.raw)):null)),G=e=>{let t=n(e);return[me(),` `,t.name&&m(t.name)||t.name,t.id?` (${t.id})`:``,` · `,xe()]},Te=e=>e.kind===`link`?[{ask:ge,reply:ye,answer:he,message:ve}[e.what]({from:e.from}),` · `,Se()]:e.kind===`intercom`?G(e.from):[e.kind===`server`?Ce():we()];function K(t){switch(t.kind){case`user`:{let e=p().service?i(t.text):void 0;if(e)return W(t,e.kind===`intercom`?G(e.from):[e.kind===`server`?Ce():we()],t.text??``);let n=p().service?a(t.text):void 0;return U(t,n?n.body:t.text??``,n?.crashed,n?t.text??``:``)}case`assistant`:{let e=p(),n=d(`pre`,{class:`thought-text`}),r=t.thought?d(`button`,{class:`thought`,type:`button`},t.thought<0?je():Ae({count:t.thought.toLocaleString()})):null;return t.thought&&t.thought>0&&r?.addEventListener(`click`,()=>B(r,n,t.id,e=>e.thoughtText)),d(`article`,{class:e.head?`tx in head`:`tx in`},Q(e.head?`crown`:e.role),d(`div`,{class:`tx-body`},d(`header`,null,d(`b`,null,ze(e)),t.model?d(`span`,null,t.model):null,H(t),t.stop?d(`span`,{class:`stop`,"data-mark":`error`},t.stop):null),r,n,t.text?d(`div`,{class:`md`},s(o(t.text))):null,t.error?d(`p`,{class:`fault`},t.error):null,...(t.tools??[]).flatMap(e=>be(e,t.id))))}case`bash`:return d(`article`,{class:`tx sys`},d(`details`,{class:`act`},d(`summary`,{"data-mark":t.exit?`error`:`done`},d(`b`,{class:`badge`}),d(`code`,null,`shell`),d(`span`,{class:`sum`},`! ${t.command}`),t.exit?d(`span`,{class:`stop`,"data-mark":`error`},ae({code:t.exit})):null),t.text?d(`pre`,{class:`out`},t.text):null));case`notice`:{let e=r(t);return e?.kind===`boss`&&p().service?U(t,e.body,e.crashed,t.text??``):e&&e.kind!==`boss`?W(t,Te(e),e.body,e.kind===`link`?{raw:e.raw}:{crashed:e.crashed}):W(t,[He[t.type??``]?.()??t.type??fe(),` `,t.from&&m(t.from)||(t.from??``)],t.text??``)}case`divider`:return t.type===`chapter`?d(`article`,{class:`tx rule chapter`},d(`p`,null,oe({date:t.at?new Date(t.at).toLocaleDateString(e(),{year:`numeric`,month:`short`,day:`numeric`}):``,why:Re(t.code,t.text)}))):d(`article`,{class:`tx rule`},d(`details`,null,d(`summary`,null,t.type===`compaction`?re({tokens:(t.tokens??0).toLocaleString()}):te()),d(`pre`,null,t.text??``)));default:return d(`article`,{class:`tx note`},t.text??``,` `,H(t))}}function q(e){e.rebuild&&(_.clear(),b.replaceChildren());for(let t of e.dropped)_.get(t)?.remove(),_.delete(t);let t=e.added.map(e=>(_.set(e.id,K(e)),_.get(e.id)));e.front?b.prepend(...t):b.append(...t),k&&!e.front&&!e.rebuild&&t.forEach(e=>(e.classList.add(`fresh`),e.dataset.born=String(Date.now()))),T.remove();let n=p().service;T.textContent=n?.state===`standing`&&!n.run?Me():de(),g.items.length||b.append(T),x.hidden=!g.before,X()}let J=[],Y=new Map;function X(){let e=new Set;for(let n of J){let r=Date.parse(n.startedAt),i=g.items.findIndex(e=>e.at!==void 0&&Date.parse(e.at)>=r);if(i===0&&g.before)continue;let a=i<0?``:g.items[i].id,o=JSON.stringify([a,t(n)]),s=Y.get(n.id);if(e.add(n.id),s&&s.sig===o&&s.el.isConnected)continue;s?.el.remove();let c=t(n),l=d(`article`,{class:`tx rule conv-rule`},d(`div`,null,d(`b`,null,c.title),c.ended?d(`small`,null,c.ended):null));Y.set(n.id,{el:l,sig:o});let u=a?_.get(a):void 0;u?u.before(l):b.append(l)}for(let[t,n]of Y)e.has(t)||(n.el.remove(),Y.delete(t))}let Z=e=>e.touched.forEach(e=>{let t=_.get(e),n=g.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),_.set(e,r)}}),We=async()=>{if(!O&&g.before&&k){O=!0;try{let e=E.scrollHeight,t=g.prepend(await f.older(g.before));q(t),Z(t),E.scrollTop+=E.scrollHeight-e}finally{O=!1}g.before&&E.clientHeight&&x.getBoundingClientRect().bottom>=E.getBoundingClientRect().top&&We()}};w.addEventListener(`click`,()=>{A=void 0,g.detached?f.latest().then(e=>(q(g.reset(e)),R())):R()});let Ge=[new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&void We(),{root:E}),new IntersectionObserver(e=>E.clientHeight&&(D.scrolled(e.at(-1).isIntersecting),L()),{root:E,rootMargin:`0px 0px 67px`})],$,Ke=()=>($??(Ge[0].observe(x),Ge[1].observe(C)),clearTimeout($),$=setTimeout(()=>($=void 0,Ge.forEach(e=>e.disconnect())),600));E.addEventListener(`scroll`,()=>(Ke(),!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 qe=new ResizeObserver(()=>F()?void 0:D.pinned&&!g.detached?E.scrollTop=E.scrollHeight:j?.scrollIntoView({block:`center`}));return qe.observe(b),qe.observe(E),{log:E,docs:y,runs(e){JSON.stringify(e)!==JSON.stringify(J)&&(J=e,X())},apply(e){if(e.reset)q(g.reset({items:e.items??[],before:e.before})),k=!0,z();else if(e.items?.length){let t=g.append(e.items);q(t),Z(t),D.arrived(t.added.length)&&!g.detached&&!F()?R():L()}},reveal(e){A=e,k&&z()},setLive(e,t){S.dataset.mark=t,S.lastChild?.textContent!==e&&S.replaceChildren(...e?[d(`b`,{class:`badge`}),d(`span`,null,e)]:[])}}}export{We as mountChat,se as t};
|
|
2
|
+
import{t as e}from"./runtime-ZX6HkxDa.js";import{r as t}from"./towermodel-YlF7HR2k.js";import{i as n,n as r,r as i,t as a}from"./towerturns-sm4atUwy.js";import{n as o,t as s}from"./markdown-DvbY97ID.js";import{F as c,Lt as l,Q as u,X as d,b as f,d as p,w as m}from"./index-CkdCrste.js";var ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`可能已被當機的 run 處理過:動手前先確認。`:`A run that crashed may already have handled this: check before acting.`),te=((t={},n={})=>(n.locale??e())===`zh-TW`?`分支摘要`:`branch summary`),ne=((t={},n={})=>(n.locale??e())===`zh-TW`?`通訊紀錄`:`Comms log`),h=e=>`context compacted · ${e?.tokens} tokens summarized`,g=e=>`上下文已壓縮 · 摘要了 ${e?.tokens} tokens`,re=((t,n={})=>(n.locale??e())===`zh-TW`?g(t):h(t)),ie=((t={},n={})=>(n.locale??e())===`zh-TW`?`…(於 1 MB 截斷)`:`… (cut at 1 MB)`),_=e=>`exit ${e?.code}`,v=e=>`結束碼 ${e?.code}`,ae=((t,n={})=>(n.locale??e())===`zh-TW`?v(t):_(t)),y=e=>`New chapter · ${e?.date} · ${e?.why}`,b=e=>`新的一章・${e?.date}・${e?.why}`,oe=((t,n={})=>(n.locale??e())===`zh-TW`?b(t):y(t)),x=((t={},n={})=>(n.locale??e())===`zh-TW`?`第一次對話`:`the first conversation`),S=((t={},n={})=>(n.locale??e())===`zh-TW`?`你要求開新對話`:`you asked for a new conversation`),C=((t={},n={})=>(n.locale??e())===`zh-TW`?`上一章太長了`:`the last one grew too large`),w=((t={},n={})=>(n.locale??e())===`zh-TW`?`上一章無法接續`:`the last one could not be resumed`),T=e=>`Image ${e?.n}`,E=e=>`圖片 ${e?.n}`,se=((t,n={})=>(n.locale??e())===`zh-TW`?E(t):T(t)),ce=((t={},n={})=>(n.locale??e())===`zh-TW`?`圖片無法讀取`:`Image unavailable`),D=e=>`${e?.count} image(s)`,O=e=>`${e?.count} 張圖片`,le=((t,n={})=>(n.locale??e())===`zh-TW`?O(t):D(t)),ue=((t={},n={})=>(n.locale??e())===`zh-TW`?`收到`:`incoming`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`跳到最新`:`jump to latest`),A=e=>`${e?.count} new`,j=e=>`${e?.count} 則新訊息`,M=((t,n={})=>(n.locale??e())===`zh-TW`?j(t):A(t)),de=((t={},n={})=>(n.locale??e())===`zh-TW`?`還沒有通訊。`:`No transmissions yet.`),fe=((t={},n={})=>(n.locale??e())===`zh-TW`?`通知`:`notice`),pe=((t={},n={})=>(n.locale??e())===`zh-TW`?`細節`:`details`),N=((t={},n={})=>(n.locale??e())===`zh-TW`?`表單回覆`:`form answers`),me=((t={},n={})=>(n.locale??e())===`zh-TW`?`訊息,來自`:`message from`),P=e=>`answer from ${e?.from}`,F=e=>`${e?.from} 的回答`,he=((t,n={})=>(n.locale??e())===`zh-TW`?F(t):P(t)),I=e=>`request from ${e?.from}`,L=e=>`${e?.from} 的請求`,ge=((t,n={})=>(n.locale??e())===`zh-TW`?L(t):I(t)),R=e=>`message from ${e?.from}`,_e=e=>`${e?.from} 的訊息`,ve=((t,n={})=>(n.locale??e())===`zh-TW`?_e(t):R(t)),z=e=>`reply to your ask from ${e?.from}`,B=e=>`${e?.from} 回覆了你的詢問`,ye=((t,n={})=>(n.locale??e())===`zh-TW`?B(t):z(t)),V=((t={},n={})=>(n.locale??e())===`zh-TW`?`記憶`:`memory`),be=((t={},n={})=>(n.locale??e())===`zh-TW`?`監看`:`monitor`),xe=((t={},n={})=>(n.locale??e())===`zh-TW`?`本機`:`this computer`),Se=((t={},n={})=>(n.locale??e())===`zh-TW`?`隊友`:`teammate`),H=((t={},n={})=>(n.locale??e())===`zh-TW`?`提問,來自`:`question from`),U=((t={},n={})=>(n.locale??e())===`zh-TW`?`回報,來自`:`report from`),Ce=((t={},n={})=>(n.locale??e())===`zh-TW`?`sb server 的通知`:`notice from the sb server`),W=((t={},n={})=>(n.locale??e())===`zh-TW`?`狀態:`:`status of`),G=((t={},n={})=>(n.locale??e())===`zh-TW`?`Straw Link 訊息`:`Straw Link message`),we=((t={},n={})=>(n.locale??e())===`zh-TW`?`喚醒鬧鐘`:`wake-up call`),Te=((t={},n={})=>(n.locale??e())===`zh-TW`?`塔台事件`:`tower event`),Ee=((t={},n={})=>(n.locale??e())===`zh-TW`?`在旁開啟`:`open beside`),K=e=>`Open image ${e?.n}`,q=e=>`打開圖片 ${e?.n}`,De=((t,n={})=>(n.locale??e())===`zh-TW`?q(t):K(t)),J=e=>`show all (${e?.size})`,Y=e=>`顯示全部(${e?.size})`,Oe=((t,n={})=>(n.locale??e())===`zh-TW`?Y(t):J(t)),ke=((t={},n={})=>(n.locale??e())===`zh-TW`?`顯示全部參數`:`show all arguments`),X=e=>`◇ thought · ${e?.count} chars`,Z=e=>`◇ 思考 · ${e?.count} 字元`,Ae=((t,n={})=>(n.locale??e())===`zh-TW`?Z(t):X(t)),je=((t={},n={})=>(n.locale??e())===`zh-TW`?`◇ 思考 · 已遮蔽`:`◇ thought · redacted`),Me=((t={},n={})=>(n.locale??e())===`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.`),Ne=((t={},n={})=>(n.locale??e())===`zh-TW`?`無法取得`:`unavailable`),Pe=((t={},n={})=>(n.locale??e())===`zh-TW`?`你`:`you`);function Fe(){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?M({count:t}):k()}}async function Ie(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 Le(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 Re=(e,t)=>({first:x,new:S,size:C,unreadable:w})[e??``]?.()??t??``,ze=e=>e.head?l():m(e.role),Be=e=>e?new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,hour12:!1}):``,Ve=e=>e>=1024?`${(e/1024).toFixed(e>=10240?0:1)} KB`:`${e} B`,He={intercom_message:me,subagent_result:U,subagent_ping:H,subagent_status:W,"pi-loop-monitor":be,"memory-context":V,"doc-review":N,"straw-tower":Te,"straw-link":G},Q=e=>{let t=f(`<span class="ava"><svg><use/></svg></span>`);return t.querySelector(`use`).setAttribute(`href`,`#i-${p[e]??e}`),t};function Ue(e){let t=[],n=0;for(let r of e.matchAll(/https?:\/\/[^\s<>)\]]+/g))t.push(e.slice(n,r.index),d(`a`,{href:r[0],rel:`noopener noreferrer`,target:`_blank`},r[0])),n=r.index+r[0].length;return[...t,e.slice(n)]}function We(l,f,{who:p,link:m,docFor:h}){let g=Le(),_=new Map,v=new Set,y=()=>v.forEach(e=>e.button.isConnected?(e.shown=!0,e.button.hidden=!e.paths.some(e=>h?.(e))):e.shown&&v.delete(e)),b=d(`div`,{class:`chat-list`}),x=d(`div`,{class:`chat-top`}),S=d(`div`,{class:`chat-live`}),C=d(`div`,{class:`chat-end`}),w=d(`button`,{class:`chat-pill`,type:`button`,hidden:``}),T=d(`p`,{class:`chat-empty`},de()),E=d(`div`,{class:`chat-scroll`,tabindex:`-1`,"aria-label":ne()},x,b,S,C);l.replaceChildren(E,w);let D=Fe(),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&&!g.detached&&R()),250)),L=(e=D.button(g.detached))=>(w.hidden=!e,w.textContent=e??``),R=()=>(D.jump(),j=void 0,E.scrollTop=E.scrollHeight,L());async function _e(e){O=!0;let t=await Ie(g,f,e,e=>(q(e),Z(e))).finally(()=>O=!1),n=_.get(e);if(A===e){if(!t||!n)return R();D.hold(),j=n,n.scrollIntoView({block:`center`}),u(n,`lit`),clearTimeout(M),M=window.setTimeout(()=>(j=void 0,n.classList.remove(`lit`)),2e3),L()}}let z=()=>A?void _e(A):R(),B=(e,t,n,r)=>{e.disabled=!0,f.entry(n).then(n=>{let i=n&&r(n);if(i===void 0)return void(e.textContent=Ne());t.textContent=i,e.remove()},()=>e.textContent=Ne())};function V(e,t=0){if(!t||!f.pic)return null;let n=Array.from({length:t},(t,n)=>f.pic(e,n));return d(`div`,{class:`pics`},...n.map((e,t)=>{let r=d(`img`,{src:e,alt:se({n:t+1}),loading:`lazy`,decoding:`async`}),i=d(`button`,{type:`button`,class:`pic`,"aria-label":De({n:t+1})},r);return r.addEventListener(`error`,()=>i.replaceWith(d(`em`,{class:`pic-gone`},ce()))),i.addEventListener(`click`,()=>void c(async()=>{let{lightbox:e}=await import(`./lightbox-B8HApcBz.js`);return{lightbox:e}},__vite__mapDeps([0]),import.meta.url).then(({lightbox:e})=>e(n,t))),i}))}function be(e,t){let n=g.result(e.id),r=d(`pre`,{class:`out`},n?.text??``),i=d(`pre`,{class:`args`},e.args??``),a=e.cut?d(`button`,{class:`more`,type:`button`},ke()):null;a?.addEventListener(`click`,()=>B(a,i,t,t=>(e=>e&&`${e.args??``}${e.cut?`\n${ie()}`:``}`)(t.tools?.find(t=>t.id===e.id))));let o=n?.more?d(`button`,{class:`more`,type:`button`},Oe({size:Ve(n.bytes??0)})):null;o?.addEventListener(`click`,()=>B(o,r,n.id,e=>e.text));let s=e.name===`show_doc`&&h?d(`button`,{class:`more open`,type:`button`,hidden:``},Ee()):null;s?.addEventListener(`click`,t=>(t.preventDefault(),e.summary.split(`, `).forEach(e=>h?.(e)?.()))),s&&v.add({paths:e.summary.split(`, `),button:s}),s&&queueMicrotask(y);let c=d(`details`,{class:`act`},d(`summary`,{"data-mark":n?n.isError?`error`:`done`:`working`},d(`b`,{class:`badge`}),d(`code`,null,e.name),d(`span`,{class:`sum`},e.summary),s),i,a,n&&d(`div`,{class:`result`},n.images?d(`em`,null,le({count:n.images})):null,r,o)),l=n&&V(n.id,n.images);return l?[c,l]:[c]}let H=e=>d(`time`,null,Be(e.at)),U=(e,t,n,r)=>d(`article`,{class:`tx you`},d(`header`,null,H(e),d(`b`,null,Pe()),Q(`user`)),d(`div`,{class:`bubble`,title:r},n?d(`small`,{class:`boss-flag`},ee()):null,...Ue(t),V(e.id,e.images))),W=(e,t,n,r={})=>d(`article`,{class:`tx sys`},d(`details`,{class:`notice`},d(`summary`,null,Q(`comms`),d(`em`,null,ue()),...t,H(e)),r.crashed?d(`small`,{class:`boss-flag`},ee()):null,d(`pre`,null,n),r.raw?d(`details`,{class:`notice-raw`},d(`summary`,null,pe()),d(`pre`,{class:`raw`},r.raw)):null)),G=e=>{let t=n(e);return[me(),` `,t.name&&m(t.name)||t.name,t.id?` (${t.id})`:``,` · `,xe()]},Te=e=>e.kind===`link`?[{ask:ge,reply:ye,answer:he,message:ve}[e.what]({from:e.from}),` · `,Se()]:e.kind===`intercom`?G(e.from):[e.kind===`server`?Ce():we()];function K(t){switch(t.kind){case`user`:{let e=p().service?i(t.text):void 0;if(e)return W(t,e.kind===`intercom`?G(e.from):[e.kind===`server`?Ce():we()],t.text??``);let n=p().service?a(t.text):void 0;return U(t,n?n.body:t.text??``,n?.crashed,n?t.text??``:``)}case`assistant`:{let e=p(),n=d(`pre`,{class:`thought-text`}),r=t.thought?d(`button`,{class:`thought`,type:`button`},t.thought<0?je():Ae({count:t.thought.toLocaleString()})):null;return t.thought&&t.thought>0&&r?.addEventListener(`click`,()=>B(r,n,t.id,e=>e.thoughtText)),d(`article`,{class:e.head?`tx in head`:`tx in`},Q(e.head?`crown`:e.role),d(`div`,{class:`tx-body`},d(`header`,null,d(`b`,null,ze(e)),t.model?d(`span`,null,t.model):null,H(t),t.stop?d(`span`,{class:`stop`,"data-mark":`error`},t.stop):null),r,n,t.text?d(`div`,{class:`md`},s(o(t.text))):null,t.error?d(`p`,{class:`fault`},t.error):null,...(t.tools??[]).flatMap(e=>be(e,t.id))))}case`bash`:return d(`article`,{class:`tx sys`},d(`details`,{class:`act`},d(`summary`,{"data-mark":t.exit?`error`:`done`},d(`b`,{class:`badge`}),d(`code`,null,`shell`),d(`span`,{class:`sum`},`! ${t.command}`),t.exit?d(`span`,{class:`stop`,"data-mark":`error`},ae({code:t.exit})):null),t.text?d(`pre`,{class:`out`},t.text):null));case`notice`:{let e=r(t);return e?.kind===`boss`&&p().service?U(t,e.body,e.crashed,t.text??``):e&&e.kind!==`boss`?W(t,Te(e),e.body,e.kind===`link`?{raw:e.raw}:{crashed:e.crashed}):W(t,[He[t.type??``]?.()??t.type??fe(),` `,t.from&&m(t.from)||(t.from??``)],t.text??``)}case`divider`:return t.type===`chapter`?d(`article`,{class:`tx rule chapter`},d(`p`,null,oe({date:t.at?new Date(t.at).toLocaleDateString(e(),{year:`numeric`,month:`short`,day:`numeric`}):``,why:Re(t.code,t.text)}))):d(`article`,{class:`tx rule`},d(`details`,null,d(`summary`,null,t.type===`compaction`?re({tokens:(t.tokens??0).toLocaleString()}):te()),d(`pre`,null,t.text??``)));default:return d(`article`,{class:`tx note`},t.text??``,` `,H(t))}}function q(e){e.rebuild&&(_.clear(),b.replaceChildren());for(let t of e.dropped)_.get(t)?.remove(),_.delete(t);let t=e.added.map(e=>(_.set(e.id,K(e)),_.get(e.id)));e.front?b.prepend(...t):b.append(...t),k&&!e.front&&!e.rebuild&&t.forEach(e=>(e.classList.add(`fresh`),e.dataset.born=String(Date.now()))),T.remove();let n=p().service;T.textContent=n?.state===`standing`&&!n.run?Me():de(),g.items.length||b.append(T),x.hidden=!g.before,X()}let J=[],Y=new Map;function X(){let e=new Set;for(let n of J){let r=Date.parse(n.startedAt),i=g.items.findIndex(e=>e.at!==void 0&&Date.parse(e.at)>=r);if(i===0&&g.before)continue;let a=i<0?``:g.items[i].id,o=JSON.stringify([a,t(n)]),s=Y.get(n.id);if(e.add(n.id),s&&s.sig===o&&s.el.isConnected)continue;s?.el.remove();let c=t(n),l=d(`article`,{class:`tx rule conv-rule`},d(`div`,null,d(`b`,null,c.title),c.ended?d(`small`,null,c.ended):null));Y.set(n.id,{el:l,sig:o});let u=a?_.get(a):void 0;u?u.before(l):b.append(l)}for(let[t,n]of Y)e.has(t)||(n.el.remove(),Y.delete(t))}let Z=e=>e.touched.forEach(e=>{let t=_.get(e),n=g.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),_.set(e,r)}}),We=async()=>{if(!O&&g.before&&k){O=!0;try{let e=E.scrollHeight,t=g.prepend(await f.older(g.before));q(t),Z(t),E.scrollTop+=E.scrollHeight-e}finally{O=!1}g.before&&E.clientHeight&&x.getBoundingClientRect().bottom>=E.getBoundingClientRect().top&&We()}};w.addEventListener(`click`,()=>{A=void 0,g.detached?f.latest().then(e=>(q(g.reset(e)),R())):R()});let Ge=[new IntersectionObserver(e=>e.some(e=>e.isIntersecting)&&void We(),{root:E}),new IntersectionObserver(e=>E.clientHeight&&(D.scrolled(e.at(-1).isIntersecting),L()),{root:E,rootMargin:`0px 0px 67px`})],$,Ke=()=>($??(Ge[0].observe(x),Ge[1].observe(C)),clearTimeout($),$=setTimeout(()=>($=void 0,Ge.forEach(e=>e.disconnect())),600));E.addEventListener(`scroll`,()=>(Ke(),!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 qe=new ResizeObserver(()=>F()?void 0:D.pinned&&!g.detached?E.scrollTop=E.scrollHeight:j?.scrollIntoView({block:`center`}));return qe.observe(b),qe.observe(E),{log:E,docs:y,runs(e){JSON.stringify(e)!==JSON.stringify(J)&&(J=e,X())},apply(e){if(e.reset)q(g.reset({items:e.items??[],before:e.before})),k=!0,z();else if(e.items?.length){let t=g.append(e.items);q(t),Z(t),D.arrived(t.added.length)&&!g.detached&&!F()?R():L()}},reveal(e){A=e,k&&z()},setLive(e,t){S.dataset.mark=t,S.lastChild?.textContent!==e&&S.replaceChildren(...e?[d(`b`,{class:`badge`}),d(`span`,null,e)]:[])}}}export{We as mountChat,se as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./runtime-ZX6HkxDa.js";import"./towermodel-YlF7HR2k.js";import{t}from"./open_main_title-Ccbha5pD.js";import{n,t as r}from"./unit_count-5h7nN0qd.js";import{C as i,D as a,E as o,Lt as s,M as c,N as l,Rt as u,T as ee,X as d,b as f,ct as p,h as m,i as h,j as g,m as _,o as v,p as y,v as b,w as x}from"./index-
|
|
1
|
+
import{t as e}from"./runtime-ZX6HkxDa.js";import"./towermodel-YlF7HR2k.js";import{t}from"./open_main_title-Ccbha5pD.js";import{n,t as r}from"./unit_count-5h7nN0qd.js";import{C as i,D as a,E as o,Lt as s,M as c,N as l,Rt as u,T as ee,X as d,b as f,ct as p,h as m,i as h,j as g,m as _,o as v,p as y,v as b,w as x}from"./index-CkdCrste.js";var te=((t={},n={})=>(n.locale??e())===`zh-TW`?`關閉清單`:`Close the list`),S=((t={},n={})=>(n.locale??e())===`zh-TW`?`切換到其他單位`:`Switch to a unit`),C=((t={},n={})=>(n.locale??e())===`zh-TW`?`回到主地圖`:`Back to the map`),w=((t={},n={})=>(n.locale??e())===`zh-TW`?`所有單位`:`All units`),T=((t={},n={})=>(n.locale??e())===`zh-TW`?`指揮中`:`commanding`),E=((t={},n={})=>(n.locale??e())===`zh-TW`?`已結束`:`ended`),D=((t={},n={})=>(n.locale??e())===`zh-TW`?`錯誤`:`error`),O=((t={},n={})=>(n.locale??e())===`zh-TW`?`閒置`:`idle`),k=((t={},n={})=>(n.locale??e())===`zh-TW`?`無狀態`:`unknown`),A=((t={},n={})=>(n.locale??e())===`zh-TW`?`等待`:`waiting`),j=((t={},n={})=>(n.locale??e())===`zh-TW`?`工作中`:`working`),M=.4;function N(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 P=(e,t,n)=>Math.abs(n)>=.45?n>0:e>=t*M,F=(e,t)=>t||e.some(e=>e.editable||e.sink||e.scrollsX||[`input`,`textarea`,`select`].includes(e.tag));function I(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 ne=e=>{let t=[];for(let n=e;n;n=n.parentElement)t.push(I(n));return t},L={working:j,waiting:A,idle:O,done:E,error:D,unknown:k,commanding:T},R=(e,t,n)=>(t?E:L[e])({},n&&{locale:n}),z=(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 B(e){return e.bases.flatMap(e=>{let t=[{id:`tower`,rows:e.tower?z(e.id,[{...e.tower,role:`tower`}]):[]},...e.tabs.map(t=>({id:t.id,label:p({label:t.label}),rows:z(e.id,t.units)})),{id:`outside`,label:n(),rows:z(e.id,e.outside)}].filter(e=>e.rows.length);return t.length?[{id:e.id,label:e.label,mark:e.mark,groups:t}]:[]})}var V=(e,t)=>e?.head?{mark:e.head.mark,word:e.head.state===`absent`?u({},t&&{locale:t}):R(e.head.mark,!1,t)}:void 0,H=e=>e.role===`main`&&e.mark===`idle`,U=e=>e.reduce((e,t)=>(t.sub?e.at(-1)?.subs.push(t):e.push({...t,subs:[]}),e),[]),W=()=>f(`<div class="unit"><div class="card"><a class="hit"></a>${y}<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>`),G=()=>f(`<div class="unit tower-row"><div class="trow"><a class="tower-go">${y}<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>`),K=()=>f(`<section class="dbase"><h3><a></a><small></small></h3><div class="dgroups"></div></section>`),q=()=>f(`<div class="dgroup"><h4></h4><div class="drows"></div></div>`),J=()=>matchMedia(`(max-width: 640px)`).matches;function Y(e=()=>!1){let n=d(`div`,{class:`drawer-body`}),u=d(`button`,{type:`button`,class:`x`,"aria-label":te()},`×`),p=d(`a`,{class:`drawer-map`},C()),y=d(`button`,{type:`button`,class:`pair-btn`,"data-close":`dismiss-all`,hidden:``}),T=d(`div`,{class:`drawer-sweep`,hidden:``},y);_(p,{view:`map`});let E=f(`<a class="drawer-head"><svg viewBox="0 0 512 512" aria-hidden="true"><use href="#i-crown"/></svg><span class="name"></span><b class="dstate"></b></a>`);E.hidden=!0,_(E,{view:`head`});let D=d(`aside`,{class:`drawer`,"aria-label":S()},d(`header`,null,d(`b`,null,w()),u),E,n,d(`footer`,{class:`drawer-foot`},T,p)),O=d(`div`,{class:`drawer-veil`});document.body.append(O,D);let k,A,j=!1,M=!1,I=0,L=0,z,Y=()=>{let e=V(k);E.hidden=!e,e&&(i(E,e.mark),a(E,`.name`,s()),a(E,`.dstate`,e.word),E.classList.toggle(`current`,j),E.toggleAttribute(`data-news`,h(k?.head,v())&&!j)),l(y,k??{bases:[]}),T.hidden=y.hidden;let c=(e,t)=>{_(e.querySelector(`.hit`),{view:`session`,ws:t.ws,key:t.key}),e.querySelector(`.hit`).setAttribute(`aria-label`,`${t.name}: ${R(t.mark,t.ended)}`),e.classList.toggle(`current`,t.key===A),e.toggleAttribute(`data-dismiss`,t.role===`subagent`&&t.ended),e.dataset.key=t.key,i(e,t.mark),b(e.querySelector(`.plate`),t.role,t.mark),a(e,`.name`,t.name),a(e,`.role`,x(t.role)),a(e,`.dstate`,R(t.mark,t.ended)),ee(e,`.note`,t.note,t.mark,t.note?void 0:``);let n=e.querySelector(`:scope > .card > .quit-btn`);H(t)?g(n,t):n.hidden=!0,o(e.querySelector(`.subs`),t.subs??[],W,c)},u=(e,n)=>{let r=e.querySelector(`.tower-go`),s=e.querySelector(`.tower-add`),l=k?.bases.find(e=>e.id===n.ws);_(r,{view:`session`,ws:n.ws,key:n.key}),r.setAttribute(`aria-label`,`${n.name}: ${R(n.mark,n.ended)}`),e.classList.toggle(`current`,n.key===A),e.dataset.key=n.key,i(e,n.mark),b(r.querySelector(`.plate`),`tower`,n.mark),a(r,`.name`,n.name),a(r,`.role`,x(`tower`)),a(r,`.dstate`,R(n.mark,n.ended)),s.hidden=!l,l&&(m(s,l),s.setAttribute(`aria-label`,t({base:l.label}))),o(e.querySelector(`.subs`),n.subs,W,c)};o(n,B(k??{bases:[]}),K,(e,t)=>{i(e,t.mark),a(e,`h3 a`,t.label),_(e.querySelector(`h3 a`),{view:`workspace`,ws:t.id}),a(e,`small`,r({count:t.groups.reduce((e,t)=>e+t.rows.length,0)})),o(e.querySelector(`.dgroups`),t.groups,q,(e,t)=>{a(e,`h4`,t.label??``),e.querySelector(`h4`).toggleAttribute(`hidden`,!t.label),t.id===`tower`?o(e.querySelector(`.drows`),U(t.rows),G,u):o(e.querySelector(`.drows`),U(t.rows),W,c)})})},X=e=>{I=Math.max(0,Math.min(L,e)),D.style.setProperty(`--dx`,`${I}px`),O.style.opacity=String(L?I/L:0),O.style.pointerEvents=I>0?`auto`:`none`},Z=e=>{M=e,D.classList.toggle(`on`,e),D.inert=!e,document.documentElement.classList.remove(`drawer-drag`),X(e?L:0)},Q=()=>{L=D.offsetWidth,Y(),D.classList.add(`on`),document.documentElement.classList.add(`drawer-drag`)};D.inert=!0,document.addEventListener(`touchstart`,t=>{let n=t.target,r=D.contains(n)||n===O;if(z=void 0,!J()||e()||t.touches.length!==1||document.querySelector(`dialog.sheet[open], dialog.lightbox[open], [popover]:popover-open`)||(M?!r:F(ne(n),!!getSelection()?.toString())))return;let i=t.touches[0],a=M?n.closest(`.unit[data-dismiss] > .card`)??void 0:void 0;z={x0:i.clientX,y0:i.clientY,mode:`wait`,was:M,base:I,last:i.clientX,at:performance.now(),v:0,card:a}},{passive:!0}),document.addEventListener(`touchmove`,e=>{if(!z||z.mode===`pass`)return;let t=e.touches[0],n=t.clientX-z.x0,r=t.clientY-z.y0;if(z.mode===`wait`){let e=N(n,r,z.was);if(e===`wait`)return;if(e===`pass`&&z.card&&N(n,r,!1)===`drag`)z.mode=`card`,z.card.classList.add(`swiping`);else if(e===`pass`)return void(z.mode=`pass`);else z.mode=`drag`,Q()}e.preventDefault();let i=performance.now();if(z.v=(t.clientX-z.last)/Math.max(1,i-z.at),[z.last,z.at]=[t.clientX,i],z.mode!==`card`)return X(z.base+n);let a=Math.max(0,n);z.card.style.setProperty(`--sx`,`${a}px`),z.card.style.setProperty(`--so`,String(1-a/z.card.offsetWidth))},{passive:!1});let re=(e,t)=>{e.classList.remove(`swiping`),e.style.removeProperty(`--sx`),e.style.removeProperty(`--so`),t&&(e.classList.add(`gone`),c({key:e.parentElement.dataset.key}).then(t=>t||e.classList.remove(`gone`)))},$=e=>{let t=z;z=void 0,t?.mode===`drag`&&Z(P(I,L,t.v)),t?.mode===`card`&&re(t.card,e.type===`touchend`&&P(Math.max(0,t.last-t.x0),t.card.offsetWidth,t.v))};return document.addEventListener(`touchend`,$),document.addEventListener(`touchcancel`,$),O.addEventListener(`click`,()=>Z(!1)),D.addEventListener(`click`,e=>e.target.closest(`a[data-route], button[data-open], .x`)&&Z(!1)),document.addEventListener(`keydown`,e=>M&&e.key===`Escape`&&(e.preventDefault(),Z(!1)),!0),document.addEventListener(`sb-drawer`,()=>(M||Q(),Z(!M))),{net(e){k=e,M&&Y()},route(e){A=e.view===`session`?e.key:void 0,j=e.view===`head`||e.view===`session`&&e.ws===`@head`,p.toggleAttribute(`aria-current`,e.view===`map`),M&&Y()}}}export{Y as mountDrawer};
|