sliccy 6.210.1 → 6.211.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 (176) hide show
  1. package/dist/ui/.vite/manifest.json +186 -186
  2. package/dist/ui/assets/SKILL-lcwLWMKp.js +1 -0
  3. package/dist/ui/assets/{account-store-BXs7YUd1.js → account-store-CwNcf5Wq.js} +1 -1
  4. package/dist/ui/assets/{account-store-Bj2sWuL9.js → account-store-nlKbTUhJ.js} +1 -1
  5. package/dist/ui/assets/{adobe-F-IKKOJO.js → adobe-D7sqH2X_.js} +1 -1
  6. package/dist/ui/assets/{adobe-DtoNpFL2.js → adobe-DBVa9oOG.js} +1 -1
  7. package/dist/ui/assets/{agent-panels-CVsqg2-h.js → agent-panels-B0VuA3mU.js} +1 -1
  8. package/dist/ui/assets/{almost-bash-shell-headless-CH7VDHBB.js → almost-bash-shell-headless-C0x2DyFh.js} +508 -508
  9. package/dist/ui/assets/{apply-layout-FFHCB9bO.js → apply-layout-fciODM2t.js} +1 -1
  10. package/dist/ui/assets/{apps-BJzl3RZW.js → apps-RVxpwEfn.js} +1 -1
  11. package/dist/ui/assets/{azure-openai-CpRQdIQb.js → azure-openai-JxdRj-Iq.js} +1 -1
  12. package/dist/ui/assets/{azure-openai-BLEG5MlZ.js → azure-openai-QS8TU-7m.js} +1 -1
  13. package/dist/ui/assets/{backend-hostfs-DZyH5GFZ.js → backend-hostfs-CITljQVo.js} +1 -1
  14. package/dist/ui/assets/bedrock-camp-extra-models-BTmBqN9L.js +1 -0
  15. package/dist/ui/assets/bedrock-camp-extra-models-Dg0hblqu.js +1 -0
  16. package/dist/ui/assets/{bsh-watchdog-CqfihC2k.js → bsh-watchdog-BTB0exmo.js} +1 -1
  17. package/dist/ui/assets/{cdp-DwsDXLhg.js → cdp-Djm-AVXd.js} +1 -1
  18. package/dist/ui/assets/{cerebras-gnXcXmk7.js → cerebras-Czq0QoYg.js} +1 -1
  19. package/dist/ui/assets/{cerebras-CnpcT2_8.js → cerebras-DvIFsdoW.js} +1 -1
  20. package/dist/ui/assets/{composer-speech-BURN-dPW.js → composer-speech-DgLXFFNQ.js} +1 -1
  21. package/dist/ui/assets/{connect-surface-D0BfSkwe.js → connect-surface-YjzKwUub.js} +1 -1
  22. package/dist/ui/assets/{core-Dj0t7hQO.js → core-C7UGykIC.js} +1 -1
  23. package/dist/ui/assets/{directed-approval-BWqIdB9e.js → directed-approval-BMnSWjrJ.js} +1 -1
  24. package/dist/ui/assets/{emscripten-vfs-hook-Boy5xq-Z.js → emscripten-vfs-hook-CwbQLP-I.js} +1 -1
  25. package/dist/ui/assets/ensure-speech-assets-Bqf-swhU.js +1 -0
  26. package/dist/ui/assets/{esbuild-wasm-C-mKofIl.js → esbuild-wasm-DIcMVR3g.js} +1 -1
  27. package/dist/ui/assets/ffmpeg-wasm-B5jofhIa.js +1 -0
  28. package/dist/ui/assets/{frozen-archive-writer-o7ImcSbe.js → frozen-archive-writer-BV51qDTg.js} +1 -1
  29. package/dist/ui/assets/{fs-C7Qh7l0E.js → fs-ZnsLbva1.js} +1 -1
  30. package/dist/ui/assets/{fs-BaM5oYgh.js → fs-pBJBtnUm.js} +2 -2
  31. package/dist/ui/assets/{gelatiere-store-BkPyZ5mV.js → gelatiere-store-B-PMFWOJ.js} +1 -1
  32. package/dist/ui/assets/{gelatiere-unit-BYlMZ2v4.js → gelatiere-unit-B7YUbTOe.js} +1 -1
  33. package/dist/ui/assets/{github-N-Ega4Po.js → github-CRKKUq6c.js} +1 -1
  34. package/dist/ui/assets/{github-auth-DvbRhyIc.js → github-auth-DPBopdHy.js} +1 -1
  35. package/dist/ui/assets/{github-copilot-C2Lk0xfw.js → github-copilot-BOqjn_pA.js} +1 -1
  36. package/dist/ui/assets/{github-copilot-CCvuY9BS.js → github-copilot-Cn5WeEVQ.js} +1 -1
  37. package/dist/ui/assets/{github-install-DPTw6LV_.js → github-install-Dlx1x9oP.js} +1 -1
  38. package/dist/ui/assets/{github-D0VXVUSM.js → github-q7aLpavT.js} +2 -2
  39. package/dist/ui/assets/{github-zip-Bbft7vZj.js → github-zip-BKesEE7T.js} +1 -1
  40. package/dist/ui/assets/{guest-tool-gate-C3mMUKtL.js → guest-tool-gate-DbuM_BFG.js} +1 -1
  41. package/dist/ui/assets/{hear-l_e8vu4Q.js → hear-BAlAHUln.js} +1 -1
  42. package/dist/ui/assets/{help-C5uNreTt.js → help-MPD6QjSi.js} +1 -1
  43. package/dist/ui/assets/installer-DR7izkMG.js +2 -0
  44. package/dist/ui/assets/{interrupted-work-recovery-D5TFE2JG.js → interrupted-work-recovery-DKlfO3Dk.js} +1 -1
  45. package/dist/ui/assets/{ipk-mamba-CvGbcFF_.js → ipk-mamba-B7DsVAHB.js} +1 -1
  46. package/dist/ui/assets/{js-realm-worker-BFJHUvlI.js → js-realm-worker-Dj6E7cem.js} +2 -2
  47. package/dist/ui/assets/jsh-executor-DOTwZy5W.js +18 -0
  48. package/dist/ui/assets/{kernel-worker-BzcdrkzF.js → kernel-worker-C6evRbt8.js} +53 -53
  49. package/dist/ui/assets/{lick-ws-bridge-B248zI2U.js → lick-ws-bridge-DEO3vHuX.js} +1 -1
  50. package/dist/ui/assets/{lick-ws-bridge-CodIkT51.js → lick-ws-bridge-cpYoem5_.js} +1 -1
  51. package/dist/ui/assets/{live-session-curation-vrJYxCgm.js → live-session-curation-BM8tZX-r.js} +1 -1
  52. package/dist/ui/assets/{live-session-snapshot-lJ3w4rOH.js → live-session-snapshot-C2NMVRMF.js} +1 -1
  53. package/dist/ui/assets/{local-llm-vgDCJvkZ.js → local-llm-Cfh9VuPq.js} +1 -1
  54. package/dist/ui/assets/{local-llm-dkgrXktX.js → local-llm-z-cBJlKf.js} +1 -1
  55. package/dist/ui/assets/{magick-wasm-qrxQJP5k.js → magick-wasm-agWGi-e0.js} +1 -1
  56. package/dist/ui/assets/{main-cherry-sfCt3gLL.js → main-cherry-CbQUCau8.js} +1 -1
  57. package/dist/ui/assets/{main-CXeU8DQz.js → main-tEtVPbXh.js} +3 -3
  58. package/dist/ui/assets/{memory-curation-seam-T4WRfl1n.js → memory-curation-seam-CjBglHNa.js} +1 -1
  59. package/dist/ui/assets/{memory-health-EXXqHw1x.js → memory-health-CPzWzT1P.js} +1 -1
  60. package/dist/ui/assets/{memory-write-execute-DIYIwJKg.js → memory-write-execute-DqWqBfwf.js} +1 -1
  61. package/dist/ui/assets/{merge-folded-cost-into-frozen-bDakT1WR.js → merge-folded-cost-into-frozen-DCuPhNTk.js} +1 -1
  62. package/dist/ui/assets/{mount-C7dlV4rl.js → mount-4dZRjkrQ.js} +1 -1
  63. package/dist/ui/assets/{mount-BABm_hJd.js → mount-ydk0WHgG.js} +3 -3
  64. package/dist/ui/assets/{new-session-D2rtUiOZ.js → new-session-C5MEP_cK.js} +2 -2
  65. package/dist/ui/assets/{oauth-bootstrap-3P5XkiLD.js → oauth-bootstrap-BVUK3GEs.js} +2 -2
  66. package/dist/ui/assets/{onboarding-orchestrator-CYP3TBxO.js → onboarding-orchestrator-DftSEsKa.js} +1 -1
  67. package/dist/ui/assets/{openai-codex-CUa5FPoQ.js → openai-codex-Cwz1FT-z.js} +1 -1
  68. package/dist/ui/assets/{openai-codex-DvxYitk6.js → openai-codex-fJtQGV69.js} +1 -1
  69. package/dist/ui/assets/{openrouter-BxUHkfTR.js → openrouter-DmEz5WxK.js} +1 -1
  70. package/dist/ui/assets/{openrouter-free-nn_h_WC_.js → openrouter-free-C5O97xvy.js} +1 -1
  71. package/dist/ui/assets/{openrouter-free-BCIYdkt3.js → openrouter-free-DRw-DHQn.js} +1 -1
  72. package/dist/ui/assets/{openrouter-oauth-Bba1qXT3.js → openrouter-oauth-C4uIzDcA.js} +1 -1
  73. package/dist/ui/assets/{openrouter-oauth-8cwBPqX7.js → openrouter-oauth-Csq32wt2.js} +1 -1
  74. package/dist/ui/assets/{openrouter-Btmqh3ZY.js → openrouter-rcqoBXaw.js} +1 -1
  75. package/dist/ui/assets/{opfs-mount-DbON63F4.js → opfs-mount-C0Lus0Cz.js} +1 -1
  76. package/dist/ui/assets/{panel-rpc-handlers-aqHjP3Jn.js → panel-rpc-handlers-B9LenTR0.js} +2 -2
  77. package/dist/ui/assets/{panelize-shell-CjtBTrHH.js → panelize-shell-Dzogbbfc.js} +1 -1
  78. package/dist/ui/assets/{pi-edit-execution-DFk-ThoQ.js → pi-edit-execution-D9D4FDIQ.js} +1 -1
  79. package/dist/ui/assets/{provider-DFROVc_U.js → provider-CTPdODd7.js} +1 -1
  80. package/dist/ui/assets/{provider-B7Epu3fA.js → provider-Do-gc4OB.js} +2 -2
  81. package/dist/ui/assets/{provider-settings-WmZqlEWG.js → provider-settings-DzDdkFMx.js} +1 -1
  82. package/dist/ui/assets/provider-store-access-BbvRUwZT.js +1 -0
  83. package/dist/ui/assets/provider-store-access-CrrW9eCi.js +1 -0
  84. package/dist/ui/assets/{providers-CUOgmyqw.js → providers-1_CCXdq3.js} +2 -2
  85. package/dist/ui/assets/{providers-CnFwVWZQ.js → providers-BdG-aC29.js} +1 -1
  86. package/dist/ui/assets/{quick-llm-TyBh96Nl.js → quick-llm-B07QXQ0s.js} +1 -1
  87. package/dist/ui/assets/{realm-inprocess-DtJhD5Fl.js → realm-inprocess-wC9VuVQf.js} +2 -2
  88. package/dist/ui/assets/{realm-unhandled-rejections-DgtQR_nu.js → realm-unhandled-rejections-CEAHL08q.js} +1 -1
  89. package/dist/ui/assets/{realm-unhandled-rejections-vs4_4-j5.js → realm-unhandled-rejections-CuAh-NpD.js} +1 -1
  90. package/dist/ui/assets/{recovery-screen-DCebt00Y.js → recovery-screen-mPjIBgPH.js} +1 -1
  91. package/dist/ui/assets/{remote-terminal-view-hFKpOJq6.js → remote-terminal-view-DTmUlQlW.js} +2 -2
  92. package/dist/ui/assets/{require-guards-Bo27pPOL.js → require-guards-CyhsDWYg.js} +1 -1
  93. package/dist/ui/assets/resolver-BjX48SSL.js +4 -0
  94. package/dist/ui/assets/{restore-zcvXidEG.js → restore-BSMRZD-l.js} +1 -1
  95. package/dist/ui/assets/{run-D_M6FYKF.js → run-BSt_FVlm.js} +2 -2
  96. package/dist/ui/assets/{run-CuBHWlsa.js → run-BoxCVicT.js} +2 -2
  97. package/dist/ui/assets/{run-CS2W694M.js → run-C8OfqJcF.js} +2 -2
  98. package/dist/ui/assets/{run-Q7BN7qk3.js → run-CJfA-Obt.js} +1 -1
  99. package/dist/ui/assets/{run-UiQipOb7.js → run-CM8a7Cc3.js} +1 -1
  100. package/dist/ui/assets/{run-Cd_VCcVf.js → run-CjBpwwpL.js} +1 -1
  101. package/dist/ui/assets/{run-DjxRQ23G.js → run-CyMKLTKU.js} +1 -1
  102. package/dist/ui/assets/{run-C2DCKniQ.js → run-DMO7-CuA.js} +1 -1
  103. package/dist/ui/assets/{run-BV9MB7ra.js → run-KLXVoIYy.js} +1 -1
  104. package/dist/ui/assets/run-Y1uUJvV7.js +14 -0
  105. package/dist/ui/assets/{screencapture-run-CBm4TDjf.js → screencapture-run-C3Y7V44Z.js} +1 -1
  106. package/dist/ui/assets/{session-command-memory-CcaZsaLQ.js → session-command-memory-D9pTlYAY.js} +2 -2
  107. package/dist/ui/assets/{session-jsonl-DmxnjLdx.js → session-jsonl-AoJrx9pb.js} +1 -1
  108. package/dist/ui/assets/{session-jsonl-BmGkCWUz.js → session-jsonl-CJzYIghQ.js} +1 -1
  109. package/dist/ui/assets/{session-search-index-KJ0_eoRM.js → session-search-index-qOmoZUJy.js} +1 -1
  110. package/dist/ui/assets/{setup-feature-flags-remote-C803V0VC.js → setup-feature-flags-remote-BKACONdE.js} +1 -1
  111. package/dist/ui/assets/{setup-model-catalog-bxrNmkOq.js → setup-model-catalog-WWCUCy79.js} +1 -1
  112. package/dist/ui/assets/shared-Crk4gYF8.js +1 -0
  113. package/dist/ui/assets/{signed-fetch-CK_GPwxJ.js → signed-fetch-CwZ1-qSJ.js} +1 -1
  114. package/dist/ui/assets/{silent-renew-backoff-CWJs245J.js → silent-renew-backoff-L4eA7UKO.js} +1 -1
  115. package/dist/ui/assets/slicc-version-jRBuHQmT.js +1 -0
  116. package/dist/ui/assets/{snapshot-CcXAgR24.js → snapshot-D4DlVVCr.js} +1 -1
  117. package/dist/ui/assets/{snapshot-features-Bb6rt3T9.js → snapshot-features-Cp2XSvVD.js} +1 -1
  118. package/dist/ui/assets/{soundscape-DWkIHoSH.js → soundscape-CcHroDUu.js} +1 -1
  119. package/dist/ui/assets/{speak-bIrefGJW.js → speak-5UMXEj6t.js} +1 -1
  120. package/dist/ui/assets/{sprinkle-manager-HaLL6TAH.js → sprinkle-manager-ByfWs52B.js} +1 -1
  121. package/dist/ui/assets/{sprinkle-renderer-CH7z9LWi.js → sprinkle-renderer-Dw0Oo-mB.js} +1 -1
  122. package/dist/ui/assets/{ssh-HG-JzaxD.js → ssh-ChyTtRdf.js} +1 -1
  123. package/dist/ui/assets/{state-y36olpuJ.js → state-BPcLy39T.js} +1 -1
  124. package/dist/ui/assets/{store-DI5uS3CV.js → store-BA5jRQLQ.js} +1 -1
  125. package/dist/ui/assets/{store-Dy2vvTSi.js → store-BCOFBOmf.js} +1 -1
  126. package/dist/ui/assets/{sudo-7nF2-79o.js → sudo-CZL3U0lj.js} +1 -1
  127. package/dist/ui/assets/{supervisor-CEG_pawR.js → supervisor-n5AQXVdz.js} +1 -1
  128. package/dist/ui/assets/{sync-dialog-B28jW7rW.js → sync-dialog-CLv-AjS5.js} +1 -1
  129. package/dist/ui/assets/{transformers-env-G9ZvPj4i.js → transformers-env-DuP48CFD.js} +1 -1
  130. package/dist/ui/assets/{tray-leader-CxQceUY8.js → tray-leader-oK24Tenu.js} +1 -1
  131. package/dist/ui/assets/{tray-leave-runtime-B7ePnPKy.js → tray-leave-runtime-BtmhGDJl.js} +1 -1
  132. package/dist/ui/assets/{tray-sidecar-BlpsBLlK.js → tray-sidecar-x9PQcB2n.js} +1 -1
  133. package/dist/ui/assets/{turn-journal-aW8ez41d.js → turn-journal-CScxev4H.js} +1 -1
  134. package/dist/ui/assets/{upgrade-detection-BpdjDhSG.js → upgrade-detection-DS5evAII.js} +1 -1
  135. package/dist/ui/assets/{upskill-lick-skip-DLAifByM.js → upskill-lick-skip-DsgHyVv5.js} +1 -1
  136. package/dist/ui/assets/{voice-reply-DERl1Bi0.js → voice-reply-ebSU1_qk.js} +1 -1
  137. package/dist/ui/assets/{wc-attach-DTYFvNFe.js → wc-attach-525SvDTY.js} +2 -2
  138. package/dist/ui/assets/{wc-browser-CfT_4eXt.js → wc-browser-BWykEy-8.js} +1 -1
  139. package/dist/ui/assets/{wc-computers-CZzSDuty.js → wc-computers-D3Avqz55.js} +1 -1
  140. package/dist/ui/assets/{wc-detached-C-E9uOpQ.js → wc-detached-Cy1E6He4.js} +1 -1
  141. package/dist/ui/assets/{wc-extension-dtGYhAVK.js → wc-extension-CVhWXV2w.js} +2 -2
  142. package/dist/ui/assets/{wc-follower-gU-qxutC.js → wc-follower-C1kJ0lF_.js} +3 -3
  143. package/dist/ui/assets/{wc-follower-oauth-BGkJQhXu.js → wc-follower-oauth-qqfI5zJ5.js} +1 -1
  144. package/dist/ui/assets/{wc-gelatiere-Bwy-mfMy.js → wc-gelatiere-DFV5mBJW.js} +1 -1
  145. package/dist/ui/assets/{wc-live-DOg7ifPs.js → wc-live-Eu6ghZAo.js} +5 -5
  146. package/dist/ui/assets/{wc-nav-Dwr_mhPy.js → wc-nav-BJ1Fg_hB.js} +2 -2
  147. package/dist/ui/assets/{wc-onboarding-BE9A-Amw.js → wc-onboarding-D_k6jMGA.js} +2 -2
  148. package/dist/ui/assets/{wc-permissions-BloJ3nhv.js → wc-permissions-CbwZeya-.js} +2 -2
  149. package/dist/ui/assets/{wc-placeholder-C4vxqDp9.js → wc-placeholder-DzHKpyEK.js} +3 -3
  150. package/dist/ui/assets/{wc-secret-request-BgFU3Vv4.js → wc-secret-request-bOcP6m9U.js} +1 -1
  151. package/dist/ui/assets/{wc-settings-D4tUKiOo.js → wc-settings-BNekAbpv.js} +3 -3
  152. package/dist/ui/assets/{wc-shell-DWs7UK-n.js → wc-shell-DdE40qZj.js} +3 -3
  153. package/dist/ui/assets/{wc-shortcut-config-DVN2gtoP.js → wc-shortcut-config-KdvTJp27.js} +1 -1
  154. package/dist/ui/assets/{wc-sprinkles-DKpkBiOU.js → wc-sprinkles-Bnnb88mU.js} +2 -2
  155. package/dist/ui/assets/{wc-transcript-export-BIr7xQ8r.js → wc-transcript-export-DWOEgP2-.js} +2 -2
  156. package/dist/ui/assets/{wc-tray-CPoilaMn.js → wc-tray-Dpx-EoMd.js} +4 -4
  157. package/dist/ui/assets/welcome-detection-BdEfH_d7.js +1 -0
  158. package/dist/ui/assets/{whisper-session-CjnOyfPM.js → whisper-session-CB6rG-eD.js} +2 -2
  159. package/dist/ui/assets/{xai-grok-CKBHF5WO.js → xai-grok-BGPDFi9z.js} +1 -1
  160. package/dist/ui/assets/{xai-grok-CsjlfFq3.js → xai-grok-CuIlQYpM.js} +1 -1
  161. package/dist/ui/index.html +4 -4
  162. package/dist/ui/packages/webapp/index.html +4 -4
  163. package/package.json +1 -1
  164. package/dist/ui/assets/SKILL-BmcnfP14.js +0 -1
  165. package/dist/ui/assets/bedrock-camp-extra-models-D9acqHGZ.js +0 -1
  166. package/dist/ui/assets/bedrock-camp-extra-models-DdOiIiaZ.js +0 -1
  167. package/dist/ui/assets/ensure-speech-assets-CzLCdx9h.js +0 -1
  168. package/dist/ui/assets/ffmpeg-wasm-DsXD0tX2.js +0 -1
  169. package/dist/ui/assets/installer-BidZuNnC.js +0 -2
  170. package/dist/ui/assets/jsh-executor-B4ySdjop.js +0 -18
  171. package/dist/ui/assets/provider-store-access-XxfYiVq-.js +0 -1
  172. package/dist/ui/assets/provider-store-access-bqTWCaz8.js +0 -1
  173. package/dist/ui/assets/run-2WVtdZpl.js +0 -8
  174. package/dist/ui/assets/shared-De1sMYMX.js +0 -4
  175. package/dist/ui/assets/slicc-version-Da6sXKjo.js +0 -1
  176. package/dist/ui/assets/welcome-detection-B8xTkXMq.js +0 -1
