sliccy 6.240.3 → 6.241.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 (153) hide show
  1. package/README.md +1 -0
  2. package/dist/node-server/_shared/tray-signaling.d.ts +56 -2
  3. package/dist/node-server/_shared/tray-signaling.d.ts.map +1 -1
  4. package/dist/node-server/_shared/tray-signaling.js.map +1 -1
  5. package/dist/ui/.vite/manifest.json +203 -203
  6. package/dist/ui/assets/SKILL-tmFs9Tl9.js +1 -0
  7. package/dist/ui/assets/{account-store-BY7L2nue.js → account-store-B4MRNBiU.js} +1 -1
  8. package/dist/ui/assets/{account-store-BZTlSap7.js → account-store-D6N6Obqj.js} +1 -1
  9. package/dist/ui/assets/{adobe-CDStXNdn.js → adobe-D9Tq_x4k.js} +1 -1
  10. package/dist/ui/assets/{adobe-CMMbs-uB.js → adobe-DVy7hvll.js} +1 -1
  11. package/dist/ui/assets/{agent-panels-BoMV6jtA.js → agent-panels-BF4v3vpn.js} +1 -1
  12. package/dist/ui/assets/{almost-bash-shell-headless--cwLwrzv.js → almost-bash-shell-headless-DJcJGXYx.js} +171 -171
  13. package/dist/ui/assets/{apply-layout-BtjslV7Z.js → apply-layout-CbcobFVJ.js} +1 -1
  14. package/dist/ui/assets/{azure-openai--A3VPQCt.js → azure-openai-BezpVwnX.js} +1 -1
  15. package/dist/ui/assets/{azure-openai-C9E5PjlB.js → azure-openai-Dr-mjpxi.js} +1 -1
  16. package/dist/ui/assets/{cdp-B6c3Uk2f.js → cdp-yWQRqgCi.js} +1 -1
  17. package/dist/ui/assets/{cerebras-DXBssPNt.js → cerebras-2AZH3km-.js} +1 -1
  18. package/dist/ui/assets/{cerebras-CLDfgkgy.js → cerebras-RV066x9U.js} +1 -1
  19. package/dist/ui/assets/{composer-speech-CCWWTz70.js → composer-speech-nTc1tsE_.js} +1 -1
  20. package/dist/ui/assets/{connect-surface-CKPv2fJZ.js → connect-surface-D56jLIu6.js} +1 -1
  21. package/dist/ui/assets/{directed-approval-WdzT5Jb8.js → directed-approval-CyA0zJ-G.js} +1 -1
  22. package/dist/ui/assets/{emscripten-vfs-hook-Bjqk301Y.js → emscripten-vfs-hook-CGTtR17j.js} +1 -1
  23. package/dist/ui/assets/{frozen-archive-writer-Ds5upuER.js → frozen-archive-writer-BnIHZhI2.js} +1 -1
  24. package/dist/ui/assets/{frozen-archive-writer-BJkhyap1.js → frozen-archive-writer-CUBMAwRu.js} +1 -1
  25. package/dist/ui/assets/{frozen-session-delete-CJoYh-8I.js → frozen-session-delete-DkPaFCiA.js} +1 -1
  26. package/dist/ui/assets/{frozen-session-identity-HGxlRDB-.js → frozen-session-identity-BZvtSRqp.js} +1 -1
  27. package/dist/ui/assets/{frozen-session-identity-BLUbhsFI.js → frozen-session-identity-yWazeS7M.js} +1 -1
  28. package/dist/ui/assets/{gelatiere-unit-Dm-nEuug.js → gelatiere-unit-Cf5z5jlu.js} +1 -1
  29. package/dist/ui/assets/{github-B9zmCrJs.js → github-F-EteNmR.js} +1 -1
  30. package/dist/ui/assets/{github-B9kp64Og.js → github-KtTP2Vt1.js} +1 -1
  31. package/dist/ui/assets/{github-copilot-CYUjFE56.js → github-copilot-BIxCU-G8.js} +1 -1
  32. package/dist/ui/assets/{github-copilot-DzY0_cZO.js → github-copilot-CXq9RzvR.js} +1 -1
  33. package/dist/ui/assets/{go-driver-kLCdKKCl.js → go-driver-BQftm-Ef.js} +2 -2
  34. package/dist/ui/assets/{hear-BbTDqjkN.js → hear-D05ltAUR.js} +1 -1
  35. package/dist/ui/assets/home-dir-CR-07Jxc.js +1 -0
  36. package/dist/ui/assets/{js-realm-worker-CCSqHLiq.js → js-realm-worker-Bip5Es3v.js} +2 -2
  37. package/dist/ui/assets/jsh-discovery-JLWUZ8pe.js +2 -0
  38. package/dist/ui/assets/jsh-executor-DUgD6Gyu.js +18 -0
  39. package/dist/ui/assets/just-bash-compat-BRjWDzIj.js +1 -0
  40. package/dist/ui/assets/{kernel-worker-DAOlZAnY.js → kernel-worker-Cg_ebMNU.js} +67 -67
  41. package/dist/ui/assets/{lick-ws-bridge-DNmnSlAZ.js → lick-ws-bridge-2U9zsFLS.js} +1 -1
  42. package/dist/ui/assets/{lick-ws-bridge-DpLDuGHA.js → lick-ws-bridge-DmXnS2qa.js} +1 -1
  43. package/dist/ui/assets/{live-session-curation-Das-8xnF.js → live-session-curation-4hB2MO66.js} +1 -1
  44. package/dist/ui/assets/{live-session-curation-CZkIr6Zu.js → live-session-curation-Dl8UVQpB.js} +1 -1
  45. package/dist/ui/assets/{live-session-snapshot-D8lEUK7J.js → live-session-snapshot-DfQ2xx8_.js} +1 -1
  46. package/dist/ui/assets/{local-llm-PTZ0UPXw.js → local-llm-4JZqVeLj.js} +1 -1
  47. package/dist/ui/assets/{local-llm-BblvgE13.js → local-llm-C8WbruI9.js} +1 -1
  48. package/dist/ui/assets/{main-BfPkUEOn.js → main-B5oWPamu.js} +3 -3
  49. package/dist/ui/assets/{main-cherry-Wxt6L3-r.js → main-cherry-Bt-YqAPf.js} +1 -1
  50. package/dist/ui/assets/{mcp-command-PQ40GO9Q.js → mcp-command-DhzJEyAA.js} +13 -10
  51. package/dist/ui/assets/{memory-curation-seam-ZfZvKgO0.js → memory-curation-seam-CJPFFZSo.js} +1 -1
  52. package/dist/ui/assets/{memory-health-DeU8Hnvy.js → memory-health-DB5HxDRZ.js} +1 -1
  53. package/dist/ui/assets/{memory-write-execute--18W6rIW.js → memory-write-execute-Du1DrzA7.js} +1 -1
  54. package/dist/ui/assets/{merge-folded-cost-into-frozen-C5WK2ebU.js → merge-folded-cost-into-frozen-BxsX-0_M.js} +1 -1
  55. package/dist/ui/assets/{new-session-Bu1vMo6m.js → new-session-uLCxSjSj.js} +2 -2
  56. package/dist/ui/assets/{oauth-bootstrap-BXI2tTwP.js → oauth-bootstrap-CQGJFtJe.js} +2 -2
  57. package/dist/ui/assets/{onboarding-orchestrator-qYm2EcAa.js → onboarding-orchestrator-BF4uFHc2.js} +1 -1
  58. package/dist/ui/assets/{openai-codex-BRVnsck1.js → openai-codex-C6r6jYiQ.js} +1 -1
  59. package/dist/ui/assets/{openai-codex-DoTDnY8l.js → openai-codex-D9PeyZ_T.js} +1 -1
  60. package/dist/ui/assets/{openrouter-DH09mvh8.js → openrouter-C6X4ttJA.js} +1 -1
  61. package/dist/ui/assets/{openrouter-free-CjLo7d0B.js → openrouter-free-B67TUW3s.js} +1 -1
  62. package/dist/ui/assets/{openrouter-free-D_agjxS6.js → openrouter-free-DLbdHKJB.js} +1 -1
  63. package/dist/ui/assets/{openrouter-oauth-Dol2vy8U.js → openrouter-oauth-DGrgrwCW.js} +1 -1
  64. package/dist/ui/assets/{openrouter-oauth-DUMp8wVc.js → openrouter-oauth-H_YyPprs.js} +1 -1
  65. package/dist/ui/assets/{openrouter-CU8FE73y.js → openrouter-qQxXDCTi.js} +1 -1
  66. package/dist/ui/assets/{panel-rpc-handlers-X7STMHDZ.js → panel-rpc-handlers-CeLQzdAj.js} +2 -2
  67. package/dist/ui/assets/{panelize-shell-CTy7L9dn.js → panelize-shell-DrW2A-ST.js} +1 -1
  68. package/dist/ui/assets/{pi-edit-execution-Cp7-4v_G.js → pi-edit-execution-C0EMYFWT.js} +1 -1
  69. package/dist/ui/assets/process-worker-D--VNpcZ.js +3 -0
  70. package/dist/ui/assets/{provider-5SIxaKAM.js → provider-BmojCc07.js} +1 -1
  71. package/dist/ui/assets/{provider-settings-C_d-VmMI.js → provider-settings-CsoNzS1z.js} +1 -1
  72. package/dist/ui/assets/provider-store-access-DPZkt8gQ.js +1 -0
  73. package/dist/ui/assets/provider-store-access-DYsQ3ncK.js +1 -0
  74. package/dist/ui/assets/{provider-BRMONplS.js → provider-vP-Rsg4L.js} +1 -1
  75. package/dist/ui/assets/{providers-4px4FkTT.js → providers-BYTzBQcE.js} +2 -2
  76. package/dist/ui/assets/{providers-qFtC1ctt.js → providers-DeGWxjut.js} +1 -1
  77. package/dist/ui/assets/{quick-llm-CS7I0EM1.js → quick-llm-BkD0AgEt.js} +1 -1
  78. package/dist/ui/assets/{realm-inprocess-CTrnIcCf.js → realm-inprocess-C2BtvZz7.js} +2 -2
  79. package/dist/ui/assets/{realm-unhandled-rejections-BcViM2bI.js → realm-unhandled-rejections-BdOoeClU.js} +1 -1
  80. package/dist/ui/assets/{realm-unhandled-rejections-COEEZ6Qq.js → realm-unhandled-rejections-DArxunXO.js} +1 -1
  81. package/dist/ui/assets/{recovery-screen-pbSIuH95.js → recovery-screen-CL5Uq30M.js} +1 -1
  82. package/dist/ui/assets/{remote-terminal-view-CVoVWZ5L.js → remote-terminal-view-ltHq7bjU.js} +2 -2
  83. package/dist/ui/assets/restore-DbnYYQxX.js +1 -0
  84. package/dist/ui/assets/{run-CJkwGvdL.js → run-BXNqEoSo.js} +2 -2
  85. package/dist/ui/assets/{run-Dm4ILho2.js → run-C3uwa9gV.js} +1 -1
  86. package/dist/ui/assets/{run-D05bZRs7.js → run-CJqVMkDR.js} +2 -2
  87. package/dist/ui/assets/{run-Ce53JaVM.js → run-CPOnxCZr.js} +1 -1
  88. package/dist/ui/assets/{run-CoyHWJnc.js → run-DX_sxl3W.js} +2 -2
  89. package/dist/ui/assets/{run-BRFnmkzR.js → run-DdzDhy5R.js} +2 -2
  90. package/dist/ui/assets/{run-DniTiLYn.js → run-J5J6cey1.js} +1 -1
  91. package/dist/ui/assets/{script-catalog-D5joO5l7.js → script-catalog-BfaiuJ09.js} +1 -1
  92. package/dist/ui/assets/serve-command-CgJN5PCe.js +18 -0
  93. package/dist/ui/assets/serve-runtime-BParw3mJ.js +23 -0
  94. package/dist/ui/assets/{session-command-memory-B2ZvAv75.js → session-command-memory-02yraOOI.js} +2 -2
  95. package/dist/ui/assets/{session-jsonl-BjUfDnwt.js → session-jsonl-CFJdg8Xh.js} +1 -1
  96. package/dist/ui/assets/{session-jsonl-BWGPVYtm.js → session-jsonl-DtcKD0yn.js} +1 -1
  97. package/dist/ui/assets/{session-search-index-CL6tNMTB.js → session-search-index-wZXrjuXN.js} +1 -1
  98. package/dist/ui/assets/{setup-feature-flags-remote-DRQOEp2l.js → setup-feature-flags-remote-ClAPgFgc.js} +1 -1
  99. package/dist/ui/assets/{setup-model-catalog-BsYsset4.js → setup-model-catalog-I1k2ua3U.js} +1 -1
  100. package/dist/ui/assets/{silent-renew-backoff-BwjA995I.js → silent-renew-backoff-BZgxkJUJ.js} +1 -1
  101. package/dist/ui/assets/slicc-version-B9aTnxhl.js +1 -0
  102. package/dist/ui/assets/{soundscape-BN6WrF-3.js → soundscape-DKfh35KR.js} +1 -1
  103. package/dist/ui/assets/{speak-NYtqNJE_.js → speak-C3Z5jzFU.js} +1 -1
  104. package/dist/ui/assets/{sprinkle-manager-vf160MeS.js → sprinkle-manager-_X95KG0A.js} +1 -1
  105. package/dist/ui/assets/{sprinkle-renderer-xgwRm1L_.js → sprinkle-renderer-CbXj4OTC.js} +1 -1
  106. package/dist/ui/assets/{stdio-tty-CipJs8Mm.js → stdio-tty-PRRbLXEX.js} +1 -1
  107. package/dist/ui/assets/{sudo-4nzJfcYs.js → sudo-h-4FVALP.js} +1 -1
  108. package/dist/ui/assets/{supervisor-VGZUDK1b.js → supervisor-Dtj4S_zG.js} +1 -1
  109. package/dist/ui/assets/{sync-dialog-DSMgqf4e.js → sync-dialog-C9E5r6FW.js} +1 -1
  110. package/dist/ui/assets/{transformers-env-WpdAi-iZ.js → transformers-env-DMgUCz5U.js} +1 -1
  111. package/dist/ui/assets/{tray-leader-Fwsq8jgB.js → tray-leader-CBzKAwgp.js} +1 -1
  112. package/dist/ui/assets/{tray-leave-runtime-CO-5OLYh.js → tray-leave-runtime-0xJTbgcn.js} +1 -1
  113. package/dist/ui/assets/{tray-sidecar-6AQW4IED.js → tray-sidecar-LIkEkKIx.js} +1 -1
  114. package/dist/ui/assets/{upgrade-detection-qeeIUkGI.js → upgrade-detection-Ddez6U0T.js} +1 -1
  115. package/dist/ui/assets/{voice-reply-zEE1QNSL.js → voice-reply-CnP83o5L.js} +1 -1
  116. package/dist/ui/assets/{wasi-runtime-CAjhlQs6.js → wasi-runtime-BScRhhLA.js} +1 -1
  117. package/dist/ui/assets/{wc-attach-DNWpvdXi.js → wc-attach-Fh3NJ9cg.js} +2 -2
  118. package/dist/ui/assets/{wc-browser-ClKGIaQ7.js → wc-browser-BIQ5e3Ct.js} +1 -1
  119. package/dist/ui/assets/{wc-computers-C0KbAS_B.js → wc-computers-C5yUn1C2.js} +1 -1
  120. package/dist/ui/assets/{wc-detached-Cat9npj6.js → wc-detached-D9KLkM5o.js} +1 -1
  121. package/dist/ui/assets/{wc-extension-C9b9Kr17.js → wc-extension-DXQfNgPe.js} +2 -2
  122. package/dist/ui/assets/{wc-follower-ByQ459Ju.js → wc-follower-CsXpQijy.js} +3 -3
  123. package/dist/ui/assets/{wc-follower-oauth-CIG1Y8xe.js → wc-follower-oauth-BWxzcdNF.js} +1 -1
  124. package/dist/ui/assets/{wc-gelatiere-CgcmOl-z.js → wc-gelatiere-BA_gp-Kf.js} +1 -1
  125. package/dist/ui/assets/{wc-live-DU_tPZwB.js → wc-live-9LRoYdDb.js} +5 -5
  126. package/dist/ui/assets/{wc-nav-ZVKwKdQi.js → wc-nav-VUuleWJA.js} +2 -2
  127. package/dist/ui/assets/{wc-onboarding-Dz26nM1q.js → wc-onboarding-BCAB_wv4.js} +2 -2
  128. package/dist/ui/assets/{wc-permissions-BztxeBpv.js → wc-permissions-l_bSx8fi.js} +2 -2
  129. package/dist/ui/assets/{wc-placeholder-6j__HLJV.js → wc-placeholder-BZ2BjMLg.js} +3 -3
  130. package/dist/ui/assets/{wc-secret-request-Dise-yBJ.js → wc-secret-request-BQxmW7zb.js} +1 -1
  131. package/dist/ui/assets/{wc-settings-DB1l5qip.js → wc-settings-xoFfRryl.js} +3 -3
  132. package/dist/ui/assets/{wc-shell-xh75VEiE.js → wc-shell-BKJfhReb.js} +3 -3
  133. package/dist/ui/assets/{wc-shortcut-config-Cg6dfcMA.js → wc-shortcut-config-KM9OgxJ3.js} +1 -1
  134. package/dist/ui/assets/{wc-sprinkles-3tAqIJ4S.js → wc-sprinkles-DxH7vfYt.js} +2 -2
  135. package/dist/ui/assets/{wc-transcript-export-CxVHtvhC.js → wc-transcript-export-DN0J19nq.js} +2 -2
  136. package/dist/ui/assets/wc-tray-CK4xUOtD.js +5 -0
  137. package/dist/ui/assets/welcome-detection-_9li3uO8.js +1 -0
  138. package/dist/ui/assets/{whisper-session-DmUd1lKW.js → whisper-session-DCNSs5nv.js} +2 -2
  139. package/dist/ui/assets/{xai-grok-Ch8-vKVa.js → xai-grok-BjJ5NWWM.js} +1 -1
  140. package/dist/ui/assets/{xai-grok-DfZkFyCS.js → xai-grok-ChmSqXlc.js} +1 -1
  141. package/dist/ui/index.html +3 -3
  142. package/dist/ui/packages/webapp/index.html +3 -3
  143. package/package.json +1 -1
  144. package/dist/ui/assets/jsh-discovery-CnvNKojr.js +0 -2
  145. package/dist/ui/assets/jsh-executor-CKGuA572.js +0 -18
  146. package/dist/ui/assets/just-bash-compat-B-SPHuh_.js +0 -1
  147. package/dist/ui/assets/process-worker-BEpsdjWG.js +0 -3
  148. package/dist/ui/assets/provider-store-access-BxrLqbL-.js +0 -1
  149. package/dist/ui/assets/provider-store-access-CMvAMxdZ.js +0 -1
  150. package/dist/ui/assets/restore-BGLSgFtU.js +0 -1
  151. package/dist/ui/assets/slicc-version-VBKLWgCV.js +0 -1
  152. package/dist/ui/assets/wc-tray-BO7Dceka.js +0 -5
  153. package/dist/ui/assets/welcome-detection-RBbaP7o4.js +0 -1
