@evandu/super-pi 0.1.51 → 0.1.52

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.
@@ -16,7 +16,7 @@ Error generating stack: `+e.message+`
16
16
  `))});continue}if(e.includes(`|`)&&r+1<t.length&&we.test(t[r+1])&&t[r+1].includes(`-`)){let i=je(e),a=je(t[r+1]).map(Me),o=[];for(r+=2;r<t.length&&t[r].trim()&&t[r].includes(`|`);)o.push(Ne(je(t[r]),i.length).map(e=>ye(e))),r+=1;n.push({type:`table`,head:i.map(e=>ye(e)),align:a,rows:o});continue}if(O.test(e)||k.test(e)){let e=Ae(t,r);n.push(e.node),r=e.next;continue}let s=[];for(;r<t.length&&t[r].trim()&&!ke(t[r]);)s.push(t[r]),r+=1;s.length||(s.push(t[r]),r+=1),n.push({type:`paragraph`,children:ye(s.join(`
17
17
  `))})}return n}function ke(e){return be.test(e)||xe.test(e)||Se.test(e)||Ce.test(e)||O.test(e)||k.test(e)||/^\s*\$\$/.test(e)}function Ae(e,t){let n=k.test(e[t]),r=n?k.exec(e[t]):O.exec(e[t]),i=r[1].length,a=[],o=t;for(;o<e.length;){let t=O.exec(e[o]),r=k.exec(e[o]),s=n?r:t;if(!s)break;let c=s[1].length;if(c<i)break;let l=[s[s.length-1]];for(o+=1;o<e.length;){let n=e[o];if(!n.trim()){let t=e[o+1]??``;if(!t.trim()||t.search(/\S/)<=c)break;l.push(``),o+=1;continue}let i=n.search(/\S/);if(i===0&&t||i===0&&r)break;if(i>c)l.push(n.slice(Math.min(i,c+2))),o+=1;else if(i===c){if(ke(n))break;l.push(n),o+=1}else break}a.push(Oe(l.join(`
18
18
  `)))}return{node:{type:`list`,ordered:n,start:n?Number(r[2]):1,items:a},next:o}}function je(e){let t=e.trim();t.startsWith(`|`)&&(t=t.slice(1)),t.endsWith(`|`)&&!t.endsWith(`\\|`)&&(t=t.slice(0,-1));let n=[],r=``;for(let e=0;e<t.length;e+=1)t[e]===`\\`&&t[e+1]===`|`?(r+=`|`,e+=1):t[e]===`|`?(n.push(r.trim()),r=``):r+=t[e];return n.push(r.trim()),n}function Me(e){let t=e.startsWith(`:`),n=e.endsWith(`:`);return t&&n?`center`:n?`right`:t?`left`:null}function Ne(e,t){let n=e.slice(0,t);for(;n.length<t;)n.push(``);return n}var Pe={alpha:`α`,beta:`β`,gamma:`γ`,delta:`δ`,epsilon:`ε`,varepsilon:`ε`,zeta:`ζ`,eta:`η`,theta:`θ`,vartheta:`ϑ`,iota:`ι`,kappa:`κ`,lambda:`λ`,mu:`μ`,nu:`ν`,xi:`ξ`,pi:`π`,varpi:`ϖ`,rho:`ρ`,varrho:`ϱ`,sigma:`σ`,varsigma:`ς`,tau:`τ`,upsilon:`υ`,phi:`φ`,varphi:`ϕ`,chi:`χ`,psi:`ψ`,omega:`ω`,Gamma:`Γ`,Delta:`Δ`,Theta:`Θ`,Lambda:`Λ`,Xi:`Ξ`,Pi:`Π`,Sigma:`Σ`,Upsilon:`Υ`,Phi:`Φ`,Psi:`Ψ`,Omega:`Ω`},Fe={times:`×`,div:`÷`,pm:`±`,mp:`∓`,cdot:`·`,ast:`∗`,star:`⋆`,circ:`∘`,bullet:`∙`,leq:`≤`,le:`≤`,geq:`≥`,ge:`≥`,neq:`≠`,ne:`≠`,approx:`≈`,sim:`∼`,simeq:`≃`,equiv:`≡`,propto:`∝`,ll:`≪`,gg:`≫`,in:`∈`,notin:`∉`,ni:`∋`,subset:`⊂`,subseteq:`⊆`,supset:`⊃`,supseteq:`⊇`,cup:`∪`,cap:`∩`,setminus:`∖`,emptyset:`∅`,varnothing:`∅`,aleph:`ℵ`,hbar:`ℏ`,ell:`ℓ`,Re:`ℜ`,Im:`ℑ`,sum:`∑`,prod:`∏`,coprod:`∐`,int:`∫`,iint:`∬`,iiint:`∭`,oint:`∮`,bigcup:`⋃`,bigcap:`⋂`,to:`→`,rightarrow:`→`,leftarrow:`←`,gets:`←`,leftrightarrow:`↔`,Rightarrow:`⇒`,Leftarrow:`⇐`,Leftrightarrow:`⇔`,mapsto:`↦`,longrightarrow:`⟶`,longleftarrow:`⟵`,uparrow:`↑`,downarrow:`↓`,ldots:`…`,cdots:`⋯`,vdots:`⋮`,ddots:`⋱`,dots:`…`,therefore:`∴`,because:`∵`,angle:`∠`,triangle:`△`,perp:`⊥`,parallel:`∥`,degree:`°`,prime:`′`,lbrace:`{`,rbrace:`}`,lbrack:`[`,rbrack:`]`,langle:`⟨`,rangle:`⟩`,lfloor:`⌊`,rfloor:`⌋`,lceil:`⌈`,rceil:`⌉`,vert:`|`,Vert:`‖`,backslash:`\\`,oplus:`⊕`,ominus:`⊖`,otimes:`⊗`,oslash:`⊘`,odot:`⊙`,dagger:`†`,ddagger:`‡`,quad:` `,qquad:` `,thinspace:` `,enspace:` `,negthinspace:``},Ie=new Set(`arcsin.arccos.arctan.sinh.cosh.tanh.cot.sec.csc.sin.cos.tan.log.ln.lg.exp.lim.limsup.liminf.max.min.det.dim.ker.deg.gcd.hom.arg.Pr.sup.inf`.split(`.`)),Le=new Set([`left`,`right`,`big`,`Big`,`bigg`,`Bigg`,`bigl`,`bigr`,`Bigl`,`Bigr`,`biggl`,`biggr`,`Biggl`,`Biggr`,`middle`,`displaystyle`,`textstyle`,`scriptstyle`,`limits`,`nolimits`,`nonumber`,`notag`,`label`]),Re={hat:`^`,widehat:`^`,bar:`‾`,overline:`‾`,tilde:`~`,widetilde:`~`,vec:`→`,dot:`·`,ddot:`··`,check:`ˇ`,breve:`˘`,acute:`´`,grave:"`"},ze=new Set([`(`,`)`,`[`,`]`,`|`,`/`,`<`,`>`]),Be=new Set([`pmatrix`,`bmatrix`,`Bmatrix`,`vmatrix`,`Vmatrix`,`matrix`,`array`,`cases`,`aligned`,`align`,`alignat`,`split`,`gather`,`gathered`,`equation`,`smallmatrix`,`dcases`,`subarray`]);function Ve(e){let t=[],n=``,r=()=>{n&&=(t.push(...Ge(n)),``)},i=e=>{r(),t.push(e)};for(let a=0;a<e.length;){let o=e[a];if(o===`\\`){let t=a,r=/^\\([a-zA-Z]+|.)/.exec(e.slice(a));if(!r){n+=o,a+=1;continue}let s=r[1];if(a+=r[0].length,s===`\\`){i({type:`math-row-break`});continue}if(s===`{`||s===`}`){n+=s;continue}if(s===`,`||s===`;`||s===`:`||s===`!`||s===`&`)continue;if(s===`%`){for(;a<e.length&&e[a]!==`
