sliccy 6.240.2 → 6.240.3
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/ui/.vite/manifest.json +203 -203
- package/dist/ui/assets/{account-store-DkttH-BP.js → account-store-BY7L2nue.js} +1 -1
- package/dist/ui/assets/{account-store-BZBj_ntG.js → account-store-BZTlSap7.js} +1 -1
- package/dist/ui/assets/{adobe-ByBtC69J.js → adobe-CDStXNdn.js} +1 -1
- package/dist/ui/assets/{adobe-CVqQJ2x-.js → adobe-CMMbs-uB.js} +1 -1
- package/dist/ui/assets/{agent-panels-BVpX6zQ5.js → agent-panels-BoMV6jtA.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-HOeKQtgA.js → almost-bash-shell-headless--cwLwrzv.js} +15 -15
- package/dist/ui/assets/{apply-layout-C_O6ndKr.js → apply-layout-BtjslV7Z.js} +1 -1
- package/dist/ui/assets/{azure-openai-DiqKGUYo.js → azure-openai--A3VPQCt.js} +1 -1
- package/dist/ui/assets/{azure-openai-Z4aqtv7E.js → azure-openai-C9E5PjlB.js} +1 -1
- package/dist/ui/assets/{cdp-D0OuKYd5.js → cdp-B6c3Uk2f.js} +1 -1
- package/dist/ui/assets/{cerebras-UwtUgOV6.js → cerebras-CLDfgkgy.js} +1 -1
- package/dist/ui/assets/{cerebras-6-gk1Jha.js → cerebras-DXBssPNt.js} +1 -1
- package/dist/ui/assets/{composer-speech-QgsQ1IqW.js → composer-speech-CCWWTz70.js} +1 -1
- package/dist/ui/assets/{connect-surface-COrO1h1v.js → connect-surface-CKPv2fJZ.js} +1 -1
- package/dist/ui/assets/{directed-approval-iMn6w3M8.js → directed-approval-WdzT5Jb8.js} +1 -1
- package/dist/ui/assets/{emscripten-vfs-hook-_WoXADPd.js → emscripten-vfs-hook-Bjqk301Y.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-BhgsVjoX.js → frozen-archive-writer-BJkhyap1.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-CBS7YWrT.js → frozen-archive-writer-Ds5upuER.js} +1 -1
- package/dist/ui/assets/{frozen-session-delete-B1-ipujg.js → frozen-session-delete-CJoYh-8I.js} +1 -1
- package/dist/ui/assets/{frozen-session-identity-EbIVZuRz.js → frozen-session-identity-BLUbhsFI.js} +1 -1
- package/dist/ui/assets/{frozen-session-identity-CTAIleP4.js → frozen-session-identity-HGxlRDB-.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-BE-OCtHt.js → gelatiere-unit-Dm-nEuug.js} +1 -1
- package/dist/ui/assets/{github-Dhh_Kein.js → github-B9kp64Og.js} +1 -1
- package/dist/ui/assets/{github-C1OAynaV.js → github-B9zmCrJs.js} +1 -1
- package/dist/ui/assets/{github-copilot-BECMsi8_.js → github-copilot-CYUjFE56.js} +1 -1
- package/dist/ui/assets/{github-copilot-Hlw3Z0TU.js → github-copilot-DzY0_cZO.js} +1 -1
- package/dist/ui/assets/{go-driver-Bl_pd-vs.js → go-driver-kLCdKKCl.js} +1 -1
- package/dist/ui/assets/{hear-B0sL5R-Z.js → hear-BbTDqjkN.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-lw4jlVws.js → js-realm-worker-CCSqHLiq.js} +2 -2
- package/dist/ui/assets/{jsh-executor-DZkflzRL.js → jsh-executor-CKGuA572.js} +2 -2
- package/dist/ui/assets/{kernel-worker-yDR9ykP9.js → kernel-worker-DAOlZAnY.js} +8 -8
- package/dist/ui/assets/{lick-ws-bridge-awVQ4bod.js → lick-ws-bridge-DNmnSlAZ.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-D_7Sju9n.js → lick-ws-bridge-DpLDuGHA.js} +1 -1
- package/dist/ui/assets/{live-session-curation-XtShh6w8.js → live-session-curation-CZkIr6Zu.js} +1 -1
- package/dist/ui/assets/{live-session-curation-KCnMJq1h.js → live-session-curation-Das-8xnF.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-Cl5CEBKO.js → live-session-snapshot-D8lEUK7J.js} +1 -1
- package/dist/ui/assets/{local-llm-BuO74RMi.js → local-llm-BblvgE13.js} +1 -1
- package/dist/ui/assets/{local-llm-gJaQCXGv.js → local-llm-PTZ0UPXw.js} +1 -1
- package/dist/ui/assets/{main-CvCAlghs.js → main-BfPkUEOn.js} +3 -3
- package/dist/ui/assets/{main-cherry-C829SF3P.js → main-cherry-Wxt6L3-r.js} +1 -1
- package/dist/ui/assets/{mcp-command-DMHz7PmL.js → mcp-command-PQ40GO9Q.js} +9 -9
- package/dist/ui/assets/{memory-curation-seam-epGReJuG.js → memory-curation-seam-ZfZvKgO0.js} +1 -1
- package/dist/ui/assets/{memory-health-BYR_Y-0X.js → memory-health-DeU8Hnvy.js} +1 -1
- package/dist/ui/assets/{memory-write-execute-DT_htd19.js → memory-write-execute--18W6rIW.js} +1 -1
- package/dist/ui/assets/{merge-folded-cost-into-frozen-DimTAP8-.js → merge-folded-cost-into-frozen-C5WK2ebU.js} +1 -1
- package/dist/ui/assets/{new-session-D3NIubwl.js → new-session-Bu1vMo6m.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-dt8ZYlvi.js → oauth-bootstrap-BXI2tTwP.js} +2 -2
- package/dist/ui/assets/{onboarding-orchestrator-DB4uV5QM.js → onboarding-orchestrator-qYm2EcAa.js} +1 -1
- package/dist/ui/assets/{openai-codex-Cl-z58Kf.js → openai-codex-BRVnsck1.js} +1 -1
- package/dist/ui/assets/{openai-codex-CR-4SKAR.js → openai-codex-DoTDnY8l.js} +1 -1
- package/dist/ui/assets/{openrouter-D79_Vd4c.js → openrouter-CU8FE73y.js} +1 -1
- package/dist/ui/assets/{openrouter-BNdMnkix.js → openrouter-DH09mvh8.js} +1 -1
- package/dist/ui/assets/{openrouter-free-CQa1CoO4.js → openrouter-free-CjLo7d0B.js} +1 -1
- package/dist/ui/assets/{openrouter-free-C1-Bj_Xx.js → openrouter-free-D_agjxS6.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-DOazjMTa.js → openrouter-oauth-DUMp8wVc.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-D_I7eEtl.js → openrouter-oauth-Dol2vy8U.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-BzU1tjGq.js → panel-rpc-handlers-X7STMHDZ.js} +2 -2
- package/dist/ui/assets/{panelize-shell-B0pTufSe.js → panelize-shell-CTy7L9dn.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-CvC4g6ge.js → pi-edit-execution-Cp7-4v_G.js} +1 -1
- package/dist/ui/assets/{process-worker-B_jMhtwi.js → process-worker-BEpsdjWG.js} +3 -3
- package/dist/ui/assets/{provider-BVtwgFuj.js → provider-5SIxaKAM.js} +1 -1
- package/dist/ui/assets/{provider-D5HnoEAQ.js → provider-BRMONplS.js} +1 -1
- package/dist/ui/assets/{provider-settings-Eedtvqyh.js → provider-settings-C_d-VmMI.js} +1 -1
- package/dist/ui/assets/provider-store-access-BxrLqbL-.js +1 -0
- package/dist/ui/assets/provider-store-access-CMvAMxdZ.js +1 -0
- package/dist/ui/assets/{providers-CR6zPkBA.js → providers-4px4FkTT.js} +2 -2
- package/dist/ui/assets/{providers-CxXqdsb8.js → providers-qFtC1ctt.js} +1 -1
- package/dist/ui/assets/{quick-llm-OcogX5yH.js → quick-llm-CS7I0EM1.js} +1 -1
- package/dist/ui/assets/{realm-inprocess-D4P5wFOE.js → realm-inprocess-CTrnIcCf.js} +2 -2
- package/dist/ui/assets/{realm-unhandled-rejections-BcTVMNp-.js → realm-unhandled-rejections-BcViM2bI.js} +1 -1
- package/dist/ui/assets/{realm-unhandled-rejections-CKtowxzG.js → realm-unhandled-rejections-COEEZ6Qq.js} +1 -1
- package/dist/ui/assets/{recovery-screen-BGirKYu_.js → recovery-screen-pbSIuH95.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-qc6RzQpT.js → remote-terminal-view-CVoVWZ5L.js} +2 -2
- package/dist/ui/assets/{restore-BRsw6f-s.js → restore-BGLSgFtU.js} +1 -1
- package/dist/ui/assets/{run-CjVzDP7D.js → run-CJkwGvdL.js} +2 -2
- package/dist/ui/assets/{run-Co30Tf9M.js → run-Ce53JaVM.js} +1 -1
- package/dist/ui/assets/{run-DW65sPip.js → run-CoyHWJnc.js} +1 -1
- package/dist/ui/assets/{run-BpasEHV5.js → run-D05bZRs7.js} +2 -2
- package/dist/ui/assets/{run-D4C2w6Ix.js → run-Dm4ILho2.js} +1 -1
- package/dist/ui/assets/{session-command-memory-XnFNRIFA.js → session-command-memory-B2ZvAv75.js} +2 -2
- package/dist/ui/assets/{session-jsonl-DO6bKeXA.js → session-jsonl-BWGPVYtm.js} +1 -1
- package/dist/ui/assets/{session-jsonl-CrcMW8fx.js → session-jsonl-BjUfDnwt.js} +1 -1
- package/dist/ui/assets/{session-search-index-CeQkxdD7.js → session-search-index-CL6tNMTB.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-BSbLoDdK.js → setup-feature-flags-remote-DRQOEp2l.js} +1 -1
- package/dist/ui/assets/{setup-model-catalog-DKaFLDA2.js → setup-model-catalog-BsYsset4.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-JpXc1wkl.js → silent-renew-backoff-BwjA995I.js} +1 -1
- package/dist/ui/assets/slicc-version-VBKLWgCV.js +1 -0
- package/dist/ui/assets/{soundscape-CD-xcN6Z.js → soundscape-BN6WrF-3.js} +1 -1
- package/dist/ui/assets/{speak-DgoChm2i.js → speak-NYtqNJE_.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-CDJc_08W.js → sprinkle-manager-vf160MeS.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-Dur1ZNnK.js → sprinkle-renderer-xgwRm1L_.js} +1 -1
- package/dist/ui/assets/{sudo-DO4cHGWe.js → sudo-4nzJfcYs.js} +1 -1
- package/dist/ui/assets/{supervisor-DsxjOzXp.js → supervisor-VGZUDK1b.js} +1 -1
- package/dist/ui/assets/{sync-dialog-Ca6pboEO.js → sync-dialog-DSMgqf4e.js} +1 -1
- package/dist/ui/assets/{transformers-env-lnsOWAhF.js → transformers-env-WpdAi-iZ.js} +1 -1
- package/dist/ui/assets/{tray-leader-IzNrTl6C.js → tray-leader-Fwsq8jgB.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-C1DwCeQz.js → tray-leave-runtime-CO-5OLYh.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-DyqniZfp.js → tray-sidecar-6AQW4IED.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-GSR1EuFa.js → upgrade-detection-qeeIUkGI.js} +1 -1
- package/dist/ui/assets/{voice-reply-BaAuLq60.js → voice-reply-zEE1QNSL.js} +1 -1
- package/dist/ui/assets/{wasi-runtime-BBxEcrtW.js → wasi-runtime-CAjhlQs6.js} +1 -1
- package/dist/ui/assets/{wc-attach-sJ3NMqHQ.js → wc-attach-DNWpvdXi.js} +2 -2
- package/dist/ui/assets/{wc-browser-u5uzxk-d.js → wc-browser-ClKGIaQ7.js} +1 -1
- package/dist/ui/assets/{wc-computers-BX1yCXPi.js → wc-computers-C0KbAS_B.js} +1 -1
- package/dist/ui/assets/{wc-detached-U-XIb2f6.js → wc-detached-Cat9npj6.js} +1 -1
- package/dist/ui/assets/{wc-extension-BgC75srq.js → wc-extension-C9b9Kr17.js} +2 -2
- package/dist/ui/assets/{wc-follower-C6KuLED-.js → wc-follower-ByQ459Ju.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-DsNONUfK.js → wc-follower-oauth-CIG1Y8xe.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-C1LMmmP-.js → wc-gelatiere-CgcmOl-z.js} +1 -1
- package/dist/ui/assets/{wc-live-BvTlZWIq.js → wc-live-DU_tPZwB.js} +5 -5
- package/dist/ui/assets/{wc-nav-DAZqGqhf.js → wc-nav-ZVKwKdQi.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-Cf7ATuAZ.js → wc-onboarding-Dz26nM1q.js} +2 -2
- package/dist/ui/assets/{wc-permissions-BfNzwBXu.js → wc-permissions-BztxeBpv.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-73ZpUgXT.js → wc-placeholder-6j__HLJV.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-BztOdnag.js → wc-secret-request-Dise-yBJ.js} +1 -1
- package/dist/ui/assets/{wc-settings-ClXzlz1S.js → wc-settings-DB1l5qip.js} +3 -3
- package/dist/ui/assets/{wc-shell-BBeNiS8R.js → wc-shell-xh75VEiE.js} +3 -3
- package/dist/ui/assets/{wc-shortcut-config-DNDBw_BA.js → wc-shortcut-config-Cg6dfcMA.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-ClXMSwxA.js → wc-sprinkles-3tAqIJ4S.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-APmcHVyY.js → wc-transcript-export-CxVHtvhC.js} +2 -2
- package/dist/ui/assets/{wc-tray-B9Wksuuv.js → wc-tray-BO7Dceka.js} +4 -4
- package/dist/ui/assets/welcome-detection-RBbaP7o4.js +1 -0
- package/dist/ui/assets/{whisper-session-Bd6DyWgL.js → whisper-session-DmUd1lKW.js} +2 -2
- package/dist/ui/assets/{xai-grok-ummZtHNw.js → xai-grok-Ch8-vKVa.js} +1 -1
- package/dist/ui/assets/{xai-grok-CKLvBVjv.js → xai-grok-DfZkFyCS.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/ui/packages/webapp/index.html +3 -3
- package/package.json +1 -1
- package/dist/ui/assets/provider-store-access-Cb_QGFws.js +0 -1
- package/dist/ui/assets/provider-store-access-DpnMfiJL.js +0 -1
- package/dist/ui/assets/slicc-version-BfDpFkW3.js +0 -1
- package/dist/ui/assets/welcome-detection-CjuV_cig.js +0 -1
|
@@ -8,7 +8,7 @@ import{t as e}from"./logger-LESFN7Hj.js";import{i as t,n,r,t as i}from"./proxied
|
|
|
8
8
|
`),this.stop.signal);try{await i(e,t,r,this.stop.signal,(t,n,r)=>this.requests({sink:n,incoming:new be(t),origin:r,socket:e}))}catch(e){e instanceof g||Me.warn(`tunnel failed`,{host:r.host,error:String(e)})}}};function tt(){return{buffered:n(),streaming:r()}}function nt(e){let t={};for(let[n,r]of e){let e=n.toLowerCase(),i=t[e];t[e]=i===void 0?r:`${i}${e===`cookie`?`; `:`, `}${r}`}return t}function rt(e){return e.startsWith(`x-proxy-`)||e.startsWith(`access-control-`)}function it(e){let t=[];for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();if(!rt(e)){if(e===`set-cookie`)for(let e of at(r))t.push([n,e]);else t.push([n,r])}}return t}function at(e){if(e.startsWith(`[`))try{let t=JSON.parse(e);if(Array.isArray(t)&&t.every(e=>typeof e==`string`))return t}catch{}return[e]}async function*ot(e){e.byteLength>0&&(yield e)}function st(e){if(typeof e!=`string`)return e;let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function ct(e=tt()){return{traits:{manualRedirects:!1,encodedBodies:!1,maxRequestBody:i},async fetch(t){let n=nt(t.headers);if(t.body&&t.body.byteLength>0){let r=await e.buffered(t.url,{method:t.method,headers:n,body:t.body,signal:t.signal});return{status:r.status,statusText:r.statusText,headers:it(r.headers),body:ot(st(r.body)),cancel:async()=>void 0}}let r=await e.streaming(t.url,{method:t.method,headers:n,signal:t.signal});return{status:r.status,statusText:r.statusText,headers:it(r.headers),body:r.body,cancel:()=>r.cancel()}}}}function lt(e){if(!e)return{body:(async function*(){})(),cancel:async()=>void 0};let t=e.getReader(),n=!1;async function*r(){try{for(;;){let e=await t.read();if(e.done)break;yield e.value}n=!0}finally{n||await t.cancel().catch(()=>void 0)}}return{body:r(),cancel:async()=>{n||await t.cancel().catch(()=>void 0),n=!0}}}function ut(e,t){return{traits:{manualRedirects:!0,encodedBodies:!0,maxRequestBody:t.maxRequestBodyBytes},async fetch(t){let n=await e(t.url,{method:t.method,headers:t.headers.map(([e,t])=>[e,t]),...t.body&&t.body.byteLength>0?{body:t.body}:{},signal:t.signal});return{status:n.status,statusText:n.statusText,headers:n.headers,...lt(n.body)}}}}function dt(e={}){let n,i=()=>(n??=(e.fallback??(()=>ct()))(),n),o,s=Promise.resolve().then(()=>(e.capabilities??t)()).then(t=>t.supported?ut((e.raw??(()=>r({mode:`raw`})))(),t):i(),()=>i()).then(e=>(o??=e,o));return{get traits(){return(o??i()).traits},async fetch(e){let t=o??await s;if(t===n)return t.fetch(e);try{return await t.fetch(e)}catch(t){if(!(t instanceof a)||t.code!==`unsupported`)throw t;return o=i(),o.fetch(e)}}}}function ft(e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function pt(e){if(e<128)return Uint8Array.of(e);let t=[];for(let n=e;n>0;n=Math.floor(n/256))t.unshift(n&255);return Uint8Array.of(128|t.length,...t)}function T(e,...t){let n=ft(t);return ft([Uint8Array.of(e),pt(n.length),n])}const E=(...e)=>T(48,...e),mt=(...e)=>T(49,...e),D=e=>T(4,e),O=(e,t=0)=>T(3,Uint8Array.of(t),e),ht=T(1,Uint8Array.of(255));function k(e){let t=0;for(;t<e.length-1&&e[t]===0;)t++;let n=e.subarray(t);return T(2,n[0]&128?ft([Uint8Array.of(0),n]):n)}function A(e){let[t,n,...r]=e.split(`.`).map(Number),i=[40*t+n];for(let e of r){let t=[];for(let n=e;t.unshift(n&127),!(n<128);n=Math.floor(n/128));i.push(...t.map((e,n)=>n<t.length-1?e|128:e))}return T(6,Uint8Array.from(i))}const gt=e=>T(12,new TextEncoder().encode(e)),j=e=>Uint8Array.from(e,e=>e.charCodeAt(0)&127);function _t(e){let t=e.toISOString().replace(/[-:T]/g,``).slice(0,14);return e.getUTCFullYear()<2050?T(23,j(`${t.slice(2)}Z`)):T(24,j(`${t}Z`))}const vt=E(A(`1.2.840.10045.4.3.2`));function yt(e){let t=[];return e.organization&&t.push(mt(E(A(`2.5.4.10`),gt(e.organization)))),t.push(mt(E(A(`2.5.4.3`),gt(e.commonName)))),E(...t)}function M(e,t,n){return t?E(A(e),ht,D(n)):E(A(e),D(n))}function bt(e){let t=[],[,n,r]=xt(e,0);for(let i=n;i<r;){let[,,n]=xt(e,i);t.push(e.subarray(i,n)),i=n}return t}function xt(e,t){let n=e[t],r=e[t+1],i=t+2;if(r&128){let t=r&127;r=0;for(let n=0;n<t;n++)r=r*256+e[i+n];i+=t}if(i+r>e.length)throw Error(`truncated DER`);return[n,i,i+r]}function St(e){let[,t,n]=xt(e,0);return e.subarray(t,n)}function Ct(e){let t=bt(e)[1];return St(t).subarray(1)}async function wt(e){return new Uint8Array(await crypto.subtle.digest(`SHA-1`,Ct(e)))}function Tt(e){let t=e.length/2;return E(k(e.subarray(0,t)),k(e.subarray(t)))}function Et(){let e=crypto.getRandomValues(new Uint8Array(16));return e[0]=e[0]&127|1,e}function Dt(e){let t=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(e);if(!t)return;let n=t.slice(1).map(Number);return n.every(e=>e<=255)?Uint8Array.from(n):void 0}function Ot(e){if(!e.includes(`:`)||!/^[0-9A-Fa-f:.]+$/.test(e))return;let t=/(\d{1,3}(?:\.\d{1,3}){3})$/.exec(e),n=e,r=[];if(t){let i=Dt(t[1]);if(!i)return;r.push(i[0]<<8|i[1],i[2]<<8|i[3]),n=e.slice(0,-t[1].length).replace(/:$/,e.endsWith(`::${t[1]}`)?`:`:``)}let i=n.split(`::`);if(i.length>2)return;let a=e=>e===``?[]:e.split(`:`),o=a(i[0]),s=i.length===2?a(i[1]):[];if(![...o,...s].every(e=>/^[0-9A-Fa-f]{1,4}$/.test(e)))return;let c=8-[...o,...s].map(e=>Number.parseInt(e,16)).length-r.length;if(i.length===2?c<1:c!==0)return;let l=[...o.map(e=>Number.parseInt(e,16)),...Array(i.length===2?c:0).fill(0),...s.map(e=>Number.parseInt(e,16)),...r];return Uint8Array.from(l.flatMap(e=>[e>>8,e&255]))}async function kt(e){let t=[M(`2.5.29.14`,!1,D(await wt(e.spki)))];if(e.kind.ca)t.push(M(`2.5.29.19`,!0,E(ht,k(Uint8Array.of(0))))),t.push(M(`2.5.29.15`,!0,O(Uint8Array.of(134),1)));else{t.push(M(`2.5.29.35`,!1,E(T(128,await wt(e.issuerSpki))))),t.push(M(`2.5.29.19`,!0,E())),t.push(M(`2.5.29.15`,!0,O(Uint8Array.of(128),7))),t.push(M(`2.5.29.37`,!1,E(A(`1.3.6.1.5.5.7.3.1`))));let n=Dt(e.kind.host)??Ot(e.kind.host),r=n?T(135,n):T(130,j(e.kind.host));t.push(M(`2.5.29.17`,!1,E(r)))}return T(163,E(...t))}async function At(e){let t=E(T(160,k(Uint8Array.of(2))),k(e.serial),vt,yt(e.issuer),E(_t(e.notBefore),_t(e.notAfter)),yt(e.subject),e.spki,await kt(e)),n=Tt(await e.sign(t));return E(t,vt,O(n))}function jt(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return`-----BEGIN CERTIFICATE-----\n${(btoa(t).match(/.{1,64}/g)??[]).join(`
|
|
9
9
|
`)}\n-----END CERTIFICATE-----\n`}const Mt={name:`ECDSA`,namedCurve:`P-256`},Nt={name:`ECDSA`,hash:`SHA-256`};function Pt(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}function Ft(e=`slicc-realm-ca`){let t,n=()=>(t??=new Promise((t,n)=>{let r=indexedDB.open(e,1);r.onupgradeneeded=()=>r.result.createObjectStore(`ca`),r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)}),t.catch(()=>{t=void 0}),t);return{async get(e){return await Pt((await n()).transaction(`ca`).objectStore(`ca`).get(e))},async put(e,t){let r=(await n()).transaction(`ca`,`readwrite`);r.objectStore(`ca`).put(t,e),await new Promise((e,t)=>{r.oncomplete=()=>e(),r.onerror=()=>t(r.error)})}}}var It=class extends Error{};function Lt(e){return Ot(e)?!0:e.length===0||e.length>253?!1:e.split(`.`).every(e=>/^(?!-)[a-z0-9-]{1,63}(?<!-)$/i.test(e))}var Rt=class e{record;constructor(e){this.record=e}static async open(t,n,r=Date.now()){let i=await n.get(t).catch(()=>void 0);if(i&&i.notAfter-r>2592e6)return new e(i);let a=await e.create(t,r);return await n.put(t,a),new e(a)}static async create(e,t){let n=await crypto.subtle.generateKey(Mt,!1,[`sign`,`verify`]),r=new Uint8Array(await crypto.subtle.exportKey(`spki`,n.publicKey)),i={organization:`SLICC`,commonName:`SLICC realm CA ${e} ${Array.from(crypto.getRandomValues(new Uint8Array(4)),e=>e.toString(16).padStart(2,`0`)).join(``)}`},a=t+31536e7,o=await At({serial:Et(),issuer:i,subject:i,notBefore:new Date(t-864e5),notAfter:new Date(a),spki:r,issuerSpki:r,kind:{ca:!0},sign:zt(n.privateKey)});return{key:n.privateKey,cert:o,spki:r,notAfter:a,name:i}}get cert(){return this.record.cert}get pem(){return jt(this.record.cert)}async issue(e,t,n=Date.now()){let r=e.toLowerCase();if(!Lt(r))throw new It(`no certificate for ${e}`);return At({serial:Et(),issuer:this.record.name,subject:{commonName:r.length<=64?r:`SLICC realm leaf`},notBefore:new Date(n-36e5),notAfter:new Date(n+6048e5),spki:t,issuerSpki:this.record.spki,kind:{ca:!1,host:r},sign:zt(this.record.key)})}};function zt(e){return async t=>new Uint8Array(await crypto.subtle.sign(Nt,e,t))}let Bt;const N=new Map;function Vt(e,t){let n=N.get(e);return n||(Bt??=t?void 0:Ft(),n=Rt.open(e,t??Bt),N.set(e,n),n.catch(()=>{N.get(e)===n&&N.delete(e)})),n}const Ht=65536;var Ut=class extends Error{code;constructor(e,t){super(t),this.code=e}},Wt=class{m;scratch;constructor(e){if(this.m=e,this.scratch=e._malloc(Ht),!this.scratch)throw Error(`tls engine: out of memory`)}put(e){let t=this.m._malloc(e.length+1);if(!t)throw Error(`tls engine: out of memory`);return this.m.HEAPU8.set(e,t),this.m.HEAPU8[t+e.length]=0,t}taken(e){return this.m.HEAPU8.slice(this.scratch,this.scratch+e)}error(e,t){this.m._tls_strerror(e,this.scratch,256);let n=this.m.HEAPU8.indexOf(0,this.scratch);return new Ut(e,`${t}: ${new TextDecoder().decode(this.m.HEAPU8.subarray(this.scratch,n))||e}`)}leaf(){let e=this.m._tls_leaf_new();if(!e)throw this.error(this.m._tls_last_error(),`leaf key`);return new Gt(this,this.m,e)}session(e,t){let n=this.put(new TextEncoder().encode(t));try{let t=this.m._tls_session_new(e.ptr,n);if(!t)throw this.error(this.m._tls_last_error(),`tls session`);return new Kt(this,this.m,t)}finally{this.m._free(n)}}withBytes(e,t){let n=this.put(e);try{return t(n)}finally{this.m._free(n)}}intoScratch(e){let t=e(this.scratch,Ht);return t>0?this.taken(t):t}},Gt=class{engine;m;ptr;constructor(e,t,n){this.engine=e,this.m=t,this.ptr=n}spki(){let e=this.engine.intoScratch((e,t)=>this.m._tls_leaf_spki(this.ptr,e,t));if(typeof e==`number`)throw this.engine.error(e,`leaf public key`);return e}addCert(e){let t=this.engine.withBytes(e,t=>this.m._tls_leaf_add_cert(this.ptr,t,e.length));if(t!==0)throw this.engine.error(t,`leaf certificate`)}release(){this.m._tls_leaf_free(this.ptr)}},Kt=class{engine;m;ptr;constructor(e,t,n){this.engine=e,this.m=t,this.ptr=n}feed(e){return this.engine.withBytes(e,t=>this.m._tls_feed(this.ptr,t,e.length))}feedEnd(){this.m._tls_feed_eof(this.ptr)}read(){let e=this.engine.intoScratch((e,t)=>this.m._tls_read(this.ptr,e,t));if(e instanceof Uint8Array)return e;if(e===0)return`more`;if(e===-1)return`eof`;throw this.engine.error(e,`tls`)}write(e){let t=this.engine.withBytes(e,t=>this.m._tls_write(this.ptr,t,e.length));if(t<0)throw this.engine.error(t,`tls`);return t}take(){if(this.m._tls_out_size(this.ptr)===0)return new Uint8Array;let e=this.engine.intoScratch((e,t)=>this.m._tls_out_take(this.ptr,e,t));return e instanceof Uint8Array?e:new Uint8Array}close(){this.m._tls_close(this.ptr)}get version(){return this.m._tls_version(this.ptr)}get handshakeDone(){return this.m._tls_handshake_done(this.ptr)!==0}free(){this.m._tls_session_free(this.ptr)}};let P;function qt(e=async()=>(await import(`./slicc-tls-engine-DfyKw1Ua.js`)).default()){return P??=e().then(e=>new Wt(e)),P.catch(()=>{P=void 0}),P}const Jt=e(`realm-tls`);var Yt=class{session;cipherIn;cipherOut;pending=new Uint8Array;ended=!1;constructor(e,t,n){this.session=e,this.cipherIn=t,this.cipherOut=n}async flush(e){for(let t=this.session.take();t.length>0;t=this.session.take())await this.cipherOut.write(t,e)}feedPending(){if(this.pending.length===0)return;let e=this.session.feed(this.pending);this.pending=this.pending.subarray(e)}async read(e,t){for(;;){this.feedPending();let e=this.session.read();if(await this.flush(t),e instanceof Uint8Array)return e;if(e===`eof`)return new Uint8Array;if(this.pending.length>0)continue;if(this.ended){this.session.feedEnd();let e=this.session.read();return await this.flush(t),e instanceof Uint8Array?e:new Uint8Array}let n=await this.cipherIn.read(65536,t);n.length===0?this.ended=!0:this.pending=n}}async write(e,t){for(let n=0;n<e.length;){let r=this.session.write(e.subarray(n,n+16384));await this.flush(t),n+=r}return e.length}async close(e){this.session.close(),await this.flush(e)}},Xt=class{options;leaves=new Map;now;constructor(e){this.options=e,this.now=e.now??Date.now}leafFor(e,t){let n=this.now(),r=this.leaves.get(t);if(r&&r.expires>n)return this.leaves.delete(t),this.leaves.set(t,r),r.leaf;r&&this.drop(t,r);let i=this.issue(e,t,n),a={leaf:i,expires:n+5184e5};this.leaves.set(t,a),i.catch(()=>{this.leaves.get(t)===a&&this.leaves.delete(t)});for(let[e,t]of this.leaves){if(this.leaves.size<=256)break;this.drop(e,t)}return i}async drop(e,t){this.leaves.get(e)===t&&this.leaves.delete(e),(await t.leaf.catch(()=>void 0))?.release()}async issue(e,t,n){let r=await this.options.ca(),i=e.leaf();try{return i.addCert(await r.issue(t,i.spki(),n)),i.addCert(r.cert),i}catch(e){throw i.release(),e}}async close(){await Promise.all([...this.leaves].map(([e,t])=>this.drop(e,t)))}handler=async(e,t,n,r,i)=>{let a=await this.options.engine(),o=n.host.replace(/^\[|\]$/g,``),s=await this.leafFor(a,o),c=a.session(s,o);try{let a=new Yt(c,Qt(t),e),s=`https://${Zt(n)}`;try{await i(a,a,s),await a.close(r).catch(()=>void 0)}catch(e){throw Jt.debug(`tunnel ended`,{host:o,error:String(e)}),e}}finally{c.free()}}};function Zt(e){return e.port===443?e.host:`${e.host}:${e.port}`}function Qt(e){return{read:(t,n)=>e.some(t,n)}}const F=`http://127.0.0.1:${Ne}`,$t=`localhost,.localhost,127.0.0.1,127.0.0.0/8`;function en(){return{http_proxy:F,https_proxy:F,HTTP_PROXY:F,HTTPS_PROXY:F,no_proxy:$t,NO_PROXY:$t}}function tn(e){if(e)return`ca`in e?new Xt(e):new Xt({ca:()=>Vt(e.owner),engine:()=>qt()})}const nn=new WeakMap,rn=`/.config/slicc/realm-ca-`;function an(e){return e.replace(/[^A-Za-z0-9_-]+/g,`-`).replace(/-+$/,``)}function on(e,t){return`${e.replace(/\/+$/,``)}${rn}${an(t)}.pem`}function sn(e){return{SSL_CERT_FILE:e,CURL_CA_BUNDLE:e,GIT_SSL_CAINFO:e}}const cn=`/.config/slicc/gitconfig`;function ln(e){return`${e.replace(/\/+$/,``)}${cn}`}function un(e){return`"${e.replace(/[\r\n]+/g,` `).replace(/[\\"]/g,e=>`\\${e}`)}"`}function dn(e){let t=[`[credential]`,` helper = slicc`];return e&&t.push(`[user]`,`\tname = ${un(e.name)}`,`\temail = ${un(e.email)}`),`${t.join(`
|
|
10
10
|
`)}\n`}async function fn(e,t,n){try{let r=dn(n);return(await e.exists(t)?await e.readFile(t):void 0)!==r&&(await e.mkdir(t.slice(0,t.lastIndexOf(`/`)),{recursive:!0}),await e.writeFile(t,r)),{GIT_CONFIG_SYSTEM:t}}catch{return{}}}function pn(e,t){let n=en();return e in n?n[e]===t:e===`GIT_CONFIG_SYSTEM`?t.endsWith(cn):e in sn(``)&&t.includes(rn)}async function mn(e,t,n,r=Vt){try{let{pem:i}=await r(n);return(await e.exists(t)?await e.readFile(t):void 0)!==i&&(await e.mkdir(t.slice(0,t.lastIndexOf(`/`)),{recursive:!0}),await e.writeFile(t,i)),sn(t)}catch{return{}}}function hn(e,t={}){if(nn.has(e))return;let n={proxy:void 0};nn.set(e,n);let r;e.activate({family:`inet`,host:`127.0.0.1`,port:Ne},()=>{r??=(t.transport??dt)();let i=tn(t.tls),a=new et({net:e,transport:r,tunnel:i?.handler,...t.proxy});n.proxy=a,gn(a,t.process).then(async()=>{n.proxy===a&&(n.proxy=void 0),await i?.close()})})}async function gn(e,t){if(!t){await e.closed;return}let n=t.processManager,r=n.spawn({kind:`net`,argv:[`http-proxy`,`127.0.0.1:${e.port}`],cwd:`/`,owner:t.owner}),i=()=>e.close();r.abort.signal.addEventListener(`abort`,i,{once:!0}),await e.closed,r.abort.signal.removeEventListener(`abort`,i),n.exit(r.pid,r.abort.signal.aborted?null:0)}const _n=32768;function vn(e){return/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e)}async function I(e){try{return await e()}catch(e){throw e instanceof te?new g(e.code):e}}var yn=class{waiters=[];wait(e){return e?.aborted?Promise.reject(new g(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new g(`EINTR`))},i=()=>{e?.removeEventListener(`abort`,r),t()};this.waiters.push(i),e?.addEventListener(`abort`,r,{once:!0})})}wake(){let e=this.waiters;this.waiters=[];for(let t of e)t()}};function bn(e,t){let n=new d,r=new d;for(let e of[n,r])e.openRead(),e.openWrite();e.attach({rx:r,tx:n}),t.attach({rx:n,tx:r})}var L=class e{net;domain;state=`open`;local;peer;link;readShut=!1;writeShut=!1;queue=[];backlog=0;bound=!1;changes=new yn;options=new Map;constructor(e,t){this.net=e,this.domain=t}attach(e){this.link=e,this.state=`connected`,this.changes.wake()}get listening(){return this.state===`listening`}connection(){if(!this.link||this.state!==`connected`)throw new g(`ENOTCONN`);return this.link}async read(e,t){let{rx:n}=this.connection();return this.readShut||e<=0?new Uint8Array:I(()=>n.read(e,t))}async peek(e,t){let{rx:n}=this.connection();return this.readShut||e<=0?new Uint8Array:I(()=>n.peek(e,t))}async write(e,t){let{tx:n}=this.connection();if(this.writeShut)throw new g(`EPIPE`);return I(()=>n.write(e,t))}poll(){if(this.state===`listening`)return{readable:this.queue.length>0,writable:!1,hangup:!1};if(this.state!==`connected`||!this.link)return{readable:!1,writable:!1,hangup:!0};let{rx:e,tx:t}=this.link;return{readable:this.readShut||e.readReady,writable:this.writeShut||t.writeReady,hangup:e.writersGone&&t.readersGone}}changed(e){let t=this.changes.wait(e);if(this.state!==`connected`||!this.link)return t;let n=[t,this.link.rx.changed(e),this.link.tx.changed(e)];for(let e of n)e.catch(()=>void 0);return I(()=>Promise.race(n))}bind(e){if(this.state!==`open`||this.local)throw new g(`EINVAL`);if(e.family!==this.domain)throw new g(`EAFNOSUPPORT`);this.local=this.net.bind(this,e),this.bound=!0}listen(e){if(this.state===`connected`)throw new g(`EISCONN`);if(this.state!==`open`&&this.state!==`listening`)throw new g(`EINVAL`);if(!this.local){if(this.domain===`unix`)throw new g(`EINVAL`);this.bind({family:`inet`,host:`0.0.0.0`,port:0})}this.backlog=Math.min(Math.max(e,1),4096),this.state=`listening`}async accept(e,t=!1){for(;;){if(this.state!==`listening`)throw new g(`EINVAL`);let n=this.queue.shift();if(n)return n;if(t)throw new g(`EAGAIN`);await this.changes.wait(e)}}offer(e){return this.state!==`listening`||this.queue.length>=this.backlog?!1:(this.queue.push(e),this.changes.wake(),!0)}connect(t){if(this.state===`connected`)throw new g(`EISCONN`);if(this.state!==`open`)throw new g(`EINVAL`);if(t.family!==this.domain)throw new g(`EAFNOSUPPORT`);let n=this.net.target(t);this.local||(t.family===`inet`?(this.local=this.net.bind(this,{family:`inet`,host:`127.0.0.1`,port:0}),this.bound=!0):this.local={family:`unix`,path:``});let r=new e(this.net,this.domain);if(r.local=t.family===`inet`?{...t,host:xn(t.host)}:t,r.peer=this.local,this.peer=r.local,bn(this,r),!n.offer(r))throw this.unlink(),r.close(),new g(`ECONNREFUSED`)}unlink(){let e=this.link;e&&(e.rx.closeRead(),e.tx.closeWrite()),this.link=void 0,this.peer=void 0,this.state=`open`}shutdown(e){let{rx:t,tx:n}=this.connection();if(e!==0&&e!==1&&e!==2)throw new g(`EINVAL`);e!==1&&!this.readShut&&(this.readShut=!0,t.closeRead()),e!==0&&!this.writeShut&&(this.writeShut=!0,n.closeWrite()),this.changes.wake()}getOption(e,t){if(e===1)switch(t){case 3:return 1;case 4:return 0;case 30:return+(this.state===`listening`);case 39:return this.domain===`inet`?2:1;case 7:case 8:return this.options.get(`${e}:${t}`)??65536}return this.options.get(`${e}:${t}`)??0}setOption(e,t,n){this.options.set(`${e}:${t}`,n)}close(){let e=this.state;if(this.state=`closed`,e===`listening`)for(let e of this.queue.splice(0))e.close();this.link&&(this.readShut||this.link.rx.closeRead(),this.writeShut||this.link.tx.closeWrite(),this.readShut=!0,this.writeShut=!0),this.bound&&this.local&&this.net.release(this.local,this),this.bound=!1,this.changes.wake()}static pair(t,n){let r=new e(t,n),i=new e(t,n);return r.local=i.local=r.peer=i.peer=n===`inet`?{family:`inet`,host:`127.0.0.1`,port:0}:{family:`unix`,path:``},bn(r,i),[r,i]}};function xn(e){return e===`0.0.0.0`?`127.0.0.1`:e}function R(e){return e.family===`inet`?`inet:${e.port}`:`unix:${e.path}`}var Sn=class{bound=new Map;activators=new Map;nextEphemeral=_n;activate(e,t){this.activators.set(R(e),t)}socket(e){return new L(this,e)}listen(e,t=128){let n=this.socket(e.family);return n.bind(e),n.listen(t),n}connect(e){let t=this.socket(e.family);return t.connect(e),t}bind(e,t){if(t.family===`unix`){if(t.path===``)throw new g(`EINVAL`)}else if(t.host!==`0.0.0.0`&&!vn(t.host))throw new g(`EADDRNOTAVAIL`);let n=t.family===`inet`&&t.port===0?{...t,port:this.ephemeral()}:t,r=R(n);if(this.bound.has(r))throw new g(`EADDRINUSE`);return this.bound.set(r,e),n}release(e,t){let n=R(e);this.bound.get(n)===t&&this.bound.delete(n)}target(e){if(e.family===`inet`&&!vn(xn(e.host)))throw new g(`ENETUNREACH`);let t=R(e);this.bound.has(t)||this.activators.get(t)?.();let n=this.bound.get(t);if(!n?.listening)throw new g(`ECONNREFUSED`);return n}ephemeral(){for(let e=0;e<28232;e++){let e=this.nextEphemeral;if(this.nextEphemeral=e===60999?_n:e+1,!this.bound.has(`inet:${e}`))return e}throw new g(`EADDRINUSE`)}};const Cn=new Map;function wn(e){let t=Cn.get(e);return t||(t=new Sn,Cn.set(e,t)),t}function Tn(e){return e?`${e.kind}:${e.scoopJid??``}`:`local`}const z={HUP:1,INT:2,QUIT:3,ILL:4,TRAP:5,ABRT:6,BUS:7,FPE:8,KILL:9,USR1:10,SEGV:11,USR2:12,PIPE:13,ALRM:14,TERM:15,STKFLT:16,CHLD:17,CONT:18,STOP:19,TSTP:20,TTIN:21,TTOU:22,URG:23,XCPU:24,XFSZ:25,VTALRM:26,PROF:27,WINCH:28,POLL:29,PWR:30,SYS:31},En=new Set([z.CHLD,z.URG,z.WINCH]),Dn=new Set([z.STOP,z.TSTP,z.TTIN,z.TTOU]);function On(e){return e===z.CONT?`continue`:Dn.has(e)?`stop`:En.has(e)?`ignore`:`terminate`}function kn(e){return Number.isInteger(e)&&e>=1&&e<=31}function An(e){return 1<<e}const B={SIGINT:z.INT,SIGTERM:z.TERM,SIGKILL:z.KILL,SIGSTOP:z.STOP,SIGCONT:z.CONT},jn=16384;function Mn(){let e=Array(32).fill(0);return Object.assign(e,{0:3,1:28,2:127,3:21}),Object.assign(e,{4:4,6:1,8:17,9:19,10:26}),Object.assign(e,{12:18,13:15,14:23,15:22}),{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:e}}const Nn=new TextEncoder;function Pn(e){return(e&192)==128}var Fn=class{screen;signal;termios=Mn();cols=80;rows=24;readable=[];line=[];waiters=[];hungUp=!1;name;constructor(e,t){this.screen=e,this.signal=t}receive(e){for(let t of e)this.key(t);this.wake()}resize(e,t){this.setSize(e,t),this.signal(z.WINCH)}hangup(){this.hungUp=!0,this.wake()}signalHangup(){this.signal(z.HUP)}setSize(e,t){this.cols=e,this.rows=t}tcgets(){return{...this.termios,c_cc:[...this.termios.c_cc]}}tcsets(e){let t=this.canonical;this.termios={...e,c_cc:[...e.c_cc]},t&&!this.canonical&&this.line.length>0&&(this.readable.push(Uint8Array.from(this.line)),this.line=[],this.wake())}winsize(){return[this.rows,this.cols]}file(){return new v({read:(e,t)=>this.read(e,t),write:async e=>{if(this.hungUp)throw new g(`EIO`);return this.output(e),e.length},poll:()=>({readable:this.readable.length>0||this.hungUp,writable:!0,hangup:this.hungUp}),changed:e=>this.changed(e),close:()=>{},tty:this})}get canonical(){return!!(this.termios.c_lflag&2)}cc(e){return this.termios.c_cc[e]??0}key(e){let{c_iflag:t,c_lflag:n}=this.termios,r=e===13&&t&256?10:e;if(!(n&1&&this.signalKey(r))){if(!this.canonical){this.readable.push(Uint8Array.of(r)),n&8&&this.echo(r);return}this.edit(r)}}signalKey(e){let t=e===this.cc(0)?z.INT:e===this.cc(1)?z.QUIT:e===this.cc(10)?z.TSTP:0;return!t||e===0?!1:(this.termios.c_lflag&8&&this.echo(e),this.termios.c_lflag&128||(this.line=[],this.readable=[]),this.signal(t),!0)}edit(e){let t=!!(this.termios.c_lflag&8);e===this.cc(2)||e===8?this.rubOut(this.lastCharLength()):e===this.cc(3)?this.rubOut(this.line.length):e===this.cc(14)?this.rubOut(this.lastWordLength()):e===this.cc(4)?(this.readable.push(this.line.length>0?Uint8Array.from(this.line):null),this.line=[]):e===10?(this.line.push(e),t&&this.output(Nn.encode(`
|
|
11
|
-
`)),this.readable.push(Uint8Array.from(this.line)),this.line=[]):(this.line.push(e),t&&this.echo(e))}lastWordLength(){let e=this.line.length;for(;e>0&&this.line[e-1]===32;)e--;for(;e>0&&this.line[e-1]!==32;)e--;return this.line.length-e}lastCharLength(){let{line:e}=this,t=Math.min(1,e.length);if(this.termios.c_iflag&jn)for(;t<e.length&&Pn(e[e.length-t]??0);)t++;return t}rubOut(e){let t=this.line.splice(this.line.length-e,e),n=this.termios.c_iflag&jn?t.filter(e=>!Pn(e)).length:t.length;n>0&&this.termios.c_lflag&8&&this.output(Nn.encode(`\b \b`.repeat(n)),!1)}echo(e){if(e<32&&e!==10&&e!==9&&this.termios.c_lflag&512){this.output(Uint8Array.of(94,e+64),!1);return}this.output(Uint8Array.of(e))}output(e,t=!0){let{c_oflag:n}=this.termios;if(!t||!(n&1&&n&4)||!e.includes(10)){this.screen.write(e);return}let r=[];for(let t of e)t===10&&r.push(13),r.push(t);this.screen.write(Uint8Array.from(r))}async read(e,t){for(;this.readable.length===0;){if(this.hungUp)return new Uint8Array;await this.changed(t)}let n=this.readable[0];if(n===null)return this.readable.shift(),new Uint8Array;if(n===void 0)return new Uint8Array;let r=[],i=0;for(;this.readable.length>0&&i<e;){let t=this.readable[0];if(t==null)break;let n=t.subarray(0,e-i);if(r.push(n),i+=n.length,n.length<t.length?this.readable[0]=t.subarray(n.length):this.readable.shift(),this.canonical)break}let a=new Uint8Array(i),o=0;for(let e of r)a.set(e,o),o+=e.length;return a}changed(e){return e?.aborted?Promise.reject(new g(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new g(`EINTR`))},i=()=>{e?.removeEventListener(`abort`,r),t()};this.waiters.push(i),e?.addEventListener(`abort`,r,{once:!0})})}wake(){let e=this.waiters;this.waiters=[];for(let t of e)t()}},V=class extends Error{code;constructor(e){super(e),this.code=e}};function In(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new g(`EINTR`)),e?.aborted?t():e?.addEventListener(`abort`,t,{once:!0})}),done:()=>e?.removeEventListener(`abort`,t)}}function Ln(e){return(e&255)<<8|127}function Rn(e,t){return t?t&127:(e&255)<<8}function zn(e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}var Bn=class{parentFds;spawner;forker;children=new Map;leftovers=new Map;onChildState;stateChanged=[];watchers=new Map;constructor(e,t,n){this.parentFds=e,this.spawner=t,this.forker=n}async fork(e){if(!this.forker)throw new V(`ENOSYS`);return this.track(e,this.parentFds.fork(),new Map,this.forker)}async spawn(e,t,n=[]){if(!this.spawner)throw new V(`ENOSYS`);let r=new s,i=new Map;try{for(let[e,n]of t.entries())r.installAt(e,this.openSlot(n,e,i));for(let e of n)if(!(e.fd<=2)){if(`device`in e){r.installAt(e.fd,p(e.device,e.access));continue}r.installAt(e.fd,this.parentFds.get(e.kernel).retain()),e.flags!==void 0&&r.setStatusFlags(e.fd,e.flags)}}catch(e){throw await r.closeAll(),e}return this.track(e,r,i,this.spawner)}async track(e,t,n,r){let i;try{i=await r(e,t)}catch(e){throw await t.closeAll(),e}let a={exited:i.exited,termsig:i.termsig,captured:n};return i.exited.then(e=>{a.code=e,this.watchers.delete(i.pid),this.onChildState?.()}),i.onState?.((e,t)=>{a.stopReport=e===`stopped`?t:void 0,a.continueReport=e===`continued`,this.watchers.get(i.pid)?.(e,t);let n=this.stateChanged;this.stateChanged=[];for(let e of n)e();this.onChildState?.()}),this.children.set(i.pid,a),i.pid}watch(e,t){this.children.has(e)&&this.watchers.set(e,t)}openSlot(e,t,n){if(`fd`in e)return this.parentFds.get(e.fd).retain();if(`input`in e)return c(e.input);if(`capture`in e){let e=[];return n.set(t,e),f(t=>e.push(t))}return u()}async wait(e,t,n,r={}){let i;try{for(;;){let a=this.candidates(e,r);if(a.length===0)throw new g(`ECHILD`);let o=a.find(([,e])=>e.code!==void 0);if(o)return this.reap(o[0],o[1].code);let s=this.stateReport(a,r);if(s)return s;if(t)return[0,0];i??=In(n),await this.nextChange(a,r,i.promise)}}finally{i?.done()}}candidates(e,t){let n=[...this.children];if(e>0)return n.filter(([t])=>t===e);let r=t.inGroup;return e===-1||!r?n:n.filter(([e])=>r(e))}async nextChange(e,t,n){let r,i=new Promise(e=>r=e),a=t.untraced||t.continued;a&&r&&this.stateChanged.push(r);try{await Promise.race([...e.map(([,e])=>e.exited),...a?[i]:[],n])}finally{this.stateChanged=this.stateChanged.filter(e=>e!==r)}}stateReport(e,t){for(let[n,r]of e){if(t.untraced&&r.stopReport!==void 0){let e=r.stopReport;return r.stopReport=void 0,[n,Ln(e)]}if(t.continued&&r.continueReport)return r.continueReport=!1,[n,65535]}return null}reap(e,t){let n=this.children.get(e);return this.children.delete(e),n&&n.captured.size>0&&this.leftovers.set(e,n.captured),[e,Rn(t,n?.termsig?.())]}captured(e,t){let n=this.leftovers.get(e),r=n?.get(t);return!n||!r?new Uint8Array:(n.delete(t),n.size===0&&this.leftovers.delete(e),zn(r))}},Vn=class{index;onFree;slave;locked=!0;packet=!1;queue=[];waiters=[];masterOpen=!0;slaveRefs=0;slaveSeen=!1;constructor(e,t,n){this.index=e,this.onFree=n,this.slave=new Fn({write:e=>this.fromSlave(e)},e=>t(this.slave,e)),this.slave.name=`/dev/pts/${e}`}master(){return new v({read:(e,t)=>this.readMaster(e,t),write:async e=>(this.slave.receive(e),e.length),poll:()=>({readable:this.queue.length>0||this.slaveGone,writable:!0,hangup:this.slaveGone}),changed:e=>this.changed(e),close:()=>this.closeMaster(),pty:this})}openSlave(){if(!this.masterOpen||this.locked)throw new g(`EIO`);let e=this.slave.file().file;return this.slaveRefs+=1,this.slaveSeen=!0,new v({...e,close:()=>this.closeSlave()})}get slaveGone(){return this.slaveSeen&&this.slaveRefs===0}fromSlave(e){this.masterOpen&&(this.queue.push(e.slice()),this.wake())}async readMaster(e,t){for(;this.queue.length===0;){if(this.slaveGone)throw new g(`EIO`);await this.changed(t)}let n=+!!this.packet,r=[],i=0;for(;this.queue.length>0&&i<e-n;){let t=this.queue[0],a=t.subarray(0,e-n-i);r.push(a),i+=a.length,a.length<t.length?this.queue[0]=t.subarray(a.length):this.queue.shift()}let a=new Uint8Array(n+i),o=n;for(let e of r)a.set(e,o),o+=e.length;return a}closeMaster(){this.masterOpen=!1,this.queue=[],this.slave.hangup(),this.slave.signalHangup(),this.freeIfUnused()}closeSlave(){--this.slaveRefs,this.wake(),this.freeIfUnused()}freeIfUnused(){!this.masterOpen&&this.slaveRefs===0&&this.onFree(this)}changed(e){return e?.aborted?Promise.reject(new g(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new g(`EINTR`))},i=()=>{e?.removeEventListener(`abort`,r),t()};this.waiters.push(i),e?.addEventListener(`abort`,r,{once:!0})})}wake(){let e=this.waiters;this.waiters=[];for(let t of e)t()}},Hn=class{signal;pairs=new Map;constructor(e){this.signal=e}open(){let e=0;for(;this.pairs.has(e);)e+=1;let t=new Vn(e,this.signal,e=>this.pairs.delete(e.index));return this.pairs.set(e,t),{pair:t,master:t.master()}}get(e){let t=this.pairs.get(e);if(!t)throw new g(`ENOENT`);return t}numbers(){return[...this.pairs.keys()].sort((e,t)=>e-t)}};const Un=[`pty-open`,`pty-slave-open`,`pty-number`,`pty-lock`,`pty-ctty`,`pty-packet`,`pty-list`,`pty-winsz-set`];function H(e,t){let n=e.fds.get(t).file.pty;if(!n)throw new g(`ENOTTY`);return n}function Wn(e,t){let n=e.fds.get(t).file,r=n.tty??n.pty?.slave;if(!r)throw new g(`ENOTTY`);return r}const U=e=>({ok:!0,kind:`json`,json:e}),W={ok:!0,kind:`void`};function Gn(e,t){switch(e.op){case`pty-open`:if(!t.ptys)throw new g(`ENOENT`);return U(t.fds.install(t.ptys.open().master,3));case`pty-slave-open`:{if(!t.ptys)throw new g(`ENOENT`);let n=t.ptys.get(e.n),r=t.fds.install(n.openSlave(),3);return e.noctty||t.jobs?.acquireTerminal(t.pid,n.slave),U(r)}case`pty-number`:return U(H(t,e.fd).index);case`pty-lock`:return H(t,e.fd).locked=e.lock,W;case`pty-ctty`:{let n=Wn(t,e.fd);if(t.jobs?.getsid(t.pid,0)===t.pid&&t.jobs?.controllingTerminal(t.pid)===n)return W;if(!t.jobs?.acquireTerminal(t.pid,n))throw new g(`EPERM`);return W}case`pty-list`:return U(t.ptys?.numbers()??[]);case`pty-packet`:return H(t,e.fd).packet=e.on,W;case`pty-winsz-set`:return Wn(t,e.fd).resize(e.cols,e.rows),W}}function Kn(e,t,n){let r=new Set,i=(t,n)=>t.filter(t=>{let i=m(e.get(t).file);return i.hangup&&r.add(t),i[n]||i.hangup}),a={read:i(t,`readable`),write:i(n,`writable`)};return r.size>0&&(a.hangup=[...r]),a}function qn(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new g(`EINTR`)),e.aborted?t():e.addEventListener(`abort`,t,{once:!0})}),done:()=>e.removeEventListener(`abort`,t)}}async function Jn(e,t,n,r,i){let a=r<0?1/0:Date.now()+r,o=qn(i);o.promise.catch(()=>{});try{return await Yn(e,t,n,a,o.promise)}finally{o.done()}}async function Yn(e,t,n,r,i){for(;;){let a=Kn(e,t,n);if(a.read.length>0||a.write.length>0||Date.now()>=r)return a;let o=new AbortController,s=[...new Set([...t,...n])].flatMap(t=>{let n=e.get(t).file;return n.changed===void 0?[]:[n.changed(o.signal).catch(()=>void 0)]}),c,l=r===1/0?[]:[new Promise(e=>c=setTimeout(e,r-Date.now()))];try{await Promise.race([...s,...l,i])}finally{o.abort(),clearTimeout(c)}}}const Xn=[`sock-open`,`sock-pair`,`sock-bind`,`sock-listen`,`sock-accept`,`sock-connect`,`sock-shutdown`,`sock-name`,`sock-getopt`,`sock-setopt`];function G(e,t){let n=e.get(t).file;if(!(n instanceof L))throw new g(`ENOTSOCK`);return n}const K=e=>e===void 0?{ok:!0,kind:`void`}:{ok:!0,kind:`json`,json:e};async function Zn(e,t){let{fds:n,net:r}=t;switch(e.op){case`sock-open`:return K(n.install(new v(r.socket(e.domain)),3));case`sock-pair`:{let[t,i]=L.pair(r,e.domain),a=n.install(new v(t),3);try{return K([a,n.install(new v(i),3)])}catch(e){throw await Promise.resolve(n.close(a)),e}}case`sock-bind`:return G(n,e.fd).bind(e.addr),K();case`sock-listen`:return G(n,e.fd).listen(e.backlog),K();case`sock-accept`:return K(await $n(t,e.fd,e.nonblock));case`sock-connect`:if(G(n,e.fd).connect(e.addr),e.nonblock)throw new g(`EINPROGRESS`);return K();case`sock-shutdown`:return G(n,e.fd).shutdown(e.how),K();case`sock-name`:{let t=G(n,e.fd),r=e.peer?t.peer:t.local;if(e.peer&&!r)throw new g(`ENOTCONN`);return K(r??Qn(t.domain))}case`sock-getopt`:return K(G(n,e.fd).getOption(e.level,e.name));case`sock-setopt`:return G(n,e.fd).setOption(e.level,e.name,e.value),K()}}function Qn(e){return e===`inet`?{family:`inet`,host:`0.0.0.0`,port:0}:{family:`unix`,path:``}}async function $n(e,t,n){let r=G(e.fds,t),i=!n&&!m(r).readable,a=await r.accept(i?e.blocking():void 0,n);return{fd:e.fds.install(new v(a),3),peer:a.peer}}function er(e){return e?.code===`ENOENT`||e instanceof Error&&e.message.startsWith(`ENOENT`)}function q(e,t){return e===t||e.startsWith(t.endsWith(`/`)?t:`${t}/`)}var J=class{fs;path;orphaned;data;length=0;dirty=!1;queue=Promise.resolve();writeBack;writeBackCost=0;opens=0;missing=!1;constructor(e,t,n,r=!1,i=!1){this.fs=e,this.path=t,this.orphaned=r,n===void 0?r&&(this.data=new Uint8Array):this.data=new Uint8Array(n),this.length=this.data?.length??0,i&&n!==void 0&&this.markDirty()}serial(e){let t=this.queue.then(e);return this.queue=t.catch(()=>void 0),t}async load(){if(!this.data){try{this.data=await ue(this.fs,this.path)}catch(e){if(!er(e))throw e;this.data=new Uint8Array,this.missing=!0}this.length=this.data.length}return this.data}replace(e){this.data=new Uint8Array(e),this.length=this.data.length,this.missing=!1,this.markDirty()}async materialize(){await this.load(),!(!this.missing||this.orphaned)&&(this.missing=!1,await this.fs.writeFile(this.path,this.data?.slice(0,this.length)??new Uint8Array))}async size(){return await this.load(),this.length}async pread(e,t){let n=await this.load(),r=Math.max(0,Math.min(e,this.length-t));return n.slice(t,t+r)}async pwrite(e,t){await this.load();let n=this.ensure(t+e.length);return t>this.length&&n.fill(0,this.length,t),n.set(e,t),this.length=Math.max(this.length,t+e.length),this.markDirty(),e.length}async truncate(e){await this.load();let t=this.ensure(e);e>this.length&&t.fill(0,this.length,e),this.length=e,this.markDirty()}markDirty(){if(this.dirty=!0,this.writeBack!==void 0||this.orphaned)return;let e=Math.max(250,this.writeBackCost*10);this.writeBack=setTimeout(()=>{this.writeBack=void 0,this.serial(()=>this.flush()).catch(()=>void 0)},e)}ensure(e){let t=this.data??new Uint8Array;if(t.length>=e)return t;let n=new Uint8Array(Math.max(e,t.length*2,256));return n.set(t.subarray(0,this.length)),this.data=n,n}async flush(){if(!this.dirty||!this.data||this.orphaned)return;this.dirty=!1;let e=performance.now();try{await this.fs.writeFile(this.path,this.data.slice(0,this.length))}catch(e){throw this.dirty=!0,e}this.writeBackCost=performance.now()-e}},tr=class{fs;byPath=new Map;constructor(e){this.fs=e}open(e){let t=this.byPath.get(e);return t||(t=new J(this.fs,e),this.byPath.set(e,t)),t.opens++,t}adopt(e,t,n){let r=this.byPath.get(e);return r?n&&r.replace(t):(r=new J(this.fs,e,t,!1,n),this.byPath.set(e,r)),r.opens++,r}closed(e){e.opens--,e.opens===0&&this.byPath.get(e.path)===e&&this.byPath.delete(e.path)}async flush(e){for(let[t,n]of this.byPath)q(t,e)&&await n.serial(()=>n.flush())}async unlinking(e){let t=this.byPath.get(e);t&&await t.serial(()=>t.load())}unlinked(e){let t=this.byPath.get(e);t&&(t.orphaned=!0,this.byPath.delete(e))}renamed(e,t){if(e===t)return;let n=[];for(let[r,i]of this.byPath)q(r,e)?n.push(i):q(r,t)&&(i.orphaned=!0,this.byPath.delete(r));for(let r of n)this.byPath.delete(r.path),r.path=t+r.path.slice(e.length),this.byPath.set(r.path,r)}};function nr(e,t,n){let r=t.flags&3,i=r!==1,a=r===1||r===2,o=!n||t.orphan?new J(e,t.path,t.contents,t.orphan===!0,t.dirty===!0):t.contents===void 0?n.open(t.path):n.adopt(t.path,t.contents,t.dirty===!0),s,c=e=>{o.serial(e).catch(e=>{s??={err:e}})};t.create&&c(()=>o.materialize()),t.truncate&&c(()=>o.truncate(0));let l=()=>{if(!s)return;let{err:e}=s;throw s=void 0,e},u=t.position,d=e=>o.serial(()=>(l(),e()));return new v({read:i?e=>d(async()=>{let t=await o.pread(e,u);return u+=t.length,t}):void 0,write:a?e=>d(async()=>(t.flags&1024&&(u=await o.size()),u+=await o.pwrite(e,u),e.length)):void 0,seek:(e,t)=>d(async()=>{let n=0;if(t===1)n=u;else if(t===2)n=await o.size();else if(t!==0)throw new g(`EINVAL`);if(n+e<0)throw new g(`EINVAL`);return u=n+e,u}),pread:(e,t)=>d(()=>{if(!i)throw new g(`EBADF`);return o.pread(e,t)}),pwrite:(e,t)=>d(()=>{if(!a)throw new g(`EBADF`);return o.pwrite(e,t)}),resize:e=>d(()=>{if(!a)throw new g(`EBADF`);return o.truncate(e)}),stat:()=>d(async()=>({path:o.path,size:await o.size(),...o.orphaned?{orphan:!0}:{}})),flush:()=>d(()=>o.flush()),close:()=>o.serial(async()=>{try{l(),await o.flush()}finally{n?.closed(o)}})})}const rr=new Set([`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`]);function ir(e){return rr.has(e.op)}function ar(e){return e.op.startsWith(`pty-`)}function or(e){return e.op.startsWith(`sock-`)}function sr(e){return e.op.startsWith(`fd-path-`)||e.op===`fd-pread`||e.op===`fd-pwrite`||e.op===`fd-resize`||e.op===`fd-vfs-stat`}function cr(e){return e.op.startsWith(`fd-`)}function lr(e){return e.op.startsWith(`tty-`)}const ur=new Set([`fd-read`,`fd-write`,`fd-close`,`fd-pipe`,`fd-poll`,`fd-open-vfs`,`fd-seek`,`fd-pread`,`fd-pwrite`,`fd-resize`,`fd-vfs-stat`,`fd-path-flush`,`fd-path-unlinking`,`fd-path-unlinked`,`fd-path-renamed`,`fd-select`,`fd-info`,`fd-dup`,`fd-reserve`,`fd-meta`,`fd-setfl`,`fd-cloexec`,`fd-list`,`dl-log`,`proc-alarm`,`fd-renumber`,`fd-promote`,`fd-open-tty`,`tty-get`,`tty-set`,`tty-winsz`,`fd-flush`,`proc-spawn`,`proc-wait`,`proc-captured`,`proc-fork`,`proc-kill`,`proc-exec`,`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`,`tty-pgrp-get`,`tty-pgrp-set`,`sig-mask`,`sig-pause`,...Xn,...Un]);function dr(e){let t=e.op;return typeof t==`string`&&ur.has(t)}const fr=1048576;var pr=class{pid;fds;options;exited=!1;children;caught=0;ignored=0;interrupt=new AbortController;execChild;execTermsig;stopped=0;stops=0;resumed=Promise.resolve();wake=()=>{};stateListeners=[];net;nodes;constructor(e,t,n={}){this.pid=e,this.fds=t,this.options=n,this.children=new Bn(t,n.spawner,n.forker),this.nodes=n.fs?new tr(n.fs):void 0,this.children.onChildState=()=>this.signal(z.CHLD)}signal(e){if(this.execChild!==void 0)return Promise.resolve(this.options.kill?.(this.execChild,e)).catch(()=>void 0),e===z.KILL?`terminate`:`forward`;if(e===z.KILL)return`terminate`;if(e===z.CONT&&this.cont(),e===z.STOP)return this.stop(e);let t=An(e);if(this.ignored&t)return`ignore`;if(!(this.caught&t)){let t=On(e);return t===`stop`?this.stop(e):t}let n=On(e);if(((this.options.pendingBits?.()??0)&t)!==0&&n===`terminate`)return n;this.options.onPending?.(e);let r=this.interrupt;return this.interrupt=new AbortController,r.abort(),`deliver`}onState(e){this.stateListeners.push(e)}stop(e){if(this.stopped)return`stop`;this.stopped=e,this.stops++,this.resumed=new Promise(e=>this.wake=e);let t=this.interrupt;this.interrupt=new AbortController,t.abort();for(let t of this.stateListeners)t(`stopped`,e);return`stop`}cont(){if(this.stopped){this.stopped=0,this.wake();for(let e of this.stateListeners)e(`continued`,z.CONT)}}async syscall(e){for(;;){await this.resumed;let t=this.stops,n=await this.dispatch(e);if(!(!n.ok&&n.errno===`EINTR`&&this.stops!==t&&!this.options.hasPending?.()))return await this.resumed,n}}async dispatch(e){try{if(cr(e))return await this.fdSyscall(e);if(lr(e))return this.ttySyscall(e);if(ir(e))return this.jobSyscall(e);if(or(e))return await this.socketSyscall(e);if(ar(e)){let{ptys:t,jobs:n}=this.options;return Gn(e,{pid:this.pid,fds:this.fds,ptys:t,jobs:n})}return await this.procSyscall(e)}catch(e){if(e instanceof g||e instanceof V)return{ok:!1,errno:e.code,message:e.code};throw e}}blockingSignal(){if(this.options.hasPending?.())throw new g(`EINTR`);return this.interrupt.signal}async read(e){let t=this.fds.get(e.fd).file,n=e.peek?t.peek:t.read;if(!n)throw new g(e.peek&&t.read?`EOPNOTSUPP`:`EBADF`);if(t.tty&&this.checkForeground(t.tty),e.max<=0)return new Uint8Array;let r=m(t).readable;if(!r&&e.nonblock)throw new g(`EAGAIN`);let i=r?this.interrupt.signal:this.blockingSignal();return n.call(t,Math.max(0,Math.min(e.max,fr)),i)}async write(e,t,n=!1){let r=this.fds.get(e).file;if(!r.write)throw new g(`EBADF`);if(!m(r).writable){if(n)throw new g(`EAGAIN`);return r.write(t,this.blockingSignal())}return n?r.write(t,AbortSignal.abort()):r.write(t,this.options.hasPending?.()?AbortSignal.abort():this.interrupt.signal)}openVfsFile(e){if(!this.options.fs)throw new V(`ENOSYS`);return nr(this.options.fs,{path:e.path,flags:e.flags,position:e.position,...e.contents===void 0?{}:{contents:e.contents},...e.orphan?{orphan:!0}:{},...e.truncate?{truncate:!0}:{},...e.create?{create:!0}:{}},this.nodes)}async fdSyscall(e){if(sr(e))return this.vfsSyscall(e);switch(e.op){case`fd-read`:return{ok:!0,kind:`bytes`,bytes:await this.read(e)};case`fd-write`:return{ok:!0,kind:`json`,json:await this.write(e.fd,e.body,e.nonblock)};case`fd-close`:return await Promise.resolve(this.fds.close(e.fd)),{ok:!0,kind:`void`};case`fd-pipe`:{let e=_(),t=this.fds.install(e.read,3),n;try{n=this.fds.install(e.write,3)}catch(e){throw await Promise.resolve(this.fds.close(t)),e}return{ok:!0,kind:`json`,json:[t,n]}}case`fd-poll`:return{ok:!0,kind:`json`,json:m(this.fds.get(e.fd).file)};case`fd-open-vfs`:return{ok:!0,kind:`json`,json:this.fds.install(this.openVfsFile(e),3)};case`fd-info`:return{ok:!0,kind:`json`,json:this.fdInfo(e.fd)};case`fd-list`:return{ok:!0,kind:`json`,json:this.fds.numbers().map(e=>({fd:e,...this.fdInfo(e)}))};case`fd-meta`:{let t=this.fds.get(e.fd).file;if(!t.held)throw new g(`EBADF`);return t.heldMeta=e.meta,{ok:!0,kind:`void`}}case`fd-setfl`:return this.fds.setStatusFlags(e.fd,e.flags),{ok:!0,kind:`void`};case`fd-cloexec`:return e.on?this.fds.setCloseOnExec(e.fd):this.fds.clearCloseOnExec(e.fd),{ok:!0,kind:`void`};case`fd-dup`:return{ok:!0,kind:`json`,json:this.fds.dup(e.fd,e.min??3)};case`fd-reserve`:return{ok:!0,kind:`json`,json:this.reserve(e.fd,e.min,e.meta)};case`fd-promote`:return this.promote(e),{ok:!0,kind:`void`};case`fd-renumber`:return e.from!==e.to&&(this.fds.dup2(e.from,e.to),e.keep||await Promise.resolve(this.fds.close(e.from))),{ok:!0,kind:`void`};case`fd-open-tty`:{let t=e.name===void 0?this.controllingTerminal():this.options.jobs?.terminalNamed(e.name);if(!t)throw new g(`ENXIO`);return{ok:!0,kind:`json`,json:this.fds.install(t.file(),3)}}case`fd-select`:{let{read:t,write:n,timeoutMs:r}=e,i=this.blockingSignal();return{ok:!0,kind:`json`,json:await Jn(this.fds,t,n,r,i)}}case`fd-seek`:{let t=this.fds.get(e.fd).file;if(!t.seek)throw new g(`ESPIPE`);return{ok:!0,kind:`json`,json:await t.seek(e.offset,e.whence)}}case`fd-flush`:{let t=this.fds.get(e.fd).file;return t.flush&&await t.flush(),{ok:!0,kind:`void`}}}}async vfsSyscall(e){if(`path`in e||`from`in e){let t=this.nodes;return e.op===`fd-path-flush`?await t?.flush(e.path):e.op===`fd-path-unlinking`?await t?.unlinking(e.path):e.op===`fd-path-unlinked`?t?.unlinked(e.path):e.op===`fd-path-renamed`&&t?.renamed(e.from,e.to),{ok:!0,kind:`void`}}let t=this.fds.get(e.fd).file;if(!t.pread||!t.pwrite||!t.resize||!t.stat)throw new g(`ESPIPE`);switch(e.op){case`fd-pread`:return{ok:!0,kind:`bytes`,bytes:await t.pread(Math.min(e.max,fr),e.offset)};case`fd-pwrite`:return{ok:!0,kind:`json`,json:await t.pwrite(e.body,e.offset)};case`fd-resize`:return await t.resize(e.size),{ok:!0,kind:`void`};case`fd-vfs-stat`:return{ok:!0,kind:`json`,json:await t.stat()}}}promote(e){if(!this.fds.get(e.fd).file.held)throw new g(`EBADF`);if(e.share!==void 0){this.fds.dup2(e.share,e.fd);return}if(!this.options.fs||e.path===void 0)throw new g(`EINVAL`);let t=nr(this.options.fs,{path:e.path,flags:e.flags??0,position:e.position??0,...e.contents===void 0?{}:{contents:e.contents},...e.orphan?{orphan:!0}:{},...e.dirty?{dirty:!0}:{}},this.nodes);this.fds.installAt(e.fd,t)}reserve(e,t=3,n){if(e===void 0)return this.fds.install(y(n),Math.max(3,t));if(this.fds.has(e))throw new g(`EBADF`);return this.fds.installAt(e,y(n)),e}fdInfo(e){let t=this.fds.get(e).file,n=this.fds.statusFlags(e);return{tty:t.tty!==void 0,kind:t instanceof L?`socket`:l(t),...t.heldMeta?{meta:t.heldMeta}:{},...n===void 0?{}:{flags:n},...this.fds.closesOnExec(e)?{cloexec:!0}:{},...t.tty?.name?{name:t.tty.name}:t.pty?{name:`/dev/ptmx`}:{}}}ttySyscall(e){let t=this.tty(e.fd),n=this.options.jobs;switch(e.op){case`tty-get`:return{ok:!0,kind:`json`,json:t.tcgets()};case`tty-set`:return t.tcsets(e.termios),{ok:!0,kind:`void`};case`tty-winsz`:return{ok:!0,kind:`json`,json:t.winsize()};case`tty-pgrp-get`:return{ok:!0,kind:`json`,json:n?n.tcgetpgrp(t,this.sid()):this.pid};case`tty-pgrp-set`:if(n)n.tcsetpgrp(this.pid,t,e.pgrp);else if(e.pgrp!==this.pid)throw new g(`EPERM`);return{ok:!0,kind:`void`}}}checkForeground(e){let t=this.options.jobs;if(!t)return;let n=t.controllingTerminal(this.pid);if(n!==void 0&&n!==e)return;let r=this.pgid();if(t.tcgetpgrp(e,this.sid())!==r)throw this.ignored&An(z.TTIN)?new g(`EIO`):(t.killGroup(r,z.TTIN),new g(`EINTR`))}waitGroup(e){let t=this.options.jobs;if(!t||e>0||e===-1)return;let n=e===0?this.pgid():-e;return e=>(t.pgidOf(e)??this.pgid())===n}pgid(){return this.options.jobs?.getpgid(this.pid,0)??this.pid}sid(){return this.options.jobs?.getsid(this.pid,0)??this.pid}controllingTerminal(){let e=this.options.jobs?.controllingTerminal(this.pid);return e===void 0?this.fds.stdioTerminal():e??void 0}jobSyscall(e){let t=this.options.jobs,n=e=>{if(e!==0&&e!==this.pid)throw new g(`ESRCH`);return this.pid};switch(e.op){case`proc-setpgid`:if(t)t.setpgid(this.pid,e.pid,e.pgid);else if(n(e.pid)!==(e.pgid||this.pid))throw new g(`EPERM`);return{ok:!0,kind:`void`};case`proc-getpgid`:return{ok:!0,kind:`json`,json:t?.getpgid(this.pid,e.pid)??n(e.pid)};case`proc-getsid`:return{ok:!0,kind:`json`,json:t?.getsid(this.pid,e.pid)??n(e.pid)};case`proc-setsid`:if(!t)throw new g(`EPERM`);return{ok:!0,kind:`json`,json:t.setsid(this.pid)}}}tty(e){let t=this.fds.get(e).file,n=t.tty??t.pty?.slave;if(!n)throw new g(`ENOTTY`);return n}socketSyscall(e){return this.net??=this.options.net??new Sn,Zn(e,{fds:this.fds,net:this.net,blocking:()=>this.blockingSignal()})}async procSyscall(e){switch(e.op){case`proc-fork`:return{ok:!0,kind:`json`,json:await this.children.fork(e.state)};case`proc-spawn`:{let{file:t,argv:n,env:r,cwd:i,stdio:a,inherit:o}=e;return{ok:!0,kind:`json`,json:await this.children.spawn({file:t,argv:n,env:r,cwd:i},a,o)}}case`proc-wait`:{let t=e.nohang?this.interrupt.signal:this.blockingSignal(),n={untraced:e.untraced,continued:e.continued,inGroup:this.waitGroup(e.pid)};return{ok:!0,kind:`json`,json:await this.children.wait(e.pid,e.nohang,t,n)}}case`proc-exec`:this.execChild=e.pid,this.options.jobs?.exec(this.pid,e.pid),this.children.watch(e.pid,(e,t)=>e===`stopped`?this.stop(t):this.cont()),await this.fds.closeAll();try{let t=await this.children.wait(e.pid,!1),n=t[1]&127;return n&&(this.execTermsig=n),{ok:!0,kind:`json`,json:t}}finally{this.execChild=void 0}case`proc-kill`:if(e.sig!==0&&!kn(e.sig))throw new g(`EINVAL`);if(!await this.options.kill?.(e.pid===0?-this.pgid():e.pid,e.sig))throw new g(`ESRCH`);return{ok:!0,kind:`void`};case`dl-log`:return e.append&&this.dlLog.push(e.append),{ok:!0,kind:`json`,json:this.dlLog.slice(e.from)};case`proc-alarm`:return this.setAlarm(e.sig,e.firstMs??e.ms,e.repeat?e.ms:0,e.timer),{ok:!0,kind:`void`};case`sig-mask`:return this.caught=e.caught,this.ignored=e.ignored,{ok:!0,kind:`void`};case`sig-pause`:return this.pause();case`proc-captured`:return{ok:!0,kind:`bytes`,bytes:this.children.captured(e.pid,e.slot)}}}pause(){let e=this.blockingSignal();return new Promise((t,n)=>{e.addEventListener(`abort`,()=>n(new g(`EINTR`)),{once:!0})})}dlLog=[];alarm;alarmEvery;setAlarm(e,t,n,r){if(!kn(e))throw new g(`EINVAL`);if(this.clearAlarm(),t<=0)return;let i=r===void 0?()=>this.options.raise?.(e):()=>this.timerExpired(r);this.alarm=setTimeout(()=>{this.alarm=void 0,i(),n>0&&(this.alarmEvery=setInterval(i,n))},t)}timerExpired(e){this.options.onTimer?.(e);let t=this.interrupt;this.interrupt=new AbortController,t.abort()}clearAlarm(){clearTimeout(this.alarm),clearInterval(this.alarmEvery),this.alarm=void 0,this.alarmEvery=void 0}async exit(){this.exited||(this.exited=!0,this.clearAlarm(),await this.fds.closeAll())}};function mr(){return new Worker(new URL(`/assets/process-worker-B_jMhtwi.js`,``+import.meta.url),{type:`module`})}const hr=new WeakMap;let gr=1;function _r(e){let t=hr.get(e);return t===void 0&&hr.set(e,t=gr++),t}function vr(e){return e.numbers().filter(t=>t>2&&!e.get(t).file.held).map(t=>{let n=e.get(t),r=e.statusFlags(t),i=n.file instanceof L?`socket`:l(n.file),a=n.file.heldMeta;return{fd:t,kind:i,...i===`device`&&a&&`device`in a?{device:a}:{},...r===void 0?{}:{flags:r},...e.closesOnExec(t)?{cloexec:!0}:{},...i===`stream`?{desc:_r(n)}:{}}})}function yr(e){let t=new SharedArrayBuffer(64+pe),n=new Int32Array(t,0,16),r=new pr(e.pid,e.fds,{spawner:e.spawner,forker:e.forker,fs:e.fs,kill:e.kill,jobs:e.jobs,ptys:e.ptys,net:e.net,onPending:e=>void Atomics.or(n,8,An(e)),onTimer:e=>void Atomics.or(n,9,1<<e),hasPending:()=>Atomics.load(n,8)!==0||Atomics.load(n,9)!==0,...e.program.abi===`wasi`?{pendingBits:()=>Atomics.load(n,8)}:{},raise:e=>y(e)}),i=le({fs:e.fs,cwd:e.cwd}),a=(e.createWorker??mr)(),o=async e=>dr(e)?r.syscall(e):`op`in e&&typeof e.op==`string`&&`path`in e?fe(e):{ok:!1,errno:`ENOSYS`,message:`wasm-realm: no exec yet`},s=me(a,t,i,{dispatch:o}),c,l=new Promise(e=>c=e),u=!1,d,f=(e,t)=>{if(!u){u=!0,d=t??r.execTermsig,a.removeEventListener(`message`,m),a.removeEventListener(`error`,h),s.dispose();for(let e of[...g.keys()])_(e);de(i),a.terminate(),r.exit().then(()=>c(e),()=>c(e))}},p=t=>{t?.type===`wasm-process-exit`?f(typeof t.code==`number`?t.code:70):t?.type===`wasm-process-error`?(e.onError?.(String(t.message)),f(70)):t?.type===`wasm-thread-spawn`&&t.thread&&v(t.thread)},m=e=>p(e.data),h=t=>{t.preventDefault(),e.onError?.(String(t.message??`worker error`)),f(70)},g=new Map,_=e=>{let t=g.get(e);g.delete(e),t?.()},v=t=>{if(u)return;if(g.size>=63){e.onError?.(`more than 64 threads`),f(70);return}let n=new SharedArrayBuffer(64+pe),r=(e.createWorker??mr)(),a=me(r,n,i,{dispatch:o}),s=e=>{let n=e.data;n?.type===`wasm-thread-exit`?_(t.tid):p(n)};r.addEventListener(`message`,s),r.addEventListener(`error`,h),g.set(t.tid,()=>{r.removeEventListener(`message`,s),r.removeEventListener(`error`,h),a.dispose(),r.terminate()});let c={type:`wasm-thread-init`,pid:e.pid,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,sab:n,...e.ppid===void 0?{}:{ppid:e.ppid},thread:t};r.postMessage(c)};a.addEventListener(`message`,m),a.addEventListener(`error`,h);let ee={type:`wasm-process-init`,pid:e.pid,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,sab:t,...e.ppid===void 0?{}:{ppid:e.ppid},...e.fork?{fork:e.fork}:{fds:vr(e.fds)}};a.postMessage(ee,e.fork?[e.fork.memory.buffer]:[]);let y=e=>{r.signal(e)===`terminate`&&f(e===z.KILL?137:128+e,e)};return{pid:e.pid,exited:l,kill:(e=137)=>f(e,e>128&&e<160?e-128:void 0),signal:y,termsig:()=>d,onState:e=>r.onState(e)}}var br=class{members=new Map;foreground=new Map;terminals=new Map;add(e,t,n,r){let i=t===void 0?void 0:this.members.get(t);!i&&r&&this.terminals.set(e,r);let a={pid:e,ppid:i?.pid,pgid:i?.pgid??e,sid:i?.sid??e,signal:n};return this.members.set(e,a),a}remove(e){this.members.delete(e)}exec(e,t){let n=this.members.get(t);n&&(n.execParent=e);let r=this.members.get(e);r&&(r.execed=!0)}pgidOf(e){return this.members.get(e)?.pgid}member(e){let t=this.members.get(e);if(!t)throw new g(`ESRCH`);return t}setpgid(e,t,n){let r=this.member(t||e),i=n||r.pid;if(i<0)throw new g(`EINVAL`);let a=this.member(e);if(r.pid!==e){if(r.ppid!==e)throw new g(`ESRCH`);if(r.execed)throw new g(`EACCES`)}if(r.sid!==a.sid||r.pid===r.sid)throw new g(`EPERM`);let o=[...this.members.values()].some(e=>e.pgid===i&&e.sid===r.sid);if(i!==r.pid&&!o)throw new g(`EPERM`);r.pgid=i}getpgid(e,t){return this.member(t||e).pgid}getsid(e,t){return this.member(t||e).sid}setsid(e){let t=this.member(e);if(t.pgid===e)throw new g(`EPERM`);return t.sid=e,t.pgid=e,this.terminals.delete(e),e}terminalNamed(e){return[...new Set([...this.terminals.values(),...this.foreground.keys()])].find(t=>t.name===e)}controllingTerminal(e){let t=this.members.get(e);return t&&(this.terminals.get(t.sid)??null)}acquireTerminal(e,t){let n=this.members.get(e);return!n||n.sid!==e||this.terminals.has(e)||[...this.terminals.values()].includes(t)?!1:(this.terminals.set(e,t),this.foreground.set(t,n.pgid),!0)}killGroup(e,t){let n=[...this.members.values()].filter(t=>t.pgid===e),r=new Set(n.map(e=>e.pid));if(t!==0)for(let e of n)(e.execParent===void 0||!r.has(e.execParent))&&e.signal(t);return n.length>0}tcgetpgrp(e,t){return this.foreground.get(e)??t}tcsetpgrp(e,t,n){let r=this.member(e);if(![...this.members.values()].some(e=>e.pgid===n&&e.sid===r.sid))throw new g(`EPERM`);this.foreground.set(t,n)}signalOwnedForeground(e,t){let n=this.foreground.get(e);n!==void 0&&this.killGroup(n,t)}signalForeground(e,t,n){this.killGroup(this.tcgetpgrp(e,t),n)}};const xr=new Set([`wasi_snapshot_preview1`,`wasix_32v1`,`wasi`,`env`]),Sr={127:`i32`,126:`i64`,125:`f32`,124:`f64`};function Cr(e){let t={at:8,u32(){let n=0,r=0;for(;;){let i=e[t.at++];if(n|=(i&127)<<r,!(i&128))return n>>>0;r+=7}},name(){let n=t.u32(),r=new TextDecoder().decode(e.subarray(t.at,t.at+n));return t.at+=n,r},limits(){let n=e[t.at++];return{initial:t.u32(),maximum:n&1?t.u32():void 0,shared:!!(n&2)}},sections(n){for(;t.at<e.length;){let r=e[t.at++],i=t.u32(),a=t.at+i;if(n(r,a))return;t.at=a}},imports(n){let r=t.u32();for(let i=0;i<r;i++){let r=t.name(),i=t.name(),a=e[t.at++],o=-1;if(a===0)o=t.u32();else if(a===1)t.at++,t.limits();else if(a===2){let e=t.at;if(n(r,i,a,o))return;t.at=e,t.limits();continue}else a===3?t.at+=2:a===4&&(t.at++,t.u32());if(n(r,i,a,o))return}}};return t}function wr(e){let t=Cr(e),n;return t.sections(e=>e===2&&(t.imports((e,r,i)=>i===2&&(n={module:e,name:r,...t.limits()},!0)),!0)),n}function Tr(e){let t=Cr(e),n=[],r={};return t.sections(i=>{if(i===1){let r=t.u32();for(let i=0;i<r;i++){t.at++;let r=t.u32();t.at+=r;let i=t.u32();n.push(i===0?`none`:i===1?Sr[e[t.at]]??`other`:`other`),t.at+=i}return!1}return i===2&&(t.imports((e,t,i,a)=>(i===0&&!xr.has(e)&&((r[e]??={})[t]=n[a]??`other`),!1)),!0)}),r}const Er=/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;function Dr(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=!1,a=i.replace(Er,(n,r)=>{let i=Object.hasOwn(t,r)?t[r]:void 0;return i===void 0&&(e=!0),i??``});e||(n[r]=a)}return n}function Or(e,t){if(!e)return t;let n=Dr(e,t);if(!(t.GIT_CONFIG_SYSTEM!==void 0&&pn(`GIT_CONFIG_SYSTEM`,t.GIT_CONFIG_SYSTEM))||!(`GIT_CONFIG_NOSYSTEM`in n))return{...n,...t};let{GIT_CONFIG_NOSYSTEM:r,...i}=n;return{...i,...t}}function kr(e){return e.USER===void 0||`LOGNAME`in e?e:{...e,LOGNAME:e.USER}}function Ar(e,t){return!/^(ba)?sh$/.test(Q(e))||`BASH_FUNC_secret%%`in t?t:{...t,"BASH_FUNC_secret%%":`() { command secret "$@" || return; local __slicc_env; if __slicc_env=$(command secret shell-env "$@" 2>/dev/null); then eval "$__slicc_env"; fi; return 0; }`}}const Y=new Map,jr=new Map,Mr=new Map(Object.entries(B).map(([e,t])=>[t,e])),X=/^\/(?:usr\/)?bin\/([^/]+)$/,Z=/^(.*\/node_modules\/(?:@[^/]+\/)?[^/]+)\//,Nr=/locateFile\(\s*["']([^"'/]+\.wasm)["']\s*\)/;let Pr=4e4;function Fr(e){return e.glue===e.module}const Ir=[0,97,115,109];function Lr(e){return Ir.every((t,n)=>e[n]===t)}function Rr(e){return e.endsWith(`.js`)?`${e.slice(0,-3)}.wasm`:`${e}.wasm`}async function zr(e,t){let n=e.readFileRange,r;try{r=n?new TextDecoder().decode(await n.call(e,t,0,256)):(await e.readFile(t)).slice(0,256)}catch{return!1}return r.startsWith(`#!`)?he(r)!==`node`:!1}function Br(e){return X.exec(e)?.[1]??Q(e)}function Q(e){return e.slice(e.lastIndexOf(`/`)+1)}function Vr(e){return{exists:t=>e.fs.exists(t),readDir:async t=>(await e.fs.readdir(t)).map(e=>({name:e})),readFile:t=>e.fs.readFile(t)}}function Hr(e){return ie(Vr(e),ne)}function Ur(e,t){return`${e}:${t.size}:${t.mtime.getTime()}`}function Wr(e,t){return Y.set(e,t),t.catch(()=>Y.delete(e)),t}async function Gr(e,t){let n=Ur(t,await e.fs.stat(t));return Y.get(n)??Wr(n,ce(t=>e.fs.readFileBuffer(t),t))}function Kr(e,t){return jr.set(e,{memory:wr(t),foreign:Tr(t)}),Wr(e,se(t))}async function qr(e,t){let n=Ur(t,await e.fs.stat(t)),r=Y.get(n),i=await(r&&jr.has(n)?r:Kr(n,await e.fs.readFileBuffer(t))),{memory:a,foreign:o={}}=jr.get(n)??{};return{module:i,foreign:o,...a?{memory:a}:{}}}async function Jr(e,t,n){if(WebAssembly.Module.customSections(n,`name`).length>0)return;let r=`${t}.names`;if(await e.fs.exists(r))return r;let i=Z.exec(t)?.[1];if(i===void 0)return;let a=`${i}-names${r.slice(i.length)}`;return await e.fs.exists(a)?a:void 0}async function Yr(e,t){let n;try{let r=await e.fs.stat(t);if(!r.isFile)return!1;n=Ur(t,r)}catch{return!1}if(Y.has(n))return!0;let r;try{r=await e.fs.readFileBuffer(t)}catch{return!1}return Lr(r)?(Kr(n,r).catch(()=>void 0),!0):!1}function Xr(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return t}function Zr(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}async function Qr(e){if(!e.file.read)return new Uint8Array;let t=[],n=0;for(let r=await e.file.read(65536);r.length>0;)t.push(r),n+=r.length,r=await e.file.read(65536);let r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.length;return r}async function $(e,t,n){if(n.length===0||!e.has(t))return;let r=e.get(t).file;try{await r.write?.(n)}catch{}}function $r(e,t){return e.has(t)&&e.get(t).file.tty!==void 0}function ei(e){return{...$r(e,0)?{}:{[ee]:`0`},...$r(e,1)?{}:{[h]:`0`}}}function ti(e){return{pid:e.pid,exited:e.exited,termsig:e.termsig,onState:t=>e.onState(t)}}const ni=new WeakMap;var ri=class{ctx;processConfig;onError;gate;lookup;live=new Set;shellChildren=new Set;wasmByPid=new Map;shellByPid=new Map;installed;jobs=new br;ptys=new Hn((e,t)=>this.jobs.signalOwnedForeground(e,t));leader;net;constructor(e,t,n,r,i){this.ctx=e,this.processConfig=t,this.onError=n,this.gate=r,this.lookup=i,this.net=wn(Tn(t?.owner));let a=Tn(t?.owner);hn(this.net,{process:t,tls:{owner:a}})}commands(){return this.lookup?this.lookup():(this.installed??=Hr(this.ctx),this.installed)}async launch(e){let t=Fr(e),n=``,r,i,a={};try{t?{module:r,memory:i,foreign:a}=await qr(this.ctx,e.module):(n=await this.ctx.fs.readFile(e.glue),r=await Gr(this.ctx,e.module)),e.signal?.throwIfAborted()}catch(t){throw await e.fds.closeAll(),t}let o=Ar(e.argv0,kr(Or(e.defaults,e.env)));t&&await this.pythonPackages(e,o);let s=t&&o.SLICC_WASM_BACKTRACE===`1`?await Jr(this.ctx,e.module,r):void 0;return this.start({...e,env:o,program:t?{abi:`wasi`,glue:n,module:r,...i?{memory:i}:{},...Object.keys(a).length?{foreign:a}:{},...s?{names:s}:{}}:{glue:n,module:r}})}async pythonPackages(e,t){let n=Z.exec(e.module)?.[1];if(n)try{let r=Vr(this.ctx),i=await r.readFile(`${n}/package.json`,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i)),o=typeof a.name==`string`?a.name:n,s=ae(n,o,a.slicc?.python).interpreter;if(!s)return;let{packages:c}=await this.pythonScan(r),l=await re(this.ctx.fs,t.HOME??`/home`,s,c);if(l.length>0){let t=`${s.abi}-${s.platform}`,n=`${e.argv0}: not for ${t}, left off the path: ${l.map(e=>e.pkg).join(`, `)}\n`;await $(e.fds,2,new TextEncoder().encode(n))}}catch{}}pythonScan(e){return this.commands().then(t=>{let n=ni.get(t);return n||(n=oe(e,ne),ni.set(t,n)),n})}start(e){let t=this.processConfig?.processManager,{pid:n}=this.register(`wasm`,[e.argv0,...e.args],e.cwd,e.env,e.ppid),r=e.fds.stdioTerminal(),i=yr({pid:n,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,fds:e.fds,fs:this.ctx.fs,onError:this.onError,spawner:this.spawner(n),forker:this.forker(n,e),kill:(e,t)=>this.kill(e,t),jobs:this.jobs,ptys:this.ptys,net:this.net,...e.fork?{fork:e.fork}:{},...e.ppid===void 0?{}:{ppid:e.ppid}});this.live.add(i),this.wasmByPid.set(n,i),this.leader??=n,this.jobs.add(n,e.ppid,e=>i.signal(e),r);let a=t?.onSignal((e,t)=>{e.pid===n&&i.signal(B[t])});return i.exited.then(e=>{this.live.delete(i),this.wasmByPid.delete(n),this.jobs.remove(n),a?.(),this.processConfig&&t?.exit(n,e)}),i}kill(e,t){if(e<0)return this.jobs.killGroup(-e,t);let n=this.wasmByPid.get(e);if(n)return t!==0&&n.signal(t),!0;let r=this.shellByPid.get(e);if(r)return t!==0&&r(t),!0;let i=this.processConfig?.processManager;if(!i)return!1;if(t===0)return i.get(e)!==null;let a=Mr.get(t);return a===void 0?!1:this.gate?this.killOutside(e,a):i.signal(e,a)}async killOutside(e,t){if(await this.gate?.(`kill`,[`-${t.slice(3)}`,String(e)],{}))throw new g(`EPERM`);return this.processConfig?.processManager.signal(e,t)??!1}listen(e){return new v(this.net.listen(e))}signalAll(e){for(let t of this.live)t.signal(e)}signalTerminal(e,t){this.leader!==void 0&&this.jobs.signalForeground(e,this.leader,t)}killAll(e){for(let t of this.live)t.kill(e);for(let e of this.shellChildren)e.abort()}async resolve(e,t,n){let r=X.exec(e)?.[1]??(e.includes(`/`)?void 0:e);if(r!==void 0){let e=await this.commands(),t=e.get(r);if(t?.script)return;if(t)return{glue:t.glue,module:t.wasm,argv0:t.argv0,...t.args?{prefixArgs:t.args}:{},defaults:t.env};let n=r===`sh`?e.get(`bash`):void 0;return n&&{glue:n.glue,module:n.wasm,argv0:`sh`,defaults:n.env}}let i=this.ctx.fs.resolvePath(n,e);if(!await this.ctx.fs.exists(i)||await zr(this.ctx.fs,i))return;let a=Rr(i);return await this.ctx.fs.exists(a)?{glue:i,module:a,argv0:Q(t||e)}:await Yr(this.ctx,i)?{glue:i,module:i,argv0:Q(t||e).replace(/\.wasm$/,``)}:this.packagedCopy(i,t||e)}async packagedCopy(e,t){let n=Z.exec(e)?.[1];if(n===void 0)return;let r;try{r=await this.ctx.fs.readFile(e)}catch{return}let i=Nr.exec(r)?.[1];if(i!==void 0){for(let e of(await this.commands()).values())if(e.wasm.startsWith(`${n}/`)&&e.wasm.endsWith(`/${i}`))return{glue:e.glue,module:e.wasm,argv0:Q(t),defaults:e.env}}}forker(e,t){return async(n,r)=>ti(this.start({...t,cwd:n.cwd??t.cwd,fds:r,ppid:e,fork:n}))}async scriptCommand(e){let t=X.exec(e)?.[1]??(e.includes(`/`)?void 0:e);if(t===void 0)return;let n=(await this.commands()).get(t);return n?.script?n:void 0}async interpreted(e){let t=await this.scriptCommand(e.file);if(!t&&(!e.file.includes(`/`)||X.test(e.file)))return;let n=t?.script??this.ctx.fs.resolvePath(e.cwd,e.file),r;try{r=(await this.ctx.fs.readFileBuffer(n)).subarray(0,256)}catch{return}if(r[0]!==35||r[1]!==33)return;let[i,...a]=new TextDecoder().decode(r).slice(2).split(`
|
|
11
|
+
`)),this.readable.push(Uint8Array.from(this.line)),this.line=[]):(this.line.push(e),t&&this.echo(e))}lastWordLength(){let e=this.line.length;for(;e>0&&this.line[e-1]===32;)e--;for(;e>0&&this.line[e-1]!==32;)e--;return this.line.length-e}lastCharLength(){let{line:e}=this,t=Math.min(1,e.length);if(this.termios.c_iflag&jn)for(;t<e.length&&Pn(e[e.length-t]??0);)t++;return t}rubOut(e){let t=this.line.splice(this.line.length-e,e),n=this.termios.c_iflag&jn?t.filter(e=>!Pn(e)).length:t.length;n>0&&this.termios.c_lflag&8&&this.output(Nn.encode(`\b \b`.repeat(n)),!1)}echo(e){if(e<32&&e!==10&&e!==9&&this.termios.c_lflag&512){this.output(Uint8Array.of(94,e+64),!1);return}this.output(Uint8Array.of(e))}output(e,t=!0){let{c_oflag:n}=this.termios;if(!t||!(n&1&&n&4)||!e.includes(10)){this.screen.write(e);return}let r=[];for(let t of e)t===10&&r.push(13),r.push(t);this.screen.write(Uint8Array.from(r))}async read(e,t){for(;this.readable.length===0;){if(this.hungUp)return new Uint8Array;await this.changed(t)}let n=this.readable[0];if(n===null)return this.readable.shift(),new Uint8Array;if(n===void 0)return new Uint8Array;let r=[],i=0;for(;this.readable.length>0&&i<e;){let t=this.readable[0];if(t==null)break;let n=t.subarray(0,e-i);if(r.push(n),i+=n.length,n.length<t.length?this.readable[0]=t.subarray(n.length):this.readable.shift(),this.canonical)break}let a=new Uint8Array(i),o=0;for(let e of r)a.set(e,o),o+=e.length;return a}changed(e){return e?.aborted?Promise.reject(new g(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new g(`EINTR`))},i=()=>{e?.removeEventListener(`abort`,r),t()};this.waiters.push(i),e?.addEventListener(`abort`,r,{once:!0})})}wake(){let e=this.waiters;this.waiters=[];for(let t of e)t()}},V=class extends Error{code;constructor(e){super(e),this.code=e}};function In(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new g(`EINTR`)),e?.aborted?t():e?.addEventListener(`abort`,t,{once:!0})}),done:()=>e?.removeEventListener(`abort`,t)}}function Ln(e){return(e&255)<<8|127}function Rn(e,t){return t?t&127:(e&255)<<8}function zn(e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}var Bn=class{parentFds;spawner;forker;children=new Map;leftovers=new Map;onChildState;stateChanged=[];watchers=new Map;constructor(e,t,n){this.parentFds=e,this.spawner=t,this.forker=n}async fork(e){if(!this.forker)throw new V(`ENOSYS`);return this.track(e,this.parentFds.fork(),new Map,this.forker)}async spawn(e,t,n=[]){if(!this.spawner)throw new V(`ENOSYS`);let r=new s,i=new Map;try{for(let[e,n]of t.entries())r.installAt(e,this.openSlot(n,e,i));for(let e of n)if(!(e.fd<=2)){if(`device`in e){r.installAt(e.fd,p(e.device,e.access));continue}r.installAt(e.fd,this.parentFds.get(e.kernel).retain()),e.flags!==void 0&&r.setStatusFlags(e.fd,e.flags)}}catch(e){throw await r.closeAll(),e}return this.track(e,r,i,this.spawner)}async track(e,t,n,r){let i;try{i=await r(e,t)}catch(e){throw await t.closeAll(),e}let a={exited:i.exited,termsig:i.termsig,captured:n};return i.exited.then(e=>{a.code=e,this.watchers.delete(i.pid),this.onChildState?.()}),i.onState?.((e,t)=>{a.stopReport=e===`stopped`?t:void 0,a.continueReport=e===`continued`,this.watchers.get(i.pid)?.(e,t);let n=this.stateChanged;this.stateChanged=[];for(let e of n)e();this.onChildState?.()}),this.children.set(i.pid,a),i.pid}watch(e,t){this.children.has(e)&&this.watchers.set(e,t)}openSlot(e,t,n){if(`fd`in e)return this.parentFds.get(e.fd).retain();if(`input`in e)return c(e.input);if(`capture`in e){let e=[];return n.set(t,e),f(t=>e.push(t))}return u()}async wait(e,t,n,r={}){let i;try{for(;;){let a=this.candidates(e,r);if(a.length===0)throw new g(`ECHILD`);let o=a.find(([,e])=>e.code!==void 0);if(o)return this.reap(o[0],o[1].code);let s=this.stateReport(a,r);if(s)return s;if(t)return[0,0];i??=In(n),await this.nextChange(a,r,i.promise)}}finally{i?.done()}}candidates(e,t){let n=[...this.children];if(e>0)return n.filter(([t])=>t===e);let r=t.inGroup;return e===-1||!r?n:n.filter(([e])=>r(e))}async nextChange(e,t,n){let r,i=new Promise(e=>r=e),a=t.untraced||t.continued;a&&r&&this.stateChanged.push(r);try{await Promise.race([...e.map(([,e])=>e.exited),...a?[i]:[],n])}finally{this.stateChanged=this.stateChanged.filter(e=>e!==r)}}stateReport(e,t){for(let[n,r]of e){if(t.untraced&&r.stopReport!==void 0){let e=r.stopReport;return r.stopReport=void 0,[n,Ln(e)]}if(t.continued&&r.continueReport)return r.continueReport=!1,[n,65535]}return null}reap(e,t){let n=this.children.get(e);return this.children.delete(e),n&&n.captured.size>0&&this.leftovers.set(e,n.captured),[e,Rn(t,n?.termsig?.())]}captured(e,t){let n=this.leftovers.get(e),r=n?.get(t);return!n||!r?new Uint8Array:(n.delete(t),n.size===0&&this.leftovers.delete(e),zn(r))}},Vn=class{index;onFree;slave;locked=!0;packet=!1;queue=[];waiters=[];masterOpen=!0;slaveRefs=0;slaveSeen=!1;constructor(e,t,n){this.index=e,this.onFree=n,this.slave=new Fn({write:e=>this.fromSlave(e)},e=>t(this.slave,e)),this.slave.name=`/dev/pts/${e}`}master(){return new v({read:(e,t)=>this.readMaster(e,t),write:async e=>(this.slave.receive(e),e.length),poll:()=>({readable:this.queue.length>0||this.slaveGone,writable:!0,hangup:this.slaveGone}),changed:e=>this.changed(e),close:()=>this.closeMaster(),pty:this})}openSlave(){if(!this.masterOpen||this.locked)throw new g(`EIO`);let e=this.slave.file().file;return this.slaveRefs+=1,this.slaveSeen=!0,new v({...e,close:()=>this.closeSlave()})}get slaveGone(){return this.slaveSeen&&this.slaveRefs===0}fromSlave(e){this.masterOpen&&(this.queue.push(e.slice()),this.wake())}async readMaster(e,t){for(;this.queue.length===0;){if(this.slaveGone)throw new g(`EIO`);await this.changed(t)}let n=+!!this.packet,r=[],i=0;for(;this.queue.length>0&&i<e-n;){let t=this.queue[0],a=t.subarray(0,e-n-i);r.push(a),i+=a.length,a.length<t.length?this.queue[0]=t.subarray(a.length):this.queue.shift()}let a=new Uint8Array(n+i),o=n;for(let e of r)a.set(e,o),o+=e.length;return a}closeMaster(){this.masterOpen=!1,this.queue=[],this.slave.hangup(),this.slave.signalHangup(),this.freeIfUnused()}closeSlave(){--this.slaveRefs,this.wake(),this.freeIfUnused()}freeIfUnused(){!this.masterOpen&&this.slaveRefs===0&&this.onFree(this)}changed(e){return e?.aborted?Promise.reject(new g(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new g(`EINTR`))},i=()=>{e?.removeEventListener(`abort`,r),t()};this.waiters.push(i),e?.addEventListener(`abort`,r,{once:!0})})}wake(){let e=this.waiters;this.waiters=[];for(let t of e)t()}},Hn=class{signal;pairs=new Map;constructor(e){this.signal=e}open(){let e=0;for(;this.pairs.has(e);)e+=1;let t=new Vn(e,this.signal,e=>this.pairs.delete(e.index));return this.pairs.set(e,t),{pair:t,master:t.master()}}get(e){let t=this.pairs.get(e);if(!t)throw new g(`ENOENT`);return t}numbers(){return[...this.pairs.keys()].sort((e,t)=>e-t)}};const Un=[`pty-open`,`pty-slave-open`,`pty-number`,`pty-lock`,`pty-ctty`,`pty-packet`,`pty-list`,`pty-winsz-set`];function H(e,t){let n=e.fds.get(t).file.pty;if(!n)throw new g(`ENOTTY`);return n}function Wn(e,t){let n=e.fds.get(t).file,r=n.tty??n.pty?.slave;if(!r)throw new g(`ENOTTY`);return r}const U=e=>({ok:!0,kind:`json`,json:e}),W={ok:!0,kind:`void`};function Gn(e,t){switch(e.op){case`pty-open`:if(!t.ptys)throw new g(`ENOENT`);return U(t.fds.install(t.ptys.open().master,3));case`pty-slave-open`:{if(!t.ptys)throw new g(`ENOENT`);let n=t.ptys.get(e.n),r=t.fds.install(n.openSlave(),3);return e.noctty||t.jobs?.acquireTerminal(t.pid,n.slave),U(r)}case`pty-number`:return U(H(t,e.fd).index);case`pty-lock`:return H(t,e.fd).locked=e.lock,W;case`pty-ctty`:{let n=Wn(t,e.fd);if(t.jobs?.getsid(t.pid,0)===t.pid&&t.jobs?.controllingTerminal(t.pid)===n)return W;if(!t.jobs?.acquireTerminal(t.pid,n))throw new g(`EPERM`);return W}case`pty-list`:return U(t.ptys?.numbers()??[]);case`pty-packet`:return H(t,e.fd).packet=e.on,W;case`pty-winsz-set`:return Wn(t,e.fd).resize(e.cols,e.rows),W}}function Kn(e,t,n){let r=new Set,i=(t,n)=>t.filter(t=>{let i=m(e.get(t).file);return i.hangup&&r.add(t),i[n]||i.hangup}),a={read:i(t,`readable`),write:i(n,`writable`)};return r.size>0&&(a.hangup=[...r]),a}function qn(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new g(`EINTR`)),e.aborted?t():e.addEventListener(`abort`,t,{once:!0})}),done:()=>e.removeEventListener(`abort`,t)}}async function Jn(e,t,n,r,i){let a=r<0?1/0:Date.now()+r,o=qn(i);o.promise.catch(()=>{});try{return await Yn(e,t,n,a,o.promise)}finally{o.done()}}async function Yn(e,t,n,r,i){for(;;){let a=Kn(e,t,n);if(a.read.length>0||a.write.length>0||Date.now()>=r)return a;let o=new AbortController,s=[...new Set([...t,...n])].flatMap(t=>{let n=e.get(t).file;return n.changed===void 0?[]:[n.changed(o.signal).catch(()=>void 0)]}),c,l=r===1/0?[]:[new Promise(e=>c=setTimeout(e,r-Date.now()))];try{await Promise.race([...s,...l,i])}finally{o.abort(),clearTimeout(c)}}}const Xn=[`sock-open`,`sock-pair`,`sock-bind`,`sock-listen`,`sock-accept`,`sock-connect`,`sock-shutdown`,`sock-name`,`sock-getopt`,`sock-setopt`];function G(e,t){let n=e.get(t).file;if(!(n instanceof L))throw new g(`ENOTSOCK`);return n}const K=e=>e===void 0?{ok:!0,kind:`void`}:{ok:!0,kind:`json`,json:e};async function Zn(e,t){let{fds:n,net:r}=t;switch(e.op){case`sock-open`:return K(n.install(new v(r.socket(e.domain)),3));case`sock-pair`:{let[t,i]=L.pair(r,e.domain),a=n.install(new v(t),3);try{return K([a,n.install(new v(i),3)])}catch(e){throw await Promise.resolve(n.close(a)),e}}case`sock-bind`:return G(n,e.fd).bind(e.addr),K();case`sock-listen`:return G(n,e.fd).listen(e.backlog),K();case`sock-accept`:return K(await $n(t,e.fd,e.nonblock));case`sock-connect`:if(G(n,e.fd).connect(e.addr),e.nonblock)throw new g(`EINPROGRESS`);return K();case`sock-shutdown`:return G(n,e.fd).shutdown(e.how),K();case`sock-name`:{let t=G(n,e.fd),r=e.peer?t.peer:t.local;if(e.peer&&!r)throw new g(`ENOTCONN`);return K(r??Qn(t.domain))}case`sock-getopt`:return K(G(n,e.fd).getOption(e.level,e.name));case`sock-setopt`:return G(n,e.fd).setOption(e.level,e.name,e.value),K()}}function Qn(e){return e===`inet`?{family:`inet`,host:`0.0.0.0`,port:0}:{family:`unix`,path:``}}async function $n(e,t,n){let r=G(e.fds,t),i=!n&&!m(r).readable,a=await r.accept(i?e.blocking():void 0,n);return{fd:e.fds.install(new v(a),3),peer:a.peer}}function er(e){return e?.code===`ENOENT`||e instanceof Error&&e.message.startsWith(`ENOENT`)}function q(e,t){return e===t||e.startsWith(t.endsWith(`/`)?t:`${t}/`)}var J=class{fs;path;orphaned;data;length=0;dirty=!1;queue=Promise.resolve();writeBack;writeBackCost=0;opens=0;missing=!1;constructor(e,t,n,r=!1,i=!1){this.fs=e,this.path=t,this.orphaned=r,n===void 0?r&&(this.data=new Uint8Array):this.data=new Uint8Array(n),this.length=this.data?.length??0,i&&n!==void 0&&this.markDirty()}serial(e){let t=this.queue.then(e);return this.queue=t.catch(()=>void 0),t}async load(){if(!this.data){try{this.data=await ue(this.fs,this.path)}catch(e){if(!er(e))throw e;this.data=new Uint8Array,this.missing=!0}this.length=this.data.length}return this.data}replace(e){this.data=new Uint8Array(e),this.length=this.data.length,this.missing=!1,this.markDirty()}async materialize(){await this.load(),!(!this.missing||this.orphaned)&&(this.missing=!1,await this.fs.writeFile(this.path,this.data?.slice(0,this.length)??new Uint8Array))}async size(){return await this.load(),this.length}async pread(e,t){let n=await this.load(),r=Math.max(0,Math.min(e,this.length-t));return n.slice(t,t+r)}async pwrite(e,t){await this.load();let n=this.ensure(t+e.length);return t>this.length&&n.fill(0,this.length,t),n.set(e,t),this.length=Math.max(this.length,t+e.length),this.markDirty(),e.length}async truncate(e){await this.load();let t=this.ensure(e);e>this.length&&t.fill(0,this.length,e),this.length=e,this.markDirty()}markDirty(){if(this.dirty=!0,this.writeBack!==void 0||this.orphaned)return;let e=Math.max(250,this.writeBackCost*10);this.writeBack=setTimeout(()=>{this.writeBack=void 0,this.serial(()=>this.flush()).catch(()=>void 0)},e)}ensure(e){let t=this.data??new Uint8Array;if(t.length>=e)return t;let n=new Uint8Array(Math.max(e,t.length*2,256));return n.set(t.subarray(0,this.length)),this.data=n,n}async flush(){if(!this.dirty||!this.data||this.orphaned)return;this.dirty=!1;let e=performance.now();try{await this.fs.writeFile(this.path,this.data.slice(0,this.length))}catch(e){throw this.dirty=!0,e}this.writeBackCost=performance.now()-e}},tr=class{fs;byPath=new Map;constructor(e){this.fs=e}open(e){let t=this.byPath.get(e);return t||(t=new J(this.fs,e),this.byPath.set(e,t)),t.opens++,t}adopt(e,t,n){let r=this.byPath.get(e);return r?n&&r.replace(t):(r=new J(this.fs,e,t,!1,n),this.byPath.set(e,r)),r.opens++,r}closed(e){e.opens--,e.opens===0&&this.byPath.get(e.path)===e&&this.byPath.delete(e.path)}async flush(e){for(let[t,n]of this.byPath)q(t,e)&&await n.serial(()=>n.flush())}async unlinking(e){let t=this.byPath.get(e);t&&await t.serial(()=>t.load())}unlinked(e){let t=this.byPath.get(e);t&&(t.orphaned=!0,this.byPath.delete(e))}renamed(e,t){if(e===t)return;let n=[];for(let[r,i]of this.byPath)q(r,e)?n.push(i):q(r,t)&&(i.orphaned=!0,this.byPath.delete(r));for(let r of n)this.byPath.delete(r.path),r.path=t+r.path.slice(e.length),this.byPath.set(r.path,r)}};function nr(e,t,n){let r=t.flags&3,i=r!==1,a=r===1||r===2,o=!n||t.orphan?new J(e,t.path,t.contents,t.orphan===!0,t.dirty===!0):t.contents===void 0?n.open(t.path):n.adopt(t.path,t.contents,t.dirty===!0),s,c=e=>{o.serial(e).catch(e=>{s??={err:e}})};t.create&&c(()=>o.materialize()),t.truncate&&c(()=>o.truncate(0));let l=()=>{if(!s)return;let{err:e}=s;throw s=void 0,e},u=t.position,d=e=>o.serial(()=>(l(),e()));return new v({read:i?e=>d(async()=>{let t=await o.pread(e,u);return u+=t.length,t}):void 0,write:a?e=>d(async()=>(t.flags&1024&&(u=await o.size()),u+=await o.pwrite(e,u),e.length)):void 0,seek:(e,t)=>d(async()=>{let n=0;if(t===1)n=u;else if(t===2)n=await o.size();else if(t!==0)throw new g(`EINVAL`);if(n+e<0)throw new g(`EINVAL`);return u=n+e,u}),pread:(e,t)=>d(()=>{if(!i)throw new g(`EBADF`);return o.pread(e,t)}),pwrite:(e,t)=>d(()=>{if(!a)throw new g(`EBADF`);return o.pwrite(e,t)}),resize:e=>d(()=>{if(!a)throw new g(`EBADF`);return o.truncate(e)}),stat:()=>d(async()=>({path:o.path,size:await o.size(),...o.orphaned?{orphan:!0}:{}})),flush:()=>d(()=>o.flush()),close:()=>o.serial(async()=>{try{l(),await o.flush()}finally{n?.closed(o)}})})}const rr=new Set([`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`]);function ir(e){return rr.has(e.op)}function ar(e){return e.op.startsWith(`pty-`)}function or(e){return e.op.startsWith(`sock-`)}function sr(e){return e.op.startsWith(`fd-path-`)||e.op===`fd-pread`||e.op===`fd-pwrite`||e.op===`fd-resize`||e.op===`fd-vfs-stat`}function cr(e){return e.op.startsWith(`fd-`)}function lr(e){return e.op.startsWith(`tty-`)}const ur=new Set([`fd-read`,`fd-write`,`fd-close`,`fd-pipe`,`fd-poll`,`fd-open-vfs`,`fd-seek`,`fd-pread`,`fd-pwrite`,`fd-resize`,`fd-vfs-stat`,`fd-path-flush`,`fd-path-unlinking`,`fd-path-unlinked`,`fd-path-renamed`,`fd-select`,`fd-info`,`fd-dup`,`fd-reserve`,`fd-meta`,`fd-setfl`,`fd-cloexec`,`fd-list`,`dl-log`,`proc-alarm`,`fd-renumber`,`fd-promote`,`fd-open-tty`,`tty-get`,`tty-set`,`tty-winsz`,`fd-flush`,`proc-spawn`,`proc-wait`,`proc-captured`,`proc-fork`,`proc-kill`,`proc-exec`,`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`,`tty-pgrp-get`,`tty-pgrp-set`,`sig-mask`,`sig-pause`,...Xn,...Un]);function dr(e){let t=e.op;return typeof t==`string`&&ur.has(t)}const fr=1048576;var pr=class{pid;fds;options;exited=!1;children;caught=0;ignored=0;interrupt=new AbortController;execChild;execTermsig;stopped=0;stops=0;resumed=Promise.resolve();wake=()=>{};stateListeners=[];net;nodes;constructor(e,t,n={}){this.pid=e,this.fds=t,this.options=n,this.children=new Bn(t,n.spawner,n.forker),this.nodes=n.fs?new tr(n.fs):void 0,this.children.onChildState=()=>this.signal(z.CHLD)}signal(e){if(this.execChild!==void 0)return Promise.resolve(this.options.kill?.(this.execChild,e)).catch(()=>void 0),e===z.KILL?`terminate`:`forward`;if(e===z.KILL)return`terminate`;if(e===z.CONT&&this.cont(),e===z.STOP)return this.stop(e);let t=An(e);if(this.ignored&t)return`ignore`;if(!(this.caught&t)){let t=On(e);return t===`stop`?this.stop(e):t}let n=On(e);if(((this.options.pendingBits?.()??0)&t)!==0&&n===`terminate`)return n;this.options.onPending?.(e);let r=this.interrupt;return this.interrupt=new AbortController,r.abort(),`deliver`}onState(e){this.stateListeners.push(e)}stop(e){if(this.stopped)return`stop`;this.stopped=e,this.stops++,this.resumed=new Promise(e=>this.wake=e);let t=this.interrupt;this.interrupt=new AbortController,t.abort();for(let t of this.stateListeners)t(`stopped`,e);return`stop`}cont(){if(this.stopped){this.stopped=0,this.wake();for(let e of this.stateListeners)e(`continued`,z.CONT)}}async syscall(e){for(;;){await this.resumed;let t=this.stops,n=await this.dispatch(e);if(!(!n.ok&&n.errno===`EINTR`&&this.stops!==t&&!this.options.hasPending?.()))return await this.resumed,n}}async dispatch(e){try{if(cr(e))return await this.fdSyscall(e);if(lr(e))return this.ttySyscall(e);if(ir(e))return this.jobSyscall(e);if(or(e))return await this.socketSyscall(e);if(ar(e)){let{ptys:t,jobs:n}=this.options;return Gn(e,{pid:this.pid,fds:this.fds,ptys:t,jobs:n})}return await this.procSyscall(e)}catch(e){if(e instanceof g||e instanceof V)return{ok:!1,errno:e.code,message:e.code};throw e}}blockingSignal(){if(this.options.hasPending?.())throw new g(`EINTR`);return this.interrupt.signal}async read(e){let t=this.fds.get(e.fd).file,n=e.peek?t.peek:t.read;if(!n)throw new g(e.peek&&t.read?`EOPNOTSUPP`:`EBADF`);if(t.tty&&this.checkForeground(t.tty),e.max<=0)return new Uint8Array;let r=m(t).readable;if(!r&&e.nonblock)throw new g(`EAGAIN`);let i=r?this.interrupt.signal:this.blockingSignal();return n.call(t,Math.max(0,Math.min(e.max,fr)),i)}async write(e,t,n=!1){let r=this.fds.get(e).file;if(!r.write)throw new g(`EBADF`);if(!m(r).writable){if(n)throw new g(`EAGAIN`);return r.write(t,this.blockingSignal())}return n?r.write(t,AbortSignal.abort()):r.write(t,this.options.hasPending?.()?AbortSignal.abort():this.interrupt.signal)}openVfsFile(e){if(!this.options.fs)throw new V(`ENOSYS`);return nr(this.options.fs,{path:e.path,flags:e.flags,position:e.position,...e.contents===void 0?{}:{contents:e.contents},...e.orphan?{orphan:!0}:{},...e.truncate?{truncate:!0}:{},...e.create?{create:!0}:{}},this.nodes)}async fdSyscall(e){if(sr(e))return this.vfsSyscall(e);switch(e.op){case`fd-read`:return{ok:!0,kind:`bytes`,bytes:await this.read(e)};case`fd-write`:return{ok:!0,kind:`json`,json:await this.write(e.fd,e.body,e.nonblock)};case`fd-close`:return await Promise.resolve(this.fds.close(e.fd)),{ok:!0,kind:`void`};case`fd-pipe`:{let e=_(),t=this.fds.install(e.read,3),n;try{n=this.fds.install(e.write,3)}catch(e){throw await Promise.resolve(this.fds.close(t)),e}return{ok:!0,kind:`json`,json:[t,n]}}case`fd-poll`:return{ok:!0,kind:`json`,json:m(this.fds.get(e.fd).file)};case`fd-open-vfs`:return{ok:!0,kind:`json`,json:this.fds.install(this.openVfsFile(e),3)};case`fd-info`:return{ok:!0,kind:`json`,json:this.fdInfo(e.fd)};case`fd-list`:return{ok:!0,kind:`json`,json:this.fds.numbers().map(e=>({fd:e,...this.fdInfo(e)}))};case`fd-meta`:{let t=this.fds.get(e.fd).file;if(!t.held)throw new g(`EBADF`);return t.heldMeta=e.meta,{ok:!0,kind:`void`}}case`fd-setfl`:return this.fds.setStatusFlags(e.fd,e.flags),{ok:!0,kind:`void`};case`fd-cloexec`:return e.on?this.fds.setCloseOnExec(e.fd):this.fds.clearCloseOnExec(e.fd),{ok:!0,kind:`void`};case`fd-dup`:return{ok:!0,kind:`json`,json:this.fds.dup(e.fd,e.min??3)};case`fd-reserve`:return{ok:!0,kind:`json`,json:this.reserve(e.fd,e.min,e.meta)};case`fd-promote`:return this.promote(e),{ok:!0,kind:`void`};case`fd-renumber`:return e.from!==e.to&&(this.fds.dup2(e.from,e.to),e.keep||await Promise.resolve(this.fds.close(e.from))),{ok:!0,kind:`void`};case`fd-open-tty`:{let t=e.name===void 0?this.controllingTerminal():this.options.jobs?.terminalNamed(e.name);if(!t)throw new g(`ENXIO`);return{ok:!0,kind:`json`,json:this.fds.install(t.file(),3)}}case`fd-select`:{let{read:t,write:n,timeoutMs:r}=e,i=this.blockingSignal();return{ok:!0,kind:`json`,json:await Jn(this.fds,t,n,r,i)}}case`fd-seek`:{let t=this.fds.get(e.fd).file;if(!t.seek)throw new g(`ESPIPE`);return{ok:!0,kind:`json`,json:await t.seek(e.offset,e.whence)}}case`fd-flush`:{let t=this.fds.get(e.fd).file;return t.flush&&await t.flush(),{ok:!0,kind:`void`}}}}async vfsSyscall(e){if(`path`in e||`from`in e){let t=this.nodes;return e.op===`fd-path-flush`?await t?.flush(e.path):e.op===`fd-path-unlinking`?await t?.unlinking(e.path):e.op===`fd-path-unlinked`?t?.unlinked(e.path):e.op===`fd-path-renamed`&&t?.renamed(e.from,e.to),{ok:!0,kind:`void`}}let t=this.fds.get(e.fd).file;if(!t.pread||!t.pwrite||!t.resize||!t.stat)throw new g(`ESPIPE`);switch(e.op){case`fd-pread`:return{ok:!0,kind:`bytes`,bytes:await t.pread(Math.min(e.max,fr),e.offset)};case`fd-pwrite`:return{ok:!0,kind:`json`,json:await t.pwrite(e.body,e.offset)};case`fd-resize`:return await t.resize(e.size),{ok:!0,kind:`void`};case`fd-vfs-stat`:return{ok:!0,kind:`json`,json:await t.stat()}}}promote(e){if(!this.fds.get(e.fd).file.held)throw new g(`EBADF`);if(e.share!==void 0){this.fds.dup2(e.share,e.fd);return}if(!this.options.fs||e.path===void 0)throw new g(`EINVAL`);let t=nr(this.options.fs,{path:e.path,flags:e.flags??0,position:e.position??0,...e.contents===void 0?{}:{contents:e.contents},...e.orphan?{orphan:!0}:{},...e.dirty?{dirty:!0}:{}},this.nodes);this.fds.installAt(e.fd,t)}reserve(e,t=3,n){if(e===void 0)return this.fds.install(y(n),Math.max(3,t));if(this.fds.has(e))throw new g(`EBADF`);return this.fds.installAt(e,y(n)),e}fdInfo(e){let t=this.fds.get(e).file,n=this.fds.statusFlags(e);return{tty:t.tty!==void 0,kind:t instanceof L?`socket`:l(t),...t.heldMeta?{meta:t.heldMeta}:{},...n===void 0?{}:{flags:n},...this.fds.closesOnExec(e)?{cloexec:!0}:{},...t.tty?.name?{name:t.tty.name}:t.pty?{name:`/dev/ptmx`}:{}}}ttySyscall(e){let t=this.tty(e.fd),n=this.options.jobs;switch(e.op){case`tty-get`:return{ok:!0,kind:`json`,json:t.tcgets()};case`tty-set`:return t.tcsets(e.termios),{ok:!0,kind:`void`};case`tty-winsz`:return{ok:!0,kind:`json`,json:t.winsize()};case`tty-pgrp-get`:return{ok:!0,kind:`json`,json:n?n.tcgetpgrp(t,this.sid()):this.pid};case`tty-pgrp-set`:if(n)n.tcsetpgrp(this.pid,t,e.pgrp);else if(e.pgrp!==this.pid)throw new g(`EPERM`);return{ok:!0,kind:`void`}}}checkForeground(e){let t=this.options.jobs;if(!t)return;let n=t.controllingTerminal(this.pid);if(n!==void 0&&n!==e)return;let r=this.pgid();if(t.tcgetpgrp(e,this.sid())!==r)throw this.ignored&An(z.TTIN)?new g(`EIO`):(t.killGroup(r,z.TTIN),new g(`EINTR`))}waitGroup(e){let t=this.options.jobs;if(!t||e>0||e===-1)return;let n=e===0?this.pgid():-e;return e=>(t.pgidOf(e)??this.pgid())===n}pgid(){return this.options.jobs?.getpgid(this.pid,0)??this.pid}sid(){return this.options.jobs?.getsid(this.pid,0)??this.pid}controllingTerminal(){let e=this.options.jobs?.controllingTerminal(this.pid);return e===void 0?this.fds.stdioTerminal():e??void 0}jobSyscall(e){let t=this.options.jobs,n=e=>{if(e!==0&&e!==this.pid)throw new g(`ESRCH`);return this.pid};switch(e.op){case`proc-setpgid`:if(t)t.setpgid(this.pid,e.pid,e.pgid);else if(n(e.pid)!==(e.pgid||this.pid))throw new g(`EPERM`);return{ok:!0,kind:`void`};case`proc-getpgid`:return{ok:!0,kind:`json`,json:t?.getpgid(this.pid,e.pid)??n(e.pid)};case`proc-getsid`:return{ok:!0,kind:`json`,json:t?.getsid(this.pid,e.pid)??n(e.pid)};case`proc-setsid`:if(!t)throw new g(`EPERM`);return{ok:!0,kind:`json`,json:t.setsid(this.pid)}}}tty(e){let t=this.fds.get(e).file,n=t.tty??t.pty?.slave;if(!n)throw new g(`ENOTTY`);return n}socketSyscall(e){return this.net??=this.options.net??new Sn,Zn(e,{fds:this.fds,net:this.net,blocking:()=>this.blockingSignal()})}async procSyscall(e){switch(e.op){case`proc-fork`:return{ok:!0,kind:`json`,json:await this.children.fork(e.state)};case`proc-spawn`:{let{file:t,argv:n,env:r,cwd:i,stdio:a,inherit:o}=e;return{ok:!0,kind:`json`,json:await this.children.spawn({file:t,argv:n,env:r,cwd:i},a,o)}}case`proc-wait`:{let t=e.nohang?this.interrupt.signal:this.blockingSignal(),n={untraced:e.untraced,continued:e.continued,inGroup:this.waitGroup(e.pid)};return{ok:!0,kind:`json`,json:await this.children.wait(e.pid,e.nohang,t,n)}}case`proc-exec`:this.execChild=e.pid,this.options.jobs?.exec(this.pid,e.pid),this.children.watch(e.pid,(e,t)=>e===`stopped`?this.stop(t):this.cont()),await this.fds.closeAll();try{let t=await this.children.wait(e.pid,!1),n=t[1]&127;return n&&(this.execTermsig=n),{ok:!0,kind:`json`,json:t}}finally{this.execChild=void 0}case`proc-kill`:if(e.sig!==0&&!kn(e.sig))throw new g(`EINVAL`);if(!await this.options.kill?.(e.pid===0?-this.pgid():e.pid,e.sig))throw new g(`ESRCH`);return{ok:!0,kind:`void`};case`dl-log`:return e.append&&this.dlLog.push(e.append),{ok:!0,kind:`json`,json:this.dlLog.slice(e.from)};case`proc-alarm`:return this.setAlarm(e.sig,e.firstMs??e.ms,e.repeat?e.ms:0,e.timer),{ok:!0,kind:`void`};case`sig-mask`:return this.caught=e.caught,this.ignored=e.ignored,{ok:!0,kind:`void`};case`sig-pause`:return this.pause();case`proc-captured`:return{ok:!0,kind:`bytes`,bytes:this.children.captured(e.pid,e.slot)}}}pause(){let e=this.blockingSignal();return new Promise((t,n)=>{e.addEventListener(`abort`,()=>n(new g(`EINTR`)),{once:!0})})}dlLog=[];alarm;alarmEvery;setAlarm(e,t,n,r){if(!kn(e))throw new g(`EINVAL`);if(this.clearAlarm(),t<=0)return;let i=r===void 0?()=>this.options.raise?.(e):()=>this.timerExpired(r);this.alarm=setTimeout(()=>{this.alarm=void 0,i(),n>0&&(this.alarmEvery=setInterval(i,n))},t)}timerExpired(e){this.options.onTimer?.(e);let t=this.interrupt;this.interrupt=new AbortController,t.abort()}clearAlarm(){clearTimeout(this.alarm),clearInterval(this.alarmEvery),this.alarm=void 0,this.alarmEvery=void 0}async exit(){this.exited||(this.exited=!0,this.clearAlarm(),await this.fds.closeAll())}};function mr(){return new Worker(new URL(`/assets/process-worker-BEpsdjWG.js`,``+import.meta.url),{type:`module`})}const hr=new WeakMap;let gr=1;function _r(e){let t=hr.get(e);return t===void 0&&hr.set(e,t=gr++),t}function vr(e){return e.numbers().filter(t=>t>2&&!e.get(t).file.held).map(t=>{let n=e.get(t),r=e.statusFlags(t),i=n.file instanceof L?`socket`:l(n.file),a=n.file.heldMeta;return{fd:t,kind:i,...i===`device`&&a&&`device`in a?{device:a}:{},...r===void 0?{}:{flags:r},...e.closesOnExec(t)?{cloexec:!0}:{},...i===`stream`?{desc:_r(n)}:{}}})}function yr(e){let t=new SharedArrayBuffer(64+pe),n=new Int32Array(t,0,16),r=new pr(e.pid,e.fds,{spawner:e.spawner,forker:e.forker,fs:e.fs,kill:e.kill,jobs:e.jobs,ptys:e.ptys,net:e.net,onPending:e=>void Atomics.or(n,8,An(e)),onTimer:e=>void Atomics.or(n,9,1<<e),hasPending:()=>Atomics.load(n,8)!==0||Atomics.load(n,9)!==0,...e.program.abi===`wasi`?{pendingBits:()=>Atomics.load(n,8)}:{},raise:e=>y(e)}),i=le({fs:e.fs,cwd:e.cwd}),a=(e.createWorker??mr)(),o=async e=>dr(e)?r.syscall(e):`op`in e&&typeof e.op==`string`&&`path`in e?fe(e):{ok:!1,errno:`ENOSYS`,message:`wasm-realm: no exec yet`},s=me(a,t,i,{dispatch:o}),c,l=new Promise(e=>c=e),u=!1,d,f=(e,t)=>{if(!u){u=!0,d=t??r.execTermsig,a.removeEventListener(`message`,m),a.removeEventListener(`error`,h),s.dispose();for(let e of[...g.keys()])_(e);de(i),a.terminate(),r.exit().then(()=>c(e),()=>c(e))}},p=t=>{t?.type===`wasm-process-exit`?f(typeof t.code==`number`?t.code:70):t?.type===`wasm-process-error`?(e.onError?.(String(t.message)),f(70)):t?.type===`wasm-thread-spawn`&&t.thread&&v(t.thread)},m=e=>p(e.data),h=t=>{t.preventDefault(),e.onError?.(String(t.message??`worker error`)),f(70)},g=new Map,_=e=>{let t=g.get(e);g.delete(e),t?.()},v=t=>{if(u)return;if(g.size>=63){e.onError?.(`more than 64 threads`),f(70);return}let n=new SharedArrayBuffer(64+pe),r=(e.createWorker??mr)(),a=me(r,n,i,{dispatch:o}),s=e=>{let n=e.data;n?.type===`wasm-thread-exit`?_(t.tid):p(n)};r.addEventListener(`message`,s),r.addEventListener(`error`,h),g.set(t.tid,()=>{r.removeEventListener(`message`,s),r.removeEventListener(`error`,h),a.dispose(),r.terminate()});let c={type:`wasm-thread-init`,pid:e.pid,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,sab:n,...e.ppid===void 0?{}:{ppid:e.ppid},thread:t};r.postMessage(c)};a.addEventListener(`message`,m),a.addEventListener(`error`,h);let ee={type:`wasm-process-init`,pid:e.pid,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,sab:t,...e.ppid===void 0?{}:{ppid:e.ppid},...e.fork?{fork:e.fork}:{fds:vr(e.fds)}};a.postMessage(ee,e.fork?[e.fork.memory.buffer]:[]);let y=e=>{r.signal(e)===`terminate`&&f(e===z.KILL?137:128+e,e)};return{pid:e.pid,exited:l,kill:(e=137)=>f(e,e>128&&e<160?e-128:void 0),signal:y,termsig:()=>d,onState:e=>r.onState(e)}}var br=class{members=new Map;foreground=new Map;terminals=new Map;add(e,t,n,r){let i=t===void 0?void 0:this.members.get(t);!i&&r&&this.terminals.set(e,r);let a={pid:e,ppid:i?.pid,pgid:i?.pgid??e,sid:i?.sid??e,signal:n};return this.members.set(e,a),a}remove(e){this.members.delete(e)}exec(e,t){let n=this.members.get(t);n&&(n.execParent=e);let r=this.members.get(e);r&&(r.execed=!0)}pgidOf(e){return this.members.get(e)?.pgid}member(e){let t=this.members.get(e);if(!t)throw new g(`ESRCH`);return t}setpgid(e,t,n){let r=this.member(t||e),i=n||r.pid;if(i<0)throw new g(`EINVAL`);let a=this.member(e);if(r.pid!==e){if(r.ppid!==e)throw new g(`ESRCH`);if(r.execed)throw new g(`EACCES`)}if(r.sid!==a.sid||r.pid===r.sid)throw new g(`EPERM`);let o=[...this.members.values()].some(e=>e.pgid===i&&e.sid===r.sid);if(i!==r.pid&&!o)throw new g(`EPERM`);r.pgid=i}getpgid(e,t){return this.member(t||e).pgid}getsid(e,t){return this.member(t||e).sid}setsid(e){let t=this.member(e);if(t.pgid===e)throw new g(`EPERM`);return t.sid=e,t.pgid=e,this.terminals.delete(e),e}terminalNamed(e){return[...new Set([...this.terminals.values(),...this.foreground.keys()])].find(t=>t.name===e)}controllingTerminal(e){let t=this.members.get(e);return t&&(this.terminals.get(t.sid)??null)}acquireTerminal(e,t){let n=this.members.get(e);return!n||n.sid!==e||this.terminals.has(e)||[...this.terminals.values()].includes(t)?!1:(this.terminals.set(e,t),this.foreground.set(t,n.pgid),!0)}killGroup(e,t){let n=[...this.members.values()].filter(t=>t.pgid===e),r=new Set(n.map(e=>e.pid));if(t!==0)for(let e of n)(e.execParent===void 0||!r.has(e.execParent))&&e.signal(t);return n.length>0}tcgetpgrp(e,t){return this.foreground.get(e)??t}tcsetpgrp(e,t,n){let r=this.member(e);if(![...this.members.values()].some(e=>e.pgid===n&&e.sid===r.sid))throw new g(`EPERM`);this.foreground.set(t,n)}signalOwnedForeground(e,t){let n=this.foreground.get(e);n!==void 0&&this.killGroup(n,t)}signalForeground(e,t,n){this.killGroup(this.tcgetpgrp(e,t),n)}};const xr=new Set([`wasi_snapshot_preview1`,`wasix_32v1`,`wasi`,`env`]),Sr={127:`i32`,126:`i64`,125:`f32`,124:`f64`};function Cr(e){let t={at:8,u32(){let n=0,r=0;for(;;){let i=e[t.at++];if(n|=(i&127)<<r,!(i&128))return n>>>0;r+=7}},name(){let n=t.u32(),r=new TextDecoder().decode(e.subarray(t.at,t.at+n));return t.at+=n,r},limits(){let n=e[t.at++];return{initial:t.u32(),maximum:n&1?t.u32():void 0,shared:!!(n&2)}},sections(n){for(;t.at<e.length;){let r=e[t.at++],i=t.u32(),a=t.at+i;if(n(r,a))return;t.at=a}},imports(n){let r=t.u32();for(let i=0;i<r;i++){let r=t.name(),i=t.name(),a=e[t.at++],o=-1;if(a===0)o=t.u32();else if(a===1)t.at++,t.limits();else if(a===2){let e=t.at;if(n(r,i,a,o))return;t.at=e,t.limits();continue}else a===3?t.at+=2:a===4&&(t.at++,t.u32());if(n(r,i,a,o))return}}};return t}function wr(e){let t=Cr(e),n;return t.sections(e=>e===2&&(t.imports((e,r,i)=>i===2&&(n={module:e,name:r,...t.limits()},!0)),!0)),n}function Tr(e){let t=Cr(e),n=[],r={};return t.sections(i=>{if(i===1){let r=t.u32();for(let i=0;i<r;i++){t.at++;let r=t.u32();t.at+=r;let i=t.u32();n.push(i===0?`none`:i===1?Sr[e[t.at]]??`other`:`other`),t.at+=i}return!1}return i===2&&(t.imports((e,t,i,a)=>(i===0&&!xr.has(e)&&((r[e]??={})[t]=n[a]??`other`),!1)),!0)}),r}const Er=/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;function Dr(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=!1,a=i.replace(Er,(n,r)=>{let i=Object.hasOwn(t,r)?t[r]:void 0;return i===void 0&&(e=!0),i??``});e||(n[r]=a)}return n}function Or(e,t){if(!e)return t;let n=Dr(e,t);if(!(t.GIT_CONFIG_SYSTEM!==void 0&&pn(`GIT_CONFIG_SYSTEM`,t.GIT_CONFIG_SYSTEM))||!(`GIT_CONFIG_NOSYSTEM`in n))return{...n,...t};let{GIT_CONFIG_NOSYSTEM:r,...i}=n;return{...i,...t}}function kr(e){return e.USER===void 0||`LOGNAME`in e?e:{...e,LOGNAME:e.USER}}function Ar(e,t){return!/^(ba)?sh$/.test(Q(e))||`BASH_FUNC_secret%%`in t?t:{...t,"BASH_FUNC_secret%%":`() { command secret "$@" || return; local __slicc_env; if __slicc_env=$(command secret shell-env "$@" 2>/dev/null); then eval "$__slicc_env"; fi; return 0; }`}}const Y=new Map,jr=new Map,Mr=new Map(Object.entries(B).map(([e,t])=>[t,e])),X=/^\/(?:usr\/)?bin\/([^/]+)$/,Z=/^(.*\/node_modules\/(?:@[^/]+\/)?[^/]+)\//,Nr=/locateFile\(\s*["']([^"'/]+\.wasm)["']\s*\)/;let Pr=4e4;function Fr(e){return e.glue===e.module}const Ir=[0,97,115,109];function Lr(e){return Ir.every((t,n)=>e[n]===t)}function Rr(e){return e.endsWith(`.js`)?`${e.slice(0,-3)}.wasm`:`${e}.wasm`}async function zr(e,t){let n=e.readFileRange,r;try{r=n?new TextDecoder().decode(await n.call(e,t,0,256)):(await e.readFile(t)).slice(0,256)}catch{return!1}return r.startsWith(`#!`)?he(r)!==`node`:!1}function Br(e){return X.exec(e)?.[1]??Q(e)}function Q(e){return e.slice(e.lastIndexOf(`/`)+1)}function Vr(e){return{exists:t=>e.fs.exists(t),readDir:async t=>(await e.fs.readdir(t)).map(e=>({name:e})),readFile:t=>e.fs.readFile(t)}}function Hr(e){return ie(Vr(e),ne)}function Ur(e,t){return`${e}:${t.size}:${t.mtime.getTime()}`}function Wr(e,t){return Y.set(e,t),t.catch(()=>Y.delete(e)),t}async function Gr(e,t){let n=Ur(t,await e.fs.stat(t));return Y.get(n)??Wr(n,ce(t=>e.fs.readFileBuffer(t),t))}function Kr(e,t){return jr.set(e,{memory:wr(t),foreign:Tr(t)}),Wr(e,se(t))}async function qr(e,t){let n=Ur(t,await e.fs.stat(t)),r=Y.get(n),i=await(r&&jr.has(n)?r:Kr(n,await e.fs.readFileBuffer(t))),{memory:a,foreign:o={}}=jr.get(n)??{};return{module:i,foreign:o,...a?{memory:a}:{}}}async function Jr(e,t,n){if(WebAssembly.Module.customSections(n,`name`).length>0)return;let r=`${t}.names`;if(await e.fs.exists(r))return r;let i=Z.exec(t)?.[1];if(i===void 0)return;let a=`${i}-names${r.slice(i.length)}`;return await e.fs.exists(a)?a:void 0}async function Yr(e,t){let n;try{let r=await e.fs.stat(t);if(!r.isFile)return!1;n=Ur(t,r)}catch{return!1}if(Y.has(n))return!0;let r;try{r=await e.fs.readFileBuffer(t)}catch{return!1}return Lr(r)?(Kr(n,r).catch(()=>void 0),!0):!1}function Xr(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return t}function Zr(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}async function Qr(e){if(!e.file.read)return new Uint8Array;let t=[],n=0;for(let r=await e.file.read(65536);r.length>0;)t.push(r),n+=r.length,r=await e.file.read(65536);let r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.length;return r}async function $(e,t,n){if(n.length===0||!e.has(t))return;let r=e.get(t).file;try{await r.write?.(n)}catch{}}function $r(e,t){return e.has(t)&&e.get(t).file.tty!==void 0}function ei(e){return{...$r(e,0)?{}:{[ee]:`0`},...$r(e,1)?{}:{[h]:`0`}}}function ti(e){return{pid:e.pid,exited:e.exited,termsig:e.termsig,onState:t=>e.onState(t)}}const ni=new WeakMap;var ri=class{ctx;processConfig;onError;gate;lookup;live=new Set;shellChildren=new Set;wasmByPid=new Map;shellByPid=new Map;installed;jobs=new br;ptys=new Hn((e,t)=>this.jobs.signalOwnedForeground(e,t));leader;net;constructor(e,t,n,r,i){this.ctx=e,this.processConfig=t,this.onError=n,this.gate=r,this.lookup=i,this.net=wn(Tn(t?.owner));let a=Tn(t?.owner);hn(this.net,{process:t,tls:{owner:a}})}commands(){return this.lookup?this.lookup():(this.installed??=Hr(this.ctx),this.installed)}async launch(e){let t=Fr(e),n=``,r,i,a={};try{t?{module:r,memory:i,foreign:a}=await qr(this.ctx,e.module):(n=await this.ctx.fs.readFile(e.glue),r=await Gr(this.ctx,e.module)),e.signal?.throwIfAborted()}catch(t){throw await e.fds.closeAll(),t}let o=Ar(e.argv0,kr(Or(e.defaults,e.env)));t&&await this.pythonPackages(e,o);let s=t&&o.SLICC_WASM_BACKTRACE===`1`?await Jr(this.ctx,e.module,r):void 0;return this.start({...e,env:o,program:t?{abi:`wasi`,glue:n,module:r,...i?{memory:i}:{},...Object.keys(a).length?{foreign:a}:{},...s?{names:s}:{}}:{glue:n,module:r}})}async pythonPackages(e,t){let n=Z.exec(e.module)?.[1];if(n)try{let r=Vr(this.ctx),i=await r.readFile(`${n}/package.json`,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i)),o=typeof a.name==`string`?a.name:n,s=ae(n,o,a.slicc?.python).interpreter;if(!s)return;let{packages:c}=await this.pythonScan(r),l=await re(this.ctx.fs,t.HOME??`/home`,s,c);if(l.length>0){let t=`${s.abi}-${s.platform}`,n=`${e.argv0}: not for ${t}, left off the path: ${l.map(e=>e.pkg).join(`, `)}\n`;await $(e.fds,2,new TextEncoder().encode(n))}}catch{}}pythonScan(e){return this.commands().then(t=>{let n=ni.get(t);return n||(n=oe(e,ne),ni.set(t,n)),n})}start(e){let t=this.processConfig?.processManager,{pid:n}=this.register(`wasm`,[e.argv0,...e.args],e.cwd,e.env,e.ppid),r=e.fds.stdioTerminal(),i=yr({pid:n,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,fds:e.fds,fs:this.ctx.fs,onError:this.onError,spawner:this.spawner(n),forker:this.forker(n,e),kill:(e,t)=>this.kill(e,t),jobs:this.jobs,ptys:this.ptys,net:this.net,...e.fork?{fork:e.fork}:{},...e.ppid===void 0?{}:{ppid:e.ppid}});this.live.add(i),this.wasmByPid.set(n,i),this.leader??=n,this.jobs.add(n,e.ppid,e=>i.signal(e),r);let a=t?.onSignal((e,t)=>{e.pid===n&&i.signal(B[t])});return i.exited.then(e=>{this.live.delete(i),this.wasmByPid.delete(n),this.jobs.remove(n),a?.(),this.processConfig&&t?.exit(n,e)}),i}kill(e,t){if(e<0)return this.jobs.killGroup(-e,t);let n=this.wasmByPid.get(e);if(n)return t!==0&&n.signal(t),!0;let r=this.shellByPid.get(e);if(r)return t!==0&&r(t),!0;let i=this.processConfig?.processManager;if(!i)return!1;if(t===0)return i.get(e)!==null;let a=Mr.get(t);return a===void 0?!1:this.gate?this.killOutside(e,a):i.signal(e,a)}async killOutside(e,t){if(await this.gate?.(`kill`,[`-${t.slice(3)}`,String(e)],{}))throw new g(`EPERM`);return this.processConfig?.processManager.signal(e,t)??!1}listen(e){return new v(this.net.listen(e))}signalAll(e){for(let t of this.live)t.signal(e)}signalTerminal(e,t){this.leader!==void 0&&this.jobs.signalForeground(e,this.leader,t)}killAll(e){for(let t of this.live)t.kill(e);for(let e of this.shellChildren)e.abort()}async resolve(e,t,n){let r=X.exec(e)?.[1]??(e.includes(`/`)?void 0:e);if(r!==void 0){let e=await this.commands(),t=e.get(r);if(t?.script)return;if(t)return{glue:t.glue,module:t.wasm,argv0:t.argv0,...t.args?{prefixArgs:t.args}:{},defaults:t.env};let n=r===`sh`?e.get(`bash`):void 0;return n&&{glue:n.glue,module:n.wasm,argv0:`sh`,defaults:n.env}}let i=this.ctx.fs.resolvePath(n,e);if(!await this.ctx.fs.exists(i)||await zr(this.ctx.fs,i))return;let a=Rr(i);return await this.ctx.fs.exists(a)?{glue:i,module:a,argv0:Q(t||e)}:await Yr(this.ctx,i)?{glue:i,module:i,argv0:Q(t||e).replace(/\.wasm$/,``)}:this.packagedCopy(i,t||e)}async packagedCopy(e,t){let n=Z.exec(e)?.[1];if(n===void 0)return;let r;try{r=await this.ctx.fs.readFile(e)}catch{return}let i=Nr.exec(r)?.[1];if(i!==void 0){for(let e of(await this.commands()).values())if(e.wasm.startsWith(`${n}/`)&&e.wasm.endsWith(`/${i}`))return{glue:e.glue,module:e.wasm,argv0:Q(t),defaults:e.env}}}forker(e,t){return async(n,r)=>ti(this.start({...t,cwd:n.cwd??t.cwd,fds:r,ppid:e,fork:n}))}async scriptCommand(e){let t=X.exec(e)?.[1]??(e.includes(`/`)?void 0:e);if(t===void 0)return;let n=(await this.commands()).get(t);return n?.script?n:void 0}async interpreted(e){let t=await this.scriptCommand(e.file);if(!t&&(!e.file.includes(`/`)||X.test(e.file)))return;let n=t?.script??this.ctx.fs.resolvePath(e.cwd,e.file),r;try{r=(await this.ctx.fs.readFileBuffer(n)).subarray(0,256)}catch{return}if(r[0]!==35||r[1]!==33)return;let[i,...a]=new TextDecoder().decode(r).slice(2).split(`
|
|
12
12
|
`)[0].trim().split(/[ \t]+/);if(!i)return;let o=await this.resolve(i,i,e.cwd);if(!o)return;let s=t?.env?{...o,defaults:{...o.defaults,...t.env}}:o,c=a.join(` `);return{target:s,file:i,args:[...o.prefixArgs??[],...c?[c]:[],t?n:e.file,...e.argv.slice(1)]}}spawner(e){return async(t,n)=>{let r=await this.resolve(t.file,t.argv[0]??t.file,t.cwd),i=r?{target:r,file:t.file,args:[...r.prefixArgs??[],...t.argv.slice(1)]}:await this.interpreted(t);if(!i){if(!await this.shellRuns(t))throw n.closeAll().catch(()=>void 0),new V(`ENOENT`);return this.runShellChild(t,n,e)}let a=await this.gate?.(Br(i.file),i.args,t.env);return a?this.deniedChild(t,n,e,a):ti(await this.launch({...i.target,args:i.args,env:t.env,cwd:t.cwd,fds:n,ppid:e}))}}async shellRuns(e){let t=X.exec(e.file)?.[1]??(e.file.includes(`/`)?void 0:e.file);if(t===void 0)return this.ctx.fs.exists(this.ctx.fs.resolvePath(e.cwd,e.file));let n=this.ctx.getRegisteredCommands?.();return!n||n.includes(t)||!this.ctx.exec?!0:(await this.ctx.exec(`command`,{args:[`-v`,t],cwd:e.cwd,env:e.env,replaceEnv:!0})).exitCode===0}deniedChild(e,t,n,r){let{pid:i}=this.register(`shell`,e.argv,e.cwd,e.env,n),a=(async()=>(await $(t,2,new TextEncoder().encode(r.stderr)),await t.closeAll(),r.exitCode))();return this.processConfig&&a.then(e=>this.processConfig?.processManager.exit(i,e)),{pid:i,exited:a}}runShellChild(e,t,n){let r=this.ctx.exec;if(!r)throw t.closeAll().catch(()=>void 0),new V(`ENOSYS`);let{pid:i,abort:a}=this.register(`shell`,e.argv,e.cwd,e.env,n),o=a??new AbortController,s=()=>o.abort();this.ctx.signal?.addEventListener(`abort`,s,{once:!0}),this.ctx.signal?.aborted&&s();let c,l=e=>{On(e)===`terminate`&&(c??=e,o.abort())};this.shellChildren.add(o),this.shellByPid.set(i,l),this.jobs.add(i,n,l);let u=this.processConfig?.processManager.onSignal((e,t)=>{e.pid===i&&l(B[t])}),d=(async()=>{try{let n=$r(t,0),i=t.has(0)&&!n?await Qr(t.get(0)):new Uint8Array,a=await r(e.file,{args:e.argv.slice(1),cwd:e.cwd,env:{...e.env,...ei(t)},replaceEnv:!0,stdin:Xr(i),stdinKind:`bytes`,signal:o.signal});return await $(t,1,a.stdoutKind===`bytes`?Zr(a.stdout):new TextEncoder().encode(a.stdout)),await $(t,2,new TextEncoder().encode(a.stderr)),a.exitCode}catch(n){let r=n instanceof Error?n.message:String(n);return await $(t,2,new TextEncoder().encode(`${e.file}: ${r}\n`)),126}finally{await t.closeAll(),this.shellChildren.delete(o),this.shellByPid.delete(i),this.jobs.remove(i),u?.(),this.ctx.signal?.removeEventListener(`abort`,s)}})();return this.processConfig&&d.then(e=>this.processConfig?.processManager.exit(i,e)),{pid:i,exited:d,termsig:()=>c}}register(e,t,n,r,i){let a=this.processConfig;return a?a.processManager.spawn({kind:e,argv:t,cwd:n,env:r,owner:a.owner,ppid:i??a.getParentPid?.()}):{pid:Pr++}}};const ii=`usage: wasm [-t] [--argv0 NAME] [--module PATH] [--listen [HOST:]PORT] PROGRAM [ARGS...]
|
|
13
13
|
wasm --list
|
|
14
14
|
wasm --login
|
|
@@ -92,7 +92,7 @@ Examples:
|
|
|
92
92
|
--authorize-url 'https://auth.x.ai/oauth2/auth?...' \\
|
|
93
93
|
--redirect-pattern 'http://127.0.0.1:56121/*'
|
|
94
94
|
curl -H "Authorization: Bearer $(oauth-token github)" https://api.github.com/user
|
|
95
|
-
`}async function d(n,r){let i=await import(`./account-store-
|
|
95
|
+
`}async function d(n,r){let i=await import(`./account-store-BY7L2nue.js`).then(e=>e.t),a=await import(`./providers-qFtC1ctt.js`).then(e=>e.r);if(t(n,{valueFlags:c}))return{stdout:u(),stderr:``,exitCode:0};let o=e(n,{value:c,bool:l});if(`error`in o)return H(`oauth-token: ${o.error}`);if(o.bools.has(`--list`))return U(i.getAccounts,a.getRegisteredProviderIds,a.getRegisteredProviderConfig,i.getOAuthAccountInfo);if(o.bools.has(`--check`))return T(o.positionals);if(o.bools.has(`--expire`))return O(o.positionals);if(o.bools.has(`--renew`))return k(o.positionals);if(o.values.has(`--from-file`)||o.bools.has(`--intercept`))return L(o,n,r);let s=f(o);if(!s.ok)return s.result;let d=o.bools.has(`--force-login`),m=p(o,i,a);if(!m.ok)return m.result;let _=h(m.value,a.getRegisteredProviderConfig);if(!_.ok)return _.result;if(!d){let e=await g(m.value,_.value,i.getOAuthAccountInfo,i.ensureOAuthMaskReplica,s.value);if(e?.ok)return e.value;if(e)return e.result}return b(m.value,_.value,s.value,i.getOAuthAccountInfo,i.ensureOAuthMaskReplica)}function f(e){if(!e.values.has(`--scope`))return{ok:!0,value:void 0};let t=e.values.get(`--scope`)?.trim();return!t||t.startsWith(`-`)?{ok:!1,result:H(`oauth-token: --scope requires a value`)}:{ok:!0,value:t}}function p(e,t,n){if(e.values.has(`--provider`)){let t=e.values.get(`--provider`);return t?{ok:!0,value:t}:{ok:!1,result:H(`oauth-token: --provider requires a value`)}}if(e.positionals.length>0)return{ok:!0,value:e.positionals[0]};let r=t.getSelectedProvider();if(m(n.getRegisteredProviderConfig(r)))return{ok:!0,value:r};let i=n.getRegisteredProviderIds().find(e=>m(n.getRegisteredProviderConfig(e)));return i?{ok:!0,value:i}:{ok:!1,result:H(`oauth-token: no OAuth providers configured`)}}function m(e){return!!(e?.isOAuth&&(e.onOAuthLogin||e.onOAuthLoginIntercepted))}function h(e,t){let n=t(e);return n?m(n)?{ok:!0,value:n}:{ok:!1,result:H(`oauth-token: provider "${e}" is not an OAuth provider`)}:{ok:!1,result:H(`oauth-token: unknown provider "${e}"`)}}async function g(e,t,n,r,i){let a=n(e);return a&&!a.expired?_(e,a,i,r):!a?.expired||!t.onSilentRenew||!await C(t.onSilentRenew)?null:_(e,n(e),i,r)}async function _(e,t,n,r){if(n&&!s(t?.scopes,n))return null;let i=v(t?.maskedValue,t?.token);if(i)return{ok:!0,value:i};if(!t?.token)return null;let a=await r(e)??{},o=v(a.maskedValue,t.token);return o?{ok:!0,value:o}:{ok:!1,result:y(e,a.error)}}function v(e,t){return!e||t&&e===t?null:{stdout:`${e}\n`,stderr:``,exitCode:0}}function y(e,t){return H(`oauth-token: token held for ${e} but no masked replica${t?` (${t})`:``}`)}async function b(e,t,n,r,i){try{let a=await x(e,t,n);return a.error?a.error:S(e,r,i,a.succeeded)}catch(t){let n=t instanceof Error?t.message:String(t);return t instanceof Error&&t.name===`OAuthLaunchError`?(console.error(`[oauth-token] Provider ${e}: login could not be shown:`,n),H(`oauth-token: ${n}`)):(console.error(`[oauth-token] Provider ${e}: login failed:`,n),H(`oauth-token: login failed: ${n}`))}}async function x(e,t,n){let r=n?{scopes:n}:void 0,i=!1,a=()=>{i=!0};if(t.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:n}=await import(`./oauth-service-MWzqRq2q.js`),o=await n();return o?(await t.onOAuthLoginIntercepted(o,a,r),{error:null,succeeded:i}):{error:H(`oauth-token: provider "${e}" needs the controlled-browser interceptor, but no CDP transport is available in this runtime.`),succeeded:!1}}if(t.onOAuthLogin){let{createOAuthLauncher:e}=await import(`./oauth-service-MWzqRq2q.js`);return await t.onOAuthLogin(e(),a,r),{error:null,succeeded:i}}return{error:H(`oauth-token: provider "${e}" has no OAuth login hook`),succeeded:!1}}async function S(e,t,n,r){if(!r)return console.error(`[oauth-token] Provider ${e}: interactive login was not completed`),H(`oauth-token: interactive login was not completed (cancelled, timed out, or no one could approve it)`);let i=t(e);if(i?.token&&!i.expired){let t=v(i.maskedValue,i.token);if(t)return t;let r=await n(e)??{};return v(r.maskedValue,i.token)||y(e,r.error)}return i?.token?H(`oauth-token: login completed but the saved token is already expired`):(console.error(`[oauth-token] Provider ${e}: login completed but no token was saved`),H(`oauth-token: login completed but no token was saved`))}async function C(e){try{return await e()!==null}catch{return!1}}function w(e,t,n,r,i){let a=e[0];if(a)return a;let o=n();return r(o)?.[t]?o:i().find(e=>r(e)?.[t])}async function T(e){let{getSelectedProvider:t,getOAuthAccountInfo:n}=await import(`./account-store-BY7L2nue.js`).then(e=>e.t),{getRegisteredProviderConfig:r,getRegisteredProviderIds:i}=await import(`./providers-qFtC1ctt.js`).then(e=>e.r),a=w(e,`onValidateToken`,t,r,i);if(!a)return H(`oauth-token --check: no provider supports an upstream token check`);let o=r(a);if(!o)return H(`oauth-token --check: unknown provider "${a}"`);if(!o.onValidateToken)return H(`oauth-token --check: provider "${a}" cannot be checked upstream (no onValidateToken hook); only locally stored state is known.`);let s=n(a),c=[`oauth-token --check ${a}`,` stored token: ${F(s)}`];if(!s)return c.push(` upstream check: skipped — nothing to check`,...M(a)),{stdout:c.join(`
|
|
96
96
|
`)+`
|
|
97
97
|
`,stderr:``,exitCode:3};let l=await j(o);if(l?.status===`accepted`){let e=l.userName?` (as ${l.userName})`:``;return c.push(` upstream check: ACCEPTED${e} — the provider honoured the token`),{stdout:c.join(`
|
|
98
98
|
`)+`
|
|
@@ -100,7 +100,7 @@ Examples:
|
|
|
100
100
|
`)+`
|
|
101
101
|
`,stderr:``,exitCode:e}}return c.push(` upstream check: UNKNOWN — the check itself could not run${D(l?.detail)}`,` This says nothing about the token. Retry when the provider is reachable.`),{stdout:c.join(`
|
|
102
102
|
`)+`
|
|
103
|
-
`,stderr:``,exitCode:1}}function E(e,t,n){let r=` upstream check: REJECTED — the provider refused the token${D(n)}`;return t?[r,` A stored refresh token may still be able to replace it — silent renewal`,` has not been tried yet.`,``,` → Next: oauth-token ${e} --renew`,` If that is declined too: oauth-token ${e} --force-login (needs a human).`]:[r,` This provider has no silent renewal, so nothing automated is left.`,...M(e)]}function D(e){return e?` (${e})`:``}async function O(e){let{getAccounts:t,getSelectedProvider:n,saveOAuthAccount:r}=await import(`./account-store-
|
|
103
|
+
`,stderr:``,exitCode:1}}function E(e,t,n){let r=` upstream check: REJECTED — the provider refused the token${D(n)}`;return t?[r,` A stored refresh token may still be able to replace it — silent renewal`,` has not been tried yet.`,``,` → Next: oauth-token ${e} --renew`,` If that is declined too: oauth-token ${e} --force-login (needs a human).`]:[r,` This provider has no silent renewal, so nothing automated is left.`,...M(e)]}function D(e){return e?` (${e})`:``}async function O(e){let{getAccounts:t,getSelectedProvider:n,saveOAuthAccount:r}=await import(`./account-store-BY7L2nue.js`).then(e=>e.t),{getRegisteredProviderConfig:i,getRegisteredProviderIds:a}=await import(`./providers-qFtC1ctt.js`).then(e=>e.r),o=w(e,`onSilentRenew`,n,i,a);if(!o)return H(`oauth-token --expire: no provider supports silent renewal`);let s=i(o);if(!s)return H(`oauth-token --expire: unknown provider "${o}"`);if(!s.onSilentRenew)return H(`oauth-token --expire: provider "${o}" has no onSilentRenew hook`);let c=t().find(e=>e.providerId===o);if(!c?.accessToken)return H(`oauth-token --expire: no stored OAuth account for "${o}"`);try{await r({...c,accessToken:c.accessToken,tokenExpiresAt:Date.now()-1e3})}catch(e){return H(`oauth-token --expire: failed to update "${o}": ${e instanceof Error?e.message:String(e)}`)}return{stdout:`oauth-token ${o}: stored token marked expired; next network op will trigger silent renewal.\n`,stderr:``,exitCode:0}}async function k(e){let{getSelectedProvider:t,getOAuthAccountInfo:n}=await import(`./account-store-BY7L2nue.js`).then(e=>e.t),{getRegisteredProviderConfig:r,getRegisteredProviderIds:i}=await import(`./providers-qFtC1ctt.js`).then(e=>e.r),a=w(e,`onSilentRenew`,t,r,i);if(!a)return H(`oauth-token --renew: no provider supports silent renewal`);let o=r(a);if(!o)return H(`oauth-token --renew: unknown provider "${a}"`);if(!o.onSilentRenew)return H(`oauth-token --renew: provider "${a}" has no onSilentRenew hook`);let s=n(a),c=s?.token,l=[`oauth-token --renew ${a}`];l.push(` stored token: ${F(s)}`);let u=null,d=null;try{u=await o.onSilentRenew()}catch(e){d=e instanceof Error?e.message:String(e)}if(u){let e=n(a),t=!!(c&&e?.token&&c!==e.token);return l.push(` silent renewal: SUCCESS${t?` — token refreshed`:` (token unchanged)`}`),l.push(` renewed token: ${F(e)}`),{stdout:l.join(`
|
|
104
104
|
`)+`
|
|
105
105
|
`,stderr:``,exitCode:0}}if(d)return l.push(` silent renewal: ERROR — ${d}`,...P(a)),{stdout:l.join(`
|
|
106
106
|
`)+`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./slicc-version-
|
|
1
|
+
import{n as e}from"./slicc-version-VBKLWgCV.js";import{a as t}from"./just-bash-compat-B-SPHuh_.js";const n=`/dev/null`;function r(e){return e.oldName===n}function i(e){return e.newName===n}function a(e){let t=e.indexOf(` `);return(t===-1?e.replace(/\s+\d{4}-\d\d-\d\d[ T].*$/,``):e.slice(0,t)).trimEnd()}const o=/^@@+ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/;function s(e){let t=o.exec(e);return t?{oldStart:Number(t[1]),oldCount:t[2]===void 0?1:Number(t[2]),newStart:Number(t[3]),newCount:t[4]===void 0?1:Number(t[4])}:null}function c(e,t){return{...e,oldLines:[],newLines:[],oldSeen:0,newSeen:0,changeSeen:!1,leadingContext:0,trailingContext:0,lastSide:null,oldNoNewlineAtEof:!1,newNoNewlineAtEof:!1,raw:[t]}}function l(e){return{oldStart:e.oldStart,newStart:e.newStart,oldLines:e.oldLines,newLines:e.newLines,leadingContext:e.leadingContext,trailingContext:e.trailingContext,oldNoNewlineAtEof:e.oldNoNewlineAtEof,newNoNewlineAtEof:e.newNoNewlineAtEof,raw:e.raw}}function u(e){return e.oldSeen>=e.oldCount&&e.newSeen>=e.newCount}function d(e,t){e.oldLines.push(t),e.newLines.push(t),e.oldSeen++,e.newSeen++,e.lastSide=`both`,e.changeSeen?e.trailingContext++:e.leadingContext++}function f(e,t,n){t===`old`?(e.oldLines.push(n),e.oldSeen++):(e.newLines.push(n),e.newSeen++),e.lastSide=t,e.changeSeen=!0,e.trailingContext=0}function p(e,t){if(t.startsWith(`\\`))return(e.lastSide===`old`||e.lastSide===`both`)&&(e.oldNoNewlineAtEof=!0),(e.lastSide===`new`||e.lastSide===`both`)&&(e.newNoNewlineAtEof=!0),e.raw.push(t),!0;if(t===``)return d(e,``),e.raw.push(` `),!0;let n=t.slice(1);switch(t[0]){case` `:d(e,n);break;case`-`:f(e,`old`,n);break;case`+`:f(e,`new`,n);break;default:return!1}return e.raw.push(t),!0}function m(e){e.hunk&&e.current&&e.current.hunks.push(l(e.hunk)),e.hunk=null,e.complete=!1}function h(e,t){let n=e.hunk;if(!n)return!1;if(e.complete){let r=t.startsWith(`\\`);return r&&p(n,t),m(e),r}return p(n,t)?(u(n)&&(e.complete=!0),!0):(m(e),!1)}function g(e){let t={files:[],current:null,hunk:null,complete:!1,pendingOld:null};for(let n of e.split(`
|
|
2
2
|
`)){if(h(t,n))continue;if(n.startsWith(`--- `)){t.pendingOld=a(n.slice(4));continue}if(n.startsWith(`+++ `)&&t.pendingOld!==null){t.current={oldName:t.pendingOld,newName:a(n.slice(4)),hunks:[]},t.files.push(t.current),t.pendingOld=null;continue}t.pendingOld=null;let e=s(n);e&&t.current&&(t.hunk=c(e,n))}return m(t),t.files.filter(e=>e.hunks.length>0)}function _(e){return{oldName:e.newName,newName:e.oldName,hunks:e.hunks.map(e=>({oldStart:e.newStart,newStart:e.oldStart,oldLines:e.newLines,newLines:e.oldLines,leadingContext:e.leadingContext,trailingContext:e.trailingContext,oldNoNewlineAtEof:e.newNoNewlineAtEof,newNoNewlineAtEof:e.oldNoNewlineAtEof,raw:v(e)}))}}function v(e){return e.raw.map((t,n)=>n===0?`@@ -${e.newStart},${e.newLines.length} +${e.oldStart},${e.oldLines.length} @@`:t.startsWith(`-`)?`+${t.slice(1)}`:t.startsWith(`+`)?`-${t.slice(1)}`:t)}function y(e){if(e===``)return{lines:[],newlineAtEof:!0};let t=e.endsWith(`
|
|
3
3
|
`),n=e.split(`
|
|
4
4
|
`);return t&&n.pop(),{lines:n,newlineAtEof:t}}function b(e){return e.lines.length===0?``:e.lines.join(`
|
package/dist/ui/assets/{session-command-memory-XnFNRIFA.js → session-command-memory-B2ZvAv75.js}
RENAMED
|
@@ -18,5 +18,5 @@ import{r as e,t}from"./subcommand-help-CgO7wRS5.js";const n=`session — export
|
|
|
18
18
|
usage: session search <query> [--limit N]
|
|
19
19
|
`}}function i(e,t,n){if(!e||e.startsWith(`-`))return{ok:!1,stderr:`session read: ${t} requires a number\n`};let r=Number(e);return!Number.isFinite(r)||r<n?{ok:!1,stderr:`session read: ${t} must be ${n===0?`a non-negative integer`:`a positive integer`}\n`}:{ok:!0,n:Math.floor(r)}}function a(e){let t=e.slice(1),n,r,a;for(let e=0;e<t.length;e++){let o=t[e];if(o===`--from`||o===`--count`){let n=i(t[e+1],o,o===`--from`?0:1);if(!n.ok)return n;o===`--from`?r=n.n:a=n.n,e++}else if(o.startsWith(`-`))return{ok:!1,stderr:`session read: unknown flag ${o}\n`};else if(n===void 0)n=o;else return{ok:!1,stderr:`session read: unexpected argument ${JSON.stringify(o)}\n`}}return n?{ok:!0,id:n,from:r,count:a}:{ok:!1,stderr:`session read: missing id
|
|
20
20
|
usage: session read <id> [--from N --count M]
|
|
21
|
-
`}}async function o(e,t){let n=r(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};try{let{searchSessions:e}=await import(`./session-search-index-
|
|
22
|
-
`)}\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`session search: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function s(e,t){let n=a(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};try{let{readSessionHit:e,SESSION_READ_BYTE_CAP:r}=await import(`./session-search-index-
|
|
21
|
+
`}}async function o(e,t){let n=r(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};try{let{searchSessions:e}=await import(`./session-search-index-CL6tNMTB.js`),r=await e(t.fs,n.query,{limit:n.limit});if(r.length===0)return{stdout:`# session search: ${n.query} (0 hits)\nNo matching messages in /sessions.\n`,stderr:``,exitCode:0};let i=[`# session search: ${n.query} (${r.length} hits)`];for(let e of r)i.push(`id=${e.id} score=${e.score.toFixed(2)} kind=${e.echoKind} role=${e.role}`),i.push(` session=${JSON.stringify(e.sessionTitle)} path=${e.path}`),i.push(` ${e.excerpt}`),i.push(``);return i.push(`Use: session read <id> [--from N --count M]`),{stdout:`${i.join(`
|
|
22
|
+
`)}\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`session search: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function s(e,t){let n=a(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};try{let{readSessionHit:e,SESSION_READ_BYTE_CAP:r}=await import(`./session-search-index-CL6tNMTB.js`),i=await e(t.fs,n.id,{from:n.from,count:n.count});return i?{stdout:`# session read: ${n.id}\npath=${i.hit.path} title=${JSON.stringify(i.hit.sessionTitle)}\nmessages ${i.from}–${i.from+i.count-1} of ${i.total} (remaining: ${i.remaining}${i.truncated?`, truncated to byte cap`:``})\nbyteCap=${r}\n\n`+i.text,stderr:``,exitCode:0}:{stdout:``,stderr:`session read: unknown id ${JSON.stringify(n.id)}\n`,exitCode:1}}catch(e){return{stdout:``,stderr:`session read: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function c(r,i,a,c){return r===`help`?{stdout:c?e(`session`,c,n):n,stderr:``,exitCode:0}:t(i.slice(1))?{stdout:e(`session`,r,n),stderr:``,exitCode:0}:r===`search`?o(i,a):s(i,a)}async function l(e,n,r){let{isMemoryV2Enabled:i}=await import(`./memory-v2-flag-Bw4vo1l_.js`),a=i();if(t(e)){if(!a)return{stdout:r,stderr:``,exitCode:0};let t=e[0];return c(`help`,e,n,t&&t!==`--help`&&t!==`-h`?t:void 0)}let o=e[0];return o===`search`||o===`read`?a?c(o,e,n):{stdout:``,stderr:`session export: unknown subcommand ${JSON.stringify(o)} — usage: session export [--id <id>] [--output <path>]\n`,exitCode:1}:a?{stdout:``,stderr:`session: unknown subcommand ${JSON.stringify(o??``)} — usage: session export|search|read (see session --help)\n`,exitCode:1}:{stdout:``,stderr:`session export: unknown subcommand ${JSON.stringify(o??``)} — usage: session export [--id <id>] [--output <path>]\n`,exitCode:1}}export{l as dispatchSessionMemoryAware};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{t as e}from"./types-D8gIX-W-.js";import{i as t,o as n}from"./kernel-worker-
|
|
1
|
+
import{t as e}from"./types-D8gIX-W-.js";import{i as t,o as n}from"./kernel-worker-DAOlZAnY.js";import"./frozen-archive-writer-Ds5upuER.js";function r(e){let n=`${e.endsWith(`.md`)?e.slice(0,-3):e.replace(/\.md$/i,``)}.jsonl`;return n.startsWith(`/`)?n:`${t}/${n}`}async function i(e,t,r){let i=n(t);if(i.messages.length>0||!i.sidecar)return i;let a=await u(e,r??i.sidecar.replace(/\.jsonl$/i,`.md`));return a?{...i,messages:a}:i}function a(e){let t=[],n=null;for(let r of e.split(`
|
|
2
2
|
`)){let e=r.trim();if(!e)continue;let i=o(e);if(i){if(i.role===`user`)t.push(s(i)),n=null;else if(i.role===`assistant`){let e=c(i);t.push(e),n=e}else i.role===`toolResult`&&l(n,i)}}return t}function o(e){try{return JSON.parse(e)}catch{return null}}function s(e){return{id:e.id??m(`u`),role:`user`,content:f(e.content),timestamp:e.timestamp??0,...e.source?{source:e.source}:{},...e.channel?{channel:e.channel}:{},...e.attachments?.length?{attachments:e.attachments}:{}}}function c(e){let t=p(e.content);return{id:e.id??m(`a`),role:`assistant`,content:f(e.content),timestamp:e.timestamp??0,...t.length?{toolCalls:t}:{},...e.source?{source:e.source}:{},...e.compaction?{compaction:e.compaction}:{},...e.attachments?.length?{attachments:e.attachments}:{}}}function l(e,t){if(!t.toolCallId||!e?.toolCalls)return;let n=e.toolCalls.find(e=>e.id===t.toolCallId);n&&(n.result=f(t.content),t.isError&&(n.isError=!0))}async function u(t,n){let i=r(n);try{let e=await t.readFile(i,{encoding:`utf-8`});return a(typeof e==`string`?e:new TextDecoder().decode(e))}catch(t){if(t instanceof e&&t.code===`ENOENT`)return null;throw t}}async function d(t,n){let i=r(n);try{await t.rm(i)}catch(t){if(t instanceof e&&t.code===`ENOENT`)return;throw t}}function f(e){return typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
3
3
|
`)}function p(e){return typeof e==`string`?[]:e.filter(e=>e.type===`toolCall`).map(e=>({id:e.id,name:e.name,input:e.arguments}))}function m(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}export{i as loadFrozenArchive,d as removeSessionJsonl};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{_ as t,b as n,d as r,m as i,n as a}from"./frozen-archive-writer-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{_ as t,b as n,d as r,m as i,n as a}from"./frozen-archive-writer-BJkhyap1.js";import{t as o}from"./types-D8gIX-W-.js";var s=e({chatMessagesToJsonl:()=>p,copySessionJsonl:()=>S,jsonlToChatMessages:()=>m,loadFrozenArchive:()=>f,readSessionJsonl:()=>b,removeSessionJsonl:()=>x,sidecarFilenameForArchive:()=>l,sidecarPathForArchive:()=>c,writeArchiveBundle:()=>d,writeSessionJsonl:()=>y});function c(e){let t=`${e.endsWith(`.md`)?e.slice(0,-3):e.replace(/\.md$/i,``)}.jsonl`;return t.startsWith(`/`)?t:`${i}/${t}`}function l(e){return e.replace(/\.md$/i,`.jsonl`)}function u(e,t){return a(e).replace(/<!-- slicc:session-data\n[\s\S]*?\n-->\n\n/,``).replace(/^---\n([\s\S]*?)\n---\n\n/,(e,n)=>`---\n${n}\nsidecar: ${t}\n---\n\n`)}async function d(e,t,n){let a=l(t),o=`${i}/${t}`;return await e.writeFile(o,u(n,a)),{markdownPath:o,sidecarPath:await y(e,t,r(n.messages))}}async function f(e,n,r){let i=t(n);if(i.messages.length>0||!i.sidecar)return i;let a=await b(e,r??i.sidecar.replace(/\.jsonl$/i,`.md`));return a?{...i,messages:a}:i}function p(e){let t=[];for(let n of e)for(let e of C(n))t.push(JSON.stringify(e));return t.length===0?``:`${t.join(`
|
|
2
2
|
`)}\n`}function m(e){let t=[],n=null;for(let r of e.split(`
|
|
3
3
|
`)){let e=r.trim();if(!e)continue;let i=h(e);if(i){if(i.role===`user`)t.push(g(i)),n=null;else if(i.role===`assistant`){let e=_(i);t.push(e),n=e}else i.role===`toolResult`&&v(n,i)}}return t}function h(e){try{return JSON.parse(e)}catch{return null}}function g(e){return{id:e.id??E(`u`),role:`user`,content:w(e.content),timestamp:e.timestamp??0,...e.source?{source:e.source}:{},...e.channel?{channel:e.channel}:{},...e.attachments?.length?{attachments:e.attachments}:{}}}function _(e){let t=T(e.content);return{id:e.id??E(`a`),role:`assistant`,content:w(e.content),timestamp:e.timestamp??0,...t.length?{toolCalls:t}:{},...e.source?{source:e.source}:{},...e.compaction?{compaction:e.compaction}:{},...e.attachments?.length?{attachments:e.attachments}:{}}}function v(e,t){if(!t.toolCallId||!e?.toolCalls)return;let n=e.toolCalls.find(e=>e.id===t.toolCallId);n&&(n.result=w(t.content),t.isError&&(n.isError=!0))}async function y(e,t,r){let i=c(t);return await e.writeFile(i,p(n(r))),i}async function b(e,t){let n=c(t);try{let t=await e.readFile(n,{encoding:`utf-8`});return m(typeof t==`string`?t:new TextDecoder().decode(t))}catch(e){if(e instanceof o&&e.code===`ENOENT`)return null;throw e}}async function x(e,t){let n=c(t);try{await e.rm(n)}catch(e){if(e instanceof o&&e.code===`ENOENT`)return;throw e}}async function S(e,t,n){if(t===n)return;let r=c(t),i=c(n);try{let t=await e.readFile(r,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t);await e.writeFile(i,n)}catch(e){if(e instanceof o&&e.code===`ENOENT`)return;throw e}}function C(e){if(e.role===`user`)return[{role:`user`,content:[{type:`text`,text:e.content}],id:e.id,timestamp:e.timestamp,...e.source?{source:e.source}:{},...e.channel?{channel:e.channel}:{},...e.attachments?.length?{attachments:e.attachments}:{}}];let t=[];e.content&&t.push({type:`text`,text:e.content});for(let n of e.toolCalls??[])t.push({type:`toolCall`,id:n.id,name:n.name,arguments:n.input});let n=[{role:`assistant`,content:t.length?t:[{type:`text`,text:``}],id:e.id,timestamp:e.timestamp,...e.source?{source:e.source}:{},...e.compaction?{compaction:e.compaction}:{},...e.attachments?.length?{attachments:e.attachments}:{}}];for(let t of e.toolCalls??[])t.result===void 0&&!t.isError||n.push({role:`toolResult`,toolCallId:t.id,content:[{type:`text`,text:t.result??``}],...t.isError?{isError:!0}:{},timestamp:e.timestamp});return n}function w(e){return typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
4
4
|
`)}function T(e){return typeof e==`string`?[]:e.filter(e=>e.type===`toolCall`).map(e=>({id:e.id,name:e.name,input:e.arguments}))}function E(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}export{c as a,s as i,f as n,x as r,S as t};
|
package/dist/ui/assets/{session-search-index-CeQkxdD7.js → session-search-index-CL6tNMTB.js}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{i as e,s as t}from"./kernel-worker-
|
|
1
|
+
import{i as e,s as t}from"./kernel-worker-DAOlZAnY.js";import{loadFrozenArchive as n}from"./session-jsonl-BWGPVYtm.js";const r=`/sessions/.search-index.json`,i=12e3,a=4e3;async function o(e,t){return typeof e.readdir==`function`?e.readdir(t):typeof e.readDir==`function`?(await e.readDir(t)).map(e=>e.name):[]}const s={fields:[`title`,`body`],storeFields:[`title`,`body`,`sessionId`,`sessionTitle`,`filename`,`messageId`,`messageIndex`,`role`,`echoKind`,`path`],idField:`id`,processTerm:e=>{let t=e.toLowerCase();return t.length<2?null:M(t)},searchOptions:{boost:{title:4,body:1},prefix:!0}},c={original:1,summary:.35,echo:.15};function l(e){if(e.compaction)return`summary`;let t=e.content??``;return/<context-summary>/i.test(t)||/Earlier conversation messages were compacted/i.test(t)||/full transcript of the conversation before this compaction is saved at/i.test(t)?`summary`:/^# session (search|read):/m.test(t)||/\bid=sess\/[^\s]+/.test(t)||e.role===`assistant`&&e.toolCalls?.some(e=>e.name===`bash`&&typeof e.input==`object`&&e.input!==null&&/session\s+(search|read)\b/.test(String(e.input.command??``)))?`echo`:`original`}function u(e,t){return`sess/${e}/msg/${t}`}function d(e){let t=/^sess\/([^/]+)\/msg\/(.+)$/.exec(e);return t?{sessionId:t[1],messageId:t[2]}:null}function f(e){let t=`${e.sessionsDir??`/sessions`}/${e.filename}`,n=[];return e.messages.forEach((r,i)=>{let o=r.id||`i${i}`,s=[A(r.content??``,a)];for(let e of r.toolCalls??[])s.push(e.name,A(j(e.input),a)),e.result&&s.push(A(e.result,a));let c=A(s.filter(Boolean).join(`
|
|
2
2
|
`),a);!c.trim()&&!r.compaction||n.push({id:u(e.sessionId,o),title:e.sessionTitle,body:c,sessionId:e.sessionId,sessionTitle:e.sessionTitle,filename:e.filename,messageId:o,messageIndex:i,role:r.role,echoKind:l(r),path:t})}),n}const p=`/scoops`;async function m(e){let t;try{t=await o(e,p)}catch{return[]}let n=[];for(let r of t)try{let t=await o(e,`${p}/${r}/sessions`);for(let e of t)n.push(`${p}/${r}/sessions/${e}`)}catch{}return n.sort()}async function h(n){let r=(await t(n)).map(t=>({entry:t,sessionsDir:e}));for(let e of await m(n))for(let t of await g(n,e))r.push({entry:t,sessionsDir:e});return r}async function g(e,t){try{let n=await e.readFile(`${t}/index.json`,{encoding:`utf-8`}),r=typeof n==`string`?n:new TextDecoder().decode(n),i=JSON.parse(r);return Array.isArray(i)?i:[]}catch{return[]}}async function _(e){let t=(await import(`./es-BR4l6CGS.js`)).default,n=await h(e),r=[],i=new Set;for(let{entry:t,sessionsDir:a}of n)for(let n of await S(e,t,a))i.has(n.id)||(i.add(n.id),r.push(n));let a=new t(s);return r.length&&a.addAll(r),{mini:a,meta:{version:1,builtAt:Date.now(),archiveCount:n.length,fingerprint:w(n)},docs:r.length,archives:n.length}}async function v(e,t){return w(await h(e))===t.meta.fingerprint&&(await e.writeFile(r,JSON.stringify({meta:t.meta,index:t.mini.toJSON()})),!0)}async function y(e){let t=(await import(`./es-BR4l6CGS.js`)).default,n=w(await h(e));try{let i=await e.readFile(r,{encoding:`utf-8`}),a=typeof i==`string`?i:new TextDecoder().decode(i),o=JSON.parse(a);if(o.meta?.fingerprint===n&&o.index)return t.loadJS(o.index,s)}catch{}let i=await _(e);return await v(e,i),i.mini}async function b(e,t,n={}){let r=Math.min(Math.max(1,n.limit??8),20),i=t.trim();if(!i)return[];let a=await y(e),o=a.search(i,{boost:{title:4,body:1},prefix:!0}),s=[];for(let e of o){let t=a.getStoredFields(e.id);if(!t)continue;let n=t.echoKind??`original`,r=e.score*(c[n]??1);s.push({id:String(e.id),score:r,echoKind:n,sessionId:t.sessionId,sessionTitle:t.sessionTitle,filename:t.filename,messageId:t.messageId,messageIndex:t.messageIndex,role:t.role,path:t.path,excerpt:T(t.body,i)})}return s.sort((e,t)=>t.score-e.score),s.slice(0,r)}async function x(e,t,n={}){let r=d(t);if(!r)return null;let i=await h(e),a=i.find(({entry:e})=>e.sessionId===r.sessionId)??i.find(({entry:e})=>e.filename.replace(/\.md$/i,``)===r.sessionId);if(!a)return null;let{entry:o,sessionsDir:s}=a,c=await C(e,o,s),l=c.findIndex((e,t)=>(e.id||`i${t}`)===r.messageId),u=Math.max(0,n.from??Math.max(0,l)),f=Math.max(1,n.count??3),p=c.slice(u,u+f),m=E(p,u),g=!1;for(;k(m)>12e3&&p.length>1;)p=p.slice(0,-1),m=E(p,u),g=!0;k(m)>12e3&&(m=`${A(m,11980)}\n…[truncated]\n`,g=!0);let _=p.length,v=Math.max(0,c.length-(u+_));return{hit:{sessionId:o.sessionId??r.sessionId,messageId:r.messageId,sessionTitle:o.title,path:`${s}/${o.filename}`},messages:p,from:u,count:_,total:c.length,remaining:v,truncated:g,text:m}}async function S(t,n,r=e){let i=await C(t,n,r);return f({sessionId:n.sessionId??n.filename.replace(/\.md$/i,``),sessionTitle:n.title,filename:n.filename,messages:i,sessionsDir:r})}async function C(t,r,i=e){try{let e=`${i}/${r.filename}`,a=await t.readFile(e,{encoding:`utf-8`}),o=typeof a==`string`?a:new TextDecoder().decode(a);return(await n(t,o,e)).messages}catch{return[]}}function w(e){return e.map(({entry:e,sessionsDir:t})=>`${t}/${e.filename}:${e.messageCount}:${e.frozenAt}:${e.sessionId??``}`).sort().join(`|`)}function T(e,t,n=80){let r=e.replace(/\s+/g,` `).trim();if(!r)return``;let i=t.toLowerCase().split(/\s+/).filter(e=>e.length>1),a=-1;for(let e of i)if(a=r.toLowerCase().indexOf(e),a>=0)break;if(a<0)return r.slice(0,n*2)+(r.length>n*2?`…`:``);let o=Math.max(0,a-n),s=Math.min(r.length,a+n);return`${o>0?`…`:``}${r.slice(o,s)}${s<r.length?`…`:``}`}function E(e,t){let n=[];return e.forEach((e,r)=>{let i=t+r,a=e.id||`i${i}`;n.push(`## [${i}] ${e.role} id=${a}`),e.content&&n.push(e.content);for(let t of e.toolCalls??[])n.push(`### tool ${t.name} (${t.id})${t.isError?` ERROR`:``}`),n.push(j(t.input)),t.result&&n.push(t.result);n.push(``)}),n.join(`
|
|
3
3
|
`)}async function D(e,t={}){try{await e.rm(r)}catch(e){if(t.strict&&e?.code!==`ENOENT`)throw e}}const O=new TextEncoder;function k(e){return O.encode(e).byteLength}function A(e,t){if(t<=0)return``;let n=O.encode(e);if(n.byteLength<=t)return e;let r=t;for(;r>0&&(n[r]&192)==128;)r--;return new TextDecoder().decode(n.subarray(0,r))}function j(e){try{return JSON.stringify(e)}catch{return String(e)}}function M(e){if(e.length<3)return e;let t=e;if(t.endsWith(`sses`)||t.endsWith(`ies`)?t=`${t.slice(0,-2)}`:t.endsWith(`ss`)||t.endsWith(`s`)&&t.length>3&&(t=t.slice(0,-1)),t.endsWith(`eed`))N(t.slice(0,-3))>0&&(t=t.slice(0,-1));else if(/(ed|ing)$/.test(t)){let e=t.replace(/(ed|ing)$/,``);/[aeiouy]/.test(e)&&(t=e,/(at|bl|iz)$/.test(t)?t=`${t}e`:/(.)\1$/.test(t)&&!/[lsz]$/.test(t)?t=t.slice(0,-1):N(t)===1&&P(t)&&(t=`${t}e`))}return t.endsWith(`y`)&&/[aeiouy]/.test(t.slice(0,-1))&&(t=`${t.slice(0,-1)}i`),t}function N(e){return(e.toLowerCase().replace(/[^aeiouy]+/g,`C`).replace(/[aeiouy]+/g,`V`).replace(/^C/,``).replace(/V$/,``).match(/VC/g)??[]).length}function P(e){if(e.length<3)return!1;let t=e[e.length-3],n=e[e.length-2],r=e[e.length-1],i=e=>/[aeiouy]/.test(e);return!i(t)&&i(n)&&!i(r)&&!/[wxy]/.test(r)}export{i as SESSION_READ_BYTE_CAP,D as invalidateSessionSearchIndex,x as readSessionHit,b as searchSessions};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e}from"./feature-flags-DvsApnS-.js";import{A as t,_ as n,g as r,j as i,k as a}from"./main-
|
|
1
|
+
import{l as e}from"./feature-flags-DvsApnS-.js";import{A as t,_ as n,g as r,j as i,k as a}from"./main-BfPkUEOn.js";var o=3e3;async function s(n,r){let i=a(r.storage);try{let a=new URL(`/api/flags`,`${r.workerBaseUrl.replace(/\/+$/,``)}/`);a.searchParams.set(`float`,n);let s=await c(a.toString(),r.fetchImpl??fetch,r.timeoutMs??o);if(!s)return;t(i,n,s),e(n,s)}catch{}}async function c(e,t,n){let r=new AbortController,i;try{let a=new Promise(e=>{i=setTimeout(()=>{r.abort(),e(null)},n)}),o=t(e,{cache:`no-store`,headers:{Accept:`application/json`},signal:r.signal}).then(async e=>e.ok?l(await e.json()):null).catch(()=>null);return await Promise.race([o,a])}catch{return null}finally{i!==void 0&&clearTimeout(i)}}function l(e){if(!u(e))return null;let t=e.flags;return!u(t)||Object.values(t).some(e=>typeof e!=`string`)?null:t}function u(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function d(e,t){return s(e,{workerBaseUrl:g(t),storage:t.storage})}var f=18e5,p=null;function m(e,t,n=f){return h(),p=setInterval(()=>{d(e,t)},n),h}function h(){p!==null&&(clearInterval(p),p=null)}function g(e){let t=_(e.storage),a=i(e.envBaseUrl??null);if(t)return t;if(a)return a;if(!e.isDev)try{let t=new URL(e.locationHref);if(t.protocol===`http:`||t.protocol===`https:`)return t.origin}catch{}return e.isDev?n:r}function _(e){try{return i(e?.getItem(`slicc.trayWorkerBaseUrl`)??null)}catch{return null}}export{d as refreshFeatureFlagsForPage,g as resolveFeatureFlagsWorkerBaseUrl,m as scheduleFeatureFlagsRefresh};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,n as t,r as n,s as r,t as i}from"./core-BFRZk2b-.js";import{i as a}from"./compat-BAGLwgqY.js";import{t as o}from"./logger-DDBAeTLF.js";import{a as s}from"./feature-flags-DvsApnS-.js";import{S as c}from"./account-store-
|
|
1
|
+
import{c as e,n as t,r as n,s as r,t as i}from"./core-BFRZk2b-.js";import{i as a}from"./compat-BAGLwgqY.js";import{t as o}from"./logger-DDBAeTLF.js";import{a as s}from"./feature-flags-DvsApnS-.js";import{S as c}from"./account-store-BZTlSap7.js";import{resolveFeatureFlagsWorkerBaseUrl as l}from"./setup-feature-flags-remote-DRQOEp2l.js";var u=`/api/models/providers/`,d=4e3,f=2e3;function p(e){let t=Array.isArray(e)?e:r(e)&&Array.isArray(n(e,`models`))?n(e,`models`):r(e)?Object.values(e):null;return t?t.filter(e=>r(e)&&typeof n(e,`id`)==`string`).slice(0,f):null}async function m(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return await e(t,{...n,signal:i.signal})}finally{clearTimeout(a)}}async function h(e,t,n){if(!n.force&&t?.checkedAt!==void 0&&n.now-t.checkedAt<144e5)return{kind:`skip`};let r=new URL(`${u}${encodeURIComponent(e)}`,`${n.workerBaseUrl.replace(/\/+$/,``)}/`).toString(),i=t?.models.length?t.etag:void 0,a;try{a=await m(n.fetchImpl,r,{headers:{Accept:`application/json`,...i?{"If-None-Match":i}:{}}},n.timeoutMs)}catch{return{kind:`failed`,entry:t?{...t,checkedAt:n.now}:void 0}}if(a.status===304&&t)return{kind:`stored`,entry:{...t,checkedAt:n.now},changed:!1};if(a.status===404)return{kind:`stored`,entry:{models:[],checkedAt:n.now,lastModified:0},changed:!0};if(!a.ok)return{kind:`failed`,entry:t?{...t,checkedAt:n.now}:void 0};let o;try{o=p(await a.json())}catch{o=null}if(!o)return{kind:`failed`,entry:t};let s=Date.parse(a.headers.get(`last-modified`)??``),c={models:o,checkedAt:n.now,lastModified:Number.isNaN(s)?0:s},l=a.headers.get(`etag`);return l&&(c.etag=l),{kind:`stored`,entry:c,changed:!0}}async function g(n){let r={updated:[],failed:[]};if(!s(`live-model-catalog`))return r;let o=n.storage===void 0?t():n.storage;if(!o)return r;let c=new Set(a()),l=[...new Set(n.providers)].filter(e=>c.has(e));if(l.length===0)return r;let u=(n.now??Date.now)(),f={workerBaseUrl:n.workerBaseUrl,fetchImpl:n.fetchImpl??fetch,timeoutMs:n.timeoutMs??d,force:n.force===!0,now:u},p=e(o).store,m=await Promise.all(l.map(async e=>[e,await h(e,p[e],f)])),g={...e(o).store},_=!1;for(let[e,t]of m)t.kind!==`skip`&&(t.entry&&(g[e]=t.entry,_=!0),t.kind===`failed`?r.failed.push(e):t.changed&&r.updated.push(e));if(_)try{o.setItem(i,JSON.stringify(g))}catch{}return r}var _=o(`model-catalog`),v=36e5,y=null;async function b(e,t=!1){let n=await g({workerBaseUrl:l(e),providers:c(),storage:e.storage,force:t});return n.updated.length>0&&_.info(`Model catalogue refreshed`,{providers:n.updated}),n.failed.length>0&&_.debug(`Model catalogue refresh failed`,{providers:n.failed}),n}function x(e,t=v){return S(),y=setInterval(()=>{b(e)},t),b(e)}function S(){y!==null&&(clearInterval(y),y=null)}export{x as setupModelCatalog};
|
package/dist/ui/assets/{silent-renew-backoff-JpXc1wkl.js → silent-renew-backoff-BwjA995I.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./bridge-protocol-C52CnDIj.js";import{M as e}from"./main-
|
|
1
|
+
import"./bridge-protocol-C52CnDIj.js";import{M as e}from"./main-BfPkUEOn.js";function t(t){try{let n=new URL(t);return n.searchParams.has(`bridge`)?!0:!e(n.hostname)}catch{return!1}}function n(n,r){let i=t(n.pageHref),a=r();if(i){if(n.configuredRedirectUri){let t=``;try{t=new URL(n.configuredRedirectUri).origin}catch{t=``}if(t&&n.pageOrigin===t){let e=btoa(JSON.stringify({source:`opener`,path:`/auth/callback`,nonce:a}));return{redirectUri:n.configuredRedirectUri,oauthState:e,expectedNonce:a,source:`opener`}}let r=null;try{r=new URL(n.pageHref)}catch{r=null}if(r!==null&&r.protocol===`http:`&&e(r.hostname)&&r.port!==``&&r){let e=parseInt(r.port,10),t=btoa(JSON.stringify({source:`local`,port:e,path:`/auth/callback`,nonce:a}));return{redirectUri:n.configuredRedirectUri,oauthState:t,expectedNonce:a,source:`local`}}}return{redirectUri:`${n.pageOrigin}/auth/callback`,oauthState:btoa(JSON.stringify({source:`opener`,path:`/auth/callback`,nonce:a})),expectedNonce:a,source:`opener`}}let o=n.configuredRedirectUri??`${n.pageOrigin}/auth/callback`,s=parseInt(new URL(n.pageHref).port||`5710`,10);return{redirectUri:o,oauthState:btoa(JSON.stringify({port:s,path:`/auth/callback`,nonce:a})),expectedNonce:a,source:`local`}}var r=3e5;function i(e=r){let t=0;return{async run(n,r=Date.now()){if(r<t)return null;let i=null;try{i=await n()}catch(e){console.debug(`[silent-renew-backoff] renew threw:`,e instanceof Error?e.message:String(e)),i=null}return t=i?0:r+e,i},inCooldown(e=Date.now()){return e<t}}}export{n,t as r,i as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(){return{version:`6.240.3`,releasedAt:`2026-10-07T10:42:43Z`,buildId:`6.240.3-muxzb271`}}let t=null;function n(e){t=e}function r(){return t}export{e as n,n as r,r as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-DDBAeTLF.js";import{et as t}from"./wc-shell-
|
|
1
|
+
import{t as e}from"./logger-DDBAeTLF.js";import{et as t}from"./wc-shell-xh75VEiE.js";var n=e(`speech:soundscape`),r=`soundscape-enabled`;function i(){try{return localStorage.getItem(r)!==`false`}catch{return!0}}var a=0,o=!1;function s(){a++}function c(){a>0&&a--}function l(){return a>0}function u(e){o=e}function d(){return o}var f=null;function p(){return typeof AudioContext>`u`?null:((!f||f.state===`closed`)&&(f=new AudioContext),f)}function m(e){if(!i()||!l()||d())return;let r=p();if(r)try{r.state===`suspended`&&r.resume(),t(r,e)}catch(e){n.debug(`soundscape cue failed`,e)}}export{s as beginVoiceTurn,c as endVoiceTurn,m as playCue,u as setTtsActive};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/transformers.web-BBJR2ai3.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/kokoro-GYPr9LPo.js","assets/__vite-browser-external-5eBdwsFd.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{n}from"./runtime-env-Dlaokqg1.js";import{t as r}from"./speech-assets-bridge-CFYafE89.js";import{i,n as a,o,r as s,t as c}from"./transformers-env-
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{n}from"./runtime-env-Dlaokqg1.js";import{t as r}from"./speech-assets-bridge-CFYafE89.js";import{i,n as a,o,r as s,t as c}from"./transformers-env-WpdAi-iZ.js";var l=t(`speech:espeak`),u=`/workspace/node_modules/espeak-ng/dist/`,d=`espeak-ng.js`,f=`espeak-ng.wasm`;async function p(e,t,n,r){let i=`phonemes.txt`;return(await e({arguments:[`-q`,`-b=1`,`--ipa`,`-v`,n,`--phonout`,i,t],...r?{locateFile:r}:{}})).FS.readFile(i,{encoding:`utf8`}).split(`
|
|
3
3
|
`).map(e=>e.trim()).filter(e=>e.length>0)}function ee(e,t){return async n=>{let r=URL.createObjectURL(new Blob([new Uint8Array(t)],{type:`application/wasm`}));try{let t=e=>e.endsWith(`.wasm`)?r:n.locateFile?.(e)??e;return await e({...n,locateFile:t})}finally{URL.revokeObjectURL(r)}}}function m(e){if(typeof BroadcastChannel>`u`)return Promise.reject(Error(`Cannot read VFS path ${e}: BroadcastChannel unavailable`));let t=new BroadcastChannel(`preview-vfs`),n=`espeak-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((r,i)=>{let a=e=>{t.removeEventListener(`message`,c),t.close(),e()},o,s=()=>{clearTimeout(o),o=setTimeout(()=>a(()=>i(Error(`ENOENT: ${e} (timed out)`))),3e4)};s();let c=t=>{let c=t.data;if(!(!c||c.id!==n)){if(c.type===`preview-vfs-start`){s();return}if(c.type===`preview-vfs-response`){if(clearTimeout(o),typeof c.error==`string`)a(()=>i(Error(c.error)));else if(c.content instanceof Uint8Array){let e=c.content;a(()=>r(e))}else if(typeof c.content==`string`){let e=c.content;a(()=>r(new TextEncoder().encode(e)))}else a(()=>i(Error(`Empty preview-vfs response for ${e}`)))}}};t.addEventListener(`message`,c),t.postMessage({type:`preview-vfs-read`,id:n,path:e,asText:!1})})}async function te(){let[t,n]=await Promise.all([m(`${u}${d}`),m(`${u}${f}`)]),r=URL.createObjectURL(new Blob([new Uint8Array(t)],{type:`text/javascript`}));try{return{factory:ee((await e(()=>import(r),[])).default,n)}}finally{URL.revokeObjectURL(r)}}var ne=te,h=null;function g(){return h||=ne().then(({factory:e,locateFile:t})=>(l.info(`espeak-ng multilingual phonemizer loaded`),(n,r)=>p(e,n,r,t)),e=>{throw h=null,l.error(`espeak-ng load failed`,e),e}),h}var re=Object.freeze({e:`es`,f:`fr-fr`,i:`it`,h:`hi`,p:`pt-br`});function _(e){return re[e[0]]??null}var ie=Object.freeze({a:`en-us`,b:`en-gb`});function ae(e){return ie[e[0]]??null}function oe(e){let t=e instanceof Error?e.message:String(e);return/Invalid language identifier/i.test(t)&&/Should be one of:\s*\.?\s*$/i.test(t)}var se=RegExp(`(\\s*[${`;:,.!?¡¿—…"«»“”(){}[]`.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}]+\\s*)+`,`g`);function ce(e){let t=[],n=0;for(let r of e.matchAll(se)){let i=r[0],a=r.index??0;n<a&&t.push({punct:!1,text:e.slice(n,a)}),i.length>0&&t.push({punct:!0,text:i}),n=a+i.length}return n<e.length&&t.push({punct:!1,text:e.slice(n)}),t}function le(e){return e.replace(/kəkˈoːɹoʊ/g,`kˈoʊkəɹoʊ`).replace(/kəkˈɔːɹəʊ/g,`kˈəʊkəɹəʊ`).replace(/(?<=[a-zɹrː])(?=hˈʌndɹɪd)/g,` `).replace(/ z(?=[;:,.!?¡¿—…"«»“” ]|$)/g,`z`).trim()}async function ue(e,t,n){let r=ce(e);return le((await Promise.all(r.map(async e=>e.punct?e.text:(await n(e.text,t)).join(` `)))).join(``))}var v=t(`speech:kokoro`),y={a:`en-US`,b:`en-GB`,e:`es-ES`,f:`fr-FR`,i:`it-IT`,h:`hi-IN`,p:`pt-BR`,j:`ja-JP`,z:`zh-CN`},b=new Set([`en-US`,`en-GB`,`es-ES`,`fr-FR`,`it-IT`,`hi-IN`,`pt-BR`]);function x(e){let[t,n]=e.split(`-`);return n?`${t.toLowerCase()}-${n.toUpperCase()}`:t.toLowerCase()}function S(e,t){if(!t)return!1;if(b.has(t))return!0;if(t.includes(`-`))return!1;let n=y[e[0]];return n!==void 0&&b.has(n)&&n.split(`-`)[0].toLowerCase()===t}function de(e){return Object.entries(e).map(([e,t])=>{let n=t.language?x(t.language):y[e[0]];return{id:e,name:t.name||e,lang:n??`en-US`,onDevice:S(e,n),...t.gender?{gender:t.gender}:{}}})}var fe=Object.freeze({ef_dora:{name:`Dora`,gender:`Female`},em_alex:{name:`Alex`,gender:`Male`},em_santa:{name:`Santa`,gender:`Male`},ff_siwis:{name:`Siwis`,gender:`Female`},hf_alpha:{name:`Alpha`,gender:`Female`},hf_beta:{name:`Beta`,gender:`Female`},hm_omega:{name:`Omega`,gender:`Male`},hm_psi:{name:`Psi`,gender:`Male`},if_sara:{name:`Sara`,gender:`Female`},im_nicola:{name:`Nicola`,gender:`Male`},pf_dora:{name:`Dora`,gender:`Female`},pm_alex:{name:`Alex`,gender:`Male`},pm_santa:{name:`Santa`,gender:`Male`},jf_alpha:{name:`Alpha`,gender:`Female`},jf_gongitsune:{name:`Gongitsune`,gender:`Female`},jf_nezumi:{name:`Nezumi`,gender:`Female`},jf_tebukuro:{name:`Tebukuro`,gender:`Female`},jm_kumo:{name:`Kumo`,gender:`Male`},zf_xiaobei:{name:`Xiaobei`,gender:`Female`},zf_xiaoni:{name:`Xiaoni`,gender:`Female`},zf_xiaoxiao:{name:`Xiaoxiao`,gender:`Female`},zf_xiaoyi:{name:`Xiaoyi`,gender:`Female`},zm_yunjian:{name:`Yunjian`,gender:`Male`},zm_yunxi:{name:`Yunxi`,gender:`Male`},zm_yunxia:{name:`Yunxia`,gender:`Male`},zm_yunyang:{name:`Yunyang`,gender:`Male`}});function C(e){let t={...e};for(let[e,n]of Object.entries(fe))e in t||(t[e]=n);return de(t)}var w=`style_text_to_speech_2`,T=`StyleTextToSpeech2Model`;function pe(e){return e?.model_type===w&&(!Array.isArray(e.architectures)||e.architectures.length===0)&&(e.architectures=[T]),e}var E=Symbol.for(`slicc.kokoro.style-tts2-arch-shim`);function me(e){let t=e?.AutoConfig,n=t?.from_pretrained;if(!t||typeof n!=`function`){v.debug(`style_text_to_speech_2 shim skipped: AutoConfig.from_pretrained unavailable`);return}if(n[E])return;let r=async(...e)=>{let r=await n.apply(t,e),i=r?.model_type===w&&(!Array.isArray(r.architectures)||r.architectures.length===0);return pe(r),i&&v.debug(`style_text_to_speech_2 architectures injected for "${String(e[0])}": [${T}]`),r};r[E]=!0,t.from_pretrained=r,v.debug(`style_text_to_speech_2 architecture shim installed on AutoConfig.from_pretrained`)}async function D(e,t,n,r,i,a){let o=await ue(t,n,a),s=e.tokenizer,{input_ids:c}=s(o,{truncation:!0}),l=await e.generate_from_ids(c,{voice:r,...i?{speed:i}:{}});return{audio:l.audio,sampleRate:l.sampling_rate}}var he=/(?<=[.!?。!?…])\s+|\n{2,}/u;function O(e,t){let n=t??he,r=e.split(n).map(e=>e.trim()).filter(e=>e.length>0),i=e.trim();return r.length>0?r:i?[i]:[]}var k=null,A=`idle`,j=null,M=null;function N(){return A}function P(){return j}function F(){return M}function I(e){return k||=(A=`loading`,L(e).then(e=>(A=`ready`,M=e,e),e=>{throw A=`failed`,k=null,v.error(`kokoro load failed`,e),e})),k}async function L(t){let n=await e(()=>import(`./transformers.web-BBJR2ai3.js`),__vite__mapDeps([0,1,2]));a(n.env),me(n),await c(i),await s();let{KokoroTTS:r,TextSplitterStream:l}=await e(async()=>{let{KokoroTTS:e,TextSplitterStream:t}=await import(`./kokoro-GYPr9LPo.js`);return{KokoroTTS:e,TextSplitterStream:t}},__vite__mapDeps([3,1,4,0,2])),u=o(),d=typeof navigator<`u`&&`gpu`in navigator,f=await r.from_pretrained(i,{device:d?`webgpu`:`wasm`,dtype:d?`fp32`:`q8`,progress_callback:e=>{if(e?.file){if(e.status===`progress`)u.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)u.complete(e.file);else return;j=u.snapshot(),t?.(j)}}});v.info(`kokoro ready`,{model:i,device:d?`webgpu`:`wasm`});let p=C(f.voices);return{async synthesize(e,t){let r=t?.voice??`af_heart`,i=_(r);if(i){let n=await g();return D(f,e,i,r,t?.speed,n)}try{let r=performance.now(),i=await f.generate(e,{...t?.voice?{voice:t.voice}:{},...t?.speed?{speed:t.speed}:{}}),a=i.audio;return v.info(`kokoro synthesize`,{elapsedMs:Math.round(performance.now()-r),chars:e.length,audioSeconds:Math.round(a.length/i.sampling_rate*100)/100,numThreads:n.env.backends?.onnx?.wasm?.numThreads}),{audio:a,sampleRate:i.sampling_rate}}catch(n){let i=await R(n,r);if(!i)throw n;return D(f,e,i.lang,r,t?.speed,i.phonemize)}},async*synthesizeStream(e,t){let r=t?.voice??`af_heart`,i=_(r);if(i){let n=await g();for(let a of O(e,t?.splitPattern))yield await D(f,a,i,r,t?.speed,n);return}let a={...t?.voice?{voice:t.voice}:{},...t?.speed?{speed:t.speed}:{}},o=new l;if(t?.splitPattern){let n=e.split(t.splitPattern).map(e=>e.trim()).filter(e=>e.length>0);o.push(...n)}else o.push(e);o.close();try{let t=performance.now(),r=0,i=0,s=0;for await(let e of f.stream(o,a)){let t=e.audio.audio;r+=1,i+=t.length,s=e.audio.sampling_rate,yield{audio:t,sampleRate:s}}v.info(`kokoro synthesizeStream`,{elapsedMs:Math.round(performance.now()-t),chunks:r,chars:e.length,audioSeconds:s?Math.round(i/s*100)/100:0,numThreads:n.env.backends?.onnx?.wasm?.numThreads})}catch(n){let i=await R(n,r);if(!i)throw n;for(let n of O(e,t?.splitPattern))yield await D(f,n,i.lang,r,t?.speed,i.phonemize)}},voices:()=>p}}async function R(e,t){if(!oe(e))return null;let n=ae(t);if(!n)return null;try{let e=await g();return v.warn(`kokoro bundled phonemizer reported no languages; phonemizing English with the staged espeak-ng`,{voiceId:t,lang:n}),{lang:n,phonemize:e}}catch(e){return v.warn(`staged espeak-ng unavailable, cannot recover English synthesis`,{error:String(e)}),null}}var z=44,B=16,V=1,H=B/8;function U(e,t,n){for(let r=0;r<n.length;r++)e.setUint8(t+r,n.charCodeAt(r))}function ge(e){let t=Math.max(-1,Math.min(1,e));return Math.round(t<0?t*32768:t*32767)}function _e(e){if(e.length===0)throw Error(`wav-encode: at least one PCM chunk is required`);let t=e[0].sampleRate;if(!Number.isFinite(t)||t<=0)throw Error(`wav-encode: invalid sample rate ${t}`);let n=0;for(let r of e){if(r.sampleRate!==t)throw Error(`wav-encode: mixed sample rates (${r.sampleRate} vs ${t}) — resample upstream`);n+=r.audio.length}let r=n*V*H,i=new ArrayBuffer(z+r),a=new DataView(i);U(a,0,`RIFF`),a.setUint32(4,36+r,!0),U(a,8,`WAVE`),U(a,12,`fmt `),a.setUint32(16,16,!0),a.setUint16(20,1,!0),a.setUint16(22,V,!0),a.setUint32(24,t,!0),a.setUint32(28,t*V*H,!0),a.setUint16(32,2,!0),a.setUint16(34,B,!0),U(a,36,`data`),a.setUint32(40,r,!0);let o=z;for(let t of e)for(let e=0;e<t.audio.length;e++)a.setInt16(o,ge(t.audio[e]),!0),o+=H;return new Uint8Array(i)}var W=t(`speech:speak`),G=2e4;function K(e){return e.toLowerCase().startsWith(`en`)}function ve(e,t){if(!t.ready)return`webspeech`;let n=e=>e.onDevice&&(K(e.lang)||t.nonEnglishOnDevice);if(e.voice){let r=t.voices.find(t=>t.id===e.voice);return r&&n(r)?`kokoro`:`webspeech`}let r=(e.lang?e.lang.split(`-`)[0]:`en`).toLowerCase();return t.voices.some(e=>e.lang.split(`-`)[0].toLowerCase()===r&&n(e))?`kokoro`:`webspeech`}function ye(e,t){if(!e||K(e))return;let n=e.split(`-`)[0].toLowerCase();return t.find(e=>e.onDevice&&e.lang.split(`-`)[0].toLowerCase()===n)?.id}var be=48;function xe(e){let t=e;return t=t.replace(/```[\s\S]*?```/g,` `),t=t.replace(/~~~[\s\S]*?~~~/g,` `),t=t.replace(/(?:```|~~~)[\s\S]*$/,` `),t=t.replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`),t=t.replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`),t=t.replace(/`([^`]*)`/g,(e,t)=>t.length>be?` `:t),t=t.replace(/<[^>\n]+>/g,` `),t=t.replace(/^[ \t]{0,3}#{1,6}[ \t]+/gm,``),t=t.replace(/^[ \t]*>[ \t]?/gm,``),t=t.replace(/^[ \t]*(?:[-*+]|\d+[.)])[ \t]+/gm,``),t=t.replace(/[*_~]{1,3}([^*_~]+)[*_~]{1,3}/g,`$1`),t=t.replace(/\s+/g,` `).trim(),t.length>G&&(t=`${t.slice(0,G).replace(/\s+\S*$/,``)}…`),t}var q=n;function Se(e){return e.onDevice&&(K(e.lang)||!q())}function J(){return F()?.voices().map(e=>({...e,onDevice:Se(e)}))??[]}async function Y(){if(typeof speechSynthesis>`u`)return[];let e=speechSynthesis.getVoices();return e.length>0||typeof speechSynthesis.addEventListener!=`function`?e:new Promise(e=>{let t=()=>{clearTimeout(r),speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())},n=()=>t(),r=setTimeout(t,2e3);speechSynthesis.addEventListener(`voiceschanged`,n)})}async function Ce(e){let t=e.split(`-`)[0]?.toLowerCase();return t?J().some(e=>e.onDevice&&e.lang.split(`-`)[0].toLowerCase()===t)?!0:(await Y()).some(e=>e.lang.split(`-`)[0].toLowerCase()===t):!1}var X;function we(e){X=e}function Z(){let e=P();return{state:N(),...e?{loaded:e.loaded,total:e.total,etaSeconds:e.etaSeconds}:{}}}async function Te(){try{q()||await r({instanceId:X})}catch(e){W.warn(`kokoro asset staging failed; trying already-present weights`,e)}try{await I()}catch(e){W.warn(`kokoro warmup load failed`,e)}}function Q(){return Te(),Z()}var $=null;function Ee(){return(!$||$.state===`closed`)&&($=new AudioContext),$}async function De(e,t,n=1){let r=Ee();r.state===`suspended`&&await r.resume();let i=r.createBuffer(1,e.length,t);i.copyToChannel(new Float32Array(e),0);let a=r.createBufferSource();a.buffer=i;let o=r.createGain();o.gain.value=n,a.connect(o),o.connect(r.destination),await new Promise(e=>{a.onended=()=>e(),a.start()})}async function Oe(e){if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this realm`);let t=await Y();return new Promise((n,r)=>{let i=new SpeechSynthesisUtterance(e.text);if(e.lang!==void 0&&(i.lang=e.lang),e.rate!==void 0&&(i.rate=e.rate),e.pitch!==void 0&&(i.pitch=e.pitch),e.volume!==void 0&&(i.volume=e.volume),e.voice){let n=t.find(t=>t.name===e.voice);n&&(i.voice=n)}else if(e.lang){let n=e.lang.split(`-`)[0].toLowerCase(),r=t.find(e=>e.lang.split(`-`)[0].toLowerCase()===n);r&&(i.voice=r)}i.onend=()=>n(),i.onerror=e=>r(Error(`speak: ${e.error||`utterance failed`}`)),speechSynthesis.speak(i)})}async function ke(e){let t=F(),n=t?.voices()??[];if(ve(e,{ready:t!==null,voices:n,nonEnglishOnDevice:!q()})===`kokoro`&&t){let r=e.voice??ye(e.lang,n),i=0;try{let n=t.synthesizeStream(e.text,{...r?{voice:r}:{},...e.rate?{speed:e.rate}:{}});for await(let t of n)await De(t.audio,t.sampleRate,e.volume),i++;return{engine:`kokoro`}}catch(e){if(i>0)return W.warn(`kokoro stream failed mid-playback; stopping`,e),{engine:`kokoro`};W.warn(`kokoro synthesis failed; falling back to webspeech`,e)}}return await Oe(e),{engine:`webspeech`}}async function Ae(e){let t=F();if(!t)throw Error(`on-device voice not ready — run say --warmup and retry once it reports ready`);if(e.lang&&!e.lang.toLowerCase().startsWith(`en`))throw Error(`-o writes WAV via the on-device voice, which is English-only (got ${e.lang})`);if(e.voice&&!t.voices().map(e=>e.id).includes(e.voice))throw Error(`-o writes WAV via the on-device voice; "${e.voice}" is a Web Speech voice. Pick a kokoro voice (e.g. af_heart) or omit -v.`);let n=[],r=t.synthesizeStream(e.text,{...e.voice?{voice:e.voice}:{},...e.rate?{speed:e.rate}:{}});for await(let e of r)n.push({audio:e.audio,sampleRate:e.sampleRate});if(n.length===0)throw Error(`kokoro produced no audio (text is empty after sentence split?)`);return _e(n)}export{Ce as hasVoiceForLang,Z as kokoroStatus,J as kokoroVoicesIfReady,Q as kokoroWarmup,we as setSpeakAssetsInstanceId,ke as speak,xe as speechTextFromMarkdown,Ae as synthesizeToWav};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-DDBAeTLF.js";import{a as t}from"./feature-flags-DvsApnS-.js";import{r as n,t as r}from"./sprinkle-renderer-Dur1ZNnK.js";import{n as i,t as a}from"./panel-rpc-accessor-B4BfPLSo.js";import{s as o}from"./telemetry-B0sKnLBU.js";import{t as s}from"./permissions-surface-registry-CilCRwhh.js";import{n as c,t as l}from"./bounded-walk-BjxKWNqp.js";import"./sprinkle-instances-B8n7h-oP.js";var u=[`/workspace`,`/shared`,`/scoops`,`/home`],d=[`/shared/sprinkles`],f=6,p=500,m=new Set([`connect-llm`,`welcome`]);function h(e){return m.has(e)?!0:e===`suggestions`&&!t(`memory-v2`)}async function g(e){let t=new Map;for(let n of[...d,...u])await e.exists(n)&&await _(e,n,t);return t}async function _(e,t,n){let r=c(e,t,{maxDepth:f,maxDirs:p,skip:l});for await(let t of r){if(!t.endsWith(`.shtml`))continue;let r=v(t);if(!h(r)&&!n.has(r)){let i;try{i=await e.readFile(t,{encoding:`utf-8`})??``}catch{i=``}n.set(r,{name:r,path:t,title:y(i,r),autoOpen:b(i),icon:x(i)})}}}function v(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.shtml`)?t.slice(0,-6):t}function y(e,t){let n=e.match(/data-sprinkle-title=["']([^"']+)["']/);if(n)return n[1];let r=e.match(/<title>([^<]+)<\/title>/i);return r?r[1].trim():t}function b(e){return/data-sprinkle-autoopen\b/.test(e)}function x(e){let t=/<link\b/gi,n;for(;(n=t.exec(e))!==null;){let t=n.index+n[0].length,r=S(e,t);if(r<0)continue;let i=e.slice(t,r);if(!/\brel\s*=\s*("|')\s*(?:shortcut\s+)?icon\s*\1/i.test(i))continue;let a=C(i,`href`);if(a!==void 0)return a.trim()}let r=C(e,`data-sprinkle-icon`);if(r!==void 0)return r.trim()}function S(e,t){let n=!1,r=!1;for(let i=t;i<e.length;i++){let t=e.charCodeAt(i);if(n)t===34&&(n=!1);else if(r)t===39&&(r=!1);else if(t===34)n=!0;else if(t===39)r=!0;else if(t===62)return i}return-1}function C(e,t){let n=RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`),r=e.match(n);if(r)return r[1]??r[2]??void 0}var w=e(`sprinkle-manager`);async function T(){let e=s();if(e){let t=await e.prompt({kinds:[`screenshare`],description:`A sprinkle asks to share a screen.`,requestOptions:{screenshare:{constraints:{video:!0,audio:!1}}}}),n=t.status===`granted`?t.grants.find(e=>e.kind===`screenshare`):void 0;if(!n){let e=t.message?`: ${t.message}`:``,n=t.reason??t.status;throw Error(n===`cancelled`||t.status===`cancelled`?`Screen capture cancelled`:`Screen capture ${n}${e}`)}return n.stream}if(!navigator.mediaDevices?.getDisplayMedia)throw Error(`Screen capture not supported in this browser`);return navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1})}var E=`slicc-open-sprinkles`,D=`sprinkles`;function O(){try{if(typeof window>`u`||!window.location)return null;let e=new URLSearchParams(window.location.search).get(D);return e===null?null:e===``?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}catch{return null}}function k(e){try{if(typeof window>`u`||!window.location||typeof history>`u`||typeof history.replaceState!=`function`)return;let t=new URL(window.location.href);e.length===0?t.searchParams.delete(D):t.searchParams.set(D,e.join(`,`));let n=t.pathname+t.search+t.hash;history.replaceState(history.state??null,``,n)}catch{}}var A=`slicc-known-sprinkles`;function j(e){try{let t=new Set(e),n=M().filter(e=>t.has(e));localStorage.setItem(A,JSON.stringify(n))}catch{}}function M(){try{let e=localStorage.getItem(A);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}var N=`slicc-autoopened-once`,P=u,F=250,I=class{fs;bridge;callbacks;availableSprinkles=new Map;watcherUnsub;openSprinkles=new Map;attentionOnly=new Set;rendererOperationTails=new Map;inflightRefresh=null;lastRefreshAt=0;autoOpenBehavior;onSendToSprinkle;onSprinkleReloaded;resolveLickOriginUnitId;registeredSprinkles=new Set;inlineSprinkles;changeListeners=new Set;changeNotifyScheduled=!1;urlWriteScheduled=!1;constructor(e,t,r,o,s={}){this.fs=e;let c=async()=>{let e=`image/png`,t=i(),n=a();if(!t&&!n)throw Error(`Screen capture unavailable in this environment`);let r,o,s;if(t){let t=await T();try{let n=document.createElement(`video`);n.srcObject=t,n.muted=!0,n.playsInline=!0,await new Promise((e,t)=>{n.onloadedmetadata=()=>n.play().then(()=>e()).catch(t),n.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100)),o=n.videoWidth,s=n.videoHeight;let i=document.createElement(`canvas`);i.width=o,i.height=s;let a=i.getContext(`2d`);if(!a)throw Error(`Failed to get canvas context`);a.drawImage(n,0,0,o,s),r=await(await new Promise((t,n)=>{i.toBlob(e=>e?t(e):n(Error(`Failed to create image blob`)),e,1)})).arrayBuffer()}finally{for(let e of t.getTracks())e.stop()}}else{let t=await n.call(`screencapture`,{mimeType:e,quality:1},{timeoutMs:3e5});r=t.bytes,o=t.width,s=t.height}let c=new Uint8Array(r),l=[],u=8192;for(let e=0;e<c.length;e+=u)l.push(String.fromCharCode(...c.subarray(e,e+u)));return{base64:btoa(l.join(``)),width:o,height:s,mimeType:e}};this.bridge=new n(e,t,e=>this.close(e),e=>this.minimize(e),o,s.onAttachImage??(()=>{}),c,s.execHandler,(e,t,n)=>{this.openSprinkles.get(e)?.renderer.pushDeviceEvent(t,n)},s.selectScoopHandler,s.selectedScoopHandler),this.callbacks=r,this.autoOpenBehavior=s.autoOpenBehavior??`activate`,this.onSendToSprinkle=s.onSendToSprinkle,this.onSprinkleReloaded=s.onSprinkleReloaded,this.resolveLickOriginUnitId=s.resolveLickOriginUnitId,this.inlineSprinkles=s.inlineSprinkles??new Set}setSendToSprinkleHook(e){this.onSendToSprinkle&&!e&&w.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}setReloadHook(e){this.onSprinkleReloaded=e}enqueueRendererOperation(e,t){let n=(this.rendererOperationTails.get(e)??Promise.resolve()).then(t,t);return this.rendererOperationTails.set(e,n),n.finally(()=>{this.rendererOperationTails.get(e)===n&&this.rendererOperationTails.delete(e)})}reload(e){return this.enqueueRendererOperation(e,()=>this.reloadNow(e))}async reloadNow(e){let t=this.openSprinkles.get(e);if(!t){w.info(`Cannot reload closed sprinkle`,{name:e});return}let n=this.availableSprinkles.get(e);if(n||=(await this.refresh(),this.availableSprinkles.get(e)),!n){w.warn(`Sprinkle not found during reload`,{name:e});return}let i=await this.fs.readFile(n.path,{encoding:`utf-8`});if(i==null){w.warn(`Failed to read sprinkle content during reload`,{name:e});return}let a=typeof i==`string`?i:new TextDecoder(`utf-8`).decode(i);t.renderer?.dispose(),this.bridge.removeSprinkle(e);let o=this.bridge.createAPI(e,()=>t.lickOriginUnitId),s=new r(t.container,o);if(await s.render(a,e),!this.openSprinkles.has(e)){s.dispose();return}if(t.renderer=s,s.activateBridgeLifecycle(),this.openSprinkles.has(e)&&(w.info(`Sprinkle reloaded`,{name:e}),this.notifyChange(),this.onSprinkleReloaded))try{this.onSprinkleReloaded(e)}catch(t){w.error(`onSprinkleReloaded hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}async restoreOpenSprinkles(){try{let e=O();if(e!==null){await this.reopenInBackground(e);return}let t=localStorage.getItem(E);t?await this.restoreFromLegacyStorage(t):await this.autoOpenFirstRun()}catch{}await this.surfaceUnseenSprinkles()}async reopenInBackground(e){for(let t of e)try{await this.open(t,void 0,{background:!0})}catch{w.warn(`Failed to restore sprinkle`,{name:t})}}async restoreFromLegacyStorage(e){try{await this.reopenInBackground(JSON.parse(e))}finally{try{localStorage.removeItem(E)}catch{}}}async autoOpenFirstRun(){let e=this.autoOpenBehavior===`attention`,t=this.loadAutoOpenedOnce(),n=new Set;for(let r of this.availableSprinkles.values())if(!(!r.autoOpen||t.has(r.name)))try{await this.open(r.name,void 0,{attention:e}),n.add(r.name)}catch{w.warn(`Failed to auto-open sprinkle`,{name:r.name})}n.size>0&&this.persistAutoOpenedOnce(n)}async surfaceUnseenSprinkles(){let e=this.loadKnownSprinkles(),t=this.loadAutoOpenedOnce(),n=this.autoOpenBehavior===`attention`,r=new Set;for(let i of this.availableSprinkles.values())if(!e.has(i.name)&&!this.openSprinkles.has(i.name)&&!(i.autoOpen&&t.has(i.name)))try{await this.open(i.name,void 0,{attention:!i.autoOpen||n}),i.autoOpen&&r.add(i.name),w.info(`Surfaced previously-unseen sprinkle`,{name:i.name})}catch{w.warn(`Failed to surface unseen sprinkle`,{name:i.name})}this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}loadKnownSprinkles(){return new Set(M())}persistKnownSprinkles(e){try{let t=new Set([...this.loadKnownSprinkles(),...e]);localStorage.setItem(A,JSON.stringify([...t]))}catch{}}loadAutoOpenedOnce(){try{let e=localStorage.getItem(N);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}persistAutoOpenedOnce(e){try{let t=new Set([...this.loadAutoOpenedOnce(),...e]);localStorage.setItem(N,JSON.stringify([...t]))}catch{}}persistOpenSprinkles(){try{let e=[...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e));localStorage.setItem(E,JSON.stringify(e))}catch{}this.schedulePersistOpenSprinklesToUrl()}schedulePersistOpenSprinklesToUrl(){this.urlWriteScheduled||(this.urlWriteScheduled=!0,queueMicrotask(()=>{this.urlWriteScheduled=!1,k([...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e)))}))}async openNewAutoOpenSprinkles(){if(this.inflightRefresh!==null)return this.inflightRefresh;if(!(Date.now()-this.lastRefreshAt<F))return this.inflightRefresh=this.runOpenNewAutoOpenSprinkles().finally(()=>{this.lastRefreshAt=Date.now(),this.inflightRefresh=null}),this.inflightRefresh}async runOpenNewAutoOpenSprinkles(){let e=new Set(this.availableSprinkles.keys());await this.refresh();let t=this.autoOpenBehavior===`attention`,n=this.loadAutoOpenedOnce(),r=new Set,i=!1;for(let a of this.availableSprinkles.values())if(!this.openSprinkles.has(a.name)&&!e.has(a.name)){if(i=!0,a.autoOpen){if(n.has(a.name)){w.info(`Skipped one-shot auto-open for previously-consumed sprinkle`,{name:a.name});continue}try{await this.open(a.name,void 0,{attention:t}),r.add(a.name),w.info(`Auto-opened new sprinkle after install`,{name:a.name,attention:t})}catch{w.warn(`Failed to auto-open new sprinkle`,{name:a.name})}}else try{await this.open(a.name,void 0,{attention:!0}),w.info(`Surfaced newly-installed sprinkle in rail`,{name:a.name})}catch{w.warn(`Failed to surface newly-installed sprinkle`,{name:a.name})}}i&&this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}async refresh(){this.availableSprinkles=await g(this.fs),w.info(`Discovered sprinkles`,{count:this.availableSprinkles.size}),this.syncRegisteredIcons(),this.notifyChange()}syncRegisteredIcons(){if(!this.callbacks.registerSprinkle)return;let e=new Set;for(let t of this.availableSprinkles.values())this.inlineSprinkles.has(t.name)||e.add(t.name);for(let t of this.availableSprinkles.values())if(e.has(t.name)&&!this.registeredSprinkles.has(t.name))try{this.callbacks.registerSprinkle(t.name,t.title,{icon:t.icon}),this.registeredSprinkles.add(t.name)}catch(e){w.warn(`registerSprinkle callback threw`,{name:t.name,error:e instanceof Error?e.message:String(e)})}for(let t of[...this.registeredSprinkles])if(!e.has(t)){this.openSprinkles.has(t)&&this.close(t);try{this.callbacks.unregisterSprinkle?.(t)}catch(e){w.warn(`unregisterSprinkle callback threw`,{name:t,error:e instanceof Error?e.message:String(e)})}this.registeredSprinkles.delete(t)}}onChange(e){return this.changeListeners.add(e),()=>{this.changeListeners.delete(e)}}notifyChange(){this.changeNotifyScheduled||(this.changeNotifyScheduled=!0,queueMicrotask(()=>{this.changeNotifyScheduled=!1;for(let e of this.changeListeners)try{e()}catch(e){w.error(`SprinkleManager.onChange handler threw`,{error:e instanceof Error?e.message:String(e)})}}))}open(e,t,n={}){return this.enqueueRendererOperation(e,()=>this.openNow(e,t,n))}async openNow(e,t,n={}){if(this.openSprinkles.has(e)){w.info(`Sprinkle already open`,{name:e});return}let i=this.availableSprinkles.get(e);if(i||=(await this.refresh(),this.availableSprinkles.get(e)),!i)throw Error(`Sprinkle not found: ${e}`);let a=await this.fs.readFile(i.path,{encoding:`utf-8`});if(a==null)throw Error(`Failed to read sprinkle content: ${i.path} (file may be corrupted or missing)`);let s=typeof a==`string`?a:new TextDecoder(`utf-8`).decode(a),c=document.createElement(`div`);c.className=`sprinkle-panel`,c.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow-y: auto;`,c.dataset.sprinkle=e;let l={renderer:null,container:c,lickOriginUnitId:n.lickOriginTarget?this.resolveLickOriginUnitId?.(n.lickOriginTarget):void 0};this.openSprinkles.set(e,l),n.attention?this.attentionOnly.add(e):this.attentionOnly.delete(e),this.callbacks.addSprinkle(e,i.title,c,t,{attention:n.attention,background:n.background,icon:i.icon});let u=this.bridge.createAPI(e,()=>l.lickOriginUnitId),d=new r(c,u);await d.render(s,e);let f=this.openSprinkles.get(e);if(!f){d.dispose();return}f.renderer=d,d.activateBridgeLifecycle(),this.openSprinkles.has(e)&&(this.persistOpenSprinkles(),o(e),w.info(`Sprinkle opened`,{name:e,title:i.title}),this.notifyChange())}markActivated(e){this.attentionOnly.has(e)&&(this.attentionOnly.delete(e),this.persistOpenSprinkles(),w.info(`Sprinkle promoted from attention to user-opened`,{name:e}),this.notifyChange())}async activate(e,t,n={}){let r=this.attentionOnly.has(e),i=this.openSprinkles.get(e);if(r&&i&&n.lickOriginTarget&&(i.lickOriginUnitId=this.resolveLickOriginUnitId?.(n.lickOriginTarget)),r&&this.markActivated(e),!i){try{await this.open(e,t,n)}catch(t){w.warn(`Failed to open sprinkle from rail-icon click`,{name:e,error:t instanceof Error?t.message:String(t)})}return}let a=this.availableSprinkles.get(e);this.callbacks.addSprinkle(e,a?.title??e,i.container,t,{icon:a?.icon})}close(e){let t=this.openSprinkles.get(e);t&&(t.renderer?.dispose(),t.container.remove(),this.bridge.removeSprinkle(e),this.openSprinkles.delete(e),this.attentionOnly.delete(e),this.callbacks.closeSprinkleContent?this.callbacks.closeSprinkleContent(e):this.callbacks.removeSprinkle(e),this.persistOpenSprinkles(),w.info(`Sprinkle closed`,{name:e}),this.notifyChange())}minimize(e){this.openSprinkles.has(e)&&(this.callbacks.minimizeSprinkle(e),w.info(`Sprinkle minimized`,{name:e}))}available(){return Array.from(this.availableSprinkles.values())}opened(){return Array.from(this.openSprinkles.keys())}lickOriginUnitIdOf(e){return this.openSprinkles.get(e)?.lickOriginUnitId}setupWatcher(e){let t=null,n=new Map,r=e=>{let r=!1;for(let t of e){let e=this.findOpenSprinkleByPath(t.path);if(e){let t=n.get(e);t&&clearTimeout(t),n.set(e,setTimeout(()=>{n.delete(e),this.reload(e).catch(t=>{w.warn(`Sprinkle reload on watcher event failed`,{name:e,error:t instanceof Error?t.message:String(t)})})},300))}else r=!0}r&&!t&&(t=setTimeout(()=>{t=null,this.openNewAutoOpenSprinkles().catch(e=>{w.warn(`Sprinkle refresh on watcher event failed`,{error:e instanceof Error?e.message:String(e)})})},150))},i=P.map(t=>e.watch(t,e=>e.endsWith(`.shtml`),r));this.watcherUnsub=()=>{for(let e of i)e();t&&=(clearTimeout(t),null);for(let e of n.values())clearTimeout(e);n.clear()}}findOpenSprinkleByPath(e){for(let[t]of this.openSprinkles){let n=this.availableSprinkles.get(t);if(n&&n.path===e)return t}return null}dispose(){this.watcherUnsub?.()}sendToSprinkle(e,t,n){let r=!n?.runtime||n.runtime===`leader`,i=!n?.runtime||n.runtime!==`leader`,a={leader:!1,followers:[]};if(r){let n=this.openSprinkles.get(e);n?(this.bridge.pushUpdate(e,t),n.renderer.pushUpdate(t),a.leader=!0):w.warn(`Cannot send to closed sprinkle`,{name:e})}if(i&&this.onSendToSprinkle)try{let r=this.onSendToSprinkle(e,t,n);r&&(a.followers=r.followers,r.unknownRuntime&&(a.unknownRuntime=r.unknownRuntime))}catch(t){w.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}return a}};export{I as SprinkleManager,j as pruneKnownSprinkleNames,M as readKnownSprinkleNames};
|
|
1
|
+
import{t as e}from"./logger-DDBAeTLF.js";import{a as t}from"./feature-flags-DvsApnS-.js";import{r as n,t as r}from"./sprinkle-renderer-xgwRm1L_.js";import{n as i,t as a}from"./panel-rpc-accessor-B4BfPLSo.js";import{s as o}from"./telemetry-B0sKnLBU.js";import{t as s}from"./permissions-surface-registry-CilCRwhh.js";import{n as c,t as l}from"./bounded-walk-BjxKWNqp.js";import"./sprinkle-instances-B8n7h-oP.js";var u=[`/workspace`,`/shared`,`/scoops`,`/home`],d=[`/shared/sprinkles`],f=6,p=500,m=new Set([`connect-llm`,`welcome`]);function h(e){return m.has(e)?!0:e===`suggestions`&&!t(`memory-v2`)}async function g(e){let t=new Map;for(let n of[...d,...u])await e.exists(n)&&await _(e,n,t);return t}async function _(e,t,n){let r=c(e,t,{maxDepth:f,maxDirs:p,skip:l});for await(let t of r){if(!t.endsWith(`.shtml`))continue;let r=v(t);if(!h(r)&&!n.has(r)){let i;try{i=await e.readFile(t,{encoding:`utf-8`})??``}catch{i=``}n.set(r,{name:r,path:t,title:y(i,r),autoOpen:b(i),icon:x(i)})}}}function v(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.shtml`)?t.slice(0,-6):t}function y(e,t){let n=e.match(/data-sprinkle-title=["']([^"']+)["']/);if(n)return n[1];let r=e.match(/<title>([^<]+)<\/title>/i);return r?r[1].trim():t}function b(e){return/data-sprinkle-autoopen\b/.test(e)}function x(e){let t=/<link\b/gi,n;for(;(n=t.exec(e))!==null;){let t=n.index+n[0].length,r=S(e,t);if(r<0)continue;let i=e.slice(t,r);if(!/\brel\s*=\s*("|')\s*(?:shortcut\s+)?icon\s*\1/i.test(i))continue;let a=C(i,`href`);if(a!==void 0)return a.trim()}let r=C(e,`data-sprinkle-icon`);if(r!==void 0)return r.trim()}function S(e,t){let n=!1,r=!1;for(let i=t;i<e.length;i++){let t=e.charCodeAt(i);if(n)t===34&&(n=!1);else if(r)t===39&&(r=!1);else if(t===34)n=!0;else if(t===39)r=!0;else if(t===62)return i}return-1}function C(e,t){let n=RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`),r=e.match(n);if(r)return r[1]??r[2]??void 0}var w=e(`sprinkle-manager`);async function T(){let e=s();if(e){let t=await e.prompt({kinds:[`screenshare`],description:`A sprinkle asks to share a screen.`,requestOptions:{screenshare:{constraints:{video:!0,audio:!1}}}}),n=t.status===`granted`?t.grants.find(e=>e.kind===`screenshare`):void 0;if(!n){let e=t.message?`: ${t.message}`:``,n=t.reason??t.status;throw Error(n===`cancelled`||t.status===`cancelled`?`Screen capture cancelled`:`Screen capture ${n}${e}`)}return n.stream}if(!navigator.mediaDevices?.getDisplayMedia)throw Error(`Screen capture not supported in this browser`);return navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1})}var E=`slicc-open-sprinkles`,D=`sprinkles`;function O(){try{if(typeof window>`u`||!window.location)return null;let e=new URLSearchParams(window.location.search).get(D);return e===null?null:e===``?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}catch{return null}}function k(e){try{if(typeof window>`u`||!window.location||typeof history>`u`||typeof history.replaceState!=`function`)return;let t=new URL(window.location.href);e.length===0?t.searchParams.delete(D):t.searchParams.set(D,e.join(`,`));let n=t.pathname+t.search+t.hash;history.replaceState(history.state??null,``,n)}catch{}}var A=`slicc-known-sprinkles`;function j(e){try{let t=new Set(e),n=M().filter(e=>t.has(e));localStorage.setItem(A,JSON.stringify(n))}catch{}}function M(){try{let e=localStorage.getItem(A);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}var N=`slicc-autoopened-once`,P=u,F=250,I=class{fs;bridge;callbacks;availableSprinkles=new Map;watcherUnsub;openSprinkles=new Map;attentionOnly=new Set;rendererOperationTails=new Map;inflightRefresh=null;lastRefreshAt=0;autoOpenBehavior;onSendToSprinkle;onSprinkleReloaded;resolveLickOriginUnitId;registeredSprinkles=new Set;inlineSprinkles;changeListeners=new Set;changeNotifyScheduled=!1;urlWriteScheduled=!1;constructor(e,t,r,o,s={}){this.fs=e;let c=async()=>{let e=`image/png`,t=i(),n=a();if(!t&&!n)throw Error(`Screen capture unavailable in this environment`);let r,o,s;if(t){let t=await T();try{let n=document.createElement(`video`);n.srcObject=t,n.muted=!0,n.playsInline=!0,await new Promise((e,t)=>{n.onloadedmetadata=()=>n.play().then(()=>e()).catch(t),n.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100)),o=n.videoWidth,s=n.videoHeight;let i=document.createElement(`canvas`);i.width=o,i.height=s;let a=i.getContext(`2d`);if(!a)throw Error(`Failed to get canvas context`);a.drawImage(n,0,0,o,s),r=await(await new Promise((t,n)=>{i.toBlob(e=>e?t(e):n(Error(`Failed to create image blob`)),e,1)})).arrayBuffer()}finally{for(let e of t.getTracks())e.stop()}}else{let t=await n.call(`screencapture`,{mimeType:e,quality:1},{timeoutMs:3e5});r=t.bytes,o=t.width,s=t.height}let c=new Uint8Array(r),l=[],u=8192;for(let e=0;e<c.length;e+=u)l.push(String.fromCharCode(...c.subarray(e,e+u)));return{base64:btoa(l.join(``)),width:o,height:s,mimeType:e}};this.bridge=new n(e,t,e=>this.close(e),e=>this.minimize(e),o,s.onAttachImage??(()=>{}),c,s.execHandler,(e,t,n)=>{this.openSprinkles.get(e)?.renderer.pushDeviceEvent(t,n)},s.selectScoopHandler,s.selectedScoopHandler),this.callbacks=r,this.autoOpenBehavior=s.autoOpenBehavior??`activate`,this.onSendToSprinkle=s.onSendToSprinkle,this.onSprinkleReloaded=s.onSprinkleReloaded,this.resolveLickOriginUnitId=s.resolveLickOriginUnitId,this.inlineSprinkles=s.inlineSprinkles??new Set}setSendToSprinkleHook(e){this.onSendToSprinkle&&!e&&w.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}setReloadHook(e){this.onSprinkleReloaded=e}enqueueRendererOperation(e,t){let n=(this.rendererOperationTails.get(e)??Promise.resolve()).then(t,t);return this.rendererOperationTails.set(e,n),n.finally(()=>{this.rendererOperationTails.get(e)===n&&this.rendererOperationTails.delete(e)})}reload(e){return this.enqueueRendererOperation(e,()=>this.reloadNow(e))}async reloadNow(e){let t=this.openSprinkles.get(e);if(!t){w.info(`Cannot reload closed sprinkle`,{name:e});return}let n=this.availableSprinkles.get(e);if(n||=(await this.refresh(),this.availableSprinkles.get(e)),!n){w.warn(`Sprinkle not found during reload`,{name:e});return}let i=await this.fs.readFile(n.path,{encoding:`utf-8`});if(i==null){w.warn(`Failed to read sprinkle content during reload`,{name:e});return}let a=typeof i==`string`?i:new TextDecoder(`utf-8`).decode(i);t.renderer?.dispose(),this.bridge.removeSprinkle(e);let o=this.bridge.createAPI(e,()=>t.lickOriginUnitId),s=new r(t.container,o);if(await s.render(a,e),!this.openSprinkles.has(e)){s.dispose();return}if(t.renderer=s,s.activateBridgeLifecycle(),this.openSprinkles.has(e)&&(w.info(`Sprinkle reloaded`,{name:e}),this.notifyChange(),this.onSprinkleReloaded))try{this.onSprinkleReloaded(e)}catch(t){w.error(`onSprinkleReloaded hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}async restoreOpenSprinkles(){try{let e=O();if(e!==null){await this.reopenInBackground(e);return}let t=localStorage.getItem(E);t?await this.restoreFromLegacyStorage(t):await this.autoOpenFirstRun()}catch{}await this.surfaceUnseenSprinkles()}async reopenInBackground(e){for(let t of e)try{await this.open(t,void 0,{background:!0})}catch{w.warn(`Failed to restore sprinkle`,{name:t})}}async restoreFromLegacyStorage(e){try{await this.reopenInBackground(JSON.parse(e))}finally{try{localStorage.removeItem(E)}catch{}}}async autoOpenFirstRun(){let e=this.autoOpenBehavior===`attention`,t=this.loadAutoOpenedOnce(),n=new Set;for(let r of this.availableSprinkles.values())if(!(!r.autoOpen||t.has(r.name)))try{await this.open(r.name,void 0,{attention:e}),n.add(r.name)}catch{w.warn(`Failed to auto-open sprinkle`,{name:r.name})}n.size>0&&this.persistAutoOpenedOnce(n)}async surfaceUnseenSprinkles(){let e=this.loadKnownSprinkles(),t=this.loadAutoOpenedOnce(),n=this.autoOpenBehavior===`attention`,r=new Set;for(let i of this.availableSprinkles.values())if(!e.has(i.name)&&!this.openSprinkles.has(i.name)&&!(i.autoOpen&&t.has(i.name)))try{await this.open(i.name,void 0,{attention:!i.autoOpen||n}),i.autoOpen&&r.add(i.name),w.info(`Surfaced previously-unseen sprinkle`,{name:i.name})}catch{w.warn(`Failed to surface unseen sprinkle`,{name:i.name})}this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}loadKnownSprinkles(){return new Set(M())}persistKnownSprinkles(e){try{let t=new Set([...this.loadKnownSprinkles(),...e]);localStorage.setItem(A,JSON.stringify([...t]))}catch{}}loadAutoOpenedOnce(){try{let e=localStorage.getItem(N);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}persistAutoOpenedOnce(e){try{let t=new Set([...this.loadAutoOpenedOnce(),...e]);localStorage.setItem(N,JSON.stringify([...t]))}catch{}}persistOpenSprinkles(){try{let e=[...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e));localStorage.setItem(E,JSON.stringify(e))}catch{}this.schedulePersistOpenSprinklesToUrl()}schedulePersistOpenSprinklesToUrl(){this.urlWriteScheduled||(this.urlWriteScheduled=!0,queueMicrotask(()=>{this.urlWriteScheduled=!1,k([...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e)))}))}async openNewAutoOpenSprinkles(){if(this.inflightRefresh!==null)return this.inflightRefresh;if(!(Date.now()-this.lastRefreshAt<F))return this.inflightRefresh=this.runOpenNewAutoOpenSprinkles().finally(()=>{this.lastRefreshAt=Date.now(),this.inflightRefresh=null}),this.inflightRefresh}async runOpenNewAutoOpenSprinkles(){let e=new Set(this.availableSprinkles.keys());await this.refresh();let t=this.autoOpenBehavior===`attention`,n=this.loadAutoOpenedOnce(),r=new Set,i=!1;for(let a of this.availableSprinkles.values())if(!this.openSprinkles.has(a.name)&&!e.has(a.name)){if(i=!0,a.autoOpen){if(n.has(a.name)){w.info(`Skipped one-shot auto-open for previously-consumed sprinkle`,{name:a.name});continue}try{await this.open(a.name,void 0,{attention:t}),r.add(a.name),w.info(`Auto-opened new sprinkle after install`,{name:a.name,attention:t})}catch{w.warn(`Failed to auto-open new sprinkle`,{name:a.name})}}else try{await this.open(a.name,void 0,{attention:!0}),w.info(`Surfaced newly-installed sprinkle in rail`,{name:a.name})}catch{w.warn(`Failed to surface newly-installed sprinkle`,{name:a.name})}}i&&this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}async refresh(){this.availableSprinkles=await g(this.fs),w.info(`Discovered sprinkles`,{count:this.availableSprinkles.size}),this.syncRegisteredIcons(),this.notifyChange()}syncRegisteredIcons(){if(!this.callbacks.registerSprinkle)return;let e=new Set;for(let t of this.availableSprinkles.values())this.inlineSprinkles.has(t.name)||e.add(t.name);for(let t of this.availableSprinkles.values())if(e.has(t.name)&&!this.registeredSprinkles.has(t.name))try{this.callbacks.registerSprinkle(t.name,t.title,{icon:t.icon}),this.registeredSprinkles.add(t.name)}catch(e){w.warn(`registerSprinkle callback threw`,{name:t.name,error:e instanceof Error?e.message:String(e)})}for(let t of[...this.registeredSprinkles])if(!e.has(t)){this.openSprinkles.has(t)&&this.close(t);try{this.callbacks.unregisterSprinkle?.(t)}catch(e){w.warn(`unregisterSprinkle callback threw`,{name:t,error:e instanceof Error?e.message:String(e)})}this.registeredSprinkles.delete(t)}}onChange(e){return this.changeListeners.add(e),()=>{this.changeListeners.delete(e)}}notifyChange(){this.changeNotifyScheduled||(this.changeNotifyScheduled=!0,queueMicrotask(()=>{this.changeNotifyScheduled=!1;for(let e of this.changeListeners)try{e()}catch(e){w.error(`SprinkleManager.onChange handler threw`,{error:e instanceof Error?e.message:String(e)})}}))}open(e,t,n={}){return this.enqueueRendererOperation(e,()=>this.openNow(e,t,n))}async openNow(e,t,n={}){if(this.openSprinkles.has(e)){w.info(`Sprinkle already open`,{name:e});return}let i=this.availableSprinkles.get(e);if(i||=(await this.refresh(),this.availableSprinkles.get(e)),!i)throw Error(`Sprinkle not found: ${e}`);let a=await this.fs.readFile(i.path,{encoding:`utf-8`});if(a==null)throw Error(`Failed to read sprinkle content: ${i.path} (file may be corrupted or missing)`);let s=typeof a==`string`?a:new TextDecoder(`utf-8`).decode(a),c=document.createElement(`div`);c.className=`sprinkle-panel`,c.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow-y: auto;`,c.dataset.sprinkle=e;let l={renderer:null,container:c,lickOriginUnitId:n.lickOriginTarget?this.resolveLickOriginUnitId?.(n.lickOriginTarget):void 0};this.openSprinkles.set(e,l),n.attention?this.attentionOnly.add(e):this.attentionOnly.delete(e),this.callbacks.addSprinkle(e,i.title,c,t,{attention:n.attention,background:n.background,icon:i.icon});let u=this.bridge.createAPI(e,()=>l.lickOriginUnitId),d=new r(c,u);await d.render(s,e);let f=this.openSprinkles.get(e);if(!f){d.dispose();return}f.renderer=d,d.activateBridgeLifecycle(),this.openSprinkles.has(e)&&(this.persistOpenSprinkles(),o(e),w.info(`Sprinkle opened`,{name:e,title:i.title}),this.notifyChange())}markActivated(e){this.attentionOnly.has(e)&&(this.attentionOnly.delete(e),this.persistOpenSprinkles(),w.info(`Sprinkle promoted from attention to user-opened`,{name:e}),this.notifyChange())}async activate(e,t,n={}){let r=this.attentionOnly.has(e),i=this.openSprinkles.get(e);if(r&&i&&n.lickOriginTarget&&(i.lickOriginUnitId=this.resolveLickOriginUnitId?.(n.lickOriginTarget)),r&&this.markActivated(e),!i){try{await this.open(e,t,n)}catch(t){w.warn(`Failed to open sprinkle from rail-icon click`,{name:e,error:t instanceof Error?t.message:String(t)})}return}let a=this.availableSprinkles.get(e);this.callbacks.addSprinkle(e,a?.title??e,i.container,t,{icon:a?.icon})}close(e){let t=this.openSprinkles.get(e);t&&(t.renderer?.dispose(),t.container.remove(),this.bridge.removeSprinkle(e),this.openSprinkles.delete(e),this.attentionOnly.delete(e),this.callbacks.closeSprinkleContent?this.callbacks.closeSprinkleContent(e):this.callbacks.removeSprinkle(e),this.persistOpenSprinkles(),w.info(`Sprinkle closed`,{name:e}),this.notifyChange())}minimize(e){this.openSprinkles.has(e)&&(this.callbacks.minimizeSprinkle(e),w.info(`Sprinkle minimized`,{name:e}))}available(){return Array.from(this.availableSprinkles.values())}opened(){return Array.from(this.openSprinkles.keys())}lickOriginUnitIdOf(e){return this.openSprinkles.get(e)?.lickOriginUnitId}setupWatcher(e){let t=null,n=new Map,r=e=>{let r=!1;for(let t of e){let e=this.findOpenSprinkleByPath(t.path);if(e){let t=n.get(e);t&&clearTimeout(t),n.set(e,setTimeout(()=>{n.delete(e),this.reload(e).catch(t=>{w.warn(`Sprinkle reload on watcher event failed`,{name:e,error:t instanceof Error?t.message:String(t)})})},300))}else r=!0}r&&!t&&(t=setTimeout(()=>{t=null,this.openNewAutoOpenSprinkles().catch(e=>{w.warn(`Sprinkle refresh on watcher event failed`,{error:e instanceof Error?e.message:String(e)})})},150))},i=P.map(t=>e.watch(t,e=>e.endsWith(`.shtml`),r));this.watcherUnsub=()=>{for(let e of i)e();t&&=(clearTimeout(t),null);for(let e of n.values())clearTimeout(e);n.clear()}}findOpenSprinkleByPath(e){for(let[t]of this.openSprinkles){let n=this.availableSprinkles.get(t);if(n&&n.path===e)return t}return null}dispose(){this.watcherUnsub?.()}sendToSprinkle(e,t,n){let r=!n?.runtime||n.runtime===`leader`,i=!n?.runtime||n.runtime!==`leader`,a={leader:!1,followers:[]};if(r){let n=this.openSprinkles.get(e);n?(this.bridge.pushUpdate(e,t),n.renderer.pushUpdate(t),a.leader=!0):w.warn(`Cannot send to closed sprinkle`,{name:e})}if(i&&this.onSendToSprinkle)try{let r=this.onSendToSprinkle(e,t,n);r&&(a.followers=r.followers,r.unknownRuntime&&(a.unknownRuntime=r.unknownRuntime))}catch(t){w.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}return a}};export{I as SprinkleManager,j as pruneKnownSprinkleNames,M as readKnownSprinkleNames};
|