@@ -1,4 +1,4 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import{i as t,n,r,t as i}from"./proxied-fetch-F-dCBEfh.js";import{r as a}from"./proxy-error-BVzVNPvv.js";import{i as o}from"./just-bash-compat-B-SPHuh_.js";import{a as s,c,d as l,f as u,g as d,h as f,l as p,m,n as h,o as g,p as _,s as v,t as ee,u as y,v as te}from"./stdio-tty-CipJs8Mm.js";import{r as ne}from"./global-prefix-DqCuANmV.js";import{a as re,i as ie,o as ae,r as oe}from"./wasm-programs-Bd5YaoqY.js";import{n as se,t as ce}from"./wasm-compiler-Ct7QZURL.js";import{S as le,T as ue,w as de,x as fe}from"./sync-exec-dispatch-B-gdI8lu.js";import{t as pe}from"./sync-sab-wire-D_d0fd3b.js";import{t as me}from"./sync-sab-responder-DlSgon7c.js";import{t as he}from"./shebang-exec-hint-CSwess-H.js";const ge=String.raw`printf '\033]7777;%s\007' "$?"`,_e=[`if [ -f ~/.bashrc ]; then . ~/.bashrc; fi`,`exec 98<&-`,``].join(`
1
+ import{t as e}from"./logger-LESFN7Hj.js";import{i as t,n,r,t as i}from"./proxied-fetch-F-dCBEfh.js";import{r as a}from"./proxy-error-BVzVNPvv.js";import{a as o}from"./just-bash-compat-BRjWDzIj.js";import{a as s,c,d as l,f as u,g as d,h as f,l as p,m,n as h,o as g,p as _,s as v,t as ee,u as y,v as te}from"./stdio-tty-PRRbLXEX.js";import{r as ne}from"./global-prefix-DqCuANmV.js";import{a as re,i as ie,o as ae,r as oe}from"./wasm-programs-Bd5YaoqY.js";import{n as se,t as ce}from"./wasm-compiler-Ct7QZURL.js";import{S as le,T as ue,w as de,x as fe}from"./sync-exec-dispatch-B-gdI8lu.js";import{t as pe}from"./sync-sab-wire-D_d0fd3b.js";import{t as me}from"./sync-sab-responder-DlSgon7c.js";import{t as he}from"./shebang-exec-hint-CSwess-H.js";const ge=String.raw`printf '\033]7777;%s\007' "$?"`,_e=[`if [ -f ~/.bashrc ]; then . ~/.bashrc; fi`,`exec 98<&-`,``].join(`
2
2
  `);var b=class extends Error{status;constructor(e,t){super(t),this.status=e}};const ve=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,ye={100:`Continue`,200:`OK`,400:`Bad Request`,403:`Forbidden`,408:`Request Timeout`,411:`Length Required`,413:`Content Too Large`,417:`Expectation Failed`,421:`Misdirected Request`,431:`Request Header Fields Too Large`,501:`Not Implemented`,502:`Bad Gateway`,503:`Service Unavailable`,505:`HTTP Version Not Supported`};var be=class{source;buf=new Uint8Array;eof=!1;constructor(e){this.source=e}get buffered(){return this.buf.length}async fill(e){if(this.eof)return!1;let t=await this.source.read(65536,e);if(t.length===0)return this.eof=!0,!1;let n=new Uint8Array(this.buf.length+t.length);return n.set(this.buf),n.set(t,this.buf.length),this.buf=n,!0}take(e){let t=this.buf.slice(0,e);return this.buf=this.buf.subarray(e),t}async some(e,t){if(this.buf.length>0)return this.take(Math.min(e,this.buf.length));if(this.eof)return new Uint8Array;let n=await this.source.read(e,t);return n.length===0&&(this.eof=!0),n}async head(e,t){let n=0;for(;;){let r=xe(this.buf,n);if(r>0){if(r>e)throw new b(431,`request head too large`);return this.take(r)}if(this.buf.length>e)throw new b(431,`request head too large`);if(n=Math.max(0,this.buf.length-3),!await this.fill(t)){if(this.buf.length===0)return null;throw new b(400,`connection closed inside a request head`)}}}async line(e,t){let n=0;for(;;){let r=this.buf.indexOf(10,n);if(r>=0){let e=this.take(r+1);return Se(e.subarray(0,e[r-1]===13?r-1:r))}if(this.buf.length>e)throw new b(400,`line too long`);if(n=this.buf.length,!await this.fill(t))throw new b(400,`connection closed inside a body`)}}async exactly(e,t){for(;this.buf.length<e;)if(!await this.fill(t))throw new b(400,`connection closed inside a body`);return this.take(e)}};function xe(e,t){for(let n=t;n<e.length;n++)if(e[n]===10){if(e[n+1]===10)return n+2;if(e[n+1]===13&&e[n+2]===10)return n+3}return 0}function Se(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return t}function x(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function Ce(e){let t=Se(e).split(/\r?\n/);for(;t.length>0&&t[0]===``;)t.shift();let n=/^([!#$%&'*+\-.^_`|~0-9A-Za-z]+) (\S+) HTTP\/(\d)\.(\d)$/.exec(t.shift()??``);if(!n)throw new b(400,`malformed request line`);if(n[3]!==`1`)throw new b(505,`HTTP/${n[3]}.${n[4]} is not supported`);return{method:n[1],target:n[2],minor:Number(n[4]),headers:we(t)}}function we(e){let t=[];for(let n of e){if(n===``)continue;if(n.startsWith(` `)||n.startsWith(` `))throw new b(400,`obsolete line folding`);let e=n.indexOf(`:`),r=e>0?n.slice(0,e):``;if(!ve.test(r))throw new b(400,`malformed header field`);t.push([r,n.slice(e+1).trim()])}return t}function S(e,t){let n=t.toLowerCase();return e.filter(([e])=>e.toLowerCase()===n).map(([,e])=>e)}function C(e,t){return S(e,t).flatMap(e=>e.split(`,`)).map(e=>e.trim().toLowerCase()).filter(e=>e!==``)}function Te(e){let t=C(e,`transfer-encoding`),n=S(e,`content-length`);if(t.length>0){if(n.length>0)throw new b(400,`both Transfer-Encoding and Content-Length`);if(t.length!==1||t[0]!==`chunked`)throw new b(501,`unsupported Transfer-Encoding: ${t.join(`, `)}`);return{kind:`chunked`}}if(n.length===0)return{kind:`none`};let r=new Set(n.flatMap(e=>e.split(`,`)).map(e=>e.trim())),[i]=r;if(r.size!==1||!/^\d{1,15}$/.test(i))throw new b(400,`invalid Content-Length`);let a=Number(i);return a===0?{kind:`none`}:{kind:`length`,length:a}}const w=65536;async function Ee(e,t,n,r){if(t.kind===`none`)return;if(t.kind===`length`){if(t.length>n)throw new b(413,`request body over ${n} bytes`);return e.exactly(t.length,r)}let i=[],a=0;for(;;){let t=await e.line(4096,r),o=/^([0-9A-Fa-f]{1,12})[ \t]*(;.*)?$/.exec(t);if(!o)throw new b(400,`malformed chunk size`);let s=Number.parseInt(o[1],16);if(s===0)break;if(a+=s,a>n)throw new b(413,`request body over ${n} bytes`);if(i.push(await e.exactly(s,r)),await e.line(2,r)!==``)throw new b(400,`malformed chunk`)}let o=0;for(let t=await e.line(w,r);t!==``;){if(o+=t.length,o>w)throw new b(431,`trailers too large`);t=await e.line(w,r)}return De(i,a)}function De(e,t=e.reduce((e,t)=>e+t.length,0)){let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function Oe(e){return!/[\r\n\0]/.test(e)}function ke(e,t,n){let r=`HTTP/1.1 ${e} ${/^[\t\x20-\x7e\x80-\xff]*$/.test(t)?t:``}\r\n`;for(let[e,t]of n)ve.test(e)&&Oe(t)&&(r+=`${e}: ${t}\r\n`);return x(`${r}\r\n`)}function Ae(e){let t=x(`${e.length.toString(16)}\r\n`),n=new Uint8Array(t.length+e.length+2);return n.set(t),n.set(e,t.length),n[n.length-2]=13,n[n.length-1]=10,n}const je=x(`0\r
3
3
  \r
4
4
  `),Me=e(`realm-proxy`),Ne=3128,Pe={maxConnections:64,maxHead:65536,idleMs:12e4,bodyBudget:134217728},Fe=new Set([`connection`,`keep-alive`,`proxy-connection`,`proxy-authenticate`,`proxy-authorization`,`te`,`trailer`,`transfer-encoding`,`upgrade`]),Ie=new Set([`host`,`content-length`,`expect`]);var Le=class{free;waiters=[];constructor(e){this.free=e}async acquire(e,t){for(;this.free<e;)t.throwIfAborted(),await new Promise(e=>{let n=()=>{t.removeEventListener(`abort`,n),e()};this.waiters.push(n),t.addEventListener(`abort`,n,{once:!0})});this.free-=e}release(e){this.free+=e;let t=this.waiters;this.waiters=[];for(let e of t)e()}};function Re(e){let t=e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e;try{return new URL(`http://${t}/`).hostname}catch{return}}function ze(e,t){return e===127||e===0||e===169&&t===254}function Be(e){let[t,n,r]=e.split(`::`);if(r!==void 0)return;let i=e=>e?e.split(`:`).map(e=>Number.parseInt(e,16)):[],a=i(t),o=i(n),s=n===void 0?a:[...a,...Array(8-a.length-o.length).fill(0),...o];return s.length===8&&s.every(e=>e>=0&&e<=65535)?s:void 0}function Ve(e){let t=Be(e);return!t||(t[0]&65472)==65152?!0:t.slice(0,5).every(e=>e===0)?t[5]===65535||t[5]===0&&t[6]!==0?ze(t[6]>>8,t[6]&255):t[5]===0&&t[6]===0:!1}function He(e){let t=Re(e);if(t===void 0)return!1;let n=t.replace(/\.+$/,``);if(n===`localhost`||n.endsWith(`.localhost`))return!0;if(n.startsWith(`[`))return Ve(n.slice(1,-1));let r=/^(\d+)\.(\d+)\.\d+\.\d+$/.exec(n);return r?ze(Number(r[1]),Number(r[2])):!1}function Ue(e){return new Set([...Fe,...C(e,`connection`)])}function We(e){let t=Ue(e);return e.filter(([e])=>{let n=e.toLowerCase();return!t.has(n)&&!Ie.has(n)})}function Ge(e,t){let n=Ue(e);return t.encodedBodies||n.add(`content-encoding`),t.encodedBodies&&t.bodiless||n.add(`content-length`),e.filter(([e])=>!n.has(e.toLowerCase()))}function Ke(e){let t=C(e.headers,`connection`);return t.includes(`close`)?!1:e.minor>=1||t.includes(`keep-alive`)}function qe(e,t){let n=new URL(t),r;try{r=new URL(e.target,e.target.startsWith(`/`)?n:void 0)}catch{throw new b(400,`malformed request target`)}let i=S(e.headers,`host`).every(e=>URL.canParse(`https://${e}`)&&new URL(`https://${e}`).host===n.host);if(r.origin!==n.origin||!i)throw new b(421,`this tunnel is for ${n.host}`);return r.href}function Je(e){if(e.target.startsWith(`/`))throw new b(400,`this is a proxy: send the absolute URL (GET http://host/path)`);let t;try{t=new URL(e.target)}catch{throw new b(400,`malformed request target`)}if(t.protocol!==`http:`&&t.protocol!==`https:`)throw new b(400,`unsupported scheme ${t.protocol}`);if(He(t.hostname))throw new b(403,`${t.hostname} is the realm's own loopback, which the proxy does not reach: list it in no_proxy`);return t.href}function Ye(e){let t=/^([A-Za-z0-9.-]+|\[[0-9A-Fa-f:.]+\]):(\d{1,5})$/.exec(e.target),n=Number(t?.[2]);if(!t||n<1||n>65535)throw new b(400,`CONNECT needs host:port`);let r=Re(t[1]);if(r===void 0)throw new b(400,`CONNECT needs host:port`);if(He(r))throw new b(403,`${r} is the realm's own loopback, which the proxy does not reach: list it in no_proxy`);return{host:r,port:n}}async function Xe(e,t,n){for(;!n.aborted&&!t.signal.aborted;){if(e.poll().hangup){t.abort(new g(`EPIPE`));return}try{await e.changed(n)}catch{return}}}function Ze(e,t){return new Promise((n,r)=>{let i=()=>{r(t.reason??new g(`EINTR`)),e.then(e=>e.cancel()).catch(()=>void 0)};if(t.aborted)return i();t.addEventListener(`abort`,i,{once:!0}),e.then(n,r).finally(()=>t.removeEventListener(`abort`,i))})}function Qe(e,t){let n=x(`slicc realm proxy: ${t}\n`);return{status:e,statusText:ye[e]??``,headers:[[`Content-Type`,`text/plain; charset=utf-8`]],body:(async function*(){yield n})(),cancel:async()=>void 0}}function $e(e,t,n){return{read:(r,i)=>e.read(r,AbortSignal.any([n,AbortSignal.timeout(t),...i?[i]:[]]))}}var et=class{options;listener;stop=new AbortController;limits;slots;bodies;connections=new Set;closed;port;constructor(e){this.options=e,this.limits={...Pe,...e.limits},this.slots=new Le(this.limits.maxConnections),this.bodies=new Le(this.limits.bodyBudget),this.listener=e.net.listen({family:`inet`,host:e.host??`127.0.0.1`,port:e.port??3128}),this.port=this.listener.local?.family===`inet`?this.listener.local.port:0,this.closed=this.acceptLoop()}get stopped(){return this.stop.signal.aborted}close(){if(!this.stop.signal.aborted){this.stop.abort(),this.listener.close();for(let e of this.connections)e.close()}}async acceptLoop(){let e=new Set;try{for(;;){await this.slots.acquire(1,this.stop.signal);let t;try{t=await this.listener.accept(this.stop.signal)}catch{this.slots.release(1);break}let n=this.serve(t).finally(()=>{this.slots.release(1),e.delete(n)});e.add(n)}}catch{}await Promise.allSettled([...e])}async serve(e){this.connections.add(e);let t=new be($e(e,this.limits.idleMs,this.stop.signal));try{await this.requests({sink:e,incoming:t,conn:e,socket:e})}finally{this.connections.delete(e),e.close()}}async requests(e){try{for(;;){let t=await e.incoming.head(this.limits.maxHead);if(!t||!await this.exchange(e,t))break}}catch(t){t instanceof b&&await this.refuse(e.sink,t)}}async refuse(e,t){try{await this.relay(e,`GET`,1,Qe(t.status,t.message),!1)}catch{}}async exchange(e,t){let{sink:n,incoming:r}=e,i=Ce(t);if(i.method===`CONNECT`){if(!e.conn)throw new b(400,`CONNECT inside a tunnel`);return await this.connect(e.conn,r,i),!1}let a=e.origin?qe(i,e.origin):Je(i),o=Ke(i),s=Te(i.headers),c=s.kind===`length`?s.length:s.kind===`chunked`?this.cap():0;if(c>this.cap())throw new b(413,`request body over ${this.cap()} bytes`);await this.expectContinue(n,i,s.kind!==`none`),await this.bodies.acquire(c,this.stop.signal);let l,u=new AbortController,d=()=>u.abort();this.stop.signal.addEventListener(`abort`,d,{once:!0});try{try{let t=await Ee(r,s,this.cap()),n=new AbortController;Xe(e.socket,u,n.signal);try{l=await this.upstream(i,a,t,u.signal)}finally{n.abort()}}finally{this.bodies.release(c)}return await this.relay(n,i.method,i.minor,l,o)}finally{this.stop.signal.removeEventListener(`abort`,d),u.abort()}}cap(){return Math.min(this.options.transport.traits.maxRequestBody,this.limits.bodyBudget)}async expectContinue(e,t,n){let r=C(t.headers,`expect`);if(r.length!==0){if(r.length!==1||r[0]!==`100-continue`)throw new b(417,`unsupported expectation: ${r.join(`, `)}`);n&&t.minor>=1&&await e.write(x(`HTTP/1.1 100 Continue\r
@@ -8,7 +8,7 @@ import{t as e}from"./logger-LESFN7Hj.js";import{i as t,n,r,t as i}from"./proxied
8
8
  `),this.stop.signal);try{await i(e,t,r,this.stop.signal,(t,n,r)=>this.requests({sink:n,incoming:new be(t),origin:r,socket:e}))}catch(e){e instanceof g||Me.warn(`tunnel failed`,{host:r.host,error:String(e)})}}};function tt(){return{buffered:n(),streaming:r()}}function nt(e){let t={};for(let[n,r]of e){let e=n.toLowerCase(),i=t[e];t[e]=i===void 0?r:`${i}${e===`cookie`?`; `:`, `}${r}`}return t}function rt(e){return e.startsWith(`x-proxy-`)||e.startsWith(`access-control-`)}function it(e){let t=[];for(let[n,r]of Object.entries(e)){let e=n.toLowerCase();if(!rt(e)){if(e===`set-cookie`)for(let e of at(r))t.push([n,e]);else t.push([n,r])}}return t}function at(e){if(e.startsWith(`[`))try{let t=JSON.parse(e);if(Array.isArray(t)&&t.every(e=>typeof e==`string`))return t}catch{}return[e]}async function*ot(e){e.byteLength>0&&(yield e)}function st(e){if(typeof e!=`string`)return e;let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function ct(e=tt()){return{traits:{manualRedirects:!1,encodedBodies:!1,maxRequestBody:i},async fetch(t){let n=nt(t.headers);if(t.body&&t.body.byteLength>0){let r=await e.buffered(t.url,{method:t.method,headers:n,body:t.body,signal:t.signal});return{status:r.status,statusText:r.statusText,headers:it(r.headers),body:ot(st(r.body)),cancel:async()=>void 0}}let r=await e.streaming(t.url,{method:t.method,headers:n,signal:t.signal});return{status:r.status,statusText:r.statusText,headers:it(r.headers),body:r.body,cancel:()=>r.cancel()}}}}function lt(e){if(!e)return{body:(async function*(){})(),cancel:async()=>void 0};let t=e.getReader(),n=!1;async function*r(){try{for(;;){let e=await t.read();if(e.done)break;yield e.value}n=!0}finally{n||await t.cancel().catch(()=>void 0)}}return{body:r(),cancel:async()=>{n||await t.cancel().catch(()=>void 0),n=!0}}}function ut(e,t){return{traits:{manualRedirects:!0,encodedBodies:!0,maxRequestBody:t.maxRequestBodyBytes},async fetch(t){let n=await e(t.url,{method:t.method,headers:t.headers.map(([e,t])=>[e,t]),...t.body&&t.body.byteLength>0?{body:t.body}:{},signal:t.signal});return{status:n.status,statusText:n.statusText,headers:n.headers,...lt(n.body)}}}}function dt(e={}){let n,i=()=>(n??=(e.fallback??(()=>ct()))(),n),o,s=Promise.resolve().then(()=>(e.capabilities??t)()).then(t=>t.supported?ut((e.raw??(()=>r({mode:`raw`})))(),t):i(),()=>i()).then(e=>(o??=e,o));return{get traits(){return(o??i()).traits},async fetch(e){let t=o??await s;if(t===n)return t.fetch(e);try{return await t.fetch(e)}catch(t){if(!(t instanceof a)||t.code!==`unsupported`)throw t;return o=i(),o.fetch(e)}}}}function ft(e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function pt(e){if(e<128)return Uint8Array.of(e);let t=[];for(let n=e;n>0;n=Math.floor(n/256))t.unshift(n&255);return Uint8Array.of(128|t.length,...t)}function T(e,...t){let n=ft(t);return ft([Uint8Array.of(e),pt(n.length),n])}const E=(...e)=>T(48,...e),mt=(...e)=>T(49,...e),D=e=>T(4,e),O=(e,t=0)=>T(3,Uint8Array.of(t),e),ht=T(1,Uint8Array.of(255));function k(e){let t=0;for(;t<e.length-1&&e[t]===0;)t++;let n=e.subarray(t);return T(2,n[0]&128?ft([Uint8Array.of(0),n]):n)}function A(e){let[t,n,...r]=e.split(`.`).map(Number),i=[40*t+n];for(let e of r){let t=[];for(let n=e;t.unshift(n&127),!(n<128);n=Math.floor(n/128));i.push(...t.map((e,n)=>n<t.length-1?e|128:e))}return T(6,Uint8Array.from(i))}const gt=e=>T(12,new TextEncoder().encode(e)),j=e=>Uint8Array.from(e,e=>e.charCodeAt(0)&127);function _t(e){let t=e.toISOString().replace(/[-:T]/g,``).slice(0,14);return e.getUTCFullYear()<2050?T(23,j(`${t.slice(2)}Z`)):T(24,j(`${t}Z`))}const vt=E(A(`1.2.840.10045.4.3.2`));function yt(e){let t=[];return e.organization&&t.push(mt(E(A(`2.5.4.10`),gt(e.organization)))),t.push(mt(E(A(`2.5.4.3`),gt(e.commonName)))),E(...t)}function M(e,t,n){return t?E(A(e),ht,D(n)):E(A(e),D(n))}function bt(e){let t=[],[,n,r]=xt(e,0);for(let i=n;i<r;){let[,,n]=xt(e,i);t.push(e.subarray(i,n)),i=n}return t}function xt(e,t){let n=e[t],r=e[t+1],i=t+2;if(r&128){let t=r&127;r=0;for(let n=0;n<t;n++)r=r*256+e[i+n];i+=t}if(i+r>e.length)throw Error(`truncated DER`);return[n,i,i+r]}function St(e){let[,t,n]=xt(e,0);return e.subarray(t,n)}function Ct(e){let t=bt(e)[1];return St(t).subarray(1)}async function wt(e){return new Uint8Array(await crypto.subtle.digest(`SHA-1`,Ct(e)))}function Tt(e){let t=e.length/2;return E(k(e.subarray(0,t)),k(e.subarray(t)))}function Et(){let e=crypto.getRandomValues(new Uint8Array(16));return e[0]=e[0]&127|1,e}function Dt(e){let t=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(e);if(!t)return;let n=t.slice(1).map(Number);return n.every(e=>e<=255)?Uint8Array.from(n):void 0}function Ot(e){if(!e.includes(`:`)||!/^[0-9A-Fa-f:.]+$/.test(e))return;let t=/(\d{1,3}(?:\.\d{1,3}){3})$/.exec(e),n=e,r=[];if(t){let i=Dt(t[1]);if(!i)return;r.push(i[0]<<8|i[1],i[2]<<8|i[3]),n=e.slice(0,-t[1].length).replace(/:$/,e.endsWith(`::${t[1]}`)?`:`:``)}let i=n.split(`::`);if(i.length>2)return;let a=e=>e===``?[]:e.split(`:`),o=a(i[0]),s=i.length===2?a(i[1]):[];if(![...o,...s].every(e=>/^[0-9A-Fa-f]{1,4}$/.test(e)))return;let c=8-[...o,...s].map(e=>Number.parseInt(e,16)).length-r.length;if(i.length===2?c<1:c!==0)return;let l=[...o.map(e=>Number.parseInt(e,16)),...Array(i.length===2?c:0).fill(0),...s.map(e=>Number.parseInt(e,16)),...r];return Uint8Array.from(l.flatMap(e=>[e>>8,e&255]))}async function kt(e){let t=[M(`2.5.29.14`,!1,D(await wt(e.spki)))];if(e.kind.ca)t.push(M(`2.5.29.19`,!0,E(ht,k(Uint8Array.of(0))))),t.push(M(`2.5.29.15`,!0,O(Uint8Array.of(134),1)));else{t.push(M(`2.5.29.35`,!1,E(T(128,await wt(e.issuerSpki))))),t.push(M(`2.5.29.19`,!0,E())),t.push(M(`2.5.29.15`,!0,O(Uint8Array.of(128),7))),t.push(M(`2.5.29.37`,!1,E(A(`1.3.6.1.5.5.7.3.1`))));let n=Dt(e.kind.host)??Ot(e.kind.host),r=n?T(135,n):T(130,j(e.kind.host));t.push(M(`2.5.29.17`,!1,E(r)))}return T(163,E(...t))}async function At(e){let t=E(T(160,k(Uint8Array.of(2))),k(e.serial),vt,yt(e.issuer),E(_t(e.notBefore),_t(e.notAfter)),yt(e.subject),e.spki,await kt(e)),n=Tt(await e.sign(t));return E(t,vt,O(n))}function jt(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return`-----BEGIN CERTIFICATE-----\n${(btoa(t).match(/.{1,64}/g)??[]).join(`
9
9
  `)}\n-----END CERTIFICATE-----\n`}const Mt={name:`ECDSA`,namedCurve:`P-256`},Nt={name:`ECDSA`,hash:`SHA-256`};function Pt(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}function Ft(e=`slicc-realm-ca`){let t,n=()=>(t??=new Promise((t,n)=>{let r=indexedDB.open(e,1);r.onupgradeneeded=()=>r.result.createObjectStore(`ca`),r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)}),t.catch(()=>{t=void 0}),t);return{async get(e){return await Pt((await n()).transaction(`ca`).objectStore(`ca`).get(e))},async put(e,t){let r=(await n()).transaction(`ca`,`readwrite`);r.objectStore(`ca`).put(t,e),await new Promise((e,t)=>{r.oncomplete=()=>e(),r.onerror=()=>t(r.error)})}}}var It=class extends Error{};function Lt(e){return Ot(e)?!0:e.length===0||e.length>253?!1:e.split(`.`).every(e=>/^(?!-)[a-z0-9-]{1,63}(?<!-)$/i.test(e))}var Rt=class e{record;constructor(e){this.record=e}static async open(t,n,r=Date.now()){let i=await n.get(t).catch(()=>void 0);if(i&&i.notAfter-r>2592e6)return new e(i);let a=await e.create(t,r);return await n.put(t,a),new e(a)}static async create(e,t){let n=await crypto.subtle.generateKey(Mt,!1,[`sign`,`verify`]),r=new Uint8Array(await crypto.subtle.exportKey(`spki`,n.publicKey)),i={organization:`SLICC`,commonName:`SLICC realm CA ${e} ${Array.from(crypto.getRandomValues(new Uint8Array(4)),e=>e.toString(16).padStart(2,`0`)).join(``)}`},a=t+31536e7,o=await At({serial:Et(),issuer:i,subject:i,notBefore:new Date(t-864e5),notAfter:new Date(a),spki:r,issuerSpki:r,kind:{ca:!0},sign:zt(n.privateKey)});return{key:n.privateKey,cert:o,spki:r,notAfter:a,name:i}}get cert(){return this.record.cert}get pem(){return jt(this.record.cert)}async issue(e,t,n=Date.now()){let r=e.toLowerCase();if(!Lt(r))throw new It(`no certificate for ${e}`);return At({serial:Et(),issuer:this.record.name,subject:{commonName:r.length<=64?r:`SLICC realm leaf`},notBefore:new Date(n-36e5),notAfter:new Date(n+6048e5),spki:t,issuerSpki:this.record.spki,kind:{ca:!1,host:r},sign:zt(this.record.key)})}};function zt(e){return async t=>new Uint8Array(await crypto.subtle.sign(Nt,e,t))}let Bt;const N=new Map;function Vt(e,t){let n=N.get(e);return n||(Bt??=t?void 0:Ft(),n=Rt.open(e,t??Bt),N.set(e,n),n.catch(()=>{N.get(e)===n&&N.delete(e)})),n}const Ht=65536;var Ut=class extends Error{code;constructor(e,t){super(t),this.code=e}},Wt=class{m;scratch;constructor(e){if(this.m=e,this.scratch=e._malloc(Ht),!this.scratch)throw Error(`tls engine: out of memory`)}put(e){let t=this.m._malloc(e.length+1);if(!t)throw Error(`tls engine: out of memory`);return this.m.HEAPU8.set(e,t),this.m.HEAPU8[t+e.length]=0,t}taken(e){return this.m.HEAPU8.slice(this.scratch,this.scratch+e)}error(e,t){this.m._tls_strerror(e,this.scratch,256);let n=this.m.HEAPU8.indexOf(0,this.scratch);return new Ut(e,`${t}: ${new TextDecoder().decode(this.m.HEAPU8.subarray(this.scratch,n))||e}`)}leaf(){let e=this.m._tls_leaf_new();if(!e)throw this.error(this.m._tls_last_error(),`leaf key`);return new Gt(this,this.m,e)}session(e,t){let n=this.put(new TextEncoder().encode(t));try{let t=this.m._tls_session_new(e.ptr,n);if(!t)throw this.error(this.m._tls_last_error(),`tls session`);return new Kt(this,this.m,t)}finally{this.m._free(n)}}withBytes(e,t){let n=this.put(e);try{return t(n)}finally{this.m._free(n)}}intoScratch(e){let t=e(this.scratch,Ht);return t>0?this.taken(t):t}},Gt=class{engine;m;ptr;constructor(e,t,n){this.engine=e,this.m=t,this.ptr=n}spki(){let e=this.engine.intoScratch((e,t)=>this.m._tls_leaf_spki(this.ptr,e,t));if(typeof e==`number`)throw this.engine.error(e,`leaf public key`);return e}addCert(e){let t=this.engine.withBytes(e,t=>this.m._tls_leaf_add_cert(this.ptr,t,e.length));if(t!==0)throw this.engine.error(t,`leaf certificate`)}release(){this.m._tls_leaf_free(this.ptr)}},Kt=class{engine;m;ptr;constructor(e,t,n){this.engine=e,this.m=t,this.ptr=n}feed(e){return this.engine.withBytes(e,t=>this.m._tls_feed(this.ptr,t,e.length))}feedEnd(){this.m._tls_feed_eof(this.ptr)}read(){let e=this.engine.intoScratch((e,t)=>this.m._tls_read(this.ptr,e,t));if(e instanceof Uint8Array)return e;if(e===0)return`more`;if(e===-1)return`eof`;throw this.engine.error(e,`tls`)}write(e){let t=this.engine.withBytes(e,t=>this.m._tls_write(this.ptr,t,e.length));if(t<0)throw this.engine.error(t,`tls`);return t}take(){if(this.m._tls_out_size(this.ptr)===0)return new Uint8Array;let e=this.engine.intoScratch((e,t)=>this.m._tls_out_take(this.ptr,e,t));return e instanceof Uint8Array?e:new Uint8Array}close(){this.m._tls_close(this.ptr)}get version(){return this.m._tls_version(this.ptr)}get handshakeDone(){return this.m._tls_handshake_done(this.ptr)!==0}free(){this.m._tls_session_free(this.ptr)}};let P;function qt(e=async()=>(await import(`./slicc-tls-engine-DfyKw1Ua.js`)).default()){return P??=e().then(e=>new Wt(e)),P.catch(()=>{P=void 0}),P}const Jt=e(`realm-tls`);var Yt=class{session;cipherIn;cipherOut;pending=new Uint8Array;ended=!1;constructor(e,t,n){this.session=e,this.cipherIn=t,this.cipherOut=n}async flush(e){for(let t=this.session.take();t.length>0;t=this.session.take())await this.cipherOut.write(t,e)}feedPending(){if(this.pending.length===0)return;let e=this.session.feed(this.pending);this.pending=this.pending.subarray(e)}async read(e,t){for(;;){this.feedPending();let e=this.session.read();if(await this.flush(t),e instanceof Uint8Array)return e;if(e===`eof`)return new Uint8Array;if(this.pending.length>0)continue;if(this.ended){this.session.feedEnd();let e=this.session.read();return await this.flush(t),e instanceof Uint8Array?e:new Uint8Array}let n=await this.cipherIn.read(65536,t);n.length===0?this.ended=!0:this.pending=n}}async write(e,t){for(let n=0;n<e.length;){let r=this.session.write(e.subarray(n,n+16384));await this.flush(t),n+=r}return e.length}async close(e){this.session.close(),await this.flush(e)}},Xt=class{options;leaves=new Map;now;constructor(e){this.options=e,this.now=e.now??Date.now}leafFor(e,t){let n=this.now(),r=this.leaves.get(t);if(r&&r.expires>n)return this.leaves.delete(t),this.leaves.set(t,r),r.leaf;r&&this.drop(t,r);let i=this.issue(e,t,n),a={leaf:i,expires:n+5184e5};this.leaves.set(t,a),i.catch(()=>{this.leaves.get(t)===a&&this.leaves.delete(t)});for(let[e,t]of this.leaves){if(this.leaves.size<=256)break;this.drop(e,t)}return i}async drop(e,t){this.leaves.get(e)===t&&this.leaves.delete(e),(await t.leaf.catch(()=>void 0))?.release()}async issue(e,t,n){let r=await this.options.ca(),i=e.leaf();try{return i.addCert(await r.issue(t,i.spki(),n)),i.addCert(r.cert),i}catch(e){throw i.release(),e}}async close(){await Promise.all([...this.leaves].map(([e,t])=>this.drop(e,t)))}handler=async(e,t,n,r,i)=>{let a=await this.options.engine(),o=n.host.replace(/^\[|\]$/g,``),s=await this.leafFor(a,o),c=a.session(s,o);try{let a=new Yt(c,Qt(t),e),s=`https://${Zt(n)}`;try{await i(a,a,s),await a.close(r).catch(()=>void 0)}catch(e){throw Jt.debug(`tunnel ended`,{host:o,error:String(e)}),e}}finally{c.free()}}};function Zt(e){return e.port===443?e.host:`${e.host}:${e.port}`}function Qt(e){return{read:(t,n)=>e.some(t,n)}}const F=`http://127.0.0.1:${Ne}`,$t=`localhost,.localhost,127.0.0.1,127.0.0.0/8`;function en(){return{http_proxy:F,https_proxy:F,HTTP_PROXY:F,HTTPS_PROXY:F,no_proxy:$t,NO_PROXY:$t}}function tn(e){if(e)return`ca`in e?new Xt(e):new Xt({ca:()=>Vt(e.owner),engine:()=>qt()})}const nn=new WeakMap,rn=`/.config/slicc/realm-ca-`;function an(e){return e.replace(/[^A-Za-z0-9_-]+/g,`-`).replace(/-+$/,``)}function on(e,t){return`${e.replace(/\/+$/,``)}${rn}${an(t)}.pem`}function sn(e){return{SSL_CERT_FILE:e,CURL_CA_BUNDLE:e,GIT_SSL_CAINFO:e}}const cn=`/.config/slicc/gitconfig`;function ln(e){return`${e.replace(/\/+$/,``)}${cn}`}function un(e){return`"${e.replace(/[\r\n]+/g,` `).replace(/[\\"]/g,e=>`\\${e}`)}"`}function dn(e){let t=[`[credential]`,` helper = slicc`];return e&&t.push(`[user]`,`\tname = ${un(e.name)}`,`\temail = ${un(e.email)}`),`${t.join(`
10
10
  `)}\n`}async function fn(e,t,n){try{let r=dn(n);return(await e.exists(t)?await e.readFile(t):void 0)!==r&&(await e.mkdir(t.slice(0,t.lastIndexOf(`/`)),{recursive:!0}),await e.writeFile(t,r)),{GIT_CONFIG_SYSTEM:t}}catch{return{}}}function pn(e,t){let n=en();return e in n?n[e]===t:e===`GIT_CONFIG_SYSTEM`?t.endsWith(cn):e in sn(``)&&t.includes(rn)}async function mn(e,t,n,r=Vt){try{let{pem:i}=await r(n);return(await e.exists(t)?await e.readFile(t):void 0)!==i&&(await e.mkdir(t.slice(0,t.lastIndexOf(`/`)),{recursive:!0}),await e.writeFile(t,i)),sn(t)}catch{return{}}}function hn(e,t={}){if(nn.has(e))return;let n={proxy:void 0};nn.set(e,n);let r;e.activate({family:`inet`,host:`127.0.0.1`,port:Ne},()=>{r??=(t.transport??dt)();let i=tn(t.tls),a=new et({net:e,transport:r,tunnel:i?.handler,...t.proxy});n.proxy=a,gn(a,t.process).then(async()=>{n.proxy===a&&(n.proxy=void 0),await i?.close()})})}async function gn(e,t){if(!t){await e.closed;return}let n=t.processManager,r=n.spawn({kind:`net`,argv:[`http-proxy`,`127.0.0.1:${e.port}`],cwd:`/`,owner:t.owner}),i=()=>e.close();r.abort.signal.addEventListener(`abort`,i,{once:!0}),await e.closed,r.abort.signal.removeEventListener(`abort`,i),n.exit(r.pid,r.abort.signal.aborted?null:0)}const _n=32768;function vn(e){return/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e)}async function I(e){try{return await e()}catch(e){throw e instanceof te?new g(e.code):e}}var yn=class{waiters=[];wait(e){return e?.aborted?Promise.reject(new g(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new g(`EINTR`))},i=()=>{e?.removeEventListener(`abort`,r),t()};this.waiters.push(i),e?.addEventListener(`abort`,r,{once:!0})})}wake(){let e=this.waiters;this.waiters=[];for(let t of e)t()}};function bn(e,t){let n=new d,r=new d;for(let e of[n,r])e.openRead(),e.openWrite();e.attach({rx:r,tx:n}),t.attach({rx:n,tx:r})}var L=class e{net;domain;state=`open`;local;peer;link;readShut=!1;writeShut=!1;queue=[];backlog=0;bound=!1;changes=new yn;options=new Map;constructor(e,t){this.net=e,this.domain=t}attach(e){this.link=e,this.state=`connected`,this.changes.wake()}get listening(){return this.state===`listening`}connection(){if(!this.link||this.state!==`connected`)throw new g(`ENOTCONN`);return this.link}async read(e,t){let{rx:n}=this.connection();return this.readShut||e<=0?new Uint8Array:I(()=>n.read(e,t))}async peek(e,t){let{rx:n}=this.connection();return this.readShut||e<=0?new Uint8Array:I(()=>n.peek(e,t))}async write(e,t){let{tx:n}=this.connection();if(this.writeShut)throw new g(`EPIPE`);return I(()=>n.write(e,t))}poll(){if(this.state===`listening`)return{readable:this.queue.length>0,writable:!1,hangup:!1};if(this.state!==`connected`||!this.link)return{readable:!1,writable:!1,hangup:!0};let{rx:e,tx:t}=this.link;return{readable:this.readShut||e.readReady,writable:this.writeShut||t.writeReady,hangup:e.writersGone&&t.readersGone}}changed(e){let t=this.changes.wait(e);if(this.state!==`connected`||!this.link)return t;let n=[t,this.link.rx.changed(e),this.link.tx.changed(e)];for(let e of n)e.catch(()=>void 0);return I(()=>Promise.race(n))}bind(e){if(this.state!==`open`||this.local)throw new g(`EINVAL`);if(e.family!==this.domain)throw new g(`EAFNOSUPPORT`);this.local=this.net.bind(this,e),this.bound=!0}listen(e){if(this.state===`connected`)throw new g(`EISCONN`);if(this.state!==`open`&&this.state!==`listening`)throw new g(`EINVAL`);if(!this.local){if(this.domain===`unix`)throw new g(`EINVAL`);this.bind({family:`inet`,host:`0.0.0.0`,port:0})}this.backlog=Math.min(Math.max(e,1),4096),this.state=`listening`}async accept(e,t=!1){for(;;){if(this.state!==`listening`)throw new g(`EINVAL`);let n=this.queue.shift();if(n)return n;if(t)throw new g(`EAGAIN`);await this.changes.wait(e)}}offer(e){return this.state!==`listening`||this.queue.length>=this.backlog?!1:(this.queue.push(e),this.changes.wake(),!0)}connect(t){if(this.state===`connected`)throw new g(`EISCONN`);if(this.state!==`open`)throw new g(`EINVAL`);if(t.family!==this.domain)throw new g(`EAFNOSUPPORT`);let n=this.net.target(t);this.local||(t.family===`inet`?(this.local=this.net.bind(this,{family:`inet`,host:`127.0.0.1`,port:0}),this.bound=!0):this.local={family:`unix`,path:``});let r=new e(this.net,this.domain);if(r.local=t.family===`inet`?{...t,host:xn(t.host)}:t,r.peer=this.local,this.peer=r.local,bn(this,r),!n.offer(r))throw this.unlink(),r.close(),new g(`ECONNREFUSED`)}unlink(){let e=this.link;e&&(e.rx.closeRead(),e.tx.closeWrite()),this.link=void 0,this.peer=void 0,this.state=`open`}shutdown(e){let{rx:t,tx:n}=this.connection();if(e!==0&&e!==1&&e!==2)throw new g(`EINVAL`);e!==1&&!this.readShut&&(this.readShut=!0,t.closeRead()),e!==0&&!this.writeShut&&(this.writeShut=!0,n.closeWrite()),this.changes.wake()}getOption(e,t){if(e===1)switch(t){case 3:return 1;case 4:return 0;case 30:return+(this.state===`listening`);case 39:return this.domain===`inet`?2:1;case 7:case 8:return this.options.get(`${e}:${t}`)??65536}return this.options.get(`${e}:${t}`)??0}setOption(e,t,n){this.options.set(`${e}:${t}`,n)}close(){let e=this.state;if(this.state=`closed`,e===`listening`)for(let e of this.queue.splice(0))e.close();this.link&&(this.readShut||this.link.rx.closeRead(),this.writeShut||this.link.tx.closeWrite(),this.readShut=!0,this.writeShut=!0),this.bound&&this.local&&this.net.release(this.local,this),this.bound=!1,this.changes.wake()}static pair(t,n){let r=new e(t,n),i=new e(t,n);return r.local=i.local=r.peer=i.peer=n===`inet`?{family:`inet`,host:`127.0.0.1`,port:0}:{family:`unix`,path:``},bn(r,i),[r,i]}};function xn(e){return e===`0.0.0.0`?`127.0.0.1`:e}function R(e){return e.family===`inet`?`inet:${e.port}`:`unix:${e.path}`}var Sn=class{bound=new Map;activators=new Map;nextEphemeral=_n;activate(e,t){this.activators.set(R(e),t)}socket(e){return new L(this,e)}listen(e,t=128){let n=this.socket(e.family);return n.bind(e),n.listen(t),n}connect(e){let t=this.socket(e.family);return t.connect(e),t}bind(e,t){if(t.family===`unix`){if(t.path===``)throw new g(`EINVAL`)}else if(t.host!==`0.0.0.0`&&!vn(t.host))throw new g(`EADDRNOTAVAIL`);let n=t.family===`inet`&&t.port===0?{...t,port:this.ephemeral()}:t,r=R(n);if(this.bound.has(r))throw new g(`EADDRINUSE`);return this.bound.set(r,e),n}release(e,t){let n=R(e);this.bound.get(n)===t&&this.bound.delete(n)}target(e){if(e.family===`inet`&&!vn(xn(e.host)))throw new g(`ENETUNREACH`);let t=R(e);this.bound.has(t)||this.activators.get(t)?.();let n=this.bound.get(t);if(!n?.listening)throw new g(`ECONNREFUSED`);return n}ephemeral(){for(let e=0;e<28232;e++){let e=this.nextEphemeral;if(this.nextEphemeral=e===60999?_n:e+1,!this.bound.has(`inet:${e}`))return e}throw new g(`EADDRINUSE`)}};const Cn=new Map;function wn(e){let t=Cn.get(e);return t||(t=new Sn,Cn.set(e,t)),t}function Tn(e){return e?`${e.kind}:${e.scoopJid??``}`:`local`}const z={HUP:1,INT:2,QUIT:3,ILL:4,TRAP:5,ABRT:6,BUS:7,FPE:8,KILL:9,USR1:10,SEGV:11,USR2:12,PIPE:13,ALRM:14,TERM:15,STKFLT:16,CHLD:17,CONT:18,STOP:19,TSTP:20,TTIN:21,TTOU:22,URG:23,XCPU:24,XFSZ:25,VTALRM:26,PROF:27,WINCH:28,POLL:29,PWR:30,SYS:31},En=new Set([z.CHLD,z.URG,z.WINCH]),Dn=new Set([z.STOP,z.TSTP,z.TTIN,z.TTOU]);function On(e){return e===z.CONT?`continue`:Dn.has(e)?`stop`:En.has(e)?`ignore`:`terminate`}function kn(e){return Number.isInteger(e)&&e>=1&&e<=31}function An(e){return 1<<e}const B={SIGINT:z.INT,SIGTERM:z.TERM,SIGKILL:z.KILL,SIGSTOP:z.STOP,SIGCONT:z.CONT},jn=16384;function Mn(){let e=Array(32).fill(0);return Object.assign(e,{0:3,1:28,2:127,3:21}),Object.assign(e,{4:4,6:1,8:17,9:19,10:26}),Object.assign(e,{12:18,13:15,14:23,15:22}),{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:e}}const Nn=new TextEncoder;function Pn(e){return(e&192)==128}var Fn=class{screen;signal;termios=Mn();cols=80;rows=24;readable=[];line=[];waiters=[];hungUp=!1;name;constructor(e,t){this.screen=e,this.signal=t}receive(e){for(let t of e)this.key(t);this.wake()}resize(e,t){this.setSize(e,t),this.signal(z.WINCH)}hangup(){this.hungUp=!0,this.wake()}signalHangup(){this.signal(z.HUP)}setSize(e,t){this.cols=e,this.rows=t}tcgets(){return{...this.termios,c_cc:[...this.termios.c_cc]}}tcsets(e){let t=this.canonical;this.termios={...e,c_cc:[...e.c_cc]},t&&!this.canonical&&this.line.length>0&&(this.readable.push(Uint8Array.from(this.line)),this.line=[],this.wake())}winsize(){return[this.rows,this.cols]}file(){return new v({read:(e,t)=>this.read(e,t),write:async e=>{if(this.hungUp)throw new g(`EIO`);return this.output(e),e.length},poll:()=>({readable:this.readable.length>0||this.hungUp,writable:!0,hangup:this.hungUp}),changed:e=>this.changed(e),close:()=>{},tty:this})}get canonical(){return!!(this.termios.c_lflag&2)}cc(e){return this.termios.c_cc[e]??0}key(e){let{c_iflag:t,c_lflag:n}=this.termios,r=e===13&&t&256?10:e;if(!(n&1&&this.signalKey(r))){if(!this.canonical){this.readable.push(Uint8Array.of(r)),n&8&&this.echo(r);return}this.edit(r)}}signalKey(e){let t=e===this.cc(0)?z.INT:e===this.cc(1)?z.QUIT:e===this.cc(10)?z.TSTP:0;return!t||e===0?!1:(this.termios.c_lflag&8&&this.echo(e),this.termios.c_lflag&128||(this.line=[],this.readable=[]),this.signal(t),!0)}edit(e){let t=!!(this.termios.c_lflag&8);e===this.cc(2)||e===8?this.rubOut(this.lastCharLength()):e===this.cc(3)?this.rubOut(this.line.length):e===this.cc(14)?this.rubOut(this.lastWordLength()):e===this.cc(4)?(this.readable.push(this.line.length>0?Uint8Array.from(this.line):null),this.line=[]):e===10?(this.line.push(e),t&&this.output(Nn.encode(`
11
- `)),this.readable.push(Uint8Array.from(this.line)),this.line=[]):(this.line.push(e),t&&this.echo(e))}lastWordLength(){let e=this.line.length;for(;e>0&&this.line[e-1]===32;)e--;for(;e>0&&this.line[e-1]!==32;)e--;return this.line.length-e}lastCharLength(){let{line:e}=this,t=Math.min(1,e.length);if(this.termios.c_iflag&jn)for(;t<e.length&&Pn(e[e.length-t]??0);)t++;return t}rubOut(e){let t=this.line.splice(this.line.length-e,e),n=this.termios.c_iflag&jn?t.filter(e=>!Pn(e)).length:t.length;n>0&&this.termios.c_lflag&8&&this.output(Nn.encode(`\b \b`.repeat(n)),!1)}echo(e){if(e<32&&e!==10&&e!==9&&this.termios.c_lflag&512){this.output(Uint8Array.of(94,e+64),!1);return}this.output(Uint8Array.of(e))}output(e,t=!0){let{c_oflag:n}=this.termios;if(!t||!(n&1&&n&4)||!e.includes(10)){this.screen.write(e);return}let r=[];for(let t of e)t===10&&r.push(13),r.push(t);this.screen.write(Uint8Array.from(r))}async read(e,t){for(;this.readable.length===0;){if(this.hungUp)return new Uint8Array;await this.changed(t)}let n=this.readable[0];if(n===null)return this.readable.shift(),new Uint8Array;if(n===void 0)return new Uint8Array;let r=[],i=0;for(;this.readable.length>0&&i<e;){let t=this.readable[0];if(t==null)break;let n=t.subarray(0,e-i);if(r.push(n),i+=n.length,n.length<t.length?this.readable[0]=t.subarray(n.length):this.readable.shift(),this.canonical)break}let a=new Uint8Array(i),o=0;for(let e of r)a.set(e,o),o+=e.length;return a}changed(e){return e?.aborted?Promise.reject(new g(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new g(`EINTR`))},i=()=>{e?.removeEventListener(`abort`,r),t()};this.waiters.push(i),e?.addEventListener(`abort`,r,{once:!0})})}wake(){let e=this.waiters;this.waiters=[];for(let t of e)t()}},V=class extends Error{code;constructor(e){super(e),this.code=e}};function In(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new g(`EINTR`)),e?.aborted?t():e?.addEventListener(`abort`,t,{once:!0})}),done:()=>e?.removeEventListener(`abort`,t)}}function Ln(e){return(e&255)<<8|127}function Rn(e,t){return t?t&127:(e&255)<<8}function zn(e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}var Bn=class{parentFds;spawner;forker;children=new Map;leftovers=new Map;onChildState;stateChanged=[];watchers=new Map;constructor(e,t,n){this.parentFds=e,this.spawner=t,this.forker=n}async fork(e){if(!this.forker)throw new V(`ENOSYS`);return this.track(e,this.parentFds.fork(),new Map,this.forker)}async spawn(e,t,n=[]){if(!this.spawner)throw new V(`ENOSYS`);let r=new s,i=new Map;try{for(let[e,n]of t.entries())r.installAt(e,this.openSlot(n,e,i));for(let e of n)if(!(e.fd<=2)){if(`device`in e){r.installAt(e.fd,p(e.device,e.access));continue}r.installAt(e.fd,this.parentFds.get(e.kernel).retain()),e.flags!==void 0&&r.setStatusFlags(e.fd,e.flags)}}catch(e){throw await r.closeAll(),e}return this.track(e,r,i,this.spawner)}async track(e,t,n,r){let i;try{i=await r(e,t)}catch(e){throw await t.closeAll(),e}let a={exited:i.exited,termsig:i.termsig,captured:n};return i.exited.then(e=>{a.code=e,this.watchers.delete(i.pid),this.onChildState?.()}),i.onState?.((e,t)=>{a.stopReport=e===`stopped`?t:void 0,a.continueReport=e===`continued`,this.watchers.get(i.pid)?.(e,t);let n=this.stateChanged;this.stateChanged=[];for(let e of n)e();this.onChildState?.()}),this.children.set(i.pid,a),i.pid}watch(e,t){this.children.has(e)&&this.watchers.set(e,t)}openSlot(e,t,n){if(`fd`in e)return this.parentFds.get(e.fd).retain();if(`input`in e)return c(e.input);if(`capture`in e){let e=[];return n.set(t,e),f(t=>e.push(t))}return u()}async wait(e,t,n,r={}){let i;try{for(;;){let a=this.candidates(e,r);if(a.length===0)throw new g(`ECHILD`);let o=a.find(([,e])=>e.code!==void 0);if(o)return this.reap(o[0],o[1].code);let s=this.stateReport(a,r);if(s)return s;if(t)return[0,0];i??=In(n),await this.nextChange(a,r,i.promise)}}finally{i?.done()}}candidates(e,t){let n=[...this.children];if(e>0)return n.filter(([t])=>t===e);let r=t.inGroup;return e===-1||!r?n:n.filter(([e])=>r(e))}async nextChange(e,t,n){let r,i=new Promise(e=>r=e),a=t.untraced||t.continued;a&&r&&this.stateChanged.push(r);try{await Promise.race([...e.map(([,e])=>e.exited),...a?[i]:[],n])}finally{this.stateChanged=this.stateChanged.filter(e=>e!==r)}}stateReport(e,t){for(let[n,r]of e){if(t.untraced&&r.stopReport!==void 0){let e=r.stopReport;return r.stopReport=void 0,[n,Ln(e)]}if(t.continued&&r.continueReport)return r.continueReport=!1,[n,65535]}return null}reap(e,t){let n=this.children.get(e);return this.children.delete(e),n&&n.captured.size>0&&this.leftovers.set(e,n.captured),[e,Rn(t,n?.termsig?.())]}captured(e,t){let n=this.leftovers.get(e),r=n?.get(t);return!n||!r?new Uint8Array:(n.delete(t),n.size===0&&this.leftovers.delete(e),zn(r))}},Vn=class{index;onFree;slave;locked=!0;packet=!1;queue=[];waiters=[];masterOpen=!0;slaveRefs=0;slaveSeen=!1;constructor(e,t,n){this.index=e,this.onFree=n,this.slave=new Fn({write:e=>this.fromSlave(e)},e=>t(this.slave,e)),this.slave.name=`/dev/pts/${e}`}master(){return new v({read:(e,t)=>this.readMaster(e,t),write:async e=>(this.slave.receive(e),e.length),poll:()=>({readable:this.queue.length>0||this.slaveGone,writable:!0,hangup:this.slaveGone}),changed:e=>this.changed(e),close:()=>this.closeMaster(),pty:this})}openSlave(){if(!this.masterOpen||this.locked)throw new g(`EIO`);let e=this.slave.file().file;return this.slaveRefs+=1,this.slaveSeen=!0,new v({...e,close:()=>this.closeSlave()})}get slaveGone(){return this.slaveSeen&&this.slaveRefs===0}fromSlave(e){this.masterOpen&&(this.queue.push(e.slice()),this.wake())}async readMaster(e,t){for(;this.queue.length===0;){if(this.slaveGone)throw new g(`EIO`);await this.changed(t)}let n=+!!this.packet,r=[],i=0;for(;this.queue.length>0&&i<e-n;){let t=this.queue[0],a=t.subarray(0,e-n-i);r.push(a),i+=a.length,a.length<t.length?this.queue[0]=t.subarray(a.length):this.queue.shift()}let a=new Uint8Array(n+i),o=n;for(let e of r)a.set(e,o),o+=e.length;return a}closeMaster(){this.masterOpen=!1,this.queue=[],this.slave.hangup(),this.slave.signalHangup(),this.freeIfUnused()}closeSlave(){--this.slaveRefs,this.wake(),this.freeIfUnused()}freeIfUnused(){!this.masterOpen&&this.slaveRefs===0&&this.onFree(this)}changed(e){return e?.aborted?Promise.reject(new g(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new g(`EINTR`))},i=()=>{e?.removeEventListener(`abort`,r),t()};this.waiters.push(i),e?.addEventListener(`abort`,r,{once:!0})})}wake(){let e=this.waiters;this.waiters=[];for(let t of e)t()}},Hn=class{signal;pairs=new Map;constructor(e){this.signal=e}open(){let e=0;for(;this.pairs.has(e);)e+=1;let t=new Vn(e,this.signal,e=>this.pairs.delete(e.index));return this.pairs.set(e,t),{pair:t,master:t.master()}}get(e){let t=this.pairs.get(e);if(!t)throw new g(`ENOENT`);return t}numbers(){return[...this.pairs.keys()].sort((e,t)=>e-t)}};const Un=[`pty-open`,`pty-slave-open`,`pty-number`,`pty-lock`,`pty-ctty`,`pty-packet`,`pty-list`,`pty-winsz-set`];function H(e,t){let n=e.fds.get(t).file.pty;if(!n)throw new g(`ENOTTY`);return n}function Wn(e,t){let n=e.fds.get(t).file,r=n.tty??n.pty?.slave;if(!r)throw new g(`ENOTTY`);return r}const U=e=>({ok:!0,kind:`json`,json:e}),W={ok:!0,kind:`void`};function Gn(e,t){switch(e.op){case`pty-open`:if(!t.ptys)throw new g(`ENOENT`);return U(t.fds.install(t.ptys.open().master,3));case`pty-slave-open`:{if(!t.ptys)throw new g(`ENOENT`);let n=t.ptys.get(e.n),r=t.fds.install(n.openSlave(),3);return e.noctty||t.jobs?.acquireTerminal(t.pid,n.slave),U(r)}case`pty-number`:return U(H(t,e.fd).index);case`pty-lock`:return H(t,e.fd).locked=e.lock,W;case`pty-ctty`:{let n=Wn(t,e.fd);if(t.jobs?.getsid(t.pid,0)===t.pid&&t.jobs?.controllingTerminal(t.pid)===n)return W;if(!t.jobs?.acquireTerminal(t.pid,n))throw new g(`EPERM`);return W}case`pty-list`:return U(t.ptys?.numbers()??[]);case`pty-packet`:return H(t,e.fd).packet=e.on,W;case`pty-winsz-set`:return Wn(t,e.fd).resize(e.cols,e.rows),W}}function Kn(e,t,n){let r=new Set,i=(t,n)=>t.filter(t=>{let i=m(e.get(t).file);return i.hangup&&r.add(t),i[n]||i.hangup}),a={read:i(t,`readable`),write:i(n,`writable`)};return r.size>0&&(a.hangup=[...r]),a}function qn(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new g(`EINTR`)),e.aborted?t():e.addEventListener(`abort`,t,{once:!0})}),done:()=>e.removeEventListener(`abort`,t)}}async function Jn(e,t,n,r,i){let a=r<0?1/0:Date.now()+r,o=qn(i);o.promise.catch(()=>{});try{return await Yn(e,t,n,a,o.promise)}finally{o.done()}}async function Yn(e,t,n,r,i){for(;;){let a=Kn(e,t,n);if(a.read.length>0||a.write.length>0||Date.now()>=r)return a;let o=new AbortController,s=[...new Set([...t,...n])].flatMap(t=>{let n=e.get(t).file;return n.changed===void 0?[]:[n.changed(o.signal).catch(()=>void 0)]}),c,l=r===1/0?[]:[new Promise(e=>c=setTimeout(e,r-Date.now()))];try{await Promise.race([...s,...l,i])}finally{o.abort(),clearTimeout(c)}}}const Xn=[`sock-open`,`sock-pair`,`sock-bind`,`sock-listen`,`sock-accept`,`sock-connect`,`sock-shutdown`,`sock-name`,`sock-getopt`,`sock-setopt`];function G(e,t){let n=e.get(t).file;if(!(n instanceof L))throw new g(`ENOTSOCK`);return n}const K=e=>e===void 0?{ok:!0,kind:`void`}:{ok:!0,kind:`json`,json:e};async function Zn(e,t){let{fds:n,net:r}=t;switch(e.op){case`sock-open`:return K(n.install(new v(r.socket(e.domain)),3));case`sock-pair`:{let[t,i]=L.pair(r,e.domain),a=n.install(new v(t),3);try{return K([a,n.install(new v(i),3)])}catch(e){throw await Promise.resolve(n.close(a)),e}}case`sock-bind`:return G(n,e.fd).bind(e.addr),K();case`sock-listen`:return G(n,e.fd).listen(e.backlog),K();case`sock-accept`:return K(await $n(t,e.fd,e.nonblock));case`sock-connect`:if(G(n,e.fd).connect(e.addr),e.nonblock)throw new g(`EINPROGRESS`);return K();case`sock-shutdown`:return G(n,e.fd).shutdown(e.how),K();case`sock-name`:{let t=G(n,e.fd),r=e.peer?t.peer:t.local;if(e.peer&&!r)throw new g(`ENOTCONN`);return K(r??Qn(t.domain))}case`sock-getopt`:return K(G(n,e.fd).getOption(e.level,e.name));case`sock-setopt`:return G(n,e.fd).setOption(e.level,e.name,e.value),K()}}function Qn(e){return e===`inet`?{family:`inet`,host:`0.0.0.0`,port:0}:{family:`unix`,path:``}}async function $n(e,t,n){let r=G(e.fds,t),i=!n&&!m(r).readable,a=await r.accept(i?e.blocking():void 0,n);return{fd:e.fds.install(new v(a),3),peer:a.peer}}function er(e){return e?.code===`ENOENT`||e instanceof Error&&e.message.startsWith(`ENOENT`)}function q(e,t){return e===t||e.startsWith(t.endsWith(`/`)?t:`${t}/`)}var J=class{fs;path;orphaned;data;length=0;dirty=!1;queue=Promise.resolve();writeBack;writeBackCost=0;opens=0;missing=!1;constructor(e,t,n,r=!1,i=!1){this.fs=e,this.path=t,this.orphaned=r,n===void 0?r&&(this.data=new Uint8Array):this.data=new Uint8Array(n),this.length=this.data?.length??0,i&&n!==void 0&&this.markDirty()}serial(e){let t=this.queue.then(e);return this.queue=t.catch(()=>void 0),t}async load(){if(!this.data){try{this.data=await ue(this.fs,this.path)}catch(e){if(!er(e))throw e;this.data=new Uint8Array,this.missing=!0}this.length=this.data.length}return this.data}replace(e){this.data=new Uint8Array(e),this.length=this.data.length,this.missing=!1,this.markDirty()}async materialize(){await this.load(),!(!this.missing||this.orphaned)&&(this.missing=!1,await this.fs.writeFile(this.path,this.data?.slice(0,this.length)??new Uint8Array))}async size(){return await this.load(),this.length}async pread(e,t){let n=await this.load(),r=Math.max(0,Math.min(e,this.length-t));return n.slice(t,t+r)}async pwrite(e,t){await this.load();let n=this.ensure(t+e.length);return t>this.length&&n.fill(0,this.length,t),n.set(e,t),this.length=Math.max(this.length,t+e.length),this.markDirty(),e.length}async truncate(e){await this.load();let t=this.ensure(e);e>this.length&&t.fill(0,this.length,e),this.length=e,this.markDirty()}markDirty(){if(this.dirty=!0,this.writeBack!==void 0||this.orphaned)return;let e=Math.max(250,this.writeBackCost*10);this.writeBack=setTimeout(()=>{this.writeBack=void 0,this.serial(()=>this.flush()).catch(()=>void 0)},e)}ensure(e){let t=this.data??new Uint8Array;if(t.length>=e)return t;let n=new Uint8Array(Math.max(e,t.length*2,256));return n.set(t.subarray(0,this.length)),this.data=n,n}async flush(){if(!this.dirty||!this.data||this.orphaned)return;this.dirty=!1;let e=performance.now();try{await this.fs.writeFile(this.path,this.data.slice(0,this.length))}catch(e){throw this.dirty=!0,e}this.writeBackCost=performance.now()-e}},tr=class{fs;byPath=new Map;constructor(e){this.fs=e}open(e){let t=this.byPath.get(e);return t||(t=new J(this.fs,e),this.byPath.set(e,t)),t.opens++,t}adopt(e,t,n){let r=this.byPath.get(e);return r?n&&r.replace(t):(r=new J(this.fs,e,t,!1,n),this.byPath.set(e,r)),r.opens++,r}closed(e){e.opens--,e.opens===0&&this.byPath.get(e.path)===e&&this.byPath.delete(e.path)}async flush(e){for(let[t,n]of this.byPath)q(t,e)&&await n.serial(()=>n.flush())}async unlinking(e){let t=this.byPath.get(e);t&&await t.serial(()=>t.load())}unlinked(e){let t=this.byPath.get(e);t&&(t.orphaned=!0,this.byPath.delete(e))}renamed(e,t){if(e===t)return;let n=[];for(let[r,i]of this.byPath)q(r,e)?n.push(i):q(r,t)&&(i.orphaned=!0,this.byPath.delete(r));for(let r of n)this.byPath.delete(r.path),r.path=t+r.path.slice(e.length),this.byPath.set(r.path,r)}};function nr(e,t,n){let r=t.flags&3,i=r!==1,a=r===1||r===2,o=!n||t.orphan?new J(e,t.path,t.contents,t.orphan===!0,t.dirty===!0):t.contents===void 0?n.open(t.path):n.adopt(t.path,t.contents,t.dirty===!0),s,c=e=>{o.serial(e).catch(e=>{s??={err:e}})};t.create&&c(()=>o.materialize()),t.truncate&&c(()=>o.truncate(0));let l=()=>{if(!s)return;let{err:e}=s;throw s=void 0,e},u=t.position,d=e=>o.serial(()=>(l(),e()));return new v({read:i?e=>d(async()=>{let t=await o.pread(e,u);return u+=t.length,t}):void 0,write:a?e=>d(async()=>(t.flags&1024&&(u=await o.size()),u+=await o.pwrite(e,u),e.length)):void 0,seek:(e,t)=>d(async()=>{let n=0;if(t===1)n=u;else if(t===2)n=await o.size();else if(t!==0)throw new g(`EINVAL`);if(n+e<0)throw new g(`EINVAL`);return u=n+e,u}),pread:(e,t)=>d(()=>{if(!i)throw new g(`EBADF`);return o.pread(e,t)}),pwrite:(e,t)=>d(()=>{if(!a)throw new g(`EBADF`);return o.pwrite(e,t)}),resize:e=>d(()=>{if(!a)throw new g(`EBADF`);return o.truncate(e)}),stat:()=>d(async()=>({path:o.path,size:await o.size(),...o.orphaned?{orphan:!0}:{}})),flush:()=>d(()=>o.flush()),close:()=>o.serial(async()=>{try{l(),await o.flush()}finally{n?.closed(o)}})})}const rr=new Set([`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`]);function ir(e){return rr.has(e.op)}function ar(e){return e.op.startsWith(`pty-`)}function or(e){return e.op.startsWith(`sock-`)}function sr(e){return e.op.startsWith(`fd-path-`)||e.op===`fd-pread`||e.op===`fd-pwrite`||e.op===`fd-resize`||e.op===`fd-vfs-stat`}function cr(e){return e.op.startsWith(`fd-`)}function lr(e){return e.op.startsWith(`tty-`)}const ur=new Set([`fd-read`,`fd-write`,`fd-close`,`fd-pipe`,`fd-poll`,`fd-open-vfs`,`fd-seek`,`fd-pread`,`fd-pwrite`,`fd-resize`,`fd-vfs-stat`,`fd-path-flush`,`fd-path-unlinking`,`fd-path-unlinked`,`fd-path-renamed`,`fd-select`,`fd-info`,`fd-dup`,`fd-reserve`,`fd-meta`,`fd-setfl`,`fd-cloexec`,`fd-list`,`dl-log`,`proc-alarm`,`fd-renumber`,`fd-promote`,`fd-open-tty`,`tty-get`,`tty-set`,`tty-winsz`,`fd-flush`,`proc-spawn`,`proc-wait`,`proc-captured`,`proc-fork`,`proc-kill`,`proc-exec`,`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`,`tty-pgrp-get`,`tty-pgrp-set`,`sig-mask`,`sig-pause`,...Xn,...Un]);function dr(e){let t=e.op;return typeof t==`string`&&ur.has(t)}const fr=1048576;var pr=class{pid;fds;options;exited=!1;children;caught=0;ignored=0;interrupt=new AbortController;execChild;execTermsig;stopped=0;stops=0;resumed=Promise.resolve();wake=()=>{};stateListeners=[];net;nodes;constructor(e,t,n={}){this.pid=e,this.fds=t,this.options=n,this.children=new Bn(t,n.spawner,n.forker),this.nodes=n.fs?new tr(n.fs):void 0,this.children.onChildState=()=>this.signal(z.CHLD)}signal(e){if(this.execChild!==void 0)return Promise.resolve(this.options.kill?.(this.execChild,e)).catch(()=>void 0),e===z.KILL?`terminate`:`forward`;if(e===z.KILL)return`terminate`;if(e===z.CONT&&this.cont(),e===z.STOP)return this.stop(e);let t=An(e);if(this.ignored&t)return`ignore`;if(!(this.caught&t)){let t=On(e);return t===`stop`?this.stop(e):t}let n=On(e);if(((this.options.pendingBits?.()??0)&t)!==0&&n===`terminate`)return n;this.options.onPending?.(e);let r=this.interrupt;return this.interrupt=new AbortController,r.abort(),`deliver`}onState(e){this.stateListeners.push(e)}stop(e){if(this.stopped)return`stop`;this.stopped=e,this.stops++,this.resumed=new Promise(e=>this.wake=e);let t=this.interrupt;this.interrupt=new AbortController,t.abort();for(let t of this.stateListeners)t(`stopped`,e);return`stop`}cont(){if(this.stopped){this.stopped=0,this.wake();for(let e of this.stateListeners)e(`continued`,z.CONT)}}async syscall(e){for(;;){await this.resumed;let t=this.stops,n=await this.dispatch(e);if(!(!n.ok&&n.errno===`EINTR`&&this.stops!==t&&!this.options.hasPending?.()))return await this.resumed,n}}async dispatch(e){try{if(cr(e))return await this.fdSyscall(e);if(lr(e))return this.ttySyscall(e);if(ir(e))return this.jobSyscall(e);if(or(e))return await this.socketSyscall(e);if(ar(e)){let{ptys:t,jobs:n}=this.options;return Gn(e,{pid:this.pid,fds:this.fds,ptys:t,jobs:n})}return await this.procSyscall(e)}catch(e){if(e instanceof g||e instanceof V)return{ok:!1,errno:e.code,message:e.code};throw e}}blockingSignal(){if(this.options.hasPending?.())throw new g(`EINTR`);return this.interrupt.signal}async read(e){let t=this.fds.get(e.fd).file,n=e.peek?t.peek:t.read;if(!n)throw new g(e.peek&&t.read?`EOPNOTSUPP`:`EBADF`);if(t.tty&&this.checkForeground(t.tty),e.max<=0)return new Uint8Array;let r=m(t).readable;if(!r&&e.nonblock)throw new g(`EAGAIN`);let i=r?this.interrupt.signal:this.blockingSignal();return n.call(t,Math.max(0,Math.min(e.max,fr)),i)}async write(e,t,n=!1){let r=this.fds.get(e).file;if(!r.write)throw new g(`EBADF`);if(!m(r).writable){if(n)throw new g(`EAGAIN`);return r.write(t,this.blockingSignal())}return n?r.write(t,AbortSignal.abort()):r.write(t,this.options.hasPending?.()?AbortSignal.abort():this.interrupt.signal)}openVfsFile(e){if(!this.options.fs)throw new V(`ENOSYS`);return nr(this.options.fs,{path:e.path,flags:e.flags,position:e.position,...e.contents===void 0?{}:{contents:e.contents},...e.orphan?{orphan:!0}:{},...e.truncate?{truncate:!0}:{},...e.create?{create:!0}:{}},this.nodes)}async fdSyscall(e){if(sr(e))return this.vfsSyscall(e);switch(e.op){case`fd-read`:return{ok:!0,kind:`bytes`,bytes:await this.read(e)};case`fd-write`:return{ok:!0,kind:`json`,json:await this.write(e.fd,e.body,e.nonblock)};case`fd-close`:return await Promise.resolve(this.fds.close(e.fd)),{ok:!0,kind:`void`};case`fd-pipe`:{let e=_(),t=this.fds.install(e.read,3),n;try{n=this.fds.install(e.write,3)}catch(e){throw await Promise.resolve(this.fds.close(t)),e}return{ok:!0,kind:`json`,json:[t,n]}}case`fd-poll`:return{ok:!0,kind:`json`,json:m(this.fds.get(e.fd).file)};case`fd-open-vfs`:return{ok:!0,kind:`json`,json:this.fds.install(this.openVfsFile(e),3)};case`fd-info`:return{ok:!0,kind:`json`,json:this.fdInfo(e.fd)};case`fd-list`:return{ok:!0,kind:`json`,json:this.fds.numbers().map(e=>({fd:e,...this.fdInfo(e)}))};case`fd-meta`:{let t=this.fds.get(e.fd).file;if(!t.held)throw new g(`EBADF`);return t.heldMeta=e.meta,{ok:!0,kind:`void`}}case`fd-setfl`:return this.fds.setStatusFlags(e.fd,e.flags),{ok:!0,kind:`void`};case`fd-cloexec`:return e.on?this.fds.setCloseOnExec(e.fd):this.fds.clearCloseOnExec(e.fd),{ok:!0,kind:`void`};case`fd-dup`:return{ok:!0,kind:`json`,json:this.fds.dup(e.fd,e.min??3)};case`fd-reserve`:return{ok:!0,kind:`json`,json:this.reserve(e.fd,e.min,e.meta)};case`fd-promote`:return this.promote(e),{ok:!0,kind:`void`};case`fd-renumber`:return e.from!==e.to&&(this.fds.dup2(e.from,e.to),e.keep||await Promise.resolve(this.fds.close(e.from))),{ok:!0,kind:`void`};case`fd-open-tty`:{let t=e.name===void 0?this.controllingTerminal():this.options.jobs?.terminalNamed(e.name);if(!t)throw new g(`ENXIO`);return{ok:!0,kind:`json`,json:this.fds.install(t.file(),3)}}case`fd-select`:{let{read:t,write:n,timeoutMs:r}=e,i=this.blockingSignal();return{ok:!0,kind:`json`,json:await Jn(this.fds,t,n,r,i)}}case`fd-seek`:{let t=this.fds.get(e.fd).file;if(!t.seek)throw new g(`ESPIPE`);return{ok:!0,kind:`json`,json:await t.seek(e.offset,e.whence)}}case`fd-flush`:{let t=this.fds.get(e.fd).file;return t.flush&&await t.flush(),{ok:!0,kind:`void`}}}}async vfsSyscall(e){if(`path`in e||`from`in e){let t=this.nodes;return e.op===`fd-path-flush`?await t?.flush(e.path):e.op===`fd-path-unlinking`?await t?.unlinking(e.path):e.op===`fd-path-unlinked`?t?.unlinked(e.path):e.op===`fd-path-renamed`&&t?.renamed(e.from,e.to),{ok:!0,kind:`void`}}let t=this.fds.get(e.fd).file;if(!t.pread||!t.pwrite||!t.resize||!t.stat)throw new g(`ESPIPE`);switch(e.op){case`fd-pread`:return{ok:!0,kind:`bytes`,bytes:await t.pread(Math.min(e.max,fr),e.offset)};case`fd-pwrite`:return{ok:!0,kind:`json`,json:await t.pwrite(e.body,e.offset)};case`fd-resize`:return await t.resize(e.size),{ok:!0,kind:`void`};case`fd-vfs-stat`:return{ok:!0,kind:`json`,json:await t.stat()}}}promote(e){if(!this.fds.get(e.fd).file.held)throw new g(`EBADF`);if(e.share!==void 0){this.fds.dup2(e.share,e.fd);return}if(!this.options.fs||e.path===void 0)throw new g(`EINVAL`);let t=nr(this.options.fs,{path:e.path,flags:e.flags??0,position:e.position??0,...e.contents===void 0?{}:{contents:e.contents},...e.orphan?{orphan:!0}:{},...e.dirty?{dirty:!0}:{}},this.nodes);this.fds.installAt(e.fd,t)}reserve(e,t=3,n){if(e===void 0)return this.fds.install(y(n),Math.max(3,t));if(this.fds.has(e))throw new g(`EBADF`);return this.fds.installAt(e,y(n)),e}fdInfo(e){let t=this.fds.get(e).file,n=this.fds.statusFlags(e);return{tty:t.tty!==void 0,kind:t instanceof L?`socket`:l(t),...t.heldMeta?{meta:t.heldMeta}:{},...n===void 0?{}:{flags:n},...this.fds.closesOnExec(e)?{cloexec:!0}:{},...t.tty?.name?{name:t.tty.name}:t.pty?{name:`/dev/ptmx`}:{}}}ttySyscall(e){let t=this.tty(e.fd),n=this.options.jobs;switch(e.op){case`tty-get`:return{ok:!0,kind:`json`,json:t.tcgets()};case`tty-set`:return t.tcsets(e.termios),{ok:!0,kind:`void`};case`tty-winsz`:return{ok:!0,kind:`json`,json:t.winsize()};case`tty-pgrp-get`:return{ok:!0,kind:`json`,json:n?n.tcgetpgrp(t,this.sid()):this.pid};case`tty-pgrp-set`:if(n)n.tcsetpgrp(this.pid,t,e.pgrp);else if(e.pgrp!==this.pid)throw new g(`EPERM`);return{ok:!0,kind:`void`}}}checkForeground(e){let t=this.options.jobs;if(!t)return;let n=t.controllingTerminal(this.pid);if(n!==void 0&&n!==e)return;let r=this.pgid();if(t.tcgetpgrp(e,this.sid())!==r)throw this.ignored&An(z.TTIN)?new g(`EIO`):(t.killGroup(r,z.TTIN),new g(`EINTR`))}waitGroup(e){let t=this.options.jobs;if(!t||e>0||e===-1)return;let n=e===0?this.pgid():-e;return e=>(t.pgidOf(e)??this.pgid())===n}pgid(){return this.options.jobs?.getpgid(this.pid,0)??this.pid}sid(){return this.options.jobs?.getsid(this.pid,0)??this.pid}controllingTerminal(){let e=this.options.jobs?.controllingTerminal(this.pid);return e===void 0?this.fds.stdioTerminal():e??void 0}jobSyscall(e){let t=this.options.jobs,n=e=>{if(e!==0&&e!==this.pid)throw new g(`ESRCH`);return this.pid};switch(e.op){case`proc-setpgid`:if(t)t.setpgid(this.pid,e.pid,e.pgid);else if(n(e.pid)!==(e.pgid||this.pid))throw new g(`EPERM`);return{ok:!0,kind:`void`};case`proc-getpgid`:return{ok:!0,kind:`json`,json:t?.getpgid(this.pid,e.pid)??n(e.pid)};case`proc-getsid`:return{ok:!0,kind:`json`,json:t?.getsid(this.pid,e.pid)??n(e.pid)};case`proc-setsid`:if(!t)throw new g(`EPERM`);return{ok:!0,kind:`json`,json:t.setsid(this.pid)}}}tty(e){let t=this.fds.get(e).file,n=t.tty??t.pty?.slave;if(!n)throw new g(`ENOTTY`);return n}socketSyscall(e){return this.net??=this.options.net??new Sn,Zn(e,{fds:this.fds,net:this.net,blocking:()=>this.blockingSignal()})}async procSyscall(e){switch(e.op){case`proc-fork`:return{ok:!0,kind:`json`,json:await this.children.fork(e.state)};case`proc-spawn`:{let{file:t,argv:n,env:r,cwd:i,stdio:a,inherit:o}=e;return{ok:!0,kind:`json`,json:await this.children.spawn({file:t,argv:n,env:r,cwd:i},a,o)}}case`proc-wait`:{let t=e.nohang?this.interrupt.signal:this.blockingSignal(),n={untraced:e.untraced,continued:e.continued,inGroup:this.waitGroup(e.pid)};return{ok:!0,kind:`json`,json:await this.children.wait(e.pid,e.nohang,t,n)}}case`proc-exec`:this.execChild=e.pid,this.options.jobs?.exec(this.pid,e.pid),this.children.watch(e.pid,(e,t)=>e===`stopped`?this.stop(t):this.cont()),await this.fds.closeAll();try{let t=await this.children.wait(e.pid,!1),n=t[1]&127;return n&&(this.execTermsig=n),{ok:!0,kind:`json`,json:t}}finally{this.execChild=void 0}case`proc-kill`:if(e.sig!==0&&!kn(e.sig))throw new g(`EINVAL`);if(!await this.options.kill?.(e.pid===0?-this.pgid():e.pid,e.sig))throw new g(`ESRCH`);return{ok:!0,kind:`void`};case`dl-log`:return e.append&&this.dlLog.push(e.append),{ok:!0,kind:`json`,json:this.dlLog.slice(e.from)};case`proc-alarm`:return this.setAlarm(e.sig,e.firstMs??e.ms,e.repeat?e.ms:0,e.timer),{ok:!0,kind:`void`};case`sig-mask`:return this.caught=e.caught,this.ignored=e.ignored,{ok:!0,kind:`void`};case`sig-pause`:return this.pause();case`proc-captured`:return{ok:!0,kind:`bytes`,bytes:this.children.captured(e.pid,e.slot)}}}pause(){let e=this.blockingSignal();return new Promise((t,n)=>{e.addEventListener(`abort`,()=>n(new g(`EINTR`)),{once:!0})})}dlLog=[];alarm;alarmEvery;setAlarm(e,t,n,r){if(!kn(e))throw new g(`EINVAL`);if(this.clearAlarm(),t<=0)return;let i=r===void 0?()=>this.options.raise?.(e):()=>this.timerExpired(r);this.alarm=setTimeout(()=>{this.alarm=void 0,i(),n>0&&(this.alarmEvery=setInterval(i,n))},t)}timerExpired(e){this.options.onTimer?.(e);let t=this.interrupt;this.interrupt=new AbortController,t.abort()}clearAlarm(){clearTimeout(this.alarm),clearInterval(this.alarmEvery),this.alarm=void 0,this.alarmEvery=void 0}async exit(){this.exited||(this.exited=!0,this.clearAlarm(),await this.fds.closeAll())}};function mr(){return new Worker(new URL(`/assets/process-worker-BEpsdjWG.js`,``+import.meta.url),{type:`module`})}const hr=new WeakMap;let gr=1;function _r(e){let t=hr.get(e);return t===void 0&&hr.set(e,t=gr++),t}function vr(e){return e.numbers().filter(t=>t>2&&!e.get(t).file.held).map(t=>{let n=e.get(t),r=e.statusFlags(t),i=n.file instanceof L?`socket`:l(n.file),a=n.file.heldMeta;return{fd:t,kind:i,...i===`device`&&a&&`device`in a?{device:a}:{},...r===void 0?{}:{flags:r},...e.closesOnExec(t)?{cloexec:!0}:{},...i===`stream`?{desc:_r(n)}:{}}})}function yr(e){let t=new SharedArrayBuffer(64+pe),n=new Int32Array(t,0,16),r=new pr(e.pid,e.fds,{spawner:e.spawner,forker:e.forker,fs:e.fs,kill:e.kill,jobs:e.jobs,ptys:e.ptys,net:e.net,onPending:e=>void Atomics.or(n,8,An(e)),onTimer:e=>void Atomics.or(n,9,1<<e),hasPending:()=>Atomics.load(n,8)!==0||Atomics.load(n,9)!==0,...e.program.abi===`wasi`?{pendingBits:()=>Atomics.load(n,8)}:{},raise:e=>y(e)}),i=le({fs:e.fs,cwd:e.cwd}),a=(e.createWorker??mr)(),o=async e=>dr(e)?r.syscall(e):`op`in e&&typeof e.op==`string`&&`path`in e?fe(e):{ok:!1,errno:`ENOSYS`,message:`wasm-realm: no exec yet`},s=me(a,t,i,{dispatch:o}),c,l=new Promise(e=>c=e),u=!1,d,f=(e,t)=>{if(!u){u=!0,d=t??r.execTermsig,a.removeEventListener(`message`,m),a.removeEventListener(`error`,h),s.dispose();for(let e of[...g.keys()])_(e);de(i),a.terminate(),r.exit().then(()=>c(e),()=>c(e))}},p=t=>{t?.type===`wasm-process-exit`?f(typeof t.code==`number`?t.code:70):t?.type===`wasm-process-error`?(e.onError?.(String(t.message)),f(70)):t?.type===`wasm-thread-spawn`&&t.thread&&v(t.thread)},m=e=>p(e.data),h=t=>{t.preventDefault(),e.onError?.(String(t.message??`worker error`)),f(70)},g=new Map,_=e=>{let t=g.get(e);g.delete(e),t?.()},v=t=>{if(u)return;if(g.size>=63){e.onError?.(`more than 64 threads`),f(70);return}let n=new SharedArrayBuffer(64+pe),r=(e.createWorker??mr)(),a=me(r,n,i,{dispatch:o}),s=e=>{let n=e.data;n?.type===`wasm-thread-exit`?_(t.tid):p(n)};r.addEventListener(`message`,s),r.addEventListener(`error`,h),g.set(t.tid,()=>{r.removeEventListener(`message`,s),r.removeEventListener(`error`,h),a.dispose(),r.terminate()});let c={type:`wasm-thread-init`,pid:e.pid,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,sab:n,...e.ppid===void 0?{}:{ppid:e.ppid},thread:t};r.postMessage(c)};a.addEventListener(`message`,m),a.addEventListener(`error`,h);let ee={type:`wasm-process-init`,pid:e.pid,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,sab:t,...e.ppid===void 0?{}:{ppid:e.ppid},...e.fork?{fork:e.fork}:{fds:vr(e.fds)}};a.postMessage(ee,e.fork?[e.fork.memory.buffer]:[]);let y=e=>{r.signal(e)===`terminate`&&f(e===z.KILL?137:128+e,e)};return{pid:e.pid,exited:l,kill:(e=137)=>f(e,e>128&&e<160?e-128:void 0),signal:y,termsig:()=>d,onState:e=>r.onState(e)}}var br=class{members=new Map;foreground=new Map;terminals=new Map;add(e,t,n,r){let i=t===void 0?void 0:this.members.get(t);!i&&r&&this.terminals.set(e,r);let a={pid:e,ppid:i?.pid,pgid:i?.pgid??e,sid:i?.sid??e,signal:n};return this.members.set(e,a),a}remove(e){this.members.delete(e)}exec(e,t){let n=this.members.get(t);n&&(n.execParent=e);let r=this.members.get(e);r&&(r.execed=!0)}pgidOf(e){return this.members.get(e)?.pgid}member(e){let t=this.members.get(e);if(!t)throw new g(`ESRCH`);return t}setpgid(e,t,n){let r=this.member(t||e),i=n||r.pid;if(i<0)throw new g(`EINVAL`);let a=this.member(e);if(r.pid!==e){if(r.ppid!==e)throw new g(`ESRCH`);if(r.execed)throw new g(`EACCES`)}if(r.sid!==a.sid||r.pid===r.sid)throw new g(`EPERM`);let o=[...this.members.values()].some(e=>e.pgid===i&&e.sid===r.sid);if(i!==r.pid&&!o)throw new g(`EPERM`);r.pgid=i}getpgid(e,t){return this.member(t||e).pgid}getsid(e,t){return this.member(t||e).sid}setsid(e){let t=this.member(e);if(t.pgid===e)throw new g(`EPERM`);return t.sid=e,t.pgid=e,this.terminals.delete(e),e}terminalNamed(e){return[...new Set([...this.terminals.values(),...this.foreground.keys()])].find(t=>t.name===e)}controllingTerminal(e){let t=this.members.get(e);return t&&(this.terminals.get(t.sid)??null)}acquireTerminal(e,t){let n=this.members.get(e);return!n||n.sid!==e||this.terminals.has(e)||[...this.terminals.values()].includes(t)?!1:(this.terminals.set(e,t),this.foreground.set(t,n.pgid),!0)}killGroup(e,t){let n=[...this.members.values()].filter(t=>t.pgid===e),r=new Set(n.map(e=>e.pid));if(t!==0)for(let e of n)(e.execParent===void 0||!r.has(e.execParent))&&e.signal(t);return n.length>0}tcgetpgrp(e,t){return this.foreground.get(e)??t}tcsetpgrp(e,t,n){let r=this.member(e);if(![...this.members.values()].some(e=>e.pgid===n&&e.sid===r.sid))throw new g(`EPERM`);this.foreground.set(t,n)}signalOwnedForeground(e,t){let n=this.foreground.get(e);n!==void 0&&this.killGroup(n,t)}signalForeground(e,t,n){this.killGroup(this.tcgetpgrp(e,t),n)}};const xr=new Set([`wasi_snapshot_preview1`,`wasix_32v1`,`wasi`,`env`]),Sr={127:`i32`,126:`i64`,125:`f32`,124:`f64`};function Cr(e){let t={at:8,u32(){let n=0,r=0;for(;;){let i=e[t.at++];if(n|=(i&127)<<r,!(i&128))return n>>>0;r+=7}},name(){let n=t.u32(),r=new TextDecoder().decode(e.subarray(t.at,t.at+n));return t.at+=n,r},limits(){let n=e[t.at++];return{initial:t.u32(),maximum:n&1?t.u32():void 0,shared:!!(n&2)}},sections(n){for(;t.at<e.length;){let r=e[t.at++],i=t.u32(),a=t.at+i;if(n(r,a))return;t.at=a}},imports(n){let r=t.u32();for(let i=0;i<r;i++){let r=t.name(),i=t.name(),a=e[t.at++],o=-1;if(a===0)o=t.u32();else if(a===1)t.at++,t.limits();else if(a===2){let e=t.at;if(n(r,i,a,o))return;t.at=e,t.limits();continue}else a===3?t.at+=2:a===4&&(t.at++,t.u32());if(n(r,i,a,o))return}}};return t}function wr(e){let t=Cr(e),n;return t.sections(e=>e===2&&(t.imports((e,r,i)=>i===2&&(n={module:e,name:r,...t.limits()},!0)),!0)),n}function Tr(e){let t=Cr(e),n=[],r={};return t.sections(i=>{if(i===1){let r=t.u32();for(let i=0;i<r;i++){t.at++;let r=t.u32();t.at+=r;let i=t.u32();n.push(i===0?`none`:i===1?Sr[e[t.at]]??`other`:`other`),t.at+=i}return!1}return i===2&&(t.imports((e,t,i,a)=>(i===0&&!xr.has(e)&&((r[e]??={})[t]=n[a]??`other`),!1)),!0)}),r}const Er=/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;function Dr(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=!1,a=i.replace(Er,(n,r)=>{let i=Object.hasOwn(t,r)?t[r]:void 0;return i===void 0&&(e=!0),i??``});e||(n[r]=a)}return n}function Or(e,t){if(!e)return t;let n=Dr(e,t);if(!(t.GIT_CONFIG_SYSTEM!==void 0&&pn(`GIT_CONFIG_SYSTEM`,t.GIT_CONFIG_SYSTEM))||!(`GIT_CONFIG_NOSYSTEM`in n))return{...n,...t};let{GIT_CONFIG_NOSYSTEM:r,...i}=n;return{...i,...t}}function kr(e){return e.USER===void 0||`LOGNAME`in e?e:{...e,LOGNAME:e.USER}}function Ar(e,t){return!/^(ba)?sh$/.test(Q(e))||`BASH_FUNC_secret%%`in t?t:{...t,"BASH_FUNC_secret%%":`() { command secret "$@" || return; local __slicc_env; if __slicc_env=$(command secret shell-env "$@" 2>/dev/null); then eval "$__slicc_env"; fi; return 0; }`}}const Y=new Map,jr=new Map,Mr=new Map(Object.entries(B).map(([e,t])=>[t,e])),X=/^\/(?:usr\/)?bin\/([^/]+)$/,Z=/^(.*\/node_modules\/(?:@[^/]+\/)?[^/]+)\//,Nr=/locateFile\(\s*["']([^"'/]+\.wasm)["']\s*\)/;let Pr=4e4;function Fr(e){return e.glue===e.module}const Ir=[0,97,115,109];function Lr(e){return Ir.every((t,n)=>e[n]===t)}function Rr(e){return e.endsWith(`.js`)?`${e.slice(0,-3)}.wasm`:`${e}.wasm`}async function zr(e,t){let n=e.readFileRange,r;try{r=n?new TextDecoder().decode(await n.call(e,t,0,256)):(await e.readFile(t)).slice(0,256)}catch{return!1}return r.startsWith(`#!`)?he(r)!==`node`:!1}function Br(e){return X.exec(e)?.[1]??Q(e)}function Q(e){return e.slice(e.lastIndexOf(`/`)+1)}function Vr(e){return{exists:t=>e.fs.exists(t),readDir:async t=>(await e.fs.readdir(t)).map(e=>({name:e})),readFile:t=>e.fs.readFile(t)}}function Hr(e){return ie(Vr(e),ne)}function Ur(e,t){return`${e}:${t.size}:${t.mtime.getTime()}`}function Wr(e,t){return Y.set(e,t),t.catch(()=>Y.delete(e)),t}async function Gr(e,t){let n=Ur(t,await e.fs.stat(t));return Y.get(n)??Wr(n,ce(t=>e.fs.readFileBuffer(t),t))}function Kr(e,t){return jr.set(e,{memory:wr(t),foreign:Tr(t)}),Wr(e,se(t))}async function qr(e,t){let n=Ur(t,await e.fs.stat(t)),r=Y.get(n),i=await(r&&jr.has(n)?r:Kr(n,await e.fs.readFileBuffer(t))),{memory:a,foreign:o={}}=jr.get(n)??{};return{module:i,foreign:o,...a?{memory:a}:{}}}async function Jr(e,t,n){if(WebAssembly.Module.customSections(n,`name`).length>0)return;let r=`${t}.names`;if(await e.fs.exists(r))return r;let i=Z.exec(t)?.[1];if(i===void 0)return;let a=`${i}-names${r.slice(i.length)}`;return await e.fs.exists(a)?a:void 0}async function Yr(e,t){let n;try{let r=await e.fs.stat(t);if(!r.isFile)return!1;n=Ur(t,r)}catch{return!1}if(Y.has(n))return!0;let r;try{r=await e.fs.readFileBuffer(t)}catch{return!1}return Lr(r)?(Kr(n,r).catch(()=>void 0),!0):!1}function Xr(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return t}function Zr(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}async function Qr(e){if(!e.file.read)return new Uint8Array;let t=[],n=0;for(let r=await e.file.read(65536);r.length>0;)t.push(r),n+=r.length,r=await e.file.read(65536);let r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.length;return r}async function $(e,t,n){if(n.length===0||!e.has(t))return;let r=e.get(t).file;try{await r.write?.(n)}catch{}}function $r(e,t){return e.has(t)&&e.get(t).file.tty!==void 0}function ei(e){return{...$r(e,0)?{}:{[ee]:`0`},...$r(e,1)?{}:{[h]:`0`}}}function ti(e){return{pid:e.pid,exited:e.exited,termsig:e.termsig,onState:t=>e.onState(t)}}const ni=new WeakMap;var ri=class{ctx;processConfig;onError;gate;lookup;live=new Set;shellChildren=new Set;wasmByPid=new Map;shellByPid=new Map;installed;jobs=new br;ptys=new Hn((e,t)=>this.jobs.signalOwnedForeground(e,t));leader;net;constructor(e,t,n,r,i){this.ctx=e,this.processConfig=t,this.onError=n,this.gate=r,this.lookup=i,this.net=wn(Tn(t?.owner));let a=Tn(t?.owner);hn(this.net,{process:t,tls:{owner:a}})}commands(){return this.lookup?this.lookup():(this.installed??=Hr(this.ctx),this.installed)}async launch(e){let t=Fr(e),n=``,r,i,a={};try{t?{module:r,memory:i,foreign:a}=await qr(this.ctx,e.module):(n=await this.ctx.fs.readFile(e.glue),r=await Gr(this.ctx,e.module)),e.signal?.throwIfAborted()}catch(t){throw await e.fds.closeAll(),t}let o=Ar(e.argv0,kr(Or(e.defaults,e.env)));t&&await this.pythonPackages(e,o);let s=t&&o.SLICC_WASM_BACKTRACE===`1`?await Jr(this.ctx,e.module,r):void 0;return this.start({...e,env:o,program:t?{abi:`wasi`,glue:n,module:r,...i?{memory:i}:{},...Object.keys(a).length?{foreign:a}:{},...s?{names:s}:{}}:{glue:n,module:r}})}async pythonPackages(e,t){let n=Z.exec(e.module)?.[1];if(n)try{let r=Vr(this.ctx),i=await r.readFile(`${n}/package.json`,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i)),o=typeof a.name==`string`?a.name:n,s=ae(n,o,a.slicc?.python).interpreter;if(!s)return;let{packages:c}=await this.pythonScan(r),l=await re(this.ctx.fs,t.HOME??`/home`,s,c);if(l.length>0){let t=`${s.abi}-${s.platform}`,n=`${e.argv0}: not for ${t}, left off the path: ${l.map(e=>e.pkg).join(`, `)}\n`;await $(e.fds,2,new TextEncoder().encode(n))}}catch{}}pythonScan(e){return this.commands().then(t=>{let n=ni.get(t);return n||(n=oe(e,ne),ni.set(t,n)),n})}start(e){let t=this.processConfig?.processManager,{pid:n}=this.register(`wasm`,[e.argv0,...e.args],e.cwd,e.env,e.ppid),r=e.fds.stdioTerminal(),i=yr({pid:n,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,fds:e.fds,fs:this.ctx.fs,onError:this.onError,spawner:this.spawner(n),forker:this.forker(n,e),kill:(e,t)=>this.kill(e,t),jobs:this.jobs,ptys:this.ptys,net:this.net,...e.fork?{fork:e.fork}:{},...e.ppid===void 0?{}:{ppid:e.ppid}});this.live.add(i),this.wasmByPid.set(n,i),this.leader??=n,this.jobs.add(n,e.ppid,e=>i.signal(e),r);let a=t?.onSignal((e,t)=>{e.pid===n&&i.signal(B[t])});return i.exited.then(e=>{this.live.delete(i),this.wasmByPid.delete(n),this.jobs.remove(n),a?.(),this.processConfig&&t?.exit(n,e)}),i}kill(e,t){if(e<0)return this.jobs.killGroup(-e,t);let n=this.wasmByPid.get(e);if(n)return t!==0&&n.signal(t),!0;let r=this.shellByPid.get(e);if(r)return t!==0&&r(t),!0;let i=this.processConfig?.processManager;if(!i)return!1;if(t===0)return i.get(e)!==null;let a=Mr.get(t);return a===void 0?!1:this.gate?this.killOutside(e,a):i.signal(e,a)}async killOutside(e,t){if(await this.gate?.(`kill`,[`-${t.slice(3)}`,String(e)],{}))throw new g(`EPERM`);return this.processConfig?.processManager.signal(e,t)??!1}listen(e){return new v(this.net.listen(e))}signalAll(e){for(let t of this.live)t.signal(e)}signalTerminal(e,t){this.leader!==void 0&&this.jobs.signalForeground(e,this.leader,t)}killAll(e){for(let t of this.live)t.kill(e);for(let e of this.shellChildren)e.abort()}async resolve(e,t,n){let r=X.exec(e)?.[1]??(e.includes(`/`)?void 0:e);if(r!==void 0){let e=await this.commands(),t=e.get(r);if(t?.script)return;if(t)return{glue:t.glue,module:t.wasm,argv0:t.argv0,...t.args?{prefixArgs:t.args}:{},defaults:t.env};let n=r===`sh`?e.get(`bash`):void 0;return n&&{glue:n.glue,module:n.wasm,argv0:`sh`,defaults:n.env}}let i=this.ctx.fs.resolvePath(n,e);if(!await this.ctx.fs.exists(i)||await zr(this.ctx.fs,i))return;let a=Rr(i);return await this.ctx.fs.exists(a)?{glue:i,module:a,argv0:Q(t||e)}:await Yr(this.ctx,i)?{glue:i,module:i,argv0:Q(t||e).replace(/\.wasm$/,``)}:this.packagedCopy(i,t||e)}async packagedCopy(e,t){let n=Z.exec(e)?.[1];if(n===void 0)return;let r;try{r=await this.ctx.fs.readFile(e)}catch{return}let i=Nr.exec(r)?.[1];if(i!==void 0){for(let e of(await this.commands()).values())if(e.wasm.startsWith(`${n}/`)&&e.wasm.endsWith(`/${i}`))return{glue:e.glue,module:e.wasm,argv0:Q(t),defaults:e.env}}}forker(e,t){return async(n,r)=>ti(this.start({...t,cwd:n.cwd??t.cwd,fds:r,ppid:e,fork:n}))}async scriptCommand(e){let t=X.exec(e)?.[1]??(e.includes(`/`)?void 0:e);if(t===void 0)return;let n=(await this.commands()).get(t);return n?.script?n:void 0}async interpreted(e){let t=await this.scriptCommand(e.file);if(!t&&(!e.file.includes(`/`)||X.test(e.file)))return;let n=t?.script??this.ctx.fs.resolvePath(e.cwd,e.file),r;try{r=(await this.ctx.fs.readFileBuffer(n)).subarray(0,256)}catch{return}if(r[0]!==35||r[1]!==33)return;let[i,...a]=new TextDecoder().decode(r).slice(2).split(`
11
+ `)),this.readable.push(Uint8Array.from(this.line)),this.line=[]):(this.line.push(e),t&&this.echo(e))}lastWordLength(){let e=this.line.length;for(;e>0&&this.line[e-1]===32;)e--;for(;e>0&&this.line[e-1]!==32;)e--;return this.line.length-e}lastCharLength(){let{line:e}=this,t=Math.min(1,e.length);if(this.termios.c_iflag&jn)for(;t<e.length&&Pn(e[e.length-t]??0);)t++;return t}rubOut(e){let t=this.line.splice(this.line.length-e,e),n=this.termios.c_iflag&jn?t.filter(e=>!Pn(e)).length:t.length;n>0&&this.termios.c_lflag&8&&this.output(Nn.encode(`\b \b`.repeat(n)),!1)}echo(e){if(e<32&&e!==10&&e!==9&&this.termios.c_lflag&512){this.output(Uint8Array.of(94,e+64),!1);return}this.output(Uint8Array.of(e))}output(e,t=!0){let{c_oflag:n}=this.termios;if(!t||!(n&1&&n&4)||!e.includes(10)){this.screen.write(e);return}let r=[];for(let t of e)t===10&&r.push(13),r.push(t);this.screen.write(Uint8Array.from(r))}async read(e,t){for(;this.readable.length===0;){if(this.hungUp)return new Uint8Array;await this.changed(t)}let n=this.readable[0];if(n===null)return this.readable.shift(),new Uint8Array;if(n===void 0)return new Uint8Array;let r=[],i=0;for(;this.readable.length>0&&i<e;){let t=this.readable[0];if(t==null)break;let n=t.subarray(0,e-i);if(r.push(n),i+=n.length,n.length<t.length?this.readable[0]=t.subarray(n.length):this.readable.shift(),this.canonical)break}let a=new Uint8Array(i),o=0;for(let e of r)a.set(e,o),o+=e.length;return a}changed(e){return e?.aborted?Promise.reject(new g(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new g(`EINTR`))},i=()=>{e?.removeEventListener(`abort`,r),t()};this.waiters.push(i),e?.addEventListener(`abort`,r,{once:!0})})}wake(){let e=this.waiters;this.waiters=[];for(let t of e)t()}},V=class extends Error{code;constructor(e){super(e),this.code=e}};function In(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new g(`EINTR`)),e?.aborted?t():e?.addEventListener(`abort`,t,{once:!0})}),done:()=>e?.removeEventListener(`abort`,t)}}function Ln(e){return(e&255)<<8|127}function Rn(e,t){return t?t&127:(e&255)<<8}function zn(e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}var Bn=class{parentFds;spawner;forker;children=new Map;leftovers=new Map;onChildState;stateChanged=[];watchers=new Map;constructor(e,t,n){this.parentFds=e,this.spawner=t,this.forker=n}async fork(e){if(!this.forker)throw new V(`ENOSYS`);return this.track(e,this.parentFds.fork(),new Map,this.forker)}async spawn(e,t,n=[]){if(!this.spawner)throw new V(`ENOSYS`);let r=new s,i=new Map;try{for(let[e,n]of t.entries())r.installAt(e,this.openSlot(n,e,i));for(let e of n)if(!(e.fd<=2)){if(`device`in e){r.installAt(e.fd,p(e.device,e.access));continue}r.installAt(e.fd,this.parentFds.get(e.kernel).retain()),e.flags!==void 0&&r.setStatusFlags(e.fd,e.flags)}}catch(e){throw await r.closeAll(),e}return this.track(e,r,i,this.spawner)}async track(e,t,n,r){let i;try{i=await r(e,t)}catch(e){throw await t.closeAll(),e}let a={exited:i.exited,termsig:i.termsig,captured:n};return i.exited.then(e=>{a.code=e,this.watchers.delete(i.pid),this.onChildState?.()}),i.onState?.((e,t)=>{a.stopReport=e===`stopped`?t:void 0,a.continueReport=e===`continued`,this.watchers.get(i.pid)?.(e,t);let n=this.stateChanged;this.stateChanged=[];for(let e of n)e();this.onChildState?.()}),this.children.set(i.pid,a),i.pid}watch(e,t){this.children.has(e)&&this.watchers.set(e,t)}openSlot(e,t,n){if(`fd`in e)return this.parentFds.get(e.fd).retain();if(`input`in e)return c(e.input);if(`capture`in e){let e=[];return n.set(t,e),f(t=>e.push(t))}return u()}async wait(e,t,n,r={}){let i;try{for(;;){let a=this.candidates(e,r);if(a.length===0)throw new g(`ECHILD`);let o=a.find(([,e])=>e.code!==void 0);if(o)return this.reap(o[0],o[1].code);let s=this.stateReport(a,r);if(s)return s;if(t)return[0,0];i??=In(n),await this.nextChange(a,r,i.promise)}}finally{i?.done()}}candidates(e,t){let n=[...this.children];if(e>0)return n.filter(([t])=>t===e);let r=t.inGroup;return e===-1||!r?n:n.filter(([e])=>r(e))}async nextChange(e,t,n){let r,i=new Promise(e=>r=e),a=t.untraced||t.continued;a&&r&&this.stateChanged.push(r);try{await Promise.race([...e.map(([,e])=>e.exited),...a?[i]:[],n])}finally{this.stateChanged=this.stateChanged.filter(e=>e!==r)}}stateReport(e,t){for(let[n,r]of e){if(t.untraced&&r.stopReport!==void 0){let e=r.stopReport;return r.stopReport=void 0,[n,Ln(e)]}if(t.continued&&r.continueReport)return r.continueReport=!1,[n,65535]}return null}reap(e,t){let n=this.children.get(e);return this.children.delete(e),n&&n.captured.size>0&&this.leftovers.set(e,n.captured),[e,Rn(t,n?.termsig?.())]}captured(e,t){let n=this.leftovers.get(e),r=n?.get(t);return!n||!r?new Uint8Array:(n.delete(t),n.size===0&&this.leftovers.delete(e),zn(r))}},Vn=class{index;onFree;slave;locked=!0;packet=!1;queue=[];waiters=[];masterOpen=!0;slaveRefs=0;slaveSeen=!1;constructor(e,t,n){this.index=e,this.onFree=n,this.slave=new Fn({write:e=>this.fromSlave(e)},e=>t(this.slave,e)),this.slave.name=`/dev/pts/${e}`}master(){return new v({read:(e,t)=>this.readMaster(e,t),write:async e=>(this.slave.receive(e),e.length),poll:()=>({readable:this.queue.length>0||this.slaveGone,writable:!0,hangup:this.slaveGone}),changed:e=>this.changed(e),close:()=>this.closeMaster(),pty:this})}openSlave(){if(!this.masterOpen||this.locked)throw new g(`EIO`);let e=this.slave.file().file;return this.slaveRefs+=1,this.slaveSeen=!0,new v({...e,close:()=>this.closeSlave()})}get slaveGone(){return this.slaveSeen&&this.slaveRefs===0}fromSlave(e){this.masterOpen&&(this.queue.push(e.slice()),this.wake())}async readMaster(e,t){for(;this.queue.length===0;){if(this.slaveGone)throw new g(`EIO`);await this.changed(t)}let n=+!!this.packet,r=[],i=0;for(;this.queue.length>0&&i<e-n;){let t=this.queue[0],a=t.subarray(0,e-n-i);r.push(a),i+=a.length,a.length<t.length?this.queue[0]=t.subarray(a.length):this.queue.shift()}let a=new Uint8Array(n+i),o=n;for(let e of r)a.set(e,o),o+=e.length;return a}closeMaster(){this.masterOpen=!1,this.queue=[],this.slave.hangup(),this.slave.signalHangup(),this.freeIfUnused()}closeSlave(){--this.slaveRefs,this.wake(),this.freeIfUnused()}freeIfUnused(){!this.masterOpen&&this.slaveRefs===0&&this.onFree(this)}changed(e){return e?.aborted?Promise.reject(new g(`EINTR`)):new Promise((t,n)=>{let r=()=>{this.waiters=this.waiters.filter(e=>e!==i),n(new g(`EINTR`))},i=()=>{e?.removeEventListener(`abort`,r),t()};this.waiters.push(i),e?.addEventListener(`abort`,r,{once:!0})})}wake(){let e=this.waiters;this.waiters=[];for(let t of e)t()}},Hn=class{signal;pairs=new Map;constructor(e){this.signal=e}open(){let e=0;for(;this.pairs.has(e);)e+=1;let t=new Vn(e,this.signal,e=>this.pairs.delete(e.index));return this.pairs.set(e,t),{pair:t,master:t.master()}}get(e){let t=this.pairs.get(e);if(!t)throw new g(`ENOENT`);return t}numbers(){return[...this.pairs.keys()].sort((e,t)=>e-t)}};const Un=[`pty-open`,`pty-slave-open`,`pty-number`,`pty-lock`,`pty-ctty`,`pty-packet`,`pty-list`,`pty-winsz-set`];function H(e,t){let n=e.fds.get(t).file.pty;if(!n)throw new g(`ENOTTY`);return n}function Wn(e,t){let n=e.fds.get(t).file,r=n.tty??n.pty?.slave;if(!r)throw new g(`ENOTTY`);return r}const U=e=>({ok:!0,kind:`json`,json:e}),W={ok:!0,kind:`void`};function Gn(e,t){switch(e.op){case`pty-open`:if(!t.ptys)throw new g(`ENOENT`);return U(t.fds.install(t.ptys.open().master,3));case`pty-slave-open`:{if(!t.ptys)throw new g(`ENOENT`);let n=t.ptys.get(e.n),r=t.fds.install(n.openSlave(),3);return e.noctty||t.jobs?.acquireTerminal(t.pid,n.slave),U(r)}case`pty-number`:return U(H(t,e.fd).index);case`pty-lock`:return H(t,e.fd).locked=e.lock,W;case`pty-ctty`:{let n=Wn(t,e.fd);if(t.jobs?.getsid(t.pid,0)===t.pid&&t.jobs?.controllingTerminal(t.pid)===n)return W;if(!t.jobs?.acquireTerminal(t.pid,n))throw new g(`EPERM`);return W}case`pty-list`:return U(t.ptys?.numbers()??[]);case`pty-packet`:return H(t,e.fd).packet=e.on,W;case`pty-winsz-set`:return Wn(t,e.fd).resize(e.cols,e.rows),W}}function Kn(e,t,n){let r=new Set,i=(t,n)=>t.filter(t=>{let i=m(e.get(t).file);return i.hangup&&r.add(t),i[n]||i.hangup}),a={read:i(t,`readable`),write:i(n,`writable`)};return r.size>0&&(a.hangup=[...r]),a}function qn(e){let t=()=>{};return{promise:new Promise((n,r)=>{t=()=>r(new g(`EINTR`)),e.aborted?t():e.addEventListener(`abort`,t,{once:!0})}),done:()=>e.removeEventListener(`abort`,t)}}async function Jn(e,t,n,r,i){let a=r<0?1/0:Date.now()+r,o=qn(i);o.promise.catch(()=>{});try{return await Yn(e,t,n,a,o.promise)}finally{o.done()}}async function Yn(e,t,n,r,i){for(;;){let a=Kn(e,t,n);if(a.read.length>0||a.write.length>0||Date.now()>=r)return a;let o=new AbortController,s=[...new Set([...t,...n])].flatMap(t=>{let n=e.get(t).file;return n.changed===void 0?[]:[n.changed(o.signal).catch(()=>void 0)]}),c,l=r===1/0?[]:[new Promise(e=>c=setTimeout(e,r-Date.now()))];try{await Promise.race([...s,...l,i])}finally{o.abort(),clearTimeout(c)}}}const Xn=[`sock-open`,`sock-pair`,`sock-bind`,`sock-listen`,`sock-accept`,`sock-connect`,`sock-shutdown`,`sock-name`,`sock-getopt`,`sock-setopt`];function G(e,t){let n=e.get(t).file;if(!(n instanceof L))throw new g(`ENOTSOCK`);return n}const K=e=>e===void 0?{ok:!0,kind:`void`}:{ok:!0,kind:`json`,json:e};async function Zn(e,t){let{fds:n,net:r}=t;switch(e.op){case`sock-open`:return K(n.install(new v(r.socket(e.domain)),3));case`sock-pair`:{let[t,i]=L.pair(r,e.domain),a=n.install(new v(t),3);try{return K([a,n.install(new v(i),3)])}catch(e){throw await Promise.resolve(n.close(a)),e}}case`sock-bind`:return G(n,e.fd).bind(e.addr),K();case`sock-listen`:return G(n,e.fd).listen(e.backlog),K();case`sock-accept`:return K(await $n(t,e.fd,e.nonblock));case`sock-connect`:if(G(n,e.fd).connect(e.addr),e.nonblock)throw new g(`EINPROGRESS`);return K();case`sock-shutdown`:return G(n,e.fd).shutdown(e.how),K();case`sock-name`:{let t=G(n,e.fd),r=e.peer?t.peer:t.local;if(e.peer&&!r)throw new g(`ENOTCONN`);return K(r??Qn(t.domain))}case`sock-getopt`:return K(G(n,e.fd).getOption(e.level,e.name));case`sock-setopt`:return G(n,e.fd).setOption(e.level,e.name,e.value),K()}}function Qn(e){return e===`inet`?{family:`inet`,host:`0.0.0.0`,port:0}:{family:`unix`,path:``}}async function $n(e,t,n){let r=G(e.fds,t),i=!n&&!m(r).readable,a=await r.accept(i?e.blocking():void 0,n);return{fd:e.fds.install(new v(a),3),peer:a.peer}}function er(e){return e?.code===`ENOENT`||e instanceof Error&&e.message.startsWith(`ENOENT`)}function q(e,t){return e===t||e.startsWith(t.endsWith(`/`)?t:`${t}/`)}var J=class{fs;path;orphaned;data;length=0;dirty=!1;queue=Promise.resolve();writeBack;writeBackCost=0;opens=0;missing=!1;constructor(e,t,n,r=!1,i=!1){this.fs=e,this.path=t,this.orphaned=r,n===void 0?r&&(this.data=new Uint8Array):this.data=new Uint8Array(n),this.length=this.data?.length??0,i&&n!==void 0&&this.markDirty()}serial(e){let t=this.queue.then(e);return this.queue=t.catch(()=>void 0),t}async load(){if(!this.data){try{this.data=await ue(this.fs,this.path)}catch(e){if(!er(e))throw e;this.data=new Uint8Array,this.missing=!0}this.length=this.data.length}return this.data}replace(e){this.data=new Uint8Array(e),this.length=this.data.length,this.missing=!1,this.markDirty()}async materialize(){await this.load(),!(!this.missing||this.orphaned)&&(this.missing=!1,await this.fs.writeFile(this.path,this.data?.slice(0,this.length)??new Uint8Array))}async size(){return await this.load(),this.length}async pread(e,t){let n=await this.load(),r=Math.max(0,Math.min(e,this.length-t));return n.slice(t,t+r)}async pwrite(e,t){await this.load();let n=this.ensure(t+e.length);return t>this.length&&n.fill(0,this.length,t),n.set(e,t),this.length=Math.max(this.length,t+e.length),this.markDirty(),e.length}async truncate(e){await this.load();let t=this.ensure(e);e>this.length&&t.fill(0,this.length,e),this.length=e,this.markDirty()}markDirty(){if(this.dirty=!0,this.writeBack!==void 0||this.orphaned)return;let e=Math.max(250,this.writeBackCost*10);this.writeBack=setTimeout(()=>{this.writeBack=void 0,this.serial(()=>this.flush()).catch(()=>void 0)},e)}ensure(e){let t=this.data??new Uint8Array;if(t.length>=e)return t;let n=new Uint8Array(Math.max(e,t.length*2,256));return n.set(t.subarray(0,this.length)),this.data=n,n}async flush(){if(!this.dirty||!this.data||this.orphaned)return;this.dirty=!1;let e=performance.now();try{await this.fs.writeFile(this.path,this.data.slice(0,this.length))}catch(e){throw this.dirty=!0,e}this.writeBackCost=performance.now()-e}},tr=class{fs;byPath=new Map;constructor(e){this.fs=e}open(e){let t=this.byPath.get(e);return t||(t=new J(this.fs,e),this.byPath.set(e,t)),t.opens++,t}adopt(e,t,n){let r=this.byPath.get(e);return r?n&&r.replace(t):(r=new J(this.fs,e,t,!1,n),this.byPath.set(e,r)),r.opens++,r}closed(e){e.opens--,e.opens===0&&this.byPath.get(e.path)===e&&this.byPath.delete(e.path)}async flush(e){for(let[t,n]of this.byPath)q(t,e)&&await n.serial(()=>n.flush())}async unlinking(e){let t=this.byPath.get(e);t&&await t.serial(()=>t.load())}unlinked(e){let t=this.byPath.get(e);t&&(t.orphaned=!0,this.byPath.delete(e))}renamed(e,t){if(e===t)return;let n=[];for(let[r,i]of this.byPath)q(r,e)?n.push(i):q(r,t)&&(i.orphaned=!0,this.byPath.delete(r));for(let r of n)this.byPath.delete(r.path),r.path=t+r.path.slice(e.length),this.byPath.set(r.path,r)}};function nr(e,t,n){let r=t.flags&3,i=r!==1,a=r===1||r===2,o=!n||t.orphan?new J(e,t.path,t.contents,t.orphan===!0,t.dirty===!0):t.contents===void 0?n.open(t.path):n.adopt(t.path,t.contents,t.dirty===!0),s,c=e=>{o.serial(e).catch(e=>{s??={err:e}})};t.create&&c(()=>o.materialize()),t.truncate&&c(()=>o.truncate(0));let l=()=>{if(!s)return;let{err:e}=s;throw s=void 0,e},u=t.position,d=e=>o.serial(()=>(l(),e()));return new v({read:i?e=>d(async()=>{let t=await o.pread(e,u);return u+=t.length,t}):void 0,write:a?e=>d(async()=>(t.flags&1024&&(u=await o.size()),u+=await o.pwrite(e,u),e.length)):void 0,seek:(e,t)=>d(async()=>{let n=0;if(t===1)n=u;else if(t===2)n=await o.size();else if(t!==0)throw new g(`EINVAL`);if(n+e<0)throw new g(`EINVAL`);return u=n+e,u}),pread:(e,t)=>d(()=>{if(!i)throw new g(`EBADF`);return o.pread(e,t)}),pwrite:(e,t)=>d(()=>{if(!a)throw new g(`EBADF`);return o.pwrite(e,t)}),resize:e=>d(()=>{if(!a)throw new g(`EBADF`);return o.truncate(e)}),stat:()=>d(async()=>({path:o.path,size:await o.size(),...o.orphaned?{orphan:!0}:{}})),flush:()=>d(()=>o.flush()),close:()=>o.serial(async()=>{try{l(),await o.flush()}finally{n?.closed(o)}})})}const rr=new Set([`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`]);function ir(e){return rr.has(e.op)}function ar(e){return e.op.startsWith(`pty-`)}function or(e){return e.op.startsWith(`sock-`)}function sr(e){return e.op.startsWith(`fd-path-`)||e.op===`fd-pread`||e.op===`fd-pwrite`||e.op===`fd-resize`||e.op===`fd-vfs-stat`}function cr(e){return e.op.startsWith(`fd-`)}function lr(e){return e.op.startsWith(`tty-`)}const ur=new Set([`fd-read`,`fd-write`,`fd-close`,`fd-pipe`,`fd-poll`,`fd-open-vfs`,`fd-seek`,`fd-pread`,`fd-pwrite`,`fd-resize`,`fd-vfs-stat`,`fd-path-flush`,`fd-path-unlinking`,`fd-path-unlinked`,`fd-path-renamed`,`fd-select`,`fd-info`,`fd-dup`,`fd-reserve`,`fd-meta`,`fd-setfl`,`fd-cloexec`,`fd-list`,`dl-log`,`proc-alarm`,`fd-renumber`,`fd-promote`,`fd-open-tty`,`tty-get`,`tty-set`,`tty-winsz`,`fd-flush`,`proc-spawn`,`proc-wait`,`proc-captured`,`proc-fork`,`proc-kill`,`proc-exec`,`proc-setpgid`,`proc-getpgid`,`proc-getsid`,`proc-setsid`,`tty-pgrp-get`,`tty-pgrp-set`,`sig-mask`,`sig-pause`,...Xn,...Un]);function dr(e){let t=e.op;return typeof t==`string`&&ur.has(t)}const fr=1048576;var pr=class{pid;fds;options;exited=!1;children;caught=0;ignored=0;interrupt=new AbortController;execChild;execTermsig;stopped=0;stops=0;resumed=Promise.resolve();wake=()=>{};stateListeners=[];net;nodes;constructor(e,t,n={}){this.pid=e,this.fds=t,this.options=n,this.children=new Bn(t,n.spawner,n.forker),this.nodes=n.fs?new tr(n.fs):void 0,this.children.onChildState=()=>this.signal(z.CHLD)}signal(e){if(this.execChild!==void 0)return Promise.resolve(this.options.kill?.(this.execChild,e)).catch(()=>void 0),e===z.KILL?`terminate`:`forward`;if(e===z.KILL)return`terminate`;if(e===z.CONT&&this.cont(),e===z.STOP)return this.stop(e);let t=An(e);if(this.ignored&t)return`ignore`;if(!(this.caught&t)){let t=On(e);return t===`stop`?this.stop(e):t}let n=On(e);if(((this.options.pendingBits?.()??0)&t)!==0&&n===`terminate`)return n;this.options.onPending?.(e);let r=this.interrupt;return this.interrupt=new AbortController,r.abort(),`deliver`}onState(e){this.stateListeners.push(e)}stop(e){if(this.stopped)return`stop`;this.stopped=e,this.stops++,this.resumed=new Promise(e=>this.wake=e);let t=this.interrupt;this.interrupt=new AbortController,t.abort();for(let t of this.stateListeners)t(`stopped`,e);return`stop`}cont(){if(this.stopped){this.stopped=0,this.wake();for(let e of this.stateListeners)e(`continued`,z.CONT)}}async syscall(e){for(;;){await this.resumed;let t=this.stops,n=await this.dispatch(e);if(!(!n.ok&&n.errno===`EINTR`&&this.stops!==t&&!this.options.hasPending?.()))return await this.resumed,n}}async dispatch(e){try{if(cr(e))return await this.fdSyscall(e);if(lr(e))return this.ttySyscall(e);if(ir(e))return this.jobSyscall(e);if(or(e))return await this.socketSyscall(e);if(ar(e)){let{ptys:t,jobs:n}=this.options;return Gn(e,{pid:this.pid,fds:this.fds,ptys:t,jobs:n})}return await this.procSyscall(e)}catch(e){if(e instanceof g||e instanceof V)return{ok:!1,errno:e.code,message:e.code};throw e}}blockingSignal(){if(this.options.hasPending?.())throw new g(`EINTR`);return this.interrupt.signal}async read(e){let t=this.fds.get(e.fd).file,n=e.peek?t.peek:t.read;if(!n)throw new g(e.peek&&t.read?`EOPNOTSUPP`:`EBADF`);if(t.tty&&this.checkForeground(t.tty),e.max<=0)return new Uint8Array;let r=m(t).readable;if(!r&&e.nonblock)throw new g(`EAGAIN`);let i=r?this.interrupt.signal:this.blockingSignal();return n.call(t,Math.max(0,Math.min(e.max,fr)),i)}async write(e,t,n=!1){let r=this.fds.get(e).file;if(!r.write)throw new g(`EBADF`);if(!m(r).writable){if(n)throw new g(`EAGAIN`);return r.write(t,this.blockingSignal())}return n?r.write(t,AbortSignal.abort()):r.write(t,this.options.hasPending?.()?AbortSignal.abort():this.interrupt.signal)}openVfsFile(e){if(!this.options.fs)throw new V(`ENOSYS`);return nr(this.options.fs,{path:e.path,flags:e.flags,position:e.position,...e.contents===void 0?{}:{contents:e.contents},...e.orphan?{orphan:!0}:{},...e.truncate?{truncate:!0}:{},...e.create?{create:!0}:{}},this.nodes)}async fdSyscall(e){if(sr(e))return this.vfsSyscall(e);switch(e.op){case`fd-read`:return{ok:!0,kind:`bytes`,bytes:await this.read(e)};case`fd-write`:return{ok:!0,kind:`json`,json:await this.write(e.fd,e.body,e.nonblock)};case`fd-close`:return await Promise.resolve(this.fds.close(e.fd)),{ok:!0,kind:`void`};case`fd-pipe`:{let e=_(),t=this.fds.install(e.read,3),n;try{n=this.fds.install(e.write,3)}catch(e){throw await Promise.resolve(this.fds.close(t)),e}return{ok:!0,kind:`json`,json:[t,n]}}case`fd-poll`:return{ok:!0,kind:`json`,json:m(this.fds.get(e.fd).file)};case`fd-open-vfs`:return{ok:!0,kind:`json`,json:this.fds.install(this.openVfsFile(e),3)};case`fd-info`:return{ok:!0,kind:`json`,json:this.fdInfo(e.fd)};case`fd-list`:return{ok:!0,kind:`json`,json:this.fds.numbers().map(e=>({fd:e,...this.fdInfo(e)}))};case`fd-meta`:{let t=this.fds.get(e.fd).file;if(!t.held)throw new g(`EBADF`);return t.heldMeta=e.meta,{ok:!0,kind:`void`}}case`fd-setfl`:return this.fds.setStatusFlags(e.fd,e.flags),{ok:!0,kind:`void`};case`fd-cloexec`:return e.on?this.fds.setCloseOnExec(e.fd):this.fds.clearCloseOnExec(e.fd),{ok:!0,kind:`void`};case`fd-dup`:return{ok:!0,kind:`json`,json:this.fds.dup(e.fd,e.min??3)};case`fd-reserve`:return{ok:!0,kind:`json`,json:this.reserve(e.fd,e.min,e.meta)};case`fd-promote`:return this.promote(e),{ok:!0,kind:`void`};case`fd-renumber`:return e.from!==e.to&&(this.fds.dup2(e.from,e.to),e.keep||await Promise.resolve(this.fds.close(e.from))),{ok:!0,kind:`void`};case`fd-open-tty`:{let t=e.name===void 0?this.controllingTerminal():this.options.jobs?.terminalNamed(e.name);if(!t)throw new g(`ENXIO`);return{ok:!0,kind:`json`,json:this.fds.install(t.file(),3)}}case`fd-select`:{let{read:t,write:n,timeoutMs:r}=e,i=this.blockingSignal();return{ok:!0,kind:`json`,json:await Jn(this.fds,t,n,r,i)}}case`fd-seek`:{let t=this.fds.get(e.fd).file;if(!t.seek)throw new g(`ESPIPE`);return{ok:!0,kind:`json`,json:await t.seek(e.offset,e.whence)}}case`fd-flush`:{let t=this.fds.get(e.fd).file;return t.flush&&await t.flush(),{ok:!0,kind:`void`}}}}async vfsSyscall(e){if(`path`in e||`from`in e){let t=this.nodes;return e.op===`fd-path-flush`?await t?.flush(e.path):e.op===`fd-path-unlinking`?await t?.unlinking(e.path):e.op===`fd-path-unlinked`?t?.unlinked(e.path):e.op===`fd-path-renamed`&&t?.renamed(e.from,e.to),{ok:!0,kind:`void`}}let t=this.fds.get(e.fd).file;if(!t.pread||!t.pwrite||!t.resize||!t.stat)throw new g(`ESPIPE`);switch(e.op){case`fd-pread`:return{ok:!0,kind:`bytes`,bytes:await t.pread(Math.min(e.max,fr),e.offset)};case`fd-pwrite`:return{ok:!0,kind:`json`,json:await t.pwrite(e.body,e.offset)};case`fd-resize`:return await t.resize(e.size),{ok:!0,kind:`void`};case`fd-vfs-stat`:return{ok:!0,kind:`json`,json:await t.stat()}}}promote(e){if(!this.fds.get(e.fd).file.held)throw new g(`EBADF`);if(e.share!==void 0){this.fds.dup2(e.share,e.fd);return}if(!this.options.fs||e.path===void 0)throw new g(`EINVAL`);let t=nr(this.options.fs,{path:e.path,flags:e.flags??0,position:e.position??0,...e.contents===void 0?{}:{contents:e.contents},...e.orphan?{orphan:!0}:{},...e.dirty?{dirty:!0}:{}},this.nodes);this.fds.installAt(e.fd,t)}reserve(e,t=3,n){if(e===void 0)return this.fds.install(y(n),Math.max(3,t));if(this.fds.has(e))throw new g(`EBADF`);return this.fds.installAt(e,y(n)),e}fdInfo(e){let t=this.fds.get(e).file,n=this.fds.statusFlags(e);return{tty:t.tty!==void 0,kind:t instanceof L?`socket`:l(t),...t.heldMeta?{meta:t.heldMeta}:{},...n===void 0?{}:{flags:n},...this.fds.closesOnExec(e)?{cloexec:!0}:{},...t.tty?.name?{name:t.tty.name}:t.pty?{name:`/dev/ptmx`}:{}}}ttySyscall(e){let t=this.tty(e.fd),n=this.options.jobs;switch(e.op){case`tty-get`:return{ok:!0,kind:`json`,json:t.tcgets()};case`tty-set`:return t.tcsets(e.termios),{ok:!0,kind:`void`};case`tty-winsz`:return{ok:!0,kind:`json`,json:t.winsize()};case`tty-pgrp-get`:return{ok:!0,kind:`json`,json:n?n.tcgetpgrp(t,this.sid()):this.pid};case`tty-pgrp-set`:if(n)n.tcsetpgrp(this.pid,t,e.pgrp);else if(e.pgrp!==this.pid)throw new g(`EPERM`);return{ok:!0,kind:`void`}}}checkForeground(e){let t=this.options.jobs;if(!t)return;let n=t.controllingTerminal(this.pid);if(n!==void 0&&n!==e)return;let r=this.pgid();if(t.tcgetpgrp(e,this.sid())!==r)throw this.ignored&An(z.TTIN)?new g(`EIO`):(t.killGroup(r,z.TTIN),new g(`EINTR`))}waitGroup(e){let t=this.options.jobs;if(!t||e>0||e===-1)return;let n=e===0?this.pgid():-e;return e=>(t.pgidOf(e)??this.pgid())===n}pgid(){return this.options.jobs?.getpgid(this.pid,0)??this.pid}sid(){return this.options.jobs?.getsid(this.pid,0)??this.pid}controllingTerminal(){let e=this.options.jobs?.controllingTerminal(this.pid);return e===void 0?this.fds.stdioTerminal():e??void 0}jobSyscall(e){let t=this.options.jobs,n=e=>{if(e!==0&&e!==this.pid)throw new g(`ESRCH`);return this.pid};switch(e.op){case`proc-setpgid`:if(t)t.setpgid(this.pid,e.pid,e.pgid);else if(n(e.pid)!==(e.pgid||this.pid))throw new g(`EPERM`);return{ok:!0,kind:`void`};case`proc-getpgid`:return{ok:!0,kind:`json`,json:t?.getpgid(this.pid,e.pid)??n(e.pid)};case`proc-getsid`:return{ok:!0,kind:`json`,json:t?.getsid(this.pid,e.pid)??n(e.pid)};case`proc-setsid`:if(!t)throw new g(`EPERM`);return{ok:!0,kind:`json`,json:t.setsid(this.pid)}}}tty(e){let t=this.fds.get(e).file,n=t.tty??t.pty?.slave;if(!n)throw new g(`ENOTTY`);return n}socketSyscall(e){return this.net??=this.options.net??new Sn,Zn(e,{fds:this.fds,net:this.net,blocking:()=>this.blockingSignal()})}async procSyscall(e){switch(e.op){case`proc-fork`:return{ok:!0,kind:`json`,json:await this.children.fork(e.state)};case`proc-spawn`:{let{file:t,argv:n,env:r,cwd:i,stdio:a,inherit:o}=e;return{ok:!0,kind:`json`,json:await this.children.spawn({file:t,argv:n,env:r,cwd:i},a,o)}}case`proc-wait`:{let t=e.nohang?this.interrupt.signal:this.blockingSignal(),n={untraced:e.untraced,continued:e.continued,inGroup:this.waitGroup(e.pid)};return{ok:!0,kind:`json`,json:await this.children.wait(e.pid,e.nohang,t,n)}}case`proc-exec`:this.execChild=e.pid,this.options.jobs?.exec(this.pid,e.pid),this.children.watch(e.pid,(e,t)=>e===`stopped`?this.stop(t):this.cont()),await this.fds.closeAll();try{let t=await this.children.wait(e.pid,!1),n=t[1]&127;return n&&(this.execTermsig=n),{ok:!0,kind:`json`,json:t}}finally{this.execChild=void 0}case`proc-kill`:if(e.sig!==0&&!kn(e.sig))throw new g(`EINVAL`);if(!await this.options.kill?.(e.pid===0?-this.pgid():e.pid,e.sig))throw new g(`ESRCH`);return{ok:!0,kind:`void`};case`dl-log`:return e.append&&this.dlLog.push(e.append),{ok:!0,kind:`json`,json:this.dlLog.slice(e.from)};case`proc-alarm`:return this.setAlarm(e.sig,e.firstMs??e.ms,e.repeat?e.ms:0,e.timer),{ok:!0,kind:`void`};case`sig-mask`:return this.caught=e.caught,this.ignored=e.ignored,{ok:!0,kind:`void`};case`sig-pause`:return this.pause();case`proc-captured`:return{ok:!0,kind:`bytes`,bytes:this.children.captured(e.pid,e.slot)}}}pause(){let e=this.blockingSignal();return new Promise((t,n)=>{e.addEventListener(`abort`,()=>n(new g(`EINTR`)),{once:!0})})}dlLog=[];alarm;alarmEvery;setAlarm(e,t,n,r){if(!kn(e))throw new g(`EINVAL`);if(this.clearAlarm(),t<=0)return;let i=r===void 0?()=>this.options.raise?.(e):()=>this.timerExpired(r);this.alarm=setTimeout(()=>{this.alarm=void 0,i(),n>0&&(this.alarmEvery=setInterval(i,n))},t)}timerExpired(e){this.options.onTimer?.(e);let t=this.interrupt;this.interrupt=new AbortController,t.abort()}clearAlarm(){clearTimeout(this.alarm),clearInterval(this.alarmEvery),this.alarm=void 0,this.alarmEvery=void 0}async exit(){this.exited||(this.exited=!0,this.clearAlarm(),await this.fds.closeAll())}};function mr(){return new Worker(new URL(`/assets/process-worker-D--VNpcZ.js`,``+import.meta.url),{type:`module`})}const hr=new WeakMap;let gr=1;function _r(e){let t=hr.get(e);return t===void 0&&hr.set(e,t=gr++),t}function vr(e){return e.numbers().filter(t=>t>2&&!e.get(t).file.held).map(t=>{let n=e.get(t),r=e.statusFlags(t),i=n.file instanceof L?`socket`:l(n.file),a=n.file.heldMeta;return{fd:t,kind:i,...i===`device`&&a&&`device`in a?{device:a}:{},...r===void 0?{}:{flags:r},...e.closesOnExec(t)?{cloexec:!0}:{},...i===`stream`?{desc:_r(n)}:{}}})}function yr(e){let t=new SharedArrayBuffer(64+pe),n=new Int32Array(t,0,16),r=new pr(e.pid,e.fds,{spawner:e.spawner,forker:e.forker,fs:e.fs,kill:e.kill,jobs:e.jobs,ptys:e.ptys,net:e.net,onPending:e=>void Atomics.or(n,8,An(e)),onTimer:e=>void Atomics.or(n,9,1<<e),hasPending:()=>Atomics.load(n,8)!==0||Atomics.load(n,9)!==0,...e.program.abi===`wasi`?{pendingBits:()=>Atomics.load(n,8)}:{},raise:e=>y(e)}),i=le({fs:e.fs,cwd:e.cwd}),a=(e.createWorker??mr)(),o=async e=>dr(e)?r.syscall(e):`op`in e&&typeof e.op==`string`&&`path`in e?fe(e):{ok:!1,errno:`ENOSYS`,message:`wasm-realm: no exec yet`},s=me(a,t,i,{dispatch:o}),c,l=new Promise(e=>c=e),u=!1,d,f=(e,t)=>{if(!u){u=!0,d=t??r.execTermsig,a.removeEventListener(`message`,m),a.removeEventListener(`error`,h),s.dispose();for(let e of[...g.keys()])_(e);de(i),a.terminate(),r.exit().then(()=>c(e),()=>c(e))}},p=t=>{t?.type===`wasm-process-exit`?f(typeof t.code==`number`?t.code:70):t?.type===`wasm-process-error`?(e.onError?.(String(t.message)),f(70)):t?.type===`wasm-thread-spawn`&&t.thread&&v(t.thread)},m=e=>p(e.data),h=t=>{t.preventDefault(),e.onError?.(String(t.message??`worker error`)),f(70)},g=new Map,_=e=>{let t=g.get(e);g.delete(e),t?.()},v=t=>{if(u)return;if(g.size>=63){e.onError?.(`more than 64 threads`),f(70);return}let n=new SharedArrayBuffer(64+pe),r=(e.createWorker??mr)(),a=me(r,n,i,{dispatch:o}),s=e=>{let n=e.data;n?.type===`wasm-thread-exit`?_(t.tid):p(n)};r.addEventListener(`message`,s),r.addEventListener(`error`,h),g.set(t.tid,()=>{r.removeEventListener(`message`,s),r.removeEventListener(`error`,h),a.dispose(),r.terminate()});let c={type:`wasm-thread-init`,pid:e.pid,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,sab:n,...e.ppid===void 0?{}:{ppid:e.ppid},thread:t};r.postMessage(c)};a.addEventListener(`message`,m),a.addEventListener(`error`,h);let ee={type:`wasm-process-init`,pid:e.pid,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,sab:t,...e.ppid===void 0?{}:{ppid:e.ppid},...e.fork?{fork:e.fork}:{fds:vr(e.fds)}};a.postMessage(ee,e.fork?[e.fork.memory.buffer]:[]);let y=e=>{r.signal(e)===`terminate`&&f(e===z.KILL?137:128+e,e)};return{pid:e.pid,exited:l,kill:(e=137)=>f(e,e>128&&e<160?e-128:void 0),signal:y,termsig:()=>d,onState:e=>r.onState(e)}}var br=class{members=new Map;foreground=new Map;terminals=new Map;add(e,t,n,r){let i=t===void 0?void 0:this.members.get(t);!i&&r&&this.terminals.set(e,r);let a={pid:e,ppid:i?.pid,pgid:i?.pgid??e,sid:i?.sid??e,signal:n};return this.members.set(e,a),a}remove(e){this.members.delete(e)}exec(e,t){let n=this.members.get(t);n&&(n.execParent=e);let r=this.members.get(e);r&&(r.execed=!0)}pgidOf(e){return this.members.get(e)?.pgid}member(e){let t=this.members.get(e);if(!t)throw new g(`ESRCH`);return t}setpgid(e,t,n){let r=this.member(t||e),i=n||r.pid;if(i<0)throw new g(`EINVAL`);let a=this.member(e);if(r.pid!==e){if(r.ppid!==e)throw new g(`ESRCH`);if(r.execed)throw new g(`EACCES`)}if(r.sid!==a.sid||r.pid===r.sid)throw new g(`EPERM`);let o=[...this.members.values()].some(e=>e.pgid===i&&e.sid===r.sid);if(i!==r.pid&&!o)throw new g(`EPERM`);r.pgid=i}getpgid(e,t){return this.member(t||e).pgid}getsid(e,t){return this.member(t||e).sid}setsid(e){let t=this.member(e);if(t.pgid===e)throw new g(`EPERM`);return t.sid=e,t.pgid=e,this.terminals.delete(e),e}terminalNamed(e){return[...new Set([...this.terminals.values(),...this.foreground.keys()])].find(t=>t.name===e)}controllingTerminal(e){let t=this.members.get(e);return t&&(this.terminals.get(t.sid)??null)}acquireTerminal(e,t){let n=this.members.get(e);return!n||n.sid!==e||this.terminals.has(e)||[...this.terminals.values()].includes(t)?!1:(this.terminals.set(e,t),this.foreground.set(t,n.pgid),!0)}killGroup(e,t){let n=[...this.members.values()].filter(t=>t.pgid===e),r=new Set(n.map(e=>e.pid));if(t!==0)for(let e of n)(e.execParent===void 0||!r.has(e.execParent))&&e.signal(t);return n.length>0}tcgetpgrp(e,t){return this.foreground.get(e)??t}tcsetpgrp(e,t,n){let r=this.member(e);if(![...this.members.values()].some(e=>e.pgid===n&&e.sid===r.sid))throw new g(`EPERM`);this.foreground.set(t,n)}signalOwnedForeground(e,t){let n=this.foreground.get(e);n!==void 0&&this.killGroup(n,t)}signalForeground(e,t,n){this.killGroup(this.tcgetpgrp(e,t),n)}};const xr=new Set([`wasi_snapshot_preview1`,`wasix_32v1`,`wasi`,`env`]),Sr={127:`i32`,126:`i64`,125:`f32`,124:`f64`};function Cr(e){let t={at:8,u32(){let n=0,r=0;for(;;){let i=e[t.at++];if(n|=(i&127)<<r,!(i&128))return n>>>0;r+=7}},name(){let n=t.u32(),r=new TextDecoder().decode(e.subarray(t.at,t.at+n));return t.at+=n,r},limits(){let n=e[t.at++];return{initial:t.u32(),maximum:n&1?t.u32():void 0,shared:!!(n&2)}},sections(n){for(;t.at<e.length;){let r=e[t.at++],i=t.u32(),a=t.at+i;if(n(r,a))return;t.at=a}},imports(n){let r=t.u32();for(let i=0;i<r;i++){let r=t.name(),i=t.name(),a=e[t.at++],o=-1;if(a===0)o=t.u32();else if(a===1)t.at++,t.limits();else if(a===2){let e=t.at;if(n(r,i,a,o))return;t.at=e,t.limits();continue}else a===3?t.at+=2:a===4&&(t.at++,t.u32());if(n(r,i,a,o))return}}};return t}function wr(e){let t=Cr(e),n;return t.sections(e=>e===2&&(t.imports((e,r,i)=>i===2&&(n={module:e,name:r,...t.limits()},!0)),!0)),n}function Tr(e){let t=Cr(e),n=[],r={};return t.sections(i=>{if(i===1){let r=t.u32();for(let i=0;i<r;i++){t.at++;let r=t.u32();t.at+=r;let i=t.u32();n.push(i===0?`none`:i===1?Sr[e[t.at]]??`other`:`other`),t.at+=i}return!1}return i===2&&(t.imports((e,t,i,a)=>(i===0&&!xr.has(e)&&((r[e]??={})[t]=n[a]??`other`),!1)),!0)}),r}const Er=/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;function Dr(e,t){let n={};for(let[r,i]of Object.entries(e)){let e=!1,a=i.replace(Er,(n,r)=>{let i=Object.hasOwn(t,r)?t[r]:void 0;return i===void 0&&(e=!0),i??``});e||(n[r]=a)}return n}function Or(e,t){if(!e)return t;let n=Dr(e,t);if(!(t.GIT_CONFIG_SYSTEM!==void 0&&pn(`GIT_CONFIG_SYSTEM`,t.GIT_CONFIG_SYSTEM))||!(`GIT_CONFIG_NOSYSTEM`in n))return{...n,...t};let{GIT_CONFIG_NOSYSTEM:r,...i}=n;return{...i,...t}}function kr(e){return e.USER===void 0||`LOGNAME`in e?e:{...e,LOGNAME:e.USER}}function Ar(e,t){return!/^(ba)?sh$/.test(Q(e))||`BASH_FUNC_secret%%`in t?t:{...t,"BASH_FUNC_secret%%":`() { command secret "$@" || return; local __slicc_env; if __slicc_env=$(command secret shell-env "$@" 2>/dev/null); then eval "$__slicc_env"; fi; return 0; }`}}const Y=new Map,jr=new Map,Mr=new Map(Object.entries(B).map(([e,t])=>[t,e])),X=/^\/(?:usr\/)?bin\/([^/]+)$/,Z=/^(.*\/node_modules\/(?:@[^/]+\/)?[^/]+)\//,Nr=/locateFile\(\s*["']([^"'/]+\.wasm)["']\s*\)/;let Pr=4e4;function Fr(e){return e.glue===e.module}const Ir=[0,97,115,109];function Lr(e){return Ir.every((t,n)=>e[n]===t)}function Rr(e){return e.endsWith(`.js`)?`${e.slice(0,-3)}.wasm`:`${e}.wasm`}async function zr(e,t){let n=e.readFileRange,r;try{r=n?new TextDecoder().decode(await n.call(e,t,0,256)):(await e.readFile(t)).slice(0,256)}catch{return!1}return r.startsWith(`#!`)?he(r)!==`node`:!1}function Br(e){return X.exec(e)?.[1]??Q(e)}function Q(e){return e.slice(e.lastIndexOf(`/`)+1)}function Vr(e){return{exists:t=>e.fs.exists(t),readDir:async t=>(await e.fs.readdir(t)).map(e=>({name:e})),readFile:t=>e.fs.readFile(t)}}function Hr(e){return ie(Vr(e),ne)}function Ur(e,t){return`${e}:${t.size}:${t.mtime.getTime()}`}function Wr(e,t){return Y.set(e,t),t.catch(()=>Y.delete(e)),t}async function Gr(e,t){let n=Ur(t,await e.fs.stat(t));return Y.get(n)??Wr(n,ce(t=>e.fs.readFileBuffer(t),t))}function Kr(e,t){return jr.set(e,{memory:wr(t),foreign:Tr(t)}),Wr(e,se(t))}async function qr(e,t){let n=Ur(t,await e.fs.stat(t)),r=Y.get(n),i=await(r&&jr.has(n)?r:Kr(n,await e.fs.readFileBuffer(t))),{memory:a,foreign:o={}}=jr.get(n)??{};return{module:i,foreign:o,...a?{memory:a}:{}}}async function Jr(e,t,n){if(WebAssembly.Module.customSections(n,`name`).length>0)return;let r=`${t}.names`;if(await e.fs.exists(r))return r;let i=Z.exec(t)?.[1];if(i===void 0)return;let a=`${i}-names${r.slice(i.length)}`;return await e.fs.exists(a)?a:void 0}async function Yr(e,t){let n;try{let r=await e.fs.stat(t);if(!r.isFile)return!1;n=Ur(t,r)}catch{return!1}if(Y.has(n))return!0;let r;try{r=await e.fs.readFileBuffer(t)}catch{return!1}return Lr(r)?(Kr(n,r).catch(()=>void 0),!0):!1}function Xr(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return t}function Zr(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}async function Qr(e){if(!e.file.read)return new Uint8Array;let t=[],n=0;for(let r=await e.file.read(65536);r.length>0;)t.push(r),n+=r.length,r=await e.file.read(65536);let r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.length;return r}async function $(e,t,n){if(n.length===0||!e.has(t))return;let r=e.get(t).file;try{await r.write?.(n)}catch{}}function $r(e,t){return e.has(t)&&e.get(t).file.tty!==void 0}function ei(e){return{...$r(e,0)?{}:{[ee]:`0`},...$r(e,1)?{}:{[h]:`0`}}}function ti(e){return{pid:e.pid,exited:e.exited,termsig:e.termsig,onState:t=>e.onState(t)}}const ni=new WeakMap;var ri=class{ctx;processConfig;onError;gate;lookup;live=new Set;shellChildren=new Set;wasmByPid=new Map;shellByPid=new Map;installed;jobs=new br;ptys=new Hn((e,t)=>this.jobs.signalOwnedForeground(e,t));leader;net;constructor(e,t,n,r,i){this.ctx=e,this.processConfig=t,this.onError=n,this.gate=r,this.lookup=i,this.net=wn(Tn(t?.owner));let a=Tn(t?.owner);hn(this.net,{process:t,tls:{owner:a}})}commands(){return this.lookup?this.lookup():(this.installed??=Hr(this.ctx),this.installed)}async launch(e){let t=Fr(e),n=``,r,i,a={};try{t?{module:r,memory:i,foreign:a}=await qr(this.ctx,e.module):(n=await this.ctx.fs.readFile(e.glue),r=await Gr(this.ctx,e.module)),e.signal?.throwIfAborted()}catch(t){throw await e.fds.closeAll(),t}let o=Ar(e.argv0,kr(Or(e.defaults,e.env)));t&&await this.pythonPackages(e,o);let s=t&&o.SLICC_WASM_BACKTRACE===`1`?await Jr(this.ctx,e.module,r):void 0;return this.start({...e,env:o,program:t?{abi:`wasi`,glue:n,module:r,...i?{memory:i}:{},...Object.keys(a).length?{foreign:a}:{},...s?{names:s}:{}}:{glue:n,module:r}})}async pythonPackages(e,t){let n=Z.exec(e.module)?.[1];if(n)try{let r=Vr(this.ctx),i=await r.readFile(`${n}/package.json`,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i)),o=typeof a.name==`string`?a.name:n,s=ae(n,o,a.slicc?.python).interpreter;if(!s)return;let{packages:c}=await this.pythonScan(r),l=await re(this.ctx.fs,t.HOME??`/home`,s,c);if(l.length>0){let t=`${s.abi}-${s.platform}`,n=`${e.argv0}: not for ${t}, left off the path: ${l.map(e=>e.pkg).join(`, `)}\n`;await $(e.fds,2,new TextEncoder().encode(n))}}catch{}}pythonScan(e){return this.commands().then(t=>{let n=ni.get(t);return n||(n=oe(e,ne),ni.set(t,n)),n})}start(e){let t=this.processConfig?.processManager,{pid:n}=this.register(`wasm`,[e.argv0,...e.args],e.cwd,e.env,e.ppid),r=e.fds.stdioTerminal(),i=yr({pid:n,program:e.program,argv0:e.argv0,args:e.args,env:e.env,cwd:e.cwd,fds:e.fds,fs:this.ctx.fs,onError:this.onError,spawner:this.spawner(n),forker:this.forker(n,e),kill:(e,t)=>this.kill(e,t),jobs:this.jobs,ptys:this.ptys,net:this.net,...e.fork?{fork:e.fork}:{},...e.ppid===void 0?{}:{ppid:e.ppid}});this.live.add(i),this.wasmByPid.set(n,i),this.leader??=n,this.jobs.add(n,e.ppid,e=>i.signal(e),r);let a=t?.onSignal((e,t)=>{e.pid===n&&i.signal(B[t])});return i.exited.then(e=>{this.live.delete(i),this.wasmByPid.delete(n),this.jobs.remove(n),a?.(),this.processConfig&&t?.exit(n,e)}),i}kill(e,t){if(e<0)return this.jobs.killGroup(-e,t);let n=this.wasmByPid.get(e);if(n)return t!==0&&n.signal(t),!0;let r=this.shellByPid.get(e);if(r)return t!==0&&r(t),!0;let i=this.processConfig?.processManager;if(!i)return!1;if(t===0)return i.get(e)!==null;let a=Mr.get(t);return a===void 0?!1:this.gate?this.killOutside(e,a):i.signal(e,a)}async killOutside(e,t){if(await this.gate?.(`kill`,[`-${t.slice(3)}`,String(e)],{}))throw new g(`EPERM`);return this.processConfig?.processManager.signal(e,t)??!1}listen(e){return new v(this.net.listen(e))}signalAll(e){for(let t of this.live)t.signal(e)}signalTerminal(e,t){this.leader!==void 0&&this.jobs.signalForeground(e,this.leader,t)}killAll(e){for(let t of this.live)t.kill(e);for(let e of this.shellChildren)e.abort()}async resolve(e,t,n){let r=X.exec(e)?.[1]??(e.includes(`/`)?void 0:e);if(r!==void 0){let e=await this.commands(),t=e.get(r);if(t?.script)return;if(t)return{glue:t.glue,module:t.wasm,argv0:t.argv0,...t.args?{prefixArgs:t.args}:{},defaults:t.env};let n=r===`sh`?e.get(`bash`):void 0;return n&&{glue:n.glue,module:n.wasm,argv0:`sh`,defaults:n.env}}let i=this.ctx.fs.resolvePath(n,e);if(!await this.ctx.fs.exists(i)||await zr(this.ctx.fs,i))return;let a=Rr(i);return await this.ctx.fs.exists(a)?{glue:i,module:a,argv0:Q(t||e)}:await Yr(this.ctx,i)?{glue:i,module:i,argv0:Q(t||e).replace(/\.wasm$/,``)}:this.packagedCopy(i,t||e)}async packagedCopy(e,t){let n=Z.exec(e)?.[1];if(n===void 0)return;let r;try{r=await this.ctx.fs.readFile(e)}catch{return}let i=Nr.exec(r)?.[1];if(i!==void 0){for(let e of(await this.commands()).values())if(e.wasm.startsWith(`${n}/`)&&e.wasm.endsWith(`/${i}`))return{glue:e.glue,module:e.wasm,argv0:Q(t),defaults:e.env}}}forker(e,t){return async(n,r)=>ti(this.start({...t,cwd:n.cwd??t.cwd,fds:r,ppid:e,fork:n}))}async scriptCommand(e){let t=X.exec(e)?.[1]??(e.includes(`/`)?void 0:e);if(t===void 0)return;let n=(await this.commands()).get(t);return n?.script?n:void 0}async interpreted(e){let t=await this.scriptCommand(e.file);if(!t&&(!e.file.includes(`/`)||X.test(e.file)))return;let n=t?.script??this.ctx.fs.resolvePath(e.cwd,e.file),r;try{r=(await this.ctx.fs.readFileBuffer(n)).subarray(0,256)}catch{return}if(r[0]!==35||r[1]!==33)return;let[i,...a]=new TextDecoder().decode(r).slice(2).split(`
12
12
  `)[0].trim().split(/[ \t]+/);if(!i)return;let o=await this.resolve(i,i,e.cwd);if(!o)return;let s=t?.env?{...o,defaults:{...o.defaults,...t.env}}:o,c=a.join(` `);return{target:s,file:i,args:[...o.prefixArgs??[],...c?[c]:[],t?n:e.file,...e.argv.slice(1)]}}spawner(e){return async(t,n)=>{let r=await this.resolve(t.file,t.argv[0]??t.file,t.cwd),i=r?{target:r,file:t.file,args:[...r.prefixArgs??[],...t.argv.slice(1)]}:await this.interpreted(t);if(!i){if(!await this.shellRuns(t))throw n.closeAll().catch(()=>void 0),new V(`ENOENT`);return this.runShellChild(t,n,e)}let a=await this.gate?.(Br(i.file),i.args,t.env);return a?this.deniedChild(t,n,e,a):ti(await this.launch({...i.target,args:i.args,env:t.env,cwd:t.cwd,fds:n,ppid:e}))}}async shellRuns(e){let t=X.exec(e.file)?.[1]??(e.file.includes(`/`)?void 0:e.file);if(t===void 0)return this.ctx.fs.exists(this.ctx.fs.resolvePath(e.cwd,e.file));let n=this.ctx.getRegisteredCommands?.();return!n||n.includes(t)||!this.ctx.exec?!0:(await this.ctx.exec(`command`,{args:[`-v`,t],cwd:e.cwd,env:e.env,replaceEnv:!0})).exitCode===0}deniedChild(e,t,n,r){let{pid:i}=this.register(`shell`,e.argv,e.cwd,e.env,n),a=(async()=>(await $(t,2,new TextEncoder().encode(r.stderr)),await t.closeAll(),r.exitCode))();return this.processConfig&&a.then(e=>this.processConfig?.processManager.exit(i,e)),{pid:i,exited:a}}runShellChild(e,t,n){let r=this.ctx.exec;if(!r)throw t.closeAll().catch(()=>void 0),new V(`ENOSYS`);let{pid:i,abort:a}=this.register(`shell`,e.argv,e.cwd,e.env,n),o=a??new AbortController,s=()=>o.abort();this.ctx.signal?.addEventListener(`abort`,s,{once:!0}),this.ctx.signal?.aborted&&s();let c,l=e=>{On(e)===`terminate`&&(c??=e,o.abort())};this.shellChildren.add(o),this.shellByPid.set(i,l),this.jobs.add(i,n,l);let u=this.processConfig?.processManager.onSignal((e,t)=>{e.pid===i&&l(B[t])}),d=(async()=>{try{let n=$r(t,0),i=t.has(0)&&!n?await Qr(t.get(0)):new Uint8Array,a=await r(e.file,{args:e.argv.slice(1),cwd:e.cwd,env:{...e.env,...ei(t)},replaceEnv:!0,stdin:Xr(i),stdinKind:`bytes`,signal:o.signal});return await $(t,1,a.stdoutKind===`bytes`?Zr(a.stdout):new TextEncoder().encode(a.stdout)),await $(t,2,new TextEncoder().encode(a.stderr)),a.exitCode}catch(n){let r=n instanceof Error?n.message:String(n);return await $(t,2,new TextEncoder().encode(`${e.file}: ${r}\n`)),126}finally{await t.closeAll(),this.shellChildren.delete(o),this.shellByPid.delete(i),this.jobs.remove(i),u?.(),this.ctx.signal?.removeEventListener(`abort`,s)}})();return this.processConfig&&d.then(e=>this.processConfig?.processManager.exit(i,e)),{pid:i,exited:d,termsig:()=>c}}register(e,t,n,r,i){let a=this.processConfig;return a?a.processManager.spawn({kind:e,argv:t,cwd:n,env:r,owner:a.owner,ppid:i??a.getParentPid?.()}):{pid:Pr++}}};const ii=`usage: wasm [-t] [--argv0 NAME] [--module PATH] [--listen [HOST:]PORT] PROGRAM [ARGS...]
