sliccy 6.218.2 → 6.219.0

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 (157) hide show
  1. package/dist/ui/.vite/manifest.json +182 -182
  2. package/dist/ui/assets/SKILL-DzP7jz_D.js +1 -0
  3. package/dist/ui/assets/{account-store-BAcqOQ-B.js → account-store-CF86n4Xm.js} +1 -1
  4. package/dist/ui/assets/{account-store-ravOkuEh.js → account-store-DSzJHb97.js} +1 -1
  5. package/dist/ui/assets/{adobe-BiZfsUty.js → adobe-DMwDe58S.js} +1 -1
  6. package/dist/ui/assets/{adobe-pJN-ccGb.js → adobe-DyGE1dht.js} +1 -1
  7. package/dist/ui/assets/{agent-panels-RX0aZNxw.js → agent-panels-DdsaTrGL.js} +1 -1
  8. package/dist/ui/assets/{almost-bash-shell-headless-CrjX8fl9.js → almost-bash-shell-headless-Ba_nZH90.js} +36 -36
  9. package/dist/ui/assets/{apply-layout-el2h8g2C.js → apply-layout-CxF6IRkv.js} +1 -1
  10. package/dist/ui/assets/{apps-B_AtpN8Z.js → apps-EY9XMcW7.js} +1 -1
  11. package/dist/ui/assets/{azure-openai-DHcO2cmT.js → azure-openai-CyJIUw4W.js} +1 -1
  12. package/dist/ui/assets/{azure-openai-KNZuu6zT.js → azure-openai-D_tWKKdT.js} +1 -1
  13. package/dist/ui/assets/{backend-hostfs-BDDFu6nL.js → backend-hostfs-DlGG8uQf.js} +1 -1
  14. package/dist/ui/assets/{cdp-DCRqc_78.js → cdp-DG0wg0n8.js} +1 -1
  15. package/dist/ui/assets/{cerebras-BlJAvwBj.js → cerebras-BK_2fXZd.js} +1 -1
  16. package/dist/ui/assets/{cerebras-cELX_-Tv.js → cerebras-oC3XQwQQ.js} +1 -1
  17. package/dist/ui/assets/{composer-speech-DH1izq66.js → composer-speech-DJtW2APJ.js} +1 -1
  18. package/dist/ui/assets/{connect-surface-B3q5wFk-.js → connect-surface-B2xxV1Op.js} +1 -1
  19. package/dist/ui/assets/{directed-approval-D1HryfoH.js → directed-approval-ytTw8CoX.js} +1 -1
  20. package/dist/ui/assets/{emscripten-vfs-hook-B4FfTaY4.js → emscripten-vfs-hook-qscP4NTF.js} +1 -1
  21. package/dist/ui/assets/{ensure-speech-assets-D4_slw76.js → ensure-speech-assets-QanUn_Ur.js} +1 -1
  22. package/dist/ui/assets/{frozen-archive-writer-e3mSQ8e5.js → frozen-archive-writer-m3ghISDc.js} +1 -1
  23. package/dist/ui/assets/{fs-gotPoSZp.js → fs-CRWMgoZL.js} +2 -2
  24. package/dist/ui/assets/{fs-BVa_vuoo.js → fs-DgHjBq-k.js} +1 -1
  25. package/dist/ui/assets/{gelatiere-store-DAXCFmPP.js → gelatiere-store-CEb3Lzgp.js} +1 -1
  26. package/dist/ui/assets/{gelatiere-unit-qTkgNxXs.js → gelatiere-unit-Cwopa-yn.js} +1 -1
  27. package/dist/ui/assets/{github-BZHffErO.js → github-B-XZh234.js} +1 -1
  28. package/dist/ui/assets/{github-B2VWEFqp.js → github-DeST0Trl.js} +2 -2
  29. package/dist/ui/assets/{github-auth-BNgH9jG6.js → github-auth-K5b9wKPj.js} +1 -1
  30. package/dist/ui/assets/{github-copilot-BfIflOh7.js → github-copilot-Bf0M711d.js} +1 -1
  31. package/dist/ui/assets/{github-copilot-B5jdTW-u.js → github-copilot-D1wT5ZtK.js} +1 -1
  32. package/dist/ui/assets/{github-install-Cxleuyru.js → github-install-Bi8qkPFn.js} +1 -1
  33. package/dist/ui/assets/{github-zip-DgJl9Jw1.js → github-zip-CGiUv4es.js} +1 -1
  34. package/dist/ui/assets/{hear-BiUNm14H.js → hear-CGrRF2hQ.js} +1 -1
  35. package/dist/ui/assets/{help-Bo2yyWMr.js → help-WIM_aU2v.js} +1 -1
  36. package/dist/ui/assets/{installer-DP22Qfj-.js → installer-CI7oilQy.js} +1 -1
  37. package/dist/ui/assets/{ipk-mamba-DvgLiW3J.js → ipk-mamba-Dmill0RO.js} +1 -1
  38. package/dist/ui/assets/{js-realm-worker-jCLcGISU.js → js-realm-worker-Dh3L40M7.js} +2 -2
  39. package/dist/ui/assets/{jsh-executor-eAgbPICA.js → jsh-executor-2XUKi33S.js} +2 -2
  40. package/dist/ui/assets/{kernel-worker-BVn6NgIr.js → kernel-worker-DJUk0D1v.js} +10 -10
  41. package/dist/ui/assets/{lick-ws-bridge-5hziXRsb.js → lick-ws-bridge-CCFk3ZJQ.js} +1 -1
  42. package/dist/ui/assets/{lick-ws-bridge-CNWoPxh8.js → lick-ws-bridge-Fv9Fnnec.js} +1 -1
  43. package/dist/ui/assets/{live-session-curation-6r5THRVc.js → live-session-curation-DBWb31sJ.js} +1 -1
  44. package/dist/ui/assets/{live-session-snapshot-XuA7hS3R.js → live-session-snapshot-CIaEfMtv.js} +1 -1
  45. package/dist/ui/assets/{local-llm-JneFYPSJ.js → local-llm-Be96XM6h.js} +1 -1
  46. package/dist/ui/assets/{local-llm-BIToWY5w.js → local-llm-Dj4dVdON.js} +1 -1
  47. package/dist/ui/assets/{main-B0thDo_I.js → main-DABPbj6p.js} +3 -3
  48. package/dist/ui/assets/{main-cherry-i42Stq_t.js → main-cherry-ru9LFJzl.js} +1 -1
  49. package/dist/ui/assets/{memory-curation-seam-jPN-pjNv.js → memory-curation-seam-37yLKkxm.js} +1 -1
  50. package/dist/ui/assets/{memory-health-D9MwFVu8.js → memory-health-is4bh25j.js} +1 -1
  51. package/dist/ui/assets/{memory-write-execute-DxJVccvs.js → memory-write-execute-DbHJYiHE.js} +1 -1
  52. package/dist/ui/assets/{merge-folded-cost-into-frozen-BOnFPZYR.js → merge-folded-cost-into-frozen-BQWJ4Ytn.js} +1 -1
  53. package/dist/ui/assets/{mount-D9DpIM-H.js → mount-C1AI0I42.js} +1 -1
  54. package/dist/ui/assets/{mount-7auALEdt.js → mount-zLB6AskE.js} +3 -3
  55. package/dist/ui/assets/{new-session-dV2C39fB.js → new-session-Bt7s-rlj.js} +2 -2
  56. package/dist/ui/assets/{oauth-bootstrap-MsvroWIf.js → oauth-bootstrap-hj-DhFEx.js} +2 -2
  57. package/dist/ui/assets/{onboarding-orchestrator-BsyNlEp6.js → onboarding-orchestrator-ukFhyFfd.js} +1 -1
  58. package/dist/ui/assets/{openai-codex-D6aLn4wD.js → openai-codex-CJVzULuC.js} +1 -1
  59. package/dist/ui/assets/{openai-codex-QMojLG84.js → openai-codex-DO7SM84Q.js} +1 -1
  60. package/dist/ui/assets/{openrouter-DeSZmyWQ.js → openrouter-CJMcugR-.js} +1 -1
  61. package/dist/ui/assets/{openrouter-LDOkDdfN.js → openrouter-DWwPUImU.js} +1 -1
  62. package/dist/ui/assets/{openrouter-free-BDD5HUZF.js → openrouter-free-BGTsYlIv.js} +1 -1
  63. package/dist/ui/assets/{openrouter-free-AToAyfMH.js → openrouter-free-BlPyFSJ7.js} +1 -1
  64. package/dist/ui/assets/{openrouter-oauth-DqxRskZC.js → openrouter-oauth-DenKJBT1.js} +1 -1
  65. package/dist/ui/assets/{openrouter-oauth-CztvqBA0.js → openrouter-oauth-x1qXC1Zz.js} +1 -1
  66. package/dist/ui/assets/{opfs-mount-DP4EQVf_.js → opfs-mount-D1xhcYkp.js} +1 -1
  67. package/dist/ui/assets/{panel-rpc-handlers-W71VzlDM.js → panel-rpc-handlers-a5h9I_0B.js} +2 -2
  68. package/dist/ui/assets/{panelize-shell-9j9B_80g.js → panelize-shell-CLTEjvFa.js} +1 -1
  69. package/dist/ui/assets/{pi-edit-execution-BShsB4bj.js → pi-edit-execution-BIlrFfQ_.js} +1 -1
  70. package/dist/ui/assets/{process-worker-Bm14-oXj.js → process-worker-pSZIxBXp.js} +2 -2
  71. package/dist/ui/assets/{provider-Ca9Zz8yb.js → provider-Bkv_pobT.js} +2 -2
  72. package/dist/ui/assets/{provider-CE1zpBVX.js → provider-CWTT-f3q.js} +1 -1
  73. package/dist/ui/assets/{provider-settings-uiENuCqB.js → provider-settings-BK8vRjWh.js} +1 -1
  74. package/dist/ui/assets/provider-store-access-CcPxQRZe.js +1 -0
  75. package/dist/ui/assets/provider-store-access-DCGvyN0n.js +1 -0
  76. package/dist/ui/assets/{providers-bam7z0UT.js → providers-D3YEbKFD.js} +1 -1
  77. package/dist/ui/assets/{providers-DCmI83QO.js → providers-V4TtDKqY.js} +2 -2
  78. package/dist/ui/assets/{quick-llm-CzXagx_t.js → quick-llm-BowoPKgc.js} +1 -1
  79. package/dist/ui/assets/{realm-inprocess-sTQMTEkB.js → realm-inprocess-DyusTCuQ.js} +2 -2
  80. package/dist/ui/assets/{realm-unhandled-rejections-BXaHCNJa.js → realm-unhandled-rejections-DvQpmZx0.js} +1 -1
  81. package/dist/ui/assets/{realm-unhandled-rejections-DDmLwwJS.js → realm-unhandled-rejections-nPfFMBwO.js} +1 -1
  82. package/dist/ui/assets/{recovery-screen-BKbUhrGB.js → recovery-screen-D8pLN39X.js} +1 -1
  83. package/dist/ui/assets/{remote-terminal-view-BLwdw7dM.js → remote-terminal-view-B8DqD54B.js} +2 -2
  84. package/dist/ui/assets/{restore-o9YtsuVz.js → restore-DQU3bYpR.js} +1 -1
  85. package/dist/ui/assets/{run-DSre5ukc.js → run-79OH7uW2.js} +2 -2
  86. package/dist/ui/assets/run-BAVeabE6.js +17 -0
  87. package/dist/ui/assets/{run-Bh8htYg7.js → run-BvAhKexs.js} +1 -1
  88. package/dist/ui/assets/{run-BFNiHcEW.js → run-DBMyfb_-.js} +1 -1
  89. package/dist/ui/assets/{run-BUej2chT.js → run-Dj7Ibs6w.js} +1 -1
  90. package/dist/ui/assets/{run-CilACXgz.js → run-Zd9TUWSe.js} +2 -2
  91. package/dist/ui/assets/{run-medvCK_6.js → run-_x0giYIU.js} +1 -1
  92. package/dist/ui/assets/{script-catalog-1QnOA1GQ.js → script-catalog-DE0NMRm5.js} +1 -1
  93. package/dist/ui/assets/{session-command-memory-CK-bjU-i.js → session-command-memory-CcSoHpnE.js} +2 -2
  94. package/dist/ui/assets/{session-jsonl-BHcQKeee.js → session-jsonl-BDIBlvaI.js} +1 -1
  95. package/dist/ui/assets/{session-jsonl-B6O31EYv.js → session-jsonl-BK9msmSe.js} +1 -1
  96. package/dist/ui/assets/{session-search-index-Ddwbbkut.js → session-search-index-CUc5X-J1.js} +1 -1
  97. package/dist/ui/assets/{setup-feature-flags-remote-DHIyA7Ql.js → setup-feature-flags-remote-k8bDZhO0.js} +1 -1
  98. package/dist/ui/assets/{setup-model-catalog-DtyllODF.js → setup-model-catalog-DMui3v-r.js} +1 -1
  99. package/dist/ui/assets/{signed-fetch-DFBopENg.js → signed-fetch--GGGvKkt.js} +1 -1
  100. package/dist/ui/assets/{silent-renew-backoff-BL8wMKQc.js → silent-renew-backoff-CzD-w7hR.js} +1 -1
  101. package/dist/ui/assets/slicc-version-CLMnnzOe.js +1 -0
  102. package/dist/ui/assets/{snapshot-CsXWOCBJ.js → snapshot-Qoc-7T8I.js} +1 -1
  103. package/dist/ui/assets/{snapshot-features-BPgaCNDl.js → snapshot-features-0-DAQYBm.js} +1 -1
  104. package/dist/ui/assets/{soundscape-C7FEDgkP.js → soundscape-CfSO5gLL.js} +1 -1
  105. package/dist/ui/assets/{speak-tkO5HiC2.js → speak-C-8mv26P.js} +1 -1
  106. package/dist/ui/assets/{sprinkle-manager-BlbSbFUW.js → sprinkle-manager-B4w6k9mr.js} +1 -1
  107. package/dist/ui/assets/{sprinkle-renderer-DuZBBlID.js → sprinkle-renderer-tcI6YM7T.js} +1 -1
  108. package/dist/ui/assets/{state-l6lHl-l7.js → state-BkbrCL72.js} +1 -1
  109. package/dist/ui/assets/{stdio-tty-DNcYk275.js → stdio-tty-BtHlICFx.js} +1 -1
  110. package/dist/ui/assets/{store-aGHgfLPM.js → store-DpQ-nffS.js} +1 -1
  111. package/dist/ui/assets/{store-CkDykWVq.js → store-qiSIZIiQ.js} +1 -1
  112. package/dist/ui/assets/{sudo-NxhV_dIm.js → sudo-DJ3HINlF.js} +1 -1
  113. package/dist/ui/assets/{supervisor-BRrTWhmg.js → supervisor-BkSmq7WL.js} +1 -1
  114. package/dist/ui/assets/{sync-dialog-CJG4icPz.js → sync-dialog-DLvXyrAL.js} +1 -1
  115. package/dist/ui/assets/{transformers-env-DwuHApPS.js → transformers-env-DDEdlyar.js} +1 -1
  116. package/dist/ui/assets/{tray-leader-BhwzHsW4.js → tray-leader-BgIPorkL.js} +1 -1
  117. package/dist/ui/assets/{tray-leave-runtime-DzJgtJD5.js → tray-leave-runtime-CcH-VGof.js} +1 -1
  118. package/dist/ui/assets/{tray-sidecar-B0VqIheG.js → tray-sidecar-ASBLIpBU.js} +1 -1
  119. package/dist/ui/assets/{upgrade-detection-0h2MYFF0.js → upgrade-detection-Bz73C3Pj.js} +1 -1
  120. package/dist/ui/assets/{upskill-lick-skip-BCj_PLi0.js → upskill-lick-skip-CsD_T8iM.js} +1 -1
  121. package/dist/ui/assets/{voice-reply-C5gcSbT4.js → voice-reply-DP_zx9Qw.js} +1 -1
  122. package/dist/ui/assets/wasi-runtime-DjfUqg5u.js +1 -0
  123. package/dist/ui/assets/wasm-programs-C7jo07yv.js +1 -0
  124. package/dist/ui/assets/{wc-attach-DnwMWit4.js → wc-attach-BUgfu56n.js} +2 -2
  125. package/dist/ui/assets/{wc-browser-BQC_7cG7.js → wc-browser-DLKot5Mw.js} +1 -1
  126. package/dist/ui/assets/{wc-computers-CecKLajY.js → wc-computers-CETwVR2J.js} +1 -1
  127. package/dist/ui/assets/{wc-detached-DeqWd0nW.js → wc-detached-BHX-VqO-.js} +1 -1
  128. package/dist/ui/assets/{wc-extension-B3Jqz0iE.js → wc-extension-sSpYrFlr.js} +2 -2
  129. package/dist/ui/assets/{wc-follower-CONbTzRc.js → wc-follower-CR7pZwij.js} +3 -3
  130. package/dist/ui/assets/{wc-follower-oauth-B_EiiAvr.js → wc-follower-oauth-Z0WgZc42.js} +1 -1
  131. package/dist/ui/assets/{wc-gelatiere-Dsw0YMCT.js → wc-gelatiere-CIWOoFzM.js} +1 -1
  132. package/dist/ui/assets/{wc-live-BgzKz_k0.js → wc-live-BFILc4yt.js} +5 -5
  133. package/dist/ui/assets/{wc-nav-DyWKt3_Y.js → wc-nav-D6eACujA.js} +2 -2
  134. package/dist/ui/assets/{wc-onboarding-CKWhBBSy.js → wc-onboarding-xV361lPz.js} +2 -2
  135. package/dist/ui/assets/{wc-permissions-pLNhbxI6.js → wc-permissions-BBwK3iHt.js} +2 -2
  136. package/dist/ui/assets/{wc-placeholder-CmAWVzs3.js → wc-placeholder-vEbIcNkq.js} +3 -3
  137. package/dist/ui/assets/{wc-secret-request-D_GiKx5L.js → wc-secret-request-CsI45e84.js} +1 -1
  138. package/dist/ui/assets/{wc-settings-iRSoSmMz.js → wc-settings-BhQeJ8zY.js} +3 -3
  139. package/dist/ui/assets/{wc-shell-B0PhY3hq.js → wc-shell-DqY9Vm-j.js} +3 -3
  140. package/dist/ui/assets/{wc-shortcut-config-DvRLapnh.js → wc-shortcut-config-DYMcYm65.js} +1 -1
  141. package/dist/ui/assets/{wc-sprinkles-BEPQPFKR.js → wc-sprinkles-CE9LR8L1.js} +2 -2
  142. package/dist/ui/assets/{wc-transcript-export-BCmTsnHP.js → wc-transcript-export-QLzdbMqj.js} +2 -2
  143. package/dist/ui/assets/{wc-tray-BRdwlPkC.js → wc-tray-BcJYgXgF.js} +4 -4
  144. package/dist/ui/assets/welcome-detection-7PuhTT6P.js +1 -0
  145. package/dist/ui/assets/{whisper-session-BPJbM4fv.js → whisper-session-CZcjP45a.js} +2 -2
  146. package/dist/ui/assets/{xai-grok-fAOHWGfl.js → xai-grok-BDfueMbJ.js} +1 -1
  147. package/dist/ui/assets/{xai-grok-mxLxouZL.js → xai-grok-BnelFZx-.js} +1 -1
  148. package/dist/ui/index.html +3 -3
  149. package/dist/ui/packages/webapp/index.html +3 -3
  150. package/package.json +1 -1
  151. package/dist/ui/assets/SKILL-Byz4bBkH.js +0 -1
  152. package/dist/ui/assets/provider-store-access-D0H9f5vw.js +0 -1
  153. package/dist/ui/assets/provider-store-access-qw-70nQO.js +0 -1
  154. package/dist/ui/assets/run-Bk9OlZwF.js +0 -17
  155. package/dist/ui/assets/slicc-version-eQ6JEYYJ.js +0 -1
  156. package/dist/ui/assets/wasm-programs-CsoF9Lrt.js +0 -1
  157. package/dist/ui/assets/welcome-detection-C_huX4jr.js +0 -1
