sliccy 6.235.2 → 6.235.4

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.
Files changed (147) hide show
  1. package/dist/ui/.vite/manifest.json +182 -182
  2. package/dist/ui/assets/SKILL-D64N28rB.js +1 -0
  3. package/dist/ui/assets/{account-store-D7DGAxNM.js → account-store-Cs4HX6Fx.js} +1 -1
  4. package/dist/ui/assets/{account-store-BT0pbAvQ.js → account-store-DYjXqZ0_.js} +1 -1
  5. package/dist/ui/assets/{adobe-CEArSxCX.js → adobe-Bnw7GCJv.js} +1 -1
  6. package/dist/ui/assets/{adobe-_I4i3x_7.js → adobe-_y0-61YY.js} +1 -1
  7. package/dist/ui/assets/{agent-panels-C_58flxq.js → agent-panels-C7Bqa-Ho.js} +1 -1
  8. package/dist/ui/assets/{almost-bash-shell-headless-B6ZMvYl4.js → almost-bash-shell-headless-BuApOTs4.js} +490 -490
  9. package/dist/ui/assets/{apply-layout-8fGhBCeJ.js → apply-layout-B3ZnpqEz.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-B1ImIasn.js → azure-openai-BT6bKHSX.js} +1 -1
  11. package/dist/ui/assets/{azure-openai-eCi3qaKl.js → azure-openai-CPAcwuzu.js} +1 -1
  12. package/dist/ui/assets/{cdp-D7X02m26.js → cdp-BZeS5nmk.js} +1 -1
  13. package/dist/ui/assets/{cerebras-DLriLpBm.js → cerebras-6LL_YKxo.js} +1 -1
  14. package/dist/ui/assets/{cerebras-Dw16qbLP.js → cerebras-CxfLpEm0.js} +1 -1
  15. package/dist/ui/assets/{composer-speech-C5aq2EHX.js → composer-speech-BiBHztPI.js} +1 -1
  16. package/dist/ui/assets/{connect-surface-B33YxHel.js → connect-surface-Bi9X_wJL.js} +1 -1
  17. package/dist/ui/assets/{directed-approval-CsWbrazD.js → directed-approval-tJnAS7Qd.js} +1 -1
  18. package/dist/ui/assets/{emscripten-vfs-hook-C_WW9D-C.js → emscripten-vfs-hook-CccsS3uw.js} +1 -1
  19. package/dist/ui/assets/{emscripten-vfs-hook-D4rVkB6b.js → emscripten-vfs-hook-DN8XE7DM.js} +1 -1
  20. package/dist/ui/assets/frames-Dw-7-9i6.js +1 -0
  21. package/dist/ui/assets/{frozen-archive-writer-Bjl1A6fy.js → frozen-archive-writer-B_Yk0dmJ.js} +1 -1
  22. package/dist/ui/assets/{gelatiere-unit-69YQevwx.js → gelatiere-unit-CNjxKuaT.js} +1 -1
  23. package/dist/ui/assets/{github-5665N6-Q.js → github-D8OafP2Z.js} +1 -1
  24. package/dist/ui/assets/{github-DeAThA8k.js → github-ZZNrFs35.js} +1 -1
  25. package/dist/ui/assets/{github-copilot-B-F9GN74.js → github-copilot-BMWRdCin.js} +1 -1
  26. package/dist/ui/assets/{github-copilot-2CNJ6evQ.js → github-copilot-CL7zYevm.js} +1 -1
  27. package/dist/ui/assets/{go-driver-C0zJJSTi.js → go-driver-DOU6iF-0.js} +1 -1
  28. package/dist/ui/assets/{hear-DzjhPERk.js → hear-l9ZtYzw0.js} +1 -1
  29. package/dist/ui/assets/{js-realm-worker-ALz7TOVI.js → js-realm-worker-D66arNS1.js} +2 -2
  30. package/dist/ui/assets/{jsh-executor-UfR3L63B.js → jsh-executor-C000GN6m.js} +2 -2
  31. package/dist/ui/assets/{kernel-worker-coLE80Cx.js → kernel-worker-orc-rbxr.js} +9 -9
  32. package/dist/ui/assets/keyboard-TcuVIW9F.js +1 -0
  33. package/dist/ui/assets/{lick-ws-bridge-DpjVEf6h.js → lick-ws-bridge-BrMzPx89.js} +1 -1
  34. package/dist/ui/assets/{lick-ws-bridge-BwZ6Lsqx.js → lick-ws-bridge-EaJq5vVC.js} +1 -1
  35. package/dist/ui/assets/{live-session-curation-CN8ifDXh.js → live-session-curation-r0KCWNII.js} +1 -1
  36. package/dist/ui/assets/{live-session-snapshot-BoQYDzUq.js → live-session-snapshot-BoFXQFBo.js} +1 -1
  37. package/dist/ui/assets/{local-llm-CBWcw9ga.js → local-llm-B17M4gZX.js} +1 -1
  38. package/dist/ui/assets/{local-llm-DAdQyx68.js → local-llm-BshBZAmq.js} +1 -1
  39. package/dist/ui/assets/{main-D7Ilh1cw.js → main-DOQz22Hi.js} +3 -3
  40. package/dist/ui/assets/{main-cherry-9nngpfRy.js → main-cherry-I4yRF50x.js} +1 -1
  41. package/dist/ui/assets/{mcp-command-BeBM1rHC.js → mcp-command-BqHFwAvU.js} +9 -9
  42. package/dist/ui/assets/{memory-curation-seam-CUFsPZ6T.js → memory-curation-seam-yhY6cBQU.js} +1 -1
  43. package/dist/ui/assets/{memory-health-hDyNPmp-.js → memory-health-BhBV3Vts.js} +1 -1
  44. package/dist/ui/assets/{memory-write-execute-CgR8Y6VS.js → memory-write-execute-BmLwyuUI.js} +1 -1
  45. package/dist/ui/assets/{merge-folded-cost-into-frozen-DTjO_AHz.js → merge-folded-cost-into-frozen-0lbra_xV.js} +1 -1
  46. package/dist/ui/assets/{new-session-CLqykoTf.js → new-session-CozQURhl.js} +2 -2
  47. package/dist/ui/assets/{oauth-bootstrap-UPOMQS2N.js → oauth-bootstrap-BQCdFHox.js} +2 -2
  48. package/dist/ui/assets/{onboarding-orchestrator-DKu8ScwD.js → onboarding-orchestrator-u30ZsfI2.js} +1 -1
  49. package/dist/ui/assets/{openai-codex-C3rT7EJ-.js → openai-codex-02ctr8VP.js} +1 -1
  50. package/dist/ui/assets/{openai-codex-CXG3CPUO.js → openai-codex-CVj-0cWE.js} +1 -1
  51. package/dist/ui/assets/{openrouter-MNU1Hy35.js → openrouter-BKgB8K_S.js} +1 -1
  52. package/dist/ui/assets/{openrouter-C_mHcLUY.js → openrouter-CiYZC-jw.js} +1 -1
  53. package/dist/ui/assets/{openrouter-free-2vZpBTFE.js → openrouter-free-D2KQuRtO.js} +1 -1
  54. package/dist/ui/assets/{openrouter-free-wsl2KNbX.js → openrouter-free-Q99EOx7o.js} +1 -1
  55. package/dist/ui/assets/{openrouter-oauth-sx8YMfw_.js → openrouter-oauth-ClUOSjeL.js} +1 -1
  56. package/dist/ui/assets/{openrouter-oauth-Bw05OEXj.js → openrouter-oauth-hldOrmrc.js} +1 -1
  57. package/dist/ui/assets/{panel-rpc-handlers-C4ZEbr-L.js → panel-rpc-handlers-DZcgwV5a.js} +2 -2
  58. package/dist/ui/assets/{panelize-shell-CLTgjV9N.js → panelize-shell-B7A8LsKg.js} +1 -1
  59. package/dist/ui/assets/{pi-edit-execution-DF0ZCxw2.js → pi-edit-execution-CMAQRxQA.js} +1 -1
  60. package/dist/ui/assets/{provider-CBb3zRgf.js → provider-BGzOUBkK.js} +1 -1
  61. package/dist/ui/assets/{provider-CWkiPaFF.js → provider-Bf1Ajplf.js} +1 -1
  62. package/dist/ui/assets/{provider-settings-BySNZFTG.js → provider-settings-rZFiuTIA.js} +1 -1
  63. package/dist/ui/assets/provider-store-access-BcrR63Ca.js +1 -0
  64. package/dist/ui/assets/provider-store-access-CloxNO5a.js +1 -0
  65. package/dist/ui/assets/{providers-3muwTGPn.js → providers-C4Q0sm3i.js} +2 -2
  66. package/dist/ui/assets/{providers-Dz9lZ6WH.js → providers-V_6BgZy1.js} +1 -1
  67. package/dist/ui/assets/{py-live-vfs-CPGqrKx-.js → py-live-vfs-C6sLzy_c.js} +1 -1
  68. package/dist/ui/assets/{quick-llm-BE1MoA8w.js → quick-llm-Dz6rUpi-.js} +1 -1
  69. package/dist/ui/assets/{realm-inprocess-B-C5-frg.js → realm-inprocess-B3VY5Tw-.js} +2 -2
  70. package/dist/ui/assets/{realm-sync-transport-CTz7jTgb.js → realm-sync-transport-Ble3Euu9.js} +1 -1
  71. package/dist/ui/assets/{realm-unhandled-rejections-CE1G6Vqu.js → realm-unhandled-rejections--GLm39Uk.js} +1 -1
  72. package/dist/ui/assets/{realm-unhandled-rejections-zi6bFzVe.js → realm-unhandled-rejections-BxCgpBFZ.js} +1 -1
  73. package/dist/ui/assets/{recovery-screen-tADn1zrY.js → recovery-screen-Bffxfm3Y.js} +1 -1
  74. package/dist/ui/assets/{remote-terminal-view-4u9dBB0E.js → remote-terminal-view-CoXwAGLO.js} +2 -2
  75. package/dist/ui/assets/{require-guards-DnafTLJr.js → require-guards-6ovYBhVp.js} +1 -1
  76. package/dist/ui/assets/{restore-ue1IxJw4.js → restore-CWAOFran.js} +1 -1
  77. package/dist/ui/assets/run-BStZvimF.js +18 -0
  78. package/dist/ui/assets/{run-Blqu2GaE.js → run-BT443EyM.js} +2 -2
  79. package/dist/ui/assets/{run-CnfMQAT6.js → run-BteWzSfI.js} +2 -2
  80. package/dist/ui/assets/{run-BSPrcB21.js → run-C2HoxcW5.js} +2 -2
  81. package/dist/ui/assets/{run-DKbvbERf.js → run-CpTqQO9E.js} +1 -1
  82. package/dist/ui/assets/{run-BVj8rfi8.js → run-DpN3NJpN.js} +1 -1
  83. package/dist/ui/assets/scale-B8PGb3fG.js +1 -0
  84. package/dist/ui/assets/{session-command-memory-Cep9cwKm.js → session-command-memory-fxxu3Wnc.js} +2 -2
  85. package/dist/ui/assets/{session-jsonl-CFn8rdop.js → session-jsonl-DqM_T9qM.js} +1 -1
  86. package/dist/ui/assets/{session-jsonl-j0zMWVNK.js → session-jsonl-uhra4EyF.js} +1 -1
  87. package/dist/ui/assets/{session-search-index-la9-q_G1.js → session-search-index-WLg0B1n9.js} +1 -1
  88. package/dist/ui/assets/{setup-feature-flags-remote-BTYJL90t.js → setup-feature-flags-remote-DsedGlqO.js} +1 -1
  89. package/dist/ui/assets/{setup-model-catalog-D8Ea_olZ.js → setup-model-catalog-BaHnMPAr.js} +1 -1
  90. package/dist/ui/assets/{silent-renew-backoff-BtuCuxCi.js → silent-renew-backoff-Cz36onHW.js} +1 -1
  91. package/dist/ui/assets/slicc-version-Bh28vgoq.js +1 -0
  92. package/dist/ui/assets/{soundscape-CGUkUoeQ.js → soundscape-DpLfdWAx.js} +1 -1
  93. package/dist/ui/assets/{speak-CxwK7WUc.js → speak-Dp62zWsH.js} +1 -1
  94. package/dist/ui/assets/{sprinkle-manager-7If5XMR2.js → sprinkle-manager-TUVhRNTd.js} +1 -1
  95. package/dist/ui/assets/{sprinkle-renderer-BZE6UauM.js → sprinkle-renderer-_bgzFOiQ.js} +1 -1
  96. package/dist/ui/assets/{ssh-BWaaGyTo.js → ssh-B2--kdSm.js} +1 -1
  97. package/dist/ui/assets/{stdio-tty-BB4qV92F.js → stdio-tty-CipJs8Mm.js} +1 -1
  98. package/dist/ui/assets/{sudo-Bur3ckJR.js → sudo-BixYLnUe.js} +1 -1
  99. package/dist/ui/assets/{supervisor-BoiwgqlW.js → supervisor-BzEoeHmO.js} +1 -1
  100. package/dist/ui/assets/{sync-dialog-CoFg-wC1.js → sync-dialog-DjCbk8PZ.js} +1 -1
  101. package/dist/ui/assets/sync-exec-dispatch-B-gdI8lu.js +1 -0
  102. package/dist/ui/assets/{sync-sab-responder-BmZDqqnK.js → sync-sab-responder-DlSgon7c.js} +1 -1
  103. package/dist/ui/assets/{tab-8LaHojfd.js → tab-D9i-XOmT.js} +1 -1
  104. package/dist/ui/assets/{transformers-env-CvumQVfQ.js → transformers-env-fMmfvl9A.js} +1 -1
  105. package/dist/ui/assets/{tray-leader-B4zwhLBC.js → tray-leader-Civqj6Af.js} +1 -1
  106. package/dist/ui/assets/{tray-leave-runtime-gvronesJ.js → tray-leave-runtime-DUB01L_f.js} +1 -1
  107. package/dist/ui/assets/{tray-sidecar-DOIJd5vJ.js → tray-sidecar-DJ3B4ZZD.js} +1 -1
  108. package/dist/ui/assets/{upgrade-detection-DbUZ5LnM.js → upgrade-detection-DcRmserK.js} +1 -1
  109. package/dist/ui/assets/{v86-DKE8ZbX9.js → v86-16ZWsI-9.js} +1 -1
  110. package/dist/ui/assets/{voice-reply-CMQ06Wn-.js → voice-reply-DHB34F8u.js} +1 -1
  111. package/dist/ui/assets/{wc-attach-CtS_GXt-.js → wc-attach-rAGS8A86.js} +2 -2
  112. package/dist/ui/assets/{wc-browser-DjJiSTyC.js → wc-browser-CF8fTc0L.js} +1 -1
  113. package/dist/ui/assets/{wc-computers-hk2xbTfE.js → wc-computers-BvweN5uT.js} +1 -1
  114. package/dist/ui/assets/{wc-detached-Cwjv2dxL.js → wc-detached-BJ2kdj4y.js} +1 -1
  115. package/dist/ui/assets/{wc-extension-ClEdff6M.js → wc-extension-lag5g2h7.js} +2 -2
  116. package/dist/ui/assets/{wc-follower-Bf76brRQ.js → wc-follower-BzTrl0Hz.js} +3 -3
  117. package/dist/ui/assets/{wc-follower-oauth-BZYWuEQu.js → wc-follower-oauth-D2wN117J.js} +1 -1
  118. package/dist/ui/assets/{wc-gelatiere-Cs0ORVhQ.js → wc-gelatiere-C4CnQD7I.js} +1 -1
  119. package/dist/ui/assets/{wc-live-C-qevd3g.js → wc-live-BNbI6L9J.js} +5 -5
  120. package/dist/ui/assets/{wc-nav-Rophsgk9.js → wc-nav-BIi9hImo.js} +2 -2
  121. package/dist/ui/assets/{wc-onboarding-Caj_waOY.js → wc-onboarding-CfQR54oE.js} +2 -2
  122. package/dist/ui/assets/{wc-permissions-D9yyGqLl.js → wc-permissions-xwNOm31c.js} +2 -2
  123. package/dist/ui/assets/{wc-placeholder-BfxhJIh1.js → wc-placeholder-6cTL5ycx.js} +3 -3
  124. package/dist/ui/assets/{wc-secret-request-DqxZuJUL.js → wc-secret-request-Dk9-Zayw.js} +1 -1
  125. package/dist/ui/assets/{wc-settings-Bh44ZTl-.js → wc-settings-BZUIpIkQ.js} +3 -3
  126. package/dist/ui/assets/{wc-shell-CJLjywlF.js → wc-shell-DUdnAC6w.js} +3 -3
  127. package/dist/ui/assets/{wc-shortcut-config-Cz7Vv65u.js → wc-shortcut-config-Bjeruhfk.js} +1 -1
  128. package/dist/ui/assets/{wc-sprinkles-DVTcJSN3.js → wc-sprinkles-nkF26rMw.js} +2 -2
  129. package/dist/ui/assets/{wc-transcript-export-CE_ns2-x.js → wc-transcript-export-JKEZQlks.js} +2 -2
  130. package/dist/ui/assets/{wc-tray-DSEM6WbT.js → wc-tray-BC9oZ-Hi.js} +4 -4
  131. package/dist/ui/assets/welcome-detection-Cx7Dj-60.js +1 -0
  132. package/dist/ui/assets/{whisper-session-BycheH59.js → whisper-session-CJU1CC6o.js} +2 -2
  133. package/dist/ui/assets/{xai-grok-Xy7OSykN.js → xai-grok-CEMCdE1G.js} +1 -1
  134. package/dist/ui/assets/{xai-grok-CW0J74cE.js → xai-grok-hat56jyb.js} +1 -1
  135. package/dist/ui/index.html +3 -3
  136. package/dist/ui/llm-proxy-sw.js +1 -1
  137. package/dist/ui/packages/webapp/index.html +3 -3
  138. package/package.json +2 -2
  139. package/dist/ui/assets/SKILL-dd0KSoC6.js +0 -1
  140. package/dist/ui/assets/frames-D35rgB_q.js +0 -1
  141. package/dist/ui/assets/provider-store-access-BmLF3yiQ.js +0 -1
  142. package/dist/ui/assets/provider-store-access-qocbyVYP.js +0 -1
  143. package/dist/ui/assets/run-Cf2apntf.js +0 -18
  144. package/dist/ui/assets/scale-D09IlqOK.js +0 -1
  145. package/dist/ui/assets/slicc-version-_RfsCQCx.js +0 -1
  146. package/dist/ui/assets/sync-exec-dispatch-DSTbkRmG.js +0 -1
  147. package/dist/ui/assets/welcome-detection-BxKU2eoh.js +0 -1