19
- `;)a+=1;continue}if(Le.has(s))continue;if(s===`begin`){let n=ue(e,a),r=n.content,o=`\\end{${r}}`,s=e.indexOf(o,n.next),c=s===-1?e.length:s+o.length;i({type:`math-unsupported`,value:e.slice(t,c),reason:`\\begin{${r}} 不支持`}),a=c;continue}if(s===`frac`||s===`dfrac`||s===`tfrac`||s===`cfrac`){let t=Ue(e,a),n=Ue(e,t.next);a=n.next,i({type:`math-fraction`,numerator:Ve(t.content),denominator:Ve(n.content)});continue}if(s===`sqrt`){let t,n=a;if(e[n]===`[`){let r=He(e,n);t=Ve(r.content),n=r.next}let r=Ue(e,n);a=r.next,i({type:`math-root`,...t?{index:t}:{},radicand:Ve(r.content)});continue}if(s===`text`||s===`mathrm`||s===`textrm`||s===`mathbf`||s===`mathit`||s===`mathsf`||s===`mathtt`||s===`operatorname`||s===`textbf`){let t=ue(e,a);a=t.next,i({type:`math-text`,value:t.content});continue}if(s in Re){let t=Ue(e,a);a=t.next,i({type:`math-text`,value:`${Ke(Ve(t.content))}${Re[s]}`});continue}if(s in Pe){i({type:`math-identifier`,value:Pe[s]});continue}if(s in Fe){let e=Fe[s];/^\d/.test(e)?i({type:`math-number`,value:e}):/^[A-Za-z]/.test(e)?i({type:`math-text`,value:e}):i({type:`math-operator`,value:e});continue}if(Ie.has(s)){i({type:`math-function`,value:s});continue}if(Be.has(s))continue;i({type:`math-unsupported`,value:`\\${s}`,reason:`\\${s} 不支持`})}else if(o===`{`){let n=ue(e,a);t.push(...Ve(n.content)),a=n.next}else if(o===`}`||o===`&`||o===`$`)a+=1;else if(o===`^`||o===`_`){r();let n=Ue(e,a+1);a=n.next,We(t,o===`^`?`sup`:`sub`,Ve(n.content))}else ze.has(o)?(i({type:`math-text`,value:o}),a+=1):(n+=o,a+=1)}return r(),t}function He(e,t){let n=e.indexOf(`]`,t+1);return n===-1?{content:``,next:e.length}:{content:e.slice(t+1,n),next:n+1}}function Ue(e,t){let n=e[t];if(n===void 0)return{content:``,next:t};if(n===`{`)return ue(e,t);let r=/^\\[a-zA-Z]+/.exec(e.slice(t));return r?{content:r[0],next:t+r[0].length}:{content:n,next:t+1}}function We(e,t,n){let r=e.pop();if(r){if(r.type===`math-script`)t===`sub`&&!r.sub?e.push({...r,sub:n}):t===`sup`&&!r.sup?e.push({...r,sup:n}):e.push(r);else if(r.type===`math-identifier`||r.type===`math-text`){let i=[...r.value],a=i.pop()??``;i.length&&e.push({type:r.type,value:i.join(``)}),e.push({type:`math-script`,base:[{type:`math-identifier`,value:a}],...t===`sub`?{sub:n}:{sup:n}})}else e.push({type:`math-script`,base:[r],...t===`sub`?{sub:n}:{sup:n}})}}function Ge(e){let t=[],n=0;for(;n<e.length;){let r=e.slice(n),i=/^\d+(?:\.\d+)?/.exec(r);if(i){t.push({type:`math-number`,value:i[0]}),n+=i[0].length;continue}let a=/^[A-Za-z]+/.exec(r);if(a){t.push(Ie.has(a[0])?{type:`math-function`,value:a[0]}:{type:`math-identifier`,value:a[0]}),n+=a[0].length;continue}let o=/^[,;:!.'’|()\-+=<>/*]+/.exec(r);o?(t.push({type:`math-operator`,value:o[0]}),n+=o[0].length):(t.push({type:`math-text`,value:r[0]}),n+=1)}return t.reduce((e,t)=>{let n=e[e.length-1];return n?.type===`math-operator`&&t.type===`math-operator`?n.value+=t.value:e.push({...t}),e},[])}function Ke(e){return e.map(e=>{switch(e.type){case`math-text`:case`math-number`:case`math-identifier`:case`math-operator`:case`math-function`:return e.value;case`math-script`:return`${Ke(e.base)}${e.sub?`_{${Ke(e.sub)}}`:``}${e.sup?`^{${Ke(e.sup)}}`:``}`;case`math-fraction`:return`\\frac{${Ke(e.numerator)}}{${Ke(e.denominator)}}`;case`math-root`:return`\\sqrt{${Ke(e.radicand)}}`;case`math-row-break`:return`\\\\`;case`math-unsupported`:return e.value;default:return``}}).join(``)}function qe({source:e}){let t=(0,p.useMemo)(()=>Oe(e),[e]);return(0,m.jsx)(`div`,{className:`md`,"data-md":`1`,children:t.map((e,t)=>Xe(e,t))})}function Je({source:e}){let t=(0,p.useMemo)(()=>ye(e),[e]);return(0,m.jsx)(`span`,{className:`md md-inline`,children:t.map((e,t)=>Qe(e,t))})}function Ye(e){return ne(e).map((e,t)=>e.kind===`plain`?(0,m.jsx)(`span`,{children:e.text},t):(0,m.jsx)(`span`,{className:`code-token-${e.kind}`,children:e.text},t))}function Xe(e,t){switch(e.type){case`paragraph`:return(0,m.jsx)(`p`,{className:`md-p`,children:e.children.map((e,t)=>Qe(e,t))},t);case`heading`:{let n=`h${Math.min(6,Math.max(1,e.level))}`;return(0,m.jsx)(n,{className:`md-h md-h${e.level}`,children:e.children.map((e,t)=>Qe(e,t))},t)}case`code-block`:return(0,m.jsx)(`pre`,{className:`md-pre`,"data-md-lang":e.lang||void 0,children:(0,m.jsx)(`code`,{className:`md-code`,children:Ye(e.value)})},t);case`list`:{let n=e.items.map((e,t)=>(0,m.jsx)(`li`,{className:`md-li`,children:e.map((e,t)=>Xe(e,t))},t));return e.ordered?(0,m.jsx)(`ol`,{className:`md-ol`,start:e.start>1?e.start:void 0,children:n},t):(0,m.jsx)(`ul`,{className:`md-ul`,children:n},t)}case`blockquote`:return(0,m.jsx)(`blockquote`,{className:`md-quote`,children:e.children.map((e,t)=>Xe(e,t))},t);case`rule`:return(0,m.jsx)(`hr`,{className:`md-rule`},t);case`table`:return(0,m.jsx)(`div`,{className:`md-table-wrap`,children:(0,m.jsxs)(`table`,{className:`md-table`,children:[(0,m.jsx)(`thead`,{children:(0,m.jsx)(`tr`,{children:e.head.map((t,n)=>(0,m.jsx)(`th`,{style:Ze(e.align[n]),children:t.map((e,t)=>Qe(e,t))},n))})}),(0,m.jsx)(`tbody`,{children:e.rows.map((t,n)=>(0,m.jsx)(`tr`,{children:t.map((t,n)=>(0,m.jsx)(`td`,{style:Ze(e.align[n]),children:t.map((e,t)=>Qe(e,t))},n))},n))})]})},t);case`math-block`:return(0,m.jsx)($e,{source:e.source},t);default:return null}}var Ze=e=>e?{textAlign:e}:void 0;function Qe(e,t){switch(e.type){case`text`:return(0,m.jsx)(p.Fragment,{children:e.value},t);case`code`:return(0,m.jsx)(`code`,{className:`md-code-inline`,children:e.value},t);case`strong`:return(0,m.jsx)(`strong`,{className:`md-strong`,children:e.children.map((e,t)=>Qe(e,t))},t);case`em`:return(0,m.jsx)(`em`,{className:`md-em`,children:e.children.map((e,t)=>Qe(e,t))},t);case`del`:return(0,m.jsx)(`del`,{className:`md-del`,children:e.children.map((e,t)=>Qe(e,t))},t);case`break`:return(0,m.jsx)(`br`,{className:`md-break`},t);case`math`:return(0,m.jsx)(et,{source:e.source},t);case`link`:{let n=oe(e.href);return n?(0,m.jsx)(`a`,{className:`md-link`,href:n,title:e.title,target:`_blank`,rel:`noopener noreferrer nofollow`,children:e.children.map((e,t)=>Qe(e,t))},t):(0,m.jsx)(p.Fragment,{children:e.children.map((e,t)=>Qe(e,t))},t)}default:return null}}function $e({source:e}){let t=(0,p.useMemo)(()=>Ve(e),[e]);return(0,m.jsx)(`div`,{className:`md-math md-math-block`,"data-md-math":`block`,"data-md-math-source":e,children:t.map((e,t)=>tt(e,t))})}function et({source:e}){let t=(0,p.useMemo)(()=>Ve(e),[e]);return(0,m.jsx)(`span`,{className:`md-math md-math-inline`,"data-md-math":`inline`,"data-md-math-source":e,children:t.map((e,t)=>tt(e,t))})}function tt(e,t){switch(e.type){case`math-text`:return(0,m.jsx)(`span`,{className:`md-m-text`,children:e.value},t);case`math-number`:return(0,m.jsx)(`span`,{className:`md-m-number`,children:e.value},t);case`math-identifier`:return(0,m.jsx)(`i`,{className:`md-m-var`,children:e.value},t);case`math-operator`:return(0,m.jsx)(`span`,{className:`md-m-op`,children:e.value},t);case`math-function`:return(0,m.jsx)(`span`,{className:`md-m-fn`,children:e.value},t);case`math-row-break`:return(0,m.jsx)(`br`,{className:`md-m-rowbreak`},t);case`math-unsupported`:return(0,m.jsx)(`span`,{className:`md-m-unsupported`,"data-md-math-unsupported":`1`,title:e.reason,children:e.value},t);case`math-script`:return(0,m.jsxs)(`span`,{className:`md-m-script`,children:[(0,m.jsx)(`span`,{className:`md-m-base`,children:e.base.map((e,t)=>tt(e,t))}),e.sup&&(0,m.jsx)(`sup`,{className:`md-m-sup`,children:e.sup.map((e,t)=>tt(e,t))}),e.sub&&(0,m.jsx)(`sub`,{className:`md-m-sub`,children:e.sub.map((e,t)=>tt(e,t))})]},t);case`math-fraction`:return(0,m.jsxs)(`span`,{className:`md-m-frac`,children:[(0,m.jsx)(`span`,{className:`md-m-num`,children:e.numerator.map((e,t)=>tt(e,t))}),(0,m.jsx)(`span`,{className:`md-m-den`,children:e.denominator.map((e,t)=>tt(e,t))})]},t);case`math-root`:return(0,m.jsxs)(`span`,{className:`md-m-root`,children:[(0,m.jsx)(`span`,{className:`md-m-radical`,children:`√`}),e.index&&(0,m.jsx)(`sup`,{className:`md-m-index`,children:e.index.map((e,t)=>tt(e,t))}),(0,m.jsx)(`span`,{className:`md-m-body`,children:e.radicand.map((e,t)=>tt(e,t))})]},t);default:return null}}var nt=[[`help`,`Show help`],[`model`,`Choose model`],[`settings`,`Open settings`],[`clear`,`Clear session`],[`compact`,`Compact context`],[`reload`,`Reload agents`],[`new`,`New session`],[`fork`,`Fork session`],[`resume`,`Resume session`],[`stop`,`Stop run`],[`skill`,`Workspace skill`]].map(([e,t])=>({id:e,label:`/${e} — ${t}`,description:t})),rt=e=>e.normalize(`NFKD`).replace(/\p{M}/gu,``).toLowerCase();function it(e,t){let n=rt(t.trim());return e.examples?.find(t=>rt(t).includes(n)&&t!==e.id)??e.id}function at(e,t){let n=rt(t.trim());return n?e.filter(e=>rt(e.id).includes(n)||rt(e.label).includes(n)||e.examples?.some(e=>rt(e).includes(n))):e}function ot({query:e,anchorRect:t,onSelect:n,onClose:r}){let[i,a]=(0,p.useState)(0),[o,s]=(0,p.useState)(nt),c=(0,p.useRef)(null),l=(0,p.useRef)([]);(0,p.useEffect)(()=>{let e=!1,t=document.querySelector(`[data-selected-workspace]`)?.dataset.selectedWorkspace;if(t)return fetch(`/api/memory?workspaceId=${encodeURIComponent(t)}`).then(e=>e.ok?e.json():void 0).then(t=>{if(e||!t?.entries?.skills)return;let n=t.entries.skills.map(e=>{let t=e.content.split(/\r?\n/,1)[0].replace(/^#\s*/,``).trim()||e.id;return{id:`skill:${e.id}`,label:t,description:`工作区技能`,examples:[`skill:${e.id}`]}});s([...nt.filter(e=>e.id!==`skill`),...n])}).catch(()=>{}),()=>{e=!0}},[]);let u=at(o,e),d=u.length===0?-1:Math.min(Math.max(i,0),u.length-1),f=e=>a(t=>u.length?Math.min(Math.max(t+e,0),u.length-1):0);(0,p.useEffect)(()=>{let e=e=>{c.current?.contains(e.target)||r()};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[r]),(0,p.useEffect)(()=>{a(0)},[e]),(0,p.useLayoutEffect)(()=>{d>=0&&l.current[d]?.scrollIntoView({block:`nearest`})},[d]);let h={position:`fixed`,left:Math.max(8,Math.min(t.left,window.innerWidth-360)),bottom:Math.max(8,window.innerHeight-t.top+6),zIndex:200};return(0,m.jsx)(`div`,{ref:c,className:`slash-menu`,style:h,role:`listbox`,"aria-label":`斜杠命令`,onKeyDown:e=>{e.key===`Escape`?(e.preventDefault(),r()):e.key===`ArrowDown`?(e.preventDefault(),f(1)):e.key===`ArrowUp`?(e.preventDefault(),f(-1)):e.key===`Home`?(e.preventDefault(),a(0)):e.key===`End`?(e.preventDefault(),a(u.length-1)):e.key===`Enter`&&(e.preventDefault(),u[d]&&n(u[d]))},children:u.length===0?(0,m.jsxs)(`div`,{className:`slash-menu-empty`,children:[`没有匹配「`,e,`」的命令`]}):u.map((e,t)=>(0,m.jsxs)(`button`,{ref:e=>{l.current[t]=e},type:`button`,role:`option`,"aria-selected":t===d,className:`slash-menu-item${t===d?` selected`:``}`,"data-slash-command":e.id,onClick:()=>n(e),onMouseEnter:()=>a(t),children:[(0,m.jsxs)(`span`,{className:`slash-menu-item-id`,children:[`/`,e.id]}),(0,m.jsx)(`span`,{className:`slash-menu-item-sep`,"aria-hidden":`true`,children:` — `}),(0,m.jsx)(`span`,{className:`slash-menu-item-label`,children:e.label}),e.examples?.length?(0,m.jsx)(`span`,{className:`slash-menu-item-examples`,children:e.examples.slice(0,2).join(` · `)}):null]},e.id))})}var st=4e3,ct=` `;function lt(e){return ne(e).map((e,t)=>e.kind===`plain`?(0,m.jsx)(`span`,{children:e.text},t):(0,m.jsx)(`span`,{className:`code-token-${e.kind}`,children:e.text},t))}function ut({value:e,onChange:t,onKeyDown:n,path:r}){return(0,m.jsxs)(`div`,{className:`file-textarea-highlight-wrap`,children:[(0,m.jsx)(`div`,{className:`file-textarea-highlight`,"data-file-text-highlight":r,"aria-hidden":`true`,children:lt(e)}),(0,m.jsx)(`textarea`,{className:`file-textarea`,"data-file-text":r,value:e,wrap:`off`,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,"aria-label":`编辑 ${r}`,onChange:e=>t(e.target.value),onKeyDown:n})]})}var dt=class extends Error{status;body;constructor(e,t){super(t.error||`HTTP ${e}`),this.status=e,this.body=t,this.name=`ApiError`}},ft=15e3,pt=e=>new dt(408,{error:`请求超时:${ft/1e3} 秒内服务端没有响应`,code:`timeout`,details:{path:e}});async function mt(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),ft);try{let r=await fetch(e,{...t,signal:n.signal}),i;try{i=await r.json()}catch{i=void 0}if(!r.ok)throw new dt(r.status,i??{error:`HTTP ${r.status}`});return i}catch(t){throw n.signal.aborted?pt(e):t}finally{clearTimeout(r)}}var ht=e=>e instanceof dt?e:new dt(0,{error:e instanceof Error?e.message:`读取失败`}),gt=e=>encodeURIComponent(e),_t=(e,t)=>`/api/files?workspaceId=${gt(e)}&path=${gt(t)}`,vt=(e,t)=>`/api/file?workspaceId=${gt(e)}&path=${gt(t)}`,yt=(e,t)=>`/api/file?workspaceId=${gt(e)}&path=${gt(t)}&meta=1`,j=(e,t)=>`/api/files?workspaceId=${gt(e)}&q=${gt(t)}`,bt=e=>e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`,xt=e=>{let t=new Date(e);return Number.isNaN(t.getTime())?``:new Date(e).toLocaleTimeString(`zh-CN`,{hour:`2-digit`,minute:`2-digit`})};function St({workspaceId:e,entryPath:t,name:n,listings:r,expanded:i,toggle:a,openPaths:o,onOpen:s,onError:c,depth:l}){let u=r[t],d=i.has(t);return(0,p.useEffect)(()=>{if(!d||r[t]!==void 0)return;let n=!0;return mt(_t(e,t)).then(e=>{n&&(r[t]=e)}).catch(e=>{n&&(r[t]={error:ht(e)})}),()=>{n=!1}},[d,t,e,r]),(0,m.jsxs)(`li`,{className:`file-node`,"data-file-dir":t,children:[(0,m.jsxs)(`button`,{type:`button`,className:`file-row file-row-dir`,"data-file-dir-toggle":t,"aria-expanded":d,style:{paddingLeft:`${8+l*13}px`},onClick:()=>a(t),children:[(0,m.jsx)(`span`,{className:`file-caret`,"aria-hidden":`true`,children:d?`▾`:`▸`}),(0,m.jsx)(`span`,{className:`file-name`,children:n})]}),d&&(0,m.jsx)(`ul`,{className:`file-children`,children:u===void 0?(0,m.jsx)(`li`,{className:`file-row-loading`,"data-file-loading":t,children:`读取中…`}):`error`in u?(0,m.jsx)(`li`,{className:`file-row-error`,"data-file-error":t,children:u.error.message}):u.entries.length===0?(0,m.jsx)(`li`,{className:`file-row-empty`,"data-file-empty":t,children:`空目录`}):(0,m.jsxs)(m.Fragment,{children:[u.truncated&&(0,m.jsx)(`li`,{className:`file-row-empty`,"data-file-truncated":t,children:`条目过多,只显示前一部分`}),u.entries.map(t=>t.kind===`directory`?(0,m.jsx)(St,{workspaceId:e,entryPath:t.path,name:t.name,listings:r,expanded:i,toggle:a,openPaths:o,onOpen:s,onError:c,depth:l+1},t.path):(0,m.jsx)(Ct,{entry:t,depth:l+1,openPaths:o,onOpen:s},t.path))]})})]})}function Ct({entry:e,depth:t,openPaths:n,onOpen:r}){if(e.kind===`symlink`)return(0,m.jsx)(`li`,{className:`file-node`,"data-file-entry":e.path,"data-file-outside":e.path,children:(0,m.jsxs)(`button`,{type:`button`,className:`file-row file-row-file`,disabled:!0,title:`${e.path} 是一个指向 workspace 之外的符号链接,不能打开`,style:{paddingLeft:`${8+t*13}px`},children:[(0,m.jsx)(`span`,{className:`file-caret`,"aria-hidden":`true`}),(0,m.jsx)(`span`,{className:`file-name`,children:e.name}),(0,m.jsx)(`span`,{className:`file-badge`,"data-file-outside-badge":`1`,children:`外部链接`})]})});let i=n.has(e.path);return(0,m.jsx)(`li`,{className:`file-node`,"data-file-entry":e.path,"data-file-row-open":i?`1`:`0`,children:(0,m.jsxs)(`button`,{type:`button`,className:`file-row file-row-file`,"data-file-open":e.path,disabled:!e.text,title:e.text?i?`${e.path}(已经打开,点击切换到它)`:e.path:`${e.name} 是二进制文件,无法以文本打开`,style:{paddingLeft:`${8+t*13}px`},onClick:()=>r(e),children:[(0,m.jsx)(`span`,{className:`file-caret`,"aria-hidden":`true`}),(0,m.jsx)(`span`,{className:`file-name`,children:e.name}),i&&(0,m.jsx)(`span`,{className:`file-open-mark`,"data-file-open-mark":e.path,title:`已经打开`,"aria-label":`已经打开`,children:`●`}),!e.text&&(0,m.jsx)(`span`,{className:`file-badge`,"data-file-binary":`1`,"aria-label":`不支持的文件类型`,children:`不支持`})]})})}function wt({file:e,state:t,message:n,external:r,onChange:i,onSave:a,onReload:o,onOverwrite:s}){let[c,l]=(0,p.useState)(!0),u=/\.md$/i.test(e.path);return(0,m.jsxs)(`div`,{className:`file-editor`,"data-file-editor":e.path,"data-save-state":t,children:[(0,m.jsxs)(`div`,{className:`file-editor-head`,children:[(0,m.jsx)(`span`,{className:`file-editor-path`,title:e.path,children:e.path}),(0,m.jsxs)(`span`,{className:`file-editor-flags`,children:[u&&(0,m.jsx)(`button`,{type:`button`,className:`file-preview-toggle`,onClick:()=>l(e=>!e),children:c?`原文`:`预览`}),e.dirty&&(0,m.jsx)(`span`,{className:`file-dirty`,"data-file-dirty":`1`,children:`未保存`}),(0,m.jsx)(`button`,{type:`button`,className:`file-save`,"data-file-save":e.path,onClick:a,disabled:t===`saving`,children:t===`saving`?`保存中…`:`保存`})]})]}),r&&t!==`conflict`&&(0,m.jsxs)(`div`,{className:`file-conflict`,"data-file-external":e.path,role:`alert`,children:[(0,m.jsx)(`p`,{children:`这个文件在磁盘上已经被改过了,你的修改还没有覆盖它。`}),(0,m.jsxs)(`div`,{className:`file-conflict-actions`,children:[(0,m.jsx)(`button`,{type:`button`,"data-file-reload":e.path,onClick:o,children:`丢掉我的修改,读磁盘版本`}),(0,m.jsx)(`button`,{type:`button`,"data-file-overwrite":e.path,onClick:s,children:`仍然覆盖磁盘`})]})]}),t===`conflict`&&(0,m.jsxs)(`div`,{className:`file-conflict`,"data-file-conflict":e.path,role:`alert`,children:[(0,m.jsx)(`p`,{children:`保存被拒绝:这个文件在磁盘上已经被改过了,覆盖会丢掉对方的改动。`}),(0,m.jsxs)(`div`,{className:`file-conflict-actions`,children:[(0,m.jsx)(`button`,{type:`button`,"data-file-reload":e.path,onClick:o,children:`丢掉我的修改,读磁盘版本`}),(0,m.jsx)(`button`,{type:`button`,"data-file-overwrite":e.path,onClick:s,children:`仍然覆盖磁盘`})]})]}),n&&t!==`conflict`&&!r&&(0,m.jsx)(`p`,{className:`file-editor-message file-message-${t}`,"data-file-message":t,role:`status`,children:n}),u&&c?(0,m.jsx)(`div`,{className:`file-markdown-preview`,children:(0,m.jsx)(qe,{source:e.content})}):(0,m.jsx)(ut,{value:e.content,onChange:i,onKeyDown:e=>{let t=e.currentTarget;if(e.nativeEvent.isComposing||e.keyCode===229)return;if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`){e.preventDefault(),a();return}if(e.key!==`Tab`)return;e.preventDefault();let{selectionStart:n,selectionEnd:r,value:o}=t;if(!o.slice(n,r).includes(`
19
+ `;)a+=1;continue}if(Le.has(s))continue;if(s===`begin`){let n=ue(e,a),r=n.content,o=`\\end{${r}}`,s=e.indexOf(o,n.next),c=s===-1?e.length:s+o.length;i({type:`math-unsupported`,value:e.slice(t,c),reason:`\\begin{${r}} 不支持`}),a=c;continue}if(s===`frac`||s===`dfrac`||s===`tfrac`||s===`cfrac`){let t=Ue(e,a),n=Ue(e,t.next);a=n.next,i({type:`math-fraction`,numerator:Ve(t.content),denominator:Ve(n.content)});continue}if(s===`sqrt`){let t,n=a;if(e[n]===`[`){let r=He(e,n);t=Ve(r.content),n=r.next}let r=Ue(e,n);a=r.next,i({type:`math-root`,...t?{index:t}:{},radicand:Ve(r.content)});continue}if(s===`text`||s===`mathrm`||s===`textrm`||s===`mathbf`||s===`mathit`||s===`mathsf`||s===`mathtt`||s===`operatorname`||s===`textbf`){let t=ue(e,a);a=t.next,i({type:`math-text`,value:t.content});continue}if(s in Re){let t=Ue(e,a);a=t.next,i({type:`math-text`,value:`${Ke(Ve(t.content))}${Re[s]}`});continue}if(s in Pe){i({type:`math-identifier`,value:Pe[s]});continue}if(s in Fe){let e=Fe[s];/^\d/.test(e)?i({type:`math-number`,value:e}):/^[A-Za-z]/.test(e)?i({type:`math-text`,value:e}):i({type:`math-operator`,value:e});continue}if(Ie.has(s)){i({type:`math-function`,value:s});continue}if(Be.has(s))continue;i({type:`math-unsupported`,value:`\\${s}`,reason:`\\${s} 不支持`})}else if(o===`{`){let n=ue(e,a);t.push(...Ve(n.content)),a=n.next}else if(o===`}`||o===`&`||o===`$`)a+=1;else if(o===`^`||o===`_`){r();let n=Ue(e,a+1);a=n.next,We(t,o===`^`?`sup`:`sub`,Ve(n.content))}else ze.has(o)?(i({type:`math-text`,value:o}),a+=1):(n+=o,a+=1)}return r(),t}function He(e,t){let n=e.indexOf(`]`,t+1);return n===-1?{content:``,next:e.length}:{content:e.slice(t+1,n),next:n+1}}function Ue(e,t){let n=e[t];if(n===void 0)return{content:``,next:t};if(n===`{`)return ue(e,t);let r=/^\\[a-zA-Z]+/.exec(e.slice(t));return r?{content:r[0],next:t+r[0].length}:{content:n,next:t+1}}function We(e,t,n){let r=e.pop();if(r){if(r.type===`math-script`)t===`sub`&&!r.sub?e.push({...r,sub:n}):t===`sup`&&!r.sup?e.push({...r,sup:n}):e.push(r);else if(r.type===`math-identifier`||r.type===`math-text`){let i=[...r.value],a=i.pop()??``;i.length&&e.push({type:r.type,value:i.join(``)}),e.push({type:`math-script`,base:[{type:`math-identifier`,value:a}],...t===`sub`?{sub:n}:{sup:n}})}else e.push({type:`math-script`,base:[r],...t===`sub`?{sub:n}:{sup:n}})}}function Ge(e){let t=[],n=0;for(;n<e.length;){let r=e.slice(n),i=/^\d+(?:\.\d+)?/.exec(r);if(i){t.push({type:`math-number`,value:i[0]}),n+=i[0].length;continue}let a=/^[A-Za-z]+/.exec(r);if(a){t.push(Ie.has(a[0])?{type:`math-function`,value:a[0]}:{type:`math-identifier`,value:a[0]}),n+=a[0].length;continue}let o=/^[,;:!.'’|()\-+=<>/*]+/.exec(r);o?(t.push({type:`math-operator`,value:o[0]}),n+=o[0].length):(t.push({type:`math-text`,value:r[0]}),n+=1)}return t.reduce((e,t)=>{let n=e[e.length-1];return n?.type===`math-operator`&&t.type===`math-operator`?n.value+=t.value:e.push({...t}),e},[])}function Ke(e){return e.map(e=>{switch(e.type){case`math-text`:case`math-number`:case`math-identifier`:case`math-operator`:case`math-function`:return e.value;case`math-script`:return`${Ke(e.base)}${e.sub?`_{${Ke(e.sub)}}`:``}${e.sup?`^{${Ke(e.sup)}}`:``}`;case`math-fraction`:return`\\frac{${Ke(e.numerator)}}{${Ke(e.denominator)}}`;case`math-root`:return`\\sqrt{${Ke(e.radicand)}}`;case`math-row-break`:return`\\\\`;case`math-unsupported`:return e.value;default:return``}}).join(``)}function qe({source:e}){let t=(0,p.useMemo)(()=>Oe(e),[e]);return(0,m.jsx)(`div`,{className:`md`,"data-md":`1`,children:t.map((e,t)=>Xe(e,t))})}function Je({source:e}){let t=(0,p.useMemo)(()=>ye(e),[e]);return(0,m.jsx)(`span`,{className:`md md-inline`,children:t.map((e,t)=>Qe(e,t))})}function Ye(e){return ne(e).map((e,t)=>e.kind===`plain`?(0,m.jsx)(`span`,{children:e.text},t):(0,m.jsx)(`span`,{className:`code-token-${e.kind}`,children:e.text},t))}function Xe(e,t){switch(e.type){case`paragraph`:return(0,m.jsx)(`p`,{className:`md-p`,children:e.children.map((e,t)=>Qe(e,t))},t);case`heading`:{let n=`h${Math.min(6,Math.max(1,e.level))}`;return(0,m.jsx)(n,{className:`md-h md-h${e.level}`,children:e.children.map((e,t)=>Qe(e,t))},t)}case`code-block`:return(0,m.jsx)(`pre`,{className:`md-pre`,"data-md-lang":e.lang||void 0,children:(0,m.jsx)(`code`,{className:`md-code`,children:Ye(e.value)})},t);case`list`:{let n=e.items.map((e,t)=>(0,m.jsx)(`li`,{className:`md-li`,children:e.map((e,t)=>Xe(e,t))},t));return e.ordered?(0,m.jsx)(`ol`,{className:`md-ol`,start:e.start>1?e.start:void 0,children:n},t):(0,m.jsx)(`ul`,{className:`md-ul`,children:n},t)}case`blockquote`:return(0,m.jsx)(`blockquote`,{className:`md-quote`,children:e.children.map((e,t)=>Xe(e,t))},t);case`rule`:return(0,m.jsx)(`hr`,{className:`md-rule`},t);case`table`:return(0,m.jsx)(`div`,{className:`md-table-wrap`,children:(0,m.jsxs)(`table`,{className:`md-table`,children:[(0,m.jsx)(`thead`,{children:(0,m.jsx)(`tr`,{children:e.head.map((t,n)=>(0,m.jsx)(`th`,{style:Ze(e.align[n]),children:t.map((e,t)=>Qe(e,t))},n))})}),(0,m.jsx)(`tbody`,{children:e.rows.map((t,n)=>(0,m.jsx)(`tr`,{children:t.map((t,n)=>(0,m.jsx)(`td`,{style:Ze(e.align[n]),children:t.map((e,t)=>Qe(e,t))},n))},n))})]})},t);case`math-block`:return(0,m.jsx)($e,{source:e.source},t);default:return null}}var Ze=e=>e?{textAlign:e}:void 0;function Qe(e,t){switch(e.type){case`text`:return(0,m.jsx)(p.Fragment,{children:e.value},t);case`code`:return(0,m.jsx)(`code`,{className:`md-code-inline`,children:e.value},t);case`strong`:return(0,m.jsx)(`strong`,{className:`md-strong`,children:e.children.map((e,t)=>Qe(e,t))},t);case`em`:return(0,m.jsx)(`em`,{className:`md-em`,children:e.children.map((e,t)=>Qe(e,t))},t);case`del`:return(0,m.jsx)(`del`,{className:`md-del`,children:e.children.map((e,t)=>Qe(e,t))},t);case`break`:return(0,m.jsx)(`br`,{className:`md-break`},t);case`math`:return(0,m.jsx)(et,{source:e.source},t);case`link`:{let n=oe(e.href);return n?(0,m.jsx)(`a`,{className:`md-link`,href:n,title:e.title,target:`_blank`,rel:`noopener noreferrer nofollow`,children:e.children.map((e,t)=>Qe(e,t))},t):(0,m.jsx)(p.Fragment,{children:e.children.map((e,t)=>Qe(e,t))},t)}default:return null}}function $e({source:e}){let t=(0,p.useMemo)(()=>Ve(e),[e]);return(0,m.jsx)(`div`,{className:`md-math md-math-block`,"data-md-math":`block`,"data-md-math-source":e,children:t.map((e,t)=>tt(e,t))})}function et({source:e}){let t=(0,p.useMemo)(()=>Ve(e),[e]);return(0,m.jsx)(`span`,{className:`md-math md-math-inline`,"data-md-math":`inline`,"data-md-math-source":e,children:t.map((e,t)=>tt(e,t))})}function tt(e,t){switch(e.type){case`math-text`:return(0,m.jsx)(`span`,{className:`md-m-text`,children:e.value},t);case`math-number`:return(0,m.jsx)(`span`,{className:`md-m-number`,children:e.value},t);case`math-identifier`:return(0,m.jsx)(`i`,{className:`md-m-var`,children:e.value},t);case`math-operator`:return(0,m.jsx)(`span`,{className:`md-m-op`,children:e.value},t);case`math-function`:return(0,m.jsx)(`span`,{className:`md-m-fn`,children:e.value},t);case`math-row-break`:return(0,m.jsx)(`br`,{className:`md-m-rowbreak`},t);case`math-unsupported`:return(0,m.jsx)(`span`,{className:`md-m-unsupported`,"data-md-math-unsupported":`1`,title:e.reason,children:e.value},t);case`math-script`:return(0,m.jsxs)(`span`,{className:`md-m-script`,children:[(0,m.jsx)(`span`,{className:`md-m-base`,children:e.base.map((e,t)=>tt(e,t))}),e.sup&&(0,m.jsx)(`sup`,{className:`md-m-sup`,children:e.sup.map((e,t)=>tt(e,t))}),e.sub&&(0,m.jsx)(`sub`,{className:`md-m-sub`,children:e.sub.map((e,t)=>tt(e,t))})]},t);case`math-fraction`:return(0,m.jsxs)(`span`,{className:`md-m-frac`,children:[(0,m.jsx)(`span`,{className:`md-m-num`,children:e.numerator.map((e,t)=>tt(e,t))}),(0,m.jsx)(`span`,{className:`md-m-den`,children:e.denominator.map((e,t)=>tt(e,t))})]},t);case`math-root`:return(0,m.jsxs)(`span`,{className:`md-m-root`,children:[(0,m.jsx)(`span`,{className:`md-m-radical`,children:`√`}),e.index&&(0,m.jsx)(`sup`,{className:`md-m-index`,children:e.index.map((e,t)=>tt(e,t))}),(0,m.jsx)(`span`,{className:`md-m-body`,children:e.radicand.map((e,t)=>tt(e,t))})]},t);default:return null}}var nt=[[`help`,`Show help`],[`model`,`Choose model`],[`settings`,`Open settings`],[`clear`,`Clear session`],[`compact`,`Compact context`],[`reload`,`Reload agents`],[`new`,`New session`],[`fork`,`Fork session`],[`resume`,`Resume session`],[`stop`,`Stop run`],[`skill`,`Workspace skill`]].map(([e,t])=>({id:e,label:`/${e} — ${t}`,description:t})),rt=e=>e.normalize(`NFKD`).replace(/\p{M}/gu,``).toLowerCase();function it(e,t){let n=rt(t.trim());return e.examples?.find(t=>rt(t).includes(n)&&t!==e.id)??e.id}function at(e,t){let n=rt(t.trim());return n?e.filter(e=>rt(e.id).includes(n)||rt(e.label).includes(n)||e.examples?.some(e=>rt(e).includes(n))):e}function ot({query:e,anchorRect:t,onSelect:n,onClose:r}){let[i,a]=(0,p.useState)(0),[o,s]=(0,p.useState)(nt),c=(0,p.useRef)(null),l=(0,p.useRef)([]);(0,p.useEffect)(()=>{let e=!1,t=document.querySelector(`[data-selected-workspace]`)?.dataset.selectedWorkspace;if(t)return fetch(`/api/memory?workspaceId=${encodeURIComponent(t)}`).then(e=>e.ok?e.json():void 0).then(t=>{if(e||!t?.entries?.skills)return;let n=t.entries.skills.map(e=>{let t=e.content.split(/\r?\n/,1)[0].replace(/^#+\s*/,``).trim()||`unnamed-skill`,n=t.toLowerCase().replace(/[^a-z0-9\u4e00-\u9fff]+/g,`-`).replace(/^-|-$/g,``)||`unnamed-skill`;return{id:`skill:${n}`,label:t,description:`Workspace skill`,examples:[`skill:${n}`]}});s([...nt.filter(e=>e.id!==`skill`),...n])}).catch(()=>{}),()=>{e=!0}},[]);let u=at(o,e),d=u.length===0?-1:Math.min(Math.max(i,0),u.length-1),f=e=>a(t=>u.length?Math.min(Math.max(t+e,0),u.length-1):0);(0,p.useEffect)(()=>{let e=e=>{c.current?.contains(e.target)||r()};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[r]),(0,p.useEffect)(()=>{a(0)},[e]),(0,p.useLayoutEffect)(()=>{d>=0&&l.current[d]?.scrollIntoView({block:`nearest`})},[d]);let h={position:`fixed`,left:Math.max(8,Math.min(t.left,window.innerWidth-360)),bottom:Math.max(8,window.innerHeight-t.top+6),zIndex:200};return(0,m.jsx)(`div`,{ref:c,className:`slash-menu`,style:h,role:`listbox`,"aria-label":`斜杠命令`,onKeyDown:e=>{e.key===`Escape`?(e.preventDefault(),r()):e.key===`ArrowDown`?(e.preventDefault(),f(1)):e.key===`ArrowUp`?(e.preventDefault(),f(-1)):e.key===`Home`?(e.preventDefault(),a(0)):e.key===`End`?(e.preventDefault(),a(u.length-1)):e.key===`Enter`&&(e.preventDefault(),u[d]&&n(u[d]))},children:u.length===0?(0,m.jsxs)(`div`,{className:`slash-menu-empty`,children:[`没有匹配「`,e,`」的命令`]}):u.map((e,t)=>(0,m.jsxs)(`button`,{ref:e=>{l.current[t]=e},type:`button`,role:`option`,"aria-selected":t===d,className:`slash-menu-item${t===d?` selected`:``}`,"data-slash-command":e.id,onClick:()=>n(e),onMouseEnter:()=>a(t),children:[(0,m.jsxs)(`span`,{className:`slash-menu-item-id`,children:[`/`,e.id]}),(0,m.jsx)(`span`,{className:`slash-menu-item-sep`,"aria-hidden":`true`,children:` — `}),(0,m.jsx)(`span`,{className:`slash-menu-item-label`,children:e.label}),e.examples?.length?(0,m.jsx)(`span`,{className:`slash-menu-item-examples`,children:e.examples.slice(0,2).join(` · `)}):null]},e.id))})}var st=4e3,ct=` `;function lt(e){return ne(e).map((e,t)=>e.kind===`plain`?(0,m.jsx)(`span`,{children:e.text},t):(0,m.jsx)(`span`,{className:`code-token-${e.kind}`,children:e.text},t))}function ut({value:e,onChange:t,onKeyDown:n,path:r}){return(0,m.jsxs)(`div`,{className:`file-textarea-highlight-wrap`,children:[(0,m.jsx)(`div`,{className:`file-textarea-highlight`,"data-file-text-highlight":r,"aria-hidden":`true`,children:lt(e)}),(0,m.jsx)(`textarea`,{className:`file-textarea`,"data-file-text":r,value:e,wrap:`off`,spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,"aria-label":`编辑 ${r}`,onChange:e=>t(e.target.value),onKeyDown:n})]})}var dt=class extends Error{status;body;constructor(e,t){super(t.error||`HTTP ${e}`),this.status=e,this.body=t,this.name=`ApiError`}},ft=15e3,pt=e=>new dt(408,{error:`请求超时:${ft/1e3} 秒内服务端没有响应`,code:`timeout`,details:{path:e}});async function mt(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),ft);try{let r=await fetch(e,{...t,signal:n.signal}),i;try{i=await r.json()}catch{i=void 0}if(!r.ok)throw new dt(r.status,i??{error:`HTTP ${r.status}`});return i}catch(t){throw n.signal.aborted?pt(e):t}finally{clearTimeout(r)}}var ht=e=>e instanceof dt?e:new dt(0,{error:e instanceof Error?e.message:`读取失败`}),gt=e=>encodeURIComponent(e),_t=(e,t)=>`/api/files?workspaceId=${gt(e)}&path=${gt(t)}`,vt=(e,t)=>`/api/file?workspaceId=${gt(e)}&path=${gt(t)}`,yt=(e,t)=>`/api/file?workspaceId=${gt(e)}&path=${gt(t)}&meta=1`,j=(e,t)=>`/api/files?workspaceId=${gt(e)}&q=${gt(t)}`,bt=e=>e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`,xt=e=>{let t=new Date(e);return Number.isNaN(t.getTime())?``:new Date(e).toLocaleTimeString(`zh-CN`,{hour:`2-digit`,minute:`2-digit`})};function St({workspaceId:e,entryPath:t,name:n,listings:r,expanded:i,toggle:a,openPaths:o,onOpen:s,onError:c,depth:l}){let u=r[t],d=i.has(t);return(0,p.useEffect)(()=>{if(!d||r[t]!==void 0)return;let n=!0;return mt(_t(e,t)).then(e=>{n&&(r[t]=e)}).catch(e=>{n&&(r[t]={error:ht(e)})}),()=>{n=!1}},[d,t,e,r]),(0,m.jsxs)(`li`,{className:`file-node`,"data-file-dir":t,children:[(0,m.jsxs)(`button`,{type:`button`,className:`file-row file-row-dir`,"data-file-dir-toggle":t,"aria-expanded":d,style:{paddingLeft:`${8+l*13}px`},onClick:()=>a(t),children:[(0,m.jsx)(`span`,{className:`file-caret`,"aria-hidden":`true`,children:d?`▾`:`▸`}),(0,m.jsx)(`span`,{className:`file-name`,children:n})]}),d&&(0,m.jsx)(`ul`,{className:`file-children`,children:u===void 0?(0,m.jsx)(`li`,{className:`file-row-loading`,"data-file-loading":t,children:`读取中…`}):`error`in u?(0,m.jsx)(`li`,{className:`file-row-error`,"data-file-error":t,children:u.error.message}):u.entries.length===0?(0,m.jsx)(`li`,{className:`file-row-empty`,"data-file-empty":t,children:`空目录`}):(0,m.jsxs)(m.Fragment,{children:[u.truncated&&(0,m.jsx)(`li`,{className:`file-row-empty`,"data-file-truncated":t,children:`条目过多,只显示前一部分`}),u.entries.map(t=>t.kind===`directory`?(0,m.jsx)(St,{workspaceId:e,entryPath:t.path,name:t.name,listings:r,expanded:i,toggle:a,openPaths:o,onOpen:s,onError:c,depth:l+1},t.path):(0,m.jsx)(Ct,{entry:t,depth:l+1,openPaths:o,onOpen:s},t.path))]})})]})}function Ct({entry:e,depth:t,openPaths:n,onOpen:r}){if(e.kind===`symlink`)return(0,m.jsx)(`li`,{className:`file-node`,"data-file-entry":e.path,"data-file-outside":e.path,children:(0,m.jsxs)(`button`,{type:`button`,className:`file-row file-row-file`,disabled:!0,title:`${e.path} 是一个指向 workspace 之外的符号链接,不能打开`,style:{paddingLeft:`${8+t*13}px`},children:[(0,m.jsx)(`span`,{className:`file-caret`,"aria-hidden":`true`}),(0,m.jsx)(`span`,{className:`file-name`,children:e.name}),(0,m.jsx)(`span`,{className:`file-badge`,"data-file-outside-badge":`1`,children:`外部链接`})]})});let i=n.has(e.path);return(0,m.jsx)(`li`,{className:`file-node`,"data-file-entry":e.path,"data-file-row-open":i?`1`:`0`,children:(0,m.jsxs)(`button`,{type:`button`,className:`file-row file-row-file`,"data-file-open":e.path,disabled:!e.text,title:e.text?i?`${e.path}(已经打开,点击切换到它)`:e.path:`${e.name} 是二进制文件,无法以文本打开`,style:{paddingLeft:`${8+t*13}px`},onClick:()=>r(e),children:[(0,m.jsx)(`span`,{className:`file-caret`,"aria-hidden":`true`}),(0,m.jsx)(`span`,{className:`file-name`,children:e.name}),i&&(0,m.jsx)(`span`,{className:`file-open-mark`,"data-file-open-mark":e.path,title:`已经打开`,"aria-label":`已经打开`,children:`●`}),!e.text&&(0,m.jsx)(`span`,{className:`file-badge`,"data-file-binary":`1`,"aria-label":`不支持的文件类型`,children:`不支持`})]})})}function wt({file:e,state:t,message:n,external:r,onChange:i,onSave:a,onReload:o,onOverwrite:s}){let[c,l]=(0,p.useState)(!0),u=/\.md$/i.test(e.path);return(0,m.jsxs)(`div`,{className:`file-editor`,"data-file-editor":e.path,"data-save-state":t,children:[(0,m.jsxs)(`div`,{className:`file-editor-head`,children:[(0,m.jsx)(`span`,{className:`file-editor-path`,title:e.path,children:e.path}),(0,m.jsxs)(`span`,{className:`file-editor-flags`,children:[u&&(0,m.jsx)(`button`,{type:`button`,className:`file-preview-toggle`,onClick:()=>l(e=>!e),children:c?`原文`:`预览`}),e.dirty&&(0,m.jsx)(`span`,{className:`file-dirty`,"data-file-dirty":`1`,children:`未保存`}),(0,m.jsx)(`button`,{type:`button`,className:`file-save`,"data-file-save":e.path,onClick:a,disabled:t===`saving`,children:t===`saving`?`保存中…`:`保存`})]})]}),r&&t!==`conflict`&&(0,m.jsxs)(`div`,{className:`file-conflict`,"data-file-external":e.path,role:`alert`,children:[(0,m.jsx)(`p`,{children:`这个文件在磁盘上已经被改过了,你的修改还没有覆盖它。`}),(0,m.jsxs)(`div`,{className:`file-conflict-actions`,children:[(0,m.jsx)(`button`,{type:`button`,"data-file-reload":e.path,onClick:o,children:`丢掉我的修改,读磁盘版本`}),(0,m.jsx)(`button`,{type:`button`,"data-file-overwrite":e.path,onClick:s,children:`仍然覆盖磁盘`})]})]}),t===`conflict`&&(0,m.jsxs)(`div`,{className:`file-conflict`,"data-file-conflict":e.path,role:`alert`,children:[(0,m.jsx)(`p`,{children:`保存被拒绝:这个文件在磁盘上已经被改过了,覆盖会丢掉对方的改动。`}),(0,m.jsxs)(`div`,{className:`file-conflict-actions`,children:[(0,m.jsx)(`button`,{type:`button`,"data-file-reload":e.path,onClick:o,children:`丢掉我的修改,读磁盘版本`}),(0,m.jsx)(`button`,{type:`button`,"data-file-overwrite":e.path,onClick:s,children:`仍然覆盖磁盘`})]})]}),n&&t!==`conflict`&&!r&&(0,m.jsx)(`p`,{className:`file-editor-message file-message-${t}`,"data-file-message":t,role:`status`,children:n}),u&&c?(0,m.jsx)(`div`,{className:`file-markdown-preview`,children:(0,m.jsx)(qe,{source:e.content})}):(0,m.jsx)(ut,{value:e.content,onChange:i,onKeyDown:e=>{let t=e.currentTarget;if(e.nativeEvent.isComposing||e.keyCode===229)return;if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`){e.preventDefault(),a();return}if(e.key!==`Tab`)return;e.preventDefault();let{selectionStart:n,selectionEnd:r,value:o}=t;if(!o.slice(n,r).includes(`
20
20
  `)&&!e.shiftKey){i(`${o.slice(0,n)}${ct}${o.slice(r)}`);let e=n+2;requestAnimationFrame(()=>{t.selectionStart=e,t.selectionEnd=e});return}let s=o.lastIndexOf(`
21
21
  `,n-1)+1,c=r+(o[r-1]===`
22
22
  `?0:1),l=o.slice(s,c),u=l.split(`
@@ -8,7 +8,7 @@
8
8
  <link rel="alternate icon" href="/favicon.ico" />
9
9
  <link rel="apple-touch-icon" href="/favicon.svg" />
10
10
  <title>Super Pi</title>
11
- <script type="module" crossorigin src="/assets/index-Bx1HHVVh.js"></script>
11
+ <script type="module" crossorigin src="/assets/index-PIHGU_8U.js"></script>
12
12
  <link rel="stylesheet" crossorigin href="/assets/index-DJD8mXiK.css">
13
13
  </head>
14
14
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evandu/super-pi",
3
- "version": "0.1.51",
3
+ "version": "0.1.52",
4
4
  "description": "Web control plane and companion for Pi",
5
5
  "license": "MIT",
6
6
  "type": "module",