@@ -0,0 +1 @@
1
+ import{n as e}from"./wc-onboarding-xV361lPz.js";export{e as hasOnboardingFinalLickInHistory};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-tkO5HiC2.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-DwuHApPS.js","assets/wc-shell-B0PhY3hq.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-ravOkuEh.js","assets/core-CbbeQz7g.js","assets/compat-Dy2zIWAW.js","assets/models-YdybRRvT.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/feature-flags-DvsApnS-.js","assets/proxied-fetch-Cplb-Tee.js","assets/proxy-error-BSFYY7jj.js","assets/api-endpoint-DuEQRZ4g.js","assets/secret-topology-Dm_PZRZx.js","assets/float-topology-C9GjBEv-.js","assets/secrets-bridge-client-CWv2_nw7.js","assets/port-bridge-client-D_erEovW.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-DCmI83QO.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-C64_Hwco.js","assets/bedrock-camp-extra-models-Dg0hblqu.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-B0sKnLBU.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-dEBJiC8z.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-DwuHApPS.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-tkO5HiC2.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])).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([41,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-C-8mv26P.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-DDEdlyar.js","assets/wc-shell-DqY9Vm-j.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-DSzJHb97.js","assets/core-CbbeQz7g.js","assets/compat-Dy2zIWAW.js","assets/models-YdybRRvT.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/feature-flags-DvsApnS-.js","assets/proxied-fetch-Cplb-Tee.js","assets/proxy-error-BSFYY7jj.js","assets/api-endpoint-DuEQRZ4g.js","assets/secret-topology-Dm_PZRZx.js","assets/float-topology-C9GjBEv-.js","assets/secrets-bridge-client-CWv2_nw7.js","assets/port-bridge-client-D_erEovW.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-V4TtDKqY.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-C64_Hwco.js","assets/bedrock-camp-extra-models-Dg0hblqu.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-B0sKnLBU.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-dEBJiC8z.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-DDEdlyar.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-C-8mv26P.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])).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([41,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{_ as e,r as t}from"./account-store-BAcqOQ-B.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{a as r}from"./compat-uEPf6-XW.js";import{s as i}from"./core-BOHj4mqw.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-uiENuCqB.js";import{n as l,r as u}from"./bridge-token-required-BYgoMwr7.js";import{n as d,r as f,t as p}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as m,XaiOAuthError as h}from"./xai-grok-errors-ByEMMSoz.js";function g(e){return typeof e==`object`&&!!e}function _(e){if(!g(e))return null;let t=g(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=g(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 v(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 _(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}const y=`xai-grok`,b=`https://auth.x.ai`,x=`${b}/oauth2/authorize`,S=`${b}/oauth2/token`,C=`b1a00492-073a-47ea-816f-4c329264a828`,w=`http://127.0.0.1:56121/callback`,T=`https://api.x.ai/v1`,E=`grok-4.7`,D=`${y}-openai`;function O(e){if(e.some(e=>e.id===E))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:E,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 k(){return O(i(`xai`))}function A(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 j(e){let t=k(),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 "${E}"`),n=t.find(e=>e.id===E),!n))throw Error(`xAI default model "${E}" 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:T}}async function M(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:w,client_id:C,code_verifier:t}),r=await fetch(S,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new h(`xAI token exchange failed: ${r.status} ${await r.text()}`,m.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new h(`xAI token exchange did not return access_token.`,m.TOKEN_EXCHANGE_INVALID);return i}async function N(e){if(l())return null;try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:C}),n=await fetch(S,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});if(!n.ok){let e=await n.text();return u(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 P(){return t().find(e=>e.providerId===y)}async function F(){let t=P();if(!t?.accessToken)throw new h("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",m.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await N(t.refreshToken);if(n?.access_token)return await e({providerId:y,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 I(){if(!P()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return v(await F(),fetch)}function L(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:D,provider:y,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 R(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function z(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function B(e,t,n,r){try{let i=await F(),a=r.sessionId,c=j(t),l={...r,apiKey:i,headers:R(r.headers,a)},u=c.api===`openai-responses`?o(c,n,l):s(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){z(n),e.push(L(t,n)),e.end()}}async function V(e,t,n,r){try{let i=await F(),o=r?.sessionId,s=j(t),l={...r,apiKey:i,headers:R(r?.headers,o)},u=s.api===`openai-responses`?a(s,n,l):c(s,n,l);for await(let t of u)e.push(t);e.end()}catch(n){z(n),e.push(L(t,n)),e.end()}}const H=(e,t,r={})=>{let i=n();return B(i,e,t,r).catch(z),i},U=(e,t,r)=>{let i=n();return V(i,e,t,r).catch(z),i},W={id:y,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:E,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>k().map(A),getBudgetUsage:I,onOAuthLoginIntercepted:async(t,n,r)=>{let i=d(),a=await p(i),o=f(),s=f(),c=new URL(x);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,C),c.searchParams.set(`redirect_uri`,w),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 h(`xAI OAuth login was cancelled or timed out`,m.CALLBACK_TIMEOUT);let u=new URL(l),g=u.searchParams.get(`code`),_=u.searchParams.get(`state`);if(!g)throw new h(`xAI OAuth redirect did not include a code`,m.CODE_MISSING);if(_!==o)throw new h(`xAI OAuth state mismatch — possible CSRF, aborting`,m.STATE_MISMATCH);let v=await M(g,i);await e({providerId:y,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:T,scopes:v.scope}),n()},onOAuthLogout:async()=>{await e({providerId:y,accessToken:``})},onSilentRenew:async()=>{let t=P();if(!t?.refreshToken)return null;let n=await N(t.refreshToken);return n?.access_token?(await e({providerId:y,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 G(){r({api:D,stream:H,streamSimple:U})}export{m as XaiErrorCode,h as XaiOAuthError,W as config,G as register};
1
+ import{_ as e,r as t}from"./account-store-CF86n4Xm.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{a as r}from"./compat-uEPf6-XW.js";import{s as i}from"./core-BOHj4mqw.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-BK8vRjWh.js";import{n as l,r as u}from"./bridge-token-required-BYgoMwr7.js";import{n as d,r as f,t as p}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as m,XaiOAuthError as h}from"./xai-grok-errors-ByEMMSoz.js";function g(e){return typeof e==`object`&&!!e}function _(e){if(!g(e))return null;let t=g(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=g(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 v(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 _(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}const y=`xai-grok`,b=`https://auth.x.ai`,x=`${b}/oauth2/authorize`,S=`${b}/oauth2/token`,C=`b1a00492-073a-47ea-816f-4c329264a828`,w=`http://127.0.0.1:56121/callback`,T=`https://api.x.ai/v1`,E=`grok-4.7`,D=`${y}-openai`;function O(e){if(e.some(e=>e.id===E))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:E,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 k(){return O(i(`xai`))}function A(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 j(e){let t=k(),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 "${E}"`),n=t.find(e=>e.id===E),!n))throw Error(`xAI default model "${E}" 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:T}}async function M(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:w,client_id:C,code_verifier:t}),r=await fetch(S,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new h(`xAI token exchange failed: ${r.status} ${await r.text()}`,m.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new h(`xAI token exchange did not return access_token.`,m.TOKEN_EXCHANGE_INVALID);return i}async function N(e){if(l())return null;try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:C}),n=await fetch(S,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});if(!n.ok){let e=await n.text();return u(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 P(){return t().find(e=>e.providerId===y)}async function F(){let t=P();if(!t?.accessToken)throw new h("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",m.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await N(t.refreshToken);if(n?.access_token)return await e({providerId:y,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 I(){if(!P()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return v(await F(),fetch)}function L(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:D,provider:y,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 R(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function z(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function B(e,t,n,r){try{let i=await F(),a=r.sessionId,c=j(t),l={...r,apiKey:i,headers:R(r.headers,a)},u=c.api===`openai-responses`?o(c,n,l):s(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){z(n),e.push(L(t,n)),e.end()}}async function V(e,t,n,r){try{let i=await F(),o=r?.sessionId,s=j(t),l={...r,apiKey:i,headers:R(r?.headers,o)},u=s.api===`openai-responses`?a(s,n,l):c(s,n,l);for await(let t of u)e.push(t);e.end()}catch(n){z(n),e.push(L(t,n)),e.end()}}const H=(e,t,r={})=>{let i=n();return B(i,e,t,r).catch(z),i},U=(e,t,r)=>{let i=n();return V(i,e,t,r).catch(z),i},W={id:y,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:E,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>k().map(A),getBudgetUsage:I,onOAuthLoginIntercepted:async(t,n,r)=>{let i=d(),a=await p(i),o=f(),s=f(),c=new URL(x);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,C),c.searchParams.set(`redirect_uri`,w),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 h(`xAI OAuth login was cancelled or timed out`,m.CALLBACK_TIMEOUT);let u=new URL(l),g=u.searchParams.get(`code`),_=u.searchParams.get(`state`);if(!g)throw new h(`xAI OAuth redirect did not include a code`,m.CODE_MISSING);if(_!==o)throw new h(`xAI OAuth state mismatch — possible CSRF, aborting`,m.STATE_MISMATCH);let v=await M(g,i);await e({providerId:y,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:T,scopes:v.scope}),n()},onOAuthLogout:async()=>{await e({providerId:y,accessToken:``})},onSilentRenew:async()=>{let t=P();if(!t?.refreshToken)return null;let n=await N(t.refreshToken);return n?.access_token?(await e({providerId:y,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 G(){r({api:D,stream:H,streamSimple:U})}export{m as XaiErrorCode,h as XaiOAuthError,W as config,G as register};
@@ -1 +1 @@
1
- import{a as e}from"./core-CbbeQz7g.js";import{a as t}from"./diagnostics-DN_idNHx.js";import{a as n}from"./compat-Dy2zIWAW.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-DoI0tM7F.js";import{K as s,f as c}from"./account-store-ravOkuEh.js";import"./main-B0thDo_I.js";import{n as l,r as u}from"./bridge-token-required-DMk2va9k.js";import{n as d,r as f,t as p}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as m,XaiOAuthError as h}from"./xai-grok-errors-bnlIBeu-.js";var g=`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,_=8e3,v=65536,y=1e3;function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return null;let t=b(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(y,Math.max(0,n)),i=b(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 S(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??_);try{let n=await t(g,{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>v)return null;try{return x(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}var C=`xai-grok`,w=`https://auth.x.ai`,T=`${w}/oauth2/authorize`,E=`${w}/oauth2/token`,D=`b1a00492-073a-47ea-816f-4c329264a828`,O=`openid profile email offline_access grok-cli:access api:access`,k=`http://127.0.0.1:56121/callback`,A=`http://127.0.0.1:56121/*`,j=`https://api.x.ai/v1`,M=`grok-4.7`,N=`${C}-openai`;function P(e){if(e.some(e=>e.id===M))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:M,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 F(){return P(e(`xai`))}function I(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 L(e){let t=F(),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 "${M}"`),n=t.find(e=>e.id===M),!n))throw Error(`xAI default model "${M}" 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:j}}async function R(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:k,client_id:D,code_verifier:t}),r=await fetch(E,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new h(`xAI token exchange failed: ${r.status} ${await r.text()}`,m.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new h(`xAI token exchange did not return access_token.`,m.TOKEN_EXCHANGE_INVALID);return i}async function z(e){if(l())return null;try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:D}),n=await fetch(E,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});if(!n.ok){let e=await n.text();return u(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 B(){return c().find(e=>e.providerId===C)}async function V(){let e=B();if(!e?.accessToken)throw new h("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",m.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await z(e.refreshToken);if(t?.access_token)return await s({providerId:C,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 H(){if(!B()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return S(await V(),fetch)}function U(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:N,provider:C,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 W(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function G(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function K(e,t,n,r){try{let o=await V(),s=r.sessionId,c=L(t),l={...r,apiKey:o,headers:W(r.headers,s)},u=c.api===`openai-responses`?i(c,n,l):a(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){G(n),e.push(U(t,n)),e.end()}}async function q(e,t,n,i){try{let a=await V(),s=i?.sessionId,c=L(t),l={...i,apiKey:a,headers:W(i?.headers,s)},u=c.api===`openai-responses`?r(c,n,l):o(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){G(n),e.push(U(t,n)),e.end()}}var J=(e,n,r={})=>{let i=t();return K(i,e,n,r).catch(G),i},Y=(e,n,r)=>{let i=t();return q(i,e,n,r).catch(G),i},X={id:C,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:M,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>F().map(I),getBudgetUsage:H,onOAuthLoginIntercepted:async(e,t,n)=>{let r=d(),i=await p(r),a=f(),o=f(),c=new URL(T);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,D),c.searchParams.set(`redirect_uri`,k),c.searchParams.set(`scope`,n?.scopes??O),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:A,onCapture:`close`});if(!l)throw new h(`xAI OAuth login was cancelled or timed out`,m.CALLBACK_TIMEOUT);let u=new URL(l),g=u.searchParams.get(`code`),_=u.searchParams.get(`state`);if(!g)throw new h(`xAI OAuth redirect did not include a code`,m.CODE_MISSING);if(_!==a)throw new h(`xAI OAuth state mismatch — possible CSRF, aborting`,m.STATE_MISMATCH);let v=await R(g,r);await s({providerId:C,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:j,scopes:v.scope}),t()},onOAuthLogout:async()=>{await s({providerId:C,accessToken:``})},onSilentRenew:async()=>{let e=B();if(!e?.refreshToken)return null;let t=await z(e.refreshToken);return t?.access_token?(await s({providerId:C,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 Z(){n({api:N,stream:J,streamSimple:Y})}export{m as XaiErrorCode,h as XaiOAuthError,X as config,Z as register};
1
+ import{a as e}from"./core-CbbeQz7g.js";import{a as t}from"./diagnostics-DN_idNHx.js";import{a as n}from"./compat-Dy2zIWAW.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-DoI0tM7F.js";import{K as s,f as c}from"./account-store-DSzJHb97.js";import"./main-DABPbj6p.js";import{n as l,r as u}from"./bridge-token-required-DMk2va9k.js";import{n as d,r as f,t as p}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as m,XaiOAuthError as h}from"./xai-grok-errors-bnlIBeu-.js";var g=`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,_=8e3,v=65536,y=1e3;function b(e){return typeof e==`object`&&!!e}function x(e){if(!b(e))return null;let t=b(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(y,Math.max(0,n)),i=b(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 S(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??_);try{let n=await t(g,{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>v)return null;try{return x(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}var C=`xai-grok`,w=`https://auth.x.ai`,T=`${w}/oauth2/authorize`,E=`${w}/oauth2/token`,D=`b1a00492-073a-47ea-816f-4c329264a828`,O=`openid profile email offline_access grok-cli:access api:access`,k=`http://127.0.0.1:56121/callback`,A=`http://127.0.0.1:56121/*`,j=`https://api.x.ai/v1`,M=`grok-4.7`,N=`${C}-openai`;function P(e){if(e.some(e=>e.id===M))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:M,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 F(){return P(e(`xai`))}function I(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 L(e){let t=F(),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 "${M}"`),n=t.find(e=>e.id===M),!n))throw Error(`xAI default model "${M}" 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:j}}async function R(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:k,client_id:D,code_verifier:t}),r=await fetch(E,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new h(`xAI token exchange failed: ${r.status} ${await r.text()}`,m.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new h(`xAI token exchange did not return access_token.`,m.TOKEN_EXCHANGE_INVALID);return i}async function z(e){if(l())return null;try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:D}),n=await fetch(E,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});if(!n.ok){let e=await n.text();return u(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 B(){return c().find(e=>e.providerId===C)}async function V(){let e=B();if(!e?.accessToken)throw new h("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",m.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await z(e.refreshToken);if(t?.access_token)return await s({providerId:C,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 H(){if(!B()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return S(await V(),fetch)}function U(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:N,provider:C,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 W(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function G(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function K(e,t,n,r){try{let o=await V(),s=r.sessionId,c=L(t),l={...r,apiKey:o,headers:W(r.headers,s)},u=c.api===`openai-responses`?i(c,n,l):a(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){G(n),e.push(U(t,n)),e.end()}}async function q(e,t,n,i){try{let a=await V(),s=i?.sessionId,c=L(t),l={...i,apiKey:a,headers:W(i?.headers,s)},u=c.api===`openai-responses`?r(c,n,l):o(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){G(n),e.push(U(t,n)),e.end()}}var J=(e,n,r={})=>{let i=t();return K(i,e,n,r).catch(G),i},Y=(e,n,r)=>{let i=t();return q(i,e,n,r).catch(G),i},X={id:C,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:M,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>F().map(I),getBudgetUsage:H,onOAuthLoginIntercepted:async(e,t,n)=>{let r=d(),i=await p(r),a=f(),o=f(),c=new URL(T);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,D),c.searchParams.set(`redirect_uri`,k),c.searchParams.set(`scope`,n?.scopes??O),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:A,onCapture:`close`});if(!l)throw new h(`xAI OAuth login was cancelled or timed out`,m.CALLBACK_TIMEOUT);let u=new URL(l),g=u.searchParams.get(`code`),_=u.searchParams.get(`state`);if(!g)throw new h(`xAI OAuth redirect did not include a code`,m.CODE_MISSING);if(_!==a)throw new h(`xAI OAuth state mismatch — possible CSRF, aborting`,m.STATE_MISMATCH);let v=await R(g,r);await s({providerId:C,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:j,scopes:v.scope}),t()},onOAuthLogout:async()=>{await s({providerId:C,accessToken:``})},onSilentRenew:async()=>{let e=B();if(!e?.refreshToken)return null;let t=await z(e.refreshToken);return t?.access_token?(await s({providerId:C,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 Z(){n({api:N,stream:J,streamSimple:Y})}export{m as XaiErrorCode,h as XaiOAuthError,X as config,Z 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-B0thDo_I.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-DABPbj6p.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-DN_idNHx.js">
@@ -31,12 +31,12 @@
31
31
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/core-CbbeQz7g.js">
33
33
  <link rel="modulepreload" crossorigin href="/assets/bridge-protocol-C52CnDIj.js">
