sliccy 6.235.2 → 6.235.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 +181 -181
- package/dist/ui/assets/{account-store-BT0pbAvQ.js → account-store-B2cAHozW.js} +1 -1
- package/dist/ui/assets/{account-store-D7DGAxNM.js → account-store-D0xdiy20.js} +1 -1
- package/dist/ui/assets/{adobe-_I4i3x_7.js → adobe-BXAZ88v2.js} +1 -1
- package/dist/ui/assets/{adobe-CEArSxCX.js → adobe-zXST80lm.js} +1 -1
- package/dist/ui/assets/{agent-panels-C_58flxq.js → agent-panels-BsN6GFr4.js} +1 -1
- package/dist/ui/assets/{almost-bash-shell-headless-B6ZMvYl4.js → almost-bash-shell-headless-Bylkd2NC.js} +16 -16
- package/dist/ui/assets/{apply-layout-8fGhBCeJ.js → apply-layout-TzbiHcrs.js} +1 -1
- package/dist/ui/assets/{azure-openai-eCi3qaKl.js → azure-openai-DNsUNlBw.js} +1 -1
- package/dist/ui/assets/{azure-openai-B1ImIasn.js → azure-openai-Dj3KGYSj.js} +1 -1
- package/dist/ui/assets/{cdp-D7X02m26.js → cdp-BE0rEHUV.js} +1 -1
- package/dist/ui/assets/{cerebras-Dw16qbLP.js → cerebras-CiB1p3ck.js} +1 -1
- package/dist/ui/assets/{cerebras-DLriLpBm.js → cerebras-iuuYSkHk.js} +1 -1
- package/dist/ui/assets/{composer-speech-C5aq2EHX.js → composer-speech-ClVbp0TA.js} +1 -1
- package/dist/ui/assets/{connect-surface-B33YxHel.js → connect-surface-BIc-MC9V.js} +1 -1
- package/dist/ui/assets/{directed-approval-CsWbrazD.js → directed-approval-B_moMyEh.js} +1 -1
- package/dist/ui/assets/{emscripten-vfs-hook-D4rVkB6b.js → emscripten-vfs-hook-DN8XE7DM.js} +1 -1
- package/dist/ui/assets/{emscripten-vfs-hook-C_WW9D-C.js → emscripten-vfs-hook-HZsDmdXD.js} +1 -1
- package/dist/ui/assets/{frozen-archive-writer-Bjl1A6fy.js → frozen-archive-writer-BIfwr3dS.js} +1 -1
- package/dist/ui/assets/{gelatiere-unit-69YQevwx.js → gelatiere-unit-C53alO2X.js} +1 -1
- package/dist/ui/assets/{github-5665N6-Q.js → github-DFs9J5AY.js} +1 -1
- package/dist/ui/assets/{github-DeAThA8k.js → github-Dt4Pt5eh.js} +1 -1
- package/dist/ui/assets/{github-copilot-B-F9GN74.js → github-copilot-C66RPMFw.js} +1 -1
- package/dist/ui/assets/{github-copilot-2CNJ6evQ.js → github-copilot-DdlROed6.js} +1 -1
- package/dist/ui/assets/{go-driver-C0zJJSTi.js → go-driver-DOU6iF-0.js} +1 -1
- package/dist/ui/assets/{hear-DzjhPERk.js → hear-Cg1OJA6u.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-ALz7TOVI.js → js-realm-worker-CJyYHP3T.js} +2 -2
- package/dist/ui/assets/{jsh-executor-UfR3L63B.js → jsh-executor-DvcG7M6y.js} +2 -2
- package/dist/ui/assets/{kernel-worker-coLE80Cx.js → kernel-worker-XCbAqv4r.js} +8 -8
- package/dist/ui/assets/{lick-ws-bridge-BwZ6Lsqx.js → lick-ws-bridge-Bq-GRhDY.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-DpjVEf6h.js → lick-ws-bridge-q1AekYjP.js} +1 -1
- package/dist/ui/assets/{live-session-curation-CN8ifDXh.js → live-session-curation-YPPGXSpf.js} +1 -1
- package/dist/ui/assets/{live-session-snapshot-BoQYDzUq.js → live-session-snapshot-CU49P35v.js} +1 -1
- package/dist/ui/assets/{local-llm-DAdQyx68.js → local-llm-C5n6HmT5.js} +1 -1
- package/dist/ui/assets/{local-llm-CBWcw9ga.js → local-llm-DIaHbO0U.js} +1 -1
- package/dist/ui/assets/{main-D7Ilh1cw.js → main-CvOzoNa2.js} +3 -3
- package/dist/ui/assets/{main-cherry-9nngpfRy.js → main-cherry-DNfw_XPy.js} +1 -1
- package/dist/ui/assets/{mcp-command-BeBM1rHC.js → mcp-command-CSD8gKx4.js} +9 -9
- package/dist/ui/assets/{memory-curation-seam-CUFsPZ6T.js → memory-curation-seam-DTZEIHwq.js} +1 -1
- package/dist/ui/assets/{memory-health-hDyNPmp-.js → memory-health-Bn8iMJCS.js} +1 -1
- package/dist/ui/assets/{memory-write-execute-CgR8Y6VS.js → memory-write-execute-BBKygSIa.js} +1 -1
- package/dist/ui/assets/{merge-folded-cost-into-frozen-DTjO_AHz.js → merge-folded-cost-into-frozen-DqNEvymy.js} +1 -1
- package/dist/ui/assets/{new-session-CLqykoTf.js → new-session-CVLuvA2i.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-UPOMQS2N.js → oauth-bootstrap-CAu-GVnp.js} +2 -2
- package/dist/ui/assets/{onboarding-orchestrator-DKu8ScwD.js → onboarding-orchestrator-oag1I7jn.js} +1 -1
- package/dist/ui/assets/{openai-codex-C3rT7EJ-.js → openai-codex-CvAG8oXv.js} +1 -1
- package/dist/ui/assets/{openai-codex-CXG3CPUO.js → openai-codex-ka8GCZAT.js} +1 -1
- package/dist/ui/assets/{openrouter-MNU1Hy35.js → openrouter-8hmQkp_h.js} +1 -1
- package/dist/ui/assets/{openrouter-C_mHcLUY.js → openrouter-CgzBS5eF.js} +1 -1
- package/dist/ui/assets/{openrouter-free-wsl2KNbX.js → openrouter-free-B3u9DjXb.js} +1 -1
- package/dist/ui/assets/{openrouter-free-2vZpBTFE.js → openrouter-free-BqFGpSf1.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-Bw05OEXj.js → openrouter-oauth-BoLX7zIe.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-sx8YMfw_.js → openrouter-oauth-Dukaywoy.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-C4ZEbr-L.js → panel-rpc-handlers-CHCXtmkW.js} +2 -2
- package/dist/ui/assets/{panelize-shell-CLTgjV9N.js → panelize-shell-BUcAuePy.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-DF0ZCxw2.js → pi-edit-execution-CQIW45Xq.js} +1 -1
- package/dist/ui/assets/{provider-CWkiPaFF.js → provider-DXgG2OZw.js} +1 -1
- package/dist/ui/assets/{provider-CBb3zRgf.js → provider-DmCJ9gDr.js} +1 -1
- package/dist/ui/assets/{provider-settings-BySNZFTG.js → provider-settings-Cwu3oMsc.js} +1 -1
- package/dist/ui/assets/provider-store-access-D3z_1dVo.js +1 -0
- package/dist/ui/assets/provider-store-access-D4NGG9AL.js +1 -0
- package/dist/ui/assets/{providers-Dz9lZ6WH.js → providers-DS41fGUE.js} +1 -1
- package/dist/ui/assets/{providers-3muwTGPn.js → providers-MaL3c9jG.js} +2 -2
- package/dist/ui/assets/{py-live-vfs-CPGqrKx-.js → py-live-vfs-C6sLzy_c.js} +1 -1
- package/dist/ui/assets/{quick-llm-BE1MoA8w.js → quick-llm-D8to-Hwt.js} +1 -1
- package/dist/ui/assets/{realm-inprocess-B-C5-frg.js → realm-inprocess-CrLMANsF.js} +2 -2
- package/dist/ui/assets/{realm-sync-transport-CTz7jTgb.js → realm-sync-transport-Ble3Euu9.js} +1 -1
- package/dist/ui/assets/{realm-unhandled-rejections-CE1G6Vqu.js → realm-unhandled-rejections-DBUiMZxS.js} +1 -1
- package/dist/ui/assets/{realm-unhandled-rejections-zi6bFzVe.js → realm-unhandled-rejections-DV1qqH3i.js} +1 -1
- package/dist/ui/assets/{recovery-screen-tADn1zrY.js → recovery-screen-C6d2MLJJ.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-4u9dBB0E.js → remote-terminal-view-BDbv2zvX.js} +2 -2
- package/dist/ui/assets/{require-guards-DnafTLJr.js → require-guards-6ovYBhVp.js} +1 -1
- package/dist/ui/assets/{restore-ue1IxJw4.js → restore-Df_2h2Vb.js} +1 -1
- package/dist/ui/assets/run-BStZvimF.js +18 -0
- package/dist/ui/assets/{run-DKbvbERf.js → run-BaJvd-iq.js} +1 -1
- package/dist/ui/assets/{run-BSPrcB21.js → run-C4iWmNHr.js} +2 -2
- package/dist/ui/assets/{run-BVj8rfi8.js → run-DCDVvZUu.js} +1 -1
- package/dist/ui/assets/{run-Blqu2GaE.js → run-RApyrvLo.js} +2 -2
- package/dist/ui/assets/{session-command-memory-Cep9cwKm.js → session-command-memory-C7L8WXSk.js} +2 -2
- package/dist/ui/assets/{session-jsonl-CFn8rdop.js → session-jsonl-B_EOHqt3.js} +1 -1
- package/dist/ui/assets/{session-jsonl-j0zMWVNK.js → session-jsonl-CjbA2mfG.js} +1 -1
- package/dist/ui/assets/{session-search-index-la9-q_G1.js → session-search-index-DKyMCIRb.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-BTYJL90t.js → setup-feature-flags-remote-4aRL2v1V.js} +1 -1
- package/dist/ui/assets/{setup-model-catalog-D8Ea_olZ.js → setup-model-catalog-xzt4XzKs.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-BtuCuxCi.js → silent-renew-backoff-BUhiQyS7.js} +1 -1
- package/dist/ui/assets/slicc-version-FUaX8_Vl.js +1 -0
- package/dist/ui/assets/{soundscape-CGUkUoeQ.js → soundscape-Cpy1E-nZ.js} +1 -1
- package/dist/ui/assets/{speak-CxwK7WUc.js → speak-Du4tcKVz.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-7If5XMR2.js → sprinkle-manager-DUVDawuh.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-BZE6UauM.js → sprinkle-renderer-DxAXLFWp.js} +1 -1
- package/dist/ui/assets/{stdio-tty-BB4qV92F.js → stdio-tty-CipJs8Mm.js} +1 -1
- package/dist/ui/assets/{sudo-Bur3ckJR.js → sudo-N3ES_yIz.js} +1 -1
- package/dist/ui/assets/{supervisor-BoiwgqlW.js → supervisor-yb8fat4x.js} +1 -1
- package/dist/ui/assets/{sync-dialog-CoFg-wC1.js → sync-dialog-pTWQG4zf.js} +1 -1
- package/dist/ui/assets/sync-exec-dispatch-B-gdI8lu.js +1 -0
- package/dist/ui/assets/{sync-sab-responder-BmZDqqnK.js → sync-sab-responder-DlSgon7c.js} +1 -1
- package/dist/ui/assets/{transformers-env-CvumQVfQ.js → transformers-env-CDipGBbT.js} +1 -1
- package/dist/ui/assets/{tray-leader-B4zwhLBC.js → tray-leader-JZcY_AKg.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-gvronesJ.js → tray-leave-runtime-BYMhFVQv.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-DOIJd5vJ.js → tray-sidecar-1Q-OhirE.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-DbUZ5LnM.js → upgrade-detection-COjImWh-.js} +1 -1
- package/dist/ui/assets/{voice-reply-CMQ06Wn-.js → voice-reply-DsPjL5l1.js} +1 -1
- package/dist/ui/assets/{wc-attach-CtS_GXt-.js → wc-attach-rtUbV5PZ.js} +2 -2
- package/dist/ui/assets/{wc-browser-DjJiSTyC.js → wc-browser-DPaBVvzQ.js} +1 -1
- package/dist/ui/assets/{wc-computers-hk2xbTfE.js → wc-computers-CYTchiSB.js} +1 -1
- package/dist/ui/assets/{wc-detached-Cwjv2dxL.js → wc-detached-DhYRiQ8m.js} +1 -1
- package/dist/ui/assets/{wc-extension-ClEdff6M.js → wc-extension-CWYr1L8A.js} +2 -2
- package/dist/ui/assets/{wc-follower-Bf76brRQ.js → wc-follower-Dbsl0I7s.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-BZYWuEQu.js → wc-follower-oauth-qh9ruLxg.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-Cs0ORVhQ.js → wc-gelatiere-BLcHmhFb.js} +1 -1
- package/dist/ui/assets/{wc-live-C-qevd3g.js → wc-live-G7p_45yP.js} +5 -5
- package/dist/ui/assets/{wc-nav-Rophsgk9.js → wc-nav-BL2hYnNf.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-Caj_waOY.js → wc-onboarding-CJFEu5mU.js} +2 -2
- package/dist/ui/assets/{wc-permissions-D9yyGqLl.js → wc-permissions-CqKn9BBO.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-BfxhJIh1.js → wc-placeholder-LVt-As7o.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-DqxZuJUL.js → wc-secret-request-ryN5uoXN.js} +1 -1
- package/dist/ui/assets/{wc-settings-Bh44ZTl-.js → wc-settings-DCNUE5q3.js} +3 -3
- package/dist/ui/assets/{wc-shell-CJLjywlF.js → wc-shell-YAIg1dQz.js} +3 -3
- package/dist/ui/assets/{wc-shortcut-config-Cz7Vv65u.js → wc-shortcut-config-DeOptzeG.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-DVTcJSN3.js → wc-sprinkles-C7nWwTw7.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-CE_ns2-x.js → wc-transcript-export-DSn9BmBf.js} +2 -2
- package/dist/ui/assets/{wc-tray-DSEM6WbT.js → wc-tray-DYXO7SA9.js} +4 -4
- package/dist/ui/assets/welcome-detection-By9W44RJ.js +1 -0
- package/dist/ui/assets/{whisper-session-BycheH59.js → whisper-session-CEY5-9vS.js} +2 -2
- package/dist/ui/assets/{xai-grok-Xy7OSykN.js → xai-grok-BPcVCGo0.js} +1 -1
- package/dist/ui/assets/{xai-grok-CW0J74cE.js → xai-grok-CxgP5e0A.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/ui/llm-proxy-sw.js +1 -1
- package/dist/ui/packages/webapp/index.html +3 -3
- package/package.json +2 -2
- package/dist/ui/assets/provider-store-access-BmLF3yiQ.js +0 -1
- package/dist/ui/assets/provider-store-access-qocbyVYP.js +0 -1
- package/dist/ui/assets/run-Cf2apntf.js +0 -18
- package/dist/ui/assets/slicc-version-_RfsCQCx.js +0 -1
- package/dist/ui/assets/sync-exec-dispatch-DSTbkRmG.js +0 -1
- package/dist/ui/assets/welcome-detection-BxKU2eoh.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./wc-onboarding-CJFEu5mU.js";export{e as hasOnboardingFinalLickInHistory};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,o as i,r as a,t as o}from"./transformers-env-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-Du4tcKVz.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-CDipGBbT.js","assets/wc-shell-YAIg1dQz.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-B2cAHozW.js","assets/core-Cx9N3lmn.js","assets/compat-BAGLwgqY.js","assets/models-Xc0Gclrk.js","assets/diagnostics-Cag7MsZI.js","assets/env-api-keys-BXRkymgV.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-DHpsqCCC.js","assets/libesm-BypnjKEL.js","assets/feature-flags-DvsApnS-.js","assets/proxied-fetch-4VBgrEIu.js","assets/proxy-error-BSFYY7jj.js","assets/api-endpoint-DuEQRZ4g.js","assets/secret-topology-hMRoGGjt.js","assets/float-topology-C_iRKPQK.js","assets/secrets-bridge-client-D734Xx8G.js","assets/port-bridge-client-B-gpiOVR.js","assets/panel-rpc-accessor-B4BfPLSo.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-MaL3c9jG.js","assets/stored-accounts-ChNHYF68.js","assets/bedrock-camp-compat-B1oHsbyo.js","assets/bedrock-camp-extra-models-BYrxX19D.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-B0sKnLBU.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-2DY2vYOc.js","assets/wc-shell-WkeczD9x.css","assets/shared-DSEuryGJ.js","assets/transformers.web-BBJR2ai3.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,o as i,r as a,t as o}from"./transformers-env-CDipGBbT.js";var s=t(`speech:whisper`),c=null,l=`idle`,u=null,d=new Set;function f(){return l}function p(){return u}function m(e){return e&&d.add(e),c||=(l=`loading`,g().then(e=>(l=`ready`,h(),e),e=>{throw l=`failed`,c=null,s.error(`whisper load failed`,e),e})),c}function h(){e(async()=>{let{kokoroWarmup:e}=await import(`./speak-Du4tcKVz.js`);return{kokoroWarmup:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42])).then(({kokoroWarmup:e})=>e()).catch(e=>s.warn(`kokoro warmup (chained after whisper) failed`,e))}async function g(){let{pipeline:t,env:c}=await e(async()=>{let{pipeline:e,env:t}=await import(`./transformers.web-BBJR2ai3.js`);return{pipeline:e,env:t}},__vite__mapDeps([43,7,1]));r(c),await o(n),await a();let l=i(),f=e=>{if(e?.file){if(e.status===`progress`)l.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)l.complete(e.file);else return;u=l.snapshot();for(let e of d)e(u)}},p=async e=>await t(`automatic-speech-recognition`,n,{device:e,dtype:e===`webgpu`?`fp32`:`q8`,progress_callback:f}),m=typeof navigator<`u`&&`gpu`in navigator,h;if(m)try{h=await p(`webgpu`)}catch(e){s.warn(`whisper webgpu init failed; retrying on wasm`,e),h=await p(`wasm`)}else h=await p(`wasm`);return s.info(`whisper ready`,{model:n,device:m?`webgpu`:`wasm`}),{async transcribe(e,t){let n=performance.now(),r=await h(e,{chunk_length_s:30,task:`transcribe`,...t?.language?{language:t.language}:{}}),i=Array.isArray(r)?r.map(e=>e.text??``).join(` `):r.text??``;return s.info(`whisper transcribe`,{elapsedMs:Math.round(performance.now()-n),audioSeconds:Math.round(e.length/160)/100,numThreads:c.backends?.onnx?.wasm?.numThreads,device:m?`webgpu`:`wasm`}),i.trim()}}}var _=16e3;async function v(e){if(typeof AudioContext>`u`||typeof OfflineAudioContext>`u`)throw Error(`audio decoding requires a window/page realm (AudioContext unavailable)`);let t=new AudioContext,n;try{n=await t.decodeAudioData(e.slice(0))}finally{await t.close().catch(()=>{})}let r=Math.max(1,Math.ceil(n.duration*_)),i=new OfflineAudioContext(1,r,_),a=i.createBufferSource();return a.buffer=n,a.connect(i.destination),a.start(),(await i.startRendering()).getChannelData(0).slice(0)}var y=t(`speech:whisper-session`),b=2e3,x=500,S=5e3,C=3e4,w=(e,t,n)=>new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})});function T(e){return e?.split(`-`)[0]?.toLowerCase()||void 0}async function E(e,t){let n;if(t.stream)n=t.stream;else{if(!navigator.mediaDevices?.getUserMedia)throw Error(`microphone capture unavailable in this realm`);n=await navigator.mediaDevices.getUserMedia({audio:t.deviceId&&t.deviceId!=="default"?{deviceId:{exact:t.deviceId}}:!0})}let r=new MediaRecorder(n),i=[],a=T(t.lang),o=!1,s=!1;r.ondataavailable=e=>{e.data.size>0&&i.push(e.data)};let c=async()=>{if(i.length===0)return``;let t=await v(await new Blob(i,{type:r.mimeType||`audio/webm`}).arrayBuffer());return e.transcribe(t,{language:a})},l=Promise.resolve(``),u=()=>{let e=l.catch(()=>``).then(()=>c());return l=e.catch(()=>``),e},d=setInterval(()=>{o||s||i.length===0||(o=!0,u().then(e=>{!s&&e&&t.onPartial?.(e)}).catch(e=>{y.warn(`partial transcription failed`,e)}).finally(()=>{o=!1}))},b),f=()=>{if(clearInterval(d),r.state!==`inactive`)try{r.stop()}catch{}for(let e of n.getTracks())e.stop()},p=()=>new Promise(e=>{if(r.state===`inactive`){e();return}r.onstop=()=>e();try{r.stop()}catch{e()}});return r.start(x),{async stop(){if(s)return``;s=!0,clearInterval(d);try{await w(p(),S,`recorder flush`);for(let e of n.getTracks())e.stop();return await w(u(),C,`transcription`)}catch(e){for(let e of n.getTracks())e.stop();let r=e instanceof Error?e.message:String(e);return t.onError?.(`transcription failed: ${r}`),``}},cancel(){s||(s=!0,f())}}}export{p as a,m as i,T as n,f as o,v as r,E as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./core-Cx9N3lmn.js";import{a as t}from"./diagnostics-Cag7MsZI.js";import{a as n}from"./compat-BAGLwgqY.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-BjgG1CsY.js";import{W as s,u as c}from"./account-store-
|
|
1
|
+
import{a as e}from"./core-Cx9N3lmn.js";import{a as t}from"./diagnostics-Cag7MsZI.js";import{a as n}from"./compat-BAGLwgqY.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-BjgG1CsY.js";import{W as s,u as c}from"./account-store-B2cAHozW.js";import"./main-CvOzoNa2.js";import{n as l}from"./pi-transcript-context-miZCMig3.js";import{n as u,r as d}from"./bridge-token-required-DMk2va9k.js";import{n as f,r as p,t as m}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as h,XaiOAuthError as g}from"./xai-grok-errors-bnlIBeu-.js";var _=`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,v=8e3,y=65536,b=1e3;function x(e){return typeof e==`object`&&!!e}function S(e){if(!x(e))return null;let t=x(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(b,Math.max(0,n)),i=x(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function C(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??v);try{let n=await t(_,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>y)return null;try{return S(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}var w=`xai-grok`,T=`https://auth.x.ai`,E=`${T}/oauth2/authorize`,D=`${T}/oauth2/token`,O=`b1a00492-073a-47ea-816f-4c329264a828`,k=`openid profile email offline_access grok-cli:access api:access`,A=`http://127.0.0.1:56121/callback`,j=`http://127.0.0.1:56121/*`,M=`https://api.x.ai/v1`,N=`grok-4.7`,P=`${w}-openai`;function F(e){if(e.some(e=>e.id===N))return e;let t=e.find(e=>e.id===`grok-4.6`)??e.find(e=>e.api===`openai-responses`)??e[0];return t?[{...t,id:N,name:`Grok 4.7`,api:`openai-responses`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:.5,cacheWrite:0},contextWindow:5e5,maxTokens:5e5,thinkingLevelMap:{off:null,minimal:null,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:null}},...e]:e}function I(){return F(e(`xai`))}function L(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap,cost:e.cost}}function R(e){let t=I(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${N}"`),n=t.find(e=>e.id===N),!n))throw Error(`xAI default model "${N}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:M}}async function z(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:A,client_id:O,code_verifier:t}),r=await fetch(D,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new g(`xAI token exchange failed: ${r.status} ${await r.text()}`,h.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new g(`xAI token exchange did not return access_token.`,h.TOKEN_EXCHANGE_INVALID);return i}async function B(e){if(u())return null;try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:O}),n=await fetch(D,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});if(!n.ok){let e=await n.text();return d(n.status,e)||console.error(`[xai-grok] refresh failed:`,n.status,e),null}return await n.json()}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function V(){return c().find(e=>e.providerId===w)}async function H(){let e=V();if(!e?.accessToken)throw new g("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",h.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await B(e.refreshToken);if(t?.access_token)return await s({providerId:w,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token}return e.accessToken}async function U(){if(!V()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return C(await H(),fetch)}function W(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:P,provider:w,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function G(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function K(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function q(e,t,n,r){try{let o=await H(),s=r.sessionId,c=R(t),u={...r,apiKey:o,headers:G(r.headers,s)},d=c.api===`openai-responses`?i(c,l(n),u):a(c,l(n),u);for await(let t of d)e.push(t);e.end()}catch(n){K(n),e.push(W(t,n)),e.end()}}async function J(e,t,n,i){try{let a=await H(),s=i?.sessionId,c=R(t),u={...i,apiKey:a,headers:G(i?.headers,s)},d=c.api===`openai-responses`?r(c,l(n),u):o(c,l(n),u);for await(let t of d)e.push(t);e.end()}catch(n){K(n),e.push(W(t,n)),e.end()}}var Y=(e,n,r={})=>{let i=t();return q(i,e,n,r).catch(K),i},X=(e,n,r)=>{let i=t();return J(i,e,n,r).catch(K),i},Z={id:w,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.7.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:N,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>I().map(L),getBudgetUsage:U,onOAuthLoginIntercepted:async(e,t,n)=>{let r=f(),i=await m(r),a=p(),o=p(),c=new URL(E);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,O),c.searchParams.set(`redirect_uri`,A),c.searchParams.set(`scope`,n?.scopes??k),c.searchParams.set(`code_challenge`,i),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,a),c.searchParams.set(`nonce`,o),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let l=await e({authorizeUrl:c.toString(),redirectUriPattern:j,onCapture:`close`});if(!l)throw new g(`xAI OAuth login was cancelled or timed out`,h.CALLBACK_TIMEOUT);let u=new URL(l),d=u.searchParams.get(`code`),_=u.searchParams.get(`state`);if(!d)throw new g(`xAI OAuth redirect did not include a code`,h.CODE_MISSING);if(_!==a)throw new g(`xAI OAuth state mismatch — possible CSRF, aborting`,h.STATE_MISMATCH);let v=await z(d,r);await s({providerId:w,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:M,scopes:v.scope}),t()},onOAuthLogout:async()=>{await s({providerId:w,accessToken:``})},onSilentRenew:async()=>{let e=V();if(!e?.refreshToken)return null;let t=await B(e.refreshToken);return t?.access_token?(await s({providerId:w,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token):null}};function Q(){n({api:P,stream:Y,streamSimple:X})}export{h as XaiErrorCode,g as XaiOAuthError,Z as config,Q as register};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,r as t}from"./account-store-
|
|
1
|
+
import{_ as e,r as t}from"./account-store-D0xdiy20.js";import{a as n}from"./diagnostics-Cag7MsZI.js";import{a as r}from"./compat-nGhSz-U1.js";import{a as i}from"./core-C1m4D34S.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases--xyLjPgC.js";import{n as l}from"./pi-transcript-context-4pjVPiVC.js";import"./provider-settings-Cwu3oMsc.js";import{n as u,r as d}from"./bridge-token-required-BYgoMwr7.js";import{n as f,r as p,t as m}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as h,XaiOAuthError as g}from"./xai-grok-errors-ByEMMSoz.js";function _(e){return typeof e==`object`&&!!e}function v(e){if(!_(e))return null;let t=_(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(1e3,Math.max(0,n)),i=_(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function y(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??8e3);try{let n=await t(`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>65536)return null;try{return v(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}const b=`xai-grok`,x=`https://auth.x.ai`,S=`${x}/oauth2/authorize`,C=`${x}/oauth2/token`,w=`b1a00492-073a-47ea-816f-4c329264a828`,T=`http://127.0.0.1:56121/callback`,E=`https://api.x.ai/v1`,D=`grok-4.7`,O=`${b}-openai`;function k(e){if(e.some(e=>e.id===D))return e;let t=e.find(e=>e.id===`grok-4.6`)??e.find(e=>e.api===`openai-responses`)??e[0];return t?[{...t,id:D,name:`Grok 4.7`,api:`openai-responses`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:.5,cacheWrite:0},contextWindow:5e5,maxTokens:5e5,thinkingLevelMap:{off:null,minimal:null,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:null}},...e]:e}function A(){return k(i(`xai`))}function j(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap,cost:e.cost}}function M(e){let t=A(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${D}"`),n=t.find(e=>e.id===D),!n))throw Error(`xAI default model "${D}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:E}}async function N(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:T,client_id:w,code_verifier:t}),r=await fetch(C,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new g(`xAI token exchange failed: ${r.status} ${await r.text()}`,h.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new g(`xAI token exchange did not return access_token.`,h.TOKEN_EXCHANGE_INVALID);return i}async function P(e){if(u())return null;try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:w}),n=await fetch(C,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});if(!n.ok){let e=await n.text();return d(n.status,e)||console.error(`[xai-grok] refresh failed:`,n.status,e),null}return await n.json()}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function F(){return t().find(e=>e.providerId===b)}async function I(){let t=F();if(!t?.accessToken)throw new g("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",h.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await P(t.refreshToken);if(n?.access_token)return await e({providerId:b,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token}return t.accessToken}async function L(){if(!F()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return y(await I(),fetch)}function R(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:O,provider:b,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function z(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function B(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function V(e,t,n,r){try{let i=await I(),a=r.sessionId,c=M(t),u={...r,apiKey:i,headers:z(r.headers,a)},d=c.api===`openai-responses`?o(c,l(n),u):s(c,l(n),u);for await(let t of d)e.push(t);e.end()}catch(n){B(n),e.push(R(t,n)),e.end()}}async function H(e,t,n,r){try{let i=await I(),o=r?.sessionId,s=M(t),u={...r,apiKey:i,headers:z(r?.headers,o)},d=s.api===`openai-responses`?a(s,l(n),u):c(s,l(n),u);for await(let t of d)e.push(t);e.end()}catch(n){B(n),e.push(R(t,n)),e.end()}}const U=(e,t,r={})=>{let i=n();return V(i,e,t,r).catch(B),i},W=(e,t,r)=>{let i=n();return H(i,e,t,r).catch(B),i},G={id:b,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.7.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:D,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>A().map(j),getBudgetUsage:L,onOAuthLoginIntercepted:async(t,n,r)=>{let i=f(),a=await m(i),o=p(),s=p(),c=new URL(S);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,w),c.searchParams.set(`redirect_uri`,T),c.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access grok-cli:access api:access`),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let l=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!l)throw new g(`xAI OAuth login was cancelled or timed out`,h.CALLBACK_TIMEOUT);let u=new URL(l),d=u.searchParams.get(`code`),_=u.searchParams.get(`state`);if(!d)throw new g(`xAI OAuth redirect did not include a code`,h.CODE_MISSING);if(_!==o)throw new g(`xAI OAuth state mismatch — possible CSRF, aborting`,h.STATE_MISMATCH);let v=await N(d,i);await e({providerId:b,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:E,scopes:v.scope}),n()},onOAuthLogout:async()=>{await e({providerId:b,accessToken:``})},onSilentRenew:async()=>{let t=F();if(!t?.refreshToken)return null;let n=await P(t.refreshToken);return n?.access_token?(await e({providerId:b,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token):null}};function K(){r({api:O,stream:U,streamSimple:W})}export{h as XaiErrorCode,g as XaiOAuthError,G as config,K as register};
|
package/dist/ui/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>slicc</title>
|
|
7
7
|
<link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CvOzoNa2.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/diagnostics-Cag7MsZI.js">
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/core-Cx9N3lmn.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/bridge-protocol-C52CnDIj.js">
|
|
36
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
36
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-MaL3c9jG.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/stored-accounts-ChNHYF68.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-B1oHsbyo.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-extra-models-BYrxX19D.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/claude-model-version-DZmbk9E2.js">
|
|
41
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
41
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-B2cAHozW.js">
|
|
42
42
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-B0sKnLBU.js">
|
|
43
43
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
|
|
44
44
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
|
package/dist/ui/llm-proxy-sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var L="slicc.bridge.v1.",B="bridgeToken",Y="bridge",H="X-Bridge-Token";var G="role";function j(e){if(!e)return!1;let t=e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;return!!(t==="localhost"||t==="::1"||/^127(\.\d{1,3}){3}$/.test(t))}function w(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e)){let s=n.toLowerCase();s==="cookie"?t["X-Proxy-Cookie"]=r:s==="origin"?t["X-Proxy-Origin"]=r:s==="referer"?t["X-Proxy-Referer"]=r:s.startsWith("proxy-")?t[`X-Proxy-${n}`]=r:t[n]=r}return t}var ke="X-Proxy-Www-Authenticate";function M(e){let t={};for(let[n,r]of Object.entries(e)){let s=n.toLowerCase();s==="x-proxy-set-cookie"?t["set-cookie"]=r:s===ke.toLowerCase()?t["www-authenticate"]=r:t[n]=r}return t}var Ce="slicc-sync-fs-";function X(e){return Ce+e}var W="sync-fs-nonce",$="sync-fs-need-nonce",_="/__slicc/fs-sync/";var k="/__slicc/exec-sync",U="x-slicc-fs-token",S="x-slicc-fs-errno",g="x-slicc-fs",C="x-slicc-fs-no-responder",q="sync-fs-req",z="sync-fs-ack",V="sync-fs-res",h="exec",Q=25e3,K=2e3,J=12e4,v=6e5,Z=2e3;var Fe=new Set([101,103,204,205,304]);function be(e){let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function ee(e){let t,n,r=new Promise((i,c)=>{t=i,n=c}),s=null,o=new ReadableStream({start(i){s=i}}),a=!1,l=!1,p=()=>{try{s?.close()}catch{}},m=i=>{try{s?.error(i)}catch{}},f=i=>{if(a)return;a=!0;let c=new Headers;for(let[R,x]of Object.entries(M(i.headers)))c.set(R,x);let E=Fe.has(i.status)?null:o;t(new Response(E,{status:i.status,statusText:i.statusText,headers:c}))},d=i=>{l=!0;let c=new Error(i.error);a?m(c):n(c),e.close?.()};return e.onmessage=i=>{let c=i.data;!c||typeof c.type!="string"||l||(c.type==="response-head"?f(c):c.type==="response-chunk"?s?.enqueue(be(c.dataBase64)):c.type==="response-end"?(l=!0,p(),e.close?.()):c.type==="response-error"&&d(c))},e.start?.(),{responsePromise:r}}var Ae=new Set([101,103,204,205,304]);function O(e){let t=Ae.has(e.status)?null:e.body;return new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers})}var te="slicc",ne="leader";function Te(e){try{let t=new URL(e);return`${t.protocol==="wss:"?"https:":"http:"}//${t.host}`}catch{return null}}function Me(e){try{let t=new URL(e);return`${t.protocol}//${t.host}/licks-ws`}catch{return null}}function re(e){let t;try{t=new URLSearchParams(e)}catch{return null}let n=t.get(Y),r=t.get(B);if(!n||!r||!/^wss?:\/\//.test(n))return null;let s;try{s=new URL(n).hostname}catch{return null}if(!j(s))return null;let o=t.get(G),a=o==="leader"||o==="follower"?o:null;return{url:n,subprotocol:`${L}${r}`,token:r,apiBaseUrl:Te(n),lickWsUrl:Me(n),role:a}}var Ue="slicc:bridge-config";function se(e,t){if(e?.apiBaseUrl&&e.token)return{apiBaseUrl:e.apiBaseUrl.replace(/\/+$/,""),token:e.token};if(!t)return null;let n;try{n=new URL(t)}catch{return null}let r=re(n.search);return r?.apiBaseUrl?{apiBaseUrl:r.apiBaseUrl.replace(/\/+$/,""),token:r.token}:null}function oe(e,t){if(e?.apiBaseUrl&&e.token)return se(e,null);for(let n of t){let r=se(null,n);if(r)return r}return null}function ie(e,t){return t?`${t.apiBaseUrl}${e}`:e}function ae(e,t){let n,r;try{n=new URL(t),r=new URL(e)}catch{return!1}return r.origin===n.origin&&r.pathname.startsWith("/api/")}function ce(e){return!e||typeof e!="object"?!1:e.type===Ue}var N=class{byClient=new Map;set(t,n){if(t){if(!n.apiBaseUrl||!n.token){this.byClient.delete(t);return}this.byClient.set(t,{apiBaseUrl:n.apiBaseUrl.replace(/\/+$/,""),token:n.token})}}get(t){return t?this.byClient.get(t)??null:null}delete(t){this.byClient.delete(t)}size(){return this.byClient.size}},ve="slicc:extension-delegate-config",ue="slicc:ext-fetch";function le(e){return!e||typeof e!="object"?!1:e.type===ve}function D(e){if(!e)return null;let t;try{t=new URL(e)}catch{return null}if(t.searchParams.get(te)!==ne)return null;let n=t.searchParams.get("ext");return n?{extensionId:n}:null}function de(e,t){if(e?.extensionId)return{extensionId:e.extensionId};for(let n of t){let r=D(n);if(r)return r}return null}var F=class{byClient=new Map;set(t,n){if(t){if(!n.extensionId){this.byClient.delete(t);return}this.byClient.set(t,{extensionId:n.extensionId})}}get(t){return t?this.byClient.get(t)??null:null}delete(t){this.byClient.delete(t)}size(){return this.byClient.size}},Oe=new Set(["image","font","style","video","audio","track","iframe","object","embed"]);function fe(e){return Oe.has(e)}function I(e){let t=e;return t?.type==="window"&&t.frameType==="top-level"}function b(e){return I(e)}function A(e){return e.filter(b)}function ye(){let e=[];return{notify(){let t=e;e=[];for(let n of t)n()},wait(t){return new Promise(n=>{let r=!1,s=()=>{r||(r=!0,clearTimeout(o),e=e.filter(a=>a!==s),n())},o=setTimeout(s,t);e.push(s)})}}}function pe(e){if(e===void 0)return;if(e===null||typeof e!="object"||Array.isArray(e))return{errno:"EINVAL",message:"sync-exec: env must be an object"};let t={};for(let[n,r]of Object.entries(e))if(r!==void 0){if(typeof r!="string")return{errno:"EINVAL",message:`sync-exec: env[${n}] must be a string`};t[n]=r}return{ok:!0,env:t}}function Ie(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function ge(e,t){return Ie(e)?Math.min(e,v):Math.min(t,v)}var Pe=Q,Le=200,Be=1e4,Ye=new Set(["stat","lstat","readdir","exists","readlink"]),He=new Set(["mkdir","rm"]),Ge=new Set(["rename","unlink","rmdir","symlink","chmod","utimes"]);function je(e){let t;try{t=e.byteLength?JSON.parse(new TextDecoder().decode(e)):null}catch{return{}}if(!t||typeof t!="object")return{};let n=l=>typeof l=="number"&&Number.isFinite(l)?l:void 0,r=typeof t.arg2=="string"?t.arg2:void 0,s=n(t.mode),o=n(t.atimeMs),a=n(t.mtimeMs);return{...r!==void 0?{arg2:r}:{},...s!==void 0?{mode:s}:{},...o!==void 0?{atimeMs:o}:{},...a!==void 0?{mtimeMs:a}:{}}}function Xe(e){return We(e)?ge(e.timeoutMs,J)+Z:Pe}function We(e){return e.channel===h}function $e(e){switch(e){case"ENOENT":return 404;case"EACCES":return 403;case"EISDIR":case"ENOTDIR":case"EINVAL":return 400;case"EIO":return 503;default:return 500}}async function qe(e){if(e.method!=="POST")return null;let t;try{let a=await e.arrayBuffer();t=JSON.parse(new TextDecoder().decode(new Uint8Array(a)))}catch{return null}if(!t||typeof t!="object")return null;let n=t,r=n.command;if(!(typeof r=="string"||Array.isArray(r)&&r.every(a=>typeof a=="string"))||n.cwd!==void 0&&typeof n.cwd!="string")return null;let o=n.env===void 0?void 0:pe(n.env);return o!==void 0&&"errno"in o?null:{token:e.headers.get(U)??"",channel:h,command:r,...Array.isArray(n.args)&&n.args.every(a=>typeof a=="string")?{args:n.args}:{},...typeof n.stdin=="string"?{stdin:n.stdin}:{},...typeof n.timeoutMs=="number"?{timeoutMs:n.timeoutMs}:{},...typeof n.cwd=="string"?{cwd:n.cwd}:{},...o!==void 0?{env:o.env}:{}}}async function me(e){let t=new URL(e.url);if(t.pathname===k)return qe(e);if(!t.pathname.startsWith(_))return null;let n=t.pathname.slice(_.length-1),r;try{r=n.split("/").map(decodeURIComponent).join("/")}catch{return null}let s=e.headers.get(U)??"",o=t.searchParams.get("op");if(e.method==="POST"){if(o&&He.has(o))return{token:s,op:o,path:r};let a=await e.arrayBuffer();return o&&Ge.has(o)?{token:s,op:o,path:r,...je(a)}:{token:s,op:"write",path:r,body:new Uint8Array(a)}}return o&&Ye.has(o)?{token:s,op:o,path:r}:{token:s,op:"read",path:r}}function ze(e){if(!e.ok){let n=e.errno??"EIO";return new Response(e.message??n,{status:$e(n),headers:{[S]:n,[g]:"1"}})}if(e.kind==="json")return new Response(JSON.stringify(e.json??null),{status:200,headers:{"content-type":"application/json",[g]:"1"}});let t=e.kind==="bytes"?new Uint8Array(e.bytes):new Uint8Array(0);return new Response(t,{status:200,headers:{"content-type":"application/octet-stream",[g]:"1"}})}function Ee(e,t,n={}){let r=n.timeoutMs??Xe(t),s=n.retryIntervalMs??Le,o=Math.min(n.noResponderMs??Be,r),a=crypto.randomUUID();return new Promise(l=>{let p=!1,m=!1,f,d,i,c=()=>{for(let u of e)u.removeEventListener("message",R);f&&clearInterval(f),d&&clearTimeout(d),i&&clearTimeout(i)},E=u=>{m||(m=!0,c(),l(u))},R=u=>{let y=u.data;if(!(!y||y.id!==a)){if(y.type===z){p=!0,f&&clearInterval(f),i&&clearTimeout(i);return}y.type===V&&E(ze(y))}};for(let u of e)u.addEventListener("message",R);let x=()=>{for(let u of e)u.postMessage({type:q,id:a,...t})};x(),f=setInterval(()=>{p||x()},s),i=setTimeout(()=>{p||E(new Response("sync-fs bridge: no responder",{status:503,headers:{[S]:"EIO",[g]:"1",[C]:"1"}}))},o),d=setTimeout(()=>{E(new Response("sync-fs bridge timeout",{status:503,headers:{[S]:"EIO",[g]:"1"}}))},r)})}var Ve="/api/fetch-proxy",T="x-bypass-llm-proxy",_e=new N,he=new F,Qe=32*1024*1024;self.importScripts("/preview-sw.js");self.addEventListener("install",e=>{e.waitUntil(self.skipWaiting())});self.addEventListener("activate",e=>{e.waitUntil(self.clients.claim())});self.addEventListener("message",e=>{let t=e.source;if(!t||!("id"in t)||typeof t.id!="string")return;if(ce(e.data)&&b(t)){_e.set(t.id,{apiBaseUrl:e.data.apiBaseUrl,token:e.data.token});return}if(le(e.data)&&b(t)){he.set(t.id,{extensionId:e.data.extensionId});return}let n=e.data;if(n?.type===W&&typeof n.nonce=="string"){I(t)&&Ke(n.nonce);return}});self.addEventListener("fetch",e=>{let t=e.request;if(t.headers.get(T)==="1"||fe(t.destination))return;let n;try{n=new URL(t.url)}catch{return}n.origin!==self.location.origin&&(n.protocol!=="http:"&&n.protocol!=="https:"||e.respondWith(Je(t,e.clientId||null)))});var P=new Map,we=ye();function Se(){return[...P.values()]}function Ke(e){P.has(e)||(P.set(e,new BroadcastChannel(X(e))),we.notify())}async function Re(){let e=await self.clients.matchAll({type:"window"}),t={type:$};for(let n of e)n.postMessage(t)}self.addEventListener("fetch",e=>{let t=new URL(e.request.url);t.origin===self.location.origin&&(!t.pathname.startsWith(_)&&t.pathname!==k||e.respondWith((async()=>{let n=await me(e.request);if(!n)return new Response("sync bridge: malformed request",{status:400,headers:{[S]:"EINVAL",[g]:"1"}});let r=Se();if(r.length===0&&(Re(),await we.wait(K),r=Se(),r.length===0))return new Response("sync-fs bridge not ready",{status:503,headers:{[S]:"EIO",[g]:"1"}});let s=await Ee(r,n);return s.headers.get(C)==="1"&&Re(),s})()))});async function Je(e,t){let n=e.url,r={};e.headers.forEach((u,y)=>{y.toLowerCase()!==T&&(r[y]=u)});let s=w(r),o=new Headers;for(let[u,y]of Object.entries(s))o.set(u,y);o.set("X-Target-URL",n);let a=_e.get(t),l=he.get(t),p=await Ze(t),m=a||l?[]:await et(),f=[p,...m],d=de(l,f);if(d){let u=await tt();if(u)return rt(e,d,u,n)}let i=oe(a,f);if(i&&ae(e.url,i.apiBaseUrl)){let u=new Headers(e.headers);u.set(T,"1");let y={method:e.method,headers:u,cache:"no-store",credentials:e.credentials,redirect:"manual",signal:e.signal,body:await xe(e)};return O(await fetch(e.url,y))}i&&o.set(H,i.token);let c=ie(Ve,i),E=await xe(e),R={method:e.method,headers:o,cache:"no-store",credentials:"omit",redirect:"manual",signal:e.signal,body:E},x=await fetch(c,R);return O(x)}async function xe(e){if(e.method==="GET"||e.method==="HEAD")return;let t=await e.arrayBuffer();return t.byteLength>0?t:void 0}async function Ze(e){if(!e)return null;try{let t=await self.clients.get(e);return A(t?[t]:[])[0]?.url??null}catch{return null}}async function et(){try{let e=await self.clients.matchAll({type:"window",includeUncontrolled:!0});return A(e).map(t=>t.url).filter(t=>!!t)}catch{return[]}}async function tt(){try{let e=A(await self.clients.matchAll({type:"window",includeUncontrolled:!0}));return e.length===0?null:e.find(n=>D(n.url)!==null)??e[0]}catch{return null}}function nt(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}async function rt(e,t,n,r){let s={};e.headers.forEach((d,i)=>{i.toLowerCase()!==T&&(s[i]=d)});let o=w(s),a,l=!1;if(e.method!=="GET"&&e.method!=="HEAD"){let d=await e.arrayBuffer();d.byteLength>Qe?l=!0:d.byteLength>0&&(a=nt(new Uint8Array(d)))}let p=new MessageChannel,{responsePromise:m}=ee(p.port1),f={type:ue,requestId:st(),extensionId:t.extensionId,request:{url:r,method:e.method,headers:o,bodyBase64:a,requestBodyTooLarge:l}};return n.postMessage(f,[p.port2]),m}function st(){let e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}})();
|
|
1
|
+
"use strict";(()=>{var L="slicc.bridge.v1.",B="bridgeToken",Y="bridge",H="X-Bridge-Token";var G="role";function W(e){if(!e)return!1;let t=e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e;return!!(t==="localhost"||t==="::1"||/^127(\.\d{1,3}){3}$/.test(t))}function w(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e)){let s=n.toLowerCase();s==="cookie"?t["X-Proxy-Cookie"]=r:s==="origin"?t["X-Proxy-Origin"]=r:s==="referer"?t["X-Proxy-Referer"]=r:s.startsWith("proxy-")?t[`X-Proxy-${n}`]=r:t[n]=r}return t}var be="X-Proxy-Www-Authenticate";function M(e){let t={};for(let[n,r]of Object.entries(e)){let s=n.toLowerCase();s==="x-proxy-set-cookie"?t["set-cookie"]=r:s===be.toLowerCase()?t["www-authenticate"]=r:t[n]=r}return t}var Fe="slicc-sync-fs-";function j(e){return Fe+e}var X="sync-fs-nonce",$="sync-fs-need-nonce",_="/__slicc/fs-sync/";var b="/__slicc/exec-sync",U="x-slicc-fs-token",S="x-slicc-fs-errno",m="x-slicc-fs",F="x-slicc-fs-no-responder",q="sync-fs-req",z="sync-fs-ack",V="sync-fs-res",h="exec",Q=25e3,K=2e3,J=12e4,v=6e5,Z=2e3;var Ce=new Set([101,103,204,205,304]);function Ne(e){let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function ee(e){let t,n,r=new Promise((i,c)=>{t=i,n=c}),s=null,o=new ReadableStream({start(i){s=i}}),a=!1,l=!1,p=()=>{try{s?.close()}catch{}},g=i=>{try{s?.error(i)}catch{}},f=i=>{if(a)return;a=!0;let c=new Headers;for(let[R,x]of Object.entries(M(i.headers)))c.set(R,x);let E=Ce.has(i.status)?null:o;t(new Response(E,{status:i.status,statusText:i.statusText,headers:c}))},d=i=>{l=!0;let c=new Error(i.error);a?g(c):n(c),e.close?.()};return e.onmessage=i=>{let c=i.data;!c||typeof c.type!="string"||l||(c.type==="response-head"?f(c):c.type==="response-chunk"?s?.enqueue(Ne(c.dataBase64)):c.type==="response-end"?(l=!0,p(),e.close?.()):c.type==="response-error"&&d(c))},e.start?.(),{responsePromise:r}}var Ae=new Set([101,103,204,205,304]);function O(e){let t=Ae.has(e.status)?null:e.body;return new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers})}var te="slicc",ne="leader";function Te(e){try{let t=new URL(e);return`${t.protocol==="wss:"?"https:":"http:"}//${t.host}`}catch{return null}}function Me(e){try{let t=new URL(e);return`${t.protocol}//${t.host}/licks-ws`}catch{return null}}function re(e){let t;try{t=new URLSearchParams(e)}catch{return null}let n=t.get(Y),r=t.get(B);if(!n||!r||!/^wss?:\/\//.test(n))return null;let s;try{s=new URL(n).hostname}catch{return null}if(!W(s))return null;let o=t.get(G),a=o==="leader"||o==="follower"?o:null;return{url:n,subprotocol:`${L}${r}`,token:r,apiBaseUrl:Te(n),lickWsUrl:Me(n),role:a}}var Ue="slicc:bridge-config";function se(e,t){if(e?.apiBaseUrl&&e.token)return{apiBaseUrl:e.apiBaseUrl.replace(/\/+$/,""),token:e.token};if(!t)return null;let n;try{n=new URL(t)}catch{return null}let r=re(n.search);return r?.apiBaseUrl?{apiBaseUrl:r.apiBaseUrl.replace(/\/+$/,""),token:r.token}:null}function oe(e,t){if(e?.apiBaseUrl&&e.token)return se(e,null);for(let n of t){let r=se(null,n);if(r)return r}return null}function ie(e,t){return t?`${t.apiBaseUrl}${e}`:e}function ae(e,t){let n,r;try{n=new URL(t),r=new URL(e)}catch{return!1}return r.origin===n.origin&&r.pathname.startsWith("/api/")}function ce(e){return!e||typeof e!="object"?!1:e.type===Ue}var k=class{byClient=new Map;set(t,n){if(t){if(!n.apiBaseUrl||!n.token){this.byClient.delete(t);return}this.byClient.set(t,{apiBaseUrl:n.apiBaseUrl.replace(/\/+$/,""),token:n.token})}}get(t){return t?this.byClient.get(t)??null:null}delete(t){this.byClient.delete(t)}size(){return this.byClient.size}},ve="slicc:extension-delegate-config",ue="slicc:ext-fetch";function le(e){return!e||typeof e!="object"?!1:e.type===ve}function D(e){if(!e)return null;let t;try{t=new URL(e)}catch{return null}if(t.searchParams.get(te)!==ne)return null;let n=t.searchParams.get("ext");return n?{extensionId:n}:null}function de(e,t){if(e?.extensionId)return{extensionId:e.extensionId};for(let n of t){let r=D(n);if(r)return r}return null}var C=class{byClient=new Map;set(t,n){if(t){if(!n.extensionId){this.byClient.delete(t);return}this.byClient.set(t,{extensionId:n.extensionId})}}get(t){return t?this.byClient.get(t)??null:null}delete(t){this.byClient.delete(t)}size(){return this.byClient.size}},Oe=new Set(["image","font","style","video","audio","track","iframe","object","embed"]);function fe(e){return Oe.has(e)}function I(e){let t=e;return t?.type==="window"&&t.frameType==="top-level"}function N(e){return I(e)}function A(e){return e.filter(N)}function ye(){let e=[];return{notify(){let t=e;e=[];for(let n of t)n()},wait(t){return new Promise(n=>{let r=!1,s=()=>{r||(r=!0,clearTimeout(o),e=e.filter(a=>a!==s),n())},o=setTimeout(s,t);e.push(s)})}}}var Ct=64*1024*1024,Nt=1024*1024*1024;function pe(e){if(e===void 0)return;if(e===null||typeof e!="object"||Array.isArray(e))return{errno:"EINVAL",message:"sync-exec: env must be an object"};let t={};for(let[n,r]of Object.entries(e))if(r!==void 0){if(typeof r!="string")return{errno:"EINVAL",message:`sync-exec: env[${n}] must be a string`};t[n]=r}return{ok:!0,env:t}}function Ie(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function me(e,t){return Ie(e)?Math.min(e,v):Math.min(t,v)}var Pe=Q,Le=200,Be=1e4,Ye=new Set(["stat","lstat","readdir","exists","readlink"]),He=new Set(["mkdir","rm"]),Ge=new Set(["rename","unlink","rmdir","symlink","chmod","utimes"]);function We(e){let t;try{t=e.byteLength?JSON.parse(new TextDecoder().decode(e)):null}catch{return{}}if(!t||typeof t!="object")return{};let n=l=>typeof l=="number"&&Number.isFinite(l)?l:void 0,r=typeof t.arg2=="string"?t.arg2:void 0,s=n(t.mode),o=n(t.atimeMs),a=n(t.mtimeMs);return{...r!==void 0?{arg2:r}:{},...s!==void 0?{mode:s}:{},...o!==void 0?{atimeMs:o}:{},...a!==void 0?{mtimeMs:a}:{}}}function je(e){return Xe(e)?me(e.timeoutMs,J)+Z:Pe}function Xe(e){return e.channel===h}function $e(e){switch(e){case"ENOENT":return 404;case"EACCES":return 403;case"EISDIR":case"ENOTDIR":case"EINVAL":return 400;case"EIO":return 503;default:return 500}}async function qe(e){if(e.method!=="POST")return null;let t;try{let a=await e.arrayBuffer();t=JSON.parse(new TextDecoder().decode(new Uint8Array(a)))}catch{return null}if(!t||typeof t!="object")return null;let n=t,r=n.command;if(!(typeof r=="string"||Array.isArray(r)&&r.every(a=>typeof a=="string"))||n.cwd!==void 0&&typeof n.cwd!="string")return null;let o=n.env===void 0?void 0:pe(n.env);return o!==void 0&&"errno"in o?null:{token:e.headers.get(U)??"",channel:h,command:r,...Array.isArray(n.args)&&n.args.every(a=>typeof a=="string")?{args:n.args}:{},...typeof n.stdin=="string"?{stdin:n.stdin}:{},...typeof n.timeoutMs=="number"?{timeoutMs:n.timeoutMs}:{},...typeof n.cwd=="string"?{cwd:n.cwd}:{},...o!==void 0?{env:o.env}:{}}}async function ge(e){let t=new URL(e.url);if(t.pathname===b)return qe(e);if(!t.pathname.startsWith(_))return null;let n=t.pathname.slice(_.length-1),r;try{r=n.split("/").map(decodeURIComponent).join("/")}catch{return null}let s=e.headers.get(U)??"",o=t.searchParams.get("op");if(e.method==="POST"){if(o&&He.has(o))return{token:s,op:o,path:r};let a=await e.arrayBuffer();return o&&Ge.has(o)?{token:s,op:o,path:r,...We(a)}:{token:s,op:"write",path:r,body:new Uint8Array(a)}}return o&&Ye.has(o)?{token:s,op:o,path:r}:{token:s,op:"read",path:r}}function ze(e){if(!e.ok){let n=e.errno??"EIO";return new Response(e.message??n,{status:$e(n),headers:{[S]:n,[m]:"1"}})}if(e.kind==="json")return new Response(JSON.stringify(e.json??null),{status:200,headers:{"content-type":"application/json",[m]:"1"}});let t=e.kind==="bytes"?new Uint8Array(e.bytes):new Uint8Array(0);return new Response(t,{status:200,headers:{"content-type":"application/octet-stream",[m]:"1"}})}function Ee(e,t,n={}){let r=n.timeoutMs??je(t),s=n.retryIntervalMs??Le,o=Math.min(n.noResponderMs??Be,r),a=crypto.randomUUID();return new Promise(l=>{let p=!1,g=!1,f,d,i,c=()=>{for(let u of e)u.removeEventListener("message",R);f&&clearInterval(f),d&&clearTimeout(d),i&&clearTimeout(i)},E=u=>{g||(g=!0,c(),l(u))},R=u=>{let y=u.data;if(!(!y||y.id!==a)){if(y.type===z){p=!0,f&&clearInterval(f),i&&clearTimeout(i);return}y.type===V&&E(ze(y))}};for(let u of e)u.addEventListener("message",R);let x=()=>{for(let u of e)u.postMessage({type:q,id:a,...t})};x(),f=setInterval(()=>{p||x()},s),i=setTimeout(()=>{p||E(new Response("sync-fs bridge: no responder",{status:503,headers:{[S]:"EIO",[m]:"1",[F]:"1"}}))},o),d=setTimeout(()=>{E(new Response("sync-fs bridge timeout",{status:503,headers:{[S]:"EIO",[m]:"1"}}))},r)})}var Ve="/api/fetch-proxy",T="x-bypass-llm-proxy",_e=new k,he=new C,Qe=32*1024*1024;self.importScripts("/preview-sw.js");self.addEventListener("install",e=>{e.waitUntil(self.skipWaiting())});self.addEventListener("activate",e=>{e.waitUntil(self.clients.claim())});self.addEventListener("message",e=>{let t=e.source;if(!t||!("id"in t)||typeof t.id!="string")return;if(ce(e.data)&&N(t)){_e.set(t.id,{apiBaseUrl:e.data.apiBaseUrl,token:e.data.token});return}if(le(e.data)&&N(t)){he.set(t.id,{extensionId:e.data.extensionId});return}let n=e.data;if(n?.type===X&&typeof n.nonce=="string"){I(t)&&Ke(n.nonce);return}});self.addEventListener("fetch",e=>{let t=e.request;if(t.headers.get(T)==="1"||fe(t.destination))return;let n;try{n=new URL(t.url)}catch{return}n.origin!==self.location.origin&&(n.protocol!=="http:"&&n.protocol!=="https:"||e.respondWith(Je(t,e.clientId||null)))});var P=new Map,we=ye();function Se(){return[...P.values()]}function Ke(e){P.has(e)||(P.set(e,new BroadcastChannel(j(e))),we.notify())}async function Re(){let e=await self.clients.matchAll({type:"window"}),t={type:$};for(let n of e)n.postMessage(t)}self.addEventListener("fetch",e=>{let t=new URL(e.request.url);t.origin===self.location.origin&&(!t.pathname.startsWith(_)&&t.pathname!==b||e.respondWith((async()=>{let n=await ge(e.request);if(!n)return new Response("sync bridge: malformed request",{status:400,headers:{[S]:"EINVAL",[m]:"1"}});let r=Se();if(r.length===0&&(Re(),await we.wait(K),r=Se(),r.length===0))return new Response("sync-fs bridge not ready",{status:503,headers:{[S]:"EIO",[m]:"1"}});let s=await Ee(r,n);return s.headers.get(F)==="1"&&Re(),s})()))});async function Je(e,t){let n=e.url,r={};e.headers.forEach((u,y)=>{y.toLowerCase()!==T&&(r[y]=u)});let s=w(r),o=new Headers;for(let[u,y]of Object.entries(s))o.set(u,y);o.set("X-Target-URL",n);let a=_e.get(t),l=he.get(t),p=await Ze(t),g=a||l?[]:await et(),f=[p,...g],d=de(l,f);if(d){let u=await tt();if(u)return rt(e,d,u,n)}let i=oe(a,f);if(i&&ae(e.url,i.apiBaseUrl)){let u=new Headers(e.headers);u.set(T,"1");let y={method:e.method,headers:u,cache:"no-store",credentials:e.credentials,redirect:"manual",signal:e.signal,body:await xe(e)};return O(await fetch(e.url,y))}i&&o.set(H,i.token);let c=ie(Ve,i),E=await xe(e),R={method:e.method,headers:o,cache:"no-store",credentials:"omit",redirect:"manual",signal:e.signal,body:E},x=await fetch(c,R);return O(x)}async function xe(e){if(e.method==="GET"||e.method==="HEAD")return;let t=await e.arrayBuffer();return t.byteLength>0?t:void 0}async function Ze(e){if(!e)return null;try{let t=await self.clients.get(e);return A(t?[t]:[])[0]?.url??null}catch{return null}}async function et(){try{let e=await self.clients.matchAll({type:"window",includeUncontrolled:!0});return A(e).map(t=>t.url).filter(t=>!!t)}catch{return[]}}async function tt(){try{let e=A(await self.clients.matchAll({type:"window",includeUncontrolled:!0}));return e.length===0?null:e.find(n=>D(n.url)!==null)??e[0]}catch{return null}}function nt(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}async function rt(e,t,n,r){let s={};e.headers.forEach((d,i)=>{i.toLowerCase()!==T&&(s[i]=d)});let o=w(s),a,l=!1;if(e.method!=="GET"&&e.method!=="HEAD"){let d=await e.arrayBuffer();d.byteLength>Qe?l=!0:d.byteLength>0&&(a=nt(new Uint8Array(d)))}let p=new MessageChannel,{responsePromise:g}=ee(p.port1),f={type:ue,requestId:st(),extensionId:t.extensionId,request:{url:r,method:e.method,headers:o,bodyBase64:a,requestBodyTooLarge:l}};return n.postMessage(f,[p.port2]),g}function st(){let e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}})();
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>slicc</title>
|
|
7
7
|
<link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CvOzoNa2.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/diagnostics-Cag7MsZI.js">
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/core-Cx9N3lmn.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/bridge-protocol-C52CnDIj.js">
|
|
36
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
36
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-MaL3c9jG.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/stored-accounts-ChNHYF68.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-B1oHsbyo.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-extra-models-BYrxX19D.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/claude-model-version-DZmbk9E2.js">
|
|
41
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
41
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-B2cAHozW.js">
|
|
42
42
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-B0sKnLBU.js">
|
|
43
43
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
|
|
44
44
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sliccy",
|
|
3
|
-
"version": "6.235.
|
|
3
|
+
"version": "6.235.3",
|
|
4
4
|
"description": "Browser-based coding agent with thin CLI server",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"@semantic-release/git": "11.0.1",
|
|
129
129
|
"@size-limit/file": "13.0.3",
|
|
130
130
|
"@tessl/cli": "0.111.0",
|
|
131
|
-
"@types/node": "24.
|
|
131
|
+
"@types/node": "24.19.0",
|
|
132
132
|
"@vitest/browser": "4.1.11",
|
|
133
133
|
"@vitest/browser-playwright": "4.1.11",
|
|
134
134
|
"@vitest/coverage-v8": "4.1.11",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./store-wiEGJ_43.js";import"./provider-CWkiPaFF.js";export{e as readMcpAuthEntries};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./provider-CBb3zRgf.js";export{e as readMcpAuthEntries};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./logger-LESFN7Hj.js";import{i as t,n,r,t as i}from"./proxied-fetch-F-dCBEfh.js";import{r as a}from"./proxy-error-BVzVNPvv.js";import{a as o,c as s,d as c,f as l,g as u,h as d,l as f,m as p,n as m,o as h,p as g,s as _,t as ee,u as v,v as te}from"./stdio-tty-BB4qV92F.js";import{r as ne}from"./global-prefix-DqCuANmV.js";import{a as re,i as ie,o as ae,r as oe}from"./wasm-programs-Bd5YaoqY.js";import{n as se,t as ce}from"./wasm-compiler-Ct7QZURL.js";import{S as le,w as ue,x as de}from"./sync-exec-dispatch-DSTbkRmG.js";import{t as fe}from"./sync-sab-wire-D_d0fd3b.js";import{t as pe}from"./sync-sab-responder-BmZDqqnK.js";import{i as me}from"./just-bash-compat-B-SPHuh_.js";const he=String.raw`printf '\033]7777;%s\007' "$?"`,ge=[`if [ -f ~/.bashrc ]; then . ~/.bashrc; fi`,`exec 98<&-`,``].join(`
|
|
2
|
-
`);var y=class extends Error{status;constructor(e,t){super(t),this.status=e}};const _e=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,ve={100:`Continue`,200:`OK`,400:`Bad Request`,403:`Forbidden`,408:`Request Timeout`,411:`Length Required`,413:`Content Too Large`,417:`Expectation Failed`,421:`Misdirected Request`,431:`Request Header Fields Too Large`,501:`Not Implemented`,502:`Bad Gateway`,503:`Service Unavailable`,505:`HTTP Version Not Supported`};var ye=class{source;buf=new Uint8Array;eof=!1;constructor(e){this.source=e}get buffered(){return this.buf.length}async fill(e){if(this.eof)return!1;let t=await this.source.read(65536,e);if(t.length===0)return this.eof=!0,!1;let n=new Uint8Array(this.buf.length+t.length);return n.set(this.buf),n.set(t,this.buf.length),this.buf=n,!0}take(e){let t=this.buf.slice(0,e);return this.buf=this.buf.subarray(e),t}async some(e,t){if(this.buf.length>0)return this.take(Math.min(e,this.buf.length));if(this.eof)return new Uint8Array;let n=await this.source.read(e,t);return n.length===0&&(this.eof=!0),n}async head(e,t){let n=0;for(;;){let r=be(this.buf,n);if(r>0){if(r>e)throw new y(431,`request head too large`);return this.take(r)}if(this.buf.length>e)throw new y(431,`request head too large`);if(n=Math.max(0,this.buf.length-3),!await this.fill(t)){if(this.buf.length===0)return null;throw new y(400,`connection closed inside a request head`)}}}async line(e,t){let n=0;for(;;){let r=this.buf.indexOf(10,n);if(r>=0){let e=this.take(r+1);return xe(e.subarray(0,e[r-1]===13?r-1:r))}if(this.buf.length>e)throw new y(400,`line too long`);if(n=this.buf.length,!await this.fill(t))throw new y(400,`connection closed inside a body`)}}async exactly(e,t){for(;this.buf.length<e;)if(!await this.fill(t))throw new y(400,`connection closed inside a body`);return this.take(e)}};function be(e,t){for(let n=t;n<e.length;n++)if(e[n]===10){if(e[n+1]===10)return n+2;if(e[n+1]===13&&e[n+2]===10)return n+3}return 0}function xe(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return t}function b(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function Se(e){let t=xe(e).split(/\r?\n/);for(;t.length>0&&t[0]===``;)t.shift();let n=/^([!#$%&'*+\-.^_`|~0-9A-Za-z]+) (\S+) HTTP\/(\d)\.(\d)$/.exec(t.shift()??``);if(!n)throw new y(400,`malformed request line`);if(n[3]!==`1`)throw new y(505,`HTTP/${n[3]}.${n[4]} is not supported`);return{method:n[1],target:n[2],minor:Number(n[4]),headers:Ce(t)}}function Ce(e){let t=[];for(let n of e){if(n===``)continue;if(n.startsWith(` `)||n.startsWith(` `))throw new y(400,`obsolete line folding`);let e=n.indexOf(`:`),r=e>0?n.slice(0,e):``;if(!_e.test(r))throw new y(400,`malformed header field`);t.push([r,n.slice(e+1).trim()])}return t}function x(e,t){let n=t.toLowerCase();return e.filter(([e])=>e.toLowerCase()===n).map(([,e])=>e)}function S(e,t){return x(e,t).flatMap(e=>e.split(`,`)).map(e=>e.trim().toLowerCase()).filter(e=>e!==``)}function we(e){let t=S(e,`transfer-encoding`),n=x(e,`content-length`);if(t.length>0){if(n.length>0)throw new y(400,`both Transfer-Encoding and Content-Length`);if(t.length!==1||t[0]!==`chunked`)throw new y(501,`unsupported Transfer-Encoding: ${t.join(`, `)}`);return{kind:`chunked`}}if(n.length===0)return{kind:`none`};let r=new Set(n.flatMap(e=>e.split(`,`)).map(e=>e.trim())),[i]=r;if(r.size!==1||!/^\d{1,15}$/.test(i))throw new y(400,`invalid Content-Length`);let a=Number(i);return a===0?{kind:`none`}:{kind:`length`,length:a}}const C=65536;async function Te(e,t,n,r){if(t.kind===`none`)return;if(t.kind===`length`){if(t.length>n)throw new y(413,`request body over ${n} bytes`);return e.exactly(t.length,r)}let i=[],a=0;for(;;){let t=await e.line(4096,r),o=/^([0-9A-Fa-f]{1,12})[ \t]*(;.*)?$/.exec(t);if(!o)throw new y(400,`malformed chunk size`);let s=Number.parseInt(o[1],16);if(s===0)break;if(a+=s,a>n)throw new y(413,`request body over ${n} bytes`);if(i.push(await e.exactly(s,r)),await e.line(2,r)!==``)throw new y(400,`malformed chunk`)}let o=0;for(let t=await e.line(C,r);t!==``;){if(o+=t.length,o>C)throw new y(431,`trailers too large`);t=await e.line(C,r)}return Ee(i,a)}function Ee(e,t=e.reduce((e,t)=>e+t.length,0)){let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function De(e){return!/[\r\n\0]/.test(e)}function Oe(e,t,n){let r=`HTTP/1.1 ${e} ${/^[\t\x20-\x7e\x80-\xff]*$/.test(t)?t:``}\r\n`;for(let[e,t]of n)_e.test(e)&&De(t)&&(r+=`${e}: ${t}\r\n`);return b(`${r}\r\n`)}function ke(e){let t=b(`${e.length.toString(16)}\r\n`),n=new Uint8Array(t.length+e.length+2);return n.set(t),n.set(e,t.length),n[n.length-2]=13,n[n.length-1]=10,n}const Ae=b(`0\r
|
|
3
|
-
\r
|
|
4
|
-
`),je=e(`realm-proxy`),Me=3128,Ne={maxConnections:64,maxHead:65536,idleMs:12e4,bodyBudget:134217728},Pe=new Set([`connection`,`keep-alive`,`proxy-connection`,`proxy-authenticate`,`proxy-authorization`,`te`,`trailer`,`transfer-encoding`,`upgrade`]),Fe=new Set([`host`,`content-length`,`expect`]);var Ie=class{free;waiters=[];constructor(e){this.free=e}async acquire(e,t){for(;this.free<e;)t.throwIfAborted(),await new Promise(e=>{let n=()=>{t.removeEventListener(`abort`,n),e()};this.waiters.push(n),t.addEventListener(`abort`,n,{once:!0})});this.free-=e}release(e){this.free+=e;let t=this.waiters;this.waiters=[];for(let e of t)e()}};function Le(e){let t=e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e;try{return new URL(`http://${t}/`).hostname}catch{return}}function Re(e,t){return e===127||e===0||e===169&&t===254}function ze(e){let[t,n,r]=e.split(`::`);if(r!==void 0)return;let i=e=>e?e.split(`:`).map(e=>Number.parseInt(e,16)):[],a=i(t),o=i(n),s=n===void 0?a:[...a,...Array(8-a.length-o.length).fill(0),...o];return s.length===8&&s.every(e=>e>=0&&e<=65535)?s:void 0}function Be(e){let t=ze(e);return!t||(t[0]&65472)==65152?!0:t.slice(0,5).every(e=>e===0)?t[5]===65535||t[5]===0&&t[6]!==0?Re(t[6]>>8,t[6]&255):t[5]===0&&t[6]===0:!1}function Ve(e){let t=Le(e);if(t===void 0)return!1;let n=t.replace(/\.+$/,``);if(n===`localhost`||n.endsWith(`.localhost`))return!0;if(n.startsWith(`[`))return Be(n.slice(1,-1));let r=/^(\d+)\.(\d+)\.\d+\.\d+$/.exec(n);return r?Re(Number(r[1]),Number(r[2])):!1}function He(e){return new Set([...Pe,...S(e,`connection`)])}function Ue(e){let t=He(e);return e.filter(([e])=>{let n=e.toLowerCase();return!t.has(n)&&!Fe.has(n)})}function We(e,t){let n=He(e);return t.encodedBodies||n.add(`content-encoding`),t.encodedBodies&&t.bodiless||n.add(`content-length`),e.filter(([e])=>!n.has(e.toLowerCase()))}function Ge(e){let t=S(e.headers,`connection`);return t.includes(`close`)?!1:e.minor>=1||t.includes(`keep-alive`)}function Ke(e,t){let n=new URL(t),r;try{r=new URL(e.target,e.target.startsWith(`/`)?n:void 0)}catch{throw new y(400,`malformed request target`)}let i=x(e.headers,`host`).every(e=>URL.canParse(`https://${e}`)&&new URL(`https://${e}`).host===n.host);if(r.origin!==n.origin||!i)throw new y(421,`this tunnel is for ${n.host}`);return r.href}function qe(e){if(e.target.startsWith(`/`))throw new y(400,`this is a proxy: send the absolute URL (GET http://host/path)`);let t;try{t=new URL(e.target)}catch{throw new y(400,`malformed request target`)}if(t.protocol!==`http:`&&t.protocol!==`https:`)throw new y(400,`unsupported scheme ${t.protocol}`);if(Ve(t.hostname))throw new y(403,`${t.hostname} is the realm's own loopback, which the proxy does not reach: list it in no_proxy`);return t.href}function Je(e){let t=/^([A-Za-z0-9.-]+|\[[0-9A-Fa-f:.]+\]):(\d{1,5})$/.exec(e.target),n=Number(t?.[2]);if(!t||n<1||n>65535)throw new y(400,`CONNECT needs host:port`);let r=Le(t[1]);if(r===void 0)throw new y(400,`CONNECT needs host:port`);if(Ve(r))throw new y(403,`${r} is the realm's own loopback, which the proxy does not reach: list it in no_proxy`);return{host:r,port:n}}async function Ye(e,t,n){for(;!n.aborted&&!t.signal.aborted;){if(e.poll().hangup){t.abort(new h(`EPIPE`));return}try{await e.changed(n)}catch{return}}}function Xe(e,t){return new Promise((n,r)=>{let i=()=>{r(t.reason??new h(`EINTR`)),e.then(e=>e.cancel()).catch(()=>void 0)};if(t.aborted)return i();t.addEventListener(`abort`,i,{once:!0}),e.then(n,r).finally(()=>t.removeEventListener(`abort`,i))})}function Ze(e,t){let n=b(`slicc realm proxy: ${t}\n`);return{status:e,statusText:ve[e]??``,headers:[[`Content-Type`,`text/plain; charset=utf-8`]],body:(async function*(){yield n})(),cancel:async()=>void 0}}function Qe(e,t,n){return{read:(r,i)=>e.read(r,AbortSignal.any([n,AbortSignal.timeout(t),...i?[i]:[]]))}}var $e=class{options;listener;stop=new AbortController;limits;slots;bodies;connections=new Set;closed;port;constructor(e){this.options=e,this.limits={...Ne,...e.limits},this.slots=new Ie(this.limits.maxConnections),this.bodies=new Ie(this.limits.bodyBudget),this.listener=e.net.listen({family:`inet`,host:e.host??`127.0.0.1`,port:e.port??3128}),this.port=this.listener.local?.family===`inet`?this.listener.local.port:0,this.closed=this.acceptLoop()}get stopped(){return this.stop.signal.aborted}close(){if(!this.stop.signal.aborted){this.stop.abort(),this.listener.close();for(let e of this.connections)e.close()}}async acceptLoop(){let e=new Set;try{for(;;){await this.slots.acquire(1,this.stop.signal);let t;try{t=await this.listener.accept(this.stop.signal)}catch{this.slots.release(1);break}let n=this.serve(t).finally(()=>{this.slots.release(1),e.delete(n)});e.add(n)}}catch{}await Promise.allSettled([...e])}async serve(e){this.connections.add(e);let t=new ye(Qe(e,this.limits.idleMs,this.stop.signal));try{await this.requests({sink:e,incoming:t,conn:e,socket:e})}finally{this.connections.delete(e),e.close()}}async requests(e){try{for(;;){let t=await e.incoming.head(this.limits.maxHead);if(!t||!await this.exchange(e,t))break}}catch(t){t instanceof y&&await this.refuse(e.sink,t)}}async refuse(e,t){try{await this.relay(e,`GET`,1,Ze(t.status,t.message),!1)}catch{}}async exchange(e,t){let{sink:n,incoming:r}=e,i=Se(t);if(i.method===`CONNECT`){if(!e.conn)throw new y(400,`CONNECT inside a tunnel`);return await this.connect(e.conn,r,i),!1}let a=e.origin?Ke(i,e.origin):qe(i),o=Ge(i),s=we(i.headers),c=s.kind===`length`?s.length:s.kind===`chunked`?this.cap():0;if(c>this.cap())throw new y(413,`request body over ${this.cap()} bytes`);await this.expectContinue(n,i,s.kind!==`none`),await this.bodies.acquire(c,this.stop.signal);let l,u=new AbortController,d=()=>u.abort();this.stop.signal.addEventListener(`abort`,d,{once:!0});try{try{let t=await Te(r,s,this.cap()),n=new AbortController;Ye(e.socket,u,n.signal);try{l=await this.upstream(i,a,t,u.signal)}finally{n.abort()}}finally{this.bodies.release(c)}return await this.relay(n,i.method,i.minor,l,o)}finally{this.stop.signal.removeEventListener(`abort`,d),u.abort()}}cap(){return Math.min(this.options.transport.traits.maxRequestBody,this.limits.bodyBudget)}async expectContinue(e,t,n){let r=S(t.headers,`expect`);if(r.length!==0){if(r.length!==1||r[0]!==`100-continue`)throw new y(417,`unsupported expectation: ${r.join(`, `)}`);n&&t.minor>=1&&await e.write(b(`HTTP/1.1 100 Continue\r
|
|
5
|
-
\r
|
|
6
|
-
`),this.stop.signal)}}async upstream(e,t,n,r){try{return await Xe(this.options.transport.fetch({url:t,method:e.method.toUpperCase(),headers:Ue(e.headers),body:e.method===`GET`||e.method===`HEAD`?void 0:n,signal:r}),r)}catch(e){if(r.aborted)throw e;let t=e instanceof Error?e.message:String(e),n=e?.status;return Ze(typeof n==`number`&&n>=400&&n<=599?n:502,t||`upstream request failed`)}}async relay(e,t,n,r,i){let a=r.status,o=t===`HEAD`||a===204||a===304||a<200,s=We(r.headers,{encodedBodies:this.options.transport.traits.encodedBodies,bodiless:o}),c=!o&&n>=1,l=i&&(o||c);s.push([`Connection`,l?`keep-alive`:`close`]),c&&s.push([`Transfer-Encoding`,`chunked`]);let u=this.stop.signal;if(await e.write(Oe(a,r.statusText||ve[a]||``,s),u),o)return await r.cancel(),l;try{for await(let t of r.body)t.length>0&&await e.write(c?ke(t):t,u)}catch{return await r.cancel().catch(()=>void 0),!1}return c&&await e.write(Ae,u),l}async connect(e,t,n){let r=Je(n),i=this.options.tunnel;if(!i)throw new y(501,`CONNECT ${r.host}:${r.port}: no tunnels through this proxy`);await e.write(b(`HTTP/1.1 200 Connection Established\r
|
|
7
|
-
\r
|
|
8
|
-
`),this.stop.signal);try{await i(e,t,r,this.stop.signal,(t,n,r)=>this.requests({sink:n,incoming:new ye(t),origin:r,socket:e}))}catch(e){e instanceof h||je.warn(`tunnel failed`,{host:r.host,error:String(e)})}}};function et(){return{buffered:n(),streaming:r()}}function tt(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 nt(e){return e.startsWith(`x-proxy-`)||e.startsWith(`access-control-`)}function rt(e){let t=[];for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();if(!nt(e)){if(e===`set-cookie`)for(let e of it(r))t.push([n,e]);else t.push([n,r])}}return t}function it(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*at(e){e.byteLength>0&&(yield e)}function ot(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 st(e=et()){return{traits:{manualRedirects:!1,encodedBodies:!1,maxRequestBody:i},async fetch(t){let n=tt(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:rt(r.headers),body:at(ot(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:rt(r.headers),body:r.body,cancel:()=>r.cancel()}}}}function ct(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 lt(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,...ct(n.body)}}}}function ut(e={}){let n,i=()=>(n??=(e.fallback??(()=>st()))(),n),o,s=Promise.resolve().then(()=>(e.capabilities??t)()).then(t=>t.supported?lt((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 dt(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 ft(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 w(e,...t){let n=dt(t);return dt([Uint8Array.of(e),ft(n.length),n])}const T=(...e)=>w(48,...e),pt=(...e)=>w(49,...e),E=e=>w(4,e),D=(e,t=0)=>w(3,Uint8Array.of(t),e),mt=w(1,Uint8Array.of(255));function O(e){let t=0;for(;t<e.length-1&&e[t]===0;)t++;let n=e.subarray(t);return w(2,n[0]&128?dt([Uint8Array.of(0),n]):n)}function k(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 w(6,Uint8Array.from(i))}const ht=e=>w(12,new TextEncoder().encode(e)),A=e=>Uint8Array.from(e,e=>e.charCodeAt(0)&127);function gt(e){let t=e.toISOString().replace(/[-:T]/g,``).slice(0,14);return e.getUTCFullYear()<2050?w(23,A(`${t.slice(2)}Z`)):w(24,A(`${t}Z`))}const _t=T(k(`1.2.840.10045.4.3.2`));function vt(e){let t=[];return e.organization&&t.push(pt(T(k(`2.5.4.10`),ht(e.organization)))),t.push(pt(T(k(`2.5.4.3`),ht(e.commonName)))),T(...t)}function j(e,t,n){return t?T(k(e),mt,E(n)):T(k(e),E(n))}function yt(e){let t=[],[,n,r]=M(e,0);for(let i=n;i<r;){let[,,n]=M(e,i);t.push(e.subarray(i,n)),i=n}return t}function M(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 bt(e){let[,t,n]=M(e,0);return e.subarray(t,n)}function xt(e){let t=yt(e)[1];return bt(t).subarray(1)}async function St(e){return new Uint8Array(await crypto.subtle.digest(`SHA-1`,xt(e)))}function Ct(e){let t=e.length/2;return T(O(e.subarray(0,t)),O(e.subarray(t)))}function wt(){let e=crypto.getRandomValues(new Uint8Array(16));return e[0]=e[0]&127|1,e}function Tt(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 Et(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=Tt(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 Dt(e){let t=[j(`2.5.29.14`,!1,E(await St(e.spki)))];if(e.kind.ca)t.push(j(`2.5.29.19`,!0,T(mt,O(Uint8Array.of(0))))),t.push(j(`2.5.29.15`,!0,D(Uint8Array.of(134),1)));else{t.push(j(`2.5.29.35`,!1,T(w(128,await St(e.issuerSpki))))),t.push(j(`2.5.29.19`,!0,T())),t.push(j(`2.5.29.15`,!0,D(Uint8Array.of(128),7))),t.push(j(`2.5.29.37`,!1,T(k(`1.3.6.1.5.5.7.3.1`))));let n=Tt(e.kind.host)??Et(e.kind.host),r=n?w(135,n):w(130,A(e.kind.host));t.push(j(`2.5.29.17`,!1,T(r)))}return w(163,T(...t))}async function Ot(e){let t=T(w(160,O(Uint8Array.of(2))),O(e.serial),_t,vt(e.issuer),T(gt(e.notBefore),gt(e.notAfter)),vt(e.subject),e.spki,await Dt(e)),n=Ct(await e.sign(t));return T(t,_t,D(n))}function kt(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
|
-
`)}\n-----END CERTIFICATE-----\n`}const At={name:`ECDSA`,namedCurve:`P-256`},jt={name:`ECDSA`,hash:`SHA-256`};function Mt(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}function Nt(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 Mt((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 Pt=class extends Error{};function Ft(e){return Et(e)?!0:e.length===0||e.length>253?!1:e.split(`.`).every(e=>/^(?!-)[a-z0-9-]{1,63}(?<!-)$/i.test(e))}var It=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(At,!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 Ot({serial:wt(),issuer:i,subject:i,notBefore:new Date(t-864e5),notAfter:new Date(a),spki:r,issuerSpki:r,kind:{ca:!0},sign:Lt(n.privateKey)});return{key:n.privateKey,cert:o,spki:r,notAfter:a,name:i}}get cert(){return this.record.cert}get pem(){return kt(this.record.cert)}async issue(e,t,n=Date.now()){let r=e.toLowerCase();if(!Ft(r))throw new Pt(`no certificate for ${e}`);return Ot({serial:wt(),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:Lt(this.record.key)})}};function Lt(e){return async t=>new Uint8Array(await crypto.subtle.sign(jt,e,t))}let Rt;const N=new Map;function zt(e,t){let n=N.get(e);return n||(Rt??=t?void 0:Nt(),n=It.open(e,t??Rt),N.set(e,n),n.catch(()=>{N.get(e)===n&&N.delete(e)})),n}const Bt=65536;var Vt=class extends Error{code;constructor(e,t){super(t),this.code=e}},Ht=class{m;scratch;constructor(e){if(this.m=e,this.scratch=e._malloc(Bt),!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 Vt(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 Ut(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 Wt(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,Bt);return t>0?this.taken(t):t}},Ut=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)}},Wt=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 Gt(e=async()=>(await import(`./slicc-tls-engine-DfyKw1Ua.js`)).default()){return P??=e().then(e=>new Ht(e)),P.catch(()=>{P=void 0}),P}const Kt=e(`realm-tls`);var qt=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)}},Jt=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 qt(c,Xt(t),e),s=`https://${Yt(n)}`;try{await i(a,a,s),await a.close(r).catch(()=>void 0)}catch(e){throw Kt.debug(`tunnel ended`,{host:o,error:String(e)}),e}}finally{c.free()}}};function Yt(e){return e.port===443?e.host:`${e.host}:${e.port}`}function Xt(e){return{read:(t,n)=>e.some(t,n)}}const F=`http://127.0.0.1:${Me}`,Zt=`localhost,.localhost,127.0.0.1,127.0.0.0/8`;function Qt(){return{http_proxy:F,https_proxy:F,HTTP_PROXY:F,HTTPS_PROXY:F,no_proxy:Zt,NO_PROXY:Zt}}function $t(e){if(e)return`ca`in e?new Jt(e):new Jt({ca:()=>zt(e.owner),engine:()=>Gt()})}const en=new WeakMap,tn=`/.config/slicc/realm-ca-`;function nn(e){return e.replace(/[^A-Za-z0-9_-]+/g,`-`).replace(/-+$/,``)}function rn(e,t){return`${e.replace(/\/+$/,``)}${tn}${nn(t)}.pem`}function an(e){return{SSL_CERT_FILE:e,CURL_CA_BUNDLE:e,GIT_SSL_CAINFO:e}}const on=`/.config/slicc/gitconfig`;function sn(e){return`${e.replace(/\/+$/,``)}${on}`}function cn(e){return`"${e.replace(/[\r\n]+/g,` `).replace(/[\\"]/g,e=>`\\${e}`)}"`}function ln(e){let t=[`[credential]`,` helper = slicc`];return e&&t.push(`[user]`,`\tname = ${cn(e.name)}`,`\temail = ${cn(e.email)}`),`${t.join(`
|
|
10
|
-
`)}\n`}async function un(e,t,n){try{let r=ln(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 dn(e,t){let n=Qt();return e in n?n[e]===t:e===`GIT_CONFIG_SYSTEM`?t.endsWith(on):e in an(``)&&t.includes(tn)}async function fn(e,t,n,r=zt){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)),an(t)}catch{return{}}}function pn(e,t={}){if(en.has(e))return;let n={proxy:void 0};en.set(e,n);let r;e.activate({family:`inet`,host:`127.0.0.1`,port:Me},()=>{r??=(t.transport??ut)();let i=$t(t.tls),a=new $e({net:e,transport:r,tunnel:i?.handler,...t.proxy});n.proxy=a,mn(a,t.process).then(async()=>{n.proxy===a&&(n.proxy=void 0),await i?.close()})})}async function mn(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 hn=32768;function gn(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 h(e.code):e}}var _n=class{waiters=[];wait(e){return e?.aborted?Promise.reject(new h(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new h(`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 vn(e,t){let n=new u,r=new u;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 _n;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 h(`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 h(`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 h(`EINVAL`);if(e.family!==this.domain)throw new h(`EAFNOSUPPORT`);this.local=this.net.bind(this,e),this.bound=!0}listen(e){if(this.state===`connected`)throw new h(`EISCONN`);if(this.state!==`open`&&this.state!==`listening`)throw new h(`EINVAL`);if(!this.local){if(this.domain===`unix`)throw new h(`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 h(`EINVAL`);let n=this.queue.shift();if(n)return n;if(t)throw new h(`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 h(`EISCONN`);if(this.state!==`open`)throw new h(`EINVAL`);if(t.family!==this.domain)throw new h(`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:yn(t.host)}:t,r.peer=this.local,this.peer=r.local,vn(this,r),!n.offer(r))throw this.unlink(),r.close(),new h(`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 h(`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:``},vn(r,i),[r,i]}};function yn(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 bn=class{bound=new Map;activators=new Map;nextEphemeral=hn;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 h(`EINVAL`)}else if(t.host!==`0.0.0.0`&&!gn(t.host))throw new h(`EADDRNOTAVAIL`);let n=t.family===`inet`&&t.port===0?{...t,port:this.ephemeral()}:t,r=R(n);if(this.bound.has(r))throw new h(`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`&&!gn(yn(e.host)))throw new h(`ENETUNREACH`);let t=R(e);this.bound.has(t)||this.activators.get(t)?.();let n=this.bound.get(t);if(!n?.listening)throw new h(`ECONNREFUSED`);return n}ephemeral(){for(let e=0;e<28232;e++){let e=this.nextEphemeral;if(this.nextEphemeral=e===60999?hn:e+1,!this.bound.has(`inet:${e}`))return e}throw new h(`EADDRINUSE`)}};const xn=new Map;function Sn(e){let t=xn.get(e);return t||(t=new bn,xn.set(e,t)),t}function z(e){return e?`${e.kind}:${e.scoopJid??``}`:`local`}const B={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},Cn=new Set([B.CHLD,B.URG,B.WINCH]),wn=new Set([B.STOP,B.TSTP,B.TTIN,B.TTOU]);function V(e){return e===B.CONT?`continue`:wn.has(e)?`stop`:Cn.has(e)?`ignore`:`terminate`}function Tn(e){return Number.isInteger(e)&&e>=1&&e<=31}function H(e){return 1<<e}const U={SIGINT:B.INT,SIGTERM:B.TERM,SIGKILL:B.KILL,SIGSTOP:B.STOP,SIGCONT:B.CONT},En=16384;function Dn(){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 On=new TextEncoder;function kn(e){return(e&192)==128}var An=class{screen;signal;termios=Dn();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(B.WINCH)}hangup(){this.hungUp=!0,this.wake()}signalHangup(){this.signal(B.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 _({read:(e,t)=>this.read(e,t),write:async e=>{if(this.hungUp)throw new h(`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)?B.INT:e===this.cc(1)?B.QUIT:e===this.cc(10)?B.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(On.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&En)for(;t<e.length&&kn(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&En?t.filter(e=>!kn(e)).length:t.length;n>0&&this.termios.c_lflag&8&&this.output(On.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 h(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new h(`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()}},W=class extends Error{code;constructor(e){super(e),this.code=e}};function jn(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new h(`EINTR`)),e?.aborted?t():e?.addEventListener(`abort`,t,{once:!0})}),done:()=>e?.removeEventListener(`abort`,t)}}function Mn(e){return(e&255)<<8|127}function Nn(e,t){return t?t&127:(e&255)<<8}function Pn(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 Fn=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 W(`ENOSYS`);return this.track(e,this.parentFds.fork(),new Map,this.forker)}async spawn(e,t,n=[]){if(!this.spawner)throw new W(`ENOSYS`);let r=new o,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,f(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 s(e.input);if(`capture`in e){let e=[];return n.set(t,e),d(t=>e.push(t))}return l()}async wait(e,t,n,r={}){let i;try{for(;;){let a=this.candidates(e,r);if(a.length===0)throw new h(`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??=jn(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,Mn(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,Nn(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),Pn(r))}},In=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 An({write:e=>this.fromSlave(e)},e=>t(this.slave,e)),this.slave.name=`/dev/pts/${e}`}master(){return new _({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 h(`EIO`);let e=this.slave.file().file;return this.slaveRefs+=1,this.slaveSeen=!0,new _({...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 h(`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 h(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new h(`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()}},Ln=class{signal;pairs=new Map;constructor(e){this.signal=e}open(){let e=0;for(;this.pairs.has(e);)e+=1;let t=new In(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 h(`ENOENT`);return t}numbers(){return[...this.pairs.keys()].sort((e,t)=>e-t)}};const Rn=[`pty-open`,`pty-slave-open`,`pty-number`,`pty-lock`,`pty-ctty`,`pty-packet`,`pty-list`,`pty-winsz-set`];function G(e,t){let n=e.fds.get(t).file.pty;if(!n)throw new h(`ENOTTY`);return n}function zn(e,t){let n=e.fds.get(t).file,r=n.tty??n.pty?.slave;if(!r)throw new h(`ENOTTY`);return r}const K=e=>({ok:!0,kind:`json`,json:e}),q={ok:!0,kind:`void`};function Bn(e,t){switch(e.op){case`pty-open`:if(!t.ptys)throw new h(`ENOENT`);return K(t.fds.install(t.ptys.open().master,3));case`pty-slave-open`:{if(!t.ptys)throw new h(`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),K(r)}case`pty-number`:return K(G(t,e.fd).index);case`pty-lock`:return G(t,e.fd).locked=e.lock,q;case`pty-ctty`:{let n=zn(t,e.fd);if(t.jobs?.getsid(t.pid,0)===t.pid&&t.jobs?.controllingTerminal(t.pid)===n)return q;if(!t.jobs?.acquireTerminal(t.pid,n))throw new h(`EPERM`);return q}case`pty-list`:return K(t.ptys?.numbers()??[]);case`pty-packet`:return G(t,e.fd).packet=e.on,q;case`pty-winsz-set`:return zn(t,e.fd).resize(e.cols,e.rows),q}}function Vn(e,t,n){let r=new Set,i=(t,n)=>t.filter(t=>{let i=p(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 Hn(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new h(`EINTR`)),e.aborted?t():e.addEventListener(`abort`,t,{once:!0})}),done:()=>e.removeEventListener(`abort`,t)}}async function Un(e,t,n,r,i){let a=r<0?1/0:Date.now()+r,o=Hn(i);o.promise.catch(()=>{});try{return await Wn(e,t,n,a,o.promise)}finally{o.done()}}async function Wn(e,t,n,r,i){for(;;){let a=Vn(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 Gn=[`sock-open`,`sock-pair`,`sock-bind`,`sock-listen`,`sock-accept`,`sock-connect`,`sock-shutdown`,`sock-name`,`sock-getopt`,`sock-setopt`];function J(e,t){let n=e.get(t).file;if(!(n instanceof L))throw new h(`ENOTSOCK`);return n}const Y=e=>e===void 0?{ok:!0,kind:`void`}:{ok:!0,kind:`json`,json:e};async function Kn(e,t){let{fds:n,net:r}=t;switch(e.op){case`sock-open`:return Y(n.install(new _(r.socket(e.domain)),3));case`sock-pair`:{let[t,i]=L.pair(r,e.domain),a=n.install(new _(t),3);try{return Y([a,n.install(new _(i),3)])}catch(e){throw await Promise.resolve(n.close(a)),e}}case`sock-bind`:return J(n,e.fd).bind(e.addr),Y();case`sock-listen`:return J(n,e.fd).listen(e.backlog),Y();case`sock-accept`:return Y(await Jn(t,e.fd,e.nonblock));case`sock-connect`:if(J(n,e.fd).connect(e.addr),e.nonblock)throw new h(`EINPROGRESS`);return Y();case`sock-shutdown`:return J(n,e.fd).shutdown(e.how),Y();case`sock-name`:{let t=J(n,e.fd),r=e.peer?t.peer:t.local;if(e.peer&&!r)throw new h(`ENOTCONN`);return Y(r??qn(t.domain))}case`sock-getopt`:return Y(J(n,e.fd).getOption(e.level,e.name));case`sock-setopt`:return J(n,e.fd).setOption(e.level,e.name,e.value),Y()}}function qn(e){return e===`inet`?{family:`inet`,host:`0.0.0.0`,port:0}:{family:`unix`,path:``}}async function Jn(e,t,n){let r=J(e.fds,t),i=!n&&!p(r).readable,a=await r.accept(i?e.blocking():void 0,n);return{fd:e.fds.install(new _(a),3),peer:a.peer}}function Yn(e,t){return e===t||e.startsWith(t.endsWith(`/`)?t:`${t}/`)}var Xn=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){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}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 this.fs.readFileBuffer(this.path)}catch{this.data=new Uint8Array,this.missing=!0}this.length=this.data.length}return this.data}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();await this.fs.writeFile(this.path,this.data.slice(0,this.length)),this.writeBackCost=performance.now()-e}},Zn=class{fs;byPath=new Map;constructor(e){this.fs=e}open(e){let t=this.byPath.get(e);return t||(t=new Xn(this.fs,e),this.byPath.set(e,t)),t.opens++,t}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)Yn(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)Yn(r,e)?n.push(i):Yn(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 Qn(e,t,n){let r=t.flags&3,i=r!==1,a=r===1||r===2,o=n&&t.contents===void 0&&!t.orphan?n.open(t.path):new Xn(e,t.path,t.contents,t.orphan===!0);t.create&&o.serial(()=>o.materialize()),t.truncate&&o.serial(()=>o.truncate(0));let s=t.position,c=e=>o.serial(e);return new _({read:i?e=>c(async()=>{let t=await o.pread(e,s);return s+=t.length,t}):void 0,write:a?e=>c(async()=>(t.flags&1024&&(s=await o.size()),s+=await o.pwrite(e,s),e.length)):void 0,seek:(e,t)=>c(async()=>{let n=0;if(t===1)n=s;else if(t===2)n=await o.size();else if(t!==0)throw new h(`EINVAL`);if(n+e<0)throw new h(`EINVAL`);return s=n+e,s}),pread:(e,t)=>c(()=>{if(!i)throw new h(`EBADF`);return o.pread(e,t)}),pwrite:(e,t)=>c(()=>{if(!a)throw new h(`EBADF`);return o.pwrite(e,t)}),resize:e=>c(()=>{if(!a)throw new h(`EBADF`);return o.truncate(e)}),stat:()=>c(async()=>({path:o.path,size:await o.size(),...o.orphaned?{orphan:!0}:{}})),flush:()=>c(()=>o.flush()),close:()=>c(async()=>{await o.flush(),n?.closed(o)})})}const $n=new Set([`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`]);function er(e){return $n.has(e.op)}function tr(e){return e.op.startsWith(`pty-`)}function nr(e){return e.op.startsWith(`sock-`)}function rr(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 ir(e){return e.op.startsWith(`fd-`)}function ar(e){return e.op.startsWith(`tty-`)}const or=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`,...Gn,...Rn]);function sr(e){let t=e.op;return typeof t==`string`&&or.has(t)}const cr=1048576;var lr=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 Fn(t,n.spawner,n.forker),this.nodes=n.fs?new Zn(n.fs):void 0,this.children.onChildState=()=>this.signal(B.CHLD)}signal(e){if(this.execChild!==void 0)return Promise.resolve(this.options.kill?.(this.execChild,e)).catch(()=>void 0),e===B.KILL?`terminate`:`forward`;if(e===B.KILL)return`terminate`;if(e===B.CONT&&this.cont(),e===B.STOP)return this.stop(e);let t=H(e);if(this.ignored&t)return`ignore`;if(!(this.caught&t)){let t=V(e);return t===`stop`?this.stop(e):t}let n=V(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`,B.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(ir(e))return await this.fdSyscall(e);if(ar(e))return this.ttySyscall(e);if(er(e))return this.jobSyscall(e);if(nr(e))return await this.socketSyscall(e);if(tr(e)){let{ptys:t,jobs:n}=this.options;return Bn(e,{pid:this.pid,fds:this.fds,ptys:t,jobs:n})}return await this.procSyscall(e)}catch(e){if(e instanceof h||e instanceof W)return{ok:!1,errno:e.code,message:e.code};throw e}}blockingSignal(){if(this.options.hasPending?.())throw new h(`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 h(e.peek&&t.read?`EOPNOTSUPP`:`EBADF`);if(t.tty&&this.checkForeground(t.tty),e.max<=0)return new Uint8Array;let r=p(t).readable;if(!r&&e.nonblock)throw new h(`EAGAIN`);let i=r?this.interrupt.signal:this.blockingSignal();return n.call(t,Math.max(0,Math.min(e.max,cr)),i)}async write(e,t,n=!1){let r=this.fds.get(e).file;if(!r.write)throw new h(`EBADF`);if(!p(r).writable){if(n)throw new h(`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 W(`ENOSYS`);return Qn(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(rr(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=g(),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:p(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 h(`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 h(`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 Un(this.fds,t,n,r,i)}}case`fd-seek`:{let t=this.fds.get(e.fd).file;if(!t.seek)throw new h(`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 h(`ESPIPE`);switch(e.op){case`fd-pread`:return{ok:!0,kind:`bytes`,bytes:await t.pread(Math.min(e.max,cr),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 h(`EBADF`);if(e.share!==void 0){this.fds.dup2(e.share,e.fd);return}if(!this.options.fs||e.path===void 0)throw new h(`EINVAL`);let t=Qn(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}:{}},this.nodes);this.fds.installAt(e.fd,t)}reserve(e,t=3,n){if(e===void 0)return this.fds.install(v(n),Math.max(3,t));if(this.fds.has(e))throw new h(`EBADF`);return this.fds.installAt(e,v(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`:c(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 h(`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&H(B.TTIN)?new h(`EIO`):(t.killGroup(r,B.TTIN),new h(`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 h(`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 h(`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 h(`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 h(`ENOTTY`);return n}socketSyscall(e){return this.net??=this.options.net??new bn,Kn(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&&!Tn(e.sig))throw new h(`EINVAL`);if(!await this.options.kill?.(e.pid===0?-this.pgid():e.pid,e.sig))throw new h(`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 h(`EINTR`)),{once:!0})})}dlLog=[];alarm;alarmEvery;setAlarm(e,t,n,r){if(!Tn(e))throw new h(`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 ur(){return new Worker(new URL(`/assets/process-worker-ERAVsYOh.js`,``+import.meta.url),{type:`module`})}const dr=new WeakMap;let fr=1;function pr(e){let t=dr.get(e);return t===void 0&&dr.set(e,t=fr++),t}function mr(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`:c(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:pr(n)}:{}}})}function hr(e){let t=new SharedArrayBuffer(64+fe),n=new Int32Array(t,0,16),r=new lr(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,H(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=>te(e)}),i=le({fs:e.fs,cwd:e.cwd}),a=(e.createWorker??ur)(),o=async e=>sr(e)?r.syscall(e):`op`in e&&typeof e.op==`string`&&`path`in e?de(e):{ok:!1,errno:`ENOSYS`,message:`wasm-realm: no exec yet`},s=pe(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);ue(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&&ee(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?.()},ee=t=>{if(u)return;if(g.size>=63){e.onError?.(`more than 64 threads`),f(70);return}let n=new SharedArrayBuffer(64+fe),r=(e.createWorker??ur)(),a=pe(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 v={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:mr(e.fds)}};a.postMessage(v,e.fork?[e.fork.memory.buffer]:[]);let te=e=>{r.signal(e)===`terminate`&&f(e===B.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:te,termsig:()=>d,onState:e=>r.onState(e)}}var gr=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 h(`ESRCH`);return t}setpgid(e,t,n){let r=this.member(t||e),i=n||r.pid;if(i<0)throw new h(`EINVAL`);let a=this.member(e);if(r.pid!==e){if(r.ppid!==e)throw new h(`ESRCH`);if(r.execed)throw new h(`EACCES`)}if(r.sid!==a.sid||r.pid===r.sid)throw new h(`EPERM`);let o=[...this.members.values()].some(e=>e.pgid===i&&e.sid===r.sid);if(i!==r.pid&&!o)throw new h(`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 h(`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 h(`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)}};function _r(e){let t=8,n=()=>{let n=0,r=0;for(;;){let i=e[t++];if(n|=(i&127)<<r,!(i&128))return n>>>0;r+=7}},r=()=>{let r=n(),i=new TextDecoder().decode(e.subarray(t,t+r));return t+=r,i},i=()=>{let r=e[t++];return{initial:n(),maximum:r&1?n():void 0,shared:!!(r&2)}};for(;t<e.length;){let a=e[t++],o=n(),s=t+o;if(a!==2){t=s;continue}let c=n();for(let a=0;a<c;a++){let a=r(),o=r(),s=e[t++];if(s===0)n();else if(s===1)t++,i();else if(s===2)return{module:a,name:o,...i()};else s===3?t+=2:s===4&&(t++,n())}return}}const vr=/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;function yr(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=!1,a=i.replace(vr,(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 br(e,t){if(!e)return t;let n=yr(e,t);if(!(t.GIT_CONFIG_SYSTEM!==void 0&&dn(`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 xr(e){return e.USER===void 0||`LOGNAME`in e?e:{...e,LOGNAME:e.USER}}function Sr(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 X=new Map,Cr=new Map,wr=new Map(Object.entries(U).map(([e,t])=>[t,e])),Z=/^\/(?:usr\/)?bin\/([^/]+)$/,Tr=/^(.*\/node_modules\/(?:@[^/]+\/)?[^/]+)\//,Er=/locateFile\(\s*["']([^"'/]+\.wasm)["']\s*\)/;let Dr=4e4;function Or(e){return e.glue===e.module}const kr=[0,97,115,109];function Ar(e){return kr.every((t,n)=>e[n]===t)}function jr(e){return e.endsWith(`.js`)?`${e.slice(0,-3)}.wasm`:`${e}.wasm`}function Mr(e){return Z.exec(e)?.[1]??Q(e)}function Q(e){return e.slice(e.lastIndexOf(`/`)+1)}function Nr(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 Pr(e){return ie(Nr(e),ne)}function Fr(e,t){return`${e}:${t.size}:${t.mtime.getTime()}`}function Ir(e,t){return X.set(e,t),t.catch(()=>X.delete(e)),t}async function Lr(e,t){let n=Fr(t,await e.fs.stat(t));return X.get(n)??Ir(n,ce(t=>e.fs.readFileBuffer(t),t))}function Rr(e,t){return Cr.set(e,_r(t)),Ir(e,se(t))}async function zr(e,t){let n=Fr(t,await e.fs.stat(t)),r=X.get(n),i=await(r&&Cr.has(n)?r:Rr(n,await e.fs.readFileBuffer(t))),a=Cr.get(n);return{module:i,...a?{memory:a}:{}}}async function Br(e,t){let n;try{let r=await e.fs.stat(t);if(!r.isFile)return!1;n=Fr(t,r)}catch{return!1}if(X.has(n))return!0;let r;try{r=await e.fs.readFileBuffer(t)}catch{return!1}return Ar(r)?(Rr(n,r).catch(()=>void 0),!0):!1}function Vr(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return t}function Hr(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 Ur(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 Wr(e,t){return e.has(t)&&e.get(t).file.tty!==void 0}function Gr(e){return{...Wr(e,0)?{}:{[ee]:`0`},...Wr(e,1)?{}:{[m]:`0`}}}function Kr(e){return{pid:e.pid,exited:e.exited,termsig:e.termsig,onState:t=>e.onState(t)}}const qr=new WeakMap;var Jr=class{ctx;processConfig;onError;gate;lookup;live=new Set;shellChildren=new Set;wasmByPid=new Map;shellByPid=new Map;installed;jobs=new gr;ptys=new Ln((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=Sn(z(t?.owner));let a=z(t?.owner);pn(this.net,{process:t,tls:{owner:a}})}commands(){return this.lookup?this.lookup():(this.installed??=Pr(this.ctx),this.installed)}async launch(e){let t=Or(e),n=``,r,i;try{t?{module:r,memory:i}=await zr(this.ctx,e.module):(n=await this.ctx.fs.readFile(e.glue),r=await Lr(this.ctx,e.module)),e.signal?.throwIfAborted()}catch(t){throw await e.fds.closeAll(),t}let a=Sr(e.argv0,xr(br(e.defaults,e.env)));return t&&await this.pythonPackages(e,a),this.start({...e,env:a,program:t?{abi:`wasi`,glue:n,module:r,...i?{memory:i}:{}}:{glue:n,module:r}})}async pythonPackages(e,t){let n=Tr.exec(e.module)?.[1];if(n)try{let r=Nr(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=qr.get(t);return n||(n=oe(e,ne),qr.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=hr({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(U[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=wr.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 h(`EPERM`);return this.processConfig?.processManager.signal(e,t)??!1}listen(e){return new _(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=Z.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))return;let a=jr(i);return await this.ctx.fs.exists(a)?{glue:i,module:a,argv0:Q(t||e)}:await Br(this.ctx,i)?{glue:i,module:i,argv0:Q(t||e).replace(/\.wasm$/,``)}:this.packagedCopy(i,t||e)}async packagedCopy(e,t){let n=Tr.exec(e)?.[1];if(n===void 0)return;let r;try{r=await this.ctx.fs.readFile(e)}catch{return}let i=Er.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)=>Kr(this.start({...t,cwd:n.cwd??t.cwd,fds:r,ppid:e,fork:n}))}async scriptCommand(e){let t=Z.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(`/`)||Z.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
|
-
`)[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 W(`ENOENT`);return this.runShellChild(t,n,e)}let a=await this.gate?.(Mr(i.file),i.args,t.env);return a?this.deniedChild(t,n,e,a):Kr(await this.launch({...i.target,args:i.args,env:t.env,cwd:t.cwd,fds:n,ppid:e}))}}async shellRuns(e){let t=Z.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 W(`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=>{V(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(U[t])}),d=(async()=>{try{let n=Wr(t,0),i=t.has(0)&&!n?await Ur(t.get(0)):new Uint8Array,a=await r(e.file,{args:e.argv.slice(1),cwd:e.cwd,env:{...e.env,...Gr(t)},replaceEnv:!0,stdin:Vr(i),stdinKind:`bytes`,signal:o.signal});return await $(t,1,a.stdoutKind===`bytes`?Hr(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:Dr++}}};const Yr=`usage: wasm [-t] [--argv0 NAME] [--module PATH] [--listen [HOST:]PORT] PROGRAM [ARGS...]
|
|
13
|
-
wasm --list
|
|
14
|
-
wasm --login
|
|
15
|
-
`;function Xr(e){let t={},n=0;for(;;){if(e[n]===`-t`){t.tty=!0,n+=1;continue}if(e[n]===`--login-prompt`){t.login=!0,n+=1;continue}if(e[n]!==`--argv0`&&e[n]!==`--module`&&e[n]!==`--listen`)break;let r=e[n+1];if(r===void 0)return;e[n]===`--argv0`?t.argv0=r:e[n]===`--listen`?t.listen=r:t.module=r,n+=2}let r=e[n];if(!(!r||r.startsWith(`-`)))return{...t,program:r,args:e.slice(n+1)}}function Zr(e,t){return t.commands?.()??Pr(e)}function Qr(e){if(!e)return()=>{};let t=new TextDecoder;return n=>{let r=t.decode(n,{stream:!0});r&&e(r)}}function $r(e,t,n,r){let i=[],a=e.limits?.maxOutputSize??268435456,c=0,l=!1,u=(e,n)=>r=>{if(c+=r.length,c>a){l=!0,t.killAll(1);return}e.push(r),n(r)},f=new o;return f.install(s(di(e))),f.install(d(u(i,Qr(r)))),f.install(d(u(n,Qr(r)))),{fds:f,collected:()=>({stdout:ui(i),note:l?`wasm: output exceeded ${a} bytes; stopped\n`:``}),release:()=>{}}}function ei(e,t){let n=new An({write:t=>e.write(t)},e=>t.signalTerminal(n,e));n.name=`/dev/tty1`,n.setSize(e.cols,e.rows),e.onInput(e=>n.receive(e)),e.onResize((e,t)=>n.resize(e,t));let r=n.file(),i=new o;return i.installAt(0,r),i.installAt(1,r.retain()),i.installAt(2,r.retain()),{fds:i,collected:()=>({stdout:``,note:``}),release:()=>e.release()}}function ti(e,t){return Object.fromEntries(Object.entries(e).filter(([e,n])=>e in t||!dn(e,n)))}async function ni(e,t){let n=z(t.processConfig?.owner);return fn(e.fs,rn(ri(e),n),n)}function ri(e){return e.exportedEnv?.HOME??e.env.get(`HOME`)??`/tmp`}async function ii(e,t){let n=await t.gitIdentity?.().catch(()=>void 0);return un(e.fs,sn(ri(e)),n)}function ai(e,t,n){let r={...n,...e.exportedEnv??Object.fromEntries(e.env)};return t.tty&&(!r.TERM||r.TERM===`dumb`)&&(r.TERM=`xterm-256color`,r.COLORTERM??=`truecolor`),t.login&&(r.PS1??=`\\w $ `,r.PROMPT_COMMAND??=he),r}async function oi(e,t){let n={stdout:``,stderr:``,exitCode:125};if((e.exportedEnv?.SLICC_SHELL??e.env.get(`SLICC_SHELL`))===`just-bash`||!t.terminal||typeof SharedArrayBuffer!=`function`||!(await Zr(e,t)).has(`bash`))return n;let r=s(new TextEncoder().encode(ge));return gi([`-t`,`--login-prompt`,`bash`,`--rcfile`,`/dev/fd/98`,`-i`],e,{...t,fds:[[98,r]]})}function si(e){let t=[...e.values()].sort((e,t)=>e.name.localeCompare(t.name)),n=Math.max(0,...t.map(e=>e.name.length));return t.map(e=>`${e.name.padEnd(n)} ${e.pkg}\n`).join(``)}async function ci(e,t,n){let r=``;try{r=(await e.fs.readFile(n)).split(`
|
|
16
|
-
`,1)[0]??``}catch{return`${t}: ${n}: No such file or directory`}return r.startsWith(`#!`)?`${t}: ${r.slice(2).trim().split(/[ \t]+/)[0]??``}: bad interpreter: No such file or directory`:`${t}: ${n}: no #! line naming its interpreter`}async function li(e,t,n){if(n.program.includes(`/`)||await e.fs.exists(e.fs.resolvePath(e.cwd,n.program)))return n;let r=(await t.commands()).get(n.program);if(!r)return n;if(r.script){let i=await t.interpreted({file:n.program,argv:[n.program,...n.args],cwd:e.cwd});return i?{...n,argv0:i.target.argv0,module:i.target.module,program:i.target.glue,args:i.args,defaults:i.target.defaults}:{error:await ci(e,n.program,r.script)}}return{...n,argv0:n.argv0??r.argv0,module:n.module??r.wasm,program:r.glue,args:[...r.args??[],...n.args],defaults:r.env}}function ui(e){let t=``;for(let n of e)for(let e=0;e<n.length;e+=32768)t+=String.fromCharCode(...n.subarray(e,e+32768));return t}function di(e){let t=me(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}async function fi(e,t,n){return t.module?e.fs.resolvePath(e.cwd,t.module):await Br(e,n)?n:jr(n)}function pi(e){let t=/^(?:([0-9.]+):)?(\d{1,5})$/.exec(e),n=t?Number(t[2]):0;if(!(!t||n<1||n>65535))return{family:`inet`,host:t[1]??`127.0.0.1`,port:n}}function mi(e,t,n){if(e.listen===void 0)return{env:{}};let r=pi(e.listen);if(!r)return{error:`--listen ${e.listen}: not a [HOST:]PORT\n`};try{let e=n.install(t.listen(r),3);return n.setStatusFlags(e,2048),{env:{SLICC_LISTEN_FDS:String(e)}}}catch(t){let n=t.code??String(t);return{error:`--listen ${e.listen}: ${n}\n`}}}function hi(e,t){return e.defaults??t.defaults}async function gi(e,t,n={}){let{processConfig:r,terminal:i}=n;if(e[0]===`--help`||e[0]===`-h`)return{stdout:Yr,stderr:``,exitCode:0};if(e[0]===`--login`&&e.length===1)return oi(t,n);if(e[0]===`--list`&&e.length===1)return{stdout:si(await Zr(t,n)),stderr:``,exitCode:0};let a=Xr(e);if(!a)return{stdout:``,stderr:Yr,exitCode:2};if(typeof SharedArrayBuffer!=`function`)return{stdout:``,stderr:`wasm: the wasm realm needs SharedArrayBuffer, which this page lacks (it is not cross-origin isolated)
|
|
17
|
-
`,exitCode:126};let o=[],s=e=>{o.push(new TextEncoder().encode(`wasm: ${e}\n`))},c=new Jr(t,r,e=>s(e),n.gate,n.commands),l=await li(t,c,a);if(`error`in l)return{stdout:``,stderr:`${l.error}\n`,exitCode:127};let u=t.fs.resolvePath(t.cwd,l.program),d=await fi(t,l,u),f;if(l.tty){let e=i?.lease();if(!e)return{stdout:``,stderr:`wasm: -t: no terminal to lend (only the panel terminal has one)
|
|
18
|
-
`,exitCode:1};f=ei(e,c),s=t=>e.write(new TextEncoder().encode(`wasm: ${t}\r\n`))}else f=$r(t,c,o,n.onOutput);for(let[e,t]of n.fds??[])f.fds.installAt(e,t),f.fds.setCloseOnExec(e);let{fds:p}=f,m=mi(l,c,p);if(`error`in m)return f.release(),await p.closeAll(),{stdout:``,stderr:`wasm: ${m.error}`,exitCode:1};let h;try{h=await c.launch({glue:u,module:d,argv0:l.argv0??u.slice(u.lastIndexOf(`/`)+1).replace(/\.(js|wasm)$/,``),args:l.args,env:{...ai(t,l,{...Qt(),...await ni(t,n),...await ii(t,n)}),...m.env},defaults:hi(l,n),cwd:t.cwd,fds:p,signal:t.signal})}catch(e){if(f.release(),t.signal?.aborted)return{stdout:``,stderr:``,exitCode:130};let n=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`wasm: ${l.program}: ${n}\n`,exitCode:127}}let g=()=>c.killAll(130);t.signal?.addEventListener(`abort`,g,{once:!0}),t.signal?.aborted&&g();try{let e=await h.exited,{stdout:t,note:n}=f.collected();return n&&o.push(new TextEncoder().encode(n)),{stdout:t,stderr:new TextDecoder().decode(_i(o)),exitCode:e,stdoutKind:`bytes`}}finally{f.release(),t.signal?.removeEventListener(`abort`,g)}}function _i(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}export{gi as runWasmCommand,ti as withoutRealmDefaults};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(){return{version:`6.235.2`,releasedAt:`2026-10-02T23:39:01Z`,buildId:`6.235.2-murlu52z`}}let t=null;function n(e){t=e}function r(){return t}export{e as n,n as r,r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=new Map,t=new Map;function n(t){let n=crypto.randomUUID();return e.set(n,t),n}function r(t){return e.get(t)??null}function i(n,r){if(!e.has(n))return r.abort(),()=>{};let i=t.get(n);return i||(i=new Set,t.set(n,i)),i.add(r),()=>{let e=t.get(n);e&&(e.delete(r),e.size===0&&t.delete(n))}}function a(n){e.delete(n);let r=t.get(n);if(r){t.delete(n);for(let e of r)e.signal.aborted||e.abort()}}function o(e){let t=e instanceof Error?e.message:String(e),n=e?.code;return typeof n==`string`&&/^E[A-Z]+$/.test(n)?{ok:!1,errno:n,message:t}:{ok:!1,errno:`EIO`,message:t}}async function s(e){let t=r(e.token);if(!t)return{ok:!1,errno:`EACCES`,message:`sync-fs: unknown or revoked token`};let{fs:n,cwd:i}=t;try{let t=n.resolvePath(i,e.path);switch(e.op){case`read`:return{ok:!0,kind:`bytes`,bytes:await n.readFileBuffer(t)};case`write`:return await n.writeFile(t,e.body??new Uint8Array),{ok:!0,kind:`void`};case`exists`:return{ok:!0,kind:`json`,json:await n.exists(t)};case`stat`:return{ok:!0,kind:`json`,json:l(await n.stat(t))};case`lstat`:return{ok:!0,kind:`json`,json:l(await n.lstat(t))};case`readdir`:return{ok:!0,kind:`json`,json:await n.readdir(t)};case`readdir-stat`:return{ok:!0,kind:`json`,json:await c(n,t)};case`mkdir`:return await n.mkdir(t,{recursive:!0}),{ok:!0,kind:`void`};case`rm`:return await n.rm(t,{recursive:!0}),{ok:!0,kind:`void`};case`rename`:{let r=n.resolvePath(i,e.arg2??``),{renameViaFs:a}=await import(`./rename-via-fs-YCnDOxaH.js`);return await a(n,t,r),{ok:!0,kind:`void`}}default:return await d(n,t,e)}}catch(e){return o(e)}}async function c(e,t){let n=await e.readdir(t),r=t===`/`?``:t;return Promise.all(n.map(async t=>{try{return[t,l(await e.lstat(`${r}/${t}`))]}catch{return[t,null]}}))}function l(e){let t=typeof e.ino==`bigint`?Number(e.ino):e.ino;return{isDirectory:e.isDirectory,isFile:e.isFile,isSymbolicLink:e.isSymbolicLink??!1,size:e.size,mode:e.mode,mtimeMs:e.mtime instanceof Date?e.mtime.getTime():0,...typeof t==`number`&&Number.isSafeInteger(t)?{ino:t}:{}}}function u(e,t){return Object.assign(Error(`${e}: ${t}`),{code:e})}async function d(e,t,n){switch(n.op){case`unlink`:if((await e.lstat(t)).isDirectory)throw u(`EISDIR`,t);return await e.rm(t),{ok:!0,kind:`void`};case`rmdir`:if(!(await e.lstat(t)).isDirectory)throw u(`ENOTDIR`,t);if((await e.readdir(t)).length>0)throw u(`ENOTEMPTY`,t);return await e.rm(t,{recursive:!0}),{ok:!0,kind:`void`};case`symlink`:if(!n.arg2)throw u(`EINVAL`,t);return await e.symlink(n.arg2,t),{ok:!0,kind:`void`};case`readlink`:return{ok:!0,kind:`json`,json:await e.readlink(t)};case`chmod`:if(typeof n.mode!=`number`)throw u(`EINVAL`,t);return await e.chmod(t,n.mode),{ok:!0,kind:`void`};case`utimes`:if(typeof n.atimeMs!=`number`||typeof n.mtimeMs!=`number`)throw u(`EINVAL`,t);return await e.utimes(t,new Date(n.atimeMs),new Date(n.mtimeMs)),{ok:!0,kind:`void`};default:return{ok:!1,errno:`EINVAL`,message:`sync-fs: unknown op '${n.op}'`}}}function f(e){return`slicc-sync-fs-`+e}const p=`/__slicc/fs-sync`,m=`/__slicc/exec-sync`,h=`x-slicc-fs-token`,g=`x-slicc-fs-errno`,_=`x-slicc-fs`,v=`sync-fs-req`,y=`sync-fs-ack`,b=`sync-fs-res`,x=`exec`,S=25e3,C=12e4,w=6e5,T=5e3;function E(e){return e.channel===x}function D(e){let{command:t}=e;if(Array.isArray(t)){if(t.length===0||!t.every(e=>typeof e==`string`))return{errno:`EINVAL`,message:`sync-exec: argv must be a non-empty string[]`};let[e,...n]=t;return{cmd:e,args:n}}return typeof t!=`string`||t.length===0?{errno:`EINVAL`,message:`sync-exec: command must be a non-empty string`}:e.args===void 0?{cmd:t}:!Array.isArray(e.args)||!e.args.every(e=>typeof e==`string`)?{errno:`EINVAL`,message:`sync-exec: args must be a string[]`}:{cmd:t,args:e.args}}async function O(e,t,n){if(n===void 0)return{cwd:t};if(typeof n!=`string`)return{errno:`EINVAL`,message:`sync-exec: cwd must be a string`};if(n.length===0)return{errno:`ENOENT`,message:`sync-exec: cwd is empty`};let r=e.resolvePath(t,n);try{if(!(await e.stat(r)).isDirectory)return{errno:`ENOTDIR`,message:`sync-exec: cwd is not a directory: ${r}`}}catch(e){let t=e?.code;return t===`EACCES`||t===`EPERM`?{errno:t,message:`sync-exec: cwd not accessible: ${r}`}:{errno:`ENOENT`,message:`sync-exec: cwd does not exist: ${r}`}}return{cwd:r}}function k(e){if(e===void 0)return;if(typeof e!=`object`||!e||Array.isArray(e))return{errno:`EINVAL`,message:`sync-exec: env must be an object`};let t={};for(let[n,r]of Object.entries(e))if(r!==void 0){if(typeof r!=`string`)return{errno:`EINVAL`,message:`sync-exec: env[${n}] must be a string`};t[n]=r}return{ok:!0,env:t}}function A(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function j(e){return e===void 0||e===0}function M(e,t){return A(e)?Math.min(e,w):Math.min(t,w)}async function N(e,t={}){let n=r(e.token);if(!n)return{ok:!1,errno:`EACCES`,message:`sync-exec: unknown or revoked token`};if(!n.exec)return{ok:!1,errno:`ENOSYS`,message:`sync-exec: exec is not available`};let a=D(e);if(`errno`in a)return{ok:!1,errno:a.errno,message:a.message};let s=await O(n.fs,n.cwd,e.cwd);if(`errno`in s)return{ok:!1,errno:s.errno,message:s.message};let c=k(e.env);if(c!==void 0&&`errno`in c)return{ok:!1,errno:c.errno,message:c.message};let l=new AbortController,u=!1,d=t.allowNoDeadline&&e.timeoutMs===void 0?void 0:setTimeout(()=>{u=!0,l.abort()},M(e.timeoutMs,w)),f=i(e.token,l);try{let t=await n.exec(a.cmd,{cwd:s.cwd,signal:l.signal,...a.args===void 0?{}:{args:a.args},...e.stdin===void 0?{}:{stdin:e.stdin},...c===void 0?{}:{env:c.env,replaceEnv:!0}});return{ok:!0,kind:`json`,json:{stdout:t.stdout,stderr:t.stderr,exitCode:t.exitCode}}}catch(e){return u?{ok:!1,errno:`ETIMEDOUT`,message:`sync-exec: timed out — ${e instanceof Error?e.message:String(e)}`}:l.signal.aborted?{ok:!1,errno:`ECANCELED`,message:`sync-exec: realm disposed`}:o(e)}finally{clearTimeout(d),f()}}export{r as C,n as S,b as _,j as a,f as b,C as c,T as d,y as f,v as g,S as h,k as i,w as l,_ as m,N as n,O as o,g as p,E as r,x as s,M as t,m as u,p as v,a as w,s as x,h as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./wc-onboarding-Caj_waOY.js";export{e as hasOnboardingFinalLickInHistory};
|