sliccy 6.256.16 → 6.256.18

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 (137) hide show
  1. package/README.md +0 -2
  2. package/dist/node-server/chrome-launch.js +8 -0
  3. package/dist/ui/.vite/manifest.json +194 -180
  4. package/dist/ui/assets/{account-store-DxkFGIVE.js → account-store-BHc5rtOw.js} +1 -1
  5. package/dist/ui/assets/{account-store-BwcT7LDC.js → account-store-BzvHM2hU.js} +1 -1
  6. package/dist/ui/assets/{adobe-CcX811bl.js → adobe-B1tsRh6s.js} +1 -1
  7. package/dist/ui/assets/{adobe-BMZxuGSo.js → adobe-BncT9Q-P.js} +1 -1
  8. package/dist/ui/assets/{agent-panels-D-fSEwSd.js → agent-panels-RGCFTdQ6.js} +1 -1
  9. package/dist/ui/assets/{almost-bash-shell-headless-Dpa8Zgj-.js → almost-bash-shell-headless-DfA5Ap_1.js} +274 -293
  10. package/dist/ui/assets/{apply-layout-Bx-sacBa.js → apply-layout-DquTlpjf.js} +1 -1
  11. package/dist/ui/assets/{azure-openai-BE_6Rghd.js → azure-openai-7LNhQIPs.js} +1 -1
  12. package/dist/ui/assets/{azure-openai-DTOSvuAw.js → azure-openai-DWSL1jW0.js} +1 -1
  13. package/dist/ui/assets/cdp-WO6MhUPx.js +968 -0
  14. package/dist/ui/assets/{cerebras-CFUfKhyD.js → cerebras-BO9yJPw3.js} +1 -1
  15. package/dist/ui/assets/{cerebras-k_YnibDY.js → cerebras-DmGzyLYM.js} +1 -1
  16. package/dist/ui/assets/{composer-speech-tmOYr-B-.js → composer-speech-a-azq4-g.js} +1 -1
  17. package/dist/ui/assets/{connect-surface-C00jHa9-.js → connect-surface-DjqA3QjM.js} +1 -1
  18. package/dist/ui/assets/{directed-approval-CbwiWWE_.js → directed-approval-DRotHELU.js} +1 -1
  19. package/dist/ui/assets/{emscripten-vfs-hook-Dhjqui1W.js → emscripten-vfs-hook-BUvyRQlK.js} +1 -1
  20. package/dist/ui/assets/{frozen-archive-writer-C-vZROS9.js → frozen-archive-writer-xPoeaUZf.js} +1 -1
  21. package/dist/ui/assets/{frozen-session-delete-k-0SkIr9.js → frozen-session-delete-C1yoMyb1.js} +1 -1
  22. package/dist/ui/assets/{frozen-session-identity-ChjFK2C_.js → frozen-session-identity-DDiK8YKe.js} +1 -1
  23. package/dist/ui/assets/{gelatiere-unit-DFH-I19B.js → gelatiere-unit-B0ewnmDN.js} +1 -1
  24. package/dist/ui/assets/{github-CPVr1tGP.js → github-BiaOWcrq.js} +1 -1
  25. package/dist/ui/assets/{github-BFpqkhh_.js → github-DoYZZwQf.js} +1 -1
  26. package/dist/ui/assets/{github-copilot-DdL7KEwH.js → github-copilot-CMgWyf7v.js} +1 -1
  27. package/dist/ui/assets/{github-copilot-BgbdpjG9.js → github-copilot-DfcWJYNs.js} +1 -1
  28. package/dist/ui/assets/{hear-C-utgGW1.js → hear-DfRRZf-I.js} +1 -1
  29. package/dist/ui/assets/hidden-page-input-B6EVA2Ko.js +7 -0
  30. package/dist/ui/assets/hidden-page-input-OJcQIzB7.js +7 -0
  31. package/dist/ui/assets/{js-realm-worker-Cyv3eaUK.js → js-realm-worker-BL8Fbpcw.js} +2 -2
  32. package/dist/ui/assets/{jsh-executor-C7A8rKtA.js → jsh-executor-VmbBf-f3.js} +3 -3
  33. package/dist/ui/assets/{kernel-worker-CbU9w1jN.js → kernel-worker-Dt9hDwn2.js} +96 -77
  34. package/dist/ui/assets/{lick-ws-bridge-BKuHO1_c.js → lick-ws-bridge-COp-7MAV.js} +1 -1
  35. package/dist/ui/assets/{lick-ws-bridge-DgUasWg1.js → lick-ws-bridge-DllJSdQF.js} +1 -1
  36. package/dist/ui/assets/{live-session-curation-CU80syOO.js → live-session-curation-BR9TUfsm.js} +1 -1
  37. package/dist/ui/assets/{live-session-curation-CgEgVSlb.js → live-session-curation-B_PQTT4w.js} +1 -1
  38. package/dist/ui/assets/{live-session-snapshot-BDhdSB5v.js → live-session-snapshot-DETIeXKF.js} +1 -1
  39. package/dist/ui/assets/{local-llm-BQ6zfswd.js → local-llm-BD5Id2dD.js} +1 -1
  40. package/dist/ui/assets/{local-llm-DypvX2te.js → local-llm-BaVoosk9.js} +1 -1
  41. package/dist/ui/assets/{main-oiVkkz90.js → main-CUlZbhkv.js} +3 -3
  42. package/dist/ui/assets/{main-cherry-C649hg6H.js → main-cherry-CBXXSX0W.js} +1 -1
  43. package/dist/ui/assets/{mcp-command-71cXHaO5.js → mcp-command-BTi69M97.js} +10 -10
  44. package/dist/ui/assets/{memory-curation-seam-C_ErPRV4.js → memory-curation-seam-B99BaTZW.js} +1 -1
  45. package/dist/ui/assets/{memory-write-execute-CR2xPkM6.js → memory-write-execute-OFjlRF1Q.js} +1 -1
  46. package/dist/ui/assets/{merge-folded-cost-into-frozen-DGFRZr8w.js → merge-folded-cost-into-frozen-BJEahBak.js} +1 -1
  47. package/dist/ui/assets/{new-session-a6dfNueK.js → new-session-C2CUN9CK.js} +2 -2
  48. package/dist/ui/assets/{oauth-bootstrap-DbLdWmwH.js → oauth-bootstrap-kQV-ApxQ.js} +2 -2
  49. package/dist/ui/assets/{onboarding-orchestrator-DdZvvY86.js → onboarding-orchestrator-Qmi8eC_W.js} +1 -1
  50. package/dist/ui/assets/{openai-codex-BIP2Kh9C.js → openai-codex-BsOQFwDF.js} +1 -1
  51. package/dist/ui/assets/{openai-codex-z4Lu2ODt.js → openai-codex-CDKs8rfm.js} +1 -1
  52. package/dist/ui/assets/{openrouter-CfwLTUO0.js → openrouter-BMRywMxP.js} +1 -1
  53. package/dist/ui/assets/{openrouter-0F8vnm_d.js → openrouter-DaE-AR4d.js} +1 -1
  54. package/dist/ui/assets/{openrouter-free-DwxjivHH.js → openrouter-free-CJqeqy0w.js} +1 -1
  55. package/dist/ui/assets/{openrouter-free-Ce3wKoGB.js → openrouter-free-D4_D193L.js} +1 -1
  56. package/dist/ui/assets/{openrouter-oauth-Bs2hcreb.js → openrouter-oauth-DQ2BZQ76.js} +1 -1
  57. package/dist/ui/assets/{openrouter-oauth-CcudG5aF.js → openrouter-oauth-VaLilPlU.js} +1 -1
  58. package/dist/ui/assets/{panel-rpc-handlers-DT7jyoS7.js → panel-rpc-handlers-DppQp5Ht.js} +2 -2
  59. package/dist/ui/assets/{panelize-shell-X_ffQeXb.js → panelize-shell-CWnFj3HZ.js} +1 -1
  60. package/dist/ui/assets/{pi-edit-execution-D0OStMjZ.js → pi-edit-execution-BX6jyKrY.js} +1 -1
  61. package/dist/ui/assets/{provider-B6iHPDPG.js → provider-CtZqLIDr.js} +1 -1
  62. package/dist/ui/assets/{provider-DZyd5Bwt.js → provider-DLFgcLvq.js} +1 -1
  63. package/dist/ui/assets/{provider-settings-BCiSx1oK.js → provider-settings-CCOdU49C.js} +1 -1
  64. package/dist/ui/assets/provider-store-access-BOyP-rro.js +1 -0
  65. package/dist/ui/assets/provider-store-access-CKv-_pwN.js +1 -0
  66. package/dist/ui/assets/{providers-CHrSfBOX.js → providers-BMg5lDBT.js} +1 -1
  67. package/dist/ui/assets/{providers-cXirr_J4.js → providers-DgvjtRKn.js} +2 -2
  68. package/dist/ui/assets/{quick-llm-Bz6pd50i.js → quick-llm-DKtELPDd.js} +1 -1
  69. package/dist/ui/assets/{realm-inprocess-vJJC4OaB.js → realm-inprocess-Bg12y3AZ.js} +2 -2
  70. package/dist/ui/assets/{realm-unhandled-rejections-HAu3i6vp.js → realm-unhandled-rejections-D-NqnRBD.js} +1 -1
  71. package/dist/ui/assets/{realm-unhandled-rejections-boYLJFNB.js → realm-unhandled-rejections-DfSVIehf.js} +1 -1
  72. package/dist/ui/assets/{remote-terminal-view-SxT8T6zD.js → remote-terminal-view-BeCVkonN.js} +2 -2
  73. package/dist/ui/assets/{restore-CbQrLxVL.js → restore-BY2xPKRI.js} +1 -1
  74. package/dist/ui/assets/{run-B0g8XTeC.js → run-Cq5gNOGb.js} +2 -2
  75. package/dist/ui/assets/{run-pkRkZ2EZ.js → run-Dj2TQibJ.js} +1 -1
  76. package/dist/ui/assets/{run-BvFDHT6Q.js → run-UGPfXsQp.js} +2 -2
  77. package/dist/ui/assets/{run-BiN6qTlm.js → run-ZJTWBDxE.js} +2 -2
  78. package/dist/ui/assets/{serve-command-CcJAUYO-.js → serve-command-Sz15Iqdt.js} +2 -2
  79. package/dist/ui/assets/{serve-runtime-DaZWYB0l.js → serve-runtime-B92_QFyG.js} +1 -1
  80. package/dist/ui/assets/{session-command-memory-Dittb53J.js → session-command-memory-DLiyeHi2.js} +2 -2
  81. package/dist/ui/assets/{session-jsonl-fZa5oQ5W.js → session-jsonl-Dz8_tTX3.js} +1 -1
  82. package/dist/ui/assets/{session-search-index-CeID40Ue.js → session-search-index-H7LQwxpq.js} +1 -1
  83. package/dist/ui/assets/{setup-feature-flags-remote-CcXw8KYL.js → setup-feature-flags-remote-COW4xMXU.js} +1 -1
  84. package/dist/ui/assets/{setup-model-catalog-hAfR6L4O.js → setup-model-catalog-BCBX3dQm.js} +1 -1
  85. package/dist/ui/assets/{silent-renew-backoff-C5Li3dzv.js → silent-renew-backoff-CdEigXOa.js} +1 -1
  86. package/dist/ui/assets/slicc-version-D8dfmSwi.js +1 -0
  87. package/dist/ui/assets/{soundscape-CQ7H2hy6.js → soundscape-CucFrAG4.js} +1 -1
  88. package/dist/ui/assets/{speak-CHeES24L.js → speak-Byxy1cxH.js} +1 -1
  89. package/dist/ui/assets/{sprinkle-manager-Cf17SDkH.js → sprinkle-manager-BPr0HtXO.js} +1 -1
  90. package/dist/ui/assets/{sprinkle-renderer-PxzJS-yU.js → sprinkle-renderer-DtfJeCjW.js} +1 -1
  91. package/dist/ui/assets/{ssh-BeqALvgX.js → ssh-DxTaezVV.js} +1 -1
  92. package/dist/ui/assets/{sudo-Q8A6zScY.js → sudo-D5G8nAEP.js} +1 -1
  93. package/dist/ui/assets/{supervisor-vHsdQpxe.js → supervisor-CTgcfVsj.js} +1 -1
  94. package/dist/ui/assets/{sync-dialog-C4k1OKuW.js → sync-dialog-tK_oLsa2.js} +1 -1
  95. package/dist/ui/assets/{tab-BxQIB_Z9.js → tab-DMcjnFL6.js} +1 -1
  96. package/dist/ui/assets/{transformers-env-Blo4IUup.js → transformers-env-BpD8zkhr.js} +1 -1
  97. package/dist/ui/assets/{tray-leader-CvZqbzTi.js → tray-leader-C-vtUGeZ.js} +1 -1
  98. package/dist/ui/assets/{tray-leave-runtime-PppoOGBh.js → tray-leave-runtime-ylegDAag.js} +1 -1
  99. package/dist/ui/assets/{tray-sidecar-CCT9oWkN.js → tray-sidecar-DketrSoJ.js} +1 -1
  100. package/dist/ui/assets/{upgrade-detection-B0TO5jPk.js → upgrade-detection-B1bWQLUI.js} +1 -1
  101. package/dist/ui/assets/{upgrade-to-seven-BOZmZjHv.js → upgrade-to-seven-2JzqV_NN.js} +1 -1
  102. package/dist/ui/assets/{voice-reply-BYz5N7j3.js → voice-reply-BeDf1Eoj.js} +1 -1
  103. package/dist/ui/assets/{wc-attach-CegC3Q1p.js → wc-attach-DPK8qMs8.js} +2 -2
  104. package/dist/ui/assets/{wc-browser-E9A11Zq-.js → wc-browser-DwGHDJpw.js} +1 -1
  105. package/dist/ui/assets/{wc-computers-BvtEpsvP.js → wc-computers-NV0xqorT.js} +1 -1
  106. package/dist/ui/assets/{wc-detached-BtTYBDQO.js → wc-detached-XW9hDJWT.js} +1 -1
  107. package/dist/ui/assets/{wc-extension-DGKPik2g.js → wc-extension-CA0Rye1M.js} +2 -2
  108. package/dist/ui/assets/{wc-follower-B-fzMSwD.js → wc-follower-CNSqPxwu.js} +3 -3
  109. package/dist/ui/assets/{wc-follower-oauth-CinrMlsT.js → wc-follower-oauth-C12JevMz.js} +1 -1
  110. package/dist/ui/assets/{wc-gelatiere-D--ec7Ws.js → wc-gelatiere-D8_ICozF.js} +1 -1
  111. package/dist/ui/assets/{wc-live-CwXC0MTo.js → wc-live-BGghnVEZ.js} +5 -5
  112. package/dist/ui/assets/{wc-nav-DkzJsemp.js → wc-nav-pgC7lZ_e.js} +2 -2
  113. package/dist/ui/assets/{wc-onboarding-CabGlqSX.js → wc-onboarding-B3z1VJVL.js} +2 -2
  114. package/dist/ui/assets/{wc-permissions-dlz2jNFP.js → wc-permissions-C6ZO7GSp.js} +2 -2
  115. package/dist/ui/assets/{wc-placeholder-qb48qGE-.js → wc-placeholder-a79RdN0c.js} +2 -2
  116. package/dist/ui/assets/{wc-profile-export-D5etx4NE.js → wc-profile-export-3j3r-PvX.js} +3 -3
  117. package/dist/ui/assets/{wc-secret-request-DO0zLqzG.js → wc-secret-request-Dr_WBSy1.js} +1 -1
  118. package/dist/ui/assets/{wc-settings-Bo0cfYxg.js → wc-settings-DIK5qTe6.js} +3 -3
  119. package/dist/ui/assets/{wc-shell-CGwFwfRX.js → wc-shell-CtD6cEOB.js} +3 -3
  120. package/dist/ui/assets/{wc-shortcut-config-TiApvYtS.js → wc-shortcut-config-DfWdIWZh.js} +1 -1
  121. package/dist/ui/assets/{wc-sprinkles-DAFEb6wX.js → wc-sprinkles-BbzZAziH.js} +2 -2
  122. package/dist/ui/assets/{wc-transcript-export-87IRE-GF.js → wc-transcript-export-Bsci1Ikg.js} +2 -2
  123. package/dist/ui/assets/{wc-tray-Dh4qcAvs.js → wc-tray-F3DuOIkg.js} +4 -4
  124. package/dist/ui/assets/welcome-detection-C-OEkh_4.js +1 -0
  125. package/dist/ui/assets/{whisper-session-CwvOoomV.js → whisper-session-CJOEMXH-.js} +2 -2
  126. package/dist/ui/assets/{xai-grok-CSdf9tu8.js → xai-grok-B5ygwp6f.js} +1 -1
  127. package/dist/ui/assets/{xai-grok-CdZC-Gft.js → xai-grok-DLaW__ye.js} +1 -1
  128. package/dist/ui/index.html +3 -3
  129. package/dist/ui/packages/webapp/index.html +3 -3
  130. package/dist/ui/packages/webapp/upgrade-to-seven.html +1 -1
  131. package/dist/ui/upgrade-to-seven.html +1 -1
  132. package/package.json +4 -5
  133. package/dist/ui/assets/cdp-D2CN5KMz.js +0 -948
  134. package/dist/ui/assets/provider-store-access-BxY7hDro.js +0 -1
  135. package/dist/ui/assets/provider-store-access-C7RHnTRL.js +0 -1
  136. package/dist/ui/assets/slicc-version-C9rhno0l.js +0 -1
  137. package/dist/ui/assets/welcome-detection-ZfgEe90l.js +0 -1
@@ -1,4 +1,4 @@
1
- import{t as e}from"./logger-Cx6Y120U.js";import{r as t,t as n}from"./base64-BPBW1Gzr.js";import{n as r}from"./bridge-protocol-31SWTdS5.js";import{a as i,n as a,o,s,t as c}from"./handoff-link-B3It6xQY.js";import{d as l,f as u,i as d,u as f,w as p}from"./account-store-BwcT7LDC.js";import{c as m,d as h,n as g,r as _,s as v}from"./proxied-fetch-1DfC_94U.js";import{t as ee}from"./sha256-DynDhwRL.js";import{t as te}from"./runtime-env-DadgceZk.js";import{t as ne}from"./slugify-BYJ6QVAt.js";import{i as re,n as ie,r as ae,t as oe}from"./host-command-CkJyrXy3.js";import{a as se,c as ce,d as y,f as le,i as ue,l as de,m as fe,n as pe,o as me,p as he,r as ge,s as _e,t as ve,u as ye}from"./snapshot-Cb8PXNj1.js";import{n as be,t as b}from"./panel-rpc-accessor-B4BfPLSo.js";import{a as xe,c as Se,n as Ce,o as we,s as Te,t as Ee}from"./feature-flags-CoR3q8DD.js";import{t as De}from"./providers-CHrSfBOX.js";import{r as Oe}from"./binary-cache-HVfvmwmL.js";import{i as ke,n as Ae,r as je}from"./fetch-body-CuwTaJC_.js";import{s as Me,t as Ne}from"./api-endpoint-D8lUKmPu.js";import{t as Pe}from"./compat-CuWVDYYO.js";import{t as Fe}from"./utf16-clip-Dcxt-q1C.js";import{n as Ie,t as Le}from"./mime-types-D7IV6i7k.js";import"./core-TaEErdII.js";import{n as Re,t as ze}from"./float-topology-87nCRxRw.js";import{t as Be}from"./secrets-bridge-client-DlJPW3h4.js";import{a as Ve,i as He,n as Ue,r as We}from"./tool-ui-blvQ8qgI.js";import{a as Ge,i as Ke,n as x,t as S}from"./path-utils-DNJG-zQf.js";import{n as qe,r as Je,t as Ye}from"./merge-file-core-YFxa1Gy8.js";import{n as Xe,t as Ze}from"./types-D8gIX-W-.js";import{i as Qe}from"./mount-index-LvDi_MEB.js";import{a as $e,i as et,n as tt,o as nt,s as rt,t as it}from"./signed-fetch-DcYblAfC.js";import{o as at}from"./mount-table-store-xM3U8UHg.js";import{t as ot}from"./remote-cache-MMXYpOmA.js";import{n as st}from"./fs-BhKa6zpE.js";import{a as ct}from"./tray-leader-status-BPM2zVsj.js";import{n as lt,t as ut}from"./slicc-version-C9rhno0l.js";import{a as dt,i as C,n as ft,r as pt,t as mt}from"./browser-4sjVvKih.js";import{t as w}from"./subcommand-flags-RpCj0auy.js";import{n as ht,r as gt,t as T}from"./subcommand-help-CgO7wRS5.js";import{n as _t}from"./cost-command-CG3mKA1r.js";import{d as vt,g as yt,i as bt,n as xt,o as St}from"./sudoers-2C-BpgXh.js";import{t as Ct}from"./sudo-refusal-DVwTXFRE.js";import{n as wt}from"./types-Dj5TU-Qg.js";import{a as Tt,c as Et,i as Dt,l as Ot,n as kt,o as At,r as jt,t as Mt}from"./types-JfhqX7lD.js";import{n as E,t as Nt}from"./boundary-DjgipyWT.js";import"./rest-paths-Dia19u9P.js";import{t as Pt}from"./html-B_Hg2WOy.js";import{n as Ft}from"./llm-session-id-BkEQhxBR.js";import{t as It}from"./src-SFACrjnb.js";import{i as Lt,o as Rt}from"./browser-DKcnER7J.js";import{a as zt,c as Bt,i as Vt,n as Ht,o as Ut,s as Wt,t as Gt}from"./pipe-status-BBrT3VeG.js";import{i as Kt,r as qt,t as Jt}from"./mount-picker-popup-DdbRdPNA.js";import{t as Yt}from"./buffer-C6ncbtB_.js";import"./buffer-polyfill-CaN2liDv.js";import{A as Xt,B as D,C as Zt,D as O,E as Qt,F as $t,G as en,H as k,I as A,J as tn,K as nn,L as rn,M as an,N as on,O as sn,P as cn,R as ln,S as un,T as dn,U as fn,V as pn,W as mn,Y as hn,_ as gn,a as _n,b as vn,c as yn,d as bn,f as xn,g as Sn,h as Cn,i as wn,j as Tn,k as En,l as Dn,m as On,n as kn,o as An,p as j,q as jn,r as Mn,s as Nn,t as Pn,u as Fn,v as In,w as Ln,x as Rn,y as zn,z as Bn}from"./isomorphic-git-NKOLn8fc.js";import"./global-db-Bfy_NRtT.js";import{C as Vn,S as M,a as Hn,b as Un,c as Wn,d as Gn,f as Kn,g as qn,i as Jn,l as Yn,m as Xn,n as Zn,o as Qn,p as $n,r as er,s as tr,t as nr,u as rr,x as ir,y as N}from"./state-CE4gk_V7.js";import{a as ar,i as or,r as sr,t as cr}from"./git-config-BGMPIzAV.js";import{a as lr,i as ur,o as P,t as dr}from"./just-bash-compat-DWUHpp9U.js";import{h as fr,i as pr,r as mr}from"./stdio-tty-DhcdDEsf.js";import{i as hr,r as gr,t as _r}from"./home-dir-DAXEFyny.js";import{i as vr,r as yr}from"./global-prefix-DqCuANmV.js";import{t as br}from"./wasm-programs-BUEs4fiZ.js";import{a as xr,c as Sr,n as Cr,r as wr,s as Tr}from"./jsh-discovery-D7D5iKYT.js";import{C as Er,a as Dr,b as Or,c as kr,d as Ar,f as jr,h as Mr,i as Nr,l as Pr,m as Fr,n as Ir,o as Lr,p as Rr,r as zr,s as Br,t as F,u as Vr,v as Hr,y as Ur}from"./shared-DPVU7o5t.js";import{_ as Wr,a as Gr,b as Kr,d as qr,f as Jr,g as Yr,h as Xr,i as Zr,l as Qr,m as $r,p as ei,r as ti,s as ni,u as ri,v as ii,y as ai}from"./require-guards-CnSYqjDO.js";import{S as oi,_ as si,b as ci,c as li,d as ui,f as di,g as fi,h as pi,l as mi,m as hi,n as gi,o as _i,p as vi,t as yi,u as bi,v as xi,x as Si,y as Ci}from"./jsh-executor-C7A8rKtA.js";import{n as wi,t as Ti}from"./esbuild-wasm-D-czepwO.js";import{n as Ei}from"./wasm-compiler-Ct7QZURL.js";import{a as Di,o as Oi,s as ki,t as Ai}from"./usb-device-registry-DEKs171n.js";import{i as ji,r as Mi,t as Ni}from"./script-catalog-DDeMaTU_.js";import{a as Pi,c as Fi,o as Ii,s as Li,t as Ri}from"./types-BR5TkXSs.js";import{a as zi,c as Bi,d as Vi,f as Hi,n as Ui,r as Wi,u as Gi}from"./github-zip-D0xv38-9.js";import{i as Ki,t as qi}from"./github-auth-LOox7uT2.js";import{a as Ji,i as Yi,o as Xi,r as Zi,t as Qi}from"./provenance-C7BfNno_.js";import{a as $i,c as ea,i as ta,n as na,o as ra,r as ia,s as aa}from"./github-install-Dh2WfAse.js";import{n as oa,t as sa}from"./magick-wasm-BItevhnv.js";import{i as ca,n as la,r as ua,t as da}from"./pdf-raster-D30vfUF_.js";import{n as fa}from"./lick-target-env-8JxfVcIV.js";import{t as pa}from"./tmpdir-env-ate4iNcK.js";import{n as ma,t as ha}from"./keyboard-TcuVIW9F.js";import{n as ga,t as _a}from"./hf-defaults-BwJdGLgk.js";import{t as va}from"./ffmpeg-wasm-xaOnfsRx.js";import{t as ya}from"./local-llm-DypvX2te.js";import{i as ba,n as xa,r as Sa,t as Ca}from"./tar-BjnO16Uf.js";import{a as wa,c as Ta,i as Ea,o as Da,r as Oa,s as ka}from"./v86-vm-BlgIo0B_.js";import{n as Aa,r as ja}from"./lick-urls-CgPiVwD-.js";let Ma=null;function Na(e){Ma=e!==null&&Number.isFinite(e)&&e>0?e:null}function Pa(){if(Ma!==null)return Ma;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const Fa=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function Ia(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=Fa.exec(t.split(`.`)[0]??``);if(!n||!t.includes(`.`))return null;let r=n[1].toLowerCase();return`${[r.slice(0,8),r.slice(8,12),r.slice(12,16),r.slice(16,20),r.slice(20)].join(`-`)}.${n[2].toLowerCase()}`}[`ghp_`,`gho_`,`ghu_`,`ghs_`,`ghr_`,`github_pat_`,`sk-`,`pk-`,`xoxb-`,`xoxp-`,`xoxa-`,`xoxs-`,`AKIA`,`ABIA`,`ACCA`,`ASIA`,`sk-ant-`,`Bearer `].sort((e,t)=>t.length-e.length);function La(e,t){let n=e.toLowerCase(),r=t.toLowerCase();if(n===`*`)return!0;if(!n.startsWith(`*.`))return n===r;let i=n.slice(1);return r.length>i.length&&r.endsWith(i)}function Ra(e,t){return e.some(e=>La(e,t))}const za=`slicc-transcript`,Ba=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],Va=/* @__PURE__ */ new Set(/* @__PURE__ */ `/export/format./export/producer/application./session/id./session/state./session/completeness/status./session/completeness/missing/*./conversations/*/id./conversations/*/kind./conversations/*/parentConversationId./conversations/*/messages/*/id./conversations/*/messages/*/role./conversations/*/messages/*/timestamp./conversations/*/messages/*/toolCallId./conversations/*/messages/*/content/*/type./conversations/*/messages/*/content/*/id./conversations/*/messages/*/content/*/name./conversations/*/messages/*/content/*/attachmentId./delegations/*/sourceConversationId./delegations/*/targetConversationId./delegations/*/toolCallId./attachments/*/id./attachments/*/path./attachments/*/sha256./attachments/*/sourceConversationId./attachments/*/sourceMessageId./attachments/*/handling./attachments/*/missingReason`.split(`.`));function Ha(e){return Va.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Ua=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const Wa=new Set(Ba),Ga=/^[0-9a-fA-F]{64}$/,Ka=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;function I(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qa(e){return typeof e==`string`&&Ga.test(e)}function Ja(e){return Ka.test(e)&&Number.isFinite(Date.parse(e))}function Ya(e,t){let n=t.map(e=>`"${e}"`),r=n[n.length-1];return n.length===2?`${e} must be ${n[0]} or ${r}`:`${e} must be ${n.slice(0,-1).join(`, `)}, or ${r}`}function Xa(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Ya(n,t)}:{ok:!0}}function Za(e,t,n){for(let r=0;r<e.length;r++){let i=t(e[r],`${n}[${r}]`);if(!i.ok)return i}return{ok:!0}}function Qa(e,t){let n=e.type;if(n===`text`){if(typeof e.text!=`string`)return{ok:!1,error:`${t}.text must be a string`}}else if(n===`tool-call`){if(typeof e.id!=`string`||e.id===``)return{ok:!1,error:`${t}.id must be a non-empty string`};if(typeof e.name!=`string`||e.name===``)return{ok:!1,error:`${t}.name must be a non-empty string`};if(!(`input`in e))return{ok:!1,error:`${t}.input must be present`}}else if(typeof e.attachmentId!=`string`||e.attachmentId===``)return{ok:!1,error:`${t}.attachmentId must be a non-empty string`};return{ok:!0}}function $a(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Xa(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?Qa(e,t):n}function eo(e,t){for(let n of[`input`,`output`,`cacheRead`,`cacheWrite`,`totalTokens`]){let r=e[n];if(typeof r!=`number`)return{ok:!1,error:`${t}.${n} must be a number`};if(!Number.isInteger(r)||r<0)return{ok:!1,error:`${t}.${n} must be a non-negative integer`}}return{ok:!0}}function to(e,t){for(let n of[`input`,`output`,`cacheRead`,`cacheWrite`,`total`]){let r=e[n];if(typeof r!=`number`)return{ok:!1,error:`${t}.${n} must be a number`};if(!Number.isFinite(r)||r<0)return{ok:!1,error:`${t}.${n} must be a finite non-negative number`}}return{ok:!0}}function no(e,t){let n=eo(e,t);if(!n.ok)return n;let r=e.cost;return I(r)?to(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function ro(e,t){if(typeof e.id!=`string`)return{ok:!1,error:`${t}.id must be a string`};if(typeof e.sequence!=`number`)return{ok:!1,error:`${t}.sequence must be a number`};let n=e.sequence;return!Number.isInteger(n)||n<1?{ok:!1,error:`${t}.sequence must be a positive integer`}:typeof e.timestamp==`string`?Ja(e.timestamp)?{ok:!0}:{ok:!1,error:`${t}.timestamp must be a valid ISO 8601 date-time string`}:{ok:!1,error:`${t}.timestamp must be a string`}}function io(e,t){let n=e.toolCallId;return typeof n!=`string`||n===``?{ok:!1,error:`${t}.toolCallId must be a non-empty string for tool-result messages`}:{ok:!0}}function ao(e,t){let n=e.usage;return n===void 0?{ok:!0}:I(n)?no(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function oo(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Xa(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=io(e,t);if(!n.ok)return n}let r=ro(e,t);if(!r.ok)return r;let i=e.content;if(!Array.isArray(i))return{ok:!1,error:`${t}.content must be an array`};let a=Za(i,$a,`${t}.content`);return a.ok?ao(e,t):a}function so(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};if(typeof e.id!=`string`)return{ok:!1,error:`${t}.id must be a string`};if(typeof e.name!=`string`)return{ok:!1,error:`${t}.name must be a string`};let n=Xa(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Za(r,oo,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function co(e,t){for(let n of[`id`,`path`,`originalName`,`mimeType`,`sha256`,`sourceConversationId`,`sourceMessageId`])if(typeof e[n]!=`string`)return{ok:!1,error:`${t}.${n} must be a string`};return{ok:!0}}function lo(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?{ok:!1,error:`${t}.path must be non-empty when present`}:qa(r)?!Number.isInteger(i)||i<0?{ok:!1,error:`${t}.byteLength must be a non-negative integer when present`}:e.missingReason===void 0?{ok:!0}:{ok:!1,error:`${t}.missingReason must be absent when present is true`}:{ok:!1,error:`${t}.sha256 must be a 64-char hex string when present`}}const uo=[`attachment-file-missing`,`attachment-association-unavailable`];function fo(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?Xa(e.missingReason,uo,`${t}.missingReason`):{ok:!1,error:`${t}.byteLength must be zero when not present`}:{ok:!1,error:`${t}.sha256 must be empty when not present`}:{ok:!1,error:`${t}.path must be empty when not present`}}function po(e,t){return e.present?lo(e,t):fo(e,t)}function mo(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};let n=co(e,t);if(!n.ok)return n;if(typeof e.byteLength!=`number`)return{ok:!1,error:`${t}.byteLength must be a number`};if(typeof e.present!=`boolean`)return{ok:!1,error:`${t}.present must be a boolean`};let r=Xa(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?po(e,t):r}function ho(e,t){let n=Xa(e.kind,[`json`,`attachment`],`${t}.kind`);if(!n.ok)return n;if(e.kind===`json`){if(typeof e.pointer!=`string`)return{ok:!1,error:`${t}.pointer must be a string`};let n=e.pointer;if(n!==``&&!n.startsWith(`/`))return{ok:!1,error:`${t}.pointer must be a valid RFC 6901 JSON pointer`}}else if(typeof e.attachmentId!=`string`||e.attachmentId===``)return{ok:!1,error:`${t}.attachmentId must be a non-empty string`};return{ok:!0}}function go(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};if(typeof e.id!=`string`)return{ok:!1,error:`${t}.id must be a string`};if(typeof e.category!=`string`)return{ok:!1,error:`${t}.category must be a string`};let n=Xa(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return I(r)?ho(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function _o(e,t){return I(e)?typeof e.sourceConversationId==`string`?typeof e.targetConversationId==`string`?{ok:!0}:{ok:!1,error:`${t}.targetConversationId must be a string`}:{ok:!1,error:`${t}.sourceConversationId must be a string`}:{ok:!1,error:`${t} must be a non-null object`}}function vo(e,t){return typeof e!=`string`||!Wa.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function yo(e){if(!I(e))return{ok:!1,error:`export must be a non-null object`};if(typeof e.id!=`string`)return{ok:!1,error:`export.id must be a string`};if(typeof e.generatedAt!=`string`)return{ok:!1,error:`export.generatedAt must be a string`};if(e.format!==`slicc-transcript`)return{ok:!1,error:`export.format must equal "slicc-transcript"`};let t=e.producer;return I(t)?t.application===`slicc`?typeof t.version==`string`?{ok:!0}:{ok:!1,error:`export.producer.version must be a string`}:{ok:!1,error:`export.producer.application must equal "slicc"`}:{ok:!1,error:`export.producer must be a non-null object`}}function bo(e){if(!I(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=Xa(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Za(e.missing,vo,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function xo(e){if(!I(e))return{ok:!1,error:`session must be a non-null object`};if(typeof e.id!=`string`)return{ok:!1,error:`session.id must be a string`};if(typeof e.title!=`string`)return{ok:!1,error:`session.title must be a string`};let t=Xa(e.state,[`active`,`frozen`],`session.state`);return t.ok?bo(e.completeness):t}function So(e){if(!I(e))return{ok:!1,error:`privacy must be a non-null object`};if(e.reasoningExcluded!==!0)return{ok:!1,error:`privacy.reasoningExcluded must be true`};let t=e.excludedReasoningBlocks;if(typeof t!=`number`)return{ok:!1,error:`privacy.excludedReasoningBlocks must be a number`};if(!Number.isInteger(t)||t<0)return{ok:!1,error:`privacy.excludedReasoningBlocks must be a non-negative integer`};if(e.binaryAttachments!==`included-unchanged`)return{ok:!1,error:`privacy.binaryAttachments must equal "included-unchanged"`};if(!I(e.redactionCounts))return{ok:!1,error:`privacy.redactionCounts must be a non-null object`};let n=e.redactions;return Array.isArray(n)?Za(n,go,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function Co(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Za(t,so,`conversations`);if(!n.ok)return n;let r=e.delegations;if(!Array.isArray(r))return{ok:!1,error:`delegations must be an array`};let i=Za(r,_o,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Za(a,mo,`attachments`):{ok:!1,error:`attachments must be an array`}}function wo(e){let t=/* @__PURE__ */ new Set,n=/* @__PURE__ */ new Set;for(let r of e){if(!I(r)||typeof r.id!=`string`)continue;if(t.has(r.id))return{ok:!1,error:`duplicate conversation id "${r.id}"`};t.add(r.id);let e=r.messages;if(Array.isArray(e)){for(let t of e)if(I(t)&&typeof t.id==`string`){if(n.has(t.id))return{ok:!1,error:`duplicate message id "${t.id}"`};n.add(t.id)}}}return{ok:!0}}function To(e){for(let t of e){if(!I(t))continue;let e=t.messages;if(!Array.isArray(e))continue;let n=typeof t.id==`string`?t.id:`?`,r=0;for(let t of e){if(!I(t)||typeof t.sequence!=`number`)continue;let e=t.sequence;if(e<=r)return{ok:!1,error:`sequences in conversation "${n}" must be strictly increasing`};r=e}}return{ok:!0}}function Eo(e){let t=[];for(let n of e){if(!I(n))continue;let e=n.content;if(Array.isArray(e))for(let n of e)I(n)&&n.type===`tool-call`&&typeof n.id==`string`&&t.push(n.id)}return t}function Do(e){let t=/* @__PURE__ */ new Set;for(let n of e){if(!I(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of Eo(e))t.add(n)}return t}function Oo(e,t){for(let n of e){if(!I(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of e){if(!I(n)||n.role!==`tool-result`)continue;let e=n.toolCallId;if(typeof e==`string`&&e!==``&&!t.has(e))return{ok:!1,error:`tool-result message references unknown toolCallId "${e}"`}}}return{ok:!0}}function ko(e){return Oo(e,Do(e))}function Ao(e,t){for(let n of e){if(!I(n)||n.type!==`attachment-ref`)continue;let e=n.attachmentId;if(typeof e!=`string`||!t.has(e))return{ok:!1,error:`attachment-ref references unknown attachmentId "${e}"`}}return{ok:!0}}function jo(e,t){for(let n of e){if(!I(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of e){if(!I(n))continue;let e=n.content;if(!Array.isArray(e))continue;let r=Ao(e,t);if(!r.ok)return r}}return{ok:!0}}function Mo(e,t){let n=/* @__PURE__ */ new Set;for(let e of t)I(e)&&typeof e.id==`string`&&n.add(e.id);return jo(e,n)}function No(e){let t=/* @__PURE__ */ new Map;for(let n of e){if(!I(n)||typeof n.id!=`string`)continue;let e=/* @__PURE__ */ new Set,r=n.messages;if(Array.isArray(r))for(let t of r)I(t)&&typeof t.id==`string`&&e.add(t.id);t.set(n.id,e)}return t}function Po(e,t){let n=No(t);for(let t=0;t<e.length;t++){let r=e[t];if(!I(r))continue;let i=r.sourceConversationId,a=r.sourceMessageId;if(typeof i!=`string`||typeof a!=`string`)continue;let o=n.get(i);if(!o)return{ok:!1,error:`attachments[${t}].sourceConversationId "${i}" does not exist`};if(!o.has(a))return{ok:!1,error:`attachments[${t}].sourceMessageId "${a}" does not exist in conversation "${i}"`}}return{ok:!0}}function Fo(e){let t=/* @__PURE__ */ new Map;for(let n of e){if(!I(n)||typeof n.id!=`string`)continue;let e=Array.isArray(n.messages)?n.messages:[];t.set(n.id,new Set(Eo(e)))}return t}function Io(e,t,n){for(let r=0;r<e.length;r++){let i=e[r];if(!I(i))continue;let a=i.sourceConversationId,o=i.targetConversationId;if(typeof a!=`string`||!t.has(a))return{ok:!1,error:`delegations[${r}].sourceConversationId "${a}" does not exist`};if(typeof o!=`string`||!t.has(o))return{ok:!1,error:`delegations[${r}].targetConversationId "${o}" does not exist`};let s=i.toolCallId;if(typeof s==`string`&&s!==``&&!n.get(a)?.has(s))return{ok:!1,error:`delegations[${r}].toolCallId "${s}" does not exist in source conversation "${a}"`}}return{ok:!0}}function Lo(e,t){let n=/* @__PURE__ */ new Set;for(let e of t)I(e)&&typeof e.id==`string`&&n.add(e.id);return Io(e,n,Fo(t))}function Ro(e,t,n){if(e.kind!==`attachment`)return{ok:!0};let r=e.attachmentId;return typeof r!=`string`||!t.has(r)?{ok:!1,error:`${n}.attachmentId "${r}" does not reference a known attachment`}:{ok:!0}}function zo(e,t){let n=/* @__PURE__ */ new Set;for(let e of t)I(e)&&typeof e.id==`string`&&n.add(e.id);for(let t=0;t<e.length;t++){let r=e[t];if(!I(r))continue;let i=r.target;if(!I(i))continue;let a=Ro(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function Bo(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=wo(t);if(!o.ok)return o;let s=To(t);if(!s.ok)return s;let c=ko(t);if(!c.ok)return c;let l=Mo(t,n);if(!l.ok)return l;let u=Po(n,t);if(!u.ok)return u;let d=Lo(r,t);return d.ok?zo(a,n):d}function Vo(e){let t=Co(e);return t.ok?Bo(e):t}function Ho(e){if(!I(e))return{ok:!1,error:`document must be a non-null object`};if(e.schemaVersion!==1)return{ok:!1,error:`schemaVersion must equal 1`};let t=yo(e.export);if(!t.ok)return t;let n=xo(e.session);if(!n.ok)return n;let r=So(e.privacy);return r.ok?Vo(e):r}async function Uo(e,t,n){let r=await n({method:`GET`,path:`/${e}/sites/${t}/config.json`,origin:nt});if(r.status===401||r.status===403)throw Error(`not authorized to read the site config for ${e}/${t} — log in via Settings → Providers → Adobe, or pass --backend to skip the probe`);if(r.status===404)throw Error(`no site config for ${e}/${t} — check the org and site names`);if(r.status>=400)throw Error(`site config probe failed for ${e}/${t}: ${r.status}`);let i;try{i=await r.json()}catch(n){throw Error(`site config for ${e}/${t} is not JSON: ${n instanceof Error?n.message:String(n)}`)}let a=i.content?.source?.url;return{backend:Wo(a),sourceUrl:a}}function Wo(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const Go=`slicc-sprinkle-routes`;function Ko(){try{let e=localStorage.getItem(Go);return e?JSON.parse(e):{}}catch{return{}}}function qo(e){try{localStorage.setItem(Go,JSON.stringify(e))}catch{}}function Jo(e){return Ko()[e]}function Yo(e,t){let n=Ko();n[e]=t,qo(n)}function Xo(e){let t=Ko();delete t[e],qo(t)}function Zo(){return Ko()}function Qo(e,t,n){return Et(t,n,`${e} adapter does not implement ${t}.${n}`)}function $o(e,t,n,r){let i=n.filter(e=>typeof r?.[e]==`function`),a=n.map(n=>{let i=r?.[n];return[n,typeof i==`function`?i:()=>Promise.resolve(Qo(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function es(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:$o(t,`browser`,kt,e.browser),network:$o(t,`network`,Tt,e.network),secrets:$o(t,`secrets`,At,e.secrets),devices:$o(t,`devices`,jt,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:$o(t,`mounts`,Dt,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:$o(t,`approvals`,Mt,e.approvals)}}function ts(e={}){return es({adapter:`connect`,pageGestures:e.pageGestures})}function ns(e){let t=Nt(()=>import(`./extension-ops-BWWe8FOb.js`).then(t=>t.createExtensionOps(e)));return es({adapter:e.adapter,pageGestures:e.pageGestures,network:{crossOriginFetch:e=>E(`network`,`crossOriginFetch`,async()=>(await t()).crossOriginFetch(e))},secrets:{listMaskedEnv:()=>E(`secrets`,`listMaskedEnv`,async()=>(await t()).secrets.listMaskedEnv()),getMasked:e=>E(`secrets`,`getMasked`,async()=>(await t()).secrets.getMasked(e)),set:e=>E(`secrets`,`set`,async()=>(await t()).secrets.set(e)),delete:e=>E(`secrets`,`delete`,async()=>(await t()).secrets.delete(e))},mounts:{signRequest:e=>E(`mounts`,`signRequest`,async()=>(await t()).signRequest(e))},approvals:{request:e=>E(`approvals`,`request`,async()=>(await t()).requestApproval(e))}})}function rs(e={}){let t=Nt(()=>import(`./rest-ops-DdaQHTK4.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return es({adapter:`node-rest`,pageGestures:e.pageGestures,network:{localNodeServer:()=>Promise.resolve({ok:!0,value:{available:!0}}),crossOriginFetch:e=>E(`network`,`crossOriginFetch`,async()=>(await t()).crossOriginFetch(e))},secrets:{listMaskedEnv:()=>E(`secrets`,`listMaskedEnv`,async()=>(await t()).secrets.listMaskedEnv()),getMasked:e=>E(`secrets`,`getMasked`,async()=>(await t()).secrets.getMasked(e)),set:e=>E(`secrets`,`set`,async()=>(await t()).secrets.set(e)),delete:e=>E(`secrets`,`delete`,async()=>(await t()).secrets.delete(e))},mounts:{signRequest:e=>E(`mounts`,`signRequest`,async()=>(await t()).signRequest(e))},approvals:{request:e=>E(`approvals`,`request`,async()=>(await t()).requestApproval(e))}})}function is(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return rs({pageGestures:n});case`extension-direct`:case`extension-delegate`:return ns({adapter:e,pageGestures:n});case`connect`:return ts({pageGestures:n})}}const as=e(`quick-llm`);async function os(e){let t=d();if(!t)return as.debug(`No API key for active provider — skipping`),null;let n=u(),r=l(),i;if(i=e.modelId?us(n,e.modelId)??us(n,r):ss(n,r),!i)return as.debug(`No model available for provider`,{providerId:n}),null;let a=Fe(e.prompt),o=e.system===void 0?void 0:Fe(e.system),s={role:`user`,content:a,timestamp:Date.now()},c={};i.provider===`adobe`&&(c[`X-Session-Id`]=ds());try{let n=(await Pe(i,{systemPrompt:o,messages:[s]},{apiKey:t,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(c).length>0?c:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return n.length>0?n:null}catch(e){return as.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function ss(e,t){let n=f(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=ls(r.id),a=n.filter(e=>cs(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function cs(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function ls(e){let t=e.toLowerCase();return t.includes(`claude`)?`claude`:t.includes(`gemini`)?`gemini`:t.includes(`grok`)?`grok`:/^(gpt|o\d)/.test(t)?`gpt`:`unknown`}function us(e,t){return f(e).find(e=>e.id===t)}function ds(){return Ft(`ui-quick-llm`)}const fs=e(`sudo-suggest`),ps=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
1
+ import{t as e}from"./logger-Cx6Y120U.js";import{r as t,t as n}from"./base64-BPBW1Gzr.js";import{n as r}from"./bridge-protocol-31SWTdS5.js";import{a as i,n as a,o,s,t as c}from"./handoff-link-B3It6xQY.js";import{d as l,f as u,i as d,u as f,w as p}from"./account-store-BzvHM2hU.js";import{c as m,d as h,n as g,r as _,s as v}from"./proxied-fetch-1DfC_94U.js";import{t as ee}from"./sha256-DynDhwRL.js";import{t as te}from"./runtime-env-DadgceZk.js";import{t as ne}from"./slugify-BYJ6QVAt.js";import{i as re,n as ie,r as ae,t as oe}from"./host-command-CkJyrXy3.js";import{a as se,c as ce,d as y,f as le,i as ue,l as de,m as fe,n as pe,o as me,p as he,r as ge,s as _e,t as ve,u as ye}from"./snapshot-Cb8PXNj1.js";import{n as be,t as b}from"./panel-rpc-accessor-B4BfPLSo.js";import{a as xe,c as Se,n as Ce,o as we,s as Te,t as Ee}from"./feature-flags-CoR3q8DD.js";import{t as De}from"./providers-BMg5lDBT.js";import{r as Oe}from"./binary-cache-HVfvmwmL.js";import{i as ke,n as Ae,r as je}from"./fetch-body-CuwTaJC_.js";import{s as Me,t as Ne}from"./api-endpoint-D8lUKmPu.js";import{t as Pe}from"./compat-CuWVDYYO.js";import{t as Fe}from"./utf16-clip-Dcxt-q1C.js";import{n as Ie,t as Le}from"./mime-types-D7IV6i7k.js";import"./core-TaEErdII.js";import{n as Re,t as ze}from"./float-topology-87nCRxRw.js";import{t as Be}from"./secrets-bridge-client-DlJPW3h4.js";import{a as Ve,i as He,n as Ue,r as We}from"./tool-ui-blvQ8qgI.js";import{a as Ge,i as Ke,n as x,t as S}from"./path-utils-DNJG-zQf.js";import{n as qe,r as Je,t as Ye}from"./merge-file-core-YFxa1Gy8.js";import{n as Xe,t as Ze}from"./types-D8gIX-W-.js";import{i as Qe}from"./mount-index-LvDi_MEB.js";import{a as $e,i as et,n as tt,o as nt,s as rt,t as it}from"./signed-fetch-DcYblAfC.js";import{o as at}from"./mount-table-store-xM3U8UHg.js";import{t as ot}from"./remote-cache-MMXYpOmA.js";import{n as st}from"./fs-BhKa6zpE.js";import{a as ct}from"./tray-leader-status-BPM2zVsj.js";import{n as lt,t as ut}from"./slicc-version-D8dfmSwi.js";import{a as dt,i as C,n as ft,r as pt,t as mt}from"./browser-4sjVvKih.js";import{t as w}from"./subcommand-flags-RpCj0auy.js";import{n as ht,r as gt,t as T}from"./subcommand-help-CgO7wRS5.js";import{n as _t}from"./cost-command-CG3mKA1r.js";import{d as vt,g as yt,i as bt,n as xt,o as St}from"./sudoers-2C-BpgXh.js";import{t as Ct}from"./sudo-refusal-DVwTXFRE.js";import{n as wt}from"./types-Dj5TU-Qg.js";import{a as Tt,c as Et,i as Dt,l as Ot,n as kt,o as At,r as jt,t as Mt}from"./types-JfhqX7lD.js";import{n as E,t as Nt}from"./boundary-DjgipyWT.js";import"./rest-paths-Dia19u9P.js";import{t as Pt}from"./html-B_Hg2WOy.js";import{n as Ft}from"./llm-session-id-BkEQhxBR.js";import{t as It}from"./src-SFACrjnb.js";import{i as Lt,o as Rt}from"./browser-DKcnER7J.js";import{a as zt,c as Bt,i as Vt,n as Ht,o as Ut,s as Wt,t as Gt}from"./pipe-status-BBrT3VeG.js";import{i as Kt,r as qt,t as Jt}from"./mount-picker-popup-DdbRdPNA.js";import{t as Yt}from"./buffer-C6ncbtB_.js";import"./buffer-polyfill-CaN2liDv.js";import{A as Xt,B as D,C as Zt,D as O,E as Qt,F as $t,G as en,H as k,I as A,J as tn,K as nn,L as rn,M as an,N as on,O as sn,P as cn,R as ln,S as un,T as dn,U as fn,V as pn,W as mn,Y as hn,_ as gn,a as _n,b as vn,c as yn,d as bn,f as xn,g as Sn,h as Cn,i as wn,j as Tn,k as En,l as Dn,m as On,n as kn,o as An,p as j,q as jn,r as Mn,s as Nn,t as Pn,u as Fn,v as In,w as Ln,x as Rn,y as zn,z as Bn}from"./isomorphic-git-NKOLn8fc.js";import"./global-db-Bfy_NRtT.js";import{C as Vn,S as M,a as Hn,b as Un,c as Wn,d as Gn,f as Kn,g as qn,i as Jn,l as Yn,m as Xn,n as Zn,o as Qn,p as $n,r as er,s as tr,t as nr,u as rr,x as ir,y as N}from"./state-CE4gk_V7.js";import{a as ar,i as or,r as sr,t as cr}from"./git-config-BGMPIzAV.js";import{a as lr,i as ur,o as P,t as dr}from"./just-bash-compat-DWUHpp9U.js";import{h as fr,i as pr,r as mr}from"./stdio-tty-DhcdDEsf.js";import{i as hr,r as gr,t as _r}from"./home-dir-DAXEFyny.js";import{i as vr,r as yr}from"./global-prefix-DqCuANmV.js";import{t as br}from"./wasm-programs-BUEs4fiZ.js";import{a as xr,c as Sr,n as Cr,r as wr,s as Tr}from"./jsh-discovery-D7D5iKYT.js";import{C as Er,a as Dr,b as Or,c as kr,d as Ar,f as jr,h as Mr,i as Nr,l as Pr,m as Fr,n as Ir,o as Lr,p as Rr,r as zr,s as Br,t as F,u as Vr,v as Hr,y as Ur}from"./shared-DPVU7o5t.js";import{_ as Wr,a as Gr,b as Kr,d as qr,f as Jr,g as Yr,h as Xr,i as Zr,l as Qr,m as $r,p as ei,r as ti,s as ni,u as ri,v as ii,y as ai}from"./require-guards-CnSYqjDO.js";import{S as oi,_ as si,b as ci,c as li,d as ui,f as di,g as fi,h as pi,l as mi,m as hi,n as gi,o as _i,p as vi,t as yi,u as bi,v as xi,x as Si,y as Ci}from"./jsh-executor-VmbBf-f3.js";import{n as wi,t as Ti}from"./esbuild-wasm-D-czepwO.js";import{n as Ei}from"./wasm-compiler-Ct7QZURL.js";import{a as Di,o as Oi,s as ki,t as Ai}from"./usb-device-registry-DEKs171n.js";import{i as ji,r as Mi,t as Ni}from"./script-catalog-DDeMaTU_.js";import{a as Pi,c as Fi,o as Ii,s as Li,t as Ri}from"./types-BR5TkXSs.js";import{a as zi,c as Bi,d as Vi,f as Hi,n as Ui,r as Wi,u as Gi}from"./github-zip-D0xv38-9.js";import{i as Ki,t as qi}from"./github-auth-LOox7uT2.js";import{a as Ji,i as Yi,o as Xi,r as Zi,t as Qi}from"./provenance-C7BfNno_.js";import{a as $i,c as ea,i as ta,n as na,o as ra,r as ia,s as aa}from"./github-install-Dh2WfAse.js";import{n as oa,t as sa}from"./magick-wasm-BItevhnv.js";import{i as ca,n as la,r as ua,t as da}from"./pdf-raster-D30vfUF_.js";import{n as fa}from"./lick-target-env-8JxfVcIV.js";import{t as pa}from"./tmpdir-env-ate4iNcK.js";import{n as ma,t as ha}from"./keyboard-TcuVIW9F.js";import{n as ga,t as _a}from"./hf-defaults-BwJdGLgk.js";import{t as va}from"./ffmpeg-wasm-xaOnfsRx.js";import{t as ya}from"./local-llm-BaVoosk9.js";import{i as ba,n as xa,r as Sa,t as Ca}from"./tar-BjnO16Uf.js";import{a as wa,c as Ta,i as Ea,o as Da,r as Oa,s as ka}from"./v86-vm-BlgIo0B_.js";import{n as Aa,r as ja}from"./lick-urls-CgPiVwD-.js";let Ma=null;function Na(e){Ma=e!==null&&Number.isFinite(e)&&e>0?e:null}function Pa(){if(Ma!==null)return Ma;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const Fa=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function Ia(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=Fa.exec(t.split(`.`)[0]??``);if(!n||!t.includes(`.`))return null;let r=n[1].toLowerCase();return`${[r.slice(0,8),r.slice(8,12),r.slice(12,16),r.slice(16,20),r.slice(20)].join(`-`)}.${n[2].toLowerCase()}`}[`ghp_`,`gho_`,`ghu_`,`ghs_`,`ghr_`,`github_pat_`,`sk-`,`pk-`,`xoxb-`,`xoxp-`,`xoxa-`,`xoxs-`,`AKIA`,`ABIA`,`ACCA`,`ASIA`,`sk-ant-`,`Bearer `].sort((e,t)=>t.length-e.length);function La(e,t){let n=e.toLowerCase(),r=t.toLowerCase();if(n===`*`)return!0;if(!n.startsWith(`*.`))return n===r;let i=n.slice(1);return r.length>i.length&&r.endsWith(i)}function Ra(e,t){return e.some(e=>La(e,t))}const za=`slicc-transcript`,Ba=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],Va=/* @__PURE__ */ new Set(/* @__PURE__ */ `/export/format./export/producer/application./session/id./session/state./session/completeness/status./session/completeness/missing/*./conversations/*/id./conversations/*/kind./conversations/*/parentConversationId./conversations/*/messages/*/id./conversations/*/messages/*/role./conversations/*/messages/*/timestamp./conversations/*/messages/*/toolCallId./conversations/*/messages/*/content/*/type./conversations/*/messages/*/content/*/id./conversations/*/messages/*/content/*/name./conversations/*/messages/*/content/*/attachmentId./delegations/*/sourceConversationId./delegations/*/targetConversationId./delegations/*/toolCallId./attachments/*/id./attachments/*/path./attachments/*/sha256./attachments/*/sourceConversationId./attachments/*/sourceMessageId./attachments/*/handling./attachments/*/missingReason`.split(`.`));function Ha(e){return Va.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Ua=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const Wa=new Set(Ba),Ga=/^[0-9a-fA-F]{64}$/,Ka=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;function I(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qa(e){return typeof e==`string`&&Ga.test(e)}function Ja(e){return Ka.test(e)&&Number.isFinite(Date.parse(e))}function Ya(e,t){let n=t.map(e=>`"${e}"`),r=n[n.length-1];return n.length===2?`${e} must be ${n[0]} or ${r}`:`${e} must be ${n.slice(0,-1).join(`, `)}, or ${r}`}function Xa(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Ya(n,t)}:{ok:!0}}function Za(e,t,n){for(let r=0;r<e.length;r++){let i=t(e[r],`${n}[${r}]`);if(!i.ok)return i}return{ok:!0}}function Qa(e,t){let n=e.type;if(n===`text`){if(typeof e.text!=`string`)return{ok:!1,error:`${t}.text must be a string`}}else if(n===`tool-call`){if(typeof e.id!=`string`||e.id===``)return{ok:!1,error:`${t}.id must be a non-empty string`};if(typeof e.name!=`string`||e.name===``)return{ok:!1,error:`${t}.name must be a non-empty string`};if(!(`input`in e))return{ok:!1,error:`${t}.input must be present`}}else if(typeof e.attachmentId!=`string`||e.attachmentId===``)return{ok:!1,error:`${t}.attachmentId must be a non-empty string`};return{ok:!0}}function $a(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Xa(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?Qa(e,t):n}function eo(e,t){for(let n of[`input`,`output`,`cacheRead`,`cacheWrite`,`totalTokens`]){let r=e[n];if(typeof r!=`number`)return{ok:!1,error:`${t}.${n} must be a number`};if(!Number.isInteger(r)||r<0)return{ok:!1,error:`${t}.${n} must be a non-negative integer`}}return{ok:!0}}function to(e,t){for(let n of[`input`,`output`,`cacheRead`,`cacheWrite`,`total`]){let r=e[n];if(typeof r!=`number`)return{ok:!1,error:`${t}.${n} must be a number`};if(!Number.isFinite(r)||r<0)return{ok:!1,error:`${t}.${n} must be a finite non-negative number`}}return{ok:!0}}function no(e,t){let n=eo(e,t);if(!n.ok)return n;let r=e.cost;return I(r)?to(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function ro(e,t){if(typeof e.id!=`string`)return{ok:!1,error:`${t}.id must be a string`};if(typeof e.sequence!=`number`)return{ok:!1,error:`${t}.sequence must be a number`};let n=e.sequence;return!Number.isInteger(n)||n<1?{ok:!1,error:`${t}.sequence must be a positive integer`}:typeof e.timestamp==`string`?Ja(e.timestamp)?{ok:!0}:{ok:!1,error:`${t}.timestamp must be a valid ISO 8601 date-time string`}:{ok:!1,error:`${t}.timestamp must be a string`}}function io(e,t){let n=e.toolCallId;return typeof n!=`string`||n===``?{ok:!1,error:`${t}.toolCallId must be a non-empty string for tool-result messages`}:{ok:!0}}function ao(e,t){let n=e.usage;return n===void 0?{ok:!0}:I(n)?no(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function oo(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Xa(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=io(e,t);if(!n.ok)return n}let r=ro(e,t);if(!r.ok)return r;let i=e.content;if(!Array.isArray(i))return{ok:!1,error:`${t}.content must be an array`};let a=Za(i,$a,`${t}.content`);return a.ok?ao(e,t):a}function so(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};if(typeof e.id!=`string`)return{ok:!1,error:`${t}.id must be a string`};if(typeof e.name!=`string`)return{ok:!1,error:`${t}.name must be a string`};let n=Xa(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Za(r,oo,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function co(e,t){for(let n of[`id`,`path`,`originalName`,`mimeType`,`sha256`,`sourceConversationId`,`sourceMessageId`])if(typeof e[n]!=`string`)return{ok:!1,error:`${t}.${n} must be a string`};return{ok:!0}}function lo(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?{ok:!1,error:`${t}.path must be non-empty when present`}:qa(r)?!Number.isInteger(i)||i<0?{ok:!1,error:`${t}.byteLength must be a non-negative integer when present`}:e.missingReason===void 0?{ok:!0}:{ok:!1,error:`${t}.missingReason must be absent when present is true`}:{ok:!1,error:`${t}.sha256 must be a 64-char hex string when present`}}const uo=[`attachment-file-missing`,`attachment-association-unavailable`];function fo(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?Xa(e.missingReason,uo,`${t}.missingReason`):{ok:!1,error:`${t}.byteLength must be zero when not present`}:{ok:!1,error:`${t}.sha256 must be empty when not present`}:{ok:!1,error:`${t}.path must be empty when not present`}}function po(e,t){return e.present?lo(e,t):fo(e,t)}function mo(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};let n=co(e,t);if(!n.ok)return n;if(typeof e.byteLength!=`number`)return{ok:!1,error:`${t}.byteLength must be a number`};if(typeof e.present!=`boolean`)return{ok:!1,error:`${t}.present must be a boolean`};let r=Xa(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?po(e,t):r}function ho(e,t){let n=Xa(e.kind,[`json`,`attachment`],`${t}.kind`);if(!n.ok)return n;if(e.kind===`json`){if(typeof e.pointer!=`string`)return{ok:!1,error:`${t}.pointer must be a string`};let n=e.pointer;if(n!==``&&!n.startsWith(`/`))return{ok:!1,error:`${t}.pointer must be a valid RFC 6901 JSON pointer`}}else if(typeof e.attachmentId!=`string`||e.attachmentId===``)return{ok:!1,error:`${t}.attachmentId must be a non-empty string`};return{ok:!0}}function go(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};if(typeof e.id!=`string`)return{ok:!1,error:`${t}.id must be a string`};if(typeof e.category!=`string`)return{ok:!1,error:`${t}.category must be a string`};let n=Xa(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return I(r)?ho(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function _o(e,t){return I(e)?typeof e.sourceConversationId==`string`?typeof e.targetConversationId==`string`?{ok:!0}:{ok:!1,error:`${t}.targetConversationId must be a string`}:{ok:!1,error:`${t}.sourceConversationId must be a string`}:{ok:!1,error:`${t} must be a non-null object`}}function vo(e,t){return typeof e!=`string`||!Wa.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function yo(e){if(!I(e))return{ok:!1,error:`export must be a non-null object`};if(typeof e.id!=`string`)return{ok:!1,error:`export.id must be a string`};if(typeof e.generatedAt!=`string`)return{ok:!1,error:`export.generatedAt must be a string`};if(e.format!==`slicc-transcript`)return{ok:!1,error:`export.format must equal "slicc-transcript"`};let t=e.producer;return I(t)?t.application===`slicc`?typeof t.version==`string`?{ok:!0}:{ok:!1,error:`export.producer.version must be a string`}:{ok:!1,error:`export.producer.application must equal "slicc"`}:{ok:!1,error:`export.producer must be a non-null object`}}function bo(e){if(!I(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=Xa(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Za(e.missing,vo,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function xo(e){if(!I(e))return{ok:!1,error:`session must be a non-null object`};if(typeof e.id!=`string`)return{ok:!1,error:`session.id must be a string`};if(typeof e.title!=`string`)return{ok:!1,error:`session.title must be a string`};let t=Xa(e.state,[`active`,`frozen`],`session.state`);return t.ok?bo(e.completeness):t}function So(e){if(!I(e))return{ok:!1,error:`privacy must be a non-null object`};if(e.reasoningExcluded!==!0)return{ok:!1,error:`privacy.reasoningExcluded must be true`};let t=e.excludedReasoningBlocks;if(typeof t!=`number`)return{ok:!1,error:`privacy.excludedReasoningBlocks must be a number`};if(!Number.isInteger(t)||t<0)return{ok:!1,error:`privacy.excludedReasoningBlocks must be a non-negative integer`};if(e.binaryAttachments!==`included-unchanged`)return{ok:!1,error:`privacy.binaryAttachments must equal "included-unchanged"`};if(!I(e.redactionCounts))return{ok:!1,error:`privacy.redactionCounts must be a non-null object`};let n=e.redactions;return Array.isArray(n)?Za(n,go,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function Co(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Za(t,so,`conversations`);if(!n.ok)return n;let r=e.delegations;if(!Array.isArray(r))return{ok:!1,error:`delegations must be an array`};let i=Za(r,_o,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Za(a,mo,`attachments`):{ok:!1,error:`attachments must be an array`}}function wo(e){let t=/* @__PURE__ */ new Set,n=/* @__PURE__ */ new Set;for(let r of e){if(!I(r)||typeof r.id!=`string`)continue;if(t.has(r.id))return{ok:!1,error:`duplicate conversation id "${r.id}"`};t.add(r.id);let e=r.messages;if(Array.isArray(e)){for(let t of e)if(I(t)&&typeof t.id==`string`){if(n.has(t.id))return{ok:!1,error:`duplicate message id "${t.id}"`};n.add(t.id)}}}return{ok:!0}}function To(e){for(let t of e){if(!I(t))continue;let e=t.messages;if(!Array.isArray(e))continue;let n=typeof t.id==`string`?t.id:`?`,r=0;for(let t of e){if(!I(t)||typeof t.sequence!=`number`)continue;let e=t.sequence;if(e<=r)return{ok:!1,error:`sequences in conversation "${n}" must be strictly increasing`};r=e}}return{ok:!0}}function Eo(e){let t=[];for(let n of e){if(!I(n))continue;let e=n.content;if(Array.isArray(e))for(let n of e)I(n)&&n.type===`tool-call`&&typeof n.id==`string`&&t.push(n.id)}return t}function Do(e){let t=/* @__PURE__ */ new Set;for(let n of e){if(!I(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of Eo(e))t.add(n)}return t}function Oo(e,t){for(let n of e){if(!I(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of e){if(!I(n)||n.role!==`tool-result`)continue;let e=n.toolCallId;if(typeof e==`string`&&e!==``&&!t.has(e))return{ok:!1,error:`tool-result message references unknown toolCallId "${e}"`}}}return{ok:!0}}function ko(e){return Oo(e,Do(e))}function Ao(e,t){for(let n of e){if(!I(n)||n.type!==`attachment-ref`)continue;let e=n.attachmentId;if(typeof e!=`string`||!t.has(e))return{ok:!1,error:`attachment-ref references unknown attachmentId "${e}"`}}return{ok:!0}}function jo(e,t){for(let n of e){if(!I(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of e){if(!I(n))continue;let e=n.content;if(!Array.isArray(e))continue;let r=Ao(e,t);if(!r.ok)return r}}return{ok:!0}}function Mo(e,t){let n=/* @__PURE__ */ new Set;for(let e of t)I(e)&&typeof e.id==`string`&&n.add(e.id);return jo(e,n)}function No(e){let t=/* @__PURE__ */ new Map;for(let n of e){if(!I(n)||typeof n.id!=`string`)continue;let e=/* @__PURE__ */ new Set,r=n.messages;if(Array.isArray(r))for(let t of r)I(t)&&typeof t.id==`string`&&e.add(t.id);t.set(n.id,e)}return t}function Po(e,t){let n=No(t);for(let t=0;t<e.length;t++){let r=e[t];if(!I(r))continue;let i=r.sourceConversationId,a=r.sourceMessageId;if(typeof i!=`string`||typeof a!=`string`)continue;let o=n.get(i);if(!o)return{ok:!1,error:`attachments[${t}].sourceConversationId "${i}" does not exist`};if(!o.has(a))return{ok:!1,error:`attachments[${t}].sourceMessageId "${a}" does not exist in conversation "${i}"`}}return{ok:!0}}function Fo(e){let t=/* @__PURE__ */ new Map;for(let n of e){if(!I(n)||typeof n.id!=`string`)continue;let e=Array.isArray(n.messages)?n.messages:[];t.set(n.id,new Set(Eo(e)))}return t}function Io(e,t,n){for(let r=0;r<e.length;r++){let i=e[r];if(!I(i))continue;let a=i.sourceConversationId,o=i.targetConversationId;if(typeof a!=`string`||!t.has(a))return{ok:!1,error:`delegations[${r}].sourceConversationId "${a}" does not exist`};if(typeof o!=`string`||!t.has(o))return{ok:!1,error:`delegations[${r}].targetConversationId "${o}" does not exist`};let s=i.toolCallId;if(typeof s==`string`&&s!==``&&!n.get(a)?.has(s))return{ok:!1,error:`delegations[${r}].toolCallId "${s}" does not exist in source conversation "${a}"`}}return{ok:!0}}function Lo(e,t){let n=/* @__PURE__ */ new Set;for(let e of t)I(e)&&typeof e.id==`string`&&n.add(e.id);return Io(e,n,Fo(t))}function Ro(e,t,n){if(e.kind!==`attachment`)return{ok:!0};let r=e.attachmentId;return typeof r!=`string`||!t.has(r)?{ok:!1,error:`${n}.attachmentId "${r}" does not reference a known attachment`}:{ok:!0}}function zo(e,t){let n=/* @__PURE__ */ new Set;for(let e of t)I(e)&&typeof e.id==`string`&&n.add(e.id);for(let t=0;t<e.length;t++){let r=e[t];if(!I(r))continue;let i=r.target;if(!I(i))continue;let a=Ro(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function Bo(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=wo(t);if(!o.ok)return o;let s=To(t);if(!s.ok)return s;let c=ko(t);if(!c.ok)return c;let l=Mo(t,n);if(!l.ok)return l;let u=Po(n,t);if(!u.ok)return u;let d=Lo(r,t);return d.ok?zo(a,n):d}function Vo(e){let t=Co(e);return t.ok?Bo(e):t}function Ho(e){if(!I(e))return{ok:!1,error:`document must be a non-null object`};if(e.schemaVersion!==1)return{ok:!1,error:`schemaVersion must equal 1`};let t=yo(e.export);if(!t.ok)return t;let n=xo(e.session);if(!n.ok)return n;let r=So(e.privacy);return r.ok?Vo(e):r}async function Uo(e,t,n){let r=await n({method:`GET`,path:`/${e}/sites/${t}/config.json`,origin:nt});if(r.status===401||r.status===403)throw Error(`not authorized to read the site config for ${e}/${t} — log in via Settings → Providers → Adobe, or pass --backend to skip the probe`);if(r.status===404)throw Error(`no site config for ${e}/${t} — check the org and site names`);if(r.status>=400)throw Error(`site config probe failed for ${e}/${t}: ${r.status}`);let i;try{i=await r.json()}catch(n){throw Error(`site config for ${e}/${t} is not JSON: ${n instanceof Error?n.message:String(n)}`)}let a=i.content?.source?.url;return{backend:Wo(a),sourceUrl:a}}function Wo(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const Go=`slicc-sprinkle-routes`;function Ko(){try{let e=localStorage.getItem(Go);return e?JSON.parse(e):{}}catch{return{}}}function qo(e){try{localStorage.setItem(Go,JSON.stringify(e))}catch{}}function Jo(e){return Ko()[e]}function Yo(e,t){let n=Ko();n[e]=t,qo(n)}function Xo(e){let t=Ko();delete t[e],qo(t)}function Zo(){return Ko()}function Qo(e,t,n){return Et(t,n,`${e} adapter does not implement ${t}.${n}`)}function $o(e,t,n,r){let i=n.filter(e=>typeof r?.[e]==`function`),a=n.map(n=>{let i=r?.[n];return[n,typeof i==`function`?i:()=>Promise.resolve(Qo(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function es(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:$o(t,`browser`,kt,e.browser),network:$o(t,`network`,Tt,e.network),secrets:$o(t,`secrets`,At,e.secrets),devices:$o(t,`devices`,jt,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:$o(t,`mounts`,Dt,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:$o(t,`approvals`,Mt,e.approvals)}}function ts(e={}){return es({adapter:`connect`,pageGestures:e.pageGestures})}function ns(e){let t=Nt(()=>import(`./extension-ops-BWWe8FOb.js`).then(t=>t.createExtensionOps(e)));return es({adapter:e.adapter,pageGestures:e.pageGestures,network:{crossOriginFetch:e=>E(`network`,`crossOriginFetch`,async()=>(await t()).crossOriginFetch(e))},secrets:{listMaskedEnv:()=>E(`secrets`,`listMaskedEnv`,async()=>(await t()).secrets.listMaskedEnv()),getMasked:e=>E(`secrets`,`getMasked`,async()=>(await t()).secrets.getMasked(e)),set:e=>E(`secrets`,`set`,async()=>(await t()).secrets.set(e)),delete:e=>E(`secrets`,`delete`,async()=>(await t()).secrets.delete(e))},mounts:{signRequest:e=>E(`mounts`,`signRequest`,async()=>(await t()).signRequest(e))},approvals:{request:e=>E(`approvals`,`request`,async()=>(await t()).requestApproval(e))}})}function rs(e={}){let t=Nt(()=>import(`./rest-ops-DdaQHTK4.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return es({adapter:`node-rest`,pageGestures:e.pageGestures,network:{localNodeServer:()=>Promise.resolve({ok:!0,value:{available:!0}}),crossOriginFetch:e=>E(`network`,`crossOriginFetch`,async()=>(await t()).crossOriginFetch(e))},secrets:{listMaskedEnv:()=>E(`secrets`,`listMaskedEnv`,async()=>(await t()).secrets.listMaskedEnv()),getMasked:e=>E(`secrets`,`getMasked`,async()=>(await t()).secrets.getMasked(e)),set:e=>E(`secrets`,`set`,async()=>(await t()).secrets.set(e)),delete:e=>E(`secrets`,`delete`,async()=>(await t()).secrets.delete(e))},mounts:{signRequest:e=>E(`mounts`,`signRequest`,async()=>(await t()).signRequest(e))},approvals:{request:e=>E(`approvals`,`request`,async()=>(await t()).requestApproval(e))}})}function is(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return rs({pageGestures:n});case`extension-direct`:case`extension-delegate`:return ns({adapter:e,pageGestures:n});case`connect`:return ts({pageGestures:n})}}const as=e(`quick-llm`);async function os(e){let t=d();if(!t)return as.debug(`No API key for active provider — skipping`),null;let n=u(),r=l(),i;if(i=e.modelId?us(n,e.modelId)??us(n,r):ss(n,r),!i)return as.debug(`No model available for provider`,{providerId:n}),null;let a=Fe(e.prompt),o=e.system===void 0?void 0:Fe(e.system),s={role:`user`,content:a,timestamp:Date.now()},c={};i.provider===`adobe`&&(c[`X-Session-Id`]=ds());try{let n=(await Pe(i,{systemPrompt:o,messages:[s]},{apiKey:t,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(c).length>0?c:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return n.length>0?n:null}catch(e){return as.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function ss(e,t){let n=f(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=ls(r.id),a=n.filter(e=>cs(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function cs(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function ls(e){let t=e.toLowerCase();return t.includes(`claude`)?`claude`:t.includes(`gemini`)?`gemini`:t.includes(`grok`)?`grok`:/^(gpt|o\d)/.test(t)?`gpt`:`unknown`}function us(e,t){return f(e).find(e=>e.id===t)}function ds(){return Ft(`ui-quick-llm`)}const fs=e(`sudo-suggest`),ps=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
2
2
  `),ms=[`You generalize a single filesystem path into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the meaningful directory prefix and replace the volatile`,`leaf (and below) with "**". Examples:`,` /workspace/.git/config -> /workspace/.git/**`,` /shared/secrets/openai.key -> /shared/secrets/**`,` /workspace/src/app/main.ts -> /workspace/src/**`].join(`
3
3
  `);async function hs(e,t){if(e.suggestedPattern&&e.suggestedPattern.trim().length>0)return e.suggestedPattern.trim();let n=e.detail.trim();if(e.kind===`guest-message`||e.kind===`guest-tool`)return n;let r=e.kind===`command`?ps:ms,i=null;try{i=await os({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){fs.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return gs(i)||n}function gs(e){if(!e)return null;let t=(e.split(`
4
4
  `,1)[0]?.trim()??``).replace(/^`+/,``).replace(/`+$/,``).replace(/^["']/,``).replace(/["']$/,``).trim();return t.length===0?null:t}const _s=e(`sudo:capability-gesture`);function vs(e,t={}){let n=t.suggest??hs;return{async requestApproval(t,r){let i=r?.signal,a;if(t.suggestedPattern)a=t.suggestedPattern;else try{a=await n(t,i)}catch{a=t.detail}if(i?.aborted)return _s.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),wt();if(!e)return _s.warn(`no CapabilityBroker injected for the sudo gesture hop — denying (composition bug, never a guessed transport)`,{detail:t.detail}),wt();let o=await e.approvals.request({kind:t.kind,detail:t.detail,suggestedPattern:a,...t.requester?{requester:t.requester}:{},...t.reason?{reason:t.reason}:{},...t.approver?{approver:t.approver}:{},...i?{signal:i}:{}});return o.ok?Ot(o.value,a):(_s.warn(`capability broker approvals.request failed — denying`,{message:o.message}),wt())}}}const ys=e(`sudo:tray-first`);function bs(e,t={}){let n=t.suggest??hs,r=t.timeoutMs??6e5,i=t.getClient??(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-BJU93e51.js`).then(e=>e.r);return e()});return{async requestApproval(t,a){if(a?.signal?.aborted)return wt();let o=t.suggestedPattern;if(!o)try{o=await n(t,a?.signal)}catch{o=t.detail}let s={...t,suggestedPattern:o},c=null;try{c=await i()}catch(e){ys.debug?.(`panel-RPC client lookup threw — using native broker`,{error:e instanceof Error?e.message:String(e)})}if(c)try{let e=await c.call(`sudo-request`,{request:s,mode:`tray-first`},{timeoutMs:r});if(e?.handled!==!1)return Ss(e?.decision,o)}catch(e){ys.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return e.requestApproval(s,a)}}}const xs=[`user-timeout`,`cone-timeout`,`unavailable`];function Ss(e,t){if(!e||typeof e!=`object`)return wt();let n=e,r=n.attestation===`biometric`||n.attestation===`passcode`||n.attestation===`none`?n.attestation:void 0;if(n.decision===`allow`)return{decision:`allow`,...r?{attestation:r}:{}};if(n.decision===`always`)return{decision:`always`,pattern:typeof n.pattern==`string`&&n.pattern.trim().length>0?n.pattern.trim():t,...r?{attestation:r}:{}};if(n.decision!==`deny`)return wt();let i=xs.find(e=>e===n.reason);return i?{decision:`deny`,reason:i}:{decision:`deny`}}function Cs(e,t){return{requestApproval(n){return t.enqueueSudoRequest(e,n)}}}function ws(){return`lick-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}var Ts=class{pending=/* @__PURE__ */ new Map;timeoutMs;newId;setTimer;clearTimer;onAutoSettle;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.newId=e.newId??ws,this.setTimer=e.setTimer??((e,t)=>setTimeout(e,t)),this.clearTimer=e.clearTimer??(e=>clearTimeout(e)),this.onAutoSettle=e.onAutoSettle??(()=>{})}notifyAutoSettle(e,t,n){try{this.onAutoSettle(e,t,n)}catch{}}register(e,t,n){let r=this.newId();return{id:r,pending:new Promise(i=>{let a=null;Number.isFinite(this.timeoutMs)&&this.timeoutMs>0&&(a=this.setTimer(()=>{let e=this.pending.get(r);e&&(this.pending.delete(r),e.resolve(ae(`cone-timeout`)),this.notifyAutoSettle(r,`expired`,e.scoopJid))},this.timeoutMs)),this.pending.set(r,{scoopJid:e,request:t,resolve:i,timerHandle:a,approverJid:n})})}}resolve(e,t){let n=this.pending.get(e);return n?(this.pending.delete(e),n.timerHandle!=null&&this.clearTimer(n.timerHandle),n.resolve(t),!0):!1}failScoop(e){let t=0;for(let[n,r]of this.pending)r.scoopJid===e&&(this.pending.delete(n),r.timerHandle!=null&&this.clearTimer(r.timerHandle),r.resolve({decision:`deny`,reason:`unavailable`}),this.notifyAutoSettle(n,`scoop-dropped`,r.scoopJid),t++);return t}failAll(){let e=0;for(let[t,n]of this.pending)n.timerHandle!=null&&this.clearTimer(n.timerHandle),n.resolve({decision:`deny`,reason:`unavailable`}),this.notifyAutoSettle(t,`shutdown`,n.scoopJid),e++;return this.pending.clear(),e}get(e){let t=this.pending.get(e);return t?{id:e,scoopJid:t.scoopJid,request:t.request,...t.approverJid?{approverJid:t.approverJid}:{}}:null}list(){let e=[];for(let[t,n]of this.pending)e.push({id:t,scoopJid:n.scoopJid,request:n.request,...n.approverJid?{approverJid:n.approverJid}:{}});return e}size(){return this.pending.size}};e(`sudo-panel`),typeof globalThis.confirm==`function`&&globalThis.confirm.bind(globalThis),typeof globalThis.prompt==`function`&&globalThis.prompt.bind(globalThis),e(`sudo:page`),e(`sudo`);function Es(e){return re(Ds(e))}function Ds(e){let t=vs(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:bs(t)}let Os=null;function ks(e){return Os=e,()=>{Os===e&&(Os=null)}}function As(){if(!Os)throw new Ua(`session-not-found`);return Os}const js=`focus`,Ms={type:`leaf`,surfaceId:`chat`};function Ns(e,t={},n={}){return{zones:{top:null,left:null,middle:null,right:null,bottom:null,...e},rowFr:{top:1,center:1,bottom:1,...n},colFr:{left:1,middle:1,right:1,...t}}}const Ps={focus:{name:`focus`,tree:Ns({left:Ms},{left:3,middle:1})}};function Fs(e){return Ps[e]??null}const Is=`progress`;async function Ls(){try{let e=await qt();if(e.cancelled)throw Error(`mount: cancelled`);if(e.error)throw Error(`mount: ${e.error}`);if(e.handleInIdb&&typeof e.idbKey==`string`){let t=await Jt(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);return await Kt(t),t}throw Error(`mount: unexpected popup result`)}catch(e){throw Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}async function Rs(){if(typeof window>`u`||!(`showDirectoryPicker`in window))throw Error(`mount: local picker requires a user gesture in the panel (unavailable in this runtime). Ask the agent to mount it instead.`);try{return await window.showDirectoryPicker({mode:`readwrite`})}catch(e){throw e instanceof Error&&e.name===`AbortError`?Error(`mount: cancelled`):Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}async function zs(e,t){let n;try{({grants:n}=await e.call(`permission-request`,{kinds:[`filesystem`],description:`A command in the terminal asks to mount a local directory at ${t}.`},{timeoutMs:3e5}))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(t.replace(/^permission-request: /,``))}let r=n.find(e=>e.kind===`filesystem`);if(!r||!(`idbKey`in r))throw Error(`no directory selected`);let i=await Jt(r.idbKey);if(!i)throw Error(`no directory handle found in storage`);return await Kt(i),i}function Bs(e){let t={positional:[],noProbe:!1,clearCache:!1,bodies:!1,json:!1};for(let n=0;n<e.length;n++){let r=e[n];if(r===`--source`)t.source=e[++n];else if(r===`--profile`)t.profile=e[++n];else if(r===`--backend`){let r=e[++n];r===`da`||r===`aem`?t.backend=r:t.backendError=r}else r===`--no-probe`?t.noProbe=!0:r===`--max-body-mb`?t.maxBodyMb=Number(e[++n]):r===`--clear-cache`?t.clearCache=!0:r===`--bodies`?t.bodies=!0:r===`--json`?t.json=!0:t.positional.push(r)}return t}function Vs(e){let t=e.match(/^(da|aem):\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);return t?{scheme:t[1],org:t[2],name:t[3],path:(t[4]??``).replace(/^\/+/,``).replace(/\/+$/,``)}:null}const Hs=/* @__PURE__ */ new Set([`--source`,`--profile`,`--backend`,`--max-body-mb`]);function Us(e){for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`)return!1;if(n===`--help`||n===`-h`)return!0;Hs.has(n)&&t++}return!1}function Ws(e){return`aem://${e.org}/${e.name}${e.path?`/${e.path}`:``}`}var Gs=class{options;signedFetchS3;signedFetchDa;constructor(e){this.options=e,this.signedFetchS3=e.signedFetchS3,this.signedFetchDa=e.signedFetchDa}async execute(e,t,n){let r=e[0];if(r===`--help`||r===`-h`)return this.help();if(r===`unmount`||r===`-u`)return this.handleUnmount(e.slice(1),t,`mount unmount`);if(r===`list`||r===`-l`||r===`--list`)return this.handleList();if(r===`refresh`)return this.handleRefresh(e.slice(1),t,n);if(r===`info`)return this.handleInfo(e.slice(1),t);let i=Bs(e);if(i.positional.length===0)return this.usageError(`mount: mount point required`);let a=this.resolvePath(i.positional[0],t);return i.backendError===void 0?i.source?i.source.startsWith(`s3://`)?this.mountS3(a,i):i.source.startsWith(`da://`)||i.source.startsWith(`aem://`)?this.mountAdobe(a,i):this.usageError(`mount: invalid source '${i.source}' — expected s3://..., da://... or aem://...`):this.mountLocal(a,n):this.usageError(`mount: invalid --backend '${i.backendError}' — expected 'da' or 'aem'`)}async executeUmount(e,t){return this.handleUnmount(e,t,`umount`)}async mountLocal(e,t){try{if((this.options.isScoop??(()=>!1))())throw Error(`mount: cannot mount local directories from a scoop (no UI). Ask the cone.`);let n=Ve();if(!n){let n=await Ks(e);if(n)return await this.options.fs.mount(e,n,{env:t}),{stdout:`Mounted '${n.describe().displayName}' → ${e}\nIndexing in background for fast file discovery.\nNote: External changes are not auto-detected — use 'mount refresh ${e}' after modifying files outside the browser.\n`,stderr:``,exitCode:0}}let r=be()?null:b(),i;if(n){let t=this.options.acquireLocalMountViaToolUI;if(!t)throw Error(`mount: tool UI not available in this runtime`);i=await t(n,e)}else i=te()?await Ls():r?await zs(r,e):await Rs();let a=Qe.fromHandle(i,{mountId:at()});return await this.options.fs.mount(e,a,{env:t}),{stdout:`Mounted '${a.describe().displayName}' → ${e}\nIndexing in background for fast file discovery.\nNote: External changes are not auto-detected — use 'mount refresh ${e}' after modifying files outside the browser.\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`mount: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async mountS3(e,t){if(!t.source)return this.usageError(`mount: --source required`);let n=t.profile??`default`,r=at(),i=new ot({mountId:r,ttlMs:3e4}),a=new et({source:t.source,profile:n,cache:i,maxBodyBytes:t.maxBodyMb?t.maxBodyMb*1024*1024:void 0,mountId:r,signedFetch:this.signedFetchS3??tt(n)});if(!t.noProbe)try{await a.readDir(`/`)}catch(e){return await a.close(),{stdout:``,stderr:`mount: probe failed for ${t.source} — ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return await this.options.fs.mount(e,a),{stdout:`Mounted '${a.describe().displayName}' → ${e} (profile: ${n})\n`,stderr:``,exitCode:0}}async mountAdobe(e,t){if(!t.source)return this.usageError(`mount: --source required`);let n=t.profile??`default`,r=this.signedFetchDa??it(),i=Vs(t.source);if(!i)return this.usageError(`mount: invalid source '${t.source}' — expected da://org/repo or aem://org/site`);let a=i.scheme===`aem`?`aem`:`da`,o=``;if(t.backend)a=t.backend;else if(i.scheme===`da`)try{a=(await Uo(i.org,i.name,r)).backend,a===`aem`&&(o=`mount: ${i.org}/${i.name} is on Helix 6 — its content lives in the Source Bus at https://api.aem.live/${i.org}/sites/${i.name}/source, not admin.da.live. Mounting through aem://${i.org}/${i.name}. Pass --backend da to force the old endpoint.\n`)}catch(e){return{stdout:``,stderr:`mount: could not determine the content source for ${t.source} — ${e instanceof Error?e.message:String(e)}. Pass --backend da or --backend aem to skip this probe.\n`,exitCode:1}}let s=at(),c=new ot({mountId:s,ttlMs:3e4}),l={source:a===`aem`?Ws(i):`da://${i.org}/${i.name}${i.path?`/${i.path}`:``}`,profile:n,cache:c,maxBodyBytes:t.maxBodyMb?t.maxBodyMb*1024*1024:void 0,mountId:s,signedFetch:r},u=a===`aem`?new rt(l):new $e(l);if(!t.noProbe)try{await u.readDir(`/`)}catch(e){return await u.close(),{stdout:``,stderr:o+`mount: probe failed for ${l.source} — ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return await this.options.fs.mount(e,u),{stdout:`Mounted '${u.describe().displayName}' → ${e} (profile: ${n})\n`,stderr:o,exitCode:0}}async handleUnmount(e,t,n){if(Us(e))return n===`umount`?this.umountHelp():this.help();let r=Bs(e);if(r.positional.length===0)return{stdout:``,stderr:`${n}: path required\n`,exitCode:1};let i=this.resolvePath(r.positional[0],t);try{let e,t;if(r.clearCache){let{getAllMountEntries:n}=await import(`./mount-table-store-xM3U8UHg.js`).then(e=>e.r),r=(await n()).find(e=>e.targetPath===i),a=r?.descriptor.kind;r&&(a===`s3`||a===`da`||a===`aem`)&&(e=r.descriptor.mountId,t=r.descriptor.kind)}await this.options.fs.unmount(i);let n=``;if(r.clearCache&&e&&t){let{RemoteMountCache:t}=await import(`./remote-cache-MMXYpOmA.js`).then(e=>e.n);await new t({mountId:e,ttlMs:3e4}).clearMount(),n=` (cache cleared)`}else r.clearCache&&(n=` (no remote cache to clear)`);return{stdout:`Unmounted ${i}${n}\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`${n}: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async handleList(){try{let e=this.options.fs.listMounts();if(e.length===0)return{stdout:`No active mounts
@@ -288,7 +288,7 @@ Examples:
288
288
  skill list
289
289
  skill info bluebubbles
290
290
  skill read bluebubbles
291
- `,stderr:``,exitCode:0};let r=t[0],i=await import(`./kernel-worker-CbU9w1jN.js`).then(e=>e.r);try{switch(r){case`list`:return Gh(t,e,i,n.env.get(`PATH`));case`info`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: info requires a skill name
291
+ `,stderr:``,exitCode:0};let r=t[0],i=await import(`./kernel-worker-Dt9hDwn2.js`).then(e=>e.r);try{switch(r){case`list`:return Gh(t,e,i,n.env.get(`PATH`));case`info`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: info requires a skill name
292
292
  `,exitCode:1};let r=await i.getSkillInfo(e,n);return r?{stdout:Uh(r),stderr:``,exitCode:0}:{stdout:``,stderr:`skill: "${n}" not found\n`,exitCode:1}}case`read`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: read requires a skill name
293
293
  `,exitCode:1};let r=await i.readSkillInstructions(e,n);return r===null?{stdout:``,stderr:`skill: no SKILL.md found for "${n}"\n`,exitCode:1}:{stdout:r+`
294
294
  `,stderr:``,exitCode:0}}default:return{stdout:``,stderr:`skill: unknown command "${r}"\n`,exitCode:1}}}catch(e){return{stdout:``,stderr:`skill: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}const qh=[{names:[`--branch`,`-b`],validate:e=>!e.startsWith(`-`)&&i(e),error:`upskill: --branch must be a git ref of [A-Za-z0-9._/-]+ with no "..", leading "-"/"/", trailing "/" or ".lock", or shell metacharacters`,apply:(e,t)=>{e.branch=t}},{names:[`--from`],validate:e=>ta(e)!==null,error:`upskill: --from requires a GitHub source (owner/repo, owner/repo@branch, or a github.com URL)`,apply:(e,t)=>{e.from=t}},{names:[`--path`,`-p`],validate:e=>o(e),error:`upskill: --path must be a repo-relative sub-path of [A-Za-z0-9._/-]+ with no "..", leading "-"/"/", or shell metacharacters`,apply:(e,t)=>{e.path=t}}];function Jh(e){let t={skills:[],dryRun:!1,json:!1};for(let n=0;n<e.length;n++){let r=e[n],i=qh.find(e=>e.names.includes(r));if(i){let r=e[++n];if(!r||!i.validate(r))return t.error=i.error,t;i.apply(t,r)}else if(r===`--dry-run`||r===`-n`)t.dryRun=!0;else if(r===`--json`)t.json=!0;else if(r.startsWith(`-`))return t.error=`upskill: unknown option "${r}" for update`,t;else t.skills.push(r)}return t}function Yh(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}async function Xh(e,t){try{let n=await e.readFile(t,{encoding:`binary`});return n instanceof Uint8Array?n:new TextEncoder().encode(String(n))}catch{return}}async function Zh(e,t,n,r){let i=await Xh(e,t);return Vi(n)?i?{status:`kept-local`,write:!1}:{status:`added`,write:!0}:i?Yh(i,r)?{status:`unchanged`,write:!1}:{status:`updated`,write:!0}:{status:`added`,write:!0}}async function Qh(e,t,n,r){let i={changes:[],writes:[],removals:[]};for(let[r,a]of n){let n=`${t}/${r}`,{status:o,write:s}=await Zh(e,n,r,a);i.changes.push({path:r,status:o}),s&&i.writes.push({path:n,content:a})}let a=new Set(r.files??[]);for(let r of await Hi(e,t)){if(n.has(r))continue;let e=a.has(r);i.changes.push({path:r,status:e?`removed`:`kept-local`}),e&&i.removals.push(`${t}/${r}`)}return i.changes.sort((e,t)=>e.path.localeCompare(t.path)),i}async function $h(e,t,n,r,i,a){let o={skill:n,source:`${r.kind}:${r.source}`,ref:i??r.ref,from:r.sha,outcome:`current`,changes:[]},[s,c]=r.source.split(`/`);if(!s||!c)return{...o,outcome:`error`,error:`unusable source "${r.source}"`};let l=(r.path??``).replace(/^\/|\/$/g,``),u=await qi(t),d=await Yi(s,c,o.ref,u,!0,l||void 0);if(d&&r.sha===d&&await eg(e,n,r))return{...o,to:d,outcome:`current`,changes:[]};let f=await tg(s,c,l,n,o.ref,t,u);if(`error`in f)return{...o,outcome:`error`,error:f.error};let p=f.files,m=f.path;if(p.size===0)return{...o,outcome:`error`,error:`no files at ${s}/${c}${m?`/${m}`:``} — the skill may have moved or been removed upstream`};let{changes:h,writes:g,removals:_}=await Qh(e,`${Pi}/${n}`,p,r),v=g.length>0||_.length>0;if(a)return{...o,outcome:v?`updated`:`current`,changes:h};let ee=d??r.sha;return v&&await og(e,{changes:h,writes:g,removals:_}),await Xi(e,n,{...r,ref:o.ref,path:m,sha:ee,files:[...p.keys()].sort()}),{...o,to:ee,outcome:v?`updated`:`current`,changes:h}}async function eg(e,t,n){if(!n.files?.length)return!1;for(let r of n.files)if(!await e.exists(`/workspace/skills/${t}/${r}`))return!1;return!0}async function tg(e,t,n,r,i,a,o){let s=await Wi(e,t,a,i??`main`);if(s.status===`ok`){let i=zi(s.files),a=n||ng(i,r);return a===null?{error:`could not find "${r}/SKILL.md" in ${e}/${t} — pass --path <dir> to say where the skill lives`}:{files:ag(i,a),path:a}}try{return{files:ig(rg(await Ui(e,t,n,i,o))),path:n}}catch(e){let t=e instanceof Error?e.message:String(e);return{error:`${s.message}; Contents API fallback failed: ${t}`}}}function ng(e,t){let n=[];for(let r of Object.keys(e))r===`SKILL.md`?n.push(``):(r.endsWith(`/${t}/SKILL.md`)||r===`${t}/SKILL.md`)&&n.push(r.slice(0,-9));return n.length===0?null:(n.sort((e,t)=>e.split(`/`).length-t.split(`/`).length||e.localeCompare(t)),n[0])}function rg(e){return new Map([...e].filter(([e])=>Bi(e)))}function ig(e){return new Map([...e].sort(([e],[t])=>e.localeCompare(t)))}function ag(e,t){let n=t?`${t}/`:``,r=/* @__PURE__ */ new Map;for(let[t,i]of Object.entries(e)){if(!t.startsWith(n)||t.endsWith(`/`))continue;let e=t.slice(n.length);Bi(e)&&r.set(e,i)}return ig(r)}async function og(e,t){for(let n of t.writes){let t=n.path.slice(0,n.path.lastIndexOf(`/`));await e.mkdir(t,{recursive:!0}),await e.writeFile(n.path,n.content)}for(let n of t.removals)await e.rm(n).catch(()=>{})}async function sg(e,t,n,r,i){let a={skill:n,source:`${r.kind}:${r.source}`,outcome:`current`,changes:[]},[o,s]=r.source.split(`/`);if(!o||!s)return{...a,outcome:`error`,error:`unusable source "${r.source}"`};let c=await Rh(o,s,t);if(!c.ok)return{...a,outcome:`error`,error:c.error};let l=`${Pi}/${n}/SKILL.md`,u=await Xh(e,l),d=new TextEncoder().encode(c.content),f=u!==void 0&&Ih(new TextDecoder().decode(u))===Ih(c.content);if(Yh(u,d)||f)return{...a,changes:[{path:`SKILL.md`,status:`unchanged`}]};let p=u?`updated`:`added`;return i||(await e.mkdir(`${Pi}/${n}`,{recursive:!0}),await e.writeFile(l,d),await Xi(e,n,{...r,files:[`SKILL.md`]})),{...a,outcome:`updated`,changes:[{path:`SKILL.md`,status:p}]}}function cg(e,t){if(e.outcome===`error`)return` ${e.skill}: failed — ${e.error}\n`;let n=/* @__PURE__ */ new Map;for(let t of e.changes)n.set(t.status,(n.get(t.status)??0)+1);let r=e.to&&e.to!==e.from?` → ${e.to.slice(0,7)}`:``;if(e.outcome===`current`)return` ${e.skill}: already current (${e.source}${r})\n`;let i=t?`would update`:`updated`,a=` ${e.skill}: ${i} from ${e.source}${r}\n`;for(let t of e.changes)t.status!==`unchanged`&&(a+=` ${t.status.padEnd(10)} ${t.path}\n`);let o=n.get(`kept-local`)??0;return o>0&&(a+=` (${o} kept-local — dotfiles and local additions are never touched)\n`),a}function lg(e,t,n,r){let i=ta(t);return i?{version:1,kind:`github`,source:`${i.owner}/${i.repo}`,skill:e,ref:r??i.branch,path:n??i.path,installed:(/* @__PURE__ */ new Date()).toISOString()}:null}async function ug(e,t,n){if(t.length===0){let t=await Ji(e);return{targets:t.provenanced,missing:[],skipped:t.unattributed}}let r=[],i=[];for(let a of t){let t=await Zi(e,a);if(t){r.push({name:a,provenance:t});continue}if(!await e.exists(`/workspace/skills/${a}`)){i.push({name:a,reason:`not-installed`});continue}let o=n.from?lg(a,n.from,n.path,n.branch):null;o?r.push({name:a,provenance:o}):i.push({name:a,reason:`no-provenance`})}return{targets:r,missing:i,skipped:[]}}function dg(e){return e.reason===`not-installed`?`upskill: no skill named "${e.name}" is installed — check \`upskill list\`
@@ -299,7 +299,7 @@ Examples:
299
299
  `}function mg(e,t,n,r,i){let a=t?`Skill update (dry run — nothing written):
300
300
  `:`Skill update:
301
301
  `;for(let n of e)a+=cg(n,t);if(i.length>0&&(a+=pg(i)),!n&&r&&e.length>0){let n=i.length>0?`all ${fg(e.length,`skill`)} with provenance ${e.length===1?`is`:`are`}`:`all skills are`;a+=t?`\n${n.charAt(0).toUpperCase()}${n.slice(1)} current.\n`:`\nNothing to update — ${n} current.\n`}return a}async function hg(e,t,n){let{targets:r,missing:i,skipped:a}=await ug(e,n.skills,{skills:n.skills,dryRun:n.dryRun,json:!1,branch:n.branch,from:n.from,path:n.path}),o=[];for(let i of r)o.push(i.provenance.kind===`browse.sh`?await sg(e,t,i.name,i.provenance,n.dryRun):await $h(e,t,i.name,i.provenance,n.branch,n.dryRun));return{results:o,skipped:a,missing:i}}async function gg(e,t,n){let r=Jh(e);if(r.error)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{results:i,missing:a,skipped:o}=await hg(t,n,r);if(i.length===0)return a.length===0&&o.length>0?{stdout:r.json?`${JSON.stringify({ok:!0,dryRun:r.dryRun,results:[],skipped:o})}\n`:mg([],r.dryRun,!1,!0,o),stderr:``,exitCode:0}:{stdout:``,stderr:a.length?a.map(dg).join(``):"upskill: no skill has install provenance yet — reinstall a skill, or run `upskill update <skill> --from <owner>/<repo>`, to record its source\n",exitCode:1};let s=i.filter(e=>e.outcome===`error`),c=i.some(e=>e.outcome===`updated`);c&&!r.dryRun&&await ea();let l=a.map(dg).join(``)+s.map(e=>`upskill: ${e.skill}: ${e.error}\n`).join(``),u=s.length===0&&a.length===0;return r.json?{stdout:`${JSON.stringify({ok:u,dryRun:r.dryRun,results:i,skipped:o})}\n`,stderr:l,exitCode:+!u}:{stdout:mg(i,r.dryRun,c,u,o),stderr:l,exitCode:+!u}}function _g(e){let t={outdated:!1,json:!1};for(let n of e)if(n===`--outdated`)t.outdated=!0;else if(n===`--json`)t.json=!0;else if(n.startsWith(`-`))return t.error=`upskill: unknown option "${n}" for list`,t;else return t.error=`upskill: unexpected argument "${n}" for list`,t;return t}function vg(e){return e.to&&e.from&&e.to!==e.from?` ${e.from.slice(0,7)} → ${e.to.slice(0,7)}`:e.to?` ${e.to.slice(0,7)}`:``}function yg(e,t){let n=e.filter(e=>e.outcome===`updated`),r=[];if(n.length===0)r.push(`No outdated skills.`);else{r.push(`Outdated skills:`,``);for(let e of n)r.push(` ${e.skill} ${e.source}${vg(e)}`)}if(t.length>0){let e=t.length===1?`skill`:`skills`;r.push(``,`Skipped ${t.length} ${e} with no install provenance — not checked.`)}let i=e.filter(e=>e.outcome===`error`);if(i.length>0){let e=i.length===1?`skill`:`skills`;r.push(``,`Could not check ${i.length} ${e}:`);for(let e of i)r.push(` ${e.skill}: failed — ${e.error}`)}return`${r.join(`
302
- `)}\n`}async function bg(e,t,n){let r=await(await import(`./kernel-worker-CbU9w1jN.js`).then(e=>e.r)).discoverSkills(e),{collisions:i}=await wr(e,xr(n));return t?{stdout:`${JSON.stringify({ok:!0,skills:r,commandCollisions:i})}\n`,stderr:``,exitCode:0}:r.length===0?{stdout:`No discoverable local skills found.\n\n${Bh()}`,stderr:``,exitCode:0}:{...Sr(`upskill`,Hh(r,`Discoverable local skills`),i,{builtinNames:new Set(mt())}),exitCode:0}}async function xg(e,t,n){let{results:r,skipped:i}=await hg(e,t,{skills:[],dryRun:!0}),a=r.filter(e=>e.outcome===`updated`),o=r.filter(e=>e.outcome===`error`),s=o.length===0,c=o.map(e=>`upskill: ${e.skill}: ${e.error}\n`).join(``);return n?{stdout:`${JSON.stringify({ok:s,results:[...a,...o],skipped:i})}\n`,stderr:c,exitCode:+!s}:{stdout:yg(r,i),stderr:c,exitCode:+!s}}async function Sg(e,t,n,r){let i=_g(e);return i.error?{stdout:``,stderr:`${i.error}\n`,exitCode:1}:i.outdated?xg(t,n,i.json):bg(t,i.json,r)}async function Cg(e,t){let n=`${Fi}/experimental/search?q=${encodeURIComponent(e)}&contentType=skills&page%5Bsize%5D=20`,r;try{r=await t(n,{headers:{Accept:`application/json`}})}catch(e){throw Error(Ki(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=ke(r.body);if(!i.data)return[];let a=/* @__PURE__ */ new Map;for(let e of i.data){if(e.type!==`skill`)continue;let t=e.attributes,n=$i(t.sourceUrl),r=n?`${n.owner}/${n.repo}`:void 0,i=t.scores.aggregate==null?null:Math.round(t.scores.aggregate*100),o=t.sourceUrl||e.id,s=a.get(o);if(s&&s.qualityScore!=null&&i!=null&&s.qualityScore>=i)continue;let c=t.path.replace(/\/SKILL\.md$/i,``),l=c.split(`/`).pop()||t.name,u=n?`upskill ${n.owner}/${n.repo} --path ${c.split(`/`).slice(0,-1).join(`/`)||`.`} --skill ${l}`:`upskill tessl:${t.name}`;a.set(o,{name:t.name,displayName:t.name,summary:t.description||``,source:`tessl`,qualityScore:i,installHint:u,featured:t.featured,sourceRepo:r})}return Array.from(a.values())}async function wg(e,t){let n=`${Fi}/experimental/search?q=${encodeURIComponent(e)}&contentType=skills&page%5Bsize%5D=5`,r;try{r=await t(n,{headers:{Accept:`application/json`}})}catch(e){return{error:`Tessl search failed: ${Ki(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=ke(r.body).data?.find(t=>t.type===`skill`&&t.attributes.name===e);if(!i)return{error:`skill "${e}" not found on Tessl registry`};let a=$i(i.attributes.sourceUrl);if(!a)return{error:`skill "${e}" has no GitHub source URL`};let o=i.attributes.path.replace(/\/SKILL\.md$/i,``);return{owner:a.owner,repo:a.repo,skillPath:o,skillName:e}}const Tg=[{label:`Tessl`,host:new URL(Fi).host,fetch:Cg},{label:`browse.sh`,host:new URL(Ri).host,fetch:Ah}];function Eg(e){let t=[],n=e.reduce((e,t)=>Math.max(e,t.length),0);for(let r=0;r<n;r++)for(let n of e)r<n.length&&t.push(n[r]);return t}async function Dg(e,t,n=1){let r=await Promise.allSettled(Tg.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=Eg(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=Tg[e],r=t.reason instanceof Error?t.reason.message:String(t.reason);s+=`warning: ${n.label} registry unavailable (${n.host}): ${r}\n`}}if(o.length===0){let t=a?`${s}upskill: registries failed to respond\n`:s;return{stdout:`No skills found for "${e}"\n\nTry a different search term or browse the registries at https://tessl.io/registry or https://browse.sh\n`,stderr:t,exitCode:+!!a}}let c=o.length,l=Math.ceil(c/10),u=Math.max(1,Math.min(n,l)),d=(u-1)*10,f=o.slice(d,d+10),p=`Search results for "${e}" (page ${u}/${l}, ${c} total):\n\n`;for(let e of f){let t=e.qualityScore==null?` `:String(e.qualityScore).padStart(3),n=`[${e.source}]`,r=e.sourceRepo?` ${e.sourceRepo}`:``;p+=` ${e.name.padEnd(30)} ${t} ${n.padEnd(10)}${r}\n`,e.summary&&(p+=` ${e.summary}\n`),p+=`
302
+ `)}\n`}async function bg(e,t,n){let r=await(await import(`./kernel-worker-Dt9hDwn2.js`).then(e=>e.r)).discoverSkills(e),{collisions:i}=await wr(e,xr(n));return t?{stdout:`${JSON.stringify({ok:!0,skills:r,commandCollisions:i})}\n`,stderr:``,exitCode:0}:r.length===0?{stdout:`No discoverable local skills found.\n\n${Bh()}`,stderr:``,exitCode:0}:{...Sr(`upskill`,Hh(r,`Discoverable local skills`),i,{builtinNames:new Set(mt())}),exitCode:0}}async function xg(e,t,n){let{results:r,skipped:i}=await hg(e,t,{skills:[],dryRun:!0}),a=r.filter(e=>e.outcome===`updated`),o=r.filter(e=>e.outcome===`error`),s=o.length===0,c=o.map(e=>`upskill: ${e.skill}: ${e.error}\n`).join(``);return n?{stdout:`${JSON.stringify({ok:s,results:[...a,...o],skipped:i})}\n`,stderr:c,exitCode:+!s}:{stdout:yg(r,i),stderr:c,exitCode:+!s}}async function Sg(e,t,n,r){let i=_g(e);return i.error?{stdout:``,stderr:`${i.error}\n`,exitCode:1}:i.outdated?xg(t,n,i.json):bg(t,i.json,r)}async function Cg(e,t){let n=`${Fi}/experimental/search?q=${encodeURIComponent(e)}&contentType=skills&page%5Bsize%5D=20`,r;try{r=await t(n,{headers:{Accept:`application/json`}})}catch(e){throw Error(Ki(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=ke(r.body);if(!i.data)return[];let a=/* @__PURE__ */ new Map;for(let e of i.data){if(e.type!==`skill`)continue;let t=e.attributes,n=$i(t.sourceUrl),r=n?`${n.owner}/${n.repo}`:void 0,i=t.scores.aggregate==null?null:Math.round(t.scores.aggregate*100),o=t.sourceUrl||e.id,s=a.get(o);if(s&&s.qualityScore!=null&&i!=null&&s.qualityScore>=i)continue;let c=t.path.replace(/\/SKILL\.md$/i,``),l=c.split(`/`).pop()||t.name,u=n?`upskill ${n.owner}/${n.repo} --path ${c.split(`/`).slice(0,-1).join(`/`)||`.`} --skill ${l}`:`upskill tessl:${t.name}`;a.set(o,{name:t.name,displayName:t.name,summary:t.description||``,source:`tessl`,qualityScore:i,installHint:u,featured:t.featured,sourceRepo:r})}return Array.from(a.values())}async function wg(e,t){let n=`${Fi}/experimental/search?q=${encodeURIComponent(e)}&contentType=skills&page%5Bsize%5D=5`,r;try{r=await t(n,{headers:{Accept:`application/json`}})}catch(e){return{error:`Tessl search failed: ${Ki(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=ke(r.body).data?.find(t=>t.type===`skill`&&t.attributes.name===e);if(!i)return{error:`skill "${e}" not found on Tessl registry`};let a=$i(i.attributes.sourceUrl);if(!a)return{error:`skill "${e}" has no GitHub source URL`};let o=i.attributes.path.replace(/\/SKILL\.md$/i,``);return{owner:a.owner,repo:a.repo,skillPath:o,skillName:e}}const Tg=[{label:`Tessl`,host:new URL(Fi).host,fetch:Cg},{label:`browse.sh`,host:new URL(Ri).host,fetch:Ah}];function Eg(e){let t=[],n=e.reduce((e,t)=>Math.max(e,t.length),0);for(let r=0;r<n;r++)for(let n of e)r<n.length&&t.push(n[r]);return t}async function Dg(e,t,n=1){let r=await Promise.allSettled(Tg.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=Eg(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=Tg[e],r=t.reason instanceof Error?t.reason.message:String(t.reason);s+=`warning: ${n.label} registry unavailable (${n.host}): ${r}\n`}}if(o.length===0){let t=a?`${s}upskill: registries failed to respond\n`:s;return{stdout:`No skills found for "${e}"\n\nTry a different search term or browse the registries at https://tessl.io/registry or https://browse.sh\n`,stderr:t,exitCode:+!!a}}let c=o.length,l=Math.ceil(c/10),u=Math.max(1,Math.min(n,l)),d=(u-1)*10,f=o.slice(d,d+10),p=`Search results for "${e}" (page ${u}/${l}, ${c} total):\n\n`;for(let e of f){let t=e.qualityScore==null?` `:String(e.qualityScore).padStart(3),n=`[${e.source}]`,r=e.sourceRepo?` ${e.sourceRepo}`:``;p+=` ${e.name.padEnd(30)} ${t} ${n.padEnd(10)}${r}\n`,e.summary&&(p+=` ${e.summary}\n`),p+=`
303
303
  `}return u<l&&(p+=`Showing ${d+1}-${d+f.length} of ${c}. `,p+=`Next page: upskill search ${e} --page ${u+1}\n\n`),p+=`To install:
304
304
  `,p+=` From Tessl: upskill <owner/repo> --skill <name>
305
305
  `,p+=` From browse.sh: upskill browse:<hostname>/<task>
@@ -322,7 +322,7 @@ Examples:
322
322
  `,{stdout:s,stderr:``,exitCode:0}}function Pg(e){return!e||e.startsWith(`-`)?{stdout:``,stderr:`upskill: --branch requires a value
323
323
  `,exitCode:1}:i(e)?null:{stdout:``,stderr:`upskill: --branch must be a git ref of [A-Za-z0-9._/-]+ with no "..", leading "-"/"/", trailing "/" or ".lock", or shell metacharacters
324
324
  `,exitCode:1}}function Fg(e){let t={selectedSkills:[],listOnly:!1,installAll:!1,force:!1,sourceRef:``},n=0;for(;n<e.length;){let r=e[n];if(r===`--skill`)t.selectedSkills.push(e[++n]);else if(r===`--path`||r===`-p`){let r=e[++n];if(typeof r!=`string`||!o(r))return t.earlyReturn={stdout:``,stderr:`upskill: --path must be a repo-relative sub-path of [A-Za-z0-9._/-]+ with no "..", leading "-"/"/", or shell metacharacters
325
- `,exitCode:1},t;t.subPath=r}else if(r===`--list`)t.listOnly=!0;else if(r===`--all`)t.installAll=!0;else if(r===`--force`)t.force=!0;else if(r===`--branch`||r===`-b`){let r=Pg(e[n+1]);if(r)return t.earlyReturn=r,t;t.branch=e[++n]}else r.startsWith(`-`)||(t.sourceRef=r);n++}return t}async function Ig(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./kernel-worker-CbU9w1jN.js`).then(e=>e.r);if(e===`info`){let e=await r.getSkillInfo(n,t);if(!e)return{stdout:``,stderr:`upskill: skill "${t}" not found\n`,exitCode:1};let i=await Zi(n,t),a=i?Qi(i):"Installed from: (no provenance recorded — reinstall to enable `upskill update`)\n";return{stdout:Uh(e)+a,stderr:``,exitCode:0}}let i=await r.readSkillInstructions(n,t);return i===null?{stdout:``,stderr:`upskill: no SKILL.md found for "${t}"\n`,exitCode:1}:{stdout:i+`
325
+ `,exitCode:1},t;t.subPath=r}else if(r===`--list`)t.listOnly=!0;else if(r===`--all`)t.installAll=!0;else if(r===`--force`)t.force=!0;else if(r===`--branch`||r===`-b`){let r=Pg(e[n+1]);if(r)return t.earlyReturn=r,t;t.branch=e[++n]}else r.startsWith(`-`)||(t.sourceRef=r);n++}return t}async function Ig(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./kernel-worker-Dt9hDwn2.js`).then(e=>e.r);if(e===`info`){let e=await r.getSkillInfo(n,t);if(!e)return{stdout:``,stderr:`upskill: skill "${t}" not found\n`,exitCode:1};let i=await Zi(n,t),a=i?Qi(i):"Installed from: (no provenance recorded — reinstall to enable `upskill update`)\n";return{stdout:Uh(e)+a,stderr:``,exitCode:0}}let i=await r.readSkillInstructions(n,t);return i===null?{stdout:``,stderr:`upskill: no SKILL.md found for "${t}"\n`,exitCode:1}:{stdout:i+`
326
326
  `,stderr:``,exitCode:0}}async function Lg(e,t,n,r,i,a,o,s){let c=``,l=``,u=0,d=e.length;for(let f=0;f<e.length;f++){let p=e[f],m=await ra(p.path,p.name,r,i,a,s?{...s,path:p.path}:void 0),h=f+1,g=((Date.now()-o)/1e3).toFixed(1),_=(Date.now()-o)/h,v=h<d?` (~${Math.round((d-h)*_/1e3)}s remaining)`:``;m.ok?(c+=`[${h}/${d}] Installed "${p.name}" from ${t}/${n} (${g}s)${v}\n`,u++):(c+=`[${h}/${d}] Failed "${p.name}": ${m.error}${v}\n`,l+=`upskill: ${m.error}\n`)}return{output:c,errors:l,successCount:u}}async function Rg(e,t,n,r,i,a,o,s){let c=``,l=``,u=0,d=e.length;for(let f=0;f<e.length;f++){let p=e[f],m=await na(t,n,p.path,p.name,i,r,a,void 0,o),h=f+1,g=((Date.now()-s)/1e3).toFixed(1),_=(Date.now()-s)/h,v=h<d?` (~${Math.round((d-h)*_/1e3)}s remaining)`:``;m.exitCode===0?(c+=`[${h}/${d}] Installed "${p.name}" from ${t}/${n} (${g}s)${v}\n`,u++):(c+=`[${h}/${d}] Failed "${p.name}": ${m.stderr.trim()}${v}\n`,l+=m.stderr)}return{output:c,errors:l,successCount:u}}async function zg(e,t,n,r,i,a,o,s){let c=``,l=``,u=0;for(let d of e){let e=await na(t,n,d.path,d.name,i,r,a,o,s);e.exitCode===0?(c+=e.stdout,u++):l+=e.stderr}return{output:c,errors:l,successCount:u}}function Bg(e,t,n){let r=`Available skills in ${t}/${n}:\n\n`;for(let t of e)r+=` ${t.name.padEnd(30)} ${t.path}\n`;return r+=`\nFound ${e.length} skill(s)\n`,r}async function Vg(e,t,n,r){let{owner:i,repo:a}=e,o=t.branch??e.branch,s=t.subPath??e.path,c=await qi(r),l=await ia(i,a,c,s,r,o);if(l.error)return{stdout:``,stderr:`upskill: failed to list skills: ${l.error}\n`,exitCode:1};if(l.skills.length===0)return{stdout:`No skills found in ${i}/${a}${s?`/`+s:``}\n`,stderr:``,exitCode:0};if(t.listOnly)return{stdout:Bg(l.skills,i,a)+`\nTo install: upskill ${t.sourceRef} --skill <name>\nTo install all: upskill ${t.sourceRef} --all\n`,stderr:``,exitCode:0};let u=l.skills;if(t.selectedSkills.length>0){u=l.skills.filter(e=>t.selectedSkills.includes(e.name));for(let e of t.selectedSkills)if(!l.skills.find(t=>t.name===e))return{stdout:``,stderr:`upskill: skill "${e}" not found in ${i}/${a}\n`,exitCode:1}}else if(!t.installAll)return{stdout:Bg(l.skills,i,a)+`\nTo install specific skills: upskill ${t.sourceRef} --skill <name>\nTo install all: upskill ${t.sourceRef} --all\n`,stderr:``,exitCode:0};let d=u.length,f=Date.now(),p=``,m=``,h=0;if(d>1){let e=await Wi(i,a,r,o);if(e.status===`ok`){let r=await Yi(i,a,o,c,!0,s),l=await Lg(u,i,a,zi(e.files),n,t.force,f,{kind:`github`,source:`${i}/${a}`,ref:o,sha:r});({output:p,errors:m,successCount:h}=l)}else{let e=await Rg(u,i,a,c,n,t.force,o,f);({output:p,errors:m,successCount:h}=e)}}else({output:p,errors:m,successCount:h}=await zg(u,i,a,c,n,t.force,r,o));let g=((Date.now()-f)/1e3).toFixed(1);return h>0&&(p+=`\nInstalled ${h} skill(s)${d>1?` in ${g}s`:``}\n`,await ea()),{stdout:p,stderr:m,exitCode:+!!m}}async function Hg(e,t,n,r,i){switch(e[0]){case`tabs`:return Mg(t,n,r,e.includes(`--json`));case`recommendations`:return Ng(t,n,e.includes(`--install`));case`update`:case`upgrade`:return gg(e.slice(1),t,n);case`list`:return Sg(e.slice(1),t,n,i);case`info`:case`read`:return Ig(e[0],e[1],t);case`search`:return Wg(e,n);default:return null}}function Ug(e,t,n){return C(`upskill`,async(r,i)=>{if(r.length===0||r.includes(`--help`)||r.includes(`-h`))return Wh();let a=await Hg(r,e,t,n,i.env.get(`PATH`));if(a)return a;let o=Fg(r);if(o.earlyReturn)return o.earlyReturn;if(!o.sourceRef)return Wh();if(o.sourceRef.startsWith(`tessl:`))return Gg(o.sourceRef,o.force,e,t);let s=Nh(o.sourceRef);if(s)return zh(s.hostname,s.task,e,t,o.force);let c=ta(o.sourceRef);return c?Vg(c,o,e,t):{stdout:``,stderr:`upskill: unrecognized source "${o.sourceRef}"\n\nExpected: owner/repo, tessl:<name>, or browse:<hostname>/<task>\n`,exitCode:1}})}async function Wg(e,t){let n=[...e.slice(1)],r=n.indexOf(`--page`),i=1;r>=0&&(i=parseInt(n[r+1],10)||1,n.splice(r,2));let a=n.join(` `);return a?Dg(a,t,i):Wh()}async function Gg(e,t,n,r){let i=e.slice(6);if(!i)return{stdout:``,stderr:`upskill: tessl: requires a skill name
327
327
  `,exitCode:1};let a=await wg(i,r);if(`error`in a)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let o=await qi(r);return na(a.owner,a.repo,a.skillPath,a.skillName,n,o,t,r)}function Kg(){return{stdout:`usage: afplay [-v volume] [-r rate] <file>
328
328
 
@@ -545,7 +545,7 @@ Usage: cherry-emit <name> [--detail <json>] [--runtime <id>]
545
545
  -o Force paste mode (write to stdout)
546
546
  (default) Auto-detect: stdin present = copy, no stdin = paste
547
547
  Example: echo hello | ${e}\n Example: ${e} -o > file.txt\n`,stderr:``,exitCode:0}}async function kv(e,t){let n=!!globalThis.navigator?.clipboard,r=n?null:b();if(!n&&!r)return{stdout:``,stderr:`${t}: clipboard API is unavailable\n`,exitCode:1};try{return n?await navigator.clipboard.writeText(e):await r.call(`clipboard-write-text`,{text:e}),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`${t}: failed to write to clipboard: ${Tv(e)}\n`,exitCode:1}}}async function Av(e){let t=!!globalThis.navigator?.clipboard,n=t?null:b();if(!t&&!n)return{stdout:``,stderr:`${e}: clipboard API is unavailable\n`,exitCode:1};try{return{stdout:t?await navigator.clipboard.readText():(await n.call(`clipboard-read-text`,void 0)).text,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: failed to read from clipboard: ${Tv(t)}\n`,exitCode:1}}}function jv(){return C(`pbcopy`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?Ev():kv(P(t.stdin),`pbcopy`))}function Mv(){return C(`pbpaste`,async e=>e.includes(`--help`)||e.includes(`-h`)?Dv():Av(`pbpaste`))}function Nv(e){return C(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return Ov(e);let r=t.includes(`-i`),i=t.includes(`-o`);if(r&&i)return{stdout:``,stderr:`${e}: cannot use both -i and -o\n`,exitCode:1};if(i)return Av(e);let a=P(n.stdin);return r||a.length>0?kv(a,e):Av(e)})}function Pv(){return C(`cmp`,async(e,t)=>{let n=e.some(e=>e===`-s`||e===`--quiet`||e===`--silent`),r=e.filter(e=>![`-s`,`--quiet`,`--silent`].includes(e));if(r.length!==2||r.some(e=>e.startsWith(`-`)&&e!==`-`))return{stdout:``,stderr:`cmp: usage: cmp [-s|--quiet|--silent] FILE1 FILE2
548
- `,exitCode:2};let i=await Fv(t,r[0]);if(`error`in i)return n?{...i.error,stderr:``}:i.error;let a=await Fv(t,r[1]);if(`error`in a)return n?{...a.error,stderr:``}:a.error;let o=Iv(i.bytes,a.bytes);return o?n?{stdout:``,stderr:``,exitCode:1}:o.eof?{stdout:``,stderr:`cmp: EOF on ${i.bytes.length<a.bytes.length?r[0]:r[1]} after byte ${o.byte-1}, line ${o.line}\n`,exitCode:1}:{stdout:`${r[0]} ${r[1]} differ: byte ${o.byte}, line ${o.line}\n`,stderr:``,exitCode:1}:{stdout:``,stderr:``,exitCode:0}})}async function Fv(e,t){if(t===`-`){let t=lr(e.stdin);return{bytes:Uint8Array.from(t,e=>e.charCodeAt(0)&255)}}try{return{bytes:await e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t))}}catch{return{error:{stdout:``,stderr:`cmp: ${t}: No such file or directory\n`,exitCode:2}}}}function Iv(e,t){let n=Math.min(e.length,t.length),r=1;for(let i=0;i<n;i++){if(e[i]!==t[i])return{byte:i+1,line:r,eof:!1};e[i]===10&&r++}return e.length===t.length?null:{byte:n+1,line:r,eof:!0}}function Lv(e={}){return C(`computer`,async(t,n)=>{let{runComputer:r}=await import(`./run-BiN6qTlm.js`).then(e=>e.t);return r(t,n,e)})}var Rv=`/assets/AdobeClean-Regular-CVsq5gF7.otf`;function zv(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}function Bv(e){let t=e.toLowerCase();return t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)?`JPEG`:t.endsWith(`.png`)?`PNG`:t.endsWith(`.gif`)?`GIF`:t.endsWith(`.webp`)?`WEBP`:t.endsWith(`.bmp`)?`BMP`:t.endsWith(`.tiff`)||t.endsWith(`.tif`)?`TIFF`:t.endsWith(`.avif`)?`AVIF`:`PNG`}const Vv=`AdobeClean-Regular.otf`,Hv=/* @__PURE__ */ new WeakSet;let Uv=null;function Wv(){return{stdout:`usage: convert [input ...] [operations...] [output]
548
+ `,exitCode:2};let i=await Fv(t,r[0]);if(`error`in i)return n?{...i.error,stderr:``}:i.error;let a=await Fv(t,r[1]);if(`error`in a)return n?{...a.error,stderr:``}:a.error;let o=Iv(i.bytes,a.bytes);return o?n?{stdout:``,stderr:``,exitCode:1}:o.eof?{stdout:``,stderr:`cmp: EOF on ${i.bytes.length<a.bytes.length?r[0]:r[1]} after byte ${o.byte-1}, line ${o.line}\n`,exitCode:1}:{stdout:`${r[0]} ${r[1]} differ: byte ${o.byte}, line ${o.line}\n`,stderr:``,exitCode:1}:{stdout:``,stderr:``,exitCode:0}})}async function Fv(e,t){if(t===`-`){let t=lr(e.stdin);return{bytes:Uint8Array.from(t,e=>e.charCodeAt(0)&255)}}try{return{bytes:await e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t))}}catch{return{error:{stdout:``,stderr:`cmp: ${t}: No such file or directory\n`,exitCode:2}}}}function Iv(e,t){let n=Math.min(e.length,t.length),r=1;for(let i=0;i<n;i++){if(e[i]!==t[i])return{byte:i+1,line:r,eof:!1};e[i]===10&&r++}return e.length===t.length?null:{byte:n+1,line:r,eof:!0}}function Lv(e={}){return C(`computer`,async(t,n)=>{let{runComputer:r}=await import(`./run-ZJTWBDxE.js`).then(e=>e.t);return r(t,n,e)})}var Rv=`/assets/AdobeClean-Regular-CVsq5gF7.otf`;function zv(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}function Bv(e){let t=e.toLowerCase();return t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)?`JPEG`:t.endsWith(`.png`)?`PNG`:t.endsWith(`.gif`)?`GIF`:t.endsWith(`.webp`)?`WEBP`:t.endsWith(`.bmp`)?`BMP`:t.endsWith(`.tiff`)||t.endsWith(`.tif`)?`TIFF`:t.endsWith(`.avif`)?`AVIF`:`PNG`}const Vv=`AdobeClean-Regular.otf`,Hv=/* @__PURE__ */ new WeakSet;let Uv=null;function Wv(){return{stdout:`usage: convert [input ...] [operations...] [output]
549
549
 
550
550
  Operations:
551
551
  -resize GEOMETRY resize; supports %, !, ^, >, and < modifiers
@@ -977,27 +977,8 @@ Options:
977
977
  `,exitCode:1};let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=parseFloat(n[0]),s=parseFloat(n[1]);return isNaN(o)||isNaN(s)?{stdout:``,stderr:`x and y must be numbers
978
978
  `,exitCode:1}:(await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchMouseEvent`,{type:`mouseMoved`,x:o,y:s,button:`none`,modifiers:0},e)}),t.lastMousePosition.set(a.targetId,{x:o,y:s}),{stdout:`Mouse moved to (${o}, ${s})\n`,stderr:``,exitCode:0})},Ew=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=Sw(n[0]);if(typeof o==`object`)return{stdout:``,stderr:o.error,exitCode:1};let s=t.lastMousePosition.get(a.targetId)??{x:0,y:0};return await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchMouseEvent`,{type:`mousePressed`,button:o,clickCount:1,x:s.x,y:s.y,modifiers:0},e)}),{stdout:`Mouse button ${o} pressed\n`,stderr:``,exitCode:0}},Dw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=Sw(n[0]);if(typeof o==`object`)return{stdout:``,stderr:o.error,exitCode:1};let s=t.lastMousePosition.get(a.targetId)??{x:0,y:0};return await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchMouseEvent`,{type:`mouseReleased`,button:o,clickCount:1,x:s.x,y:s.y,modifiers:0},e)}),{stdout:`Mouse button ${o} released\n`,stderr:``,exitCode:0}},Ow=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`mousewheel requires <dx> <dy>
979
979
  `,exitCode:1};let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=parseFloat(n[0]),s=parseFloat(n[1]);if(isNaN(o)||isNaN(s))return{stdout:``,stderr:`dx and dy must be numbers
980
- `,exitCode:1};let c=t.lastMousePosition.get(a.targetId)??{x:0,y:0},l=``;return await i(a.targetId,async({sessionId:e,transport:t})=>{if((await t.send(`Runtime.evaluate`,{expression:`document.visibilityState`,returnByValue:!0},e)).result?.value===`hidden`){let n=await t.send(`Runtime.evaluate`,{expression:kw(c.x,c.y,o,s),returnByValue:!0},e);if(n.exceptionDetails)throw Error(n.exceptionDetails.exception?.description??n.exceptionDetails.text??`Page scroll failed`);l=`note: the tab is in the background, so the wheel was applied as a page scroll
981
- `;return}await t.send(`Input.dispatchMouseEvent`,{type:`mouseWheel`,deltaX:o,deltaY:s,x:c.x,y:c.y,modifiers:0},e)}),{stdout:`Mouse wheel scrolled (dx=${o}, dy=${s})\n`,stderr:l,exitCode:0}};function kw(e,t,n,r){return`(() => {
982
- const dx = ${JSON.stringify(n)}, dy = ${JSON.stringify(r)};
983
- const canScroll = (el) => {
984
- const style = getComputedStyle(el);
985
- const y = /(auto|scroll|overlay)/.test(style.overflowY) &&
986
- (dy > 0 ? el.scrollTop + el.clientHeight < el.scrollHeight : dy < 0 && el.scrollTop > 0);
987
- const x = /(auto|scroll|overlay)/.test(style.overflowX) &&
988
- (dx > 0 ? el.scrollLeft + el.clientWidth < el.scrollWidth : dx < 0 && el.scrollLeft > 0);
989
- return y || x;
990
- };
991
- let el = document.elementFromPoint(${JSON.stringify(e)}, ${JSON.stringify(t)});
992
- while (el && el !== document.body && el !== document.documentElement && !canScroll(el)) {
993
- el = el.parentElement;
994
- }
995
- const target = el && el !== document.body && el !== document.documentElement
996
- ? el
997
- : (document.scrollingElement || document.documentElement);
998
- target.scrollBy({ left: dx, top: dy, behavior: 'instant' });
999
- return true;
1000
- })()`}const Aw=async({browser:e,fs:n,state:r,positional:i,flags:a,onTab:o})=>{if(i.length===0)return{stdout:``,stderr:`drop requires a ref (e.g. e5)
980
+ `,exitCode:1};let c=t.lastMousePosition.get(a.targetId)??{x:0,y:0},l=await i(a.targetId,e=>e.mouseWheel(c.x,c.y,o,s))===`page-scroll`?`note: the tab is in the background, so the wheel was applied as a page scroll
981
+ `:``;return{stdout:`Mouse wheel scrolled (dx=${o}, dy=${s})\n`,stderr:l,exitCode:0}},kw=async({browser:e,fs:n,state:r,positional:i,flags:a,onTab:o})=>{if(i.length===0)return{stdout:``,stderr:`drop requires a ref (e.g. e5)
1001
982
  `,exitCode:1};let s=N(a);if(`error`in s)return{stdout:``,stderr:s.error,exitCode:1};let c=i[0],l=a.path,u=a.data,d=[];if(l){let e=await xw(n,l),r=l.split(`/`).pop()??l;d.push({name:r,type:ww(r),base64:t(e)})}let f=[];if(u){let e=u.indexOf(`=`);if(e===-1)return{stdout:``,stderr:`--data format must be "mime/type=value"
1002
983
  `,exitCode:1};f.push({mimeType:u.slice(0,e),value:u.slice(e+1)})}return{stdout:await o(s.targetId,async e=>{let t=ce(r,s.targetId),{objectId:n}=await y(e,t,c);return await pe(e,n,`function(filesData, dataItems) {
1003
984
  var dt = new DataTransfer();
@@ -1014,7 +995,7 @@ Options:
1014
995
  this.dispatchEvent(new DragEvent('drop', { bubbles: true, cancelable: true, dataTransfer: dt }));
1015
996
  return this.tagName;
1016
997
  }`,[d,f]),r.snapshots.delete(s.targetId),`Dropped onto ${c}`})+`
1017
- `,stderr:``,exitCode:0}},jw=e(`playwright-teleport`),Mw={origin:``,localStorage:{},sessionStorage:{}};function Nw(e){let t=/* @__PURE__ */ new Map;for(let n of e){let e=n.domain??`unknown`;t.set(e,(t.get(e)??0)+1)}return[...t.entries()].sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${t} ${e}`).join(`, `)}function Pw(e){return Object.keys(e.localStorage).length+Object.keys(e.sessionStorage).length}function Fw(e){if(!e)return null;try{return new URL(e).origin}catch{return null}}function Iw(e){try{return new URL(`/favicon.ico`,e).toString()}catch{return e}}function Lw(e,t,n){let r=Fw(t);if(t&&r===e)return t;let i=Fw(n);return n&&i===e?n:e||(t??n)}async function Rw(e,t){let n=await e.evaluate(`(() => {
998
+ `,stderr:``,exitCode:0}},Aw=e(`playwright-teleport`),jw={origin:``,localStorage:{},sessionStorage:{}};function Mw(e){let t=/* @__PURE__ */ new Map;for(let n of e){let e=n.domain??`unknown`;t.set(e,(t.get(e)??0)+1)}return[...t.entries()].sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${t} ${e}`).join(`, `)}function Nw(e){return Object.keys(e.localStorage).length+Object.keys(e.sessionStorage).length}function Pw(e){if(!e)return null;try{return new URL(e).origin}catch{return null}}function Fw(e){try{return new URL(`/favicon.ico`,e).toString()}catch{return e}}function Iw(e,t,n){let r=Pw(t);if(t&&r===e)return t;let i=Pw(n);return n&&i===e?n:e||(t??n)}async function Lw(e,t){let n=await e.evaluate(`(() => {
1018
999
  const collect = (storage) => {
1019
1000
  const items = {};
1020
1001
  for (let i = 0; i < storage.length; i++) {
@@ -1028,7 +1009,7 @@ Options:
1028
1009
  localStorage: collect(window.localStorage),
1029
1010
  sessionStorage: collect(window.sessionStorage),
1030
1011
  });
1031
- })()`);if(typeof n!=`string`||n.length===0)return jw.warn(`Teleport storage capture returned non-string result`,{label:t,type:typeof n}),Mw;try{let e=JSON.parse(n);return{origin:typeof e.origin==`string`?e.origin:``,localStorage:e.localStorage??{},sessionStorage:e.sessionStorage??{}}}catch(e){return jw.warn(`Could not parse teleport storage snapshot`,{label:t,error:String(e)}),Mw}}function zw(e){return`(() => {
1012
+ })()`);if(typeof n!=`string`||n.length===0)return Aw.warn(`Teleport storage capture returned non-string result`,{label:t,type:typeof n}),jw;try{let e=JSON.parse(n);return{origin:typeof e.origin==`string`?e.origin:``,localStorage:e.localStorage??{},sessionStorage:e.sessionStorage??{}}}catch(e){return Aw.warn(`Could not parse teleport storage snapshot`,{label:t,error:String(e)}),jw}}function Rw(e){return`(() => {
1032
1013
  const snapshot = ${JSON.stringify(e)};
1033
1014
  if (!snapshot.origin || window.location.origin !== snapshot.origin) return;
1034
1015
  const markerKey = '__slicc_teleport_storage_applied__:' + snapshot.origin;
@@ -1044,7 +1025,7 @@ Options:
1044
1025
  apply(window.localStorage, snapshot.localStorage || {});
1045
1026
  apply(window.sessionStorage, snapshot.sessionStorage || {});
1046
1027
  try { window.sessionStorage.setItem(markerKey, '1'); } catch {}
1047
- })();`}function Bw(e){return`(() => {
1028
+ })();`}function zw(e){return`(() => {
1048
1029
  const snapshot = ${JSON.stringify(e)};
1049
1030
  if (!snapshot.origin || globalThis.location.origin !== snapshot.origin) {
1050
1031
  throw new Error('Teleport storage origin mismatch');
@@ -1062,82 +1043,82 @@ Options:
1062
1043
  localStorageCount: Object.keys(snapshot.localStorage || {}).length,
1063
1044
  sessionStorageCount: Object.keys(snapshot.sessionStorage || {}).length,
1064
1045
  });
1065
- })();`}async function Vw(e,t,n){let r=Pw(t);if(r===0)return;let i=await e.evaluate(Bw(t));jw.info(`Applied teleport storage snapshot on current page`,{target:n,totalEntries:r,resultType:typeof i}),jw.debug(`Applied teleport storage snapshot details`,{target:n,origin:t.origin||`(unknown)`,totalEntries:r,resultType:typeof i})}async function Hw(e,t,n){let r=Pw(t);if(r===0)return null;let i=await e.send(`Page.addScriptToEvaluateOnNewDocument`,{source:zw(t)}),a=typeof i.identifier==`string`?i.identifier:null;return jw.info(`Installed teleport storage init script`,{target:n,totalEntries:r,hasIdentifier:!!a}),jw.debug(`Installed teleport storage init script details`,{target:n,origin:t.origin||`(unknown)`,localStorageCount:Object.keys(t.localStorage).length,sessionStorageCount:Object.keys(t.sessionStorage).length,hasIdentifier:!!a}),a?{identifier:a,targetId:e.targetId}:null}async function Uw(e,t,n){if(t)try{await e.send(`Page.removeScriptToEvaluateOnNewDocument`,{identifier:t.identifier})}catch(e){jw.warn(`Failed to remove teleport storage init script`,{target:n,error:String(e)})}}async function Ww(e){let t=await e.evaluate(`(() => JSON.stringify({
1046
+ })();`}async function Bw(e,t,n){let r=Nw(t);if(r===0)return;let i=await e.evaluate(zw(t));Aw.info(`Applied teleport storage snapshot on current page`,{target:n,totalEntries:r,resultType:typeof i}),Aw.debug(`Applied teleport storage snapshot details`,{target:n,origin:t.origin||`(unknown)`,totalEntries:r,resultType:typeof i})}async function Vw(e,t,n){let r=Nw(t);if(r===0)return null;let i=await e.send(`Page.addScriptToEvaluateOnNewDocument`,{source:Rw(t)}),a=typeof i.identifier==`string`?i.identifier:null;return Aw.info(`Installed teleport storage init script`,{target:n,totalEntries:r,hasIdentifier:!!a}),Aw.debug(`Installed teleport storage init script details`,{target:n,origin:t.origin||`(unknown)`,localStorageCount:Object.keys(t.localStorage).length,sessionStorageCount:Object.keys(t.sessionStorage).length,hasIdentifier:!!a}),a?{identifier:a,targetId:e.targetId}:null}async function Hw(e,t,n){if(t)try{await e.send(`Page.removeScriptToEvaluateOnNewDocument`,{identifier:t.identifier})}catch(e){Aw.warn(`Failed to remove teleport storage init script`,{target:n,error:String(e)})}}async function Uw(e){let t=await e.evaluate(`(() => JSON.stringify({
1066
1047
  url: window.location.href,
1067
1048
  title: document.title || '',
1068
1049
  bodySnippet: document.body?.innerText?.replace(/\\s+/g, ' ').trim().slice(0, 500) || '(empty)',
1069
- }))()`);if(typeof t!=`string`||t.length===0)return{url:``,title:``,bodySnippet:`(unavailable)`};try{let e=JSON.parse(t);return{url:typeof e.url==`string`?e.url:``,title:typeof e.title==`string`?e.title:``,bodySnippet:typeof e.bodySnippet==`string`&&e.bodySnippet.length>0?e.bodySnippet:`(empty)`}}catch{return{url:``,title:``,bodySnippet:`(unparseable)`}}}function Gw(e){return/callback|authorize\/resume|error/i.test(e)}async function Kw(e,t,n){try{let r=await Ww(e),i=`${n}:${r.url}:${r.title}`;if(t.lastFollowerDiagnosticKey===i)return;t.lastFollowerDiagnosticKey=i,jw.debug(`Teleport follower diagnostics`,{reason:n,url:r.url,title:r.title,bodySnippet:r.bodySnippet})}catch(e){jw.warn(`Could not capture teleport follower diagnostics`,{reason:n,error:String(e)})}}async function qw(e,t,n){let r=t.followerStorageScript;if(r){t.followerStorageScript=null;try{await e.withTab(r.targetId,e=>Uw(e,r,`follower`)),jw.info(`Removed follower teleport storage init script`,{reason:n})}catch(e){jw.warn(`Failed to remove follower teleport storage init script`,{reason:n,error:String(e)})}}}function Jw(e){return Array.isArray(e)?e:[]}const U=e(`playwright-teleport`);let Yw=null,Xw=null;function Zw(e){Yw=e}function Qw(e){Xw=e}function $w(){return Xw?.()??null}async function eT(e,t){if(U.warn(`Teleport timed out`,{timeoutMs:t.timeoutMs,phase:t.phase}),U.debug(`Teleport timeout details`,{timeoutMs:t.timeoutMs,phase:t.phase,followerTargetId:t.followerTargetId}),t.phase=`timedOut`,t.followerTargetId){try{await e.withTab(t.followerTargetId,e=>Kw(e,t,`timeout`))}catch(e){U.warn(`Could not attach to follower for timeout diagnostics`,{error:String(e)})}await qw(e,t,`timeout`)}if(tT(t),t.followerTargetId)try{await e.closePage(t.followerTargetId)}catch(e){U.warn(`Failed to close follower tab after timeout`,{error:String(e)})}t.rejectBlock?.(/* @__PURE__ */ Error(`Teleport timed out after ${Math.round(t.timeoutMs/1e3)}s — human did not complete auth`))}function tT(e){U.info(`Cleaning up teleport watcher`,{phase:e.phase,hadPoll:!!e.pollInterval,hadTimeout:!!e.timeoutTimer,hadListener:!!e.cleanupListener}),e.pollInterval&&=(clearInterval(e.pollInterval),void 0),e.timeoutTimer&&=(clearTimeout(e.timeoutTimer),void 0),e.cleanupListener&&=(e.cleanupListener(),void 0)}function nT(e,t,n,r,i,a,o,s){if(a===`preview`)throw Error(`cannot teleport to a preview target (no Network.*)`);U.info(`Arming teleport watcher`,{timeoutMs:i,runtimeSelection:a?`explicit`:`auto`}),U.debug(`Arming teleport watcher details`,{startPattern:n.source,returnPattern:r.source,timeoutMs:i,runtimeId:a??`auto`,originalUrl:o});let c={startPattern:n,returnPattern:r,timeoutMs:i,runtimeId:a,phase:`armed`,leaderTargetId:s,originalLeaderUrl:o};return c.completionPromise=new Promise((e,t)=>{c.resolveBlock=e,c.rejectBlock=t}),c.completionPromise.catch(()=>{}),c.pollInterval=setInterval(()=>{(async()=>{if(c.phase!==`armed`)return;let r=c.leaderTargetId;if(r)try{let i=await e.withTab(r,e=>e.evaluate(`window.location.href`)),a=typeof i==`string`?i:String(i);U.debug(`Polling leader tab URL`,{targetId:r,href:a,startPattern:n.source}),n.test(a)&&(U.info(`Teleport start pattern matched on leader`),U.debug(`Teleport start pattern matched on leader details`,{targetId:r,href:a,startPattern:n.source}),iT(e,t,c,a).catch(e=>{U.error(`Unhandled teleport trigger error`,{error:String(e)})}))}catch(e){U.warn(`Error polling leader tab URL`,{targetId:r,error:String(e)})}})().catch(e=>{U.warn(`Leader teleport poll failed`,{error:String(e)})})},1e3),s&&t.teleportWatchers.set(s,c),c}async function rT(e,t,n,r,i){if(n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)try{let a=await e.withTab(r,e=>e.evaluate(`window.location.href`)),o=typeof a==`string`?a:String(a);if(!o)return;if(n.lastFollowerUrl!==o&&(n.lastFollowerUrl=o,U.debug(`Follower teleport navigation`,{href:o,phase:n.phase})),n.phase===`waitingForAuth`){n.startPattern.test(o)?(n.phase=`waitingForReturn`,U.info(`Follower reached auth provider; waiting for return pattern`),U.debug(`Follower reached auth provider details`,{href:o,startPattern:n.startPattern.source})):U.debug(`Waiting for auth redirect on follower`,{href:o,startPattern:n.startPattern.source});return}U.debug(`Polling follower tab URL for return`,{href:o,returnPattern:n.returnPattern.source}),Gw(o)&&await e.withTab(r,e=>Kw(e,n,`waiting-for-return`)),n.returnPattern.test(o)&&(U.info(`Follower return pattern matched after auth`),U.debug(`Follower return pattern matched after auth details`,{href:o,returnPattern:n.returnPattern.source}),lT(e,t,n,i).catch(e=>{U.error(`Unhandled teleport capture error`,{error:String(e)})}))}catch(e){U.warn(`Error polling follower tab URL`,{error:String(e)})}}async function iT(e,t,n,r){if(n.phase===`armed`){n.phase=`teleporting`,U.info(`Teleport triggered`),U.debug(`Teleport trigger details`,{triggerUrl:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0);try{let i=n.leaderTargetId;if(!i)throw Error(`teleport has no leader tab to capture from`);let a=[],o=Mw;try{a=Jw((await e.withTab(i,e=>e.send(`Network.getCookies`,{}))).cookies),U.info(`Captured leader cookies for follower`,{count:a.length})}catch(e){U.warn(`Could not capture leader cookies`,{error:String(e)})}try{o=await e.withTab(i,e=>Rw(e,`leader`)),U.info(`Captured leader storage for follower`,{totalEntries:Pw(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),U.debug(`Captured leader storage for follower details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){U.warn(`Could not capture leader storage`,{error:String(e)})}let s=n.runtimeId;if(!s){let e=Yw?.();if(!e)throw Error(`No follower selection available — not connected to a tray`);let t=e();if(!t)throw Error(`No followers connected to teleport to`);s=t.runtimeId}U.info(`Selected follower for teleport`),U.debug(`Selected follower for teleport details`,{runtimeId:s});let c=await e.createRemotePage(s,`about:blank`),l=c.includes(`:`)?c:`${s}:${c}`;n.followerTargetId=l,U.info(`Opened follower tab for teleport`),U.debug(`Opened follower tab for teleport details`,{followerTargetId:l});let u=r;await e.withTab(l,async e=>{if(await e.send(`Page.enable`),a.length>0)try{await e.send(`Network.setCookies`,{cookies:a}),U.info(`Injected leader cookies into follower`,{count:a.length})}catch(e){U.warn(`Could not inject leader cookies into follower`,{error:String(e)})}n.followerStorageScript=await Hw(e,o,`follower`),U.info(`Navigating follower to intercepted auth URL`),U.debug(`Navigating follower to intercepted auth URL details`,{url:u,originalLeaderUrl:n.originalLeaderUrl,triggerUrl:r,storageOrigin:o.origin||`(unknown)`}),await e.send(`Page.navigate`,{url:u})}),U.info(`Starting teleport timeout timer`,{timeoutMs:n.timeoutMs}),n.timeoutTimer=setTimeout(()=>{(n.phase===`teleporting`||n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)&&eT(e,n).catch(e=>{U.error(`Teleport timeout handler failed`,{error:String(e)})})},n.timeoutMs),n.phase=`waitingForAuth`,U.info(`Teleport waiting for follower auth redirect`),U.debug(`Teleport waiting for follower auth redirect details`,{startPattern:n.startPattern.source}),n.pollInterval=setInterval(()=>{rT(e,t,n,l,s).catch(e=>{U.warn(`Follower teleport poll failed`,{error:String(e)})})},1e3)}catch(t){U.error(`Teleport trigger failed`,{error:String(t)}),await qw(e,n,`trigger-error`),n.phase=`done`,tT(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}async function aT(e,t){U.info(`Waiting for redirect chain to settle (2s)`),await new Promise(e=>setTimeout(e,2e3));let n=t.followerTargetId,r=t.followerStorageScript??null;t.followerStorageScript=null;let{cookies:i,followerStorage:a,finalUrl:o}=await e.withTab(n,async e=>{let n;try{let t=await e.evaluate(`window.location.href`);n=typeof t==`string`?t:String(t),U.debug(`Captured final URL from follower`,{finalUrl:n})}catch(e){U.warn(`Could not read follower URL (may be mid-navigation)`,{error:String(e)})}try{let t=await e.evaluate(`document.body?.innerText?.substring(0, 500) || "(empty)"`);U.debug(`Follower page content at capture time`,{bodyText:t})}catch(e){U.warn(`Could not read follower page content`,{error:String(e)})}let i=Jw((await e.send(`Network.getCookies`)).cookies),a=i.length>0?Nw(i):`none`;U.info(`Captured cookies from follower`,{count:i.length}),U.debug(`Captured cookies from follower details`,{count:i.length,domains:a});let o=Mw;try{o=await Rw(e,`follower`),U.info(`Captured follower storage for leader`,{totalEntries:Pw(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),U.debug(`Captured follower storage for leader details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){U.warn(`Could not capture follower storage`,{error:String(e)})}return await Kw(e,t,`capture`),await Uw(e,r,`follower`),{cookies:i,followerStorage:o,finalUrl:n}});try{await e.closePage(t.followerTargetId),U.info(`Closed follower tab after teleport`),U.debug(`Closed follower tab after teleport details`,{followerTargetId:t.followerTargetId})}catch(e){U.warn(`Failed to close follower tab`,{error:String(e)})}return{cookies:i,followerStorage:a,finalUrl:o}}async function oT(e,t,n,r){try{await e.navigate(n),await Vw(e,t,`leader`),r&&r!==n&&await e.navigate(r)}catch(i){U.warn(`Direct leader origin hydration failed, falling back to init-script replay`,{error:String(i)}),U.debug(`Direct leader origin hydration fallback details`,{hydrationUrl:n,landingUrl:r,error:String(i)});let a=await Hw(e,t,`leader`);try{r&&await e.navigate(r)}finally{await Uw(e,a,`leader`)}}}async function sT(e,t,n,r,i){let a=e.targetId,o=await Hw(e,n,`leader`);try{r&&(U.info(`Navigating leader after auth-state injection`,{hasLandingUrl:!0,storageEntries:Pw(n)}),U.debug(`Navigating leader after auth-state injection details`,{landingUrl:r,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:n.origin||`(unknown)`,storageEntries:Pw(n)}),await e.navigate(r))}finally{await Uw(e,o,`leader`)}}async function cT(e,t,n,r,i){let a=t.leaderTargetId,o=r.origin||``,s=Lw(o,t.originalLeaderUrl,i),c=Fw(t.originalLeaderUrl),l=!!o&&c!==o,u=l?Iw(o):null;return a?(await e.withTab(a,async e=>{n.length>0&&(await e.send(`Network.setCookies`,{cookies:n}),U.info(`Injected cookies into leader tab`,{count:n.length}),U.debug(`Injected cookies into leader tab details`,{count:n.length,leaderTargetId:a})),l&&u?(U.info(`Hydrating leader storage origin before landing`,{storageEntries:Pw(r)}),U.debug(`Hydrating leader storage origin before landing details`,{hydrationUrl:u,landingUrl:s,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:o,storageEntries:Pw(r)}),await oT(e,r,u,s)):await sT(e,t,r,s,i)}),s):(U.warn(`No leader tab available for auth-state injection`),s)}async function lT(e,t,n,r){if(n.phase===`teleporting`||n.phase===`waitingForReturn`){n.phase=`capturing`,U.info(`Capturing auth state from follower`),U.debug(`Capturing auth state from follower details`,{followerTargetId:n.followerTargetId,runtimeId:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0),n.timeoutTimer&&=(clearTimeout(n.timeoutTimer),void 0);try{let{cookies:t,followerStorage:i,finalUrl:a}=await aT(e,n),o=Pw(i),s=await cT(e,n,t,i,a);n.phase=`done`,tT(n);let c=t.length>0?` (${Nw(t)})`:``,l=o>0?` + ${o} storage entr${o===1?`y`:`ies`}`:``,u=s?` (navigated to ${s})`:``,d=`Teleported ${t.length} cookie(s)${c}${l} from ${r}${u}`;U.info(`Teleport completed successfully`,{cookieCount:t.length,storageEntries:o,landed:!!s}),U.debug(`Teleport completed successfully details`,{result:d}),n.resolveBlock?.(d)}catch(t){U.error(`Teleport auth-state capture failed`,{error:String(t)}),await qw(e,n,`capture-error`),n.phase=`done`,tT(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}const uT=e(`playwright`),dT=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`goto requires a URL
1070
- `,exitCode:1};let o=N(i);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};await a(o.targetId,e=>e.navigate(r[0])),n.snapshots.delete(o.targetId);let s=i[`teleport-start`],c=i[`teleport-return`];if(s&&c){uT.info(`Arming teleport via goto/navigate flags`),uT.debug(`Arming teleport via goto/navigate flags details`,{targetId:o.targetId,startPattern:s,returnPattern:c});let t,a;try{t=new RegExp(s)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-start: ${s}\n`,exitCode:1}}try{a=new RegExp(c)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-return: ${c}\n`,exitCode:1}}let l=i.timeout?parseInt(i.timeout,10):300,u=n.teleportWatchers.get(o.targetId);u&&(tT(u),n.teleportWatchers.delete(o.targetId)),nT(e,n,t,a,l*1e3,i[`teleport-runtime`],r[0],o.targetId)}if(i.discover===`true`){let{browseShWarning:e,...n}=await nw(r[0],{discover:!0,fs:t}),i={action:`navigate`,targetId:o.targetId,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(i,null,2)+`
1071
- `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Navigated to ${r[0]}\n`,stderr:``,exitCode:0}},fT=async({browser:e,state:t,flags:n,onTab:r})=>{let i=N(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`history.back()`)}),t.snapshots.delete(i.targetId),{stdout:`Navigated back
1072
- `,stderr:``,exitCode:0})},pT=async({browser:e,state:t,flags:n,onTab:r})=>{let i=N(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`history.forward()`)}),t.snapshots.delete(i.targetId),{stdout:`Navigated forward
1073
- `,stderr:``,exitCode:0})},mT=async({browser:e,flags:t,onTab:n})=>{let r=N(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:(await n(r.targetId,async e=>{await e.send(`Page.reload`)}),{stdout:`Reloaded
1074
- `,stderr:``,exitCode:0})},hT=async({browser:e,flags:t,positional:n,onTab:r})=>{let i=N(t);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=n[0];return a!==`online`&&a!==`offline`?{stdout:``,stderr:`network-state-set requires "online" or "offline"
1075
- `,exitCode:1}:(await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Network.enable`,{},e),await t.send(`Network.emulateNetworkConditions`,{offline:a===`offline`,latency:0,downloadThroughput:-1,uploadThroughput:-1},e)}),{stdout:`Network set to ${a}\n`,stderr:``,exitCode:0})},gT=[`image/`,`font/`,`text/css`,`application/javascript`,`text/javascript`];function _T(e,t){if(e&&gT.some(t=>e.startsWith(t)))return!0;try{let e=new URL(t).pathname;return/\.(png|jpe?g|gif|webp|svg|ico|woff2?|ttf|eot|otf|css|js|mjs)$/i.test(e)}catch{return!1}}function vT(e,t,n,r,i){if(t.networkCleanup.has(r))return;t.networkRequests.set(r,[]),t.networkRequestIndex.set(r,/* @__PURE__ */ new Map);let a=1,o=DC({browser:e,targetId:r,transport:n,sessionId:i,listeners:[[`Network.requestWillBeSent`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId,s=n.request;if(!i||!s)return;let c=t.networkRequests.get(r),l=t.networkRequestIndex.get(r);if(!c||!l)return;let u=s.url??``,d={index:a++,requestId:i,method:s.method??`GET`,url:u,requestHeaders:s.headers??{},requestBody:s.postData==null?null:String(s.postData),status:null,responseHeaders:null,responseBody:null,responseBodyBase64:!1,mimeType:null,isStatic:_T(null,u),timestamp:Date.now()};if(c.push(d),l.set(i,d),c.length>500){let e=c.splice(0,c.length-500);for(let t of e)l.delete(t.requestId)}}],[`Network.responseReceived`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId,a=n.response;if(!i||!a)return;let s=t.networkRequestIndex.get(r)?.get(i);s&&(s.status=a.status??null,s.responseHeaders=a.headers??null,s.mimeType=a.mimeType??null,s.isStatic=_T(s.mimeType,s.url))}],[`Network.loadingFinished`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId;if(!i)return;let a=t.networkRequestIndex.get(r)?.get(i);a&&!a.isStatic&&a.responseBody===null&&o.transport.send(`Network.getResponseBody`,{requestId:i},o.sessionId).then(e=>{let t=e;t&&(a.responseBody=t.body??null,a.responseBodyBase64=t.base64Encoded===!0)}).catch(()=>{})}]],enable:(e,t)=>e.send(`Network.enable`,{},t)});t.networkCleanup.set(r,()=>o.stop())}function yT(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<55296||n>57343)continue;if(n>=56320)return t;let r=e.charCodeAt(t+1);if(Number.isNaN(r)||r<56320||r>57343)return t;t++}return-1}function bT(e,t){if(t){let t;try{t=atob(e)}catch{return{error:`response body is flagged base64 but is not valid base64`}}let n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return{bytes:n}}let n=yT(e);return n>=0?{error:`response body has an unpaired surrogate at index ${n} and cannot be saved without substituting U+FFFD`}:{bytes:new TextEncoder().encode(e)}}function xT(e,t,n){let r=parseInt(n,10);return!Number.isFinite(r)||r<1?null:(e.networkRequests.get(t)??[]).find(e=>e.index===r)??null}const ST=async({browser:e,state:t,flags:n,onTab:r})=>{let i=N(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};t.networkCleanup.has(i.targetId)||await r(i.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),vT(e,t,r,i.targetId,n)});let a=n.static===`true`,o=n.filter,s=n.clear===`true`,c=t.networkRequests.get(i.targetId)??[];if(a||(c=c.filter(e=>!e.isStatic)),o){let e;try{e=new RegExp(o)}catch{return{stdout:``,stderr:`Invalid filter regex: ${o}\n`,exitCode:1}}c=c.filter(t=>e.test(t.url))}return s&&(t.networkRequests.set(i.targetId,[]),t.networkRequestIndex.set(i.targetId,/* @__PURE__ */ new Map)),c.length===0?{stdout:`No requests
1050
+ }))()`);if(typeof t!=`string`||t.length===0)return{url:``,title:``,bodySnippet:`(unavailable)`};try{let e=JSON.parse(t);return{url:typeof e.url==`string`?e.url:``,title:typeof e.title==`string`?e.title:``,bodySnippet:typeof e.bodySnippet==`string`&&e.bodySnippet.length>0?e.bodySnippet:`(empty)`}}catch{return{url:``,title:``,bodySnippet:`(unparseable)`}}}function Ww(e){return/callback|authorize\/resume|error/i.test(e)}async function Gw(e,t,n){try{let r=await Uw(e),i=`${n}:${r.url}:${r.title}`;if(t.lastFollowerDiagnosticKey===i)return;t.lastFollowerDiagnosticKey=i,Aw.debug(`Teleport follower diagnostics`,{reason:n,url:r.url,title:r.title,bodySnippet:r.bodySnippet})}catch(e){Aw.warn(`Could not capture teleport follower diagnostics`,{reason:n,error:String(e)})}}async function Kw(e,t,n){let r=t.followerStorageScript;if(r){t.followerStorageScript=null;try{await e.withTab(r.targetId,e=>Hw(e,r,`follower`)),Aw.info(`Removed follower teleport storage init script`,{reason:n})}catch(e){Aw.warn(`Failed to remove follower teleport storage init script`,{reason:n,error:String(e)})}}}function qw(e){return Array.isArray(e)?e:[]}const U=e(`playwright-teleport`);let Jw=null,Yw=null;function Xw(e){Jw=e}function Zw(e){Yw=e}function Qw(){return Yw?.()??null}async function $w(e,t){if(U.warn(`Teleport timed out`,{timeoutMs:t.timeoutMs,phase:t.phase}),U.debug(`Teleport timeout details`,{timeoutMs:t.timeoutMs,phase:t.phase,followerTargetId:t.followerTargetId}),t.phase=`timedOut`,t.followerTargetId){try{await e.withTab(t.followerTargetId,e=>Gw(e,t,`timeout`))}catch(e){U.warn(`Could not attach to follower for timeout diagnostics`,{error:String(e)})}await Kw(e,t,`timeout`)}if(eT(t),t.followerTargetId)try{await e.closePage(t.followerTargetId)}catch(e){U.warn(`Failed to close follower tab after timeout`,{error:String(e)})}t.rejectBlock?.(/* @__PURE__ */ Error(`Teleport timed out after ${Math.round(t.timeoutMs/1e3)}s — human did not complete auth`))}function eT(e){U.info(`Cleaning up teleport watcher`,{phase:e.phase,hadPoll:!!e.pollInterval,hadTimeout:!!e.timeoutTimer,hadListener:!!e.cleanupListener}),e.pollInterval&&=(clearInterval(e.pollInterval),void 0),e.timeoutTimer&&=(clearTimeout(e.timeoutTimer),void 0),e.cleanupListener&&=(e.cleanupListener(),void 0)}function tT(e,t,n,r,i,a,o,s){if(a===`preview`)throw Error(`cannot teleport to a preview target (no Network.*)`);U.info(`Arming teleport watcher`,{timeoutMs:i,runtimeSelection:a?`explicit`:`auto`}),U.debug(`Arming teleport watcher details`,{startPattern:n.source,returnPattern:r.source,timeoutMs:i,runtimeId:a??`auto`,originalUrl:o});let c={startPattern:n,returnPattern:r,timeoutMs:i,runtimeId:a,phase:`armed`,leaderTargetId:s,originalLeaderUrl:o};return c.completionPromise=new Promise((e,t)=>{c.resolveBlock=e,c.rejectBlock=t}),c.completionPromise.catch(()=>{}),c.pollInterval=setInterval(()=>{(async()=>{if(c.phase!==`armed`)return;let r=c.leaderTargetId;if(r)try{let i=await e.withTab(r,e=>e.evaluate(`window.location.href`)),a=typeof i==`string`?i:String(i);U.debug(`Polling leader tab URL`,{targetId:r,href:a,startPattern:n.source}),n.test(a)&&(U.info(`Teleport start pattern matched on leader`),U.debug(`Teleport start pattern matched on leader details`,{targetId:r,href:a,startPattern:n.source}),rT(e,t,c,a).catch(e=>{U.error(`Unhandled teleport trigger error`,{error:String(e)})}))}catch(e){U.warn(`Error polling leader tab URL`,{targetId:r,error:String(e)})}})().catch(e=>{U.warn(`Leader teleport poll failed`,{error:String(e)})})},1e3),s&&t.teleportWatchers.set(s,c),c}async function nT(e,t,n,r,i){if(n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)try{let a=await e.withTab(r,e=>e.evaluate(`window.location.href`)),o=typeof a==`string`?a:String(a);if(!o)return;if(n.lastFollowerUrl!==o&&(n.lastFollowerUrl=o,U.debug(`Follower teleport navigation`,{href:o,phase:n.phase})),n.phase===`waitingForAuth`){n.startPattern.test(o)?(n.phase=`waitingForReturn`,U.info(`Follower reached auth provider; waiting for return pattern`),U.debug(`Follower reached auth provider details`,{href:o,startPattern:n.startPattern.source})):U.debug(`Waiting for auth redirect on follower`,{href:o,startPattern:n.startPattern.source});return}U.debug(`Polling follower tab URL for return`,{href:o,returnPattern:n.returnPattern.source}),Ww(o)&&await e.withTab(r,e=>Gw(e,n,`waiting-for-return`)),n.returnPattern.test(o)&&(U.info(`Follower return pattern matched after auth`),U.debug(`Follower return pattern matched after auth details`,{href:o,returnPattern:n.returnPattern.source}),cT(e,t,n,i).catch(e=>{U.error(`Unhandled teleport capture error`,{error:String(e)})}))}catch(e){U.warn(`Error polling follower tab URL`,{error:String(e)})}}async function rT(e,t,n,r){if(n.phase===`armed`){n.phase=`teleporting`,U.info(`Teleport triggered`),U.debug(`Teleport trigger details`,{triggerUrl:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0);try{let i=n.leaderTargetId;if(!i)throw Error(`teleport has no leader tab to capture from`);let a=[],o=jw;try{a=qw((await e.withTab(i,e=>e.send(`Network.getCookies`,{}))).cookies),U.info(`Captured leader cookies for follower`,{count:a.length})}catch(e){U.warn(`Could not capture leader cookies`,{error:String(e)})}try{o=await e.withTab(i,e=>Lw(e,`leader`)),U.info(`Captured leader storage for follower`,{totalEntries:Nw(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),U.debug(`Captured leader storage for follower details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){U.warn(`Could not capture leader storage`,{error:String(e)})}let s=n.runtimeId;if(!s){let e=Jw?.();if(!e)throw Error(`No follower selection available — not connected to a tray`);let t=e();if(!t)throw Error(`No followers connected to teleport to`);s=t.runtimeId}U.info(`Selected follower for teleport`),U.debug(`Selected follower for teleport details`,{runtimeId:s});let c=await e.createRemotePage(s,`about:blank`),l=c.includes(`:`)?c:`${s}:${c}`;n.followerTargetId=l,U.info(`Opened follower tab for teleport`),U.debug(`Opened follower tab for teleport details`,{followerTargetId:l});let u=r;await e.withTab(l,async e=>{if(await e.send(`Page.enable`),a.length>0)try{await e.send(`Network.setCookies`,{cookies:a}),U.info(`Injected leader cookies into follower`,{count:a.length})}catch(e){U.warn(`Could not inject leader cookies into follower`,{error:String(e)})}n.followerStorageScript=await Vw(e,o,`follower`),U.info(`Navigating follower to intercepted auth URL`),U.debug(`Navigating follower to intercepted auth URL details`,{url:u,originalLeaderUrl:n.originalLeaderUrl,triggerUrl:r,storageOrigin:o.origin||`(unknown)`}),await e.send(`Page.navigate`,{url:u})}),U.info(`Starting teleport timeout timer`,{timeoutMs:n.timeoutMs}),n.timeoutTimer=setTimeout(()=>{(n.phase===`teleporting`||n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)&&$w(e,n).catch(e=>{U.error(`Teleport timeout handler failed`,{error:String(e)})})},n.timeoutMs),n.phase=`waitingForAuth`,U.info(`Teleport waiting for follower auth redirect`),U.debug(`Teleport waiting for follower auth redirect details`,{startPattern:n.startPattern.source}),n.pollInterval=setInterval(()=>{nT(e,t,n,l,s).catch(e=>{U.warn(`Follower teleport poll failed`,{error:String(e)})})},1e3)}catch(t){U.error(`Teleport trigger failed`,{error:String(t)}),await Kw(e,n,`trigger-error`),n.phase=`done`,eT(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}async function iT(e,t){U.info(`Waiting for redirect chain to settle (2s)`),await new Promise(e=>setTimeout(e,2e3));let n=t.followerTargetId,r=t.followerStorageScript??null;t.followerStorageScript=null;let{cookies:i,followerStorage:a,finalUrl:o}=await e.withTab(n,async e=>{let n;try{let t=await e.evaluate(`window.location.href`);n=typeof t==`string`?t:String(t),U.debug(`Captured final URL from follower`,{finalUrl:n})}catch(e){U.warn(`Could not read follower URL (may be mid-navigation)`,{error:String(e)})}try{let t=await e.evaluate(`document.body?.innerText?.substring(0, 500) || "(empty)"`);U.debug(`Follower page content at capture time`,{bodyText:t})}catch(e){U.warn(`Could not read follower page content`,{error:String(e)})}let i=qw((await e.send(`Network.getCookies`)).cookies),a=i.length>0?Mw(i):`none`;U.info(`Captured cookies from follower`,{count:i.length}),U.debug(`Captured cookies from follower details`,{count:i.length,domains:a});let o=jw;try{o=await Lw(e,`follower`),U.info(`Captured follower storage for leader`,{totalEntries:Nw(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),U.debug(`Captured follower storage for leader details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){U.warn(`Could not capture follower storage`,{error:String(e)})}return await Gw(e,t,`capture`),await Hw(e,r,`follower`),{cookies:i,followerStorage:o,finalUrl:n}});try{await e.closePage(t.followerTargetId),U.info(`Closed follower tab after teleport`),U.debug(`Closed follower tab after teleport details`,{followerTargetId:t.followerTargetId})}catch(e){U.warn(`Failed to close follower tab`,{error:String(e)})}return{cookies:i,followerStorage:a,finalUrl:o}}async function aT(e,t,n,r){try{await e.navigate(n),await Bw(e,t,`leader`),r&&r!==n&&await e.navigate(r)}catch(i){U.warn(`Direct leader origin hydration failed, falling back to init-script replay`,{error:String(i)}),U.debug(`Direct leader origin hydration fallback details`,{hydrationUrl:n,landingUrl:r,error:String(i)});let a=await Vw(e,t,`leader`);try{r&&await e.navigate(r)}finally{await Hw(e,a,`leader`)}}}async function oT(e,t,n,r,i){let a=e.targetId,o=await Vw(e,n,`leader`);try{r&&(U.info(`Navigating leader after auth-state injection`,{hasLandingUrl:!0,storageEntries:Nw(n)}),U.debug(`Navigating leader after auth-state injection details`,{landingUrl:r,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:n.origin||`(unknown)`,storageEntries:Nw(n)}),await e.navigate(r))}finally{await Hw(e,o,`leader`)}}async function sT(e,t,n,r,i){let a=t.leaderTargetId,o=r.origin||``,s=Iw(o,t.originalLeaderUrl,i),c=Pw(t.originalLeaderUrl),l=!!o&&c!==o,u=l?Fw(o):null;return a?(await e.withTab(a,async e=>{n.length>0&&(await e.send(`Network.setCookies`,{cookies:n}),U.info(`Injected cookies into leader tab`,{count:n.length}),U.debug(`Injected cookies into leader tab details`,{count:n.length,leaderTargetId:a})),l&&u?(U.info(`Hydrating leader storage origin before landing`,{storageEntries:Nw(r)}),U.debug(`Hydrating leader storage origin before landing details`,{hydrationUrl:u,landingUrl:s,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:o,storageEntries:Nw(r)}),await aT(e,r,u,s)):await oT(e,t,r,s,i)}),s):(U.warn(`No leader tab available for auth-state injection`),s)}async function cT(e,t,n,r){if(n.phase===`teleporting`||n.phase===`waitingForReturn`){n.phase=`capturing`,U.info(`Capturing auth state from follower`),U.debug(`Capturing auth state from follower details`,{followerTargetId:n.followerTargetId,runtimeId:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0),n.timeoutTimer&&=(clearTimeout(n.timeoutTimer),void 0);try{let{cookies:t,followerStorage:i,finalUrl:a}=await iT(e,n),o=Nw(i),s=await sT(e,n,t,i,a);n.phase=`done`,eT(n);let c=t.length>0?` (${Mw(t)})`:``,l=o>0?` + ${o} storage entr${o===1?`y`:`ies`}`:``,u=s?` (navigated to ${s})`:``,d=`Teleported ${t.length} cookie(s)${c}${l} from ${r}${u}`;U.info(`Teleport completed successfully`,{cookieCount:t.length,storageEntries:o,landed:!!s}),U.debug(`Teleport completed successfully details`,{result:d}),n.resolveBlock?.(d)}catch(t){U.error(`Teleport auth-state capture failed`,{error:String(t)}),await Kw(e,n,`capture-error`),n.phase=`done`,eT(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}const lT=e(`playwright`),uT=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`goto requires a URL
1051
+ `,exitCode:1};let o=N(i);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};await a(o.targetId,e=>e.navigate(r[0])),n.snapshots.delete(o.targetId);let s=i[`teleport-start`],c=i[`teleport-return`];if(s&&c){lT.info(`Arming teleport via goto/navigate flags`),lT.debug(`Arming teleport via goto/navigate flags details`,{targetId:o.targetId,startPattern:s,returnPattern:c});let t,a;try{t=new RegExp(s)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-start: ${s}\n`,exitCode:1}}try{a=new RegExp(c)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-return: ${c}\n`,exitCode:1}}let l=i.timeout?parseInt(i.timeout,10):300,u=n.teleportWatchers.get(o.targetId);u&&(eT(u),n.teleportWatchers.delete(o.targetId)),tT(e,n,t,a,l*1e3,i[`teleport-runtime`],r[0],o.targetId)}if(i.discover===`true`){let{browseShWarning:e,...n}=await nw(r[0],{discover:!0,fs:t}),i={action:`navigate`,targetId:o.targetId,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(i,null,2)+`
1052
+ `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Navigated to ${r[0]}\n`,stderr:``,exitCode:0}},dT=async({browser:e,state:t,flags:n,onTab:r})=>{let i=N(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`history.back()`)}),t.snapshots.delete(i.targetId),{stdout:`Navigated back
1053
+ `,stderr:``,exitCode:0})},fT=async({browser:e,state:t,flags:n,onTab:r})=>{let i=N(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`history.forward()`)}),t.snapshots.delete(i.targetId),{stdout:`Navigated forward
1054
+ `,stderr:``,exitCode:0})},pT=async({browser:e,flags:t,onTab:n})=>{let r=N(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:(await n(r.targetId,async e=>{await e.send(`Page.reload`)}),{stdout:`Reloaded
1055
+ `,stderr:``,exitCode:0})},mT=async({browser:e,flags:t,positional:n,onTab:r})=>{let i=N(t);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=n[0];return a!==`online`&&a!==`offline`?{stdout:``,stderr:`network-state-set requires "online" or "offline"
1056
+ `,exitCode:1}:(await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Network.enable`,{},e),await t.send(`Network.emulateNetworkConditions`,{offline:a===`offline`,latency:0,downloadThroughput:-1,uploadThroughput:-1},e)}),{stdout:`Network set to ${a}\n`,stderr:``,exitCode:0})},hT=[`image/`,`font/`,`text/css`,`application/javascript`,`text/javascript`];function gT(e,t){if(e&&hT.some(t=>e.startsWith(t)))return!0;try{let e=new URL(t).pathname;return/\.(png|jpe?g|gif|webp|svg|ico|woff2?|ttf|eot|otf|css|js|mjs)$/i.test(e)}catch{return!1}}function _T(e,t,n,r,i){if(t.networkCleanup.has(r))return;t.networkRequests.set(r,[]),t.networkRequestIndex.set(r,/* @__PURE__ */ new Map);let a=1,o=DC({browser:e,targetId:r,transport:n,sessionId:i,listeners:[[`Network.requestWillBeSent`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId,s=n.request;if(!i||!s)return;let c=t.networkRequests.get(r),l=t.networkRequestIndex.get(r);if(!c||!l)return;let u=s.url??``,d={index:a++,requestId:i,method:s.method??`GET`,url:u,requestHeaders:s.headers??{},requestBody:s.postData==null?null:String(s.postData),status:null,responseHeaders:null,responseBody:null,responseBodyBase64:!1,mimeType:null,isStatic:gT(null,u),timestamp:Date.now()};if(c.push(d),l.set(i,d),c.length>500){let e=c.splice(0,c.length-500);for(let t of e)l.delete(t.requestId)}}],[`Network.responseReceived`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId,a=n.response;if(!i||!a)return;let s=t.networkRequestIndex.get(r)?.get(i);s&&(s.status=a.status??null,s.responseHeaders=a.headers??null,s.mimeType=a.mimeType??null,s.isStatic=gT(s.mimeType,s.url))}],[`Network.loadingFinished`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId;if(!i)return;let a=t.networkRequestIndex.get(r)?.get(i);a&&!a.isStatic&&a.responseBody===null&&o.transport.send(`Network.getResponseBody`,{requestId:i},o.sessionId).then(e=>{let t=e;t&&(a.responseBody=t.body??null,a.responseBodyBase64=t.base64Encoded===!0)}).catch(()=>{})}]],enable:(e,t)=>e.send(`Network.enable`,{},t)});t.networkCleanup.set(r,()=>o.stop())}function vT(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<55296||n>57343)continue;if(n>=56320)return t;let r=e.charCodeAt(t+1);if(Number.isNaN(r)||r<56320||r>57343)return t;t++}return-1}function yT(e,t){if(t){let t;try{t=atob(e)}catch{return{error:`response body is flagged base64 but is not valid base64`}}let n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return{bytes:n}}let n=vT(e);return n>=0?{error:`response body has an unpaired surrogate at index ${n} and cannot be saved without substituting U+FFFD`}:{bytes:new TextEncoder().encode(e)}}function bT(e,t,n){let r=parseInt(n,10);return!Number.isFinite(r)||r<1?null:(e.networkRequests.get(t)??[]).find(e=>e.index===r)??null}const xT=async({browser:e,state:t,flags:n,onTab:r})=>{let i=N(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};t.networkCleanup.has(i.targetId)||await r(i.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),_T(e,t,r,i.targetId,n)});let a=n.static===`true`,o=n.filter,s=n.clear===`true`,c=t.networkRequests.get(i.targetId)??[];if(a||(c=c.filter(e=>!e.isStatic)),o){let e;try{e=new RegExp(o)}catch{return{stdout:``,stderr:`Invalid filter regex: ${o}\n`,exitCode:1}}c=c.filter(t=>e.test(t.url))}return s&&(t.networkRequests.set(i.targetId,[]),t.networkRequestIndex.set(i.targetId,/* @__PURE__ */ new Map)),c.length===0?{stdout:`No requests
1076
1057
  `,stderr:``,exitCode:0}:{stdout:c.map(e=>`${e.index} ${e.method} ${e.url} → ${e.status??`pending`}`).join(`
1077
1058
  `)+`
1078
- `,stderr:``,exitCode:0}},CT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),vT(e,t,r,o.targetId,n)});let s=n[0]??``,c=xT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};let l=[`Method: ${c.method}`,`URL: ${c.url}`,`Status: ${c.status??`pending`}`,``,`Request Headers:`,...Object.entries(c.requestHeaders).map(([e,t])=>` ${e}: ${t}`)];if(c.requestBody!==null&&l.push(``,`Request Body: ${c.requestBody}`),c.responseHeaders!==null&&(l.push(``,`Response Headers:`),l.push(...Object.entries(c.responseHeaders).map(([e,t])=>` ${e}: ${t}`))),c.responseBody!==null){let e=c.responseBody,t=e.length>4096?e.slice(0,4096)+`
1059
+ `,stderr:``,exitCode:0}},ST=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),_T(e,t,r,o.targetId,n)});let s=n[0]??``,c=bT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};let l=[`Method: ${c.method}`,`URL: ${c.url}`,`Status: ${c.status??`pending`}`,``,`Request Headers:`,...Object.entries(c.requestHeaders).map(([e,t])=>` ${e}: ${t}`)];if(c.requestBody!==null&&l.push(``,`Request Body: ${c.requestBody}`),c.responseHeaders!==null&&(l.push(``,`Response Headers:`),l.push(...Object.entries(c.responseHeaders).map(([e,t])=>` ${e}: ${t}`))),c.responseBody!==null){let e=c.responseBody,t=e.length>4096?e.slice(0,4096)+`
1079
1060
  ... (truncated)`:e,n=c.responseBodyBase64?`Response Body (base64)`:`Response Body`;l.push(``,`${n}:\n${t}`)}let u=l.join(`
1080
1061
  `)+`
1081
- `,d=r.filename;return d?(await i.writeFile(d,u),{stdout:`Saved to ${d}\n`,stderr:``,exitCode:0}):{stdout:u,stderr:``,exitCode:0}},wT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),vT(e,t,r,o.targetId,n)});let s=n[0]??``,c=xT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};let l=Object.entries(c.requestHeaders).map(([e,t])=>`${e}: ${t}`).join(`
1062
+ `,d=r.filename;return d?(await i.writeFile(d,u),{stdout:`Saved to ${d}\n`,stderr:``,exitCode:0}):{stdout:u,stderr:``,exitCode:0}},CT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),_T(e,t,r,o.targetId,n)});let s=n[0]??``,c=bT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};let l=Object.entries(c.requestHeaders).map(([e,t])=>`${e}: ${t}`).join(`
1082
1063
  `)+`
1083
- `,u=r.filename;return u?(await i.writeFile(u,l),{stdout:`Saved to ${u}\n`,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}},TT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),vT(e,t,r,o.targetId,n)});let s=n[0]??``,c=xT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.requestBody===null)return{stdout:`(no request body)
1064
+ `,u=r.filename;return u?(await i.writeFile(u,l),{stdout:`Saved to ${u}\n`,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}},wT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),_T(e,t,r,o.targetId,n)});let s=n[0]??``,c=bT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.requestBody===null)return{stdout:`(no request body)
1084
1065
  `,stderr:``,exitCode:0};let l=r.filename;return l?(await i.writeFile(l,c.requestBody),{stdout:`Saved to ${l}\n`,stderr:``,exitCode:0}):{stdout:c.requestBody+`
1085
- `,stderr:``,exitCode:0}},ET=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),vT(e,t,r,o.targetId,n)});let s=n[0]??``,c=xT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.responseHeaders===null)return{stdout:`(response not yet received)
1066
+ `,stderr:``,exitCode:0}},TT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),_T(e,t,r,o.targetId,n)});let s=n[0]??``,c=bT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.responseHeaders===null)return{stdout:`(response not yet received)
1086
1067
  `,stderr:``,exitCode:0};let l=Object.entries(c.responseHeaders).map(([e,t])=>`${e}: ${t}`).join(`
1087
1068
  `)+`
1088
- `,u=r.filename;return u?(await i.writeFile(u,l),{stdout:`Saved to ${u}\n`,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}},DT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),vT(e,t,r,o.targetId,n)});let s=n[0]??``,c=xT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.responseBody===null)return{stdout:`(response body not yet available)
1089
- `,stderr:``,exitCode:0};let l=r.filename,u=bT(c.responseBody,c.responseBodyBase64);if(`error`in u)return{stdout:``,stderr:`Request ${s}: ${u.error}\n`,exitCode:1};if(l)return await i.writeFile(l,u.bytes),{stdout:`Saved to ${l}\n`,stderr:``,exitCode:0};if(c.mimeType!==null&&!c.mimeType.startsWith(`text/`)&&!c.mimeType.includes(`json`)&&!c.mimeType.includes(`javascript`)&&!c.mimeType.includes(`xml`))return{stdout:`[binary body, ${u.bytes.length} bytes]\n`,stderr:``,exitCode:0};let d=c.responseBodyBase64?new TextDecoder().decode(u.bytes):c.responseBody;return{stdout:(d.length>4096?d.slice(0,4096)+`
1069
+ `,u=r.filename;return u?(await i.writeFile(u,l),{stdout:`Saved to ${u}\n`,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}},ET=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),_T(e,t,r,o.targetId,n)});let s=n[0]??``,c=bT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.responseBody===null)return{stdout:`(response body not yet available)
1070
+ `,stderr:``,exitCode:0};let l=r.filename,u=yT(c.responseBody,c.responseBodyBase64);if(`error`in u)return{stdout:``,stderr:`Request ${s}: ${u.error}\n`,exitCode:1};if(l)return await i.writeFile(l,u.bytes),{stdout:`Saved to ${l}\n`,stderr:``,exitCode:0};if(c.mimeType!==null&&!c.mimeType.startsWith(`text/`)&&!c.mimeType.includes(`json`)&&!c.mimeType.includes(`javascript`)&&!c.mimeType.includes(`xml`))return{stdout:`[binary body, ${u.bytes.length} bytes]\n`,stderr:``,exitCode:0};let d=c.responseBodyBase64?new TextDecoder().decode(u.bytes):c.responseBody;return{stdout:(d.length>4096?d.slice(0,4096)+`
1090
1071
  ... (truncated)`:d)+`
1091
- `,stderr:``,exitCode:0}},OT=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a,signal:o})=>{let s=r[0]||`about:blank`,c=i.filter;await ye(e,n),ir(o,`about to open the recording tab`);let l=await e.createPage(s);try{let{transport:r,sessionId:i}=await a(l,async e=>{let t=await e.transport.send(`Target.attachToTarget`,{targetId:l,flatten:!0});return{transport:e.transport,sessionId:t.sessionId}});n.harRecorder||=e.createHarRecorder(t,r);let u=await n.harRecorder.startRecording(l,i,c,o);return{stdout:`Recording started (targetId: ${l}, recordingId: ${u}) at ${s}\nHAR saved to /recordings/${u}/\n`,stderr:``,exitCode:0}}catch(t){throw await e.closePage(l).catch(()=>void 0),t}},kT=async({state:e,positional:t})=>{if(t.length===0)return{stdout:``,stderr:`stop-recording requires a recordingId
1092
- `,exitCode:1};let n=t[0];return e.harRecorder?{stdout:`Recording stopped. HAR files saved to ${await e.harRecorder.stopRecording(n)}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`Recording not found: ${n}\n`,exitCode:1}},AT=e(`playwright-route`),jT=[{urlPattern:`*`,requestStage:`Request`}];function MT(e){let t=e.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(/\*\*/g,`@@`).replace(/\*/g,`[^/]*`).replace(/@@/g,`.*`);return RegExp(`^${t}$`)}async function NT(e,n,r,i,a){if(a.sessionId!==n)return;let{requestId:o,request:s}=a,c=(r.routes.get(i)??[]).find(e=>e.regex.test(s.url));if(!c){await e.send(`Fetch.continueRequest`,{requestId:o},n).catch(e=>{AT.warn(`Fetch.continueRequest failed — intercepted request may hang`,{requestId:o,err:e})});return}let l=[{name:`Content-Type`,value:c.contentType},...Object.entries(c.headers).map(([e,t])=>({name:e,value:t}))];await e.send(`Fetch.fulfillRequest`,{requestId:o,responseCode:c.status,responseHeaders:l,body:c.body?t(new TextEncoder().encode(c.body)):void 0},n).catch(e=>{AT.warn(`Fetch.fulfillRequest failed`,{requestId:o,url:s.url,err:e})})}async function PT(e,t,n,r){await t(r,async({sessionId:t,transport:i})=>{await i.send(`Fetch.enable`,{patterns:jT},t);let a,o=e=>{a&&NT(a.transport,a.sessionId,n,r,e)};try{a=DC({browser:e,targetId:r,transport:i,sessionId:t,listeners:[[`Fetch.requestPaused`,o]],enable:(e,t)=>e.send(`Fetch.enable`,{patterns:jT},t)})}catch(e){throw await i.send(`Fetch.disable`,{},t).catch(()=>void 0),e}let s=a;n.routeCleanup.set(r,()=>{s.stop(),s.transport.send(`Fetch.disable`,{},s.sessionId).catch(()=>void 0)})})}const FT=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`route requires a URL pattern
1093
- `,exitCode:1};let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s={pattern:o,regex:MT(o),status:r.status?parseInt(r.status,10):200,body:r.body??``,contentType:r[`content-type`]??`text/plain`,headers:{}};if(r.header){r.header.includes(`,`)&&AT.warn(`--header value contains comma — only last segment used. Use separate route calls for multiple headers.`);for(let e of r.header.split(`,`)){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();s.headers[n]=r}}}t.routeCleanup.has(a.targetId)||(t.routes.has(a.targetId)||t.routes.set(a.targetId,[]),await PT(e,i,t,a.targetId));let c=t.routes.get(a.targetId)??[];return c.unshift(s),t.routes.set(a.targetId,c),{stdout:`Route added: ${o}\n`,stderr:``,exitCode:0}},IT=async({state:e,flags:t})=>{let n=N(t);if(`error`in n)return{stdout:``,stderr:n.error,exitCode:1};let r=e.routes.get(n.targetId)??[];return r.length===0?{stdout:`No active routes
1072
+ `,stderr:``,exitCode:0}},DT=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a,signal:o})=>{let s=r[0]||`about:blank`,c=i.filter;await ye(e,n),ir(o,`about to open the recording tab`);let l=await e.createPage(s);try{let{transport:r,sessionId:i}=await a(l,async e=>{let t=await e.transport.send(`Target.attachToTarget`,{targetId:l,flatten:!0});return{transport:e.transport,sessionId:t.sessionId}});n.harRecorder||=e.createHarRecorder(t,r);let u=await n.harRecorder.startRecording(l,i,c,o);return{stdout:`Recording started (targetId: ${l}, recordingId: ${u}) at ${s}\nHAR saved to /recordings/${u}/\n`,stderr:``,exitCode:0}}catch(t){throw await e.closePage(l).catch(()=>void 0),t}},OT=async({state:e,positional:t})=>{if(t.length===0)return{stdout:``,stderr:`stop-recording requires a recordingId
1073
+ `,exitCode:1};let n=t[0];return e.harRecorder?{stdout:`Recording stopped. HAR files saved to ${await e.harRecorder.stopRecording(n)}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`Recording not found: ${n}\n`,exitCode:1}},kT=e(`playwright-route`),AT=[{urlPattern:`*`,requestStage:`Request`}];function jT(e){let t=e.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(/\*\*/g,`@@`).replace(/\*/g,`[^/]*`).replace(/@@/g,`.*`);return RegExp(`^${t}$`)}async function MT(e,n,r,i,a){if(a.sessionId!==n)return;let{requestId:o,request:s}=a,c=(r.routes.get(i)??[]).find(e=>e.regex.test(s.url));if(!c){await e.send(`Fetch.continueRequest`,{requestId:o},n).catch(e=>{kT.warn(`Fetch.continueRequest failed — intercepted request may hang`,{requestId:o,err:e})});return}let l=[{name:`Content-Type`,value:c.contentType},...Object.entries(c.headers).map(([e,t])=>({name:e,value:t}))];await e.send(`Fetch.fulfillRequest`,{requestId:o,responseCode:c.status,responseHeaders:l,body:c.body?t(new TextEncoder().encode(c.body)):void 0},n).catch(e=>{kT.warn(`Fetch.fulfillRequest failed`,{requestId:o,url:s.url,err:e})})}async function NT(e,t,n,r){await t(r,async({sessionId:t,transport:i})=>{await i.send(`Fetch.enable`,{patterns:AT},t);let a,o=e=>{a&&MT(a.transport,a.sessionId,n,r,e)};try{a=DC({browser:e,targetId:r,transport:i,sessionId:t,listeners:[[`Fetch.requestPaused`,o]],enable:(e,t)=>e.send(`Fetch.enable`,{patterns:AT},t)})}catch(e){throw await i.send(`Fetch.disable`,{},t).catch(()=>void 0),e}let s=a;n.routeCleanup.set(r,()=>{s.stop(),s.transport.send(`Fetch.disable`,{},s.sessionId).catch(()=>void 0)})})}const PT=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`route requires a URL pattern
1074
+ `,exitCode:1};let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s={pattern:o,regex:jT(o),status:r.status?parseInt(r.status,10):200,body:r.body??``,contentType:r[`content-type`]??`text/plain`,headers:{}};if(r.header){r.header.includes(`,`)&&kT.warn(`--header value contains comma — only last segment used. Use separate route calls for multiple headers.`);for(let e of r.header.split(`,`)){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();s.headers[n]=r}}}t.routeCleanup.has(a.targetId)||(t.routes.has(a.targetId)||t.routes.set(a.targetId,[]),await NT(e,i,t,a.targetId));let c=t.routes.get(a.targetId)??[];return c.unshift(s),t.routes.set(a.targetId,c),{stdout:`Route added: ${o}\n`,stderr:``,exitCode:0}},FT=async({state:e,flags:t})=>{let n=N(t);if(`error`in n)return{stdout:``,stderr:n.error,exitCode:1};let r=e.routes.get(n.targetId)??[];return r.length===0?{stdout:`No active routes
1094
1075
  `,stderr:``,exitCode:0}:{stdout:r.map((e,t)=>`${t+1}. ${e.pattern} → ${e.status} ${e.contentType}`).join(`
1095
1076
  `)+`
1096
- `,stderr:``,exitCode:0}},LT=async({state:e,positional:t,flags:n})=>{let r=N(n);if(`error`in r)return{stdout:``,stderr:r.error,exitCode:1};let i=t[0];if(!i){e.routes.set(r.targetId,[]);let t=e.routeCleanup.get(r.targetId);return t&&(t(),e.routeCleanup.delete(r.targetId)),{stdout:`All routes removed
1097
- `,stderr:``,exitCode:0}}let a=e.routes.get(r.targetId)??[],o=a.length,s=a.filter(e=>e.pattern!==i);if(e.routes.set(r.targetId,s),s.length===0){let t=e.routeCleanup.get(r.targetId);t&&(t(),e.routeCleanup.delete(r.targetId))}return{stdout:`Removed ${o-s.length} route(s) matching "${i}"\n`,stderr:``,exitCode:0}},RT=`/.playwright`;function zT(e,t){return e?`${t.replace(/\/+$/,``)}${RT}`:RT}async function BT(e,t,n){if(!t.sessionDirsCreated.has(n)){for(let t of[n,`${n}/snapshots`,`${n}/screenshots`])try{await e.mkdir(t,{recursive:!0})}catch(e){if(!$n(e))throw e}t.sessionDirsCreated.add(n)}}async function VT(e,t,n,r,i){try{return await e.withTab(n,async e=>{let{url:a,title:o,text:s,refs:c}=await ve(e,he(r,n)),l={url:a,title:o,refs:c,content:s,timestamp:Date.now()};r.snapshots.set(n,l);let u=[`Page URL: ${a}`,`Page Title: ${o}`,``,s].join(`
1098
- `),d=`${i}/snapshots/page-${Yn(/* @__PURE__ */ new Date)}.yml`;return await t.writeFile(d,u),d})}catch{return null}}async function HT(e,t,n,r){await BT(e,t,n);let i=(/* @__PURE__ */ new Date()).toISOString(),a=`playwright-cli ${r.command}${r.args.length?` `+r.args.join(` `):``}`,o=r.result.exitCode===0?r.result.stdout.trim()||`OK`:`Error: ${r.result.stderr.trim()}`,s=[`### ${a}`,`- **Time**: ${i}`];if(r.tabUrl||r.targetId){let e=r.tabUrl?`${r.tabUrl}${r.targetId?` (targetId: ${r.targetId})`:``}`:`targetId: ${r.targetId}`;s.push(`- **Tab**: ${e}`)}s.push(`- **Result**: ${o}`),r.snapshotPath&&s.push(``,`[Snapshot](${r.snapshotPath})`),s.push(`---`,``);let c=s.join(`
1077
+ `,stderr:``,exitCode:0}},IT=async({state:e,positional:t,flags:n})=>{let r=N(n);if(`error`in r)return{stdout:``,stderr:r.error,exitCode:1};let i=t[0];if(!i){e.routes.set(r.targetId,[]);let t=e.routeCleanup.get(r.targetId);return t&&(t(),e.routeCleanup.delete(r.targetId)),{stdout:`All routes removed
1078
+ `,stderr:``,exitCode:0}}let a=e.routes.get(r.targetId)??[],o=a.length,s=a.filter(e=>e.pattern!==i);if(e.routes.set(r.targetId,s),s.length===0){let t=e.routeCleanup.get(r.targetId);t&&(t(),e.routeCleanup.delete(r.targetId))}return{stdout:`Removed ${o-s.length} route(s) matching "${i}"\n`,stderr:``,exitCode:0}},LT=`/.playwright`;function RT(e,t){return e?`${t.replace(/\/+$/,``)}${LT}`:LT}async function zT(e,t,n){if(!t.sessionDirsCreated.has(n)){for(let t of[n,`${n}/snapshots`,`${n}/screenshots`])try{await e.mkdir(t,{recursive:!0})}catch(e){if(!$n(e))throw e}t.sessionDirsCreated.add(n)}}async function BT(e,t,n,r,i){try{return await e.withTab(n,async e=>{let{url:a,title:o,text:s,refs:c}=await ve(e,he(r,n)),l={url:a,title:o,refs:c,content:s,timestamp:Date.now()};r.snapshots.set(n,l);let u=[`Page URL: ${a}`,`Page Title: ${o}`,``,s].join(`
1079
+ `),d=`${i}/snapshots/page-${Yn(/* @__PURE__ */ new Date)}.yml`;return await t.writeFile(d,u),d})}catch{return null}}async function VT(e,t,n,r){await zT(e,t,n);let i=(/* @__PURE__ */ new Date()).toISOString(),a=`playwright-cli ${r.command}${r.args.length?` `+r.args.join(` `):``}`,o=r.result.exitCode===0?r.result.stdout.trim()||`OK`:`Error: ${r.result.stderr.trim()}`,s=[`### ${a}`,`- **Time**: ${i}`];if(r.tabUrl||r.targetId){let e=r.tabUrl?`${r.tabUrl}${r.targetId?` (targetId: ${r.targetId})`:``}`:`targetId: ${r.targetId}`;s.push(`- **Tab**: ${e}`)}s.push(`- **Result**: ${o}`),r.snapshotPath&&s.push(``,`[Snapshot](${r.snapshotPath})`),s.push(`---`,``);let c=s.join(`
1099
1080
  `)+`
1100
- `,l=`${n}/session.md`,u=``;try{let t=await e.readFile(l);u=typeof t==`string`?t:new TextDecoder().decode(t)}catch{}await e.writeFile(l,u+c)}function UT(){return import(`./snapshot-features-CTAD_mNg.js`)}async function WT(e,t,n,r){let i=he(t,n),a=await e.getAccessibilityTreeForFrame(r.frameId,{refFloor:i.floor});se(i,a);let o=/* @__PURE__ */ new Map,s=me(a,o,``,ge(i,r.frameId),r.frameId).join(`
1101
- `);return t.snapshots.set(n,{url:r.url,title:r.name,refs:o,content:s,timestamp:Date.now()}),s}async function GT(e,t,n){let{objectId:r,entry:i}=await y(e,t,n);return de(i,n,`screenshot`),await pe(e,r,`function() {
1081
+ `,l=`${n}/session.md`,u=``;try{let t=await e.readFile(l);u=typeof t==`string`?t:new TextDecoder().decode(t)}catch{}await e.writeFile(l,u+c)}function HT(){return import(`./snapshot-features-CTAD_mNg.js`)}async function UT(e,t,n,r){let i=he(t,n),a=await e.getAccessibilityTreeForFrame(r.frameId,{refFloor:i.floor});se(i,a);let o=/* @__PURE__ */ new Map,s=me(a,o,``,ge(i,r.frameId),r.frameId).join(`
1082
+ `);return t.snapshots.set(n,{url:r.url,title:r.name,refs:o,content:s,timestamp:Date.now()}),s}async function WT(e,t,n){let{objectId:r,entry:i}=await y(e,t,n);return de(i,n,`screenshot`),await pe(e,r,`function() {
1102
1083
  this.scrollIntoView({ block: 'center' });
1103
1084
  const r = this.getBoundingClientRect();
1104
1085
  return { x: r.x + window.scrollX, y: r.y + window.scrollY, width: r.width, height: r.height };
1105
- }`)}const KT=async({browser:e,fs:t,state:n,flags:r,onTab:i})=>{let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=r[`no-iframes`]===`true`,s=r.depth;if(s!==void 0&&!/^[1-9][0-9]*$/.test(s))return{stdout:``,stderr:`snapshot: --depth must be a positive integer, got "${s}"\n`,exitCode:1};let c=s===void 0?void 0:parseInt(s,10),l=r.boxes===`true`;if(l&&r.frame)return{stdout:``,stderr:`snapshot: --boxes is not supported with --frame (child-frame rects live in another coordinate space)
1106
- `,exitCode:1};let u=await i(a.targetId,async e=>{let t=await Un(e,r);if(t)return WT(e,n,a.targetId,t);let{snapshot:i,output:s}=await fe(e,n,a.targetId,{noIframes:o});if(!l)return s;let{annotateBoxes:c}=await UT();return c(e,i,s)});if(c!==void 0){let{limitSnapshotDepth:e}=await UT();u=e(u,c)}return r.filename?(await t.writeFile(r.filename,u),{stdout:`Snapshot saved to ${r.filename}\n`,stderr:``,exitCode:0}):{stdout:u+`
1107
- `,stderr:``,exitCode:0}},qT=async e=>{let{findHandlerImpl:t}=await UT();return t(e)},JT=async({browser:e,flags:t,onTab:n})=>{let r=N(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:{stdout:await n(r.targetId,async e=>`Frame IDs (use with --frame, never --tab):\n${(await e.getFrameTree()).map(e=>{let t=e.parentFrameId?`child`:`main`,n=e.parentFrameId?` parentFrameId=${e.parentFrameId}`:``;return` [${t}] frameId=${e.frameId}${n} - ${e.url}`}).join(`
1086
+ }`)}const GT=async({browser:e,fs:t,state:n,flags:r,onTab:i})=>{let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=r[`no-iframes`]===`true`,s=r.depth;if(s!==void 0&&!/^[1-9][0-9]*$/.test(s))return{stdout:``,stderr:`snapshot: --depth must be a positive integer, got "${s}"\n`,exitCode:1};let c=s===void 0?void 0:parseInt(s,10),l=r.boxes===`true`;if(l&&r.frame)return{stdout:``,stderr:`snapshot: --boxes is not supported with --frame (child-frame rects live in another coordinate space)
1087
+ `,exitCode:1};let u=await i(a.targetId,async e=>{let t=await Un(e,r);if(t)return UT(e,n,a.targetId,t);let{snapshot:i,output:s}=await fe(e,n,a.targetId,{noIframes:o});if(!l)return s;let{annotateBoxes:c}=await HT();return c(e,i,s)});if(c!==void 0){let{limitSnapshotDepth:e}=await HT();u=e(u,c)}return r.filename?(await t.writeFile(r.filename,u),{stdout:`Snapshot saved to ${r.filename}\n`,stderr:``,exitCode:0}):{stdout:u+`
1088
+ `,stderr:``,exitCode:0}},KT=async e=>{let{findHandlerImpl:t}=await HT();return t(e)},qT=async({browser:e,flags:t,onTab:n})=>{let r=N(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:{stdout:await n(r.targetId,async e=>`Frame IDs (use with --frame, never --tab):\n${(await e.getFrameTree()).map(e=>{let t=e.parentFrameId?`child`:`main`,n=e.parentFrameId?` parentFrameId=${e.parentFrameId}`:``;return` [${t}] frameId=${e.frameId}${n} - ${e.url}`}).join(`
1108
1089
  `)}`)+`
1109
- `,stderr:``,exitCode:0}},YT=async({browser:e,fs:t,flags:n,scratchDir:r,onTab:i})=>{let a=N(n);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n.filename||`${r}/page-${Yn(/* @__PURE__ */ new Date)}.pdf`;try{await i(a.targetId,async({sessionId:e,transport:n})=>{let r=(await n.send(`Page.printToPDF`,{},e)).data,i=Wn(r);await t.writeFile(o,i)})}catch(e){let t=e instanceof Error?e.message:String(e);return te()?{stdout:``,stderr:`pdf: not available in extension mode — use screenshot --full-page
1110
- `,exitCode:1}:{stdout:``,stderr:`pdf: ${t}\n`,exitCode:1}}return{stdout:`Saved PDF to ${o}\n`,stderr:``,exitCode:0}};async function XT(e,t,n,r){let i=t.snapshots.get(n);if(!i)throw Error(`No snapshot available. Run "snapshot" first.`);let a;try{a=await GT(e,i,r)}catch(e){return{error:e instanceof Error?e.message:String(e)}}return!a||a.width<=0||a.height<=0?{error:`could not resolve element ${r} to a visible box — the snapshot is likely stale (navigation, reload, or layout change). Re-run "snapshot" and retry with a fresh ref, or omit the ref to capture the viewport deliberately.`}:{clip:a}}const ZT=/* @__PURE__ */ new Set([`png`,`jpeg`,`webp`]);function QT(e){let t=e.type;if(t&&ZT.has(t))return t;let n=e.filename??``;return/\.jpe?g$/i.test(n)?`jpeg`:/\.webp$/i.test(n)?`webp`:`png`}const $T=async({browser:e,fs:t,state:n,positional:r,flags:i,scratchDir:a,sessionRoot:o,onTab:s})=>{let c=N(i);if(`error`in c)return{stdout:``,stderr:c.error,exitCode:1};if(i.type&&!ZT.has(i.type))return{stdout:``,stderr:`screenshot: --type must be png, jpeg, or webp, got "${i.type}"\n`,exitCode:1};if(i[`max-width`]&&QT(i)!==`png`)return{stdout:``,stderr:`screenshot: --max-width requires png output (the downscale pass measures PNG headers); drop --type/--filename extension or --max-width
1111
- `,exitCode:1};let l=await s(c.targetId,async e=>{let s;if(r[0]?.startsWith(`e`)){let t=await XT(e,n,c.targetId,r[0]);if(`error`in t)return t;s=t.clip}let l=i.fullPage===`true`||i[`full-page`]===`true`;if(i.hires===`true`){let{hiresClip:t}=await UT();s=await t(e,s,l)}let u=i[`max-width`]?parseInt(i[`max-width`],10):void 0,d=QT(i),f=await e.screenshot({format:d,fullPage:l,...s?{clip:s}:{},...u?{maxWidth:u}:{}}),p=d===`jpeg`?`jpg`:d,m=i.filename||`${a}/screenshot-${Date.now()}.${p}`,h=Wn(f);await t.writeFile(m,h);try{await BT(t,n,o);let e=`${o}/screenshots/screenshot-${Yn(/* @__PURE__ */ new Date)}.${p}`;await t.writeFile(e,h)}catch{}return{message:`Screenshot saved to ${m} (${Math.round(h.length/1024)} KB)`}});return`error`in l?{stdout:``,stderr:`screenshot: ${l.error}\n`,exitCode:1}:{stdout:l.message+`
1112
- `,stderr:``,exitCode:0}},eE=async({browser:e,fs:t,positional:n,flags:r,sessionRoot:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};let s=r.filename??n[0]??`${i}/storage-state.json`,c=[],l=[],u=``;await a(o.targetId,async e=>{c=(await e.send(`Network.getCookies`)).cookies??[];let{sessionId:t,transport:n}=e;u=(await n.send(`Runtime.evaluate`,{expression:`location.origin`,returnByValue:!0},t)).result.value??``;let r=(await n.send(`Runtime.evaluate`,{expression:`JSON.stringify(Object.entries(localStorage).map(([name,value])=>({name,value})))`,returnByValue:!0},t)).result.value??`[]`;l=JSON.parse(r)});let d=JSON.stringify({cookies:c,origins:u?[{origin:u,localStorage:l}]:[]},null,2);return await t.writeFile(s,d),{stdout:`Saved storage state to ${s}\n`,stderr:``,exitCode:0}},tE=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`state-load requires a filename
1090
+ `,stderr:``,exitCode:0}},JT=async({browser:e,fs:t,flags:n,scratchDir:r,onTab:i})=>{let a=N(n);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n.filename||`${r}/page-${Yn(/* @__PURE__ */ new Date)}.pdf`;try{await i(a.targetId,async({sessionId:e,transport:n})=>{let r=(await n.send(`Page.printToPDF`,{},e)).data,i=Wn(r);await t.writeFile(o,i)})}catch(e){let t=e instanceof Error?e.message:String(e);return te()?{stdout:``,stderr:`pdf: not available in extension mode — use screenshot --full-page
1091
+ `,exitCode:1}:{stdout:``,stderr:`pdf: ${t}\n`,exitCode:1}}return{stdout:`Saved PDF to ${o}\n`,stderr:``,exitCode:0}};async function YT(e,t,n,r){let i=t.snapshots.get(n);if(!i)throw Error(`No snapshot available. Run "snapshot" first.`);let a;try{a=await WT(e,i,r)}catch(e){return{error:e instanceof Error?e.message:String(e)}}return!a||a.width<=0||a.height<=0?{error:`could not resolve element ${r} to a visible box — the snapshot is likely stale (navigation, reload, or layout change). Re-run "snapshot" and retry with a fresh ref, or omit the ref to capture the viewport deliberately.`}:{clip:a}}const XT=/* @__PURE__ */ new Set([`png`,`jpeg`,`webp`]);function ZT(e){let t=e.type;if(t&&XT.has(t))return t;let n=e.filename??``;return/\.jpe?g$/i.test(n)?`jpeg`:/\.webp$/i.test(n)?`webp`:`png`}const QT=async({browser:e,fs:t,state:n,positional:r,flags:i,scratchDir:a,sessionRoot:o,onTab:s})=>{let c=N(i);if(`error`in c)return{stdout:``,stderr:c.error,exitCode:1};if(i.type&&!XT.has(i.type))return{stdout:``,stderr:`screenshot: --type must be png, jpeg, or webp, got "${i.type}"\n`,exitCode:1};if(i[`max-width`]&&ZT(i)!==`png`)return{stdout:``,stderr:`screenshot: --max-width requires png output (the downscale pass measures PNG headers); drop --type/--filename extension or --max-width
1092
+ `,exitCode:1};let l=await s(c.targetId,async e=>{let s;if(r[0]?.startsWith(`e`)){let t=await YT(e,n,c.targetId,r[0]);if(`error`in t)return t;s=t.clip}let l=i.fullPage===`true`||i[`full-page`]===`true`;if(i.hires===`true`){let{hiresClip:t}=await HT();s=await t(e,s,l)}let u=i[`max-width`]?parseInt(i[`max-width`],10):void 0,d=ZT(i),f=await e.screenshot({format:d,fullPage:l,...s?{clip:s}:{},...u?{maxWidth:u}:{}}),p=d===`jpeg`?`jpg`:d,m=i.filename||`${a}/screenshot-${Date.now()}.${p}`,h=Wn(f);await t.writeFile(m,h);try{await zT(t,n,o);let e=`${o}/screenshots/screenshot-${Yn(/* @__PURE__ */ new Date)}.${p}`;await t.writeFile(e,h)}catch{}return{message:`Screenshot saved to ${m} (${Math.round(h.length/1024)} KB)`}});return`error`in l?{stdout:``,stderr:`screenshot: ${l.error}\n`,exitCode:1}:{stdout:l.message+`
1093
+ `,stderr:``,exitCode:0}},$T=async({browser:e,fs:t,positional:n,flags:r,sessionRoot:i,onTab:a})=>{let o=N(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};let s=r.filename??n[0]??`${i}/storage-state.json`,c=[],l=[],u=``;await a(o.targetId,async e=>{c=(await e.send(`Network.getCookies`)).cookies??[];let{sessionId:t,transport:n}=e;u=(await n.send(`Runtime.evaluate`,{expression:`location.origin`,returnByValue:!0},t)).result.value??``;let r=(await n.send(`Runtime.evaluate`,{expression:`JSON.stringify(Object.entries(localStorage).map(([name,value])=>({name,value})))`,returnByValue:!0},t)).result.value??`[]`;l=JSON.parse(r)});let d=JSON.stringify({cookies:c,origins:u?[{origin:u,localStorage:l}]:[]},null,2);return await t.writeFile(s,d),{stdout:`Saved storage state to ${s}\n`,stderr:``,exitCode:0}},eE=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`state-load requires a filename
1113
1094
  `,exitCode:1};let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s;try{let e=await t.readTextFile(o);s=JSON.parse(e)}catch{return{stdout:``,stderr:`Failed to read storage state from ${o}\n`,exitCode:1}}let c=[];(s.cookies?.length||s.origins?.length)&&await i(a.targetId,async e=>{if(s.cookies?.length&&await e.send(`Network.setCookies`,{cookies:s.cookies}),!s.origins?.length)return;let{sessionId:t,transport:n}=e,r=(await n.send(`Runtime.evaluate`,{expression:`location.origin`,returnByValue:!0},t)).result.value??``,i=s.origins.filter(e=>e.origin===r);c=s.origins.filter(e=>e.origin!==r);for(let{localStorage:e}of i){let r=`(function() {
1114
1095
  var items = ${JSON.stringify(e)};
1115
1096
  for (var i = 0; i < items.length; i++) {
1116
1097
  localStorage.setItem(items[i].name, items[i].value);
1117
1098
  }
1118
- })()`;await n.send(`Runtime.evaluate`,{expression:r,returnByValue:!0},t)}});let l=``;return c.length>0&&(l=`Skipped localStorage for non-matching origins: ${c.map(e=>e.origin).join(`, `)}\n`),{stdout:`Loaded storage state from ${o}\n`,stderr:l,exitCode:0}};function nE(e,t){return{list:async({browser:e,flags:n,onTab:r})=>{let i=N(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:{stdout:await r(i.targetId,async e=>{let n=await e.evaluate(`JSON.stringify(Object.entries(${t}))`),r=JSON.parse(n);return r.length===0?`No ${t} entries`:r.map(([e,t])=>`${e}=${t}`).join(`
1099
+ })()`;await n.send(`Runtime.evaluate`,{expression:r,returnByValue:!0},t)}});let l=``;return c.length>0&&(l=`Skipped localStorage for non-matching origins: ${c.map(e=>e.origin).join(`, `)}\n`),{stdout:`Loaded storage state from ${o}\n`,stderr:l,exitCode:0}};function tE(e,t){return{list:async({browser:e,flags:n,onTab:r})=>{let i=N(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:{stdout:await r(i.targetId,async e=>{let n=await e.evaluate(`JSON.stringify(Object.entries(${t}))`),r=JSON.parse(n);return r.length===0?`No ${t} entries`:r.map(([e,t])=>`${e}=${t}`).join(`
1119
1100
  `)})+`
1120
1101
  `,stderr:``,exitCode:0}},get:async({browser:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`${e}-get requires a key\n`,exitCode:1};let o=N(i);return`error`in o?{stdout:``,stderr:o.error,exitCode:1}:{stdout:await a(o.targetId,async e=>{let n=await e.evaluate(`${t}.getItem(${JSON.stringify(r[0])})`);if(n===null)throw Error(`Key "${r[0]}" not found in ${t}`);return n})+`
1121
- `,stderr:``,exitCode:0}},set:async({browser:n,positional:r,flags:i,onTab:a})=>{if(r.length<2)return{stdout:``,stderr:`${e}-set requires <key> <value>\n`,exitCode:1};let o=N(i);return`error`in o?{stdout:``,stderr:o.error,exitCode:1}:(await a(o.targetId,async e=>{await e.evaluate(`${t}.setItem(${JSON.stringify(r[0])}, ${JSON.stringify(r.slice(1).join(` `))})`)}),{stdout:`${t} "${r[0]}" set\n`,stderr:``,exitCode:0})},del:async({browser:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`${e}-delete requires a key\n`,exitCode:1};let o=N(i);return`error`in o?{stdout:``,stderr:o.error,exitCode:1}:(await a(o.targetId,async e=>{await e.evaluate(`${t}.removeItem(${JSON.stringify(r[0])})`)}),{stdout:`${t} "${r[0]}" deleted\n`,stderr:``,exitCode:0})},clear:async({browser:e,flags:n,onTab:r})=>{let i=N(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`${t}.clear()`)}),{stdout:`${t} cleared\n`,stderr:``,exitCode:0})}}}const rE=nE(`localstorage`,`localStorage`),iE=nE(`sessionstorage`,`sessionStorage`),aE=e(`playwright`),oE={width:412,height:915,deviceScaleFactor:2.625};function sE(e,t,n,r,i){let a=n[`teleport-start`],o=n[`teleport-return`];if(!a||!o)return null;aE.info(`Arming teleport via open/tab-new flags`),aE.debug(`Arming teleport via open/tab-new flags details`,{targetId:i,startPattern:a,returnPattern:o});let s,c;try{s=new RegExp(a)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-start: ${a}\n`,exitCode:1}}try{c=new RegExp(o)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-return: ${o}\n`,exitCode:1}}let l=n.timeout?parseInt(n.timeout,10):300,u=t.teleportWatchers.get(i);return u&&(tT(u),t.teleportWatchers.delete(i)),nT(e,t,s,c,l*1e3,n[`teleport-runtime`],r,i),null}const cE=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a})=>{let o=r[0]||`about:blank`,s=i.runtime,c=i.mobile===`true`;await ye(e,n);let l=c?`about:blank`:o,u;if(u=s?await e.createRemotePage(s,l):await e.createPage(l),le(n,u),c&&await a(u,async e=>{await e.setViewportOverride(oE.width,oE.height,{deviceScaleFactor:oE.deviceScaleFactor,mobile:!0,userAgent:`Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36`}),o!==`about:blank`&&await e.navigate(o)}),i.foreground===`true`||i.fg===`true`)try{await a(u,e=>e.bringToFront())}catch(e){aE.debug(`open/tab-new --foreground bringToFront failed`,{targetId:u,error:e instanceof Error?e.message:String(e)})}let d=sE(e,n,i,o,u);if(d)return d;if(i.discover===`true`){let{browseShWarning:e,...n}=await nw(o,{discover:!0,fs:t}),r={action:`open`,targetId:u,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(r,null,2)+`
1122
- `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Opened ${o} in new tab [targetId: ${u}]\n`,stderr:``,exitCode:0}},lE=async({browser:e,state:t})=>{let n=await ue(e,t);return n.length===0?{stdout:`No tabs open
1102
+ `,stderr:``,exitCode:0}},set:async({browser:n,positional:r,flags:i,onTab:a})=>{if(r.length<2)return{stdout:``,stderr:`${e}-set requires <key> <value>\n`,exitCode:1};let o=N(i);return`error`in o?{stdout:``,stderr:o.error,exitCode:1}:(await a(o.targetId,async e=>{await e.evaluate(`${t}.setItem(${JSON.stringify(r[0])}, ${JSON.stringify(r.slice(1).join(` `))})`)}),{stdout:`${t} "${r[0]}" set\n`,stderr:``,exitCode:0})},del:async({browser:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`${e}-delete requires a key\n`,exitCode:1};let o=N(i);return`error`in o?{stdout:``,stderr:o.error,exitCode:1}:(await a(o.targetId,async e=>{await e.evaluate(`${t}.removeItem(${JSON.stringify(r[0])})`)}),{stdout:`${t} "${r[0]}" deleted\n`,stderr:``,exitCode:0})},clear:async({browser:e,flags:n,onTab:r})=>{let i=N(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`${t}.clear()`)}),{stdout:`${t} cleared\n`,stderr:``,exitCode:0})}}}const nE=tE(`localstorage`,`localStorage`),rE=tE(`sessionstorage`,`sessionStorage`),iE=e(`playwright`),aE={width:412,height:915,deviceScaleFactor:2.625};function oE(e,t,n,r,i){let a=n[`teleport-start`],o=n[`teleport-return`];if(!a||!o)return null;iE.info(`Arming teleport via open/tab-new flags`),iE.debug(`Arming teleport via open/tab-new flags details`,{targetId:i,startPattern:a,returnPattern:o});let s,c;try{s=new RegExp(a)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-start: ${a}\n`,exitCode:1}}try{c=new RegExp(o)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-return: ${o}\n`,exitCode:1}}let l=n.timeout?parseInt(n.timeout,10):300,u=t.teleportWatchers.get(i);return u&&(eT(u),t.teleportWatchers.delete(i)),tT(e,t,s,c,l*1e3,n[`teleport-runtime`],r,i),null}const sE=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a})=>{let o=r[0]||`about:blank`,s=i.runtime,c=i.mobile===`true`;await ye(e,n);let l=c?`about:blank`:o,u;if(u=s?await e.createRemotePage(s,l):await e.createPage(l),le(n,u),c&&await a(u,async e=>{await e.setViewportOverride(aE.width,aE.height,{deviceScaleFactor:aE.deviceScaleFactor,mobile:!0,userAgent:`Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36`}),o!==`about:blank`&&await e.navigate(o)}),i.foreground===`true`||i.fg===`true`)try{await a(u,e=>e.bringToFront())}catch(e){iE.debug(`open/tab-new --foreground bringToFront failed`,{targetId:u,error:e instanceof Error?e.message:String(e)})}let d=oE(e,n,i,o,u);if(d)return d;if(i.discover===`true`){let{browseShWarning:e,...n}=await nw(o,{discover:!0,fs:t}),r={action:`open`,targetId:u,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(r,null,2)+`
1103
+ `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Opened ${o} in new tab [targetId: ${u}]\n`,stderr:``,exitCode:0}},cE=async({browser:e,state:t})=>{let n=await ue(e,t);return n.length===0?{stdout:`No tabs open
1123
1104
  `,stderr:``,exitCode:0}:{stdout:n.map(e=>{let t=!!e.active,n=e.targetId.includes(`:`),r=t?` (active)`:``,i=n?` [remote:${e.targetId.substring(0,e.targetId.indexOf(`:`))}]`:``;return`[${e.targetId}] ${e.url} "${e.title}" (tab ${e.number})${r}${i}`}).join(`
1124
1105
  `)+`
1125
- `,stderr:``,exitCode:0}},uE=async({browser:e,state:t,flags:n})=>{let r=N(n);if(`error`in r)return{stdout:``,stderr:r.error,exitCode:1};await e.closePage(r.targetId),t.snapshots.delete(r.targetId),t.teleportWatchers.delete(r.targetId),t.consoleMessages.delete(r.targetId);let i=t.consoleCleanup.get(r.targetId);i&&(i(),t.consoleCleanup.delete(r.targetId)),t.networkRequests.delete(r.targetId);let a=t.networkCleanup.get(r.targetId);a&&(a(),t.networkCleanup.delete(r.targetId));let o=t.routeCleanup.get(r.targetId);return o&&(o(),t.routeCleanup.delete(r.targetId)),t.routes.delete(r.targetId),t.lastMousePosition.delete(r.targetId),t.tabRefs.delete(r.targetId),t.tabNumbers.delete(r.targetId),{stdout:`Closed tab ${r.targetId}\n`,stderr:``,exitCode:0}},dE=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=r.tab,o=n[0];if(a&&o)return{stdout:``,stderr:`tab-select takes a tab number or --tab=<targetId>, not both
1106
+ `,stderr:``,exitCode:0}},lE=async({browser:e,state:t,flags:n})=>{let r=N(n);if(`error`in r)return{stdout:``,stderr:r.error,exitCode:1};await e.closePage(r.targetId),t.snapshots.delete(r.targetId),t.teleportWatchers.delete(r.targetId),t.consoleMessages.delete(r.targetId);let i=t.consoleCleanup.get(r.targetId);i&&(i(),t.consoleCleanup.delete(r.targetId)),t.networkRequests.delete(r.targetId);let a=t.networkCleanup.get(r.targetId);a&&(a(),t.networkCleanup.delete(r.targetId));let o=t.routeCleanup.get(r.targetId);return o&&(o(),t.routeCleanup.delete(r.targetId)),t.routes.delete(r.targetId),t.lastMousePosition.delete(r.targetId),t.tabRefs.delete(r.targetId),t.tabNumbers.delete(r.targetId),{stdout:`Closed tab ${r.targetId}\n`,stderr:``,exitCode:0}},uE=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=r.tab,o=n[0];if(a&&o)return{stdout:``,stderr:`tab-select takes a tab number or --tab=<targetId>, not both
1126
1107
  `,exitCode:1};if(!a&&!o)return{stdout:``,stderr:`tab-select requires a tab number from tab-list or --tab=<targetId>
1127
1108
  `,exitCode:1};if(o&&!/^[1-9][0-9]*$/.test(o))return{stdout:``,stderr:`tab-select tab number must be a positive integer
1128
- `,exitCode:1};let s=await ue(e,t),c;if(a)c=a;else{let e=parseInt(o,10),t=s.find(t=>t.number===e);if(!t)return{stdout:``,stderr:`tab-select: no open tab is numbered ${e} (it was closed, or this shell never listed it). Run tab-list for current numbers, or pass --tab=<targetId>.\n`,exitCode:1};c=t.targetId}await i(c,e=>e.bringToFront());let l=s.find(e=>e.targetId===c)?.number;return{stdout:`Selected ${l===void 0?`tab`:`tab ${l}`} [targetId: ${c}]\n`,stderr:``,exitCode:0}},fE=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`resize requires <width> <height>
1109
+ `,exitCode:1};let s=await ue(e,t),c;if(a)c=a;else{let e=parseInt(o,10),t=s.find(t=>t.number===e);if(!t)return{stdout:``,stderr:`tab-select: no open tab is numbered ${e} (it was closed, or this shell never listed it). Run tab-list for current numbers, or pass --tab=<targetId>.\n`,exitCode:1};c=t.targetId}await i(c,e=>e.bringToFront());let l=s.find(e=>e.targetId===c)?.number;return{stdout:`Selected ${l===void 0?`tab`:`tab ${l}`} [targetId: ${c}]\n`,stderr:``,exitCode:0}},dE=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`resize requires <width> <height>
1129
1110
  `,exitCode:1};let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=parseInt(n[0],10),s=parseInt(n[1],10);return isNaN(o)||isNaN(s)||o<=0||s<=0?{stdout:``,stderr:`resize requires positive integer width and height
1130
- `,exitCode:1}:(await i(a.targetId,e=>e.setViewportOverride(o,s)),t.snapshots.delete(a.targetId),{stdout:`Resized viewport to ${o}x${s}\n`,stderr:``,exitCode:0})},pE=e(`playwright-teleport`);function mE(){pE.info(`Listing available follower runtimes`);let e=$w();if(!e)return{stdout:``,stderr:`teleport: not connected to a tray
1111
+ `,exitCode:1}:(await i(a.targetId,e=>e.setViewportOverride(o,s)),t.snapshots.delete(a.targetId),{stdout:`Resized viewport to ${o}x${s}\n`,stderr:``,exitCode:0})},fE=e(`playwright-teleport`);function pE(){fE.info(`Listing available follower runtimes`);let e=Qw();if(!e)return{stdout:``,stderr:`teleport: not connected to a tray
1131
1112
  `,exitCode:1};let t=e();if(t.length===0)return{stdout:`No followers connected to the tray.
1132
1113
  `,stderr:``,exitCode:0};let n=[`Available runtimes for teleport:`];for(let e of t){let t=[e.runtimeId];if(e.floatType&&t.push(`[${e.floatType}]`),e.runtime&&t.push(`(${e.runtime})`),e.lastActivity){let n=Math.round((Date.now()-e.lastActivity)/1e3);t.push(`active ${n}s ago`)}n.push(` ${t.join(` `)}`)}return{stdout:n.join(`
1133
1114
  `)+`
1134
- `,stderr:``,exitCode:0}}function hE({state:e,flags:t}){let n=N(t);if(`error`in n)return{stdout:``,stderr:n.error,exitCode:1};pE.info(`Disarming teleport watcher via --off`,{targetId:n.targetId});let r=e.teleportWatchers.get(n.targetId);return r&&(tT(r),e.teleportWatchers.delete(n.targetId)),{stdout:`Teleport watcher disarmed
1135
- `,stderr:``,exitCode:0}}function gE(e,t){let n,r;try{n=new RegExp(e)}catch{return{error:`Invalid regex for --start: ${e}\n`}}try{r=new RegExp(t)}catch{return{error:`Invalid regex for --return: ${t}\n`}}return{startPattern:n,returnPattern:r}}function _E(e){return($w()?.()??[]).find(t=>t.runtimeId===e)?.runtime===`slicc-cherry`?`teleport: runtime ${e} is a cherry host and cannot serve a cookie teleport (no Network.* access)\n`:null}async function vE({browser:e,state:t,flags:n,onTab:r,signal:i}){let a=N(n);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n.start||n[`teleport-start`],s=n.return||n[`teleport-return`];if(!o||!s)return{stdout:``,stderr:`teleport requires --start <regex> and --return <regex>
1136
- `,exitCode:1};let c=gE(o,s);if(`error`in c)return{stdout:``,stderr:c.error,exitCode:1};let l=n.timeout?parseInt(n.timeout,10):300;if(isNaN(l)||l<=0)return{stdout:``,stderr:`--timeout must be a positive number
1137
- `,exitCode:1};let u=n.runtime;if(u){let e=_E(u);if(e)return{stdout:``,stderr:e,exitCode:1}}let d=t.teleportWatchers.get(a.targetId);d&&(pE.info(`Disarming existing teleport watcher before re-arming`,{targetId:a.targetId}),tT(d),t.teleportWatchers.delete(a.targetId));let f;try{let e=await r(a.targetId,e=>e.evaluate(`window.location.href`));f=typeof e==`string`?e:String(e)}catch{}return pE.info(`Arming teleport via explicit subcommand`,{targetId:a.targetId,timeoutSec:l,runtimeSelection:u?`explicit`:`auto`}),pE.debug(`Arming teleport via explicit subcommand details`,{targetId:a.targetId,startPattern:o,returnPattern:s,timeoutSec:l,runtimeId:u??`auto`,leaderUrl:f}),ir(i,`about to arm a teleport watcher on tab ${a.targetId}`),nT(e,t,c.startPattern,c.returnPattern,l*1e3,u,f,a.targetId),{stdout:`Teleport armed on tab ${a.targetId}. Will trigger when URL matches ${o}\n`,stderr:``,exitCode:0}}const yE=async e=>e.flags.list===`true`?mE():e.flags.off===`true`?hE(e):vE(e),bE={png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`,pdf:`application/pdf`,txt:`text/plain`,json:`application/json`,csv:`text/csv`,html:`text/html`,htm:`text/html`,xml:`application/xml`,zip:`application/zip`,mp4:`video/mp4`,mp3:`audio/mpeg`};function xE(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return bE[t]??`application/octet-stream`}function SE(e,t){if(e.length===0)return{error:`upload requires at least one file path
1115
+ `,stderr:``,exitCode:0}}function mE({state:e,flags:t}){let n=N(t);if(`error`in n)return{stdout:``,stderr:n.error,exitCode:1};fE.info(`Disarming teleport watcher via --off`,{targetId:n.targetId});let r=e.teleportWatchers.get(n.targetId);return r&&(eT(r),e.teleportWatchers.delete(n.targetId)),{stdout:`Teleport watcher disarmed
1116
+ `,stderr:``,exitCode:0}}function hE(e,t){let n,r;try{n=new RegExp(e)}catch{return{error:`Invalid regex for --start: ${e}\n`}}try{r=new RegExp(t)}catch{return{error:`Invalid regex for --return: ${t}\n`}}return{startPattern:n,returnPattern:r}}function gE(e){return(Qw()?.()??[]).find(t=>t.runtimeId===e)?.runtime===`slicc-cherry`?`teleport: runtime ${e} is a cherry host and cannot serve a cookie teleport (no Network.* access)\n`:null}async function _E({browser:e,state:t,flags:n,onTab:r,signal:i}){let a=N(n);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n.start||n[`teleport-start`],s=n.return||n[`teleport-return`];if(!o||!s)return{stdout:``,stderr:`teleport requires --start <regex> and --return <regex>
1117
+ `,exitCode:1};let c=hE(o,s);if(`error`in c)return{stdout:``,stderr:c.error,exitCode:1};let l=n.timeout?parseInt(n.timeout,10):300;if(isNaN(l)||l<=0)return{stdout:``,stderr:`--timeout must be a positive number
1118
+ `,exitCode:1};let u=n.runtime;if(u){let e=gE(u);if(e)return{stdout:``,stderr:e,exitCode:1}}let d=t.teleportWatchers.get(a.targetId);d&&(fE.info(`Disarming existing teleport watcher before re-arming`,{targetId:a.targetId}),eT(d),t.teleportWatchers.delete(a.targetId));let f;try{let e=await r(a.targetId,e=>e.evaluate(`window.location.href`));f=typeof e==`string`?e:String(e)}catch{}return fE.info(`Arming teleport via explicit subcommand`,{targetId:a.targetId,timeoutSec:l,runtimeSelection:u?`explicit`:`auto`}),fE.debug(`Arming teleport via explicit subcommand details`,{targetId:a.targetId,startPattern:o,returnPattern:s,timeoutSec:l,runtimeId:u??`auto`,leaderUrl:f}),ir(i,`about to arm a teleport watcher on tab ${a.targetId}`),tT(e,t,c.startPattern,c.returnPattern,l*1e3,u,f,a.targetId),{stdout:`Teleport armed on tab ${a.targetId}. Will trigger when URL matches ${o}\n`,stderr:``,exitCode:0}}const vE=async e=>e.flags.list===`true`?pE():e.flags.off===`true`?mE(e):_E(e),yE={png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`,pdf:`application/pdf`,txt:`text/plain`,json:`application/json`,csv:`text/csv`,html:`text/html`,htm:`text/html`,xml:`application/xml`,zip:`application/zip`,mp4:`video/mp4`,mp3:`audio/mpeg`};function bE(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return yE[t]??`application/octet-stream`}function xE(e,t){if(e.length===0)return{error:`upload requires at least one file path
1138
1119
  `};if(!Xn(e[0]))return{targetRef:null,filePaths:e};let n=e[0],r=e.slice(1);if(!t)return{error:`No snapshot available. Run "snapshot" first.
1139
1120
  `};try{_e(t,n)}catch(e){return{error:`${e instanceof Error?e.message:String(e)}\n`}}return r.length===0?{error:`upload requires at least one file path
1140
- `}:{targetRef:n,filePaths:r}}const CE=/* @__PURE__ */ new Map([[`teleport`,yE],[`open`,cE],[`tab-new`,cE],[`fetch`,rw],[`goto`,dT],[`navigate`,dT],[`snapshot`,KT],[`find`,qT],[`frames`,JT],[`screenshot`,$T],[`click`,cw],[`type`,lw],[`fill`,uw],[`eval`,ZC],[`eval-file`,QC],[`press`,dw],[`keydown`,fw],[`keyup`,pw],[`go-back`,fT],[`go-forward`,pT],[`reload`,mT],[`tab-list`,lE],[`tab-close`,uE],[`close`,uE],[`dblclick`,mw],[`hover`,hw],[`select`,gw],[`check`,vw],[`uncheck`,yw],[`drag`,bw],[`resize`,fE],[`dialog-accept`,GC],[`dialog-dismiss`,KC],[`cookie-list`,LC],[`cookie-get`,RC],[`cookie-set`,zC],[`cookie-delete`,BC],[`cookie-clear`,VC],[`localstorage-list`,rE.list],[`localstorage-get`,rE.get],[`localstorage-set`,rE.set],[`localstorage-delete`,rE.del],[`localstorage-clear`,rE.clear],[`sessionstorage-list`,iE.list],[`sessionstorage-get`,iE.get],[`sessionstorage-set`,iE.set],[`sessionstorage-delete`,iE.del],[`sessionstorage-clear`,iE.clear],[`record`,OT],[`stop-recording`,kT],[`tab-select`,dE],[`pdf`,YT],[`network-state-set`,hT],[`upload`,async({browser:e,fs:n,state:r,positional:i,flags:a,onTab:o})=>{let s=N(a);if(`error`in s)return{stdout:``,stderr:s.error,exitCode:1};let c=r.snapshots.get(s.targetId),l=SE(i,c);if(`error`in l)return{stdout:``,stderr:l.error,exitCode:1};let{targetRef:u,filePaths:d}=l,f=[];for(let e of d){let r=await xw(n,e),i=e.split(`/`).pop()??e;f.push({name:i,type:xE(i),base64:t(r)})}u?await o(s.targetId,async e=>{let{objectId:t}=await y(e,c,u);await pe(e,t,`function(filesData) {
1121
+ `}:{targetRef:n,filePaths:r}}const SE=/* @__PURE__ */ new Map([[`teleport`,vE],[`open`,sE],[`tab-new`,sE],[`fetch`,rw],[`goto`,uT],[`navigate`,uT],[`snapshot`,GT],[`find`,KT],[`frames`,qT],[`screenshot`,QT],[`click`,cw],[`type`,lw],[`fill`,uw],[`eval`,ZC],[`eval-file`,QC],[`press`,dw],[`keydown`,fw],[`keyup`,pw],[`go-back`,dT],[`go-forward`,fT],[`reload`,pT],[`tab-list`,cE],[`tab-close`,lE],[`close`,lE],[`dblclick`,mw],[`hover`,hw],[`select`,gw],[`check`,vw],[`uncheck`,yw],[`drag`,bw],[`resize`,dE],[`dialog-accept`,GC],[`dialog-dismiss`,KC],[`cookie-list`,LC],[`cookie-get`,RC],[`cookie-set`,zC],[`cookie-delete`,BC],[`cookie-clear`,VC],[`localstorage-list`,nE.list],[`localstorage-get`,nE.get],[`localstorage-set`,nE.set],[`localstorage-delete`,nE.del],[`localstorage-clear`,nE.clear],[`sessionstorage-list`,rE.list],[`sessionstorage-get`,rE.get],[`sessionstorage-set`,rE.set],[`sessionstorage-delete`,rE.del],[`sessionstorage-clear`,rE.clear],[`record`,DT],[`stop-recording`,OT],[`tab-select`,uE],[`pdf`,JT],[`network-state-set`,mT],[`upload`,async({browser:e,fs:n,state:r,positional:i,flags:a,onTab:o})=>{let s=N(a);if(`error`in s)return{stdout:``,stderr:s.error,exitCode:1};let c=r.snapshots.get(s.targetId),l=xE(i,c);if(`error`in l)return{stdout:``,stderr:l.error,exitCode:1};let{targetRef:u,filePaths:d}=l,f=[];for(let e of d){let r=await xw(n,e),i=e.split(`/`).pop()??e;f.push({name:i,type:bE(i),base64:t(r)})}u?await o(s.targetId,async e=>{let{objectId:t}=await y(e,c,u);await pe(e,t,`function(filesData) {
1141
1122
  const el = this;
1142
1123
  if (el.tagName !== 'INPUT' || el.type !== 'file') {
1143
1124
  throw new Error('Element ' + el.tagName + ' is not a file input');
@@ -1168,12 +1149,12 @@ Options:
1168
1149
  el.dispatchEvent(new Event('change', { bubbles: true }));
1169
1150
  el.dispatchEvent(new Event('input', { bubbles: true }));
1170
1151
  return el.files.length;
1171
- })()`,r=await t.send(`Runtime.evaluate`,{expression:n,returnByValue:!0,awaitPromise:!1},e);if(r.exceptionDetails){let e=r.exceptionDetails.exception?.description??r.exceptionDetails.text??`File upload failed`;throw Error(e)}});let p=d.map(e=>e.split(`/`).pop()??e).join(`, `);return{stdout:`Uploaded ${d.length} file(s): ${p}\n`,stderr:``,exitCode:0}}],[`state-save`,eE],[`state-load`,tE],[`console`,MC],[`requests`,ST],[`request`,CT],[`request-headers`,wT],[`request-body`,TT],[`response-headers`,ET],[`response-body`,DT],[`mousemove`,Tw],[`mousedown`,Ew],[`mouseup`,Dw],[`mousewheel`,Ow],[`drop`,Aw],[`route`,FT],[`route-list`,IT],[`unroute`,LT],[`generate-locator`,UC],[`highlight`,WC]]);function wE(){let e=(Jn.string??[]).map(e=>`--${e}`),t=new Set(Jn.boolean??[]);for(let[e,n]of Object.entries(Jn.alias??{})){let r=[e,...Array.isArray(n)?n:[n]];if(r.some(e=>t.has(e)))for(let e of r)t.add(e)}return{value:e,bool:[...[...t].map(e=>`--${e}`),`--help`,`-h`,`--no-iframes`]}}function TE(e){return e.map(e=>e===`--no-iframes`||e.startsWith(`--no-iframes=`)?e.replace(`--no-iframes`,`--_noiframes`):e)}function EE(e){return{...e,bool:[...e.bool??[],`--_noiframes`],value:[...e.value??[],`--_noiframes`]}}const DE=2e3;function OE(e,t){if(typeof e.getTabLockStats!=`function`)return;let n=e.getTabLockStats();return t?{totalWaitMs:n.totalWaitMs,tabWaitMs:e.getTabLockStats(t).tabWaitMs}:{totalWaitMs:n.totalWaitMs}}function kE(e,t,n,r){if(!t||typeof e.getTabLockStats!=`function`)return r;let i=e.getTabLockStats(),a=i.totalWaitMs-t.totalWaitMs;if(a<DE)return r;let o=(a/1e3).toFixed(1),s=n&&t.tabWaitMs!==void 0?e.getTabLockStats(n).tabWaitMs-t.tabWaitMs:0,c=`note: browser bridge contended — lock waits totaled ${o}s while this command ran, ${s>=DE?`${(s/1e3).toFixed(1)}s of it waiting on this tab (--tab=${n})`:`all of it waiting on the bridge, not on this tab`} (queue depth ${i.queueDepth}). Commands on the same tab serialize; commands on different tabs run in parallel — stagger callers on THIS tab, or give each caller its own tab.
1172
- `;return{...r,stderr:r.stderr+c}}async function AE(e,t,n){let r=n instanceof Error?n.message:String(n);return{stdout:``,stderr:`Error: ${(t.tab?await rr(e,t.tab,n):null)??r}\n`,exitCode:1}}function jE(e,t,n){return{stdout:``,stderr:`${e} ${t}: ${n===void 0?`aborted: the caller stopped waiting for it`:n instanceof Error?n.message:String(n)}\n`,exitCode:130}}async function ME(e,t,n){let r=CE.get(t);if(!r)return{stdout:``,stderr:`Unknown command: ${t}\nRun "playwright-cli help" for usage.\n`,exitCode:1};let{signal:i}=n;try{let a=await r(n);return i?.aborted?jE(e,t,void 0):a}catch(r){return i?.aborted?jE(e,t,r):await AE(n.browser,n.flags,r)}}async function NE(e,t,n,r){let i=w(TE(n),EE(r));if(`error`in i)return{answer:{stdout:``,stderr:`${e} ${t}: ${i.error}\n`,exitCode:1}};let a;try{({flags:a}=qn(n))}catch(n){return{answer:{stdout:``,stderr:`${e} ${t}: ${n instanceof Error?n.message:String(n)}\n`,exitCode:1}}}if(a.help===`true`||a.h===`true`){let{formatSubcommandHelp:n}=await import(`./help-BRrHdT4u.js`);return{answer:{stdout:n(e,t),stderr:``,exitCode:0}}}let o=null;try{let{validateSubcommandArgs:r}=await import(`./validate-args-qrOSmbMv.js`);o=r(e,t,n,i.positionals)}catch{o=null}return o?{answer:{stdout:``,stderr:o,exitCode:1}}:{positional:i.positionals,flags:a}}function PE(e,t,n,r={}){let i=t?Kn(t,n):null,a=wE();return C(e,async(o,s)=>{if(o.length===0||o[0]===`help`||o[0]===`--help`||o[0]===`-h`){let{formatHelp:t}=await import(`./help-BRrHdT4u.js`);return{stdout:t(e)+`
1173
- `,stderr:``,exitCode:0}}let c=o[0],l=o.slice(1),u=await NE(e,c,l,a);if(`answer`in u)return u.answer;let{positional:d,flags:f}=u;if(!t||!i)return{stdout:``,stderr:`${e}: browser APIs are unavailable in this environment\n`,exitCode:1};let p=f.tab??null,m=OE(t,p),h=pa(s.env),g=zT(r.isScoop?.()??!1,h),_=await ME(e,c,{browser:t,fs:n,state:i,positional:d,flags:f,scratchDir:h,sessionRoot:g,onTab:(e,n)=>t.withTab(e,async e=>{try{return await n(e)}finally{await e.releaseObjects?.().catch(()=>void 0)}},{signal:s.signal}),signal:s.signal}),v=f.tab??null,ee=null;nr.has(c)&&_.exitCode===0&&v&&(ee=await VT(t,n,v,i,g));try{await HT(n,i,g,{command:c,args:l,result:_,snapshotPath:ee,targetId:v})}catch{}return kE(t,m,p,ee&&tr.has(c)?{..._,stdout:`${_.stdout}Snapshot: ${ee}\n`}:_)})}const FE=/* @__PURE__ */ new Map([[`File operations`,[`ls`,`cat`,`head`,`tail`,`wc`,`touch`,`mkdir`,`rm`,`cp`,`mv`,`ln`,`chmod`,`stat`,`readlink`,`file`,`rmdir`,`rsync`]],[`Text processing`,[`grep`,`sed`,`awk`,`sort`,`uniq`,`cut`,`tr`,`tee`,`diff`,`patch`,`column`,`comm`,`egrep`,`fgrep`,`expand`,`unexpand`,`fold`,`join`,`nl`,`od`,`paste`,`rev`,`split`,`strings`,`tac`]],[`Search`,[`find`,`rg`]],[`Navigation & paths`,[`pwd`,`basename`,`dirname`,`tree`,`du`,`cd`]],[`Archives`,[`zip`,`unzip`,`pdftk`,`pdf`,`gunzip`,`gzip`,`zcat`]],[`Media`,[`convert`,`magick`,`pdftoppm`,`pdftocairo`,`pdftotext`,`ffmpeg`,`ffprobe`,`screencapture`]],[`Audio`,[`say`,`hear`,`afplay`,`chime`]],[`Environment & shell`,/* @__PURE__ */ `echo.printf.env.printenv.export.alias.unalias.history.clear.true.false.bash.sh.commands.which.uname.man.host.oauth-token.secret.nuke.models.local-llm.cost.hostname.whoami.id.help.sleep.time.timeout.oauth-domain`.split(`.`)],[`Data processing`,[`xargs`,`jq`,`base64`,`date`,`expr`,`seq`]],[`Hashes`,[`md5sum`,`sha1sum`,`sha256sum`]],[`Network`,[`curl`,`curlwright`,`wget`,`dig`,`websocat`,`html-to-markdown`]],[`Version control`,[`git`]],[`Languages`,[`node`,`jsh`,`python`,`python3`,`pyodide`,`sqlite3`]],[`Virtualization`,[`v86`,`computer`]],[`Build tools`,[`tsc`,`tst`,`esbuild`,`biome`]],[`Packages`,[`ipk`,`hf`,`npm`,`i`,`ipx`,`npx`]],[`Skills`,[`skill`,`upskill`]],[`Browser & UI`,[`serve`,`open`,`imgcat`,...er,`sprinkle`]],[`Clipboard`,[`pbcopy`,`pbpaste`,`xclip`,`xsel`]],[`Filesystem`,[`mount`,`umount`,`fswatch`]],[`Scoops & agents`,[`agent`,`gelatiere`,`mcp`,`webhook`,`crontask`]],[`Process`,[`ps`,`kill`,`jshd`,`meminfo`,`uptime`]],[`Shell builtins (limited)`,[...d_]]]);function IE(e,t=[],n=[]){let r=[],i=new Set(e);for(let e of t)i.delete(e);for(let e of n)i.delete(e);r.push(`Available commands:
1174
- `);let a=[];for(let[e,t]of FE){let n=t.filter(e=>i.has(e));if(n.length>0){r.push(` ${e}:`),r.push(` ${n.join(`, `)}\n`);for(let e of n)i.delete(e)}}for(let e of i)a.push(e);return a.length>0&&(r.push(` Other:`),r.push(` ${a.sort().join(`, `)}\n`)),t.length>0&&(r.push(` User scripts (.jsh):`),r.push(` ${t.sort().join(`, `)}\n`)),n.length>0&&(r.push(` Workflows:`),r.push(` ${n.sort().join(`, `)}\n`)),r.push(`Use '<command> --help' for details on a specific command.`),r.join(`
1152
+ })()`,r=await t.send(`Runtime.evaluate`,{expression:n,returnByValue:!0,awaitPromise:!1},e);if(r.exceptionDetails){let e=r.exceptionDetails.exception?.description??r.exceptionDetails.text??`File upload failed`;throw Error(e)}});let p=d.map(e=>e.split(`/`).pop()??e).join(`, `);return{stdout:`Uploaded ${d.length} file(s): ${p}\n`,stderr:``,exitCode:0}}],[`state-save`,$T],[`state-load`,eE],[`console`,MC],[`requests`,xT],[`request`,ST],[`request-headers`,CT],[`request-body`,wT],[`response-headers`,TT],[`response-body`,ET],[`mousemove`,Tw],[`mousedown`,Ew],[`mouseup`,Dw],[`mousewheel`,Ow],[`drop`,kw],[`route`,PT],[`route-list`,FT],[`unroute`,IT],[`generate-locator`,UC],[`highlight`,WC]]);function CE(){let e=(Jn.string??[]).map(e=>`--${e}`),t=new Set(Jn.boolean??[]);for(let[e,n]of Object.entries(Jn.alias??{})){let r=[e,...Array.isArray(n)?n:[n]];if(r.some(e=>t.has(e)))for(let e of r)t.add(e)}return{value:e,bool:[...[...t].map(e=>`--${e}`),`--help`,`-h`,`--no-iframes`]}}function wE(e){return e.map(e=>e===`--no-iframes`||e.startsWith(`--no-iframes=`)?e.replace(`--no-iframes`,`--_noiframes`):e)}function TE(e){return{...e,bool:[...e.bool??[],`--_noiframes`],value:[...e.value??[],`--_noiframes`]}}const EE=2e3;function DE(e,t){if(typeof e.getTabLockStats!=`function`)return;let n=e.getTabLockStats();return t?{totalWaitMs:n.totalWaitMs,tabWaitMs:e.getTabLockStats(t).tabWaitMs}:{totalWaitMs:n.totalWaitMs}}function OE(e,t,n,r){if(!t||typeof e.getTabLockStats!=`function`)return r;let i=e.getTabLockStats(),a=i.totalWaitMs-t.totalWaitMs;if(a<EE)return r;let o=(a/1e3).toFixed(1),s=n&&t.tabWaitMs!==void 0?e.getTabLockStats(n).tabWaitMs-t.tabWaitMs:0,c=`note: browser bridge contended — lock waits totaled ${o}s while this command ran, ${s>=EE?`${(s/1e3).toFixed(1)}s of it waiting on this tab (--tab=${n})`:`all of it waiting on the bridge, not on this tab`} (queue depth ${i.queueDepth}). Commands on the same tab serialize; commands on different tabs run in parallel — stagger callers on THIS tab, or give each caller its own tab.
1153
+ `;return{...r,stderr:r.stderr+c}}async function kE(e,t,n){let r=n instanceof Error?n.message:String(n);return{stdout:``,stderr:`Error: ${(t.tab?await rr(e,t.tab,n):null)??r}\n`,exitCode:1}}function AE(e,t,n){return{stdout:``,stderr:`${e} ${t}: ${n===void 0?`aborted: the caller stopped waiting for it`:n instanceof Error?n.message:String(n)}\n`,exitCode:130}}async function jE(e,t,n){let r=SE.get(t);if(!r)return{stdout:``,stderr:`Unknown command: ${t}\nRun "playwright-cli help" for usage.\n`,exitCode:1};let{signal:i}=n;try{let a=await r(n);return i?.aborted?AE(e,t,void 0):a}catch(r){return i?.aborted?AE(e,t,r):await kE(n.browser,n.flags,r)}}async function ME(e,t,n,r){let i=w(wE(n),TE(r));if(`error`in i)return{answer:{stdout:``,stderr:`${e} ${t}: ${i.error}\n`,exitCode:1}};let a;try{({flags:a}=qn(n))}catch(n){return{answer:{stdout:``,stderr:`${e} ${t}: ${n instanceof Error?n.message:String(n)}\n`,exitCode:1}}}if(a.help===`true`||a.h===`true`){let{formatSubcommandHelp:n}=await import(`./help-BRrHdT4u.js`);return{answer:{stdout:n(e,t),stderr:``,exitCode:0}}}let o=null;try{let{validateSubcommandArgs:r}=await import(`./validate-args-qrOSmbMv.js`);o=r(e,t,n,i.positionals)}catch{o=null}return o?{answer:{stdout:``,stderr:o,exitCode:1}}:{positional:i.positionals,flags:a}}function NE(e,t,n,r={}){let i=t?Kn(t,n):null,a=CE();return C(e,async(o,s)=>{if(o.length===0||o[0]===`help`||o[0]===`--help`||o[0]===`-h`){let{formatHelp:t}=await import(`./help-BRrHdT4u.js`);return{stdout:t(e)+`
1154
+ `,stderr:``,exitCode:0}}let c=o[0],l=o.slice(1),u=await ME(e,c,l,a);if(`answer`in u)return u.answer;let{positional:d,flags:f}=u;if(!t||!i)return{stdout:``,stderr:`${e}: browser APIs are unavailable in this environment\n`,exitCode:1};let p=f.tab??null,m=DE(t,p),h=pa(s.env),g=RT(r.isScoop?.()??!1,h),_=await jE(e,c,{browser:t,fs:n,state:i,positional:d,flags:f,scratchDir:h,sessionRoot:g,onTab:(e,n)=>t.withTab(e,async e=>{try{return await n(e)}finally{await e.releaseObjects?.().catch(()=>void 0)}},{signal:s.signal}),signal:s.signal}),v=f.tab??null,ee=null;nr.has(c)&&_.exitCode===0&&v&&(ee=await BT(t,n,v,i,g));try{await VT(n,i,g,{command:c,args:l,result:_,snapshotPath:ee,targetId:v})}catch{}return OE(t,m,p,ee&&tr.has(c)?{..._,stdout:`${_.stdout}Snapshot: ${ee}\n`}:_)})}const PE=/* @__PURE__ */ new Map([[`File operations`,[`ls`,`cat`,`head`,`tail`,`wc`,`touch`,`mkdir`,`rm`,`cp`,`mv`,`ln`,`chmod`,`stat`,`readlink`,`file`,`rmdir`,`rsync`]],[`Text processing`,[`grep`,`sed`,`awk`,`sort`,`uniq`,`cut`,`tr`,`tee`,`diff`,`patch`,`column`,`comm`,`egrep`,`fgrep`,`expand`,`unexpand`,`fold`,`join`,`nl`,`od`,`paste`,`rev`,`split`,`strings`,`tac`]],[`Search`,[`find`,`rg`]],[`Navigation & paths`,[`pwd`,`basename`,`dirname`,`tree`,`du`,`cd`]],[`Archives`,[`zip`,`unzip`,`pdftk`,`pdf`,`gunzip`,`gzip`,`zcat`]],[`Media`,[`convert`,`magick`,`pdftoppm`,`pdftocairo`,`pdftotext`,`ffmpeg`,`ffprobe`,`screencapture`]],[`Audio`,[`say`,`hear`,`afplay`,`chime`]],[`Environment & shell`,/* @__PURE__ */ `echo.printf.env.printenv.export.alias.unalias.history.clear.true.false.bash.sh.commands.which.uname.man.host.oauth-token.secret.nuke.models.local-llm.cost.hostname.whoami.id.help.sleep.time.timeout.oauth-domain`.split(`.`)],[`Data processing`,[`xargs`,`jq`,`base64`,`date`,`expr`,`seq`]],[`Hashes`,[`md5sum`,`sha1sum`,`sha256sum`]],[`Network`,[`curl`,`curlwright`,`wget`,`dig`,`websocat`,`html-to-markdown`]],[`Version control`,[`git`]],[`Languages`,[`node`,`jsh`,`python`,`python3`,`pyodide`,`sqlite3`]],[`Virtualization`,[`v86`,`computer`]],[`Build tools`,[`tsc`,`tst`,`esbuild`,`biome`]],[`Packages`,[`ipk`,`hf`,`npm`,`i`,`ipx`,`npx`]],[`Skills`,[`skill`,`upskill`]],[`Browser & UI`,[`serve`,`open`,`imgcat`,...er,`sprinkle`]],[`Clipboard`,[`pbcopy`,`pbpaste`,`xclip`,`xsel`]],[`Filesystem`,[`mount`,`umount`,`fswatch`]],[`Scoops & agents`,[`agent`,`gelatiere`,`mcp`,`webhook`,`crontask`]],[`Process`,[`ps`,`kill`,`jshd`,`meminfo`,`uptime`]],[`Shell builtins (limited)`,[...d_]]]);function FE(e,t=[],n=[]){let r=[],i=new Set(e);for(let e of t)i.delete(e);for(let e of n)i.delete(e);r.push(`Available commands:
1155
+ `);let a=[];for(let[e,t]of PE){let n=t.filter(e=>i.has(e));if(n.length>0){r.push(` ${e}:`),r.push(` ${n.join(`, `)}\n`);for(let e of n)i.delete(e)}}for(let e of i)a.push(e);return a.length>0&&(r.push(` Other:`),r.push(` ${a.sort().join(`, `)}\n`)),t.length>0&&(r.push(` User scripts (.jsh):`),r.push(` ${t.sort().join(`, `)}\n`)),n.length>0&&(r.push(` Workflows:`),r.push(` ${n.sort().join(`, `)}\n`)),r.push(`Use '<command> --help' for details on a specific command.`),r.join(`
1175
1156
  `)+`
1176
- `}function LE(e={}){return C(`commands`,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`commands - display available commands
1157
+ `}function IE(e={}){return C(`commands`,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`commands - display available commands
1177
1158
 
1178
1159
  Usage: commands [command]
1179
1160
 
@@ -1184,7 +1165,7 @@ If a command name is provided, shows help for that command.
1184
1165
  Otherwise, lists all available commands.
1185
1166
 
1186
1167
  Note: This is an enhanced version of 'help' that shows all custom commands.
1187
- `,stderr:``,exitCode:0};if(t.length>0&&n.exec){let e=t[0];return n.exec(`${e} --help`,{cwd:n.cwd})}return{stdout:IE(n.getRegisteredCommands?.()??[],await e.getJshCommands?.()??[],await e.getWorkflowCommands?.()??[]),stderr:``,exitCode:0}})}function RE(e){return{stdout:`hf - download model repos from the Hugging Face Hub into the VFS
1168
+ `,stderr:``,exitCode:0};if(t.length>0&&n.exec){let e=t[0];return n.exec(`${e} --help`,{cwd:n.cwd})}return{stdout:FE(n.getRegisteredCommands?.()??[],await e.getJshCommands?.()??[],await e.getWorkflowCommands?.()??[]),stderr:``,exitCode:0}})}function LE(e){return{stdout:`hf - download model repos from the Hugging Face Hub into the VFS
1188
1169
 
1189
1170
  Usage:
1190
1171
  hf download <repo> [files...] [--to <dir>] [--revision <rev>] [--force]
@@ -1215,8 +1196,8 @@ Notes:
1215
1196
  - Background-job logs get a progress line every few seconds.
1216
1197
  - Weights are read by the speech engines via the preview SW from the
1217
1198
  target directory; transformers expects <localModelPath>/<repo>/.
1218
- `,stderr:``,exitCode:e}}function zE(e){return{stdout:``,stderr:`hf: ${e}\n`,exitCode:1}}const BE=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;function VE(e,t){if(typeof t!=`string`)return{error:`${e} requires a value`};let n=Number(t);return!/^\d+$/.test(t)||!Number.isSafeInteger(n)||n<1?{error:`${e} must be a positive integer, got '${t}'`}:n}function HE(e){let t=null,n=`main`,r=!1,i,a,o=[],s=0;for(;s<e.length;){let c=e[s];if(c===`--concurrency`||c===`-j`||c===`--max-in-flight-mb`){let t=VE(c,e[s+1]);if(typeof t!=`number`)return t;c===`--max-in-flight-mb`?a=t:i=t,s+=2;continue}if(c===`--to`){let n=e[s+1];if(typeof n!=`string`)return{error:`--to requires a value`};t=n,s+=2;continue}if(c===`--revision`||c===`--rev`){let t=e[s+1];if(typeof t!=`string`)return{error:`${c} requires a value`};n=t,s+=2;continue}if(c===`--force`||c===`-f`){r=!0,s+=1;continue}if(c.startsWith(`--`))return{error:`unknown option: ${c}`};o.push(c),s+=1}if(o.length===0)return{error:`download requires <repo>`};let c=o[0];return BE.test(c)?{repo:c,files:o.slice(1),to:t,revision:n,force:r,concurrency:i,maxInFlightMb:a}:{error:`invalid repo '${c}' — expected <owner>/<name>`}}function UE(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m ${t%60}s`:`${Math.floor(n/60)}h ${n%60}m`}var WE=class{filesTotal;bytesTotal;now;filesDone=0;bytesDone=0;bytesFetched=0;lastLineAt=-1/0;startedAt;constructor(e,t,n=Date.now){this.filesTotal=e,this.bytesTotal=t,this.now=n,this.startedAt=n()}listed(e,t){this.filesTotal=e,this.bytesTotal=t>0?t:void 0}file(e,t){this.filesDone+=1,this.bytesDone+=t,e===`downloaded`&&(this.bytesFetched+=t)}rate(){let e=(this.now()-this.startedAt)/1e3;return e>0?this.bytesFetched/e:0}elapsedMs(){return this.now()-this.startedAt}line(){let e=this.now();if(!(this.filesDone>=this.filesTotal)&&e-this.lastLineAt<5e3)return null;this.lastLineAt=e;let t=this.rate(),n=Vy(this.bytesDone),r=``;if(this.bytesTotal!==void 0){n+=` of ${Vy(this.bytesTotal)}`;let e=this.bytesTotal-this.bytesDone;t>0&&e>0&&(r=`, ~${UE(e/t*1e3)} left`)}return`hf: ${this.filesDone}/${this.filesTotal} files, ${n}, ${Vy(t)}/s${r}\n`}};function GE(e){let t=e;return typeof t.writeStdout==`function`?t.writeStdout.bind(t):void 0}async function KE(e,t,n,r){let i=HE(e);if(`error`in i)return zE(i.error);let a=ga(i.repo,i.to,t.cwd),{downloadHfRepo:o,HfFileDownloadError:s}=await import(`./hf-download-qMasSNt9.js`),c=GE(t),l=new WE(i.files.length,void 0,r),u=``;try{let e=await o({fetch:n.fetch,streamFetch:n.streamFetch,fs:t.fs,repo:i.repo,targetDir:a,files:i.files,revision:i.revision,force:i.force,concurrency:i.concurrency,maxBytesInFlight:i.maxInFlightMb===void 0?void 0:i.maxInFlightMb*1024*1024,signal:t.signal,endpoint:t.env.get(`HF_ENDPOINT`),progress:{onListed:({files:e,totalBytes:t})=>{l.listed(e.length,t);let n=`hf: ${e.length} file(s) listed in ${i.repo}@${i.revision}\n`;u+=n,c?.(n)},onFile:e=>{u+=e.status===`downloaded`?`hf: downloaded ${e.file} (${Vy(e.bytes)})\n`:`hf: skipped ${e.file} (already at ${a})\n`,l.file(e.status,e.bytes);let t=c?l.line():null;t&&c?.(t)}}}),r=e.downloaded>0?` in ${UE(l.elapsedMs())} (${Vy(l.rate())}/s)`:``,s=`hf: ${e.downloaded} downloaded, ${e.skipped} skipped, ${Vy(e.totalBytes)} total into ${a}${r}\n`;return{stdout:``,stderr:u+s,exitCode:0}}catch(e){return e instanceof s?(u+=`hf: failed ${e.file}: ${e.message}\n`,{stdout:``,stderr:u,exitCode:1}):zE(e instanceof Error?e.message:String(e))}}const qE=[`--to`,`--revision`,`--rev`,`--concurrency`,`-j`,`--max-in-flight-mb`];function JE(e){let t=e.now??Date.now;return{name:`hf`,async execute(n,r){if(n.length===0||T(n,{valueFlags:qE}))return RE(+(n.length===0));let i=n[0];return i===`download`?KE(n.slice(1),r,e,t):zE(`unknown subcommand: ${i}`)}}}const YE=/* @__PURE__ */ new Set([`--vid`,`--pid`,`--usage-page`,`--usage`,`--__resolved`,`--timeout`]);function XE(e){return Vn(e,YE)}function ZE(e,t){let n=/^0x/i.test(e)?parseInt(e,16):parseInt(e,10);if(!Number.isFinite(n)||Number.isNaN(n))throw Error(`invalid ${t}: '${e}'`);return n}function QE(e){let t={};return e.has(`--vid`)&&(t.vendorId=ZE(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=ZE(e.get(`--pid`),`pid`)),e.has(`--usage-page`)&&(t.usagePage=ZE(e.get(`--usage-page`),`usage-page`)),e.has(`--usage`)&&(t.usage=ZE(e.get(`--usage`),`usage`)),Object.keys(t).length>0?[t]:[]}function $E(e){let t=lr(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function eD(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function tD(e){return e.toString(16).padStart(2,`0`)}function nD(e){return`0x${e.toString(16).padStart(4,`0`)}`}function rD(e){let t=e.productName||`(unknown)`,n=e.opened?` [open]`:``,r=e.usagePage===void 0?``:`\t${nD(e.usagePage)}:${nD(e.usage??0)}`;return`${e.handle}\t${nD(e.vendorId)}:${nD(e.productId)}${r}\t${t}${n}`}function iD(e,t){let n=t?.usagePage,r=t?.usage;if(n===void 0&&r===void 0)return e;let i=e.findIndex(e=>(n===void 0||e.usagePage===n)&&(r===void 0||e.usage===r));if(i<=0)return e;let a=e.slice(),[o]=a.splice(i,1);return a.unshift(o),a}function aD(e){return`${e.map(rD).join(`
1219
- `)}\n`}function oD(e){return`${tD(e.reportId)} ${eD(e.bytes)}`.trimEnd()}function sD(e){return{stdout:e,stderr:``,exitCode:0}}function W(e){return{stdout:``,stderr:`hid: ${e}\n`,exitCode:1}}const cD=`hid - access HID devices via WebHID
1199
+ `,stderr:``,exitCode:e}}function RE(e){return{stdout:``,stderr:`hf: ${e}\n`,exitCode:1}}const zE=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;function BE(e,t){if(typeof t!=`string`)return{error:`${e} requires a value`};let n=Number(t);return!/^\d+$/.test(t)||!Number.isSafeInteger(n)||n<1?{error:`${e} must be a positive integer, got '${t}'`}:n}function VE(e){let t=null,n=`main`,r=!1,i,a,o=[],s=0;for(;s<e.length;){let c=e[s];if(c===`--concurrency`||c===`-j`||c===`--max-in-flight-mb`){let t=BE(c,e[s+1]);if(typeof t!=`number`)return t;c===`--max-in-flight-mb`?a=t:i=t,s+=2;continue}if(c===`--to`){let n=e[s+1];if(typeof n!=`string`)return{error:`--to requires a value`};t=n,s+=2;continue}if(c===`--revision`||c===`--rev`){let t=e[s+1];if(typeof t!=`string`)return{error:`${c} requires a value`};n=t,s+=2;continue}if(c===`--force`||c===`-f`){r=!0,s+=1;continue}if(c.startsWith(`--`))return{error:`unknown option: ${c}`};o.push(c),s+=1}if(o.length===0)return{error:`download requires <repo>`};let c=o[0];return zE.test(c)?{repo:c,files:o.slice(1),to:t,revision:n,force:r,concurrency:i,maxInFlightMb:a}:{error:`invalid repo '${c}' — expected <owner>/<name>`}}function HE(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m ${t%60}s`:`${Math.floor(n/60)}h ${n%60}m`}var UE=class{filesTotal;bytesTotal;now;filesDone=0;bytesDone=0;bytesFetched=0;lastLineAt=-1/0;startedAt;constructor(e,t,n=Date.now){this.filesTotal=e,this.bytesTotal=t,this.now=n,this.startedAt=n()}listed(e,t){this.filesTotal=e,this.bytesTotal=t>0?t:void 0}file(e,t){this.filesDone+=1,this.bytesDone+=t,e===`downloaded`&&(this.bytesFetched+=t)}rate(){let e=(this.now()-this.startedAt)/1e3;return e>0?this.bytesFetched/e:0}elapsedMs(){return this.now()-this.startedAt}line(){let e=this.now();if(!(this.filesDone>=this.filesTotal)&&e-this.lastLineAt<5e3)return null;this.lastLineAt=e;let t=this.rate(),n=Vy(this.bytesDone),r=``;if(this.bytesTotal!==void 0){n+=` of ${Vy(this.bytesTotal)}`;let e=this.bytesTotal-this.bytesDone;t>0&&e>0&&(r=`, ~${HE(e/t*1e3)} left`)}return`hf: ${this.filesDone}/${this.filesTotal} files, ${n}, ${Vy(t)}/s${r}\n`}};function WE(e){let t=e;return typeof t.writeStdout==`function`?t.writeStdout.bind(t):void 0}async function GE(e,t,n,r){let i=VE(e);if(`error`in i)return RE(i.error);let a=ga(i.repo,i.to,t.cwd),{downloadHfRepo:o,HfFileDownloadError:s}=await import(`./hf-download-qMasSNt9.js`),c=WE(t),l=new UE(i.files.length,void 0,r),u=``;try{let e=await o({fetch:n.fetch,streamFetch:n.streamFetch,fs:t.fs,repo:i.repo,targetDir:a,files:i.files,revision:i.revision,force:i.force,concurrency:i.concurrency,maxBytesInFlight:i.maxInFlightMb===void 0?void 0:i.maxInFlightMb*1024*1024,signal:t.signal,endpoint:t.env.get(`HF_ENDPOINT`),progress:{onListed:({files:e,totalBytes:t})=>{l.listed(e.length,t);let n=`hf: ${e.length} file(s) listed in ${i.repo}@${i.revision}\n`;u+=n,c?.(n)},onFile:e=>{u+=e.status===`downloaded`?`hf: downloaded ${e.file} (${Vy(e.bytes)})\n`:`hf: skipped ${e.file} (already at ${a})\n`,l.file(e.status,e.bytes);let t=c?l.line():null;t&&c?.(t)}}}),r=e.downloaded>0?` in ${HE(l.elapsedMs())} (${Vy(l.rate())}/s)`:``,s=`hf: ${e.downloaded} downloaded, ${e.skipped} skipped, ${Vy(e.totalBytes)} total into ${a}${r}\n`;return{stdout:``,stderr:u+s,exitCode:0}}catch(e){return e instanceof s?(u+=`hf: failed ${e.file}: ${e.message}\n`,{stdout:``,stderr:u,exitCode:1}):RE(e instanceof Error?e.message:String(e))}}const KE=[`--to`,`--revision`,`--rev`,`--concurrency`,`-j`,`--max-in-flight-mb`];function qE(e){let t=e.now??Date.now;return{name:`hf`,async execute(n,r){if(n.length===0||T(n,{valueFlags:KE}))return LE(+(n.length===0));let i=n[0];return i===`download`?GE(n.slice(1),r,e,t):RE(`unknown subcommand: ${i}`)}}}const JE=/* @__PURE__ */ new Set([`--vid`,`--pid`,`--usage-page`,`--usage`,`--__resolved`,`--timeout`]);function YE(e){return Vn(e,JE)}function XE(e,t){let n=/^0x/i.test(e)?parseInt(e,16):parseInt(e,10);if(!Number.isFinite(n)||Number.isNaN(n))throw Error(`invalid ${t}: '${e}'`);return n}function ZE(e){let t={};return e.has(`--vid`)&&(t.vendorId=XE(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=XE(e.get(`--pid`),`pid`)),e.has(`--usage-page`)&&(t.usagePage=XE(e.get(`--usage-page`),`usage-page`)),e.has(`--usage`)&&(t.usage=XE(e.get(`--usage`),`usage`)),Object.keys(t).length>0?[t]:[]}function QE(e){let t=lr(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function $E(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function eD(e){return e.toString(16).padStart(2,`0`)}function tD(e){return`0x${e.toString(16).padStart(4,`0`)}`}function nD(e){let t=e.productName||`(unknown)`,n=e.opened?` [open]`:``,r=e.usagePage===void 0?``:`\t${tD(e.usagePage)}:${tD(e.usage??0)}`;return`${e.handle}\t${tD(e.vendorId)}:${tD(e.productId)}${r}\t${t}${n}`}function rD(e,t){let n=t?.usagePage,r=t?.usage;if(n===void 0&&r===void 0)return e;let i=e.findIndex(e=>(n===void 0||e.usagePage===n)&&(r===void 0||e.usage===r));if(i<=0)return e;let a=e.slice(),[o]=a.splice(i,1);return a.unshift(o),a}function iD(e){return`${e.map(nD).join(`
1200
+ `)}\n`}function aD(e){return`${eD(e.reportId)} ${$E(e.bytes)}`.trimEnd()}function oD(e){return{stdout:e,stderr:``,exitCode:0}}function W(e){return{stdout:``,stderr:`hid: ${e}\n`,exitCode:1}}const sD=`hid - access HID devices via WebHID
1220
1201
 
1221
1202
  Usage: hid <subcommand> [options]
1222
1203
 
@@ -1240,10 +1221,10 @@ Options:
1240
1221
  -h, --help
1241
1222
 
1242
1223
  Report payloads are capped at ${fi} bytes (4 MiB).
1243
- `;function lD(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return sD(t)}return sD(e.length?`${eD(e)}\n`:``)}function uD(e){return!e||e.aborted?Promise.resolve():new Promise(t=>{e.addEventListener(`abort`,()=>t(),{once:!0})})}async function dD(e){let t=await e.list();return t.length===0?sD(`no granted HID devices
1244
- `):sD(`${t.map(rD).join(`
1245
- `)}\n`)}async function fD(e,t){let n=e.get(`--__resolved`),r=QE(e),i=r[0];if(n){let e=n.split(`,`).filter(e=>e.length>0);return e.length===0?W(`request: missing resolved handle`):sD(aD(iD(await Promise.all(e.map(e=>t.info(e))),i)))}let a=Ve();return a?pD(r,i,a,t):sD(aD(iD(await t.request(r),i)))}async function pD(e,t,n,r){let i=await Yx(`hid-device`,e,n),a,o;if(i.handle){let e=await r.info(i.handle);a=e.vendorId,o=e.productId}else{let e=i.info,t=si();if(!t)return W(`request: WebHID unavailable for device re-acquire`);let n=await t.getDevices(),r=xi(),s=n.filter(t=>t.vendorId===e.vendorId&&t.productId===e.productId);if(s.length===0)return W(`request: granted device could not be re-acquired`);for(let e of s)r.register(e);a=e.vendorId,o=e.productId}let s=(await r.list()).filter(e=>e.vendorId===a&&e.productId===o),c=iD(s.length>0?s:[],t);return c.length===0?W(`request: granted device could not be re-acquired`):sD(aD(c))}async function mD(e,t,n){let r=t[1];return r?(e===`open`?await n.open(r):await n.close(r),sD(``)):W(`${e}: handle required`)}async function hD(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return W(`${e}: handle and report-id required`);let o=ZE(a,`report-id`),s=$E(n);return s.length>4194304?W(`${e} payload exceeds 4 MiB limit`):(e===`send`?await r.sendReport(i,o,s):await r.sendFeatureReport(i,o,s),sD(``))}async function gD(e,t,n){let[,r,i]=e;return!r||i===void 0?W(`feature-get: handle and report-id required`):lD((await t.receiveFeatureReport(r,ZE(i,`report-id`))).bytes,n)}async function _D(e,t,n){let r=e[1];if(!r)return W(`watch: handle required`);let i=[],a=await n.subscribeInputReports(r,e=>{i.push(oD(e))});try{await uD(t.signal)}finally{await a()}return sD(i.length?`${i.join(`
1246
- `)}\n`:``)}async function vD(e,t,n,r,i){let[,a,o]=e;if(!a||o===void 0)return W(`query: handle and report-id required`);let s=ZE(o,`report-id`),c=$E(t);if(c.length>4194304)return W(`query payload exceeds 4 MiB limit`);let l=n.has(`--timeout`)?ZE(n.get(`--timeout`),`timeout`):1e3,u=()=>{},d=new Promise(e=>{u=e}),f=await r.subscribeInputReports(a,e=>{u(e)}),p;try{await r.sendReport(a,s,c);let e=new Promise(e=>{p=setTimeout(()=>e(`timeout`),l)}),t=await Promise.race([d,e]);return t===`timeout`?W(`query: no input report within ${l}ms`):i?lD(t.bytes,!0):sD(`${oD(t)}\n`)}finally{p!==void 0&&clearTimeout(p),await f()}}async function yD(e,t,n){let{positionals:r,flags:i,bools:a}=XE(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return dD(n);case`request`:return fD(i,n);case`open`:case`close`:return mD(o,r,n);case`send`:case`feature-send`:return hD(o,r,t,n);case`feature-get`:return gD(r,n,s);case`watch`:return _D(r,t,n);case`query`:return vD(r,t,i,n,s);default:return W(`unknown subcommand '${o??``}'. Try 'hid --help'.`)}}function bD(){return C(`hid`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return sD(cD);let n=pi(be(),b());if(!n)return W(`WebHID is unavailable in this environment`);try{return await yD(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No device selected/i.test(t)?W(`user cancelled or no device selected`):W(t)}})}const xD=1e3,SD=`usage: id [-u|-g|-G] [-n] [-r] [USER]`,CD=`${SD}
1224
+ `;function cD(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return oD(t)}return oD(e.length?`${$E(e)}\n`:``)}function lD(e){return!e||e.aborted?Promise.resolve():new Promise(t=>{e.addEventListener(`abort`,()=>t(),{once:!0})})}async function uD(e){let t=await e.list();return t.length===0?oD(`no granted HID devices
1225
+ `):oD(`${t.map(nD).join(`
1226
+ `)}\n`)}async function dD(e,t){let n=e.get(`--__resolved`),r=ZE(e),i=r[0];if(n){let e=n.split(`,`).filter(e=>e.length>0);return e.length===0?W(`request: missing resolved handle`):oD(iD(rD(await Promise.all(e.map(e=>t.info(e))),i)))}let a=Ve();return a?fD(r,i,a,t):oD(iD(rD(await t.request(r),i)))}async function fD(e,t,n,r){let i=await Yx(`hid-device`,e,n),a,o;if(i.handle){let e=await r.info(i.handle);a=e.vendorId,o=e.productId}else{let e=i.info,t=si();if(!t)return W(`request: WebHID unavailable for device re-acquire`);let n=await t.getDevices(),r=xi(),s=n.filter(t=>t.vendorId===e.vendorId&&t.productId===e.productId);if(s.length===0)return W(`request: granted device could not be re-acquired`);for(let e of s)r.register(e);a=e.vendorId,o=e.productId}let s=(await r.list()).filter(e=>e.vendorId===a&&e.productId===o),c=rD(s.length>0?s:[],t);return c.length===0?W(`request: granted device could not be re-acquired`):oD(iD(c))}async function pD(e,t,n){let r=t[1];return r?(e===`open`?await n.open(r):await n.close(r),oD(``)):W(`${e}: handle required`)}async function mD(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return W(`${e}: handle and report-id required`);let o=XE(a,`report-id`),s=QE(n);return s.length>4194304?W(`${e} payload exceeds 4 MiB limit`):(e===`send`?await r.sendReport(i,o,s):await r.sendFeatureReport(i,o,s),oD(``))}async function hD(e,t,n){let[,r,i]=e;return!r||i===void 0?W(`feature-get: handle and report-id required`):cD((await t.receiveFeatureReport(r,XE(i,`report-id`))).bytes,n)}async function gD(e,t,n){let r=e[1];if(!r)return W(`watch: handle required`);let i=[],a=await n.subscribeInputReports(r,e=>{i.push(aD(e))});try{await lD(t.signal)}finally{await a()}return oD(i.length?`${i.join(`
1227
+ `)}\n`:``)}async function _D(e,t,n,r,i){let[,a,o]=e;if(!a||o===void 0)return W(`query: handle and report-id required`);let s=XE(o,`report-id`),c=QE(t);if(c.length>4194304)return W(`query payload exceeds 4 MiB limit`);let l=n.has(`--timeout`)?XE(n.get(`--timeout`),`timeout`):1e3,u=()=>{},d=new Promise(e=>{u=e}),f=await r.subscribeInputReports(a,e=>{u(e)}),p;try{await r.sendReport(a,s,c);let e=new Promise(e=>{p=setTimeout(()=>e(`timeout`),l)}),t=await Promise.race([d,e]);return t===`timeout`?W(`query: no input report within ${l}ms`):i?cD(t.bytes,!0):oD(`${aD(t)}\n`)}finally{p!==void 0&&clearTimeout(p),await f()}}async function vD(e,t,n){let{positionals:r,flags:i,bools:a}=YE(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return uD(n);case`request`:return dD(i,n);case`open`:case`close`:return pD(o,r,n);case`send`:case`feature-send`:return mD(o,r,t,n);case`feature-get`:return hD(r,n,s);case`watch`:return gD(r,t,n);case`query`:return _D(r,t,i,n,s);default:return W(`unknown subcommand '${o??``}'. Try 'hid --help'.`)}}function yD(){return C(`hid`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return oD(sD);let n=pi(be(),b());if(!n)return W(`WebHID is unavailable in this environment`);try{return await vD(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No device selected/i.test(t)?W(`user cancelled or no device selected`):W(t)}})}const bD=1e3,xD=`usage: id [-u|-g|-G] [-n] [-r] [USER]`,SD=`${xD}
1247
1228
 
1248
1229
  Print the user and group identity of this SLICC runtime.
1249
1230
 
@@ -1258,22 +1239,22 @@ Options:
1258
1239
  --version Print the SLICC build.
1259
1240
 
1260
1241
  Identity comes from the home directory, which is where the rest of the shell
1261
- gets it too. A cone is the human user (uid ${xD}, one per runtime, since every
1242
+ gets it too. A cone is the human user (uid ${bD}, one per runtime, since every
1262
1243
  cone shares one home); a scoop is a service identity whose uid is derived from
1263
1244
  its folder name, so it is stable across reloads and distinct per scoop.
1264
1245
  Every user is in a user-private group of the same name, plus the role group
1265
1246
  \`cone\` (10) or \`scoop\` (20).
1266
- `,wD=`/scoops/`;function TD(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return 2e3+t%58e3}function ED(e,t){return{name:e,uid:t===`cone`?xD:TD(e),role:t}}function DD(e){return[{gid:e.uid,name:e.name},e.role===`cone`?{gid:10,name:`cone`}:{gid:20,name:`scoop`}]}function OD(e,t){return`${e}(${t})`}function kD(e){let t=DD(e),n=t[0];return`uid=${OD(e.uid,e.name)} gid=${OD(n.gid,n.name)} groups=${t.map(e=>OD(e.gid,e.name)).join(`,`)}\n`}async function AD(e){let t=e.env.get(`HOME`)??``,n=t.startsWith(wD)?`scoop`:`cone`,r=e.env.get(`USER`)||jD(t,n);return r?ED(r,n):ED(hr(await gr(MD(e.fs))),`cone`)}function jD(e,t){return e===``?``:t===`cone`?hr(e):e.slice(8).split(`/`)[0]??``}function MD(e){return{readDir:async t=>(await e.readdirWithFileTypes?.(t)??[]).map(e=>({name:e.name,type:e.isDirectory?`directory`:`file`})),stat:async t=>({mtime:(await e.stat(t)).mtime.getTime()})}}async function ND(e,t){return await e.fs.exists(`/home/${t}`).catch(()=>!1)?ED(t,`cone`):await e.fs.exists(`${wD}${t}`).catch(()=>!1)?ED(t,`scoop`):null}function PD(e){let t={select:`all`,names:!1,mode:`run`},n=[];for(let r of e){if(r===`--help`||r===`-h`)return{...t,mode:`help`};if(r===`--version`)return{...t,mode:`version`};let e=ID[r];if(e){e(t);continue}if(r.length>1&&r.startsWith(`-`)){for(let e of r.slice(1)){let n=FD[e];if(!n)return{error:`unrecognized option '-${e}'`};n(t)}continue}n.push(r)}return n.length>1?{error:`extra operand '${n[1]}'`}:(n[0]!==void 0&&(t.operand=n[0]),t.names&&t.select===`all`?{error:`cannot print only names in default format`}:t)}const FD={u:e=>{e.select=`user`},g:e=>{e.select=`group`},G:e=>{e.select=`groups`},n:e=>{e.names=!0},r:()=>void 0},ID={"--user":FD.u,"--group":FD.g,"--groups":FD.G,"--name":FD.n,"--real":FD.r};function LD(e,t){let n=DD(e),r=(e,n)=>t.names?n:String(e);switch(t.select){case`user`:return`${r(e.uid,e.name)}\n`;case`group`:return`${r(n[0].gid,n[0].name)}\n`;case`groups`:return`${n.map(e=>r(e.gid,e.name)).join(` `)}\n`;case`all`:return kD(e)}}function RD(){return C(`id`,async(e,t)=>{let n=PD(e);if(`error`in n)return{stdout:``,stderr:`id: ${n.error}\n${SD}\n`,exitCode:1};if(n.mode===`help`)return BD(CD);if(n.mode===`version`)return BD(`id (SLICC) ${lt().version}\n`);let r=n.operand===void 0?await AD(t):await ND(t,n.operand);return r?BD(LD(r,n)):{stdout:``,stderr:`id: '${n.operand}': no such user\n`,exitCode:1}})}function zD(){return C(`whoami`,async(e,t)=>BD(`${(await AD(t)).name}\n`))}function BD(e){return{stdout:e,stderr:``,exitCode:0}}function VD(){return{stdout:`imgcat - preview image and video files in the preview tab
1247
+ `,CD=`/scoops/`;function wD(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return 2e3+t%58e3}function TD(e,t){return{name:e,uid:t===`cone`?bD:wD(e),role:t}}function ED(e){return[{gid:e.uid,name:e.name},e.role===`cone`?{gid:10,name:`cone`}:{gid:20,name:`scoop`}]}function DD(e,t){return`${e}(${t})`}function OD(e){let t=ED(e),n=t[0];return`uid=${DD(e.uid,e.name)} gid=${DD(n.gid,n.name)} groups=${t.map(e=>DD(e.gid,e.name)).join(`,`)}\n`}async function kD(e){let t=e.env.get(`HOME`)??``,n=t.startsWith(CD)?`scoop`:`cone`,r=e.env.get(`USER`)||AD(t,n);return r?TD(r,n):TD(hr(await gr(jD(e.fs))),`cone`)}function AD(e,t){return e===``?``:t===`cone`?hr(e):e.slice(8).split(`/`)[0]??``}function jD(e){return{readDir:async t=>(await e.readdirWithFileTypes?.(t)??[]).map(e=>({name:e.name,type:e.isDirectory?`directory`:`file`})),stat:async t=>({mtime:(await e.stat(t)).mtime.getTime()})}}async function MD(e,t){return await e.fs.exists(`/home/${t}`).catch(()=>!1)?TD(t,`cone`):await e.fs.exists(`${CD}${t}`).catch(()=>!1)?TD(t,`scoop`):null}function ND(e){let t={select:`all`,names:!1,mode:`run`},n=[];for(let r of e){if(r===`--help`||r===`-h`)return{...t,mode:`help`};if(r===`--version`)return{...t,mode:`version`};let e=FD[r];if(e){e(t);continue}if(r.length>1&&r.startsWith(`-`)){for(let e of r.slice(1)){let n=PD[e];if(!n)return{error:`unrecognized option '-${e}'`};n(t)}continue}n.push(r)}return n.length>1?{error:`extra operand '${n[1]}'`}:(n[0]!==void 0&&(t.operand=n[0]),t.names&&t.select===`all`?{error:`cannot print only names in default format`}:t)}const PD={u:e=>{e.select=`user`},g:e=>{e.select=`group`},G:e=>{e.select=`groups`},n:e=>{e.names=!0},r:()=>void 0},FD={"--user":PD.u,"--group":PD.g,"--groups":PD.G,"--name":PD.n,"--real":PD.r};function ID(e,t){let n=ED(e),r=(e,n)=>t.names?n:String(e);switch(t.select){case`user`:return`${r(e.uid,e.name)}\n`;case`group`:return`${r(n[0].gid,n[0].name)}\n`;case`groups`:return`${n.map(e=>r(e.gid,e.name)).join(` `)}\n`;case`all`:return OD(e)}}function LD(){return C(`id`,async(e,t)=>{let n=ND(e);if(`error`in n)return{stdout:``,stderr:`id: ${n.error}\n${xD}\n`,exitCode:1};if(n.mode===`help`)return zD(SD);if(n.mode===`version`)return zD(`id (SLICC) ${lt().version}\n`);let r=n.operand===void 0?await kD(t):await MD(t,n.operand);return r?zD(ID(r,n)):{stdout:``,stderr:`id: '${n.operand}': no such user\n`,exitCode:1}})}function RD(){return C(`whoami`,async(e,t)=>zD(`${(await kD(t)).name}\n`))}function zD(e){return{stdout:e,stderr:``,exitCode:0}}function BD(){return{stdout:`imgcat - preview image and video files in the preview tab
1267
1248
 
1268
1249
  Usage: imgcat <path> [path...]
1269
1250
 
1270
1251
  Options:
1271
1252
  -h, --help Show this help message
1272
- `,stderr:``,exitCode:0}}function HD(e={}){return C(`imgcat`,async(t,n)=>{if(t.length===0||T(t))return VD();let r=w(t);if(`error`in r)return{stdout:``,stderr:`imgcat: ${r.error}\n`,exitCode:1};if(r.positionals.length===0)return VD();if(!e.onMediaPreview)return{stdout:``,stderr:`imgcat: terminal preview is unavailable
1273
- `,exitCode:1};let i=[];for(let e of r.positionals){let t=n.fs.resolvePath(n.cwd,e);if(!(await n.fs.stat(t)).isFile)return{stdout:``,stderr:`imgcat: not a file: ${e}\n`,exitCode:1};let r=Le(t);if(!Ie(r))return{stdout:``,stderr:`imgcat: unsupported media type: ${e}\n`,exitCode:1};let a=await n.fs.readFileBuffer(t),o=new Uint8Array(a.byteLength);o.set(a),i.push({path:t,mimeType:r,bytes:o})}try{return await e.onMediaPreview(i),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`imgcat: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}const UD=/* @__PURE__ */ new Set([`run`,`run-script`]),WD=/* @__PURE__ */ new Set([`test`,`start`,`stop`,`restart`]),GD=/* @__PURE__ */ new Set([` `,` `,`
1274
- `,`;`,`|`,`&`,`(`,`)`,`{`,`}`,`<`,`>`]),KD=/* @__PURE__ */ new Set([`;`,`|`,`&`,`(`,`)`,`{`,`
1275
- `]),qD=/^[A-Za-z_][A-Za-z0-9_]*=/,JD=/^[@A-Za-z0-9._-]+$/,YD=/* @__PURE__ */ new Set([`if`,`then`,`else`,`elif`,`fi`,`for`,`while`,`until`,`do`,`done`,`case`,`in`,`esac`,`function`,`time`,`!`]),XD=/* @__PURE__ */ new Set([`if`,`then`,`else`,`elif`,`while`,`until`,`do`,`time`,`!`]),ZD=/* @__PURE__ */ new Set([`ipx`,`npx`]);function QD(e){return`'${e.replace(/'/g,`'\\''`)}'`}async function $D(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}function*eO(e){let t=x(e);for(;yield t,t!==`/`;)t=Ge(t).dir}function tO(e){if(typeof e!=`object`||!e)return{};let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}function nO(e){return typeof e==`string`?e:void 0}async function rO(e,t){for(let n of eO(t)){let t=S(n,`package.json`);if(!await e.exists(t))continue;let r;try{r=JSON.parse(await $D(e,t))}catch(e){throw Error(`${t} is not valid JSON: ${e instanceof Error?e.message:String(e)}`)}return{dir:n,name:nO(r.name),version:nO(r.version),scripts:tO(r.scripts)}}return null}function iO(e,t){let n=t,r=``;for(;n<e.length;){let t=e[n];if(r!==``){t===`\\`&&r===`"`?n++:t===r&&(r=``),n++;continue}if(t===`'`||t===`"`){r=t,n++;continue}if(t===`\\`){n+=2;continue}if(GD.has(t))break;n++}return{start:t,end:n,text:e.slice(t,n)}}function aO(e){let t=[],n=0,r=!0;for(;n<e.length;){let i=e[n];if(i===` `||i===` `){n++;continue}if(KD.has(i)){r=!0,n++;continue}let a=iO(e,n);if(a.end===a.start){n++;continue}if(r&&!qD.test(a.text)){if(XD.has(a.text)){n=a.end;continue}t.push(a),r=!1}n=a.end}return t}function oO(e,t){return!JD.test(e)||YD.has(e)||ZD.has(e)?!1:!t.isRegistered(e)}async function sO(e,t){let n=aO(e).filter(e=>oO(e.text,t));if(n.length===0)return e;let r=[];for(let e of n)await t.hasLocalBin(e.text)&&r.push(e);if(r.length===0)return e;let i=e;for(let e of[...r].reverse())i=`${i.slice(0,e.start)}ipx ${i.slice(e.start)}`;return i}function cO(e){let t=[];for(let n of eO(e))t.push(S(n,`node_modules`,`.bin`));return t}function lO(e,t,n,r){let i=r.env.get(`PATH`)??``,a={PATH:[...cO(e.dir),i].filter(e=>e!==``).join(`:`),npm_lifecycle_event:t,npm_lifecycle_script:n};return e.name!==void 0&&(a.npm_package_name=e.name),e.version!==void 0&&(a.npm_package_version=e.version),a}function uO(e){return e.name===void 0?e.dir:e.version===void 0?e.name:`${e.name}@${e.version}`}function dO(e,t){let n=Object.entries(t.scripts);if(n.length===0)return`${e}: no scripts defined in ${S(t.dir,`package.json`)}\n`;let r=[`Scripts available in ${uO(t)} via \`${e} run\`:`];for(let[e,t]of n)r.push(` ${e}`),r.push(` ${t}`);return`${r.join(`
1276
- `)}\n`}function fO(e,t){return t===`--silent`||t===`-s`?(e.silent=!0,!0):t===`--if-present`&&(e.ifPresent=!0,!0)}function pO(e){let t={silent:!1,ifPresent:!1},n=[],r,i=!1;for(let a of e){if(i){n.push(a);continue}if(a===`--`){i=!0;continue}fO(t,a)||(r===void 0?r=a:n.push(a))}return{flags:t,script:r,extraArgs:n}}function mO(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}function hO(e,t,n,r){let i=r.length>0?` ${r.map(QD).join(` `)}`:``,a=[],o=e.scripts[`pre${t}`];o!==void 0&&a.push({event:`pre${t}`,body:o}),a.push({event:t,body:`${n}${i}`});let s=e.scripts[`post${t}`];return s!==void 0&&a.push({event:`post${t}`,body:s}),a}async function gO(e,t,n,r){if(n===`start`&&await r.exists(S(t.dir,`server.js`)))return`node server.js`;if(n===`restart`)return`${e} stop --if-present && ${e} start`}function _O(e,t,n){let r=new Set(n.getRegisteredCommands?.()??[]);return{isRegistered:e=>r.has(e),hasLocalBin:async n=>{for(let r of cO(t.dir))if(await e.exists(S(r,n)))return!0;return!1}}}async function vO(e,t,n,r,i,a){let o=i.exec;if(!o)return mO(e,`run requires shell exec support, which this context does not provide`);let s=_O(a.fs,t,i),c=uO(t),l=``,u=``;for(let a of n){r.silent||(l+=`\n> ${c} ${a.event}\n> ${a.body}\n\n`);let n=await o(await sO(a.body,s),{cwd:t.dir,env:lO(t,a.event,a.body,i),stdin:lr(i.stdin),stdinKind:`bytes`});if(l+=n.stdout,u+=n.stderr,n.exitCode!==0)return u+=`${e}: script '${a.event}' exited with code ${n.exitCode}\n`,{stdout:l,stderr:u,exitCode:n.exitCode}}return{stdout:l,stderr:u,exitCode:0}}async function yO(e,t,n,r){let i;try{i=await rO(r.fs,n.cwd)}catch(t){return mO(e,t instanceof Error?t.message:String(t))}if(!i)return mO(e,`no package.json found in ${n.cwd} or any parent directory — nothing to run`);let{flags:a,script:o,extraArgs:s}=pO(t);if(o===void 0)return{stdout:dO(e,i),stderr:``,exitCode:0};let c=i.scripts[o]??await gO(e,i,o,r.fs)??void 0;if(c===void 0){if(a.ifPresent)return{stdout:``,stderr:``,exitCode:0};let t=Object.keys(i.scripts);return mO(e,`missing script: ${o}${t.length>0?` (available: ${t.join(`, `)})`:` (${S(i.dir,`package.json`)} defines no scripts)`}`)}return vO(e,i,hO(i,o,c,s),a,n,r)}const bO=()=>import(`./installer-BqmKzwYP.js`),xO=/* @__PURE__ */ new Set([`install`,`i`,`add`]),SO=/* @__PURE__ */ new Set([`uninstall`,`remove`,`rm`,`un`]),CO=/* @__PURE__ */ new Set([`list`,`ls`]),wO=/* @__PURE__ */ new Set([`-g`,`--global`,`--location=global`]),TO=[`-g`,`--global`,`-D`,`--save-dev`];function EO(e){return`${e} - install packages from the npm registry into node_modules
1253
+ `,stderr:``,exitCode:0}}function VD(e={}){return C(`imgcat`,async(t,n)=>{if(t.length===0||T(t))return BD();let r=w(t);if(`error`in r)return{stdout:``,stderr:`imgcat: ${r.error}\n`,exitCode:1};if(r.positionals.length===0)return BD();if(!e.onMediaPreview)return{stdout:``,stderr:`imgcat: terminal preview is unavailable
1254
+ `,exitCode:1};let i=[];for(let e of r.positionals){let t=n.fs.resolvePath(n.cwd,e);if(!(await n.fs.stat(t)).isFile)return{stdout:``,stderr:`imgcat: not a file: ${e}\n`,exitCode:1};let r=Le(t);if(!Ie(r))return{stdout:``,stderr:`imgcat: unsupported media type: ${e}\n`,exitCode:1};let a=await n.fs.readFileBuffer(t),o=new Uint8Array(a.byteLength);o.set(a),i.push({path:t,mimeType:r,bytes:o})}try{return await e.onMediaPreview(i),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`imgcat: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}const HD=/* @__PURE__ */ new Set([`run`,`run-script`]),UD=/* @__PURE__ */ new Set([`test`,`start`,`stop`,`restart`]),WD=/* @__PURE__ */ new Set([` `,` `,`
1255
+ `,`;`,`|`,`&`,`(`,`)`,`{`,`}`,`<`,`>`]),GD=/* @__PURE__ */ new Set([`;`,`|`,`&`,`(`,`)`,`{`,`
1256
+ `]),KD=/^[A-Za-z_][A-Za-z0-9_]*=/,qD=/^[@A-Za-z0-9._-]+$/,JD=/* @__PURE__ */ new Set([`if`,`then`,`else`,`elif`,`fi`,`for`,`while`,`until`,`do`,`done`,`case`,`in`,`esac`,`function`,`time`,`!`]),YD=/* @__PURE__ */ new Set([`if`,`then`,`else`,`elif`,`while`,`until`,`do`,`time`,`!`]),XD=/* @__PURE__ */ new Set([`ipx`,`npx`]);function ZD(e){return`'${e.replace(/'/g,`'\\''`)}'`}async function QD(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}function*$D(e){let t=x(e);for(;yield t,t!==`/`;)t=Ge(t).dir}function eO(e){if(typeof e!=`object`||!e)return{};let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}function tO(e){return typeof e==`string`?e:void 0}async function nO(e,t){for(let n of $D(t)){let t=S(n,`package.json`);if(!await e.exists(t))continue;let r;try{r=JSON.parse(await QD(e,t))}catch(e){throw Error(`${t} is not valid JSON: ${e instanceof Error?e.message:String(e)}`)}return{dir:n,name:tO(r.name),version:tO(r.version),scripts:eO(r.scripts)}}return null}function rO(e,t){let n=t,r=``;for(;n<e.length;){let t=e[n];if(r!==``){t===`\\`&&r===`"`?n++:t===r&&(r=``),n++;continue}if(t===`'`||t===`"`){r=t,n++;continue}if(t===`\\`){n+=2;continue}if(WD.has(t))break;n++}return{start:t,end:n,text:e.slice(t,n)}}function iO(e){let t=[],n=0,r=!0;for(;n<e.length;){let i=e[n];if(i===` `||i===` `){n++;continue}if(GD.has(i)){r=!0,n++;continue}let a=rO(e,n);if(a.end===a.start){n++;continue}if(r&&!KD.test(a.text)){if(YD.has(a.text)){n=a.end;continue}t.push(a),r=!1}n=a.end}return t}function aO(e,t){return!qD.test(e)||JD.has(e)||XD.has(e)?!1:!t.isRegistered(e)}async function oO(e,t){let n=iO(e).filter(e=>aO(e.text,t));if(n.length===0)return e;let r=[];for(let e of n)await t.hasLocalBin(e.text)&&r.push(e);if(r.length===0)return e;let i=e;for(let e of[...r].reverse())i=`${i.slice(0,e.start)}ipx ${i.slice(e.start)}`;return i}function sO(e){let t=[];for(let n of $D(e))t.push(S(n,`node_modules`,`.bin`));return t}function cO(e,t,n,r){let i=r.env.get(`PATH`)??``,a={PATH:[...sO(e.dir),i].filter(e=>e!==``).join(`:`),npm_lifecycle_event:t,npm_lifecycle_script:n};return e.name!==void 0&&(a.npm_package_name=e.name),e.version!==void 0&&(a.npm_package_version=e.version),a}function lO(e){return e.name===void 0?e.dir:e.version===void 0?e.name:`${e.name}@${e.version}`}function uO(e,t){let n=Object.entries(t.scripts);if(n.length===0)return`${e}: no scripts defined in ${S(t.dir,`package.json`)}\n`;let r=[`Scripts available in ${lO(t)} via \`${e} run\`:`];for(let[e,t]of n)r.push(` ${e}`),r.push(` ${t}`);return`${r.join(`
1257
+ `)}\n`}function dO(e,t){return t===`--silent`||t===`-s`?(e.silent=!0,!0):t===`--if-present`&&(e.ifPresent=!0,!0)}function fO(e){let t={silent:!1,ifPresent:!1},n=[],r,i=!1;for(let a of e){if(i){n.push(a);continue}if(a===`--`){i=!0;continue}dO(t,a)||(r===void 0?r=a:n.push(a))}return{flags:t,script:r,extraArgs:n}}function pO(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}function mO(e,t,n,r){let i=r.length>0?` ${r.map(ZD).join(` `)}`:``,a=[],o=e.scripts[`pre${t}`];o!==void 0&&a.push({event:`pre${t}`,body:o}),a.push({event:t,body:`${n}${i}`});let s=e.scripts[`post${t}`];return s!==void 0&&a.push({event:`post${t}`,body:s}),a}async function hO(e,t,n,r){if(n===`start`&&await r.exists(S(t.dir,`server.js`)))return`node server.js`;if(n===`restart`)return`${e} stop --if-present && ${e} start`}function gO(e,t,n){let r=new Set(n.getRegisteredCommands?.()??[]);return{isRegistered:e=>r.has(e),hasLocalBin:async n=>{for(let r of sO(t.dir))if(await e.exists(S(r,n)))return!0;return!1}}}async function _O(e,t,n,r,i,a){let o=i.exec;if(!o)return pO(e,`run requires shell exec support, which this context does not provide`);let s=gO(a.fs,t,i),c=lO(t),l=``,u=``;for(let a of n){r.silent||(l+=`\n> ${c} ${a.event}\n> ${a.body}\n\n`);let n=await o(await oO(a.body,s),{cwd:t.dir,env:cO(t,a.event,a.body,i),stdin:lr(i.stdin),stdinKind:`bytes`});if(l+=n.stdout,u+=n.stderr,n.exitCode!==0)return u+=`${e}: script '${a.event}' exited with code ${n.exitCode}\n`,{stdout:l,stderr:u,exitCode:n.exitCode}}return{stdout:l,stderr:u,exitCode:0}}async function vO(e,t,n,r){let i;try{i=await nO(r.fs,n.cwd)}catch(t){return pO(e,t instanceof Error?t.message:String(t))}if(!i)return pO(e,`no package.json found in ${n.cwd} or any parent directory — nothing to run`);let{flags:a,script:o,extraArgs:s}=fO(t);if(o===void 0)return{stdout:uO(e,i),stderr:``,exitCode:0};let c=i.scripts[o]??await hO(e,i,o,r.fs)??void 0;if(c===void 0){if(a.ifPresent)return{stdout:``,stderr:``,exitCode:0};let t=Object.keys(i.scripts);return pO(e,`missing script: ${o}${t.length>0?` (available: ${t.join(`, `)})`:` (${S(i.dir,`package.json`)} defines no scripts)`}`)}return _O(e,i,mO(i,o,c,s),a,n,r)}const yO=()=>import(`./installer-BqmKzwYP.js`),bO=/* @__PURE__ */ new Set([`install`,`i`,`add`]),xO=/* @__PURE__ */ new Set([`uninstall`,`remove`,`rm`,`un`]),SO=/* @__PURE__ */ new Set([`list`,`ls`]),CO=/* @__PURE__ */ new Set([`-g`,`--global`,`--location=global`]),wO=[`-g`,`--global`,`-D`,`--save-dev`];function TO(e){return`${e} - install packages from the npm registry into node_modules
1277
1258
  and run package.json scripts; also install conda/emscripten-forge
1278
1259
  packages via '${e} mamba'
1279
1260
 
@@ -1354,17 +1335,17 @@ be pruned, so it is replaced by the best match, with an ERESOLVE "replacing
1354
1335
  peer dependency" warning.
1355
1336
  Existing fields are preserved. Idempotent: re-installing an already-satisfied package is a clean
1356
1337
  no-op.
1357
- `}function DO(e){let t=w(e,{bool:TO,value:[`--location`]});if(`error`in t)return t;let n=t.values.get(`--location`);return n!==void 0&&n!==`global`?{error:`unknown flag: --location=${n}`}:{global:t.bools.has(`-g`)||t.bools.has(`--global`)||n===`global`,saveDev:t.bools.has(`-D`)||t.bools.has(`--save-dev`),specs:t.positionals}}function OO(e){let t=!1,n=[];for(let r of e){if(wO.has(r)){t=!0;continue}r.startsWith(`-`)||n.push(r)}return{global:t,specs:n}}function kO(e){return T(e)}function AO(e){return e instanceof Error?e.message:String(e)}async function jO(e){e.scriptCatalog?.invalidateJsh(),await e.syncScriptCommands?.()}function MO(e,t){let n=e===`i`;return C(e,async(r,i)=>{if(n)return kO(r)?{stdout:EO(e),stderr:``,exitCode:0}:PO(e,r,i,t);if(r[0]===`mamba`){let{runIpkMamba:n}=await import(`./ipk-mamba-zIKziGDb.js`);return n(e,r.slice(1),i,t)}if(kO(r))return{stdout:EO(e),stderr:``,exitCode:0};if(r.length===0)return{stdout:EO(e),stderr:`${e}: missing subcommand\n`,exitCode:1};let a=r[0],o=r.slice(1);return xO.has(a)?PO(e,o,i,t):SO.has(a)?IO(e,o,i,t):CO.has(a)?LO(e,o,i,t):a===`root`?RO(e,o,i,t):UD.has(a)?yO(e,o,i,{fs:t.fs}):WD.has(a)?yO(e,r,i,{fs:t.fs}):{stdout:``,stderr:`${e}: unknown subcommand '${a}' (supported: install, uninstall, list, root, run, mamba)\n`,exitCode:1}})}async function NO(e,t,n){let{installFromManifest:r,ManifestNotFoundError:i}=await bO(),a;try{a=await r({fs:n.fs,fetch:n.fetch,cwd:t.cwd})}catch(t){return t instanceof i?{stdout:``,stderr:`${e}: ${t.message}\n`,exitCode:1}:{stdout:``,stderr:`${e}: install failed: ${AO(t)}\n`,exitCode:1}}if(a.empty&&a.errors.length===0)return{stdout:`${e}: nothing to install (package.json declares no dependencies)\n`,stderr:``,exitCode:0};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),s=[...(a.notes??[]).map(t=>`${e}: ${t}`),...a.errors.map(t=>`${e}: failed to install ${t.spec}: ${AO(t.error)}`)];return{stdout:o.length>0?`${o.join(`
1338
+ `}function EO(e){let t=w(e,{bool:wO,value:[`--location`]});if(`error`in t)return t;let n=t.values.get(`--location`);return n!==void 0&&n!==`global`?{error:`unknown flag: --location=${n}`}:{global:t.bools.has(`-g`)||t.bools.has(`--global`)||n===`global`,saveDev:t.bools.has(`-D`)||t.bools.has(`--save-dev`),specs:t.positionals}}function DO(e){let t=!1,n=[];for(let r of e){if(CO.has(r)){t=!0;continue}r.startsWith(`-`)||n.push(r)}return{global:t,specs:n}}function OO(e){return T(e)}function kO(e){return e instanceof Error?e.message:String(e)}async function AO(e){e.scriptCatalog?.invalidateJsh(),await e.syncScriptCommands?.()}function jO(e,t){let n=e===`i`;return C(e,async(r,i)=>{if(n)return OO(r)?{stdout:TO(e),stderr:``,exitCode:0}:NO(e,r,i,t);if(r[0]===`mamba`){let{runIpkMamba:n}=await import(`./ipk-mamba-zIKziGDb.js`);return n(e,r.slice(1),i,t)}if(OO(r))return{stdout:TO(e),stderr:``,exitCode:0};if(r.length===0)return{stdout:TO(e),stderr:`${e}: missing subcommand\n`,exitCode:1};let a=r[0],o=r.slice(1);return bO.has(a)?NO(e,o,i,t):xO.has(a)?FO(e,o,i,t):SO.has(a)?IO(e,o,i,t):a===`root`?LO(e,o,i,t):HD.has(a)?vO(e,o,i,{fs:t.fs}):UD.has(a)?vO(e,r,i,{fs:t.fs}):{stdout:``,stderr:`${e}: unknown subcommand '${a}' (supported: install, uninstall, list, root, run, mamba)\n`,exitCode:1}})}async function MO(e,t,n){let{installFromManifest:r,ManifestNotFoundError:i}=await yO(),a;try{a=await r({fs:n.fs,fetch:n.fetch,cwd:t.cwd})}catch(t){return t instanceof i?{stdout:``,stderr:`${e}: ${t.message}\n`,exitCode:1}:{stdout:``,stderr:`${e}: install failed: ${kO(t)}\n`,exitCode:1}}if(a.empty&&a.errors.length===0)return{stdout:`${e}: nothing to install (package.json declares no dependencies)\n`,stderr:``,exitCode:0};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),s=[...(a.notes??[]).map(t=>`${e}: ${t}`),...a.errors.map(t=>`${e}: failed to install ${t.spec}: ${kO(t.error)}`)];return{stdout:o.length>0?`${o.join(`
1358
1339
  `)}\n`:``,stderr:s.length>0?`${s.join(`
1359
- `)}\n`:``,exitCode:a.errors.length===0?0:1}}async function PO(e,t,n,r){let i=DO(t);if(`error`in i)return{stdout:``,stderr:`${e}: ${i.error}\n`,exitCode:1};let{global:a,saveDev:o,specs:s}=i;if(a&&s.length===0)return{stdout:``,stderr:`${e}: global install requires at least one package name\n`,exitCode:1};if(s.length===0)return NO(e,n,r);let{installPackages:c}=await bO(),l;try{l=await c(s,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:a,saveDev:o})}catch(t){return{stdout:``,stderr:`${e}: install failed: ${AO(t)}\n`,exitCode:1}}let u=l.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),d=[...(l.notes??[]).map(t=>`${e}: ${t}`),...l.errors.map(t=>`${e}: failed to install ${t.spec}: ${AO(t.error)}`)];return a&&l.results.length>0&&await jO(r),{stdout:u.length>0?`${u.join(`
1340
+ `)}\n`:``,exitCode:a.errors.length===0?0:1}}async function NO(e,t,n,r){let i=EO(t);if(`error`in i)return{stdout:``,stderr:`${e}: ${i.error}\n`,exitCode:1};let{global:a,saveDev:o,specs:s}=i;if(a&&s.length===0)return{stdout:``,stderr:`${e}: global install requires at least one package name\n`,exitCode:1};if(s.length===0)return MO(e,n,r);let{installPackages:c}=await yO(),l;try{l=await c(s,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:a,saveDev:o})}catch(t){return{stdout:``,stderr:`${e}: install failed: ${kO(t)}\n`,exitCode:1}}let u=l.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),d=[...(l.notes??[]).map(t=>`${e}: ${t}`),...l.errors.map(t=>`${e}: failed to install ${t.spec}: ${kO(t.error)}`)];return a&&l.results.length>0&&await AO(r),{stdout:u.length>0?`${u.join(`
1360
1341
  `)}\n`:``,stderr:d.length>0?`${d.join(`
1361
- `)}\n`:``,exitCode:l.errors.length===0?0:1}}function FO(e,t){if(t.length===0)return`${e}\n└── (empty)\n`;let n=[`${e}`];for(let e=0;e<t.length;e++){let r=e===t.length-1?`└──`:`├──`;n.push(`${r} ${t[e].name}@${t[e].version}`)}return`${n.join(`
1362
- `)}\n`}async function IO(e,t,n,r){let{global:i,specs:a}=OO(t);if(a.length===0)return{stdout:``,stderr:`${e}: uninstall requires at least one package name\n`,exitCode:1};let{uninstallPackages:o}=await bO(),s;try{s=await o(a,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:i})}catch(t){return{stdout:``,stderr:`${e}: uninstall failed: ${AO(t)}\n`,exitCode:1}}let c=s.results.filter(e=>e.removed).map(t=>`${e}: removed ${t.name}`),l=s.results.filter(e=>!e.removed).map(e=>e.name),u=[...(s.notes??[]).map(t=>`${e}: ${t}`),...s.errors.map(t=>`${e}: failed to uninstall ${t.spec}: ${AO(t.error)}`)];l.length>0&&u.push(`${e}: ${l.join(`, `)} not installed${i?` globally`:``}`);let d=s.errors.length>0;return i&&await jO(r),{stdout:c.length>0?`${c.join(`
1342
+ `)}\n`:``,exitCode:l.errors.length===0?0:1}}function PO(e,t){if(t.length===0)return`${e}\n└── (empty)\n`;let n=[`${e}`];for(let e=0;e<t.length;e++){let r=e===t.length-1?`└──`:`├──`;n.push(`${r} ${t[e].name}@${t[e].version}`)}return`${n.join(`
1343
+ `)}\n`}async function FO(e,t,n,r){let{global:i,specs:a}=DO(t);if(a.length===0)return{stdout:``,stderr:`${e}: uninstall requires at least one package name\n`,exitCode:1};let{uninstallPackages:o}=await yO(),s;try{s=await o(a,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:i})}catch(t){return{stdout:``,stderr:`${e}: uninstall failed: ${kO(t)}\n`,exitCode:1}}let c=s.results.filter(e=>e.removed).map(t=>`${e}: removed ${t.name}`),l=s.results.filter(e=>!e.removed).map(e=>e.name),u=[...(s.notes??[]).map(t=>`${e}: ${t}`),...s.errors.map(t=>`${e}: failed to uninstall ${t.spec}: ${kO(t.error)}`)];l.length>0&&u.push(`${e}: ${l.join(`, `)} not installed${i?` globally`:``}`);let d=s.errors.length>0;return i&&await AO(r),{stdout:c.length>0?`${c.join(`
1363
1344
  `)}\n`:``,stderr:u.length>0?`${u.join(`
1364
- `)}\n`:``,exitCode:+!!d}}async function LO(e,t,n,r){let{global:i}=OO(t);try{let{listGlobalPackages:e,listLocalPackages:t}=await bO(),a=i?await e(r.fs):await t(r.fs,n.cwd);return{stdout:FO(i?vr:n.cwd,a),stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: list failed: ${AO(t)}\n`,exitCode:1}}}async function RO(e,t,n,r){let{global:i}=OO(t);return{stdout:`${i?yr:`${n.cwd.replace(/\/$/,``)}/node_modules`}\n`,stderr:``,exitCode:0}}const zO=`0.5.471`,BO=`v86 is not installed in node_modules: run \`${F} v86@${zO}\` (no network fallback)`;let VO=null;async function HO(e={}){return VO||=KO(e.ipk).catch(e=>{throw VO=null,e}),VO}const UO=[{js:`build/libv86.mjs`,wasm:`build/v86.wasm`}];async function WO(e,t){for(let{js:n,wasm:r}of UO){let i=`${e}/${n}`,a=`${e}/${r}`;if(await t.exists(i)&&await t.exists(a))return{jsPath:i,wasmPath:a}}return null}async function GO(e){let t;try{t=await Er(`v86/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;let n=await WO(Ge(t.path).dir,e.reader);if(!n)return null;try{let r=await e.reader.readFile(t.path),i=String(JSON.parse(r).version??`0.5.471`);return{jsSource:await e.reader.readFile(n.jsPath),wasmBytes:await e.readBytes(n.wasmPath),version:i}}catch{return null}}async function KO(e){if(Rr())throw Error(`v86 is not available in Node runtime`);if(!e)throw Error(BO);let t=await GO(e);if(!t)throw Error(BO);let n=URL.createObjectURL(new Blob([t.jsSource],{type:`text/javascript`})),r;try{r=await import(
1345
+ `)}\n`:``,exitCode:+!!d}}async function IO(e,t,n,r){let{global:i}=DO(t);try{let{listGlobalPackages:e,listLocalPackages:t}=await yO(),a=i?await e(r.fs):await t(r.fs,n.cwd);return{stdout:PO(i?vr:n.cwd,a),stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: list failed: ${kO(t)}\n`,exitCode:1}}}async function LO(e,t,n,r){let{global:i}=DO(t);return{stdout:`${i?yr:`${n.cwd.replace(/\/$/,``)}/node_modules`}\n`,stderr:``,exitCode:0}}const RO=`0.5.471`,zO=`v86 is not installed in node_modules: run \`${F} v86@${RO}\` (no network fallback)`;let BO=null;async function VO(e={}){return BO||=GO(e.ipk).catch(e=>{throw BO=null,e}),BO}const HO=[{js:`build/libv86.mjs`,wasm:`build/v86.wasm`}];async function UO(e,t){for(let{js:n,wasm:r}of HO){let i=`${e}/${n}`,a=`${e}/${r}`;if(await t.exists(i)&&await t.exists(a))return{jsPath:i,wasmPath:a}}return null}async function WO(e){let t;try{t=await Er(`v86/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;let n=await UO(Ge(t.path).dir,e.reader);if(!n)return null;try{let r=await e.reader.readFile(t.path),i=String(JSON.parse(r).version??`0.5.471`);return{jsSource:await e.reader.readFile(n.jsPath),wasmBytes:await e.readBytes(n.wasmPath),version:i}}catch{return null}}async function GO(e){if(Rr())throw Error(`v86 is not available in Node runtime`);if(!e)throw Error(zO);let t=await WO(e);if(!t)throw Error(zO);let n=URL.createObjectURL(new Blob([t.jsSource],{type:`text/javascript`})),r;try{r=await import(
1365
1346
  /* @vite-ignore */
1366
- n)}finally{URL.revokeObjectURL(n)}let i=r.V86??r.default;if(typeof i!=`function`)throw Error(`v86: installed package did not export a V86 constructor`);return{V86:i,wasmModule:await Ei(t.wasmBytes),version:t.version}}function qO(e){return async t=>(await WebAssembly.instantiate(e,t)).exports}const JO={command:`biome`,example:`biome check foo.js`,bootstrap:`${F} ${U_}`},YO={command:`playwright-cli`,example:`playwright-cli open https://example.com`},XO={command:`puppeteer`,example:`puppeteer open https://example.com`},ZO={command:`convert`,example:`convert input.png output.jpg`,bootstrap:`${F} @imagemagick/magick-wasm@${sa}`},QO={...ZO,command:`magick`,example:`magick input.png output.jpg`},$O={command:`pdftoppm`,example:`pdftoppm -png -r 150 doc.pdf page`},ek={"@biomejs/biome":JO,biome:JO,esbuild:{command:`esbuild`,example:`esbuild --bundle src/index.js --outfile=dist/bundle.js`,bootstrap:`${F} esbuild-wasm@${Ti}`},playwright:YO,"@playwright/test":YO,"playwright-core":YO,puppeteer:XO,"puppeteer-core":XO,typescript:{command:`tsc`,example:`tsc --noEmit`,bootstrap:zr},"pdf-poppler":$O,"pdf-to-img":$O,pdf2pic:$O,"pdf-img-convert":$O,poppler:$O,"poppler-utils":$O,imagemagick:ZO,"imagemagick-cli":ZO,"imagemagick-convert":ZO,"magick-cli":QO,"@imagemagick/magick-wasm":QO,ffmpeg:{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${F} @ffmpeg/core@${va}`},"@ffmpeg/ffmpeg":{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${F} @ffmpeg/core@${va}`},ffprobe:{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${F} @ffmpeg/core@${va}`},"@ffprobe-installer/ffprobe":{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${F} @ffmpeg/core@${va}`},sqlite3:{command:`sqlite3`,example:`sqlite3 database.db "SELECT 1"`},v86:{command:`v86`,example:`v86 start -cdrom alpine.iso`,bootstrap:`${F} v86@${zO}`}};function tk(e){return Object.hasOwn(ek,e)?ek[e]:void 0}function nk(e){return/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function rk(e,t,n,r){let i=n.length?[r.command,...n].map(nk).join(` `):r.example,a=[`${e}: SLICC has a built-in \`${r.command}\` for npm package \`${t}\`.`,` try: ${i}`];return r.bootstrap&&a.push(` first run: ${r.bootstrap}`),a.push(` install anyway: ${[e,`--force`,t,...n].map(nk).join(` `)}`),`${a.join(`
1367
- `)}\n`}const ik=/require\(\s*["']([^"']+)["']\s*\)/;function ak(e){return`${e} - run an installed package's executable bin
1347
+ n)}finally{URL.revokeObjectURL(n)}let i=r.V86??r.default;if(typeof i!=`function`)throw Error(`v86: installed package did not export a V86 constructor`);return{V86:i,wasmModule:await Ei(t.wasmBytes),version:t.version}}function KO(e){return async t=>(await WebAssembly.instantiate(e,t)).exports}const qO={command:`biome`,example:`biome check foo.js`,bootstrap:`${F} ${U_}`},JO={command:`playwright-cli`,example:`playwright-cli open https://example.com`},YO={command:`puppeteer`,example:`puppeteer open https://example.com`},XO={command:`convert`,example:`convert input.png output.jpg`,bootstrap:`${F} @imagemagick/magick-wasm@${sa}`},ZO={...XO,command:`magick`,example:`magick input.png output.jpg`},QO={command:`pdftoppm`,example:`pdftoppm -png -r 150 doc.pdf page`},$O={"@biomejs/biome":qO,biome:qO,esbuild:{command:`esbuild`,example:`esbuild --bundle src/index.js --outfile=dist/bundle.js`,bootstrap:`${F} esbuild-wasm@${Ti}`},playwright:JO,"@playwright/test":JO,"playwright-core":JO,puppeteer:YO,"puppeteer-core":YO,typescript:{command:`tsc`,example:`tsc --noEmit`,bootstrap:zr},"pdf-poppler":QO,"pdf-to-img":QO,pdf2pic:QO,"pdf-img-convert":QO,poppler:QO,"poppler-utils":QO,imagemagick:XO,"imagemagick-cli":XO,"imagemagick-convert":XO,"magick-cli":ZO,"@imagemagick/magick-wasm":ZO,ffmpeg:{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${F} @ffmpeg/core@${va}`},"@ffmpeg/ffmpeg":{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${F} @ffmpeg/core@${va}`},ffprobe:{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${F} @ffmpeg/core@${va}`},"@ffprobe-installer/ffprobe":{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${F} @ffmpeg/core@${va}`},sqlite3:{command:`sqlite3`,example:`sqlite3 database.db "SELECT 1"`},v86:{command:`v86`,example:`v86 start -cdrom alpine.iso`,bootstrap:`${F} v86@${RO}`}};function ek(e){return Object.hasOwn($O,e)?$O[e]:void 0}function tk(e){return/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function nk(e,t,n,r){let i=n.length?[r.command,...n].map(tk).join(` `):r.example,a=[`${e}: SLICC has a built-in \`${r.command}\` for npm package \`${t}\`.`,` try: ${i}`];return r.bootstrap&&a.push(` first run: ${r.bootstrap}`),a.push(` install anyway: ${[e,`--force`,t,...n].map(tk).join(` `)}`),`${a.join(`
1348
+ `)}\n`}const rk=/require\(\s*["']([^"']+)["']\s*\)/;function ik(e){return`${e} - run an installed package's executable bin
1368
1349
 
1369
1350
  Usage:
1370
1351
  ${e} [--force] [--global] <pkg-or-bin> [args...]
@@ -1377,12 +1358,12 @@ Options:
1377
1358
  --force Install a package even when a SLICC built-in shadows it
1378
1359
  --global Resolve only from the shared global prefix (/shared/lib/node_modules)
1379
1360
  -h, --help Show this help message
1380
- `}async function ok(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function sk(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function ck(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*lk(e,t=!1){if(t){yield yr;return}let n=x(e);for(;yield S(n,`node_modules`),n!==`/`;)n=Ge(n).dir;yield yr}async function uk(e,t,n,r=!1){for(let i of lk(t,r)){let t=S(i,`.bin`,n);if(!await sk(e,t))continue;let r=await ok(e,t),a=ik.exec(r),o=Ge(t).dir;return{binFilePath:a?S(o,a[1]):t,argvName:t}}return null}function dk(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function fk(e,t){if(typeof e==`string`)return{binName:dk(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,dk(t)];for(let t of n){let n=Object.getOwnPropertyDescriptor(e,t)?.value;if(typeof n==`string`)return{binName:t,binPath:n}}let r=Object.entries(e).filter(e=>typeof e[1]==`string`);if(r.length===1){let[e,t]=r[0];return{binName:e,binPath:t}}return null}async function pk(e,t,n,r=!1){for(let i of lk(t,r)){let t=S(i,n),r=S(t,`package.json`);if(!await sk(e,r))continue;let a;try{a=JSON.parse(await ok(e,r))}catch{return null}let o=fk(a.bin,n);if(!o)return null;let s=o.binPath.replace(/^\.\//,``);return{binFilePath:S(t,s),argvName:S(i,`.bin`,o.binName)}}return null}async function mk(e,t,n,r=!1){return await uk(e,t,n,r)??await pk(e,t,n,r)}async function hk(e,t,n){for(let r of lk(t))if(await sk(e,S(r,n,`package.json`)))return!0;return!1}function gk(e){return e instanceof Error?e.message:String(e)}function _k(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function vk(e,t,n,r){try{let{installPackages:i}=await import(`./installer-BqmKzwYP.js`),a=await i([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(a.errors.length>0)return{error:_k(e,`failed to install '${t}': ${gk(a.errors[0].error)}`)};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:o.length>0?`${o.join(`
1381
- `)}\n`:``}}catch(n){return{error:_k(e,`failed to install '${t}': ${gk(n)}`)}}}async function yk(e,t,n,r){return await sk(r,n)?null:await ck(r,n)?_k(e,`bin target '${n}' is a directory, not a file`):_k(e,`bin file '${n}' for '${t}' does not exist`)}async function bk(e,t,n,r,i,a){if(await hk(a.fs,i.cwd,t))return{error:_k(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:tk(t);if(o)return{error:{stdout:``,stderr:rk(e,t,n,o),exitCode:1}};let s=await vk(e,t,i,a);if(`error`in s)return s;let c=await mk(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:_k(e,`package '${t}' was installed but does not expose an executable bin`)}}function xk(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:ak(e),stderr:``,exitCode:+(n.length===0)};let i=n[0]===`--force`,a=i?n.slice(1):n,o=a[0]===`--global`;o&&(a=a.slice(1));let s=a;if(s.length===0)return{stdout:ak(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await mk(t.fs,r.cwd,c,o)}catch(t){return _k(e,gk(t))}let d=``;if(!u){if(o)return _k(e,`no global bin '${c}' found in ${yr}`);let n=await bk(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await yk(e,c,u.binFilePath,t.fs);if(f)return f;let p=Ci(await ok(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await yi(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function Sk(e={}){return C(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-B0g8XTeC.js`);return r(t,n,e)})}const Ck=/* @__PURE__ */ new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function wk(e={}){return C(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Ak();let n=e.processManager??Tk();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1382
- `,exitCode:1};let r=Ek(t);if(!r.ok)return{stdout:``,stderr:r.stderr,exitCode:r.exitCode};let{allDelivered:i,errors:a}=Dk(n,r.pids,r.signal);return{stdout:``,stderr:a.length?`${a.join(`
1383
- `)}\n`:``,exitCode:+!i}})}function Tk(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function Ek(e){let t=`SIGTERM`,n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i===`-s`||i===`--signal`){let n=e[++r];if(!n)return{ok:!1,stderr:`kill: -s requires a signal name
1384
- `,exitCode:2};let i=Ok(n);if(i instanceof Error)return{ok:!1,stderr:`kill: ${i.message}\n`,exitCode:2};t=i;continue}if(i.startsWith(`-`)){let e=kk(i);if(e instanceof Error)return{ok:!1,stderr:`kill: ${e.message}\n`,exitCode:2};t=e;continue}let a=Number.parseInt(i,10);if(!Number.isFinite(a)||String(a)!==i)return{ok:!1,stderr:`kill: invalid pid '${i}'\n`,exitCode:2};n.push(a)}return n.length===0?{ok:!1,stderr:`kill: no pids supplied
1385
- `,exitCode:2}:Ck.has(t)?{ok:!0,signal:t,pids:n}:{ok:!1,stderr:`kill: signal ${t} not supported\n`,exitCode:2}}function Dk(e,t,n){let r=!0,i=[];for(let a of t)e.signal(a,n)||(r=!1,i.push(e.get(a)?`kill: (${a}) - process already terminated`:`kill: (${a}) - no such process`));return{allDelivered:r,errors:i}}function Ok(e){let t=e.toUpperCase(),n=t.startsWith(`SIG`)?t:`SIG${t}`;return n===`SIGINT`||n===`SIGTERM`||n===`SIGKILL`||n===`SIGSTOP`||n===`SIGCONT`?n:/* @__PURE__ */ Error(`unknown signal '${e}'`)}function kk(e){return e===`-9`?`SIGKILL`:Ok(e.slice(1))}function Ak(){return{stdout:`Usage: kill [-s SIGNAL | -INT | -TERM | -KILL | -STOP | -CONT | -9] PID [PID …]
1361
+ `}async function ak(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function ok(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function sk(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*ck(e,t=!1){if(t){yield yr;return}let n=x(e);for(;yield S(n,`node_modules`),n!==`/`;)n=Ge(n).dir;yield yr}async function lk(e,t,n,r=!1){for(let i of ck(t,r)){let t=S(i,`.bin`,n);if(!await ok(e,t))continue;let r=await ak(e,t),a=rk.exec(r),o=Ge(t).dir;return{binFilePath:a?S(o,a[1]):t,argvName:t}}return null}function uk(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function dk(e,t){if(typeof e==`string`)return{binName:uk(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,uk(t)];for(let t of n){let n=Object.getOwnPropertyDescriptor(e,t)?.value;if(typeof n==`string`)return{binName:t,binPath:n}}let r=Object.entries(e).filter(e=>typeof e[1]==`string`);if(r.length===1){let[e,t]=r[0];return{binName:e,binPath:t}}return null}async function fk(e,t,n,r=!1){for(let i of ck(t,r)){let t=S(i,n),r=S(t,`package.json`);if(!await ok(e,r))continue;let a;try{a=JSON.parse(await ak(e,r))}catch{return null}let o=dk(a.bin,n);if(!o)return null;let s=o.binPath.replace(/^\.\//,``);return{binFilePath:S(t,s),argvName:S(i,`.bin`,o.binName)}}return null}async function pk(e,t,n,r=!1){return await lk(e,t,n,r)??await fk(e,t,n,r)}async function mk(e,t,n){for(let r of ck(t))if(await ok(e,S(r,n,`package.json`)))return!0;return!1}function hk(e){return e instanceof Error?e.message:String(e)}function gk(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function _k(e,t,n,r){try{let{installPackages:i}=await import(`./installer-BqmKzwYP.js`),a=await i([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(a.errors.length>0)return{error:gk(e,`failed to install '${t}': ${hk(a.errors[0].error)}`)};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:o.length>0?`${o.join(`
1362
+ `)}\n`:``}}catch(n){return{error:gk(e,`failed to install '${t}': ${hk(n)}`)}}}async function vk(e,t,n,r){return await ok(r,n)?null:await sk(r,n)?gk(e,`bin target '${n}' is a directory, not a file`):gk(e,`bin file '${n}' for '${t}' does not exist`)}async function yk(e,t,n,r,i,a){if(await mk(a.fs,i.cwd,t))return{error:gk(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:ek(t);if(o)return{error:{stdout:``,stderr:nk(e,t,n,o),exitCode:1}};let s=await _k(e,t,i,a);if(`error`in s)return s;let c=await pk(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:gk(e,`package '${t}' was installed but does not expose an executable bin`)}}function bk(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:ik(e),stderr:``,exitCode:+(n.length===0)};let i=n[0]===`--force`,a=i?n.slice(1):n,o=a[0]===`--global`;o&&(a=a.slice(1));let s=a;if(s.length===0)return{stdout:ik(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await pk(t.fs,r.cwd,c,o)}catch(t){return gk(e,hk(t))}let d=``;if(!u){if(o)return gk(e,`no global bin '${c}' found in ${yr}`);let n=await yk(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await vk(e,c,u.binFilePath,t.fs);if(f)return f;let p=Ci(await ak(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await yi(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function xk(e={}){return C(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-Cq5gNOGb.js`);return r(t,n,e)})}const Sk=/* @__PURE__ */ new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function Ck(e={}){return C(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return kk();let n=e.processManager??wk();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1363
+ `,exitCode:1};let r=Tk(t);if(!r.ok)return{stdout:``,stderr:r.stderr,exitCode:r.exitCode};let{allDelivered:i,errors:a}=Ek(n,r.pids,r.signal);return{stdout:``,stderr:a.length?`${a.join(`
1364
+ `)}\n`:``,exitCode:+!i}})}function wk(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function Tk(e){let t=`SIGTERM`,n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i===`-s`||i===`--signal`){let n=e[++r];if(!n)return{ok:!1,stderr:`kill: -s requires a signal name
1365
+ `,exitCode:2};let i=Dk(n);if(i instanceof Error)return{ok:!1,stderr:`kill: ${i.message}\n`,exitCode:2};t=i;continue}if(i.startsWith(`-`)){let e=Ok(i);if(e instanceof Error)return{ok:!1,stderr:`kill: ${e.message}\n`,exitCode:2};t=e;continue}let a=Number.parseInt(i,10);if(!Number.isFinite(a)||String(a)!==i)return{ok:!1,stderr:`kill: invalid pid '${i}'\n`,exitCode:2};n.push(a)}return n.length===0?{ok:!1,stderr:`kill: no pids supplied
1366
+ `,exitCode:2}:Sk.has(t)?{ok:!0,signal:t,pids:n}:{ok:!1,stderr:`kill: signal ${t} not supported\n`,exitCode:2}}function Ek(e,t,n){let r=!0,i=[];for(let a of t)e.signal(a,n)||(r=!1,i.push(e.get(a)?`kill: (${a}) - process already terminated`:`kill: (${a}) - no such process`));return{allDelivered:r,errors:i}}function Dk(e){let t=e.toUpperCase(),n=t.startsWith(`SIG`)?t:`SIG${t}`;return n===`SIGINT`||n===`SIGTERM`||n===`SIGKILL`||n===`SIGSTOP`||n===`SIGCONT`?n:/* @__PURE__ */ Error(`unknown signal '${e}'`)}function Ok(e){return e===`-9`?`SIGKILL`:Dk(e.slice(1))}function kk(){return{stdout:`Usage: kill [-s SIGNAL | -INT | -TERM | -KILL | -STOP | -CONT | -9] PID [PID …]
1386
1367
 
1387
1368
  Send a signal to one or more processes tracked by the kernel.
1388
1369
 
@@ -1404,7 +1385,7 @@ Examples:
1404
1385
  kill -INT 1024 1025 SIGINT both
1405
1386
  kill -STOP 1024 pause; \`kill -CONT 1024\` resumes
1406
1387
  kill -s SIGKILL 1024 explicit signal name
1407
- `,stderr:``,exitCode:0}}const jk=[`top`,`left`,`middle`,`right`,`bottom`],Mk=`usage: layout <verb> [args]
1388
+ `,stderr:``,exitCode:0}}const Ak=[`top`,`left`,`middle`,`right`,`bottom`],jk=`usage: layout <verb> [args]
1408
1389
 
1409
1390
  list List the built-in presets
1410
1391
  set <preset> Switch to a built-in preset
@@ -1424,9 +1405,9 @@ Examples:
1424
1405
  docs Describe the layout surfaces
1425
1406
  panels List the registered panel ids
1426
1407
 
1427
- Zones: ${jk.join(`, `)}
1428
- `,Nk=/* @__PURE__ */ new Set([`files`,`term`,`memory`,`monitor`]),Pk=`sprinkle:`;function Fk(e){return e===`chat`||Nk.has(e)||e.startsWith(Pk)?e:`${Pk}${e}`}function Ik(e){let t=/^(\d+(?:\.\d+)?)%$/.exec(e);if(t)return{percent:Number.parseFloat(t[1])};let n=/^(\d+(?:\.\d+)?)(?:px)?$/.exec(e);return n?{px:Number.parseFloat(n[1])}:null}const Lk=`usage: layout size <surfaceId> [--width <px|percent>] [--height <px|percent>]`;function Rk(e){let t=e[0],n=t?Fs(t):null;return n?{kind:`set`,tree:n.tree}:{error:`unknown layout: ${t??`(none)`}`}}function zk(e){let t=e[0];return jk.includes(t)?{kind:`chat`,zone:t}:{error:`usage: layout chat <${jk.join(`|`)}>`}}function Bk(e){let[t,n]=e;return!t||!jk.includes(n)?{error:`usage: layout open <surfaceId> <${jk.join(`|`)}>`}:{kind:`open`,surfaceId:Fk(t),zone:n}}function Vk(e){let t=e[0];return t?{kind:`close`,surfaceId:Fk(t)}:{error:`usage: layout close <surfaceId>`}}function Hk(e){let[t,n]=e;return!t||!jk.includes(n)?{error:`usage: layout move <surfaceId> <${jk.join(`|`)}>`}:{kind:`move`,surfaceId:Fk(t),zone:n}}function Uk(e,t,n){if(t!==`--width`&&t!==`--height`)return{error:`layout size: unknown flag "${t}"`};if(!n)return{error:`layout size: missing value for ${t}`};let r=Ik(n);return r?(t===`--width`?r.percent==null?e.widthPx=r.px:e.widthPercent=r.percent:r.percent==null?e.heightPx=r.px:e.heightPercent=r.percent,null):{error:`layout size: invalid size "${n}" (want <number>px or <number>%)`}}function Wk(e){let t=e[0];if(!t)return{error:Lk};let n={};for(let t=1;t<e.length;t+=2){let r=Uk(n,e[t],e[t+1]);if(r)return r}return n.widthPx==null&&n.widthPercent==null&&n.heightPx==null&&n.heightPercent==null?{error:Lk}:{kind:`size`,surfaceId:Fk(t),size:n}}function Gk(e){let t=e[0];if(!t||t.startsWith(`--`))return{error:`usage: layout save <name> [--protected]`};if(!/^[\w.-]+$/.test(t))return{error:`invalid layout name "${t}" (use letters, digits, . _ -)`};let n=e.slice(1),r=n.find(e=>e!==`--protected`);return r?{error:`layout save: unknown flag "${r}"`}:{kind:`save`,name:t,protected:n.includes(`--protected`)}}function Kk(e,t){let n=t[0];return n?e===`load`?{kind:`load`,name:n}:{kind:`delete`,name:n}:{error:`usage: layout ${e} <name>`}}function qk(e,t){let n=t[0];return n?e===`show`?{kind:`show`,panelId:Fk(n)}:{kind:`hide`,panelId:Fk(n)}:{error:`usage: layout ${e} <panelId>`}}function Jk(){let e=Fs(js);return e?{kind:`set`,tree:e.tree}:{error:`default layout unavailable`}}function Yk(e){let[t,...n]=e;switch(t){case`set`:return Rk(n);case`chat`:return zk(n);case`open`:return Bk(n);case`close`:return Vk(n);case`move`:return Hk(n);case`size`:return Wk(n);case`reset`:return{kind:`reset`};case`edit`:return Jk();case`load`:return Kk(`load`,n);case`save`:return Gk(n);case`delete`:return Kk(`delete`,n);case`docs`:return{kind:`docs`};case`panels`:return{kind:`panels`};case`show`:return qk(`show`,n);case`hide`:return qk(`hide`,n);default:return{error:`usage: layout <set|edit|chat|open|close|move|size|show|hide|load|save|delete|docs|panels|list|reset>`}}}function Xk(){return C(`layout`,async e=>{if(T(e))return{stdout:e[0]?.startsWith(`-`)?Mk:gt(`layout`,e[0],Mk),stderr:``,exitCode:0};if(e[0]===`list`||e.length===0)return{stdout:`layouts: ${Object.keys(Ps).join(`, `)}\ndefault: ${js}\n`,stderr:``,exitCode:0};let t=Yk(e);if(`error`in t)return{stdout:``,stderr:`layout: ${t.error}\n`,exitCode:1};let n=b();if(!n)return{stdout:``,stderr:`layout: UI is unavailable in this environment
1429
- `,exitCode:1};try{let e=await n.call(`layout-apply`,t);if(e&&e.applied===!1)return{stdout:``,stderr:`layout: ${e.error??`could not apply layout`}\n`,exitCode:1};let r=e?.output;return{stdout:r?`${r.replace(/\n*$/,``)}\n`:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`layout: ${e.message}\n`,exitCode:1}}})}const Zk=ya.id;function Qk(){return`local-llm — inspect and configure the Local LLM provider
1408
+ Zones: ${Ak.join(`, `)}
1409
+ `,Mk=/* @__PURE__ */ new Set([`files`,`term`,`memory`,`monitor`]),Nk=`sprinkle:`;function Pk(e){return e===`chat`||Mk.has(e)||e.startsWith(Nk)?e:`${Nk}${e}`}function Fk(e){let t=/^(\d+(?:\.\d+)?)%$/.exec(e);if(t)return{percent:Number.parseFloat(t[1])};let n=/^(\d+(?:\.\d+)?)(?:px)?$/.exec(e);return n?{px:Number.parseFloat(n[1])}:null}const Ik=`usage: layout size <surfaceId> [--width <px|percent>] [--height <px|percent>]`;function Lk(e){let t=e[0],n=t?Fs(t):null;return n?{kind:`set`,tree:n.tree}:{error:`unknown layout: ${t??`(none)`}`}}function Rk(e){let t=e[0];return Ak.includes(t)?{kind:`chat`,zone:t}:{error:`usage: layout chat <${Ak.join(`|`)}>`}}function zk(e){let[t,n]=e;return!t||!Ak.includes(n)?{error:`usage: layout open <surfaceId> <${Ak.join(`|`)}>`}:{kind:`open`,surfaceId:Pk(t),zone:n}}function Bk(e){let t=e[0];return t?{kind:`close`,surfaceId:Pk(t)}:{error:`usage: layout close <surfaceId>`}}function Vk(e){let[t,n]=e;return!t||!Ak.includes(n)?{error:`usage: layout move <surfaceId> <${Ak.join(`|`)}>`}:{kind:`move`,surfaceId:Pk(t),zone:n}}function Hk(e,t,n){if(t!==`--width`&&t!==`--height`)return{error:`layout size: unknown flag "${t}"`};if(!n)return{error:`layout size: missing value for ${t}`};let r=Fk(n);return r?(t===`--width`?r.percent==null?e.widthPx=r.px:e.widthPercent=r.percent:r.percent==null?e.heightPx=r.px:e.heightPercent=r.percent,null):{error:`layout size: invalid size "${n}" (want <number>px or <number>%)`}}function Uk(e){let t=e[0];if(!t)return{error:Ik};let n={};for(let t=1;t<e.length;t+=2){let r=Hk(n,e[t],e[t+1]);if(r)return r}return n.widthPx==null&&n.widthPercent==null&&n.heightPx==null&&n.heightPercent==null?{error:Ik}:{kind:`size`,surfaceId:Pk(t),size:n}}function Wk(e){let t=e[0];if(!t||t.startsWith(`--`))return{error:`usage: layout save <name> [--protected]`};if(!/^[\w.-]+$/.test(t))return{error:`invalid layout name "${t}" (use letters, digits, . _ -)`};let n=e.slice(1),r=n.find(e=>e!==`--protected`);return r?{error:`layout save: unknown flag "${r}"`}:{kind:`save`,name:t,protected:n.includes(`--protected`)}}function Gk(e,t){let n=t[0];return n?e===`load`?{kind:`load`,name:n}:{kind:`delete`,name:n}:{error:`usage: layout ${e} <name>`}}function Kk(e,t){let n=t[0];return n?e===`show`?{kind:`show`,panelId:Pk(n)}:{kind:`hide`,panelId:Pk(n)}:{error:`usage: layout ${e} <panelId>`}}function qk(){let e=Fs(js);return e?{kind:`set`,tree:e.tree}:{error:`default layout unavailable`}}function Jk(e){let[t,...n]=e;switch(t){case`set`:return Lk(n);case`chat`:return Rk(n);case`open`:return zk(n);case`close`:return Bk(n);case`move`:return Vk(n);case`size`:return Uk(n);case`reset`:return{kind:`reset`};case`edit`:return qk();case`load`:return Gk(`load`,n);case`save`:return Wk(n);case`delete`:return Gk(`delete`,n);case`docs`:return{kind:`docs`};case`panels`:return{kind:`panels`};case`show`:return Kk(`show`,n);case`hide`:return Kk(`hide`,n);default:return{error:`usage: layout <set|edit|chat|open|close|move|size|show|hide|load|save|delete|docs|panels|list|reset>`}}}function Yk(){return C(`layout`,async e=>{if(T(e))return{stdout:e[0]?.startsWith(`-`)?jk:gt(`layout`,e[0],jk),stderr:``,exitCode:0};if(e[0]===`list`||e.length===0)return{stdout:`layouts: ${Object.keys(Ps).join(`, `)}\ndefault: ${js}\n`,stderr:``,exitCode:0};let t=Jk(e);if(`error`in t)return{stdout:``,stderr:`layout: ${t.error}\n`,exitCode:1};let n=b();if(!n)return{stdout:``,stderr:`layout: UI is unavailable in this environment
1410
+ `,exitCode:1};try{let e=await n.call(`layout-apply`,t);if(e&&e.applied===!1)return{stdout:``,stderr:`layout: ${e.error??`could not apply layout`}\n`,exitCode:1};let r=e?.output;return{stdout:r?`${r.replace(/\n*$/,``)}\n`:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`layout: ${e.message}\n`,exitCode:1}}})}const Xk=ya.id;function Zk(){return`local-llm — inspect and configure the Local LLM provider
1430
1411
 
1431
1412
  Usage:
1432
1413
  local-llm Show current config + verify connection
@@ -1445,21 +1426,21 @@ Common base URLs:
1445
1426
  llama.cpp http://localhost:8080/v1
1446
1427
  vLLM http://localhost:8000/v1
1447
1428
  Jan http://localhost:1337/v1
1448
- `}function $k(e,t){return e.version?t?`${e.kind} (${e.version})`:`${e.kind} ${e.version}`:e.kind}function eA(e){return e.map(e=>` • ${e}`)}function tA(e,t){let n=[`✗ Could not reach ${e}`,` runtime: ${$k(t.runtime,!0)}`,` error: ${t.error?.message??`unknown`}`];return t.error?.hint&&n.push(` hint: ${t.error.hint}`),{stdout:``,stderr:n.join(`
1429
+ `}function Qk(e,t){return e.version?t?`${e.kind} (${e.version})`:`${e.kind} ${e.version}`:e.kind}function $k(e){return e.map(e=>` • ${e}`)}function eA(e,t){let n=[`✗ Could not reach ${e}`,` runtime: ${Qk(t.runtime,!0)}`,` error: ${t.error?.message??`unknown`}`];return t.error?.hint&&n.push(` hint: ${t.error.hint}`),{stdout:``,stderr:n.join(`
1449
1430
  `)+`
1450
- `,exitCode:1}}function nA(e,t){return{stdout:[`✓ ${e}`,` runtime: ${$k(t.runtime,!0)}`,` models: ${t.models.length}`,...eA(t.models)].join(`
1431
+ `,exitCode:1}}function tA(e,t){return{stdout:[`✓ ${e}`,` runtime: ${Qk(t.runtime,!0)}`,` models: ${t.models.length}`,...$k(t.models)].join(`
1451
1432
  `)+`
1452
- `,stderr:``,exitCode:0}}function rA(e,t){let n=t.models.length;return{stdout:[`✓ ${e} (${$k(t.runtime,!1)})`,` Saved ${n} model${n===1?``:`s`} to Settings:`,...eA(t.models)].join(`
1433
+ `,stderr:``,exitCode:0}}function nA(e,t){let n=t.models.length;return{stdout:[`✓ ${e} (${Qk(t.runtime,!1)})`,` Saved ${n} model${n===1?``:`s`} to Settings:`,...$k(t.models)].join(`
1453
1434
  `)+`
1454
- `,stderr:``,exitCode:0}}function iA(){return C(Zk,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:Qk(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-BwcT7LDC.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-DypvX2te.js`).then(e=>e.n),o=e[0]??`status`;if(o!==`status`&&o!==`discover`)return{stdout:``,stderr:`Unknown subcommand: ${o}. See \`local-llm --help\`.\n`,exitCode:2};let s=r(Zk);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1455
- `,exitCode:1};let c=await a(s,t(Zk)??void 0);if(!c.ok)return tA(s,c);if(o===`discover`){let e=n(Zk)??``;return i(Zk,e,s,c.models.join(`, `)),rA(s,c)}return nA(s,c)})}function aA(){return{stdout:`usage: man <topic>
1435
+ `,stderr:``,exitCode:0}}function rA(){return C(Xk,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:Zk(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-BzvHM2hU.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-BaVoosk9.js`).then(e=>e.n),o=e[0]??`status`;if(o!==`status`&&o!==`discover`)return{stdout:``,stderr:`Unknown subcommand: ${o}. See \`local-llm --help\`.\n`,exitCode:2};let s=r(Xk);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1436
+ `,exitCode:1};let c=await a(s,t(Xk)??void 0);if(!c.ok)return eA(s,c);if(o===`discover`){let e=n(Xk)??``;return i(Xk,e,s,c.models.join(`, `)),nA(s,c)}return tA(s,c)})}function iA(){return{stdout:`usage: man <topic>
1456
1437
 
1457
1438
  Fetches documentation for a given topic from sliccy.com.
1458
- `,stderr:``,exitCode:0}}function oA(e){return e.replace(/<[^>]*>/g,``).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&quot;/g,`"`).replace(/&#39;/g,`'`).replace(/&nbsp;/g,` `).replace(/&amp;/g,`&`).trimEnd()}function sA(){let e=g();return C(`man`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return aA();if(t.length===0)return{stdout:``,stderr:`What manual page do you want?
1439
+ `,stderr:``,exitCode:0}}function aA(e){return e.replace(/<[^>]*>/g,``).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&quot;/g,`"`).replace(/&#39;/g,`'`).replace(/&nbsp;/g,` `).replace(/&amp;/g,`&`).trimEnd()}function oA(){let e=g();return C(`man`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return iA();if(t.length===0)return{stdout:``,stderr:`What manual page do you want?
1459
1440
  For example, try 'man commands'.
1460
- `,exitCode:1};let n=t.join(`-`),r=`https://www.sliccy.com/man/${n}.plain.html`;try{let t=await e(r,{method:`GET`});return t.status===404?{stdout:``,stderr:`No manual entry for ${n}\n`,exitCode:1}:t.status<200||t.status>=300?{stdout:``,stderr:`man: failed to fetch manual page for ${n}: ${t.status} ${t.statusText}\n`,exitCode:1}:{stdout:oA(new TextDecoder(`utf-8`).decode(t.body))+`
1461
- `,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`man: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function cA(e){return{stdout:``,stderr:`meminfo: ${e}\n`,exitCode:1}}function lA(e){return e.attribution.length===0?`(shared)`:e.attribution.map(e=>{let t=e.container?.src??e.container?.id??e.url??`?`;return e.scope?`${e.scope} ${t}`:t}).join(`, `)}function uA(){let e=globalThis.performance,t=e?.measureUserAgentSpecificMemory;return t?t.bind(e):null}function dA(e){if(e[0]===`--help`||e[0]===`-h`||e[0]===`help`)return{help:!0};let t=!1;for(let n of e){if(n!==`--json`)return{error:`unknown option '${n}' — see \`meminfo --help\``};t=!0}return{help:!1,json:t}}function fA(e){let t=[`total: ${Vy(e.bytes)}`],n=[...e.breakdown].filter(e=>e.bytes>0).sort((e,t)=>t.bytes-e.bytes);if(n.length>0){t.push(``,`BYTES TYPES ATTRIBUTION`);for(let e of n)t.push(`${Vy(e.bytes).padEnd(10)} ${e.types.join(`,`).padEnd(20)} ${lA(e)}`)}return`${t.join(`
1462
- `)}\n`}function pA(e={}){return C(`meminfo`,async t=>{let n=dA(t);if(`error`in n)return cA(n.error);if(n.help)return{stdout:`meminfo - agent-cluster memory diagnostics
1441
+ `,exitCode:1};let n=t.join(`-`),r=`https://www.sliccy.com/man/${n}.plain.html`;try{let t=await e(r,{method:`GET`});return t.status===404?{stdout:``,stderr:`No manual entry for ${n}\n`,exitCode:1}:t.status<200||t.status>=300?{stdout:``,stderr:`man: failed to fetch manual page for ${n}: ${t.status} ${t.statusText}\n`,exitCode:1}:{stdout:aA(new TextDecoder(`utf-8`).decode(t.body))+`
1442
+ `,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`man: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function sA(e){return{stdout:``,stderr:`meminfo: ${e}\n`,exitCode:1}}function cA(e){return e.attribution.length===0?`(shared)`:e.attribution.map(e=>{let t=e.container?.src??e.container?.id??e.url??`?`;return e.scope?`${e.scope} ${t}`:t}).join(`, `)}function lA(){let e=globalThis.performance,t=e?.measureUserAgentSpecificMemory;return t?t.bind(e):null}function uA(e){if(e[0]===`--help`||e[0]===`-h`||e[0]===`help`)return{help:!0};let t=!1;for(let n of e){if(n!==`--json`)return{error:`unknown option '${n}' — see \`meminfo --help\``};t=!0}return{help:!1,json:t}}function dA(e){let t=[`total: ${Vy(e.bytes)}`],n=[...e.breakdown].filter(e=>e.bytes>0).sort((e,t)=>t.bytes-e.bytes);if(n.length>0){t.push(``,`BYTES TYPES ATTRIBUTION`);for(let e of n)t.push(`${Vy(e.bytes).padEnd(10)} ${e.types.join(`,`).padEnd(20)} ${cA(e)}`)}return`${t.join(`
1443
+ `)}\n`}function fA(e={}){return C(`meminfo`,async t=>{let n=uA(t);if(`error`in n)return sA(n.error);if(n.help)return{stdout:`meminfo - agent-cluster memory diagnostics
1463
1444
 
1464
1445
  Usage:
1465
1446
  meminfo Human-readable breakdown (bytes, scope, types, url)
@@ -1470,8 +1451,8 @@ Notes:
1470
1451
  Document-Isolation-Policy). Embedded floats cannot be isolated and
1471
1452
  report why instead.
1472
1453
  - The browser randomizes measurement timing — expect a short delay.
1473
- `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??uA();if(!r&&!e.measure)return cA(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return cA(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return cA(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:fA(a),stderr:``,exitCode:0}})}function mA(e){return C(`memory`,async t=>{let{runMemory:n}=await import(`./run-CmO7OEqP.js`);return n(t,e)})}function hA(){return C(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-BVa_5XaQ.js`);return n(e,t)})}const gA=`/.cache/artificial-analysis.json`,_A=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],vA=[`--provider`];function yA(e){return{stdout:``,stderr:e.endsWith(`
1474
- `)?e:`${e}\n`,exitCode:1}}async function bA(e){try{let t=await e.readFile(gA),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}return null}function xA(){try{return localStorage.getItem(`aa_api_key`)}catch{return null}}function SA(e){return e.map(e=>{let t=e;return{slug:t.slug??``,name:t.name??``,creator_slug:t.model_creator?.slug??``,intelligence_index:t.evaluations?.artificial_analysis_intelligence_index??null,coding_index:t.evaluations?.artificial_analysis_coding_index??null,speed_tps:t.median_output_tokens_per_second??null}})}async function CA(e,t){let n={fetchedAt:Date.now(),models:t};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(gA,JSON.stringify(n))}catch{}}async function wA(e,t=!1){if(e&&!t){let t=await bA(e);if(t)return t}let n={Accept:`application/json`},r=xA();r&&(n[`x-api-key`]=r);let i=g(),a;try{a=await i(`https://artificialanalysis.ai/api/v2/data/llms/models`,{method:`GET`,headers:n})}catch{return[]}if(a.status===401||a.status<200||a.status>=300)return[];let o;try{o=JSON.parse(new TextDecoder().decode(a.body))}catch{return[]}if(typeof o!=`object`||!o)return[];let s=o,c=SA(Array.isArray(s)?s:s.data??s.models??[]);return e&&c.length>0&&await CA(e,c),c}function TA(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function EA(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=TA(e),a=t.find(e=>TA(e.slug)===i);if(a)return a;let o=t.filter(e=>n.includes(e.slug)||e.slug.includes(n));if(o.length!==0)return o.sort((e,t)=>t.slug.length-e.slug.length),o[0]}function DA(){return`models - list available LLM models
1454
+ `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??lA();if(!r&&!e.measure)return sA(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return sA(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return sA(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:dA(a),stderr:``,exitCode:0}})}function pA(e){return C(`memory`,async t=>{let{runMemory:n}=await import(`./run-CmO7OEqP.js`);return n(t,e)})}function mA(){return C(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-BVa_5XaQ.js`);return n(e,t)})}const hA=`/.cache/artificial-analysis.json`,gA=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],_A=[`--provider`];function vA(e){return{stdout:``,stderr:e.endsWith(`
1455
+ `)?e:`${e}\n`,exitCode:1}}async function yA(e){try{let t=await e.readFile(hA),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}return null}function bA(){try{return localStorage.getItem(`aa_api_key`)}catch{return null}}function xA(e){return e.map(e=>{let t=e;return{slug:t.slug??``,name:t.name??``,creator_slug:t.model_creator?.slug??``,intelligence_index:t.evaluations?.artificial_analysis_intelligence_index??null,coding_index:t.evaluations?.artificial_analysis_coding_index??null,speed_tps:t.median_output_tokens_per_second??null}})}async function SA(e,t){let n={fetchedAt:Date.now(),models:t};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(hA,JSON.stringify(n))}catch{}}async function CA(e,t=!1){if(e&&!t){let t=await yA(e);if(t)return t}let n={Accept:`application/json`},r=bA();r&&(n[`x-api-key`]=r);let i=g(),a;try{a=await i(`https://artificialanalysis.ai/api/v2/data/llms/models`,{method:`GET`,headers:n})}catch{return[]}if(a.status===401||a.status<200||a.status>=300)return[];let o;try{o=JSON.parse(new TextDecoder().decode(a.body))}catch{return[]}if(typeof o!=`object`||!o)return[];let s=o,c=xA(Array.isArray(s)?s:s.data??s.models??[]);return e&&c.length>0&&await SA(e,c),c}function wA(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function TA(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=wA(e),a=t.find(e=>wA(e.slug)===i);if(a)return a;let o=t.filter(e=>n.includes(e.slug)||e.slug.includes(n));if(o.length!==0)return o.sort((e,t)=>t.slug.length-e.slug.length),o[0]}function EA(){return`models - list available LLM models
1475
1456
 
1476
1457
  Usage: models [options]
1477
1458
 
@@ -1483,14 +1464,14 @@ Options:
1483
1464
  --refresh Force re-fetch benchmark data from Artificial Analysis
1484
1465
  --no-benchmarks Skip benchmark data enrichment (faster, works offline)
1485
1466
  -h, --help Show this help message
1486
- `}function OA(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function kA(e){return`$${e.toFixed(2)}`}const AA=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function jA(e){let t=`${e.id} ${e.name??``}`;return!AA.test(t)}function MA(e){let t=e.match(/^(claude-(?:opus|sonnet|haiku))/);if(t)return t[1];let n=e.match(/^(gpt-\d+)(?:\.\d+)?(-[a-z][-a-z]*)?$/);if(n)return n[1]+(n[2]??``);let r=e.match(/^gemini-[\d.]+-(.+)$/);if(r)return`gemini-${r[1]}`;let i=e.match(/^gemini-(\d+)-(.+)$/);if(i)return`gemini-${i[2]}`;let a=e.match(/^grok-[\d.]+-([\w-]+)$/);if(a)return`grok-${a[1]}`;if(e.match(/^(grok)-[\d.]+$/))return`grok`;let o=e.match(/^(o\d+(?:-[a-z]+)?)(?:-\d.*)?$/);if(o)return o[1]}function NA(e){let t=e.toLowerCase();return t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``),MA(t)??t.replace(/-[\d.]+$/,``)}function PA(e){let t=/* @__PURE__ */ new Map;for(let n of e){let e=NA(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function FA(e,t,n,r,i){let a=i?EA(e.id,i):void 0,o={id:e.id,name:e.name,provider:t,cost:e.cost??{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:e.contextWindow??0,maxTokens:e.maxTokens??0,reasoning:!!e.reasoning,input:e.input??[`text`],selected:e.id===n&&t===r};return a?.intelligence_index!=null&&(o.intelligence=a.intelligence_index),a?.coding_index!=null&&(o.codingScore=a.coding_index),a?.speed_tps!=null&&(o.speed=a.speed_tps),o}function IA(e,t,n,r){let i=[];i.push(`Models for "${e}" (${t}):\n`);for(let e of n){let t=e.selected?` ► `:` `,n=e.id.padEnd(30),r=`${kA(e.cost.input)} / ${kA(e.cost.output)}`,a=`${OA(e.contextWindow)} ctx`,o=e.intelligence==null?``:`IQ:${e.intelligence}`,s=e.speed==null?``:`${Math.round(e.speed)} t/s`,c=e.reasoning?`reasoning`:``,l=o||s?`${o.padEnd(6)} ${s.padEnd(8)}`:``;i.push(`${t}${n} ${r.padEnd(16)} ${a.padEnd(10)} ${l} ${c}`)}return i.push(`\n ${n.length} model${n.length===1?``:`s`} available.`),r&&i.push(` Intelligence data: artificialanalysis.ai`),i.join(`
1467
+ `}function DA(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function OA(e){return`$${e.toFixed(2)}`}const kA=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function AA(e){let t=`${e.id} ${e.name??``}`;return!kA.test(t)}function jA(e){let t=e.match(/^(claude-(?:opus|sonnet|haiku))/);if(t)return t[1];let n=e.match(/^(gpt-\d+)(?:\.\d+)?(-[a-z][-a-z]*)?$/);if(n)return n[1]+(n[2]??``);let r=e.match(/^gemini-[\d.]+-(.+)$/);if(r)return`gemini-${r[1]}`;let i=e.match(/^gemini-(\d+)-(.+)$/);if(i)return`gemini-${i[2]}`;let a=e.match(/^grok-[\d.]+-([\w-]+)$/);if(a)return`grok-${a[1]}`;if(e.match(/^(grok)-[\d.]+$/))return`grok`;let o=e.match(/^(o\d+(?:-[a-z]+)?)(?:-\d.*)?$/);if(o)return o[1]}function MA(e){let t=e.toLowerCase();return t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``),jA(t)??t.replace(/-[\d.]+$/,``)}function NA(e){let t=/* @__PURE__ */ new Map;for(let n of e){let e=MA(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function PA(e,t,n,r,i){let a=i?TA(e.id,i):void 0,o={id:e.id,name:e.name,provider:t,cost:e.cost??{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:e.contextWindow??0,maxTokens:e.maxTokens??0,reasoning:!!e.reasoning,input:e.input??[`text`],selected:e.id===n&&t===r};return a?.intelligence_index!=null&&(o.intelligence=a.intelligence_index),a?.coding_index!=null&&(o.codingScore=a.coding_index),a?.speed_tps!=null&&(o.speed=a.speed_tps),o}function FA(e,t,n,r){let i=[];i.push(`Models for "${e}" (${t}):\n`);for(let e of n){let t=e.selected?` ► `:` `,n=e.id.padEnd(30),r=`${OA(e.cost.input)} / ${OA(e.cost.output)}`,a=`${DA(e.contextWindow)} ctx`,o=e.intelligence==null?``:`IQ:${e.intelligence}`,s=e.speed==null?``:`${Math.round(e.speed)} t/s`,c=e.reasoning?`reasoning`:``,l=o||s?`${o.padEnd(6)} ${s.padEnd(8)}`:``;i.push(`${t}${n} ${r.padEnd(16)} ${a.padEnd(10)} ${l} ${c}`)}return i.push(`\n ${n.length} model${n.length===1?``:`s`} available.`),r&&i.push(` Intelligence data: artificialanalysis.ai`),i.join(`
1487
1468
  `)+`
1488
- `}function LA(e){let t=w(e,{bool:_A,value:vA});return`error`in t?t:{jsonMode:t.bools.has(`--json`),allMode:t.bools.has(`--all`),allVersions:t.bools.has(`--all-versions`),forceRefresh:t.bools.has(`--refresh`),noBenchmarks:t.bools.has(`--no-benchmarks`),explicitProvider:t.values.get(`--provider`)}}function RA(e,t,n){if(t.explicitProvider){let n=e.getAvailableProviders();return n.includes(t.explicitProvider)?[t.explicitProvider]:{error:`Unknown provider: ${t.explicitProvider}. Available: ${n.join(`, `)}\n`}}return t.allMode?[...new Set(e.getAccounts().map(e=>e.providerId))]:[n]}function zA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(jA);if(o.length===0)return[];let s=o.map(e=>FA(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=PA(s)),s}function BA(e,t,n,r){let i=`${e}:${t}`,a=`${n}:${r}`;return i===a?`Currently using: ${i}\n`:`Currently using: ${i} (selected ${a} — resolved to a different model)\n`}async function VA(e,t){if(T(e,{valueFlags:vA}))return{stdout:DA(),stderr:``,exitCode:0};let n=LA(e);if(`error`in n)return yA(`models: ${n.error}`);let r=await import(`./account-store-BwcT7LDC.js`).then(e=>e.t);if(r.getAccounts().length===0)return yA(`No provider accounts configured. Run the provider settings to add one.
1489
- `);let i=r.resolveCurrentModel(),a=i.id,o=i.provider,s=r.getSelectedProvider(),c=r.getSelectedModelId(),l;if(!n.noBenchmarks){let e=await wA(t,n.forceRefresh);e.length>0&&(l=e)}let u=RA(r,n,s);if(`error`in u)return yA(u.error);let d=[],f=[];for(let e of u){let t=zA(r,e,a,o,l,n.allVersions);if(t.length===0){if(!n.allMode)return yA(`No models available for provider ${e}.\n`);continue}if(d.push(...t),!n.jsonMode){let n=r.getProviderConfig(e);f.push(IA(n.name,e,t,!!l))}}return n.jsonMode?{stdout:JSON.stringify(d,null,2)+`
1469
+ `}function IA(e){let t=w(e,{bool:gA,value:_A});return`error`in t?t:{jsonMode:t.bools.has(`--json`),allMode:t.bools.has(`--all`),allVersions:t.bools.has(`--all-versions`),forceRefresh:t.bools.has(`--refresh`),noBenchmarks:t.bools.has(`--no-benchmarks`),explicitProvider:t.values.get(`--provider`)}}function LA(e,t,n){if(t.explicitProvider){let n=e.getAvailableProviders();return n.includes(t.explicitProvider)?[t.explicitProvider]:{error:`Unknown provider: ${t.explicitProvider}. Available: ${n.join(`, `)}\n`}}return t.allMode?[...new Set(e.getAccounts().map(e=>e.providerId))]:[n]}function RA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(AA);if(o.length===0)return[];let s=o.map(e=>PA(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=NA(s)),s}function zA(e,t,n,r){let i=`${e}:${t}`,a=`${n}:${r}`;return i===a?`Currently using: ${i}\n`:`Currently using: ${i} (selected ${a} — resolved to a different model)\n`}async function BA(e,t){if(T(e,{valueFlags:_A}))return{stdout:EA(),stderr:``,exitCode:0};let n=IA(e);if(`error`in n)return vA(`models: ${n.error}`);let r=await import(`./account-store-BzvHM2hU.js`).then(e=>e.t);if(r.getAccounts().length===0)return vA(`No provider accounts configured. Run the provider settings to add one.
1470
+ `);let i=r.resolveCurrentModel(),a=i.id,o=i.provider,s=r.getSelectedProvider(),c=r.getSelectedModelId(),l;if(!n.noBenchmarks){let e=await CA(t,n.forceRefresh);e.length>0&&(l=e)}let u=LA(r,n,s);if(`error`in u)return vA(u.error);let d=[],f=[];for(let e of u){let t=RA(r,e,a,o,l,n.allVersions);if(t.length===0){if(!n.allMode)return vA(`No models available for provider ${e}.\n`);continue}if(d.push(...t),!n.jsonMode){let n=r.getProviderConfig(e);f.push(FA(n.name,e,t,!!l))}}return n.jsonMode?{stdout:JSON.stringify(d,null,2)+`
1490
1471
  `,stderr:``,exitCode:0}:(n.allVersions||f.push(`Showing latest versions only. Use --all-versions to see all.
1491
- `),f.push(BA(o,a,s,c)),{stdout:f.join(`
1492
- `),stderr:``,exitCode:0})}function HA(e){return C(`models`,async t=>VA(t,e))}const UA=/* @__PURE__ */ new Set([`-`,`/dev/stdin`,`/dev/fd/0`,`/proc/self/fd/0`]);function WA(e){return e===`-e`||e===`--eval`||UA.has(e)||!e.startsWith(`-`)}function GA(e){return{stdout:``,stderr:`node: ${e} is not a valid value for --input-type. Valid values are: 'commonjs' or 'module'.\n`,exitCode:9}}function KA(e,t,n){let r=e.startsWith(`--input-type=`),i=r?e.slice(13):t,a=r?n+1:n+2;return i===void 0?{nextIndex:n+1,error:{stdout:``,stderr:`node: option --input-type requires an argument
1493
- `,exitCode:9}}:i!==`module`&&i!==`commonjs`?{nextIndex:a,error:GA(i)}:{inputType:i,nextIndex:a}}function qA(e){let t=!1,n=!1,r=!1,i,a=0;for(;a<e.length;){let o=e[a];if(WA(o))break;if(o===`-h`||o===`--help`){t=!0,a+=1;continue}if(o===`-v`||o===`--version`){n=!0,a+=1;continue}if(o===`-c`||o===`--check`){r=!0,a+=1;continue}if(o===`--input-type`||o.startsWith(`--input-type=`)){let s=KA(o,e[a+1],a);if(s.error)return{help:t,version:n,check:r,inputType:i,sourceIndex:s.nextIndex,error:s.error};i=s.inputType,a=s.nextIndex;continue}return{help:t,version:n,check:r,inputType:i,sourceIndex:a,error:{stdout:``,stderr:`node: unsupported option '${o}'\n`,exitCode:9}}}return{help:t,version:n,check:r,inputType:i,sourceIndex:a}}function JA(){return{stdout:`usage: node [options] [script.js] [args...]
1472
+ `),f.push(zA(o,a,s,c)),{stdout:f.join(`
1473
+ `),stderr:``,exitCode:0})}function VA(e){return C(`models`,async t=>BA(t,e))}const HA=/* @__PURE__ */ new Set([`-`,`/dev/stdin`,`/dev/fd/0`,`/proc/self/fd/0`]);function UA(e){return e===`-e`||e===`--eval`||HA.has(e)||!e.startsWith(`-`)}function WA(e){return{stdout:``,stderr:`node: ${e} is not a valid value for --input-type. Valid values are: 'commonjs' or 'module'.\n`,exitCode:9}}function GA(e,t,n){let r=e.startsWith(`--input-type=`),i=r?e.slice(13):t,a=r?n+1:n+2;return i===void 0?{nextIndex:n+1,error:{stdout:``,stderr:`node: option --input-type requires an argument
1474
+ `,exitCode:9}}:i!==`module`&&i!==`commonjs`?{nextIndex:a,error:WA(i)}:{inputType:i,nextIndex:a}}function KA(e){let t=!1,n=!1,r=!1,i,a=0;for(;a<e.length;){let o=e[a];if(UA(o))break;if(o===`-h`||o===`--help`){t=!0,a+=1;continue}if(o===`-v`||o===`--version`){n=!0,a+=1;continue}if(o===`-c`||o===`--check`){r=!0,a+=1;continue}if(o===`--input-type`||o.startsWith(`--input-type=`)){let s=GA(o,e[a+1],a);if(s.error)return{help:t,version:n,check:r,inputType:i,sourceIndex:s.nextIndex,error:s.error};i=s.inputType,a=s.nextIndex;continue}return{help:t,version:n,check:r,inputType:i,sourceIndex:a,error:{stdout:``,stderr:`node: unsupported option '${o}'\n`,exitCode:9}}}return{help:t,version:n,check:r,inputType:i,sourceIndex:a}}function qA(){return{stdout:`usage: node [options] [script.js] [args...]
1494
1475
  node [options] -e <code> [args...]
1495
1476
 
1496
1477
  Options:
@@ -1499,20 +1480,20 @@ Options:
1499
1480
  --input-type=TYPE module or commonjs (stdin / -e / .js)
1500
1481
  -h, --help print this help
1501
1482
  -v, --version print Node shim version
1502
- `,stderr:``,exitCode:0}}function YA(){return{stdout:`${Ir}\n`,stderr:``,exitCode:0}}function XA(e,t){if(t){if(e.endsWith(`.mjs`)&&t===`commonjs`)return{stdout:``,stderr:`node: cannot set --input-type=commonjs for a .mjs file
1483
+ `,stderr:``,exitCode:0}}function JA(){return{stdout:`${Ir}\n`,stderr:``,exitCode:0}}function YA(e,t){if(t){if(e.endsWith(`.mjs`)&&t===`commonjs`)return{stdout:``,stderr:`node: cannot set --input-type=commonjs for a .mjs file
1503
1484
  `,exitCode:9};if(e.endsWith(`.cjs`)&&t===`module`)return{stdout:``,stderr:`node: cannot set --input-type=module for a .cjs file
1504
- `,exitCode:9}}}function ZA(e,t){if(!e.startsWith(`/`))return t;let n=e.lastIndexOf(`/`);return n<=0?`/`:e.slice(0,n)}function QA(e){return e instanceof Error?e.stack??e.message:String(e)}async function $A(e,t,n){if(!(Or(e)||Ur(e)||t.endsWith(`.mjs`)))return e;try{return(await(await wi()).transform(e,{loader:`js`,format:`cjs`,sourcefile:`${t.replace(/\.[^./]+$/,``)}.js`,supported:{"dynamic-import":!1}})).code}catch(r){if(!/top-level await/i.test(QA(r)))throw r;return ci()({source:e,filename:t,fromDir:ZA(t,n)})}}async function ej(e,t,n){let r=e;try{r=await $A(e,t,n)}catch(e){return{stdout:``,stderr:`${QA(e)}\n`,exitCode:1}}try{let e=Object.getPrototypeOf(async function(){}).constructor;return new e(r),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`${QA(e)}\n`,exitCode:1}}}async function tj(e,t){if(e.length>0&&(e[0]===`-e`||e[0]===`--eval`))return e[1]?{kind:`ok`,code:e[1],filename:`[eval]`,argv:[`node`,...e.slice(2)],innerCtx:t}:{kind:`result`,result:{stdout:``,stderr:`node: option requires an argument -- eval
1505
- `,exitCode:9}};if(e.length>0&&UA.has(e[0]))return{kind:`ok`,code:P(t.stdin),filename:`<stdin>`,argv:[`node`,e[0],...e.slice(1)],innerCtx:{...t,stdin:``}};if(e.length>0&&!e[0].startsWith(`-`)){let n=e[0],r=t.fs.resolvePath(t.cwd,n);return await t.fs.exists(r)?{kind:`ok`,code:await t.fs.readFile(r),filename:r,argv:[`node`,r,...e.slice(1)],innerCtx:t}:{kind:`result`,result:{stdout:``,stderr:`node: cannot find module '${n}'\n`,exitCode:1}}}return P(t.stdin).trim().length>0?{kind:`ok`,code:P(t.stdin),filename:`<stdin>`,argv:[`node`],innerCtx:{...t,stdin:``}}:e.length>0?{kind:`result`,result:{stdout:``,stderr:`node: unsupported option '${e[0]}'\n`,exitCode:9}}:{kind:`result`,result:{stdout:``,stderr:`node: REPL mode is not supported in this environment; use node -e "code"
1506
- `,exitCode:9}}}function nj(e={},t=`node`){return{name:t,trusted:!0,async execute(t,n){let r=qA(t);if(r.error)return r.error;if(r.help)return JA();if(r.version)return YA();let i=await tj(t.slice(r.sourceIndex),n);if(i.kind===`result`)return r.check&&i.result.exitCode===9&&t.slice(r.sourceIndex).length===0?{stdout:``,stderr:`node: -c/--check requires a filename or -e CODE
1507
- `,exitCode:9}:i.result;let{code:a,filename:o,argv:s,innerCtx:c}=i,l=XA(o,r.inputType);if(l)return l;let u=Ci(a);return r.check?ej(u,o,n.cwd):yi(u,s,c,e.buildProcessConfig?.(n.env),{filename:o})}}}const rj=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];async function ij(){try{let e=await navigator.serviceWorker?.getRegistrations?.();e&&await Promise.all(e.map(e=>e.unregister().catch(()=>!1)))}catch{}try{let e=await indexedDB.databases();await Promise.all(e.filter(e=>!!e.name).map(e=>new Promise(t=>{let n=indexedDB.deleteDatabase(e.name);n.onsuccess=()=>t(),n.onerror=()=>t(),n.onblocked=()=>t()})))}catch{}try{let e=navigator.storage;if(typeof e?.getDirectory==`function`){let t=await e.getDirectory(),n=[];for await(let e of t.keys())n.push(e);await Promise.all(n.map(e=>t.removeEntry(e,{recursive:!0}).catch(()=>{})))}}catch{}}const aj=[],oj=[`--yes`];function sj(){return C(`nuke`,async e=>{if(T(e,{valueFlags:aj}))return{stdout:`Usage: nuke <launch-code>
1485
+ `,exitCode:9}}}function XA(e,t){if(!e.startsWith(`/`))return t;let n=e.lastIndexOf(`/`);return n<=0?`/`:e.slice(0,n)}function ZA(e){return e instanceof Error?e.stack??e.message:String(e)}async function QA(e,t,n){if(!(Or(e)||Ur(e)||t.endsWith(`.mjs`)))return e;try{return(await(await wi()).transform(e,{loader:`js`,format:`cjs`,sourcefile:`${t.replace(/\.[^./]+$/,``)}.js`,supported:{"dynamic-import":!1}})).code}catch(r){if(!/top-level await/i.test(ZA(r)))throw r;return ci()({source:e,filename:t,fromDir:XA(t,n)})}}async function $A(e,t,n){let r=e;try{r=await QA(e,t,n)}catch(e){return{stdout:``,stderr:`${ZA(e)}\n`,exitCode:1}}try{let e=Object.getPrototypeOf(async function(){}).constructor;return new e(r),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`${ZA(e)}\n`,exitCode:1}}}async function ej(e,t){if(e.length>0&&(e[0]===`-e`||e[0]===`--eval`))return e[1]?{kind:`ok`,code:e[1],filename:`[eval]`,argv:[`node`,...e.slice(2)],innerCtx:t}:{kind:`result`,result:{stdout:``,stderr:`node: option requires an argument -- eval
1486
+ `,exitCode:9}};if(e.length>0&&HA.has(e[0]))return{kind:`ok`,code:P(t.stdin),filename:`<stdin>`,argv:[`node`,e[0],...e.slice(1)],innerCtx:{...t,stdin:``}};if(e.length>0&&!e[0].startsWith(`-`)){let n=e[0],r=t.fs.resolvePath(t.cwd,n);return await t.fs.exists(r)?{kind:`ok`,code:await t.fs.readFile(r),filename:r,argv:[`node`,r,...e.slice(1)],innerCtx:t}:{kind:`result`,result:{stdout:``,stderr:`node: cannot find module '${n}'\n`,exitCode:1}}}return P(t.stdin).trim().length>0?{kind:`ok`,code:P(t.stdin),filename:`<stdin>`,argv:[`node`],innerCtx:{...t,stdin:``}}:e.length>0?{kind:`result`,result:{stdout:``,stderr:`node: unsupported option '${e[0]}'\n`,exitCode:9}}:{kind:`result`,result:{stdout:``,stderr:`node: REPL mode is not supported in this environment; use node -e "code"
1487
+ `,exitCode:9}}}function tj(e={},t=`node`){return{name:t,trusted:!0,async execute(t,n){let r=KA(t);if(r.error)return r.error;if(r.help)return qA();if(r.version)return JA();let i=await ej(t.slice(r.sourceIndex),n);if(i.kind===`result`)return r.check&&i.result.exitCode===9&&t.slice(r.sourceIndex).length===0?{stdout:``,stderr:`node: -c/--check requires a filename or -e CODE
1488
+ `,exitCode:9}:i.result;let{code:a,filename:o,argv:s,innerCtx:c}=i,l=YA(o,r.inputType);if(l)return l;let u=Ci(a);return r.check?$A(u,o,n.cwd):yi(u,s,c,e.buildProcessConfig?.(n.env),{filename:o})}}}const nj=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];async function rj(){try{let e=await navigator.serviceWorker?.getRegistrations?.();e&&await Promise.all(e.map(e=>e.unregister().catch(()=>!1)))}catch{}try{let e=await indexedDB.databases();await Promise.all(e.filter(e=>!!e.name).map(e=>new Promise(t=>{let n=indexedDB.deleteDatabase(e.name);n.onsuccess=()=>t(),n.onerror=()=>t(),n.onblocked=()=>t()})))}catch{}try{let e=navigator.storage;if(typeof e?.getDirectory==`function`){let t=await e.getDirectory(),n=[];for await(let e of t.keys())n.push(e);await Promise.all(n.map(e=>t.removeEntry(e,{recursive:!0}).catch(()=>{})))}}catch{}}const ij=[],aj=[`--yes`];function oj(){return C(`nuke`,async e=>{if(T(e,{valueFlags:ij}))return{stdout:`Usage: nuke <launch-code>
1508
1489
 
1509
1490
  Completely reset the environment by deleting all local data and reloading.
1510
1491
  Destroys the file system, chat history, and scoops database.
1511
1492
  Requires the secret launch code to proceed.
1512
- `,stderr:``,exitCode:0};let t=w(e,{value:aj,bool:oj});return`error`in t?{stdout:``,stderr:`nuke: ${t.error}\n`,exitCode:1}:t.positionals.join(``).includes(`1234`)?((async()=>{await ij(),cj(rj)})(),{stdout:`Nuking everything…
1493
+ `,stderr:``,exitCode:0};let t=w(e,{value:ij,bool:aj});return`error`in t?{stdout:``,stderr:`nuke: ${t.error}\n`,exitCode:1}:t.positionals.join(``).includes(`1234`)?((async()=>{await rj(),sj(nj)})(),{stdout:`Nuking everything…
1513
1494
  `,stderr:``,exitCode:0}):{stdout:``,stderr:`⚠️ WARNING: this will reset the entire environment, file system, chats, and scoops.
1514
1495
  Run nuke again with the secret launch code to proceed.
1515
- `,exitCode:1}})}function cj(e=[]){let t=[...e];try{if(typeof BroadcastChannel==`function`){let e=new BroadcastChannel(`slicc-nuke-control`);e.postMessage({type:`nuke-reload`,keysToRemove:t}),setTimeout(()=>e.close(),100)}}catch{}for(let e of t)try{globalThis.localStorage?.removeItem(e)}catch{}try{globalThis.location?.reload?.()}catch{}}function lj(){return`oauth-domain — manage extra allowed domains for OAuth-issued tokens
1496
+ `,exitCode:1}})}function sj(e=[]){let t=[...e];try{if(typeof BroadcastChannel==`function`){let e=new BroadcastChannel(`slicc-nuke-control`);e.postMessage({type:`nuke-reload`,keysToRemove:t}),setTimeout(()=>e.close(),100)}}catch{}for(let e of t)try{globalThis.localStorage?.removeItem(e)}catch{}try{globalThis.location?.reload?.()}catch{}}function cj(){return`oauth-domain — manage extra allowed domains for OAuth-issued tokens
1516
1497
 
1517
1498
  Usage:
1518
1499
  oauth-domain list List extra domains for every provider
@@ -1537,13 +1518,13 @@ Examples:
1537
1518
  oauth-domain add adobe '*.da.live'
1538
1519
  oauth-domain list adobe
1539
1520
  oauth-domain remove adobe admin.da.live
1540
- `}function uj(e){return{stdout:``,stderr:`oauth-domain: ${e}\n`,exitCode:1}}function dj(e,t){if(t){let n=e.getExtraOAuthDomains(t);return n.length===0?{stdout:`(no extra domains configured for ${t})\n`,stderr:``,exitCode:0}:{stdout:`${n.join(`
1521
+ `}function lj(e){return{stdout:``,stderr:`oauth-domain: ${e}\n`,exitCode:1}}function uj(e,t){if(t){let n=e.getExtraOAuthDomains(t);return n.length===0?{stdout:`(no extra domains configured for ${t})\n`,stderr:``,exitCode:0}:{stdout:`${n.join(`
1541
1522
  `)}\n`,stderr:``,exitCode:0}}let n=Object.entries(e.getAllExtraOAuthDomains()).filter(([,e])=>e.length>0);return n.length===0?{stdout:`(no extra OAuth domains configured)
1542
1523
  `,stderr:``,exitCode:0}:{stdout:`${n.map(([e,t])=>`${e}: ${t.join(`, `)}`).join(`
1543
- `)}\n`,stderr:``,exitCode:0}}async function fj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain add: requires <providerId> and <domain>
1544
- `,exitCode:1};let r=e.getExtraOAuthDomains(t),i=n.toLowerCase();return r.some(e=>e.toLowerCase()===i)?{stdout:`(${n} already in ${t} extras)\n`,stderr:``,exitCode:0}:(await e.setExtraOAuthDomainsAsync(t,[...r,n]),{stdout:`Added ${n} to ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0})}async function pj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain remove: requires <providerId> and <domain>
1545
- `,exitCode:1};let r=e.getExtraOAuthDomains(t),i=n.toLowerCase(),a=r.filter(e=>e.toLowerCase()!==i);return a.length===r.length?{stdout:`(${n} not found in ${t} extras)\n`,stderr:``,exitCode:0}:(await e.setExtraOAuthDomainsAsync(t,a),{stdout:`Removed ${n} from ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0})}async function mj(e,t){return t?(await e.setExtraOAuthDomainsAsync(t,[]),{stdout:`Cleared extra domains for ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0}):{stdout:``,stderr:`oauth-domain clear: requires <providerId>
1546
- `,exitCode:1}}async function hj(e,t,n,r){switch(t){case`list`:return dj(e,n);case`add`:return fj(e,n,r);case`remove`:return pj(e,n,r);case`clear`:return mj(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${lj()}`,exitCode:1}}}function gj(){return C(`oauth-domain`,async e=>{if(e.length===0||T(e))return{stdout:lj(),stderr:``,exitCode:0};let t=w(e);if(`error`in t)return uj(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-BwcT7LDC.js`).then(e=>e.t);try{return await hj(a,n,r,i)}catch(e){return uj(e instanceof Error?e.message:String(e))}})}function _j(){return C(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-BvFDHT6Q.js`);return n(e,t)})}const vj=[`--download`,`-d`,`--view`,`-v`],yj=[`--size`],bj={low:256,medium:768,high:1536};function xj(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1524
+ `)}\n`,stderr:``,exitCode:0}}async function dj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain add: requires <providerId> and <domain>
1525
+ `,exitCode:1};let r=e.getExtraOAuthDomains(t),i=n.toLowerCase();return r.some(e=>e.toLowerCase()===i)?{stdout:`(${n} already in ${t} extras)\n`,stderr:``,exitCode:0}:(await e.setExtraOAuthDomainsAsync(t,[...r,n]),{stdout:`Added ${n} to ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0})}async function fj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain remove: requires <providerId> and <domain>
1526
+ `,exitCode:1};let r=e.getExtraOAuthDomains(t),i=n.toLowerCase(),a=r.filter(e=>e.toLowerCase()!==i);return a.length===r.length?{stdout:`(${n} not found in ${t} extras)\n`,stderr:``,exitCode:0}:(await e.setExtraOAuthDomainsAsync(t,a),{stdout:`Removed ${n} from ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0})}async function pj(e,t){return t?(await e.setExtraOAuthDomainsAsync(t,[]),{stdout:`Cleared extra domains for ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0}):{stdout:``,stderr:`oauth-domain clear: requires <providerId>
1527
+ `,exitCode:1}}async function mj(e,t,n,r){switch(t){case`list`:return uj(e,n);case`add`:return dj(e,n,r);case`remove`:return fj(e,n,r);case`clear`:return pj(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${cj()}`,exitCode:1}}}function hj(){return C(`oauth-domain`,async e=>{if(e.length===0||T(e))return{stdout:cj(),stderr:``,exitCode:0};let t=w(e);if(`error`in t)return lj(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-BzvHM2hU.js`).then(e=>e.t);try{return await mj(a,n,r,i)}catch(e){return lj(e instanceof Error?e.message:String(e))}})}function gj(){return C(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-UGPfXsQp.js`);return n(e,t)})}const _j=[`--download`,`-d`,`--view`,`-v`],vj=[`--size`],yj={low:256,medium:768,high:1536};function bj(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1547
1528
 
1548
1529
  VFS paths are served in a new browser tab via the preview service worker.
1549
1530
  URLs (http/https/etc.) are opened directly in a new tab.
@@ -1557,19 +1538,19 @@ Examples:
1557
1538
  medium (768x768), high (1536x1536), or a custom WxH
1558
1539
  box like 512x512. The image is fit inside the box
1559
1540
  with aspect ratio preserved and is never upscaled.
1560
- `,stderr:``,exitCode:0}}function Sj(e){if(e in bj){let t=bj[e];return{maxW:t,maxH:t}}let t=/^(\d+)x(\d+)$/.exec(e);if(t){let e=parseInt(t[1],10),n=parseInt(t[2],10);if(e>0&&n>0)return{maxW:e,maxH:n}}return null}function Cj(e,t){if(t===`image/png`||t===`image/apng`){if(e.length<26)return!1;let t=e[25];return t===4||t===6}if(t===`image/webp`){if(e.length<16)return!1;let t=String.fromCharCode(e[12],e[13],e[14],e[15]);return t===`VP8L`?!0:t===`VP8X`?e.length<21?!1:!!(e[20]&16):!1}return!1}function wj(){return`open --view requires --size to bound the inlined image. Use one of:
1541
+ `,stderr:``,exitCode:0}}function xj(e){if(e in yj){let t=yj[e];return{maxW:t,maxH:t}}let t=/^(\d+)x(\d+)$/.exec(e);if(t){let e=parseInt(t[1],10),n=parseInt(t[2],10);if(e>0&&n>0)return{maxW:e,maxH:n}}return null}function Sj(e,t){if(t===`image/png`||t===`image/apng`){if(e.length<26)return!1;let t=e[25];return t===4||t===6}if(t===`image/webp`){if(e.length<16)return!1;let t=String.fromCharCode(e[12],e[13],e[14],e[15]);return t===`VP8L`?!0:t===`VP8X`?e.length<21?!1:!!(e[20]&16):!1}return!1}function Cj(){return`open --view requires --size to bound the inlined image. Use one of:
1561
1542
  --size low (256x256)
1562
1543
  --size medium (768x768)
1563
1544
  --size high (1536x1536)
1564
1545
  --size WxH (custom box, e.g. 512x512)
1565
- `}const Tj=/* @__PURE__ */ new Set([`image/png`,`image/webp`]);function Ej(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}async function Dj(e,t){let n=Ej(e),r=new Blob([n],{type:t}),i=await createImageBitmap(r);try{return{width:i.width,height:i.height}}finally{i.close?.()}}async function Oj(e,t,n,r){let i=Ej(e),a=new Blob([i],{type:t}),o=await createImageBitmap(a);try{let i=o.width,a=o.height,s=Math.min(n/i,r/a,1),c=Math.max(1,Math.round(i*s)),l=Math.max(1,Math.round(a*s)),u=new OffscreenCanvas(c,l),d=u.getContext(`2d`);if(!d)throw Error(`failed to acquire 2d context for resize`);d.drawImage(o,0,0,c,l);let f=Cj(e,t)?Tj.has(t)?t:`image/png`:`image/jpeg`,p=await u.convertToBlob(f===`image/jpeg`?{type:`image/jpeg`,quality:.85}:{type:f});return{bytes:new Uint8Array(await p.arrayBuffer()),mime:f,width:c,height:l,nativeWidth:i,nativeHeight:a}}finally{o.close?.()}}function kj(e){let t=w(e,{bool:vj,value:yj});if(`error`in t)return{error:`open: ${t.error}`};let n=t.values.get(`--size`);return n?.startsWith(`-`)&&n!==`-`?{error:`open: unknown flag: ${n}`}:{download:t.bools.has(`--download`)||t.bools.has(`-d`),view:t.bools.has(`--view`)||t.bools.has(`-v`),sizeSpec:n,targets:t.positionals}}function Aj(e){return{ok:!0,message:e}}function G(e){return{ok:!1,result:{stdout:``,stderr:e,exitCode:1}}}function jj(e){return e?` (targetId: ${e})`:``}function Mj(e,t,n){return async r=>{if(e)return e.createPage(r);if(t){window.open(r,`_blank`,`noopener,noreferrer`);return}try{await n.call(`window-open`,{url:r,target:`_blank`,features:`noopener,noreferrer`})}catch(e){throw Error(`open: ${e instanceof Error?e.message:String(e)}`)}}}async function Nj(e,t,n,r,i){let a=t.fs.resolvePath(t.cwd,e);if(n){let e=(a.split(`/`).pop()??``).replace(/\.shtml$/,``);try{return await n.open(e),Aj(`opened sprinkle ${e} from ${a}`)}catch(e){return G(`open: ${e instanceof Error?e.message:String(e)}\n`)}}if(r){let e=await kr(t.fs,Lr(a)),n=Kr(a,e),r;try{r=await i(n)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return Aj(`opened ${a} → ${n}${jj(r)}`)}return G(`open: sprinkle manager not initialized
1566
- `)}async function Pj(e,t,n){if(!t)return G(`open: browser APIs are unavailable in this environment
1567
- `);let r;try{r=await n(e)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return Aj(`opened ${e}${jj(r)}`)}async function Fj(e,n,r,i){let a;try{a=await r.fs.stat(n)}catch{return G(`open: no such file: ${e}\n`)}if(!a.isFile)return G(`open: not a file: ${e}\n`);let o;try{o=await r.fs.readFileBuffer(n)}catch{return G(`open: failed to read: ${e}\n`)}let s=Dr(n),c=new Uint8Array(o),l=null;if(i!==void 0&&(l=Sj(i),!l))return G(`open: invalid --size spec '${i}' (expected low|medium|high or WxH such as 512x512)\n`);if(!l){let t;try{t=await Dj(c,s)}catch(t){return G(`open: not an image or failed to decode: ${e} (${t instanceof Error?t.message:String(t)})\n`)}let r=Math.round(c.byteLength/1024);return G(`open --view: ${n} is ${t.width}x${t.height} (${r} KB, ${s})\n`+wj())}let u;try{u=await Oj(c,s,l.maxW,l.maxH)}catch(t){return G(`open: not an image or failed to decode: ${e} (${t instanceof Error?t.message:String(t)})\n`)}let d=t(u.bytes),f=Math.round(u.bytes.byteLength/1024);return Aj(`${n} (${u.nativeWidth}x${u.nativeHeight} → ${u.width}x${u.height}, ${f} KB, ${u.mime})\n<img:data:${u.mime};base64,${d}>`)}async function Ij(e,t,n,r){if(!r)return G(`open: --download requires the in-panel terminal (DOM-only)
1568
- `);let i;try{i=await n.fs.stat(t)}catch{return G(`open: no such file: ${e}\n`)}if(!i.isFile)return G(`open: not a file: ${e}\n`);let a;try{a=await n.fs.readFileBuffer(t)}catch{return G(`open: failed to read: ${e}\n`)}let o=new Uint8Array(a.byteLength);o.set(a);let s=new Blob([o.buffer],{type:Dr(t)}),c=URL.createObjectURL(s),l=document.createElement(`a`);return l.href=c,l.download=Nr(t)||`download`,l.style.display=`none`,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(c),0),Aj(`downloaded ${t}`)}async function Lj(e,t,n,r){if(!n)return G(`open: browser APIs are unavailable in this environment
1569
- `);let i=!1;try{i=(await t.fs.stat(e)).isDirectory}catch{}let a=await kr(t.fs,i?e:Lr(e)),o=Kr(e,a),s;try{s=await r(o)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return Aj(`opened ${e} → ${o}${jj(s)}`)}async function Rj(e,t,n,r){if(!jr(e)&&e.endsWith(`.shtml`)&&t.fs)return Nj(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return G(`open: browser APIs are unavailable in this environment
1570
- `);if(jr(e))return Pj(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?Fj(e,i,t,n.sizeSpec):n.download?Ij(e,i,t,r.hasDom):Lj(i,t,r.canOpenWindow,r.openExternal)}function zj(e){return C(`open`,async(t,n)=>{if(t.length===0||T(t,{valueFlags:yj}))return xj();let r=kj(t);if(`error`in r)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{download:i,view:a,sizeSpec:o,targets:s}=r;if(s.length===0)return xj();let c=globalThis.__slicc_sprinkleManager,l=typeof window<`u`&&typeof document<`u`,u=l?null:b(),d={canOpenWindow:!!e||l||!!u,hasDom:l,sprinkleManager:c,openExternal:Mj(e,l,u)},f=[];for(let e of s){let t=await Rj(e,n,{view:a,download:i,sizeSpec:o},d);if(!t.ok)return t.result;f.push(t.message)}return{stdout:f.join(`
1546
+ `}const wj=/* @__PURE__ */ new Set([`image/png`,`image/webp`]);function Tj(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}async function Ej(e,t){let n=Tj(e),r=new Blob([n],{type:t}),i=await createImageBitmap(r);try{return{width:i.width,height:i.height}}finally{i.close?.()}}async function Dj(e,t,n,r){let i=Tj(e),a=new Blob([i],{type:t}),o=await createImageBitmap(a);try{let i=o.width,a=o.height,s=Math.min(n/i,r/a,1),c=Math.max(1,Math.round(i*s)),l=Math.max(1,Math.round(a*s)),u=new OffscreenCanvas(c,l),d=u.getContext(`2d`);if(!d)throw Error(`failed to acquire 2d context for resize`);d.drawImage(o,0,0,c,l);let f=Sj(e,t)?wj.has(t)?t:`image/png`:`image/jpeg`,p=await u.convertToBlob(f===`image/jpeg`?{type:`image/jpeg`,quality:.85}:{type:f});return{bytes:new Uint8Array(await p.arrayBuffer()),mime:f,width:c,height:l,nativeWidth:i,nativeHeight:a}}finally{o.close?.()}}function Oj(e){let t=w(e,{bool:_j,value:vj});if(`error`in t)return{error:`open: ${t.error}`};let n=t.values.get(`--size`);return n?.startsWith(`-`)&&n!==`-`?{error:`open: unknown flag: ${n}`}:{download:t.bools.has(`--download`)||t.bools.has(`-d`),view:t.bools.has(`--view`)||t.bools.has(`-v`),sizeSpec:n,targets:t.positionals}}function kj(e){return{ok:!0,message:e}}function G(e){return{ok:!1,result:{stdout:``,stderr:e,exitCode:1}}}function Aj(e){return e?` (targetId: ${e})`:``}function jj(e,t,n){return async r=>{if(e)return e.createPage(r);if(t){window.open(r,`_blank`,`noopener,noreferrer`);return}try{await n.call(`window-open`,{url:r,target:`_blank`,features:`noopener,noreferrer`})}catch(e){throw Error(`open: ${e instanceof Error?e.message:String(e)}`)}}}async function Mj(e,t,n,r,i){let a=t.fs.resolvePath(t.cwd,e);if(n){let e=(a.split(`/`).pop()??``).replace(/\.shtml$/,``);try{return await n.open(e),kj(`opened sprinkle ${e} from ${a}`)}catch(e){return G(`open: ${e instanceof Error?e.message:String(e)}\n`)}}if(r){let e=await kr(t.fs,Lr(a)),n=Kr(a,e),r;try{r=await i(n)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return kj(`opened ${a} → ${n}${Aj(r)}`)}return G(`open: sprinkle manager not initialized
1547
+ `)}async function Nj(e,t,n){if(!t)return G(`open: browser APIs are unavailable in this environment
1548
+ `);let r;try{r=await n(e)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return kj(`opened ${e}${Aj(r)}`)}async function Pj(e,n,r,i){let a;try{a=await r.fs.stat(n)}catch{return G(`open: no such file: ${e}\n`)}if(!a.isFile)return G(`open: not a file: ${e}\n`);let o;try{o=await r.fs.readFileBuffer(n)}catch{return G(`open: failed to read: ${e}\n`)}let s=Dr(n),c=new Uint8Array(o),l=null;if(i!==void 0&&(l=xj(i),!l))return G(`open: invalid --size spec '${i}' (expected low|medium|high or WxH such as 512x512)\n`);if(!l){let t;try{t=await Ej(c,s)}catch(t){return G(`open: not an image or failed to decode: ${e} (${t instanceof Error?t.message:String(t)})\n`)}let r=Math.round(c.byteLength/1024);return G(`open --view: ${n} is ${t.width}x${t.height} (${r} KB, ${s})\n`+Cj())}let u;try{u=await Dj(c,s,l.maxW,l.maxH)}catch(t){return G(`open: not an image or failed to decode: ${e} (${t instanceof Error?t.message:String(t)})\n`)}let d=t(u.bytes),f=Math.round(u.bytes.byteLength/1024);return kj(`${n} (${u.nativeWidth}x${u.nativeHeight} → ${u.width}x${u.height}, ${f} KB, ${u.mime})\n<img:data:${u.mime};base64,${d}>`)}async function Fj(e,t,n,r){if(!r)return G(`open: --download requires the in-panel terminal (DOM-only)
1549
+ `);let i;try{i=await n.fs.stat(t)}catch{return G(`open: no such file: ${e}\n`)}if(!i.isFile)return G(`open: not a file: ${e}\n`);let a;try{a=await n.fs.readFileBuffer(t)}catch{return G(`open: failed to read: ${e}\n`)}let o=new Uint8Array(a.byteLength);o.set(a);let s=new Blob([o.buffer],{type:Dr(t)}),c=URL.createObjectURL(s),l=document.createElement(`a`);return l.href=c,l.download=Nr(t)||`download`,l.style.display=`none`,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(c),0),kj(`downloaded ${t}`)}async function Ij(e,t,n,r){if(!n)return G(`open: browser APIs are unavailable in this environment
1550
+ `);let i=!1;try{i=(await t.fs.stat(e)).isDirectory}catch{}let a=await kr(t.fs,i?e:Lr(e)),o=Kr(e,a),s;try{s=await r(o)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return kj(`opened ${e} → ${o}${Aj(s)}`)}async function Lj(e,t,n,r){if(!jr(e)&&e.endsWith(`.shtml`)&&t.fs)return Mj(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return G(`open: browser APIs are unavailable in this environment
1551
+ `);if(jr(e))return Nj(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?Pj(e,i,t,n.sizeSpec):n.download?Fj(e,i,t,r.hasDom):Ij(i,t,r.canOpenWindow,r.openExternal)}function Rj(e){return C(`open`,async(t,n)=>{if(t.length===0||T(t,{valueFlags:vj}))return bj();let r=Oj(t);if(`error`in r)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{download:i,view:a,sizeSpec:o,targets:s}=r;if(s.length===0)return bj();let c=globalThis.__slicc_sprinkleManager,l=typeof window<`u`&&typeof document<`u`,u=l?null:b(),d={canOpenWindow:!!e||l||!!u,hasDom:l,sprinkleManager:c,openExternal:jj(e,l,u)},f=[];for(let e of s){let t=await Lj(e,n,{view:a,download:i,sizeSpec:o},d);if(!t.ok)return t.result;f.push(t.message)}return{stdout:f.join(`
1571
1552
  `)+`
1572
- `,stderr:``,exitCode:0}})}function Bj(){return C(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-pkRkZ2EZ.js`);return n(e,t)})}function Vj(e=`pdftk`){return C(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BckBWdRW.js`);return r(e,t,n)})}function Hj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1553
+ `,stderr:``,exitCode:0}})}function zj(){return C(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-Dj2TQibJ.js`);return n(e,t)})}function Bj(e=`pdftk`){return C(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BckBWdRW.js`);return r(e,t,n)})}function Vj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1573
1554
 
1574
1555
  Rasterize PDF pages to images. Writes <prefix>-<n>.<ext> per page, where <n>
1575
1556
  is zero-padded to the digit width of the last page (out-1.png for a 9-page
@@ -1596,8 +1577,8 @@ Examples:
1596
1577
  pdftoppm -png -r 150 doc.pdf page
1597
1578
  pdftoppm -jpeg -jpegopt quality=80 -f 1 -l 3 doc.pdf out
1598
1579
  pdftoppm -png -singlefile -scale-to 1024 doc.pdf cover
1599
- `,stderr:``,exitCode:0}}function Uj(e,t){if(e===void 0)throw Error(`missing argument for ${t}`);let n=Number(e);if(!Number.isFinite(n)||!Number.isInteger(n)||n<=0)throw Error(`invalid ${t} value: ${e}`);return n}function Wj(e){if(e===void 0)throw Error(`missing argument for -jpegopt`);for(let t of e.split(`,`)){let[e,n]=t.split(`=`);if(e?.trim()!==`quality`)continue;let r=Number(n);if(!Number.isFinite(r)||r<0||r>100)throw Error(`invalid -jpegopt quality: ${n}`);return r}throw Error(`unsupported -jpegopt: ${e}`)}function Gj(e){let t=`png`,n=150,r,i,a,o,s,c,l=!1,u=[];for(let d=0;d<e.length;d++){let f=e[d];switch(f){case`-png`:t=`png`;break;case`-jpeg`:t=`jpeg`;break;case`-jpegopt`:c=Wj(e[++d]),t=`jpeg`;break;case`-r`:n=Uj(e[++d],`-r`);break;case`-f`:r=Uj(e[++d],`-f`);break;case`-l`:i=Uj(e[++d],`-l`);break;case`-scale-to`:a=Uj(e[++d],`-scale-to`);break;case`-scale-to-x`:o=Uj(e[++d],`-scale-to-x`);break;case`-scale-to-y`:s=Uj(e[++d],`-scale-to-y`);break;case`-singlefile`:l=!0;break;default:if(f.startsWith(`-`))throw Error(`unsupported option ${f}`);u.push(f)}}if(u.length===0)throw Error(`expected an input PDF`);if(u.length>2)throw Error(`expected at most one input PDF and one output prefix`);if(r!==void 0&&i!==void 0&&r>i)throw Error(`invalid page range: ${r}-${i}`);return{inputPath:u[0],outputRoot:u[1],format:t,dpi:n,firstPage:r,lastPage:i,scaleTo:a,scaleToX:o,scaleToY:s,quality:c,singleFile:l}}function Kj(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function qj(e,t,n,r){let i=String(n).length;return`${e}-${String(t).padStart(i,`0`)}.${r}`}function Jj(e){return e===`jpeg`?`jpg`:`png`}function Yj(e){return e.scaleToX===void 0?e.scaleToY===void 0?e.scaleTo===void 0?{scale:da(e.dpi)}:{longEdge:e.scaleTo}:{height:e.scaleToY}:{width:e.scaleToX}}async function Xj(e,t){let n=e.fs.resolvePath(e.cwd,t),r=await e.fs.readFileBuffer(n);if(!la(r))throw Error(`${t}: not a PDF file`);return r}function Zj(e=`pdftoppm`){return C(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Hj();let r;try{r=Gj(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let t=await Xj(n,r.inputPath),i=Jj(r.format),a=r.outputRoot??Kj(Nr(r.inputPath)),o=[];return await ca(t,{firstPage:r.firstPage,lastPage:r.singleFile?r.firstPage??1:r.lastPage,format:r.format,quality:r.quality,...Yj(r)},async(e,t)=>{let s=r.singleFile?`${a}.${i}`:qj(a,e.pageNumber,t.lastPage,i);await n.fs.writeFile(n.fs.resolvePath(n.cwd,s),e.bytes),o.push(s)}),o.length===0?{stdout:``,stderr:`${e}: no pages to render\n`,exitCode:1}:{stdout:`${o.join(`
1600
- `)}\n`,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}})}function Qj(e=`pdftotext`){return C(e,async(t,n)=>{let{runPdftotext:r}=await import(`./run-fiJDsmVo.js`);return r(e,t,n)})}function $j(e){let t=e.filter(e=>e.teleportEligible===!0&&e.bootstrapId&&e.floatType);if(t.length===0)return null;let n=t.filter(e=>e.floatType===`standalone`),r=n.length>0?n:t;r.sort((e,t)=>(t.lastActivity??0)-(e.lastActivity??0));let i=r[0];return{runtimeId:i.runtimeId,bootstrapId:i.bootstrapId,floatType:i.floatType}}function eM(){Qw(()=>()=>ie()),Zw(()=>()=>$j(ie()))}const tM=`/workspace/.plugins/sources`;function nM(e){return{stdout:e,stderr:``,exitCode:0}}function K(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function rM(e,t){let n=w(t,{});return`error`in n?K(`plugin ${e}: ${n.error}`):{ok:!0,positionals:n.positionals}}function iM(){return`usage: plugin <command> [args]
1580
+ `,stderr:``,exitCode:0}}function Hj(e,t){if(e===void 0)throw Error(`missing argument for ${t}`);let n=Number(e);if(!Number.isFinite(n)||!Number.isInteger(n)||n<=0)throw Error(`invalid ${t} value: ${e}`);return n}function Uj(e){if(e===void 0)throw Error(`missing argument for -jpegopt`);for(let t of e.split(`,`)){let[e,n]=t.split(`=`);if(e?.trim()!==`quality`)continue;let r=Number(n);if(!Number.isFinite(r)||r<0||r>100)throw Error(`invalid -jpegopt quality: ${n}`);return r}throw Error(`unsupported -jpegopt: ${e}`)}function Wj(e){let t=`png`,n=150,r,i,a,o,s,c,l=!1,u=[];for(let d=0;d<e.length;d++){let f=e[d];switch(f){case`-png`:t=`png`;break;case`-jpeg`:t=`jpeg`;break;case`-jpegopt`:c=Uj(e[++d]),t=`jpeg`;break;case`-r`:n=Hj(e[++d],`-r`);break;case`-f`:r=Hj(e[++d],`-f`);break;case`-l`:i=Hj(e[++d],`-l`);break;case`-scale-to`:a=Hj(e[++d],`-scale-to`);break;case`-scale-to-x`:o=Hj(e[++d],`-scale-to-x`);break;case`-scale-to-y`:s=Hj(e[++d],`-scale-to-y`);break;case`-singlefile`:l=!0;break;default:if(f.startsWith(`-`))throw Error(`unsupported option ${f}`);u.push(f)}}if(u.length===0)throw Error(`expected an input PDF`);if(u.length>2)throw Error(`expected at most one input PDF and one output prefix`);if(r!==void 0&&i!==void 0&&r>i)throw Error(`invalid page range: ${r}-${i}`);return{inputPath:u[0],outputRoot:u[1],format:t,dpi:n,firstPage:r,lastPage:i,scaleTo:a,scaleToX:o,scaleToY:s,quality:c,singleFile:l}}function Gj(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function Kj(e,t,n,r){let i=String(n).length;return`${e}-${String(t).padStart(i,`0`)}.${r}`}function qj(e){return e===`jpeg`?`jpg`:`png`}function Jj(e){return e.scaleToX===void 0?e.scaleToY===void 0?e.scaleTo===void 0?{scale:da(e.dpi)}:{longEdge:e.scaleTo}:{height:e.scaleToY}:{width:e.scaleToX}}async function Yj(e,t){let n=e.fs.resolvePath(e.cwd,t),r=await e.fs.readFileBuffer(n);if(!la(r))throw Error(`${t}: not a PDF file`);return r}function Xj(e=`pdftoppm`){return C(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Vj();let r;try{r=Wj(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let t=await Yj(n,r.inputPath),i=qj(r.format),a=r.outputRoot??Gj(Nr(r.inputPath)),o=[];return await ca(t,{firstPage:r.firstPage,lastPage:r.singleFile?r.firstPage??1:r.lastPage,format:r.format,quality:r.quality,...Jj(r)},async(e,t)=>{let s=r.singleFile?`${a}.${i}`:Kj(a,e.pageNumber,t.lastPage,i);await n.fs.writeFile(n.fs.resolvePath(n.cwd,s),e.bytes),o.push(s)}),o.length===0?{stdout:``,stderr:`${e}: no pages to render\n`,exitCode:1}:{stdout:`${o.join(`
1581
+ `)}\n`,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}})}function Zj(e=`pdftotext`){return C(e,async(t,n)=>{let{runPdftotext:r}=await import(`./run-fiJDsmVo.js`);return r(e,t,n)})}function Qj(e){let t=e.filter(e=>e.teleportEligible===!0&&e.bootstrapId&&e.floatType);if(t.length===0)return null;let n=t.filter(e=>e.floatType===`standalone`),r=n.length>0?n:t;r.sort((e,t)=>(t.lastActivity??0)-(e.lastActivity??0));let i=r[0];return{runtimeId:i.runtimeId,bootstrapId:i.bootstrapId,floatType:i.floatType}}function $j(){Zw(()=>()=>ie()),Xw(()=>()=>Qj(ie()))}const eM=`/workspace/.plugins/sources`;function tM(e){return{stdout:e,stderr:``,exitCode:0}}function K(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function nM(e,t){let n=w(t,{});return`error`in n?K(`plugin ${e}: ${n.error}`):{ok:!0,positionals:n.positionals}}function rM(){return`usage: plugin <command> [args]
1601
1582
 
1602
1583
  Load Agent Plugins packages (agent-plugins.org spec v1.0.0): portable
1603
1584
  directories bundling Agent Skills (skills/*/SKILL.md) and MCP servers
@@ -1607,7 +1588,7 @@ Commands:
1607
1588
  install <path|repo> Validate the plugin and register it. <repo> is a
1608
1589
  GitHub reference (owner/repo, owner/repo@branch, or
1609
1590
  https://github.com/owner/repo[/tree/branch[/dir]]),
1610
- downloaded into ${tM}/.
1591
+ downloaded into ${eM}/.
1611
1592
  Skills surface through the standard skills discovery;
1612
1593
  streamable-http MCP servers are added to the MCP
1613
1594
  store as "<plugin>:<server>".
@@ -1629,36 +1610,36 @@ Examples:
1629
1610
  plugin list
1630
1611
  plugin info my-plugin
1631
1612
  plugin remove my-plugin
1632
- `}function aM(e={}){return C(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return nM(iM());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await fM(i,a,e);case`list`:case`ls`:return await gM(i,e);case`info`:return await _M(i,e);case`validate`:return await vM(i,a,e,pa(n?.env));case`remove`:case`rm`:case`delete`:return await yM(i,e);default:return K(`plugin: unknown subcommand "${r}" (try \`plugin --help\`)`)}}catch(e){return K(`plugin ${r}: ${e instanceof Error?e.message:String(e)}`)}})}async function oM(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-BhKa6zpE.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-Bfy_NRtT.js`).then(e=>e.n);return t.create({dbName:n})}async function sM(e,t,n){let r=bM(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-Dh2WfAse.js`).then(e=>e.t),a=i(e);if(a){let e=`${a.owner}/${a.repo}${a.branch?`@${a.branch}`:``}${a.path?`/${a.path}`:``}`;return{kind:`github`,ref:{...a,display:e}}}return{kind:`error`,message:`${r} does not exist and "${e}" is not a GitHub reference (owner/repo[@branch] or https://github.com/owner/repo[/tree/branch[/dir]])`}}function cM(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function lM(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${tM}/${t.map(cM).join(`--`)}`}async function uM(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-D0xv38-9.js`).then(e=>e.i),s=await i(e.owner,e.repo,r,e.branch);if(s.status===`error`)return`failed to download ${e.display}: ${s.message}`;let c=a(s.files),l=e.path?e.path.replace(/^\/|\/$/g,``)+`/`:``;if(!c[`${l}plugin.json`])return`no plugin.json found at ${e.display} — not an Agent Plugins package`;try{await n.rm(t,{recursive:!0})}catch{}return await n.mkdir(t,{recursive:!0}),(await o(c,l,t,n,!1)).length===0?`no files found at ${e.display}`:null}async function dM(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function fM(e,t,n){if(T(e))return nM(`usage: plugin install <path|repo>
1613
+ `}function iM(e={}){return C(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return tM(rM());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await dM(i,a,e);case`list`:case`ls`:return await hM(i,e);case`info`:return await gM(i,e);case`validate`:return await _M(i,a,e,pa(n?.env));case`remove`:case`rm`:case`delete`:return await vM(i,e);default:return K(`plugin: unknown subcommand "${r}" (try \`plugin --help\`)`)}}catch(e){return K(`plugin ${r}: ${e instanceof Error?e.message:String(e)}`)}})}async function aM(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-BhKa6zpE.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-Bfy_NRtT.js`).then(e=>e.n);return t.create({dbName:n})}async function oM(e,t,n){let r=yM(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-Dh2WfAse.js`).then(e=>e.t),a=i(e);if(a){let e=`${a.owner}/${a.repo}${a.branch?`@${a.branch}`:``}${a.path?`/${a.path}`:``}`;return{kind:`github`,ref:{...a,display:e}}}return{kind:`error`,message:`${r} does not exist and "${e}" is not a GitHub reference (owner/repo[@branch] or https://github.com/owner/repo[/tree/branch[/dir]])`}}function sM(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function cM(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${eM}/${t.map(sM).join(`--`)}`}async function lM(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-D0xv38-9.js`).then(e=>e.i),s=await i(e.owner,e.repo,r,e.branch);if(s.status===`error`)return`failed to download ${e.display}: ${s.message}`;let c=a(s.files),l=e.path?e.path.replace(/^\/|\/$/g,``)+`/`:``;if(!c[`${l}plugin.json`])return`no plugin.json found at ${e.display} — not an Agent Plugins package`;try{await n.rm(t,{recursive:!0})}catch{}return await n.mkdir(t,{recursive:!0}),(await o(c,l,t,n,!1)).length===0?`no files found at ${e.display}`:null}async function uM(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function dM(e,t,n){if(T(e))return tM(`usage: plugin install <path|repo>
1633
1614
 
1634
1615
  Loads the Agent Plugins package at <path>, or downloads it from a GitHub
1635
1616
  reference (owner/repo, owner/repo@branch, or
1636
1617
  https://github.com/owner/repo[/tree/branch[/dir]]) into
1637
- ${tM}/ first. Validates plugin.json (closed
1618
+ ${eM}/ first. Validates plugin.json (closed
1638
1619
  schema, name constraints), discovers skills/*/SKILL.md, and validates
1639
1620
  mcp.json. On success the plugin is recorded in
1640
1621
  /workspace/.plugins/plugins.json — its skills then surface through the
1641
1622
  standard skills discovery, and each supported streamable-http MCP server
1642
1623
  is registered in the MCP store as "<plugin>:<server>".
1643
- `);let r=rM(`install`,e);if(!(`ok`in r))return r;if(r.positionals.length<1)return K(`plugin install: expected <path|repo>`);let i=await oM(n),a=await sM(r.positionals[0],t,i);if(a.kind===`error`)return K(`plugin install: ${a.message}`);let o,s;if(a.kind===`github`){if(!n.fetch)return K(`plugin install: GitHub installs are unavailable (no network fetch configured)`);o=lM(a.ref),s=a.ref.display;let e=await uM(a.ref,o,i,n.fetch);if(e)return K(`plugin install: ${e}`)}else o=a.root;let{loadPluginFromDirectory:c}=await import(`./loader-COfyniye.js`),l=await c(i,o);if(!l.ok)return a.kind===`github`&&await dM(i,o),K(`plugin install: plugin at ${s??o} was rejected:\n${xM(l.diagnostics)}`);let{plugin:u}=l,d=u.manifest.name,{getInstalledPlugin:f,setInstalledPlugin:p}=await import(`./store-1cJ4oabY.js`),m=await f(d,n.fs);if(m&&m.root!==o)return a.kind===`github`&&await dM(i,o),K(`plugin install: a plugin named "${d}" is already installed from ${m.root} (remove it first)`);let h=await hM(u,n),g=await mM(d,m?.mcpServerNames,h.registered,n);return await p(d,{root:o,version:u.manifest.version,description:u.manifest.description,installedAt:(/* @__PURE__ */ new Date()).toISOString(),mcpServerNames:h.registered,...s?{source:s}:{}},n.fs),nM(pM(u,h,g,s??o,l.diagnostics))}function pM(e,t,n,r,i){let a=e.manifest.name,o=t.registered,s=e.mcp.servers.filter(e=>e.status!==`supported`),c=[`Installed agent plugin "${a}"${e.manifest.version?` v${e.manifest.version}`:``} from ${r}`,` skills: ${e.skills.length}${e.skills.length>0?` (${e.skills.map(e=>e.name).join(`, `)})`:``}`,` mcp: ${o.length} registered${o.length>0?` (${o.join(`, `)})`:``}${s.length>0?`, ${s.length} skipped`:``}${n>0?`, ${n} removed from previous install`:``}`];return t.conflicts.length>0&&c.push(` warning: not bridged — MCP server name(s) already in use and not owned by this plugin: ${t.conflicts.join(`, `)} (remove them with \`mcp remove\` first)`),i.length>0&&c.push(`Diagnostics:`,xM(i)),c.join(`
1624
+ `);let r=nM(`install`,e);if(!(`ok`in r))return r;if(r.positionals.length<1)return K(`plugin install: expected <path|repo>`);let i=await aM(n),a=await oM(r.positionals[0],t,i);if(a.kind===`error`)return K(`plugin install: ${a.message}`);let o,s;if(a.kind===`github`){if(!n.fetch)return K(`plugin install: GitHub installs are unavailable (no network fetch configured)`);o=cM(a.ref),s=a.ref.display;let e=await lM(a.ref,o,i,n.fetch);if(e)return K(`plugin install: ${e}`)}else o=a.root;let{loadPluginFromDirectory:c}=await import(`./loader-COfyniye.js`),l=await c(i,o);if(!l.ok)return a.kind===`github`&&await uM(i,o),K(`plugin install: plugin at ${s??o} was rejected:\n${bM(l.diagnostics)}`);let{plugin:u}=l,d=u.manifest.name,{getInstalledPlugin:f,setInstalledPlugin:p}=await import(`./store-1cJ4oabY.js`),m=await f(d,n.fs);if(m&&m.root!==o)return a.kind===`github`&&await uM(i,o),K(`plugin install: a plugin named "${d}" is already installed from ${m.root} (remove it first)`);let h=await mM(u,n),g=await pM(d,m?.mcpServerNames,h.registered,n);return await p(d,{root:o,version:u.manifest.version,description:u.manifest.description,installedAt:(/* @__PURE__ */ new Date()).toISOString(),mcpServerNames:h.registered,...s?{source:s}:{}},n.fs),tM(fM(u,h,g,s??o,l.diagnostics))}function fM(e,t,n,r,i){let a=e.manifest.name,o=t.registered,s=e.mcp.servers.filter(e=>e.status!==`supported`),c=[`Installed agent plugin "${a}"${e.manifest.version?` v${e.manifest.version}`:``} from ${r}`,` skills: ${e.skills.length}${e.skills.length>0?` (${e.skills.map(e=>e.name).join(`, `)})`:``}`,` mcp: ${o.length} registered${o.length>0?` (${o.join(`, `)})`:``}${s.length>0?`, ${s.length} skipped`:``}${n>0?`, ${n} removed from previous install`:``}`];return t.conflicts.length>0&&c.push(` warning: not bridged — MCP server name(s) already in use and not owned by this plugin: ${t.conflicts.join(`, `)} (remove them with \`mcp remove\` first)`),i.length>0&&c.push(`Diagnostics:`,bM(i)),c.join(`
1644
1625
  `)+`
1645
- `}async function mM(e,t,n,r){let i=(t??[]).filter(e=>!n.includes(e));if(i.length===0)return 0;let{deleteServer:a,getServer:o}=await import(`./store-BRq0dNJo.js`).then(e=>e.r),s=0;for(let t of i)(await o(t,r.fs))?.pluginOrigin===e&&await a(t,r.fs)&&(s+=1);return s}async function hM(e,t){let n=e.mcp.servers.filter(e=>e.status===`supported`);if(n.length===0)return{registered:[],conflicts:[]};let{getServer:r,setServer:i}=await import(`./store-BRq0dNJo.js`).then(e=>e.r),{McpClient:a}=await import(`./client-b0gTezl8.js`),o=[],s=[];for(let c of n){let n=c.config,l=`${e.manifest.name}:${c.name}`,u=await r(l,t.fs);if(u&&u.pluginOrigin!==e.manifest.name){s.push(l);continue}let d=[];try{let e=new a({url:n.url,headers:n.headers});await e.initialize(),d=await e.toolsList()}catch{}await i(l,{url:n.url,...n.headers?{headers:n.headers}:{},tools:d,addedAt:(/* @__PURE__ */ new Date()).toISOString(),pluginOrigin:e.manifest.name},t.fs),o.push(l)}return{registered:o,conflicts:s}}async function gM(e,t){if(T(e))return nM(`usage: plugin list
1646
- `);let n=rM(`list`,e);if(!(`ok`in n))return n;let{listInstalledPlugins:r}=await import(`./store-1cJ4oabY.js`),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return nM("No agent plugins installed. Use `plugin install <path>`.\n");let o=[[`NAME`,`VERSION`,`ROOT`,`MCP`]];for(let e of a){let t=i[e];o.push([e,t.version??`-`,t.root,String(t.mcpServerNames?.length??0)])}let s=o[0].map((e,t)=>Math.max(...o.map(e=>e[t].length)));return nM(o.map(e=>e.map((e,t)=>e.padEnd(s[t])).join(` `)).join(`
1626
+ `}async function pM(e,t,n,r){let i=(t??[]).filter(e=>!n.includes(e));if(i.length===0)return 0;let{deleteServer:a,getServer:o}=await import(`./store-BRq0dNJo.js`).then(e=>e.r),s=0;for(let t of i)(await o(t,r.fs))?.pluginOrigin===e&&await a(t,r.fs)&&(s+=1);return s}async function mM(e,t){let n=e.mcp.servers.filter(e=>e.status===`supported`);if(n.length===0)return{registered:[],conflicts:[]};let{getServer:r,setServer:i}=await import(`./store-BRq0dNJo.js`).then(e=>e.r),{McpClient:a}=await import(`./client-b0gTezl8.js`),o=[],s=[];for(let c of n){let n=c.config,l=`${e.manifest.name}:${c.name}`,u=await r(l,t.fs);if(u&&u.pluginOrigin!==e.manifest.name){s.push(l);continue}let d=[];try{let e=new a({url:n.url,headers:n.headers});await e.initialize(),d=await e.toolsList()}catch{}await i(l,{url:n.url,...n.headers?{headers:n.headers}:{},tools:d,addedAt:(/* @__PURE__ */ new Date()).toISOString(),pluginOrigin:e.manifest.name},t.fs),o.push(l)}return{registered:o,conflicts:s}}async function hM(e,t){if(T(e))return tM(`usage: plugin list
1627
+ `);let n=nM(`list`,e);if(!(`ok`in n))return n;let{listInstalledPlugins:r}=await import(`./store-1cJ4oabY.js`),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return tM("No agent plugins installed. Use `plugin install <path>`.\n");let o=[[`NAME`,`VERSION`,`ROOT`,`MCP`]];for(let e of a){let t=i[e];o.push([e,t.version??`-`,t.root,String(t.mcpServerNames?.length??0)])}let s=o[0].map((e,t)=>Math.max(...o.map(e=>e[t].length)));return tM(o.map(e=>e.map((e,t)=>e.padEnd(s[t])).join(` `)).join(`
1647
1628
  `)+`
1648
- `)}async function _M(e,t){if(T(e))return nM(`usage: plugin info <name>
1649
- `);let n=rM(`info`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return K(`plugin info: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i}=await import(`./store-1cJ4oabY.js`),a=await i(r,t.fs);if(!a)return K(`plugin info: no installed plugin named "${r}"`);let o=await oM(t),{loadPluginFromDirectory:s}=await import(`./loader-COfyniye.js`),c=await s(o,a.root);if(!c.ok)return K(`plugin info: plugin at ${a.root} no longer loads:\n${xM(c.diagnostics)}`);let{plugin:l}=c,u=l.manifest,d=[`${u.name}${u.version?` v${u.version}`:``}`,...u.description?[` ${u.description}`]:[],` root: ${l.root}`,...u.license?[` license: ${u.license}`]:[],...u.homepage?[` home: ${u.homepage}`]:[],``,`Skills (${l.skills.length}):`,...l.skills.map(e=>` ${e.name} ${e.description}`),``,`MCP servers (${l.mcp.servers.length}):`,...l.mcp.servers.map(e=>e.status===`supported`?` ${e.name} ${e.config.type} ${e.config.url}`:` ${e.name} [skipped: ${e.reason}]`)];return c.diagnostics.length>0&&d.push(``,`Diagnostics:`,xM(c.diagnostics)),nM(d.join(`
1629
+ `)}async function gM(e,t){if(T(e))return tM(`usage: plugin info <name>
1630
+ `);let n=nM(`info`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return K(`plugin info: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i}=await import(`./store-1cJ4oabY.js`),a=await i(r,t.fs);if(!a)return K(`plugin info: no installed plugin named "${r}"`);let o=await aM(t),{loadPluginFromDirectory:s}=await import(`./loader-COfyniye.js`),c=await s(o,a.root);if(!c.ok)return K(`plugin info: plugin at ${a.root} no longer loads:\n${bM(c.diagnostics)}`);let{plugin:l}=c,u=l.manifest,d=[`${u.name}${u.version?` v${u.version}`:``}`,...u.description?[` ${u.description}`]:[],` root: ${l.root}`,...u.license?[` license: ${u.license}`]:[],...u.homepage?[` home: ${u.homepage}`]:[],``,`Skills (${l.skills.length}):`,...l.skills.map(e=>` ${e.name} ${e.description}`),``,`MCP servers (${l.mcp.servers.length}):`,...l.mcp.servers.map(e=>e.status===`supported`?` ${e.name} ${e.config.type} ${e.config.url}`:` ${e.name} [skipped: ${e.reason}]`)];return c.diagnostics.length>0&&d.push(``,`Diagnostics:`,bM(c.diagnostics)),tM(d.join(`
1650
1631
  `)+`
1651
- `)}async function vM(e,t,n,r){if(T(e))return nM(`usage: plugin validate <path|repo>
1652
- `);let i=rM(`validate`,e);if(!(`ok`in i))return i;if(i.positionals.length<1)return K(`plugin validate: expected <path|repo>`);let a=await oM(n),o=await sM(i.positionals[0],t,a);if(o.kind===`error`)return K(`plugin validate: ${o.message}`);let s,c=null;if(o.kind===`github`){if(!n.fetch)return K(`plugin validate: GitHub sources are unavailable (no network fetch configured)`);c=`${r}/.plugin-validate/${lM(o.ref).split(`/`).pop()}`;let e=await uM(o.ref,c,a,n.fetch);if(e)return K(`plugin validate: ${e}`);s=c}else s=o.root;let{loadPluginFromDirectory:l}=await import(`./loader-COfyniye.js`),u;try{u=await l(a,s)}finally{c&&await dM(a,c)}if(!u.ok)return{stdout:``,stderr:`plugin validate: REJECTED\n${xM(u.diagnostics)}\n`,exitCode:1};let{plugin:d}=u,f=d.mcp.servers.filter(e=>e.status===`supported`).length,p=[`plugin validate: OK — "${d.manifest.name}"${d.manifest.version?` v${d.manifest.version}`:``}`,` skills: ${d.skills.length}`,` mcp servers: ${f} supported, ${d.mcp.servers.length-f} skipped (mcp.json ${d.mcp.status})`];return u.diagnostics.length>0&&p.push(`Diagnostics:`,xM(u.diagnostics)),nM(p.join(`
1632
+ `)}async function _M(e,t,n,r){if(T(e))return tM(`usage: plugin validate <path|repo>
1633
+ `);let i=nM(`validate`,e);if(!(`ok`in i))return i;if(i.positionals.length<1)return K(`plugin validate: expected <path|repo>`);let a=await aM(n),o=await oM(i.positionals[0],t,a);if(o.kind===`error`)return K(`plugin validate: ${o.message}`);let s,c=null;if(o.kind===`github`){if(!n.fetch)return K(`plugin validate: GitHub sources are unavailable (no network fetch configured)`);c=`${r}/.plugin-validate/${cM(o.ref).split(`/`).pop()}`;let e=await lM(o.ref,c,a,n.fetch);if(e)return K(`plugin validate: ${e}`);s=c}else s=o.root;let{loadPluginFromDirectory:l}=await import(`./loader-COfyniye.js`),u;try{u=await l(a,s)}finally{c&&await uM(a,c)}if(!u.ok)return{stdout:``,stderr:`plugin validate: REJECTED\n${bM(u.diagnostics)}\n`,exitCode:1};let{plugin:d}=u,f=d.mcp.servers.filter(e=>e.status===`supported`).length,p=[`plugin validate: OK — "${d.manifest.name}"${d.manifest.version?` v${d.manifest.version}`:``}`,` skills: ${d.skills.length}`,` mcp servers: ${f} supported, ${d.mcp.servers.length-f} skipped (mcp.json ${d.mcp.status})`];return u.diagnostics.length>0&&p.push(`Diagnostics:`,bM(u.diagnostics)),tM(p.join(`
1653
1634
  `)+`
1654
- `)}async function yM(e,t){if(T(e))return nM(`usage: plugin remove <name>
1655
- `);let n=rM(`remove`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return K(`plugin remove: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i,deleteInstalledPlugin:a}=await import(`./store-1cJ4oabY.js`),o=await i(r,t.fs);if(!o)return K(`plugin remove: no installed plugin named "${r}"`);let s=0;if(o.mcpServerNames&&o.mcpServerNames.length>0){let{deleteServer:e,getServer:n}=await import(`./store-BRq0dNJo.js`).then(e=>e.r);for(let i of o.mcpServerNames)(await n(i,t.fs))?.pluginOrigin===r&&await e(i,t.fs)&&(s+=1)}await a(r,t.fs);let c=o.root.startsWith(`${tM}/`);return c&&await dM(await oM(t),o.root),nM([`Removed agent plugin "${r}"`,` registry: removed`,` mcp servers: ${s} removed`,c?` files: removed (${o.root})`:` files: left in place (${o.root})`].join(`
1635
+ `)}async function vM(e,t){if(T(e))return tM(`usage: plugin remove <name>
1636
+ `);let n=nM(`remove`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return K(`plugin remove: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i,deleteInstalledPlugin:a}=await import(`./store-1cJ4oabY.js`),o=await i(r,t.fs);if(!o)return K(`plugin remove: no installed plugin named "${r}"`);let s=0;if(o.mcpServerNames&&o.mcpServerNames.length>0){let{deleteServer:e,getServer:n}=await import(`./store-BRq0dNJo.js`).then(e=>e.r);for(let i of o.mcpServerNames)(await n(i,t.fs))?.pluginOrigin===r&&await e(i,t.fs)&&(s+=1)}await a(r,t.fs);let c=o.root.startsWith(`${eM}/`);return c&&await uM(await aM(t),o.root),tM([`Removed agent plugin "${r}"`,` registry: removed`,` mcp servers: ${s} removed`,c?` files: removed (${o.root})`:` files: left in place (${o.root})`].join(`
1656
1637
  `)+`
1657
- `)}function bM(e,t){let n=t.startsWith(`/`)?t:`${e.replace(/\/$/,``)}/${t}`,r=[];for(let e of n.split(`/`))e!==``&&e!==`.`&&(e===`..`?r.pop():r.push(e));return`/${r.join(`/`)}`}function xM(e){return e.map(e=>` ${e.level===`error`?`error`:`warn `} [${e.component}] ${e.message}`).join(`
1658
- `)}const SM=[`pid`,`ppid`,`kind`,`stat`,`start`,`scoop`,`command`],CM=[`pid`,`ppid`,`stat`,`start`,`scoop`,`command`],wM={running:`R`,pending:`S`,exited:`Z`,killed:`K`},TM=[`-a`,`-A`,`-e`,`--all`,`-T`,`--tree`],EM=[`-o`,`--columns`];function DM(e={}){return C(`ps`,async t=>{if(T(t,{valueFlags:EM}))return VM();let n=e.processManager??OM();if(!n)return{stdout:``,stderr:`ps: no process manager available in this runtime
1659
- `,exitCode:1};let r=w(t,{bool:TM,value:EM});if(`error`in r)return{stdout:``,stderr:`ps: ${r.error}\n`,exitCode:r.error.startsWith(`unknown flag:`)?1:2};if(r.positionals.length>0)return{stdout:``,stderr:`ps: unrecognized argument '${r.positionals[0]}'\n`,exitCode:2};let i=CM,a=r.bools.has(`-T`)||r.bools.has(`--tree`),o=r.bools.has(`-a`)||r.bools.has(`-A`)||r.bools.has(`-e`)||r.bools.has(`--all`),s=r.values.get(`-o`)??r.values.get(`--columns`);if(s!==void 0){let e=kM(s);if(e instanceof Error)return{stdout:``,stderr:`ps: ${e.message}\n`,exitCode:2};i=e}let c=n.list().sort((e,t)=>e.pid-t.pid),l=o?c:c.filter(e=>e.status===`running`||e.status===`pending`),u=a?BM(l):l.map(e=>({proc:e,depth:0})),d=AM(i,u.map(({proc:e})=>e),s!==void 0),f=u.map(({proc:e,depth:t})=>NM(e,i,t,a,d));return{stdout:[jM(i,d),...f].join(`
1638
+ `)}function yM(e,t){let n=t.startsWith(`/`)?t:`${e.replace(/\/$/,``)}/${t}`,r=[];for(let e of n.split(`/`))e!==``&&e!==`.`&&(e===`..`?r.pop():r.push(e));return`/${r.join(`/`)}`}function bM(e){return e.map(e=>` ${e.level===`error`?`error`:`warn `} [${e.component}] ${e.message}`).join(`
1639
+ `)}const xM=[`pid`,`ppid`,`kind`,`stat`,`start`,`scoop`,`command`],SM=[`pid`,`ppid`,`stat`,`start`,`scoop`,`command`],CM={running:`R`,pending:`S`,exited:`Z`,killed:`K`},wM=[`-a`,`-A`,`-e`,`--all`,`-T`,`--tree`],TM=[`-o`,`--columns`];function EM(e={}){return C(`ps`,async t=>{if(T(t,{valueFlags:TM}))return BM();let n=e.processManager??DM();if(!n)return{stdout:``,stderr:`ps: no process manager available in this runtime
1640
+ `,exitCode:1};let r=w(t,{bool:wM,value:TM});if(`error`in r)return{stdout:``,stderr:`ps: ${r.error}\n`,exitCode:r.error.startsWith(`unknown flag:`)?1:2};if(r.positionals.length>0)return{stdout:``,stderr:`ps: unrecognized argument '${r.positionals[0]}'\n`,exitCode:2};let i=SM,a=r.bools.has(`-T`)||r.bools.has(`--tree`),o=r.bools.has(`-a`)||r.bools.has(`-A`)||r.bools.has(`-e`)||r.bools.has(`--all`),s=r.values.get(`-o`)??r.values.get(`--columns`);if(s!==void 0){let e=OM(s);if(e instanceof Error)return{stdout:``,stderr:`ps: ${e.message}\n`,exitCode:2};i=e}let c=n.list().sort((e,t)=>e.pid-t.pid),l=o?c:c.filter(e=>e.status===`running`||e.status===`pending`),u=a?zM(l):l.map(e=>({proc:e,depth:0})),d=kM(i,u.map(({proc:e})=>e),s!==void 0),f=u.map(({proc:e,depth:t})=>MM(e,i,t,a,d));return{stdout:[AM(i,d),...f].join(`
1660
1641
  `)+`
1661
- `,stderr:``,exitCode:0}})}function OM(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function kM(e){let t=e.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);if(t.length===0)return/* @__PURE__ */ Error(`-o requires at least one column`);let n=[];for(let e of t){if(!SM.includes(e))return/* @__PURE__ */ Error(`unknown column '${e}'; supported: ${SM.join(`, `)}`);n.push(e)}return n}function AM(e,t,n){if(!(n&&e.includes(`scoop`)))return{full:!1,width:10};let r=5;for(let e of t)r=Math.max(r,IM(e).length);return{full:!0,width:r}}function jM(e,t){return e.map(e=>MM(e,t)).join(` `)}function MM(e,t){switch(e){case`pid`:return`PID`.padStart(5);case`ppid`:return`PPID`.padStart(5);case`kind`:return`KIND`.padEnd(10);case`stat`:return`STAT`;case`start`:return`START`;case`scoop`:return`SCOOP`.padEnd(t.width);case`command`:return`COMMAND`}}function NM(e,t,n,r,i){return t.map(t=>PM(e,t,n,r,i)).join(` `)}function PM(e,t,n,r,i){switch(t){case`pid`:return String(e.pid).padStart(5);case`ppid`:return String(e.ppid).padStart(5);case`kind`:return e.kind.padEnd(10);case`stat`:return wM[e.status];case`start`:return FM(e.startedAt);case`scoop`:return LM(e,i);case`command`:return RM(e,n,r)}}function FM(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}function IM(e){return e.owner.kind===`cone`?`cone`:e.owner.kind===`system`?`system`:e.owner.kind===`jshd`?`jshd`:e.owner.scoopJid??`scoop`}function LM(e,t){let n=IM(e);return(t.full?n:n.slice(0,t.width)).padEnd(t.width)}function RM(e,t,n){let r=n&&t>0?` `.repeat(t-1)+`└─ `:``,i=e.argv.length===0?`[${e.kind}]`:e.argv.map(zM).join(` `);return r+(i.length>80?i.slice(0,79)+`…`:i)}function zM(e){return e===``?`''`:/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:e.includes(`"`)&&!e.includes(`'`)?`'${e}'`:`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`}function BM(e){let t=/* @__PURE__ */ new Map;for(let n of e)t.set(n.pid,n);let n=/* @__PURE__ */ new Map,r=[];for(let i of e)if(t.has(i.ppid)){let e=n.get(i.ppid)??[];e.push(i),n.set(i.ppid,e)}else r.push(i);let i=[],a=/* @__PURE__ */ new Set,o=(e,t)=>{if(a.has(e.pid))return;a.add(e.pid),i.push({proc:e,depth:t});let r=n.get(e.pid)??[];for(let e of r.sort((e,t)=>e.pid-t.pid))o(e,t+1)};for(let e of r.sort((e,t)=>e.pid-t.pid))o(e,0);return i}function VM(){return{stdout:`Usage: ps [-a] [-T] [-o col[,col…]]
1642
+ `,stderr:``,exitCode:0}})}function DM(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function OM(e){let t=e.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);if(t.length===0)return/* @__PURE__ */ Error(`-o requires at least one column`);let n=[];for(let e of t){if(!xM.includes(e))return/* @__PURE__ */ Error(`unknown column '${e}'; supported: ${xM.join(`, `)}`);n.push(e)}return n}function kM(e,t,n){if(!(n&&e.includes(`scoop`)))return{full:!1,width:10};let r=5;for(let e of t)r=Math.max(r,FM(e).length);return{full:!0,width:r}}function AM(e,t){return e.map(e=>jM(e,t)).join(` `)}function jM(e,t){switch(e){case`pid`:return`PID`.padStart(5);case`ppid`:return`PPID`.padStart(5);case`kind`:return`KIND`.padEnd(10);case`stat`:return`STAT`;case`start`:return`START`;case`scoop`:return`SCOOP`.padEnd(t.width);case`command`:return`COMMAND`}}function MM(e,t,n,r,i){return t.map(t=>NM(e,t,n,r,i)).join(` `)}function NM(e,t,n,r,i){switch(t){case`pid`:return String(e.pid).padStart(5);case`ppid`:return String(e.ppid).padStart(5);case`kind`:return e.kind.padEnd(10);case`stat`:return CM[e.status];case`start`:return PM(e.startedAt);case`scoop`:return IM(e,i);case`command`:return LM(e,n,r)}}function PM(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}function FM(e){return e.owner.kind===`cone`?`cone`:e.owner.kind===`system`?`system`:e.owner.kind===`jshd`?`jshd`:e.owner.scoopJid??`scoop`}function IM(e,t){let n=FM(e);return(t.full?n:n.slice(0,t.width)).padEnd(t.width)}function LM(e,t,n){let r=n&&t>0?` `.repeat(t-1)+`└─ `:``,i=e.argv.length===0?`[${e.kind}]`:e.argv.map(RM).join(` `);return r+(i.length>80?i.slice(0,79)+`…`:i)}function RM(e){return e===``?`''`:/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:e.includes(`"`)&&!e.includes(`'`)?`'${e}'`:`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`}function zM(e){let t=/* @__PURE__ */ new Map;for(let n of e)t.set(n.pid,n);let n=/* @__PURE__ */ new Map,r=[];for(let i of e)if(t.has(i.ppid)){let e=n.get(i.ppid)??[];e.push(i),n.set(i.ppid,e)}else r.push(i);let i=[],a=/* @__PURE__ */ new Set,o=(e,t)=>{if(a.has(e.pid))return;a.add(e.pid),i.push({proc:e,depth:t});let r=n.get(e.pid)??[];for(let e of r.sort((e,t)=>e.pid-t.pid))o(e,t+1)};for(let e of r.sort((e,t)=>e.pid-t.pid))o(e,0);return i}function BM(){return{stdout:`Usage: ps [-a] [-T] [-o col[,col…]]
1662
1643
 
1663
1644
  List processes tracked by the kernel.
1664
1645
 
@@ -1691,9 +1672,9 @@ Examples:
1691
1672
  ps -a -T full tree
1692
1673
  ps -o pid,kind,stat just three columns
1693
1674
  ps -o scoop,stat,pid full scoop jid, with STAT and PID
1694
- `,stderr:``,exitCode:0}}const HM=/* @__PURE__ */ new Set([`dev`,`proc`,`lib`,`bin`,`usr`,`etc`,`home`,`tmp`]);async function UM(e,t=HM){let n=[],r=/* @__PURE__ */ new Set;try{let i=await e.readdir(`/`);for(let a of i){if(!a||a.includes(`/`)||t.has(a))continue;let i=`/${a}`,o=!1;try{o=!!(await e.stat(i)).isDirectory}catch{continue}o&&(r.has(i)||(r.add(i),n.push(i)))}}catch{}return r.has(`/tmp`)||(r.add(`/tmp`),n.push(`/tmp`)),n}function WM(e,t){let n=e;if(typeof n.listMountPoints!=`function`)return[];let r=e=>{for(let n of t)if(e===n||e.startsWith(n===`/`?`/`:n+`/`)||n.startsWith(e+`/`))return!0;return!1},i=[];for(let e of n.listMountPoints())e.kind!==`proc`&&r(e.path)&&i.push({path:e.path,kind:e.kind});return i}function GM(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`slicc-fs`}catch{}}function KM(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},fromDir:e.cwd}}async function qM(e,t){try{let n=await e.readFile(`${t}/package.json`),r=JSON.parse(n);return typeof r.version==`string`?r.version:null}catch{return null}}function JM(e,t){return`installed pyodide ${e} is not the supported version ${t}: run \`ipk uninstall pyodide\` then \`ipk add pyodide@${t}\``}function YM(){return{stdout:`usage: python3 [-c code | script.py] [args...]
1695
- `,stderr:``,exitCode:0}}function XM(){return{stdout:`Python 3.14 (Pyodide)
1696
- `,stderr:``,exitCode:0}}async function ZM(e,t,n){if(t[0]===`-c`){if(!t[1])return{kind:`result`,result:{stdout:``,stderr:`${e}: option requires an argument -- 'c'\n`,exitCode:2}};let n=t[1];return{kind:`ok`,code:n,filename:`-c`,sysArgv:[`-c`,...t.slice(2)],procArgv:[e,`-c`,n,...t.slice(2)]}}if(t.length>0&&!t[0].startsWith(`-`)){let r=t[0],i=n.fs.resolvePath(n.cwd,r);return await n.fs.exists(i)?{kind:`ok`,code:await n.fs.readFile(i),filename:r,sysArgv:[r,...t.slice(1)],procArgv:[e,r,...t.slice(1)]}:{kind:`result`,result:{stdout:``,stderr:`${e}: can't open file '${r}': [Errno 2] No such file or directory\n`,exitCode:2}}}return P(n.stdin).trim().length>0?{kind:`ok`,code:P(n.stdin),filename:`<stdin>`,sysArgv:[`<stdin>`],procArgv:[e]}:t.length>0?{kind:`result`,result:{stdout:``,stderr:`${e}: unsupported option '${t[0]}'\n`,exitCode:2}}:{kind:`result`,result:{stdout:``,stderr:`${e}: no input provided (use -c CODE, script path, or stdin)\n`,exitCode:2}}}async function QM(e){let t=KM(e),n=await ni(t);if(!n)return{kind:`result`,result:{stdout:``,stderr:`${ti}\n`,exitCode:1}};let r=await qM(t.reader,n);return r?r===Gr?{kind:`ok`,assetRoot:n}:{kind:`result`,result:{stdout:``,stderr:`${JM(r,Gr)}\n`,exitCode:1}}:{kind:`result`,result:{stdout:``,stderr:`${ti}\n`,exitCode:1}}}const $M=/* @__PURE__ */ new Set(`EsSuBIPqObdR`);function eN(e){let t=0;for(;t<e.length&&/^-[A-Za-z]+$/.test(e[t]);){let n=e[t].slice(1);if(n===`W`||n===`X`){t+=2;continue}if(![...n].every(e=>$M.has(e)))break;t++}return t===0?e:e.slice(t)}function tN(e,t={}){return C(e,async(n,r)=>{let i=eN(n),a=i[0];if(a===`--help`||a===`-h`)return YM();if(a===`--version`||a===`-V`)return XM();let o=await ZM(e,i,r);if(o.kind===`result`)return o.result;let{code:s,filename:c,sysArgv:l,procArgv:u}=o,d=await UM(r.fs),f=WM(r.fs,d),p=t.buildProcessConfig?.(r.env),m=p?.processManager??nN(),h=p?.owner??{kind:`system`},g=p?.getParentPid?.(),_=t.realmFactory??Si(),v=t.pyodideIndexURL??oi(),ee=t.pyodideAssetRoot;if(!ee&&v===void 0){let e=await QM(r);if(e.kind===`result`)return e.result;ee=e.assetRoot}let te=c===`<stdin>`?``:P(r.stdin),ne=GM();return m?li({pm:m,realmFactory:_,owner:h,kind:`py`,code:s,argv:u,realmArgv:l,env:Object.fromEntries(r.env.entries()),cwd:r.cwd,filename:c,ctx:r,stdin:te,pyodideIndexURL:v,pyodideAssetRoot:ee,pyodideMountDirs:d,opfsMountDbName:ne,mountPoints:f,procKind:`py`,ppid:g,syncFsBridgeEnabled:_i()}):iN({realmFactory:_,owner:h,code:s,argv:u,realmArgv:l,env:Object.fromEntries(r.env.entries()),cwd:r.cwd,filename:c,ctx:r,stdin:te,pyodideIndexURL:v,pyodideAssetRoot:ee,pyodideMountDirs:d,opfsMountDbName:ne,mountPoints:f})})}function nN(){let e=globalThis.__slicc_pm;return e&&typeof e==`object`&&typeof e.spawn==`function`&&typeof e.onSignal==`function`?e:null}let rN=null;async function iN(e){if(!rN){let{ProcessManager:e}=await import(`./process-manager-Dy17Kify.js`).then(e=>e.n);rN=new e}return li({pm:rN,realmFactory:e.realmFactory,owner:e.owner,kind:`py`,code:e.code,argv:e.argv,realmArgv:e.realmArgv,env:e.env,cwd:e.cwd,filename:e.filename,ctx:e.ctx,stdin:e.stdin,pyodideIndexURL:e.pyodideIndexURL,pyodideAssetRoot:e.pyodideAssetRoot,pyodideMountDirs:e.pyodideMountDirs,mountPoints:e.mountPoints,opfsMountDbName:e.opfsMountDbName,procKind:`py`,syncFsBridgeEnabled:_i()})}function aN(){return C(`rg`,async(e,t)=>{let{runRg:n}=await import(`./run-D6GP-U-m.js`);return n(e,t)})}function oN(e,t,n={}){let r=/* @__PURE__ */ new Map;for(let e of t)r.set(e.path,e);let i=/* @__PURE__ */ new Set,a=[],o=[],s=[];for(let t of e){i.add(t.path);let e=r.get(t.path);e?e.size===t.size&&e.mtimeMs===t.mtimeMs?s.push(t.path):o.push(t.path):a.push(t.path)}let c=[];if(n.delete)for(let e of t)i.has(e.path)||c.push(e.path);return{toAdd:a,toUpdate:o,toDelete:c,toSkip:s}}function sN(){return null}function cN(e){let t={dryRun:!1,delete:!1,verbose:!1},n=[];for(let r of e)if(r===`--dry-run`||r===`-n`)t.dryRun=!0;else if(r===`--delete`)t.delete=!0;else if(r===`--verbose`||r===`-v`)t.verbose=!0;else if(r===`--help`||r===`-h`)return{error:`__help__`};else if(r.startsWith(`-`))return{error:`Unknown flag: ${r}`};else n.push(r);if(n.length!==2)return{error:`Expected exactly 2 arguments: <source> <dest>`};let[r,i]=n,a=lN(r),o=lN(i);return a&&o?{error:`Cannot sync between two remote paths — one side must be local`}:!a&&!o?{error:`One argument must be a remote path (runtime-id:/path)`}:o?{direction:`push`,localPath:r,remotePath:o.path,runtimeId:o.runtimeId,...t}:{direction:`pull`,localPath:i,remotePath:a.path,runtimeId:a.runtimeId,...t}}function lN(e){let t=e.indexOf(`:`);if(t<=0)return null;let n=e.slice(0,t),r=e.slice(t+1);return r.startsWith(`/`)?{runtimeId:n,path:r}:null}function uN(){return{stdout:`rsync — sync files between local VFS and a remote tray runtime
1675
+ `,stderr:``,exitCode:0}}const VM=/* @__PURE__ */ new Set([`dev`,`proc`,`lib`,`bin`,`usr`,`etc`,`home`,`tmp`]);async function HM(e,t=VM){let n=[],r=/* @__PURE__ */ new Set;try{let i=await e.readdir(`/`);for(let a of i){if(!a||a.includes(`/`)||t.has(a))continue;let i=`/${a}`,o=!1;try{o=!!(await e.stat(i)).isDirectory}catch{continue}o&&(r.has(i)||(r.add(i),n.push(i)))}}catch{}return r.has(`/tmp`)||(r.add(`/tmp`),n.push(`/tmp`)),n}function UM(e,t){let n=e;if(typeof n.listMountPoints!=`function`)return[];let r=e=>{for(let n of t)if(e===n||e.startsWith(n===`/`?`/`:n+`/`)||n.startsWith(e+`/`))return!0;return!1},i=[];for(let e of n.listMountPoints())e.kind!==`proc`&&r(e.path)&&i.push({path:e.path,kind:e.kind});return i}function WM(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`slicc-fs`}catch{}}function GM(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},fromDir:e.cwd}}async function KM(e,t){try{let n=await e.readFile(`${t}/package.json`),r=JSON.parse(n);return typeof r.version==`string`?r.version:null}catch{return null}}function qM(e,t){return`installed pyodide ${e} is not the supported version ${t}: run \`ipk uninstall pyodide\` then \`ipk add pyodide@${t}\``}function JM(){return{stdout:`usage: python3 [-c code | script.py] [args...]
1676
+ `,stderr:``,exitCode:0}}function YM(){return{stdout:`Python 3.14 (Pyodide)
1677
+ `,stderr:``,exitCode:0}}async function XM(e,t,n){if(t[0]===`-c`){if(!t[1])return{kind:`result`,result:{stdout:``,stderr:`${e}: option requires an argument -- 'c'\n`,exitCode:2}};let n=t[1];return{kind:`ok`,code:n,filename:`-c`,sysArgv:[`-c`,...t.slice(2)],procArgv:[e,`-c`,n,...t.slice(2)]}}if(t.length>0&&!t[0].startsWith(`-`)){let r=t[0],i=n.fs.resolvePath(n.cwd,r);return await n.fs.exists(i)?{kind:`ok`,code:await n.fs.readFile(i),filename:r,sysArgv:[r,...t.slice(1)],procArgv:[e,r,...t.slice(1)]}:{kind:`result`,result:{stdout:``,stderr:`${e}: can't open file '${r}': [Errno 2] No such file or directory\n`,exitCode:2}}}return P(n.stdin).trim().length>0?{kind:`ok`,code:P(n.stdin),filename:`<stdin>`,sysArgv:[`<stdin>`],procArgv:[e]}:t.length>0?{kind:`result`,result:{stdout:``,stderr:`${e}: unsupported option '${t[0]}'\n`,exitCode:2}}:{kind:`result`,result:{stdout:``,stderr:`${e}: no input provided (use -c CODE, script path, or stdin)\n`,exitCode:2}}}async function ZM(e){let t=GM(e),n=await ni(t);if(!n)return{kind:`result`,result:{stdout:``,stderr:`${ti}\n`,exitCode:1}};let r=await KM(t.reader,n);return r?r===Gr?{kind:`ok`,assetRoot:n}:{kind:`result`,result:{stdout:``,stderr:`${qM(r,Gr)}\n`,exitCode:1}}:{kind:`result`,result:{stdout:``,stderr:`${ti}\n`,exitCode:1}}}const QM=/* @__PURE__ */ new Set(`EsSuBIPqObdR`);function $M(e){let t=0;for(;t<e.length&&/^-[A-Za-z]+$/.test(e[t]);){let n=e[t].slice(1);if(n===`W`||n===`X`){t+=2;continue}if(![...n].every(e=>QM.has(e)))break;t++}return t===0?e:e.slice(t)}function eN(e,t={}){return C(e,async(n,r)=>{let i=$M(n),a=i[0];if(a===`--help`||a===`-h`)return JM();if(a===`--version`||a===`-V`)return YM();let o=await XM(e,i,r);if(o.kind===`result`)return o.result;let{code:s,filename:c,sysArgv:l,procArgv:u}=o,d=await HM(r.fs),f=UM(r.fs,d),p=t.buildProcessConfig?.(r.env),m=p?.processManager??tN(),h=p?.owner??{kind:`system`},g=p?.getParentPid?.(),_=t.realmFactory??Si(),v=t.pyodideIndexURL??oi(),ee=t.pyodideAssetRoot;if(!ee&&v===void 0){let e=await ZM(r);if(e.kind===`result`)return e.result;ee=e.assetRoot}let te=c===`<stdin>`?``:P(r.stdin),ne=WM();return m?li({pm:m,realmFactory:_,owner:h,kind:`py`,code:s,argv:u,realmArgv:l,env:Object.fromEntries(r.env.entries()),cwd:r.cwd,filename:c,ctx:r,stdin:te,pyodideIndexURL:v,pyodideAssetRoot:ee,pyodideMountDirs:d,opfsMountDbName:ne,mountPoints:f,procKind:`py`,ppid:g,syncFsBridgeEnabled:_i()}):rN({realmFactory:_,owner:h,code:s,argv:u,realmArgv:l,env:Object.fromEntries(r.env.entries()),cwd:r.cwd,filename:c,ctx:r,stdin:te,pyodideIndexURL:v,pyodideAssetRoot:ee,pyodideMountDirs:d,opfsMountDbName:ne,mountPoints:f})})}function tN(){let e=globalThis.__slicc_pm;return e&&typeof e==`object`&&typeof e.spawn==`function`&&typeof e.onSignal==`function`?e:null}let nN=null;async function rN(e){if(!nN){let{ProcessManager:e}=await import(`./process-manager-Dy17Kify.js`).then(e=>e.n);nN=new e}return li({pm:nN,realmFactory:e.realmFactory,owner:e.owner,kind:`py`,code:e.code,argv:e.argv,realmArgv:e.realmArgv,env:e.env,cwd:e.cwd,filename:e.filename,ctx:e.ctx,stdin:e.stdin,pyodideIndexURL:e.pyodideIndexURL,pyodideAssetRoot:e.pyodideAssetRoot,pyodideMountDirs:e.pyodideMountDirs,mountPoints:e.mountPoints,opfsMountDbName:e.opfsMountDbName,procKind:`py`,syncFsBridgeEnabled:_i()})}function iN(){return C(`rg`,async(e,t)=>{let{runRg:n}=await import(`./run-D6GP-U-m.js`);return n(e,t)})}function aN(e,t,n={}){let r=/* @__PURE__ */ new Map;for(let e of t)r.set(e.path,e);let i=/* @__PURE__ */ new Set,a=[],o=[],s=[];for(let t of e){i.add(t.path);let e=r.get(t.path);e?e.size===t.size&&e.mtimeMs===t.mtimeMs?s.push(t.path):o.push(t.path):a.push(t.path)}let c=[];if(n.delete)for(let e of t)i.has(e.path)||c.push(e.path);return{toAdd:a,toUpdate:o,toDelete:c,toSkip:s}}function oN(){return null}function sN(e){let t={dryRun:!1,delete:!1,verbose:!1},n=[];for(let r of e)if(r===`--dry-run`||r===`-n`)t.dryRun=!0;else if(r===`--delete`)t.delete=!0;else if(r===`--verbose`||r===`-v`)t.verbose=!0;else if(r===`--help`||r===`-h`)return{error:`__help__`};else if(r.startsWith(`-`))return{error:`Unknown flag: ${r}`};else n.push(r);if(n.length!==2)return{error:`Expected exactly 2 arguments: <source> <dest>`};let[r,i]=n,a=cN(r),o=cN(i);return a&&o?{error:`Cannot sync between two remote paths — one side must be local`}:!a&&!o?{error:`One argument must be a remote path (runtime-id:/path)`}:o?{direction:`push`,localPath:r,remotePath:o.path,runtimeId:o.runtimeId,...t}:{direction:`pull`,localPath:i,remotePath:a.path,runtimeId:a.runtimeId,...t}}function cN(e){let t=e.indexOf(`:`);if(t<=0)return null;let n=e.slice(0,t),r=e.slice(t+1);return r.startsWith(`/`)?{runtimeId:n,path:r}:null}function lN(){return{stdout:`rsync — sync files between local VFS and a remote tray runtime
1697
1678
 
1698
1679
  Usage:
1699
1680
  rsync [flags] <local-path> <runtime-id>:<remote-path> # push
@@ -1709,21 +1690,21 @@ Examples:
1709
1690
  rsync /workspace follower-abc123:/workspace
1710
1691
  rsync --delete /shared leader:/shared
1711
1692
  rsync follower-abc123:/workspace/project /workspace/project
1712
- `,stderr:``,exitCode:0}}async function dN(e,t){if(!await e.exists(t))return[];let n=[];for await(let r of e.walk(t)){let i=r.slice(t.length).replace(/^\//,``);if(!i)continue;let a=await e.stat(r);n.push({path:i,size:a.size,mtimeMs:a.mtime})}return n}async function fN(e,t,n){let r=(await e(t,{op:`walk`,path:n}))[0];if(!r.ok){if(r.code===`ENOENT`)return[];throw Error(`Remote walk failed: ${r.error}`)}if(r.data.type!==`paths`)throw Error(`Unexpected walk response type`);let i=r.data.paths,a=[];for(let r of i){let i=r.slice(n.length).replace(/^\//,``);if(!i)continue;let o=(await e(t,{op:`stat`,path:r}))[0];o.ok&&o.data.type===`stat`&&a.push({path:i,size:o.data.stat.size,mtimeMs:o.data.stat.mtime})}return a}async function pN(e,t,n){let r=await e(t,{op:`readFile`,path:n,encoding:`binary`}),i=``;for(let e of r){if(!e.ok)throw Error(`Remote read failed: ${e.error}`);e.data.type===`file`&&(i+=e.data.content)}return i}async function mN(e,t,n){let r=await e(t,{op:`mkdir`,path:n,recursive:!0});if(!r[0].ok)throw Error(`Remote mkdir failed: ${r[0].error}`)}function hN(e){let t=e.lastIndexOf(`/`);return t<=0?`/`:e.slice(0,t)}async function gN(e,n,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=oN(await dN(e,a),await fN(n,s,o),{delete:r.delete});if(c||l){for(let e of u.toAdd)i.push(`+ ${e}`);for(let e of u.toUpdate)i.push(`~ ${e}`);for(let e of u.toDelete)i.push(`- ${e}`);if(c)for(let e of u.toSkip)i.push(` ${e} (up to date)`)}let d=u.toAdd.length+u.toUpdate.length+u.toDelete.length;if(l)return i.push(`\n(dry run) ${d} file(s) would be transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1693
+ `,stderr:``,exitCode:0}}async function uN(e,t){if(!await e.exists(t))return[];let n=[];for await(let r of e.walk(t)){let i=r.slice(t.length).replace(/^\//,``);if(!i)continue;let a=await e.stat(r);n.push({path:i,size:a.size,mtimeMs:a.mtime})}return n}async function dN(e,t,n){let r=(await e(t,{op:`walk`,path:n}))[0];if(!r.ok){if(r.code===`ENOENT`)return[];throw Error(`Remote walk failed: ${r.error}`)}if(r.data.type!==`paths`)throw Error(`Unexpected walk response type`);let i=r.data.paths,a=[];for(let r of i){let i=r.slice(n.length).replace(/^\//,``);if(!i)continue;let o=(await e(t,{op:`stat`,path:r}))[0];o.ok&&o.data.type===`stat`&&a.push({path:i,size:o.data.stat.size,mtimeMs:o.data.stat.mtime})}return a}async function fN(e,t,n){let r=await e(t,{op:`readFile`,path:n,encoding:`binary`}),i=``;for(let e of r){if(!e.ok)throw Error(`Remote read failed: ${e.error}`);e.data.type===`file`&&(i+=e.data.content)}return i}async function pN(e,t,n){let r=await e(t,{op:`mkdir`,path:n,recursive:!0});if(!r[0].ok)throw Error(`Remote mkdir failed: ${r[0].error}`)}function mN(e){let t=e.lastIndexOf(`/`);return t<=0?`/`:e.slice(0,t)}async function hN(e,n,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=aN(await uN(e,a),await dN(n,s,o),{delete:r.delete});if(c||l){for(let e of u.toAdd)i.push(`+ ${e}`);for(let e of u.toUpdate)i.push(`~ ${e}`);for(let e of u.toDelete)i.push(`- ${e}`);if(c)for(let e of u.toSkip)i.push(` ${e} (up to date)`)}let d=u.toAdd.length+u.toUpdate.length+u.toDelete.length;if(l)return i.push(`\n(dry run) ${d} file(s) would be transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1713
1694
  `)+`
1714
- `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let c=a+`/`+r,l=o+`/`+r;await mN(n,s,hN(l));let u=await e.readFile(c,{encoding:`binary`}),d=await n(s,{op:`writeFile`,path:l,content:t(u),encoding:`base64`});if(!d[0].ok)return{stdout:i.join(`
1695
+ `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let c=a+`/`+r,l=o+`/`+r;await pN(n,s,mN(l));let u=await e.readFile(c,{encoding:`binary`}),d=await n(s,{op:`writeFile`,path:l,content:t(u),encoding:`base64`});if(!d[0].ok)return{stdout:i.join(`
1715
1696
  `)+`
1716
1697
  `,stderr:`Error writing ${l}: ${d[0].error}\n`,exitCode:1}}for(let e of u.toDelete){let t=o+`/`+e,r=await n(s,{op:`rm`,path:t});if(!r[0].ok)return{stdout:i.join(`
1717
1698
  `)+`
1718
1699
  `,stderr:`Error deleting ${t}: ${r[0].error}\n`,exitCode:1}}return i.push(`${d} file(s) transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1719
1700
  `)+`
1720
- `,stderr:``,exitCode:0}}async function _N(e,t,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=oN(await fN(t,s,o),await dN(e,a),{delete:r.delete});if(c||l){for(let e of u.toAdd)i.push(`+ ${e}`);for(let e of u.toUpdate)i.push(`~ ${e}`);for(let e of u.toDelete)i.push(`- ${e}`);if(c)for(let e of u.toSkip)i.push(` ${e} (up to date)`)}let d=u.toAdd.length+u.toUpdate.length+u.toDelete.length;if(l)return i.push(`\n(dry run) ${d} file(s) would be transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1701
+ `,stderr:``,exitCode:0}}async function gN(e,t,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=aN(await dN(t,s,o),await uN(e,a),{delete:r.delete});if(c||l){for(let e of u.toAdd)i.push(`+ ${e}`);for(let e of u.toUpdate)i.push(`~ ${e}`);for(let e of u.toDelete)i.push(`- ${e}`);if(c)for(let e of u.toSkip)i.push(` ${e} (up to date)`)}let d=u.toAdd.length+u.toUpdate.length+u.toDelete.length;if(l)return i.push(`\n(dry run) ${d} file(s) would be transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1721
1702
  `)+`
1722
- `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let i=o+`/`+r,c=a+`/`+r,l=hN(c);await e.exists(l)||await e.mkdir(l,{recursive:!0});let u=await pN(t,s,i),d=n(u);await e.writeFile(c,d)}for(let t of u.toDelete){let n=a+`/`+t;await e.rm(n)}return i.push(`${d} file(s) transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1703
+ `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let i=o+`/`+r,c=a+`/`+r,l=mN(c);await e.exists(l)||await e.mkdir(l,{recursive:!0});let u=await fN(t,s,i),d=n(u);await e.writeFile(c,d)}for(let t of u.toDelete){let n=a+`/`+t;await e.rm(n)}return i.push(`${d} file(s) transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1723
1704
  `)+`
1724
- `,stderr:``,exitCode:0}}function vN(e={}){let t=e.fs,n=e.getSendFsRequest??sN;return C(`rsync`,async e=>{if(e.includes(`--help`)||e.includes(`-h`)||e.length===0)return uN();if(!t)return{stdout:``,stderr:`rsync: no filesystem available
1705
+ `,stderr:``,exitCode:0}}function _N(e={}){let t=e.fs,n=e.getSendFsRequest??oN;return C(`rsync`,async e=>{if(e.includes(`--help`)||e.includes(`-h`)||e.length===0)return lN();if(!t)return{stdout:``,stderr:`rsync: no filesystem available
1725
1706
  `,exitCode:1};let r=n();if(!r)return{stdout:``,stderr:`rsync: not connected to a tray — rsync requires a tray connection
1726
- `,exitCode:1};let i=cN(e);if(`error`in i)return i.error===`__help__`?uN():{stdout:``,stderr:`rsync: ${i.error}\n`,exitCode:1};try{return i.direction===`push`?await gN(t,r,i):await _N(t,r,i)}catch(e){return{stdout:``,stderr:`rsync: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function yN(){return{stdout:`usage: say [-v voice] [-r rate] [-l lang] [-o file] [--list] <text>
1707
+ `,exitCode:1};let i=sN(e);if(`error`in i)return i.error===`__help__`?lN():{stdout:``,stderr:`rsync: ${i.error}\n`,exitCode:1};try{return i.direction===`push`?await hN(t,r,i):await gN(t,r,i)}catch(e){return{stdout:``,stderr:`rsync: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function vN(){return{stdout:`usage: say [-v voice] [-r rate] [-l lang] [-o file] [--list] <text>
1727
1708
  say --status | --warmup
1728
1709
 
1729
1710
  Speaks the given text. Uses on-device Kokoro voices when the model
@@ -1742,14 +1723,14 @@ Examples:
1742
1723
  [web speech] otherwise); kokoro voices lead when ready
1743
1724
  --status Show the on-device voice state (downloading/ready + ETA)
1744
1725
  --warmup Stage + start the on-device voice download in the background
1745
- `,stderr:``,exitCode:0}}function bN(e){switch(e.state){case`ready`:return`voice engine: ready
1726
+ `,stderr:``,exitCode:0}}function yN(e){switch(e.state){case`ready`:return`voice engine: ready
1746
1727
  `;case`failed`:return`voice engine: failed (re-run say --warmup to retry)
1747
1728
  `;case`idle`:return`voice engine: not downloaded (run say --warmup)
1748
- `;case`loading`:{let t=e=>(e/1024/1024).toFixed(1);return`voice engine: downloading${e.loaded!=null&&e.total?` ${t(e.loaded)}/${t(e.total)} MB`:``}${e.etaSeconds!=null&&Number.isFinite(e.etaSeconds)?` · ready in ~${Math.max(1,Math.round(e.etaSeconds))}s`:``}\n`}}}function q(e){return{stdout:``,stderr:`say: ${e}\n`,exitCode:1}}function xN(e){return e instanceof Error?e.message:String(e)}let SN=!1,CN=null;function wN(){return SN?Promise.resolve(speechSynthesis.getVoices()):(CN||=new Promise(e=>{let t=speechSynthesis.getVoices();if(t.length>0){SN=!0,e(t);return}let n=()=>{SN=!0,speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,n),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,n),SN=!0,e(speechSynthesis.getVoices())},1e3)}),CN)}const TN={"-v":`a voice name`,"-r":`a rate value`,"-l":`a language tag`,"-o":`an output file path`,"--out":`an output file path`};function EN(e){return e!=null&&(!e.startsWith(`-`)||e===`-`)}function DN(e,t,n){switch(t){case`-v`:return e.voiceName=n,null;case`-l`:return e.lang=n,null;case`-o`:case`--out`:return e.outFile=n,null;case`-r`:{let t=parseFloat(n);return Number.isNaN(t)||t<.1||t>10?`rate must be between 0.1 and 10`:(e.rate=t,null)}default:return`unknown option: ${t}`}}function ON(e){let t={voiceName:null,rate:1,lang:null,outFile:null,text:``},n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i in TN){let n=EN(r+1<e.length?e[r+1]:void 0)?e[++r]:null;if(n==null)return q(`${i} requires ${TN[i]}`);let a=DN(t,i,n);if(a)return q(a)}else if(i.startsWith(`-`)&&i!==`--list`)return q(`unknown option: ${i}`);else i.startsWith(`-`)||n.push(i)}return t.text=n.join(` `),t}function kN(e){let t=e.onDevice?`[kokoro]`:`[web speech]`;return`${e.name} (${e.lang}) ${t}${e.default?` [default]`:``}`}async function AN(e){if(e.local){let{kokoroVoicesIfReady:e}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),t=e().map(e=>kN({name:e.id,lang:e.lang,onDevice:e.onDevice})),n=(await wN()).map(e=>kN({name:e.name,lang:e.lang,onDevice:!1,default:e.default}));return{stdout:[...t,...n].join(`
1729
+ `;case`loading`:{let t=e=>(e/1024/1024).toFixed(1);return`voice engine: downloading${e.loaded!=null&&e.total?` ${t(e.loaded)}/${t(e.total)} MB`:``}${e.etaSeconds!=null&&Number.isFinite(e.etaSeconds)?` · ready in ~${Math.max(1,Math.round(e.etaSeconds))}s`:``}\n`}}}function q(e){return{stdout:``,stderr:`say: ${e}\n`,exitCode:1}}function bN(e){return e instanceof Error?e.message:String(e)}let xN=!1,SN=null;function CN(){return xN?Promise.resolve(speechSynthesis.getVoices()):(SN||=new Promise(e=>{let t=speechSynthesis.getVoices();if(t.length>0){xN=!0,e(t);return}let n=()=>{xN=!0,speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,n),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,n),xN=!0,e(speechSynthesis.getVoices())},1e3)}),SN)}const wN={"-v":`a voice name`,"-r":`a rate value`,"-l":`a language tag`,"-o":`an output file path`,"--out":`an output file path`};function TN(e){return e!=null&&(!e.startsWith(`-`)||e===`-`)}function EN(e,t,n){switch(t){case`-v`:return e.voiceName=n,null;case`-l`:return e.lang=n,null;case`-o`:case`--out`:return e.outFile=n,null;case`-r`:{let t=parseFloat(n);return Number.isNaN(t)||t<.1||t>10?`rate must be between 0.1 and 10`:(e.rate=t,null)}default:return`unknown option: ${t}`}}function DN(e){let t={voiceName:null,rate:1,lang:null,outFile:null,text:``},n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i in wN){let n=TN(r+1<e.length?e[r+1]:void 0)?e[++r]:null;if(n==null)return q(`${i} requires ${wN[i]}`);let a=EN(t,i,n);if(a)return q(a)}else if(i.startsWith(`-`)&&i!==`--list`)return q(`unknown option: ${i}`);else i.startsWith(`-`)||n.push(i)}return t.text=n.join(` `),t}function ON(e){let t=e.onDevice?`[kokoro]`:`[web speech]`;return`${e.name} (${e.lang}) ${t}${e.default?` [default]`:``}`}async function kN(e){if(e.local){let{kokoroVoicesIfReady:e}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),t=e().map(e=>ON({name:e.id,lang:e.lang,onDevice:e.onDevice})),n=(await CN()).map(e=>ON({name:e.name,lang:e.lang,onDevice:!1,default:e.default}));return{stdout:[...t,...n].join(`
1749
1730
  `)+`
1750
- `,stderr:``,exitCode:0}}try{return{stdout:(await e.panelRpc.call(`list-voices`,void 0)).voices.map(e=>kN(e)).join(`
1731
+ `,stderr:``,exitCode:0}}try{return{stdout:(await e.panelRpc.call(`list-voices`,void 0)).voices.map(e=>ON(e)).join(`
1751
1732
  `)+`
1752
- `,stderr:``,exitCode:0}}catch(e){return q(xN(e))}}async function jN(e){if(!e.local)return(await e.panelRpc.call(`list-voices`,void 0)).voices;let{kokoroVoicesIfReady:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),n=t().map(e=>({name:e.id})),r=(await wN()).map(e=>({name:e.name}));return[...n,...r]}async function MN(e,t){let n=(await jN(e)).find(e=>e.name.toLowerCase().includes(t.toLowerCase()));return n?{resolved:n.name}:{error:q(`voice "${t}" not found. Use --list to see available voices.`)}}async function NN(e,t){try{if(e.local){let{kokoroStatus:e,kokoroWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:bN(t?n():e()),stderr:``,exitCode:0}}return{stdout:bN(t?await e.panelRpc.call(`speak-warmup`,void 0):await e.panelRpc.call(`speak-status`,void 0)),stderr:``,exitCode:0}}catch(e){return q(xN(e))}}async function PN(e,t){return t.includes(`--list`)?AN(e):t.includes(`--status`)?NN(e,!1):t.includes(`--warmup`)?NN(e,!0):null}async function FN(e){try{let{speak:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return await t(e),{stdout:``,stderr:``,exitCode:0}}catch(e){return q(`speech synthesis error: ${xN(e)}`)}}async function IN(e,t){try{return await e.panelRpc.call(`speak-text`,t,{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return q(xN(e))}}async function LN(e){let{synthesizeToWav:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);try{return{bytes:await t(e)}}catch(e){return q(xN(e))}}async function RN(e,t){try{let n=await e.panelRpc.call(`synthesize-to-wav`,{text:t.text,lang:t.lang,...t.voice?{voice:t.voice}:{},rate:t.rate},{timeoutMs:3e5});return{bytes:new Uint8Array(n.bytes)}}catch(e){return q(xN(e))}}async function zN(e,t){return e.local?LN(t):RN(e,t)}async function BN(e,t){let n=await zN(e,t);return`exitCode`in n?n:{...dr(n.bytes),stderr:``,exitCode:0}}async function VN(e,t,n,r){let i=await zN(e,r);if(`exitCode`in i)return i;let a=t.fs.resolvePath(t.cwd,n);try{await t.fs.writeFile(a,i.bytes)}catch(e){return q(`failed to write ${n}: ${xN(e)}`)}return{stdout:`wrote ${Math.max(1,Math.round(i.bytes.byteLength/1024))} KB to ${a}\n`,stderr:``,exitCode:0}}async function HN(e,t,n){let r;if(n.voiceName){let{resolved:t,error:i}=await MN(e,n.voiceName);if(i)return i;r=t}let i={text:n.text,lang:n.lang,voice:r,rate:n.rate};return n.outFile===`-`||!n.outFile&&!pr(t)?BN(e,i):n.outFile?VN(e,t,n.outFile,i):e.local?FN(i):IN(e,i)}function UN(){return C(`say`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return yN();let n={local:typeof window<`u`&&typeof speechSynthesis<`u`,panelRpc:b()};if(!n.local&&!n.panelRpc)return q(`Web Speech API unavailable in this environment`);let r=await PN(n,e);if(r)return r;let i=ON(e);return`exitCode`in i?i:i.text?i.lang?HN(n,t,{...i,lang:i.lang}):q(`-l language tag is required`):yN()})}function WN(){return C(`screencapture`,async(e,t)=>{let{runScreencapture:n}=await import(`./screencapture-run-Dp2Xkq_b.js`);return n(e,t)})}const GN=[`--domain`],KN=[`--persist`];function qN(){return`secret — manage secrets for the fetch proxy and mount backends
1733
+ `,stderr:``,exitCode:0}}catch(e){return q(bN(e))}}async function AN(e){if(!e.local)return(await e.panelRpc.call(`list-voices`,void 0)).voices;let{kokoroVoicesIfReady:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),n=t().map(e=>({name:e.id})),r=(await CN()).map(e=>({name:e.name}));return[...n,...r]}async function jN(e,t){let n=(await AN(e)).find(e=>e.name.toLowerCase().includes(t.toLowerCase()));return n?{resolved:n.name}:{error:q(`voice "${t}" not found. Use --list to see available voices.`)}}async function MN(e,t){try{if(e.local){let{kokoroStatus:e,kokoroWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:yN(t?n():e()),stderr:``,exitCode:0}}return{stdout:yN(t?await e.panelRpc.call(`speak-warmup`,void 0):await e.panelRpc.call(`speak-status`,void 0)),stderr:``,exitCode:0}}catch(e){return q(bN(e))}}async function NN(e,t){return t.includes(`--list`)?kN(e):t.includes(`--status`)?MN(e,!1):t.includes(`--warmup`)?MN(e,!0):null}async function PN(e){try{let{speak:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return await t(e),{stdout:``,stderr:``,exitCode:0}}catch(e){return q(`speech synthesis error: ${bN(e)}`)}}async function FN(e,t){try{return await e.panelRpc.call(`speak-text`,t,{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return q(bN(e))}}async function IN(e){let{synthesizeToWav:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);try{return{bytes:await t(e)}}catch(e){return q(bN(e))}}async function LN(e,t){try{let n=await e.panelRpc.call(`synthesize-to-wav`,{text:t.text,lang:t.lang,...t.voice?{voice:t.voice}:{},rate:t.rate},{timeoutMs:3e5});return{bytes:new Uint8Array(n.bytes)}}catch(e){return q(bN(e))}}async function RN(e,t){return e.local?IN(t):LN(e,t)}async function zN(e,t){let n=await RN(e,t);return`exitCode`in n?n:{...dr(n.bytes),stderr:``,exitCode:0}}async function BN(e,t,n,r){let i=await RN(e,r);if(`exitCode`in i)return i;let a=t.fs.resolvePath(t.cwd,n);try{await t.fs.writeFile(a,i.bytes)}catch(e){return q(`failed to write ${n}: ${bN(e)}`)}return{stdout:`wrote ${Math.max(1,Math.round(i.bytes.byteLength/1024))} KB to ${a}\n`,stderr:``,exitCode:0}}async function VN(e,t,n){let r;if(n.voiceName){let{resolved:t,error:i}=await jN(e,n.voiceName);if(i)return i;r=t}let i={text:n.text,lang:n.lang,voice:r,rate:n.rate};return n.outFile===`-`||!n.outFile&&!pr(t)?zN(e,i):n.outFile?BN(e,t,n.outFile,i):e.local?PN(i):FN(e,i)}function HN(){return C(`say`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return vN();let n={local:typeof window<`u`&&typeof speechSynthesis<`u`,panelRpc:b()};if(!n.local&&!n.panelRpc)return q(`Web Speech API unavailable in this environment`);let r=await NN(n,e);if(r)return r;let i=DN(e);return`exitCode`in i?i:i.text?i.lang?VN(n,t,{...i,lang:i.lang}):q(`-l language tag is required`):vN()})}function UN(){return C(`screencapture`,async(e,t)=>{let{runScreencapture:n}=await import(`./screencapture-run-Dp2Xkq_b.js`);return n(e,t)})}const WN=[`--domain`],GN=[`--persist`];function KN(){return`secret — manage secrets for the fetch proxy and mount backends
1753
1734
 
1754
1735
  No approval (session-only, in-memory, never persisted):
1755
1736
  secret set <name> <value> --domain <pat> Set a session secret. Free for a
@@ -1791,23 +1772,23 @@ Examples:
1791
1772
  secret peek OPENAI_KEY
1792
1773
  secret set GITHUB_TOKEN ghp_… --domain "api.github.com" --persist # prompts
1793
1774
  secret scope GITHUB_TOKEN --domain "api.github.com,*.github.com" # prompts
1794
- `}function JN(e){if(e===void 0||e.startsWith(`-`))return null;let t=e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return t.length===0?null:t}function YN(e){return{stdout:``,stderr:`secret: ${e}\n`,exitCode:1}}const XN={persist:`persist secret`,scope:`edit secret scope`,value:`change secret value`},ZN=/* @__PURE__ */ new Set;function QN(e,t){if(e===t)return!0;try{return St(e).test(t)}catch{return!1}}function $N(e,t){for(let n of e)if(QN(n,t))return!0;return!1}function eP(e){return{stdout:``,stderr:`${Ct(`secret`,e)}\n`,exitCode:1}}function tP(e){let t=Re(),n=e.isExtension??(t===`extension-direct`||t===`extension-delegate`),r=e.backend??Bp(t),i=e.grants??ZN,a=e.broker,o=()=>(a??=Es(null),a);return{backend:r,inExtension:n,gate:async(e,t)=>{let n=`secret:${e}:${t}`;if($N(i,n))return`ok`;let r=await o().requestApproval({kind:`secret`,detail:`${XN[e]}: ${t}`,suggestedPattern:n});if(r.decision===`deny`)return r;if(r.decision===`always`){let e=r.pattern?.trim();i.add(e&&QN(e,n)?e:n)}return`ok`},injectMaskedEnv:async t=>{if(e.setEnv&&Bt(t))try{let n=await r.getMasked(t);n&&e.setEnv(t,n.maskedValue)}catch{}},clearMaskedEnv:t=>{e.unsetEnv&&Bt(t)&&e.unsetEnv(t)}}}function nP(e){let t=P(e);if(t.length!==0)return t.endsWith(`\r
1775
+ `}function qN(e){if(e===void 0||e.startsWith(`-`))return null;let t=e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return t.length===0?null:t}function JN(e){return{stdout:``,stderr:`secret: ${e}\n`,exitCode:1}}const YN={persist:`persist secret`,scope:`edit secret scope`,value:`change secret value`},XN=/* @__PURE__ */ new Set;function ZN(e,t){if(e===t)return!0;try{return St(e).test(t)}catch{return!1}}function QN(e,t){for(let n of e)if(ZN(n,t))return!0;return!1}function $N(e){return{stdout:``,stderr:`${Ct(`secret`,e)}\n`,exitCode:1}}function eP(e){let t=Re(),n=e.isExtension??(t===`extension-direct`||t===`extension-delegate`),r=e.backend??Bp(t),i=e.grants??XN,a=e.broker,o=()=>(a??=Es(null),a);return{backend:r,inExtension:n,gate:async(e,t)=>{let n=`secret:${e}:${t}`;if(QN(i,n))return`ok`;let r=await o().requestApproval({kind:`secret`,detail:`${YN[e]}: ${t}`,suggestedPattern:n});if(r.decision===`deny`)return r;if(r.decision===`always`){let e=r.pattern?.trim();i.add(e&&ZN(e,n)?e:n)}return`ok`},injectMaskedEnv:async t=>{if(e.setEnv&&Bt(t))try{let n=await r.getMasked(t);n&&e.setEnv(t,n.maskedValue)}catch{}},clearMaskedEnv:t=>{e.unsetEnv&&Bt(t)&&e.unsetEnv(t)}}}function tP(e){let t=P(e);if(t.length!==0)return t.endsWith(`\r
1795
1776
  `)?t.slice(0,-2):t.endsWith(`
1796
- `)?t.slice(0,-1):t}async function rP(e,t,n,r){let i=await r.gate(`persist`,e);return i===`ok`?(await r.backend.setPersisted(e,t,n),await r.injectMaskedEnv(e),{stdout:`Persisted "${e}" (domains: ${n.join(`, `)})\n`,stderr:``,exitCode:0}):eP(i)}async function iP(e,t,n,r){if(await r.backend.getInfo(e)){let t=await r.gate(`value`,e);if(t!==`ok`)return eP(t)}return await r.backend.setSession(e,t,n),await r.injectMaskedEnv(e),{stdout:`Set session secret "${e}" (domains: ${n.join(`, `)}) — in-memory only, not persisted.\n`,stderr:``,exitCode:0}}async function aP(e,t,n){let r=w(e.slice(1),{value:GN,bool:KN});if(`error`in r)return YN(r.error);let i=r.positionals[0];if(!i||i.startsWith(`-`))return{stdout:``,stderr:`secret: set requires a <name>
1797
- `,exitCode:1};let a=r.positionals[1],o=nP(t.stdin);if(a!==void 0&&o!==void 0)return{stdout:``,stderr:`secret: provide <value> as an argument OR via stdin, not both
1777
+ `)?t.slice(0,-1):t}async function nP(e,t,n,r){let i=await r.gate(`persist`,e);return i===`ok`?(await r.backend.setPersisted(e,t,n),await r.injectMaskedEnv(e),{stdout:`Persisted "${e}" (domains: ${n.join(`, `)})\n`,stderr:``,exitCode:0}):$N(i)}async function rP(e,t,n,r){if(await r.backend.getInfo(e)){let t=await r.gate(`value`,e);if(t!==`ok`)return $N(t)}return await r.backend.setSession(e,t,n),await r.injectMaskedEnv(e),{stdout:`Set session secret "${e}" (domains: ${n.join(`, `)}) — in-memory only, not persisted.\n`,stderr:``,exitCode:0}}async function iP(e,t,n){let r=w(e.slice(1),{value:WN,bool:GN});if(`error`in r)return JN(r.error);let i=r.positionals[0];if(!i||i.startsWith(`-`))return{stdout:``,stderr:`secret: set requires a <name>
1778
+ `,exitCode:1};let a=r.positionals[1],o=tP(t.stdin);if(a!==void 0&&o!==void 0)return{stdout:``,stderr:`secret: provide <value> as an argument OR via stdin, not both
1798
1779
  `,exitCode:1};let s=a??o;if(s===void 0)return{stdout:``,stderr:`secret: set requires a <value>: secret set <name> <value> --domain <patterns> [--persist]
1799
1780
  or pipe the value on stdin: echo "$TOKEN" | secret set <name> --domain <patterns>
1800
- `,exitCode:1};let c=JN(r.values.get(`--domain`));return c?r.bools.has(`--persist`)?rP(i,s,c,n):iP(i,s,c,n):{stdout:``,stderr:`secret: set requires --domain <patterns>
1801
- `,exitCode:1}}function oP(e){return`'${e.replaceAll(`'`,`'\\''`)}'`}async function sP(e,t){let[n,...r]=e.slice(1),i=e=>({stdout:e,stderr:``,exitCode:0});if(n===`set`){let e=w(r,{value:GN,bool:KN}),n=`error`in e?void 0:e.positionals[0];if(!n||!Bt(n))return i(``);let a=await t.backend.getMasked(n).catch(()=>null);return i(a?`export ${n}=${oP(a.maskedValue)}\n`:``)}if(n===`delete`||n===`rm`){let e=w(r,{}),t=`error`in e?void 0:e.positionals[0];return i(t&&Bt(t)?`unset ${t}\n`:``)}return i(``)}async function cP(e,t){let n=w(e.slice(1),{});if(`error`in n)return YN(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: get requires a <name>
1802
- `,exitCode:1};let i=await t.backend.getMasked(r);return i?{stdout:`${i.name}=${i.maskedValue}\n domains: ${i.domains.join(`, `)||`(none)`}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`secret: no secret named "${r}"\n`,exitCode:1}}async function lP(e,t){let n=w(e.slice(1),{});if(`error`in n)return YN(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: peek requires a <name>
1803
- `,exitCode:1};let i=await t.backend.peek(r);return i?{stdout:`${i.name}: ${i.preview}\n domains: ${i.domains.join(`, `)||`(none)`}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`secret: no secret named "${r}"\n`,exitCode:1}}async function uP(e,t){let n=w(e.slice(1),{value:GN});if(`error`in n)return YN(n.error);let r=n.positionals[0];if(!r||r.startsWith(`-`))return{stdout:``,stderr:`secret: scope requires a <name>
1804
- `,exitCode:1};let i=JN(n.values.get(`--domain`));if(!i)return{stdout:``,stderr:`secret: scope requires --domain <patterns>
1805
- `,exitCode:1};let a=await t.gate(`scope`,r);return a===`ok`?(await t.backend.setScope(r,i),{stdout:`Updated scope for "${r}" (domains: ${i.join(`, `)})\n`,stderr:``,exitCode:0}):eP(a)}async function dP(e,t){let n=w(e.slice(1),{});if(`error`in n)return YN(n.error);let{entries:r,warnings:i}=await t.backend.list(),a=i.map(e=>`secret: ${e}\n`).join(``),o=+(i.length>0);if(r.length===0)return{stdout:i.length>0?``:`No secrets stored
1806
- `,stderr:a,exitCode:o};let s=Math.max(4,...r.map(e=>e.name.length)),c=`${`NAME`.padEnd(s)} TYPE DOMAINS\n`;for(let e of r){let t=e.persisted?`SAVED`:`SESSION`;c+=`${e.name.padEnd(s)} ${t.padEnd(7)} ${e.domains.join(`, `)}\n`}return{stdout:c,stderr:a,exitCode:o}}async function fP(e,t,n){let r=w(e.slice(1),{});if(`error`in r)return YN(r.error);let i=r.positionals[0];if(!i)return{stdout:``,stderr:`secret: ${t} requires a <name>\n`,exitCode:1};let a=await n.backend.delete(i);return a.removed?(n.clearMaskedEnv(i),{stdout:`Removed ${a.fromSession===!0?`session`:`persisted`} secret "${i}"\n`,stderr:``,exitCode:0}):{stdout:``,stderr:`secret: no secret named "${i}"\n`,exitCode:1}}async function pP(e,t){let n=w(e.slice(1),{});if(`error`in n)return YN(n.error);let r=n.positionals[0],i=n.positionals[1];if(!r||!i)return{stdout:``,stderr:`secret: test requires <name> <url>
1807
- `,exitCode:1};let a;try{a=new URL(i).hostname}catch{return{stdout:``,stderr:`secret: invalid URL "${i}"\n`,exitCode:1}}let{entries:o,warnings:s}=await t.backend.list(),c=o.find(e=>e.name===r);return c?Ra(c.domains,a)?{stdout:`✓ ${r} is allowed for ${a}\n`,stderr:``,exitCode:0}:{stdout:`✗ ${r} is NOT allowed for ${a}\n Allowed domains: ${c.domains.join(`, `)}\n`,stderr:``,exitCode:1}:{stdout:``,stderr:s.length>0?s.map(e=>`secret: ${e}\n`).join(``):`secret: no secret named "${r}"\n`,exitCode:1}}async function mP(e,t){let n=w(e.slice(1),{});if(`error`in n)return YN(n.error);if(!t.inExtension)return{stdout:`secret: in CLI mode, edit ~/.slicc/secrets.env directly with your text editor.
1781
+ `,exitCode:1};let c=qN(r.values.get(`--domain`));return c?r.bools.has(`--persist`)?nP(i,s,c,n):rP(i,s,c,n):{stdout:``,stderr:`secret: set requires --domain <patterns>
1782
+ `,exitCode:1}}function aP(e){return`'${e.replaceAll(`'`,`'\\''`)}'`}async function oP(e,t){let[n,...r]=e.slice(1),i=e=>({stdout:e,stderr:``,exitCode:0});if(n===`set`){let e=w(r,{value:WN,bool:GN}),n=`error`in e?void 0:e.positionals[0];if(!n||!Bt(n))return i(``);let a=await t.backend.getMasked(n).catch(()=>null);return i(a?`export ${n}=${aP(a.maskedValue)}\n`:``)}if(n===`delete`||n===`rm`){let e=w(r,{}),t=`error`in e?void 0:e.positionals[0];return i(t&&Bt(t)?`unset ${t}\n`:``)}return i(``)}async function sP(e,t){let n=w(e.slice(1),{});if(`error`in n)return JN(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: get requires a <name>
1783
+ `,exitCode:1};let i=await t.backend.getMasked(r);return i?{stdout:`${i.name}=${i.maskedValue}\n domains: ${i.domains.join(`, `)||`(none)`}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`secret: no secret named "${r}"\n`,exitCode:1}}async function cP(e,t){let n=w(e.slice(1),{});if(`error`in n)return JN(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: peek requires a <name>
1784
+ `,exitCode:1};let i=await t.backend.peek(r);return i?{stdout:`${i.name}: ${i.preview}\n domains: ${i.domains.join(`, `)||`(none)`}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`secret: no secret named "${r}"\n`,exitCode:1}}async function lP(e,t){let n=w(e.slice(1),{value:WN});if(`error`in n)return JN(n.error);let r=n.positionals[0];if(!r||r.startsWith(`-`))return{stdout:``,stderr:`secret: scope requires a <name>
1785
+ `,exitCode:1};let i=qN(n.values.get(`--domain`));if(!i)return{stdout:``,stderr:`secret: scope requires --domain <patterns>
1786
+ `,exitCode:1};let a=await t.gate(`scope`,r);return a===`ok`?(await t.backend.setScope(r,i),{stdout:`Updated scope for "${r}" (domains: ${i.join(`, `)})\n`,stderr:``,exitCode:0}):$N(a)}async function uP(e,t){let n=w(e.slice(1),{});if(`error`in n)return JN(n.error);let{entries:r,warnings:i}=await t.backend.list(),a=i.map(e=>`secret: ${e}\n`).join(``),o=+(i.length>0);if(r.length===0)return{stdout:i.length>0?``:`No secrets stored
1787
+ `,stderr:a,exitCode:o};let s=Math.max(4,...r.map(e=>e.name.length)),c=`${`NAME`.padEnd(s)} TYPE DOMAINS\n`;for(let e of r){let t=e.persisted?`SAVED`:`SESSION`;c+=`${e.name.padEnd(s)} ${t.padEnd(7)} ${e.domains.join(`, `)}\n`}return{stdout:c,stderr:a,exitCode:o}}async function dP(e,t,n){let r=w(e.slice(1),{});if(`error`in r)return JN(r.error);let i=r.positionals[0];if(!i)return{stdout:``,stderr:`secret: ${t} requires a <name>\n`,exitCode:1};let a=await n.backend.delete(i);return a.removed?(n.clearMaskedEnv(i),{stdout:`Removed ${a.fromSession===!0?`session`:`persisted`} secret "${i}"\n`,stderr:``,exitCode:0}):{stdout:``,stderr:`secret: no secret named "${i}"\n`,exitCode:1}}async function fP(e,t){let n=w(e.slice(1),{});if(`error`in n)return JN(n.error);let r=n.positionals[0],i=n.positionals[1];if(!r||!i)return{stdout:``,stderr:`secret: test requires <name> <url>
1788
+ `,exitCode:1};let a;try{a=new URL(i).hostname}catch{return{stdout:``,stderr:`secret: invalid URL "${i}"\n`,exitCode:1}}let{entries:o,warnings:s}=await t.backend.list(),c=o.find(e=>e.name===r);return c?Ra(c.domains,a)?{stdout:`✓ ${r} is allowed for ${a}\n`,stderr:``,exitCode:0}:{stdout:`✗ ${r} is NOT allowed for ${a}\n Allowed domains: ${c.domains.join(`, `)}\n`,stderr:``,exitCode:1}:{stdout:``,stderr:s.length>0?s.map(e=>`secret: ${e}\n`).join(``):`secret: no secret named "${r}"\n`,exitCode:1}}async function pP(e,t){let n=w(e.slice(1),{});if(`error`in n)return JN(n.error);if(!t.inExtension)return{stdout:`secret: in CLI mode, edit ~/.slicc/secrets.env directly with your text editor.
1808
1789
  (changes are picked up on the next request — no restart needed)
1809
1790
  `,stderr:``,exitCode:0};try{return await chrome.runtime.openOptionsPage(),{stdout:`Opened Mount Secrets options page in a new tab.
1810
- `,stderr:``,exitCode:0}}catch{let e=chrome.runtime.getURL(`secrets.html`);return window.open(e,`_blank`),{stdout:`Opened ${e}\n`,stderr:``,exitCode:0}}}async function hP(e,t,n){let r=e[0];switch(r){case`set`:return aP(e,t,n);case`get`:case`read`:return cP(e,n);case`shell-env`:return sP(e,n);case`peek`:return lP(e,n);case`scope`:return uP(e,n);case`list`:return dP(e,n);case`delete`:case`rm`:return fP(e,r,n);case`test`:return pP(e,n);case`edit`:return mP(e,n);default:return{stdout:``,stderr:`secret: unknown command "${r}"\n`,exitCode:1}}}function gP(e={}){let t=tP(e);return C(`secret`,async(e,n)=>{if(e.length===0||T(e,{valueFlags:GN}))return{stdout:qN(),stderr:``,exitCode:0};try{return await hP(e,n,t)}catch(e){return{stdout:``,stderr:`secret: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function _P(){return null}function vP(){return null}function yP(){return{stdout:`usage: serve [--entry <relative-path>] [--ttl <duration>] [--bridge | --no-bridge] [--max-tabs <n>] [--quiet] [--stop <token>] [--list] <directory>
1791
+ `,stderr:``,exitCode:0}}catch{let e=chrome.runtime.getURL(`secrets.html`);return window.open(e,`_blank`),{stdout:`Opened ${e}\n`,stderr:``,exitCode:0}}}async function mP(e,t,n){let r=e[0];switch(r){case`set`:return iP(e,t,n);case`get`:case`read`:return sP(e,n);case`shell-env`:return oP(e,n);case`peek`:return cP(e,n);case`scope`:return lP(e,n);case`list`:return uP(e,n);case`delete`:case`rm`:return dP(e,r,n);case`test`:return fP(e,n);case`edit`:return pP(e,n);default:return{stdout:``,stderr:`secret: unknown command "${r}"\n`,exitCode:1}}}function hP(e={}){let t=eP(e);return C(`secret`,async(e,n)=>{if(e.length===0||T(e,{valueFlags:WN}))return{stdout:KN(),stderr:``,exitCode:0};try{return await mP(e,n,t)}catch(e){return{stdout:``,stderr:`secret: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function gP(){return null}function _P(){return null}function vP(){return{stdout:`usage: serve [--entry <relative-path>] [--ttl <duration>] [--bridge | --no-bridge] [--max-tabs <n>] [--quiet] [--stop <token>] [--list] <directory>
1811
1792
  serve --logs [<token>] [--lines <n>]
1812
1793
  serve --truncate [<token>]
1813
1794
 
@@ -1843,28 +1824,28 @@ Limits and lifetime:
1843
1824
  its TTL. Either can be removed sooner with \`serve --stop\`.
1844
1825
  - <token> is the "Preview token" printed at mint time or the TOKEN column
1845
1826
  of \`serve --list\`; \`--stop\` also accepts the preview URL.
1846
- `,stderr:``,exitCode:0}}function bP(e){return`error`in e}function xP(e,t,n){if(e===`--list`)return n.list=!0,{skip:0};if(e===`--logs`||e===`--truncate`){let r=e===`--logs`?`logs`:`truncate`;return t&&!t.startsWith(`-`)?(n[r]=t,{skip:1}):(n[r]=!0,{skip:0})}if(e.startsWith(`--logs=`)||e.startsWith(`--truncate=`)){let t=e.startsWith(`--logs=`)?`logs`:`truncate`,r=e.slice(e.indexOf(`=`)+1);return r?(n[t]=r,{skip:0}):{error:`serve: missing value for --${t}\n`}}if(e===`--lines`||e.startsWith(`--lines=`)){let r=e===`--lines`?t:e.slice(8),i=r===void 0?NaN:Number(r);return!Number.isSafeInteger(i)||i<=0?{error:`serve: --lines must be a positive integer
1847
- `}:(n.lines=i,{skip:+(e===`--lines`)})}}function SP(e,t,n){if(e!==`--ttl`&&!e.startsWith(`--ttl=`))return;let r=e===`--ttl`?t:e.slice(6);if(!r)return{error:`serve: missing value for --ttl
1827
+ `,stderr:``,exitCode:0}}function yP(e){return`error`in e}function bP(e,t,n){if(e===`--list`)return n.list=!0,{skip:0};if(e===`--logs`||e===`--truncate`){let r=e===`--logs`?`logs`:`truncate`;return t&&!t.startsWith(`-`)?(n[r]=t,{skip:1}):(n[r]=!0,{skip:0})}if(e.startsWith(`--logs=`)||e.startsWith(`--truncate=`)){let t=e.startsWith(`--logs=`)?`logs`:`truncate`,r=e.slice(e.indexOf(`=`)+1);return r?(n[t]=r,{skip:0}):{error:`serve: missing value for --${t}\n`}}if(e===`--lines`||e.startsWith(`--lines=`)){let r=e===`--lines`?t:e.slice(8),i=r===void 0?NaN:Number(r);return!Number.isSafeInteger(i)||i<=0?{error:`serve: --lines must be a positive integer
1828
+ `}:(n.lines=i,{skip:+(e===`--lines`)})}}function xP(e,t,n){if(e!==`--ttl`&&!e.startsWith(`--ttl=`))return;let r=e===`--ttl`?t:e.slice(6);if(!r)return{error:`serve: missing value for --ttl
1848
1829
  `};let i=/^([1-9][0-9]*)([mhdw])$/.exec(r);if(!i)return{error:`serve: --ttl must be a positive whole duration (m, h, d, or w)
1849
1830
  `};let a=Number(i[1])*{m:6e4,h:36e5,d:864e5,w:6048e5}[i[2]];return Number.isSafeInteger(a)?a>2592e6?{error:`serve: --ttl cannot exceed 30d; longer retention requires a Sliccy Deluxe De-Enshittification plan.
1850
1831
  `}:(n.ttlMs=a,{skip:+(e===`--ttl`)}):{error:`serve: --ttl must be a positive whole duration (m, h, d, or w)
1851
- `}}function CP(e,t){let n={"--bridge":`bridge`,"--no-bridge":`noBridge`,"--project":`project`,"--quiet":`quiet`}[e];if(n)return t[n]=!0,{skip:0}}function wP(e,t,n){let r=SP(e,t,n);if(r)return r;let i=CP(e,n);if(i)return i;if(e===`--entry`)return t?(n.entry=t,{skip:1}):{error:`serve: missing value for --entry
1832
+ `}}function SP(e,t){let n={"--bridge":`bridge`,"--no-bridge":`noBridge`,"--project":`project`,"--quiet":`quiet`}[e];if(n)return t[n]=!0,{skip:0}}function CP(e,t,n){let r=xP(e,t,n);if(r)return r;let i=SP(e,n);if(i)return i;if(e===`--entry`)return t?(n.entry=t,{skip:1}):{error:`serve: missing value for --entry
1852
1833
  `};if(e.startsWith(`--entry=`))return n.entry=e.slice(8),{skip:0};if(e===`--stop`)return t?(n.stop=t,{skip:1}):{error:`serve: missing value for --stop
1853
- `};if(e.startsWith(`--stop=`))return n.stop=e.slice(7),{skip:0};let a=xP(e,t,n);if(a)return a;if(e===`--max-tabs`){if(!t)return{error:`serve: missing value for --max-tabs
1834
+ `};if(e.startsWith(`--stop=`))return n.stop=e.slice(7),{skip:0};let a=bP(e,t,n);if(a)return a;if(e===`--max-tabs`){if(!t)return{error:`serve: missing value for --max-tabs
1854
1835
  `};let e=Number.parseInt(t,10);return!Number.isFinite(e)||e<=0?{error:`serve: --max-tabs must be a positive integer
1855
1836
  `}:(n.maxTabs=e,{skip:1})}if(e.startsWith(`--max-tabs=`)){let t=Number.parseInt(e.slice(11),10);return!Number.isFinite(t)||t<=0?{error:`serve: --max-tabs must be a positive integer
1856
1837
  `}:(n.maxTabs=t,{skip:0})}return e.startsWith(`-`)?{error:`serve: unknown option: ${e}\n`}:n.directory?{error:`serve: expected a single directory argument
1857
- `}:(n.directory=e,{skip:0})}function TP(e){let t={entry:`index.html`,bridge:!1,noBridge:!1,project:!1,list:!1,quiet:!1};for(let n=0;n<e.length;n+=1){let r=wP(e[n],e[n+1],t);if(bP(r))return{...t,error:r.error};n+=r.skip}return t}async function EP(e,t,n,r){if(!Fr(t))return{stdout:``,stderr:`serve: invalid entry file: ${t}\n`,exitCode:1};let i=n.resolvePath(r,e),a;try{a=await n.stat(i)}catch{return{stdout:``,stderr:`serve: no such directory: ${e}\n`,exitCode:1}}if(!a.isDirectory)return{stdout:``,stderr:`serve: not a directory: ${e}\n`,exitCode:1};let o=Hr(i,t),s;try{s=await n.stat(o)}catch{return{stdout:``,stderr:`serve: entry file not found: ${o}\n`,exitCode:1}}return s.isFile?{fullDirectory:i,entryPath:o}:{stdout:``,stderr:`serve: entry is not a file: ${o}\n`,exitCode:1}}function DP(e){return`exitCode`in e}async function OP(e){let t=Ia(e)??e,n,r=vP();if(r)n=await r({type:`stop`,previewToken:t});else{let e=b();if(!e)return{stdout:``,stderr:"serve: no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.\n",exitCode:1};n=await e.call(`tray-revoke-preview`,{previewToken:t})}if(!n.revoked)return{stdout:``,stderr:`serve: preview token not found or already revoked
1858
- `,exitCode:1};if(n.webhookId){let e=await Ey();if(!e)return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but the preview-bridge webhook could not be cleaned up (lick manager unavailable). It is a live endpoint — delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0};try{await e.deleteWebhook(n.webhookId)}catch(e){return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but webhook cleanup failed: ${e instanceof Error?e.message:String(e)}. Delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0}}}return{stdout:`Preview revoked: ${t}\n`,stderr:``,exitCode:0}}async function kP(){let e=vP();if(e){let t=(await e({type:`list`})).previews??[];return t.length===0?{stdout:`No active previews
1859
- `,stderr:``,exitCode:0}:{stdout:jP(t),stderr:``,exitCode:0}}let t=b();if(!t)return{stdout:``,stderr:"serve: no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.\n",exitCode:1};let n=(await t.call(`tray-list-previews`,void 0)).previews??[];return n.length===0?{stdout:`No active previews
1860
- `,stderr:``,exitCode:0}:{stdout:jP(n),stderr:``,exitCode:0}}function AP(e){return e.mode===`persistent`?e.state===`pending`?`uploading`:`persistent`:`live`}function jP(e){return`Active previews:\n TOKEN MODE EXPIRES URL ROOT CREATED\n${e.map(e=>` ${e.previewToken} ${AP(e)} ${e.expiresAt??`-`} ${e.url} ${e.servedRoot} ${e.createdAt}\n`).join(``)}`}function MP(e){let t=e.announced?`announced`:`suppressed`,n=e.previewToken??`-`,r=e.lifecycle===`connected`?`origin=${e.origin??`-`} userAgent=${e.userAgent??`-`}`:`reason=${e.reason??`-`}`;return`${e.timestamp} ${e.lifecycle.padEnd(12)} ${t.padEnd(10)} preview=${n} conn=${e.connId} ${r}\n`}async function NP(e){let t,n=vP();if(n)t=(await n({type:`logs`,previewToken:e.previewToken})).lifecycleRecords??[];else{let n=b();if(!n)return{stdout:``,stderr:"serve --logs: no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.\n",exitCode:1};t=(await n.call(`tray-preview-logs`,{previewToken:e.previewToken})).lifecycleRecords}return e.lines!==void 0&&(t=t.slice(-e.lines)),t.length===0?{stdout:`No preview lifecycle records. The recorder is leader-memory-only and resets on leader restart.
1861
- `,stderr:``,exitCode:0}:{stdout:`Preview lifecycle records (oldest to newest):\n${t.map(MP).join(``)}`,stderr:``,exitCode:0}}async function PP(e){let t,n,r=vP();if(r){let i=await r({type:`truncate`,previewToken:e});t=i.cleared??0,n=i.rearmed??0}else{let r=b();if(!r)return{stdout:``,stderr:"serve --truncate: no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.\n",exitCode:1};let i=await r.call(`tray-preview-truncate`,{previewToken:e});t=i.cleared,n=i.rearmed}return{stdout:`Cleared ${t} preview lifecycle record${t===1?``:`s`}; re-armed ${n} preview announcement${n===1?``:`s`}.\n`,stderr:``,exitCode:0}}async function FP(e,t){let n=[],r=0;for await(let i of e.walk(t)){if(n.length>=1e3)throw Error(`persistent preview exceeds 1000 file limit`);let a=await e.readFile(i,{encoding:`binary`}),o=typeof a==`string`?new TextEncoder().encode(a):a,s=i.slice(t===`/`?1:t.length+1);if(o.byteLength>26214400)throw Error(`preview file exceeds 25 MiB limit: ${s}`);if(r+=o.byteLength,r>52428800)throw Error(`persistent preview exceeds 50 MiB total limit`);n.push({path:s,content:o,mime:Dr(s)})}return n}function IP(e){return e().catch(e=>({stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}))}async function LP(e){let t=_P();if(t)return t(e);let n=b();if(!n)throw Error("no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.");return e.ttlMs===void 0?n.call(`tray-open-preview`,e):n.call(`tray-open-preview`,e,{timeoutMs:6e5})}async function RP(e,t){if(t)return t.createPage(e);typeof window<`u`&&typeof window.open==`function`&&window.open(e,`_blank`,`noopener,noreferrer`)}async function zP(e,t){if(!e)return{ok:!0};let n=await Ey();if(!n)return{ok:!1,result:{stdout:``,stderr:`${t}serve: --bridge requires an active lick manager\n`,exitCode:1}};try{return{ok:!0,webhookId:(await n.createWebhook(`preview-bridge`)).id}}catch(e){return{ok:!1,result:{stdout:``,stderr:`${t}serve: webhook creation failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}}async function BP(e,t,n,r,i,a,o){let s;try{s=await LP({entryPath:n,servedRoot:t,bridge:e.bridge,noBridge:e.ttlMs!==void 0||e.noBridge,maxTabs:e.maxTabs,quiet:e.quiet,webhookId:r,ttlMs:e.ttlMs,snapshotFiles:a})}catch(e){if(r){let e=await Ey();e&&await e.deleteWebhook(r).catch(()=>{})}return{stdout:``,stderr:`${i}serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let c=await RP(s.url,o),l=`${s.pushed} follower${s.pushed===1?``:`s`}`,u=c?` (targetId: ${c})`:``,d=e.ttlMs===void 0?`expires 5 min after the leader disconnects`:`kept until its --ttl expires; counts toward the 10-snapshot tray quota`,f=s.previewToken?`Preview token: ${s.previewToken} (${d}; revoke sooner with serve --stop)\n`:``;return{stdout:`Preview URL: ${s.url}${u}\n${f}Pushed to ${l}\n`,stderr:i,exitCode:0}}async function VP(e){if(e.stop){let t=e.stop;return IP(()=>OP(t))}if(e.list)return IP(()=>kP());if(e.logs&&e.truncate)return{stdout:``,stderr:`serve: --logs and --truncate are mutually exclusive
1838
+ `}:(n.directory=e,{skip:0})}function wP(e){let t={entry:`index.html`,bridge:!1,noBridge:!1,project:!1,list:!1,quiet:!1};for(let n=0;n<e.length;n+=1){let r=CP(e[n],e[n+1],t);if(yP(r))return{...t,error:r.error};n+=r.skip}return t}async function TP(e,t,n,r){if(!Fr(t))return{stdout:``,stderr:`serve: invalid entry file: ${t}\n`,exitCode:1};let i=n.resolvePath(r,e),a;try{a=await n.stat(i)}catch{return{stdout:``,stderr:`serve: no such directory: ${e}\n`,exitCode:1}}if(!a.isDirectory)return{stdout:``,stderr:`serve: not a directory: ${e}\n`,exitCode:1};let o=Hr(i,t),s;try{s=await n.stat(o)}catch{return{stdout:``,stderr:`serve: entry file not found: ${o}\n`,exitCode:1}}return s.isFile?{fullDirectory:i,entryPath:o}:{stdout:``,stderr:`serve: entry is not a file: ${o}\n`,exitCode:1}}function EP(e){return`exitCode`in e}async function DP(e){let t=Ia(e)??e,n,r=_P();if(r)n=await r({type:`stop`,previewToken:t});else{let e=b();if(!e)return{stdout:``,stderr:"serve: no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.\n",exitCode:1};n=await e.call(`tray-revoke-preview`,{previewToken:t})}if(!n.revoked)return{stdout:``,stderr:`serve: preview token not found or already revoked
1839
+ `,exitCode:1};if(n.webhookId){let e=await Ey();if(!e)return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but the preview-bridge webhook could not be cleaned up (lick manager unavailable). It is a live endpoint — delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0};try{await e.deleteWebhook(n.webhookId)}catch(e){return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but webhook cleanup failed: ${e instanceof Error?e.message:String(e)}. Delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0}}}return{stdout:`Preview revoked: ${t}\n`,stderr:``,exitCode:0}}async function OP(){let e=_P();if(e){let t=(await e({type:`list`})).previews??[];return t.length===0?{stdout:`No active previews
1840
+ `,stderr:``,exitCode:0}:{stdout:AP(t),stderr:``,exitCode:0}}let t=b();if(!t)return{stdout:``,stderr:"serve: no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.\n",exitCode:1};let n=(await t.call(`tray-list-previews`,void 0)).previews??[];return n.length===0?{stdout:`No active previews
1841
+ `,stderr:``,exitCode:0}:{stdout:AP(n),stderr:``,exitCode:0}}function kP(e){return e.mode===`persistent`?e.state===`pending`?`uploading`:`persistent`:`live`}function AP(e){return`Active previews:\n TOKEN MODE EXPIRES URL ROOT CREATED\n${e.map(e=>` ${e.previewToken} ${kP(e)} ${e.expiresAt??`-`} ${e.url} ${e.servedRoot} ${e.createdAt}\n`).join(``)}`}function jP(e){let t=e.announced?`announced`:`suppressed`,n=e.previewToken??`-`,r=e.lifecycle===`connected`?`origin=${e.origin??`-`} userAgent=${e.userAgent??`-`}`:`reason=${e.reason??`-`}`;return`${e.timestamp} ${e.lifecycle.padEnd(12)} ${t.padEnd(10)} preview=${n} conn=${e.connId} ${r}\n`}async function MP(e){let t,n=_P();if(n)t=(await n({type:`logs`,previewToken:e.previewToken})).lifecycleRecords??[];else{let n=b();if(!n)return{stdout:``,stderr:"serve --logs: no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.\n",exitCode:1};t=(await n.call(`tray-preview-logs`,{previewToken:e.previewToken})).lifecycleRecords}return e.lines!==void 0&&(t=t.slice(-e.lines)),t.length===0?{stdout:`No preview lifecycle records. The recorder is leader-memory-only and resets on leader restart.
1842
+ `,stderr:``,exitCode:0}:{stdout:`Preview lifecycle records (oldest to newest):\n${t.map(jP).join(``)}`,stderr:``,exitCode:0}}async function NP(e){let t,n,r=_P();if(r){let i=await r({type:`truncate`,previewToken:e});t=i.cleared??0,n=i.rearmed??0}else{let r=b();if(!r)return{stdout:``,stderr:"serve --truncate: no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.\n",exitCode:1};let i=await r.call(`tray-preview-truncate`,{previewToken:e});t=i.cleared,n=i.rearmed}return{stdout:`Cleared ${t} preview lifecycle record${t===1?``:`s`}; re-armed ${n} preview announcement${n===1?``:`s`}.\n`,stderr:``,exitCode:0}}async function PP(e,t){let n=[],r=0;for await(let i of e.walk(t)){if(n.length>=1e3)throw Error(`persistent preview exceeds 1000 file limit`);let a=await e.readFile(i,{encoding:`binary`}),o=typeof a==`string`?new TextEncoder().encode(a):a,s=i.slice(t===`/`?1:t.length+1);if(o.byteLength>26214400)throw Error(`preview file exceeds 25 MiB limit: ${s}`);if(r+=o.byteLength,r>52428800)throw Error(`persistent preview exceeds 50 MiB total limit`);n.push({path:s,content:o,mime:Dr(s)})}return n}function FP(e){return e().catch(e=>({stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}))}async function IP(e){let t=gP();if(t)return t(e);let n=b();if(!n)throw Error("no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.");return e.ttlMs===void 0?n.call(`tray-open-preview`,e):n.call(`tray-open-preview`,e,{timeoutMs:6e5})}async function LP(e,t){if(t)return t.createPage(e);typeof window<`u`&&typeof window.open==`function`&&window.open(e,`_blank`,`noopener,noreferrer`)}async function RP(e,t){if(!e)return{ok:!0};let n=await Ey();if(!n)return{ok:!1,result:{stdout:``,stderr:`${t}serve: --bridge requires an active lick manager\n`,exitCode:1}};try{return{ok:!0,webhookId:(await n.createWebhook(`preview-bridge`)).id}}catch(e){return{ok:!1,result:{stdout:``,stderr:`${t}serve: webhook creation failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}}async function zP(e,t,n,r,i,a,o){let s;try{s=await IP({entryPath:n,servedRoot:t,bridge:e.bridge,noBridge:e.ttlMs!==void 0||e.noBridge,maxTabs:e.maxTabs,quiet:e.quiet,webhookId:r,ttlMs:e.ttlMs,snapshotFiles:a})}catch(e){if(r){let e=await Ey();e&&await e.deleteWebhook(r).catch(()=>{})}return{stdout:``,stderr:`${i}serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let c=await LP(s.url,o),l=`${s.pushed} follower${s.pushed===1?``:`s`}`,u=c?` (targetId: ${c})`:``,d=e.ttlMs===void 0?`expires 5 min after the leader disconnects`:`kept until its --ttl expires; counts toward the 10-snapshot tray quota`,f=s.previewToken?`Preview token: ${s.previewToken} (${d}; revoke sooner with serve --stop)\n`:``;return{stdout:`Preview URL: ${s.url}${u}\n${f}Pushed to ${l}\n`,stderr:i,exitCode:0}}async function BP(e){if(e.stop){let t=e.stop;return FP(()=>DP(t))}if(e.list)return FP(()=>OP());if(e.logs&&e.truncate)return{stdout:``,stderr:`serve: --logs and --truncate are mutually exclusive
1862
1843
  `,exitCode:1};if(e.lines!==void 0&&!e.logs)return{stdout:``,stderr:`serve: --lines requires --logs
1863
- `,exitCode:1};if(e.logs){let t=typeof e.logs==`string`?e.logs:void 0;return IP(()=>NP({previewToken:t,lines:e.lines}))}if(e.truncate){let t=typeof e.truncate==`string`?e.truncate:void 0;return IP(()=>PP(t))}}function HP(e){if(e.ttlMs!==void 0&&e.bridge)return{stdout:``,stderr:`serve: --ttl cannot be combined with --bridge
1844
+ `,exitCode:1};if(e.logs){let t=typeof e.logs==`string`?e.logs:void 0;return FP(()=>MP({previewToken:t,lines:e.lines}))}if(e.truncate){let t=typeof e.truncate==`string`?e.truncate:void 0;return FP(()=>NP(t))}}function VP(e){if(e.ttlMs!==void 0&&e.bridge)return{stdout:``,stderr:`serve: --ttl cannot be combined with --bridge
1864
1845
  `,exitCode:1};if(e.ttlMs!==void 0&&e.maxTabs!==void 0)return{stdout:``,stderr:`serve: --ttl cannot be combined with --max-tabs
1865
- `,exitCode:1}}async function UP(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return FP(t,n)}}async function WP(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return yP();let i=TP(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await VP(i);if(a)return a;if(!i.directory)return yP();let o=HP(i);if(o)return o;let s=await EP(i.directory,i.entry,t.fs,t.cwd);if(DP(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await UP(i,r,c)}catch(e){return{stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let d=i.project?`serve: --project is obsolete; ignored (root-absolute paths work natively under unified preview)
1866
- `:``,f=await zP(!i.noBridge&&i.bridge,d);return f.ok?BP(i,c,l,f.webhookId,d,u,n):f.result}function GP(e,t){return C(`serve`,(n,r)=>WP(n,r,e,t))}const KP=`usage: session export [--id <id>] [--output <path>]
1867
- `;function qP(e){if(e.includes(`\0`))return{ok:!1,reason:`path must not contain NUL bytes`};if(e.includes(`\\`))return{ok:!1,reason:`path must not contain backslashes`};let t=e.split(`/`);for(let e of t)if(e===`..`)return{ok:!1,reason:`path must not contain ".."/traversal segments`};return{ok:!0}}function JP(e){let t=null,n=null,r=e.slice(1);for(let e=0;e<r.length;e++){let i=r[e];if(i===`--id`){if(t!==null)return{ok:!1,stderr:`session export: duplicate flag --id\n${KP}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${KP}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${KP}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${KP}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${KP}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${KP}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function YP(e){let t=[],n=0;for await(let r of e.chunks)t.push(r),n+=r.byteLength;let r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.byteLength;let a=await e.completion;if(a.byteLength!==n||It(r)!==a.sha256)throw new Ua(`transfer-corrupt`);return r}async function XP(e,t){let n=JP(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=qP(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${KP}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await As().export(a,{}),n=await YP(e),r=i??`/workspace/${e.filename}`;return await t.fs.writeFile(r,n),{stdout:`exported ${r}\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`session export: ${e instanceof Ua?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function ZP(){return C(`session`,async(e,t)=>{if(e[0]===`export`&&!T(e))return XP(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-Dittb53J.js`);return n(e,t,KP)})}function QP(){return C(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-Df4gWXzQ.js`);return await n(e,t)})}const $P=`leader`;function eF(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function tF(e){return+!!e.leader+e.followers.length}function nF(){return{stdout:`usage: sprinkle <subcommand> [args]
1846
+ `,exitCode:1}}async function HP(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return PP(t,n)}}async function UP(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return vP();let i=wP(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await BP(i);if(a)return a;if(!i.directory)return vP();let o=VP(i);if(o)return o;let s=await TP(i.directory,i.entry,t.fs,t.cwd);if(EP(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await HP(i,r,c)}catch(e){return{stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let d=i.project?`serve: --project is obsolete; ignored (root-absolute paths work natively under unified preview)
1847
+ `:``,f=await RP(!i.noBridge&&i.bridge,d);return f.ok?zP(i,c,l,f.webhookId,d,u,n):f.result}function WP(e,t){return C(`serve`,(n,r)=>UP(n,r,e,t))}const GP=`usage: session export [--id <id>] [--output <path>]
1848
+ `;function KP(e){if(e.includes(`\0`))return{ok:!1,reason:`path must not contain NUL bytes`};if(e.includes(`\\`))return{ok:!1,reason:`path must not contain backslashes`};let t=e.split(`/`);for(let e of t)if(e===`..`)return{ok:!1,reason:`path must not contain ".."/traversal segments`};return{ok:!0}}function qP(e){let t=null,n=null,r=e.slice(1);for(let e=0;e<r.length;e++){let i=r[e];if(i===`--id`){if(t!==null)return{ok:!1,stderr:`session export: duplicate flag --id\n${GP}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${GP}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${GP}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${GP}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${GP}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${GP}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function JP(e){let t=[],n=0;for await(let r of e.chunks)t.push(r),n+=r.byteLength;let r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.byteLength;let a=await e.completion;if(a.byteLength!==n||It(r)!==a.sha256)throw new Ua(`transfer-corrupt`);return r}async function YP(e,t){let n=qP(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=KP(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${GP}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await As().export(a,{}),n=await JP(e),r=i??`/workspace/${e.filename}`;return await t.fs.writeFile(r,n),{stdout:`exported ${r}\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`session export: ${e instanceof Ua?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function XP(){return C(`session`,async(e,t)=>{if(e[0]===`export`&&!T(e))return YP(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-DLiyeHi2.js`);return n(e,t,GP)})}function ZP(){return C(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-Df4gWXzQ.js`);return await n(e,t)})}const QP=`leader`;function $P(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function eF(e){return+!!e.leader+e.followers.length}function tF(){return{stdout:`usage: sprinkle <subcommand> [args]
1868
1849
 
1869
1850
  list [--runtime <id>] List sprinkles + an instance line per runtime
1870
1851
  open <name> Open a sprinkle by name
@@ -1882,22 +1863,22 @@ Limits and lifetime:
1882
1863
  chat <html> Show inline HTML in chat (Tool UI)
1883
1864
  Use data-action="name" on buttons for callbacks
1884
1865
  Pipe HTML: echo "<div>...</div>" | sprinkle chat
1885
- `,stderr:``,exitCode:0}}function rF(){return globalThis.__slicc_sprinkleManager??null}function J(e,t){return{stdout:``,stderr:`sprinkle ${e}: ${t}\n`,exitCode:1}}function iF(){return[$P,...ie().map(e=>e.runtimeId)]}function aF(e){return`unknown runtime "${e}"\nknown runtimes: ${iF().join(`, `)}\nRun \`host\` to see connected followers.`}async function oF(e,t){let n=e.slice(1).join(` `);if(!n){let e=P(t.stdin);e&&(n=e)}if(!n)return{stdout:``,stderr:`sprinkle chat: HTML content required
1866
+ `,stderr:``,exitCode:0}}function nF(){return globalThis.__slicc_sprinkleManager??null}function J(e,t){return{stdout:``,stderr:`sprinkle ${e}: ${t}\n`,exitCode:1}}function rF(){return[QP,...ie().map(e=>e.runtimeId)]}function iF(e){return`unknown runtime "${e}"\nknown runtimes: ${rF().join(`, `)}\nRun \`host\` to see connected followers.`}async function aF(e,t){let n=e.slice(1).join(` `);if(!n){let e=P(t.stdin);e&&(n=e)}if(!n)return{stdout:``,stderr:`sprinkle chat: HTML content required
1886
1867
  `,exitCode:1};let r=await We({html:n,onAction:async(e,t)=>({action:e,data:t})});return r===null?{stdout:``,stderr:`sprinkle chat: not in tool execution context
1887
1868
  `,exitCode:1}:{stdout:JSON.stringify(r)+`
1888
- `,stderr:``,exitCode:0}}function sF(e){return e.map(e=>{let t=e.runtime?` (${e.runtime})`:``;return` instance: ${e.runtimeId}${t}`})}function cF(e){return[...e.map(e=>({name:e,runtimeId:$P})),...eF()]}async function lF(e,t){let n=w(t.slice(1),{value:[`--runtime`]});if(`error`in n)return J(`list`,n.error);let r=n.values.get(`--runtime`);if(r!==void 0&&!iF().includes(r))return J(`list`,aF(r));await e.refresh();let i=e.available();if(i.length===0)return{stdout:`No .shtml sprinkles found.
1889
- `,stderr:``,exitCode:0};let a=new Set(e.opened()),o=cF([...a]).filter(e=>r===void 0||e.runtimeId===r),s=[];for(let e of i){let t=o.filter(t=>t.name===e.name);if(r!==void 0&&t.length===0)continue;let n=a.has(e.name)?` [open]`:``;s.push(` ${e.name}${n} ${e.title} (${e.path})`),s.push(...sF(t))}return s.length===0?{stdout:`No sprinkles are open on runtime "${r}".\n`,stderr:``,exitCode:0}:{stdout:s.join(`
1869
+ `,stderr:``,exitCode:0}}function oF(e){return e.map(e=>{let t=e.runtime?` (${e.runtime})`:``;return` instance: ${e.runtimeId}${t}`})}function sF(e){return[...e.map(e=>({name:e,runtimeId:QP})),...$P()]}async function cF(e,t){let n=w(t.slice(1),{value:[`--runtime`]});if(`error`in n)return J(`list`,n.error);let r=n.values.get(`--runtime`);if(r!==void 0&&!rF().includes(r))return J(`list`,iF(r));await e.refresh();let i=e.available();if(i.length===0)return{stdout:`No .shtml sprinkles found.
1870
+ `,stderr:``,exitCode:0};let a=new Set(e.opened()),o=sF([...a]).filter(e=>r===void 0||e.runtimeId===r),s=[];for(let e of i){let t=o.filter(t=>t.name===e.name);if(r!==void 0&&t.length===0)continue;let n=a.has(e.name)?` [open]`:``;s.push(` ${e.name}${n} ${e.title} (${e.path})`),s.push(...oF(t))}return s.length===0?{stdout:`No sprinkles are open on runtime "${r}".\n`,stderr:``,exitCode:0}:{stdout:s.join(`
1890
1871
  `)+`
1891
- `,stderr:``,exitCode:0}}function uF(e,t){return!t||Jo(e)?null:(Yo(e,t),Jo(e)===t?t:null)}async function dF(e,t,n){let r=w(t.slice(1),{});if(`error`in r)return J(`open`,r.error);let i=r.positionals[0];if(!i)return J(`open`,`name required`);let a=fa(void 0,n),o=uF(i,a);try{a?await e.open(i,void 0,{lickOriginTarget:a}):await e.open(i)}catch(e){return o&&Xo(i),J(`open`,e instanceof Error?e.message:String(e))}return{stdout:`Sprinkle "${i}" opened${o?`; licks route to "${o}"`:``}.\n`,stderr:``,exitCode:0}}function fF(e,t){let n=w(t.slice(1),{});if(`error`in n)return J(`close`,n.error);let r=n.positionals[0];return r?(e.close(r),{stdout:`Sprinkle "${r}" closed.\n`,stderr:``,exitCode:0}):J(`close`,`name required`)}async function pF(e,t){let n=w(t.slice(1),{});if(`error`in n)return J(`reload`,n.error);let r=n.positionals[0];if(!r)return J(`reload`,`name required`);try{return await e.reload(r),{stdout:`Sprinkle "${r}" reloaded.\n`,stderr:``,exitCode:0}}catch(e){return J(`reload`,e instanceof Error?e.message:String(e))}}async function mF(e,t){let n=w(t.slice(1),{});if(`error`in n)return J(`refresh`,n.error);await e.refresh();let r=e.available().length;return{stdout:`Found ${r} sprinkle${r===1?``:`s`}.\n`,stderr:``,exitCode:0}}function hF(e){let t=w(e.slice(1),{value:[`--scoop`],bool:[`--clear`]});if(`error`in t)return J(`route`,t.error);let n=t.positionals[0];if(!n){let e=Zo(),t=Object.entries(e);return t.length===0?{stdout:`No sprinkle routes configured (all licks go to cone).
1872
+ `,stderr:``,exitCode:0}}function lF(e,t){return!t||Jo(e)?null:(Yo(e,t),Jo(e)===t?t:null)}async function uF(e,t,n){let r=w(t.slice(1),{});if(`error`in r)return J(`open`,r.error);let i=r.positionals[0];if(!i)return J(`open`,`name required`);let a=fa(void 0,n),o=lF(i,a);try{a?await e.open(i,void 0,{lickOriginTarget:a}):await e.open(i)}catch(e){return o&&Xo(i),J(`open`,e instanceof Error?e.message:String(e))}return{stdout:`Sprinkle "${i}" opened${o?`; licks route to "${o}"`:``}.\n`,stderr:``,exitCode:0}}function dF(e,t){let n=w(t.slice(1),{});if(`error`in n)return J(`close`,n.error);let r=n.positionals[0];return r?(e.close(r),{stdout:`Sprinkle "${r}" closed.\n`,stderr:``,exitCode:0}):J(`close`,`name required`)}async function fF(e,t){let n=w(t.slice(1),{});if(`error`in n)return J(`reload`,n.error);let r=n.positionals[0];if(!r)return J(`reload`,`name required`);try{return await e.reload(r),{stdout:`Sprinkle "${r}" reloaded.\n`,stderr:``,exitCode:0}}catch(e){return J(`reload`,e instanceof Error?e.message:String(e))}}async function pF(e,t){let n=w(t.slice(1),{});if(`error`in n)return J(`refresh`,n.error);await e.refresh();let r=e.available().length;return{stdout:`Found ${r} sprinkle${r===1?``:`s`}.\n`,stderr:``,exitCode:0}}function mF(e){let t=w(e.slice(1),{value:[`--scoop`],bool:[`--clear`]});if(`error`in t)return J(`route`,t.error);let n=t.positionals[0];if(!n){let e=Zo(),t=Object.entries(e);return t.length===0?{stdout:`No sprinkle routes configured (all licks go to cone).
1892
1873
  `,stderr:``,exitCode:0}:{stdout:`Sprinkle routes (applied to every runtime — the leader resolves the
1893
1874
  route for follower-forwarded licks too):
1894
1875
  `+t.map(([e,t])=>` ${e} -> ${t}`).join(`
1895
1876
  `)+`
1896
- `,stderr:``,exitCode:0}}if(t.bools.has(`--clear`))return Xo(n),{stdout:`Route cleared for sprinkle "${n}" (licks will go to cone).\n`,stderr:``,exitCode:0};let r=t.values.get(`--scoop`);if(!r){let e=Jo(n);return e?{stdout:`${n} -> ${e}\n`,stderr:``,exitCode:0}:{stdout:`${n} -> cone (default)\n`,stderr:``,exitCode:0}}return Yo(n,r),{stdout:`Sprinkle "${n}" lick events will route to scoop "${r}".\n`,stderr:``,exitCode:0}}function gF(e){let t=[];return e.leader&&t.push($P),t.push(...e.followers),t.join(`, `)}async function _F(e,t){let n=w(t.slice(1),{value:[`--runtime`]});if(`error`in n)return J(`send`,n.error);let r=n.positionals[0];if(!r)return J(`send`,`name required`);let i=n.positionals.slice(1).join(` `);if(!i)return J(`send`,`JSON data required`);let a;try{a=JSON.parse(i)}catch{return J(`send`,`invalid JSON`)}let o=n.values.get(`--runtime`);if(o!==void 0&&!iF().includes(o))return J(`send`,aF(o));let s=await e.sendToSprinkle(r,a,o?{runtime:o}:void 0);if(!s)return J(`send`,`sprinkle manager returned no delivery report — push not confirmed`);if(s.unknownRuntime)return J(`send`,aF(s.unknownRuntime));let c=tF(s);return c===0?J(`send`,o?`"${r}" is not open on runtime "${o}" — nothing was delivered`:`"${r}" is not open on the leader or any connected follower — nothing was delivered`):{stdout:`Data sent to sprinkle "${r}" — ${c} instance${c===1?``:`s`} (${gF(s)}).\n`,stderr:``,exitCode:0}}function vF(){return C(`sprinkle`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return nF();let n=e[0];if(T(e.slice(1),{valueFlags:[`--scoop`,`--runtime`]}))return{stdout:gt(`sprinkle`,n,nF().stdout),stderr:``,exitCode:0};if(n===`chat`)return oF(ht(e),t);let r=rF();if(!r)return{stdout:``,stderr:`sprinkle: sprinkle manager not initialized
1897
- `,exitCode:1};switch(n){case`list`:return lF(r,e);case`open`:return dF(r,e,t.env);case`close`:return fF(r,e);case`reload`:return pF(r,e);case`refresh`:return mF(r,e);case`route`:return hF(e);case`send`:return _F(r,e);default:return{stdout:``,stderr:`sprinkle: unknown subcommand "${n}"\n`,exitCode:1}}})}function yF(){return{stdout:`usage: sqlite3 [database] [sql]
1898
- `,stderr:``,exitCode:0}}function bF(e,t){let n=e.length>0&&!e[0].startsWith(`-`);return{database:n?e[0]:`:memory:`,sql:(n?e.slice(1):e).join(` `).trim()||P(t.stdin).trim()}}function xF(e,t){return e===`:memory:`?e:t.fs.resolvePath(t.cwd,e)}async function SF(e,t,n){return t===`:memory:`||!await n.fs.exists(t)?new e.Database:new e.Database(await n.fs.readFileBuffer(t))}async function CF(e,t,n){t!==`:memory:`&&await n.fs.writeFile(t,e.export())}function wF(e){let t=e.flatMap(e=>e.values.map(e=>e.map(Pr).join(`|`)));return t.length>0?`${t.join(`
1899
- `)}\n`:``}async function TF(e,t,n){let r=await Vr(),i=xF(e,n),a=await SF(r,i,n),o=a.exec(t);return await CF(a,i,n),a.close(),wF(o)}function EF(e,t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}function DF(e=`sqlite3`){return C(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return yF();let{database:r,sql:i}=bF(t,n);if(!i)return EF(e,`interactive mode is not supported; provide SQL as argument or stdin`);try{return{stdout:await TF(r,i,n),stderr:``,exitCode:0}}catch(t){return EF(e,t)}})}function OF(e){return{stdout:``,stderr:e.endsWith(`
1900
- `)?e:`${e}\n`,exitCode:1}}function kF(){return{stdout:`ssh - run a command on a connected tray follower
1877
+ `,stderr:``,exitCode:0}}if(t.bools.has(`--clear`))return Xo(n),{stdout:`Route cleared for sprinkle "${n}" (licks will go to cone).\n`,stderr:``,exitCode:0};let r=t.values.get(`--scoop`);if(!r){let e=Jo(n);return e?{stdout:`${n} -> ${e}\n`,stderr:``,exitCode:0}:{stdout:`${n} -> cone (default)\n`,stderr:``,exitCode:0}}return Yo(n,r),{stdout:`Sprinkle "${n}" lick events will route to scoop "${r}".\n`,stderr:``,exitCode:0}}function hF(e){let t=[];return e.leader&&t.push(QP),t.push(...e.followers),t.join(`, `)}async function gF(e,t){let n=w(t.slice(1),{value:[`--runtime`]});if(`error`in n)return J(`send`,n.error);let r=n.positionals[0];if(!r)return J(`send`,`name required`);let i=n.positionals.slice(1).join(` `);if(!i)return J(`send`,`JSON data required`);let a;try{a=JSON.parse(i)}catch{return J(`send`,`invalid JSON`)}let o=n.values.get(`--runtime`);if(o!==void 0&&!rF().includes(o))return J(`send`,iF(o));let s=await e.sendToSprinkle(r,a,o?{runtime:o}:void 0);if(!s)return J(`send`,`sprinkle manager returned no delivery report — push not confirmed`);if(s.unknownRuntime)return J(`send`,iF(s.unknownRuntime));let c=eF(s);return c===0?J(`send`,o?`"${r}" is not open on runtime "${o}" — nothing was delivered`:`"${r}" is not open on the leader or any connected follower — nothing was delivered`):{stdout:`Data sent to sprinkle "${r}" — ${c} instance${c===1?``:`s`} (${hF(s)}).\n`,stderr:``,exitCode:0}}function _F(){return C(`sprinkle`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return tF();let n=e[0];if(T(e.slice(1),{valueFlags:[`--scoop`,`--runtime`]}))return{stdout:gt(`sprinkle`,n,tF().stdout),stderr:``,exitCode:0};if(n===`chat`)return aF(ht(e),t);let r=nF();if(!r)return{stdout:``,stderr:`sprinkle: sprinkle manager not initialized
1878
+ `,exitCode:1};switch(n){case`list`:return cF(r,e);case`open`:return uF(r,e,t.env);case`close`:return dF(r,e);case`reload`:return fF(r,e);case`refresh`:return pF(r,e);case`route`:return mF(e);case`send`:return gF(r,e);default:return{stdout:``,stderr:`sprinkle: unknown subcommand "${n}"\n`,exitCode:1}}})}function vF(){return{stdout:`usage: sqlite3 [database] [sql]
1879
+ `,stderr:``,exitCode:0}}function yF(e,t){let n=e.length>0&&!e[0].startsWith(`-`);return{database:n?e[0]:`:memory:`,sql:(n?e.slice(1):e).join(` `).trim()||P(t.stdin).trim()}}function bF(e,t){return e===`:memory:`?e:t.fs.resolvePath(t.cwd,e)}async function xF(e,t,n){return t===`:memory:`||!await n.fs.exists(t)?new e.Database:new e.Database(await n.fs.readFileBuffer(t))}async function SF(e,t,n){t!==`:memory:`&&await n.fs.writeFile(t,e.export())}function CF(e){let t=e.flatMap(e=>e.values.map(e=>e.map(Pr).join(`|`)));return t.length>0?`${t.join(`
1880
+ `)}\n`:``}async function wF(e,t,n){let r=await Vr(),i=bF(e,n),a=await xF(r,i,n),o=a.exec(t);return await SF(a,i,n),a.close(),CF(o)}function TF(e,t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}function EF(e=`sqlite3`){return C(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return vF();let{database:r,sql:i}=yF(t,n);if(!i)return TF(e,`interactive mode is not supported; provide SQL as argument or stdin`);try{return{stdout:await wF(r,i,n),stderr:``,exitCode:0}}catch(t){return TF(e,t)}})}function DF(e){return{stdout:``,stderr:e.endsWith(`
1881
+ `)?e:`${e}\n`,exitCode:1}}function OF(){return{stdout:`ssh - run a command on a connected tray follower
1901
1882
 
1902
1883
  Usage: ssh [--cwd <dir>] [--timeout <seconds>] <runtime-id> <command...>
1903
1884
  ssh --list
@@ -1920,11 +1901,11 @@ Examples:
1920
1901
  ssh --list
1921
1902
  ssh follower-abc123 "uname -a"
1922
1903
  ssh --cwd /tmp follower-abc123 "ls -la"
1923
- `,stderr:``,exitCode:0}}function AF(e){let t=e.filter(e=>e.exec);if(t.length===0)return`No exec-capable followers connected.
1904
+ `,stderr:``,exitCode:0}}function kF(e){let t=e.filter(e=>e.exec);if(t.length===0)return`No exec-capable followers connected.
1924
1905
  Start one with: slicc <join-url> follow sh -c
1925
1906
  `;let n=[`exec targets:`];for(let e of t){let t=[e.runtimeId];e.runtime&&t.push(`(${e.runtime})`),n.push(` - ${t.join(` `)}`),e.motd&&n.push(` ${e.motd}`),e.computerMotd&&n.push(` ${e.computerMotd}`)}return`${n.join(`
1926
- `)}\n`}function jF(e){if(e.stdin===void 0)return;let n=lr(e.stdin);if(n.length===0)return;let r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e)&255;return t(r)}function MF(e){let t=!1,n,r,i=0;for(;i<e.length;){let a=e[i];if(a===`--help`||a===`-h`)return{help:!0};if(a===`--list`||a===`-l`){t=!0,i+=1;continue}if(a===`--cwd`){let t=e[i+1];if(t===void 0)return{error:`ssh: --cwd requires a directory argument`};n=t,i+=2;continue}if(a===`--timeout`){let t=e[i+1],n=Number(t);if(t===void 0||!Number.isFinite(n)||n<=0)return{error:`ssh: --timeout requires a positive number of seconds`};r=n,i+=2;continue}if(a.startsWith(`-`)&&a!==`-`)return{error:`ssh: unknown flag: ${a}`};break}let a=e[i],o=e.slice(i+1).join(` `);return{list:t,cwd:n,timeoutSec:r,runtimeId:a,command:o}}function NF(){return C(`ssh`,async(e,t)=>{let n=MF(e);if(`help`in n)return kF();if(`error`in n)return OF(n.error);if(n.list||n.runtimeId===void 0)return{stdout:AF(ie()),stderr:``,exitCode:0};if(!n.command)return OF(`ssh: missing command
1927
- Usage: ssh <runtime-id> <command...>`);let r=b();if(!r)return OF(`ssh: not available in this environment (needs the standalone app)`);let i=`ssh-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,a=()=>{r.call(`tray-exec-signal`,{execToken:i}).catch(()=>{})};t.signal?.addEventListener(`abort`,a,{once:!0});try{let e=n.timeoutSec?n.timeoutSec*1e3:void 0,a=await r.call(`tray-exec`,{runtimeId:n.runtimeId,command:n.command,cwd:n.cwd,execToken:i,timeoutMs:e,stdin:jF(t)},{timeoutMs:(e??864e5)+5e3});return a.error?{stdout:a.stdout,stderr:`${a.stderr}ssh: ${a.error}\n`,exitCode:a.exitCode||1}:{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode}}catch(e){return OF(`ssh: ${e instanceof Error?e.message:String(e)}`)}finally{t.signal?.removeEventListener(`abort`,a)}})}function PF(e){return{stdout:``,stderr:`${Ct(`sudo`,e)}\n`,exitCode:77}}function FF(e={}){let{broker:t,persistGrant:n,suppressNextGate:r}=e;return C(`sudo`,async(e,i)=>{if(e.length===0)return{stdout:``,stderr:`sudo: usage: sudo <command> [args...]
1907
+ `)}\n`}function AF(e){if(e.stdin===void 0)return;let n=lr(e.stdin);if(n.length===0)return;let r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e)&255;return t(r)}function jF(e){let t=!1,n,r,i=0;for(;i<e.length;){let a=e[i];if(a===`--help`||a===`-h`)return{help:!0};if(a===`--list`||a===`-l`){t=!0,i+=1;continue}if(a===`--cwd`){let t=e[i+1];if(t===void 0)return{error:`ssh: --cwd requires a directory argument`};n=t,i+=2;continue}if(a===`--timeout`){let t=e[i+1],n=Number(t);if(t===void 0||!Number.isFinite(n)||n<=0)return{error:`ssh: --timeout requires a positive number of seconds`};r=n,i+=2;continue}if(a.startsWith(`-`)&&a!==`-`)return{error:`ssh: unknown flag: ${a}`};break}let a=e[i],o=e.slice(i+1).join(` `);return{list:t,cwd:n,timeoutSec:r,runtimeId:a,command:o}}function MF(){return C(`ssh`,async(e,t)=>{let n=jF(e);if(`help`in n)return OF();if(`error`in n)return DF(n.error);if(n.list||n.runtimeId===void 0)return{stdout:kF(ie()),stderr:``,exitCode:0};if(!n.command)return DF(`ssh: missing command
1908
+ Usage: ssh <runtime-id> <command...>`);let r=b();if(!r)return DF(`ssh: not available in this environment (needs the standalone app)`);let i=`ssh-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,a=()=>{r.call(`tray-exec-signal`,{execToken:i}).catch(()=>{})};t.signal?.addEventListener(`abort`,a,{once:!0});try{let e=n.timeoutSec?n.timeoutSec*1e3:void 0,a=await r.call(`tray-exec`,{runtimeId:n.runtimeId,command:n.command,cwd:n.cwd,execToken:i,timeoutMs:e,stdin:AF(t)},{timeoutMs:(e??864e5)+5e3});return a.error?{stdout:a.stdout,stderr:`${a.stderr}ssh: ${a.error}\n`,exitCode:a.exitCode||1}:{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode}}catch(e){return DF(`ssh: ${e instanceof Error?e.message:String(e)}`)}finally{t.signal?.removeEventListener(`abort`,a)}})}function NF(e){return{stdout:``,stderr:`${Ct(`sudo`,e)}\n`,exitCode:77}}function PF(e={}){let{broker:t,persistGrant:n,suppressNextGate:r}=e;return C(`sudo`,async(e,i)=>{if(e.length===0)return{stdout:``,stderr:`sudo: usage: sudo <command> [args...]
1928
1909
  `,exitCode:1};if(e[0]===`--help`||e[0]===`-h`)return{stdout:`usage: sudo <command> [args...]
1929
1910
 
1930
1911
  Request human approval to run <command> with elevation. If approved, the
@@ -1941,14 +1922,14 @@ Options:
1941
1922
  -h, --help Show this help message and exit.
1942
1923
  `,stderr:``,exitCode:0};if(!t)return{stdout:``,stderr:`sudo: command-level approval is not configured
1943
1924
  `,exitCode:1};if(!i.exec)return{stdout:``,stderr:`sudo: cannot dispatch inner command in this context
1944
- `,exitCode:1};let a=Cp(e[0],e.slice(1)),o=i.env?.get(Ep),s=await t.requestApproval({kind:`command`,detail:a,...o?{reason:o}:{}});if(s.decision===`deny`)return PF(s);if(s.decision===`always`){let e=s.pattern?.trim()||a;if(n)try{await n(e)}catch{}}return r&&r(a),i.exec(e[0],{cwd:i.cwd,args:e.slice(1)})})}function IF(e){let t=e instanceof Error?e.message:String(e);return/ENOENT|no such file/i.test(t)?`No such file or directory`:/ENOTEMPTY|not empty/i.test(t)?`Directory not empty`:t.replace(/^\w+:\s*/,``)}async function LF(e,t){return e.fs.lstat?e.fs.lstat(t):e.fs.stat(t)}function RF(e,t){return e.some(e=>/^-[^-]/.test(e)&&e.slice(1).includes(t))}async function zF(e,t,n){let r=e.fs.resolvePath(e.cwd,t);try{let i=await LF(e,r);return i.isDirectory&&!i.isSymbolicLink&&!n.recursive?{stdout:``,stderr:`rm: cannot remove '${t}': Is a directory\n`}:(await e.fs.rm(r,{recursive:n.recursive,force:n.force}),{stdout:n.verbose?`removed '${t}'\n`:``,stderr:``})}catch(e){return{stdout:``,stderr:n.force?``:`rm: cannot remove '${t}': ${IF(e)}\n`}}}function BF(){return C(`rm`,async(e,t)=>{let n={recursive:RF(e,`r`)||RF(e,`R`)||e.includes(`--recursive`),force:RF(e,`f`)||e.includes(`--force`),verbose:RF(e,`v`)||e.includes(`--verbose`)},r=e.filter(e=>!e.startsWith(`-`));if(r.length===0)return n.force?{stdout:``,stderr:``,exitCode:0}:{stdout:``,stderr:`rm: missing operand
1945
- `,exitCode:1};let i=await Promise.all(r.map(e=>zF(t,e,n))),a=i.map(e=>e.stdout).join(``),o=i.map(e=>e.stderr).join(``);return{stdout:a,stderr:o,exitCode:+!!o}})}function VF(e,t,n){let r=n.isSymbolicLink?`symbolic link`:n.isDirectory?`directory`:`regular file`;return e.replace(/%n/g,t).replace(/%N/g,`'${t}'`).replace(/%s/g,String(n.size)).replace(/%F/g,r).replace(/%a/g,n.mode.toString(8))}function HF(e){let t={follow:!1,paths:[]};for(let n=0;n<e.length;n++){let r=e[n];r===`-L`||r===`--dereference`?t.follow=!0:r===`-c`&&e[n+1]?t.format=e[++n]:r.startsWith(`--format=`)?t.format=r.slice(9):r.startsWith(`-`)||t.paths.push(r)}return t}async function UF(e,t,n){try{let r=e.fs.resolvePath(e.cwd,t),i=n.follow?await e.fs.stat(r):await LF(e,r);return{stdout:n.format?`${VF(n.format,t,i)}\n`:` File: ${t}\n Size: ${i.size}\n`,stderr:``}}catch{return{stdout:``,stderr:`stat: cannot stat '${t}': No such file or directory\n`}}}function WF(){return C(`stat`,async(e,t)=>{let n=HF(e);if(n.paths.length===0)return{stdout:``,stderr:`stat: missing operand
1946
- `,exitCode:1};let r=await Promise.all(n.paths.map(e=>UF(t,e,n))),i=r.map(e=>e.stdout).join(``),a=r.map(e=>e.stderr).join(``);return{stdout:i,stderr:a,exitCode:+!!a}})}function GF(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n<=0?`/`:t.slice(0,n)}async function KF(e,t,n,r){let i=e.fs.resolvePath(`/`,t).split(`/`).filter(Boolean),a=e.fs.resolvePath(e.cwd,t),o=``;for(let s=0;s<i.length;s++){try{let t=await LF(e,a);if(!t.isDirectory||t.isSymbolicLink)throw Error(`Not a directory`);await e.fs.rm(a,{recursive:!1,force:!1}),r&&(o+=`rmdir: removing directory, '${a}'\n`)}catch(e){return{stdout:o,stderr:`rmdir: failed to remove '${t}': ${IF(e)}\n`}}if(!n||s===i.length-1)return{stdout:o,stderr:``};a=GF(a)}return{stdout:o,stderr:``}}function qF(){return C(`rmdir`,async(e,t)=>{let n=e.some(e=>e===`-p`||e===`--parents`),r=e.some(e=>e===`-v`||e===`--verbose`),i=e.filter(e=>!e.startsWith(`-`));if(i.length===0)return{stdout:``,stderr:`rmdir: missing operand
1947
- `,exitCode:1};let a=await Promise.all(i.map(e=>KF(t,e,n,r))),o=a.map(e=>e.stdout).join(``),s=a.map(e=>e.stderr).join(``);return{stdout:o,stderr:s,exitCode:+!!s}})}function JF(){return{stdout:`usage: tar (-c|-x|-t) [-zv] -f <archive> [-C <dir>] [paths...]
1948
- `,stderr:``,exitCode:0}}function YF(e){return{stdout:``,stderr:`tar: ${e}\n`,exitCode:1}}function XF(e,t){if(e.mode)return YF(`exactly one of -c, -x, or -t is required`);e.mode=t}function ZF(e,t,n){if(n)return[n,t];let r=e[t+1];return r===void 0?void 0:[r,t+1]}const QF={c:`create`,x:`extract`,t:`list`};function $F(e,t,n,r,i){let a=QF[e];if(a)return{nextIndex:r,error:XF(i,a)};if(e===`z`)return i.gzip=!0,{nextIndex:r};if(e===`v`)return i.verbose=!0,{nextIndex:r};if(e!==`f`&&e!==`C`)return{nextIndex:r,error:YF(`unsupported option -${e}`)};let o=ZF(n,r,t);return o?(e===`f`?i.archive=o[0]:i.directory=o[0],{nextIndex:o[1],consumedValue:!0}):{nextIndex:r,error:YF(`option -${e} requires an argument`)}}function eI(e,t,n){let r=e[t];for(let i=1;i<r.length;i++){let a=$F(r[i],r.slice(i+1),e,t,n);if(a.error||a.consumedValue)return a}return{nextIndex:t}}const tI=/^[cxtzvfC]+$/;function nI(e){let t=e.length>0&&tI.test(e[0])?[`-${e[0]}`,...e.slice(1)]:e,n={gzip:!1,verbose:!1,directory:`.`,paths:[]};for(let e=0;e<t.length;e++){let r=t[e];if(!r.startsWith(`-`)||r===`-`){n.paths.push(r);continue}if(r.startsWith(`--`))return YF(`unsupported option ${r}`);let i=eI(t,e,n);if(i.error)return i.error;e=i.nextIndex}return n}function rI(e,t){let n=e.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^(?:\.\/)+/,``);return n?n===`.`?`.`:n.replace(/\/+$/,``):Nr(t)}function iI(e){let t=e.mtime?.getTime();return t===void 0||Number.isNaN(t)?{}:{mtime:Math.floor(t/1e3)}}async function aI(e,t,n,r){let i=await e.fs.stat(t);if(i.isFile){let a=await e.fs.readFileBuffer(t),o=typeof i.mode==`number`?i.mode&511:void 0;r.push({path:n,bytes:a,...o===void 0?{}:{mode:o},...iI(i)});return}if(!i.isDirectory)throw Error(`unsupported file type: ${t}`);let a=n.endsWith(`/`)?n:`${n}/`,o=typeof i.mode==`number`?i.mode&511:void 0;r.push({path:a,bytes:/* @__PURE__ */ new Uint8Array,directory:!0,...o===void 0?{}:{mode:o},...iI(i)});for(let n of await e.fs.readdir(t))await aI(e,Mr(t,n),`${a}${n}`,r)}function oI(e,t){let n=e.length>=2&&e[0]===31&&e[1]===139,r=t||n?Ca(e):e;return Sa(r,{stripNpmPrefix:!1,includeDirectories:!0,preserveRawPaths:!0})}function sI(e,t,n){let r=n.replace(/\\/g,`/`);if(!r||r.startsWith(`/`)||/^[a-zA-Z]:\//.test(r)||r.split(`/`).includes(`..`))return;let i=e.fs.resolvePath(t,r);return Br(t,i)?i:void 0}async function cI(e){try{await e()}catch(e){let t=e?.code;if(t===`ENOSYS`||t===`ENOTSUP`||t===`EOPNOTSUPP`)return;throw e}}async function lI(e,t,n,r){let i=new Map(t),a=new Map(n),o=[.../* @__PURE__ */ new Set([...i.keys(),...a.keys()])];if(o.length===0)return;let s=o.map(e=>{let t=i.get(e),n=a.get(e),r=n===void 0?void 0:/* @__PURE__ */ new Date(n*1e3);return{path:e,...t===void 0?{}:{mode:t},...r===void 0?{}:{atime:r,mtime:r}}});if(typeof r?.updateMetadataBatch==`function`){await cI(()=>r.updateMetadataBatch(s));return}let c=e.fs;if(typeof c.updateMetadataBatch==`function`){await cI(()=>c.updateMetadataBatch(s));return}for(let[e,n]of t)await cI(()=>c.chmod(e,n));for(let[e,t]of n){let n=/* @__PURE__ */ new Date(t*1e3);await cI(()=>c.utimes(e,n,n))}}async function uI(e,t){try{return await e.fs.lstat(t)}catch{return null}}async function dI(e,t,n){let r=await uI(e,t);r&&(r.isSymbolicLink?await e.fs.rm(t):!n&&r.isDirectory&&await e.fs.rm(t,{recursive:!0}))}async function fI(e,t,n,r){if(r===t)return!1;let i=r.slice(t===`/`?1:t.length+1),a=t;for(let t of i.split(`/`).slice(0,-1)){a=Mr(a,t);let r=await uI(e,a);if(!r)return!1;if(!r.isSymbolicLink)continue;let i;try{i=await e.fs.realpath(a)}catch{return!0}if(!Br(n,i))return!0}return!1}async function pI(e,t,n,r,i){let a=n.directory?493:420;await dI(e,t,n.directory===!0);let o=n.mode===a&&await e.fs.exists(t),s=n.mode!==void 0&&(n.mode!==a||o);if(n.directory){await e.fs.mkdir(t,{recursive:!0}),s&&r.push([t,n.mode]);return}let c=Lr(t);c!==`/`&&await e.fs.mkdir(c,{recursive:!0}),await e.fs.writeFile(t,n.bytes),s&&i.push([t,n.mode])}async function mI(e,t){if(e.paths.length===0)return YF(`create mode requires at least one input path`);let n=[],r=t.fs.resolvePath(t.cwd,e.directory);for(let i of e.paths){let e=t.fs.resolvePath(r,i);await aI(t,e,rI(i,e),n)}let i=t.fs.resolvePath(t.cwd,e.archive),a=ba(n);return await t.fs.writeFile(i,e.gzip?xa(a):a),{stdout:e.verbose?`${n.map(e=>e.path).join(`
1949
- `)}\n`:``,stderr:``,exitCode:0}}function hI(e){let t=/* @__PURE__ */ new Set,n=[];for(let r=e.length-1;r>=0;r--){let[i,a]=e[r];t.has(i)||(t.add(i),n.push([i,a]))}return n}async function gI(e,t,n){if(e.paths.length>0)return YF(`${e.mode} mode does not accept input paths`);let r=t.fs.resolvePath(t.cwd,e.archive),i=oI(await t.fs.readFileBuffer(r),e.gzip);if(e.mode===`list`){let e=i.map(e=>e.path).join(`
1950
- `);return{stdout:e?`${e}\n`:``,stderr:``,exitCode:0}}let a=t.fs.resolvePath(t.cwd,e.directory);await t.fs.mkdir(a,{recursive:!0});let o=await t.fs.realpath(a),s=[],c=[],l=[],u=[];for(let e of i){let n=sI(t,a,e.path);if(!n)return YF(`blocked suspicious path ${e.path}`);if(await fI(t,a,o,n))return YF(`blocked path through symlink ${e.path}`);await pI(t,n,e,l,c),e.mtime!==void 0&&u.push([n,e.mtime]),s.push(e.path)}return await lI(t,[...hI(c),...hI(l)],hI(u),n),{stdout:e.verbose?`${s.join(`
1951
- `)}\n`:``,stderr:``,exitCode:0}}function _I(e={}){return C(`tar`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return JF();let r=nI(t);return`exitCode`in r?r:r.mode?r.archive?r.mode===`list`&&r.directory!==`.`?YF(`-C is only supported in create or extract mode`):r.mode===`create`?mI(r,n):gI(r,n,e.fs):YF(`option -f requires an archive path`):YF(`exactly one of -c, -x, or -t is required`)})}var vI=`/**
1925
+ `,exitCode:1};let a=Cp(e[0],e.slice(1)),o=i.env?.get(Ep),s=await t.requestApproval({kind:`command`,detail:a,...o?{reason:o}:{}});if(s.decision===`deny`)return NF(s);if(s.decision===`always`){let e=s.pattern?.trim()||a;if(n)try{await n(e)}catch{}}return r&&r(a),i.exec(e[0],{cwd:i.cwd,args:e.slice(1)})})}function FF(e){let t=e instanceof Error?e.message:String(e);return/ENOENT|no such file/i.test(t)?`No such file or directory`:/ENOTEMPTY|not empty/i.test(t)?`Directory not empty`:t.replace(/^\w+:\s*/,``)}async function IF(e,t){return e.fs.lstat?e.fs.lstat(t):e.fs.stat(t)}function LF(e,t){return e.some(e=>/^-[^-]/.test(e)&&e.slice(1).includes(t))}async function RF(e,t,n){let r=e.fs.resolvePath(e.cwd,t);try{let i=await IF(e,r);return i.isDirectory&&!i.isSymbolicLink&&!n.recursive?{stdout:``,stderr:`rm: cannot remove '${t}': Is a directory\n`}:(await e.fs.rm(r,{recursive:n.recursive,force:n.force}),{stdout:n.verbose?`removed '${t}'\n`:``,stderr:``})}catch(e){return{stdout:``,stderr:n.force?``:`rm: cannot remove '${t}': ${FF(e)}\n`}}}function zF(){return C(`rm`,async(e,t)=>{let n={recursive:LF(e,`r`)||LF(e,`R`)||e.includes(`--recursive`),force:LF(e,`f`)||e.includes(`--force`),verbose:LF(e,`v`)||e.includes(`--verbose`)},r=e.filter(e=>!e.startsWith(`-`));if(r.length===0)return n.force?{stdout:``,stderr:``,exitCode:0}:{stdout:``,stderr:`rm: missing operand
1926
+ `,exitCode:1};let i=await Promise.all(r.map(e=>RF(t,e,n))),a=i.map(e=>e.stdout).join(``),o=i.map(e=>e.stderr).join(``);return{stdout:a,stderr:o,exitCode:+!!o}})}function BF(e,t,n){let r=n.isSymbolicLink?`symbolic link`:n.isDirectory?`directory`:`regular file`;return e.replace(/%n/g,t).replace(/%N/g,`'${t}'`).replace(/%s/g,String(n.size)).replace(/%F/g,r).replace(/%a/g,n.mode.toString(8))}function VF(e){let t={follow:!1,paths:[]};for(let n=0;n<e.length;n++){let r=e[n];r===`-L`||r===`--dereference`?t.follow=!0:r===`-c`&&e[n+1]?t.format=e[++n]:r.startsWith(`--format=`)?t.format=r.slice(9):r.startsWith(`-`)||t.paths.push(r)}return t}async function HF(e,t,n){try{let r=e.fs.resolvePath(e.cwd,t),i=n.follow?await e.fs.stat(r):await IF(e,r);return{stdout:n.format?`${BF(n.format,t,i)}\n`:` File: ${t}\n Size: ${i.size}\n`,stderr:``}}catch{return{stdout:``,stderr:`stat: cannot stat '${t}': No such file or directory\n`}}}function UF(){return C(`stat`,async(e,t)=>{let n=VF(e);if(n.paths.length===0)return{stdout:``,stderr:`stat: missing operand
1927
+ `,exitCode:1};let r=await Promise.all(n.paths.map(e=>HF(t,e,n))),i=r.map(e=>e.stdout).join(``),a=r.map(e=>e.stderr).join(``);return{stdout:i,stderr:a,exitCode:+!!a}})}function WF(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n<=0?`/`:t.slice(0,n)}async function GF(e,t,n,r){let i=e.fs.resolvePath(`/`,t).split(`/`).filter(Boolean),a=e.fs.resolvePath(e.cwd,t),o=``;for(let s=0;s<i.length;s++){try{let t=await IF(e,a);if(!t.isDirectory||t.isSymbolicLink)throw Error(`Not a directory`);await e.fs.rm(a,{recursive:!1,force:!1}),r&&(o+=`rmdir: removing directory, '${a}'\n`)}catch(e){return{stdout:o,stderr:`rmdir: failed to remove '${t}': ${FF(e)}\n`}}if(!n||s===i.length-1)return{stdout:o,stderr:``};a=WF(a)}return{stdout:o,stderr:``}}function KF(){return C(`rmdir`,async(e,t)=>{let n=e.some(e=>e===`-p`||e===`--parents`),r=e.some(e=>e===`-v`||e===`--verbose`),i=e.filter(e=>!e.startsWith(`-`));if(i.length===0)return{stdout:``,stderr:`rmdir: missing operand
1928
+ `,exitCode:1};let a=await Promise.all(i.map(e=>GF(t,e,n,r))),o=a.map(e=>e.stdout).join(``),s=a.map(e=>e.stderr).join(``);return{stdout:o,stderr:s,exitCode:+!!s}})}function qF(){return{stdout:`usage: tar (-c|-x|-t) [-zv] -f <archive> [-C <dir>] [paths...]
1929
+ `,stderr:``,exitCode:0}}function JF(e){return{stdout:``,stderr:`tar: ${e}\n`,exitCode:1}}function YF(e,t){if(e.mode)return JF(`exactly one of -c, -x, or -t is required`);e.mode=t}function XF(e,t,n){if(n)return[n,t];let r=e[t+1];return r===void 0?void 0:[r,t+1]}const ZF={c:`create`,x:`extract`,t:`list`};function QF(e,t,n,r,i){let a=ZF[e];if(a)return{nextIndex:r,error:YF(i,a)};if(e===`z`)return i.gzip=!0,{nextIndex:r};if(e===`v`)return i.verbose=!0,{nextIndex:r};if(e!==`f`&&e!==`C`)return{nextIndex:r,error:JF(`unsupported option -${e}`)};let o=XF(n,r,t);return o?(e===`f`?i.archive=o[0]:i.directory=o[0],{nextIndex:o[1],consumedValue:!0}):{nextIndex:r,error:JF(`option -${e} requires an argument`)}}function $F(e,t,n){let r=e[t];for(let i=1;i<r.length;i++){let a=QF(r[i],r.slice(i+1),e,t,n);if(a.error||a.consumedValue)return a}return{nextIndex:t}}const eI=/^[cxtzvfC]+$/;function tI(e){let t=e.length>0&&eI.test(e[0])?[`-${e[0]}`,...e.slice(1)]:e,n={gzip:!1,verbose:!1,directory:`.`,paths:[]};for(let e=0;e<t.length;e++){let r=t[e];if(!r.startsWith(`-`)||r===`-`){n.paths.push(r);continue}if(r.startsWith(`--`))return JF(`unsupported option ${r}`);let i=$F(t,e,n);if(i.error)return i.error;e=i.nextIndex}return n}function nI(e,t){let n=e.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^(?:\.\/)+/,``);return n?n===`.`?`.`:n.replace(/\/+$/,``):Nr(t)}function rI(e){let t=e.mtime?.getTime();return t===void 0||Number.isNaN(t)?{}:{mtime:Math.floor(t/1e3)}}async function iI(e,t,n,r){let i=await e.fs.stat(t);if(i.isFile){let a=await e.fs.readFileBuffer(t),o=typeof i.mode==`number`?i.mode&511:void 0;r.push({path:n,bytes:a,...o===void 0?{}:{mode:o},...rI(i)});return}if(!i.isDirectory)throw Error(`unsupported file type: ${t}`);let a=n.endsWith(`/`)?n:`${n}/`,o=typeof i.mode==`number`?i.mode&511:void 0;r.push({path:a,bytes:/* @__PURE__ */ new Uint8Array,directory:!0,...o===void 0?{}:{mode:o},...rI(i)});for(let n of await e.fs.readdir(t))await iI(e,Mr(t,n),`${a}${n}`,r)}function aI(e,t){let n=e.length>=2&&e[0]===31&&e[1]===139,r=t||n?Ca(e):e;return Sa(r,{stripNpmPrefix:!1,includeDirectories:!0,preserveRawPaths:!0})}function oI(e,t,n){let r=n.replace(/\\/g,`/`);if(!r||r.startsWith(`/`)||/^[a-zA-Z]:\//.test(r)||r.split(`/`).includes(`..`))return;let i=e.fs.resolvePath(t,r);return Br(t,i)?i:void 0}async function sI(e){try{await e()}catch(e){let t=e?.code;if(t===`ENOSYS`||t===`ENOTSUP`||t===`EOPNOTSUPP`)return;throw e}}async function cI(e,t,n,r){let i=new Map(t),a=new Map(n),o=[.../* @__PURE__ */ new Set([...i.keys(),...a.keys()])];if(o.length===0)return;let s=o.map(e=>{let t=i.get(e),n=a.get(e),r=n===void 0?void 0:/* @__PURE__ */ new Date(n*1e3);return{path:e,...t===void 0?{}:{mode:t},...r===void 0?{}:{atime:r,mtime:r}}});if(typeof r?.updateMetadataBatch==`function`){await sI(()=>r.updateMetadataBatch(s));return}let c=e.fs;if(typeof c.updateMetadataBatch==`function`){await sI(()=>c.updateMetadataBatch(s));return}for(let[e,n]of t)await sI(()=>c.chmod(e,n));for(let[e,t]of n){let n=/* @__PURE__ */ new Date(t*1e3);await sI(()=>c.utimes(e,n,n))}}async function lI(e,t){try{return await e.fs.lstat(t)}catch{return null}}async function uI(e,t,n){let r=await lI(e,t);r&&(r.isSymbolicLink?await e.fs.rm(t):!n&&r.isDirectory&&await e.fs.rm(t,{recursive:!0}))}async function dI(e,t,n,r){if(r===t)return!1;let i=r.slice(t===`/`?1:t.length+1),a=t;for(let t of i.split(`/`).slice(0,-1)){a=Mr(a,t);let r=await lI(e,a);if(!r)return!1;if(!r.isSymbolicLink)continue;let i;try{i=await e.fs.realpath(a)}catch{return!0}if(!Br(n,i))return!0}return!1}async function fI(e,t,n,r,i){let a=n.directory?493:420;await uI(e,t,n.directory===!0);let o=n.mode===a&&await e.fs.exists(t),s=n.mode!==void 0&&(n.mode!==a||o);if(n.directory){await e.fs.mkdir(t,{recursive:!0}),s&&r.push([t,n.mode]);return}let c=Lr(t);c!==`/`&&await e.fs.mkdir(c,{recursive:!0}),await e.fs.writeFile(t,n.bytes),s&&i.push([t,n.mode])}async function pI(e,t){if(e.paths.length===0)return JF(`create mode requires at least one input path`);let n=[],r=t.fs.resolvePath(t.cwd,e.directory);for(let i of e.paths){let e=t.fs.resolvePath(r,i);await iI(t,e,nI(i,e),n)}let i=t.fs.resolvePath(t.cwd,e.archive),a=ba(n);return await t.fs.writeFile(i,e.gzip?xa(a):a),{stdout:e.verbose?`${n.map(e=>e.path).join(`
1930
+ `)}\n`:``,stderr:``,exitCode:0}}function mI(e){let t=/* @__PURE__ */ new Set,n=[];for(let r=e.length-1;r>=0;r--){let[i,a]=e[r];t.has(i)||(t.add(i),n.push([i,a]))}return n}async function hI(e,t,n){if(e.paths.length>0)return JF(`${e.mode} mode does not accept input paths`);let r=t.fs.resolvePath(t.cwd,e.archive),i=aI(await t.fs.readFileBuffer(r),e.gzip);if(e.mode===`list`){let e=i.map(e=>e.path).join(`
1931
+ `);return{stdout:e?`${e}\n`:``,stderr:``,exitCode:0}}let a=t.fs.resolvePath(t.cwd,e.directory);await t.fs.mkdir(a,{recursive:!0});let o=await t.fs.realpath(a),s=[],c=[],l=[],u=[];for(let e of i){let n=oI(t,a,e.path);if(!n)return JF(`blocked suspicious path ${e.path}`);if(await dI(t,a,o,n))return JF(`blocked path through symlink ${e.path}`);await fI(t,n,e,l,c),e.mtime!==void 0&&u.push([n,e.mtime]),s.push(e.path)}return await cI(t,[...mI(c),...mI(l)],mI(u),n),{stdout:e.verbose?`${s.join(`
1932
+ `)}\n`:``,stderr:``,exitCode:0}}function gI(e={}){return C(`tar`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return qF();let r=tI(t);return`exitCode`in r?r:r.mode?r.archive?r.mode===`list`&&r.directory!==`.`?JF(`-C is only supported in create or extract mode`):r.mode===`create`?pI(r,n):hI(r,n,e.fs):JF(`option -f requires an archive path`):JF(`exactly one of -c, -x, or -t is required`)})}var _I=`/**
1952
1933
  * Standalone assertions - no dependency on test runner
1953
1934
  *
1954
1935
  * Each assertion:
@@ -2136,7 +2117,7 @@ function sameMembers(a, b) {
2136
2117
  }
2137
2118
 
2138
2119
  const slice = a => (isPrimitive(a) ? a : a.slice ? a.slice() : Object.assign({}, a))
2139
- `,yI=`/**
2120
+ `,vI=`/**
2140
2121
  * tst - minimal test runner
2141
2122
  *
2142
2123
  * - Standalone assertions (assert.js works anywhere)
@@ -2766,7 +2747,7 @@ function scheduleAutoRun() {
2766
2747
  scheduleAutoRun()
2767
2748
 
2768
2749
  export * from './assert.js'
2769
- `;function bI(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}const xI=`tsc - thin wrapper over the ipk-loaded TypeScript 6 package
2750
+ `;function yI(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}const bI=`tsc - thin wrapper over the ipk-loaded TypeScript 6 package
2770
2751
 
2771
2752
  Usage:
2772
2753
  tsc [options] [files...]
@@ -2790,28 +2771,28 @@ Install:
2790
2771
  Then \`tsc --version\` and the transpile commands above. There is no
2791
2772
  bundled binary, no CDN fallback; a missing package exits non-zero
2792
2773
  with a clear \`ipk add\` hint.
2793
- `;function SI(e){let t=[],n=!1,r=null,i=!1,a=!1;for(let o=0;o<e.length;o++){let s=e[o];if(s===`-h`||s===`--help`){i=!0;continue}if(s===`-v`||s===`--version`){a=!0;continue}if(s===`--noEmit`){n=!0;continue}if(s===`--outDir`){let t=e[o+1];if(typeof t!=`string`||t.startsWith(`-`))throw Error(`tsc: --outDir requires a value`);r=t,o+=1;continue}if(s.startsWith(`--outDir=`)){r=s.slice(9);continue}if(s.startsWith(`-`))throw Error(`tsc: unknown option: ${s}`);t.push(s)}return{files:t,noEmit:n,outDir:r,showHelp:i,showVersion:a}}function CI(e,t){let n=`${Nr(e).replace(/\.(ts|tsx|mts|cts)$/i,``)}.js`;return t?`${t.endsWith(`/`)?t.slice(0,-1):t}/${n}`:`${Lr(e)}/${n}`}async function wI(e,t){let n=t||`/`,r=``;for(;n&&n!==r;){let t=n===`/`?`/tsconfig.json`:`${n}/tsconfig.json`;if(await e.exists(t))return t;r=n,n=Lr(n)}return null}function TI(e){return{target:e.ScriptTarget.ES2022,module:e.ModuleKind.ESNext,moduleResolution:e.ModuleResolutionKind.Bundler,esModuleInterop:!0,allowSyntheticDefaultImports:!0,isolatedModules:!0}}function EI(e){if(typeof e!=`object`||!e)return{};let{compilerOptions:t}=e;return t??{}}async function DI(e,t,n){let r=TI(t),i=await wI(e,n);if(!i)return{compilerOptions:{...r}};let a;try{a=await e.readFile(i)}catch{return{compilerOptions:{...r}}}let{config:o,error:s}=t.parseConfigFileTextToJson(i,a);return s||!o?{compilerOptions:{...r}}:{compilerOptions:{...r,...EI(o)}}}function OI(e,t){let n=e.flattenDiagnosticMessageText(t.messageText,`
2794
- `);if(t.file&&typeof t.start==`number`){let{line:e,character:r}=t.file.getLineAndCharacterOfPosition(t.start);return`${t.file.fileName}(${e+1},${r+1}): error TS${t.code}: ${n}`}return`error TS${t.code}: ${n}`}function kI(e,t){let n=t.toLowerCase();return n.endsWith(`.tsx`)?e.ScriptKind.TSX:n.endsWith(`.jsx`)?e.ScriptKind.JSX:n.endsWith(`.js`)||n.endsWith(`.mjs`)||n.endsWith(`.cjs`)?e.ScriptKind.JS:e.ScriptKind.TS}function AI(e,t,n,r,i){let a=e.transpileModule(t,{compilerOptions:r,fileName:n,reportDiagnostics:i});return{outputText:a.outputText,diagnostics:a.diagnostics??[]}}function jI(e,t,n,r){let{outputText:i,diagnostics:a}=AI(e,r,`<stdin>.ts`,n.compilerOptions,!0),o=a.map(t=>OI(e,t)),s=o.length>0?`${o.join(`
2795
- `)}\n`:``;return{stdout:t.noEmit?``:i,stderr:s,exitCode:+(a.length>0)}}async function MI(e,t,n,r,i){let a=t.fs.resolvePath(t.cwd,n);if(!await t.fs.exists(a))return{stderr:`tsc: ${n}: no such file\n`,hadError:!0};let o;try{o=await t.fs.readFile(a)}catch(e){return{stderr:`tsc: ${n}: ${e instanceof Error?e.message:String(e)}\n`,hadError:!0}}kI(e,a);let{outputText:s,diagnostics:c}=AI(e,o,a,i.compilerOptions,!0),l=[];for(let t of c)l.push(`${OI(e,t)}\n`);let u=c.length>0;if(r.noEmit)return{stderr:l.join(``),hadError:u};let d=t.fs.resolvePath(t.cwd,CI(a,r.outDir));try{await t.fs.writeFile(d,s)}catch(e){l.push(`tsc: ${d}: ${e instanceof Error?e.message:String(e)}\n`),u=!0}return{stderr:l.join(``),hadError:u}}async function NI(e,t){let n;try{n=SI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:xI,stderr:``,exitCode:0}};let r;try{r=await Ar(bI(t))}catch(e){return{done:{stdout:``,stderr:`tsc: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}return n.showVersion?{done:{stdout:`Version ${r.version}\n`,stderr:``,exitCode:0}}:{parsed:n,ts:r}}function PI(){return C(`tsc`,async(e,t)=>{let n=await NI(e,t);if(`done`in n)return n.done;let{parsed:r,ts:i}=n,a=await DI(t.fs,i,t.cwd);if(r.files.length===0){let e=P(t.stdin);return e?jI(i,r,a,e):{stdout:xI,stderr:``,exitCode:0}}let o=[],s=!1;for(let e of r.files){let n=await MI(i,t,e,r,a);n.stderr&&o.push(n.stderr),n.hadError&&(s=!0)}return{stdout:``,stderr:o.join(``),exitCode:+!!s}})}const FI=[`**/*.test.{js,ts}`];function II(e,t){let n,r=1;if(e===`--reporter`)n=t,r=2;else if(e.startsWith(`--reporter=`))n=e.slice(11);else return null;if(n!==`tap`&&n!==`spec`)throw Error(`tst: --reporter must be tap or spec`);return{reporter:n,consumed:r}}function LI(e,t){return e===`--coverage`?{consumed:1}:e===`--coverage-dir`&&t!==void 0?{coverageDir:t,consumed:2}:e.startsWith(`--coverage-dir=`)?{coverageDir:e.slice(15),consumed:1}:null}function RI(e){let t=[],n=`tap`,r=!1,i=!1,a=``;for(let o=0;o<e.length;o++){let s=e[o];if(s===`-h`||s===`--help`){r=!0;continue}let c=II(s,e[o+1]);if(c){n=c.reporter,c.consumed===2&&(o+=1);continue}let l=LI(s,e[o+1]);if(l){i=!0,l.coverageDir!==void 0&&(a=l.coverageDir),l.consumed===2&&(o+=1);continue}if(s.startsWith(`-`))throw Error(`tst: unknown option: ${s}`);t.push(s)}return{globs:t.length>0?t:[...FI],reporter:n,showHelp:r,coverage:i,coverageDir:a}}function zI(e){let t=e.indexOf(`{`);if(t===-1)return[e];let n=e.indexOf(`}`,t);if(n===-1)return[e];let r=e.slice(0,t),i=e.slice(n+1),a=e.slice(t+1,n).split(`,`),o=[];for(let e of a)for(let t of zI(`${r}${e}${i}`))o.push(t);return o}function BI(e){let t=``,n=0;for(;n<e.length;){let r=e[n];r===`*`&&e[n+1]===`*`?(t+=`(?:.*/)?`,n+=2,e[n]===`/`&&(n+=1)):r===`*`?(t+=`[^/]*`,n+=1):r===`?`?(t+=`[^/]`,n+=1):`.+^$()[]|\\`.includes(r)?(t+=`\\${r}`,n+=1):(t+=r,n+=1)}return RegExp(`^${t}$`)}async function VI(e,t,n){let r=n.flatMap(zI).map(BI),i=/* @__PURE__ */ new Set,a=t===`/`?``:t;async function o(t){let n;try{n=await e.readdir(t)}catch{return}for(let s of n){if(s===`node_modules`||s.startsWith(`.`))continue;let n=t===`/`?`/${s}`:`${t}/${s}`,c=!1;try{c=(await e.stat(n)).isDirectory}catch{continue}if(c){await o(n);continue}let l=n.startsWith(`${a}/`)?n.slice(a.length+1):n;r.some(e=>e.test(l))&&i.add(n)}}return await o(t),[...i].sort()}let HI=null;async function UI(e){if(HI)return HI;let t={module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,esModuleInterop:!0,isolatedModules:!1};return HI=`
2774
+ `;function xI(e){let t=[],n=!1,r=null,i=!1,a=!1;for(let o=0;o<e.length;o++){let s=e[o];if(s===`-h`||s===`--help`){i=!0;continue}if(s===`-v`||s===`--version`){a=!0;continue}if(s===`--noEmit`){n=!0;continue}if(s===`--outDir`){let t=e[o+1];if(typeof t!=`string`||t.startsWith(`-`))throw Error(`tsc: --outDir requires a value`);r=t,o+=1;continue}if(s.startsWith(`--outDir=`)){r=s.slice(9);continue}if(s.startsWith(`-`))throw Error(`tsc: unknown option: ${s}`);t.push(s)}return{files:t,noEmit:n,outDir:r,showHelp:i,showVersion:a}}function SI(e,t){let n=`${Nr(e).replace(/\.(ts|tsx|mts|cts)$/i,``)}.js`;return t?`${t.endsWith(`/`)?t.slice(0,-1):t}/${n}`:`${Lr(e)}/${n}`}async function CI(e,t){let n=t||`/`,r=``;for(;n&&n!==r;){let t=n===`/`?`/tsconfig.json`:`${n}/tsconfig.json`;if(await e.exists(t))return t;r=n,n=Lr(n)}return null}function wI(e){return{target:e.ScriptTarget.ES2022,module:e.ModuleKind.ESNext,moduleResolution:e.ModuleResolutionKind.Bundler,esModuleInterop:!0,allowSyntheticDefaultImports:!0,isolatedModules:!0}}function TI(e){if(typeof e!=`object`||!e)return{};let{compilerOptions:t}=e;return t??{}}async function EI(e,t,n){let r=wI(t),i=await CI(e,n);if(!i)return{compilerOptions:{...r}};let a;try{a=await e.readFile(i)}catch{return{compilerOptions:{...r}}}let{config:o,error:s}=t.parseConfigFileTextToJson(i,a);return s||!o?{compilerOptions:{...r}}:{compilerOptions:{...r,...TI(o)}}}function DI(e,t){let n=e.flattenDiagnosticMessageText(t.messageText,`
2775
+ `);if(t.file&&typeof t.start==`number`){let{line:e,character:r}=t.file.getLineAndCharacterOfPosition(t.start);return`${t.file.fileName}(${e+1},${r+1}): error TS${t.code}: ${n}`}return`error TS${t.code}: ${n}`}function OI(e,t){let n=t.toLowerCase();return n.endsWith(`.tsx`)?e.ScriptKind.TSX:n.endsWith(`.jsx`)?e.ScriptKind.JSX:n.endsWith(`.js`)||n.endsWith(`.mjs`)||n.endsWith(`.cjs`)?e.ScriptKind.JS:e.ScriptKind.TS}function kI(e,t,n,r,i){let a=e.transpileModule(t,{compilerOptions:r,fileName:n,reportDiagnostics:i});return{outputText:a.outputText,diagnostics:a.diagnostics??[]}}function AI(e,t,n,r){let{outputText:i,diagnostics:a}=kI(e,r,`<stdin>.ts`,n.compilerOptions,!0),o=a.map(t=>DI(e,t)),s=o.length>0?`${o.join(`
2776
+ `)}\n`:``;return{stdout:t.noEmit?``:i,stderr:s,exitCode:+(a.length>0)}}async function jI(e,t,n,r,i){let a=t.fs.resolvePath(t.cwd,n);if(!await t.fs.exists(a))return{stderr:`tsc: ${n}: no such file\n`,hadError:!0};let o;try{o=await t.fs.readFile(a)}catch(e){return{stderr:`tsc: ${n}: ${e instanceof Error?e.message:String(e)}\n`,hadError:!0}}OI(e,a);let{outputText:s,diagnostics:c}=kI(e,o,a,i.compilerOptions,!0),l=[];for(let t of c)l.push(`${DI(e,t)}\n`);let u=c.length>0;if(r.noEmit)return{stderr:l.join(``),hadError:u};let d=t.fs.resolvePath(t.cwd,SI(a,r.outDir));try{await t.fs.writeFile(d,s)}catch(e){l.push(`tsc: ${d}: ${e instanceof Error?e.message:String(e)}\n`),u=!0}return{stderr:l.join(``),hadError:u}}async function MI(e,t){let n;try{n=xI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:bI,stderr:``,exitCode:0}};let r;try{r=await Ar(yI(t))}catch(e){return{done:{stdout:``,stderr:`tsc: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}return n.showVersion?{done:{stdout:`Version ${r.version}\n`,stderr:``,exitCode:0}}:{parsed:n,ts:r}}function NI(){return C(`tsc`,async(e,t)=>{let n=await MI(e,t);if(`done`in n)return n.done;let{parsed:r,ts:i}=n,a=await EI(t.fs,i,t.cwd);if(r.files.length===0){let e=P(t.stdin);return e?AI(i,r,a,e):{stdout:bI,stderr:``,exitCode:0}}let o=[],s=!1;for(let e of r.files){let n=await jI(i,t,e,r,a);n.stderr&&o.push(n.stderr),n.hadError&&(s=!0)}return{stdout:``,stderr:o.join(``),exitCode:+!!s}})}const PI=[`**/*.test.{js,ts}`];function FI(e,t){let n,r=1;if(e===`--reporter`)n=t,r=2;else if(e.startsWith(`--reporter=`))n=e.slice(11);else return null;if(n!==`tap`&&n!==`spec`)throw Error(`tst: --reporter must be tap or spec`);return{reporter:n,consumed:r}}function II(e,t){return e===`--coverage`?{consumed:1}:e===`--coverage-dir`&&t!==void 0?{coverageDir:t,consumed:2}:e.startsWith(`--coverage-dir=`)?{coverageDir:e.slice(15),consumed:1}:null}function LI(e){let t=[],n=`tap`,r=!1,i=!1,a=``;for(let o=0;o<e.length;o++){let s=e[o];if(s===`-h`||s===`--help`){r=!0;continue}let c=FI(s,e[o+1]);if(c){n=c.reporter,c.consumed===2&&(o+=1);continue}let l=II(s,e[o+1]);if(l){i=!0,l.coverageDir!==void 0&&(a=l.coverageDir),l.consumed===2&&(o+=1);continue}if(s.startsWith(`-`))throw Error(`tst: unknown option: ${s}`);t.push(s)}return{globs:t.length>0?t:[...PI],reporter:n,showHelp:r,coverage:i,coverageDir:a}}function RI(e){let t=e.indexOf(`{`);if(t===-1)return[e];let n=e.indexOf(`}`,t);if(n===-1)return[e];let r=e.slice(0,t),i=e.slice(n+1),a=e.slice(t+1,n).split(`,`),o=[];for(let e of a)for(let t of RI(`${r}${e}${i}`))o.push(t);return o}function zI(e){let t=``,n=0;for(;n<e.length;){let r=e[n];r===`*`&&e[n+1]===`*`?(t+=`(?:.*/)?`,n+=2,e[n]===`/`&&(n+=1)):r===`*`?(t+=`[^/]*`,n+=1):r===`?`?(t+=`[^/]`,n+=1):`.+^$()[]|\\`.includes(r)?(t+=`\\${r}`,n+=1):(t+=r,n+=1)}return RegExp(`^${t}$`)}async function BI(e,t,n){let r=n.flatMap(RI).map(zI),i=/* @__PURE__ */ new Set,a=t===`/`?``:t;async function o(t){let n;try{n=await e.readdir(t)}catch{return}for(let s of n){if(s===`node_modules`||s.startsWith(`.`))continue;let n=t===`/`?`/${s}`:`${t}/${s}`,c=!1;try{c=(await e.stat(n)).isDirectory}catch{continue}if(c){await o(n);continue}let l=n.startsWith(`${a}/`)?n.slice(a.length+1):n;r.some(e=>e.test(l))&&i.add(n)}}return await o(t),[...i].sort()}let VI=null;async function HI(e){if(VI)return VI;let t={module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,esModuleInterop:!0,isolatedModules:!1};return VI=`
2796
2777
  if (typeof process !== 'undefined' && !process.versions) {
2797
2778
  try { process.versions = { node: '20.0.0' }; } catch (_) { /* readonly process.versions is fine */ }
2798
2779
  }
2799
2780
  const __tst_assert_exports = (function () {
2800
2781
  const module = { exports: {} };
2801
2782
  const exports = module.exports;
2802
- ${e.transpileModule(vI,{compilerOptions:t,fileName:`assert.js`}).outputText}
2783
+ ${e.transpileModule(_I,{compilerOptions:t,fileName:`assert.js`}).outputText}
2803
2784
  return module.exports;
2804
2785
  })();
2805
2786
  const __tst_module_exports = (function () {
2806
2787
  const module = { exports: {} };
2807
2788
  const exports = module.exports;
2808
- ${e.transpileModule(yI,{compilerOptions:t,fileName:`tst.js`}).outputText.replace(/require\(["']\.\/assert\.js["']\)/g,`__tst_assert_exports`).replace(/\bimport\.meta\b/g,`({url:""})`).replace(/await\s+import\(['"](?:worker_threads|fs|path)['"]\)/g,`await Promise.reject(new Error("tst: fork mode is not supported in the realm"))`)}
2789
+ ${e.transpileModule(vI,{compilerOptions:t,fileName:`tst.js`}).outputText.replace(/require\(["']\.\/assert\.js["']\)/g,`__tst_assert_exports`).replace(/\bimport\.meta\b/g,`({url:""})`).replace(/await\s+import\(['"](?:worker_threads|fs|path)['"]\)/g,`await Promise.reject(new Error("tst: fork mode is not supported in the realm"))`)}
2809
2790
  return module.exports;
2810
2791
  })();
2811
2792
  const __tst = __tst_module_exports.default || __tst_module_exports;
2812
2793
  __tst.manual = true;
2813
- `.trim(),HI}function WI(e,t=/* @__PURE__ */ new Map){return e.replace(/(^|[^\w$.])require\(\s*(["'`])([^"'`]+)\2\s*\)/g,(e,n,r,i)=>i===`tst`||i===`tst/tst.js`?`${n}__tstReq("tst")`:i===`tst/assert`||i===`tst/assert.js`?`${n}__tstReq("tst/assert")`:t.has(i)?`${n}__localReq(${JSON.stringify(t.get(i))})`:e)}function GI(e){let t=/* @__PURE__ */ new Set,n=/(?:^|[^\w$.])require\(\s*(["'`])([^"'`]+)\1\s*\)/g,r;for(;(r=n.exec(e))!==null;)t.add(r[2]);return[...t]}async function KI(e,t,n){let r=x(`${t}/${n}`),i=[r];r.endsWith(`.js`)&&i.push(`${r.slice(0,-3)}.ts`),/\.[a-zA-Z0-9]+$/.test(r)||i.push(`${r}.ts`,`${r}.js`);for(let t of i)if(await e.exists(t))return t;return null}async function qI(e,t,n,r,i,a){let o=/* @__PURE__ */ new Map,s=/* @__PURE__ */ new Map,c=[{path:n,cjs:r}];for(;c.length>0;){let{path:n,cjs:r}=c.shift(),l=Lr(n),u=/* @__PURE__ */ new Map;for(let n of GI(r)){if(!n.startsWith(`./`)&&!n.startsWith(`../`))continue;let r=await KI(e,l,n);if(!r||(u.set(n,r),o.has(r)))continue;let s=await e.readFile(r);a&&(s=a(s,r));let d=t.transpileModule(s,{compilerOptions:i,fileName:r}).outputText;o.set(r,d),c.push({path:r,cjs:d})}s.set(n,u)}return{modules:o,edgeRewrites:s}}function JI(e,t,n,r,i,a,o=``,s=``){let c=r===`spec`?`pretty`:`tap`,l=[];for(let[e,t]of i.entries()){let n=WI(t,a.get(e)??/* @__PURE__ */ new Map);l.push(`${JSON.stringify(e)}: function (module, exports, require) {\n${n}\n}`)}let u=`{${l.join(`,
2814
- `)}}`,d=WI(n,a.get(t)??/* @__PURE__ */ new Map),f=o,p=s;return`"use strict";
2794
+ `.trim(),VI}function UI(e,t=/* @__PURE__ */ new Map){return e.replace(/(^|[^\w$.])require\(\s*(["'`])([^"'`]+)\2\s*\)/g,(e,n,r,i)=>i===`tst`||i===`tst/tst.js`?`${n}__tstReq("tst")`:i===`tst/assert`||i===`tst/assert.js`?`${n}__tstReq("tst/assert")`:t.has(i)?`${n}__localReq(${JSON.stringify(t.get(i))})`:e)}function WI(e){let t=/* @__PURE__ */ new Set,n=/(?:^|[^\w$.])require\(\s*(["'`])([^"'`]+)\1\s*\)/g,r;for(;(r=n.exec(e))!==null;)t.add(r[2]);return[...t]}async function GI(e,t,n){let r=x(`${t}/${n}`),i=[r];r.endsWith(`.js`)&&i.push(`${r.slice(0,-3)}.ts`),/\.[a-zA-Z0-9]+$/.test(r)||i.push(`${r}.ts`,`${r}.js`);for(let t of i)if(await e.exists(t))return t;return null}async function KI(e,t,n,r,i,a){let o=/* @__PURE__ */ new Map,s=/* @__PURE__ */ new Map,c=[{path:n,cjs:r}];for(;c.length>0;){let{path:n,cjs:r}=c.shift(),l=Lr(n),u=/* @__PURE__ */ new Map;for(let n of WI(r)){if(!n.startsWith(`./`)&&!n.startsWith(`../`))continue;let r=await GI(e,l,n);if(!r||(u.set(n,r),o.has(r)))continue;let s=await e.readFile(r);a&&(s=a(s,r));let d=t.transpileModule(s,{compilerOptions:i,fileName:r}).outputText;o.set(r,d),c.push({path:r,cjs:d})}s.set(n,u)}return{modules:o,edgeRewrites:s}}function qI(e,t,n,r,i,a,o=``,s=``){let c=r===`spec`?`pretty`:`tap`,l=[];for(let[e,t]of i.entries()){let n=UI(t,a.get(e)??/* @__PURE__ */ new Map);l.push(`${JSON.stringify(e)}: function (module, exports, require) {\n${n}\n}`)}let u=`{${l.join(`,
2795
+ `)}}`,d=UI(n,a.get(t)??/* @__PURE__ */ new Map),f=o,p=s;return`"use strict";
2815
2796
  ${f}${e}
2816
2797
  const __realmRequire = require;
2817
2798
  const { createRequire: __createRequire } = __realmRequire("module");
@@ -2854,7 +2835,7 @@ await Promise.resolve();
2854
2835
  await new Promise((resolve) => setTimeout(resolve));
2855
2836
  ${p}
2856
2837
  if (__state && __state.failed && __state.failed.length > 0) process.exit(1);
2857
- `}const YI={esModuleInterop:!0,allowJs:!0,isolatedModules:!1};function XI(e){return{module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,...YI}}async function ZI(e,t){let n;try{n=RI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:`tst - run *.test.{js,ts} files with the bundled tst runner
2838
+ `}const JI={esModuleInterop:!0,allowJs:!0,isolatedModules:!1};function YI(e){return{module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,...JI}}async function XI(e,t){let n;try{n=LI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:`tst - run *.test.{js,ts} files with the bundled tst runner
2858
2839
 
2859
2840
  Usage:
2860
2841
  tst [options] [glob...]
@@ -2876,7 +2857,7 @@ Notes:
2876
2857
  with statement counters. nyc/c8 cannot wrap this runner: it is not a
2877
2858
  Node child. Istanbul/Babel are not bundled (webapp size-limit); the
2878
2859
  TypeScript AST already in process does the rewrite.
2879
- `,stderr:``,exitCode:0}};let r=await VI(t.fs,t.cwd,n.globs);if(r.length===0)return{done:{stdout:``,stderr:`tst: no test files matched ${n.globs.join(` `)}\n`,exitCode:1}};let i;try{i=await Ar(bI(t))}catch(e){return{done:{stdout:``,stderr:`tst: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}let a=await UI(i),o=n.coverage?await import(`./coverage-instrument-C0KP58r0.js`):null;return{parsed:n,files:r,ts:i,harness:a,userOpts:XI(i),coverageMaps:{},coverageCounts:{},coverageMod:o}}function QI(e){return e.includes(`# fail `)||/(^|\n)not ok /.test(e)}async function $I(e,t,n,r){let{ts:i,harness:a,userOpts:o,parsed:s}=t,c=t.coverageMod,l=c?(e,n)=>{let{source:r,map:a}=c.instrumentSource(i,e,n);return t.coverageMaps[n]=a,r}:void 0,u;try{u=await e.fs.readFile(n)}catch(e){return{stdout:``,stderr:`tst: ${n}: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}l&&(u=l(u,n));let d;try{d=i.transpileModule(u,{compilerOptions:o,fileName:n}).outputText}catch(e){return{stdout:``,stderr:`tst: ${n}: transpile error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let f,p;try{({modules:f,edgeRewrites:p}=await qI(e.fs,i,n,d,o,l))}catch(e){return{stdout:``,stderr:`tst: ${n}: local-require resolve error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let m=JI(a,n,d,s.reporter,f,p,c?`${c.coverageRuntimeSource()}\n`:``,c?`\n${c.coverageDumpSource()}`:``),h=await yi(m,[`node`,n],e,void 0,{filename:n}),g=h.stdout;if(c){let e=c.extractCoverageCounts(g);g=e.stdout,c.mergeCounts(t.coverageCounts,e.counts)}return{stdout:r?`# ${n}\n${g}`:g,stderr:h.stderr,failed:h.exitCode!==0||QI(g)}}function eL(){return C(`tst`,async(e,t)=>{let n=await ZI(e,t);if(`done`in n)return n.done;let r=n.files.length>1,i=``,a=``,o=!1;for(let e of n.files){let s=await $I(t,n,e,r);i+=s.stdout,a+=s.stderr,s.failed&&(o=!0)}if(n.coverageMod){let e=n.coverageMod.resolveCoverageDir(t.cwd,n.parsed.coverageDir,(e,n)=>t.fs.resolvePath(e,n)),r=JSON.stringify({counts:n.coverageCounts,maps:n.coverageMaps},null,2),s=n.coverageMod.toLcov(n.coverageCounts,n.coverageMaps),c=n.coverageMod.coverageSummary(n.coverageCounts,n.coverageMaps);try{await t.fs.writeFile(`${e}/coverage.json`,r),await t.fs.writeFile(`${e}/coverage.lcov`,s)}catch(t){a+=`tst: writing coverage to ${e}: ${t instanceof Error?t.message:String(t)}\n`,o=!0}i+=`\n${c}`}return{stdout:i,stderr:a,exitCode:+!!o}})}const tL=[],nL=`usage: theme <subcommand> [args]
2860
+ `,stderr:``,exitCode:0}};let r=await BI(t.fs,t.cwd,n.globs);if(r.length===0)return{done:{stdout:``,stderr:`tst: no test files matched ${n.globs.join(` `)}\n`,exitCode:1}};let i;try{i=await Ar(yI(t))}catch(e){return{done:{stdout:``,stderr:`tst: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}let a=await HI(i),o=n.coverage?await import(`./coverage-instrument-C0KP58r0.js`):null;return{parsed:n,files:r,ts:i,harness:a,userOpts:YI(i),coverageMaps:{},coverageCounts:{},coverageMod:o}}function ZI(e){return e.includes(`# fail `)||/(^|\n)not ok /.test(e)}async function QI(e,t,n,r){let{ts:i,harness:a,userOpts:o,parsed:s}=t,c=t.coverageMod,l=c?(e,n)=>{let{source:r,map:a}=c.instrumentSource(i,e,n);return t.coverageMaps[n]=a,r}:void 0,u;try{u=await e.fs.readFile(n)}catch(e){return{stdout:``,stderr:`tst: ${n}: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}l&&(u=l(u,n));let d;try{d=i.transpileModule(u,{compilerOptions:o,fileName:n}).outputText}catch(e){return{stdout:``,stderr:`tst: ${n}: transpile error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let f,p;try{({modules:f,edgeRewrites:p}=await KI(e.fs,i,n,d,o,l))}catch(e){return{stdout:``,stderr:`tst: ${n}: local-require resolve error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let m=qI(a,n,d,s.reporter,f,p,c?`${c.coverageRuntimeSource()}\n`:``,c?`\n${c.coverageDumpSource()}`:``),h=await yi(m,[`node`,n],e,void 0,{filename:n}),g=h.stdout;if(c){let e=c.extractCoverageCounts(g);g=e.stdout,c.mergeCounts(t.coverageCounts,e.counts)}return{stdout:r?`# ${n}\n${g}`:g,stderr:h.stderr,failed:h.exitCode!==0||ZI(g)}}function $I(){return C(`tst`,async(e,t)=>{let n=await XI(e,t);if(`done`in n)return n.done;let r=n.files.length>1,i=``,a=``,o=!1;for(let e of n.files){let s=await QI(t,n,e,r);i+=s.stdout,a+=s.stderr,s.failed&&(o=!0)}if(n.coverageMod){let e=n.coverageMod.resolveCoverageDir(t.cwd,n.parsed.coverageDir,(e,n)=>t.fs.resolvePath(e,n)),r=JSON.stringify({counts:n.coverageCounts,maps:n.coverageMaps},null,2),s=n.coverageMod.toLcov(n.coverageCounts,n.coverageMaps),c=n.coverageMod.coverageSummary(n.coverageCounts,n.coverageMaps);try{await t.fs.writeFile(`${e}/coverage.json`,r),await t.fs.writeFile(`${e}/coverage.lcov`,s)}catch(t){a+=`tst: writing coverage to ${e}: ${t instanceof Error?t.message:String(t)}\n`,o=!0}i+=`\n${c}`}return{stdout:i,stderr:a,exitCode:+!!o}})}const eL=[],tL=`usage: theme <subcommand> [args]
2880
2861
 
2881
2862
  Subcommands:
2882
2863
  list List available preset and custom themes
@@ -2885,23 +2866,23 @@ Subcommands:
2885
2866
  reset Reset to the default theme
2886
2867
  current Show the currently active theme
2887
2868
  export <id> <path> Export a theme to a VFS path
2888
- `;function rL(e,t){return{stdout:``,stderr:`theme ${e}: ${t}\n`,exitCode:1}}function iL(){return C(`theme`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return{stdout:nL,stderr:``,exitCode:0};let n=e[0];return T(e.slice(1),{valueFlags:tL})?{stdout:gt(`theme`,n,nL),stderr:``,exitCode:0}:n===`list`?aL(e):n===`current`?oL(e):n===`reset`?sL(e):n===`apply`?cL(e.slice(1),t):n===`export`?lL(e.slice(1),t):{stdout:``,stderr:`theme: unknown subcommand "${n}"\n${nL}`,exitCode:1}})}async function aL(e){let t=w(e.slice(1),{value:tL});if(`error`in t)return rL(`list`,t.error);let{PRESETS:n}=await import(`./theme-presets-xiOb9AFN.js`),r=[`Presets:`];for(let e of n)r.push(` ${e.id.padEnd(16)} ${e.name}`);return r.push(``),{stdout:r.join(`
2889
- `),stderr:``,exitCode:0}}async function oL(e){let t=w(e.slice(1),{value:tL});return`error`in t?rL(`current`,t.error):{stdout:`Check the Theme settings dialog for the active theme.
2890
- `,stderr:``,exitCode:0}}async function sL(e){let t=w(e.slice(1),{value:tL});if(`error`in t)return rL(`reset`,t.error);let n=b();return n?(await n.call(`theme-apply`,{action:`reset`}),{stdout:`Theme reset to default.
2869
+ `;function nL(e,t){return{stdout:``,stderr:`theme ${e}: ${t}\n`,exitCode:1}}function rL(){return C(`theme`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return{stdout:tL,stderr:``,exitCode:0};let n=e[0];return T(e.slice(1),{valueFlags:eL})?{stdout:gt(`theme`,n,tL),stderr:``,exitCode:0}:n===`list`?iL(e):n===`current`?aL(e):n===`reset`?oL(e):n===`apply`?sL(e.slice(1),t):n===`export`?cL(e.slice(1),t):{stdout:``,stderr:`theme: unknown subcommand "${n}"\n${tL}`,exitCode:1}})}async function iL(e){let t=w(e.slice(1),{value:eL});if(`error`in t)return nL(`list`,t.error);let{PRESETS:n}=await import(`./theme-presets-xiOb9AFN.js`),r=[`Presets:`];for(let e of n)r.push(` ${e.id.padEnd(16)} ${e.name}`);return r.push(``),{stdout:r.join(`
2870
+ `),stderr:``,exitCode:0}}async function aL(e){let t=w(e.slice(1),{value:eL});return`error`in t?nL(`current`,t.error):{stdout:`Check the Theme settings dialog for the active theme.
2871
+ `,stderr:``,exitCode:0}}async function oL(e){let t=w(e.slice(1),{value:eL});if(`error`in t)return nL(`reset`,t.error);let n=b();return n?(await n.call(`theme-apply`,{action:`reset`}),{stdout:`Theme reset to default.
2891
2872
  `,stderr:``,exitCode:0}):{stdout:``,stderr:`theme: no panel-RPC connection available
2892
- `,exitCode:1}}async function cL(e,t){let n=w(e,{value:tL});if(`error`in n)return rL(`apply`,n.error);if(n.positionals.length===0)return{stdout:``,stderr:`theme apply: missing theme id or path
2873
+ `,exitCode:1}}async function sL(e,t){let n=w(e,{value:eL});if(`error`in n)return nL(`apply`,n.error);if(n.positionals.length===0)return{stdout:``,stderr:`theme apply: missing theme id or path
2893
2874
  `,exitCode:1};let r=b();if(!r)return{stdout:``,stderr:`theme: no panel-RPC connection available
2894
2875
  `,exitCode:1};let i=n.positionals[0],{PRESETS:a}=await import(`./theme-presets-xiOb9AFN.js`),o=a.find(e=>e.id===i);if(o){let e=JSON.stringify(o);return await r.call(`theme-apply`,{themeJson:e,action:`apply`}),{stdout:`Applied theme: ${o.name}\n`,stderr:``,exitCode:0}}let s=t.fs.resolvePath(t.cwd,i),c;try{c=await t.fs.readFile(s)}catch{return{stdout:``,stderr:`theme apply: "${i}" is not a known preset id and file not found at ${s}\n`,exitCode:1}}try{let e=JSON.parse(c);if(!e.id||!e.name||!e.base||!e.tokens)return{stdout:``,stderr:`theme apply: invalid theme file (missing id, name, base, or tokens)
2895
2876
  `,exitCode:1}}catch{return{stdout:``,stderr:`theme apply: file is not valid JSON
2896
- `,exitCode:1}}return{stdout:`Applied theme: ${(await r.call(`theme-apply`,{themeJson:c,action:`apply`})).applied}\n`,stderr:``,exitCode:0}}async function lL(e,t){let n=w(e,{value:tL});if(`error`in n)return rL(`export`,n.error);if(n.positionals.length<2)return{stdout:``,stderr:`theme export: usage: theme export <id> <path>
2897
- `,exitCode:1};let[r,i]=n.positionals,{PRESETS:a}=await import(`./theme-presets-xiOb9AFN.js`),o=a.find(e=>e.id===r);if(!o)return{stdout:``,stderr:`theme export: unknown preset id "${r}"\n`,exitCode:1};let s=t.fs.resolvePath(t.cwd,i);try{await t.fs.writeFile(s,JSON.stringify(o,null,2))}catch(e){return{stdout:``,stderr:`theme export: write failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return{stdout:`Exported "${o.name}" to ${s}\n`,stderr:``,exitCode:0}}const uL=`unknown`,dL=`usage: uname [-amnorsv]`,fL=[`s`,`n`,`r`,`v`,`m`,`o`];function pL(){return{stdout:[dL,` -s kernel name (SLICC) -n nodename (leader/follower/standalone)`,` -r release (SLICC version) -v build stamp`,` -m machine (realm platform) -o operating system (user agent)`,` -a all of the above, in uname order`,``].join(`
2898
- `),stderr:``,exitCode:0}}function mL(){let{releasedAt:e,buildId:t}=lt();return e?`${t} (${e})`:t}function hL(){let e=globalThis.navigator,t=e?.userAgentData?.platform||e?.platform;return typeof t==`string`&&t.length>0?t:uL}function gL(){let e=globalThis.navigator?.userAgent;return typeof e==`string`&&e.length>0?e:uL}function _L(e){switch(e){case`s`:return`SLICC`;case`n`:return ct();case`r`:return lt().version;case`v`:return mL();case`m`:return hL();case`o`:return gL()}}function vL(e){return{stdout:``,stderr:`uname: ${e}\n${dL}\n`,exitCode:1}}function yL(e){let t=/* @__PURE__ */ new Set;for(let n of e){if(!n.startsWith(`-`)||n===`-`)return{error:`extra operand '${n}'`};if(n.startsWith(`--`))return{error:`unrecognized option '${n}'`};for(let e of n.slice(1)){if(e===`a`){for(let e of fL)t.add(e);continue}if(!fL.includes(e))return{error:`unrecognized option '-${e}'`};t.add(e)}}return t}function bL(){return C(`uname`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return pL();let t=yL(e);return`error`in t?vL(t.error):{stdout:`${(t.size>0?fL.filter(e=>t.has(e)):[`s`]).map(_L).join(` `)}\n`,stderr:``,exitCode:0}})}function xL(){return C(`unlink`,async(e,t)=>{if(e.includes(`--help`))return{stdout:`Usage: unlink FILE
2877
+ `,exitCode:1}}return{stdout:`Applied theme: ${(await r.call(`theme-apply`,{themeJson:c,action:`apply`})).applied}\n`,stderr:``,exitCode:0}}async function cL(e,t){let n=w(e,{value:eL});if(`error`in n)return nL(`export`,n.error);if(n.positionals.length<2)return{stdout:``,stderr:`theme export: usage: theme export <id> <path>
2878
+ `,exitCode:1};let[r,i]=n.positionals,{PRESETS:a}=await import(`./theme-presets-xiOb9AFN.js`),o=a.find(e=>e.id===r);if(!o)return{stdout:``,stderr:`theme export: unknown preset id "${r}"\n`,exitCode:1};let s=t.fs.resolvePath(t.cwd,i);try{await t.fs.writeFile(s,JSON.stringify(o,null,2))}catch(e){return{stdout:``,stderr:`theme export: write failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return{stdout:`Exported "${o.name}" to ${s}\n`,stderr:``,exitCode:0}}const lL=`unknown`,uL=`usage: uname [-amnorsv]`,dL=[`s`,`n`,`r`,`v`,`m`,`o`];function fL(){return{stdout:[uL,` -s kernel name (SLICC) -n nodename (leader/follower/standalone)`,` -r release (SLICC version) -v build stamp`,` -m machine (realm platform) -o operating system (user agent)`,` -a all of the above, in uname order`,``].join(`
2879
+ `),stderr:``,exitCode:0}}function pL(){let{releasedAt:e,buildId:t}=lt();return e?`${t} (${e})`:t}function mL(){let e=globalThis.navigator,t=e?.userAgentData?.platform||e?.platform;return typeof t==`string`&&t.length>0?t:lL}function hL(){let e=globalThis.navigator?.userAgent;return typeof e==`string`&&e.length>0?e:lL}function gL(e){switch(e){case`s`:return`SLICC`;case`n`:return ct();case`r`:return lt().version;case`v`:return pL();case`m`:return mL();case`o`:return hL()}}function _L(e){return{stdout:``,stderr:`uname: ${e}\n${uL}\n`,exitCode:1}}function vL(e){let t=/* @__PURE__ */ new Set;for(let n of e){if(!n.startsWith(`-`)||n===`-`)return{error:`extra operand '${n}'`};if(n.startsWith(`--`))return{error:`unrecognized option '${n}'`};for(let e of n.slice(1)){if(e===`a`){for(let e of dL)t.add(e);continue}if(!dL.includes(e))return{error:`unrecognized option '-${e}'`};t.add(e)}}return t}function yL(){return C(`uname`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return fL();let t=vL(e);return`error`in t?_L(t.error):{stdout:`${(t.size>0?dL.filter(e=>t.has(e)):[`s`]).map(gL).join(` `)}\n`,stderr:``,exitCode:0}})}function bL(){return C(`unlink`,async(e,t)=>{if(e.includes(`--help`))return{stdout:`Usage: unlink FILE
2899
2880
  Remove FILE. Symbolic links are removed without following their target.
2900
2881
  `,stderr:``,exitCode:0};if(e.length!==1||e[0].startsWith(`-`))return{stdout:``,stderr:e.length===0?`unlink: missing operand
2901
2882
  `:`unlink: extra operand
2902
- `,exitCode:1};let n=t.fs.resolvePath(t.cwd,e[0]);try{let r=t.fs.lstat?await t.fs.lstat(n):await t.fs.stat(n);return r.isDirectory&&!r.isSymbolicLink?{stdout:``,stderr:`unlink: cannot unlink '${e[0]}': Is a directory\n`,exitCode:1}:(await t.fs.rm(n,{recursive:!1,force:!1}),{stdout:``,stderr:``,exitCode:0})}catch(t){let n=t instanceof Error?t.message:String(t);return{stdout:``,stderr:`unlink: cannot unlink '${e[0]}': ${n}\n`,exitCode:1}}})}function SL(){return{stdout:`usage: unzip <archive.zip> [-d <destination>]
2903
- `,stderr:``,exitCode:0}}function CL(e){let t=`.`,n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i===`-d`){t=e[r+1]??``,r++;continue}if(i.startsWith(`-`))return{kind:`error`,result:{stdout:``,stderr:`unzip: unsupported option ${i}\n`,exitCode:1}};n.push(i)}return n.length<1?{kind:`error`,result:{stdout:``,stderr:`unzip: expected archive path
2904
- `,exitCode:1}}:{kind:`ok`,archive:n[0],destination:t||`.`}}async function wL(e,t,n,r){let i=n.replace(/\\/g,`/`);if(!i||i.endsWith(`/`))return!1;let a=e.fs.resolvePath(t,i);if(!Br(t,a))return{stdout:``,stderr:`unzip: blocked suspicious path ${n}\n`,exitCode:1};let o=Lr(a);return o!==`/`&&await e.fs.mkdir(o,{recursive:!0}),await e.fs.writeFile(a,r),!0}function TL(){return C(`unzip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return SL();let n=CL(e);if(n.kind===`error`)return n.result;let r=t.fs.resolvePath(t.cwd,n.archive),i=t.fs.resolvePath(t.cwd,n.destination);await t.fs.mkdir(i,{recursive:!0});let a=await t.fs.readFileBuffer(r),o=Lt(a),s=0;for(let[e,n]of Object.entries(o)){let r=await wL(t,i,e,n);if(r===!0)s++;else if(r!==!1)return r}return{stdout:`extracted ${s} file(s) to ${i}\n`,stderr:``,exitCode:0}})}const EL=`ai-ecoverse/slicc`,DL=`usage: upgrade status | upgrade apply --from=<version> --to=<version>`,OL=`packages/vfs-root`,kL=3e4,AL=[`${OL}/workspace/skills/`,`${OL}/shared/sprinkles/`,`${OL}/shared/sounds/`,`${OL}/shared/GELATIERE.md`,`${OL}/shared/wiki/WIKI.md`,`${OL}/etc/`],jL=[`auto-applied`,`merged-clean`,`kept-local`,`needs-review`,`unchanged`,`added-new`];function ML(){return Object.fromEntries(jL.map(e=>[e,0]))}function NL(e,t,n,r){let i=ML();for(let e of n)i[e.classification]+=1;return`${JSON.stringify({ok:r.length===0&&i[`needs-review`]===0,from:e,to:t,results:n.map(({path:e,classification:t,sidecar:n})=>({path:e,status:t,...n?{sidecar:n}:{}})),summary:i,errors:r})}\n`}function PL(e){if(e[0]!==`apply`)throw Error(DL);let t=/* @__PURE__ */ new Map;for(let n of e.slice(1)){let e=n.match(/^--(from|to)=(.+)$/);if(!e)throw Error(`unsupported argument: ${n}`);t.set(e[1],e[2])}let n=t.get(`from`)??``,r=t.get(`to`)??``,i=/^v?[0-9][0-9A-Za-z.+_-]*$/;if(!i.test(n)||!i.test(r))throw Error(`both --from and --to must be release versions`);return{from:n,to:r}}function FL(e){return e.startsWith(`v`)?e:`v${e}`}function IL(e){if(!AL.some(t=>e.startsWith(t)))return null;let t=e.slice(17);return!t||t.split(`/`).some(e=>e===`.`||e===`..`)||t.startsWith(`/workspace/skills/`)&&we()?null:t}async function LL(e,t){let n,r;try{n=await Promise.race([e(t,{method:`GET`,headers:{Accept:`application/json`}}),new Promise((e,t)=>{r=setTimeout(()=>t(/* @__PURE__ */ Error(`request timed out after ${kL}ms`)),kL)})])}catch(e){let n=e instanceof Error?e.message:String(e);throw Error(`fetch failed for ${t}: ${n}`)}finally{r!==void 0&&clearTimeout(r)}if(n.status<200||n.status>=300)throw Error(`fetch failed for ${t}: HTTP ${n.status} ${n.statusText}`);return n}async function RL(e,t){let n=await LL(t,`https://api.github.com/repos/${EL}/git/trees/${encodeURIComponent(e)}?recursive=1`),r=ke(n.body);if(r.truncated)throw Error(`bundled file discovery was truncated for ${e}`);if(!Array.isArray(r.tree))throw Error(`invalid bundled file discovery response for ${e}`);let i=/* @__PURE__ */ new Map;for(let e of r.tree){if(e.type!==`blob`||typeof e.path!=`string`)continue;let t=IL(e.path);t&&i.set(t,e.path)}return i}function zL(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`https://raw.githubusercontent.com/${EL}/${encodeURIComponent(e)}/${n}`}function BL(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}function VL(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}async function HL(e,t){if(!await e.exists(t))return;let n=await e.readFile(t,{encoding:`binary`});return n instanceof Uint8Array?n:new TextEncoder().encode(n)}async function UL(e,t,n,r,i){let a=`${t}.upgrade-${FL(n)}-to-${FL(r)}.conflict`;if(!i.has(a)&&!await e.exists(a))return i.add(a),a;for(let t=1;;t+=1){let n=`${a}.${t}`;if(!i.has(n)&&!await e.exists(n))return i.add(n),n}}async function WL(e,t,n,r,i,a,o){let s=await HL(e.fs,t);if(!a)return{path:t,classification:s?`kept-local`:`unchanged`};if(!i)return s?{path:t,classification:BL(s,a)?`unchanged`:`kept-local`}:{path:t,classification:`added-new`,content:a};if(BL(i,a)||BL(s,a))return{path:t,classification:`unchanged`};if(!s)return{path:t,classification:`kept-local`};if(BL(s,i))return{path:t,classification:`auto-applied`,content:a};let[c,l,u]=[s,i,a].map(VL);if(c!==null&&l!==null&&u!==null){let i=Ye(c,l,u,{diff3:!0,labels:{current:`local:${t}`,base:`${FL(n)}:${t}`,other:`${FL(r)}:${t}`}}),a=new TextEncoder().encode(i.content);return i.conflicts===0?{path:t,classification:`merged-clean`,content:a}:{path:t,classification:`needs-review`,content:a,sidecar:await UL(e.fs,t,n,r,o)}}return{path:t,classification:`needs-review`,content:a,sidecar:await UL(e.fs,t,n,r,o)}}async function GL(e,t){t.content?await e.writeFile(t.path,t.content):await e.exists(t.path)&&await e.rm(t.path)}async function KL(e,t){let n=t.filter(e=>e.content!==void 0),r=await Promise.all(n.map(async t=>{let n=t.sidecar??t.path;return{path:n,content:await HL(e,n)}})),i=[];for(let t=0;t<n.length;t+=1){let a=n[t],o=r[t];try{await e.writeFile(o.path,a.content),i.push(o)}catch(t){let n=[];for(let t of[o,...i.slice().reverse()])try{await GL(e,t)}catch(e){n.push(`${t.path}: ${e instanceof Error?e.message:String(e)}`)}let r=t instanceof Error?t.message:String(t),a=n.length===0?`all writes rolled back`:`rollback failed (${n.join(`; `)})`;throw Error(`apply failed for ${o.path}: ${r}; ${a}`)}}}async function qL(e,t,n){let r=FL(t),i=FL(n),[a,o]=await Promise.all([RL(r,e.fetch),RL(i,e.fetch)]),s=[.../* @__PURE__ */ new Set([...a.keys(),...o.keys()])].sort(),c=await Promise.all(s.map(async t=>{let[n,s]=await Promise.all([a.has(t)?LL(e.fetch,zL(r,a.get(t))).then(e=>je(e.body)):void 0,o.has(t)?LL(e.fetch,zL(i,o.get(t))).then(e=>je(e.body)):void 0]);return{path:t,base:n,theirs:s}})),l=new Set(s),u=[];for(let{path:r,base:i,theirs:a}of c)u.push(await WL(e,r,t,n,i,a,l));return await KL(e.fs,u),u}async function JL(e){let{version:t,releasedAt:n,buildId:r}=lt(),i=[],a=null,o=e.getLastSeen??ut();if(!o)i.push(`last-seen version unavailable: no reader registered in this runtime`);else try{a=await o()}catch(e){i.push(`last-seen version unavailable: ${e instanceof Error?e.message:String(e)}`)}let s=a!==null&&a!==t;return`${JSON.stringify({ok:i.length===0,version:t,releasedAt:n,build:r,lastSeen:a,mergePending:s,...s?{apply:`upgrade apply --from=${a} --to=${t}`}:{},errors:i})}\n`}function YL(e){return C(`upgrade`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`${DL}\n`,stderr:``,exitCode:0};if(t[0]===`status`)return t.length>1?{stdout:NL(``,``,[],[`unsupported argument: ${t[1]}`]),stderr:``,exitCode:1}:{stdout:await JL(e),stderr:``,exitCode:0};let n=``,r=``;try{({from:n,to:r}=PL(t));let i=await qL(e,n,r),a=i.some(e=>e.classification===`needs-review`);return{stdout:NL(n,r,i,[]),stderr:``,exitCode:+!!a}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:NL(n,r,[],[t]),stderr:``,exitCode:1}}})}const XL=`usage: uptime [-p|--pretty] [-s|--since]`,ZL=`${XL}
2883
+ `,exitCode:1};let n=t.fs.resolvePath(t.cwd,e[0]);try{let r=t.fs.lstat?await t.fs.lstat(n):await t.fs.stat(n);return r.isDirectory&&!r.isSymbolicLink?{stdout:``,stderr:`unlink: cannot unlink '${e[0]}': Is a directory\n`,exitCode:1}:(await t.fs.rm(n,{recursive:!1,force:!1}),{stdout:``,stderr:``,exitCode:0})}catch(t){let n=t instanceof Error?t.message:String(t);return{stdout:``,stderr:`unlink: cannot unlink '${e[0]}': ${n}\n`,exitCode:1}}})}function xL(){return{stdout:`usage: unzip <archive.zip> [-d <destination>]
2884
+ `,stderr:``,exitCode:0}}function SL(e){let t=`.`,n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i===`-d`){t=e[r+1]??``,r++;continue}if(i.startsWith(`-`))return{kind:`error`,result:{stdout:``,stderr:`unzip: unsupported option ${i}\n`,exitCode:1}};n.push(i)}return n.length<1?{kind:`error`,result:{stdout:``,stderr:`unzip: expected archive path
2885
+ `,exitCode:1}}:{kind:`ok`,archive:n[0],destination:t||`.`}}async function CL(e,t,n,r){let i=n.replace(/\\/g,`/`);if(!i||i.endsWith(`/`))return!1;let a=e.fs.resolvePath(t,i);if(!Br(t,a))return{stdout:``,stderr:`unzip: blocked suspicious path ${n}\n`,exitCode:1};let o=Lr(a);return o!==`/`&&await e.fs.mkdir(o,{recursive:!0}),await e.fs.writeFile(a,r),!0}function wL(){return C(`unzip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return xL();let n=SL(e);if(n.kind===`error`)return n.result;let r=t.fs.resolvePath(t.cwd,n.archive),i=t.fs.resolvePath(t.cwd,n.destination);await t.fs.mkdir(i,{recursive:!0});let a=await t.fs.readFileBuffer(r),o=Lt(a),s=0;for(let[e,n]of Object.entries(o)){let r=await CL(t,i,e,n);if(r===!0)s++;else if(r!==!1)return r}return{stdout:`extracted ${s} file(s) to ${i}\n`,stderr:``,exitCode:0}})}const TL=`ai-ecoverse/slicc`,EL=`usage: upgrade status | upgrade apply --from=<version> --to=<version>`,DL=`packages/vfs-root`,OL=3e4,kL=[`${DL}/workspace/skills/`,`${DL}/shared/sprinkles/`,`${DL}/shared/sounds/`,`${DL}/shared/GELATIERE.md`,`${DL}/shared/wiki/WIKI.md`,`${DL}/etc/`],AL=[`auto-applied`,`merged-clean`,`kept-local`,`needs-review`,`unchanged`,`added-new`];function jL(){return Object.fromEntries(AL.map(e=>[e,0]))}function ML(e,t,n,r){let i=jL();for(let e of n)i[e.classification]+=1;return`${JSON.stringify({ok:r.length===0&&i[`needs-review`]===0,from:e,to:t,results:n.map(({path:e,classification:t,sidecar:n})=>({path:e,status:t,...n?{sidecar:n}:{}})),summary:i,errors:r})}\n`}function NL(e){if(e[0]!==`apply`)throw Error(EL);let t=/* @__PURE__ */ new Map;for(let n of e.slice(1)){let e=n.match(/^--(from|to)=(.+)$/);if(!e)throw Error(`unsupported argument: ${n}`);t.set(e[1],e[2])}let n=t.get(`from`)??``,r=t.get(`to`)??``,i=/^v?[0-9][0-9A-Za-z.+_-]*$/;if(!i.test(n)||!i.test(r))throw Error(`both --from and --to must be release versions`);return{from:n,to:r}}function PL(e){return e.startsWith(`v`)?e:`v${e}`}function FL(e){if(!kL.some(t=>e.startsWith(t)))return null;let t=e.slice(17);return!t||t.split(`/`).some(e=>e===`.`||e===`..`)||t.startsWith(`/workspace/skills/`)&&we()?null:t}async function IL(e,t){let n,r;try{n=await Promise.race([e(t,{method:`GET`,headers:{Accept:`application/json`}}),new Promise((e,t)=>{r=setTimeout(()=>t(/* @__PURE__ */ Error(`request timed out after ${OL}ms`)),OL)})])}catch(e){let n=e instanceof Error?e.message:String(e);throw Error(`fetch failed for ${t}: ${n}`)}finally{r!==void 0&&clearTimeout(r)}if(n.status<200||n.status>=300)throw Error(`fetch failed for ${t}: HTTP ${n.status} ${n.statusText}`);return n}async function LL(e,t){let n=await IL(t,`https://api.github.com/repos/${TL}/git/trees/${encodeURIComponent(e)}?recursive=1`),r=ke(n.body);if(r.truncated)throw Error(`bundled file discovery was truncated for ${e}`);if(!Array.isArray(r.tree))throw Error(`invalid bundled file discovery response for ${e}`);let i=/* @__PURE__ */ new Map;for(let e of r.tree){if(e.type!==`blob`||typeof e.path!=`string`)continue;let t=FL(e.path);t&&i.set(t,e.path)}return i}function RL(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`https://raw.githubusercontent.com/${TL}/${encodeURIComponent(e)}/${n}`}function zL(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}function BL(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}async function VL(e,t){if(!await e.exists(t))return;let n=await e.readFile(t,{encoding:`binary`});return n instanceof Uint8Array?n:new TextEncoder().encode(n)}async function HL(e,t,n,r,i){let a=`${t}.upgrade-${PL(n)}-to-${PL(r)}.conflict`;if(!i.has(a)&&!await e.exists(a))return i.add(a),a;for(let t=1;;t+=1){let n=`${a}.${t}`;if(!i.has(n)&&!await e.exists(n))return i.add(n),n}}async function UL(e,t,n,r,i,a,o){let s=await VL(e.fs,t);if(!a)return{path:t,classification:s?`kept-local`:`unchanged`};if(!i)return s?{path:t,classification:zL(s,a)?`unchanged`:`kept-local`}:{path:t,classification:`added-new`,content:a};if(zL(i,a)||zL(s,a))return{path:t,classification:`unchanged`};if(!s)return{path:t,classification:`kept-local`};if(zL(s,i))return{path:t,classification:`auto-applied`,content:a};let[c,l,u]=[s,i,a].map(BL);if(c!==null&&l!==null&&u!==null){let i=Ye(c,l,u,{diff3:!0,labels:{current:`local:${t}`,base:`${PL(n)}:${t}`,other:`${PL(r)}:${t}`}}),a=new TextEncoder().encode(i.content);return i.conflicts===0?{path:t,classification:`merged-clean`,content:a}:{path:t,classification:`needs-review`,content:a,sidecar:await HL(e.fs,t,n,r,o)}}return{path:t,classification:`needs-review`,content:a,sidecar:await HL(e.fs,t,n,r,o)}}async function WL(e,t){t.content?await e.writeFile(t.path,t.content):await e.exists(t.path)&&await e.rm(t.path)}async function GL(e,t){let n=t.filter(e=>e.content!==void 0),r=await Promise.all(n.map(async t=>{let n=t.sidecar??t.path;return{path:n,content:await VL(e,n)}})),i=[];for(let t=0;t<n.length;t+=1){let a=n[t],o=r[t];try{await e.writeFile(o.path,a.content),i.push(o)}catch(t){let n=[];for(let t of[o,...i.slice().reverse()])try{await WL(e,t)}catch(e){n.push(`${t.path}: ${e instanceof Error?e.message:String(e)}`)}let r=t instanceof Error?t.message:String(t),a=n.length===0?`all writes rolled back`:`rollback failed (${n.join(`; `)})`;throw Error(`apply failed for ${o.path}: ${r}; ${a}`)}}}async function KL(e,t,n){let r=PL(t),i=PL(n),[a,o]=await Promise.all([LL(r,e.fetch),LL(i,e.fetch)]),s=[.../* @__PURE__ */ new Set([...a.keys(),...o.keys()])].sort(),c=await Promise.all(s.map(async t=>{let[n,s]=await Promise.all([a.has(t)?IL(e.fetch,RL(r,a.get(t))).then(e=>je(e.body)):void 0,o.has(t)?IL(e.fetch,RL(i,o.get(t))).then(e=>je(e.body)):void 0]);return{path:t,base:n,theirs:s}})),l=new Set(s),u=[];for(let{path:r,base:i,theirs:a}of c)u.push(await UL(e,r,t,n,i,a,l));return await GL(e.fs,u),u}async function qL(e){let{version:t,releasedAt:n,buildId:r}=lt(),i=[],a=null,o=e.getLastSeen??ut();if(!o)i.push(`last-seen version unavailable: no reader registered in this runtime`);else try{a=await o()}catch(e){i.push(`last-seen version unavailable: ${e instanceof Error?e.message:String(e)}`)}let s=a!==null&&a!==t;return`${JSON.stringify({ok:i.length===0,version:t,releasedAt:n,build:r,lastSeen:a,mergePending:s,...s?{apply:`upgrade apply --from=${a} --to=${t}`}:{},errors:i})}\n`}function JL(e){return C(`upgrade`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`${EL}\n`,stderr:``,exitCode:0};if(t[0]===`status`)return t.length>1?{stdout:ML(``,``,[],[`unsupported argument: ${t[1]}`]),stderr:``,exitCode:1}:{stdout:await qL(e),stderr:``,exitCode:0};let n=``,r=``;try{({from:n,to:r}=NL(t));let i=await KL(e,n,r),a=i.some(e=>e.classification===`needs-review`);return{stdout:ML(n,r,i,[]),stderr:``,exitCode:+!!a}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:ML(n,r,[],[t]),stderr:``,exitCode:1}}})}const YL=`usage: uptime [-p|--pretty] [-s|--since]`,XL=`${YL}
2905
2886
 
2906
2887
  Print how long this SLICC has been running. The clock starts when the browser
2907
2888
  window was last loaded — a reload is a reboot.
@@ -2917,7 +2898,7 @@ The load average is the average number of live kernel processes over the last
2917
2898
  processes are retained in bounded numbers, so a long burst of short commands
2918
2899
  can under-report the older windows. The user count is always 1: a SLICC
2919
2900
  runtime has one user identity (see \`id\`).
2920
- `,QL=[1,5,15],$L=6e4,eR=60*$L,tR=24*eR;function nR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function rR(e,t,n,r){let i=Math.min(n,Math.max(1,t-r)),a=t-i,o=0;for(let n of e){let e=Math.min(n.finishedAt??t,t);o+=Math.max(0,e-Math.max(n.startedAt,a))}return o/i}function iR(e){let t=Math.max(0,e),n=Math.floor(t/tR),r=Math.floor(t%tR/eR),i=Math.floor(t%eR/$L),a=r>0?`${r}:${String(i).padStart(2,`0`)}`:`${i} min`;return n===0?a:`${n} ${n===1?`day`:`days`}, ${a}`}function aR(e){let t=Math.max(0,e),n=[],r=(e,t)=>{e>0&&n.push(`${e} ${t}${e===1?``:`s`}`)};return r(Math.floor(t/tR),`day`),r(Math.floor(t%tR/eR),`hour`),r(Math.floor(t%eR/$L),`minute`),n.length===0?`up ${Math.floor(t/1e3)} seconds`:`up ${n.join(`, `)}`}function oR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function sR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function cR(e,t,n){let r=QL.map(r=>rR(e,t,r*$L,n).toFixed(2));return` ${sR(t)} up ${iR(t-n)}, 1 user, load average: ${r.join(`, `)}\n`}function lR(e){let t=`default`;for(let n of e)switch(n){case`-p`:case`--pretty`:t=`pretty`;break;case`-s`:case`--since`:t=`since`;break;case`-h`:case`--help`:return`help`;case`--version`:return`version`;default:return{error:`unrecognized option '${n}'`}}return t}function uR(e={}){return C(`uptime`,async t=>{let n=lR(t);if(typeof n!=`string`)return{stdout:``,stderr:`uptime: ${n.error}\n${XL}\n`,exitCode:1};if(n===`help`)return{stdout:ZL,stderr:``,exitCode:0};if(n===`version`)return{stdout:`uptime (SLICC) ${lt().version}\n`,stderr:``,exitCode:0};let r=e.now?e.now():Date.now(),i=e.bootedAt?e.bootedAt():Pa();if(n===`since`)return dR(`${oR(i)}\n`);if(n===`pretty`)return dR(`${aR(r-i)}\n`);let a=e.processManager??nR();return dR(cR(a?a.list():[],r,i))})}function dR(e){return{stdout:e,stderr:``,exitCode:0}}const fR=/* @__PURE__ */ new Set([`--vid`,`--pid`,`--class`,`--subclass`,`--protocol`,`--serial`,`--request-type`,`--recipient`,`--request`,`--value`,`--index`,`--__resolved`]);function pR(e){return Vn(e,fR)}function Y(e,t){let n=/^0x/i.test(e)?parseInt(e,16):parseInt(e,10);if(!Number.isFinite(n)||Number.isNaN(n))throw Error(`invalid ${t}: '${e}'`);return n}function mR(e){let t={};return e.has(`--vid`)&&(t.vendorId=Y(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=Y(e.get(`--pid`),`pid`)),e.has(`--class`)&&(t.classCode=Y(e.get(`--class`),`class`)),e.has(`--subclass`)&&(t.subclassCode=Y(e.get(`--subclass`),`subclass`)),e.has(`--protocol`)&&(t.protocolCode=Y(e.get(`--protocol`),`protocol`)),e.has(`--serial`)&&(t.serialNumber=e.get(`--serial`)),Object.keys(t).length>0?[t]:[]}const hR=/* @__PURE__ */ new Set([`standard`,`class`,`vendor`]),gR=/* @__PURE__ */ new Set([`device`,`interface`,`endpoint`,`other`]);function _R(e){let t=e.get(`--request-type`)??`vendor`,n=e.get(`--recipient`)??`device`;if(!hR.has(t))throw Error(`invalid --request-type: '${t}'`);if(!gR.has(n))throw Error(`invalid --recipient: '${n}'`);return{requestType:t,recipient:n,request:Y(e.get(`--request`)??`0`,`request`),value:Y(e.get(`--value`)??`0`,`value`),index:Y(e.get(`--index`)??`0`,`index`)}}function vR(e){let t=lr(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function yR(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function bR(e){return`0x${e.toString(16).padStart(4,`0`)}`}function xR(e){let t=[e.manufacturerName,e.productName].filter(Boolean).join(` `)||`(unknown)`,n=e.serialNumber?` serial=${e.serialNumber}`:``,r=e.opened?` [open]`:``;return`${e.handle}\t${bR(e.vendorId)}:${bR(e.productId)}\t${t}${n}${r}`}function X(e){return{stdout:e,stderr:``,exitCode:0}}function Z(e){return{stdout:``,stderr:`usb: ${e}\n`,exitCode:1}}const SR=`usb - access USB devices via WebUSB
2901
+ `,ZL=[1,5,15],QL=6e4,$L=60*QL,eR=24*$L;function tR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function nR(e,t,n,r){let i=Math.min(n,Math.max(1,t-r)),a=t-i,o=0;for(let n of e){let e=Math.min(n.finishedAt??t,t);o+=Math.max(0,e-Math.max(n.startedAt,a))}return o/i}function rR(e){let t=Math.max(0,e),n=Math.floor(t/eR),r=Math.floor(t%eR/$L),i=Math.floor(t%$L/QL),a=r>0?`${r}:${String(i).padStart(2,`0`)}`:`${i} min`;return n===0?a:`${n} ${n===1?`day`:`days`}, ${a}`}function iR(e){let t=Math.max(0,e),n=[],r=(e,t)=>{e>0&&n.push(`${e} ${t}${e===1?``:`s`}`)};return r(Math.floor(t/eR),`day`),r(Math.floor(t%eR/$L),`hour`),r(Math.floor(t%$L/QL),`minute`),n.length===0?`up ${Math.floor(t/1e3)} seconds`:`up ${n.join(`, `)}`}function aR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function oR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function sR(e,t,n){let r=ZL.map(r=>nR(e,t,r*QL,n).toFixed(2));return` ${oR(t)} up ${rR(t-n)}, 1 user, load average: ${r.join(`, `)}\n`}function cR(e){let t=`default`;for(let n of e)switch(n){case`-p`:case`--pretty`:t=`pretty`;break;case`-s`:case`--since`:t=`since`;break;case`-h`:case`--help`:return`help`;case`--version`:return`version`;default:return{error:`unrecognized option '${n}'`}}return t}function lR(e={}){return C(`uptime`,async t=>{let n=cR(t);if(typeof n!=`string`)return{stdout:``,stderr:`uptime: ${n.error}\n${YL}\n`,exitCode:1};if(n===`help`)return{stdout:XL,stderr:``,exitCode:0};if(n===`version`)return{stdout:`uptime (SLICC) ${lt().version}\n`,stderr:``,exitCode:0};let r=e.now?e.now():Date.now(),i=e.bootedAt?e.bootedAt():Pa();if(n===`since`)return uR(`${aR(i)}\n`);if(n===`pretty`)return uR(`${iR(r-i)}\n`);let a=e.processManager??tR();return uR(sR(a?a.list():[],r,i))})}function uR(e){return{stdout:e,stderr:``,exitCode:0}}const dR=/* @__PURE__ */ new Set([`--vid`,`--pid`,`--class`,`--subclass`,`--protocol`,`--serial`,`--request-type`,`--recipient`,`--request`,`--value`,`--index`,`--__resolved`]);function fR(e){return Vn(e,dR)}function Y(e,t){let n=/^0x/i.test(e)?parseInt(e,16):parseInt(e,10);if(!Number.isFinite(n)||Number.isNaN(n))throw Error(`invalid ${t}: '${e}'`);return n}function pR(e){let t={};return e.has(`--vid`)&&(t.vendorId=Y(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=Y(e.get(`--pid`),`pid`)),e.has(`--class`)&&(t.classCode=Y(e.get(`--class`),`class`)),e.has(`--subclass`)&&(t.subclassCode=Y(e.get(`--subclass`),`subclass`)),e.has(`--protocol`)&&(t.protocolCode=Y(e.get(`--protocol`),`protocol`)),e.has(`--serial`)&&(t.serialNumber=e.get(`--serial`)),Object.keys(t).length>0?[t]:[]}const mR=/* @__PURE__ */ new Set([`standard`,`class`,`vendor`]),hR=/* @__PURE__ */ new Set([`device`,`interface`,`endpoint`,`other`]);function gR(e){let t=e.get(`--request-type`)??`vendor`,n=e.get(`--recipient`)??`device`;if(!mR.has(t))throw Error(`invalid --request-type: '${t}'`);if(!hR.has(n))throw Error(`invalid --recipient: '${n}'`);return{requestType:t,recipient:n,request:Y(e.get(`--request`)??`0`,`request`),value:Y(e.get(`--value`)??`0`,`value`),index:Y(e.get(`--index`)??`0`,`index`)}}function _R(e){let t=lr(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function vR(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function yR(e){return`0x${e.toString(16).padStart(4,`0`)}`}function bR(e){let t=[e.manufacturerName,e.productName].filter(Boolean).join(` `)||`(unknown)`,n=e.serialNumber?` serial=${e.serialNumber}`:``,r=e.opened?` [open]`:``;return`${e.handle}\t${yR(e.vendorId)}:${yR(e.productId)}\t${t}${n}${r}`}function X(e){return{stdout:e,stderr:``,exitCode:0}}function Z(e){return{stdout:``,stderr:`usb: ${e}\n`,exitCode:1}}const xR=`usb - access USB devices via WebUSB
2921
2902
 
2922
2903
  Usage: usb <subcommand> [options]
2923
2904
 
@@ -2956,11 +2937,11 @@ Options:
2956
2937
  -h, --help
2957
2938
 
2958
2939
  Transfers are capped at ${Ai} bytes (4 MiB).
2959
- `;function CR(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return X(t)}return X(e.length?`${yR(e)}\n`:``)}async function wR(e){let t=await e.list();return t.length===0?X(`no granted USB devices
2960
- `):X(`${t.map(xR).join(`
2961
- `)}\n`)}async function TR(e,t){let n=e.get(`--__resolved`);if(n)return X(`${xR(await t.info(n))}\n`);let r=mR(e),i=Ve();if(i){let e=await Yx(`usb-device`,r,i);if(e.handle)return X(`${xR(await t.info(e.handle))}\n`);let n=e.info,a=Oi();if(!a)return Z(`request: WebUSB unavailable for device re-acquire`);let o=(await a.getDevices()).find(e=>e.vendorId===n.vendorId&&e.productId===n.productId&&(!n.serialNumber||e.serialNumber===n.serialNumber));if(!o)return Z(`request: granted device could not be re-acquired`);let s=ki().register(o);return X(`${xR(Di(s,o))}\n`)}return X(`${xR(await t.request(r))}\n`)}async function ER(e,t,n,r){let i=t[1];if(!i)return Z(`${e}: handle required`);let a=r.has(`--force`);return e===`open`?await n.open(i):e===`close`?await n.close(i,{force:a}):await n.reset(i,{force:a}),X(``)}async function DR(e,t){let[,n,r,i]=e;return!n||r===void 0||i===void 0?Z(`clear-halt: handle, direction and endpoint required`):r!==`in`&&r!==`out`?Z(`clear-halt: direction must be 'in' or 'out', got '${r}'`):(await t.clearHalt(n,r,Y(i,`endpoint`)),X(``))}async function OR(e,t){let[,n,r]=e;return!n||r===void 0?Z(`select-config: handle and value required`):(await t.selectConfig(n,Y(r,`configuration`)),X(``))}async function kR(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return Z(`${e}: handle and interface required`);let o=Y(a,`interface`);return e===`claim`?await n.claim(i,o,{wait:r.has(`--wait`)}):await n.release(i,o),X(``)}async function AR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`control-in: handle and length required`);let o=Y(a,`length`);return o>4194304?Z(`control-in length exceeds 4 MiB limit`):CR((await n.controlIn(i,_R(t),o)).bytes,r)}async function jR(e,t,n,r){let i=e[1];if(!i)return Z(`control-out: handle required`);let a=vR(t);return a.length>4194304?Z(`control-out payload exceeds 4 MiB limit`):X(`${(await r.controlOut(i,_R(n),a)).bytesWritten} bytes written\n`)}async function MR(e,t,n,r){let[,i,a,o]=e;if(!i||a===void 0||o===void 0)return Z(`transfer-in: handle, endpoint and length required`);let s=Y(o,`length`);return s>4194304?Z(`transfer-in length exceeds 4 MiB limit`):CR((await n.transferIn(i,Y(a,`endpoint`),s)).bytes,r)}async function NR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`transfer-out: handle and endpoint required`);let o=vR(t);return o.length>4194304?Z(`transfer-out payload exceeds 4 MiB limit`):X(`${(await r.transferOut(i,Y(a,`endpoint`),o)).bytesWritten} bytes written\n`)}async function PR(e,t,n){let{positionals:r,flags:i,bools:a}=pR(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return wR(n);case`request`:return TR(i,n);case`open`:case`close`:case`reset`:return ER(o,r,n,a);case`clear-halt`:return DR(r,n);case`select-config`:return OR(r,n);case`claim`:case`release`:return kR(o,r,n,a);case`control-in`:return AR(r,i,n,s);case`control-out`:return jR(r,t,i,n);case`transfer-in`:return MR(r,i,n,s);case`transfer-out`:return NR(r,t,i,n);default:return Z(`unknown subcommand '${o??``}'. Try 'usb --help'.`)}}function FR(){return C(`usb`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return X(SR);let n=mi(be(),b());if(!n)return Z(`WebUSB is unavailable in this environment`);try{return await PR(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No device selected/i.test(t)?Z(`user cancelled or no device selected`):Z(t)}})}const IR=`/workspace/.v86`,LR=`v86 - run an x86 virtual machine (v86 wasm engine)
2940
+ `;function SR(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return X(t)}return X(e.length?`${vR(e)}\n`:``)}async function CR(e){let t=await e.list();return t.length===0?X(`no granted USB devices
2941
+ `):X(`${t.map(bR).join(`
2942
+ `)}\n`)}async function wR(e,t){let n=e.get(`--__resolved`);if(n)return X(`${bR(await t.info(n))}\n`);let r=pR(e),i=Ve();if(i){let e=await Yx(`usb-device`,r,i);if(e.handle)return X(`${bR(await t.info(e.handle))}\n`);let n=e.info,a=Oi();if(!a)return Z(`request: WebUSB unavailable for device re-acquire`);let o=(await a.getDevices()).find(e=>e.vendorId===n.vendorId&&e.productId===n.productId&&(!n.serialNumber||e.serialNumber===n.serialNumber));if(!o)return Z(`request: granted device could not be re-acquired`);let s=ki().register(o);return X(`${bR(Di(s,o))}\n`)}return X(`${bR(await t.request(r))}\n`)}async function TR(e,t,n,r){let i=t[1];if(!i)return Z(`${e}: handle required`);let a=r.has(`--force`);return e===`open`?await n.open(i):e===`close`?await n.close(i,{force:a}):await n.reset(i,{force:a}),X(``)}async function ER(e,t){let[,n,r,i]=e;return!n||r===void 0||i===void 0?Z(`clear-halt: handle, direction and endpoint required`):r!==`in`&&r!==`out`?Z(`clear-halt: direction must be 'in' or 'out', got '${r}'`):(await t.clearHalt(n,r,Y(i,`endpoint`)),X(``))}async function DR(e,t){let[,n,r]=e;return!n||r===void 0?Z(`select-config: handle and value required`):(await t.selectConfig(n,Y(r,`configuration`)),X(``))}async function OR(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return Z(`${e}: handle and interface required`);let o=Y(a,`interface`);return e===`claim`?await n.claim(i,o,{wait:r.has(`--wait`)}):await n.release(i,o),X(``)}async function kR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`control-in: handle and length required`);let o=Y(a,`length`);return o>4194304?Z(`control-in length exceeds 4 MiB limit`):SR((await n.controlIn(i,gR(t),o)).bytes,r)}async function AR(e,t,n,r){let i=e[1];if(!i)return Z(`control-out: handle required`);let a=_R(t);return a.length>4194304?Z(`control-out payload exceeds 4 MiB limit`):X(`${(await r.controlOut(i,gR(n),a)).bytesWritten} bytes written\n`)}async function jR(e,t,n,r){let[,i,a,o]=e;if(!i||a===void 0||o===void 0)return Z(`transfer-in: handle, endpoint and length required`);let s=Y(o,`length`);return s>4194304?Z(`transfer-in length exceeds 4 MiB limit`):SR((await n.transferIn(i,Y(a,`endpoint`),s)).bytes,r)}async function MR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`transfer-out: handle and endpoint required`);let o=_R(t);return o.length>4194304?Z(`transfer-out payload exceeds 4 MiB limit`):X(`${(await r.transferOut(i,Y(a,`endpoint`),o)).bytesWritten} bytes written\n`)}async function NR(e,t,n){let{positionals:r,flags:i,bools:a}=fR(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return CR(n);case`request`:return wR(i,n);case`open`:case`close`:case`reset`:return TR(o,r,n,a);case`clear-halt`:return ER(r,n);case`select-config`:return DR(r,n);case`claim`:case`release`:return OR(o,r,n,a);case`control-in`:return kR(r,i,n,s);case`control-out`:return AR(r,t,i,n);case`transfer-in`:return jR(r,i,n,s);case`transfer-out`:return MR(r,t,i,n);default:return Z(`unknown subcommand '${o??``}'. Try 'usb --help'.`)}}function PR(){return C(`usb`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return X(xR);let n=mi(be(),b());if(!n)return Z(`WebUSB is unavailable in this environment`);try{return await NR(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No device selected/i.test(t)?Z(`user cancelled or no device selected`):Z(t)}})}const FR=`/workspace/.v86`,IR=`v86 - run an x86 virtual machine (v86 wasm engine)
2962
2943
 
2963
- Requires: ${F} v86@${zO}
2944
+ Requires: ${F} v86@${RO}
2964
2945
 
2965
2946
  Usage:
2966
2947
  v86 start [boot options] Boot a VM in the background (prints pid)
@@ -2994,7 +2975,7 @@ Boot options (QEMU-flavored):
2994
2975
  proxy — no gateway needed, https upstream via the proxy
2995
2976
  -vga <MiB> SVGA/VBE video memory (default 8, max 64) —
2996
2977
  raise for high-res VESA modes (1080p32 needs ~9)
2997
- -bios <path> -vgabios <path> BIOS blobs (default ${IR}/{seabios,vgabios}.bin)
2978
+ -bios <path> -vgabios <path> BIOS blobs (default ${FR}/{seabios,vgabios}.bin)
2998
2979
  -nographic Serial-only guest (skip VGA)
2999
2980
 
3000
2981
  Notes:
@@ -3002,19 +2983,19 @@ Notes:
3002
2983
  (Alpine, FreeDOS, Buildroot Linux) work best.
3003
2984
  - The copy.sh Arch Linux image boots via -state + -fs9p; see the v86 skill.
3004
2985
  - BIOS blobs are not bundled; download once:
3005
- mkdir -p ${IR}
3006
- curl -o ${IR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3007
- curl -o ${IR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3008
- `,RR=`v86: BIOS images not found. Download them once:
3009
- mkdir -p ${IR}
3010
- curl -o ${IR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3011
- curl -o ${IR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3012
- or pass -bios / -vgabios with explicit VFS paths.`,zR={"-n":BR,"-name":BR,"--name":BR,"-m":(e,t)=>{let n=Number.parseInt(t,10);return!Number.isFinite(n)||n<=0?`-m requires a positive MiB value`:n>512?`-m ${n} exceeds the 512 MiB cap`:(e.memoryMib=n,null)},"-vga":(e,t)=>{let n=Number.parseInt(t,10);return!Number.isFinite(n)||n<=0?`-vga requires a positive MiB value`:n>64?`-vga ${n} exceeds the 64 MiB cap`:(e.vgaMemoryMib=n,null)},"-cdrom":(e,t)=>VR(e,`cdrom`,t),"-hda":(e,t)=>VR(e,`hda`,t),"-fda":(e,t)=>VR(e,`fda`,t),"-kernel":(e,t)=>VR(e,`kernel`,t),"-initrd":(e,t)=>VR(e,`initrd`,t),"-append":(e,t)=>VR(e,`append`,t),"-bios":(e,t)=>VR(e,`bios`,t),"-vgabios":(e,t)=>VR(e,`vgabios`,t),"-state":(e,t)=>VR(e,`state`,t),"-fs9p":(e,t)=>/^https?:\/\//u.test(t)?(e.fs9p=t,null):`-fs9p requires an http(s) base URL`,"-net":(e,t)=>{let[n,...r]=t.split(`,`);if(n!==`ne2k`&&n!==`virtio`)return`-net requires ne2k or virtio`;for(let t of r){if(t!==`relay=fetch`)return`-net: unknown option '${t}' (only relay=fetch)`;e.netRelay=`fetch`}return e.net=n,null},"-boot":(e,t)=>t!==`a`&&t!==`c`&&t!==`d`?`-boot requires a, c, or d`:(e.boot=t,null)};function BR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function VR(e,t,n){return e[t]=n,null}const HR=[...Object.keys(zR),`--fps`,`--tail`,`--send`,`--to`];function UR(e){let t={name:`vm0`,memoryMib:128,vgaMemoryMib:8,nographic:!1};for(let n=0;n<e.length;n++){let r=e[n];if(r===`-nographic`){t.nographic=!0;continue}let i=Object.hasOwn(zR,r)?zR[r]:void 0;if(!i)return{ok:!1,error:`unknown option '${r}'`};let a=n+1<e.length?e[n+1]:null;if(a===null)return{ok:!1,error:`${r} requires a value`};let o=i(t,a);if(o)return{ok:!1,error:o};n++}return!t.cdrom&&!t.hda&&!t.fda&&!t.kernel&&!t.state?{ok:!1,error:`no bootable media (-cdrom, -hda, -fda, -kernel, or -state required)`}:{ok:!0,parsed:t}}function WR(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}function Q(e){return{stdout:``,stderr:`v86: ${e}\n`,exitCode:1}}function $(e=``){return{stdout:e,stderr:``,exitCode:0}}function GR(e){let t=[],n=`vm0`;for(let r=0;r<e.length;r++){if(e[r]===`-n`||e[r]===`-name`||e[r]===`--name`){let t=e[r+1];if(t){n=t,r++;continue}}t.push(e[r])}return{name:n,rest:t}}function KR(e){return Oa(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function qR(e){return`exitCode`in e}async function JR(e,t,n){let r=e.fs.resolvePath(e.cwd,t);if(!await e.fs.exists(r))return Q(`${n}: no such file: ${t}`);let i=await e.fs.readFileBuffer(r),a=new ArrayBuffer(i.byteLength);return new Uint8Array(a).set(i),{buffer:a}}const YR={a:801,c:306,d:531};function XR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function ZR(e={}){return C(`v86`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`||t[0]===`help`)return $(LR);if(t[0]===`--version`)return QR(n,e);let r=t[0];if(T(t.slice(1),{valueFlags:HR}))return $(gt(`v86`,r,LR,{prefix:`v86`}));let i=ht(t.slice(1));try{switch(r){case`start`:return await iz(i,n,e);case`ls`:return oz();case`type`:return await uz(i,n);case`key`:return await dz(i,n);case`mouse`:return await pz(i,n);case`screenshot`:return await mz(i,n);case`text`:return await hz(i,n);case`serve`:return gz(i);case`serial`:return _z(i);case`state`:return await vz(i,n);case`stop`:return await yz(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function QR(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(WR(e))).version} (qemu-flavored CLI)\n`);let n=await GO(WR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(BO)}async function $R(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await JR(t,e.bios??`${IR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(RR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await JR(t,e.vgabios??`${IR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(RR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function ez(e,t,n){let r=await $R(e,t,n);if(r)return r;for(let[r,i]of[[`cdrom`,`cdrom`],[`hda`,`hda`],[`fda`,`fda`],[`kernel`,`bzimage`],[`initrd`,`initrd`]]){let a=e[r];if(!a)continue;let o=await JR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=YR[e.boot]),e.state){let r=await JR(t,e.state,`-state`);if(`exitCode`in r)return r;n.initial_state=r}return e.fs9p&&(n.filesystem={baseurl:e.fs9p}),e.net&&(n.net_device=e.netRelay===`fetch`?{type:e.net,relay_url:`fetch`}:{type:e.net}),null}const tz=6e4;function nz(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(/* @__PURE__ */ Error(`engine init timed out after ${tz/1e3}s`)),tz);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function rz(e,t){let n=e.network_adapter;if(!n||typeof n.fetch!=`function`)return Q(`relay=fetch: engine exposed no fetch-relay network adapter`);let r=t.proxiedFetch??g();return n.fetch=async(e,t)=>{let n=e.replace(/^http:\/\/(?!localhost[:/]|127\.0\.0\.1[:/])/u,`https://`),i={};t?.headers?.forEach((e,t)=>{i[t]=e});let a;if(t?.body){let e=``;for(let n of t.body)e+=String.fromCharCode(n);a=e}let o=await r(n,{method:t?.method,headers:i,body:a}),s=o.body,c=s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength);return{status:o.status,statusText:o.statusText,headers:new Headers(o.headers),redirected:!1,url:o.url,arrayBuffer:async()=>c}},null}async function iz(e,t,n){let r=UR(e);if(!r.ok)return Q(r.error);let i=r.parsed;if(Oa(i.name))return Q(`VM '${i.name}' already running — stop it first or pick another -n name`);let a=WR(t),o=n.loadEngine?await n.loadEngine(a):await HO({ipk:a}),s={wasm_fn:qO(o.wasmModule),memory_size:i.memoryMib*1024*1024,vga_memory_size:i.vgaMemoryMib*1024*1024,autostart:!1,disable_speaker:!0,fastboot:!0},c=await ez(i,t,s);if(c)return c;let l=new o.V86(s),u={name:i.name,emulator:l,engineVersion:o.version,pid:null,startedAt:Date.now(),bootArgv:[`v86`,`start`,...e],serial:{buffer:``},screen:{mode:`text`,width:0,height:0,frame:null},serve:null},d=n.processManager??XR();if(d){let e=d.spawn({kind:`net`,argv:u.bootArgv,cwd:t.cwd,owner:{kind:`system`}});u.pid=e.pid,e.abort.signal.addEventListener(`abort`,()=>{az(u,d)})}Da(u);try{if(await nz(l),i.netRelay===`fetch`){let e=rz(l,n);if(e)return await az(u,d),e}Ea(u),await l.run()}catch(e){return await az(u,d),Q(`boot failed: ${e instanceof Error?e.message:String(e)}`)}u.onScreenChange=()=>{import(`./registry-Bxb0uXZH.js`).then(({getComputerRegistry:e})=>{e()?.refresh(`v86:${u.name}`)})},import(`./v86-hpXjGyeJ.js`).then(({registerV86Computer:e})=>e(u)).catch(()=>{});let f=u.pid===null?``:` (pid ${u.pid})`;return $(`VM '${i.name}' booting in the background${f}.\nDrive it with: v86 text -n ${i.name} | v86 screenshot -n ${i.name} | v86 type -n ${i.name} "..."\n`)}async function az(e,t){ka(e),Ta(e.name),import(`./v86-hpXjGyeJ.js`).then(({unregisterV86Computer:t})=>t(e.name)).catch(()=>{});try{e.emulator.is_running()&&await e.emulator.stop()}catch{}try{await e.emulator.destroy()}catch{}t&&e.pid!==null&&t.exit(e.pid,null)}function oz(){let e=wa();if(e.length===0)return $(`no VMs running
2986
+ mkdir -p ${FR}
2987
+ curl -o ${FR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
2988
+ curl -o ${FR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
2989
+ `,LR=`v86: BIOS images not found. Download them once:
2990
+ mkdir -p ${FR}
2991
+ curl -o ${FR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
2992
+ curl -o ${FR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
2993
+ or pass -bios / -vgabios with explicit VFS paths.`,RR={"-n":zR,"-name":zR,"--name":zR,"-m":(e,t)=>{let n=Number.parseInt(t,10);return!Number.isFinite(n)||n<=0?`-m requires a positive MiB value`:n>512?`-m ${n} exceeds the 512 MiB cap`:(e.memoryMib=n,null)},"-vga":(e,t)=>{let n=Number.parseInt(t,10);return!Number.isFinite(n)||n<=0?`-vga requires a positive MiB value`:n>64?`-vga ${n} exceeds the 64 MiB cap`:(e.vgaMemoryMib=n,null)},"-cdrom":(e,t)=>BR(e,`cdrom`,t),"-hda":(e,t)=>BR(e,`hda`,t),"-fda":(e,t)=>BR(e,`fda`,t),"-kernel":(e,t)=>BR(e,`kernel`,t),"-initrd":(e,t)=>BR(e,`initrd`,t),"-append":(e,t)=>BR(e,`append`,t),"-bios":(e,t)=>BR(e,`bios`,t),"-vgabios":(e,t)=>BR(e,`vgabios`,t),"-state":(e,t)=>BR(e,`state`,t),"-fs9p":(e,t)=>/^https?:\/\//u.test(t)?(e.fs9p=t,null):`-fs9p requires an http(s) base URL`,"-net":(e,t)=>{let[n,...r]=t.split(`,`);if(n!==`ne2k`&&n!==`virtio`)return`-net requires ne2k or virtio`;for(let t of r){if(t!==`relay=fetch`)return`-net: unknown option '${t}' (only relay=fetch)`;e.netRelay=`fetch`}return e.net=n,null},"-boot":(e,t)=>t!==`a`&&t!==`c`&&t!==`d`?`-boot requires a, c, or d`:(e.boot=t,null)};function zR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function BR(e,t,n){return e[t]=n,null}const VR=[...Object.keys(RR),`--fps`,`--tail`,`--send`,`--to`];function HR(e){let t={name:`vm0`,memoryMib:128,vgaMemoryMib:8,nographic:!1};for(let n=0;n<e.length;n++){let r=e[n];if(r===`-nographic`){t.nographic=!0;continue}let i=Object.hasOwn(RR,r)?RR[r]:void 0;if(!i)return{ok:!1,error:`unknown option '${r}'`};let a=n+1<e.length?e[n+1]:null;if(a===null)return{ok:!1,error:`${r} requires a value`};let o=i(t,a);if(o)return{ok:!1,error:o};n++}return!t.cdrom&&!t.hda&&!t.fda&&!t.kernel&&!t.state?{ok:!1,error:`no bootable media (-cdrom, -hda, -fda, -kernel, or -state required)`}:{ok:!0,parsed:t}}function UR(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}function Q(e){return{stdout:``,stderr:`v86: ${e}\n`,exitCode:1}}function $(e=``){return{stdout:e,stderr:``,exitCode:0}}function WR(e){let t=[],n=`vm0`;for(let r=0;r<e.length;r++){if(e[r]===`-n`||e[r]===`-name`||e[r]===`--name`){let t=e[r+1];if(t){n=t,r++;continue}}t.push(e[r])}return{name:n,rest:t}}function GR(e){return Oa(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function KR(e){return`exitCode`in e}async function qR(e,t,n){let r=e.fs.resolvePath(e.cwd,t);if(!await e.fs.exists(r))return Q(`${n}: no such file: ${t}`);let i=await e.fs.readFileBuffer(r),a=new ArrayBuffer(i.byteLength);return new Uint8Array(a).set(i),{buffer:a}}const JR={a:801,c:306,d:531};function YR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function XR(e={}){return C(`v86`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`||t[0]===`help`)return $(IR);if(t[0]===`--version`)return ZR(n,e);let r=t[0];if(T(t.slice(1),{valueFlags:VR}))return $(gt(`v86`,r,IR,{prefix:`v86`}));let i=ht(t.slice(1));try{switch(r){case`start`:return await rz(i,n,e);case`ls`:return az();case`type`:return await lz(i,n);case`key`:return await uz(i,n);case`mouse`:return await fz(i,n);case`screenshot`:return await pz(i,n);case`text`:return await mz(i,n);case`serve`:return hz(i);case`serial`:return gz(i);case`state`:return await _z(i,n);case`stop`:return await vz(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function ZR(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(UR(e))).version} (qemu-flavored CLI)\n`);let n=await WO(UR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(zO)}async function QR(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await qR(t,e.bios??`${FR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(LR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await qR(t,e.vgabios??`${FR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(LR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function $R(e,t,n){let r=await QR(e,t,n);if(r)return r;for(let[r,i]of[[`cdrom`,`cdrom`],[`hda`,`hda`],[`fda`,`fda`],[`kernel`,`bzimage`],[`initrd`,`initrd`]]){let a=e[r];if(!a)continue;let o=await qR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=JR[e.boot]),e.state){let r=await qR(t,e.state,`-state`);if(`exitCode`in r)return r;n.initial_state=r}return e.fs9p&&(n.filesystem={baseurl:e.fs9p}),e.net&&(n.net_device=e.netRelay===`fetch`?{type:e.net,relay_url:`fetch`}:{type:e.net}),null}const ez=6e4;function tz(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(/* @__PURE__ */ Error(`engine init timed out after ${ez/1e3}s`)),ez);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function nz(e,t){let n=e.network_adapter;if(!n||typeof n.fetch!=`function`)return Q(`relay=fetch: engine exposed no fetch-relay network adapter`);let r=t.proxiedFetch??g();return n.fetch=async(e,t)=>{let n=e.replace(/^http:\/\/(?!localhost[:/]|127\.0\.0\.1[:/])/u,`https://`),i={};t?.headers?.forEach((e,t)=>{i[t]=e});let a;if(t?.body){let e=``;for(let n of t.body)e+=String.fromCharCode(n);a=e}let o=await r(n,{method:t?.method,headers:i,body:a}),s=o.body,c=s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength);return{status:o.status,statusText:o.statusText,headers:new Headers(o.headers),redirected:!1,url:o.url,arrayBuffer:async()=>c}},null}async function rz(e,t,n){let r=HR(e);if(!r.ok)return Q(r.error);let i=r.parsed;if(Oa(i.name))return Q(`VM '${i.name}' already running — stop it first or pick another -n name`);let a=UR(t),o=n.loadEngine?await n.loadEngine(a):await VO({ipk:a}),s={wasm_fn:KO(o.wasmModule),memory_size:i.memoryMib*1024*1024,vga_memory_size:i.vgaMemoryMib*1024*1024,autostart:!1,disable_speaker:!0,fastboot:!0},c=await $R(i,t,s);if(c)return c;let l=new o.V86(s),u={name:i.name,emulator:l,engineVersion:o.version,pid:null,startedAt:Date.now(),bootArgv:[`v86`,`start`,...e],serial:{buffer:``},screen:{mode:`text`,width:0,height:0,frame:null},serve:null},d=n.processManager??YR();if(d){let e=d.spawn({kind:`net`,argv:u.bootArgv,cwd:t.cwd,owner:{kind:`system`}});u.pid=e.pid,e.abort.signal.addEventListener(`abort`,()=>{iz(u,d)})}Da(u);try{if(await tz(l),i.netRelay===`fetch`){let e=nz(l,n);if(e)return await iz(u,d),e}Ea(u),await l.run()}catch(e){return await iz(u,d),Q(`boot failed: ${e instanceof Error?e.message:String(e)}`)}u.onScreenChange=()=>{import(`./registry-Bxb0uXZH.js`).then(({getComputerRegistry:e})=>{e()?.refresh(`v86:${u.name}`)})},import(`./v86-hpXjGyeJ.js`).then(({registerV86Computer:e})=>e(u)).catch(()=>{});let f=u.pid===null?``:` (pid ${u.pid})`;return $(`VM '${i.name}' booting in the background${f}.\nDrive it with: v86 text -n ${i.name} | v86 screenshot -n ${i.name} | v86 type -n ${i.name} "..."\n`)}async function iz(e,t){ka(e),Ta(e.name),import(`./v86-hpXjGyeJ.js`).then(({unregisterV86Computer:t})=>t(e.name)).catch(()=>{});try{e.emulator.is_running()&&await e.emulator.stop()}catch{}try{await e.emulator.destroy()}catch{}t&&e.pid!==null&&t.exit(e.pid,null)}function az(){let e=wa();if(e.length===0)return $(`no VMs running
3013
2994
  `);let t=[`NAME PID STATE UP BOOT`];for(let n of e){let e=Math.round((Date.now()-n.startedAt)/1e3),r=e>=60?`${Math.floor(e/60)}m${e%60}s`:`${e}s`;t.push(`${n.name.padEnd(10)} ${String(n.pid??`-`).padEnd(6)} ${(n.emulator.is_running()?`running`:`stopped`).padEnd(9)} ${r.padEnd(9)} `+n.bootArgv.slice(2).join(` `))}return $(`${t.join(`
3014
- `)}\n`)}function sz(e,t){return`prefer: computer ${e} -c ${t}\n`}async function cz(e,t,n,r){let i=KR(t);if(qR(i))return i;let[{runComputer:a},{getComputerRegistry:o,installComputerRegistry:s},c]=await Promise.all([import(`./run-BiN6qTlm.js`).then(e=>e.t),import(`./registry-Bxb0uXZH.js`),import(`./v86-hpXjGyeJ.js`)]),l=c.v86ComputerId(t),u=o()??s(null);return u.get(l)||c.registerV86Computer(i,u),lz(await a([`-c`,l,...n],e,{registry:u}),r,l)}function lz(e,t,n){let r=sz(t,n);return e.exitCode===0?$(`${e.stdout}${r}`):e.stderr.includes(`screenshot failed after input`)?$(`${e.stderr}${r}`):{stdout:e.stdout,stderr:e.stderr.replace(/^computer: /u,`v86: `),exitCode:e.exitCode}}async function uz(e,t){let{name:n,rest:r}=GR(e);if(r.length===0){let e=KR(n);return qR(e)?e:Q(`type: no text supplied`)}return cz(t,n,[`type`,`--`,...r],`type`)}async function dz(e,t){let{name:n,rest:r}=GR(e);if(r.length===0){let e=KR(n);return qR(e)?e:Q(`key: no chord supplied`)}return cz(t,n,[`key`,...r],`key`)}const fz=[`left`,`middle`,`right`];async function pz(e,t){let{name:n,rest:r}=GR(e),i=KR(n);if(qR(i))return i;let a=r.indexOf(`--to`);if(a!==-1){let e=r[a+1],i=e?/^(\d+),(\d+)$/u.exec(e):null;return i?cz(t,n,[`--native`,`mousemove`,i[1],i[2]],`mousemove`):Q(`mouse: --to requires <x>,<y>`)}let o=r[0];if(o===`move`){let e=r[1],i=r[2];return e===void 0||i===void 0||!Number.isFinite(Number(e))||!Number.isFinite(Number(i))?Q(`mouse: move requires <dx> <dy>`):cz(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!fz.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),cz(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function mz(e,t){let{name:n,rest:r}=GR(e);return cz(t,n,[`screenshot`,...r],`screenshot`)}async function hz(e,t){let{name:n}=GR(e);return cz(t,n,[`text`],`text`)}function gz(e){let{name:t}=GR(e);return $(`v86 serve is retired.\nUse: computer watch -c v86:${t}\nLive frames go to the overlay, lightbox, and bash rows.\n`)}function _z(e){let{name:t,rest:n}=GR(e),r=KR(t);if(qR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
2995
+ `)}\n`)}function oz(e,t){return`prefer: computer ${e} -c ${t}\n`}async function sz(e,t,n,r){let i=GR(t);if(KR(i))return i;let[{runComputer:a},{getComputerRegistry:o,installComputerRegistry:s},c]=await Promise.all([import(`./run-ZJTWBDxE.js`).then(e=>e.t),import(`./registry-Bxb0uXZH.js`),import(`./v86-hpXjGyeJ.js`)]),l=c.v86ComputerId(t),u=o()??s(null);return u.get(l)||c.registerV86Computer(i,u),cz(await a([`-c`,l,...n],e,{registry:u}),r,l)}function cz(e,t,n){let r=oz(t,n);return e.exitCode===0?$(`${e.stdout}${r}`):e.stderr.includes(`screenshot failed after input`)?$(`${e.stderr}${r}`):{stdout:e.stdout,stderr:e.stderr.replace(/^computer: /u,`v86: `),exitCode:e.exitCode}}async function lz(e,t){let{name:n,rest:r}=WR(e);if(r.length===0){let e=GR(n);return KR(e)?e:Q(`type: no text supplied`)}return sz(t,n,[`type`,`--`,...r],`type`)}async function uz(e,t){let{name:n,rest:r}=WR(e);if(r.length===0){let e=GR(n);return KR(e)?e:Q(`key: no chord supplied`)}return sz(t,n,[`key`,...r],`key`)}const dz=[`left`,`middle`,`right`];async function fz(e,t){let{name:n,rest:r}=WR(e),i=GR(n);if(KR(i))return i;let a=r.indexOf(`--to`);if(a!==-1){let e=r[a+1],i=e?/^(\d+),(\d+)$/u.exec(e):null;return i?sz(t,n,[`--native`,`mousemove`,i[1],i[2]],`mousemove`):Q(`mouse: --to requires <x>,<y>`)}let o=r[0];if(o===`move`){let e=r[1],i=r[2];return e===void 0||i===void 0||!Number.isFinite(Number(e))||!Number.isFinite(Number(i))?Q(`mouse: move requires <dx> <dy>`):sz(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!dz.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),sz(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function pz(e,t){let{name:n,rest:r}=WR(e);return sz(t,n,[`screenshot`,...r],`screenshot`)}async function mz(e,t){let{name:n}=WR(e);return sz(t,n,[`text`],`text`)}function hz(e){let{name:t}=WR(e);return $(`v86 serve is retired.\nUse: computer watch -c v86:${t}\nLive frames go to the overlay, lightbox, and bash rows.\n`)}function gz(e){let{name:t,rest:n}=WR(e),r=GR(t);if(KR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
3015
2996
  `);return e?(r.emulator.serial0_send(e),$()):Q(`serial: --send requires text`)}let a=n.indexOf(`--tail`);if(a!==-1){let e=Number.parseInt(n[a+1]??`25`,10);return $(`${r.serial.buffer.split(`
3016
2997
  `).slice(-Math.max(1,e)).join(`
3017
- `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function vz(e,t){let{name:n,rest:r}=GR(e),i=KR(n);if(qR(i))return i;let[a,o]=r;if(a!==`save`&&a!==`load`||!o)return Q(`state: expected save|load <file>`);let s=t.fs.resolvePath(t.cwd,o);if(a===`save`){let e=await i.emulator.save_state();return await t.fs.writeFile(s,new Uint8Array(e)),$(`${s} (${e.byteLength} bytes)\n`)}if(!await t.fs.exists(s))return Q(`state: no such file: ${o}`);let c=await t.fs.readFileBuffer(s),l=new ArrayBuffer(c.byteLength);return new Uint8Array(l).set(c),await i.emulator.restore_state(l),$()}async function yz(e,t){let{name:n,rest:r}=GR(e),i=KR(n);if(qR(i))return i;let a=t.processManager??XR();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await az(i,a),$(`VM '${n}' stopped\n`))}function bz(e={}){return C(`wasm`,async(t,n)=>{let{runWasmCommand:r}=await import(`./run-Ccd-Oktx.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}const xz=[`--name`,`--filter`,`--scoop`],Sz={state:`inactive`,session:null};function Cz(){return{stdout:`usage: webhook <command> [options]
2998
+ `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function _z(e,t){let{name:n,rest:r}=WR(e),i=GR(n);if(KR(i))return i;let[a,o]=r;if(a!==`save`&&a!==`load`||!o)return Q(`state: expected save|load <file>`);let s=t.fs.resolvePath(t.cwd,o);if(a===`save`){let e=await i.emulator.save_state();return await t.fs.writeFile(s,new Uint8Array(e)),$(`${s} (${e.byteLength} bytes)\n`)}if(!await t.fs.exists(s))return Q(`state: no such file: ${o}`);let c=await t.fs.readFileBuffer(s),l=new ArrayBuffer(c.byteLength);return new Uint8Array(l).set(c),await i.emulator.restore_state(l),$()}async function vz(e,t){let{name:n,rest:r}=WR(e),i=GR(n);if(KR(i))return i;let a=t.processManager??YR();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await iz(i,a),$(`VM '${n}' stopped\n`))}function yz(e={}){return C(`wasm`,async(t,n)=>{let{runWasmCommand:r}=await import(`./run-Ccd-Oktx.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}const bz=[`--name`,`--filter`,`--scoop`],xz={state:`inactive`,session:null};function Sz(){return{stdout:`usage: webhook <command> [options]
3018
2999
 
3019
3000
  Commands:
3020
3001
  create [--scoop <name>] [--name <name>] [--filter <code>] Create a new webhook endpoint
@@ -3034,21 +3015,21 @@ Examples:
3034
3015
  webhook create --scoop slack-relay --name slack --filter "(e) => ({ text: e.body.text, user: e.body.user })"
3035
3016
  webhook list
3036
3017
  webhook delete abc123
3037
- `,stderr:``,exitCode:0}}function wz(e){return e().session?.webhookUrl??null}function Tz(e,t,n){return t?Aa(t,e):n()?ja(self.location.href,e):`(URL unavailable — connect a leader tray)`}function Ez(e){return{stdout:``,stderr:`webhook ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}async function Dz(e){if(e.length!==1)return{stdout:``,stderr:`webhook rotate: takes no arguments
3018
+ `,stderr:``,exitCode:0}}function Cz(e){return e().session?.webhookUrl??null}function wz(e,t,n){return t?Aa(t,e):n()?ja(self.location.href,e):`(URL unavailable — connect a leader tray)`}function Tz(e){return{stdout:``,stderr:`webhook ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}async function Ez(e){if(e.length!==1)return{stdout:``,stderr:`webhook rotate: takes no arguments
3038
3019
  `,exitCode:1};let t=b();if(!t)return{stdout:``,stderr:`webhook rotate: no leader panel connected
3039
3020
  `,exitCode:1};try{return await t.call(`tray-webhook-rotate`,void 0),{stdout:`Rotated webhook delivery secret. Old URLs no longer work; run webhook list for replacement URLs.
3040
3021
  `,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`webhook rotate: rotation failed; reconnect the leader and retry
3041
- `,exitCode:1}}}async function Oz(e,t,n){let r=w(e.slice(1),{value:xz});if(`error`in r)return{stdout:``,stderr:`webhook create: ${r.error}\n`,exitCode:1};let i=r.values.get(`--name`)??`default`,a=r.values.get(`--filter`),o=fa(r.values.get(`--scoop`),n);if(!t.hasLocalNodeServer()&&a)return{stdout:``,stderr:`webhook create: --filter is not supported in extension mode (CSP forbids dynamic eval) — drop --filter, or use standalone CLI mode
3042
- `,exitCode:1};let s=jz(t);if(s)return s;let c=await Ey();if(!c)return Ez(`create`);let l=await Oy(c,`webhook create`,r.values.get(`--scoop`));if(l)return{stdout:``,stderr:l,exitCode:1};let u=await c.createWebhook(i,o,a),d=Mz(u.id,t),f=`Created webhook "${u.name}"\nID: ${u.id}\nURL: ${d}\n`;return u.scoop&&(f+=`Scoop: ${u.scoop}\n`),u.filter&&(f+=`Filter: ${u.filter}\n`),{stdout:f,stderr:``,exitCode:0}}async function kz(e,t){let n=w(e.slice(1),{});if(`error`in n)return{stdout:``,stderr:`webhook list: ${n.error}\n`,exitCode:1};let r=await Ey();if(!r)return Ez(`list`);let i=await r.listWebhooks();if(i.length===0)return{stdout:`No active webhooks
3043
- `,stderr:``,exitCode:0};let{trayUrlBase:a,urlResolutionError:o}=Nz(t);return{stdout:Pz(i.map(e=>({id:e.id,name:e.name,url:Tz(e.id,a,t.hasLocalNodeServer),createdAt:e.createdAt,filter:e.filter,scoop:e.scoop})),a,o,t.hasLocalNodeServer),stderr:``,exitCode:0}}async function Az(e,t){let n=w(e.slice(1),{});if(`error`in n)return{stdout:``,stderr:`webhook delete: ${n.error}\n`,exitCode:1};let r=n.positionals[0];if(n.positionals.length>1)return{stdout:``,stderr:`webhook delete: requires exactly one ID
3022
+ `,exitCode:1}}}async function Dz(e,t,n){let r=w(e.slice(1),{value:bz});if(`error`in r)return{stdout:``,stderr:`webhook create: ${r.error}\n`,exitCode:1};let i=r.values.get(`--name`)??`default`,a=r.values.get(`--filter`),o=fa(r.values.get(`--scoop`),n);if(!t.hasLocalNodeServer()&&a)return{stdout:``,stderr:`webhook create: --filter is not supported in extension mode (CSP forbids dynamic eval) — drop --filter, or use standalone CLI mode
3023
+ `,exitCode:1};let s=Az(t);if(s)return s;let c=await Ey();if(!c)return Tz(`create`);let l=await Oy(c,`webhook create`,r.values.get(`--scoop`));if(l)return{stdout:``,stderr:l,exitCode:1};let u=await c.createWebhook(i,o,a),d=jz(u.id,t),f=`Created webhook "${u.name}"\nID: ${u.id}\nURL: ${d}\n`;return u.scoop&&(f+=`Scoop: ${u.scoop}\n`),u.filter&&(f+=`Filter: ${u.filter}\n`),{stdout:f,stderr:``,exitCode:0}}async function Oz(e,t){let n=w(e.slice(1),{});if(`error`in n)return{stdout:``,stderr:`webhook list: ${n.error}\n`,exitCode:1};let r=await Ey();if(!r)return Tz(`list`);let i=await r.listWebhooks();if(i.length===0)return{stdout:`No active webhooks
3024
+ `,stderr:``,exitCode:0};let{trayUrlBase:a,urlResolutionError:o}=Mz(t);return{stdout:Nz(i.map(e=>({id:e.id,name:e.name,url:wz(e.id,a,t.hasLocalNodeServer),createdAt:e.createdAt,filter:e.filter,scoop:e.scoop})),a,o,t.hasLocalNodeServer),stderr:``,exitCode:0}}async function kz(e,t){let n=w(e.slice(1),{});if(`error`in n)return{stdout:``,stderr:`webhook delete: ${n.error}\n`,exitCode:1};let r=n.positionals[0];if(n.positionals.length>1)return{stdout:``,stderr:`webhook delete: requires exactly one ID
3044
3025
  `,exitCode:1};if(!r)return{stdout:``,stderr:`webhook delete: requires an ID
3045
- `,exitCode:1};let i=await Ey();if(!i)return Ez(`delete`);let a=b();try{if(a){if((await a.call(`tray-webhook-revoke`,{webhookId:r}))?.ok!==!0)throw Error(`revocation not acknowledged`)}else if(t.getLeaderStatus().session?.webhookUrl?.includes(`/wh/`))throw Error(`no leader panel`)}catch{return{stdout:``,stderr:`webhook delete: revocation failed; registration retained, reconnect the leader and retry
3046
- `,exitCode:1}}return await i.deleteWebhook(r)?{stdout:`Deleted webhook "${r}"\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`webhook delete: webhook "${r}" not found\n`,exitCode:1}}function jz(e){if(e.hasLocalNodeServer())return null;if(!wz(e.getLeaderStatus)){let t=e.getLeaderStatus().state;return{stdout:``,stderr:(t===`leader`?`webhook create: tray session is not connected yet — wait for the leader to attach`:`webhook create: requires extension-leader mode with a tray worker URL configured (current state: "${t}")`)+`
3047
- `,exitCode:1}}return null}function Mz(e,t){try{return Tz(e,wz(t.getLeaderStatus),t.hasLocalNodeServer)}catch(e){return`(URL resolution failed: ${e instanceof Error?e.message:String(e)})`}}function Nz(e){try{return{trayUrlBase:wz(e.getLeaderStatus),urlResolutionError:null}}catch(e){return{trayUrlBase:null,urlResolutionError:e instanceof Error?e.message:String(e)}}}function Pz(e,t,n,r){let i=`Active webhooks:
3026
+ `,exitCode:1};let i=await Ey();if(!i)return Tz(`delete`);let a=b();try{if(a){if((await a.call(`tray-webhook-revoke`,{webhookId:r}))?.ok!==!0)throw Error(`revocation not acknowledged`)}else if(t.getLeaderStatus().session?.webhookUrl?.includes(`/wh/`))throw Error(`no leader panel`)}catch{return{stdout:``,stderr:`webhook delete: revocation failed; registration retained, reconnect the leader and retry
3027
+ `,exitCode:1}}return await i.deleteWebhook(r)?{stdout:`Deleted webhook "${r}"\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`webhook delete: webhook "${r}" not found\n`,exitCode:1}}function Az(e){if(e.hasLocalNodeServer())return null;if(!Cz(e.getLeaderStatus)){let t=e.getLeaderStatus().state;return{stdout:``,stderr:(t===`leader`?`webhook create: tray session is not connected yet — wait for the leader to attach`:`webhook create: requires extension-leader mode with a tray worker URL configured (current state: "${t}")`)+`
3028
+ `,exitCode:1}}return null}function jz(e,t){try{return wz(e,Cz(t.getLeaderStatus),t.hasLocalNodeServer)}catch(e){return`(URL resolution failed: ${e instanceof Error?e.message:String(e)})`}}function Mz(e){try{return{trayUrlBase:Cz(e.getLeaderStatus),urlResolutionError:null}}catch(e){return{trayUrlBase:null,urlResolutionError:e instanceof Error?e.message:String(e)}}}function Nz(e,t,n,r){let i=`Active webhooks:
3048
3029
  `;for(let t of e)i+=` ${t.id} ${t.name.padEnd(20)} ${t.url}`,t.scoop&&(i+=` -> ${t.scoop}`),t.filter&&(i+=` [filtered]`),i+=`
3049
3030
  `;return n?i+=`\nNote: webhook URL resolution failed (${n}). Try again once the tray is connected.\n`:!r()&&!t&&(i+=`
3050
3031
  Note: webhook URLs require a leader tray. Configure one in Settings to expose POST endpoints.
3051
- `),i}function Fz(e={}){let t={hasLocalNodeServer:e.hasLocalNodeServer??(()=>!0),getLeaderStatus:e.getLeaderStatus??(()=>Sz)};return C(`webhook`,async(e,n)=>{if(e.length===0)return Cz();let r=e[0];if(T(e,{valueFlags:r===`create`?xz:void 0}))return Cz();try{switch(r){case`create`:return await Oz(e,t,n.env);case`list`:return await kz(e,t);case`delete`:return await Az(e,t);case`rotate`:return await Dz(e);default:return{stdout:``,stderr:`webhook: unknown command "${r}"\n`,exitCode:1}}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`webhook ${r??`?`}: ${t}\n`,exitCode:1}}})}function Iz(){return{text:!0,binary:!1,oneMessage:!1,noClose:!1,exitOnEof:!1,unidirectional:!1,unidirectionalReverse:!1,insecure:!1,quiet:!1,verbose:0,nullTerminated:!1,base64:!1,jsonrpc:!1,jsonrpcOmit:!1,bufferSize:65536,connTimeoutMs:3e4,customHeaders:[],showHelp:!1}}function Lz(){return{stdout:`usage: websocat [FLAGS] [OPTIONS] <ws://URL | wss://URL>
3032
+ `),i}function Pz(e={}){let t={hasLocalNodeServer:e.hasLocalNodeServer??(()=>!0),getLeaderStatus:e.getLeaderStatus??(()=>xz)};return C(`webhook`,async(e,n)=>{if(e.length===0)return Sz();let r=e[0];if(T(e,{valueFlags:r===`create`?bz:void 0}))return Sz();try{switch(r){case`create`:return await Dz(e,t,n.env);case`list`:return await Oz(e,t);case`delete`:return await kz(e,t);case`rotate`:return await Ez(e);default:return{stdout:``,stderr:`webhook: unknown command "${r}"\n`,exitCode:1}}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`webhook ${r??`?`}: ${t}\n`,exitCode:1}}})}function Fz(){return{text:!0,binary:!1,oneMessage:!1,noClose:!1,exitOnEof:!1,unidirectional:!1,unidirectionalReverse:!1,insecure:!1,quiet:!1,verbose:0,nullTerminated:!1,base64:!1,jsonrpc:!1,jsonrpcOmit:!1,bufferSize:65536,connTimeoutMs:3e4,customHeaders:[],showHelp:!1}}function Iz(){return{stdout:`usage: websocat [FLAGS] [OPTIONS] <ws://URL | wss://URL>
3052
3033
 
3053
3034
  Minimal websocat client. Sends stdin lines as WebSocket messages and prints
3054
3035
  received messages to stdout. Server mode and advanced specifiers (exec:, tcp:,
@@ -3090,14 +3071,14 @@ EXAMPLES:
3090
3071
  echo 'Page.navigate {"url":"https://example.com"}' \\
3091
3072
  | websocat -1 --jsonrpc --jsonrpc-omit-jsonrpc \\
3092
3073
  ws://127.0.0.1:9222/devtools/page/<id>
3093
- `,stderr:``,exitCode:0}}const Rz=/* @__PURE__ */ new Set([`-s`,`--server-mode`,`--oneshot`,`--socks5`,`--basic-auth`,`--basic-auth-file`,`--header-to-env`,`--server-header`,`--exec`,`--ws-c-uri`,`--restrict-uri`,`--unlink`,`--strict`,`-S`]);function zz(e,t,n,r){let i=e[t].indexOf(`=`);if(i!==-1&&e[t].startsWith(n))return{value:e[t].slice(i+1),next:t};let a=e[t+1];return a===void 0?(r.error=`websocat: missing value for ${n}\n`,null):{value:a,next:t+1}}function Bz(e,t,n,r=`positive integer`){let i=Number(t);return!Number.isFinite(i)||i<=0?(e.error=`websocat: ${n} expects ${r}\n`,null):i}function Vz(e,t){let n=Number(t);return!Number.isFinite(n)||n<1e3||n>4999?(e.error=`websocat: --close-status-code expects 1000..4999, got '${t}'\n`,null):n}function Hz(e,t){let n={"-t":()=>{e.text=!0,e.binary=!1},"--text":()=>{e.text=!0,e.binary=!1},"-b":()=>{e.binary=!0,e.text=!1},"--binary":()=>{e.binary=!0,e.text=!1},"-1n":()=>{e.oneMessage=!0,e.noClose=!0},"-n1":()=>{e.oneMessage=!0,e.noClose=!0},"-1":()=>{e.oneMessage=!0},"--one-message":()=>{e.oneMessage=!0},"-n":()=>{e.noClose=!0},"--no-close":()=>{e.noClose=!0},"-E":()=>{e.exitOnEof=!0},"--exit-on-eof":()=>{e.exitOnEof=!0},"-u":()=>{e.unidirectional=!0},"--unidirectional":()=>{e.unidirectional=!0},"-U":()=>{e.unidirectionalReverse=!0},"--unidirectional-reverse":()=>{e.unidirectionalReverse=!0},"-k":()=>{e.insecure=!0},"--insecure":()=>{e.insecure=!0},"-q":()=>{e.quiet=!0},"-0":()=>{e.nullTerminated=!0},"--null-terminated":()=>{e.nullTerminated=!0},"--base64":()=>{e.base64=!0},"--jsonrpc":()=>{e.jsonrpc=!0},"--jsonrpc-omit-jsonrpc":()=>{e.jsonrpcOmit=!0,e.jsonrpc=!0}}[t];return n?(n(),!0):!1}function Uz(e,t){return t===`-v`?(e.verbose+=1,!0):t===`-vv`&&(e.verbose+=2,!0)}function Wz(e,t,n,r,i){let a=zz(t,n,r,e);return a?(i(a.value),{nextIndex:a.next}):{stop:!0}}function Gz(e,t,n,r,i,a,o){let s=zz(t,n,r,e);if(!s)return{stop:!0};let c=Bz(e,s.value,i,o);return c===null?{stop:!0}:(a(c),{nextIndex:s.next})}function Kz(e,t){return t.some(t=>e===t||e.startsWith(`${t}=`))}const qz=[(e,t,n,r)=>{if(!Kz(r,[`--close-status-code`]))return null;let i=zz(t,n,`--close-status-code`,e);if(!i)return{stop:!0};let a=Vz(e,i.value);return a===null?{stop:!0}:(e.closeStatus=a,{nextIndex:i.next})},(e,t,n,r)=>Kz(r,[`--close-reason`])?Wz(e,t,n,`--close-reason`,t=>{e.closeReason=t}):null,(e,t,n,r)=>Kz(r,[`-B`,`--buffer-size`])?Gz(e,t,n,r===`-B`?`-B`:`--buffer-size`,`--buffer-size`,t=>{e.bufferSize=t}):null,(e,t,n,r)=>Kz(r,[`--max-messages`])?Gz(e,t,n,`--max-messages`,`--max-messages`,t=>{e.maxMessages=t}):null,(e,t,n,r)=>Kz(r,[`--protocol`])?Wz(e,t,n,`--protocol`,t=>{e.protocol=t}):null,(e,t,n,r)=>{if(!Kz(r,[`--ping-interval`]))return null;let i=zz(t,n,`--ping-interval`,e);return i?(e.pingInterval=Number(i.value),{nextIndex:i.next}):{stop:!0}},(e,t,n,r)=>Kz(r,[`--conn-timeout`])?Gz(e,t,n,`--conn-timeout`,`--conn-timeout`,t=>{e.connTimeoutMs=Math.round(t*1e3)},`positive seconds`):null,(e,t,n,r)=>Kz(r,[`-H`,`--header`])?Wz(e,t,n,r===`-H`?`-H`:`--header`,t=>{e.customHeaders.push(t)}):null];function Jz(e,t,n,r){for(let i of qz){let a=i(e,t,n,r);if(a)return a}return null}function Yz(e){e.closeReason!==void 0&&e.closeStatus===void 0&&(e.error=`websocat: --close-reason requires --close-status-code (the WebSocket close frame cannot carry a reason without a status code)
3094
- `)}function Xz(e){let t=Iz();for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`-h`||r===`--help`)return t.showHelp=!0,t;if(Rz.has(r)||Rz.has(r.split(`=`)[0]))return t.error=`websocat: flag '${r}' is not supported in slicc's minimal client\n`,t;if(Hz(t,r)||Uz(t,r))continue;let i=Jz(t,e,n,r);if(i){if(`stop`in i)return t;n=i.nextIndex;continue}if(r.startsWith(`-`))return t.error=`websocat: unknown flag '${r}'\n`,t;if(t.url)return t.error=`websocat: extra positional argument '${r}' — advanced mode is not supported\n`,t;t.url=r}return Yz(t),t}function Zz(e,t){if(!e)return[];let n=t?`\0`:`
3095
- `,r=e.split(n);return r.length>0&&r[r.length-1]===``&&r.pop(),r}function Qz(e,t,n){let r=e.trim();if(!r)return e;let i=r.search(/\s/),a=i===-1?r:r.slice(0,i),o=i===-1?``:r.slice(i+1).trim(),s=[];if(o)try{s=JSON.parse(o)}catch{s=[o]}let c={id:t,method:a,params:s};return n||(c.jsonrpc=`2.0`),JSON.stringify(c)}function $z(e){try{return new TextDecoder(`utf-8`,{fatal:!1}).decode(e)}catch{return t(e)}}function eB(e){if(typeof e==`string`)return{bytes:new TextEncoder().encode(e),isBinary:!1};if(e instanceof ArrayBuffer)return{bytes:new Uint8Array(e),isBinary:!0};if(ArrayBuffer.isView(e)){let t=e;return{bytes:new Uint8Array(t.buffer,t.byteOffset,t.byteLength),isBinary:!0}}return{bytes:new TextEncoder().encode(String(e)),isBinary:!1}}const tB=1e4;function nB(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function rB(){let e=!1,t=nB();return{...t,settle:n=>{e||(e=!0,t.resolve(n))}}}function iB(e,t){return e.length?e.join(t)+t:``}function aB(e){return e.length?e.join(`
3074
+ `,stderr:``,exitCode:0}}const Lz=/* @__PURE__ */ new Set([`-s`,`--server-mode`,`--oneshot`,`--socks5`,`--basic-auth`,`--basic-auth-file`,`--header-to-env`,`--server-header`,`--exec`,`--ws-c-uri`,`--restrict-uri`,`--unlink`,`--strict`,`-S`]);function Rz(e,t,n,r){let i=e[t].indexOf(`=`);if(i!==-1&&e[t].startsWith(n))return{value:e[t].slice(i+1),next:t};let a=e[t+1];return a===void 0?(r.error=`websocat: missing value for ${n}\n`,null):{value:a,next:t+1}}function zz(e,t,n,r=`positive integer`){let i=Number(t);return!Number.isFinite(i)||i<=0?(e.error=`websocat: ${n} expects ${r}\n`,null):i}function Bz(e,t){let n=Number(t);return!Number.isFinite(n)||n<1e3||n>4999?(e.error=`websocat: --close-status-code expects 1000..4999, got '${t}'\n`,null):n}function Vz(e,t){let n={"-t":()=>{e.text=!0,e.binary=!1},"--text":()=>{e.text=!0,e.binary=!1},"-b":()=>{e.binary=!0,e.text=!1},"--binary":()=>{e.binary=!0,e.text=!1},"-1n":()=>{e.oneMessage=!0,e.noClose=!0},"-n1":()=>{e.oneMessage=!0,e.noClose=!0},"-1":()=>{e.oneMessage=!0},"--one-message":()=>{e.oneMessage=!0},"-n":()=>{e.noClose=!0},"--no-close":()=>{e.noClose=!0},"-E":()=>{e.exitOnEof=!0},"--exit-on-eof":()=>{e.exitOnEof=!0},"-u":()=>{e.unidirectional=!0},"--unidirectional":()=>{e.unidirectional=!0},"-U":()=>{e.unidirectionalReverse=!0},"--unidirectional-reverse":()=>{e.unidirectionalReverse=!0},"-k":()=>{e.insecure=!0},"--insecure":()=>{e.insecure=!0},"-q":()=>{e.quiet=!0},"-0":()=>{e.nullTerminated=!0},"--null-terminated":()=>{e.nullTerminated=!0},"--base64":()=>{e.base64=!0},"--jsonrpc":()=>{e.jsonrpc=!0},"--jsonrpc-omit-jsonrpc":()=>{e.jsonrpcOmit=!0,e.jsonrpc=!0}}[t];return n?(n(),!0):!1}function Hz(e,t){return t===`-v`?(e.verbose+=1,!0):t===`-vv`&&(e.verbose+=2,!0)}function Uz(e,t,n,r,i){let a=Rz(t,n,r,e);return a?(i(a.value),{nextIndex:a.next}):{stop:!0}}function Wz(e,t,n,r,i,a,o){let s=Rz(t,n,r,e);if(!s)return{stop:!0};let c=zz(e,s.value,i,o);return c===null?{stop:!0}:(a(c),{nextIndex:s.next})}function Gz(e,t){return t.some(t=>e===t||e.startsWith(`${t}=`))}const Kz=[(e,t,n,r)=>{if(!Gz(r,[`--close-status-code`]))return null;let i=Rz(t,n,`--close-status-code`,e);if(!i)return{stop:!0};let a=Bz(e,i.value);return a===null?{stop:!0}:(e.closeStatus=a,{nextIndex:i.next})},(e,t,n,r)=>Gz(r,[`--close-reason`])?Uz(e,t,n,`--close-reason`,t=>{e.closeReason=t}):null,(e,t,n,r)=>Gz(r,[`-B`,`--buffer-size`])?Wz(e,t,n,r===`-B`?`-B`:`--buffer-size`,`--buffer-size`,t=>{e.bufferSize=t}):null,(e,t,n,r)=>Gz(r,[`--max-messages`])?Wz(e,t,n,`--max-messages`,`--max-messages`,t=>{e.maxMessages=t}):null,(e,t,n,r)=>Gz(r,[`--protocol`])?Uz(e,t,n,`--protocol`,t=>{e.protocol=t}):null,(e,t,n,r)=>{if(!Gz(r,[`--ping-interval`]))return null;let i=Rz(t,n,`--ping-interval`,e);return i?(e.pingInterval=Number(i.value),{nextIndex:i.next}):{stop:!0}},(e,t,n,r)=>Gz(r,[`--conn-timeout`])?Wz(e,t,n,`--conn-timeout`,`--conn-timeout`,t=>{e.connTimeoutMs=Math.round(t*1e3)},`positive seconds`):null,(e,t,n,r)=>Gz(r,[`-H`,`--header`])?Uz(e,t,n,r===`-H`?`-H`:`--header`,t=>{e.customHeaders.push(t)}):null];function qz(e,t,n,r){for(let i of Kz){let a=i(e,t,n,r);if(a)return a}return null}function Jz(e){e.closeReason!==void 0&&e.closeStatus===void 0&&(e.error=`websocat: --close-reason requires --close-status-code (the WebSocket close frame cannot carry a reason without a status code)
3075
+ `)}function Yz(e){let t=Fz();for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`-h`||r===`--help`)return t.showHelp=!0,t;if(Lz.has(r)||Lz.has(r.split(`=`)[0]))return t.error=`websocat: flag '${r}' is not supported in slicc's minimal client\n`,t;if(Vz(t,r)||Hz(t,r))continue;let i=qz(t,e,n,r);if(i){if(`stop`in i)return t;n=i.nextIndex;continue}if(r.startsWith(`-`))return t.error=`websocat: unknown flag '${r}'\n`,t;if(t.url)return t.error=`websocat: extra positional argument '${r}' — advanced mode is not supported\n`,t;t.url=r}return Jz(t),t}function Xz(e,t){if(!e)return[];let n=t?`\0`:`
3076
+ `,r=e.split(n);return r.length>0&&r[r.length-1]===``&&r.pop(),r}function Zz(e,t,n){let r=e.trim();if(!r)return e;let i=r.search(/\s/),a=i===-1?r:r.slice(0,i),o=i===-1?``:r.slice(i+1).trim(),s=[];if(o)try{s=JSON.parse(o)}catch{s=[o]}let c={id:t,method:a,params:s};return n||(c.jsonrpc=`2.0`),JSON.stringify(c)}function Qz(e){try{return new TextDecoder(`utf-8`,{fatal:!1}).decode(e)}catch{return t(e)}}function $z(e){if(typeof e==`string`)return{bytes:new TextEncoder().encode(e),isBinary:!1};if(e instanceof ArrayBuffer)return{bytes:new Uint8Array(e),isBinary:!0};if(ArrayBuffer.isView(e)){let t=e;return{bytes:new Uint8Array(t.buffer,t.byteOffset,t.byteLength),isBinary:!0}}return{bytes:new TextEncoder().encode(String(e)),isBinary:!1}}const eB=1e4;function tB(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function nB(){let e=!1,t=tB();return{...t,settle:n=>{e||(e=!0,t.resolve(n))}}}function rB(e,t){return e.length?e.join(t)+t:``}function iB(e){return e.length?e.join(`
3096
3077
  `)+`
3097
- `:``}function oB(e,t,n){e.quiet||t.push(`websocat: ${n}`)}function sB(e,t){e.verbose<1||(e.customHeaders.length>0&&oB(e,t,`-H/--header is accepted for parity but browsers do not allow setting WebSocket request headers; only --protocol is honored`),e.pingInterval!==void 0&&oB(e,t,`--ping-interval has no effect in browsers (no ping API exposed)`),e.insecure&&oB(e,t,`-k/--insecure has no effect in browsers`))}function cB(e,t){try{let n=t.protocol?new e(t.url,t.protocol):new e(t.url);return n.binaryType=`arraybuffer`,{ws:n}}catch(e){return{error:`websocat: connect failed: ${e instanceof Error?e.message:String(e)}\n`}}}function lB(e,t,n,r){if(n.outLines.length<tB){n.outLines.push(r);return}n.droppedForOverflow===0&&oB(e,t,`output buffer reached ${tB} messages; dropping further inbound messages — use -1, --max-messages, or pipe to a file with a different tool for long-running streams`),n.droppedForOverflow+=1}function uB(e,n,r){let{bytes:i,isBinary:a}=eB(r);return i.length>e.bufferSize&&(oB(e,n,`inbound message of ${i.length} bytes exceeds --buffer-size ${e.bufferSize}; truncating`),i=i.slice(0,e.bufferSize)),a&&e.base64?t(i):$z(i)}function dB(e,t){return e.maxMessages!==void 0&&t>=e.maxMessages||e.oneMessage}function fB(e,t,n){try{n===void 0?e.close(t):e.close(t,n)}catch{}}function pB(e,t){setTimeout(()=>{fB(t,e.closeStatus??1e3,e.closeReason)},0)}function mB(e,t,n){let r=Zz(n,t.nullTerminated),i=1,a=0,o=t.oneMessage?r.slice(0,1):r;for(let n of o){let r=n;t.jsonrpc&&(r=Qz(n,i,t.jsonrpcOmit),i+=1),t.binary?e.send(new TextEncoder().encode(r).buffer):e.send(r),a+=1}return a}function hB(e,t,n){!t.oneMessage&&!t.noClose&&(t.exitOnEof||n===0)&&pB(t,e)}async function gB(e,t,n){let r=[];sB(e,r);let i=e.nullTerminated?`\0`:`
3098
- `,a=cB(n,e);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let{ws:o}=a,s={outLines:[],droppedForOverflow:0,received:0,finishing:!1},c=!1,l=nB(),u=rB(),d=0,f=!1,p=setTimeout(()=>{f=!0,fB(o,1e3),c||l.reject(/* @__PURE__ */ Error(`connect timeout`))},e.connTimeoutMs),m=()=>{if(e.noClose){u.settle(d);return}fB(o,e.closeStatus??1e3,e.closeReason)};o.onopen=()=>{clearTimeout(p),c=!0,l.resolve()},o.onmessage=t=>{if(!s.finishing){if(!e.unidirectional){let n=uB(e,r,t.data);lB(e,r,s,n)}s.received+=1,dB(e,s.received)&&(s.finishing=!0,m())}},o.onerror=()=>{f||(oB(e,r,`websocket error`),d=1,c||l.reject(/* @__PURE__ */ Error(`connect failed`)))},o.onclose=t=>{if(clearTimeout(p),f){u.settle(124);return}e.verbose>=1&&oB(e,r,`closed code=${t.code} reason=${JSON.stringify(t.reason||``)}`),d===0&&t.code!==1e3&&t.code!==1005&&t.code!==1001&&(d=1),c||l.reject(/* @__PURE__ */ Error(`connect closed (code ${t.code})`)),u.settle(d)};try{await l.promise}catch(e){clearTimeout(p);let t=e instanceof Error?e.message:String(e);return{stdout:iB(s.outLines,i),stderr:aB(r.concat([`websocat: ${t}`])),exitCode:t===`connect timeout`?124:1}}e.unidirectionalReverse?!e.noClose&&e.exitOnEof&&!e.oneMessage&&pB(e,o):hB(o,e,mB(o,e,t));let h=await u.promise;return s.droppedForOverflow>0&&oB(e,r,`dropped ${s.droppedForOverflow} inbound message(s) due to output buffer cap`),{stdout:iB(s.outLines,i),stderr:aB(r),exitCode:h}}function _B(e){return{stdout:``,stderr:e,exitCode:2}}function vB(e){return e.WebSocketCtor??(typeof WebSocket<`u`?WebSocket:void 0)}async function yB(e,t,n={}){let r=Xz(e);if(r.showHelp)return Lz();if(r.error)return _B(r.error);if(!r.url)return _B(`websocat: missing ws:// or wss:// URL (use --help for usage)
3099
- `);if(!/^wss?:\/\//i.test(r.url))return _B(`websocat: URL must start with ws:// or wss://, got '${r.url}'\n`);let i=vB(n);return i?gB(r,t.stdin,i):{stdout:``,stderr:`websocat: no WebSocket implementation available in this runtime
3100
- `,exitCode:1}}function bB(){return C(`websocat`,async(e,t)=>yB(e,{stdin:P(t.stdin)}))}function xB(){return C(`__wf_progress`,async()=>({stdout:``,stderr:``,exitCode:0}))}const SB={commands:/* @__PURE__ */ new Map,collisions:[]};async function CB(e,t){let n=xr(t);return e.scriptCatalog?e.scriptCatalog.getJshIndex(n):e.fs?wr(e.fs,n):SB}async function wB(e){return e.scriptCatalog?e.scriptCatalog.getWorkflowCommands():e.fs?ji(e.fs):/* @__PURE__ */ new Map}async function TB(e){return e.scriptCatalog?e.scriptCatalog.getWasmCommands():/* @__PURE__ */ new Map}function EB(e,t){let n=e.script?`script`:`wasm`;return`${e.glue} (${n}, ${e.pkg}${t?`, ${t}`:``})`}function DB(e,{jshPath:t,collision:n,wasm:r,wf:i}){let a=[`/usr/bin/${e}`];if((t||r||i)&&a.push(` (shadowed by built-in ${e})`),r&&a.push(` (shadowed ${EB(r)})`),t){let e=n?[t,...n.shadowedPaths]:[t];for(let t of e)a.push(` (shadowed ${t})`)}return a}function OB(e,{collision:t,wasm:n,wf:r}){let i=[e];for(let e of t?.shadowedPaths??[])i.push(` (shadowed ${e})`);return n&&i.push(` ${EB(n,`shadowed by .jsh`)}`),r&&i.push(` ${r.path} (workflow, shadowed by .jsh)`),i}function kB(e,t,n,r,i){let{jshPath:a,wasm:o,wf:s}=t;if(n.has(e))return{lines:DB(e,t),found:!0};if(a)return{lines:OB(a,t),found:!0};if(o){let e=[EB(o)];return s&&e.push(` ${s.path} (workflow, shadowed by wasm)`),{lines:e,found:!0}}return s?{lines:[`${s.path} (workflow)`],found:!0}:r.has(e)&&!i.has(e)?{lines:[`/usr/bin/${e}`],found:!0}:{lines:[],found:!1}}function AB(e={}){let t=e.scriptCatalog!==void 0||e.fs!==void 0?e:typeof e.walk==`function`&&typeof e.exists==`function`?{fs:e}:{};return C(`which`,async(e,n)=>{if(T(e))return{stdout:`which - locate a command
3078
+ `:``}function aB(e,t,n){e.quiet||t.push(`websocat: ${n}`)}function oB(e,t){e.verbose<1||(e.customHeaders.length>0&&aB(e,t,`-H/--header is accepted for parity but browsers do not allow setting WebSocket request headers; only --protocol is honored`),e.pingInterval!==void 0&&aB(e,t,`--ping-interval has no effect in browsers (no ping API exposed)`),e.insecure&&aB(e,t,`-k/--insecure has no effect in browsers`))}function sB(e,t){try{let n=t.protocol?new e(t.url,t.protocol):new e(t.url);return n.binaryType=`arraybuffer`,{ws:n}}catch(e){return{error:`websocat: connect failed: ${e instanceof Error?e.message:String(e)}\n`}}}function cB(e,t,n,r){if(n.outLines.length<eB){n.outLines.push(r);return}n.droppedForOverflow===0&&aB(e,t,`output buffer reached ${eB} messages; dropping further inbound messages — use -1, --max-messages, or pipe to a file with a different tool for long-running streams`),n.droppedForOverflow+=1}function lB(e,n,r){let{bytes:i,isBinary:a}=$z(r);return i.length>e.bufferSize&&(aB(e,n,`inbound message of ${i.length} bytes exceeds --buffer-size ${e.bufferSize}; truncating`),i=i.slice(0,e.bufferSize)),a&&e.base64?t(i):Qz(i)}function uB(e,t){return e.maxMessages!==void 0&&t>=e.maxMessages||e.oneMessage}function dB(e,t,n){try{n===void 0?e.close(t):e.close(t,n)}catch{}}function fB(e,t){setTimeout(()=>{dB(t,e.closeStatus??1e3,e.closeReason)},0)}function pB(e,t,n){let r=Xz(n,t.nullTerminated),i=1,a=0,o=t.oneMessage?r.slice(0,1):r;for(let n of o){let r=n;t.jsonrpc&&(r=Zz(n,i,t.jsonrpcOmit),i+=1),t.binary?e.send(new TextEncoder().encode(r).buffer):e.send(r),a+=1}return a}function mB(e,t,n){!t.oneMessage&&!t.noClose&&(t.exitOnEof||n===0)&&fB(t,e)}async function hB(e,t,n){let r=[];oB(e,r);let i=e.nullTerminated?`\0`:`
3079
+ `,a=sB(n,e);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let{ws:o}=a,s={outLines:[],droppedForOverflow:0,received:0,finishing:!1},c=!1,l=tB(),u=nB(),d=0,f=!1,p=setTimeout(()=>{f=!0,dB(o,1e3),c||l.reject(/* @__PURE__ */ Error(`connect timeout`))},e.connTimeoutMs),m=()=>{if(e.noClose){u.settle(d);return}dB(o,e.closeStatus??1e3,e.closeReason)};o.onopen=()=>{clearTimeout(p),c=!0,l.resolve()},o.onmessage=t=>{if(!s.finishing){if(!e.unidirectional){let n=lB(e,r,t.data);cB(e,r,s,n)}s.received+=1,uB(e,s.received)&&(s.finishing=!0,m())}},o.onerror=()=>{f||(aB(e,r,`websocket error`),d=1,c||l.reject(/* @__PURE__ */ Error(`connect failed`)))},o.onclose=t=>{if(clearTimeout(p),f){u.settle(124);return}e.verbose>=1&&aB(e,r,`closed code=${t.code} reason=${JSON.stringify(t.reason||``)}`),d===0&&t.code!==1e3&&t.code!==1005&&t.code!==1001&&(d=1),c||l.reject(/* @__PURE__ */ Error(`connect closed (code ${t.code})`)),u.settle(d)};try{await l.promise}catch(e){clearTimeout(p);let t=e instanceof Error?e.message:String(e);return{stdout:rB(s.outLines,i),stderr:iB(r.concat([`websocat: ${t}`])),exitCode:t===`connect timeout`?124:1}}e.unidirectionalReverse?!e.noClose&&e.exitOnEof&&!e.oneMessage&&fB(e,o):mB(o,e,pB(o,e,t));let h=await u.promise;return s.droppedForOverflow>0&&aB(e,r,`dropped ${s.droppedForOverflow} inbound message(s) due to output buffer cap`),{stdout:rB(s.outLines,i),stderr:iB(r),exitCode:h}}function gB(e){return{stdout:``,stderr:e,exitCode:2}}function _B(e){return e.WebSocketCtor??(typeof WebSocket<`u`?WebSocket:void 0)}async function vB(e,t,n={}){let r=Yz(e);if(r.showHelp)return Iz();if(r.error)return gB(r.error);if(!r.url)return gB(`websocat: missing ws:// or wss:// URL (use --help for usage)
3080
+ `);if(!/^wss?:\/\//i.test(r.url))return gB(`websocat: URL must start with ws:// or wss://, got '${r.url}'\n`);let i=_B(n);return i?hB(r,t.stdin,i):{stdout:``,stderr:`websocat: no WebSocket implementation available in this runtime
3081
+ `,exitCode:1}}function yB(){return C(`websocat`,async(e,t)=>vB(e,{stdin:P(t.stdin)}))}function bB(){return C(`__wf_progress`,async()=>({stdout:``,stderr:``,exitCode:0}))}const xB={commands:/* @__PURE__ */ new Map,collisions:[]};async function SB(e,t){let n=xr(t);return e.scriptCatalog?e.scriptCatalog.getJshIndex(n):e.fs?wr(e.fs,n):xB}async function CB(e){return e.scriptCatalog?e.scriptCatalog.getWorkflowCommands():e.fs?ji(e.fs):/* @__PURE__ */ new Map}async function wB(e){return e.scriptCatalog?e.scriptCatalog.getWasmCommands():/* @__PURE__ */ new Map}function TB(e,t){let n=e.script?`script`:`wasm`;return`${e.glue} (${n}, ${e.pkg}${t?`, ${t}`:``})`}function EB(e,{jshPath:t,collision:n,wasm:r,wf:i}){let a=[`/usr/bin/${e}`];if((t||r||i)&&a.push(` (shadowed by built-in ${e})`),r&&a.push(` (shadowed ${TB(r)})`),t){let e=n?[t,...n.shadowedPaths]:[t];for(let t of e)a.push(` (shadowed ${t})`)}return a}function DB(e,{collision:t,wasm:n,wf:r}){let i=[e];for(let e of t?.shadowedPaths??[])i.push(` (shadowed ${e})`);return n&&i.push(` ${TB(n,`shadowed by .jsh`)}`),r&&i.push(` ${r.path} (workflow, shadowed by .jsh)`),i}function OB(e,t,n,r,i){let{jshPath:a,wasm:o,wf:s}=t;if(n.has(e))return{lines:EB(e,t),found:!0};if(a)return{lines:DB(a,t),found:!0};if(o){let e=[TB(o)];return s&&e.push(` ${s.path} (workflow, shadowed by wasm)`),{lines:e,found:!0}}return s?{lines:[`${s.path} (workflow)`],found:!0}:r.has(e)&&!i.has(e)?{lines:[`/usr/bin/${e}`],found:!0}:{lines:[],found:!1}}function kB(e={}){let t=e.scriptCatalog!==void 0||e.fs!==void 0?e:typeof e.walk==`function`&&typeof e.exists==`function`?{fs:e}:{};return C(`which`,async(e,n)=>{if(T(e))return{stdout:`which - locate a command
3101
3082
 
3102
3083
  Usage: which <command> [command...]
3103
3084
 
@@ -3109,9 +3090,9 @@ Prints the path of the given command(s).
3109
3090
 
3110
3091
  Exit code 0 if all commands found, 1 if any not found.
3111
3092
  `,stderr:``,exitCode:0};let r=w(e,{});if(`error`in r)return{stdout:``,stderr:`which: ${r.error}\n`,exitCode:1};if(r.positionals.length===0)return{stdout:``,stderr:`which: missing argument
3112
- `,exitCode:1};let i=n.getRegisteredCommands?.()??[],a=new Set(i),o=await CB(t,n.env.get(`PATH`)),s=o.commands,c=new Map(o.collisions.map(e=>[e.name,e])),l=await wB(t),u=await TB(t),d=typeof t.getStaticBuiltins==`function`?new Set(t.getStaticBuiltins()):a,f=new Set(t.getScriptRegisteredNames?.()??[]),p=[],m=!0;for(let e of r.positionals){let t=kB(e,{jshPath:s.get(e),collision:c.get(e),wasm:u.get(e),wf:l.get(e)},d,a,f);p.push(...t.lines),t.found||(m=!1)}return{stdout:p.length>0?p.join(`
3093
+ `,exitCode:1};let i=n.getRegisteredCommands?.()??[],a=new Set(i),o=await SB(t,n.env.get(`PATH`)),s=o.commands,c=new Map(o.collisions.map(e=>[e.name,e])),l=await CB(t),u=await wB(t),d=typeof t.getStaticBuiltins==`function`?new Set(t.getStaticBuiltins()):a,f=new Set(t.getScriptRegisteredNames?.()??[]),p=[],m=!0;for(let e of r.positionals){let t=OB(e,{jshPath:s.get(e),collision:c.get(e),wasm:u.get(e),wf:l.get(e)},d,a,f);p.push(...t.lines),t.found||(m=!1)}return{stdout:p.length>0?p.join(`
3113
3094
  `)+`
3114
- `:``,stderr:``,exitCode:+!m}})}const jB=`__slicc_workflows`,MB=String.raw`
3095
+ `:``,stderr:``,exitCode:+!m}})}const AB=`__slicc_workflows`,jB=String.raw`
3115
3096
  class WorkflowError extends Error {}
3116
3097
  class WorkflowDeterminismError extends WorkflowError {}
3117
3098
  class WorkflowAgentCapError extends WorkflowError {}
@@ -3230,40 +3211,40 @@ function log(message) {
3230
3211
  }
3231
3212
  const budget = { total: (__WF.budget == null ? null : __WF.budget), spent() { return 0; }, remaining() { return this.total == null ? Infinity : Math.max(0, this.total - this.spent()); } };
3232
3213
  function workflow() { throw new WorkflowNestingUnsupportedError('nested workflow() unsupported in SP1'); }
3233
- `;function NB(){return`WF_RESULT_${globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function PB(e){let t=RB(e);return t===null?{name:null,description:null}:{name:zB(t,`name`),description:zB(t,`description`)}}function FB(e){return e.replace(/\bexport\s+(const|let|var|function|async\s+function|class)\b/g,`$1`)}function IB(e){return`const __emit = console.log.bind(console);
3214
+ `;function MB(){return`WF_RESULT_${globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function NB(e){let t=LB(e);return t===null?{name:null,description:null}:{name:RB(t,`name`),description:RB(t,`description`)}}function PB(e){return e.replace(/\bexport\s+(const|let|var|function|async\s+function|class)\b/g,`$1`)}function FB(e){return`const __emit = console.log.bind(console);
3234
3215
  const __stringify = JSON.stringify.bind(JSON);
3235
- const __WF = ${JSON.stringify(e.config)};\n${e.prelude}\nconst __r = await (async () => {\n${FB(e.body)}\n})();\n__emit(${JSON.stringify(e.sentinel)} + __stringify(__r ?? null));\n`}function LB(e,t){let n=e.split(`
3216
+ const __WF = ${JSON.stringify(e.config)};\n${e.prelude}\nconst __r = await (async () => {\n${PB(e.body)}\n})();\n__emit(${JSON.stringify(e.sentinel)} + __stringify(__r ?? null));\n`}function IB(e,t){let n=e.split(`
3236
3217
  `);for(let e=n.length-1;e>=0;e--)if(n[e].startsWith(t)){let r=[...n.slice(0,e),...n.slice(e+1)].join(`
3237
- `).replace(/\n+$/,``);try{return{result:JSON.parse(n[e].slice(t.length)),log:r,hadResult:!0}}catch{return{result:null,log:r,hadResult:!0}}}return{result:null,log:e.replace(/\n+$/,``),hadResult:!1}}function RB(e){let t=/\bmeta\s*=\s*\{/.exec(e);if(!t)return null;let n=t.index+t[0].length-1,r=0;for(let t=n;t<e.length;t++)if(e[t]===`{`)r++;else if(e[t]===`}`&&--r===0)return e.slice(n+1,t);return null}function zB(e,t){let n=RegExp(`\\b${t}\\s*:\\s*(['"\\\`])((?:\\\\.|(?!\\1).)*)\\1`).exec(e);return n?n[2]:null}const BB=e(`workflow-command`),VB=`usage: workflow run <file.js> [--args <json>] [--budget <n>] [--concurrency <n>] [--wait]
3218
+ `).replace(/\n+$/,``);try{return{result:JSON.parse(n[e].slice(t.length)),log:r,hadResult:!0}}catch{return{result:null,log:r,hadResult:!0}}}return{result:null,log:e.replace(/\n+$/,``),hadResult:!1}}function LB(e){let t=/\bmeta\s*=\s*\{/.exec(e);if(!t)return null;let n=t.index+t[0].length-1,r=0;for(let t=n;t<e.length;t++)if(e[t]===`{`)r++;else if(e[t]===`}`&&--r===0)return e.slice(n+1,t);return null}function RB(e,t){let n=RegExp(`\\b${t}\\s*:\\s*(['"\\\`])((?:\\\\.|(?!\\1).)*)\\1`).exec(e);return n?n[2]:null}const zB=e(`workflow-command`),BB=`usage: workflow run <file.js> [--args <json>] [--budget <n>] [--concurrency <n>] [--wait]
3238
3219
  workflow run --script '<inline js>' [...]
3239
3220
  workflow list
3240
3221
  workflow status <runId>
3241
3222
  workflow stop <runId>
3242
3223
  workflow save <runId> <name> [--force]
3243
3224
  Runs a Claude-Code-format dynamic workflow. Default is non-blocking (returns a run id);
3244
- pass --wait to block and print the full result.`,HB=/* @__PURE__ */ new Set([`list`,`status`,`stop`,`save`]);function UB(){return globalThis[jB]}function WB(){let e=globalThis.navigator?.hardwareConcurrency??8;return Math.min(16,Math.max(8,e*4))}function GB(e,t,n,r){let i=t[n];switch(i){case`-h`:case`--help`:return{i:n,help:!0};case`--script`:return e.script=t[++n],{i:n};case`--wait`:return e.wait=!0,{i:n};case`--args`:try{e.args=JSON.parse(t[++n]??``),e.hasArgs=!0}catch{return{i:n,error:`workflow: --args must be valid JSON`}}return{i:n};case`--budget`:{let r=Number(t[++n]);return Number.isFinite(r)?(e.budget=r,{i:n}):{i:n,error:`workflow: --budget must be a number`}}case`--concurrency`:{let i=Number(t[++n]);return Number.isFinite(i)?(e.cap=Math.min(r,Math.max(1,Math.trunc(i))),{i:n}):{i:n,error:`workflow: --concurrency must be a number`}}default:return i.startsWith(`-`)?{i:n,error:`workflow: unknown flag '${i}'`}:e.file===void 0?(e.file=i,{i:n}):{i:n,error:`workflow: too many arguments`}}}function KB(e){if(e[0]!==`run`)return e.length===0||e.includes(`-h`)||e.includes(`--help`)?{help:!0}:{error:`workflow: unknown subcommand '${e[0]}' (only 'run' in SP1)`};let t=WB(),n={budget:null,cap:Math.min(8,t)};for(let r=1;r<e.length;r++){let i=GB(n,e,r,t);if(i.help)return{help:!0};if(i.error)return{error:i.error};r=i.i}return n.script===void 0&&n.file===void 0?{error:`workflow: a <file.js> or --script is required`}:n}function qB(e={}){return C(`workflow`,async(t,n)=>{if(HB.has(t[0])&&T(t.slice(1)))return{stdout:VB+`
3245
- `,stderr:``,exitCode:0};if(t[0]===`list`||t[0]===`status`||t[0]===`stop`)return $B(t,n);if(t[0]===`save`)return QB(t,n,e);let r=KB(t);if(r.help)return{stdout:VB+`
3225
+ pass --wait to block and print the full result.`,VB=/* @__PURE__ */ new Set([`list`,`status`,`stop`,`save`]);function HB(){return globalThis[AB]}function UB(){let e=globalThis.navigator?.hardwareConcurrency??8;return Math.min(16,Math.max(8,e*4))}function WB(e,t,n,r){let i=t[n];switch(i){case`-h`:case`--help`:return{i:n,help:!0};case`--script`:return e.script=t[++n],{i:n};case`--wait`:return e.wait=!0,{i:n};case`--args`:try{e.args=JSON.parse(t[++n]??``),e.hasArgs=!0}catch{return{i:n,error:`workflow: --args must be valid JSON`}}return{i:n};case`--budget`:{let r=Number(t[++n]);return Number.isFinite(r)?(e.budget=r,{i:n}):{i:n,error:`workflow: --budget must be a number`}}case`--concurrency`:{let i=Number(t[++n]);return Number.isFinite(i)?(e.cap=Math.min(r,Math.max(1,Math.trunc(i))),{i:n}):{i:n,error:`workflow: --concurrency must be a number`}}default:return i.startsWith(`-`)?{i:n,error:`workflow: unknown flag '${i}'`}:e.file===void 0?(e.file=i,{i:n}):{i:n,error:`workflow: too many arguments`}}}function GB(e){if(e[0]!==`run`)return e.length===0||e.includes(`-h`)||e.includes(`--help`)?{help:!0}:{error:`workflow: unknown subcommand '${e[0]}' (only 'run' in SP1)`};let t=UB(),n={budget:null,cap:Math.min(8,t)};for(let r=1;r<e.length;r++){let i=WB(n,e,r,t);if(i.help)return{help:!0};if(i.error)return{error:i.error};r=i.i}return n.script===void 0&&n.file===void 0?{error:`workflow: a <file.js> or --script is required`}:n}function KB(e={}){return C(`workflow`,async(t,n)=>{if(VB.has(t[0])&&T(t.slice(1)))return{stdout:BB+`
3226
+ `,stderr:``,exitCode:0};if(t[0]===`list`||t[0]===`status`||t[0]===`stop`)return QB(t,n);if(t[0]===`save`)return ZB(t,n,e);let r=GB(t);if(r.help)return{stdout:BB+`
3246
3227
  `,stderr:``,exitCode:0};if(r.error)return{stdout:``,stderr:r.error+`
3247
- `,exitCode:1};let i,a;if(r.script!==void 0)i=r.script,a=`<workflow>`;else{let e=n.fs.resolvePath(n.cwd,r.file);if(!await n.fs.exists(e))return{stdout:``,stderr:`workflow: file not found: ${r.file}\n`,exitCode:1};i=await n.fs.readFile(e),a=r.file}let o=PB(i);if(!o.name)return{stdout:``,stderr:`workflow: script must define a meta block with a name (description optional)
3248
- `,exitCode:1};let s=NB().slice(10,22),c=`/shared/workflow-runs/${s}/scratch/`;await n.fs.mkdir(c,{recursive:!0});let l=NB(),u=IB({prelude:MB,config:{...r.hasArgs?{args:r.args}:{},cap:r.cap??8,budget:r.budget??null,cwd:n.cwd,agentCwd:c},body:i,sentinel:l});return r.wait?JB(u,a,l,o,n):YB({code:u,source:i,name:o.name,filename:a,sentinel:l,runId:s,ctx:n,options:e})})}async function JB(e,t,n,r,i){let a;try{a=await yi(e,[`workflow`,t],i,void 0,{filename:t})}catch(e){return BB.error(`workflow run failed`,e),{stdout:``,stderr:`workflow: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return eV(r,a,n)}async function YB(e){let t=UB();if(!t)return{stdout:``,stderr:`workflow: run manager not available
3249
- `,exitCode:1};let n=e.options.getParentJid?.(),{runId:r}=await t.start({code:e.code,source:e.source,name:e.name,filename:e.filename,parentJid:n,ctx:e.ctx,sentinel:e.sentinel,runId:e.runId});return{stdout:`▶ workflow '${e.name}' started (run ${r}). Watch: workflow status ${r}\n`,stderr:``,exitCode:0}}const XB=/^[a-z0-9][a-z0-9-]*$/,ZB=`/workspace/.workflows`;async function QB(e,t,n){let r=!1,i=[];for(let t of e.slice(1))t===`--force`?r=!0:i.push(t);let[a,o,...s]=i;if(!a||!o||s.length>0)return{stdout:``,stderr:`usage: workflow save <runId> <name> [--force]
3250
- `,exitCode:1};if(!XB.test(o))return{stdout:``,stderr:`workflow: invalid name '${o}' (use [a-z0-9][a-z0-9-]*)\n`,exitCode:1};let c=UB()?.getRun(a);if(!c)return{stdout:``,stderr:`workflow: no run '${a}' (only backgrounded runs are saveable; --wait runs are not)\n`,exitCode:1};if(!c.source)return{stdout:``,stderr:`workflow: run '${a}' has no source to save\n`,exitCode:1};let l=`${ZB}/${o}.workflow.js`;if(await t.fs.exists(l)){if(!r)return{stdout:``,stderr:`workflow: ${l} already exists (pass --force to overwrite)\n`,exitCode:1}}else if(new Set(t.getRegisteredCommands?.()??[]).has(o))return{stdout:``,stderr:`workflow: '${o}' is already a command — choose another name\n`,exitCode:1};await t.fs.mkdir(ZB,{recursive:!0}),await t.fs.writeFile(l,c.source);try{await n.syncScriptCommands?.()}catch(e){BB.warn(`workflow save: command re-sync failed; workflow saved, will register on next sync`,{name:o,error:e instanceof Error?e.message:String(e)})}return{stdout:`saved workflow '${o}' → ${l}\nrun it as '${o}' (or 'workflow run ${l}' if a built-in/.jsh shadows the name)\n`,stderr:``,exitCode:0}}async function $B(e,t){let n=UB();if(e[0]===`list`){if(!n)return{stdout:``,stderr:`workflow: run manager not available
3228
+ `,exitCode:1};let i,a;if(r.script!==void 0)i=r.script,a=`<workflow>`;else{let e=n.fs.resolvePath(n.cwd,r.file);if(!await n.fs.exists(e))return{stdout:``,stderr:`workflow: file not found: ${r.file}\n`,exitCode:1};i=await n.fs.readFile(e),a=r.file}let o=NB(i);if(!o.name)return{stdout:``,stderr:`workflow: script must define a meta block with a name (description optional)
3229
+ `,exitCode:1};let s=MB().slice(10,22),c=`/shared/workflow-runs/${s}/scratch/`;await n.fs.mkdir(c,{recursive:!0});let l=MB(),u=FB({prelude:jB,config:{...r.hasArgs?{args:r.args}:{},cap:r.cap??8,budget:r.budget??null,cwd:n.cwd,agentCwd:c},body:i,sentinel:l});return r.wait?qB(u,a,l,o,n):JB({code:u,source:i,name:o.name,filename:a,sentinel:l,runId:s,ctx:n,options:e})})}async function qB(e,t,n,r,i){let a;try{a=await yi(e,[`workflow`,t],i,void 0,{filename:t})}catch(e){return zB.error(`workflow run failed`,e),{stdout:``,stderr:`workflow: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return $B(r,a,n)}async function JB(e){let t=HB();if(!t)return{stdout:``,stderr:`workflow: run manager not available
3230
+ `,exitCode:1};let n=e.options.getParentJid?.(),{runId:r}=await t.start({code:e.code,source:e.source,name:e.name,filename:e.filename,parentJid:n,ctx:e.ctx,sentinel:e.sentinel,runId:e.runId});return{stdout:`▶ workflow '${e.name}' started (run ${r}). Watch: workflow status ${r}\n`,stderr:``,exitCode:0}}const YB=/^[a-z0-9][a-z0-9-]*$/,XB=`/workspace/.workflows`;async function ZB(e,t,n){let r=!1,i=[];for(let t of e.slice(1))t===`--force`?r=!0:i.push(t);let[a,o,...s]=i;if(!a||!o||s.length>0)return{stdout:``,stderr:`usage: workflow save <runId> <name> [--force]
3231
+ `,exitCode:1};if(!YB.test(o))return{stdout:``,stderr:`workflow: invalid name '${o}' (use [a-z0-9][a-z0-9-]*)\n`,exitCode:1};let c=HB()?.getRun(a);if(!c)return{stdout:``,stderr:`workflow: no run '${a}' (only backgrounded runs are saveable; --wait runs are not)\n`,exitCode:1};if(!c.source)return{stdout:``,stderr:`workflow: run '${a}' has no source to save\n`,exitCode:1};let l=`${XB}/${o}.workflow.js`;if(await t.fs.exists(l)){if(!r)return{stdout:``,stderr:`workflow: ${l} already exists (pass --force to overwrite)\n`,exitCode:1}}else if(new Set(t.getRegisteredCommands?.()??[]).has(o))return{stdout:``,stderr:`workflow: '${o}' is already a command — choose another name\n`,exitCode:1};await t.fs.mkdir(XB,{recursive:!0}),await t.fs.writeFile(l,c.source);try{await n.syncScriptCommands?.()}catch(e){zB.warn(`workflow save: command re-sync failed; workflow saved, will register on next sync`,{name:o,error:e instanceof Error?e.message:String(e)})}return{stdout:`saved workflow '${o}' → ${l}\nrun it as '${o}' (or 'workflow run ${l}' if a built-in/.jsh shadows the name)\n`,stderr:``,exitCode:0}}async function QB(e,t){let n=HB();if(e[0]===`list`){if(!n)return{stdout:``,stderr:`workflow: run manager not available
3251
3232
  `,exitCode:1};let e=n.listRuns().map(e=>`${e.id} ${e.status.padEnd(7)} ${e.agentsDone}/${e.agentsStarted} ${e.name??``}`);return{stdout:(e.length?e.join(`
3252
3233
  `):`(no runs)`)+`
3253
3234
  `,stderr:``,exitCode:0}}let r=e[1],i=n?.getRun(r??``);if(!i)return{stdout:``,stderr:`workflow: no run '${r}'\n`,exitCode:1};if(e[0]===`status`)return{stdout:[`run ${i.id} (${i.name??`unnamed`}) status=${i.status}`,`agents ${i.agentsDone}/${i.agentsStarted} phase=${i.currentPhase??`-`}`,i.resultPath?`result: ${i.resultPath}`:``,i.preview?`preview: ${i.preview}`:``,i.error?`error: ${i.error}`:``].filter(Boolean).join(`
3254
3235
  `)+`
3255
- `,stderr:``,exitCode:0};if(i.pid==null)return{stdout:`workflow: run ${i.id} has not started a realm process yet (nothing to stop)\n`,stderr:``,exitCode:0};if(i.status!==`running`&&i.status!==`paused`)return{stdout:`workflow: run ${i.id} already ${i.status}\n`,stderr:``,exitCode:0};let a=await t.exec?.(`kill`,{cwd:t.cwd,args:[`-KILL`,String(i.pid)]});return a&&a.exitCode!==0?{stdout:``,stderr:a.stderr||`workflow: kill failed (exit ${a.exitCode})\n`,exitCode:a.exitCode}:{stdout:`stopped run ${i.id} (pid ${i.pid})\n`,stderr:``,exitCode:0}}function eV(e,t,n){let{result:r,log:i,hadResult:a}=LB(t.stdout,n),o=e.name?`workflow: ${e.name}${e.description?` — `+e.description:``}\n`:``,s=i?tV(i)+`
3236
+ `,stderr:``,exitCode:0};if(i.pid==null)return{stdout:`workflow: run ${i.id} has not started a realm process yet (nothing to stop)\n`,stderr:``,exitCode:0};if(i.status!==`running`&&i.status!==`paused`)return{stdout:`workflow: run ${i.id} already ${i.status}\n`,stderr:``,exitCode:0};let a=await t.exec?.(`kill`,{cwd:t.cwd,args:[`-KILL`,String(i.pid)]});return a&&a.exitCode!==0?{stdout:``,stderr:a.stderr||`workflow: kill failed (exit ${a.exitCode})\n`,exitCode:a.exitCode}:{stdout:`stopped run ${i.id} (pid ${i.pid})\n`,stderr:``,exitCode:0}}function $B(e,t,n){let{result:r,log:i,hadResult:a}=IB(t.stdout,n),o=e.name?`workflow: ${e.name}${e.description?` — `+e.description:``}\n`:``,s=i?eV(i)+`
3256
3237
  `:``;return t.exitCode!==0||!a?{stdout:o+s,stderr:t.stderr||(a?``:`workflow: script produced no result
3257
3238
  `),exitCode:t.exitCode||1}:{stdout:o+s+(typeof r==`string`?r:JSON.stringify(r))+`
3258
- `,stderr:t.stderr,exitCode:0}}function tV(e){return e.split(`
3239
+ `,stderr:t.stderr,exitCode:0}}function eV(e){return e.split(`
3259
3240
  `).map(e=>e.replace(/^WFPHASE/,`▸ `).replace(/^WFLOG/,`· `)).join(`
3260
- `)}function nV(e){return{stdout:``,stderr:`xxd: ${e}\n`,exitCode:1}}function rV(e){if(e==null)throw Error(`missing option value`);let t=e.startsWith(`-`),n=t||e.startsWith(`+`)?e.slice(1):e,r;if(/^0x[0-9a-fA-F]+$/.test(n))r=parseInt(n.slice(2),16);else if(/^[0-9]+$/.test(n))r=parseInt(n,10);else throw Error(`invalid number: ${e}`);return t?-r:r}function iV(e,t){let n=e.toString(16).padStart(2,`0`);return t?n.toUpperCase():n}function aV(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function oV(e){return e.replace(/[^0-9a-zA-Z]/g,`_`)}function sV(e,t,n,r,i){let a=[];for(let o=0;o<e.length;o+=t){let s=Math.min(o+t,e.length),c=(i+o).toString(16).padStart(8,`0`),l=``;for(let i=0;i<t;i++)n>0&&i>0&&i%n===0&&(l+=` `),l+=o+i<s?iV(e[o+i],r):` `;let u=``;for(let t=o;t<s;t++)u+=e[t]>=32&&e[t]<=126?String.fromCharCode(e[t]):`.`;a.push(`${c}: ${l} ${u}`)}return a.length?a.join(`
3241
+ `)}function tV(e){return{stdout:``,stderr:`xxd: ${e}\n`,exitCode:1}}function nV(e){if(e==null)throw Error(`missing option value`);let t=e.startsWith(`-`),n=t||e.startsWith(`+`)?e.slice(1):e,r;if(/^0x[0-9a-fA-F]+$/.test(n))r=parseInt(n.slice(2),16);else if(/^[0-9]+$/.test(n))r=parseInt(n,10);else throw Error(`invalid number: ${e}`);return t?-r:r}function rV(e,t){let n=e.toString(16).padStart(2,`0`);return t?n.toUpperCase():n}function iV(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function aV(e){return e.replace(/[^0-9a-zA-Z]/g,`_`)}function oV(e,t,n,r,i){let a=[];for(let o=0;o<e.length;o+=t){let s=Math.min(o+t,e.length),c=(i+o).toString(16).padStart(8,`0`),l=``;for(let i=0;i<t;i++)n>0&&i>0&&i%n===0&&(l+=` `),l+=o+i<s?rV(e[o+i],r):` `;let u=``;for(let t=o;t<s;t++)u+=e[t]>=32&&e[t]<=126?String.fromCharCode(e[t]):`.`;a.push(`${c}: ${l} ${u}`)}return a.length?a.join(`
3261
3242
  `)+`
3262
- `:``}function cV(e,t,n){let r=``;for(let i=0;i<e.length;i+=t){let a=``;for(let r=0;r<t&&i+r<e.length;r++)a+=iV(e[i+r],n);r+=a+`
3263
- `}return r}function lV(e,t,n,r){let i=Array.from(e,e=>`0x${iV(e,n)}`),a=[];for(let e=0;e<i.length;e+=t)a.push(` `+i.slice(e,e+t).join(`, `));let o=a.join(`,
3243
+ `:``}function sV(e,t,n){let r=``;for(let i=0;i<e.length;i+=t){let a=``;for(let r=0;r<t&&i+r<e.length;r++)a+=rV(e[i+r],n);r+=a+`
3244
+ `}return r}function cV(e,t,n,r){let i=Array.from(e,e=>`0x${rV(e,n)}`),a=[];for(let e=0;e<i.length;e+=t)a.push(` `+i.slice(e,e+t).join(`, `));let o=a.join(`,
3264
3245
  `);return r===null?i.length?o+`
3265
- `:``:`unsigned char ${r}[] = {\n${o}\n};\nunsigned int ${r}_len = ${e.length};\n`}function uV(e){let t=e.replace(/[^0-9a-fA-F]/g,``),n=Math.floor(t.length/2),r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=parseInt(t.substr(e*2,2),16);return r}function dV(e){let t=[],n=0;for(let r of e.split(`
3266
- `)){let e=r.replace(/\r$/,``),i=e.indexOf(`:`);if(i<0)continue;let a=parseInt(e.slice(0,i).trim(),16);if(Number.isNaN(a))continue;let o=e.slice(i+1),s=o.indexOf(` `);s>=0&&(o=o.slice(0,s));let c=o.replace(/[^0-9a-fA-F]/g,``),l=[];for(let e=0;e+1<c.length;e+=2)l.push(parseInt(c.substr(e,2),16));l.length&&(t.push({offset:a,bytes:l}),n=Math.max(n,a+l.length))}if(!t.length)return/* @__PURE__ */ new Uint8Array;let r=new Uint8Array(n);for(let e of t)for(let t=0;t<e.bytes.length;t++)r[e.offset+t]=e.bytes[t];return r}const fV={"-u":`upper`,"-p":`plain`,"-ps":`plain`,"-postscript":`plain`,"-i":`include`,"-include":`include`,"-r":`revert`,"-revert":`revert`},pV=[{key:`cols`,exact:[`-c`,`-cols`],attached:/^-c(0x)?[0-9]/},{key:`group`,exact:[`-g`,`-groupsize`],attached:/^-g(0x)?[0-9]/},{key:`length`,exact:[`-l`,`-len`],attached:/^-l(0x)?[0-9]/},{key:`seek`,exact:[`-s`,`-seek`],attached:/^-s[+-]?(0x)?[0-9]/}];function mV(e){let t={upper:!1,plain:!1,include:!1,revert:!1,positional:[]};for(let n=0;n<e.length;n++){let r=e[n],i=fV[r];if(i){t[i]=!0;continue}let a=pV.find(e=>e.exact.includes(r)||e.attached.test(r));if(a){t[a.key]=rV(a.exact.includes(r)?e[++n]:r.slice(2));continue}if(r!==`-`&&r.startsWith(`-`)&&r.length>1)throw Error(`invalid option ${r}`);t.positional.push(r)}return t}function hV(e){return e.includes(`-h`)||e.includes(`--help`)||e.includes(`-help`)}async function gV(e,t,n){if(!n&&t)return e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t));let r=lr(e.stdin),i=new Uint8Array(r.length);for(let e=0;e<r.length;e++)i[e]=r.charCodeAt(e)&255;return i}function _V(e,t,n,r,i){let a=e.cols&&e.cols>0?e.cols:e.plain?30:e.include?12:16;return e.plain?cV(t,a,e.upper):e.include?lV(t,a,e.upper,i?null:oV(r??``)):sV(t,a,e.group!=null&&e.group>=0?e.group:2,e.upper,n)}function vV(e,t){let n=0,r=t;return e.seek!==void 0&&(n=e.seek<0?Math.max(0,r.length+e.seek):Math.min(e.seek,r.length),r=r.subarray(n)),e.length!==void 0&&(r=r.subarray(0,Math.max(0,e.length))),{data:r,base:n}}function yV(){return C(`xxd`,async(e,t)=>{if(hV(e))return{stdout:`usage: xxd [options] [infile [outfile]]
3246
+ `:``:`unsigned char ${r}[] = {\n${o}\n};\nunsigned int ${r}_len = ${e.length};\n`}function lV(e){let t=e.replace(/[^0-9a-fA-F]/g,``),n=Math.floor(t.length/2),r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=parseInt(t.substr(e*2,2),16);return r}function uV(e){let t=[],n=0;for(let r of e.split(`
3247
+ `)){let e=r.replace(/\r$/,``),i=e.indexOf(`:`);if(i<0)continue;let a=parseInt(e.slice(0,i).trim(),16);if(Number.isNaN(a))continue;let o=e.slice(i+1),s=o.indexOf(` `);s>=0&&(o=o.slice(0,s));let c=o.replace(/[^0-9a-fA-F]/g,``),l=[];for(let e=0;e+1<c.length;e+=2)l.push(parseInt(c.substr(e,2),16));l.length&&(t.push({offset:a,bytes:l}),n=Math.max(n,a+l.length))}if(!t.length)return/* @__PURE__ */ new Uint8Array;let r=new Uint8Array(n);for(let e of t)for(let t=0;t<e.bytes.length;t++)r[e.offset+t]=e.bytes[t];return r}const dV={"-u":`upper`,"-p":`plain`,"-ps":`plain`,"-postscript":`plain`,"-i":`include`,"-include":`include`,"-r":`revert`,"-revert":`revert`},fV=[{key:`cols`,exact:[`-c`,`-cols`],attached:/^-c(0x)?[0-9]/},{key:`group`,exact:[`-g`,`-groupsize`],attached:/^-g(0x)?[0-9]/},{key:`length`,exact:[`-l`,`-len`],attached:/^-l(0x)?[0-9]/},{key:`seek`,exact:[`-s`,`-seek`],attached:/^-s[+-]?(0x)?[0-9]/}];function pV(e){let t={upper:!1,plain:!1,include:!1,revert:!1,positional:[]};for(let n=0;n<e.length;n++){let r=e[n],i=dV[r];if(i){t[i]=!0;continue}let a=fV.find(e=>e.exact.includes(r)||e.attached.test(r));if(a){t[a.key]=nV(a.exact.includes(r)?e[++n]:r.slice(2));continue}if(r!==`-`&&r.startsWith(`-`)&&r.length>1)throw Error(`invalid option ${r}`);t.positional.push(r)}return t}function mV(e){return e.includes(`-h`)||e.includes(`--help`)||e.includes(`-help`)}async function hV(e,t,n){if(!n&&t)return e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t));let r=lr(e.stdin),i=new Uint8Array(r.length);for(let e=0;e<r.length;e++)i[e]=r.charCodeAt(e)&255;return i}function gV(e,t,n,r,i){let a=e.cols&&e.cols>0?e.cols:e.plain?30:e.include?12:16;return e.plain?sV(t,a,e.upper):e.include?cV(t,a,e.upper,i?null:aV(r??``)):oV(t,a,e.group!=null&&e.group>=0?e.group:2,e.upper,n)}function _V(e,t){let n=0,r=t;return e.seek!==void 0&&(n=e.seek<0?Math.max(0,r.length+e.seek):Math.min(e.seek,r.length),r=r.subarray(n)),e.length!==void 0&&(r=r.subarray(0,Math.max(0,e.length))),{data:r,base:n}}function vV(){return C(`xxd`,async(e,t)=>{if(mV(e))return{stdout:`usage: xxd [options] [infile [outfile]]
3267
3248
  -c cols number of octets per line (default 16; 30 for -p; 12 for -i)
3268
3249
  -g bytes number of octets per group (default 2; 0 disables grouping)
3269
3250
  -l len stop after len octets
@@ -3273,9 +3254,9 @@ pass --wait to block and print the full result.`,HB=/* @__PURE__ */ new Set([`li
3273
3254
  -i output in C include style
3274
3255
  -r reverse: convert a hex dump back to binary (-r -p for plain)
3275
3256
  -h show this help
3276
- `,stderr:``,exitCode:0};let n;try{n=mV(e)}catch(e){return nV(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await gV(t,r,a)}catch{return nV(`${r}: No such file or directory`)}if(n.revert){let e=aV(o),r=n.plain?uV(e):dV(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:aV(r),stderr:``,exitCode:0}}let{data:s,base:c}=vV(n,o),l=_V(n,s,c,r,a);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),l),{stdout:``,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}})}async function bV(e,t,n,r){if((await e.fs.stat(t)).isFile)return r[n]=await e.fs.readFileBuffer(t),1;let i=await e.fs.readdir(t),a=0;for(let o of i){let i=Mr(t,o),s=n?`${n}/${o}`:o;a+=await bV(e,i,s,r)}return a}function xV(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3277
- `,stderr:``,exitCode:0}}function SV(){return C(`zip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return xV();let n=!1,r=[];for(let t of e){if(t===`-r`){n=!0;continue}if(t.startsWith(`-`))return{stdout:``,stderr:`zip: unsupported option ${t}\n`,exitCode:1};r.push(t)}if(r.length<2)return{stdout:``,stderr:`zip: expected archive path and at least one input path
3278
- `,exitCode:1};let i=t.fs.resolvePath(t.cwd,r[0]),a=r.slice(1),o={},s=0;for(let e of a){let r=t.fs.resolvePath(t.cwd,e),i=await t.fs.stat(r),a=(e.startsWith(`/`)?e.slice(1):e.replace(/^\.\//,``))||Nr(r);if(i.isDirectory&&!n)return{stdout:``,stderr:`zip: ${e} is a directory (use -r)\n`,exitCode:1};s+=await bV(t,r,a,o)}if(s===0)return{stdout:``,stderr:`zip: nothing to do
3279
- `,exitCode:1};let c=Rt(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function CV(e){let t;return C(`mcp`,async(n,r)=>{if(!t){let{createMcpCommand:n}=await import(`./mcp-command-71cXHaO5.js`);t=n({fs:e.fs,scriptCatalog:e.scriptCatalog,connectionManager:e.mcpConnectionManager})}return t.execute(n,r)})}function wV(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function TV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[MO(`ipk`,r),MO(`npm`,r),MO(`i`,r),xk(`ipx`,{fs:t,fetch:n}),xk(`npx`,{fs:t,fetch:n}),wb(`di`,{fs:t,fetch:n}),wb(`uv`,{fs:t,fetch:n}),YL({fs:t,fetch:n})]}function EV(e){let t={buildProcessConfig:e.buildProcessConfig};return[`python3`,`python`,`pyodide`].map(e=>tN(e,t))}function DV(e){let t=e.scriptCatalog;return{buildProcessConfig:e.buildProcessConfig,terminal:e.terminal,gate:e.gateNativeCommand,commands:t&&(()=>t.getWasmCommands()),gitIdentity:e.gitIdentity}}function OV(){return[ZP(),IS()]}function kV(e={}){let t=[LE({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),oe(),NF(),QP(),GP(e.browserAPI,e.fs),zj(e.browserAPI),zy(e.browserAPI),HD(e),SV(),TL(),_I(e.fs?{fs:e.fs}:{}),BF(),qF(),WF(),Pv(),bz(DV(e)),lC(DV(e)),yV(),DF(`sqlite3`),DF(`sqllite`),PI(),eL(),Bx(),gv(),nj({buildProcessConfig:e.buildProcessConfig}),nj({buildProcessConfig:e.buildProcessConfig},`jsh`),...EV(e),...TV(e),...e.fs?[cC({fs:e.fs})]:[],...e.fs?[mA({fs:e.fs})]:[],...e.fetch?[JE({fetch:e.fetch,streamFetch:e.streamFetch})]:[],LS(),RS(),XS(),Fz(e.webhook),bB(),Ry(e.crontask),CV(e),aM({fs:e.fs,fetch:e.fetch}),sC(),vF(),Bj(),Vj(`pdftk`),Vj(`pdf`),_v(`biscotto`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),_v(`biscotti`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),Zj(`pdftoppm`),Zj(`pdftocairo`),Qj(`pdftotext`),Sy(`convert`),Sy(`magick`),AB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),iL(),bL(),RD(),zD(),xL(),hA(),aN(),sA(),dx(),_j(),gj(),iA(),gP(wV(e)),Zp(e.gitCredential),vN({fs:e.fs}),WN(),jv(),Mv(),Nv(`xclip`),Nv(`xsel`),UN(),TC(),c_(),l_(),HA(e.fs),_t(),sj(),u_({getParentJid:e.getParentJid}),yx(),DM({processManager:e.processManager}),uR({processManager:e.processManager}),wk({processManager:e.processManager}),Sk({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...f_(),pA(),Xk(),FR(),bD(),xS(),ZR({processManager:e.processManager}),Lv({processManager:e.processManager,browser:e.browserAPI,sudoBroker:e.sudoCommand?.broker}),MS(),wv({registry:e.cherryRuntimeRegistry}),Jy(),eb({fs:e.fs}),tb({fs:e.fs}),FF(e.sudoCommand),qB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),xB(),...OV()];return e.fs&&(eM(),t.push(...er.map(t=>PE(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let AV=null;function jV(e){AV=e}function MV(e){AV?.(e)}var NV=Yt();const PV={user:`user`,home:_r},FV=/* @__PURE__ */ new Set([`root`,`nobody`,`nogroup`]),IV=/^[A-Za-z_][A-Za-z0-9_.-]*$/;function LV(e){return{user:IV.test(e.user)&&!FV.has(e.user)?e.user:PV.user,home:e.home.startsWith(`/`)&&!/[:\n]/.test(e.home)?e.home:PV.home}}function RV(e,t){let{user:n,home:r}=LV(t);if(e===`/etc/passwd`)return[`root:x:0:0:root:/root:/bin/bash`,`${n}:x:1000:1000:SLICC user:${r}:/bin/bash`,`nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin`,``].join(`
3257
+ `,stderr:``,exitCode:0};let n;try{n=pV(e)}catch(e){return tV(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await hV(t,r,a)}catch{return tV(`${r}: No such file or directory`)}if(n.revert){let e=iV(o),r=n.plain?lV(e):uV(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:iV(r),stderr:``,exitCode:0}}let{data:s,base:c}=_V(n,o),l=gV(n,s,c,r,a);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),l),{stdout:``,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}})}async function yV(e,t,n,r){if((await e.fs.stat(t)).isFile)return r[n]=await e.fs.readFileBuffer(t),1;let i=await e.fs.readdir(t),a=0;for(let o of i){let i=Mr(t,o),s=n?`${n}/${o}`:o;a+=await yV(e,i,s,r)}return a}function bV(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3258
+ `,stderr:``,exitCode:0}}function xV(){return C(`zip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return bV();let n=!1,r=[];for(let t of e){if(t===`-r`){n=!0;continue}if(t.startsWith(`-`))return{stdout:``,stderr:`zip: unsupported option ${t}\n`,exitCode:1};r.push(t)}if(r.length<2)return{stdout:``,stderr:`zip: expected archive path and at least one input path
3259
+ `,exitCode:1};let i=t.fs.resolvePath(t.cwd,r[0]),a=r.slice(1),o={},s=0;for(let e of a){let r=t.fs.resolvePath(t.cwd,e),i=await t.fs.stat(r),a=(e.startsWith(`/`)?e.slice(1):e.replace(/^\.\//,``))||Nr(r);if(i.isDirectory&&!n)return{stdout:``,stderr:`zip: ${e} is a directory (use -r)\n`,exitCode:1};s+=await yV(t,r,a,o)}if(s===0)return{stdout:``,stderr:`zip: nothing to do
3260
+ `,exitCode:1};let c=Rt(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function SV(e){let t;return C(`mcp`,async(n,r)=>{if(!t){let{createMcpCommand:n}=await import(`./mcp-command-BTi69M97.js`);t=n({fs:e.fs,scriptCatalog:e.scriptCatalog,connectionManager:e.mcpConnectionManager})}return t.execute(n,r)})}function CV(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function wV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[jO(`ipk`,r),jO(`npm`,r),jO(`i`,r),bk(`ipx`,{fs:t,fetch:n}),bk(`npx`,{fs:t,fetch:n}),wb(`di`,{fs:t,fetch:n}),wb(`uv`,{fs:t,fetch:n}),JL({fs:t,fetch:n})]}function TV(e){let t={buildProcessConfig:e.buildProcessConfig};return[`python3`,`python`,`pyodide`].map(e=>eN(e,t))}function EV(e){let t=e.scriptCatalog;return{buildProcessConfig:e.buildProcessConfig,terminal:e.terminal,gate:e.gateNativeCommand,commands:t&&(()=>t.getWasmCommands()),gitIdentity:e.gitIdentity}}function DV(){return[XP(),IS()]}function OV(e={}){let t=[IE({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),oe(),MF(),ZP(),WP(e.browserAPI,e.fs),Rj(e.browserAPI),zy(e.browserAPI),VD(e),xV(),wL(),gI(e.fs?{fs:e.fs}:{}),zF(),KF(),UF(),Pv(),yz(EV(e)),lC(EV(e)),vV(),EF(`sqlite3`),EF(`sqllite`),NI(),$I(),Bx(),gv(),tj({buildProcessConfig:e.buildProcessConfig}),tj({buildProcessConfig:e.buildProcessConfig},`jsh`),...TV(e),...wV(e),...e.fs?[cC({fs:e.fs})]:[],...e.fs?[pA({fs:e.fs})]:[],...e.fetch?[qE({fetch:e.fetch,streamFetch:e.streamFetch})]:[],LS(),RS(),XS(),Pz(e.webhook),yB(),Ry(e.crontask),SV(e),iM({fs:e.fs,fetch:e.fetch}),sC(),_F(),zj(),Bj(`pdftk`),Bj(`pdf`),_v(`biscotto`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),_v(`biscotti`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),Xj(`pdftoppm`),Xj(`pdftocairo`),Zj(`pdftotext`),Sy(`convert`),Sy(`magick`),kB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),rL(),yL(),LD(),RD(),bL(),mA(),iN(),oA(),dx(),gj(),hj(),rA(),hP(CV(e)),Zp(e.gitCredential),_N({fs:e.fs}),UN(),jv(),Mv(),Nv(`xclip`),Nv(`xsel`),HN(),TC(),c_(),l_(),VA(e.fs),_t(),oj(),u_({getParentJid:e.getParentJid}),yx(),EM({processManager:e.processManager}),lR({processManager:e.processManager}),Ck({processManager:e.processManager}),xk({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...f_(),fA(),Yk(),PR(),yD(),xS(),XR({processManager:e.processManager}),Lv({processManager:e.processManager,browser:e.browserAPI,sudoBroker:e.sudoCommand?.broker}),MS(),wv({registry:e.cherryRuntimeRegistry}),Jy(),eb({fs:e.fs}),tb({fs:e.fs}),PF(e.sudoCommand),KB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),bB(),...DV()];return e.fs&&($j(),t.push(...er.map(t=>NE(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let kV=null;function AV(e){kV=e}function jV(e){kV?.(e)}var MV=Yt();const NV={user:`user`,home:_r},PV=/* @__PURE__ */ new Set([`root`,`nobody`,`nogroup`]),FV=/^[A-Za-z_][A-Za-z0-9_.-]*$/;function IV(e){return{user:FV.test(e.user)&&!PV.has(e.user)?e.user:NV.user,home:e.home.startsWith(`/`)&&!/[:\n]/.test(e.home)?e.home:NV.home}}function LV(e,t){let{user:n,home:r}=IV(t);if(e===`/etc/passwd`)return[`root:x:0:0:root:/root:/bin/bash`,`${n}:x:1000:1000:SLICC user:${r}:/bin/bash`,`nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin`,``].join(`
3280
3261
  `);if(e===`/etc/group`)return[`root:x:0:`,`${n}:x:1000:`,`nogroup:x:65534:`,``].join(`
3281
- `)}function zV(e,t=PV){let n=RV(e,t);return n===void 0?void 0:new TextEncoder().encode(n)}function BV(e){return e===`/etc`?[`group`,`passwd`]:[]}function VV(e){return e?.code===`ENOENT`}const HV=Reflect.get(ft,`DefenseInDepthBox`);function UV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function WV(e,t){if(typeof e!=`string`)return e;let n=UV(t);if(n===`binary`||n===`latin1`){let t=Oe(e);if(t)return t}return NV.Buffer.from(e,n)}function GV(e){return e===`/bin`?`/usr/bin`:e.startsWith(`/bin/`)?`/usr${e}`:e}function KV(e){let t=/^[A-Za-z0-9._+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`;return new TextEncoder().encode(`#!/bin/sh\n# SLICC command\nexec ${t} "$@"\n`)}function qV(e,t){let n=BV(e).filter(e=>!t.includes(e));return n.length?[...t,...n].sort():t}function JV(e,t){let n=BV(e).filter(e=>!t.some(t=>t.name===e));if(!n.length)return t;let r=n.map(e=>({name:e,isFile:!0,isDirectory:!1,isSymbolicLink:!1}));return[...t,...r].sort((e,t)=>e.name.localeCompare(t.name))}var YV=class{vfs;registeredCommandsFn=null;identityFn=null;listingStats=/* @__PURE__ */ new Map;listingStatsMax;listingStatsTtlMs;constructor(e,t){this.vfs=e,this.listingStatsMax=Math.max(1,t?.listingStatsMax??2e4),this.listingStatsTtlMs=t?.listingStatsTtlMs??1e3,this.updateMetadataBatch=this.updateMetadataBatch.bind(this),this.symlinkBatch=this.symlinkBatch.bind(this)}get listingStatsSize(){return this.listingStats.size}primeListingStats(e,t){let n=Date.now();if(t.length>this.listingStatsMax){this.listingStats.clear();return}this.sweepExpiredListingStats(n),this.listingStats.size+t.length>this.listingStatsMax&&this.listingStats.clear();let r=e===`/`?`/`:`${e}/`;for(let e of t){let t=Xe(e),i=`${r}${e.name}`;this.listingStats.delete(i),t&&this.listingStats.set(i,{stats:t,at:n})}}sweepExpiredListingStats(e){for(let[t,n]of this.listingStats){if(e-n.at<=this.listingStatsTtlMs)break;this.listingStats.delete(t)}}primedStats(e){let t=this.listingStats.get(e);if(t){if(Date.now()-t.at>this.listingStatsTtlMs){this.listingStats.delete(e);return}return t.stats}}dropListingStats(){this.listingStats.clear()}setRegisteredCommandsFn(e){this.registeredCommandsFn=e}setIdentityFn(e){this.identityFn=e}identityFile(e){return zV(e,this.identityFn?.()??PV)}isVirtualBinCommand(e){return e.length>0&&!e.includes(`/`)&&this.getVirtualBinCommands().includes(e)}getVirtualBinCommands(){return this.registeredCommandsFn?.()??[]}virtualUsrStat(e){let t=GV(e);if(t===`/usr`||t===`/usr/bin`)return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:/* @__PURE__ */ new Date(0)};if(t.startsWith(`/usr/bin/`)){let e=t.slice(9);if(this.isVirtualBinCommand(e))return{isFile:!0,isDirectory:!1,isSymbolicLink:!1,mode:493,size:KV(e).length,mtime:/* @__PURE__ */ new Date(0)}}return null}canWrite(e){let t=this.vfs;return typeof t.canWrite!=`function`||t.canWrite(e)}listMountPoints(){let e=this.vfs;return typeof e.listMountPoints==`function`?e.listMountPoints():[]}trusted(e){let t=HV?.runTrustedAsync;return t?t(e):Promise.resolve().then(e)}async readFile(e,t){return this.trusted(async()=>{let n=x(e),r=await this.readRaw(n),i=UV(t),a=NV.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString(i);return i!==`hex`&&i!==`base64`&&m(a,r),a})}async readFileBuffer(e){return this.trusted(()=>this.readRaw(x(e)))}async readRaw(e){let t=GV(e);if(t.startsWith(`/usr/bin/`)&&this.isVirtualBinCommand(t.slice(9)))return KV(t.slice(9));let n;try{n=await this.vfs.readFile(e,{encoding:`binary`})}catch(t){let n=this.identityFile(e);if(n&&VV(t))return n;throw t}return n instanceof Uint8Array?n:new TextEncoder().encode(n)}identityStat(e,t){let n=this.identityFile(e);if(n&&VV(t))return{isFile:!0,isDirectory:!1,isSymbolicLink:!1,mode:420,size:n.length,mtime:/* @__PURE__ */ new Date(0)}}async readFileBytes(e){let t=await this.readFileBuffer(e);return NV.Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString(`latin1`)}async getNativeFile(e){return this.trusted(()=>this.vfs.getNativeFile(x(e)))}async readFileRange(e,t,n){return this.trusted(()=>this.vfs.readFileRange(x(e),t,n))}async writeFile(e,t,n){return this.dropListingStats(),this.trusted(async()=>{let r=x(e);await this.vfs.writeFile(r,WV(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(x(e),WV(t,n)))}async exists(e){return this.trusted(async()=>{let t=x(e);return this.virtualUsrStat(t)?!0:await this.vfs.exists(t)||this.identityFile(t)!==void 0})}async stat(e){return this.trusted(async()=>{let t=x(e);try{return await this.statVfs(t)}catch(e){let n=this.identityStat(t,e);if(n)return n;throw e}})}async statVfs(e){let t=this.virtualUsrStat(e);if(t)return t;let n=this.vfs.statSync(e);if(n)return{isFile:n.type===`file`,isDirectory:n.type===`directory`,isSymbolicLink:!!n.isSymlink,mode:n.mode??(n.type===`directory`?493:420),size:n.size,mtime:new Date(n.mtime),identity:n.identity,dev:n.dev,ino:n.identity===void 0?void 0:n.ino};let r=this.primedStats(e)??await this.vfs.stat(e);return{isFile:r.type===`file`,isDirectory:r.type===`directory`,isSymbolicLink:!!r.isSymlink,mode:r.mode??(r.type===`directory`?493:420),size:r.size,mtime:new Date(r.mtime),identity:r.identity,dev:r.dev,ino:r.identity===void 0?void 0:r.ino}}async lstat(e){return this.trusted(async()=>{let t=x(e);try{return await this.lstatVfs(t)}catch(e){let n=this.identityStat(t,e);if(n)return n;throw e}})}async lstatVfs(e){let t=this.virtualUsrStat(e);if(t)return t;let n=this.vfs.lstatSync(e);if(n)return{isFile:n.type===`file`,isDirectory:n.type===`directory`,isSymbolicLink:n.type===`symlink`,mode:n.mode??(n.type===`directory`?493:n.type===`symlink`?511:420),size:n.size,mtime:new Date(n.mtime),identity:n.identity,dev:n.dev,ino:n.identity===void 0?void 0:n.ino};let r=this.primedStats(e)??await this.vfs.lstat(e);return{isFile:r.type===`file`,isDirectory:r.type===`directory`,isSymbolicLink:r.type===`symlink`,mode:r.mode??(r.type===`directory`?493:r.type===`symlink`?511:420),size:r.size,mtime:new Date(r.mtime),identity:r.identity,dev:r.dev,ino:r.identity===void 0?void 0:r.ino}}async mkdir(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.mkdir(x(e),t)})}async readdir(e){return this.trusted(async()=>{let t=x(e);if(t===`/usr`)return[`bin`];if(GV(t)===`/usr/bin`)return this.getVirtualBinCommands().slice().sort();let n=this.vfs.readDirSync(t);if(n!==null)return qV(t,n.map(e=>e.name));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),qV(t,r.map(e=>e.name))})}async readdirWithFileTypes(e){return this.trusted(async()=>{let t=x(e);if(t===`/usr`)return[{name:`bin`,isFile:!1,isDirectory:!0,isSymbolicLink:!1}];if(GV(t)===`/usr/bin`)return this.getVirtualBinCommands().slice().sort().map(e=>({name:e,isFile:!0,isDirectory:!1,isSymbolicLink:!1}));let n=this.vfs.readDirSync(t);if(n!==null)return JV(t,this.mapFastEntriesToDirents(n));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),JV(t,this.mapAsyncEntriesToDirents(r))})}mapFastEntriesToDirents(e){return e.map(e=>this.entryToDirent(e))}mapAsyncEntriesToDirents(e){return e.map(e=>this.entryToDirent(e))}entryToDirent(e){return e.type===`symlink`?{name:e.name,isFile:!1,isDirectory:!1,isSymbolicLink:!0}:{name:e.name,isFile:e.type===`file`,isDirectory:e.type===`directory`,isSymbolicLink:!1}}async rm(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.rm(x(e),t)})}async cp(e,t,n){return this.dropListingStats(),this.trusted(async()=>{let r=x(e),i=x(t),a;try{a=await this.vfs.stat(r)}catch(e){let t=this.identityFile(r);if(!t||!VV(e))throw e;await this.vfs.writeFile(i,t);return}if(a.type===`directory`){if(!n?.recursive)throw new Ze(`EISDIR`,`is a directory`,r);await this.cpDir(r,i)}else await this.vfs.copyFile(r,i)})}async cpDir(e,t){await this.vfs.mkdir(t,{recursive:!0});let n=await this.vfs.readDir(e);for(let r of n){let n=S(e,r.name),i=S(t,r.name);r.type===`directory`?await this.cpDir(n,i):await this.vfs.copyFile(n,i)}let r=new Set(n.map(e=>e.name));for(let n of BV(e)){let i=r.has(n)?void 0:this.identityFile(S(e,n));i&&await this.vfs.writeFile(S(t,n),i)}}async mv(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.rename(x(e),x(t))})}async rename(e,t){return this.mv(e,t)}resolvePath(e,t){return t.startsWith(`/`)?x(t):x(S(e,t))}getAllPaths(){return[]}async chmod(e,t){return this.dropListingStats(),this.trusted(()=>this.vfs.chmod(x(e),t))}async updateMetadataBatch(e){return this.dropListingStats(),this.trusted(()=>this.vfs.updateMetadataBatch(e.map(e=>({...e,path:x(e.path)}))))}async symlinkBatch(e){return this.dropListingStats(),this.trusted(()=>this.vfs.symlinkBatch(e.map(e=>({target:e.target,path:x(e.path)}))))}async symlink(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.symlink(e,x(t))})}async link(e,t){throw Error(`Hard links not supported in VirtualFS`)}async readlink(e){return this.trusted(async()=>this.vfs.readlink(x(e)))}async realpath(e){return this.trusted(async()=>this.vfs.realpath(x(e)))}async utimes(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.utimes(x(e),t,n))}invalidatePaths(e){this.dropListingStats();let t=this.vfs;t.invalidatePaths&&t.invalidatePaths(e)}async forgetSidecarConsistency(){await this.vfs.forgetSidecarConsistency?.()}};function XV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?XV(e.getUnderlyingFS?.()):null}const ZV=e(`almost-bash-shell`);function QV(e){if(!(`__SLICC_RUN_PID`in e)&&!(`__SLICC_OUTPUT_TEE__`in e)&&!(`__SLICC_SUDO_REASON`in e)&&!(`__SLICC_PIPESTATUS`in e)&&!(`__SLICC_PIPESTATUS_EX`in e))return{...e};let{[om]:t,[sm]:n,[Ep]:r,[Gt]:i,[Ht]:a,...o}=e;return o}function $V(e){let t=new AbortController,n=e.filter(e=>e!==void 0),r=()=>t.abort();for(let e of n)e.aborted?t.abort():e.addEventListener(`abort`,r,{once:!0});return{signal:t.signal,release(){for(let e of n)e.removeEventListener(`abort`,r)}}}var eH=class e{options;bash;vfsAdapter;gitCommands;mountCommands;lastEnv;cwd;umask=18;builtinCommandNames;staticBuiltinNames;allowedCommands;scriptCatalog;initialJshSync=null;ownsScriptCatalog;commandGate;jshRegistry;gnuBashFallback;pendingEnvWrites=/* @__PURE__ */ new Map;activeShellPid;progress;activeRunSignal;commandAbort=new AbortController;scriptRun=null;scriptRunsActive=0;registryNames=/* @__PURE__ */ new Set;outputTees=/* @__PURE__ */ new Map;nextOutputTeeId=0;resolveJshProcessConfig=e=>this.buildJshProcessConfig(cm(e));static buildAllowedCommandSet(e){return e.sudo?.defaultDisposition===`require-approval`||!e.allowedCommands||e.allowedCommands.includes(`*`)?null:new Set(e.allowedCommands)}static buildInitialEnv(e,t){return{HOME:_r,PATH:Cr,USER:`user`,SHELL:`/bin/bash`,TMPDIR:`/tmp`,PWD:t,...e.env}}buildSupplementalCommands(e,t,n){return kV({onMediaPreview:async e=>this.renderMediaPreview(e),getJshCommands:()=>this.getJshCommandNames(),getWorkflowCommands:()=>this.getWorkflowCommandNames(),syncScriptCommands:()=>this.syncJshCommands(),getStaticBuiltins:()=>[...this.staticBuiltinNames],getScriptRegisteredNames:()=>this.jshRegistry.scriptRegisteredNames(),fs:e.fs,fetch:t,streamFetch:n,scriptCatalog:this.scriptCatalog,browserAPI:e.browserAPI,webhook:e.webhook,crontask:e.crontask,getParentJid:e.getParentJid,isScoop:e.isScoop,buildProcessConfig:this.resolveJshProcessConfig,terminal:e.terminal,gateNativeCommand:this.gateNativeCommand,processManager:e.processManager,sudoCommand:e.sudo?{broker:e.sudo.broker,persistGrant:async e=>{this.commandGate.queueGrant(e)},suppressNextGate:e=>this.commandGate.registerSudoBypass(e)}:void 0,setEnv:(e,t)=>{this.pendingEnvWrites.set(e,t),this.lastEnv[e]=t},unsetEnv:e=>{this.pendingEnvWrites.set(e,null),delete this.lastEnv[e]},gitCredential:{githubToken:(e,t)=>this.gitCommands.githubCredential(e,t),githubDomains:xp},gitIdentity:()=>this.gitCommands.identity(),mcpConnectionManager:e.mcpConnectionManager})}constructor(t){this.options=t,this.vfsAdapter=new YV(t.fs),this.progress=new pm({scrubLabel:t.scrubProgressLabel}),this.allowedCommands=e.buildAllowedCommandSet(t),this.commandGate=new Qp({getSudo:()=>this.options.sudo,fs:t.fs});let n=t.cwd??`/`,r=e.buildInitialEnv(t,n);this.gitCommands=new vp({fs:t.fs,authorName:r.GIT_AUTHOR_NAME??`User`,authorEmail:r.GIT_AUTHOR_EMAIL??`user@example.com`,ensureFreshGithubToken:bp}),this.mountCommands=new Gs({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:Qm});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=XV(i)??XV(a);this.scriptCatalog=t.scriptCatalog??new Ni({jshFs:i,bshFs:a,watcher:o}),this.ownsScriptCatalog=!t.scriptCatalog,o&&o.watch(`/`,e=>e.endsWith(`.jsh`)||e.endsWith(`.workflow.js`)||br(e),()=>{this.syncJshCommands().catch(()=>void 0)});let s=this.createGitCustomCommand(),c=g({progress:vm(this.progress)}),l=_({progress:vm(this.progress)}),u=this.buildSupplementalCommands(t,c,l),d=[s,this.createMountCustomCommand(),this.createUmountCustomCommand(),Kh(t.fs),Ug(t.fs,c,t.browserAPI),...u].filter(e=>this.isCommandAllowed(e.name)),f=[...mt(),...dt()],p=this.allowedCommands?f.filter(e=>this.isCommandAllowed(e)):void 0;if(this.bash=new pt({fs:this.vfsAdapter,cwd:n,env:{},fetch:c,commands:p,customCommands:d,sleep:zm(this.progress,{isAborted:()=>this.activeRunSignal?.aborted??!1}),executionLimitProfile:t.executionLimitProfile,executionLimits:em(t.isScoop?.()??!1,t.executionLimits)}),this.bash.registerTransformPlugin(oh),this.allowedCommands!==null){let e=this.bash;for(let t of dt())this.isCommandAllowed(t)||e.commands.delete(t)}{let e=this.bash;for(let[t,n]of e.commands)e.commands.set(t,this.wrapCommandForDispatch(n));this.registryNames=new Set(e.commands.keys())}let m=d.map(e=>e.name),h=p??[...mt(),...dt()];this.builtinCommandNames=/* @__PURE__ */ new Set([...h,...m]),this.staticBuiltinNames=new Set(this.builtinCommandNames),this.vfsAdapter.setRegisteredCommandsFn(()=>[...this.builtinCommandNames]),this.vfsAdapter.setIdentityFn(()=>({user:this.lastEnv.USER??`user`,home:this.lastEnv.HOME??`/home/user`})),this.lastEnv={...r},this.cwd=n,this.bindCollaborators(t),this.startInitialJshSync()}bindCollaborators(e){let t=this;this.jshRegistry=new fm({get bash(){return t.bash},scriptCatalog:this.scriptCatalog,discoveryFs:e.jshDiscoveryFs??e.fs,vfsAdapter:this.vfsAdapter,get cwd(){return t.cwd},get lastEnv(){return t.lastEnv},get umask(){return t.umask},builtinCommandNames:this.builtinCommandNames,isCommandAllowed:e=>this.isCommandAllowed(e),wrapCommandForDispatch:e=>this.wrapCommandForDispatch(e),path:()=>this.lastEnv.PATH,buildJshProcessConfig:e=>this.buildJshProcessConfig(e),gateNativeCommand:this.gateNativeCommand,gitIdentity:()=>this.gitCommands.identity()}),this.gnuBashFallback=new lm({gnuBash:e.gnuBash===!0,get lastEnv(){return t.lastEnv},get cwd(){return t.cwd},get umask(){return t.umask},vfsAdapter:this.vfsAdapter,get bash(){return t.bash},scriptCatalog:this.scriptCatalog,outputTees:this.outputTees,gateNativeCommand:this.gateNativeCommand,buildJshProcessConfig:e=>this.buildJshProcessConfig(e),gitIdentity:()=>this.gitCommands.identity(),flushPendingCommandGrants:()=>this.commandGate.flushPendingCommandGrants(),applyPendingEnvWrites:()=>this.applyPendingEnvWrites(),syncJshCommands:()=>this.syncJshCommands(),adoptCwd:e=>{this.cwd=e},adoptEnv:e=>{this.lastEnv=e}})}getBash(){return this.bash}getCwd(){return this.cwd}getScriptCatalog(){return this.scriptCatalog}getEnv(){return{...this.lastEnv}}setMaskedEnvVar(e,t){this.pendingEnvWrites.set(e,t),this.lastEnv[e]=t}applySessionOverrides(e){e.cwd!==void 0&&(this.cwd=e.cwd,this.lastEnv.PWD=e.cwd),e.env&&Object.assign(this.lastEnv,e.env)}async getJshCommandNames(){return this.jshRegistry.getJshCommandNames()}async syncJshCommands(){return this.jshRegistry.syncJshCommands()}cancelActiveCommand(){this.commandAbort.abort(),this.commandAbort=new AbortController}async executeCommand(e,t,n,r=``,i){let a=this.activeShellPid;n!==void 0&&(this.activeShellPid=n);let o=i?.onOutput?`tee-${this.nextOutputTeeId+=1}`:void 0;o&&i?.onOutput&&this.outputTees.set(o,i.onOutput);try{let a=await this.runCommand(e,t,n,r,o,i?.capturePipeStatus);return{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode,...a.pipeStatus===void 0?{}:{pipeStatus:a.pipeStatus}}}finally{this.activeShellPid=a,o&&this.outputTees.delete(o)}}async executeScriptFile(e,t=[]){return gi(e,t,{fs:this.vfsAdapter,cwd:this.cwd,env:new Map(Object.entries(this.lastEnv)),stdin:``,exec:(e,t)=>this.bash.exec(e,{env:t?.env??this.lastEnv,cwd:t?.cwd??this.cwd,umask:this.umask,...t?.env===void 0?{}:{replaceEnv:!0}})},this.buildJshProcessConfig())}dispose(){this.ownsScriptCatalog&&this.scriptCatalog.dispose()}async renderMediaPreview(e){throw Error(`terminal preview is unavailable in headless mode`)}startInitialJshSync(){this.initialJshSync=this.initHomeAndProfile().then(()=>this.syncJshCommands()).catch(()=>void 0).finally(()=>{this.initialJshSync=null})}async initHomeAndProfile(){let e=this.options.fs;try{let t=this.options.env?.HOME??await gr(e);this.lastEnv.HOME=t,this.options.env?.USER||(this.lastEnv.USER=hr(t));let n=`${t.replace(/\/+$/,``)}/.profile`;if(!await e.exists(n).catch(()=>!1))return;let r=await this.bash.exec(`. "$HOME/.profile"`,{env:this.lastEnv,cwd:this.cwd,umask:this.umask});if(typeof r.umask==`number`&&(this.umask=r.umask),r.env){let{PWD:e,...t}=r.env;this.lastEnv={...t,PWD:this.lastEnv.PWD??this.cwd}}}catch(e){ZV.warn(`HOME/profile init failed; continuing with defaults`,e)}}async waitForInitialJshSync(e){let t=this.initialJshSync;if(t===null)return;if(!e){await t;return}if(e.aborted)return;let n;try{await new Promise(r=>{n=()=>r(),e.addEventListener(`abort`,n,{once:!0}),t.then(()=>r(),()=>r())})}finally{n&&e.removeEventListener(`abort`,n)}}async runCommand(e,t,n,r=``,i,a=!1){if(MV(e.trim().split(/\s+/)[0]||`unknown`),v(),await this.waitForInitialJshSync(t),await this.gnuBashFallback.usesGnuBash())return this.gnuBashFallback.runOnGnuBash(e,t,n,r,i,a);let o=Op(e),s={env:{...this.lastEnv,...n===void 0?{}:{[om]:String(n)},...i===void 0?{}:{[sm]:i},...o?{[Ep]:o}:{}},cwd:this.cwd,umask:this.umask,signal:t,...r===``?{}:{stdin:r,stdinKind:`bytes`}},c=this.lastEnv.PATH,l=$V([t,this.commandAbort.signal]);s.signal=l.signal,this.activeRunSignal=l.signal;let u=this.beginScriptRun(e),d;try{d=await this.bash.exec(Ut(e,a),s)}finally{l.release(),this.activeRunSignal===l.signal&&(this.activeRunSignal=void 0),this.endScriptRun(u)}if(await this.commandGate.flushPendingCommandGrants(),d=Vt(d,a),typeof d.umask==`number`&&(this.umask=d.umask),d.env&&(this.lastEnv=QV(d.env)),d.env&&this.lastEnv.PATH!==c&&await this.syncJshCommands().catch(()=>void 0),this.applyPendingEnvWrites(),d.env?.PWD&&(this.cwd=d.env.PWD),d.exitCode===127){let t=await this.jshRegistry.tryJshFallback(e,n);if(t)return this.syncJshCommands().catch(()=>void 0),t}if(d.exitCode!==0&&d.stderr.includes(`Permission denied`)){let{withShebangExecHint:e}=await import(`./shebang-exec-hint-DGW7999v.js`).then(e=>e.n);return zt(await e(d,this.cwd,this.vfsAdapter),d.pipeStatus)}return d}applyPendingEnvWrites(){for(let[e,t]of this.pendingEnvWrites)t===null?delete this.lastEnv[e]:this.lastEnv[e]=t;this.pendingEnvWrites.clear()}gateNativeCommand=async(e,t,n)=>{if(this.allowedCommands!==null&&!this.isCommandAllowed(e))return{stderr:`bash: ${e}: command not found\n`,exitCode:127};if(!this.commandGate.isTransparentGatingEnabled()||Hp.has(e))return null;let r=await this.commandGate.gateCommandDispatch(e,t,n[Ep]);return r?{stderr:r.stderr,exitCode:r.exitCode}:null};wrapCommandForDispatch(e){let t=this.commandGate.wrapCommandForSudo(e),n=e.name===`timeout`?Um(t,this.progress):Gm(t,this.progress),r=()=>this.scriptRun?.stepDone(),i=(e,t)=>this.teeCommandOutput(e,t),a=this.outputTees;return{...n,async execute(e,t){let o=t.env?.get(sm),s=o?a.get(o):void 0;s&&(t.writeStdout=s);try{let r=await qm(()=>n.execute(e,t),t.signal);return i(t.env,r),r}finally{r()}}}}teeCommandOutput(e,t){let n=e?.get(sm);if(!n)return;let r=this.outputTees.get(n);if(!r)return;let i=[t.stdout,t.stderr].filter(Boolean).join(``);i&&r(i)}beginScriptRun(e){if(this.scriptRunsActive+=1,!this.progress.hasSink())return null;if(this.scriptRunsActive>1)return this.scriptRun?.end(),this.scriptRun=null,null;let t={totalSteps:null};try{t=Pm(this.bash.transform(e).ast,this.registryNames)}catch{t={totalSteps:null}}return this.scriptRun=new Im(t,this.progress,Fm(e)),this.scriptRun}endScriptRun(e){this.scriptRunsActive=Math.max(0,this.scriptRunsActive-1),e&&(e.end(),this.scriptRun===e&&(this.scriptRun=null))}isCommandAllowed(e){return this.allowedCommands===null||this.allowedCommands.has(Hp.get(e)??e)}createGitCustomCommand(){let e=this.gitCommands;return C(`git`,async(t,n)=>{let r=n.cwd,i=await e.execute(t,r,n.env,P(n.stdin));return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}})}createMountCustomCommand(){let e=this.mountCommands;return C(`mount`,async(t,n)=>{let r=n.cwd,i=await e.execute(t,r,n.env);return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}})}createUmountCustomCommand(){let e=this.mountCommands;return C(`umount`,async(t,n)=>{let r=n.cwd,i=await e.executeUmount(t,r);return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}})}async getWorkflowCommandNames(){return this.jshRegistry.getWorkflowCommandNames()}buildJshProcessConfig(e){if(this.options.processManager&&this.options.processOwner)return{processManager:this.options.processManager,owner:this.options.processOwner,getParentPid:()=>e??this.activeShellPid??this.options.getCurrentShellPid?.()}}};export{Ha as _,LB as a,ks as c,Cs as d,is as f,Ua as g,za as h,NB as i,Es as l,Jo as m,YV as n,jB as o,rs as p,jV as r,Is as s,eH as t,Ts as u,Ho as v,Na as y};
3262
+ `)}function RV(e,t=NV){let n=LV(e,t);return n===void 0?void 0:new TextEncoder().encode(n)}function zV(e){return e===`/etc`?[`group`,`passwd`]:[]}function BV(e){return e?.code===`ENOENT`}const VV=Reflect.get(ft,`DefenseInDepthBox`);function HV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function UV(e,t){if(typeof e!=`string`)return e;let n=HV(t);if(n===`binary`||n===`latin1`){let t=Oe(e);if(t)return t}return MV.Buffer.from(e,n)}function WV(e){return e===`/bin`?`/usr/bin`:e.startsWith(`/bin/`)?`/usr${e}`:e}function GV(e){let t=/^[A-Za-z0-9._+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`;return new TextEncoder().encode(`#!/bin/sh\n# SLICC command\nexec ${t} "$@"\n`)}function KV(e,t){let n=zV(e).filter(e=>!t.includes(e));return n.length?[...t,...n].sort():t}function qV(e,t){let n=zV(e).filter(e=>!t.some(t=>t.name===e));if(!n.length)return t;let r=n.map(e=>({name:e,isFile:!0,isDirectory:!1,isSymbolicLink:!1}));return[...t,...r].sort((e,t)=>e.name.localeCompare(t.name))}var JV=class{vfs;registeredCommandsFn=null;identityFn=null;listingStats=/* @__PURE__ */ new Map;listingStatsMax;listingStatsTtlMs;constructor(e,t){this.vfs=e,this.listingStatsMax=Math.max(1,t?.listingStatsMax??2e4),this.listingStatsTtlMs=t?.listingStatsTtlMs??1e3,this.updateMetadataBatch=this.updateMetadataBatch.bind(this),this.symlinkBatch=this.symlinkBatch.bind(this)}get listingStatsSize(){return this.listingStats.size}primeListingStats(e,t){let n=Date.now();if(t.length>this.listingStatsMax){this.listingStats.clear();return}this.sweepExpiredListingStats(n),this.listingStats.size+t.length>this.listingStatsMax&&this.listingStats.clear();let r=e===`/`?`/`:`${e}/`;for(let e of t){let t=Xe(e),i=`${r}${e.name}`;this.listingStats.delete(i),t&&this.listingStats.set(i,{stats:t,at:n})}}sweepExpiredListingStats(e){for(let[t,n]of this.listingStats){if(e-n.at<=this.listingStatsTtlMs)break;this.listingStats.delete(t)}}primedStats(e){let t=this.listingStats.get(e);if(t){if(Date.now()-t.at>this.listingStatsTtlMs){this.listingStats.delete(e);return}return t.stats}}dropListingStats(){this.listingStats.clear()}setRegisteredCommandsFn(e){this.registeredCommandsFn=e}setIdentityFn(e){this.identityFn=e}identityFile(e){return RV(e,this.identityFn?.()??NV)}isVirtualBinCommand(e){return e.length>0&&!e.includes(`/`)&&this.getVirtualBinCommands().includes(e)}getVirtualBinCommands(){return this.registeredCommandsFn?.()??[]}virtualUsrStat(e){let t=WV(e);if(t===`/usr`||t===`/usr/bin`)return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:/* @__PURE__ */ new Date(0)};if(t.startsWith(`/usr/bin/`)){let e=t.slice(9);if(this.isVirtualBinCommand(e))return{isFile:!0,isDirectory:!1,isSymbolicLink:!1,mode:493,size:GV(e).length,mtime:/* @__PURE__ */ new Date(0)}}return null}canWrite(e){let t=this.vfs;return typeof t.canWrite!=`function`||t.canWrite(e)}listMountPoints(){let e=this.vfs;return typeof e.listMountPoints==`function`?e.listMountPoints():[]}trusted(e){let t=VV?.runTrustedAsync;return t?t(e):Promise.resolve().then(e)}async readFile(e,t){return this.trusted(async()=>{let n=x(e),r=await this.readRaw(n),i=HV(t),a=MV.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString(i);return i!==`hex`&&i!==`base64`&&m(a,r),a})}async readFileBuffer(e){return this.trusted(()=>this.readRaw(x(e)))}async readRaw(e){let t=WV(e);if(t.startsWith(`/usr/bin/`)&&this.isVirtualBinCommand(t.slice(9)))return GV(t.slice(9));let n;try{n=await this.vfs.readFile(e,{encoding:`binary`})}catch(t){let n=this.identityFile(e);if(n&&BV(t))return n;throw t}return n instanceof Uint8Array?n:new TextEncoder().encode(n)}identityStat(e,t){let n=this.identityFile(e);if(n&&BV(t))return{isFile:!0,isDirectory:!1,isSymbolicLink:!1,mode:420,size:n.length,mtime:/* @__PURE__ */ new Date(0)}}async readFileBytes(e){let t=await this.readFileBuffer(e);return MV.Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString(`latin1`)}async getNativeFile(e){return this.trusted(()=>this.vfs.getNativeFile(x(e)))}async readFileRange(e,t,n){return this.trusted(()=>this.vfs.readFileRange(x(e),t,n))}async writeFile(e,t,n){return this.dropListingStats(),this.trusted(async()=>{let r=x(e);await this.vfs.writeFile(r,UV(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(x(e),UV(t,n)))}async exists(e){return this.trusted(async()=>{let t=x(e);return this.virtualUsrStat(t)?!0:await this.vfs.exists(t)||this.identityFile(t)!==void 0})}async stat(e){return this.trusted(async()=>{let t=x(e);try{return await this.statVfs(t)}catch(e){let n=this.identityStat(t,e);if(n)return n;throw e}})}async statVfs(e){let t=this.virtualUsrStat(e);if(t)return t;let n=this.vfs.statSync(e);if(n)return{isFile:n.type===`file`,isDirectory:n.type===`directory`,isSymbolicLink:!!n.isSymlink,mode:n.mode??(n.type===`directory`?493:420),size:n.size,mtime:new Date(n.mtime),identity:n.identity,dev:n.dev,ino:n.identity===void 0?void 0:n.ino};let r=this.primedStats(e)??await this.vfs.stat(e);return{isFile:r.type===`file`,isDirectory:r.type===`directory`,isSymbolicLink:!!r.isSymlink,mode:r.mode??(r.type===`directory`?493:420),size:r.size,mtime:new Date(r.mtime),identity:r.identity,dev:r.dev,ino:r.identity===void 0?void 0:r.ino}}async lstat(e){return this.trusted(async()=>{let t=x(e);try{return await this.lstatVfs(t)}catch(e){let n=this.identityStat(t,e);if(n)return n;throw e}})}async lstatVfs(e){let t=this.virtualUsrStat(e);if(t)return t;let n=this.vfs.lstatSync(e);if(n)return{isFile:n.type===`file`,isDirectory:n.type===`directory`,isSymbolicLink:n.type===`symlink`,mode:n.mode??(n.type===`directory`?493:n.type===`symlink`?511:420),size:n.size,mtime:new Date(n.mtime),identity:n.identity,dev:n.dev,ino:n.identity===void 0?void 0:n.ino};let r=this.primedStats(e)??await this.vfs.lstat(e);return{isFile:r.type===`file`,isDirectory:r.type===`directory`,isSymbolicLink:r.type===`symlink`,mode:r.mode??(r.type===`directory`?493:r.type===`symlink`?511:420),size:r.size,mtime:new Date(r.mtime),identity:r.identity,dev:r.dev,ino:r.identity===void 0?void 0:r.ino}}async mkdir(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.mkdir(x(e),t)})}async readdir(e){return this.trusted(async()=>{let t=x(e);if(t===`/usr`)return[`bin`];if(WV(t)===`/usr/bin`)return this.getVirtualBinCommands().slice().sort();let n=this.vfs.readDirSync(t);if(n!==null)return KV(t,n.map(e=>e.name));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),KV(t,r.map(e=>e.name))})}async readdirWithFileTypes(e){return this.trusted(async()=>{let t=x(e);if(t===`/usr`)return[{name:`bin`,isFile:!1,isDirectory:!0,isSymbolicLink:!1}];if(WV(t)===`/usr/bin`)return this.getVirtualBinCommands().slice().sort().map(e=>({name:e,isFile:!0,isDirectory:!1,isSymbolicLink:!1}));let n=this.vfs.readDirSync(t);if(n!==null)return qV(t,this.mapFastEntriesToDirents(n));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),qV(t,this.mapAsyncEntriesToDirents(r))})}mapFastEntriesToDirents(e){return e.map(e=>this.entryToDirent(e))}mapAsyncEntriesToDirents(e){return e.map(e=>this.entryToDirent(e))}entryToDirent(e){return e.type===`symlink`?{name:e.name,isFile:!1,isDirectory:!1,isSymbolicLink:!0}:{name:e.name,isFile:e.type===`file`,isDirectory:e.type===`directory`,isSymbolicLink:!1}}async rm(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.rm(x(e),t)})}async cp(e,t,n){return this.dropListingStats(),this.trusted(async()=>{let r=x(e),i=x(t),a;try{a=await this.vfs.stat(r)}catch(e){let t=this.identityFile(r);if(!t||!BV(e))throw e;await this.vfs.writeFile(i,t);return}if(a.type===`directory`){if(!n?.recursive)throw new Ze(`EISDIR`,`is a directory`,r);await this.cpDir(r,i)}else await this.vfs.copyFile(r,i)})}async cpDir(e,t){await this.vfs.mkdir(t,{recursive:!0});let n=await this.vfs.readDir(e);for(let r of n){let n=S(e,r.name),i=S(t,r.name);r.type===`directory`?await this.cpDir(n,i):await this.vfs.copyFile(n,i)}let r=new Set(n.map(e=>e.name));for(let n of zV(e)){let i=r.has(n)?void 0:this.identityFile(S(e,n));i&&await this.vfs.writeFile(S(t,n),i)}}async mv(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.rename(x(e),x(t))})}async rename(e,t){return this.mv(e,t)}resolvePath(e,t){return t.startsWith(`/`)?x(t):x(S(e,t))}getAllPaths(){return[]}async chmod(e,t){return this.dropListingStats(),this.trusted(()=>this.vfs.chmod(x(e),t))}async updateMetadataBatch(e){return this.dropListingStats(),this.trusted(()=>this.vfs.updateMetadataBatch(e.map(e=>({...e,path:x(e.path)}))))}async symlinkBatch(e){return this.dropListingStats(),this.trusted(()=>this.vfs.symlinkBatch(e.map(e=>({target:e.target,path:x(e.path)}))))}async symlink(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.symlink(e,x(t))})}async link(e,t){throw Error(`Hard links not supported in VirtualFS`)}async readlink(e){return this.trusted(async()=>this.vfs.readlink(x(e)))}async realpath(e){return this.trusted(async()=>this.vfs.realpath(x(e)))}async utimes(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.utimes(x(e),t,n))}invalidatePaths(e){this.dropListingStats();let t=this.vfs;t.invalidatePaths&&t.invalidatePaths(e)}async forgetSidecarConsistency(){await this.vfs.forgetSidecarConsistency?.()}};function YV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?YV(e.getUnderlyingFS?.()):null}const XV=e(`almost-bash-shell`);function ZV(e){if(!(`__SLICC_RUN_PID`in e)&&!(`__SLICC_OUTPUT_TEE__`in e)&&!(`__SLICC_SUDO_REASON`in e)&&!(`__SLICC_PIPESTATUS`in e)&&!(`__SLICC_PIPESTATUS_EX`in e))return{...e};let{[om]:t,[sm]:n,[Ep]:r,[Gt]:i,[Ht]:a,...o}=e;return o}function QV(e){let t=new AbortController,n=e.filter(e=>e!==void 0),r=()=>t.abort();for(let e of n)e.aborted?t.abort():e.addEventListener(`abort`,r,{once:!0});return{signal:t.signal,release(){for(let e of n)e.removeEventListener(`abort`,r)}}}var $V=class e{options;bash;vfsAdapter;gitCommands;mountCommands;lastEnv;cwd;umask=18;builtinCommandNames;staticBuiltinNames;allowedCommands;scriptCatalog;initialJshSync=null;ownsScriptCatalog;commandGate;jshRegistry;gnuBashFallback;pendingEnvWrites=/* @__PURE__ */ new Map;activeShellPid;progress;activeRunSignal;commandAbort=new AbortController;scriptRun=null;scriptRunsActive=0;registryNames=/* @__PURE__ */ new Set;outputTees=/* @__PURE__ */ new Map;nextOutputTeeId=0;resolveJshProcessConfig=e=>this.buildJshProcessConfig(cm(e));static buildAllowedCommandSet(e){return e.sudo?.defaultDisposition===`require-approval`||!e.allowedCommands||e.allowedCommands.includes(`*`)?null:new Set(e.allowedCommands)}static buildInitialEnv(e,t){return{HOME:_r,PATH:Cr,USER:`user`,SHELL:`/bin/bash`,TMPDIR:`/tmp`,PWD:t,...e.env}}buildSupplementalCommands(e,t,n){return OV({onMediaPreview:async e=>this.renderMediaPreview(e),getJshCommands:()=>this.getJshCommandNames(),getWorkflowCommands:()=>this.getWorkflowCommandNames(),syncScriptCommands:()=>this.syncJshCommands(),getStaticBuiltins:()=>[...this.staticBuiltinNames],getScriptRegisteredNames:()=>this.jshRegistry.scriptRegisteredNames(),fs:e.fs,fetch:t,streamFetch:n,scriptCatalog:this.scriptCatalog,browserAPI:e.browserAPI,webhook:e.webhook,crontask:e.crontask,getParentJid:e.getParentJid,isScoop:e.isScoop,buildProcessConfig:this.resolveJshProcessConfig,terminal:e.terminal,gateNativeCommand:this.gateNativeCommand,processManager:e.processManager,sudoCommand:e.sudo?{broker:e.sudo.broker,persistGrant:async e=>{this.commandGate.queueGrant(e)},suppressNextGate:e=>this.commandGate.registerSudoBypass(e)}:void 0,setEnv:(e,t)=>{this.pendingEnvWrites.set(e,t),this.lastEnv[e]=t},unsetEnv:e=>{this.pendingEnvWrites.set(e,null),delete this.lastEnv[e]},gitCredential:{githubToken:(e,t)=>this.gitCommands.githubCredential(e,t),githubDomains:xp},gitIdentity:()=>this.gitCommands.identity(),mcpConnectionManager:e.mcpConnectionManager})}constructor(t){this.options=t,this.vfsAdapter=new JV(t.fs),this.progress=new pm({scrubLabel:t.scrubProgressLabel}),this.allowedCommands=e.buildAllowedCommandSet(t),this.commandGate=new Qp({getSudo:()=>this.options.sudo,fs:t.fs});let n=t.cwd??`/`,r=e.buildInitialEnv(t,n);this.gitCommands=new vp({fs:t.fs,authorName:r.GIT_AUTHOR_NAME??`User`,authorEmail:r.GIT_AUTHOR_EMAIL??`user@example.com`,ensureFreshGithubToken:bp}),this.mountCommands=new Gs({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:Qm});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=YV(i)??YV(a);this.scriptCatalog=t.scriptCatalog??new Ni({jshFs:i,bshFs:a,watcher:o}),this.ownsScriptCatalog=!t.scriptCatalog,o&&o.watch(`/`,e=>e.endsWith(`.jsh`)||e.endsWith(`.workflow.js`)||br(e),()=>{this.syncJshCommands().catch(()=>void 0)});let s=this.createGitCustomCommand(),c=g({progress:vm(this.progress)}),l=_({progress:vm(this.progress)}),u=this.buildSupplementalCommands(t,c,l),d=[s,this.createMountCustomCommand(),this.createUmountCustomCommand(),Kh(t.fs),Ug(t.fs,c,t.browserAPI),...u].filter(e=>this.isCommandAllowed(e.name)),f=[...mt(),...dt()],p=this.allowedCommands?f.filter(e=>this.isCommandAllowed(e)):void 0;if(this.bash=new pt({fs:this.vfsAdapter,cwd:n,env:{},fetch:c,commands:p,customCommands:d,sleep:zm(this.progress,{isAborted:()=>this.activeRunSignal?.aborted??!1}),executionLimitProfile:t.executionLimitProfile,executionLimits:em(t.isScoop?.()??!1,t.executionLimits)}),this.bash.registerTransformPlugin(oh),this.allowedCommands!==null){let e=this.bash;for(let t of dt())this.isCommandAllowed(t)||e.commands.delete(t)}{let e=this.bash;for(let[t,n]of e.commands)e.commands.set(t,this.wrapCommandForDispatch(n));this.registryNames=new Set(e.commands.keys())}let m=d.map(e=>e.name),h=p??[...mt(),...dt()];this.builtinCommandNames=/* @__PURE__ */ new Set([...h,...m]),this.staticBuiltinNames=new Set(this.builtinCommandNames),this.vfsAdapter.setRegisteredCommandsFn(()=>[...this.builtinCommandNames]),this.vfsAdapter.setIdentityFn(()=>({user:this.lastEnv.USER??`user`,home:this.lastEnv.HOME??`/home/user`})),this.lastEnv={...r},this.cwd=n,this.bindCollaborators(t),this.startInitialJshSync()}bindCollaborators(e){let t=this;this.jshRegistry=new fm({get bash(){return t.bash},scriptCatalog:this.scriptCatalog,discoveryFs:e.jshDiscoveryFs??e.fs,vfsAdapter:this.vfsAdapter,get cwd(){return t.cwd},get lastEnv(){return t.lastEnv},get umask(){return t.umask},builtinCommandNames:this.builtinCommandNames,isCommandAllowed:e=>this.isCommandAllowed(e),wrapCommandForDispatch:e=>this.wrapCommandForDispatch(e),path:()=>this.lastEnv.PATH,buildJshProcessConfig:e=>this.buildJshProcessConfig(e),gateNativeCommand:this.gateNativeCommand,gitIdentity:()=>this.gitCommands.identity()}),this.gnuBashFallback=new lm({gnuBash:e.gnuBash===!0,get lastEnv(){return t.lastEnv},get cwd(){return t.cwd},get umask(){return t.umask},vfsAdapter:this.vfsAdapter,get bash(){return t.bash},scriptCatalog:this.scriptCatalog,outputTees:this.outputTees,gateNativeCommand:this.gateNativeCommand,buildJshProcessConfig:e=>this.buildJshProcessConfig(e),gitIdentity:()=>this.gitCommands.identity(),flushPendingCommandGrants:()=>this.commandGate.flushPendingCommandGrants(),applyPendingEnvWrites:()=>this.applyPendingEnvWrites(),syncJshCommands:()=>this.syncJshCommands(),adoptCwd:e=>{this.cwd=e},adoptEnv:e=>{this.lastEnv=e}})}getBash(){return this.bash}getCwd(){return this.cwd}getScriptCatalog(){return this.scriptCatalog}getEnv(){return{...this.lastEnv}}setMaskedEnvVar(e,t){this.pendingEnvWrites.set(e,t),this.lastEnv[e]=t}applySessionOverrides(e){e.cwd!==void 0&&(this.cwd=e.cwd,this.lastEnv.PWD=e.cwd),e.env&&Object.assign(this.lastEnv,e.env)}async getJshCommandNames(){return this.jshRegistry.getJshCommandNames()}async syncJshCommands(){return this.jshRegistry.syncJshCommands()}cancelActiveCommand(){this.commandAbort.abort(),this.commandAbort=new AbortController}async executeCommand(e,t,n,r=``,i){let a=this.activeShellPid;n!==void 0&&(this.activeShellPid=n);let o=i?.onOutput?`tee-${this.nextOutputTeeId+=1}`:void 0;o&&i?.onOutput&&this.outputTees.set(o,i.onOutput);try{let a=await this.runCommand(e,t,n,r,o,i?.capturePipeStatus);return{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode,...a.pipeStatus===void 0?{}:{pipeStatus:a.pipeStatus}}}finally{this.activeShellPid=a,o&&this.outputTees.delete(o)}}async executeScriptFile(e,t=[]){return gi(e,t,{fs:this.vfsAdapter,cwd:this.cwd,env:new Map(Object.entries(this.lastEnv)),stdin:``,exec:(e,t)=>this.bash.exec(e,{env:t?.env??this.lastEnv,cwd:t?.cwd??this.cwd,umask:this.umask,...t?.env===void 0?{}:{replaceEnv:!0}})},this.buildJshProcessConfig())}dispose(){this.ownsScriptCatalog&&this.scriptCatalog.dispose()}async renderMediaPreview(e){throw Error(`terminal preview is unavailable in headless mode`)}startInitialJshSync(){this.initialJshSync=this.initHomeAndProfile().then(()=>this.syncJshCommands()).catch(()=>void 0).finally(()=>{this.initialJshSync=null})}async initHomeAndProfile(){let e=this.options.fs;try{let t=this.options.env?.HOME??await gr(e);this.lastEnv.HOME=t,this.options.env?.USER||(this.lastEnv.USER=hr(t));let n=`${t.replace(/\/+$/,``)}/.profile`;if(!await e.exists(n).catch(()=>!1))return;let r=await this.bash.exec(`. "$HOME/.profile"`,{env:this.lastEnv,cwd:this.cwd,umask:this.umask});if(typeof r.umask==`number`&&(this.umask=r.umask),r.env){let{PWD:e,...t}=r.env;this.lastEnv={...t,PWD:this.lastEnv.PWD??this.cwd}}}catch(e){XV.warn(`HOME/profile init failed; continuing with defaults`,e)}}async waitForInitialJshSync(e){let t=this.initialJshSync;if(t===null)return;if(!e){await t;return}if(e.aborted)return;let n;try{await new Promise(r=>{n=()=>r(),e.addEventListener(`abort`,n,{once:!0}),t.then(()=>r(),()=>r())})}finally{n&&e.removeEventListener(`abort`,n)}}async runCommand(e,t,n,r=``,i,a=!1){if(jV(e.trim().split(/\s+/)[0]||`unknown`),v(),await this.waitForInitialJshSync(t),await this.gnuBashFallback.usesGnuBash())return this.gnuBashFallback.runOnGnuBash(e,t,n,r,i,a);let o=Op(e),s={env:{...this.lastEnv,...n===void 0?{}:{[om]:String(n)},...i===void 0?{}:{[sm]:i},...o?{[Ep]:o}:{}},cwd:this.cwd,umask:this.umask,signal:t,...r===``?{}:{stdin:r,stdinKind:`bytes`}},c=this.lastEnv.PATH,l=QV([t,this.commandAbort.signal]);s.signal=l.signal,this.activeRunSignal=l.signal;let u=this.beginScriptRun(e),d;try{d=await this.bash.exec(Ut(e,a),s)}finally{l.release(),this.activeRunSignal===l.signal&&(this.activeRunSignal=void 0),this.endScriptRun(u)}if(await this.commandGate.flushPendingCommandGrants(),d=Vt(d,a),typeof d.umask==`number`&&(this.umask=d.umask),d.env&&(this.lastEnv=ZV(d.env)),d.env&&this.lastEnv.PATH!==c&&await this.syncJshCommands().catch(()=>void 0),this.applyPendingEnvWrites(),d.env?.PWD&&(this.cwd=d.env.PWD),d.exitCode===127){let t=await this.jshRegistry.tryJshFallback(e,n);if(t)return this.syncJshCommands().catch(()=>void 0),t}if(d.exitCode!==0&&d.stderr.includes(`Permission denied`)){let{withShebangExecHint:e}=await import(`./shebang-exec-hint-DGW7999v.js`).then(e=>e.n);return zt(await e(d,this.cwd,this.vfsAdapter),d.pipeStatus)}return d}applyPendingEnvWrites(){for(let[e,t]of this.pendingEnvWrites)t===null?delete this.lastEnv[e]:this.lastEnv[e]=t;this.pendingEnvWrites.clear()}gateNativeCommand=async(e,t,n)=>{if(this.allowedCommands!==null&&!this.isCommandAllowed(e))return{stderr:`bash: ${e}: command not found\n`,exitCode:127};if(!this.commandGate.isTransparentGatingEnabled()||Hp.has(e))return null;let r=await this.commandGate.gateCommandDispatch(e,t,n[Ep]);return r?{stderr:r.stderr,exitCode:r.exitCode}:null};wrapCommandForDispatch(e){let t=this.commandGate.wrapCommandForSudo(e),n=e.name===`timeout`?Um(t,this.progress):Gm(t,this.progress),r=()=>this.scriptRun?.stepDone(),i=(e,t)=>this.teeCommandOutput(e,t),a=this.outputTees;return{...n,async execute(e,t){let o=t.env?.get(sm),s=o?a.get(o):void 0;s&&(t.writeStdout=s);try{let r=await qm(()=>n.execute(e,t),t.signal);return i(t.env,r),r}finally{r()}}}}teeCommandOutput(e,t){let n=e?.get(sm);if(!n)return;let r=this.outputTees.get(n);if(!r)return;let i=[t.stdout,t.stderr].filter(Boolean).join(``);i&&r(i)}beginScriptRun(e){if(this.scriptRunsActive+=1,!this.progress.hasSink())return null;if(this.scriptRunsActive>1)return this.scriptRun?.end(),this.scriptRun=null,null;let t={totalSteps:null};try{t=Pm(this.bash.transform(e).ast,this.registryNames)}catch{t={totalSteps:null}}return this.scriptRun=new Im(t,this.progress,Fm(e)),this.scriptRun}endScriptRun(e){this.scriptRunsActive=Math.max(0,this.scriptRunsActive-1),e&&(e.end(),this.scriptRun===e&&(this.scriptRun=null))}isCommandAllowed(e){return this.allowedCommands===null||this.allowedCommands.has(Hp.get(e)??e)}createGitCustomCommand(){let e=this.gitCommands;return C(`git`,async(t,n)=>{let r=n.cwd,i=await e.execute(t,r,n.env,P(n.stdin));return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}})}createMountCustomCommand(){let e=this.mountCommands;return C(`mount`,async(t,n)=>{let r=n.cwd,i=await e.execute(t,r,n.env);return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}})}createUmountCustomCommand(){let e=this.mountCommands;return C(`umount`,async(t,n)=>{let r=n.cwd,i=await e.executeUmount(t,r);return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}})}async getWorkflowCommandNames(){return this.jshRegistry.getWorkflowCommandNames()}buildJshProcessConfig(e){if(this.options.processManager&&this.options.processOwner)return{processManager:this.options.processManager,owner:this.options.processOwner,getParentPid:()=>e??this.activeShellPid??this.options.getCurrentShellPid?.()}}};export{Ha as _,IB as a,ks as c,Cs as d,is as f,Ua as g,za as h,MB as i,Es as l,Jo as m,JV as n,AB as o,rs as p,AV as r,Is as s,$V as t,Ts as u,Ho as v,Na as y};