34
- <link rel="modulepreload" crossorigin href="/assets/providers-DCmI83QO.js">
34
+ <link rel="modulepreload" crossorigin href="/assets/providers-V4TtDKqY.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/panel-rpc-D3EPRnmw.js">
36
36
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-C64_Hwco.js">
37
37
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-extra-models-Dg0hblqu.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/claude-model-version-DZmbk9E2.js">
39
- <link rel="modulepreload" crossorigin href="/assets/account-store-ravOkuEh.js">
39
+ <link rel="modulepreload" crossorigin href="/assets/account-store-DSzJHb97.js">
40
40
  <link rel="modulepreload" crossorigin href="/assets/telemetry-B0sKnLBU.js">
41
41
  <link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
42
42
  <link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
@@ -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-B0thDo_I.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-DABPbj6p.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-DN_idNHx.js">
@@ -31,12 +31,12 @@
31
31
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/core-CbbeQz7g.js">
33
33
  <link rel="modulepreload" crossorigin href="/assets/bridge-protocol-C52CnDIj.js">
34
- <link rel="modulepreload" crossorigin href="/assets/providers-DCmI83QO.js">
34
+ <link rel="modulepreload" crossorigin href="/assets/providers-V4TtDKqY.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/panel-rpc-D3EPRnmw.js">
36
36
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-C64_Hwco.js">
37
37
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-extra-models-Dg0hblqu.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/claude-model-version-DZmbk9E2.js">
39
- <link rel="modulepreload" crossorigin href="/assets/account-store-ravOkuEh.js">
39
+ <link rel="modulepreload" crossorigin href="/assets/account-store-DSzJHb97.js">
40
40
  <link rel="modulepreload" crossorigin href="/assets/telemetry-B0sKnLBU.js">