13
13
  wasm --list
14
14
  wasm --login
@@ -1,4 +1,4 @@
1
- import{r as e}from"./base64-BPBW1Gzr.js";import{t}from"./panel-rpc-accessor-B4BfPLSo.js";import{a as n,i as r}from"./just-bash-compat-B-SPHuh_.js";const i=[`prompt`,`exec`,`watch`];function a(e){return{stdout:``,stderr:e.endsWith(`
1
+ import{r as e}from"./base64-BPBW1Gzr.js";import{t}from"./panel-rpc-accessor-B4BfPLSo.js";import{a as n,o as r}from"./just-bash-compat-BRjWDzIj.js";const i=[`prompt`,`exec`,`watch`];function a(e){return{stdout:``,stderr:e.endsWith(`
2
2
  `)?e:`${e}\n`,exitCode:1}}function o(e){return{stdout:e,stderr:``,exitCode:0}}function s(){return o(`slicc - talk to another SLICC leader as a client
3
3
 
4
4
  Usage: slicc <target> prompt [--steer] [--timeout <s>] <text...>
@@ -75,7 +75,7 @@ generated uid (not "cone") — read it from the remote's \`host\` output.
75
75
  Options:
76
76
  --for <seconds> How long to tail (default 30)
77
77
  --until-idle Stop early once a turn completes and the agent goes idle
78
- `)}}function l(e,t){let n=Number(t);return t===void 0||!Number.isFinite(n)||n<=0?{error:`slicc: ${e} requires a positive number of seconds`}:n}function u(e,t,n){switch(e){case`--once`:return n.once=!0,1;case`--until-idle`:return n.untilIdle=!0,1;case`--steer`:return n.steer=!0,1;case`--name`:case`--cwd`:return t===void 0?{error:`slicc: ${e} requires a value`}:(e===`--name`?n.name=t:n.cwd=t,2);case`--timeout`:case`--for`:{let r=l(e,t);return typeof r==`number`?(e===`--timeout`?n.timeoutSec=r:n.forSec=r,2):r}default:return e.startsWith(`-`)&&e!==`-`?{error:`slicc: unknown flag: ${e}`}:null}}function d(e,t){return e.length!==1||e[0]===`detach`||e[0]===`list`?null:i.includes(t)?t:{error:m(t)}}function f(e){let t=[],n={once:!1,untilIdle:!1,steer:!1},r,i=0;for(;i<e.length;){let a=e[i];if(r&&!a.startsWith(`-`))break;if(a===`--help`||a===`-h`)return r?{kind:`verb-help`,verb:r}:{kind:`help`};if(a===`--all`&&t[0]===`detach`)return{kind:`detach`,all:!0};let o=u(a,e[i+1],n);if(o!==null){if(typeof o!=`number`)return{kind:`error`,message:o.error};i+=o;continue}let s=d(t,a);if(s!==null){if(typeof s!=`string`)return{kind:`error`,message:s.error};r=s}t.push(a),i+=1}return{positional:t,verb:r,bag:n,restIndex:i}}function p(e){if(e.length===0)return{kind:`help`};let t=f(e);if(`kind`in t)return t;let{positional:n,verb:r,bag:i,restIndex:a}=t,[o,s]=n;return o===`list`?n.length>1?{kind:`error`,message:`slicc list: unexpected argument: ${s}`}:{kind:`list`}:o===`detach`?s===void 0?{kind:`error`,message:`slicc detach: missing attachment name (or --all)`}:{kind:`detach`,name:s,all:!1}:s===void 0||!r?{kind:`error`,message:m(s)}:{kind:`verb`,parsed:{target:o,verb:r,rest:[...n.slice(2),...e.slice(a)],...i}}}function m(e){let t=e?`slicc: unknown verb: ${e}`:`slicc: missing verb`,n=e===`follow`?"\n`follow` is CLI-only: it serves a remote leader commands on the local machine. This command is a client only.":``;return`${t}\nExpected one of ${i.join(`, `)}. \`slicc --help\` for usage.${n}`}function h(e){if(e.stdin===void 0)return;let t=n(e.stdin);return t.length>0?t:void 0}function g(t){if(t.stdin===void 0)return;let n=r(t.stdin);if(n.length===0)return;let i=new Uint8Array(n.length);for(let e=0;e<n.length;e++)i[e]=n.charCodeAt(e)&255;return e(i)}async function _(e,t){if(e.length!==1)return e.join(` `);let n=e[0];if(n===`-`||n===`@-`){let e=h(t);return e===void 0?{error:`slicc: no piped stdin to read`}:e}if(n.startsWith(`@`)){let e=n.slice(1);try{return await t.fs.readFile(e,`utf-8`)}catch(t){return{error:`slicc: cannot read ${e}: ${v(t)}`}}}return n}function v(e){return e instanceof Error?e.message:String(e)}function y(e){if(e.length===0)return`No attachments.
78
+ `)}}function l(e,t){let n=Number(t);return t===void 0||!Number.isFinite(n)||n<=0?{error:`slicc: ${e} requires a positive number of seconds`}:n}function u(e,t,n){switch(e){case`--once`:return n.once=!0,1;case`--until-idle`:return n.untilIdle=!0,1;case`--steer`:return n.steer=!0,1;case`--name`:case`--cwd`:return t===void 0?{error:`slicc: ${e} requires a value`}:(e===`--name`?n.name=t:n.cwd=t,2);case`--timeout`:case`--for`:{let r=l(e,t);return typeof r==`number`?(e===`--timeout`?n.timeoutSec=r:n.forSec=r,2):r}default:return e.startsWith(`-`)&&e!==`-`?{error:`slicc: unknown flag: ${e}`}:null}}function d(e,t){return e.length!==1||e[0]===`detach`||e[0]===`list`?null:i.includes(t)?t:{error:m(t)}}function f(e){let t=[],n={once:!1,untilIdle:!1,steer:!1},r,i=0;for(;i<e.length;){let a=e[i];if(r&&!a.startsWith(`-`))break;if(a===`--help`||a===`-h`)return r?{kind:`verb-help`,verb:r}:{kind:`help`};if(a===`--all`&&t[0]===`detach`)return{kind:`detach`,all:!0};let o=u(a,e[i+1],n);if(o!==null){if(typeof o!=`number`)return{kind:`error`,message:o.error};i+=o;continue}let s=d(t,a);if(s!==null){if(typeof s!=`string`)return{kind:`error`,message:s.error};r=s}t.push(a),i+=1}return{positional:t,verb:r,bag:n,restIndex:i}}function p(e){if(e.length===0)return{kind:`help`};let t=f(e);if(`kind`in t)return t;let{positional:n,verb:r,bag:i,restIndex:a}=t,[o,s]=n;return o===`list`?n.length>1?{kind:`error`,message:`slicc list: unexpected argument: ${s}`}:{kind:`list`}:o===`detach`?s===void 0?{kind:`error`,message:`slicc detach: missing attachment name (or --all)`}:{kind:`detach`,name:s,all:!1}:s===void 0||!r?{kind:`error`,message:m(s)}:{kind:`verb`,parsed:{target:o,verb:r,rest:[...n.slice(2),...e.slice(a)],...i}}}function m(e){let t=e?`slicc: unknown verb: ${e}`:`slicc: missing verb`,n=e===`follow`?"\n`follow` is CLI-only: it serves a remote leader commands on the local machine. This command is a client only.":``;return`${t}\nExpected one of ${i.join(`, `)}. \`slicc --help\` for usage.${n}`}function h(e){if(e.stdin===void 0)return;let t=r(e.stdin);return t.length>0?t:void 0}function g(t){if(t.stdin===void 0)return;let r=n(t.stdin);if(r.length===0)return;let i=new Uint8Array(r.length);for(let e=0;e<r.length;e++)i[e]=r.charCodeAt(e)&255;return e(i)}async function _(e,t){if(e.length!==1)return e.join(` `);let n=e[0];if(n===`-`||n===`@-`){let e=h(t);return e===void 0?{error:`slicc: no piped stdin to read`}:e}if(n.startsWith(`@`)){let e=n.slice(1);try{return await t.fs.readFile(e,`utf-8`)}catch(t){return{error:`slicc: cannot read ${e}: ${v(t)}`}}}return n}function v(e){return e instanceof Error?e.message:String(e)}function y(e){if(e.length===0)return`No attachments.
79
79
  Attach one with: slicc <join-url> exec "uname -a"
80
80
  `;let t=[`attachments:`];for(let n of e)t.push(` - ${n.name} (${n.state})`),t.push(` ${n.joinUrl}`),n.trayId&&t.push(` tray: ${n.trayId}`);return`${t.join(`
81
81
  `)}\n`}function b(e){return e.startsWith(`http://`)||e.startsWith(`https://`)}async function x(e){let{attachments:t}=await e.call(`slicc-list`,void 0);return o(y(t))}async function S(e,t){if(t.all){let{attachments:t}=await e.call(`slicc-list`,void 0);for(let n of t)await e.call(`slicc-detach`,{name:n.name});return o(`Detached ${t.length} attachment(s).\n`)}let n=t.name,{detached:r}=await e.call(`slicc-detach`,{name:n});return r?o(`Detached ${n}.\n`):a(`slicc detach: no such attachment: ${n}`)}async function C(e,t){if(!b(t.target))return t.target;try{return(await e.call(`slicc-attach`,{joinUrl:t.target,name:t.name},{timeoutMs:6e4})).name}catch(e){return{error:`slicc: ${v(e)}`}}}async function w(e,t,n,r,i){let o=t.timeoutSec?t.timeoutSec*1e3:void 0,s=(o??864e5)+5e3;if(t.verb===`watch`){let n=(t.forSec??30)*1e3;return O(await e.call(`slicc-watch`,{name:r,runToken:i,durationMs:n,scoopJid:t.rest[0],untilIdle:t.untilIdle},{timeoutMs:n+1e4}))}let c=await _(t.rest,n);return typeof c==`string`?t.verb===`prompt`?O(await e.call(`slicc-prompt`,{name:r,text:c,runToken:i,steer:t.steer,timeoutMs:o},{timeoutMs:s})):O(await e.call(`slicc-exec`,{name:r,command:c,runToken:i,cwd:t.cwd,timeoutMs:o,stdin:t.rest.length===1&&D(t.rest[0])?void 0:g(n)},{timeoutMs:s})):a(c.error)}function T(e){let t=e===`prompt`?`text`:`command`;return a(`slicc ${e}: missing ${t}\nUsage: slicc <target> ${e} <${t}...>`)}async function E(e,n){let r=p(e);if(r.kind===`help`)return s();if(r.kind===`verb-help`)return c(r.verb);if(r.kind===`error`)return a(r.message);let i=t();if(!i)return a(`slicc: not available in this environment (needs the standalone app)`);if(r.kind===`list`)return await x(i);if(r.kind===`detach`)return await S(i,r);let{parsed:o}=r;if(o.verb!==`watch`&&o.rest.length===0)return T(o.verb);let l=await C(i,o);if(typeof l!=`string`)return a(l.error);let u=`slicc-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,d=()=>{i.call(`slicc-cancel`,{runToken:u}).catch(()=>{})};n.signal?.addEventListener(`abort`,d,{once:!0});try{return await w(i,o,n,l,u)}catch(e){return a(`slicc: ${v(e)}`)}finally{n.signal?.removeEventListener(`abort`,d),o.once&&await i.call(`slicc-detach`,{name:l}).catch(()=>{})}}function D(e){return e===`-`||e===`@-`}function O(e){return e.error?{stdout:e.stdout,stderr:`${e.stderr}slicc: ${e.error}\n`,exitCode:e.exitCode||1}:{stdout:e.stdout,stderr:e.stderr,exitCode:e.exitCode}}export{E as runSlicc};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./just-bash-compat-B-SPHuh_.js";const t=8192;function n(e){return Math.min(e.maxInputBytes,Math.floor(e.maxLiveBytes/2))}const r=new Set([`g`,`t`,`T`,`m`,`e`,`f`,`r`,`d`,`j`,`A`,`B`,`C`]),i=new Set([`glob`,`iglob`,`type`,`type-not`,`type-add`,`type-clear`,`max-count`,`regexp`,`file`,`replace`,`max-depth`,`max-filesize`,`context-separator`,`threads`,`ignore-file`,`pre`,`pre-glob`,`sort`]),a=new Set([`g`,`t`,`T`,`d`,`L`,`u`,`z`]),o=new Set([`glob`,`iglob`,`glob-case-insensitive`,`type`,`type-not`,`type-add`,`type-clear`,`max-depth`,`max-filesize`,`hidden`,`no-ignore`,`no-ignore-dot`,`no-ignore-vcs`,`follow`,`unrestricted`,`ignore-file`,`search-zip`]),s=new Set([`e`,`f`]),c=new Set([`regexp`,`file`]);function l(){return{help:!1,typeList:!1,filesMode:!1,searchBinary:!1,hasPatternOption:!1,unrestricted:0,endOfOptions:!1,nullSeparated:!1,noFilename:!1,withFilename:!1,countMode:!1,includeZero:!1,flagTokens:[],fileSelectArgs:[],positionals:[]}}function u(e){if(!e.startsWith(`--`)||e===`--`)return null;let t=e.indexOf(`=`);return t===-1?e.slice(2):e.slice(2,t)}function d(e,t){return t+1>=e.length?null:{value:e[t+1],next:t+1}}function f(e,t,n){return n.has(e)&&!t.has(e)}function p(e,t){t===`--help`&&(e.help=!0),t===`--type-list`&&(e.typeList=!0),t===`--files`&&(e.filesMode=!0),(t===`--text`||t===`-a`)&&(e.searchBinary=!0),(t===`--null`||t===`-0`)&&(e.nullSeparated=!0),(t===`--no-filename`||t===`-h`)&&(e.noFilename=!0),(t===`--with-filename`||t===`-H`)&&(e.withFilename=!0),(t===`--count`||t===`--count-matches`)&&(e.countMode=!0),t===`--include-zero`&&(e.includeZero=!0)}function m(e,t,n,r){let a=u(t);if(!a)return r;e.flagTokens.push(t),(a===`count`||a===`count-matches`)&&(e.countMode=!0),a===`include-zero`&&(e.includeZero=!0),c.has(a)&&(e.hasPatternOption=!0);let s=t.includes(`=`)?t.slice(t.indexOf(`=`)+1):void 0;if(i.has(a)){if(s!==void 0)return f(a,c,o)&&e.fileSelectArgs.push(t),r;let i=d(n,r);return i?(e.flagTokens.push(i.value),f(a,c,o)&&e.fileSelectArgs.push(`--${a}`,i.value),i.next):r}return o.has(a)&&e.fileSelectArgs.push(t),a===`unrestricted`&&(e.unrestricted+=1),r}function h(e,t){t===`a`&&(e.searchBinary=!0),t===`0`&&(e.nullSeparated=!0),t===`h`&&(e.noFilename=!0),t===`H`&&(e.withFilename=!0),t===`c`&&(e.countMode=!0),t===`u`&&(e.unrestricted+=1,e.fileSelectArgs.push(`-u`)),s.has(t)&&(e.hasPatternOption=!0)}function g(e,t,n,r,i){if(n.length>0)return f(t,s,a)&&e.fileSelectArgs.push(`-${t}`,n),i;let o=d(r,i);return o?(e.flagTokens.push(o.value),f(t,s,a)&&e.fileSelectArgs.push(`-${t}`,o.value),o.next):i}function _(e,t,n,i){let o=t.slice(1);if(o.length===0)return e.positionals.push(t),i;e.flagTokens.push(t);for(let t=0;t<o.length;t++){let s=o[t];if(h(e,s),r.has(s))return g(e,s,o.slice(t+1),n,i);a.has(s)&&s!==`u`&&e.fileSelectArgs.push(`-${s}`)}return i}function v(e){let t=l();for(let n=0;n<e.length;n++){let r=e[n];if(r===`--`){t.endOfOptions=!0,t.positionals.push(...e.slice(n+1));break}if(r===`-`||!r.startsWith(`-`)){t.positionals.push(r);continue}if(p(t,r),u(r)){n=m(t,r,e,n);continue}n=_(t,r,e,n)}return t.unrestricted>=3&&(t.searchBinary=!0),t}function y(e){return e.hasPatternOption?e.positionals:e.positionals.slice(1)}function b(e){return e.some(e=>e.startsWith(`-`)&&e!==`-`)}function x(e){let t=[`--files`];return e.nullSeparated&&t.push(`--null`),t.push(...e.fileSelectArgs,...y(e)),t}function S(e,t,n){let r=[...e.flagTokens];n&&!e.noFilename&&!e.withFilename&&r.push(`-H`);let i=e.hasPatternOption?void 0:e.positionals[0];return i!==void 0&&(e.endOfOptions||b([i]))?(r.push(`-e`,i),[...r,...t]):i===void 0?[...r,...t]:[...r,i,...t]}function C(e,t){return(t?e.split(`\0`):e.split(`
1
+ import{a as e}from"./just-bash-compat-BRjWDzIj.js";const t=8192;function n(e){return Math.min(e.maxInputBytes,Math.floor(e.maxLiveBytes/2))}const r=new Set([`g`,`t`,`T`,`m`,`e`,`f`,`r`,`d`,`j`,`A`,`B`,`C`]),i=new Set([`glob`,`iglob`,`type`,`type-not`,`type-add`,`type-clear`,`max-count`,`regexp`,`file`,`replace`,`max-depth`,`max-filesize`,`context-separator`,`threads`,`ignore-file`,`pre`,`pre-glob`,`sort`]),a=new Set([`g`,`t`,`T`,`d`,`L`,`u`,`z`]),o=new Set([`glob`,`iglob`,`glob-case-insensitive`,`type`,`type-not`,`type-add`,`type-clear`,`max-depth`,`max-filesize`,`hidden`,`no-ignore`,`no-ignore-dot`,`no-ignore-vcs`,`follow`,`unrestricted`,`ignore-file`,`search-zip`]),s=new Set([`e`,`f`]),c=new Set([`regexp`,`file`]);function l(){return{help:!1,typeList:!1,filesMode:!1,searchBinary:!1,hasPatternOption:!1,unrestricted:0,endOfOptions:!1,nullSeparated:!1,noFilename:!1,withFilename:!1,countMode:!1,includeZero:!1,flagTokens:[],fileSelectArgs:[],positionals:[]}}function u(e){if(!e.startsWith(`--`)||e===`--`)return null;let t=e.indexOf(`=`);return t===-1?e.slice(2):e.slice(2,t)}function d(e,t){return t+1>=e.length?null:{value:e[t+1],next:t+1}}function f(e,t,n){return n.has(e)&&!t.has(e)}function p(e,t){t===`--help`&&(e.help=!0),t===`--type-list`&&(e.typeList=!0),t===`--files`&&(e.filesMode=!0),(t===`--text`||t===`-a`)&&(e.searchBinary=!0),(t===`--null`||t===`-0`)&&(e.nullSeparated=!0),(t===`--no-filename`||t===`-h`)&&(e.noFilename=!0),(t===`--with-filename`||t===`-H`)&&(e.withFilename=!0),(t===`--count`||t===`--count-matches`)&&(e.countMode=!0),t===`--include-zero`&&(e.includeZero=!0)}function m(e,t,n,r){let a=u(t);if(!a)return r;e.flagTokens.push(t),(a===`count`||a===`count-matches`)&&(e.countMode=!0),a===`include-zero`&&(e.includeZero=!0),c.has(a)&&(e.hasPatternOption=!0);let s=t.includes(`=`)?t.slice(t.indexOf(`=`)+1):void 0;if(i.has(a)){if(s!==void 0)return f(a,c,o)&&e.fileSelectArgs.push(t),r;let i=d(n,r);return i?(e.flagTokens.push(i.value),f(a,c,o)&&e.fileSelectArgs.push(`--${a}`,i.value),i.next):r}return o.has(a)&&e.fileSelectArgs.push(t),a===`unrestricted`&&(e.unrestricted+=1),r}function h(e,t){t===`a`&&(e.searchBinary=!0),t===`0`&&(e.nullSeparated=!0),t===`h`&&(e.noFilename=!0),t===`H`&&(e.withFilename=!0),t===`c`&&(e.countMode=!0),t===`u`&&(e.unrestricted+=1,e.fileSelectArgs.push(`-u`)),s.has(t)&&(e.hasPatternOption=!0)}function g(e,t,n,r,i){if(n.length>0)return f(t,s,a)&&e.fileSelectArgs.push(`-${t}`,n),i;let o=d(r,i);return o?(e.flagTokens.push(o.value),f(t,s,a)&&e.fileSelectArgs.push(`-${t}`,o.value),o.next):i}function _(e,t,n,i){let o=t.slice(1);if(o.length===0)return e.positionals.push(t),i;e.flagTokens.push(t);for(let t=0;t<o.length;t++){let s=o[t];if(h(e,s),r.has(s))return g(e,s,o.slice(t+1),n,i);a.has(s)&&s!==`u`&&e.fileSelectArgs.push(`-${s}`)}return i}function v(e){let t=l();for(let n=0;n<e.length;n++){let r=e[n];if(r===`--`){t.endOfOptions=!0,t.positionals.push(...e.slice(n+1));break}if(r===`-`||!r.startsWith(`-`)){t.positionals.push(r);continue}if(p(t,r),u(r)){n=m(t,r,e,n);continue}n=_(t,r,e,n)}return t.unrestricted>=3&&(t.searchBinary=!0),t}function y(e){return e.hasPatternOption?e.positionals:e.positionals.slice(1)}function b(e){return e.some(e=>e.startsWith(`-`)&&e!==`-`)}function x(e){let t=[`--files`];return e.nullSeparated&&t.push(`--null`),t.push(...e.fileSelectArgs,...y(e)),t}function S(e,t,n){let r=[...e.flagTokens];n&&!e.noFilename&&!e.withFilename&&r.push(`-H`);let i=e.hasPatternOption?void 0:e.positionals[0];return i!==void 0&&(e.endOfOptions||b([i]))?(r.push(`-e`,i),[...r,...t]):i===void 0?[...r,...t]:[...r,i,...t]}function C(e,t){return(t?e.split(`\0`):e.split(`
2
2
  `)).map(e=>e.trimEnd()).filter(e=>e.length>0)}function w(e,t){let n=Math.min(e.byteLength,t);for(let t=0;t<n;t++)if(e[t]===0)return!0;return!1}async function T(e,t,n,r){for(let i of[e,r]){if(!i||typeof i!=`object`)continue;let e=i.readFileRange;if(typeof e==`function`)return e.call(i,t,0,n)}let i=await e.readFileBuffer(t);return i.byteLength>n?i.subarray(0,n):i}async function E(e,n,r){try{return w(await T(e,n,t,r),t)}catch{return!1}}async function D(e,t){if(t.length===0)return{missing:[],includeDirectory:!0};let n=[],r=!1;for(let i of t)try{(await e.fs.stat(e.fs.resolvePath(e.cwd,i))).isDirectory&&(r=!0)}catch{n.push(i)}return{missing:n,includeDirectory:r}}function O(e){return{stdout:``,stderr:e.map(e=>`rg: ${e}: No such file or directory\n`).join(``),exitCode:2}}function k(e,t){return{stdout:t.stdout,stderr:`${e.stderr}${t.stderr}`,exitCode:t.exitCode===0||t.exitCode===1?Math.max(e.exitCode,2):t.exitCode}}async function A(e,t,n){let r=[],i=0;for(let a of t){let t=e.fs.resolvePath(e.cwd,a),o=0;try{let n=await e.fs.stat(t);if(!n.isFile)continue;o=n.size}catch{continue}!n&&await E(e.fs,t,e.fsIdentity)||(r.push(a),i+=o)}return{files:r,bytes:i}}function j(e){return{stdout:``,stderr:`rg: searchable input size limit exceeded (${e} bytes)\n`,exitCode:2}}function M(e,t){return!e.countMode||e.includeZero||t.exitCode!==1||t.stdout!==`0`&&t.stdout!==`0
3
3
  `?t:{...t,stdout:``}}async function N(t,r){if(!r.origCommand)return{stdout:``,stderr:`rg: command not found
4
4
  `,exitCode:127};let i=r.origCommand,a=v(t);if(a.help||a.typeList||a.filesMode)return i(t);let o=e(r.stdin).length,s=y(a);if(s.length===0&&o>0)return M(a,await i(t));let{missing:c,includeDirectory:l}=await D(r,s),u=await i(x(a)),d=u.exitCode!==0||c.length>0,f=c.length>0?O(c):u.exitCode===0?null:u;if(d&&u.stdout.length===0)return f??u;let{files:p,bytes:m}=await A(r,C(u.stdout,a.nullSeparated),a.searchBinary);if(p.length===0)return f??{stdout:``,stderr:``,exitCode:1};let h=n(r.limits);if(m>h)return j(h);let g=await i(S(a,p,l));return f?k(f,g):g}export{N as runRg};
@@ -1,2 +1,2 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{r as n}from"./global-prefix-DqCuANmV.js";import{i as r,n as i}from"./wasm-programs-Bd5YaoqY.js";import{r as a,t as o}from"./jsh-discovery-CnvNKojr.js";const s=t(`workflow-discovery`),c=`/workspace/.workflows`,l=`/workspace/skills`,u=[c,l],d=`.workflow.js`,f=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;async function p(e){let t=new Map;try{await e.exists(c)&&await m(e,t)}catch(e){s.warn(`workflow discovery: ${c} scan failed`,e)}try{await e.exists(l)&&await h(e,t)}catch(e){s.warn(`workflow discovery: ${l} scan failed`,e)}return t}async function m(e,t){for await(let n of e.walk(c)){if(!n.endsWith(d))continue;let e=g(n);if(!f.test(e)){s.warn(`skipping saved workflow with invalid command name: '${e}' (${n})`);continue}t.has(e)||t.set(e,{path:n,kind:`saved`})}}async function h(e,t){for await(let n of e.walk(l)){if(!n.endsWith(d))continue;let e=_(n);if(!e)continue;let r=g(n);if(!f.test(e)||!f.test(r)){s.warn(`skipping skill workflow with invalid name segment: '${e}:${r}' (${n})`);continue}let i=`${e}:${r}`;t.has(i)||t.set(i,{path:n,kind:`skill`,skill:e})}}function g(e){let t=e.split(`/`).pop()??e;return t.endsWith(d)?t.slice(0,-12):t}function _(e){let t=e.slice(18).split(`/`);return t.length>=3&&t[1]===`.workflows`?t[0]:null}function v(e,t){let n=!1,r=[],i=!1;for(let e of t){if(i){r.push(e);continue}if(e===`--`){i=!0;continue}if(e===`--wait`){n=!0;continue}r.push(e)}let a=[`workflow`,`run`,e];return n&&a.push(`--wait`),r.length===1?a.push(`--args`,y(r[0])):r.length>1&&a.push(`--args`,JSON.stringify(r)),a}function y(e){try{return JSON.parse(e),e}catch{return JSON.stringify(e)}}const b=[`/workspace`,`/shared`];async function x(e){let t=[],n=new Set;for(let r of b)await e.exists(r)&&await S(e,r,t,n);return t}async function S(e,t,n,r){for await(let i of e.walk(t)){if(!i.endsWith(`.bsh`)||r.has(i))continue;r.add(i);let t=C(i);if(!t)continue;let a=await e.readFile(i,{encoding:`utf-8`}),o=w(typeof a==`string`?a:new TextDecoder().decode(a));n.push({path:i,hostnamePattern:t,matchPatterns:o})}}function C(e){let t=e.split(`/`).pop()??``;if(!t.endsWith(`.bsh`))return null;let n=t.slice(0,-4);return n?n.startsWith(`-.`)?`*`+n.slice(1):n:null}function w(e){let t=e.split(`
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{r as n}from"./global-prefix-DqCuANmV.js";import{i as r,n as i}from"./wasm-programs-Bd5YaoqY.js";import{r as a,t as o}from"./jsh-discovery-JLWUZ8pe.js";const s=t(`workflow-discovery`),c=`/workspace/.workflows`,l=`/workspace/skills`,u=[c,l],d=`.workflow.js`,f=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;async function p(e){let t=new Map;try{await e.exists(c)&&await m(e,t)}catch(e){s.warn(`workflow discovery: ${c} scan failed`,e)}try{await e.exists(l)&&await h(e,t)}catch(e){s.warn(`workflow discovery: ${l} scan failed`,e)}return t}async function m(e,t){for await(let n of e.walk(c)){if(!n.endsWith(d))continue;let e=g(n);if(!f.test(e)){s.warn(`skipping saved workflow with invalid command name: '${e}' (${n})`);continue}t.has(e)||t.set(e,{path:n,kind:`saved`})}}async function h(e,t){for await(let n of e.walk(l)){if(!n.endsWith(d))continue;let e=_(n);if(!e)continue;let r=g(n);if(!f.test(e)||!f.test(r)){s.warn(`skipping skill workflow with invalid name segment: '${e}:${r}' (${n})`);continue}let i=`${e}:${r}`;t.has(i)||t.set(i,{path:n,kind:`skill`,skill:e})}}function g(e){let t=e.split(`/`).pop()??e;return t.endsWith(d)?t.slice(0,-12):t}function _(e){let t=e.slice(18).split(`/`);return t.length>=3&&t[1]===`.workflows`?t[0]:null}function v(e,t){let n=!1,r=[],i=!1;for(let e of t){if(i){r.push(e);continue}if(e===`--`){i=!0;continue}if(e===`--wait`){n=!0;continue}r.push(e)}let a=[`workflow`,`run`,e];return n&&a.push(`--wait`),r.length===1?a.push(`--args`,y(r[0])):r.length>1&&a.push(`--args`,JSON.stringify(r)),a}function y(e){try{return JSON.parse(e),e}catch{return JSON.stringify(e)}}const b=[`/workspace`,`/shared`];async function x(e){let t=[],n=new Set;for(let r of b)await e.exists(r)&&await S(e,r,t,n);return t}async function S(e,t,n,r){for await(let i of e.walk(t)){if(!i.endsWith(`.bsh`)||r.has(i))continue;r.add(i);let t=C(i);if(!t)continue;let a=await e.readFile(i,{encoding:`utf-8`}),o=w(typeof a==`string`?a:new TextDecoder().decode(a));n.push({path:i,hostnamePattern:t,matchPatterns:o})}}function C(e){let t=e.split(`/`).pop()??``;if(!t.endsWith(`.bsh`))return null;let n=t.slice(0,-4);return n?n.startsWith(`-.`)?`*`+n.slice(1):n:null}function w(e){let t=e.split(`
2
2
  `).slice(0,10),n=[];for(let e of t){let t=e.match(/^\s*\/\/\s*@match\s+(.+)$/);t&&n.push(t[1].trim())}return n}function T(e,t){if(t.startsWith(`*.`)){let n=t.slice(1);return e===t.slice(2)||e.endsWith(n)&&e.length>n.length}return e===t}function E(e,t){try{let n=new URL(e),r=t.match(/^(\*|https?):\/\/([^/]+)(\/.*)?$/);if(!r)return!1;let[,i,a,o]=r;return i!==`*`&&n.protocol.slice(0,-1)!==i||!T(n.hostname,a)?!1:!o||D(n.pathname+n.search,o)}catch{return!1}}function D(e,t){let n=`^`+t.replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*/g,`.*`)+`$`;return new RegExp(n).test(e)}function O(e,t){try{let n=new URL(t);return e.filter(e=>T(n.hostname,e.hostnamePattern)?e.matchPatterns.length>0?e.matchPatterns.some(e=>E(t,e)):!0:!1)}catch{return[]}}var k=e({ScriptCatalog:()=>V});const A=[`/workspace`,`/shared`];function j(e){return new Map(e)}function M(e){return{commands:j(e.commands),collisions:e.collisions.map(e=>({name:e.name,winnerPath:e.winnerPath,shadowedPaths:[...e.shadowedPaths],reason:e.reason}))}}function N(e){return new Map([...e].map(([e,t])=>[e,{...t}]))}function P(e){return new Map([...e].map(([e,t])=>[e,{...t}]))}function F(e){return e.map(e=>({...e,matchPatterns:[...e.matchPatterns]}))}function I(e){if(e&&typeof e.listMounts==`function`)return e;if(e&&typeof e.getUnderlyingFS==`function`){let t=e.getUnderlyingFS?.();if(t&&typeof t.listMounts==`function`)return t}return null}function L(e,t){return(I(e)?.listMounts?.()??[]).some(e=>t.some(t=>e===t||e.startsWith(`${t}/`)||t.startsWith(`${e}/`)))}function R(e){return e?(I(e)?.listMounts?.()??[]).some(e=>A.some(t=>e===t||e.startsWith(t+`/`))):!1}function z(){return{cache:null,inflight:null,generation:0}}function B(e){e.generation++,e.cache=null,e.inflight=null}var V=class{jshFs;bshFs;watcher;watcherUnsubs=[];jshByRoots=new Map;bsh=z();workflow=z();wasm=z();constructor(e){if(this.jshFs=e.jshFs,this.bshFs=e.bshFs,this.watcher=e.watcher??null,this.watcher&&(this.watcherUnsubs.push(this.watcher.watch(`/`,()=>!0,()=>{this.invalidateJsh(),this.invalidateWorkflows(),this.invalidateWasm()})),this.bshFs))for(let e of A)this.watcherUnsubs.push(this.watcher.watch(e,()=>!0,()=>this.invalidateBsh()))}dispose(){for(let e of this.watcherUnsubs)e();this.watcherUnsubs.length=0,this.invalidateAll()}invalidateAll(){this.invalidateJsh(),this.invalidateBsh(),this.invalidateWorkflows(),this.invalidateWasm()}invalidateJsh(){for(let e of this.jshByRoots.values())B(e)}invalidateBsh(){B(this.bsh)}invalidateWorkflows(){B(this.workflow)}invalidateWasm(){B(this.wasm)}async getJshIndex(e=o){return M(await this.loadJshIndex(e))}async getJshCommands(e=o){return(await this.getJshIndex(e)).commands}async getJshCommandNames(e){return[...(await this.getJshCommands(e)).keys()]}async getBshEntries(){return this.bshFs?F(await this.loadBshEntries()):[]}async findMatchingBshScripts(e){return this.bshFs?F(O(await this.loadBshEntries(),e)):[]}async getWorkflowCommands(){return N(await this.loadWorkflowCommands())}async getWasmCommands(){return P(await this.loadWasmCommands())}shouldCacheJsh(e){return!!this.watcher&&!L(this.jshFs,e)}shouldCacheBsh(){return!!this.watcher&&!!this.bshFs&&!R(this.bshFs)}shouldCacheWorkflows(){return!!this.watcher&&!L(this.jshFs,u)}shouldCacheWasm(){return!!this.watcher&&!L(this.jshFs,[n])}loadCached(e,t,n,r){if(t&&e.cache)return Promise.resolve(e.cache);if(!e.inflight){let i=e.generation,a=n().then(n=>{let a=r(n);return t&&e.generation===i&&(e.cache=a),a}).finally(()=>{e.inflight===a&&(e.inflight=null)});e.inflight=a}return e.inflight}loadJshIndex(e){let t=e.join(`:`),n=this.jshByRoots.get(t);n||(n=z(),this.jshByRoots.set(t,n));let r=[...e];return this.loadCached(n,this.shouldCacheJsh(r),()=>a(this.jshFs,r),M)}loadBshEntries(){if(!this.bshFs)return Promise.resolve([]);let e=this.bshFs;return this.loadCached(this.bsh,this.shouldCacheBsh(),()=>x(e),F)}loadWorkflowCommands(){return this.loadCached(this.workflow,this.shouldCacheWorkflows(),()=>p(this.jshFs),N)}loadWasmCommands(){let e=this.jshFs;return i(e)?this.loadCached(this.wasm,this.shouldCacheWasm(),()=>r(e,n),P):Promise.resolve(new Map)}};export{p as i,k as n,v as r,V as t};
@@ -0,0 +1,18 @@
1
+ import{bindMcpRunner as e,currentPublication as t,discoverCli as n,ensureMcpServeInstalled as r,i,n as a,r as o,setPublication as s,t as c}from"./serve-runtime-BParw3mJ.js";async function l(a,l){let d=b(l.fs),f=await v(l);e(f),r();let p=l.cwd||`/`;return u(x(a,p),{discover:(e,t)=>n(C(p,e),t,f),load:async()=>t()??c(d),save:e=>s(d,e),publish:e=>o(e),setGeneration:e=>o(e),stopRemote:()=>i()})}async function u(e,t){let n=a(e);if(n.error)return T(n.error);if(n.help)return w(d());let r=await t.load();return n.list?w(_(r)):n.stop===null?n.targets.length===0?T(`mcp --serve: missing path`):f(n.targets,r,t):h(n.stop,r,t)}function d(){return`usage: mcp --serve <path> [--serve <path>…]
2
+ mcp --serve <name>=<path>
3
+ mcp --serve --list
4
+ mcp --serve --stop [<name>]
5
+
6
+ Publish .jsh CLIs as one OAuth MCP server. Repeat --serve to add another
7
+ CLI to the same URL. Tool names are prefixed with the CLI name.
8
+
9
+ mcp --serve /workspace/skills/jira/jira.jsh
10
+ mcp --serve gh=/workspace/skills/github/scripts/gh.jsh
11
+ mcp --serve --list
12
+ mcp --serve --stop gh
13
+ mcp --serve --stop
14
+ `}async function f(e,t,n){let r=t??{url:``,token:``,grantGeneration:0,clis:[]},i=[],a=new Set(r.clis.map(e=>e.name));for(let t of e){if(r.clis.some(e=>e.path===t.path))continue;let e=await m(t,n);if(`error`in e)return T(e.error);if(a.has(e.cli.name))return T(`mcp --serve: ${e.cli.name} is already published; pass name=path to rename one`);a.add(e.cli.name),i.push(e.cli)}if(i.length===0)return t?.url?w(`${t.url}\n`):T(`mcp --serve: missing path`);let o=r.clis.concat(i);try{return await p(t,o,n)}catch(e){return T(e instanceof Error?e.message:`mcp --serve: publish failed`)}}async function p(e,t,n){if(!e){let e=await n.publish(1),r={url:e.url,token:e.token,grantGeneration:1,clis:t};return await n.save(r),w(`${r.url}\n`)}let r=e.grantGeneration+1,i=await n.setGeneration(r),a={...e,url:i.url||e.url,token:i.token||e.token,grantGeneration:r,clis:t};return await n.save(a),w(`${a.url}\n`)}async function m(e,t){try{return{cli:await t.discover(e.path,e.name)}}catch(e){return{error:e instanceof Error?e.message:`mcp --serve: discovery failed`}}}async function h(e,t,n){if(!t)return T(`mcp --serve: nothing is published`);if(typeof e!=`string`)return await g(n);let r=t.clis.filter(t=>t.name!==e);return r.length===t.clis.length?T(`mcp --serve: no CLI named ${e}`):r.length===0?await g(n):(await n.save({...t,clis:r}),w(`${t.url}\n`))}async function g(e){try{await e.stopRemote()}catch(e){return T(e instanceof Error?e.message:`mcp --serve: stop failed`)}return await e.save(null),w(`stopped
15
+ `)}function _(e){return e?`${[e.url,...e.clis.map(e=>`${e.name}\t${e.path}`)].join(`
16
+ `)}\n`:`mcp --serve: nothing is published
17
+ `}async function v(e){let{executeJshFile:t}=await import(`./jsh-executor-DUgD6Gyu.js`).then(e=>e.r),{textAsStdin:n}=await import(`./just-bash-compat-BRjWDzIj.js`).then(e=>e.r);return(r,i,a)=>t(r,i,{...e,stdin:n(a??``)}).then(e=>y(e))}function y(e){return{stdout:e.stdout,stderr:e.stderr,exitCode:e.exitCode}}function b(e){return{readFile:t=>e.readFile(t),writeFile:(t,n)=>e.writeFile(t,n),exists:t=>e.exists(t),mkdir:async t=>{await e.exists(t)||await e.mkdir(t)}}}function x(e,t){let n=[];for(let r=0;r<e.length;r++){let i=e[r]??``;if(n.push(i),i!==`--serve`)continue;let a=e[r+1];!a||a.startsWith(`--`)||(n.push(S(a,t)),r++)}return n}function S(e,t){let n=e.indexOf(`=`);return n>0&&!e.slice(0,n).includes(`/`)?`${e.slice(0,n)}=${C(t,e.slice(n+1))}`:C(t,e)}function C(e,t){return t.startsWith(`/`)?t:`${e.endsWith(`/`)?e.slice(0,-1):e}/${t}`}function w(e){return{stdout:e,stderr:``,exitCode:0}}function T(e){return{stdout:``,stderr:e.endsWith(`
18
+ `)?e:`${e}\n`,exitCode:1}}export{l as runMcpServeCommand};
@@ -0,0 +1,23 @@
1
+ import{t as e}from"./logger-LESFN7Hj.js";import{g as t}from"./kernel-worker-Cg_ebMNU.js";let n=e=>new BroadcastChannel(e),r=null,i=null,a=null;function o(e){return e?`slicc-mcp-serve:${e}`:`slicc-mcp-serve`}function s(e,t){i=e,a=t,u()}function c(e,t=15e3){return d(u(),{kind:`publish`,id:crypto.randomUUID(),grantGeneration:e},t)}function l(e=15e3){let t=crypto.randomUUID();return d(u(),{kind:`stop`,id:t},e).then(()=>void 0)}function u(){return r||(r=n(o(t())),r.addEventListener(`message`,e=>{ee(e.data)}),r.postMessage({kind:`kernel-ready`}),r)}async function ee(e){if(!(!e||typeof e!=`object`)){if(e.kind===`page-ready`){a?.();return}if(!(e.kind!==`call`||!i))try{let t=await i(e.op,e.body);r?.postMessage({kind:`call-result`,id:e.id,...t})}catch(t){r?.postMessage({kind:`call-result`,id:e.id,status:500,contentType:`application/json; charset=utf-8`,body:JSON.stringify({error:t instanceof Error?t.message:`mcp call failed`})})}}}function d(e,t,n){let r=t.id,i=t.kind===`publish`?`publish-result`:`stop-result`;return new Promise((a,o)=>{let s=setTimeout(()=>{e.removeEventListener(`message`,c),o(Error(`mcp ${t.kind} timed out`))},n),c=n=>{let l=n.data;if(!(!l||l.kind!==i||l.id!==r)){if(clearTimeout(s),e.removeEventListener(`message`,c),!l.ok){o(Error(l.error||`mcp ${t.kind} failed`));return}a({url:l.kind===`publish-result`?l.url??``:``,token:l.kind===`publish-result`?l.token??``:``})}};e.addEventListener(`message`,c),e.postMessage(t)})}const f=/^[A-Za-z][\w-]*$/;function te(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`cli`}function ne(e,t,n){return te(n||v(e)||(t.split(`/`).pop()??t).replace(/\.jsh$/i,``))}function p(e){let t=[],n=!1,r=!1,i=null;for(let a=0;a<e.length;a++){let o=e[a]??``;if(o===`--help`||o===`-h`){n=!0;continue}if(o===`--list`){r=!0;continue}if(o===`--stop`){let t=e[a+1];t&&!t.startsWith(`--`)?(i=t,a++):i=!0;continue}if(o===`--serve`){let n=e[a+1];n&&!n.startsWith(`--`)&&(t.push(T(n)),a++);continue}return{help:n,list:r,stop:i,targets:t,error:`mcp --serve: unexpected argument ${o}`}}return{help:n,list:r,stop:i,targets:t}}function m(e){let t=ue(e),n=v(e),r=ye(t.commands,pe(e,n));return{...n?{program:n}:{},commands:be(r,t.scoped),globalFlags:t.globalFlags}}function re(e){return e.path.length===1&&e.positionals.length===0&&e.flags.length===0}function ie(e,t,n,r){let i=h(n.commands,n.globalFlags);if(i.length===0)return null;let a=i.map(e=>e.path[0]??``);if(a.length===r.size&&a.every(e=>r.has(e)))return null;let o=i.map(e=>({...e,path:Se(t,e)}));return e.filter(e=>e.path[0]!==t).concat(o)}function h(e,t){return t.length===0?e:e.map(e=>({...e,flags:S(e.flags,t)}))}function ae(e){let t;try{t=JSON.parse(e)}catch{return null}if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=Object.getOwnPropertyDescriptor(t,`commands`)?.value;if(!Array.isArray(n))return null;let r=[];for(let e of n){let t=Ce(e);t&&r.push(t)}return r.length===0?null:{commands:r,globalFlags:[]}}function g(e,t){let n=[{name:`${e}_help`,description:`Show ${e} help.`,inputSchema:E({}),cli:e,kind:`help`,commandPath:[]},{name:`${e}_invoke`,description:`Run ${e} with an argv array (one element per argument) and optional stdin. A non-zero exit is a tool error.`,inputSchema:D(),cli:e,kind:`invoke`,commandPath:[]}];for(let r of t){let t=r.path.join(`_`);n.push({name:`${e}_${t}`,description:r.description||`Run ${e} ${r.path.join(` `)}`,inputSchema:O(r),cli:e,kind:`command`,commandPath:r.path})}return n}function oe(e){if(e==null)return{fields:[]};if(typeof e!=`object`||Array.isArray(e))return{fields:[],error:`arguments must be an object`};let t=[],n,r,i;for(let a of Object.keys(e)){let o=Object.getOwnPropertyDescriptor(e,a)?.value,s=De(a,o);if(s.error)return{fields:t,error:s.error};s.stdin===void 0?s.passthrough?r=s.passthrough:s.argv?i=s.argv:s.field&&t.push(s.field):n=s.stdin}return{fields:t,...n===void 0?{}:{stdin:n},...r?{passthrough:r}:{},...i?{argv:i}:{}}}function se(e,t){if(t.error)return{error:t.error};let n=[...e.path];for(let r of e.positionals){let e=t.fields.find(e=>e.name===r.name);if(!e){if(r.required)return{error:`missing ${r.name}`};continue}if(typeof e.value!=`string`&&typeof e.value!=`number`)return{error:`${r.name} must be a string`};n.push(String(e.value))}let r=ce(e.flags,t.fields);return`error`in r?r:(n.push(...r.argv),t.passthrough&&n.push(...t.passthrough),{argv:n,...t.stdin===void 0?{}:{stdin:t.stdin}})}function ce(e,t){let n=[];for(let r of e){let e=t.find(e=>e.name===r.name);if(!e||e.value===!1)continue;let i=le(r,e.value);if(`error`in i)return i;n.push(...i.argv)}return{argv:n}}function le(e,t){if(e.type===`boolean`)return t===!0?{argv:[`--${e.name}`]}:{argv:[]};if(e.type===`string[]`){if(!Array.isArray(t))return{error:`${e.name} must be an array of strings`};let n=[];for(let r of t)n.push(`--${e.name}`,r);return{argv:n}}return typeof t!=`string`&&typeof t!=`number`?{error:`${e.name} must be a string`}:{argv:[`--${e.name}`,String(t)]}}function ue(e){let t=`none`,n=[],r=[],i=[];for(let a of e.split(`
2
+ `)){let e=a.replace(/\t/g,` `),o=_(e);if(o){t=o.kind===`other`?`none`:o.kind,o.kind===`scoped`&&o.name&&i.push({name:o.name,flags:[]});continue}de(t,e,n,r,i)}return{commands:n,globalFlags:r,scoped:i}}function de(e,t,n,r,i){if(e===`commands`){let e=fe(t);e&&n.push(e);return}let a=_e(t);a&&(e===`options`&&r.push(a),e===`scoped`&&i[i.length-1]?.flags.push(a))}function _(e){let t=e.trim();if(/^commands:?$/i.test(t))return{kind:`commands`};if(/^options:?$/i.test(t))return{kind:`options`};let n=/^([A-Za-z][\w-]*)\s+flags:?$/i.exec(t);return n?.[1]?{kind:`scoped`,name:n[1].toLowerCase()}:/^[A-Z][A-Z0-9 ]+:$/.test(t)?{kind:`other`}:null}function fe(e){if(!/^\s{2,}\S/.test(e))return null;let t=e.trim().split(/\s{2,}/);if(t.length<2)return null;let n=x(t[0]??``),r=n[0]??``;if(!f.test(r)||r.startsWith(`-`))return null;let i=y();for(let e of n.slice(1))b(e,i);return{path:[r],description:t.slice(1).join(` `).trim(),positionals:i.positionals,flags:i.flags}}function v(e){for(let t of e.split(`
3
+ `)){if(!/^[\s>*]*usage:/i.test(t))continue;let e=x(t)[0];if(e&&f.test(e))return e}}function pe(e,t){let n=[];for(let r of e.split(`
4
+ `)){let e=he(r,t);e&&n.push(e)}return n}function me(e){let t=e.replace(/^\[|\]$/g,``).replace(/^<|>$/g,``).toLowerCase();return t===`command`||t===`cmd`||t===`subcommand`||t===`verb`}function he(e,t){let n=e.trim(),r=x(n);if(r.length<2||!/^usage:/i.test(n)&&r[0]!==t)return null;let i=[],a=1;for(;a<r.length&&i.length<2&&f.test(r[a]??``);)i.push(r[a]??``),a++;if(i.length===0||me(r[a]??``))return null;let o=y();for(let e of r.slice(a))b(e,o);return{path:i,description:``,positionals:o.positionals,flags:o.flags}}function y(){return{positionals:[],flags:[]}}function b(e,t){let n=e.startsWith(`[`)&&e.endsWith(`]`),r=n?e.slice(1,-1).trim():e;if(r.startsWith(`--`)){let e=ge(r);e&&t.flags.push(e);return}if(r.startsWith(`<`)&&r.endsWith(`>`)){t.positionals.push({name:C(r.slice(1,-1)),required:!n,description:``});return}f.test(r)&&t.positionals.push({name:C(r),required:!n,description:``})}function ge(e){let t=/^--([A-Za-z][\w-]*)(?:(?:=|\s+)(\S+))?$/.exec(e.trim());if(!t?.[1])return null;let n=t[2]??``;return n?{name:t[1],type:n.includes(`...`)?`string[]`:`string`,description:``}:{name:t[1],type:`boolean`,description:``}}function _e(e){let t=e.trim();if(!t.includes(`--`))return null;let n=/--([A-Za-z][\w-]*)(?:=(\S+)|(?:\s+(<[^>]+>|\[[^\]]+\]|[A-Z][A-Z0-9_-]+)))?/.exec(t);if(!n?.[1])return null;let r=n[2]||n[3]||``,i=/\brepeat|\.\.\.|one or more/i.test(t),a=ve(t);return!r&&!i?{name:n[1],type:`boolean`,description:a}:{name:n[1],type:i?`string[]`:`string`,description:a}}function ve(e){let t=e.trim().split(/\s{2,}/);return t.length>1?t.slice(1).join(` `).trim():``}function x(e){let t=e.trim().replace(/^usage:\s*/i,``),n=[],r=0;for(;r<t.length;){if(t[r]===` `){r++;continue}let e=t[r]===`[`?`]`:t[r]===`<`?`>`:``;if(e){let i=t.indexOf(e,r);if(i===-1){n.push(t.slice(r));break}n.push(t.slice(r,i+1)),r=i+1;continue}let i=t.indexOf(` `,r);if(i===-1){n.push(t.slice(r));break}n.push(t.slice(r,i)),r=i}return n}function ye(e,t){let n=e.map(e=>({...e}));for(let e of t){let t=n.find(t=>xe(t.path,e.path));if(!t){n.push(e);continue}t.positionals.length===0&&(t.positionals=e.positionals),t.description||=e.description,t.flags=S(t.flags,e.flags)}return n}function be(e,t){return e.map(e=>{let n=t.find(t=>t.name===(e.path[0]??``).toLowerCase());return n?{...e,flags:S(e.flags,n.flags)}:e})}function S(e,t){let n=[...e];for(let e of t)n.some(t=>t.name===e.name)||n.push(e);return n}function xe(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function Se(e,t){return t.path[0]===e?t.path.slice(0,2):[e,t.path[0]??``].filter(e=>e.length>0).slice(0,2)}function C(e){return e.replace(/[^A-Za-z0-9_-]+/g,``).replace(/^-+/,``)||`arg`}function Ce(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=w(e,`name`);if(!t)return null;let n=t.split(/\s+/).filter(e=>f.test(e)).slice(0,2);return n.length===0?null:{path:n,description:w(e,`description`)??``,positionals:we(Object.getOwnPropertyDescriptor(e,`positionals`)?.value),flags:Te(Object.getOwnPropertyDescriptor(e,`flags`)?.value)}}function we(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!=`object`||Array.isArray(n))continue;let e=w(n,`name`);if(!e)continue;let r=Object.getOwnPropertyDescriptor(n,`required`)?.value;t.push({name:e,required:r!==!1,description:``})}return t}function Te(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!n||typeof n!=`object`||Array.isArray(n))continue;let e=w(n,`name`),r=w(n,`type`);!e||r!==`boolean`&&r!==`string`&&r!==`string[]`||t.push({name:e,type:r,description:``})}return t}function w(e,t){let n=Object.getOwnPropertyDescriptor(e,t)?.value;return typeof n==`string`&&n.length>0?n:void 0}function T(e){let t=e.indexOf(`=`);return t>0&&!e.slice(0,t).includes(`/`)?{name:e.slice(0,t),path:e.slice(t+1)}:{path:e}}function E(e,t){return{type:`object`,properties:e,additionalProperties:!1,...t&&t.length>0?{required:t}:{}}}function D(){return E({argv:{type:`array`,items:{type:`string`},description:`Arguments, one element per argument. Never a shell string.`},stdin:{type:`string`,description:`Optional standard input.`}},[`argv`])}function O(e){let t={},n=[];for(let r of e.positionals)t[r.name]={type:`string`,description:r.description||r.name},r.required&&n.push(r.name);for(let n of e.flags)t[n.name]=Ee(n);return t.stdin={type:`string`,description:`Optional standard input.`},t.passthrough={type:`array`,items:{type:`string`},description:`Extra arguments appended as-is.`},E(t,n)}function Ee(e){return e.type===`boolean`?{type:`boolean`,description:e.description||e.name}:e.type===`string[]`?{type:`array`,items:{type:`string`},description:e.description||e.name}:{type:`string`,description:e.description||e.name}}function De(e,t){if(e===`stdin`)return typeof t==`string`?{stdin:t}:{error:`stdin must be a string`};if(e===`passthrough`)return k(t,`passthrough`);if(e===`argv`){let e=k(t,`argv`);return e.passthrough?{argv:e.passthrough}:e}return Oe(t)?{field:{name:e,value:t}}:{error:`${e} has an unsupported type`}}function k(e,t){return!Array.isArray(e)||!e.every(e=>typeof e==`string`)?{error:`${t} must be an array of strings`}:{passthrough:e}}function Oe(e){return typeof e==`string`||typeof e==`boolean`||typeof e==`number`||Array.isArray(e)&&e.every(e=>typeof e==`string`)}function ke(e){let t=Ae(e.tools).map(e=>{let t=e.tools.map(e=>`<li><code>${A(e.name)}</code> ${A(e.description)}</li>`).join(``);return`<h2>${A(e.cli)}</h2><ul>${t}</ul>`}).join(``);return`<!DOCTYPE html>
5
+ <html lang="en">
6
+ <head>
7
+ <meta charset="utf-8">
8
+ <title>Allow MCP access</title>
9
+ </head>
10
+ <body>
11
+ <h1>Allow ${A(e.clientName)} to call these tools?</h1>
12
+ <p>Accept lets this client run every CLI currently published, including each script's skill token and your signed-in browser tabs. <code>invoke</code> can run any argument the script accepts.</p>
13
+ ${t}
14
+ <form method="POST" action="/oauth/decision">
15
+ <input type="hidden" name="pending" value="${A(e.pendingId)}">
16
+ <input type="hidden" name="generation" value="${e.generation}">
17
+ <button name="decision" value="accept">Accept</button>
18
+ <button name="decision" value="deny">Deny</button>
19
+ </form>
20
+ </body>
21
+ </html>
22
+ `}function A(e){return e.replace(/[&<>"']/g,e=>e===`&`?`&amp;`:e===`<`?`&lt;`:e===`>`?`&gt;`:e===`"`?`&quot;`:`&#39;`)}function Ae(e){let t=[];for(let n of e){let e=t.find(e=>e.cli===n.cli);e?e.tools.push(n):t.push({cli:n.cli,tools:[n]})}return t}const j=[`2026-07-28`,`2025-06-18`],M=1e5,N=`application/json; charset=utf-8`;async function je(e,t,n){let r;try{r=JSON.parse(e)}catch{return I(null,-32700,`Parse error`)}if(Array.isArray(r))return I(null,-32600,`Batch requests are not supported`);if(!r||typeof r!=`object`)return I(null,-32600,`Invalid request`);let i=R(r,`method`);if(!i)return I(L(r),-32600,`Invalid request`);if(!Ie(r,`id`))return{status:202,contentType:`text/plain`,body:``};let a=L(r),o=Object.getOwnPropertyDescriptor(r,`params`)?.value;return i===`initialize`?F(a,Pe(o)):i===`server/discover`?F(a,Fe()):i===`tools/list`?F(a,{tools:t}):i===`ping`?F(a,{}):i===`tools/call`?Me(a,o,t,n):I(a,-32601,`Method not found: ${i}`)}async function Me(e,t,n,r){let i=t&&typeof t==`object`?R(t,`name`):void 0;if(!i)return I(e,-32602,`tools/call requires a name`);if(!n.some(e=>e.name===i))return I(e,-32602,`Unknown tool: ${i}`);let a=t&&typeof t==`object`?Object.getOwnPropertyDescriptor(t,`arguments`)?.value:void 0;try{return F(e,Ne(await r(i,a)))}catch(t){return I(e,-32e3,t instanceof Error?t.message:`tool call failed`)}}function Ne(e){let t=P(e.stdout),n=P(e.stderr);return{content:[{type:`text`,text:n?t?`${t}\n${n}`:n:t}],isError:e.exitCode!==0,structuredContent:{stdout:t,stderr:n,exitCode:e.exitCode}}}function Pe(e){let t=e&&typeof e==`object`?R(e,`protocolVersion`):void 0;return{protocolVersion:j.find(e=>e===t)??j[0],capabilities:{tools:{listChanged:!1}},serverInfo:{name:`slicc-mcp-serve`,version:`1`}}}function Fe(){return{protocolVersion:j[0],supportedVersions:j,capabilities:{tools:{listChanged:!1}},serverInfo:{name:`slicc-mcp-serve`,version:`1`}}}function P(e){return e.length<=M?e:`${e.slice(0,M)}\n… truncated ${e.length-M} chars`}function F(e,t){return{status:200,contentType:N,body:JSON.stringify({jsonrpc:`2.0`,id:e,result:t})}}function I(e,t,n){return{status:200,contentType:N,body:JSON.stringify({jsonrpc:`2.0`,id:e,error:{code:t,message:n}})}}function L(e){let t=Object.getOwnPropertyDescriptor(e,`id`)?.value;return typeof t==`string`||typeof t==`number`||t===null?t:null}function R(e,t){let n=Object.getOwnPropertyDescriptor(e,t)?.value;return typeof n==`string`?n:void 0}function Ie(e,t){return Object.prototype.hasOwnProperty.call(e,t)}const z=`/workspace/.mcp/served.json`;async function B(e){if(!await e.exists(`/workspace/.mcp/served.json`))return null;let t=``;try{t=await e.readFile(z)}catch{return null}if(!t.trim()||t.trim()===`null`)return null;try{return Le(JSON.parse(t))}catch{return null}}async function V(e,t){await e.mkdir(`/workspace/.mcp`),await e.writeFile(z,t?JSON.stringify(t):`null`)}function Le(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=H(e,`url`),n=H(e,`token`),r=He(e,`grantGeneration`),i=Object.getOwnPropertyDescriptor(e,`clis`)?.value;if(!t||!n||r===void 0||!Array.isArray(i))return null;let a=[];for(let e of i){let t=Re(e);if(!t)return null;a.push(t)}return{url:t,token:n,grantGeneration:r,clis:a}}function Re(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=H(e,`name`),n=H(e,`path`),r=H(e,`helpText`)??``,i=Object.getOwnPropertyDescriptor(e,`commands`)?.value;if(!t||!n||!Array.isArray(i))return null;let a=[];for(let e of i){let t=ze(e);if(!t)return null;a.push(t)}return{name:t,path:n,helpText:r,commands:a}}function ze(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=Ue(e,`path`),n=H(e,`description`)??``,r=Be(Object.getOwnPropertyDescriptor(e,`positionals`)?.value),i=Ve(Object.getOwnPropertyDescriptor(e,`flags`)?.value);return!t||!r||!i?null:{path:t,description:n,positionals:r,flags:i}}function Be(e){if(!Array.isArray(e))return null;let t=[];for(let n of e){if(!n||typeof n!=`object`)return null;let e=H(n,`name`),r=Object.getOwnPropertyDescriptor(n,`required`)?.value;if(!e||typeof r!=`boolean`)return null;t.push({name:e,required:r,description:H(n,`description`)??``})}return t}function Ve(e){if(!Array.isArray(e))return null;let t=[];for(let n of e){if(!n||typeof n!=`object`)return null;let e=H(n,`name`),r=H(n,`type`);if(!e||r!==`boolean`&&r!==`string`&&r!==`string[]`)return null;t.push({name:e,type:r,description:H(n,`description`)??``})}return t}function H(e,t){let n=Object.getOwnPropertyDescriptor(e,t)?.value;return typeof n==`string`?n:void 0}function He(e,t){let n=Object.getOwnPropertyDescriptor(e,t)?.value;return typeof n==`number`&&Number.isFinite(n)?n:void 0}function Ue(e,t){let n=Object.getOwnPropertyDescriptor(e,t)?.value;return!Array.isArray(n)||!n.every(e=>typeof e==`string`)?null:n}const We=e(`mcp-serve`);let U=null,W=null,G=null,K=!1,q=!1;const J=new Map;function Ge(e){W=e}function Ke(){return U}async function qe(e,t){W=t,G=e,U=await B(e),Y(),q&&U&&Z()}async function Je(e,t){G=e,U=t,await V(e,t)}function Y(){K||(K=!0,s((e,t)=>Xe(e,t),()=>{q=!0,U&&Z()}))}async function Ye(e,t,n){let r=await n(e,[`--mcp`]),i=r.exitCode===0?ae(r.stdout):null,a=await Qe(e,n);if(!a&&!i)throw Error(`mcp --serve: ${e} did not print help`);let o=a?.stdout??``,s=i??m(o),c=i?s.commands:h(await Ze(e,s.commands,n),s.globalFlags);return{name:ne(o,e,t),path:e,helpText:o,commands:c}}async function Xe(e,t){if(!U)return Q(503,{error:`not published`});if(e===`consent`)return at(t,U);let n=await je(t,U.clis.flatMap(e=>g(e.name,e.commands)),(e,t)=>$e(e,t));return{status:n.status,contentType:n.contentType,body:n.body}}async function Ze(e,t,n){let r=new Set(t.map(e=>e.path[0]??``)),i=t;for(let a of t){if(!re(a))continue;let t=a.path[0]??``,o=await n(e,[t,`--help`]);if(o.exitCode!==0||!o.stdout.trim())continue;let s=ie(i,t,m(o.stdout),r);s&&(i=s)}return i}async function Qe(e,t){let n=await t(e,[`--help`]);if(n.exitCode===0&&n.stdout.trim())return n;let r=await t(e,[`help`]);return r.exitCode===0&&r.stdout.trim()?r:n.stdout.trim()?n:null}async function $e(e,t){let n=it(e),r=W;return!n||!r?{stdout:``,stderr:`unknown tool ${e}\n`,exitCode:1}:nt(st(n.cli.name,()=>et(n.tool,n.cli,t,r)))}function et(e,t,n,r){if(e.kind===`help`)return tt(t.path,r);let i=rt(e,t,n);return`error`in i?Promise.resolve({stdout:``,stderr:`${i.error}\n`,exitCode:2}):r(t.path,i.argv,i.stdin)}async function tt(e,t){let n=await t(e,[`--help`]).catch(X);return n.exitCode===0?n:t(e,[`help`]).catch(()=>n)}function X(){return{stdout:``,stderr:`timed out
23
+ `,exitCode:124}}async function nt(e){try{return await ct(e,1e5)}catch{return X()}}function rt(e,t,n){let r=oe(n??{});if(r.error)return{error:r.error};if(e.kind===`invoke`)return r.argv?{argv:r.argv,...r.stdin===void 0?{}:{stdin:r.stdin}}:{error:`argv is required`};let i=t.commands.find(t=>t.path.join(`_`)===e.commandPath.join(`_`));return i?se(i,r):{error:`unknown command ${e.name}`}}function it(e){if(!U)return null;for(let t of U.clis){let n=g(t.name,t.commands).find(t=>t.name===e);if(n)return{tool:n,cli:t}}return null}function at(e,t){let n=ot(e);if(!n)return Q(400,{error:`bad consent request`});let r=t.clis.flatMap(e=>g(e.name,e.commands).map(t=>({name:t.name,description:t.description,cli:e.name})));return We.info(`mcp consent page served`,{generation:n.generation,tools:r.length}),{status:200,contentType:`text/html; charset=utf-8`,body:ke({...n,tools:r})}}function ot(e){let t;try{t=JSON.parse(e)}catch{return null}if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=$(t,`pendingId`),r=$(t,`clientName`)??`MCP client`,i=Object.getOwnPropertyDescriptor(t,`generation`)?.value;return!n||typeof i!=`number`?null:{pendingId:n,generation:i,clientName:r}}async function Z(){if(U)try{let e=await c(U.grantGeneration,3e3);if(!U||!G||!e.url)return;(e.url!==U.url||e.token!==U.token)&&(U={...U,url:e.url,token:e.token},await V(G,U))}catch{}}function st(e,t){let n=(J.get(e)??Promise.resolve()).then(t,t);return J.set(e,n.then(()=>void 0,()=>void 0)),n}function ct(e,t){return new Promise((n,r)=>{let i=setTimeout(()=>r(Error(`timed out`)),t);e.then(e=>{clearTimeout(i),n(e)},e=>{clearTimeout(i),r(e)})})}function Q(e,t){return{status:e,contentType:`application/json; charset=utf-8`,body:JSON.stringify(t)}}function $(e,t){let n=Object.getOwnPropertyDescriptor(e,t)?.value;return typeof n==`string`?n:void 0}export{Ge as bindMcpRunner,Ke as currentPublication,Ye as discoverCli,Y as ensureMcpServeInstalled,l as i,p as n,c as r,qe as restoreMcpServe,Je as setPublication,B as t};
@@ -18,5 +18,5 @@ import{r as e,t}from"./subcommand-help-CgO7wRS5.js";const n=`session — export
18
18
  usage: session search <query> [--limit N]
19
19
  `}}function i(e,t,n){if(!e||e.startsWith(`-`))return{ok:!1,stderr:`session read: ${t} requires a number\n`};let r=Number(e);return!Number.isFinite(r)||r<n?{ok:!1,stderr:`session read: ${t} must be ${n===0?`a non-negative integer`:`a positive integer`}\n`}:{ok:!0,n:Math.floor(r)}}function a(e){let t=e.slice(1),n,r,a;for(let e=0;e<t.length;e++){let o=t[e];if(o===`--from`||o===`--count`){let n=i(t[e+1],o,o===`--from`?0:1);if(!n.ok)return n;o===`--from`?r=n.n:a=n.n,e++}else if(o.startsWith(`-`))return{ok:!1,stderr:`session read: unknown flag ${o}\n`};else if(n===void 0)n=o;else return{ok:!1,stderr:`session read: unexpected argument ${JSON.stringify(o)}\n`}}return n?{ok:!0,id:n,from:r,count:a}:{ok:!1,stderr:`session read: missing id
20
20
  usage: session read <id> [--from N --count M]
21
- `}}async function o(e,t){let n=r(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};try{let{searchSessions:e}=await import(`./session-search-index-CL6tNMTB.js`),r=await e(t.fs,n.query,{limit:n.limit});if(r.length===0)return{stdout:`# session search: ${n.query} (0 hits)\nNo matching messages in /sessions.\n`,stderr:``,exitCode:0};let i=[`# session search: ${n.query} (${r.length} hits)`];for(let e of r)i.push(`id=${e.id} score=${e.score.toFixed(2)} kind=${e.echoKind} role=${e.role}`),i.push(` session=${JSON.stringify(e.sessionTitle)} path=${e.path}`),i.push(` ${e.excerpt}`),i.push(``);return i.push(`Use: session read <id> [--from N --count M]`),{stdout:`${i.join(`
22
- `)}\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`session search: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function s(e,t){let n=a(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};try{let{readSessionHit:e,SESSION_READ_BYTE_CAP:r}=await import(`./session-search-index-CL6tNMTB.js`),i=await e(t.fs,n.id,{from:n.from,count:n.count});return i?{stdout:`# session read: ${n.id}\npath=${i.hit.path} title=${JSON.stringify(i.hit.sessionTitle)}\nmessages ${i.from}–${i.from+i.count-1} of ${i.total} (remaining: ${i.remaining}${i.truncated?`, truncated to byte cap`:``})\nbyteCap=${r}\n\n`+i.text,stderr:``,exitCode:0}:{stdout:``,stderr:`session read: unknown id ${JSON.stringify(n.id)}\n`,exitCode:1}}catch(e){return{stdout:``,stderr:`session read: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function c(r,i,a,c){return r===`help`?{stdout:c?e(`session`,c,n):n,stderr:``,exitCode:0}:t(i.slice(1))?{stdout:e(`session`,r,n),stderr:``,exitCode:0}:r===`search`?o(i,a):s(i,a)}async function l(e,n,r){let{isMemoryV2Enabled:i}=await import(`./memory-v2-flag-Bw4vo1l_.js`),a=i();if(t(e)){if(!a)return{stdout:r,stderr:``,exitCode:0};let t=e[0];return c(`help`,e,n,t&&t!==`--help`&&t!==`-h`?t:void 0)}let o=e[0];return o===`search`||o===`read`?a?c(o,e,n):{stdout:``,stderr:`session export: unknown subcommand ${JSON.stringify(o)} — usage: session export [--id <id>] [--output <path>]\n`,exitCode:1}:a?{stdout:``,stderr:`session: unknown subcommand ${JSON.stringify(o??``)} — usage: session export|search|read (see session --help)\n`,exitCode:1}:{stdout:``,stderr:`session export: unknown subcommand ${JSON.stringify(o??``)} — usage: session export [--id <id>] [--output <path>]\n`,exitCode:1}}export{l as dispatchSessionMemoryAware};
21
+ `}}async function o(e,t){let n=r(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};try{let{searchSessions:e}=await import(`./session-search-index-wZXrjuXN.js`),r=await e(t.fs,n.query,{limit:n.limit});if(r.length===0)return{stdout:`# session search: ${n.query} (0 hits)\nNo matching messages in /sessions.\n`,stderr:``,exitCode:0};let i=[`# session search: ${n.query} (${r.length} hits)`];for(let e of r)i.push(`id=${e.id} score=${e.score.toFixed(2)} kind=${e.echoKind} role=${e.role}`),i.push(` session=${JSON.stringify(e.sessionTitle)} path=${e.path}`),i.push(` ${e.excerpt}`),i.push(``);return i.push(`Use: session read <id> [--from N --count M]`),{stdout:`${i.join(`
22
+ `)}\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`session search: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function s(e,t){let n=a(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};try{let{readSessionHit:e,SESSION_READ_BYTE_CAP:r}=await import(`./session-search-index-wZXrjuXN.js`),i=await e(t.fs,n.id,{from:n.from,count:n.count});return i?{stdout:`# session read: ${n.id}\npath=${i.hit.path} title=${JSON.stringify(i.hit.sessionTitle)}\nmessages ${i.from}–${i.from+i.count-1} of ${i.total} (remaining: ${i.remaining}${i.truncated?`, truncated to byte cap`:``})\nbyteCap=${r}\n\n`+i.text,stderr:``,exitCode:0}:{stdout:``,stderr:`session read: unknown id ${JSON.stringify(n.id)}\n`,exitCode:1}}catch(e){return{stdout:``,stderr:`session read: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function c(r,i,a,c){return r===`help`?{stdout:c?e(`session`,c,n):n,stderr:``,exitCode:0}:t(i.slice(1))?{stdout:e(`session`,r,n),stderr:``,exitCode:0}:r===`search`?o(i,a):s(i,a)}async function l(e,n,r){let{isMemoryV2Enabled:i}=await import(`./memory-v2-flag-Bw4vo1l_.js`),a=i();if(t(e)){if(!a)return{stdout:r,stderr:``,exitCode:0};let t=e[0];return c(`help`,e,n,t&&t!==`--help`&&t!==`-h`?t:void 0)}let o=e[0];return o===`search`||o===`read`?a?c(o,e,n):{stdout:``,stderr:`session export: unknown subcommand ${JSON.stringify(o)} — usage: session export [--id <id>] [--output <path>]\n`,exitCode:1}:a?{stdout:``,stderr:`session: unknown subcommand ${JSON.stringify(o??``)} — usage: session export|search|read (see session --help)\n`,exitCode:1}:{stdout:``,stderr:`session export: unknown subcommand ${JSON.stringify(o??``)} — usage: session export [--id <id>] [--output <path>]\n`,exitCode:1}}export{l as dispatchSessionMemoryAware};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{_ as t,b as n,d as r,m as i,n as a}from"./frozen-archive-writer-BJkhyap1.js";import{t as o}from"./types-D8gIX-W-.js";var s=e({chatMessagesToJsonl:()=>p,copySessionJsonl:()=>S,jsonlToChatMessages:()=>m,loadFrozenArchive:()=>f,readSessionJsonl:()=>b,removeSessionJsonl:()=>x,sidecarFilenameForArchive:()=>l,sidecarPathForArchive:()=>c,writeArchiveBundle:()=>d,writeSessionJsonl:()=>y});function c(e){let t=`${e.endsWith(`.md`)?e.slice(0,-3):e.replace(/\.md$/i,``)}.jsonl`;return t.startsWith(`/`)?t:`${i}/${t}`}function l(e){return e.replace(/\.md$/i,`.jsonl`)}function u(e,t){return a(e).replace(/<!-- slicc:session-data\n[\s\S]*?\n-->\n\n/,``).replace(/^---\n([\s\S]*?)\n---\n\n/,(e,n)=>`---\n${n}\nsidecar: ${t}\n---\n\n`)}async function d(e,t,n){let a=l(t),o=`${i}/${t}`;return await e.writeFile(o,u(n,a)),{markdownPath:o,sidecarPath:await y(e,t,r(n.messages))}}async function f(e,n,r){let i=t(n);if(i.messages.length>0||!i.sidecar)return i;let a=await b(e,r??i.sidecar.replace(/\.jsonl$/i,`.md`));return a?{...i,messages:a}:i}function p(e){let t=[];for(let n of e)for(let e of C(n))t.push(JSON.stringify(e));return t.length===0?``:`${t.join(`
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{_ as t,b as n,d as r,m as i,n as a}from"./frozen-archive-writer-CUBMAwRu.js";import{t as o}from"./types-D8gIX-W-.js";var s=e({chatMessagesToJsonl:()=>p,copySessionJsonl:()=>S,jsonlToChatMessages:()=>m,loadFrozenArchive:()=>f,readSessionJsonl:()=>b,removeSessionJsonl:()=>x,sidecarFilenameForArchive:()=>l,sidecarPathForArchive:()=>c,writeArchiveBundle:()=>d,writeSessionJsonl:()=>y});function c(e){let t=`${e.endsWith(`.md`)?e.slice(0,-3):e.replace(/\.md$/i,``)}.jsonl`;return t.startsWith(`/`)?t:`${i}/${t}`}function l(e){return e.replace(/\.md$/i,`.jsonl`)}function u(e,t){return a(e).replace(/<!-- slicc:session-data\n[\s\S]*?\n-->\n\n/,``).replace(/^---\n([\s\S]*?)\n---\n\n/,(e,n)=>`---\n${n}\nsidecar: ${t}\n---\n\n`)}async function d(e,t,n){let a=l(t),o=`${i}/${t}`;return await e.writeFile(o,u(n,a)),{markdownPath:o,sidecarPath:await y(e,t,r(n.messages))}}async function f(e,n,r){let i=t(n);if(i.messages.length>0||!i.sidecar)return i;let a=await b(e,r??i.sidecar.replace(/\.jsonl$/i,`.md`));return a?{...i,messages:a}:i}function p(e){let t=[];for(let n of e)for(let e of C(n))t.push(JSON.stringify(e));return t.length===0?``:`${t.join(`
2
2
  `)}\n`}function m(e){let t=[],n=null;for(let r of e.split(`
3
3
  `)){let e=r.trim();if(!e)continue;let i=h(e);if(i){if(i.role===`user`)t.push(g(i)),n=null;else if(i.role===`assistant`){let e=_(i);t.push(e),n=e}else i.role===`toolResult`&&v(n,i)}}return t}function h(e){try{return JSON.parse(e)}catch{return null}}function g(e){return{id:e.id??E(`u`),role:`user`,content:w(e.content),timestamp:e.timestamp??0,...e.source?{source:e.source}:{},...e.channel?{channel:e.channel}:{},...e.attachments?.length?{attachments:e.attachments}:{}}}function _(e){let t=T(e.content);return{id:e.id??E(`a`),role:`assistant`,content:w(e.content),timestamp:e.timestamp??0,...t.length?{toolCalls:t}:{},...e.source?{source:e.source}:{},...e.compaction?{compaction:e.compaction}:{},...e.attachments?.length?{attachments:e.attachments}:{}}}function v(e,t){if(!t.toolCallId||!e?.toolCalls)return;let n=e.toolCalls.find(e=>e.id===t.toolCallId);n&&(n.result=w(t.content),t.isError&&(n.isError=!0))}async function y(e,t,r){let i=c(t);return await e.writeFile(i,p(n(r))),i}async function b(e,t){let n=c(t);try{let t=await e.readFile(n,{encoding:`utf-8`});return m(typeof t==`string`?t:new TextDecoder().decode(t))}catch(e){if(e instanceof o&&e.code===`ENOENT`)return null;throw e}}async function x(e,t){let n=c(t);try{await e.rm(n)}catch(e){if(e instanceof o&&e.code===`ENOENT`)return;throw e}}async function S(e,t,n){if(t===n)return;let r=c(t),i=c(n);try{let t=await e.readFile(r,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t);await e.writeFile(i,n)}catch(e){if(e instanceof o&&e.code===`ENOENT`)return;throw e}}function C(e){if(e.role===`user`)return[{role:`user`,content:[{type:`text`,text:e.content}],id:e.id,timestamp:e.timestamp,...e.source?{source:e.source}:{},...e.channel?{channel:e.channel}:{},...e.attachments?.length?{attachments:e.attachments}:{}}];let t=[];e.content&&t.push({type:`text`,text:e.content});for(let n of e.toolCalls??[])t.push({type:`toolCall`,id:n.id,name:n.name,arguments:n.input});let n=[{role:`assistant`,content:t.length?t:[{type:`text`,text:``}],id:e.id,timestamp:e.timestamp,...e.source?{source:e.source}:{},...e.compaction?{compaction:e.compaction}:{},...e.attachments?.length?{attachments:e.attachments}:{}}];for(let t of e.toolCalls??[])t.result===void 0&&!t.isError||n.push({role:`toolResult`,toolCallId:t.id,content:[{type:`text`,text:t.result??``}],...t.isError?{isError:!0}:{},timestamp:e.timestamp});return n}function w(e){return typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(`
4
4
  `)}function T(e){return typeof e==`string`?[]:e.filter(e=>e.type===`toolCall`).map(e=>({id:e.id,name:e.name,input:e.arguments}))}function E(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}export{c as a,s as i,f as n,x as r,S as t};
@@ -1,3 +1,3 @@
1
- import{t as e}from"./types-D8gIX-W-.js";import{i as t,o as n}from"./kernel-worker-DAOlZAnY.js";import"./frozen-archive-writer-Ds5upuER.js";function r(e){let n=`${e.endsWith(`.md`)?e.slice(0,-3):e.replace(/\.md$/i,``)}.jsonl`;return n.startsWith(`/`)?n:`${t}/${n}`}async function i(e,t,r){let i=n(t);if(i.messages.length>0||!i.sidecar)return i;let a=await u(e,r??i.sidecar.replace(/\.jsonl$/i,`.md`));return a?{...i,messages:a}:i}function a(e){let t=[],n=null;for(let r of e.split(`
1
+ import{t as e}from"./types-D8gIX-W-.js";import{i as t,o as n}from"./kernel-worker-Cg_ebMNU.js";import"./frozen-archive-writer-BnIHZhI2.js";function r(e){let n=`${e.endsWith(`.md`)?e.slice(0,-3):e.replace(/\.md$/i,``)}.jsonl`;return n.startsWith(`/`)?n:`${t}/${n}`}async function i(e,t,r){let i=n(t);if(i.messages.length>0||!i.sidecar)return i;let a=await u(e,r??i.sidecar.replace(/\.jsonl$/i,`.md`));return a?{...i,messages:a}:i}function a(e){let t=[],n=null;for(let r of e.split(`
2
2
  `)){let e=r.trim();if(!e)continue;let i=o(e);if(i){if(i.role===`user`)t.push(s(i)),n=null;else if(i.role===`assistant`){let e=c(i);t.push(e),n=e}else i.role===`toolResult`&&l(n,i)}}return t}function o(e){try{return JSON.parse(e)}catch{return null}}function s(e){return{id:e.id??m(`u`),role:`user`,content:f(e.content),timestamp:e.timestamp??0,...e.source?{source:e.source}:{},...e.channel?{channel:e.channel}:{},...e.attachments?.length?{attachments:e.attachments}:{}}}function c(e){let t=p(e.content);return{id:e.id??m(`a`),role:`assistant`,content:f(e.content),timestamp:e.timestamp??0,...t.length?{toolCalls:t}:{},...e.source?{source:e.source}:{},...e.compaction?{compaction:e.compaction}:{},...e.attachments?.length?{attachments:e.attachments}:{}}}function l(e,t){if(!t.toolCallId||!e?.toolCalls)return;let n=e.toolCalls.find(e=>e.id===t.toolCallId);n&&(n.result=f(t.content),t.isError&&(n.isError=!0))}async function u(t,n){let i=r(n);try{let e=await t.readFile(i,{encoding:`utf-8`});return a(typeof e==`string`?e:new TextDecoder().decode(e))}catch(t){if(t instanceof e&&t.code===`ENOENT`)return null;throw t}}async function d(t,n){let i=r(n);try{await t.rm(i)}catch(t){if(t instanceof e&&t.code===`ENOENT`)return;throw t}}function f(e){return typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(`
3
3
  `)}function p(e){return typeof e==`string`?[]:e.filter(e=>e.type===`toolCall`).map(e=>({id:e.id,name:e.name,input:e.arguments}))}function m(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}export{i as loadFrozenArchive,d as removeSessionJsonl};
@@ -1,3 +1,3 @@
1
- import{i as e,s as t}from"./kernel-worker-DAOlZAnY.js";import{loadFrozenArchive as n}from"./session-jsonl-BWGPVYtm.js";const r=`/sessions/.search-index.json`,i=12e3,a=4e3;async function o(e,t){return typeof e.readdir==`function`?e.readdir(t):typeof e.readDir==`function`?(await e.readDir(t)).map(e=>e.name):[]}const s={fields:[`title`,`body`],storeFields:[`title`,`body`,`sessionId`,`sessionTitle`,`filename`,`messageId`,`messageIndex`,`role`,`echoKind`,`path`],idField:`id`,processTerm:e=>{let t=e.toLowerCase();return t.length<2?null:M(t)},searchOptions:{boost:{title:4,body:1},prefix:!0}},c={original:1,summary:.35,echo:.15};function l(e){if(e.compaction)return`summary`;let t=e.content??``;return/<context-summary>/i.test(t)||/Earlier conversation messages were compacted/i.test(t)||/full transcript of the conversation before this compaction is saved at/i.test(t)?`summary`:/^# session (search|read):/m.test(t)||/\bid=sess\/[^\s]+/.test(t)||e.role===`assistant`&&e.toolCalls?.some(e=>e.name===`bash`&&typeof e.input==`object`&&e.input!==null&&/session\s+(search|read)\b/.test(String(e.input.command??``)))?`echo`:`original`}function u(e,t){return`sess/${e}/msg/${t}`}function d(e){let t=/^sess\/([^/]+)\/msg\/(.+)$/.exec(e);return t?{sessionId:t[1],messageId:t[2]}:null}function f(e){let t=`${e.sessionsDir??`/sessions`}/${e.filename}`,n=[];return e.messages.forEach((r,i)=>{let o=r.id||`i${i}`,s=[A(r.content??``,a)];for(let e of r.toolCalls??[])s.push(e.name,A(j(e.input),a)),e.result&&s.push(A(e.result,a));let c=A(s.filter(Boolean).join(`
1
+ import{i as e,s as t}from"./kernel-worker-Cg_ebMNU.js";import{loadFrozenArchive as n}from"./session-jsonl-DtcKD0yn.js";const r=`/sessions/.search-index.json`,i=12e3,a=4e3;async function o(e,t){return typeof e.readdir==`function`?e.readdir(t):typeof e.readDir==`function`?(await e.readDir(t)).map(e=>e.name):[]}const s={fields:[`title`,`body`],storeFields:[`title`,`body`,`sessionId`,`sessionTitle`,`filename`,`messageId`,`messageIndex`,`role`,`echoKind`,`path`],idField:`id`,processTerm:e=>{let t=e.toLowerCase();return t.length<2?null:M(t)},searchOptions:{boost:{title:4,body:1},prefix:!0}},c={original:1,summary:.35,echo:.15};function l(e){if(e.compaction)return`summary`;let t=e.content??``;return/<context-summary>/i.test(t)||/Earlier conversation messages were compacted/i.test(t)||/full transcript of the conversation before this compaction is saved at/i.test(t)?`summary`:/^# session (search|read):/m.test(t)||/\bid=sess\/[^\s]+/.test(t)||e.role===`assistant`&&e.toolCalls?.some(e=>e.name===`bash`&&typeof e.input==`object`&&e.input!==null&&/session\s+(search|read)\b/.test(String(e.input.command??``)))?`echo`:`original`}function u(e,t){return`sess/${e}/msg/${t}`}function d(e){let t=/^sess\/([^/]+)\/msg\/(.+)$/.exec(e);return t?{sessionId:t[1],messageId:t[2]}:null}function f(e){let t=`${e.sessionsDir??`/sessions`}/${e.filename}`,n=[];return e.messages.forEach((r,i)=>{let o=r.id||`i${i}`,s=[A(r.content??``,a)];for(let e of r.toolCalls??[])s.push(e.name,A(j(e.input),a)),e.result&&s.push(A(e.result,a));let c=A(s.filter(Boolean).join(`
2
2
  `),a);!c.trim()&&!r.compaction||n.push({id:u(e.sessionId,o),title:e.sessionTitle,body:c,sessionId:e.sessionId,sessionTitle:e.sessionTitle,filename:e.filename,messageId:o,messageIndex:i,role:r.role,echoKind:l(r),path:t})}),n}const p=`/scoops`;async function m(e){let t;try{t=await o(e,p)}catch{return[]}let n=[];for(let r of t)try{let t=await o(e,`${p}/${r}/sessions`);for(let e of t)n.push(`${p}/${r}/sessions/${e}`)}catch{}return n.sort()}async function h(n){let r=(await t(n)).map(t=>({entry:t,sessionsDir:e}));for(let e of await m(n))for(let t of await g(n,e))r.push({entry:t,sessionsDir:e});return r}async function g(e,t){try{let n=await e.readFile(`${t}/index.json`,{encoding:`utf-8`}),r=typeof n==`string`?n:new TextDecoder().decode(n),i=JSON.parse(r);return Array.isArray(i)?i:[]}catch{return[]}}async function _(e){let t=(await import(`./es-BR4l6CGS.js`)).default,n=await h(e),r=[],i=new Set;for(let{entry:t,sessionsDir:a}of n)for(let n of await S(e,t,a))i.has(n.id)||(i.add(n.id),r.push(n));let a=new t(s);return r.length&&a.addAll(r),{mini:a,meta:{version:1,builtAt:Date.now(),archiveCount:n.length,fingerprint:w(n)},docs:r.length,archives:n.length}}async function v(e,t){return w(await h(e))===t.meta.fingerprint&&(await e.writeFile(r,JSON.stringify({meta:t.meta,index:t.mini.toJSON()})),!0)}async function y(e){let t=(await import(`./es-BR4l6CGS.js`)).default,n=w(await h(e));try{let i=await e.readFile(r,{encoding:`utf-8`}),a=typeof i==`string`?i:new TextDecoder().decode(i),o=JSON.parse(a);if(o.meta?.fingerprint===n&&o.index)return t.loadJS(o.index,s)}catch{}let i=await _(e);return await v(e,i),i.mini}async function b(e,t,n={}){let r=Math.min(Math.max(1,n.limit??8),20),i=t.trim();if(!i)return[];let a=await y(e),o=a.search(i,{boost:{title:4,body:1},prefix:!0}),s=[];for(let e of o){let t=a.getStoredFields(e.id);if(!t)continue;let n=t.echoKind??`original`,r=e.score*(c[n]??1);s.push({id:String(e.id),score:r,echoKind:n,sessionId:t.sessionId,sessionTitle:t.sessionTitle,filename:t.filename,messageId:t.messageId,messageIndex:t.messageIndex,role:t.role,path:t.path,excerpt:T(t.body,i)})}return s.sort((e,t)=>t.score-e.score),s.slice(0,r)}async function x(e,t,n={}){let r=d(t);if(!r)return null;let i=await h(e),a=i.find(({entry:e})=>e.sessionId===r.sessionId)??i.find(({entry:e})=>e.filename.replace(/\.md$/i,``)===r.sessionId);if(!a)return null;let{entry:o,sessionsDir:s}=a,c=await C(e,o,s),l=c.findIndex((e,t)=>(e.id||`i${t}`)===r.messageId),u=Math.max(0,n.from??Math.max(0,l)),f=Math.max(1,n.count??3),p=c.slice(u,u+f),m=E(p,u),g=!1;for(;k(m)>12e3&&p.length>1;)p=p.slice(0,-1),m=E(p,u),g=!0;k(m)>12e3&&(m=`${A(m,11980)}\n…[truncated]\n`,g=!0);let _=p.length,v=Math.max(0,c.length-(u+_));return{hit:{sessionId:o.sessionId??r.sessionId,messageId:r.messageId,sessionTitle:o.title,path:`${s}/${o.filename}`},messages:p,from:u,count:_,total:c.length,remaining:v,truncated:g,text:m}}async function S(t,n,r=e){let i=await C(t,n,r);return f({sessionId:n.sessionId??n.filename.replace(/\.md$/i,``),sessionTitle:n.title,filename:n.filename,messages:i,sessionsDir:r})}async function C(t,r,i=e){try{let e=`${i}/${r.filename}`,a=await t.readFile(e,{encoding:`utf-8`}),o=typeof a==`string`?a:new TextDecoder().decode(a);return(await n(t,o,e)).messages}catch{return[]}}function w(e){return e.map(({entry:e,sessionsDir:t})=>`${t}/${e.filename}:${e.messageCount}:${e.frozenAt}:${e.sessionId??``}`).sort().join(`|`)}function T(e,t,n=80){let r=e.replace(/\s+/g,` `).trim();if(!r)return``;let i=t.toLowerCase().split(/\s+/).filter(e=>e.length>1),a=-1;for(let e of i)if(a=r.toLowerCase().indexOf(e),a>=0)break;if(a<0)return r.slice(0,n*2)+(r.length>n*2?`…`:``);let o=Math.max(0,a-n),s=Math.min(r.length,a+n);return`${o>0?`…`:``}${r.slice(o,s)}${s<r.length?`…`:``}`}function E(e,t){let n=[];return e.forEach((e,r)=>{let i=t+r,a=e.id||`i${i}`;n.push(`## [${i}] ${e.role} id=${a}`),e.content&&n.push(e.content);for(let t of e.toolCalls??[])n.push(`### tool ${t.name} (${t.id})${t.isError?` ERROR`:``}`),n.push(j(t.input)),t.result&&n.push(t.result);n.push(``)}),n.join(`
3
3
  `)}async function D(e,t={}){try{await e.rm(r)}catch(e){if(t.strict&&e?.code!==`ENOENT`)throw e}}const O=new TextEncoder;function k(e){return O.encode(e).byteLength}function A(e,t){if(t<=0)return``;let n=O.encode(e);if(n.byteLength<=t)return e;let r=t;for(;r>0&&(n[r]&192)==128;)r--;return new TextDecoder().decode(n.subarray(0,r))}function j(e){try{return JSON.stringify(e)}catch{return String(e)}}function M(e){if(e.length<3)return e;let t=e;if(t.endsWith(`sses`)||t.endsWith(`ies`)?t=`${t.slice(0,-2)}`:t.endsWith(`ss`)||t.endsWith(`s`)&&t.length>3&&(t=t.slice(0,-1)),t.endsWith(`eed`))N(t.slice(0,-3))>0&&(t=t.slice(0,-1));else if(/(ed|ing)$/.test(t)){let e=t.replace(/(ed|ing)$/,``);/[aeiouy]/.test(e)&&(t=e,/(at|bl|iz)$/.test(t)?t=`${t}e`:/(.)\1$/.test(t)&&!/[lsz]$/.test(t)?t=t.slice(0,-1):N(t)===1&&P(t)&&(t=`${t}e`))}return t.endsWith(`y`)&&/[aeiouy]/.test(t.slice(0,-1))&&(t=`${t.slice(0,-1)}i`),t}function N(e){return(e.toLowerCase().replace(/[^aeiouy]+/g,`C`).replace(/[aeiouy]+/g,`V`).replace(/^C/,``).replace(/V$/,``).match(/VC/g)??[]).length}function P(e){if(e.length<3)return!1;let t=e[e.length-3],n=e[e.length-2],r=e[e.length-1],i=e=>/[aeiouy]/.test(e);return!i(t)&&i(n)&&!i(r)&&!/[wxy]/.test(r)}export{i as SESSION_READ_BYTE_CAP,D as invalidateSessionSearchIndex,x as readSessionHit,b as searchSessions};
@@ -1 +1 @@
1
- import{l as e}from"./feature-flags-DvsApnS-.js";import{A as t,_ as n,g as r,j as i,k as a}from"./main-BfPkUEOn.js";var o=3e3;async function s(n,r){let i=a(r.storage);try{let a=new URL(`/api/flags`,`${r.workerBaseUrl.replace(/\/+$/,``)}/`);a.searchParams.set(`float`,n);let s=await c(a.toString(),r.fetchImpl??fetch,r.timeoutMs??o);if(!s)return;t(i,n,s),e(n,s)}catch{}}async function c(e,t,n){let r=new AbortController,i;try{let a=new Promise(e=>{i=setTimeout(()=>{r.abort(),e(null)},n)}),o=t(e,{cache:`no-store`,headers:{Accept:`application/json`},signal:r.signal}).then(async e=>e.ok?l(await e.json()):null).catch(()=>null);return await Promise.race([o,a])}catch{return null}finally{i!==void 0&&clearTimeout(i)}}function l(e){if(!u(e))return null;let t=e.flags;return!u(t)||Object.values(t).some(e=>typeof e!=`string`)?null:t}function u(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function d(e,t){return s(e,{workerBaseUrl:g(t),storage:t.storage})}var f=18e5,p=null;function m(e,t,n=f){return h(),p=setInterval(()=>{d(e,t)},n),h}function h(){p!==null&&(clearInterval(p),p=null)}function g(e){let t=_(e.storage),a=i(e.envBaseUrl??null);if(t)return t;if(a)return a;if(!e.isDev)try{let t=new URL(e.locationHref);if(t.protocol===`http:`||t.protocol===`https:`)return t.origin}catch{}return e.isDev?n:r}function _(e){try{return i(e?.getItem(`slicc.trayWorkerBaseUrl`)??null)}catch{return null}}export{d as refreshFeatureFlagsForPage,g as resolveFeatureFlagsWorkerBaseUrl,m as scheduleFeatureFlagsRefresh};
1
+ import{l as e}from"./feature-flags-DvsApnS-.js";import{A as t,_ as n,g as r,j as i,k as a}from"./main-B5oWPamu.js";var o=3e3;async function s(n,r){let i=a(r.storage);try{let a=new URL(`/api/flags`,`${r.workerBaseUrl.replace(/\/+$/,``)}/`);a.searchParams.set(`float`,n);let s=await c(a.toString(),r.fetchImpl??fetch,r.timeoutMs??o);if(!s)return;t(i,n,s),e(n,s)}catch{}}async function c(e,t,n){let r=new AbortController,i;try{let a=new Promise(e=>{i=setTimeout(()=>{r.abort(),e(null)},n)}),o=t(e,{cache:`no-store`,headers:{Accept:`application/json`},signal:r.signal}).then(async e=>e.ok?l(await e.json()):null).catch(()=>null);return await Promise.race([o,a])}catch{return null}finally{i!==void 0&&clearTimeout(i)}}function l(e){if(!u(e))return null;let t=e.flags;return!u(t)||Object.values(t).some(e=>typeof e!=`string`)?null:t}function u(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function d(e,t){return s(e,{workerBaseUrl:g(t),storage:t.storage})}var f=18e5,p=null;function m(e,t,n=f){return h(),p=setInterval(()=>{d(e,t)},n),h}function h(){p!==null&&(clearInterval(p),p=null)}function g(e){let t=_(e.storage),a=i(e.envBaseUrl??null);if(t)return t;if(a)return a;if(!e.isDev)try{let t=new URL(e.locationHref);if(t.protocol===`http:`||t.protocol===`https:`)return t.origin}catch{}return e.isDev?n:r}function _(e){try{return i(e?.getItem(`slicc.trayWorkerBaseUrl`)??null)}catch{return null}}export{d as refreshFeatureFlagsForPage,g as resolveFeatureFlagsWorkerBaseUrl,m as scheduleFeatureFlagsRefresh};
@@ -1 +1 @@
1
- import{c as e,n as t,r as n,s as r,t as i}from"./core-BFRZk2b-.js";import{i as a}from"./compat-BAGLwgqY.js";import{t as o}from"./logger-DDBAeTLF.js";import{a as s}from"./feature-flags-DvsApnS-.js";import{S as c}from"./account-store-BZTlSap7.js";import{resolveFeatureFlagsWorkerBaseUrl as l}from"./setup-feature-flags-remote-DRQOEp2l.js";var u=`/api/models/providers/`,d=4e3,f=2e3;function p(e){let t=Array.isArray(e)?e:r(e)&&Array.isArray(n(e,`models`))?n(e,`models`):r(e)?Object.values(e):null;return t?t.filter(e=>r(e)&&typeof n(e,`id`)==`string`).slice(0,f):null}async function m(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return await e(t,{...n,signal:i.signal})}finally{clearTimeout(a)}}async function h(e,t,n){if(!n.force&&t?.checkedAt!==void 0&&n.now-t.checkedAt<144e5)return{kind:`skip`};let r=new URL(`${u}${encodeURIComponent(e)}`,`${n.workerBaseUrl.replace(/\/+$/,``)}/`).toString(),i=t?.models.length?t.etag:void 0,a;try{a=await m(n.fetchImpl,r,{headers:{Accept:`application/json`,...i?{"If-None-Match":i}:{}}},n.timeoutMs)}catch{return{kind:`failed`,entry:t?{...t,checkedAt:n.now}:void 0}}if(a.status===304&&t)return{kind:`stored`,entry:{...t,checkedAt:n.now},changed:!1};if(a.status===404)return{kind:`stored`,entry:{models:[],checkedAt:n.now,lastModified:0},changed:!0};if(!a.ok)return{kind:`failed`,entry:t?{...t,checkedAt:n.now}:void 0};let o;try{o=p(await a.json())}catch{o=null}if(!o)return{kind:`failed`,entry:t};let s=Date.parse(a.headers.get(`last-modified`)??``),c={models:o,checkedAt:n.now,lastModified:Number.isNaN(s)?0:s},l=a.headers.get(`etag`);return l&&(c.etag=l),{kind:`stored`,entry:c,changed:!0}}async function g(n){let r={updated:[],failed:[]};if(!s(`live-model-catalog`))return r;let o=n.storage===void 0?t():n.storage;if(!o)return r;let c=new Set(a()),l=[...new Set(n.providers)].filter(e=>c.has(e));if(l.length===0)return r;let u=(n.now??Date.now)(),f={workerBaseUrl:n.workerBaseUrl,fetchImpl:n.fetchImpl??fetch,timeoutMs:n.timeoutMs??d,force:n.force===!0,now:u},p=e(o).store,m=await Promise.all(l.map(async e=>[e,await h(e,p[e],f)])),g={...e(o).store},_=!1;for(let[e,t]of m)t.kind!==`skip`&&(t.entry&&(g[e]=t.entry,_=!0),t.kind===`failed`?r.failed.push(e):t.changed&&r.updated.push(e));if(_)try{o.setItem(i,JSON.stringify(g))}catch{}return r}var _=o(`model-catalog`),v=36e5,y=null;async function b(e,t=!1){let n=await g({workerBaseUrl:l(e),providers:c(),storage:e.storage,force:t});return n.updated.length>0&&_.info(`Model catalogue refreshed`,{providers:n.updated}),n.failed.length>0&&_.debug(`Model catalogue refresh failed`,{providers:n.failed}),n}function x(e,t=v){return S(),y=setInterval(()=>{b(e)},t),b(e)}function S(){y!==null&&(clearInterval(y),y=null)}export{x as setupModelCatalog};
1
+ import{c as e,n as t,r as n,s as r,t as i}from"./core-BFRZk2b-.js";import{i as a}from"./compat-BAGLwgqY.js";import{t as o}from"./logger-DDBAeTLF.js";import{a as s}from"./feature-flags-DvsApnS-.js";import{S as c}from"./account-store-D6N6Obqj.js";import{resolveFeatureFlagsWorkerBaseUrl as l}from"./setup-feature-flags-remote-ClAPgFgc.js";var u=`/api/models/providers/`,d=4e3,f=2e3;function p(e){let t=Array.isArray(e)?e:r(e)&&Array.isArray(n(e,`models`))?n(e,`models`):r(e)?Object.values(e):null;return t?t.filter(e=>r(e)&&typeof n(e,`id`)==`string`).slice(0,f):null}async function m(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return await e(t,{...n,signal:i.signal})}finally{clearTimeout(a)}}async function h(e,t,n){if(!n.force&&t?.checkedAt!==void 0&&n.now-t.checkedAt<144e5)return{kind:`skip`};let r=new URL(`${u}${encodeURIComponent(e)}`,`${n.workerBaseUrl.replace(/\/+$/,``)}/`).toString(),i=t?.models.length?t.etag:void 0,a;try{a=await m(n.fetchImpl,r,{headers:{Accept:`application/json`,...i?{"If-None-Match":i}:{}}},n.timeoutMs)}catch{return{kind:`failed`,entry:t?{...t,checkedAt:n.now}:void 0}}if(a.status===304&&t)return{kind:`stored`,entry:{...t,checkedAt:n.now},changed:!1};if(a.status===404)return{kind:`stored`,entry:{models:[],checkedAt:n.now,lastModified:0},changed:!0};if(!a.ok)return{kind:`failed`,entry:t?{...t,checkedAt:n.now}:void 0};let o;try{o=p(await a.json())}catch{o=null}if(!o)return{kind:`failed`,entry:t};let s=Date.parse(a.headers.get(`last-modified`)??``),c={models:o,checkedAt:n.now,lastModified:Number.isNaN(s)?0:s},l=a.headers.get(`etag`);return l&&(c.etag=l),{kind:`stored`,entry:c,changed:!0}}async function g(n){let r={updated:[],failed:[]};if(!s(`live-model-catalog`))return r;let o=n.storage===void 0?t():n.storage;if(!o)return r;let c=new Set(a()),l=[...new Set(n.providers)].filter(e=>c.has(e));if(l.length===0)return r;let u=(n.now??Date.now)(),f={workerBaseUrl:n.workerBaseUrl,fetchImpl:n.fetchImpl??fetch,timeoutMs:n.timeoutMs??d,force:n.force===!0,now:u},p=e(o).store,m=await Promise.all(l.map(async e=>[e,await h(e,p[e],f)])),g={...e(o).store},_=!1;for(let[e,t]of m)t.kind!==`skip`&&(t.entry&&(g[e]=t.entry,_=!0),t.kind===`failed`?r.failed.push(e):t.changed&&r.updated.push(e));if(_)try{o.setItem(i,JSON.stringify(g))}catch{}return r}var _=o(`model-catalog`),v=36e5,y=null;async function b(e,t=!1){let n=await g({workerBaseUrl:l(e),providers:c(),storage:e.storage,force:t});return n.updated.length>0&&_.info(`Model catalogue refreshed`,{providers:n.updated}),n.failed.length>0&&_.debug(`Model catalogue refresh failed`,{providers:n.failed}),n}function x(e,t=v){return S(),y=setInterval(()=>{b(e)},t),b(e)}function S(){y!==null&&(clearInterval(y),y=null)}export{x as setupModelCatalog};