@@ -0,0 +1 @@
1
+ import{n as e}from"./wc-onboarding-D_k6jMGA.js";export{e as hasOnboardingFinalLickInHistory};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-bIrefGJW.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-G9ZvPj4i.js","assets/wc-shell-DWs7UK-n.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-Bj2sWuL9.js","assets/core-D8SLLGdB.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-DiXk_XGs.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/secret-topology-CZv6A9HW.js","assets/float-topology-B0_dG7En.js","assets/secrets-bridge-client-B_CG-HIg.js","assets/port-bridge-client-BiWcfZSc.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-CUOgmyqw.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-C64_Hwco.js","assets/bedrock-camp-extra-models-D9acqHGZ.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-dEBJiC8z.js","assets/wc-shell-WkeczD9x.css","assets/shared-BDXQKitm.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-G9ZvPj4i.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-bIrefGJW.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-5UMXEj6t.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-DuP48CFD.js","assets/wc-shell-DdE40qZj.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-nlKbTUhJ.js","assets/core-D8SLLGdB.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-DiXk_XGs.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/secret-topology-CZv6A9HW.js","assets/float-topology-B0_dG7En.js","assets/secrets-bridge-client-B_CG-HIg.js","assets/port-bridge-client-BiWcfZSc.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-1_CCXdq3.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-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-dEBJiC8z.js","assets/wc-shell-WkeczD9x.css","assets/shared-BDXQKitm.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-DuP48CFD.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-5UMXEj6t.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{a as e}from"./core-D8SLLGdB.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-Bj2sWuL9.js";import"./main-CXeU8DQz.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-D8SLLGdB.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-nlKbTUhJ.js";import"./main-tEtVPbXh.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 +1 @@
1
- import{_ as e,r as t}from"./account-store-BXs7YUd1.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-Dj0t7hQO.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-WmZqlEWG.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-CwNcf5Wq.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-C7UGykIC.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-DzDdkFMx.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};
@@ -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-CXeU8DQz.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-tEtVPbXh.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-D8SLLGdB.js">
33
33
  <link rel="modulepreload" crossorigin href="/assets/bridge-protocol-C52CnDIj.js">
34
- <link rel="modulepreload" crossorigin href="/assets/providers-CUOgmyqw.js">
34
+ <link rel="modulepreload" crossorigin href="/assets/providers-1_CCXdq3.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
- <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-extra-models-D9acqHGZ.js">
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-Bj2sWuL9.js">
39
+ <link rel="modulepreload" crossorigin href="/assets/account-store-nlKbTUhJ.js">
40
40
  <link rel="modulepreload" crossorigin href="/assets/telemetry-CKoAhRMv.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-CXeU8DQz.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-tEtVPbXh.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-D8SLLGdB.js">
33
33
  <link rel="modulepreload" crossorigin href="/assets/bridge-protocol-C52CnDIj.js">
34
- <link rel="modulepreload" crossorigin href="/assets/providers-CUOgmyqw.js">
34
+ <link rel="modulepreload" crossorigin href="/assets/providers-1_CCXdq3.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
- <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-extra-models-D9acqHGZ.js">
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-Bj2sWuL9.js">
39
+ <link rel="modulepreload" crossorigin href="/assets/account-store-nlKbTUhJ.js">
40
40
  <link rel="modulepreload" crossorigin href="/assets/telemetry-CKoAhRMv.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.210.1",