41
41
  <link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
42
42
  <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.218.2",
3
+ "version": "6.219.0",
4
4
  "description": "Browser-based coding agent with thin CLI server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- var e="---\nname: package-execution\ndescription: |\n Use this when the user asks to run or install a JavaScript/npm package with\n `npx` or `ipx`, or to run a `package.json` script with `npm run`. Covers\n built-in hints, any required `ipk add` bootstrap, the `--force` bypass, and\n how script bodies resolve installed bins.\nallowed-tools: bash\n---\n\n# JavaScript package execution\n\n`ipx` runs package bins from the nearest installed `node_modules`; `npx` is an alias with the same behavior. If no local bin or installed package resolves, it normally installs the requested package and runs its bin.\n\nBefore that network install, mapped package names that duplicate SLICC built-ins redirect to the built-in instead. The command exits non-zero and prints an actionable stderr hint naming the built-in and suggesting an invocation with the original arguments. The hint may also include an exact `ipk add` bootstrap; run that bootstrap first when present, then use the suggested built-in.\n\nPrefer the built-in. To deliberately preserve install-and-run behavior for the npm package, put `--force` before its name:\n\n```bash\nnpx --force <package> [args...]\nipx --force <package> [args...]\n```\n\nAlready-installed packages, locally resolved bins, and unmapped package names keep their normal behavior. Use `commands` to discover available built-ins instead of maintaining a package mapping here.\n\n## Installing and removing packages\n\n`ipk install <pkg>` (also `npm install`, `npm i`, `ipk add`) installs into `<cwd>/node_modules` and records the package in the nearest `package.json` — in the section it already occupies, or in `dependencies` if it is new. `ipk install -D <pkg>` / `npm install --save-dev <pkg>` records new packages in `devDependencies`. A bare name that is already declared is resolved against that existing range, not latest. Versions are picked as pnpm picks them: a range takes the `latest` dist-tag whenever `latest` satisfies it (`*` always takes `latest`), and deprecated versions are passed over unless nothing else fits. Unknown install flags fail instead of being ignored. `ipk install` with no package names installs declared `dependencies`, `devDependencies` and `optionalDependencies` without rewriting `package.json`. `ipk install -g <pkg>` installs into the shared global prefix at `/shared/lib/node_modules`, records direct dependencies in `/shared/lib/package.json`, and publishes PATH-visible `.jsh` delegators under `/shared/bin` for package bins. Every downloaded tarball is checked against the registry's published hash before it is extracted. An `EINTEGRITY` error means that package's bytes did not match and it was not extracted, but packages installed before it may already be on disk and `package.json` was not updated. Check the state with `ipk list`, then retry the install; don't work around it. Installed files keep the package's executable bits (as npm sets them: 0755 for anything the tarball marks executable, 0644 otherwise), and `bin` targets are always executable, so a package's scripts and helpers (e.g. `git submodule` from `@ai-ecoverse/wasm-git`) run without `chmod +x`. A tree installed before this is repaired the next time you install into it. Platform-specific optional dependencies are skipped unless they are built for wasm (`cpu: wasm32`); the `skipping optional dependency … (unsupported platform)` notes are expected, not errors. For a napi-rs package that doesn't list its wasm binding, add `<pkg>-wasm32-wasi` (e.g. `@oxc-parser/binding-wasm32-wasi`) yourself.\n\n```bash\nipk install lodash # local project install\nipk install -D eslint # record in devDependencies\nnpm install --save-dev eslint@8.57.1\nipk install -g typescript # global install (shared prefix + PATH bin)\nnpm uninstall -g typescript # remove from global manifest and reconcile tree\nnpm list -g # list direct global dependencies\nnpm root -g # print /shared/lib/node_modules\n```\n\nGlobal bins installed with `-g` are on the default `$PATH` via `/shared/bin/<name>.jsh` delegators — invoke them by bare name from any cwd (delegators run `ipx --global <bin>` so a same-named local package does not shadow the global install). Local uninstall/list/root work without `-g` against the cwd `package.json`.\n\n## Wasm programs (`wasm`)\n\nA global package that ships wasm-realm programs (a `slicc.commands` manifest in its `package.json`, or an `@ai-ecoverse/wasm-*` package with `bin/<x>` + `bin/<x>.wasm`) makes each program a command: `ipk add -g @ai-ecoverse/wasm-<tool>`, then run it by name. `wasm --list` lists them; `which <name>` shows the package. A built-in of the same name (`sed`, `grep`, `cat`, …) still wins, so run the program with `wasm <name> ARGS...`. `wasm -t <name>` runs it interactively on the panel terminal (a TTY: `wasm -t bash` is a real bash prompt, with job control — ^Z, `jobs`, `fg`, `bg`); the agent's own `bash` tool has no terminal to lend. Installing `@ai-ecoverse/wasm-bash` also moves your own `bash` tool onto GNU bash (real pipes, `trap`, `select`, arrays, bash's exact semantics; `cd` and exports carry between calls, shell functions do not). Supplemental commands work as before. The terminal panel then opens in GNU bash too (`wasm --login` starts it; `exit` returns to the slicc prompt, and `wasm --login` starts it again). `export SLICC_SHELL=just-bash` switches both back. Wasm programs built with socket support talk over a private loopback network: a server listening on `127.0.0.1:PORT` in one of your wasm programs is reachable from your other wasm programs while it runs (the terminal panel and each scoop have networks of their own), and a program reaches the outside over HTTP through your network's proxy: `http_proxy` / `https_proxy` point at `127.0.0.1:3128` by default (`no_proxy` keeps `localhost` direct), so `curl http://…` works the way the shell's `curl` does, masked secrets included. HTTPS works too: the proxy terminates TLS with a certificate from your network's own CA, which `SSL_CERT_FILE` / `CURL_CA_BUNDLE` / `GIT_SSL_CAINFO` point programs at (`$HOME/.config/slicc/realm-ca-*.pem`; `-k` is never needed). A redirect reaches the program as it would any HTTP client (`curl -L` follows it), except on Sliccstart, whose fetch path follows redirects itself. No other traffic leaves: only `localhost` / `127.0.0.1` resolve. Once `@ai-ecoverse/wasm-git` is installed, `git` in GNU bash is native git (in just-bash it stays SLICC's built-in; `wasm git …` reaches native git there). Native git authenticates by itself: its default credential helper, `git-credential-slicc`, hands it your GitHub login (or `$GH_TOKEN` / `$GITHUB_TOKEN`, or a `*_TOKEN` secret scoped to the host) masked, so `git clone` / `git push` over HTTPS to a private repo just work, and it commits as SLICC's git identity. Don't put tokens in remote URLs; your `~/.gitconfig` overrides both (`$HOME/.config/slicc/gitconfig` is the realm's system config, rewritten each run).\n\n## Conda / emscripten-forge (`ipk mamba`)\n\n`ipk mamba install <pkg>[=<version>]` installs emscripten-wasm32 packages from emscripten-forge / conda-forge into `/shared/lib/conda` (not `node_modules`). Executable files (shared objects, scripts) keep their executable bit. Prefer this for **forge C/WASM libraries** (for example `zlib`, `libpng`) that provide headers, `.a`, and SIDE_MODULE `.so` under that prefix.\n\nKeep using `ipk install` / `ipk add -g` for the **npm** packages that power these built-ins — forge names are not drop-in replacements today:\n\n- `convert` → `ipk add -g @imagemagick/magick-wasm@…` (forge `imagemagick` has no runnable `convert.wasm`)\n- `ffmpeg` → `ipk add -g @ffmpeg/core@…` (forge `ffmpeg` is libav `.a` only)\n- `python` → `ipk add pyodide@…` (no forge `pyodide`)\n\n```bash\nipk mamba install zlib # newest indexed build → /shared/lib/conda\nipk mamba install zlib=1.3.1 # exact version\nipk mamba list # conda-meta inventory\nipk mamba uninstall zlib\nipk mamba --help # channels, prefix, and thin-installer limits\n```\n\n## Running package.json scripts\n\n`npm run <script>` (also `ipk run`, `npm run-script`, and the `npm test` / `start` / `stop` / `restart` shortcuts) runs a `scripts` entry from the nearest `package.json`, in that package's directory. `npm run` with no script name lists what is available — read that list instead of guessing a script name.\n\n```bash\nnpm run # list scripts\nnpm run build # run build, with prebuild/postbuild around it\nnpm run build -- --watch # pass extra args to the script body\nnpm run build --silent # no banner, script output only (either side of the name)\nnpm run lint -- --help # --help after -- goes to the script, not to npm\n```\n\n`--silent`/`-s` and `--if-present` are npm's own flags anywhere before `--`; everything after `--` reaches the script untouched. Missing `start` falls back to `node server.js` when the package has one, and missing `restart` to `npm stop --if-present && npm start`.\n\nA bare bin word in a script body (`vitest run`) is rewritten to `ipx vitest run` when that package is installed, because `$PATH` does not cover `node_modules/.bin` shims. This also applies after keywords like `if`/`then`/`do`. A SLICC built-in with the same name wins, and an unknown word is not installed implicitly — install it with `ipk add <pkg>` first.\n";export{e as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./provider-Ca9Zz8yb.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{t as e}from"./store-aGHgfLPM.js";import"./provider-CE1zpBVX.js";export{e as readMcpAuthEntries};