@@ -0,0 +1 @@
1
+ import{n as e}from"./wc-onboarding-CfQR54oE.js";export{e as hasOnboardingFinalLickInHistory};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-CxwK7WUc.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-CvumQVfQ.js","assets/wc-shell-CJLjywlF.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-BT0pbAvQ.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-3muwTGPn.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-CvumQVfQ.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-CxwK7WUc.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
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-Dp62zWsH.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-fMmfvl9A.js","assets/wc-shell-DUdnAC6w.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-DYjXqZ0_.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-C4Q0sm3i.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-fMmfvl9A.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-Dp62zWsH.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-BT0pbAvQ.js";import"./main-D7Ilh1cw.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
+ 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-DYjXqZ0_.js";import"./main-DOQz22Hi.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-D7DGAxNM.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-BySNZFTG.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};
1
+ import{_ as e,r as t}from"./account-store-Cs4HX6Fx.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-rZFiuTIA.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};
@@ -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-D7Ilh1cw.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-DOQz22Hi.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-3muwTGPn.js">
36
+ <link rel="modulepreload" crossorigin href="/assets/providers-C4Q0sm3i.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-BT0pbAvQ.js">
41
+ <link rel="modulepreload" crossorigin href="/assets/account-store-DYjXqZ0_.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">
@@ -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-D7Ilh1cw.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-DOQz22Hi.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-3muwTGPn.js">
36
+ <link rel="modulepreload" crossorigin href="/assets/providers-C4Q0sm3i.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-BT0pbAvQ.js">
41
+ <link rel="modulepreload" crossorigin href="/assets/account-store-DYjXqZ0_.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.2",
3
+ "version": "6.235.4",
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.13.6",
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
- var e="---\nname: computer\ndescription: |\n Use this when looking at and poking a screen with SLICC's `computer`\n shell command (xdotool grammar). Covers v86 guests (`v86:<name>`),\n browser tabs (`tab:<id>`), display share (`screen:<handle>`), follower\n desktops (`ssh:<runtimeId>`), HTTP remotes (`url:<host>`), jsh-hosted\n backends, screenshot-space coordinates, frozen JPEG frames, and chaining\n click/type/key.\nallowed-tools: bash\n---\n\n# computer — look at and poke a screen\n\n`computer` is the look-then-act loop for every registered screen. Prefer it over `v86 type|key|mouse|screenshot|text` once a guest is running. `v86 start` still boots the VM and registers `v86:<name>`.\n\n## Target\n\n```bash\ncomputer ls # ids, kinds, names, titles\ncomputer use v86:arch # default for later verbs\ncomputer info # descriptor for the current target\n```\n\nResolution order: `-c` / `--computer`, else `$COMPUTER`, else last `computer use`, else the only registered computer.\n\n`-c` takes an id, the `-n` name the computer was added under, or its current title — in that order. Prefer the **id** or the **name**: `ls` shows them in separate columns because `TITLE` is whatever the surface calls itself right now (a tab republishes `document.title` on every capture), while `NAME` is fixed for the life of the registration.\n\n## Look then act\n\nEvery poke writes a frozen JPEG and prints `target: <id>` then `screen: <path>`. The extension of that path follows the bytes, so it is `.jpg` in practice and `.png` only if a backend hands back PNG the runtime could not transcode — read the extension, do not assume it. The `target:` line is the resolved computer (`-c`, `$COMPUTER`, last `use`, or the only registered one) so a later `computer screenshot` without `-c` still binds the bash-row UI. That poke frame is a transcript side effect only — it does **not** redefine the coordinate space, so never read new coordinates off it (it can come back narrower and your clicks would map to the wrong place). Run a fresh `computer screenshot` before choosing coordinates for the next click. If the frozen frame cannot be captured, the poke still exits 0 (it already happened); do not retry the same click.\n\n```bash\ncomputer screenshot # JPEG; prints WxH → wxh (scale s)\ncomputer screenshot --size high out.jpg\ncomputer text # text-mode dump when the backend supports it\n```\n\n`--size` is `low` (256), `medium` (768, default), `high` (1536), or a max width. It is an upper bound: a frame is never widened past the computer's native size to reach it, and one that cannot be encoded that narrow arrives at native size rather than upscaled. Coordinates on later verbs are in that last `computer screenshot` (the last model-facing shot) unless `--native` — a poke's frozen frame does not update that space. `--native` is the pixel space `computer info --json` advertises (`size` / lastShot). Tab computers screenshot in device pixels; clicks are converted to CSS pixels with the tab's `devicePixelRatio` before they hit the page. A human can also click, scroll, and type in the live lightbox when the computer allows input; Escape releases. Frozen stills in the transcript never forward.\n\n## Poke (xdotool; chainable)\n\n```bash\ncomputer mousemove 120 80\ncomputer click 1 --at 120,80 # 1 left, 2 middle, 3 right\ncomputer click 120 80 # two numbers → coords, button 1\ncomputer drag 10 10 200 80\ncomputer scroll 0 -3 --at 120,80\ncomputer key ctrl+alt+Delete Return\ncomputer type hello world\ncomputer wait 400\ncomputer click 1 type hello # chain: click, then type\n```\n\nAnthropic aliases work the same: `left_click`, `right_click`, `mouse_move`, `left_click_drag`, `screenshot`, …\n\n## v86 guest\n\n```bash\nv86 start -n arch -state \"$TMPDIR/arch_state.bin.zst\" -fs9p https://i.copy.sh/arch/ -net virtio -m 512\ncomputer use v86:arch\ncomputer screenshot\ncomputer type \"uname -a\\n\"\ncomputer key Return\ncomputer record -V 5 guest.webm\n```\n\n`computer rm` unregisters `v86:<name>` and does **not** power the guest off. `v86 stop` / `kill <pid>` still does. `v86 serve` is retired — use `computer watch -c v86:<name>`.\n\n## Browser tab\n\n```bash\nplaywright-cli tab-list # pick a targetId that is not the SLICC app\ncomputer add tab <targetId> -n docs\ncomputer screenshot -c tab:<targetId>\ncomputer click 1 --at 100,80 type hello\n```\n\n`computer add tab` refuses SLICC app tabs (`sliccy.ai` leader, `?slicc=`, extension pages). Pass a URL or a CDP target id. Look at the screenshot and click what you see — screenshot-space `--at` lands on the visual target even when `devicePixelRatio` is not 1.\n\n## Display share (`screen`)\n\n```bash\ncomputer add screen -n desk # panel terminal or cone approval card\ncomputer screenshot -c screen:screen1\ncomputer record -V 10 clip.webm # timed clip from the live session\ncomputer rm screen:screen1 # stops the getDisplayMedia tracks\n```\n\n`computer add screen` needs a real user gesture (`getDisplayMedia`). Typed in the panel terminal, the keystroke is the gesture (under GNU bash the permission prompt's Allow button is); from a cone tool call an approval card opens the picker. `computer ls` marks a live share with `[display slot]`. Input (keyboard/mouse) is not supported. `computer info` reports the shared display's own resolution as `size` (e.g. `5120x2880`), learned from the first frame — it is `-` until something captures, and no consumer's `--size` changes it; read it to see how far `--size` can go before frames stop gaining detail. Screen share cannot come back after `jshd --enable` restore — there is no gesture at boot.\n\n`computer record` writes a clip to a VFS path (default `clip.webm`, max 60s). `screen` uses the live session recorder; v86/tab/url/jsh and a non-native `ssh` poll JPEG stills and pipe them through in-repo ffmpeg wasm (`-f image2pipe`). Default `--fps` is 2. A native-capture `ssh` Mac streams instead (see below). `--fps` is a target, not a promise: capture time counts against each interval, and a polled clip is timed from when its stills were actually taken, so it plays at real speed. The reported `durationMs` is the measured span (it can run past `-V` when one capture overruns the window); the output adds `N frames at X fps`, and `--json` adds `frames`, `fps`, `requestedFps`, plus `slow: true` when the backend could not keep up — lower `--fps` rather than trusting a slow clip's frame rate.\n\n## Follower desktop (`ssh`)\n\n```bash\nhost # every follower, tagged [ssh] [computer] [playwright]\nssh --list # exec-capable tray followers only\ncomputer add ssh follower-abc -n desk # view-only\ncomputer screenshot\ncomputer add ssh follower-abc --allow-input\ncomputer click 1 --at 100,80 type hello\ncomputer add ssh mac-follower --sim UDID-1 --allow-input # iOS Simulator\ncomputer add ssh mac-follower --display 3 -n portrait # a second screen\n```\n\nProbes at add: native ScreenCaptureKit/CGEvent when the follower advertises `capabilities.computer` (Swift launcher `sliccstart-computer`); else `screencapture` + `cliclick` (macOS), `grim`/`scrot`/`import` + `xdotool`/`ydotool` (Linux), `xcrun simctl io <udid> screenshot` + `idb ui` (`--sim`). `--sim` always takes the simctl/idb path, even on a native-capable follower — native capture sees the Mac desktop, never the Simulator; a missing or shut-down udid fails the add (`simctl boot` it first).\n\nA Mac started with `slicc <join-url> follow --computer` shows as **one** entry in `host`, tagged `[ssh] [computer]` — the CLI and the headless Sliccstart it spawned are folded by a shared `hello.pairId`. Point `computer add ssh` at that one id and it picks ScreenCaptureKit automatically. **`host` is the roster to read**: an entry tagged `[computer]` can be looked at, whether it holds the screen itself or through its paired launcher. `ssh --list` shows the exec half only, because that is the list of targets that accept commands — a capture-only `sliccstart-computer` is addressable from `host`, never from `ssh`. Without `--computer` the same Mac appears twice (a `follower-…` tagged `[ssh]` and a `sliccstart-computer` tagged `[computer]`); either works, but only the native one captures under SLICC's own screen-recording permission. Frames come back base64 in ≤3 MiB chunks over tray-exec (or `computer.native.frame` when native). `--allow-input` is a sudo hop (`kind: command`) so a phone can answer with Face ID; `computer ls` shows `[input]` or `[view-only]`. The iOS follower itself is never a driven computer (a real iPhone is out of scope).\n\n**Live frames (native capture only).** `computer watch` and `computer record` on a native Mac consume one ScreenCaptureKit stream of the display the id names, rather than taking a fresh screenshot per frame. Two watchers share that one stream; it stops when the last one stops. While it runs, `computer screenshot` hands you the stream's newest frame — a fresh one-shot would replace the follower's live capturer and end the stream. After a click or key, the frame written is the first one that arrives after the action. Everything else (`ssh` without native capture, v86, tab, url, jsh) still polls.\n\n**Which screen (native capture only).** Default is the Mac's **main** display. `--display <n>` picks another: 1-based in the OS display order, the same numbering as `screencapture -D <n>` on that follower, so `screencapture -D 3` through the exec channel shows you what `--display 3` will capture. An out-of-range number fails with the attached displays listed (`display 7 is not attached — attached displays: 1=5120x2880 (main), …`), which is also the cheapest way to enumerate them. A picked display widens the id to `ssh:<runtime>:display:<n>`, so register one computer per screen to drive several at once. Native frames and `--size` are in real **pixels**, so `--size 2000` reaches 2000 px wide on a 2x display, not the 1440 point width.\n\nA Mac only advertises `capabilities.computer` while its Screen Recording grant is actually in place, so `computer add ssh` on an ungranted Mac names the missing grant and falls back to `screencapture` through the machine's exec follower instead of failing on the native path. Ticking the box in System Settings republishes the capability within seconds — no reconnect. A `--computer` Mac without Screen Recording is still **one** `host` entry, tagged `[ssh]` only; the launcher's MOTD naming the missing grant prints on its own line under the CLI's (in `host` and `ssh --list`). A follower whose MOTD mentions Accessibility can capture but not inject: `--allow-input` will be accepted and events will fail until that box is ticked too.\n\n## HTTP remote (`url`)\n\n```bash\ncomputer add url http://127.0.0.1:5710 -n demo\ncomputer screenshot\ncomputer text\ncomputer type hello\n```\n\nThe remote must answer `GET /computer` with a `ComputerDescriptor`. Screenshots are `GET /computer/screenshot`; optional `GET /computer/text` (404 means none); input is `POST /computer/input`. A trailing `/computer` on the base is stripped. Live frames use `WS /computer/frames` only when the descriptor advertises `frames: \"push\"`; a failed or closed socket falls back to screenshot polling. Otherwise `computer watch` polls. The in-tree reference is node-server `--computer-demo` (same port as the `/cdp` bridge).\n\n## jsh-hosted backend\n\nA durable `.jsh` can register a computer with `require('sliccy:computer').register(...)`. `register()` subscribes to host `computer-call` events, which keeps `jshd` alive. Optional `handlers.subscribe(fps, onFrame, maxWidth)` is the `computer watch` push path. Example: `/workspace/skills/jshd/examples/fake-computer.jsh`.\n";export{e as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./tmpdir-env-ate4iNcK.js";import{i as t,n}from"./frame-bytes-B4FpkDwW.js";const r={ctrl:!1,alt:!1,shift:!1,meta:!1},i={ctrl:`ctrl`,control:`ctrl`,alt:`alt`,shift:`shift`,meta:`meta`,super:`meta`,win:`meta`,cmd:`meta`,command:`meta`},a={return:{key:`Enter`,code:`Enter`},enter:{key:`Enter`,code:`Enter`},kp_enter:{key:`Enter`,code:`NumpadEnter`},tab:{key:`Tab`,code:`Tab`},escape:{key:`Escape`,code:`Escape`},esc:{key:`Escape`,code:`Escape`},space:{key:` `,code:`Space`},backspace:{key:`Backspace`,code:`Backspace`},delete:{key:`Delete`,code:`Delete`},del:{key:`Delete`,code:`Delete`},insert:{key:`Insert`,code:`Insert`},home:{key:`Home`,code:`Home`},end:{key:`End`,code:`End`},pageup:{key:`PageUp`,code:`PageUp`},page_up:{key:`PageUp`,code:`PageUp`},prior:{key:`PageUp`,code:`PageUp`},pagedown:{key:`PageDown`,code:`PageDown`},page_down:{key:`PageDown`,code:`PageDown`},next:{key:`PageDown`,code:`PageDown`},up:{key:`ArrowUp`,code:`ArrowUp`},down:{key:`ArrowDown`,code:`ArrowDown`},left:{key:`ArrowLeft`,code:`ArrowLeft`},right:{key:`ArrowRight`,code:`ArrowRight`},menu:{key:`ContextMenu`,code:`ContextMenu`},caps_lock:{key:`CapsLock`,code:`CapsLock`},num_lock:{key:`NumLock`,code:`NumLock`},scroll_lock:{key:`ScrollLock`,code:`ScrollLock`},print:{key:`PrintScreen`,code:`PrintScreen`},pause:{key:`Pause`,code:`Pause`}};for(let e=1;e<=12;e++)a[`f${e}`]={key:`F${e}`,code:`F${e}`};const o={enter:[28],tab:[15],esc:[1],escape:[1],space:[57],backspace:[14],delete:[224,83],del:[224,83],up:[224,72],down:[224,80],left:[224,75],right:[224,77],home:[224,71],end:[224,79],pageup:[224,73],pagedown:[224,81],insert:[224,82],f1:[59],f2:[60],f3:[61],f4:[62],f5:[63],f6:[64],f7:[65],f8:[66],f9:[67],f10:[68],f11:[87],f12:[88]},s={ctrl:[29],alt:[56],shift:[42],meta:[224,91]},c={return:`KEYCODE_ENTER`,enter:`KEYCODE_ENTER`,tab:`KEYCODE_TAB`,escape:`KEYCODE_ESCAPE`,esc:`KEYCODE_ESCAPE`,space:`KEYCODE_SPACE`,backspace:`KEYCODE_DEL`,delete:`KEYCODE_FORWARD_DEL`,del:`KEYCODE_FORWARD_DEL`,home:`KEYCODE_HOME`,end:`KEYCODE_MOVE_END`,insert:`KEYCODE_INSERT`,pageup:`KEYCODE_PAGE_UP`,pagedown:`KEYCODE_PAGE_DOWN`,up:`KEYCODE_DPAD_UP`,down:`KEYCODE_DPAD_DOWN`,left:`KEYCODE_DPAD_LEFT`,right:`KEYCODE_DPAD_RIGHT`,menu:`KEYCODE_MENU`};for(let e=1;e<=12;e++)c[`f${e}`]=`KEYCODE_F${e}`;const l={return:`return`,enter:`return`,tab:`tab`,escape:`esc`,esc:`esc`,space:`space`,backspace:`delete`,delete:`fwd-delete`,del:`fwd-delete`,home:`home`,end:`end`,pageup:`page-up`,pagedown:`page-down`,up:`arrow-up`,down:`arrow-down`,left:`arrow-left`,right:`arrow-right`};function u(e){return/^[A-Z][A-Z0-9_]+$/u.test(e)}function d(e){return e.split(/[-+]/u).filter(Boolean)}function f(e){let t=e.toLowerCase();if(a[t])return a[t];if(e.length===1){let t=e;return/[A-Za-z]/u.test(t)?{key:t,code:`Key${t.toUpperCase()}`}:/[0-9]/u.test(t)?{key:t,code:`Digit${t}`}:{".":{key:`.`,code:`Period`},",":{key:`,`,code:`Comma`},"/":{key:`/`,code:`Slash`},";":{key:`;`,code:`Semicolon`},"'":{key:`'`,code:`Quote`},"[":{key:`[`,code:`BracketLeft`},"]":{key:`]`,code:`BracketRight`},"\\":{key:`\\`,code:`Backslash`},"`":{key:"`",code:`Backquote`},"-":{key:`-`,code:`Minus`},"=":{key:`=`,code:`Equal`}}[t]??{key:t,code:``}}return null}function p(e){let t=e.trim();if(!t)return null;if(u(t))return{key:t,code:t,modifiers:{...r},keysym:t,native:t};let n=d(t);if(n.length===0)return null;let a={...r},o=null;for(let e=0;e<n.length;e++){let t=n[e],r=e===n.length-1,s=i[t.toLowerCase()];if(s&&!r){a[s]=!0;continue}s&&r&&n.length,o=t}if(!o)return null;if(u(o))return{key:o,code:o,modifiers:a,keysym:o,native:o};let s=f(o);return s?(o.length===1&&/[A-Z]/u.test(o)&&(a.shift=!0),{key:s.key,code:s.code,modifiers:a,keysym:o}):null}function m(e){let t=`1234567890`.indexOf(e);if(t!==-1)return[t===9?11:2+t];let n=[16,17,18,19,20,21,22,23,24,25,30,31,32,33,34,35,36,37,38,44,45,46,47,48,49,50],r=`qwertyuiopasdfghjklzxcvbnm`.indexOf(e.toLowerCase());return r===-1?null:[n[r]]}function h(e){return e.length===2?[e[0],e[1]|128]:[e[0]|128]}function g(e){let t=e.toLowerCase().split(/[-+]/u).filter(Boolean);if(t.length===0)return null;let n=[],r=[];for(let e=0;e<t.length;e++){let i=t[e];if(e!==t.length-1&&s[i]){n.push(s[i]);continue}let a=o[i]??s[i]??(i.length===1?m(i):null);if(!a)return null;r.push(a)}if(r.length===0)return null;let i=[];for(let e of n)i.push(...e);for(let e of r)i.push(...e,...h(e));for(let e of[...n].reverse())i.push(...h(e));return i}function _(e){return+!!e.alt+(e.ctrl?2:0)+(e.meta?4:0)+(e.shift?8:0)}function v(e,t){let n=_(e.modifiers),r=e.key.length===1&&!e.modifiers.ctrl&&!e.modifiers.alt&&!e.modifiers.meta?e.key:void 0,i=t=>({type:t,key:e.key,code:e.code,modifiers:n,...t===`keyDown`&&r?{text:r}:{}});return t===!0?[i(`keyDown`)]:t===!1?[i(`keyUp`)]:[i(`keyDown`),i(`keyUp`)]}function y(e,t=`press`){let n=t===`down`?`kd`:t===`up`?`ku`:`kp`;if(e.native)return`${n}:${e.native}`;let r=l[e.keysym.toLowerCase()]??(e.key.length===1?e.key:e.keysym.toLowerCase()),i=[];return e.modifiers.ctrl&&i.push(`ctrl`),e.modifiers.alt&&i.push(`alt`),e.modifiers.shift&&i.push(`shift`),e.modifiers.meta&&i.push(`cmd`),`${n}:${i.length>0?`${i.join(`,`)},${r}`:r}`}const b={Enter:`Return`,Escape:`Escape`," ":`space`,Backspace:`BackSpace`,Delete:`Delete`,Tab:`Tab`,ArrowUp:`Up`,ArrowDown:`Down`,ArrowLeft:`Left`,ArrowRight:`Right`,Home:`Home`,End:`End`,PageUp:`Page_Up`,PageDown:`Page_Down`,Insert:`Insert`};function x(e){let t=e.native??(e.key.length===1?e.key:b[e.key]??e.keysym),n=O(e.modifiers);return n?`${n}+${t}`:t}const S={Escape:1,Digit1:2,Digit2:3,Digit3:4,Digit4:5,Digit5:6,Digit6:7,Digit7:8,Digit8:9,Digit9:10,Digit0:11,Backspace:14,Tab:15,Enter:28,Control:29,Shift:42,Space:57,Alt:56,F1:59,F2:60,F3:61,F4:62,F5:63,F6:64,F7:65,F8:66,F9:67,F10:68,F11:87,F12:88,Home:102,ArrowUp:103,PageUp:104,ArrowLeft:105,ArrowRight:106,End:107,ArrowDown:108,PageDown:109,Insert:110,Delete:111,Meta:125},C=[16,17,18,19,20,21,22,23,24,25,30,31,32,33,34,35,36,37,38,44,45,46,47,48,49,50];function w(e){if(e.key.length===1){let t=`qwertyuiopasdfghjklzxcvbnm`.indexOf(e.key.toLowerCase());if(t!==-1)return C[t];if(e.key>=`1`&&e.key<=`9`)return 2+(e.key.charCodeAt(0)-49);if(e.key===`0`)return 11}return S[e.code]??S[e.key]??null}function T(e,t){return`${e}:${+!!t}`}function E(e,t=`press`){let n=w(e);if(n==null)return``;let r=[];if(e.modifiers.ctrl&&r.push(29),e.modifiers.shift&&r.push(42),e.modifiers.alt&&r.push(56),e.modifiers.meta&&r.push(125),t===`down`)return[...r.map(e=>T(e,!0)),T(n,!0)].join(` `);if(t===`up`)return[T(n,!1),...[...r].reverse().map(e=>T(e,!1))].join(` `);let i=[...r.map(e=>T(e,!0)),T(n,!0)],a=[T(n,!1),...[...r].reverse().map(e=>T(e,!1))];return[...i,...a].join(` `)}function D(e){if(e.type===`mousemove`||e.type===`wait`||e.type===`key`||e.type===`text`)return{kind:`noop`};if(e.type===`click`){let t=e.x??0,n=e.y??0;return e.holdMs&&e.holdMs>0?{kind:`long-press`,x:t,y:n,holdMs:e.holdMs}:{kind:`tap`,x:t,y:n}}if(e.type===`drag`)return{kind:`swipe`,x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2};if(e.type===`button`){let t=e.x??0,n=e.y??0;return e.down?{kind:`tap`,x:t,y:n}:{kind:`noop`}}let t=e.x??0,n=e.y??0;return{kind:`swipe`,x1:t,y1:n,x2:t+e.dx,y2:n+e.dy}}function O(e){let t=[];return e.ctrl&&t.push(`ctrl`),e.alt&&t.push(`alt`),e.shift&&t.push(`shift`),e.meta&&t.push(`super`),t.join(`+`)}function k(e){return n(e)===`image/png`?`png`:`jpg`}function A(e){return`screen: ${e}`}function j(e){return`target: ${e}`}async function M(t){let n=`${e(t.env).replace(/\/$/u,``)}/computer/${t.name}`,r=`${n}/${t.seq}.${k(t.frame.bytes)}`,i=t.fs.resolvePath(t.cwd,n),a=t.fs.resolvePath(t.cwd,r);return await t.fs.mkdir(i,{recursive:!0}),await t.fs.writeFile(a,t.frame.bytes),a}async function N(e){return t(e,`image/jpeg`,.55)}export{g as a,y as c,E as d,M as i,D as l,A as n,p as o,N as r,v as s,j as t,x as u};
@@ -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
- var e={ctrl:!1,alt:!1,shift:!1,meta:!1},t={ctrl:`ctrl`,control:`ctrl`,alt:`alt`,shift:`shift`,meta:`meta`,super:`meta`,win:`meta`,cmd:`meta`,command:`meta`},n={return:{key:`Enter`,code:`Enter`},enter:{key:`Enter`,code:`Enter`},kp_enter:{key:`Enter`,code:`NumpadEnter`},tab:{key:`Tab`,code:`Tab`},escape:{key:`Escape`,code:`Escape`},esc:{key:`Escape`,code:`Escape`},space:{key:` `,code:`Space`},backspace:{key:`Backspace`,code:`Backspace`},delete:{key:`Delete`,code:`Delete`},del:{key:`Delete`,code:`Delete`},insert:{key:`Insert`,code:`Insert`},home:{key:`Home`,code:`Home`},end:{key:`End`,code:`End`},pageup:{key:`PageUp`,code:`PageUp`},page_up:{key:`PageUp`,code:`PageUp`},prior:{key:`PageUp`,code:`PageUp`},pagedown:{key:`PageDown`,code:`PageDown`},page_down:{key:`PageDown`,code:`PageDown`},next:{key:`PageDown`,code:`PageDown`},up:{key:`ArrowUp`,code:`ArrowUp`},down:{key:`ArrowDown`,code:`ArrowDown`},left:{key:`ArrowLeft`,code:`ArrowLeft`},right:{key:`ArrowRight`,code:`ArrowRight`},menu:{key:`ContextMenu`,code:`ContextMenu`},caps_lock:{key:`CapsLock`,code:`CapsLock`},num_lock:{key:`NumLock`,code:`NumLock`},scroll_lock:{key:`ScrollLock`,code:`ScrollLock`},print:{key:`PrintScreen`,code:`PrintScreen`},pause:{key:`Pause`,code:`Pause`}};for(let e=1;e<=12;e++)n[`f${e}`]={key:`F${e}`,code:`F${e}`};var r={return:`KEYCODE_ENTER`,enter:`KEYCODE_ENTER`,tab:`KEYCODE_TAB`,escape:`KEYCODE_ESCAPE`,esc:`KEYCODE_ESCAPE`,space:`KEYCODE_SPACE`,backspace:`KEYCODE_DEL`,delete:`KEYCODE_FORWARD_DEL`,del:`KEYCODE_FORWARD_DEL`,home:`KEYCODE_HOME`,end:`KEYCODE_MOVE_END`,insert:`KEYCODE_INSERT`,pageup:`KEYCODE_PAGE_UP`,pagedown:`KEYCODE_PAGE_DOWN`,up:`KEYCODE_DPAD_UP`,down:`KEYCODE_DPAD_DOWN`,left:`KEYCODE_DPAD_LEFT`,right:`KEYCODE_DPAD_RIGHT`,menu:`KEYCODE_MENU`};for(let e=1;e<=12;e++)r[`f${e}`]=`KEYCODE_F${e}`;function i(e){return/^[A-Z][A-Z0-9_]+$/u.test(e)}function a(e){return e.split(/[-+]/u).filter(Boolean)}function o(e){let t=e.toLowerCase();if(n[t])return n[t];if(e.length===1){let t=e;return/[A-Za-z]/u.test(t)?{key:t,code:`Key${t.toUpperCase()}`}:/[0-9]/u.test(t)?{key:t,code:`Digit${t}`}:{".":{key:`.`,code:`Period`},",":{key:`,`,code:`Comma`},"/":{key:`/`,code:`Slash`},";":{key:`;`,code:`Semicolon`},"'":{key:`'`,code:`Quote`},"[":{key:`[`,code:`BracketLeft`},"]":{key:`]`,code:`BracketRight`},"\\":{key:`\\`,code:`Backslash`},"`":{key:"`",code:`Backquote`},"-":{key:`-`,code:`Minus`},"=":{key:`=`,code:`Equal`}}[t]??{key:t,code:``}}return null}function s(n){let r=n.trim();if(!r)return null;if(i(r))return{key:r,code:r,modifiers:{...e},keysym:r,native:r};let s=a(r);if(s.length===0)return null;let c={...e},l=null;for(let e=0;e<s.length;e++){let n=s[e],r=e===s.length-1,i=t[n.toLowerCase()];if(i&&!r){c[i]=!0;continue}i&&r&&s.length,l=n}if(!l)return null;if(i(l))return{key:l,code:l,modifiers:c,keysym:l,native:l};let u=o(l);return u?(l.length===1&&/[A-Z]/u.test(l)&&(c.shift=!0),{key:u.key,code:u.code,modifiers:c,keysym:l}):null}function c(e){return+!!e.alt+(e.ctrl?2:0)+(e.meta?4:0)+(e.shift?8:0)}function l(e,t){let n=c(e.modifiers),r=e.key.length===1&&!e.modifiers.ctrl&&!e.modifiers.alt&&!e.modifiers.meta?e.key:void 0,i=t=>({type:t,key:e.key,code:e.code,modifiers:n,...t===`keyDown`&&r?{text:r}:{}});return t===!0?[i(`keyDown`)]:t===!1?[i(`keyUp`)]:[i(`keyDown`),i(`keyUp`)]}var u={Enter:`Return`," ":`space`,Tab:`Tab`,Backspace:`Backspace`,Delete:`Delete`,ArrowUp:`Up`,ArrowDown:`Down`,ArrowLeft:`Left`,ArrowRight:`Right`,Home:`Home`,End:`End`,PageUp:`Page_Up`,PageDown:`Page_Down`,Insert:`Insert`,ContextMenu:`Menu`,F1:`F1`,F2:`F2`,F3:`F3`,F4:`F4`,F5:`F5`,F6:`F6`,F7:`F7`,F8:`F8`,F9:`F9`,F10:`F10`,F11:`F11`,F12:`F12`},d=new Set([`Control`,`Alt`,`Shift`,`Meta`,`Escape`]);function f(e){if(d.has(e.key))return null;let t=u[e.key]??(e.key.length===1?e.key:null);if(!t)return null;let n=[];return e.ctrlKey&&n.push(`ctrl`),e.altKey&&n.push(`alt`),e.metaKey&&n.push(`super`),e.shiftKey&&e.key.length!==1&&n.push(`shift`),[...n,t].join(`+`)}function p(e,t,n){let r=Number.isFinite(n)&&n>0?n:1;return r===1?{x:e,y:t}:{x:Math.round(e/r),y:Math.round(t/r)}}function m(e,t,n,r){if(n.width<=0||n.height<=0)return{x:0,y:0};let i=r.width>0?r.width:n.width,a=r.height>0?r.height:n.height;return{x:Math.max(0,Math.min(i-1,Math.round(e/n.width*i))),y:Math.max(0,Math.min(a-1,Math.round(t/n.height*a)))}}export{l as a,s as i,p as n,f as r,m as t};
@@ -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};