3
+ "version": "6.211.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. Unknown install flags fail instead of being ignored. `ipk install` with no package names installs declared `dependencies` and `devDependencies` 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.\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), but nothing reaches the internet that way — only `localhost` / `127.0.0.1` resolve.\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`). 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{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,t as n}from"./bedrock-camp-compat-C64_Hwco.js";var r=e({BEDROCK_CAMP_EXTRA_MODELS:()=>d,mergeBedrockCampCatalogue:()=>m}),i=1.1,a=e=>Math.round(e*1e6)/1e6;function o(e,t){return{input:a(e.input*t),output:a(e.output*t),cacheRead:a(e.cacheRead*t),cacheWrite:a(e.cacheWrite*t)}}function s(e,t){let n=o(e,t);return e.tiers&&(n.tiers=e.tiers.map(e=>({...o(e,t),inputTokensAbove:e.inputTokensAbove}))),n}var c={global:`Global`,us:`US`,eu:`EU`,jp:`JP`,au:`AU`},l=[{baseId:`anthropic.claude-opus-5-5`,name:`Claude Opus 5.5`,profiles:[`global`,`us`,`eu`,`jp`,`au`],globalCost:{input:4,output:20,cacheRead:.2,cacheWrite:5},contextWindow:1e6,maxTokens:128e3,thinkingLevelMap:{xhigh:`xhigh`,max:`max`}},{baseId:`anthropic.claude-fable-5-1`,name:`Claude Fable 5.1`,profiles:[`global`,`us`],globalCost:{input:10,output:50,cacheRead:.25,cacheWrite:12.5},contextWindow:1e6,maxTokens:128e3,thinkingLevelMap:{off:null,xhigh:`xhigh`,max:`max`}},{baseId:`openai.gpt-6-sol`,name:`GPT-6 Sol`,profiles:[`global`,`us`],globalCost:{input:2,output:10,cacheRead:.2,cacheWrite:2.5,tiers:[{inputTokensAbove:272e3,input:4,output:15,cacheRead:.4,cacheWrite:5}]},contextWindow:105e4,maxTokens:128e3,thinkingLevelMap:t},{baseId:`openai.gpt-6-luna`,name:`GPT-6 Luna`,profiles:[`global`,`us`],globalCost:{input:.1,output:.5,cacheRead:.01,cacheWrite:.125,tiers:[{inputTokensAbove:272e3,input:.2,output:.75,cacheRead:.02,cacheWrite:.25}]},contextWindow:105e4,maxTokens:128e3,thinkingLevelMap:t},{baseId:`openai.gpt-6-astra`,name:`GPT-6 Astra`,profiles:[`global`,`us`],globalCost:{input:10,output:50,cacheRead:1,cacheWrite:12.5,tiers:[{inputTokensAbove:272e3,input:20,output:75,cacheRead:2,cacheWrite:25}]},contextWindow:105e4,maxTokens:128e3,thinkingLevelMap:n},{baseId:`moonshotai.kimi-k3`,name:`Kimi K3`,profiles:[`global`,`us`],globalCost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1048576,maxTokens:128e3}];function u(e){return e.profiles.map(t=>({id:`${t}.${e.baseId}`,name:`${e.name} (${c[t]})`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:s(e.globalCost,t===`global`?1:i),contextWindow:e.contextWindow,maxTokens:e.maxTokens,...e.thinkingLevelMap?{thinkingLevelMap:{...e.thinkingLevelMap}}:{}}))}var d=l.flatMap(u);function f(e,t){return e.input===t.input&&e.output===t.output&&e.cacheRead===t.cacheRead&&e.cacheWrite===t.cacheWrite}function p(e,t){let n=t?.cost;return!n?.tiers||!e.cost||e.cost.tiers||!f(e.cost,n)?e:{...e,cost:{...e.cost,tiers:n.tiers.map(e=>({...e}))}}}function m(e,t){let n=new Map(t.map(e=>[e.id,e])),r=new Set(e.map(e=>e.id));return[...e.map(e=>p(e,n.get(e.id))),...t.filter(e=>!r.has(e.id))]}export{r as n,m as r,d as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,t as n}from"./bedrock-camp-compat-DC2y4xqC.js";var r=e({BEDROCK_CAMP_EXTRA_MODELS:()=>u,mergeBedrockCampCatalogue:()=>p});const i=e=>Math.round(e*1e6)/1e6;function a(e,t){return{input:i(e.input*t),output:i(e.output*t),cacheRead:i(e.cacheRead*t),cacheWrite:i(e.cacheWrite*t)}}function o(e,t){let n=a(e,t);return e.tiers&&(n.tiers=e.tiers.map(e=>({...a(e,t),inputTokensAbove:e.inputTokensAbove}))),n}const s={global:`Global`,us:`US`,eu:`EU`,jp:`JP`,au:`AU`},c=[{baseId:`anthropic.claude-opus-5-5`,name:`Claude Opus 5.5`,profiles:[`global`,`us`,`eu`,`jp`,`au`],globalCost:{input:4,output:20,cacheRead:.2,cacheWrite:5},contextWindow:1e6,maxTokens:128e3,thinkingLevelMap:{xhigh:`xhigh`,max:`max`}},{baseId:`anthropic.claude-fable-5-1`,name:`Claude Fable 5.1`,profiles:[`global`,`us`],globalCost:{input:10,output:50,cacheRead:.25,cacheWrite:12.5},contextWindow:1e6,maxTokens:128e3,thinkingLevelMap:{off:null,xhigh:`xhigh`,max:`max`}},{baseId:`openai.gpt-6-sol`,name:`GPT-6 Sol`,profiles:[`global`,`us`],globalCost:{input:2,output:10,cacheRead:.2,cacheWrite:2.5,tiers:[{inputTokensAbove:272e3,input:4,output:15,cacheRead:.4,cacheWrite:5}]},contextWindow:105e4,maxTokens:128e3,thinkingLevelMap:t},{baseId:`openai.gpt-6-luna`,name:`GPT-6 Luna`,profiles:[`global`,`us`],globalCost:{input:.1,output:.5,cacheRead:.01,cacheWrite:.125,tiers:[{inputTokensAbove:272e3,input:.2,output:.75,cacheRead:.02,cacheWrite:.25}]},contextWindow:105e4,maxTokens:128e3,thinkingLevelMap:t},{baseId:`openai.gpt-6-astra`,name:`GPT-6 Astra`,profiles:[`global`,`us`],globalCost:{input:10,output:50,cacheRead:1,cacheWrite:12.5,tiers:[{inputTokensAbove:272e3,input:20,output:75,cacheRead:2,cacheWrite:25}]},contextWindow:105e4,maxTokens:128e3,thinkingLevelMap:n},{baseId:`moonshotai.kimi-k3`,name:`Kimi K3`,profiles:[`global`,`us`],globalCost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1048576,maxTokens:128e3}];function l(e){return e.profiles.map(t=>({id:`${t}.${e.baseId}`,name:`${e.name} (${s[t]})`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:o(e.globalCost,t===`global`?1:1.1),contextWindow:e.contextWindow,maxTokens:e.maxTokens,...e.thinkingLevelMap?{thinkingLevelMap:{...e.thinkingLevelMap}}:{}}))}const u=c.flatMap(l);function d(e,t){return e.input===t.input&&e.output===t.output&&e.cacheRead===t.cacheRead&&e.cacheWrite===t.cacheWrite}function f(e,t){let n=t?.cost;return!n?.tiers||!e.cost||e.cost.tiers||!d(e.cost,n)?e:{...e,cost:{...e.cost,tiers:n.tiers.map(e=>({...e}))}}}function p(e,t){let n=new Map(t.map(e=>[e.id,e])),r=new Set(e.map(e=>e.id));return[...e.map(e=>f(e,n.get(e.id))),...t.filter(e=>!r.has(e.id))]}export{r as n,p as r,u as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import"./proxied-fetch-DXaTHROw.js";import{t}from"./runtime-env-DadgceZk.js";import"./shared-De1sMYMX.js";import{n}from"./hf-defaults-BwJdGLgk.js";import{r}from"./installer-BidZuNnC.js";import{downloadHfRepo as i}from"./hf-download-CNg2vD63.js";e(`speech:espeak`);const a=[`ort-wasm-simd-threaded.jsep.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.jsep.wasm`,`ort-wasm-simd-threaded.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort.wasm`,`ort-wasm-simd-threaded.asyncify.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.asyncify.wasm`,`ort-wasm-simd-threaded.jspi.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.31.0-dev.20260914-8d85527a0/dist/ort-wasm-simd-threaded.jspi.wasm`],o=e(`speech:ensure-assets`),s=`onnxruntime-web`,c=`${s}@1.31.0-dev.20260914-8d85527a0`,l=`espeak-ng`,u=[`espeak-ng.js`,`espeak-ng.wasm`],d=`/workspace`,f=t,p=a.filter(e=>!/\.(asyncify|jspi)\./.test(e));async function m(e){try{let t=await e.readFile(`/workspace/node_modules/onnxruntime-web/package.json`,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);if(r&&typeof r==`object`&&`version`in r&&typeof r.version==`string`)return r.version}catch{}return null}async function h(e,t){let n=await Promise.all(p.map(t=>e.fs.exists(`/workspace/node_modules/onnxruntime-web/dist/${t}`))),i=await m(e.fs);if(n.every(Boolean)&&i===`1.31.0-dev.20260914-8d85527a0`)return t?.({asset:s,phase:`present`}),!1;t?.({asset:s,phase:`staging`});let{errors:a}=await r([c],{fs:e.fs,fetch:e.fetch,cwd:d});if(a.length>0)throw Error(`failed to stage ${s} wasm runtime: ${a[0].error.message}`);return t?.({asset:s,phase:`done`}),!0}async function g(e,t){if((await Promise.all(u.map(t=>e.fs.exists(`/workspace/node_modules/espeak-ng/dist/${t}`)))).every(Boolean))return t?.({asset:l,phase:`present`}),!1;t?.({asset:l,phase:`staging`});let{errors:n}=await r([l],{fs:e.fs,fetch:e.fetch,cwd:d});if(n.length>0)throw Error(`failed to stage ${l} wasm: ${n[0].error.message}`);return t?.({asset:l,phase:`done`}),!0}async function _(e,t){try{return await g(e,t)}catch(e){return o.warn(`optional espeak-ng staging failed; non-English Kokoro voices may fall back`,e),!1}}async function v(e,t,r){let a=n(t,null,d),o=0,s=await i({fetch:e.fetch,fs:e.fs,repo:t,targetDir:a,progress:{onListed:({files:e,totalBytes:n})=>r?.({asset:t,phase:`listing`,filesLoaded:0,filesTotal:e.length,bytesLoaded:0,bytesTotal:n}),onFile:e=>{o+=e.bytes,r?.({asset:t,phase:e.status,file:e.file,filesLoaded:e.index,filesTotal:e.total,bytesLoaded:o})}}});return r?.({asset:t,phase:`done`,filesLoaded:s.files.length,filesTotal:s.files.length,bytesLoaded:o,bytesTotal:o}),{repo:t,downloaded:s.downloaded,skipped:s.skipped}}async function y(e,t){if(f())return{skipped:!0,ortStaged:!1,espeakStaged:!1,repos:[]};let n=await h(e,t),r=e.repos??[`onnx-community/whisper-tiny`,`onnx-community/Kokoro-82M-v1.0-ONNX`],i=[];for(let n of r)i.push(await v(e,n,t));let a=await _(e,t);return o.info(`speech assets staged`,{ortStaged:n,espeakStaged:a,repos:i.length}),{skipped:!1,ortStaged:n,espeakStaged:a,repos:i}}export{y as ensureSpeechAssetsStaged};
@@ -1 +0,0 @@
1
- import{a as e}from"./path-utils-DNJG-zQf.js";import{C as t,p as n,t as r}from"./shared-De1sMYMX.js";var i;(function(e){e.LOAD=`LOAD`,e.EXEC=`EXEC`,e.FFPROBE=`FFPROBE`,e.WRITE_FILE=`WRITE_FILE`,e.READ_FILE=`READ_FILE`,e.DELETE_FILE=`DELETE_FILE`,e.RENAME=`RENAME`,e.CREATE_DIR=`CREATE_DIR`,e.LIST_DIR=`LIST_DIR`,e.DELETE_DIR=`DELETE_DIR`,e.ERROR=`ERROR`,e.DOWNLOAD=`DOWNLOAD`,e.PROGRESS=`PROGRESS`,e.LOG=`LOG`,e.MOUNT=`MOUNT`,e.UNMOUNT=`UNMOUNT`})(i||={});const a=(()=>{let e=0;return()=>e++})(),o=Error("ffmpeg is not loaded, call `await ffmpeg.load()` first"),s=Error(`called FFmpeg.terminate()`);var c=class{#e=null;#t={};#n={};#r=[];#i=[];loaded=!1;#a=()=>{this.#e&&(this.#e.onmessage=({data:{id:e,type:t,data:n}})=>{switch(t){case i.LOAD:this.loaded=!0,this.#t[e](n);break;case i.MOUNT:case i.UNMOUNT:case i.EXEC:case i.FFPROBE:case i.WRITE_FILE:case i.READ_FILE:case i.DELETE_FILE:case i.RENAME:case i.CREATE_DIR:case i.LIST_DIR:case i.DELETE_DIR:this.#t[e](n);break;case i.LOG:this.#r.forEach(e=>e(n));break;case i.PROGRESS:this.#i.forEach(e=>e(n));break;case i.ERROR:this.#n[e](n)}delete this.#t[e],delete this.#n[e]})};#o=({type:e,data:t},n=[],r)=>this.#e?new Promise((i,o)=>{let s=a();this.#e&&this.#e.postMessage({id:s,type:e,data:t},n),this.#t[s]=i,this.#n[s]=o,r?.addEventListener(`abort`,()=>{o(new DOMException(`Message # ${s} was aborted`,`AbortError`))},{once:!0})}):Promise.reject(o);on(e,t){e===`log`?this.#r.push(t):e===`progress`&&this.#i.push(t)}off(e,t){e===`log`?this.#r=this.#r.filter(e=>e!==t):e===`progress`&&(this.#i=this.#i.filter(e=>e!==t))}load=({classWorkerURL:e,...t}={},{signal:n}={})=>(this.#e||(this.#e=e?new Worker(new URL(e,import.meta.url),{type:`module`}):new Worker(new URL(`/assets/worker-D1KsWRGg.js`,``+import.meta.url),{type:`module`}),this.#a()),this.#o({type:i.LOAD,data:t},void 0,n));exec=(e,t=-1,{signal:n}={})=>this.#o({type:i.EXEC,data:{args:e,timeout:t}},void 0,n);ffprobe=(e,t=-1,{signal:n}={})=>this.#o({type:i.FFPROBE,data:{args:e,timeout:t}},void 0,n);terminate=()=>{let e=Object.keys(this.#n);for(let t of e)this.#n[t](s),delete this.#n[t],delete this.#t[t];this.#e&&(this.#e.terminate(),this.#e=null,this.loaded=!1)};writeFile=(e,t,{signal:n}={})=>{let r=[];return t instanceof Uint8Array&&r.push(t.buffer),this.#o({type:i.WRITE_FILE,data:{path:e,data:t}},r,n)};mount=(e,t,n)=>this.#o({type:i.MOUNT,data:{fsType:e,options:t,mountPoint:n}},[]);unmount=e=>this.#o({type:i.UNMOUNT,data:{mountPoint:e}},[]);readFile=(e,t=`binary`,{signal:n}={})=>this.#o({type:i.READ_FILE,data:{path:e,encoding:t}},void 0,n);deleteFile=(e,{signal:t}={})=>this.#o({type:i.DELETE_FILE,data:{path:e}},void 0,t);rename=(e,t,{signal:n}={})=>this.#o({type:i.RENAME,data:{oldPath:e,newPath:t}},void 0,n);createDir=(e,{signal:t}={})=>this.#o({type:i.CREATE_DIR,data:{path:e}},void 0,t);listDir=(e,{signal:t}={})=>this.#o({type:i.LIST_DIR,data:{path:e}},void 0,t);deleteDir=(e,{signal:t}={})=>this.#o({type:i.DELETE_DIR,data:{path:e}},void 0,t)},l;(function(e){e.MEMFS=`MEMFS`,e.NODEFS=`NODEFS`,e.NODERAWFS=`NODERAWFS`,e.IDBFS=`IDBFS`,e.WORKERFS=`WORKERFS`,e.PROXYFS=`PROXYFS`})(l||={});const u=`0.12.10`,d=`@ffmpeg/core is not installed in node_modules: run \`${r} @ffmpeg/core@${u}\` (no network fallback)`,f=`@ffmpeg/core-mt`,p=`@ffmpeg/core-mt is not installed in node_modules (FFMPEG_CORE=mt asked for the multi-threaded core): run \`${r} ${f}@${u}\`, or unset FFMPEG_CORE and run \`${r} @ffmpeg/core@${u}\` (no network fallback)`;function m(){return globalThis.crossOriginIsolated===!0}function h(e=!1){return e&&m()?p:d}function g(e,t=m(),n=typeof navigator<`u`?navigator.hardwareConcurrency:void 0){let i=`${e.pkg} ${u}`;return e.pkg===`@ffmpeg/core-mt`?`${i} (multi-threaded${typeof n==`number`&&n>0?`, ${n} threads`:``}; single-input jobs only)`:t?`${i} (single-threaded; the multi-threaded core is opt-in on this isolated runtime: \`${r} ${f}@${u}\` then FFMPEG_CORE=mt, single-input jobs only)`:`${i} (single-threaded; runtime is not cross-origin isolated)`}const _=[`dist/esm`];async function v(e,t,n){for(let r of _){let i=`${e}/${r}`,a={core:`${i}/ffmpeg-core.js`,wasm:`${i}/ffmpeg-core.wasm`,worker:t===`@ffmpeg/core-mt`?`${i}/ffmpeg-core.worker.js`:null};if(await n.exists(a.core)&&await n.exists(a.wasm)&&!(a.worker&&!await n.exists(a.worker)))return a}return null}let y=null,b=null,x=[],S=null;function C(){return S}function w(e){for(let t of e)try{URL.revokeObjectURL(t)}catch{}}async function T(e={}){return y||=E(e.onProgress,e.ipk,e.preferMt===!0).catch(e=>{throw y=null,e}),y}async function E(e,t,n){let r=e??(()=>{}),i=new c,a=await k(t,r,n),o=[a.coreURL,a.wasmURL,a.workerURL,a.classWorkerURL].filter(e=>typeof e==`string`);r(`initializing ffmpeg-core...`);try{await i.load({coreURL:a.coreURL,wasmURL:a.wasmURL,...a.workerURL?{workerURL:a.workerURL}:{},...a.classWorkerURL?{classWorkerURL:a.classWorkerURL}:{}})}catch(e){throw w(o),e}return r(`ffmpeg ready`),b=i,x=o,S=a.pkg,i}async function D(n,r,i=!1){if(r===void 0)return O(n,i&&m());let a;try{a=await t(`${r}/package.json`,n.fromDir,n.reader)}catch{return null}if(a.type!==`file`)return null;let o=await v(e(a.path).dir,r,n.reader);if(!o)return null;try{let e=await n.reader.readFile(o.core),t=await n.readBytes(o.wasm),i=o.worker?await n.reader.readFile(o.worker):void 0;return{pkg:r,coreSource:e,wasmBytes:t,...i===void 0?{}:{workerSource:i}}}catch{return null}}async function O(e,t){if(t){let t=await D(e,f);if(t)return t}return D(e,`@ffmpeg/core`)}async function k(e,t,r){if(n())throw Error(`ffmpeg-wasm is not available in Node runtime`);let i=r&&m();if(!e)throw Error(h(i));let a=await O(e,i);if(!a)throw Error(h(i));t(`${a.pkg} loaded from ipk node_modules (js: ${a.coreSource.length} chars, wasm: ${a.wasmBytes.byteLength} bytes${a.workerSource?`, multi-threaded`:``})`);let o=A(a.wasmBytes,`application/wasm`);return{pkg:a.pkg,coreURL:j(a.coreSource,`text/javascript`),wasmURL:o,...a.workerSource===void 0?{}:{workerURL:j(a.workerSource,`text/javascript`)}}}function A(e,t){let n=new ArrayBuffer(e.byteLength);return new Uint8Array(n).set(e),URL.createObjectURL(new Blob([n],{type:t}))}function j(e,t){return URL.createObjectURL(new Blob([e],{type:t}))}function M(e){if(typeof WebAssembly<`u`&&e instanceof WebAssembly.RuntimeError||e instanceof RangeError)return!0;let t=e instanceof Error?e.message:String(e);return/RuntimeError|memory access out of bounds|unreachable|Aborted|out of memory|allocation failed|table index is out of bounds|function signature mismatch/i.test(t)}function N(e){if(e!==void 0&&b!==e)return;let t=b,n=x;if(y=null,b=null,x=[],S=null,t)try{t.terminate()}catch{}w(n)}export{T as a,N as c,h as i,D as l,f as n,M as o,g as r,C as s,u as t};
@@ -1,2 +0,0 @@
1
- import{t as e}from"./types-D8gIX-W-.js";import"./fs-C7Qh7l0E.js";import{a as t,i as n,n as r,r as i,t as a}from"./global-prefix-DqCuANmV.js";import{D as o,E as s,T as c,w as l}from"./shared-De1sMYMX.js";import{r as u,t as d}from"./tar-BWIPCxI2.js";function f(e,...t){return`/${[e,...t].join(`/`).split(`/`).filter(e=>e.length>0).join(`/`)}`}function p(e){let t=JSON.stringify(e);return[`// ${a}`,`const { start } = require('sliccy:exec');`,`const __bin = ${t};`,`const __argv = ['ipx', '--global', __bin, ...process.argv.slice(2)];`,`const __stdin = typeof stdin !== 'undefined' ? stdin : undefined;`,`const __h = start(__argv, __stdin !== undefined ? { stdin: __stdin } : undefined);`,`__h.stdin.end();`,`const __r = await __h.done;`,`if (__r.stdout) process.stdout.write(__r.stdout);`,`if (__r.stderr) process.stderr.write(__r.stderr);`,`process.exit(__r.exitCode);`,``].join(`
2
- `)}var m=class extends Error{binName;path;constructor(e,t){super(`ipk: refusing to overwrite user script at ${t} (bin '${e}')`),this.binName=e,this.path=t,this.name=`GlobalBinCollisionError`}};async function h(e,t){if(t.size!==0){await e.exists(`/shared/bin`)||await e.mkdir(r,{recursive:!0});for(let n of t){if(!n||n.includes(`/`))continue;let t=f(r,`${n}.jsh`);if(await e.exists(t)&&!await g(e,t))throw new m(n,t)}}}async function g(e,t){try{let n=await e.readFile(t);return(typeof n==`string`?n:new TextDecoder().decode(n)).includes(a)}catch{return!1}}async function _(e,t){if(!await e.exists(`/shared/bin`)){if(t.size===0)return;await e.mkdir(r,{recursive:!0})}let n=[];try{n=await e.readDir(r)}catch{n=[]}for(let i of n){if(i.type!==`file`||!i.name.endsWith(`.jsh`))continue;let n=i.name.slice(0,-4);if(t.has(n))continue;let a=f(r,i.name);await g(e,a)&&await e.rm(a)}for(let n of t){if(!n||n.includes(`/`))continue;let t=f(r,`${n}.jsh`);if(await e.exists(t)&&!await g(e,t))throw new m(n,t);await e.writeFile(t,p(n))}}function v(e){let t=(e??``).trim();if(!t)throw Error(`ipk: package spec is required`);if(t.startsWith(`@`)){let e=t.indexOf(`/`);if(e===-1)throw Error(`ipk: scoped spec '${t}' is missing a name (expected @scope/name)`);let n=t.slice(e+1),r=n.indexOf(`@`),i=t.slice(0,e);return r===-1?{name:`${i}/${n}`,range:``}:{name:`${i}/${n.slice(0,r)}`,range:n.slice(r+1)}}let n=t.indexOf(`@`);return n===-1?{name:t,range:``}:{name:t.slice(0,n),range:t.slice(n+1)}}function y(e,...t){return`/${[e,...t].join(`/`).split(`/`).filter(e=>e.length>0).join(`/`)}`}function b(e,t){if(t.startsWith(`@`)){let[n,r]=t.split(`/`,2);return y(e,n,r)}return y(e,t)}async function x(e,t){await e.mkdir(t,{recursive:!0})}async function S(e,t){await e.exists(t)&&await e.rm(t,{recursive:!0})}function C(e){return`^${e}`}function w(e,t){let n=e.range.trim();return n===``||n===`*`||n===`latest`||/^[A-Za-z][A-Za-z0-9_-]*$/.test(n)?C(t):n}async function T(e,t,n){for(let r of n){if(!r.path)continue;let n=r.path.replace(/\\/g,`/`).replace(/^\/+/,``);if(n.split(`/`).some(e=>e===`..`))throw Error(`installer: refusing to extract entry escaping package root: ${r.path}`);let i=y(t,n),a=i.lastIndexOf(`/`);a>0&&await x(e,i.slice(0,a)),await e.writeFile(i,r.bytes)}}async function E(t,n,r){let i;try{i=await t.readFile(n)}catch(t){if(t instanceof e&&t.code===`ENOENT`)return r;throw t}return JSON.parse(i)}async function D(t,n,r){let i;try{i=await t.readFile(n)}catch(t){if(t instanceof e&&t.code===`ENOENT`)return r;throw t}if(!i?.trim())return r;try{return JSON.parse(i)}catch{return r}}const O=[`dependencies`,`devDependencies`,`optionalDependencies`,`peerDependencies`];function k(e,t){return e!==void 0&&Object.hasOwn(e,t)}function A(e,t,n){return n||k(e.devDependencies,t)?`devDependencies`:k(e.optionalDependencies,t)?`optionalDependencies`:k(e.peerDependencies,t)?`peerDependencies`:`dependencies`}function ee(e,t){let n=e[A(e,t,!1)]?.[t];return typeof n==`string`&&n.trim()!==``?n:void 0}function te(e,t){if(e.range.trim()!==``)return e;let n=ee(t,e.name);return n===void 0?e:{name:e.name,range:n}}function ne(e,t){let n={dependencies:{...e.dependencies??{}},devDependencies:{...e.devDependencies??{}},optionalDependencies:{...e.optionalDependencies??{}},peerDependencies:{...e.peerDependencies??{}}},r=new Set;for(let e of t){for(let t of O)delete n[t][e.name];n[e.section][e.name]=e.range,r.add(e.section)}let i={...e};for(let t of O)(e[t]!==void 0||r.has(t))&&(i[t]=n[t]);return i}function j(e,t){let n=new Map;return{supplier:async r=>{let i=n.get(r);return i||(i=await c(r,e,{timeoutMs:t}),n.set(r,i),i)},cache:n}}async function re(e,t,n){let r=[],i=[],a=new Set;for(let s of e){let e;try{e=v(s)}catch(e){i.push({spec:s,error:M(e)});continue}if(n&&(e=te(e,n)),a.has(e.name)){let t=r.findIndex(t=>t.parsed.name===e.name);t>=0&&r.splice(t,1)}try{let n=await t(e.name);o(n,e.range)}catch(e){i.push({spec:s,error:M(e)});continue}r.push({spec:s,parsed:e}),a.add(e.name)}return{directs:r,errors:i}}function M(e){return e instanceof Error?e:Error(String(e))}async function N(e,t,n,r,i){let a=b(t,n.name),o=y(a,`package.json`),c=!1;if(await e.exists(o)&&(await D(e,o,null))?.version===n.version&&(c=!0),!c){let t=await s(n.resolved,r,{timeoutMs:i}),o=u(d(t));await S(e,a),await x(e,a);try{await T(e,a,o)}catch(t){throw await S(e,a),t}}let l=Object.keys(n.dependencies);if(l.length>0){let t=y(a,`node_modules`);await x(e,t);for(let a of l)await N(e,t,n.dependencies[a],r,i)}}async function P(e,t,n,r,i){let a=Object.keys(n.root);if(a.length!==0){await x(e,t);for(let o of a)await N(e,t,n.root[o],r,i)}}function F(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function I(e,t){return typeof e==`string`?{[F(t)]:e}:e}function L(e){return e.replace(/^\.\//,``).replace(/^\/+/,``)}function ie(e){return`#!/usr/bin/env node\nrequire(${JSON.stringify(e)});\n`}async function R(e,t){let n=[];return await z(e,t,0,n),n}async function z(e,t,n,r){if(!await e.exists(t))return;let i;try{i=await e.readDir(t)}catch{return}for(let a of i){if(a.type!==`directory`||a.name===`.bin`)continue;if(a.name.startsWith(`@`)){let i=y(t,a.name),o;try{o=await e.readDir(i)}catch{continue}for(let t of o){if(t.type!==`directory`)continue;let o=`${a.name}/${t.name}`;await B(e,y(i,t.name),o,n,r)}continue}let i=a.name;await B(e,y(t,a.name),i,n,r)}}async function B(e,t,n,r,i){let a=await D(e,y(t,`package.json`),null);if(a?.bin!==void 0&&a.bin!==null){let e=I(a.bin,n);for(let[a,o]of Object.entries(e))typeof a==`string`&&a.length!==0&&typeof o==`string`&&o.length!==0&&i.push({binName:a,pkgName:n,installDir:t,binPath:o,depth:r})}await z(e,y(t,`node_modules`),r+1,i)}function V(e){let t=new Map;for(let n of e){let e=t.get(n.binName);if(!e){t.set(n.binName,n);continue}(n.depth<e.depth||n.depth===e.depth&&n.pkgName<e.pkgName)&&t.set(n.binName,n)}return t}function H(e,t,n,r){let i=b(e,t.name);if(t.bin!==void 0&&t.bin!==null){let e=I(t.bin,t.name);for(let[a,o]of Object.entries(e))typeof a==`string`&&a.length!==0&&typeof o==`string`&&o.length!==0&&r.push({binName:a,pkgName:t.name,installDir:i,binPath:o,depth:n})}let a=y(i,`node_modules`);for(let e of Object.values(t.dependencies))H(a,e,n+1,r)}function U(e,t){let n=[];for(let r of Object.values(e.root))H(t,r,0,n);return n}function W(e,t){return new Set(V(U(e,t)).keys())}function G(e,t,n){return`..${t.slice(e.length)}/${L(n)}`}async function K(e,t){let n=V(await R(e,t)),r=y(t,`.bin`);if(await e.exists(r)){let t;try{t=await e.readDir(r)}catch{t=[]}for(let i of t)i.type===`file`&&(n.has(i.name)||await e.rm(y(r,i.name)))}if(n.size!==0){await x(e,r);for(let i of n.values()){let n=y(r,i.binName),a=ie(G(t,i.installDir,i.binPath));await e.writeFile(n,a)}}}async function q(e,t,n){let r=y(t,`package.json`),i=ne(await E(e,r,{}),n);return await e.writeFile(r,`${JSON.stringify(i,null,2)}\n`),r}async function J(e,t){let{fs:r,fetch:a,cwd:o,timeoutMs:s,global:c=!1,saveDev:u=!1}=t;if(e.length===0)return{results:[],errors:[]};let d=c?n:o,f=await E(r,y(d,`package.json`),{}),{supplier:p}=j(a,s),{directs:m,errors:g}=await re(e,p,f);if(m.length===0)return{results:[],errors:g};let v={};if(c)for(let e of Z(f))v[e.name]=e.range;for(let e of m)v[e.parsed.name]=e.parsed.range;let x=await l({rootDependencies:v,fetchPackument:p}),S=c?i:y(o,`node_modules`);if(c&&(await $(r,S,new Set(Object.keys(x.root))),await h(r,W(x,S))),await P(r,S,x,a,s),await K(r,S),c){let e=V(await R(r,S));await _(r,new Set(e.keys()))}let C=await q(r,d,m.map(e=>{let t=x.root[e.parsed.name];if(!t)throw Error(`installer: resolved node missing for ${e.parsed.name}`);return{name:e.parsed.name,range:w(e.parsed,t.version),section:A(f,e.parsed.name,u)}}));return{results:m.map(e=>{let t=x.root[e.parsed.name],n=b(S,e.parsed.name);return{ok:!0,name:e.parsed.name,version:t.version,installPath:n,range:w(e.parsed,t.version),manifestPath:C}}),errors:g}}var Y=class extends Error{constructor(e){super(`no package.json found at ${e} (run 'ipk install <pkg>' to create one, or add a package.json)`),this.name=`ManifestNotFoundError`}};function X(e,t){if(!(!t||typeof t!=`object`))for(let[n,r]of Object.entries(t))typeof n==`string`&&typeof r==`string`&&e.set(n,r)}function ae(e){let t=new Map;return X(t,e.devDependencies),X(t,e.dependencies),Array.from(t.entries()).map(([e,t])=>({name:e,range:t}))}function Z(e){let t=new Map;return X(t,e.dependencies),X(t,e.peerDependencies),X(t,e.optionalDependencies),X(t,e.devDependencies),Array.from(t.entries()).map(([e,t])=>({name:e,range:t}))}async function oe(e){let{fs:t,fetch:n,cwd:r,timeoutMs:i}=e,a=y(r,`package.json`);if(!await t.exists(a))throw new Y(a);let s=ae(await E(t,a,{}));if(s.length===0)return{results:[],errors:[],empty:!0};let{supplier:c}=j(n,i),u=[],d=[];for(let e of s)try{let t=await c(e.name);o(t,e.range),u.push(e)}catch(t){d.push({spec:`${e.name}@${e.range}`,error:M(t)})}if(u.length===0)return{results:[],errors:d,empty:!1};let f={};for(let e of u)f[e.name]=e.range;let p=await l({rootDependencies:f,fetchPackument:c}),m=y(r,`node_modules`);return await P(t,m,p,n,i),await K(t,m),{results:u.map(e=>{let t=p.root[e.name];return t?{ok:!0,name:e.name,version:t.version,installPath:b(m,e.name),range:e.range,manifestPath:a}:null}).filter(e=>e!==null),errors:d,empty:!1}}function se(e,t){return O.some(n=>k(e[n],t))}function Q(e,t){let n={...e};for(let r of O){let i={...e[r]??{}};for(let e of t)delete i[e];e[r]!==void 0&&(n[r]=i)}return n}async function ce(e,t,n){await e.writeFile(t,`${JSON.stringify(n,null,2)}\n`)}async function $(e,t,n){if(!await e.exists(t))return;let r;try{r=await e.readDir(t)}catch{return}for(let i of r)if(i.name!==`.bin`&&i.type===`directory`){if(i.name.startsWith(`@`)){let r=y(t,i.name),a;try{a=await e.readDir(r)}catch{continue}for(let t of a){if(t.type!==`directory`)continue;let a=`${i.name}/${t.name}`;n.has(a)||await S(e,y(r,t.name))}continue}n.has(i.name)||await S(e,y(t,i.name))}}async function le(e,n,r,a){let o=Z(a??await E(e,t,{}));if(o.length===0){await S(e,i),await _(e,new Set);return}let{supplier:s}=j(n,r),c={};for(let e of o)c[e.name]=e.range;let u=await l({rootDependencies:c,fetchPackument:s});await $(e,i,new Set(Object.keys(u.root))),await h(e,W(u,i)),await P(e,i,u,n,r),await K(e,i);let d=V(await R(e,i));await _(e,new Set(d.keys()))}async function ue(e,t){let{fs:r,fetch:i,cwd:a,timeoutMs:o,global:s=!1}=t;if(e.length===0)return{results:[],errors:[]};let c=new Set,l=[];for(let t of e)try{c.add(v(t).name)}catch(e){l.push({spec:t,error:M(e)})}if(c.size===0)return{results:[],errors:l};let u=y(s?n:a,`package.json`);if(!await r.exists(u)){for(let t of e)l.push({spec:t,error:new Y(u)});return{results:[],errors:l}}let d=await E(r,u,{}),f=[];for(let e of c)f.push({name:e,removed:se(d,e)});let p=Q(d,c);try{s?await le(r,i,o,p):await de(r,i,a,o,p)}catch(t){return l.push({spec:e.join(` `),error:M(t)}),{results:f,errors:l}}return await ce(r,u,p),{results:f,errors:l}}async function de(e,t,n,r,i){let a=y(n,`package.json`),o=Z(i??await E(e,a,{})),s=y(n,`node_modules`);if(o.length===0){await S(e,s);return}let{supplier:c}=j(t,r),u={};for(let e of o)u[e.name]=e.range;let d=await l({rootDependencies:u,fetchPackument:c});await $(e,s,new Set(Object.keys(d.root))),await P(e,s,d,t,r),await K(e,s)}async function fe(e){let n=Z(await E(e,t,{})),r=[];for(let t of n){let n=await D(e,y(b(i,t.name),`package.json`),{});r.push({name:t.name,version:typeof n.version==`string`?n.version:`?`,range:t.range})}return r.sort((e,t)=>e.name.localeCompare(t.name)),r}async function pe(e,t){let n=y(t,`package.json`);if(!await e.exists(n))return[];let r=Z(await E(e,n,{})),i=y(t,`node_modules`),a=[];for(let t of r){let n=await D(e,y(b(i,t.name),`package.json`),{});a.push({name:t.name,version:typeof n.version==`string`?n.version:`?`,range:t.range})}return a.sort((e,t)=>e.name.localeCompare(t.name)),a}export{pe as a,fe as i,oe as n,ue as o,J as r,Y as t};
@@ -1,18 +0,0 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import{t}from"./content-type-_QKWY0B2.js";import"./proxied-fetch-DXaTHROw.js";import{i as n,r}from"./panel-rpc-DW7W4w6_.js";import{t as i}from"./fetch-body-CuwTaJC_.js";import{a}from"./path-utils-DNJG-zQf.js";import{r as o,t as s}from"./multipart-form-data-DopbgwRR.js";import"./tray-storage-keys-DbThbnIh.js";import"./tray-runtime-config-CTm013-K.js";import{n as c,t as l}from"./picker-popup-B6AyYTBw.js";import{t as u}from"./process-manager-BkhAohXT.js";import{t as d}from"./node-builtins-CDetdLPH.js";import{C as f,b as p,d as m,g as h,p as g,t as ee,x as te,y as _}from"./shared-De1sMYMX.js";import{t as ne}from"./require-guards-Bo27pPOL.js";import{n as v}from"./esbuild-wasm-C-mKofIl.js";import{t as re}from"./wasm-compiler-Ct7QZURL.js";import{a as y,i as ie,n as ae,o as oe,s as se,t as ce}from"./usb-device-registry-DFzxaOky.js";import{S as le,i as ue,o as de,w as fe}from"./sync-exec-dispatch-BwrIjhDd.js";import{o as pe}from"./sync-sab-wire-D_d0fd3b.js";import{t as me}from"./sync-sab-responder-Bfd9S0pw.js";import{i as he}from"./just-bash-compat-B-SPHuh_.js";let b,x;function S(){return async({kind:e,ctx:t})=>{if(e===`py`){if(typeof Worker<`u`)return _e();if(!x){let{createInProcessPyRealmFactory:e}=await import(`./realm-inprocess-DtJhD5Fl.js`);x=e()}return x({kind:e,ctx:t})}if(typeof Worker<`u`)return ge();if(!b){let{createInProcessJsRealmFactory:e}=await import(`./realm-inprocess-DtJhD5Fl.js`);b=e()}return b({kind:e,ctx:t})}}function ge(){if(typeof Worker>`u`)throw Error(`realm-factory: Worker is not available in this runtime`);return ve(new Worker(new URL(`/assets/js-realm-worker-BFJHUvlI.js`,``+import.meta.url),{type:`module`}))}function _e(){if(typeof Worker>`u`)throw Error(`realm-factory: Worker is not available in this runtime`);return ve(new Worker(new URL(`/assets/py-realm-worker-Dd5csRhS.js`,``+import.meta.url),{type:`module`}))}function ve(e){let t={postMessage:(t,n)=>n?e.postMessage(t,n):e.postMessage(t),addEventListener:(t,n)=>e.addEventListener(t,n),removeEventListener:(t,n)=>e.removeEventListener(t,n)},n=!1;return{controlPort:t,isolatedThread:!0,addEventListener:(t,n,r)=>e.addEventListener(t,n,r),removeEventListener:(t,n)=>e.removeEventListener(t,n),terminate(){if(!n){n=!0;try{e.terminate()}catch{}}}}}function ye(){if(g())return decodeURIComponent(h(`pyodide/pyodide.mjs`,`../../../../../node_modules/pyodide/`).pathname)}function be(e){let t=e.startsWith(`/`)?e:`/${e}`;return new URL(`file://${t}`).href}function C(e){return e instanceof Error?e.message:String(e)}function xe(e){return`${(e&&e.length>0?e:`[eval]`).replace(/\.[^./]+$/,``)}.js`}async function Se(e,t,n,r){return(await(await e()).transform(t,{loader:`js`,format:`cjs`,sourcefile:xe(n),supported:{"dynamic-import":!1},define:{"import.meta.url":JSON.stringify(r)}})).code}async function Ce(e,t,n,r){return(await(await e()).transform(t,{loader:`js`,format:`cjs`,sourcefile:xe(n),supported:{"dynamic-import":!1},...r?{define:{"import.meta.url":JSON.stringify(r)}}:{}})).code}const we=/\bimport\s*\.\s*meta\s*\.\s*url\b/g,Te=/\bimport\s*\.\s*meta\b/g;function Ee(e,t){let n=JSON.stringify(t);return e.replace(we,n).replace(Te,`({ url: ${n} })`)}async function w(e,t,n,r){let i=await e();return i.transpileModule(Ee(t,r),{compilerOptions:{module:i.ModuleKind.CommonJS,target:i.ScriptTarget.ES2020,esModuleInterop:!0},fileName:`${n.replace(/\.[^./]+$/,``)}.ts`}).outputText}function De(e={}){let{ipk:t}=e,n=e.loadEsbuild??(()=>v(t?{ipk:t}:{})),r=e.loadTypeScript??(()=>m(t));return async({source:e,path:t,kind:i})=>{if(i!==`esm`||!p(e))return e;let a=be(t),o;try{return await Se(n,e,t,a)}catch(e){o=e}try{return await w(r,e,t,a)}catch(e){throw Error(`Failed to transpile ESM module '${t}': ${C(o)}; typescript fallback: ${C(e)}`)}}}function T(e={}){let{ipk:t}=e,n=e.loadEsbuild??(()=>v(t?{ipk:t}:{})),r=e.loadTypeScript??(()=>m(t));return async({source:e,filename:t})=>{if(!p(e)&&!_(e))return e;let i=typeof t==`string`&&t.startsWith(`/`),a=i?be(t):void 0,o=i?t:`[eval].js`,s;try{return await Ce(n,e,t,a)}catch(e){s=e}try{return await w(r,e,o,a??``)}catch(e){throw Error(`Failed to transpile entry source: ${C(s)}; typescript fallback: ${C(e)}`)}}}function E(e,t){if(!e.startsWith(`#!`))return e;let n=e.indexOf(`
2
- `);if(n===-1)return``;let r=e.slice(n+1);return t?.keepLine?`\n${r}`:r}function Oe(e){return a(e).dir}const D=[`node`,`require`,`default`],O=[`node`,`import`,`default`],ke=/\brequire\s*\(\s*(['"`])([^'"`\s]+)\1\s*\)/g,Ae=/\bimport\s*\(\s*(['"`])([^'"`\s]+)\1\s*\)/g,je=/(?:^|[;\n}])\s*import\b[\s\S]*?\bfrom\s*(['"])([^'"]+)\1/g,Me=/(?:^|[;\n}])\s*export\b[\s\S]*?\bfrom\s*(['"])([^'"]+)\1/g,Ne=/(?:^|[;\n}])\s*import\s*(['"])([^'"]+)\1/g;function Pe(e,t,n){let r=t[0].indexOf(n);return r<0?!1:e.startsWith(n,t.index+r)}function Fe(e){let t=te(e),n=new Map,r=(r,i,a)=>{r.lastIndex=0;let o;for(;(o=r.exec(e))!==null;){if(!Pe(t,o,a))continue;let e=o[2];n.get(e)!==`import`&&n.set(e,i)}};return r(ke,`require`,`require`),r(Ae,`import`,`import`),r(je,`import`,`import`),r(Me,`import`,`export`),r(Ne,`import`,`import`),[...n].map(([e,t])=>({specifier:e,kind:t}))}async function Ie(e,t,n,r){if(n===`json`)return`module.exports = JSON.parse(${JSON.stringify(e)});\n`;let i=E(e);if(n===`esm`){if(!r)throw Error(`Cannot load ESM module '${t}': no transpile hook configured (run: ${ee} esbuild-wasm)`);return await r({source:i,path:t,kind:n})}return i}async function Le(e){let{entrySpecifiers:t,fromDir:n,reader:r,conditions:i,transpile:a}=e,o=e.requireConditions??D,s=e.importConditions??O,c=i??o,l=new Map,u=[],d={},p={};async function m(e,t){if(l.has(e))return;let n=await r.readFile(e),i=await Ie(n,e,t,a);l.set(e,{path:e,source:n,cjsSource:i,kind:t});let c=Oe(e),h={},g={};for(let{specifier:e,kind:t}of Fe(n)){let n;try{n=await f(e,c,r,{conditions:t===`import`?s:o})}catch(t){g[e]=t instanceof Error?t.message:String(t);continue}n.type===`file`&&(h[e]=n.path,await m(n.path,n.moduleKind))}d[e]=h,Object.keys(g).length>0&&(p[e]=g),u.push(e)}let h={};for(let e of t){let t=await f(e,n,r,{conditions:c});t.type===`file`&&(h[e]=t.path,await m(t.path,t.moduleKind))}return{files:u.map(e=>{let t=l.get(e);if(!t)throw Error(`module-loader: missing built module for '${e}'`);return t}),entryMap:h,edges:d,edgeErrors:p}}function Re(e){return!(e.startsWith(`sliccy:`)||e.startsWith(`node:`)||d.has(e)||ne.has(e))}function ze(e,t){for(let[n,r]of Object.entries(t))e[n]={...e[n]??{},...r}}async function Be(e){let{entryCode:t,fromDir:n,entryFilename:r,reader:i,transpile:a,transpileEntry:o}=e,s=new Map,c=[],l={},u={},d={},f={};for(let{specifier:e,kind:r}of Fe(t))if(Re(e))try{let t=await Le({entrySpecifiers:[e],fromDir:n,reader:i,transpile:a,conditions:r===`import`?O:D,requireConditions:D,importConditions:O});for(let e of t.files)s.has(e.path)||(s.set(e.path,e),c.push(e.path));Object.assign(l,t.entryMap),ze(u,t.edges),ze(d,t.edgeErrors)}catch(t){f[e]=t instanceof Error?t.message:String(t)}let m;o&&(p(t)||_(t))&&(m=await o({source:t,filename:r??`[eval]`,fromDir:n}));let h={files:c.map(e=>{let t=s.get(e);if(!t)throw Error(`module-loader: missing built module for '${e}'`);return{path:t.path,cjsSource:t.cjsSource,kind:t.kind}}),entryMap:l,edges:u,edgeErrors:d,errors:f};return m!==void 0&&(h.entrySource=m),m!==void 0&&p(t)&&(h.entryIsModule=!0),h}function k(){return globalThis.navigator?.hid??null}function Ve(e){let t=e.collections?.[0];return t?`${t.usagePage??``}:${t.usage??``}`:``}function He(e,t){return e===t||e.vendorId===t.vendorId&&e.productId===t.productId&&(e.productName??``)===(t.productName??``)&&Ve(e)===Ve(t)&&!!e.productName}var Ue=class{byHandle=new Map;counter=0;register(e){for(let[t,n]of this.byHandle)if(He(n,e))return this.byHandle.set(t,e),t;let t=`hid${++this.counter}`;return this.byHandle.set(t,e),t}get(e){return this.byHandle.get(e)}remove(e){return this.byHandle.delete(e)}list(){return[...this.byHandle].map(([e,t])=>({handle:e,device:t}))}};let We=null;function Ge(){return We||=new Ue,We}const Ke=4194304;function A(e,t){let n=t.collections?.[0];return{handle:e,vendorId:t.vendorId,productId:t.productId,...t.productName?{productName:t.productName}:{},...n?.usagePage===void 0?{}:{usagePage:n.usagePage},...n?.usage===void 0?{}:{usage:n.usage},opened:t.opened}}function j(e,t){let n=e.get(t);if(!n)throw Error(`unknown hid handle '${t}'`);return n}async function M(e){e.opened||await e.open()}function N(e,t){if(e>4194304)throw Error(`${t} exceeds the ${Ke}-byte (4 MiB) v1 limit`)}function P(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),t}async function qe(e,t){return(await t.getDevices()).map(t=>A(e.register(t),t))}async function Je(e,t,n){let r=await t.requestDevice({filters:n});if(r.length===0)throw Error(`No device selected.`);return r.map(t=>A(e.register(t),t))}function Ye(e,t){return A(t,j(e,t))}async function Xe(e,t){await j(e,t).open()}async function Ze(e,t){await j(e,t).close()}async function Qe(e,t,n,r){N(r.byteLength,`send report payload`);let i=j(e,t);await M(i),await i.sendReport(n,r)}async function $e(e,t,n,r){N(r.byteLength,`send feature report payload`);let i=j(e,t);await M(i),await i.sendFeatureReport(n,r)}async function et(e,t,n){let r=j(e,t);return await M(r),{reportId:n,bytes:P(await r.receiveFeatureReport(n))}}async function tt(e,t,n){let r=j(e,t);await M(r);let i=e=>{n({reportId:e.reportId,bytes:P(e.data)})};return r.addEventListener(`inputreport`,i),()=>r.removeEventListener(`inputreport`,i)}const F=6e4;function nt(){return l()}function rt(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,clearTimeout(i),t(e))},i=setTimeout(()=>r({cancelled:!0}),F);c(`hid-device`,e??[],void 0,{timeoutMs:F}).then(e=>{let t=e;t.cancelled?r({cancelled:!0}):typeof t.error==`string`?r({error:t.error}):t.granted&&t.info?r({granted:!0,info:t.info}):r({error:`hid picker returned an unexpected response`})}).catch(e=>{r({error:e instanceof Error?e.message:`Failed to open HID picker`})})})}function I(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}var it=class{registry;constructor(e){this.registry=e}hid(){let e=k();if(!e)throw Error(`WebHID is unavailable in this browser`);return e}list(){return qe(this.registry,this.hid())}async request(e){if(nt()){let t=await rt(e);if(`cancelled`in t)throw Error(`user cancelled the HID picker`);if(`error`in t)throw Error(t.error);let n=await this.reacquireAll(t.info);if(n.length===0)throw Error(`granted device could not be re-acquired`);return n.map(e=>A(this.registry.register(e),e))}return Je(this.registry,this.hid(),e)}async reacquireAll(e){return(await this.hid().getDevices()).filter(t=>t.vendorId===e.vendorId&&t.productId===e.productId)}info(e){return Promise.resolve(Ye(this.registry,e))}open(e){return Xe(this.registry,e)}close(e){return Ze(this.registry,e)}sendReport(e,t,n){return Qe(this.registry,e,t,I(n))}sendFeatureReport(e,t,n){return $e(this.registry,e,t,I(n))}async receiveFeatureReport(e,t){let n=await et(this.registry,e,t);return{reportId:n.reportId,bytes:new Uint8Array(n.bytes)}}async subscribeInputReports(e,t){return tt(this.registry,e,e=>t({reportId:e.reportId,bytes:new Uint8Array(e.bytes)}))}},at=class e{rpc;constructor(e){this.rpc=e}static REQUEST_TIMEOUT_MS=3e5;async list(){return(await this.rpc.call(`hid-list`,void 0)).devices}async request(t){return(await this.rpc.call(`hid-request`,{filters:t},{timeoutMs:e.REQUEST_TIMEOUT_MS})).devices}async info(e){return(await this.rpc.call(`hid-device-info`,{handle:e})).device}async open(e){await this.rpc.call(`hid-open`,{handle:e})}async close(e){await this.rpc.call(`hid-close`,{handle:e})}async sendReport(e,t,n){await this.rpc.call(`hid-send-report`,{handle:e,reportId:t,bytes:I(n)})}async sendFeatureReport(e,t,n){await this.rpc.call(`hid-send-feature-report`,{handle:e,reportId:t,bytes:I(n)})}async receiveFeatureReport(e,t){let n=await this.rpc.call(`hid-receive-feature-report`,{handle:e,reportId:t});return{reportId:n.reportId,bytes:new Uint8Array(n.bytes)}}async subscribeInputReports(e,t){let n=this.rpc.onEvent(`hid-input-report`,n=>{let r=n;!r||r.handle!==e||t({reportId:r.reportId,bytes:new Uint8Array(r.bytes)})});try{await this.rpc.call(`hid-subscribe-input-reports`,{handle:e})}catch(e){throw n(),e}return async()=>{n();try{await this.rpc.call(`hid-unsubscribe-input-reports`,{handle:e})}catch{}}}};function L(e,t){return e&&k()?new it(Ge()):t?new at(t):null}function ot(e){return async function(t,n){let r=t instanceof Request?t:null,i=st(t),a=(n?.method??r?.method??`GET`).toUpperCase(),o=lt(r?.headers,n?.headers),s=await dt(n,r,a,o);s.defaultContentType&&!ut(o,`content-type`)&&(o[`Content-Type`]=s.defaultContentType);let c=await e(i,{method:a,headers:o,body:s.body}),l=new Headers;for(let[e,t]of Object.entries(c.headers))try{l.set(e,t)}catch{}let u=c.status===204||c.status===205||c.status===304||!c.body||c.body.byteLength===0?null:c.body,d=new Response(u,{status:c.status,statusText:c.statusText,headers:l});try{Object.defineProperty(d,"url",{value:c.url||i,writable:!1,configurable:!0,enumerable:!1})}catch{}return d}}function st(e){return typeof e==`string`?e:e instanceof URL?e.toString():e.url}function ct(e){if(e){if(e instanceof Headers){let t={};return e.forEach((e,n)=>{t[n]=e}),t}if(Array.isArray(e)){let t={};for(let[n,r]of e)t[n]=r;return t}return{...e}}}function lt(e,t){let n={};e&&e.forEach((e,t)=>{n[t]=e});let r=ct(t);if(r)for(let[e,t]of Object.entries(r))n[e]=t;return n}function ut(e,t){return R(e,t)!==void 0}function R(e,t){let n=t.toLowerCase(),r;for(let[t,i]of Object.entries(e))t.toLowerCase()===n&&(r=i);return r}async function dt(e,n,r,a){if(e&&`body`in e&&e.body!==void 0)return ft(e.body,r);if(n&&r!==`GET`&&r!==`HEAD`){let e=n.body!==null,r=new Uint8Array(await n.arrayBuffer()),o=R(a,`content-type`)??``,s=e&&(!o||!t(o));return{body:r.byteLength===0?void 0:s?i(r):new TextDecoder(`utf-8`).decode(r),defaultContentType:s?`application/octet-stream`:void 0}}return{}}async function ft(e,t){if(o(e)){if(t===`GET`||t===`HEAD`)return{};let n=await s(e);return{body:n.bytes,defaultContentType:n.contentType}}return{body:await pt(e,t),defaultContentType:ht(e,t)}}async function pt(e,t){if(e!=null&&t!==`GET`&&t!==`HEAD`){if(typeof e==`string`)return e;if(e instanceof URLSearchParams)return e.toString();if(e instanceof Uint8Array)return i(e);if(e instanceof ArrayBuffer)return new Uint8Array(e).slice();if(ArrayBuffer.isView(e)){let t=e;return new Uint8Array(t.buffer,t.byteOffset,t.byteLength).slice()}if(typeof Blob<`u`&&e instanceof Blob)return new Uint8Array(await e.arrayBuffer());throw typeof ReadableStream<`u`&&e instanceof ReadableStream?Error(`node fetch shim: ReadableStream request bodies are not supported (collect into a Uint8Array or string before calling fetch)`):Error(`node fetch shim: unsupported request body type (${Object.prototype.toString.call(e)}); use a string, Uint8Array, ArrayBuffer, Blob, FormData, or URLSearchParams`)}}function mt(e){return e instanceof Uint8Array||e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof Blob<`u`&&e instanceof Blob}function ht(e,t){if(e instanceof URLSearchParams)return`application/x-www-form-urlencoded;charset=UTF-8`;if(!(t===`GET`||t===`HEAD`||!mt(e)))return typeof Blob<`u`&&e instanceof Blob&&e.type?e.type:`application/octet-stream`}function z(){return globalThis.navigator?.serial??null}var gt=class{byHandle=new Map;counter=0;register(e){for(let[t,n]of this.byHandle)if(n.port===e)return t;let t=`serial${++this.counter}`;return this.byHandle.set(t,{port:e,opened:!1}),t}get(e){return this.byHandle.get(e)}remove(e){return this.byHandle.delete(e)}list(){return[...this.byHandle].map(([e,t])=>({handle:e,entry:t}))}retainOnly(e){let t=[];for(let[n,r]of[...this.byHandle])e.includes(r.port)||(this.byHandle.delete(n),t.push({handle:n,entry:r}));return t}};let B=null;function V(){return B||=new gt,B}const H=4194304;function U(e,t){let n=t.port.getInfo();return{handle:e,...n.usbVendorId===void 0?{}:{usbVendorId:n.usbVendorId},...n.usbProductId===void 0?{}:{usbProductId:n.usbProductId},opened:t.opened}}function W(e,t){let n=e.get(t);if(!n)throw Error(`unknown serial handle '${t}'`);return n}function _t(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}function vt(e,t,n){if(t.length===0)return-1;outer:for(let r=Math.max(0,n);r+t.length<=e.length;r++){for(let n=0;n<t.length;n++)if(e[r+n]!==t[n])continue outer;return r}return-1}async function G(e){if(e.reader){try{await e.reader.cancel()}catch{}try{e.reader.releaseLock()}catch{}e.reader=void 0}if(e.pendingRead=void 0,e.leftover=void 0,e.writer){try{e.writer.releaseLock()}catch{}e.writer=void 0}}async function yt(e){if(await G(e),e.opened){try{await e.port.close()}catch{}e.opened=!1}}async function bt(e,t){let n=await t.getPorts();for(let{entry:t}of e.retainOnly(n))await yt(t);return n.map(t=>{let n=e.register(t);return U(n,e.get(n))})}async function xt(e,t,n){let r=await t.requestPort(n.length?{filters:n}:{}),i=e.register(r);return U(i,e.get(i))}function St(e,t){return U(t,W(e,t))}async function Ct(e,t,n){let r=W(e,t);try{await r.port.open(n)}catch(e){throw Error(`${e instanceof Error?e.message:String(e)} (handle '${t}' may be stale after a device reset — re-run 'serial list' to pick up the current handle)`)}r.opened=!0}async function wt(e,t){let n=W(e,t);await G(n);try{await n.port.close()}catch(e){if(!Tt(e))throw e}n.opened=!1}function Tt(e){let t=e instanceof Error?e.message:String(e);return/already closed|not open/i.test(t)}function Et(e){if(!e.reader){if(!e.port.readable)throw Error(`serial port is not readable (is it open?)`);e.reader=e.port.readable.getReader()}return e.reader}function Dt(e){if(!e.writer){if(!e.port.writable)throw Error(`serial port is not writable (is it open?)`);e.writer=e.port.writable.getWriter()}return e.writer}async function Ot(e,t,n){let r=W(e,t),i=Math.min(n.maxBytes??4194304,H),a=n.until?.length?n.until:void 0,o=n.timeoutMs??1e3,s=Date.now()+Math.max(0,o),c=r.leftover??new Uint8Array;r.leftover=void 0;let l=0,u=()=>{if(a){let e=vt(c,a,Math.max(0,l-(a.length-1)));if(e>=0){let t=e+a.length;return r.leftover=c.slice(t),c.slice(0,t)}}return c.length>=i?(r.leftover=c.slice(i),c.slice(0,i)):null},d=u();if(d)return d;let f=Et(r);for(;Date.now()<s;){let e=s-Date.now(),t=r.pendingRead??f.read();r.pendingRead=t;let n,i=new Promise(t=>{n=setTimeout(()=>t(`__timeout`),e)}),a;try{a=await Promise.race([t,i])}finally{n&&clearTimeout(n)}if(a===`__timeout`)break;if(r.pendingRead=void 0,a.done){r.reader=void 0;break}if(a.value?.length){l=c.length,c=_t(c,a.value);let e=u();if(e)return e}}return c}async function kt(e,t,n){if(n.length>4194304)throw Error(`serial write payload exceeds the ${H}-byte (4 MiB) v1 limit`);return await Dt(W(e,t)).write(n),n.length}async function At(e,t){return W(e,t).port.getSignals()}async function jt(e,t,n){await W(e,t).port.setSignals(n)}const Mt=6e4;function Nt(){return l()}function Pt(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,clearTimeout(i),t(e))},i=setTimeout(()=>r({cancelled:!0}),Mt);c(`serial-port`,e??[],void 0,{timeoutMs:Mt}).then(e=>{let t=e;t.cancelled?r({cancelled:!0}):typeof t.error==`string`?r({error:t.error}):t.granted&&t.info?r({granted:!0,info:t.info}):r({error:`serial picker returned an unexpected response`})}).catch(e=>{r({error:e instanceof Error?e.message:`Failed to open serial picker`})})})}function Ft(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}var It=class{registry;constructor(e){this.registry=e}serial(){let e=z();if(!e)throw Error(`Web Serial is unavailable in this browser`);return e}list(){return bt(this.registry,this.serial())}async request(e){if(Nt()){let t=await Pt(e);if(`cancelled`in t)throw Error(`user cancelled the serial picker`);if(`error`in t)throw Error(t.error);let n=await this.reacquire(t.info);if(!n)throw Error(`granted port could not be re-acquired`);let r=this.registry.register(n);return U(r,this.registry.get(r))}return xt(this.registry,this.serial(),e)}async reacquire(e){let t=await this.serial().getPorts(),n=t.filter(t=>{let n=t.getInfo();return!(e.usbVendorId!==void 0&&n.usbVendorId!==e.usbVendorId||e.usbProductId!==void 0&&n.usbProductId!==e.usbProductId)}),r=n.length?n:t,i=this.registry.list().map(e=>e.entry.port);return r.find(e=>!i.includes(e))??r[0]??null}info(e){return Promise.resolve(St(this.registry,e))}open(e,t){return Ct(this.registry,e,t)}close(e){return wt(this.registry,e)}read(e,t){return Ot(this.registry,e,t)}write(e,t){return kt(this.registry,e,t)}getSignals(e){return At(this.registry,e)}setSignals(e,t){return jt(this.registry,e,t)}},Lt=class e{rpc;constructor(e){this.rpc=e}static REQUEST_TIMEOUT_MS=3e5;static READ_MARGIN_MS=3e4;async list(){return(await this.rpc.call(`serial-list`,void 0)).devices}async request(t){return(await this.rpc.call(`serial-request`,{filters:t},{timeoutMs:e.REQUEST_TIMEOUT_MS})).device}async info(e){return(await this.rpc.call(`serial-device-info`,{handle:e})).device}async open(e,t){await this.rpc.call(`serial-open`,{handle:e,options:t})}async close(e){await this.rpc.call(`serial-close`,{handle:e})}async read(t,n){let r=(n.timeoutMs??1e3)+e.READ_MARGIN_MS,i=await this.rpc.call(`serial-read`,{handle:t,maxBytes:n.maxBytes,until:n.until?Ft(n.until):void 0,timeoutMs:n.timeoutMs},{timeoutMs:r});return new Uint8Array(i.bytes)}async write(e,t){return(await this.rpc.call(`serial-write`,{handle:e,bytes:Ft(t)})).bytesWritten}async getSignals(e){return(await this.rpc.call(`serial-get-signals`,{handle:e})).signals}async setSignals(e,t){await this.rpc.call(`serial-set-signals`,{handle:e,signals:t})}};function Rt(e,t){return e&&z()?new It(V()):t?new Lt(t):null}const zt=e(`usb`);async function K(){return import(`./usb-claim-broker-C5dFP5bv.js`)}function q(e,t){let n=e.get(t);if(!n)throw Error(`unknown usb handle '${t}'`);return n}function J(e,t){if(e>4194304)throw Error(`${t} exceeds the ${ce}-byte (4 MiB) v1 limit`)}function Bt(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}async function Vt(e,t){return(await t.getDevices()).map(t=>y(e.register(t),t))}async function Ht(e,t,n){let r=await t.requestDevice({filters:n});return y(e.register(r),r)}function Ut(e,t){return y(t,q(e,t))}async function Wt(e,t){await q(e,t).open()}async function Gt(e,t,n){await tn(e,t,`close`,n)}async function Kt(e,t,n){await q(e,t).selectConfiguration(n)}async function qt(e,t,n,r){let i=r?.owner??`usb`,a=q(e,t),o=await K(),s=await o.acquireInterfaceClaim(e,t,n,i,r?.wait??!1,r?.signal),c=()=>o.claimOwner(e,t,n),l=()=>c()===i,u=()=>o.wasGrantCancelled(e,t,n,i),d=async r=>{if(!(l()&&!u())){if(u()||!c()){if(r)try{await a.releaseInterface(n)}catch{}o.settleCancelledGrant(e,t,n,i),o.wakeInterfaceWaiter(e,t,n)}throw o.claimWaitCancelledError(t,n,i)}};try{await d(!1),await a.claimInterface(n),await d(!0)}catch(r){throw s===`acquired`&&(u()?(o.settleCancelledGrant(e,t,n,i),o.wakeInterfaceWaiter(e,t,n)):l()?o.releaseInterfaceClaim(e,t,n,i):c()||o.wakeInterfaceWaiter(e,t,n)),r}finally{o.clearPendingGrant(e,t,n,i)}}async function Jt(e,t){let n=await K(),r=n.takeOwnerClaims(e,t);for(let t of r){try{await e.get(t.handle)?.releaseInterface(t.interfaceNumber)}catch{}n.wakeInterfaceWaiter(e,t.handle,t.interfaceNumber)}}async function Yt(e,t,n,r){let i=r?.owner??`usb`,a=q(e,t),o=await K(),s=o.claimOwner(e,t,n);if(s&&s!==i)throw new ie({handle:t,holder:s,op:`release`,interfaceNumber:n});await a.releaseInterface(n),o.releaseInterfaceClaim(e,t,n,i)}async function Xt(e,t,n,r){J(r,`control-in length`);let i=await q(e,t).controlTransferIn(n,r);return{status:i.status??`ok`,bytes:i.data?Bt(i.data):new ArrayBuffer(0)}}async function Zt(e,t,n,r){J(r.byteLength,`control-out payload`);let i=await q(e,t).controlTransferOut(n,r);return{status:i.status??`ok`,bytesWritten:i.bytesWritten}}async function Qt(e,t,n,r){J(r,`transfer-in length`);let i=await q(e,t).transferIn(n,r);return{status:i.status??`ok`,bytes:i.data?Bt(i.data):new ArrayBuffer(0)}}async function $t(e,t,n,r){J(r.byteLength,`transfer-out payload`);let i=await q(e,t).transferOut(n,r);return{status:i.status??`ok`,bytesWritten:i.bytesWritten}}async function en(e,t,n){await tn(e,t,`reset`,n)}async function tn(e,t,n,r){let i=r?.owner??`usb`,a=r?.force??!1,o=q(e,t),s=await K(),c=s.listClaims(e,t);if(c.length>0){let e=c.map(e=>`${e.interfaceNumber}=${e.owner}`).join(`, `);zt.warn(`usb ${n} ${t} with claimed interfaces (${e})${a?` [force]`:``}`)}let l=s.assertExclusive(e,t,i,a,n);n===`close`?await o.close():await o.reset(),s.displaceHandle(e,t,{reason:n,displacedBy:i,displaced:l})}async function nn(e,t,n,r){await q(e,t).clearHalt(n,r)}const rn=6e4;function an(){return l()}function on(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,clearTimeout(i),t(e))},i=setTimeout(()=>r({cancelled:!0}),rn);c(`usb-device`,e??[],void 0,{timeoutMs:rn}).then(e=>{let t=e;t.cancelled?r({cancelled:!0}):typeof t.error==`string`?r({error:t.error}):t.granted&&t.info?r({granted:!0,info:t.info}):r({error:`usb picker returned an unexpected response`})}).catch(e=>{r({error:e instanceof Error?e.message:`Failed to open USB picker`})})})}function Y(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}var sn=class{registry;constructor(e){this.registry=e}usb(){let e=oe();if(!e)throw Error(`WebUSB is unavailable in this browser`);return e}list(){return Vt(this.registry,this.usb())}async request(e){if(an()){let t=await on(e);if(`cancelled`in t)throw Error(`user cancelled the USB picker`);if(`error`in t)throw Error(t.error);let n=await this.reacquire(t.info);if(!n)throw Error(`granted device could not be re-acquired`);return y(this.registry.register(n),n)}return Ht(this.registry,this.usb(),e)}async reacquire(e){return(await this.usb().getDevices()).find(t=>t.vendorId===e.vendorId&&t.productId===e.productId&&(!e.serialNumber||t.serialNumber===e.serialNumber))??null}info(e){return Promise.resolve(Ut(this.registry,e))}open(e){return Wt(this.registry,e)}close(e,t){return Gt(this.registry,e,X(t))}selectConfig(e,t){return Kt(this.registry,e,t)}claim(e,t,n){return qt(this.registry,e,t,X(n))}release(e,t,n){return Yt(this.registry,e,t,X(n))}async controlIn(e,t,n){let r=await Xt(this.registry,e,t,n);return{status:r.status,bytes:new Uint8Array(r.bytes)}}controlOut(e,t,n){return Zt(this.registry,e,t,Y(n))}async transferIn(e,t,n){let r=await Qt(this.registry,e,t,n);return{status:r.status,bytes:new Uint8Array(r.bytes)}}transferOut(e,t,n){return $t(this.registry,e,t,Y(n))}clearHalt(e,t,n){return nn(this.registry,e,t,n)}reset(e,t){return en(this.registry,e,X(t))}subscribeClaimEvents(e){let t,n=import(`./usb-claim-broker-C5dFP5bv.js`).then(n=>{t=n.addClaimListener(this.registry,e)});return()=>{n.then(()=>t?.())}}dropOwner(e){return Jt(this.registry,e)}};function X(e){return{...e,owner:e?.owner??`shell`}}var cn=class e{rpc;constructor(e){this.rpc=e}static REQUEST_TIMEOUT_MS=3e5;static CLAIM_WAIT_TIMEOUT_MS=3e5;async list(){return(await this.rpc.call(`usb-list`,void 0)).devices}async request(t){return(await this.rpc.call(`usb-request`,{filters:t},{timeoutMs:e.REQUEST_TIMEOUT_MS})).device}async info(e){return(await this.rpc.call(`usb-device-info`,{handle:e})).device}async open(e){await this.rpc.call(`usb-open`,{handle:e})}async close(e,t){await this.rpc.call(`usb-close`,{handle:e,owner:t?.owner??`shell`,force:t?.force??!1})}async selectConfig(e,t){await this.rpc.call(`usb-select-configuration`,{handle:e,configurationValue:t})}async claim(t,n,r){let i=r?.owner??`shell`,a=r?.wait??!1;try{await this.rpc.call(`usb-claim-interface`,{handle:t,interfaceNumber:n,owner:i,wait:a},a?{timeoutMs:e.CLAIM_WAIT_TIMEOUT_MS}:void 0)}catch(e){throw a&&await this.rpc.call(`usb-cancel-claim-wait`,{handle:t,interfaceNumber:n,owner:i}).catch(()=>void 0),e}}async release(e,t,n){await this.rpc.call(`usb-release-interface`,{handle:e,interfaceNumber:t,owner:n?.owner??`shell`})}async controlIn(e,t,n){let r=await this.rpc.call(`usb-control-transfer-in`,{handle:e,setup:t,length:n});return{status:r.status,bytes:new Uint8Array(r.bytes)}}async controlOut(e,t,n){return this.rpc.call(`usb-control-transfer-out`,{handle:e,setup:t,bytes:Y(n)})}async transferIn(e,t,n){let r=await this.rpc.call(`usb-transfer-in`,{handle:e,endpointNumber:t,length:n});return{status:r.status,bytes:new Uint8Array(r.bytes)}}async transferOut(e,t,n){return this.rpc.call(`usb-transfer-out`,{handle:e,endpointNumber:t,bytes:Y(n)})}async clearHalt(e,t,n){await this.rpc.call(`usb-clear-halt`,{handle:e,direction:t,endpointNumber:n})}async reset(e,t){await this.rpc.call(`usb-reset`,{handle:e,owner:t?.owner??`shell`,force:t?.force??!1})}subscribeClaimEvents(e){return this.rpc.onEvent(`usb-claim-event`,t=>{e(t)})}async dropOwner(e){await this.rpc.call(`usb-drop-owner`,{owner:e})}};function ln(e,t){return e&&oe()?new sn(se()):t?new cn(t):null}const un=e(`realm-host`);let dn=0;function fn(e,t,n={}){let r=new Map,i=new Map,a=`${ae}:${++dn}`,o=n.syncFsBridgeEnabled?le({fs:t.fs,...t.exec?{exec:t.exec}:{},cwd:t.cwd}):void 0,s=!1,c=(t,n=[])=>{if(!s)try{e.postMessage(t,n)}catch{}},l={subscriptions:r,pushEvent:c},u={subscriptions:i,pushEvent:c,owner:a},d=new Map,f={spawns:d,opts:n},p={pushEvent:c,pending:new Map,registered:[],backends:new Map,requestSeq:0,pid:n.ppid??null},m=r=>{if(r.data?.type!==`realm-rpc-req`)return;let i=r.data;pn(e,i,t,n,l,u,f,p)};e.addEventListener(`message`,m);let h=o&&n.syncSab?me(e,n.syncSab,o):void 0;return e.start?.(),{syncFsToken:o,dispose:()=>{if(!s){s=!0,h?.dispose(),o&&fe(o),e.removeEventListener(`message`,m);for(let{controller:e}of d.values())try{e.signal.aborted||e.abort()}catch{}d.clear();for(let e of r.values())try{Promise.resolve(e()).catch(()=>{})}catch{}r.clear(),or(p);for(let e of i.values())try{Promise.resolve(e()).catch(()=>{})}catch{}i.clear();try{(n.usbBackend??gn(n)).dropOwner?.(a)?.catch(()=>{})}catch{}}}}}async function pn(e,t,n,r,i,a,o,s){try{let c=await mn(t,n,r,i,a,o,s),l={type:`realm-rpc-res`,id:t.id,result:c},u=lr(c);e.postMessage(l,u)}catch(n){let r=n instanceof Error?n.message:String(n),i={type:`realm-rpc-res`,id:t.id,error:r};e.postMessage(i)}}async function mn(e,t,n,r,i,a,o){switch(e.channel){case`vfs`:return bn(e.op,e.args,t,n.onHostFsMutation);case`exec`:return Fn(e.op,e.args,t,a);case`fetch`:return Vn(e.op,e.args,t);case`browser`:return Gn(e.op,e.args,hn(n),n);case`usb`:return ir(e.op,e.args,gn(n),i);case`serial`:return ar(e.op,e.args,_n(n));case`hid`:return cr(e.op,e.args,vn(n),r);case`computer`:return sr(e.op,e.args,o);case`module`:return Un(e.op,e.args,t);case`wasm`:return Wn(e.op,e.args,t);default:throw Error(`realm-host: unknown channel '${e.channel}'`)}}function hn(e){if(e.browser)return e.browser;let t=globalThis;if(t.__slicc_browser)return t.__slicc_browser;throw Error(`browser is not available in this runtime`)}function Z(e){if(e.wsSubscribers)return e.wsSubscribers;let t=globalThis;if(t.__slicc_wsSubscribers)return t.__slicc_wsSubscribers;throw Error(`browser.websocket is not available in this runtime`)}function gn(e){if(e.usbBackend)return e.usbBackend;let t=ln(n(),r());if(!t)throw Error(`usb is not available in this runtime`);return t}function _n(e){if(e.serialBackend)return e.serialBackend;let t=Rt(n(),r());if(!t)throw Error(`serial is not available in this runtime`);return t}function vn(e){if(e.hidBackend)return e.hidBackend;let t=L(n(),r());if(!t)throw Error(`hid is not available in this runtime`);return t}function yn(e){return[...e.deleted,...e.created.map(e=>e.path),...e.modified.map(e=>e.path)]}async function bn(e,t,n,r){let i=typeof t[0]==`string`?t[0]:null,a=i===null?null:n.fs.resolvePath(n.cwd,i);switch(e){case`readFile`:return n.fs.readFile(a);case`readFileBinary`:return n.fs.readFileBuffer(a);case`writeFile`:return await n.fs.writeFile(a,t[1]),a&&r?.([a]),!0;case`writeFileBinary`:return await n.fs.writeFile(a,t[1]),a&&r?.([a]),!0;case`appendFile`:return await n.fs.appendFile(a,t[1]),a&&r?.([a]),!0;case`readDir`:return n.fs.readdir(a);case`exists`:return n.fs.exists(a);case`stat`:{let e=await n.fs.stat(a);return{isDirectory:e.isDirectory,isFile:e.isFile,size:e.size}}case`mkdir`:return await n.fs.mkdir(a,{recursive:!0}),!0;case`rm`:return await n.fs.rm(a,{recursive:!0}),a&&r?.([a]),!0;case`rename`:{let e=n.fs.resolvePath(n.cwd,t[1]),{renameViaFs:i}=await import(`./rename-via-fs-ckVY1Ljv.js`);return await i(n.fs,a,e),r?.(a?[a,e]:[e]),!0}case`resolvePath`:return n.fs.resolvePath(n.cwd,t[0]);case`invalidatePaths`:{let e=t[0],r=n.fs;return r.invalidatePaths&&r.invalidatePaths(e),!0}case`forgetSidecarConsistency`:return await n.fs.forgetSidecarConsistency?.(),!0;case`snapshot`:{let e=typeof t[0]==`string`?t[0]:n.cwd,r=t[1];return jn(n,e,r?.timeBudgetMs)}case`flushWrites`:{let e=t[0];return await Mn(n,e),r?.(yn(e)),!0}default:throw Error(`realm-host: unknown vfs op '${e}'`)}}const xn=10485760;function Sn(e){return e.fileCount>=500||e.totalBytes>=xn}function Cn(e){return e.entries.length>=2e4}function wn(e){return Cn(e)||e.deadline!==void 0&&Date.now()>=e.deadline}function Tn(e,t){let n=new Set(t.map(e=>e.slice(0,e.lastIndexOf(`/`))||`/`));for(let t of e.entries)t.isDirectory&&n.has(t.path)&&(t.partial=!0)}async function En(e,t,n,r){r.entries.push({path:t,content:new Uint8Array,isDirectory:!0});let i;try{i=await e.fs.readdir(t)}catch{return}for(let e of i)e!==`node_modules`&&n.push(t===`/`?`/${e}`:`${t}/${e}`)}async function Dn(e,t,n,r){let i=``;try{i=await e.fs.readlink(t)}catch{return}r.entries.push({path:t,content:new Uint8Array,isDirectory:!1,isSymbolicLink:!0,symlinkTarget:i,size:n})}async function On(e,t,n,r,i){if(n>1048576||Sn(r)||r.totalBytes+n>xn){r.entries.push({path:t,content:new Uint8Array,isDirectory:!1,truncated:!0,size:n});return}let a;try{a=await e.fs.readFileBuffer(t)}catch{await kn(e,t,i,r);return}r.entries.push({path:t,content:a,isDirectory:!1}),r.fileCount+=1,r.totalBytes+=a.byteLength}async function kn(e,t,n,r){let i;try{i=await e.fs.stat(t)}catch{return}if(i.isDirectory){await En(e,t,n,r);return}r.entries.push({path:t,content:new Uint8Array,isDirectory:!1,truncated:!0,size:i.size})}async function An(e,t,n){if(wn(n))return;let r=[t];for(;r.length>0;){if(wn(n)){Tn(n,r);return}let t=r.pop(),i;try{i=await e.fs.lstat(t)}catch{}if(i?.isSymbolicLink){await Dn(e,t,i.size,n);continue}let a;try{a=await e.fs.stat(t)}catch{continue}a.isDirectory?await En(e,t,r,n):a.isFile&&await On(e,t,a.size,n,r)}}async function jn(e,t,n){let r={entries:[],totalBytes:0,fileCount:0};return n!==void 0&&(r.deadline=Date.now()+n),await An(e,t,r),t!==`/tmp`&&await An(e,`/tmp`,r),{entries:r.entries}}async function Mn(e,t){let n=[],r=async(e,t)=>{try{await t()}catch(t){n.push(`${e}: ${t instanceof Error?t.message:String(t)}`)}};for(let n of t.deleted)await r(n,()=>e.fs.rm(n,{recursive:!0}));for(let n of t.created)n.isSymbolicLink?await r(n.path,()=>e.fs.symlink(n.symlinkTarget??``,n.path)):n.isDirectory?await r(n.path,()=>e.fs.mkdir(n.path,{recursive:!0})):await r(n.path,()=>e.fs.writeFile(n.path,n.content));for(let n of t.modified)await r(n.path,()=>e.fs.writeFile(n.path,n.content));if(n.length>0)throw Error(`sync-fs flush failed for ${n.length} path(s): ${n.join(`; `)}`)}const Nn=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]),Pn=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`]);async function Fn(e,t,n,r){if(!n.exec)throw Error(`exec is not available in this runtime`);if(e===`run`){let e=t[0],r=await n.exec(e,{cwd:n.cwd});return{stdout:r.stdout,stderr:r.stderr,exitCode:r.exitCode}}if(e===`spawn`){let e=t[0];if(!Array.isArray(e)||e.length===0||!e.every(e=>typeof e==`string`))throw Error(`exec.spawn: argv must be a non-empty string[]`);let[r,...i]=e,a=await n.exec(r,{cwd:n.cwd,args:i});return{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode}}if(e===`start`)return zn(t,n,r);if(e===`kill`)return Bn(t,r);throw Error(`realm-host: unknown exec op '${e}'`)}function In(e){if(e.stdin!==void 0&&typeof e.stdin!=`string`)throw Error(`exec.start: stdin must be a string`);if(e.stdinKind!==void 0&&e.stdinKind!==`text`&&e.stdinKind!==`bytes`)throw Error(`exec.start: stdinKind must be 'text' or 'bytes'`);if(e.args!==void 0&&(!Array.isArray(e.args)||!e.args.every(e=>typeof e==`string`)))throw Error(`exec.start: args must be a string[]`);if(e.cwd!==void 0&&typeof e.cwd!=`string`)throw Error(`exec.start: cwd must be a string`);if(e.env!==void 0){if(e.env===null||typeof e.env!=`object`||Array.isArray(e.env))throw Error(`exec.start: env must be an object`);for(let[t,n]of Object.entries(e.env))if(n!==void 0&&typeof n!=`string`)throw Error(`exec.start: env[${t}] must be a string`)}}function Ln(e){throw Object.assign(Error(e.message),{code:e.errno})}async function Rn(e,t){let n=await de(e.fs,e.cwd,t.cwd);`errno`in n&&Ln(n);let r=ue(t.env);return r!==void 0&&`errno`in r&&Ln(r),{cwd:n.cwd,...r===void 0?{}:{env:r.env}}}async function zn(e,t,n){let[r,i,a]=e;if(typeof r!=`number`)throw Error(`exec.start: spawnId must be a number`);if(n.spawns.has(r))throw Error(`exec.start: spawnId ${r} is already in use`);let o,s,c;if(Array.isArray(i)){if(i.length===0||!i.every(e=>typeof e==`string`))throw Error(`exec.start: argv must be a non-empty string[]`);[o,...s]=i,c=i.slice()}else if(typeof i==`string`)o=i,c=[i];else throw Error(`exec.start: command must be a string or a non-empty string[]`);let l=a??{};In(l);let u=await Rn(t,l),d=new AbortController,{pm:f,owner:p}=n.opts,m=0;f&&p&&(m=f.spawn({kind:`shell`,argv:c,cwd:u.cwd,owner:p,...n.opts.ppid===void 0?{}:{ppid:n.opts.ppid},adoptAbort:d}).pid),n.spawns.set(r,{controller:d,pid:m});let h;try{let e={cwd:u.cwd,signal:d.signal};return l.stdin!==void 0&&(e.stdin=l.stdin),l.stdinKind!==void 0&&(e.stdinKind=l.stdinKind),s===void 0?l.args!==void 0&&(e.args=l.args):e.args=s,u.env!==void 0&&(e.env=u.env,e.replaceEnv=!0),h=await t.exec(o,e),{stdout:h.stdout,stderr:h.stderr,exitCode:h.exitCode}}finally{if(n.spawns.delete(r),f&&m){let e=f.get(m);f.exit(m,e?.terminatedBy?null:h?.exitCode??1)}}}function Bn(e,t){let[n,r]=e,i=t.spawns.get(n);if(!i)return!1;let a=typeof r==`string`&&Nn.has(r)?r:`SIGTERM`;Pn.has(a)&&!i.controller.signal.aborted&&i.controller.abort();let{pm:o}=t.opts;return o&&i.pid?o.signal(i.pid,a):!0}async function Vn(e,t,n){if(e!==`request`)throw Error(`realm-host: unknown fetch op '${e}'`);let[r,i]=t,a=await(n.fetch?ot(n.fetch):globalThis.fetch.bind(globalThis))(r,i),o={};a.headers.forEach((e,t)=>{o[t]=e});let s=new Uint8Array(await a.arrayBuffer());return{status:a.status,statusText:a.statusText,headers:o,body:s,url:a.url}}function Hn(e){let t=t=>e.fs.resolvePath(e.cwd,t);return{exists:n=>e.fs.exists(t(n)),isDirectory:async n=>{try{return(await e.fs.stat(t(n))).isDirectory}catch{return!1}},readFile:async n=>{let r=await e.fs.readFile(t(n));return typeof r==`string`?r:new TextDecoder().decode(r)}}}async function Un(e,t,n){if(e!==`buildGraph`)throw Error(`realm-host: unknown module op '${e}'`);let r=typeof t[0]==`string`?t[0]:``,i=typeof t[1]==`string`&&t[1]?t[1]:n.cwd,a=typeof t[2]==`string`?t[2]:``,o=Hn(n),s={reader:o,readBytes:e=>n.fs.readFileBuffer(e),fromDir:i};return Be({entryCode:r,fromDir:i,entryFilename:a,reader:o,transpile:De({ipk:s}),transpileEntry:T({ipk:s})})}async function Wn(e,t,n){if(e!==`compile`)throw Error(`realm-host: unknown wasm op '${e}'`);let r=typeof t[0]==`string`?t[0]:null;if(r===null)throw Error(`realm-host: wasm.compile requires a path argument`);let i=n.fs.resolvePath(n.cwd,r);return re(e=>n.fs.readFileBuffer(e),i)}async function Gn(e,t,n,r){switch(e){case`findTab`:return qn(n,t[0]??{});case`ensureTab`:{let e=t[0];return Jn(n,e,t[1]??{})}case`openWindow`:{let e=t[0];return Yn(n,e,t[1]??{})}case`windowBounds`:{let e=t[0];return n.getWindowBounds(e)}case`setWindowBounds`:{let e=t[0],r=t[1]??{};return n.setWindowBounds(e,r)}case`eval`:{let e=t[0],r=t[1];return Xn(n,e,r,!1)}case`evalAsync`:{let e=t[0],r=t[1];return Xn(n,e,r,!0)}case`cookie`:{let e=t[0],r=t[1];return er(n,e,r)}case`localStorage`:{let e=t[0],r=t[1];return tr(n,e,r)}case`wsObserve`:{let e={...t[0],scoopJid:r.scoopJid};return await Z(r).observe(e)}case`wsUpdate`:{let e=t[0],n=t[1]??{};return Z(r).update(e,n)}case`wsClose`:{let e=t[0];return Z(r).close(e)}case`wsList`:return Z(r).list();case`createTab`:{let e=t[0];return n.createPage(e)}case`closeTab`:{let e=t[0];return n.closePage(e)}case`setViewport`:{let e=t[0],r=t[1],i=t[2];return n.withTab(e,e=>e.setViewportOverride(r,i))}case`navigateTab`:{let e=t[0],r=t[1];return n.withTab(e,e=>e.navigate(r))}case`screenshotTab`:{let e=t[0],r=t[1];return n.withTab(e,e=>e.screenshot(r))}case`waitForLoadState`:{let e=t[0],r=t[1];return $n(n,e,r)}default:throw Error(`realm-host: unknown browser op '${e}'`)}}function Kn(){try{let e=globalThis.localStorage;return e?!!(e.getItem(`slicc.trayWorkerBaseUrl`)||e.getItem(`slicc.trayJoinUrl`)):!1}catch{return!1}}async function Q(e){if(typeof e.listAllTargets!=`function`)return(await e.listPages()).map(e=>({targetId:e.targetId,url:e.url,title:e.title}));let t=(await e.listAllTargets()).map(e=>({targetId:e.targetId,url:e.url,title:e.title})),n=Kn()?r():null;if(n)try{let{targets:e}=await n.call(`list-remote-targets`,void 0,{timeoutMs:3e3}),r=new Set(t.map(e=>e.targetId));for(let n of e)r.has(n.targetId)||(r.add(n.targetId),t.push({targetId:n.targetId,url:n.url,title:n.title}))}catch(e){un.debug(`panel-rpc list-remote-targets failed`,{err:String(e)})}return t}async function qn(e,t){let n=await Q(e);if(t.domain){let e=t.domain.toLowerCase();for(let t of n){let n=nr(t.url);if(n&&n.toLowerCase()===e)return t}return null}if(t.urlMatch){let e;try{e=new RegExp(t.urlMatch)}catch(e){throw Error(`browser.findTab: invalid urlMatch regex: ${e instanceof Error?e.message:String(e)}`)}for(let t of n)if(e.test(t.url))return t;return null}throw Error("browser.findTab: query requires `domain` or `urlMatch`")}async function Jn(e,t,n){let r=await Q(e);if(n.matchUrl){let e;try{e=new RegExp(n.matchUrl)}catch(e){throw Error(`browser.ensureTab: invalid matchUrl regex: ${e instanceof Error?e.message:String(e)}`)}let t=r.find(t=>e.test(t.url));if(t)return t}else{let e=rr(t);if(e){let t=r.find(t=>rr(t.url)===e);if(t)return t}}return{targetId:await e.createPage(t),url:t,title:``}}async function Yn(e,t,n){if(typeof e.openWindow!=`function`)throw Error(`browser.openWindow is not available in this runtime`);return{targetId:await e.openWindow(t,n),url:t||`about:blank`,title:``}}async function Xn(e,t,n,r){return e.withTab(t,async e=>Zn(await e.evaluate(n,{awaitPromise:r,returnByValue:!0})))}function Zn(e){if(typeof e!=`string`)return e;let t=Qn(e);if(t===void 0)return e;if(typeof t==`object`&&t)return t;if(typeof t==`string`){let e=t.trim();if(e.length>0&&(e[0]===`{`||e[0]===`[`)){let e=Qn(t);if(typeof e==`object`&&e)return e}return t}return e}function Qn(e){let t=e.trim();if(t.length===0)return;let n=t[0];if(n===`{`||n===`[`||n===`"`||n===`-`||n>=`0`&&n<=`9`||t===`true`||t===`false`||t===`null`)try{return JSON.parse(t)}catch{return}}async function $n(e,t,n){if(n===`networkidle`)return e.withTab(t,async e=>{for(let t=0;t<20;t++)if(await new Promise(e=>setTimeout(e,250)),await e.evaluate(`(function(){
3
- try {
4
- var entries = performance.getEntriesByType('resource');
5
- var now = performance.now();
6
- var recentCutoffMs = 500;
7
- var busy = entries.some(function(e) {
8
- var finished = e.responseEnd || e.startTime;
9
- return (now - finished) < recentCutoffMs;
10
- });
11
- return !busy;
12
- } catch (e) {
13
- return true;
14
- }
15
- })()`,{returnByValue:!0}))return})}async function er(e,t,n){return e.withTab(t,async e=>{let t=((await e.send(`Network.getCookies`)).cookies??[]).find(e=>e.name===n);return t&&typeof t.value==`string`?t.value:null})}async function tr(e,t,n){return e.withTab(t,async e=>{let t=await e.evaluate(`(function(){try{var v=window.localStorage.getItem(${JSON.stringify(n)});return v===null?null:String(v);}catch(e){return null;}})()`,{returnByValue:!0});return t==null?null:typeof t==`string`?t:String(t)})}function nr(e){try{return new URL(e).hostname}catch{return null}}function rr(e){try{return new URL(e).origin}catch{return null}}async function ir(e,t,n,r){switch(e){case`list`:return n.list();case`request`:return n.request(t[0]??[]);case`info`:return n.info(t[0]);case`open`:return n.open(t[0]);case`close`:return n.close(t[0],{owner:r.owner,force:!!t[1]?.force});case`reset`:return n.reset(t[0],{owner:r.owner,force:!!t[1]?.force});case`clearHalt`:return n.clearHalt(t[0],t[1],t[2]);case`selectConfig`:return n.selectConfig(t[0],t[1]);case`claim`:return n.claim(t[0],t[1],{owner:r.owner,wait:!!t[2]?.wait});case`release`:return n.release(t[0],t[1],{owner:r.owner});case`controlIn`:return n.controlIn(t[0],t[1],t[2]);case`controlOut`:return n.controlOut(t[0],t[1],t[2]);case`transferIn`:return n.transferIn(t[0],t[1],t[2]);case`transferOut`:return n.transferOut(t[0],t[1],t[2]);case`subscribeClaimEvents`:{let e=t[0];if(r.subscriptions.has(e))return!0;let i=n.subscribeClaimEvents;if(!i)return!0;let a=i(t=>{t.handle===e&&r.pushEvent({type:`realm-event`,channel:`usb-claim-event`,payload:t})});return r.subscriptions.set(e,a),!0}case`unsubscribeClaimEvents`:{let e=t[0],n=r.subscriptions.get(e);return!n||(r.subscriptions.delete(e),await n(),!0)}default:throw Error(`realm-host: unknown usb op '${e}'`)}}async function ar(e,t,n){switch(e){case`list`:return n.list();case`request`:return n.request(t[0]??[]);case`info`:return n.info(t[0]);case`open`:return n.open(t[0],t[1]);case`close`:return n.close(t[0]);case`read`:{let e=t[1]??{};return n.read(t[0],e)}case`write`:return n.write(t[0],t[1]);case`getSignals`:return n.getSignals(t[0]);case`setSignals`:return n.setSignals(t[0],t[1]);default:throw Error(`realm-host: unknown serial op '${e}'`)}}function or(e){let t=e.registered.splice(0);e.backends.clear(),t.length>0&&import(`./registry-DfuJBCKY.js`).then(({getComputerRegistry:e})=>{let n=e();for(let e of t)n?.unregister(e)});for(let t of e.pending.values())t.reject(Error(`realm disposed`));e.pending.clear()}async function sr(e,t,n){switch(e){case`register`:{let e=t[0],[{JshComputerBackend:r},{getComputerRegistry:i,installComputerRegistry:a}]=await Promise.all([import(`./jsh-BjvyvzNA.js`),import(`./registry-DfuJBCKY.js`)]),o=new r(e,(t,r)=>{let i=`c${++n.requestSeq}`;return new Promise((a,o)=>{n.pending.set(i,{resolve:a,reject:o}),n.pushEvent({type:`realm-event`,channel:`computer-call`,payload:{requestId:i,id:e.id,op:t,args:r}})})});return(i()??a(null)).register(o,{pid:n.pid}),n.registered.push(e.id),n.backends.set(e.id,o),{id:e.id}}case`unregister`:{let e=String(t[0]??``);n.backends.delete(e);let{getComputerRegistry:r}=await import(`./registry-DfuJBCKY.js`);return await r()?.unregister(e),n.registered=n.registered.filter(t=>t!==e),{ok:!0}}case`reply`:{let e=String(t[0]??``),r=t[1],i=n.pending.get(e);if(!i)return{ok:!1};n.pending.delete(e);let a=r?.error;return a?i.reject(Error(a)):i.resolve(r),{ok:!0}}case`frame`:{let e=String(t[0]??``),r=t[1];return n.backends.get(e)?.pushFrame(r),{ok:!0}}default:throw Error(`realm-host: unknown computer op '${e}'`)}}async function cr(e,t,n,r){switch(e){case`list`:return n.list();case`request`:return n.request(t[0]??[]);case`info`:return n.info(t[0]);case`open`:return n.open(t[0]);case`close`:return n.close(t[0]);case`sendReport`:return n.sendReport(t[0],t[1],t[2]);case`sendFeatureReport`:return n.sendFeatureReport(t[0],t[1],t[2]);case`receiveFeatureReport`:return n.receiveFeatureReport(t[0],t[1]);case`subscribeInputReports`:{let e=t[0];if(r.subscriptions.has(e))return!0;let i=await n.subscribeInputReports(e,t=>{let n=t.bytes instanceof Uint8Array?t.bytes:new Uint8Array(t.bytes),i={type:`realm-event`,channel:`hid-input-report`,payload:{handle:e,reportId:t.reportId,bytes:n}};r.pushEvent(i,[n.buffer])});return r.subscriptions.set(e,i),!0}case`unsubscribeInputReports`:{let e=t[0],n=r.subscriptions.get(e);return!n||(r.subscriptions.delete(e),await n(),!0)}default:throw Error(`realm-host: unknown hid op '${e}'`)}}function lr(e){if(e instanceof Uint8Array)return[e.buffer];if(e&&typeof e==`object`){let t=e;if(t.body instanceof Uint8Array)return[t.body.buffer];if(t.bytes instanceof Uint8Array)return[t.bytes.buffer]}return[]}const ur=65536;function dr(e,t){if(!t)return e;let n=e+t;return n.length<=ur?n:n.slice(n.length-ur)}const fr={SIGKILL:137,SIGINT:130,SIGTERM:143};function pr(e,t){let n=Math.max(0,e)/1e3;return`--- killed after ${n<10?n.toFixed(2).replace(/(\.\d*?)0+$/,`$1`).replace(/\.$/,``):String(Math.round(n))}s (exit ${t}) ---\n`}function mr(e,t){for(let n of t)e.pendingByPath.delete(n)}function hr(e,t,n){if(e.type===`realm-output`){let r=e;return r.stream===`stdout`?t.stdout=t.captureOutput?t.stdout+r.chunk:dr(t.stdout,r.chunk):t.stderr=t.captureOutput?t.stderr+r.chunk:dr(t.stderr,r.chunk),n?.(r.chunk,r.stream),`live`}if(e.type===`realm-fs-write`){let n=e;return t.pendingByPath.set(n.path,{op:`write`,path:n.path,bytes:n.bytes}),`live`}if(e.type===`realm-fs-delete`){let n=e;return t.pendingByPath.set(n.path,{op:`delete`,path:n.path}),`live`}return e.type===`realm-done`?`done`:e.type===`realm-error`?`error`:`live`}async function gr(e,t,n){try{if(t.op===`write`){let n=e.fs?.writeFile?.bind(e.fs);n&&await n(t.path,t.bytes)}else{let n=e.fs?.rm?.bind(e.fs);n&&await n(t.path,{recursive:!0})}}catch(e){let r=e instanceof Error?e.message:String(e),i=t.op===`write`?`write`:`delete`;n.stderr+=`[sync-fs] ERROR: ${i} of ${t.path} was NOT persisted: ${r}\n`}}async function _r(e,t,n){for(let r of e)await gr(t,r,n)}function vr(e,t,n){return{type:`realm-init`,kind:e.kind,code:e.code,argv:e.realmArgv??e.argv,env:e.env,cwd:e.cwd,filename:e.filename,stdin:e.stdin,pyodideIndexURL:e.pyodideIndexURL,pyodideAssetRoot:e.pyodideAssetRoot,pyodideMountDirs:e.pyodideMountDirs,opfsMountDbName:e.opfsMountDbName,mountPoints:e.mountPoints,...t.syncFsToken===void 0?{}:{syncFsToken:t.syncFsToken},...n?{syncSab:n}:{},...e.captureOutput===!1?{captureOutput:!1}:{}}}async function yr(e){let t=e.procKind??`jsh`,n=e.pm.spawn({kind:t,argv:e.argv,cwd:e.cwd,env:e.env,owner:e.owner,ppid:e.ppid});e.onSpawn?.(n);let r;try{r=await e.realmFactory({kind:e.kind,ctx:e.ctx})}catch(t){let r=t instanceof Error?t.message:String(t);return e.pm.exit(n.pid,1),{stdout:``,stderr:`realm-runner: ${r}\n`,exitCode:1}}let i=r.isolatedThread?br(e.syncSabBytes):void 0,a={stdout:``,stderr:``,pendingByPath:new Map,captureOutput:e.captureOutput!==!1},o=fn(r.controlPort,e.ctx,{...e.owner.scoopJid===void 0?{}:{scoopJid:e.owner.scoopJid},pm:e.pm,owner:e.owner,ppid:n.pid,syncFsBridgeEnabled:!!e.syncFsBridgeEnabled||i!==void 0,...i?{syncSab:i}:{},onHostFsMutation:e=>mr(a,e)});return new Promise(t=>{let s=!1,c=!1,l=null,u=null,d=null,f=null,p=()=>{if(!c){c=!0,u&&r.controlPort.removeEventListener(`message`,u),r.removeEventListener&&(d&&r.removeEventListener(`error`,d),f&&r.removeEventListener(`messageerror`,f)),l?.();try{r.terminate()}catch{}}},m=(r,i)=>{p(),o.dispose(),e.pm.exit(n.pid,i),t(r)},h=(e,t)=>{s||(s=!0,Promise.resolve().then(()=>m(e,t)))},g=t=>{s||(s=!0,Promise.resolve().then(()=>{let r=[...a.pendingByPath.values()];a.pendingByPath.clear(),p(),_r(r,e.ctx,a).finally(()=>{let e=pr(Date.now()-n.startedAt,t);m({stdout:a.stdout,stderr:a.stderr+e,exitCode:t},t)})}))};u=t=>{let n=t.data,r=hr(n,a,e.onOutput);if(r===`done`){let e=t.data;h({stdout:e.stdout,stderr:e.stderr,exitCode:e.exitCode},e.exitCode)}else if(r===`error`){let e=t.data;h({stdout:a.stdout,stderr:a.stderr+e.message+`
16
- `,exitCode:1},1)}},d=e=>{e.preventDefault?.();let t=e.message??`realm error`;h({stdout:a.stdout,stderr:a.stderr+t+`
17
- `,exitCode:1},1)},f=()=>{h({stdout:a.stdout,stderr:a.stderr+`realm-runner: worker message could not be deserialized
18
- `,exitCode:1},1)},l=e.pm.onSignal((e,t)=>{if(e.pid!==n.pid)return;let r=fr[t];r!==void 0&&g(r)}),r.controlPort.addEventListener(`message`,u),r.addEventListener&&(r.addEventListener(`error`,d),r.addEventListener(`messageerror`,f)),r.controlPort.postMessage(vr(e,o,i))})}function br(e){if(pe())try{return new SharedArrayBuffer(64+(e??1048576))}catch{return}}let xr=!1;function Sr(e){xr=e}function Cr(){return xr}const wr=Object.freeze({anthropic:`ANTHROPIC_API_KEY`,"ant-ling":`ANT_LING_API_KEY`,"qwen-token-plan":`QWEN_TOKEN_PLAN_API_KEY`,"qwen-token-plan-cn":`QWEN_TOKEN_PLAN_CN_API_KEY`,"qwen-token-plan-individual":`QWEN_TOKEN_PLAN_API_KEY`,openai:`OPENAI_API_KEY`,"azure-openai-responses":`AZURE_OPENAI_API_KEY`,nvidia:`NVIDIA_API_KEY`,deepseek:`DEEPSEEK_API_KEY`,google:`GEMINI_API_KEY`,"google-vertex":`GOOGLE_CLOUD_API_KEY`,groq:`GROQ_API_KEY`,cerebras:`CEREBRAS_API_KEY`,xai:`XAI_API_KEY`,radius:`RADIUS_API_KEY`,openrouter:`OPENROUTER_API_KEY`,"vercel-ai-gateway":`AI_GATEWAY_API_KEY`,zai:`ZAI_API_KEY`,"zai-coding-cn":`ZAI_CODING_CN_API_KEY`,mistral:`MISTRAL_API_KEY`,minimax:`MINIMAX_API_KEY`,"minimax-cn":`MINIMAX_CN_API_KEY`,moonshotai:`MOONSHOT_API_KEY`,"moonshotai-cn":`MOONSHOT_API_KEY`,huggingface:`HF_TOKEN`,fireworks:`FIREWORKS_API_KEY`,together:`TOGETHER_API_KEY`,baseten:`BASETEN_API_KEY`,opencode:`OPENCODE_API_KEY`,"opencode-go":`OPENCODE_API_KEY`,"kimi-coding":`KIMI_API_KEY`,"cloudflare-workers-ai":`CLOUDFLARE_API_KEY`,"cloudflare-ai-gateway":`CLOUDFLARE_API_KEY`,xiaomi:`XIAOMI_API_KEY`,"xiaomi-token-plan-cn":`XIAOMI_TOKEN_PLAN_CN_API_KEY`,"xiaomi-token-plan-ams":`XIAOMI_TOKEN_PLAN_AMS_API_KEY`,"xiaomi-token-plan-sgp":`XIAOMI_TOKEN_PLAN_SGP_API_KEY`});function Tr(e){return wr[e]??null}function Er(e,t){let n=Tr(e);if(!n)return{};let r=t.find(t=>t.providerId===e)?.apiKey?.trim();return r?{[n]:r}:{}}let $=null;function Dr(e){let t=$;return $=e,t}async function Or(){if(!$)return{};try{return await $()??{}}catch{return{}}}function kr(){return async()=>{let{getAccounts:e,getSelectedProvider:t}=await import(`./account-store-BXs7YUd1.js`).then(e=>e.t);return Er(t(),e())}}async function Ar(e,t,n,r,i={}){return await n.fs.exists(e)?jr(await n.fs.readFile(e),[`node`,e,...t],n,r,{...i,filename:e}):{stdout:``,stderr:`jsh: cannot find script '${e}'\n`,exitCode:127}}async function jr(e,t,n,r,i={}){let a=i.realmFactory??await Mr(),o=r?.processManager??Fr()??Pr(),s=r?.owner??{kind:`system`},c=i.filename??t[1]??`<eval>`;return await yr({pm:o,realmFactory:a,owner:s,kind:`js`,code:E(e,{keepLine:!0}),argv:t,env:{...s.kind===`scoop`||s.kind===`jshd`?{}:await Or(),...Object.fromEntries(n.env.entries())},cwd:n.cwd,filename:c,stdin:he(n.stdin),ctx:n,ppid:r?.getParentPid?.(),syncFsBridgeEnabled:Cr(),...i.onSpawn?{onSpawn:e=>i.onSpawn?.(e.pid)}:{},...i.onOutput?{onOutput:i.onOutput}:{},...i.captureOutput===!1?{captureOutput:!1}:{}})}async function Mr(){if(typeof Worker<`u`||typeof document<`u`)return S();let{createInProcessJsRealmFactory:e}=await import(`./realm-inprocess-DtJhD5Fl.js`);return e()}let Nr=null;function Pr(){return Nr||=new u,Nr}function Fr(){let e=globalThis.__slicc_pm;return e&&typeof e==`object`&&typeof e.spawn==`function`&&typeof e.onSignal==`function`?e:null}export{Ge as _,Cr as a,S as b,ln as c,U as d,z as f,k as g,Ke as h,Dr as i,Rt as l,L as m,Ar as n,Sr as o,V as p,kr as r,yr as s,jr as t,H as u,E as v,ye as x,T as y};
@@ -1 +0,0 @@
1
- import{t as e}from"./provider-B7Epu3fA.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{t as e}from"./store-DI5uS3CV.js";import"./provider-DFROVc_U.js";export{e as readMcpAuthEntries};
@@ -1,8 +0,0 @@
1
- import{a as e,c as t,d as n,f as r,g as i,l as a,m as o,n as s,o as c,p as l,s as u,t as d,u as f}from"./stdio-tty-uIuGda2o.js";import{r as p}from"./global-prefix-DqCuANmV.js";import{r as m}from"./wasm-programs-CsoF9Lrt.js";import{t as h}from"./wasm-compiler-Ct7QZURL.js";import{S as ee,w as g,x as _}from"./sync-exec-dispatch-BwrIjhDd.js";import{t as v}from"./sync-sab-wire-D_d0fd3b.js";import{t as y}from"./sync-sab-responder-Bfd9S0pw.js";import{i as te}from"./just-bash-compat-B-SPHuh_.js";const ne=String.raw`printf '\033]7777;%s\007' "$?"`,re=[`if [ -f ~/.bashrc ]; then . ~/.bashrc; fi`,`exec 98<&-`,``].join(`
2
- `),b={HUP:1,INT:2,QUIT:3,ILL:4,TRAP:5,ABRT:6,BUS:7,FPE:8,KILL:9,USR1:10,SEGV:11,USR2:12,PIPE:13,ALRM:14,TERM:15,STKFLT:16,CHLD:17,CONT:18,STOP:19,TSTP:20,TTIN:21,TTOU:22,URG:23,XCPU:24,XFSZ:25,VTALRM:26,PROF:27,WINCH:28,POLL:29,PWR:30,SYS:31},ie=new Set([b.CHLD,b.URG,b.WINCH]),ae=new Set([b.STOP,b.TSTP,b.TTIN,b.TTOU]);function x(e){return e===b.CONT?`continue`:ae.has(e)?`stop`:ie.has(e)?`ignore`:`terminate`}function S(e){return Number.isInteger(e)&&e>=1&&e<=31}function C(e){return 1<<e}const w={SIGINT:b.INT,SIGTERM:b.TERM,SIGKILL:b.KILL,SIGSTOP:b.STOP,SIGCONT:b.CONT},T=16384;function oe(){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 E=new TextEncoder;function D(e){return(e&192)==128}var se=class{screen;signal;termios=oe();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(b.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 u({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)?b.INT:e===this.cc(1)?b.QUIT:e===this.cc(10)?b.TSTP:0;return!t||e===0?!1:(this.termios.c_lflag&8&&this.echo(e),this.termios.c_lflag&128||(this.line=[],this.readable=[]),this.signal(t),!0)}edit(e){let t=!!(this.termios.c_lflag&8);e===this.cc(2)||e===8?this.rubOut(this.lastCharLength()):e===this.cc(3)?this.rubOut(this.line.length):e===this.cc(14)?this.rubOut(this.lastWordLength()):e===this.cc(4)?(this.readable.push(this.line.length>0?Uint8Array.from(this.line):null),this.line=[]):e===10?(this.line.push(e),t&&this.output(E.encode(`
3
- `)),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&T)for(;t<e.length&&D(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&T?t.filter(e=>!D(e)).length:t.length;n>0&&this.termios.c_lflag&8&&this.output(E.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 c(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new c(`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()}},O=class extends Error{code;constructor(e){super(e),this.code=e}};function ce(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new c(`EINTR`)),e?.aborted?t():e?.addEventListener(`abort`,t,{once:!0})}),done:()=>e?.removeEventListener(`abort`,t)}}function le(e){return(e&255)<<8|127}function ue(e,t){return t?t&127:(e&255)<<8}function de(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 fe=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 O(`ENOSYS`);return this.track(e,this.parentFds.fork(),new Map,this.forker)}async spawn(t,n,r=[]){if(!this.spawner)throw new O(`ENOSYS`);let i=new e,a=new Map;try{for(let[e,t]of n.entries())i.installAt(e,this.openSlot(t,e,a));for(let{fd:e,kernel:t,flags:n}of r)e<=2||(i.installAt(e,this.parentFds.get(t).retain()),n!==void 0&&i.setStatusFlags(e,n))}catch(e){throw await i.closeAll(),e}return this.track(t,i,a,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,n,r){if(`fd`in e)return this.parentFds.get(e.fd).retain();if(`input`in e)return t(e.input);if(`capture`in e){let e=[];return r.set(n,e),l(t=>e.push(t))}return f()}async wait(e,t,n,r={}){let i;try{for(;;){let a=this.candidates(e,r);if(a.length===0)throw new c(`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??=ce(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,le(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,ue(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),de(r))}};function pe(e,t,n){return{read:t.filter(t=>{let n=r(e.get(t).file);return n.readable||n.hangup}),write:n.filter(t=>{let n=r(e.get(t).file);return n.writable||n.hangup})}}function me(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new c(`EINTR`)),e.aborted?t():e.addEventListener(`abort`,t,{once:!0})}),done:()=>e.removeEventListener(`abort`,t)}}async function he(e,t,n,r,i){let a=r<0?1/0:Date.now()+r,o=me(i);o.promise.catch(()=>{});try{return await ge(e,t,n,a,o.promise)}finally{o.done()}}async function ge(e,t,n,r,i){for(;;){let a=pe(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 k=32768;function A(e){return/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e)}async function j(e){try{return await e()}catch(e){throw e instanceof i?new c(e.code):e}}var _e=class{waiters=[];wait(e){return e?.aborted?Promise.reject(new c(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new c(`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 M(e,t){let n=new o,r=new o;for(let e of[n,r])e.openRead(),e.openWrite();e.attach({rx:r,tx:n}),t.attach({rx:n,tx:r})}var N=class e{net;domain;state=`open`;local;peer;link;readShut=!1;writeShut=!1;queue=[];backlog=0;bound=!1;changes=new _e;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 c(`ENOTCONN`);return this.link}async read(e,t){let{rx:n}=this.connection();return this.readShut||e<=0?new Uint8Array:j(()=>n.read(e,t))}async peek(e,t){let{rx:n}=this.connection();return this.readShut||e<=0?new Uint8Array:j(()=>n.peek(e,t))}async write(e,t){let{tx:n}=this.connection();if(this.writeShut)throw new c(`EPIPE`);return j(()=>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 j(()=>Promise.race(n))}bind(e){if(this.state!==`open`||this.local)throw new c(`EINVAL`);if(e.family!==this.domain)throw new c(`EAFNOSUPPORT`);this.local=this.net.bind(this,e),this.bound=!0}listen(e){if(this.state===`connected`)throw new c(`EISCONN`);if(this.state!==`open`&&this.state!==`listening`)throw new c(`EINVAL`);if(!this.local){if(this.domain===`unix`)throw new c(`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 c(`EINVAL`);let n=this.queue.shift();if(n)return n;if(t)throw new c(`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 c(`EISCONN`);if(this.state!==`open`)throw new c(`EINVAL`);if(t.family!==this.domain)throw new c(`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:P(t.host)}:t,r.peer=this.local,this.peer=r.local,M(this,r),!n.offer(r))throw this.unlink(),r.close(),new c(`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 c(`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:``},M(r,i),[r,i]}};function P(e){return e===`0.0.0.0`?`127.0.0.1`:e}function F(e){return e.family===`inet`?`inet:${e.port}`:`unix:${e.path}`}var I=class{bound=new Map;nextEphemeral=k;socket(e){return new N(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 c(`EINVAL`)}else if(t.host!==`0.0.0.0`&&!A(t.host))throw new c(`EADDRNOTAVAIL`);let n=t.family===`inet`&&t.port===0?{...t,port:this.ephemeral()}:t,r=F(n);if(this.bound.has(r))throw new c(`EADDRINUSE`);return this.bound.set(r,e),n}release(e,t){let n=F(e);this.bound.get(n)===t&&this.bound.delete(n)}target(e){if(e.family===`inet`&&!A(P(e.host)))throw new c(`ENETUNREACH`);let t=this.bound.get(F(e));if(!t?.listening)throw new c(`ECONNREFUSED`);return t}ephemeral(){for(let e=0;e<28232;e++){let e=this.nextEphemeral;if(this.nextEphemeral=e===60999?k:e+1,!this.bound.has(`inet:${e}`))return e}throw new c(`EADDRINUSE`)}};const L=new Map;function ve(e){let t=L.get(e);return t||(t=new I,L.set(e,t)),t}function ye(e){return e?`${e.kind}:${e.scoopJid??``}`:`local`}const be=[`sock-open`,`sock-pair`,`sock-bind`,`sock-listen`,`sock-accept`,`sock-connect`,`sock-shutdown`,`sock-name`,`sock-getopt`,`sock-setopt`];function R(e,t){let n=e.get(t).file;if(!(n instanceof N))throw new c(`ENOTSOCK`);return n}const z=e=>e===void 0?{ok:!0,kind:`void`}:{ok:!0,kind:`json`,json:e};async function xe(e,t){let{fds:n,net:r}=t;switch(e.op){case`sock-open`:return z(n.install(new u(r.socket(e.domain)),3));case`sock-pair`:{let[t,i]=N.pair(r,e.domain),a=n.install(new u(t),3);try{return z([a,n.install(new u(i),3)])}catch(e){throw await Promise.resolve(n.close(a)),e}}case`sock-bind`:return R(n,e.fd).bind(e.addr),z();case`sock-listen`:return R(n,e.fd).listen(e.backlog),z();case`sock-accept`:return z(await Ce(t,e.fd,e.nonblock));case`sock-connect`:if(R(n,e.fd).connect(e.addr),e.nonblock)throw new c(`EINPROGRESS`);return z();case`sock-shutdown`:return R(n,e.fd).shutdown(e.how),z();case`sock-name`:{let t=R(n,e.fd),r=e.peer?t.peer:t.local;if(e.peer&&!r)throw new c(`ENOTCONN`);return z(r??Se(t.domain))}case`sock-getopt`:return z(R(n,e.fd).getOption(e.level,e.name));case`sock-setopt`:return R(n,e.fd).setOption(e.level,e.name,e.value),z()}}function Se(e){return e===`inet`?{family:`inet`,host:`0.0.0.0`,port:0}:{family:`unix`,path:``}}async function Ce(e,t,n){let i=R(e.fds,t),a=!n&&!r(i).readable,o=await i.accept(a?e.blocking():void 0,n);return{fd:e.fds.install(new u(o),3),peer:o.peer}}function we(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,l=t.position,d=Promise.resolve(),f=e=>{let t=d.then(e);return d=t.catch(()=>void 0),t},p=async()=>{if(!a){try{a=await e.readFileBuffer(t.path)}catch{a=new Uint8Array}o=a.length}return a},m=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},h=async()=>{!s||!a||t.orphan||(s=!1,await e.writeFile(t.path,a.slice(0,o)))};return new u({read:r?e=>f(async()=>{let t=await p(),n=Math.max(0,Math.min(e,o-l)),r=t.slice(l,l+n);return l+=n,r}):void 0,write:i?e=>f(async()=>{await p(),t.flags&1024&&(l=o);let n=m(l+e.length);return l>o&&n.fill(0,o,l),n.set(e,l),l+=e.length,o=Math.max(o,l),s=!0,e.length}):void 0,seek:(e,t)=>f(async()=>{let n=0;if(t===1)n=l;else if(t===2)await p(),n=o;else if(t!==0)throw new c(`EINVAL`);if(n+e<0)throw new c(`EINVAL`);return l=n+e,l}),flush:()=>f(h),close:()=>f(h)})}const Te=new Set([`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`]);function Ee(e){return Te.has(e.op)}function De(e){return e.op.startsWith(`sock-`)}function Oe(e){return e.op.startsWith(`fd-`)}function ke(e){return e.op.startsWith(`tty-`)}const Ae=new Set([`fd-read`,`fd-write`,`fd-close`,`fd-pipe`,`fd-poll`,`fd-open-vfs`,`fd-seek`,`fd-select`,`fd-info`,`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`,...be]);function je(e){let t=e.op;return typeof t==`string`&&Ae.has(t)}var Me=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 fe(t,n.spawner,n.forker),this.children.onChildState=()=>this.signal(b.CHLD)}signal(e){if(this.execChild!==void 0)return Promise.resolve(this.options.kill?.(this.execChild,e)).catch(()=>void 0),e===b.KILL?`terminate`:`forward`;if(e===b.KILL)return`terminate`;if(e===b.CONT&&this.cont(),e===b.STOP)return this.stop(e);let t=C(e);if(this.ignored&t)return`ignore`;if(!(this.caught&t)){let t=x(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`,b.CONT)}}async syscall(e){for(;;){await this.resumed;let t=this.stops,n=await this.dispatch(e);if(!(!n.ok&&n.errno===`EINTR`&&this.stops!==t&&!this.options.hasPending?.()))return await this.resumed,n}}async dispatch(e){try{return Oe(e)?await this.fdSyscall(e):ke(e)?this.ttySyscall(e):Ee(e)?this.jobSyscall(e):De(e)?await this.socketSyscall(e):await this.procSyscall(e)}catch(e){if(e instanceof c||e instanceof O)return{ok:!1,errno:e.code,message:e.code};throw e}}blockingSignal(){if(this.options.hasPending?.())throw new c(`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 c(e.peek&&t.read?`EOPNOTSUPP`:`EBADF`);if(t.tty&&this.checkForeground(t.tty),e.max<=0)return new Uint8Array;let i=r(t).readable;if(!i&&e.nonblock)throw new c(`EAGAIN`);let a=i?this.interrupt.signal:this.blockingSignal();return n.call(t,Math.max(0,Math.min(e.max,1048576)),a)}async write(e,t,n=!1){let i=this.fds.get(e).file;if(!i.write)throw new c(`EBADF`);if(!r(i).writable){if(n)throw new c(`EAGAIN`);return i.write(t,this.blockingSignal())}return n?i.write(t,AbortSignal.abort()):i.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=n(),t=this.fds.install(e.read,3),r;try{r=this.fds.install(e.write,3)}catch(e){throw await Promise.resolve(this.fds.close(t)),e}return{ok:!0,kind:`json`,json:[t,r]}}case`fd-poll`:return{ok:!0,kind:`json`,json:r(this.fds.get(e.fd).file)};case`fd-open-vfs`:{if(!this.options.fs)throw new O(`ENOSYS`);let t=we(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-select`:{let{read:t,write:n,timeoutMs:r}=e,i=this.blockingSignal();return{ok:!0,kind:`json`,json:await he(this.fds,t,n,r,i)}}case`fd-seek`:{let t=this.fds.get(e.fd).file;if(!t.seek)throw new c(`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 c(`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&C(b.TTIN)?new c(`EIO`):(t.killGroup(n,b.TTIN),new c(`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}jobSyscall(e){let t=this.options.jobs,n=e=>{if(e!==0&&e!==this.pid)throw new c(`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 c(`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 c(`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 c(`ENOTTY`);return t}socketSyscall(e){return this.net??=this.options.net??new I,xe(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());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&&!S(e.sig))throw new c(`EINVAL`);if(!await this.options.kill?.(e.pid===0?-this.pgid():e.pid,e.sig))throw new c(`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 Ne(){return new Worker(new URL(`/assets/process-worker-BlGG6CFl.js`,``+import.meta.url),{type:`module`})}const B=new WeakMap;let Pe=1;function Fe(e){let t=B.get(e);return t===void 0&&B.set(e,t=Pe++),t}function Ie(e){return e.numbers().filter(e=>e>2).map(t=>{let n=e.get(t),r=e.statusFlags(t),i=n.file instanceof N?`socket`:a(n.file);return{fd:t,kind:i,...r===void 0?{}:{flags:r},...e.closesOnExec(t)?{cloexec:!0}:{},...i===`stream`?{desc:Fe(n)}:{}}})}function Le(e){let t=new SharedArrayBuffer(64+v),n=new Int32Array(t,0,16),r=new Me(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,C(e)),hasPending:()=>Atomics.load(n,8)!==0}),i=ee({fs:e.fs,cwd:e.cwd}),a=(e.createWorker??Ne)(),o=y(a,t,i,{dispatch:async e=>je(e)?r.syscall(e):`op`in e&&typeof e.op==`string`&&`path`in e?_(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(),g(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:Ie(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===b.KILL?137:128+e,e)},termsig:()=>u,onState:e=>r.onState(e)}}var Re=class{members=new Map;foreground=new Map;add(e,t,n){let r=t===void 0?void 0:this.members.get(t),i={pid:e,ppid:r?.pid,pgid:r?.pgid??e,sid:r?.sid??e,signal:n};return this.members.set(e,i),i}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 c(`ESRCH`);return t}setpgid(e,t,n){let r=this.member(t||e),i=n||r.pid;if(i<0)throw new c(`EINVAL`);let a=this.member(e);if(r.pid!==e){if(r.ppid!==e)throw new c(`ESRCH`);if(r.execed)throw new c(`EACCES`)}if(r.sid!==a.sid||r.pid===r.sid)throw new c(`EPERM`);let o=[...this.members.values()].some(e=>e.pgid===i&&e.sid===r.sid);if(i!==r.pid&&!o)throw new c(`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 c(`EPERM`);return t.sid=e,t.pgid=e,e}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 c(`EPERM`);this.foreground.set(t,n)}signalForeground(e,t,n){this.killGroup(this.tcgetpgrp(e,t),n)}};const V=new Map,ze=new Map(Object.entries(w).map(([e,t])=>[t,e])),H=/^\/(?:usr\/)?bin\/([^/]+)$/;let Be=4e4;function U(e){return e.endsWith(`.js`)?`${e.slice(0,-3)}.wasm`:`${e}.wasm`}function Ve(e){return H.exec(e)?.[1]??W(e)}function W(e){return e.slice(e.lastIndexOf(`/`)+1)}function He(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 G(e){return m(He(e),p)}async function Ue(e,t){let n=await e.fs.stat(t),r=`${t}:${n.size}:${n.mtime.getTime()}`,i=V.get(r);return i||(i=h(t=>e.fs.readFileBuffer(t),t),V.set(r,i),i.catch(()=>V.delete(r))),i}function We(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return t}function Ge(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 Ke(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 K(e,t,n){if(n.length===0||!e.has(t))return;let r=e.get(t).file;try{await r.write?.(n)}catch{}}function q(e,t){return e.has(t)&&e.get(t).file.tty!==void 0}function qe(e){return{...q(e,0)?{}:{[d]:`0`},...q(e,1)?{}:{[s]:`0`}}}function J(e){return{pid:e.pid,exited:e.exited,termsig:e.termsig,onState:t=>e.onState(t)}}var Je=class{ctx;processConfig;onError;gate;lookup;live=new Set;shellChildren=new Set;wasmByPid=new Map;shellByPid=new Map;installed;jobs=new Re;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=ve(ye(t?.owner))}commands(){return this.lookup?this.lookup():(this.installed??=G(this.ctx),this.installed)}async launch(e){let t,n;try{t=await this.ctx.fs.readFile(e.glue),n=await Ue(this.ctx,e.module),e.signal?.throwIfAborted()}catch(t){throw await e.fds.closeAll(),t}let r=e.defaults?{...e.defaults,...e.env}: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=Le({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(r),this.wasmByPid.set(n,r),this.leader??=n,this.jobs.add(n,e.ppid,e=>r.signal(e));let i=t?.onSignal((e,t)=>{e.pid===n&&r.signal(w[t])});return r.exited.then(e=>{this.live.delete(r),this.wasmByPid.delete(n),this.jobs.remove(n),i?.(),this.processConfig&&t?.exit(n,e)}),r}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=ze.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 c(`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=H.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),a=U(i);if(!(!await this.ctx.fs.exists(i)||!await this.ctx.fs.exists(a)))return{glue:i,module:a,argv0:W(t||e)}}forker(e,t){return async(n,r)=>J(this.start({...t,cwd:n.cwd??t.cwd,fds:r,ppid:e,fork:n}))}spawner(e){return async(t,n)=>{let r=await this.resolve(t.file,t.argv[0]??t.file,t.cwd);if(!r)return this.runShellChild(t,n,e);let i=await this.gate?.(Ve(t.file),t.argv.slice(1),t.env);return i?this.deniedChild(t,n,e,i):J(await this.launch({...r,args:t.argv.slice(1),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 K(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 O(`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=>{x(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(w[t])}),d=(async()=>{try{let n=q(t,0),i=t.has(0)&&!n?await Ke(t.get(0)):new Uint8Array,a=await r(e.file,{args:e.argv.slice(1),cwd:e.cwd,env:{...e.env,...qe(t)},replaceEnv:!0,stdin:We(i),stdinKind:`bytes`,signal:o.signal});return await K(t,1,a.stdoutKind===`bytes`?Ge(a.stdout):new TextEncoder().encode(a.stdout)),await K(t,2,new TextEncoder().encode(a.stderr)),a.exitCode}catch(n){let r=n instanceof Error?n.message:String(n);return await K(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:Be++}}};const Y=`usage: wasm [-t] [--argv0 NAME] [--module PATH] PROGRAM [ARGS...]
4
- wasm --list
5
- wasm --login
6
- `;function Ye(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 X(e,t){return t.commands?.()??G(e)}function Z(e){if(!e)return()=>{};let t=new TextDecoder;return n=>{let r=t.decode(n,{stream:!0});r&&e(r)}}function Xe(n,r,i,a){let o=[],s=n.limits?.maxOutputSize??268435456,c=0,u=!1,d=(e,t)=>n=>{if(c+=n.length,c>s){u=!0,r.killAll(1);return}e.push(n),t(n)},f=new e;return f.install(t(nt(n))),f.install(l(d(o,Z(a)))),f.install(l(d(i,Z(a)))),{fds:f,collected:()=>({stdout:tt(o),note:u?`wasm: output exceeded ${s} bytes; stopped\n`:``}),release:()=>{}}}function Ze(t,n){let r=new se({write:e=>t.write(e)},e=>n.signalTerminal(r,e));r.setSize(t.cols,t.rows),t.onInput(e=>r.receive(e)),t.onResize((e,t)=>r.resize(e,t));let i=r.file(),a=new e;return a.installAt(0,i),a.installAt(1,i.retain()),a.installAt(2,i.retain()),{fds:a,collected:()=>({stdout:``,note:``}),release:()=>t.release()}}function Qe(e,t){let n={...e.exportedEnv??Object.fromEntries(e.env)};return t.tty&&(!n.TERM||n.TERM===`dumb`)&&(n.TERM=`xterm-256color`,n.COLORTERM??=`truecolor`),t.login&&(n.PS1??=`\\w $ `,n.PROMPT_COMMAND??=ne),n}async function Q(e,n){let r={stdout:``,stderr:``,exitCode:125};if((e.exportedEnv?.SLICC_SHELL??e.env.get(`SLICC_SHELL`))===`just-bash`||!n.terminal||typeof SharedArrayBuffer!=`function`||!(await X(e,n)).has(`bash`))return r;let i=t(new TextEncoder().encode(re));return $([`-t`,`--login-prompt`,`bash`,`--rcfile`,`/dev/fd/98`,`-i`],e,{...n,fds:[[98,i]]})}function $e(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 et(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 tt(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 nt(e){let t=te(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function rt(e,t){return e.defaults??t.defaults}async function $(e,t,n={}){let{processConfig:r,terminal:i}=n;if(e[0]===`--help`||e[0]===`-h`)return{stdout:Y,stderr:``,exitCode:0};if(e[0]===`--login`&&e.length===1)return Q(t,n);if(e[0]===`--list`&&e.length===1)return{stdout:$e(await X(t,n)),stderr:``,exitCode:0};let a=Ye(e);if(!a)return{stdout:``,stderr:Y,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)
7
- `,exitCode:126};let o=[],s=e=>{o.push(new TextEncoder().encode(`wasm: ${e}\n`))},c=new Je(t,r,e=>s(e),n.gate,n.commands),l=await et(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)
8
- `,exitCode:1};d=Ze(e,c),s=t=>e.write(new TextEncoder().encode(`wasm: ${t}\r\n`))}else d=Xe(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):U(u),argv0:l.argv0??u.slice(u.lastIndexOf(`/`)+1).replace(/\.js$/,``),args:l.args,env:Qe(t,l),defaults:rt(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(it(o)),exitCode:e,stdoutKind:`bytes`}}finally{d.release(),t.signal?.removeEventListener(`abort`,m)}}function it(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{$ as runWasmCommand};