@@ -1,17 +0,0 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import{i as t,n,r,t as i}from"./proxied-fetch-CoZ8jHud.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,l as d,m as f,n as p,o as m,p as h,s as g,t as ee,u as te}from"./stdio-tty-DNcYk275.js";import{r as ne}from"./global-prefix-DqCuANmV.js";import{r as re}from"./wasm-programs-CsoF9Lrt.js";import{t as ie}from"./wasm-compiler-Ct7QZURL.js";import{S as ae,w as oe,x as se}from"./sync-exec-dispatch-DvIKQEFv.js";import{t as ce}from"./sync-sab-wire-D_d0fd3b.js";import{t as le}from"./sync-sab-responder-CKgRMoHC.js";import{i as ue}from"./just-bash-compat-B-SPHuh_.js";const de=String.raw`printf '\033]7777;%s\007' "$?"`,fe=[`if [ -f ~/.bashrc ]; then . ~/.bashrc; fi`,`exec 98<&-`,``].join(`
2
- `);var _=class extends Error{status;constructor(e,t){super(t),this.status=e}};const pe=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,me={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 he=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=ge(this.buf,n);if(r>0){if(r>e)throw new _(431,`request head too large`);return this.take(r)}if(this.buf.length>e)throw new _(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 _(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 _e(e.subarray(0,e[r-1]===13?r-1:r))}if(this.buf.length>e)throw new _(400,`line too long`);if(n=this.buf.length,!await this.fill(t))throw new _(400,`connection closed inside a body`)}}async exactly(e,t){for(;this.buf.length<e;)if(!await this.fill(t))throw new _(400,`connection closed inside a body`);return this.take(e)}};function ge(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 _e(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return t}function v(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function ve(e){let t=_e(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 _(400,`malformed request line`);if(n[3]!==`1`)throw new _(505,`HTTP/${n[3]}.${n[4]} is not supported`);return{method:n[1],target:n[2],minor:Number(n[4]),headers:ye(t)}}function ye(e){let t=[];for(let n of e){if(n===``)continue;if(n.startsWith(` `)||n.startsWith(` `))throw new _(400,`obsolete line folding`);let e=n.indexOf(`:`),r=e>0?n.slice(0,e):``;if(!pe.test(r))throw new _(400,`malformed header field`);t.push([r,n.slice(e+1).trim()])}return t}function y(e,t){let n=t.toLowerCase();return e.filter(([e])=>e.toLowerCase()===n).map(([,e])=>e)}function b(e,t){return y(e,t).flatMap(e=>e.split(`,`)).map(e=>e.trim().toLowerCase()).filter(e=>e!==``)}function be(e){let t=b(e,`transfer-encoding`),n=y(e,`content-length`);if(t.length>0){if(n.length>0)throw new _(400,`both Transfer-Encoding and Content-Length`);if(t.length!==1||t[0]!==`chunked`)throw new _(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 _(400,`invalid Content-Length`);let a=Number(i);return a===0?{kind:`none`}:{kind:`length`,length:a}}const x=65536;async function xe(e,t,n,r){if(t.kind===`none`)return;if(t.kind===`length`){if(t.length>n)throw new _(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 _(400,`malformed chunk size`);let s=Number.parseInt(o[1],16);if(s===0)break;if(a+=s,a>n)throw new _(413,`request body over ${n} bytes`);if(i.push(await e.exactly(s,r)),await e.line(2,r)!==``)throw new _(400,`malformed chunk`)}let o=0;for(let t=await e.line(x,r);t!==``;){if(o+=t.length,o>x)throw new _(431,`trailers too large`);t=await e.line(x,r)}return Se(i,a)}function Se(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 Ce(e){return!/[\r\n\0]/.test(e)}function we(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)pe.test(e)&&Ce(t)&&(r+=`${e}: ${t}\r\n`);return v(`${r}\r\n`)}function Te(e){let t=v(`${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 Ee=v(`0\r
3
- \r
4
- `),De=e(`realm-proxy`),Oe=3128,ke={maxConnections:64,maxHead:65536,idleMs:12e4,bodyBudget:134217728},Ae=new Set([`connection`,`keep-alive`,`proxy-connection`,`proxy-authenticate`,`proxy-authorization`,`te`,`trailer`,`transfer-encoding`,`upgrade`]),je=new Set([`host`,`content-length`,`expect`]);var S=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 C(e){let t=e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e;try{return new URL(`http://${t}/`).hostname}catch{return}}function w(e,t){return e===127||e===0||e===169&&t===254}function Me(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 Ne(e){let t=Me(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?w(t[6]>>8,t[6]&255):t[5]===0&&t[6]===0:!1}function Pe(e){let t=C(e);if(t===void 0)return!1;let n=t.replace(/\.+$/,``);if(n===`localhost`||n.endsWith(`.localhost`))return!0;if(n.startsWith(`[`))return Ne(n.slice(1,-1));let r=/^(\d+)\.(\d+)\.\d+\.\d+$/.exec(n);return r?w(Number(r[1]),Number(r[2])):!1}function Fe(e){return new Set([...Ae,...b(e,`connection`)])}function Ie(e){let t=Fe(e);return e.filter(([e])=>{let n=e.toLowerCase();return!t.has(n)&&!je.has(n)})}function Le(e,t){let n=Fe(e);return t.encodedBodies||n.add(`content-encoding`),t.encodedBodies&&t.bodiless||n.add(`content-length`),e.filter(([e])=>!n.has(e.toLowerCase()))}function Re(e){let t=b(e.headers,`connection`);return t.includes(`close`)?!1:e.minor>=1||t.includes(`keep-alive`)}function ze(e,t){let n=new URL(t),r;try{r=new URL(e.target,e.target.startsWith(`/`)?n:void 0)}catch{throw new _(400,`malformed request target`)}let i=y(e.headers,`host`).every(e=>URL.canParse(`https://${e}`)&&new URL(`https://${e}`).host===n.host);if(r.origin!==n.origin||!i)throw new _(421,`this tunnel is for ${n.host}`);return r.href}function Be(e){if(e.target.startsWith(`/`))throw new _(400,`this is a proxy: send the absolute URL (GET http://host/path)`);let t;try{t=new URL(e.target)}catch{throw new _(400,`malformed request target`)}if(t.protocol!==`http:`&&t.protocol!==`https:`)throw new _(400,`unsupported scheme ${t.protocol}`);if(Pe(t.hostname))throw new _(403,`${t.hostname} is the realm's own loopback, which the proxy does not reach: list it in no_proxy`);return t.href}function Ve(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 _(400,`CONNECT needs host:port`);let r=C(t[1]);if(r===void 0)throw new _(400,`CONNECT needs host:port`);if(Pe(r))throw new _(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 He(e,t,n){for(;!n.aborted&&!t.signal.aborted;){if(e.poll().hangup){t.abort(new m(`EPIPE`));return}try{await e.changed(n)}catch{return}}}function Ue(e,t){return new Promise((n,r)=>{let i=()=>{r(t.reason??new m(`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 We(e,t){let n=v(`slicc realm proxy: ${t}\n`);return{status:e,statusText:me[e]??``,headers:[[`Content-Type`,`text/plain; charset=utf-8`]],body:(async function*(){yield n})(),cancel:async()=>void 0}}function Ge(e,t,n){return{read:(r,i)=>e.read(r,AbortSignal.any([n,AbortSignal.timeout(t),...i?[i]:[]]))}}var Ke=class{options;listener;stop=new AbortController;limits;slots;bodies;connections=new Set;closed;port;constructor(e){this.options=e,this.limits={...ke,...e.limits},this.slots=new S(this.limits.maxConnections),this.bodies=new S(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 he(Ge(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 _&&await this.refuse(e.sink,t)}}async refuse(e,t){try{await this.relay(e,`GET`,1,We(t.status,t.message),!1)}catch{}}async exchange(e,t){let{sink:n,incoming:r}=e,i=ve(t);if(i.method===`CONNECT`){if(!e.conn)throw new _(400,`CONNECT inside a tunnel`);return await this.connect(e.conn,r,i),!1}let a=e.origin?ze(i,e.origin):Be(i),o=Re(i),s=be(i.headers),c=s.kind===`length`?s.length:s.kind===`chunked`?this.cap():0;if(c>this.cap())throw new _(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 xe(r,s,this.cap()),n=new AbortController;He(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=b(t.headers,`expect`);if(r.length!==0){if(r.length!==1||r[0]!==`100-continue`)throw new _(417,`unsupported expectation: ${r.join(`, `)}`);n&&t.minor>=1&&await e.write(v(`HTTP/1.1 100 Continue\r
5
- \r
6
- `),this.stop.signal)}}async upstream(e,t,n,r){try{return await Ue(this.options.transport.fetch({url:t,method:e.method.toUpperCase(),headers:Ie(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 We(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=Le(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(we(a,r.statusText||me[a]||``,s),u),o)return await r.cancel(),l;try{for await(let t of r.body)t.length>0&&await e.write(c?Te(t):t,u)}catch{return await r.cancel().catch(()=>void 0),!1}return c&&await e.write(Ee,u),l}async connect(e,t,n){let r=Ve(n),i=this.options.tunnel;if(!i)throw new _(501,`CONNECT ${r.host}:${r.port}: no tunnels through this proxy`);await e.write(v(`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 he(t),origin:r,socket:e}))}catch(e){e instanceof m||De.warn(`tunnel failed`,{host:r.host,error:String(e)})}}};function qe(){return{buffered:n(),streaming:r()}}function Je(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 Ye(e){return e.startsWith(`x-proxy-`)||e.startsWith(`access-control-`)}function Xe(e){let t=[];for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();if(!Ye(e)){if(e===`set-cookie`)for(let e of Ze(r))t.push([n,e]);else t.push([n,r])}}return t}function Ze(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*Qe(e){e.byteLength>0&&(yield e)}function $e(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 et(e=qe()){return{traits:{manualRedirects:!1,encodedBodies:!1,maxRequestBody:i},async fetch(t){let n=Je(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:Xe(r.headers),body:Qe($e(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:Xe(r.headers),body:r.body,cancel:()=>r.cancel()}}}}function tt(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 nt(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,...tt(n.body)}}}}function rt(e={}){let n,i=()=>(n??=(e.fallback??(()=>et()))(),n),o,s=Promise.resolve().then(()=>(e.capabilities??t)()).then(t=>t.supported?nt((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 T(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 it(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 E(e,...t){let n=T(t);return T([Uint8Array.of(e),it(n.length),n])}const D=(...e)=>E(48,...e),at=(...e)=>E(49,...e),O=e=>E(4,e),k=(e,t=0)=>E(3,Uint8Array.of(t),e),ot=E(1,Uint8Array.of(255));function A(e){let t=0;for(;t<e.length-1&&e[t]===0;)t++;let n=e.subarray(t);return E(2,n[0]&128?T([Uint8Array.of(0),n]):n)}function j(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 E(6,Uint8Array.from(i))}const st=e=>E(12,new TextEncoder().encode(e)),M=e=>Uint8Array.from(e,e=>e.charCodeAt(0)&127);function ct(e){let t=e.toISOString().replace(/[-:T]/g,``).slice(0,14);return e.getUTCFullYear()<2050?E(23,M(`${t.slice(2)}Z`)):E(24,M(`${t}Z`))}const lt=D(j(`1.2.840.10045.4.3.2`));function ut(e){let t=[];return e.organization&&t.push(at(D(j(`2.5.4.10`),st(e.organization)))),t.push(at(D(j(`2.5.4.3`),st(e.commonName)))),D(...t)}function N(e,t,n){return t?D(j(e),ot,O(n)):D(j(e),O(n))}function dt(e){let t=[],[,n,r]=P(e,0);for(let i=n;i<r;){let[,,n]=P(e,i);t.push(e.subarray(i,n)),i=n}return t}function P(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 ft(e){let[,t,n]=P(e,0);return e.subarray(t,n)}function pt(e){let t=dt(e)[1];return ft(t).subarray(1)}async function mt(e){return new Uint8Array(await crypto.subtle.digest(`SHA-1`,pt(e)))}function ht(e){let t=e.length/2;return D(A(e.subarray(0,t)),A(e.subarray(t)))}function gt(){let e=crypto.getRandomValues(new Uint8Array(16));return e[0]=e[0]&127|1,e}function _t(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 vt(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=_t(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 yt(e){let t=[N(`2.5.29.14`,!1,O(await mt(e.spki)))];if(e.kind.ca)t.push(N(`2.5.29.19`,!0,D(ot,A(Uint8Array.of(0))))),t.push(N(`2.5.29.15`,!0,k(Uint8Array.of(134),1)));else{t.push(N(`2.5.29.35`,!1,D(E(128,await mt(e.issuerSpki))))),t.push(N(`2.5.29.19`,!0,D())),t.push(N(`2.5.29.15`,!0,k(Uint8Array.of(128),7))),t.push(N(`2.5.29.37`,!1,D(j(`1.3.6.1.5.5.7.3.1`))));let n=_t(e.kind.host)??vt(e.kind.host),r=n?E(135,n):E(130,M(e.kind.host));t.push(N(`2.5.29.17`,!1,D(r)))}return E(163,D(...t))}async function bt(e){let t=D(E(160,A(Uint8Array.of(2))),A(e.serial),lt,ut(e.issuer),D(ct(e.notBefore),ct(e.notAfter)),ut(e.subject),e.spki,await yt(e)),n=ht(await e.sign(t));return D(t,lt,k(n))}function xt(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 St={name:`ECDSA`,namedCurve:`P-256`},Ct={name:`ECDSA`,hash:`SHA-256`};function wt(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}function Tt(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 wt((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 Et=class extends Error{};function Dt(e){return vt(e)?!0:e.length===0||e.length>253?!1:e.split(`.`).every(e=>/^(?!-)[a-z0-9-]{1,63}(?<!-)$/i.test(e))}var Ot=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(St,!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 bt({serial:gt(),issuer:i,subject:i,notBefore:new Date(t-864e5),notAfter:new Date(a),spki:r,issuerSpki:r,kind:{ca:!0},sign:kt(n.privateKey)});return{key:n.privateKey,cert:o,spki:r,notAfter:a,name:i}}get cert(){return this.record.cert}get pem(){return xt(this.record.cert)}async issue(e,t,n=Date.now()){let r=e.toLowerCase();if(!Dt(r))throw new Et(`no certificate for ${e}`);return bt({serial:gt(),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:kt(this.record.key)})}};function kt(e){return async t=>new Uint8Array(await crypto.subtle.sign(Ct,e,t))}let At;const F=new Map;function jt(e,t){let n=F.get(e);return n||(At??=t?void 0:Tt(),n=Ot.open(e,t??At),F.set(e,n),n.catch(()=>{F.get(e)===n&&F.delete(e)})),n}const Mt=65536;var Nt=class extends Error{code;constructor(e,t){super(t),this.code=e}},Pt=class{m;scratch;constructor(e){if(this.m=e,this.scratch=e._malloc(Mt),!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 Nt(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 Ft(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 It(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,Mt);return t>0?this.taken(t):t}},Ft=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)}},It=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 I;function Lt(e=async()=>(await import(`./slicc-tls-engine-DfyKw1Ua.js`)).default()){return I??=e().then(e=>new Pt(e)),I.catch(()=>{I=void 0}),I}const Rt=e(`realm-tls`);var zt=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)}},Bt=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 zt(c,Ht(t),e),s=`https://${Vt(n)}`;try{await i(a,a,s),await a.close(r).catch(()=>void 0)}catch(e){throw Rt.debug(`tunnel ended`,{host:o,error:String(e)}),e}}finally{c.free()}}};function Vt(e){return e.port===443?e.host:`${e.host}:${e.port}`}function Ht(e){return{read:(t,n)=>e.some(t,n)}}const L=`http://127.0.0.1:${Oe}`,Ut=`localhost,.localhost,127.0.0.1,127.0.0.0/8`;function R(){return{http_proxy:L,https_proxy:L,HTTP_PROXY:L,HTTPS_PROXY:L,no_proxy:Ut,NO_PROXY:Ut}}function Wt(e){if(e)return`ca`in e?new Bt(e):new Bt({ca:()=>jt(e.owner),engine:()=>Lt()})}const Gt=new WeakMap,Kt=`/.config/slicc/realm-ca-`;function qt(e){return e.replace(/[^A-Za-z0-9_-]+/g,`-`).replace(/-+$/,``)}function Jt(e,t){return`${e.replace(/\/+$/,``)}${Kt}${qt(t)}.pem`}function Yt(e){return{SSL_CERT_FILE:e,CURL_CA_BUNDLE:e,GIT_SSL_CAINFO:e}}const Xt=`/.config/slicc/gitconfig`;function Zt(e){return`${e.replace(/\/+$/,``)}${Xt}`}function Qt(e){return`"${e.replace(/[\r\n]+/g,` `).replace(/[\\"]/g,e=>`\\${e}`)}"`}function $t(e){let t=[`[credential]`,` helper = slicc`];return e&&t.push(`[user]`,`\tname = ${Qt(e.name)}`,`\temail = ${Qt(e.email)}`),`${t.join(`
10
- `)}\n`}async function en(e,t,n){try{let r=$t(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 tn(e,t){let n=R();return e in n?n[e]===t:e===`GIT_CONFIG_SYSTEM`?t.endsWith(Xt):e in Yt(``)&&t.includes(Kt)}async function nn(e,t,n,r=jt){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)),Yt(t)}catch{return{}}}function rn(e,t={}){if(Gt.has(e))return;let n={proxy:void 0};Gt.set(e,n);let r;e.activate({family:`inet`,host:`127.0.0.1`,port:Oe},()=>{r??=(t.transport??rt)();let i=Wt(t.tls),a=new Ke({net:e,transport:r,tunnel:i?.handler,...t.proxy});n.proxy=a,an(a,t.process).then(async()=>{n.proxy===a&&(n.proxy=void 0),await i?.close()})})}async function an(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 on=32768;function sn(e){return/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e)}async function z(e){try{return await e()}catch(e){throw e instanceof u?new m(e.code):e}}var cn=class{waiters=[];wait(e){return e?.aborted?Promise.reject(new m(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new m(`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 ln(e,t){let n=new f,r=new f;for(let e of[n,r])e.openRead(),e.openWrite();e.attach({rx:r,tx:n}),t.attach({rx:n,tx:r})}var B=class e{net;domain;state=`open`;local;peer;link;readShut=!1;writeShut=!1;queue=[];backlog=0;bound=!1;changes=new cn;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 m(`ENOTCONN`);return this.link}async read(e,t){let{rx:n}=this.connection();return this.readShut||e<=0?new Uint8Array:z(()=>n.read(e,t))}async peek(e,t){let{rx:n}=this.connection();return this.readShut||e<=0?new Uint8Array:z(()=>n.peek(e,t))}async write(e,t){let{tx:n}=this.connection();if(this.writeShut)throw new m(`EPIPE`);return z(()=>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 z(()=>Promise.race(n))}bind(e){if(this.state!==`open`||this.local)throw new m(`EINVAL`);if(e.family!==this.domain)throw new m(`EAFNOSUPPORT`);this.local=this.net.bind(this,e),this.bound=!0}listen(e){if(this.state===`connected`)throw new m(`EISCONN`);if(this.state!==`open`&&this.state!==`listening`)throw new m(`EINVAL`);if(!this.local){if(this.domain===`unix`)throw new m(`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 m(`EINVAL`);let n=this.queue.shift();if(n)return n;if(t)throw new m(`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 m(`EISCONN`);if(this.state!==`open`)throw new m(`EINVAL`);if(t.family!==this.domain)throw new m(`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:un(t.host)}:t,r.peer=this.local,this.peer=r.local,ln(this,r),!n.offer(r))throw this.unlink(),r.close(),new m(`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 m(`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:``},ln(r,i),[r,i]}};function un(e){return e===`0.0.0.0`?`127.0.0.1`:e}function V(e){return e.family===`inet`?`inet:${e.port}`:`unix:${e.path}`}var dn=class{bound=new Map;activators=new Map;nextEphemeral=on;activate(e,t){this.activators.set(V(e),t)}socket(e){return new B(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 m(`EINVAL`)}else if(t.host!==`0.0.0.0`&&!sn(t.host))throw new m(`EADDRNOTAVAIL`);let n=t.family===`inet`&&t.port===0?{...t,port:this.ephemeral()}:t,r=V(n);if(this.bound.has(r))throw new m(`EADDRINUSE`);return this.bound.set(r,e),n}release(e,t){let n=V(e);this.bound.get(n)===t&&this.bound.delete(n)}target(e){if(e.family===`inet`&&!sn(un(e.host)))throw new m(`ENETUNREACH`);let t=V(e);this.bound.has(t)||this.activators.get(t)?.();let n=this.bound.get(t);if(!n?.listening)throw new m(`ECONNREFUSED`);return n}ephemeral(){for(let e=0;e<28232;e++){let e=this.nextEphemeral;if(this.nextEphemeral=e===60999?on:e+1,!this.bound.has(`inet:${e}`))return e}throw new m(`EADDRINUSE`)}};const fn=new Map;function pn(e){let t=fn.get(e);return t||(t=new dn,fn.set(e,t)),t}function H(e){return e?`${e.kind}:${e.scoopJid??``}`:`local`}const U={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},mn=new Set([U.CHLD,U.URG,U.WINCH]),hn=new Set([U.STOP,U.TSTP,U.TTIN,U.TTOU]);function gn(e){return e===U.CONT?`continue`:hn.has(e)?`stop`:mn.has(e)?`ignore`:`terminate`}function _n(e){return Number.isInteger(e)&&e>=1&&e<=31}function W(e){return 1<<e}const G={SIGINT:U.INT,SIGTERM:U.TERM,SIGKILL:U.KILL,SIGSTOP:U.STOP,SIGCONT:U.CONT},vn=16384;function yn(){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 bn=new TextEncoder;function xn(e){return(e&192)==128}var Sn=class{screen;signal;termios=yn();cols=80;rows=24;readable=[];line=[];waiters=[];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(U.WINCH)}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 g({read:(e,t)=>this.read(e,t),write:async e=>(this.output(e),e.length),poll:()=>({readable:this.readable.length>0,writable:!0,hangup:!1}),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)?U.INT:e===this.cc(1)?U.QUIT:e===this.cc(10)?U.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(bn.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&vn)for(;t<e.length&&xn(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&vn?t.filter(e=>!xn(e)).length:t.length;n>0&&this.termios.c_lflag&8&&this.output(bn.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;)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 m(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new m(`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()}},K=class extends Error{code;constructor(e){super(e),this.code=e}};function Cn(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new m(`EINTR`)),e?.aborted?t():e?.addEventListener(`abort`,t,{once:!0})}),done:()=>e?.removeEventListener(`abort`,t)}}function wn(e){return(e&255)<<8|127}function Tn(e,t){return t?t&127:(e&255)<<8}function En(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 Dn=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 K(`ENOSYS`);return this.track(e,this.parentFds.fork(),new Map,this.forker)}async spawn(e,t,n=[]){if(!this.spawner)throw new K(`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{fd:e,kernel:t,flags:i}of n)e<=2||(r.installAt(e,this.parentFds.get(t).retain()),i!==void 0&&r.setStatusFlags(e,i))}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),h(t=>e.push(t))}return te()}async wait(e,t,n,r={}){let i;try{for(;;){let a=this.candidates(e,r);if(a.length===0)throw new m(`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??=Cn(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,wn(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,Tn(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),En(r))}};function On(e,t,n){return{read:t.filter(t=>{let n=l(e.get(t).file);return n.readable||n.hangup}),write:n.filter(t=>{let n=l(e.get(t).file);return n.writable||n.hangup})}}function kn(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new m(`EINTR`)),e.aborted?t():e.addEventListener(`abort`,t,{once:!0})}),done:()=>e.removeEventListener(`abort`,t)}}async function An(e,t,n,r,i){let a=r<0?1/0:Date.now()+r,o=kn(i);o.promise.catch(()=>{});try{return await jn(e,t,n,a,o.promise)}finally{o.done()}}async function jn(e,t,n,r,i){for(;;){let a=On(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 Mn=[`sock-open`,`sock-pair`,`sock-bind`,`sock-listen`,`sock-accept`,`sock-connect`,`sock-shutdown`,`sock-name`,`sock-getopt`,`sock-setopt`];function q(e,t){let n=e.get(t).file;if(!(n instanceof B))throw new m(`ENOTSOCK`);return n}const J=e=>e===void 0?{ok:!0,kind:`void`}:{ok:!0,kind:`json`,json:e};async function Nn(e,t){let{fds:n,net:r}=t;switch(e.op){case`sock-open`:return J(n.install(new g(r.socket(e.domain)),3));case`sock-pair`:{let[t,i]=B.pair(r,e.domain),a=n.install(new g(t),3);try{return J([a,n.install(new g(i),3)])}catch(e){throw await Promise.resolve(n.close(a)),e}}case`sock-bind`:return q(n,e.fd).bind(e.addr),J();case`sock-listen`:return q(n,e.fd).listen(e.backlog),J();case`sock-accept`:return J(await Fn(t,e.fd,e.nonblock));case`sock-connect`:if(q(n,e.fd).connect(e.addr),e.nonblock)throw new m(`EINPROGRESS`);return J();case`sock-shutdown`:return q(n,e.fd).shutdown(e.how),J();case`sock-name`:{let t=q(n,e.fd),r=e.peer?t.peer:t.local;if(e.peer&&!r)throw new m(`ENOTCONN`);return J(r??Pn(t.domain))}case`sock-getopt`:return J(q(n,e.fd).getOption(e.level,e.name));case`sock-setopt`:return q(n,e.fd).setOption(e.level,e.name,e.value),J()}}function Pn(e){return e===`inet`?{family:`inet`,host:`0.0.0.0`,port:0}:{family:`unix`,path:``}}async function Fn(e,t,n){let r=q(e.fds,t),i=!n&&!l(r).readable,a=await r.accept(i?e.blocking():void 0,n);return{fd:e.fds.install(new g(a),3),peer:a.peer}}function In(e,t){let n=t.flags&3,r=n!==1,i=n===1||n===2,a=t.contents===void 0?t.orphan?new Uint8Array:void 0:new Uint8Array(t.contents),o=a?.length??0,s=!1,c=t.position,l=Promise.resolve(),u=e=>{let t=l.then(e);return l=t.catch(()=>void 0),t},d=async()=>{if(!a){try{a=await e.readFileBuffer(t.path)}catch{a=new Uint8Array}o=a.length}return a},f=e=>{let t=a??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,o)),a=n,n},p=async()=>{!s||!a||t.orphan||(s=!1,await e.writeFile(t.path,a.slice(0,o)))};return new g({read:r?e=>u(async()=>{let t=await d(),n=Math.max(0,Math.min(e,o-c)),r=t.slice(c,c+n);return c+=n,r}):void 0,write:i?e=>u(async()=>{await d(),t.flags&1024&&(c=o);let n=f(c+e.length);return c>o&&n.fill(0,o,c),n.set(e,c),c+=e.length,o=Math.max(o,c),s=!0,e.length}):void 0,seek:(e,t)=>u(async()=>{let n=0;if(t===1)n=c;else if(t===2)await d(),n=o;else if(t!==0)throw new m(`EINVAL`);if(n+e<0)throw new m(`EINVAL`);return c=n+e,c}),flush:()=>u(p),close:()=>u(p)})}const Ln=new Set([`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`]);function Rn(e){return Ln.has(e.op)}function zn(e){return e.op.startsWith(`sock-`)}function Bn(e){return e.op.startsWith(`fd-`)}function Vn(e){return e.op.startsWith(`tty-`)}const Hn=new Set([`fd-read`,`fd-write`,`fd-close`,`fd-pipe`,`fd-poll`,`fd-open-vfs`,`fd-seek`,`fd-select`,`fd-info`,`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`,...Mn]);function Un(e){let t=e.op;return typeof t==`string`&&Hn.has(t)}var Wn=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;constructor(e,t,n={}){this.pid=e,this.fds=t,this.options=n,this.children=new Dn(t,n.spawner,n.forker),this.children.onChildState=()=>this.signal(U.CHLD)}signal(e){if(this.execChild!==void 0)return Promise.resolve(this.options.kill?.(this.execChild,e)).catch(()=>void 0),e===U.KILL?`terminate`:`forward`;if(e===U.KILL)return`terminate`;if(e===U.CONT&&this.cont(),e===U.STOP)return this.stop(e);let t=W(e);if(this.ignored&t)return`ignore`;if(!(this.caught&t)){let t=gn(e);return t===`stop`?this.stop(e):t}this.options.onPending?.(e);let n=this.interrupt;return this.interrupt=new AbortController,n.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`,U.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{return Bn(e)?await this.fdSyscall(e):Vn(e)?this.ttySyscall(e):Rn(e)?this.jobSyscall(e):zn(e)?await this.socketSyscall(e):await this.procSyscall(e)}catch(e){if(e instanceof m||e instanceof K)return{ok:!1,errno:e.code,message:e.code};throw e}}blockingSignal(){if(this.options.hasPending?.())throw new m(`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 m(e.peek&&t.read?`EOPNOTSUPP`:`EBADF`);if(t.tty&&this.checkForeground(t.tty),e.max<=0)return new Uint8Array;let r=l(t).readable;if(!r&&e.nonblock)throw new m(`EAGAIN`);let i=r?this.interrupt.signal:this.blockingSignal();return n.call(t,Math.max(0,Math.min(e.max,1048576)),i)}async write(e,t,n=!1){let r=this.fds.get(e).file;if(!r.write)throw new m(`EBADF`);if(!l(r).writable){if(n)throw new m(`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)}async fdSyscall(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=c(),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:l(this.fds.get(e.fd).file)};case`fd-open-vfs`:{if(!this.options.fs)throw new K(`ENOSYS`);let t=In(this.options.fs,{path:e.path,flags:e.flags,position:e.position,...e.contents===void 0?{}:{contents:e.contents},...e.orphan?{orphan:!0}:{}});return{ok:!0,kind:`json`,json:this.fds.install(t,3)}}case`fd-info`:return{ok:!0,kind:`json`,json:{tty:this.fds.get(e.fd).file.tty!==void 0}};case`fd-open-tty`:{let e=this.controllingTerminal();if(!e)throw new m(`ENXIO`);return{ok:!0,kind:`json`,json:this.fds.install(e.file(),3)}}case`fd-select`:{let{read:t,write:n,timeoutMs:r}=e,i=this.blockingSignal();return{ok:!0,kind:`json`,json:await An(this.fds,t,n,r,i)}}case`fd-seek`:{let t=this.fds.get(e.fd).file;if(!t.seek)throw new m(`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`}}}}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 m(`EPERM`);return{ok:!0,kind:`void`}}}checkForeground(e){let t=this.options.jobs;if(!t)return;let n=this.pgid();if(t.tcgetpgrp(e,this.sid())!==n)throw this.ignored&W(U.TTIN)?new m(`EIO`):(t.killGroup(n,U.TTIN),new m(`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 m(`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 m(`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 m(`EPERM`);return{ok:!0,kind:`json`,json:t.setsid(this.pid)}}}tty(e){let t=this.fds.get(e).file.tty;if(!t)throw new m(`ENOTTY`);return t}socketSyscall(e){return this.net??=this.options.net??new dn,Nn(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&&!_n(e.sig))throw new m(`EINVAL`);if(!await this.options.kill?.(e.pid===0?-this.pgid():e.pid,e.sig))throw new m(`ESRCH`);return{ok:!0,kind:`void`};case`sig-mask`:return this.caught=e.caught,this.ignored=e.ignored,{ok:!0,kind:`void`};case`proc-captured`:return{ok:!0,kind:`bytes`,bytes:this.children.captured(e.pid,e.slot)}}}async exit(){this.exited||(this.exited=!0,await this.fds.closeAll())}};function Gn(){return new Worker(new URL(`/assets/process-worker-Bm14-oXj.js`,``+import.meta.url),{type:`module`})}const Kn=new WeakMap;let qn=1;function Jn(e){let t=Kn.get(e);return t===void 0&&Kn.set(e,t=qn++),t}function Yn(e){return e.numbers().filter(e=>e>2).map(t=>{let n=e.get(t),r=e.statusFlags(t),i=n.file instanceof B?`socket`:d(n.file);return{fd:t,kind:i,...r===void 0?{}:{flags:r},...e.closesOnExec(t)?{cloexec:!0}:{},...i===`stream`?{desc:Jn(n)}:{}}})}function Xn(e){let t=new SharedArrayBuffer(64+ce),n=new Int32Array(t,0,16),r=new Wn(e.pid,e.fds,{spawner:e.spawner,forker:e.forker,fs:e.fs,kill:e.kill,jobs:e.jobs,net:e.net,onPending:e=>void Atomics.or(n,8,W(e)),hasPending:()=>Atomics.load(n,8)!==0}),i=ae({fs:e.fs,cwd:e.cwd}),a=(e.createWorker??Gn)(),o=le(a,t,i,{dispatch:async e=>Un(e)?r.syscall(e):`op`in e&&typeof e.op==`string`&&`path`in e?se(e):{ok:!1,errno:`ENOSYS`,message:`wasm-realm: no exec yet`}}),s,c=new Promise(e=>s=e),l=!1,u,d=(e,t)=>{l||(l=!0,u=t??r.execTermsig,a.removeEventListener(`message`,f),a.removeEventListener(`error`,p),o.dispose(),oe(i),a.terminate(),r.exit().then(()=>s(e),()=>s(e)))},f=t=>{let n=t.data;n?.type===`wasm-process-exit`?d(typeof n.code==`number`?n.code:70):n?.type===`wasm-process-error`&&(e.onError?.(String(n.message)),d(70))},p=t=>{t.preventDefault(),e.onError?.(String(t.message??`worker error`)),d(70)};a.addEventListener(`message`,f),a.addEventListener(`error`,p);let m={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.fork?{fork:e.fork}:{fds:Yn(e.fds)}};return a.postMessage(m,e.fork?[e.fork.memory.buffer]:[]),{pid:e.pid,exited:c,kill:(e=137)=>d(e,e>128&&e<160?e-128:void 0),signal:e=>{r.signal(e)===`terminate`&&d(e===U.KILL?137:128+e,e)},termsig:()=>u,onState:e=>r.onState(e)}}var Zn=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 m(`ESRCH`);return t}setpgid(e,t,n){let r=this.member(t||e),i=n||r.pid;if(i<0)throw new m(`EINVAL`);let a=this.member(e);if(r.pid!==e){if(r.ppid!==e)throw new m(`ESRCH`);if(r.execed)throw new m(`EACCES`)}if(r.sid!==a.sid||r.pid===r.sid)throw new m(`EPERM`);let o=[...this.members.values()].some(e=>e.pgid===i&&e.sid===r.sid);if(i!==r.pid&&!o)throw new m(`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 m(`EPERM`);return t.sid=e,t.pgid=e,this.terminals.delete(e),e}controllingTerminal(e){let t=this.members.get(e);return t&&(this.terminals.get(t.sid)??null)}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 m(`EPERM`);this.foreground.set(t,n)}signalForeground(e,t,n){this.killGroup(this.tcgetpgrp(e,t),n)}};function Qn(e,t){if(!e)return t;if(!(t.GIT_CONFIG_SYSTEM!==void 0&&tn(`GIT_CONFIG_SYSTEM`,t.GIT_CONFIG_SYSTEM))||!(`GIT_CONFIG_NOSYSTEM`in e))return{...e,...t};let{GIT_CONFIG_NOSYSTEM:n,...r}=e;return{...r,...t}}function $n(e,t){return!/^(ba)?sh$/.test(Z(e))||`BASH_FUNC_secret%%`in t?t:{...t,"BASH_FUNC_secret%%":`() { command secret "$@" || return; local __slicc_env; if __slicc_env=$(command secret shell-env "$@" 2>/dev/null); then eval "$__slicc_env"; fi; return 0; }`}}const Y=new Map,er=new Map(Object.entries(G).map(([e,t])=>[t,e])),X=/^\/(?:usr\/)?bin\/([^/]+)$/,tr=/^(.*\/node_modules\/(?:@[^/]+\/)?[^/]+)\//,nr=/locateFile\(\s*["']([^"'/]+\.wasm)["']\s*\)/;let rr=4e4;function ir(e){return e.endsWith(`.js`)?`${e.slice(0,-3)}.wasm`:`${e}.wasm`}function ar(e){return X.exec(e)?.[1]??Z(e)}function Z(e){return e.slice(e.lastIndexOf(`/`)+1)}function or(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 sr(e){return re(or(e),ne)}async function cr(e,t){let n=await e.fs.stat(t),r=`${t}:${n.size}:${n.mtime.getTime()}`,i=Y.get(r);return i||(i=ie(t=>e.fs.readFileBuffer(t),t),Y.set(r,i),i.catch(()=>Y.delete(r))),i}function lr(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return t}function ur(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 dr(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 Q(e,t,n){if(n.length===0||!e.has(t))return;let r=e.get(t).file;try{await r.write?.(n)}catch{}}function $(e,t){return e.has(t)&&e.get(t).file.tty!==void 0}function fr(e){return{...$(e,0)?{}:{[ee]:`0`},...$(e,1)?{}:{[p]:`0`}}}function pr(e){return{pid:e.pid,exited:e.exited,termsig:e.termsig,onState:t=>e.onState(t)}}var mr=class{ctx;processConfig;onError;gate;lookup;live=new Set;shellChildren=new Set;wasmByPid=new Map;shellByPid=new Map;installed;jobs=new Zn;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=pn(H(t?.owner));let a=H(t?.owner);rn(this.net,{process:t,tls:{owner:a}})}commands(){return this.lookup?this.lookup():(this.installed??=sr(this.ctx),this.installed)}async launch(e){let t,n;try{t=await this.ctx.fs.readFile(e.glue),n=await cr(this.ctx,e.module),e.signal?.throwIfAborted()}catch(t){throw await e.fds.closeAll(),t}let r=$n(e.argv0,Qn(e.defaults,e.env));return this.start({...e,env:r,program:{glue:t,module: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=Xn({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,net:this.net,...e.fork?{fork:e.fork}:{}});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(G[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=er.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 m(`EPERM`);return this.processConfig?.processManager.signal(e,t)??!1}signalAll(e){for(let t of this.live)t.signal(e)}signalTerminal(e,t){this.leader!==void 0&&this.jobs.signalForeground(e,this.leader,t)}killAll(e){for(let t of this.live)t.kill(e);for(let e of this.shellChildren)e.abort()}async resolve(e,t,n){let r=X.exec(e)?.[1]??(e.includes(`/`)?void 0:e);if(r!==void 0){let e=await this.commands(),t=e.get(r);if(t)return{glue:t.glue,module:t.wasm,argv0:t.argv0,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=ir(i);return await this.ctx.fs.exists(a)?{glue:i,module:a,argv0:Z(t||e)}: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=nr.exec(r)?.[1];if(i!==void 0){for(let e of(await this.commands()).values())if(e.wasm.startsWith(`${n}/`)&&e.wasm.endsWith(`/${i}`))return{glue:e.glue,module:e.wasm,argv0:Z(t),defaults:e.env}}}forker(e,t){return async(n,r)=>pr(this.start({...t,cwd:n.cwd??t.cwd,fds:r,ppid:e,fork:n}))}async interpreted(e){if(!e.file.includes(`/`)||X.test(e.file))return;let t;try{t=(await this.ctx.fs.readFileBuffer(this.ctx.fs.resolvePath(e.cwd,e.file))).subarray(0,256)}catch{return}if(t[0]!==35||t[1]!==33)return;let[n,...r]=new TextDecoder().decode(t).slice(2).split(`
12
- `)[0].trim().split(/[ \t]+/);if(!n)return;let i=await this.resolve(n,n,e.cwd);if(!i)return;let a=r.join(` `);return{target:i,file:n,args:[...a?[a]:[],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:t.argv.slice(1)}:await this.interpreted(t);if(!i)return this.runShellChild(t,n,e);let a=await this.gate?.(ar(i.file),i.args,t.env);return a?this.deniedChild(t,n,e,a):pr(await this.launch({...i.target,args:i.args,env:t.env,cwd:t.cwd,fds:n,ppid:e}))}}deniedChild(e,t,n,r){let{pid:i}=this.register(`shell`,e.argv,e.cwd,e.env,n),a=(async()=>(await Q(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 K(`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=>{gn(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(G[t])}),d=(async()=>{try{let n=$(t,0),i=t.has(0)&&!n?await dr(t.get(0)):new Uint8Array,a=await r(e.file,{args:e.argv.slice(1),cwd:e.cwd,env:{...e.env,...fr(t)},replaceEnv:!0,stdin:lr(i),stdinKind:`bytes`,signal:o.signal});return await Q(t,1,a.stdoutKind===`bytes`?ur(a.stdout):new TextEncoder().encode(a.stdout)),await Q(t,2,new TextEncoder().encode(a.stderr)),a.exitCode}catch(n){let r=n instanceof Error?n.message:String(n);return await Q(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:rr++}}};const hr=`usage: wasm [-t] [--argv0 NAME] [--module PATH] PROGRAM [ARGS...]
13
- wasm --list
14
- wasm --login
15
- `;function gr(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`)break;let r=e[n+1];if(r===void 0)return;e[n]===`--argv0`?t.argv0=r:t.module=r,n+=2}let r=e[n];if(!(!r||r.startsWith(`-`)))return{...t,program:r,args:e.slice(n+1)}}function _r(e,t){return t.commands?.()??sr(e)}function vr(e){if(!e)return()=>{};let t=new TextDecoder;return n=>{let r=t.decode(n,{stream:!0});r&&e(r)}}function yr(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)},d=new o;return d.install(s(Ar(e))),d.install(h(u(i,vr(r)))),d.install(h(u(n,vr(r)))),{fds:d,collected:()=>({stdout:kr(i),note:l?`wasm: output exceeded ${a} bytes; stopped\n`:``}),release:()=>{}}}function br(e,t){let n=new Sn({write:t=>e.write(t)},e=>t.signalTerminal(n,e));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 xr(e,t){return Object.fromEntries(Object.entries(e).filter(([e,n])=>e in t||!tn(e,n)))}async function Sr(e,t){let n=H(t.processConfig?.owner);return nn(e.fs,Jt(Cr(e),n),n)}function Cr(e){return e.exportedEnv?.HOME??e.env.get(`HOME`)??`/tmp`}async function wr(e,t){let n=await t.gitIdentity?.().catch(()=>void 0);return en(e.fs,Zt(Cr(e)),n)}function Tr(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??=de),r}async function Er(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 _r(e,t)).has(`bash`))return n;let r=s(new TextEncoder().encode(fe));return Mr([`-t`,`--login-prompt`,`bash`,`--rcfile`,`/dev/fd/98`,`-i`],e,{...t,fds:[[98,r]]})}function Dr(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 Or(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);return r?{...n,argv0:n.argv0??r.argv0,module:n.module??r.wasm,program:r.glue,defaults:r.env}:n}function kr(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 Ar(e){let t=ue(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function jr(e,t){return e.defaults??t.defaults}async function Mr(e,t,n={}){let{processConfig:r,terminal:i}=n;if(e[0]===`--help`||e[0]===`-h`)return{stdout:hr,stderr:``,exitCode:0};if(e[0]===`--login`&&e.length===1)return Er(t,n);if(e[0]===`--list`&&e.length===1)return{stdout:Dr(await _r(t,n)),stderr:``,exitCode:0};let a=gr(e);if(!a)return{stdout:``,stderr:hr,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)
16
- `,exitCode:126};let o=[],s=e=>{o.push(new TextEncoder().encode(`wasm: ${e}\n`))},c=new mr(t,r,e=>s(e),n.gate,n.commands),l=await Or(t,c,a),u=t.fs.resolvePath(t.cwd,l.program),d;if(l.tty){let e=i?.lease();if(!e)return{stdout:``,stderr:`wasm: -t: no terminal to lend (only the panel terminal has one)
17
- `,exitCode:1};d=br(e,c),s=t=>e.write(new TextEncoder().encode(`wasm: ${t}\r\n`))}else d=yr(t,c,o,n.onOutput);for(let[e,t]of n.fds??[])d.fds.installAt(e,t),d.fds.setCloseOnExec(e);let{fds:f}=d,p;try{p=await c.launch({glue:u,module:l.module?t.fs.resolvePath(t.cwd,l.module):ir(u),argv0:l.argv0??u.slice(u.lastIndexOf(`/`)+1).replace(/\.js$/,``),args:l.args,env:Tr(t,l,{...R(),...await Sr(t,n),...await wr(t,n)}),defaults:jr(l,n),cwd:t.cwd,fds:f,signal:t.signal})}catch(e){if(d.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 m=()=>c.killAll(130);t.signal?.addEventListener(`abort`,m,{once:!0}),t.signal?.aborted&&m();try{let e=await p.exited,{stdout:t,note:n}=d.collected();return n&&o.push(new TextEncoder().encode(n)),{stdout:t,stderr:new TextDecoder().decode(Nr(o)),exitCode:e,stdoutKind:`bytes`}}finally{d.release(),t.signal?.removeEventListener(`abort`,m)}}function Nr(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{Mr as runWasmCommand,xr as withoutRealmDefaults};
@@ -1 +0,0 @@
1
- function e(){return{version:`6.218.2`,releasedAt:`2026-09-29T17:43:24Z`,buildId:`6.218.2-mumyt8v5`}}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
- import{r as e}from"./global-prefix-DqCuANmV.js";function t(e){let t=e;return typeof t?.exists==`function`&&typeof t.readDir==`function`&&typeof t.readFile==`function`}async function n(e,t){return(await e.readDir(t)).map(e=>e.name)}async function r(e,t){let n=await e.readFile(t,{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}function i(e,t){let n={};if(!t||typeof t!=`object`)return n;for(let[r,i]of Object.entries(t))!/^[A-Za-z_][A-Za-z0-9_]*$/.test(r)||typeof i!=`string`||(n[r]=i.replaceAll("${package}",e));return n}async function a(e,t,n){if(!n.env)return n;let r={};for(let[i,a]of Object.entries(n.env)){let n=!a.startsWith(`/`)&&a.includes(`/`)&&s(t,a);r[i]=n&&await e.exists(n)?n:a}return{...n,env:r}}function o(t){return t.startsWith(`${e}/`)&&(t.endsWith(`/package.json`)||t.endsWith(`.wasm`))}function s(e,t){if(typeof t!=`string`||t.length===0)return;let n=t.replace(/^\.\//,``);if(!(n.startsWith(`/`)||n.split(`/`).includes(`..`)))return`${e}/${n}`}function c(e){return/^[A-Za-z0-9._+-]+$/.test(e)&&e!==`.`&&e!==`..`}function l(e,t){let n=t.slicc;if(!n||typeof n!=`object`||n.abi!==void 0&&n.abi!==`emscripten`)return[];let r=n.commands;if(!r||typeof r!=`object`)return[];let a=typeof t.name==`string`?t.name:e,o=i(e,n.env),l=[];for(let[t,n]of Object.entries(r)){if(!c(t)||!n||typeof n!=`object`)continue;let r=s(e,n.glue),u=s(e,n.wasm);if(!r||!u)continue;let d=typeof n.argv0==`string`&&n.argv0?n.argv0:t,f={...o,...i(e,n.env)};l.push({name:t,glue:r,wasm:u,argv0:d,pkg:a,...Object.keys(f).length>0?{env:f}:{}})}return l}async function u(e,t,r){let i=`${t}/bin`,a;try{a=await n(e,i)}catch{return[]}let o=new Set(a);return a.filter(e=>!e.endsWith(`.wasm`)&&o.has(`${e}.wasm`)&&c(e)).map(e=>({name:e,glue:`${i}/${e}`,wasm:`${i}/${e}.wasm`,argv0:e,pkg:r}))}async function d(e,t){let n;try{n=JSON.parse(await r(e,`${t}/package.json`))}catch{return[]}let i=l(t,n);if(i.length>0||n.slicc)return Promise.all(i.map(n=>a(e,t,n)));let o=typeof n.name==`string`?n.name:``;return o.startsWith(`@ai-ecoverse/`)&&o.slice(13).startsWith(`wasm-`)?u(e,t,o):[]}async function f(e,t){let r;try{r=await n(e,t)}catch{return[]}let i=[];for(let a of r.sort()){if(a.startsWith(`.`))continue;if(!a.startsWith(`@`)){i.push(`${t}/${a}`);continue}let r=[];try{r=await n(e,`${t}/${a}`)}catch{}for(let e of r.sort())i.push(`${t}/${a}/${e}`)}return i}async function p(e,t){let n=new Map;if(!await e.exists(t))return n;for(let r of await f(e,t))for(let t of await d(e,r))n.has(t.name)||n.set(t.name,t);return n}export{t as n,p as r,o as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./wc-onboarding-CKWhBBSy.js";export{e as hasOnboardingFinalLickInHistory};