sliccy 6.240.4 → 6.241.1

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 (151) hide show
  1. package/README.md +1 -0
  2. package/dist/node-server/_shared/tray-signaling.d.ts +56 -2
  3. package/dist/node-server/_shared/tray-signaling.d.ts.map +1 -1
  4. package/dist/node-server/_shared/tray-signaling.js.map +1 -1
  5. package/dist/ui/.vite/manifest.json +199 -199
  6. package/dist/ui/assets/SKILL-tmFs9Tl9.js +1 -0
  7. package/dist/ui/assets/{account-store-DoRhbb69.js → account-store-AvHPKRU2.js} +1 -1
  8. package/dist/ui/assets/{account-store-BRvILyCO.js → account-store-B8CJ-7Lx.js} +1 -1
  9. package/dist/ui/assets/{adobe-Drky4wZE.js → adobe-BCGRxpk6.js} +1 -1
  10. package/dist/ui/assets/{adobe-Dsm75J6V.js → adobe-eZ5msDJn.js} +1 -1
  11. package/dist/ui/assets/{agent-panels-DpyALWn8.js → agent-panels-DuUNHCLX.js} +1 -1
  12. package/dist/ui/assets/{almost-bash-shell-headless-DItr4WtW.js → almost-bash-shell-headless-COQRGAy6.js} +172 -172
  13. package/dist/ui/assets/{apply-layout-lM_2NGX1.js → apply-layout-DH2HoYHw.js} +1 -1
  14. package/dist/ui/assets/{azure-openai-DJMI_H2s.js → azure-openai-CKoGWvFl.js} +1 -1
  15. package/dist/ui/assets/{azure-openai-NcXOfe_j.js → azure-openai-DL153b8w.js} +1 -1
  16. package/dist/ui/assets/{cdp-Bpk5ZlSH.js → cdp-5AKX8w7O.js} +1 -1
  17. package/dist/ui/assets/{cerebras-WevbsRdk.js → cerebras-BTb_dApS.js} +1 -1
  18. package/dist/ui/assets/{cerebras-BK_hGiR7.js → cerebras-DvdmdJut.js} +1 -1
  19. package/dist/ui/assets/{composer-speech-DVYlTXOM.js → composer-speech-Dbh9vRW3.js} +1 -1
  20. package/dist/ui/assets/{connect-surface-AABg0eiW.js → connect-surface-Dl_WTrxo.js} +1 -1
  21. package/dist/ui/assets/{directed-approval-B1Xq1UZf.js → directed-approval-OLGASP4s.js} +1 -1
  22. package/dist/ui/assets/{emscripten-vfs-hook-DwCbpF-y.js → emscripten-vfs-hook-Dyz4d0El.js} +1 -1
  23. package/dist/ui/assets/{frozen-archive-writer-DfajHzq3.js → frozen-archive-writer-BvGjpB-k.js} +1 -1
  24. package/dist/ui/assets/{frozen-archive-writer-CubIPKq0.js → frozen-archive-writer-GGe1yrsk.js} +1 -1
  25. package/dist/ui/assets/{frozen-session-delete-R0F287hq.js → frozen-session-delete-wBH9StD1.js} +1 -1
  26. package/dist/ui/assets/{frozen-session-identity-CQoT1dhk.js → frozen-session-identity-CDKx-hx_.js} +1 -1
  27. package/dist/ui/assets/{frozen-session-identity-CdMZEv1z.js → frozen-session-identity-Dm-_fz5c.js} +1 -1
  28. package/dist/ui/assets/{gelatiere-unit-1g06L_SY.js → gelatiere-unit-bD1o3JA9.js} +1 -1
  29. package/dist/ui/assets/{github-PrxxrfwI.js → github-DmY7udhb.js} +1 -1
  30. package/dist/ui/assets/{github-CJ5TUi5o.js → github-L7bHBBwn.js} +1 -1
  31. package/dist/ui/assets/{github-copilot-08tfth_v.js → github-copilot-D9xitQhQ.js} +1 -1
  32. package/dist/ui/assets/{github-copilot-D-rS8bi9.js → github-copilot-DqaYbqu9.js} +1 -1
  33. package/dist/ui/assets/{go-driver-BPwIwoNY.js → go-driver-BQftm-Ef.js} +2 -2
  34. package/dist/ui/assets/{hear-CLql4-OO.js → hear-BwrPIQcO.js} +1 -1
  35. package/dist/ui/assets/home-dir-CR-07Jxc.js +1 -0
  36. package/dist/ui/assets/{js-realm-worker-DgQHhdeC.js → js-realm-worker-B8jwDbs8.js} +2 -2
  37. package/dist/ui/assets/jsh-discovery-JLWUZ8pe.js +2 -0
  38. package/dist/ui/assets/jsh-executor-C4bDA0PP.js +18 -0
  39. package/dist/ui/assets/just-bash-compat-BRjWDzIj.js +1 -0
  40. package/dist/ui/assets/{kernel-worker-xfcvSHrM.js → kernel-worker-Q90o6PXo.js} +67 -67
  41. package/dist/ui/assets/{lick-ws-bridge-BlZ2xI1m.js → lick-ws-bridge-CH9aQuwy.js} +1 -1
  42. package/dist/ui/assets/{lick-ws-bridge-BNRm0UHW.js → lick-ws-bridge-CrAktvkO.js} +1 -1
  43. package/dist/ui/assets/{live-session-curation-0pP-dKt3.js → live-session-curation-BqLQJmHS.js} +1 -1
  44. package/dist/ui/assets/{live-session-curation-BwxozUeP.js → live-session-curation-eGuYRaQG.js} +1 -1
  45. package/dist/ui/assets/{live-session-snapshot-DR7Yl_ht.js → live-session-snapshot-CYFP6V_m.js} +1 -1
  46. package/dist/ui/assets/{local-llm-CzYhZZZb.js → local-llm-D8qMuYBb.js} +1 -1
  47. package/dist/ui/assets/{local-llm-B3I2M1uZ.js → local-llm-DUjRnDQ-.js} +1 -1
  48. package/dist/ui/assets/{main-cherry-NkqOhsTG.js → main-cherry-BHocFDi1.js} +1 -1
  49. package/dist/ui/assets/{main-Be4W_mNX.js → main-nsbGqYkt.js} +3 -3
  50. package/dist/ui/assets/{mcp-command-Bt6e8qII.js → mcp-command-CROIBc4z.js} +13 -10
  51. package/dist/ui/assets/{memory-curation-seam-DOiUWunD.js → memory-curation-seam-BRvVsm_l.js} +1 -1
  52. package/dist/ui/assets/{memory-health-qAwlOxuU.js → memory-health-TL2OPVhX.js} +1 -1
  53. package/dist/ui/assets/{memory-write-execute-uHiq57KJ.js → memory-write-execute-C_BXUnRx.js} +1 -1
  54. package/dist/ui/assets/{merge-folded-cost-into-frozen-C7IF6khb.js → merge-folded-cost-into-frozen-CigbzGRF.js} +1 -1
  55. package/dist/ui/assets/{new-session-CbDHn1Jq.js → new-session-D9cZGHk_.js} +2 -2
  56. package/dist/ui/assets/{oauth-bootstrap-B9pbpRXo.js → oauth-bootstrap-CWU69mWQ.js} +2 -2
  57. package/dist/ui/assets/{onboarding-orchestrator-DFEzv6dO.js → onboarding-orchestrator-C9Gchmn6.js} +1 -1
  58. package/dist/ui/assets/{openai-codex-CMy5FHdk.js → openai-codex-C8Xpsg6X.js} +1 -1
  59. package/dist/ui/assets/{openai-codex-D5ccLdiI.js → openai-codex-CXi0_0T5.js} +1 -1
  60. package/dist/ui/assets/{openrouter-DcucnV2J.js → openrouter-BvwCDIvX.js} +1 -1
  61. package/dist/ui/assets/{openrouter-D_an8MKE.js → openrouter-DPMnoaAQ.js} +1 -1
  62. package/dist/ui/assets/{openrouter-free-Cab1HtYv.js → openrouter-free-ij6Yx6uJ.js} +1 -1
  63. package/dist/ui/assets/{openrouter-free-CN3tYFjs.js → openrouter-free-ymGIn70l.js} +1 -1
  64. package/dist/ui/assets/{openrouter-oauth-C_qwbZwE.js → openrouter-oauth-BbvnT_WV.js} +1 -1
  65. package/dist/ui/assets/{openrouter-oauth-CTPjciHV.js → openrouter-oauth-Bt8cStc_.js} +1 -1
  66. package/dist/ui/assets/{panel-rpc-handlers-BMPbzzu-.js → panel-rpc-handlers-DGNWuBTQ.js} +2 -2
  67. package/dist/ui/assets/{panelize-shell-anHXFOtZ.js → panelize-shell-Dw79Owxb.js} +1 -1
  68. package/dist/ui/assets/{pi-edit-execution-CzrkCrtn.js → pi-edit-execution-L31wdud0.js} +1 -1
  69. package/dist/ui/assets/{provider-B8ZaPKSq.js → provider-2JtjSB5C.js} +1 -1
  70. package/dist/ui/assets/{provider-Di8R2P4w.js → provider-CAlmpn6K.js} +1 -1
  71. package/dist/ui/assets/{provider-settings-hm9r16oZ.js → provider-settings-DP4BBqo4.js} +1 -1
  72. package/dist/ui/assets/provider-store-access-7bNqoWRH.js +1 -0
  73. package/dist/ui/assets/provider-store-access-Dv47sA3w.js +1 -0
  74. package/dist/ui/assets/{providers-DXeCpDBW.js → providers-BDcFXgUe.js} +2 -2
  75. package/dist/ui/assets/{providers-eKNuJgZV.js → providers-DXWoMKtv.js} +1 -1
  76. package/dist/ui/assets/{quick-llm-B0o4T-eR.js → quick-llm-DHqE0rNR.js} +1 -1
  77. package/dist/ui/assets/{realm-inprocess-CMrlaABK.js → realm-inprocess-Co3NdmCa.js} +2 -2
  78. package/dist/ui/assets/{realm-unhandled-rejections-DYaSFCVB.js → realm-unhandled-rejections-DyfjLc_i.js} +1 -1
  79. package/dist/ui/assets/{realm-unhandled-rejections-cbeZUNTW.js → realm-unhandled-rejections-OXqDOvSK.js} +1 -1
  80. package/dist/ui/assets/{recovery-screen-BFo4vbSt.js → recovery-screen-I-cEQC09.js} +1 -1
  81. package/dist/ui/assets/{remote-terminal-view-CVJSXMKk.js → remote-terminal-view-Cf7hzCF2.js} +2 -2
  82. package/dist/ui/assets/restore-oPTpnOEt.js +1 -0
  83. package/dist/ui/assets/{run-B_j9TU7i.js → run-BeaQNubO.js} +1 -1
  84. package/dist/ui/assets/{run-tZnU3VbE.js → run-CTLq4YA5.js} +2 -2
  85. package/dist/ui/assets/{run-C3zWZ82o.js → run-DDRN0EMs.js} +1 -1
  86. package/dist/ui/assets/{run-DiQn9-Xh.js → run-DX_sxl3W.js} +1 -1
  87. package/dist/ui/assets/{run-BRFnmkzR.js → run-DdzDhy5R.js} +2 -2
  88. package/dist/ui/assets/{run-BAmXlRlW.js → run-Di_-pc-e.js} +1 -1
  89. package/dist/ui/assets/{run-DniTiLYn.js → run-J5J6cey1.js} +1 -1
  90. package/dist/ui/assets/{run-B88ZYCvC.js → run-LvFUk-li.js} +2 -2
  91. package/dist/ui/assets/{script-catalog-D5joO5l7.js → script-catalog-BfaiuJ09.js} +1 -1
  92. package/dist/ui/assets/serve-command-CIgF5NQ0.js +18 -0
  93. package/dist/ui/assets/serve-runtime-uwFVIyK2.js +23 -0
  94. package/dist/ui/assets/{session-command-memory-DgYVRLd1.js → session-command-memory-iXbYQvmD.js} +2 -2
  95. package/dist/ui/assets/{session-jsonl-BYUOPPsO.js → session-jsonl-BuaM71uI.js} +1 -1
  96. package/dist/ui/assets/{session-jsonl-CA-9wJyg.js → session-jsonl-DcL9Vonp.js} +1 -1
  97. package/dist/ui/assets/{session-search-index-CFAXdkMt.js → session-search-index-DSq0ZfYF.js} +1 -1
  98. package/dist/ui/assets/{setup-feature-flags-remote-DcdyVXQm.js → setup-feature-flags-remote-CKkOCM8F.js} +1 -1
  99. package/dist/ui/assets/{setup-model-catalog-BM8Fs8zz.js → setup-model-catalog-BcLQzHAB.js} +1 -1
  100. package/dist/ui/assets/{silent-renew-backoff-1LZF3TTO.js → silent-renew-backoff-BsYcvRW9.js} +1 -1
  101. package/dist/ui/assets/slicc-version-Cy0PQepW.js +1 -0
  102. package/dist/ui/assets/{soundscape-ihQMt0lS.js → soundscape-BXpsvOkE.js} +1 -1
  103. package/dist/ui/assets/{speak-B12a1ExD.js → speak-D8jJElU0.js} +1 -1
  104. package/dist/ui/assets/{sprinkle-manager-C590Ejqq.js → sprinkle-manager-CZf8a8R5.js} +1 -1
  105. package/dist/ui/assets/{sprinkle-renderer-BPPq0lNh.js → sprinkle-renderer-CMdwwoWn.js} +1 -1
  106. package/dist/ui/assets/{stdio-tty-CipJs8Mm.js → stdio-tty-PRRbLXEX.js} +1 -1
  107. package/dist/ui/assets/{sudo-DQZhus8c.js → sudo-C9uoIRkS.js} +1 -1
  108. package/dist/ui/assets/{supervisor-CYMSZmZt.js → supervisor-jxcsJc11.js} +1 -1
  109. package/dist/ui/assets/{sync-dialog-Iw6hbVPP.js → sync-dialog-DiRXIca9.js} +1 -1
  110. package/dist/ui/assets/{transformers-env-P8hUgwNE.js → transformers-env-CpeX6H84.js} +1 -1
  111. package/dist/ui/assets/{tray-leader-DBg8Z9f5.js → tray-leader-BaMxhpsI.js} +1 -1
  112. package/dist/ui/assets/{tray-leave-runtime-BMf2sD75.js → tray-leave-runtime-BmOvIKqh.js} +1 -1
  113. package/dist/ui/assets/{tray-sidecar-kdDiMv17.js → tray-sidecar-BlcrBtdi.js} +1 -1
  114. package/dist/ui/assets/{upgrade-detection-Daf65WMj.js → upgrade-detection-BR2E3Rhg.js} +1 -1
  115. package/dist/ui/assets/{voice-reply-FQ8ThLKI.js → voice-reply-eJcHpSrm.js} +1 -1
  116. package/dist/ui/assets/{wc-attach-I--UEuWy.js → wc-attach-lT5bBfi1.js} +2 -2
  117. package/dist/ui/assets/{wc-browser-rGItoq1v.js → wc-browser-pjoz4K5Q.js} +1 -1
  118. package/dist/ui/assets/{wc-computers-0MHREGO-.js → wc-computers-B1YWXQp4.js} +1 -1
  119. package/dist/ui/assets/{wc-detached-CGw5M2-z.js → wc-detached-B2kc2CBo.js} +1 -1
  120. package/dist/ui/assets/{wc-extension-CwRZbYT8.js → wc-extension-BOkucGsC.js} +2 -2
  121. package/dist/ui/assets/{wc-follower-DgTsADgB.js → wc-follower-DGLzRmyX.js} +3 -3
  122. package/dist/ui/assets/{wc-follower-oauth-BBbyx94D.js → wc-follower-oauth-BLP5X6S9.js} +1 -1
  123. package/dist/ui/assets/{wc-gelatiere-B2k1ogJb.js → wc-gelatiere-B6iTvczj.js} +1 -1
  124. package/dist/ui/assets/{wc-live-C0oYhsdQ.js → wc-live-7uaWw3ok.js} +5 -5
  125. package/dist/ui/assets/{wc-nav-B2Z8ghOG.js → wc-nav-BpQ-0Bvl.js} +2 -2
  126. package/dist/ui/assets/{wc-onboarding-Blc6OEVq.js → wc-onboarding-B2m0N2Rq.js} +2 -2
  127. package/dist/ui/assets/{wc-permissions-DMseX75J.js → wc-permissions-B4BiZIHL.js} +2 -2
  128. package/dist/ui/assets/{wc-placeholder-CH5Ond1q.js → wc-placeholder-B6RVxIkh.js} +3 -3
  129. package/dist/ui/assets/{wc-secret-request-BPQSBy2o.js → wc-secret-request-DM-Pc0cO.js} +1 -1
  130. package/dist/ui/assets/{wc-settings-C9C4tf2p.js → wc-settings-DFKcE8sx.js} +3 -3
  131. package/dist/ui/assets/{wc-shell-BK6ot76g.js → wc-shell-D5OQ-B6M.js} +3 -3
  132. package/dist/ui/assets/{wc-shortcut-config-C_pOF3GD.js → wc-shortcut-config-C_kD2jwE.js} +1 -1
  133. package/dist/ui/assets/{wc-sprinkles-D8vRvB-H.js → wc-sprinkles-Cj13RTus.js} +2 -2
  134. package/dist/ui/assets/{wc-transcript-export-D0hlIyNy.js → wc-transcript-export-DUGgLqfC.js} +2 -2
  135. package/dist/ui/assets/wc-tray-BG9LTpEG.js +5 -0
  136. package/dist/ui/assets/welcome-detection-DEl83hSD.js +1 -0
  137. package/dist/ui/assets/{whisper-session-ClZ5HnMU.js → whisper-session-D1RBAoOa.js} +2 -2
  138. package/dist/ui/assets/{xai-grok-BNWGJpIF.js → xai-grok-BmpdITq4.js} +1 -1
  139. package/dist/ui/assets/{xai-grok-CJgmWpFT.js → xai-grok-CffhiU5c.js} +1 -1
  140. package/dist/ui/index.html +3 -3
  141. package/dist/ui/packages/webapp/index.html +3 -3
  142. package/package.json +1 -1
  143. package/dist/ui/assets/jsh-discovery-CnvNKojr.js +0 -2
  144. package/dist/ui/assets/jsh-executor-qLuBDi1b.js +0 -18
  145. package/dist/ui/assets/just-bash-compat-B-SPHuh_.js +0 -1
  146. package/dist/ui/assets/provider-store-access-CFCv8Lq-.js +0 -1
  147. package/dist/ui/assets/provider-store-access-ClgCeqyh.js +0 -1
  148. package/dist/ui/assets/restore-CLaryFcz.js +0 -1
  149. package/dist/ui/assets/slicc-version-6GfXfag4.js +0 -1
  150. package/dist/ui/assets/wc-tray-5BEb-6CP.js +0 -5
  151. package/dist/ui/assets/welcome-detection-CA7UsMvM.js +0 -1
@@ -1,96 +1,96 @@
1
- import{t as e}from"./logger-LESFN7Hj.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{C as l,d as u,f as d,i as f,u as p}from"./account-store-BRvILyCO.js";import{c as m,d as h,n as g,r as _,s as v}from"./proxied-fetch-F-dCBEfh.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-CvUauhDf.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-HHgn9isb.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-QlgHaQc1.js";import{t as De}from"./providers-eKNuJgZV.js";import{r as Oe}from"./binary-cache-bSOhqXB1.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-nGhSz-U1.js";import"./core-EGZ5TU35.js";import{t as Fe}from"./utf16-clip-Dcxt-q1C.js";import{n as Ie,t as Le}from"./mime-types-D7IV6i7k.js";import{n as Re,t as ze}from"./float-topology-COIC4j_U.js";import{t as Be}from"./secrets-bridge-client-GOCzDscb.js";import{a as Ve,i as He,n as Ue,r as We}from"./tool-ui-DRnUkp2g.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-VJlzucJY.js";import{n as Xe,t as Ze}from"./types-D8gIX-W-.js";import{i as Qe}from"./mount-index-CQfmUPuZ.js";import{a as $e,i as et,n as tt,o as nt,s as rt,t as it}from"./signed-fetch-DeDG40wV.js";import{o as at}from"./mount-table-store-DrF_Ifaz.js";import{t as ot}from"./remote-cache-UwMD8EkX.js";import{n as st}from"./fs-D_cFUSir.js";import{a as ct}from"./tray-leader-status-CpkFr6n7.js";import{n as lt,t as ut}from"./slicc-version-6GfXfag4.js";import{a as dt,i as ft,o as pt,r as C,t as mt}from"./browser-CGX7MbCQ.js";import{t as w}from"./subcommand-flags-BZi7j78Q.js";import{n as ht,r as gt,t as T}from"./subcommand-help-CgO7wRS5.js";import{n as _t}from"./cost-command-TMcbUPyN.js";import{d as vt,g as yt,i as bt,n as xt,o as St}from"./sudoers-BdBYQPUn.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-CKpY5F_-.js";import{t as It}from"./src-CUSndb9K.js";import{i as Lt,o as Rt}from"./browser-DuyhpHbR.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-BMils9JY.js";import{t as Yt}from"./buffer-B5d1xHaH.js";import"./buffer-polyfill-BwLbCySD.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-r9mnHMnp.js";import"./global-db-DJXlpNui.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-Dx_7TiP6.js";import{a as ar,i as or,r as sr,t as cr}from"./git-config-Bdgu8kD2.js";import{a as P,i as lr,r as ur,t as dr}from"./just-bash-compat-B-SPHuh_.js";import{h as fr,i as pr,r as mr}from"./stdio-tty-CipJs8Mm.js";import{i as hr,r as gr}from"./global-prefix-DqCuANmV.js";import{t as _r}from"./wasm-programs-Bd5YaoqY.js";import{a as vr,n as yr,o as br,r as xr,s as Sr}from"./jsh-discovery-CnvNKojr.js";import{C as Cr,a as wr,b as Tr,c as Er,d as Dr,f as Or,h as kr,i as Ar,l as jr,m as Mr,n as Nr,o as Pr,p as Fr,r as Ir,s as Lr,t as F,u as Rr,v as zr,y as Br}from"./shared-D-ZRFYou.js";import{_ as Vr,a as Hr,b as Ur,d as Wr,f as Gr,g as Kr,h as qr,i as Jr,l as Yr,m as Xr,p as Zr,r as Qr,s as $r,u as ei,v as ti,y as ni}from"./require-guards-dUdxJmkR.js";import{_ as ri,a as ii,b as ai,c as oi,d as si,f as ci,g as li,h as ui,l as di,m as fi,n as pi,p as mi,s as hi,t as gi,u as _i,v as vi,x as yi,y as bi}from"./jsh-executor-qLuBDi1b.js";import{n as xi,t as Si}from"./esbuild-wasm-DeTghvWH.js";import{n as Ci}from"./wasm-compiler-Ct7QZURL.js";import{a as wi,o as Ti,s as Ei,t as Di}from"./usb-device-registry-DFzxaOky.js";import{i as Oi,r as ki,t as Ai}from"./script-catalog-D5joO5l7.js";import{a as ji,c as Mi,o as Ni,s as Pi,t as Fi}from"./types-Dzr0qYl3.js";import{a as Ii,c as Li,d as Ri,f as zi,n as Bi,r as Vi,u as Hi}from"./github-zip-CMSbKC3q.js";import{i as Ui,t as Wi}from"./github-auth-D-_-pCrt.js";import{a as Gi,i as Ki,o as qi,r as Ji,t as Yi}from"./provenance-DdmsQ3Nr.js";import{a as Xi,c as Zi,i as Qi,n as $i,o as ea,r as ta,s as na}from"./github-install-NHKpL-_w.js";import{n as ra,t as ia}from"./magick-wasm-BbnwhVj1.js";import{i as aa,n as oa,r as sa,t as ca}from"./pdf-raster-BWk6ezTX.js";import{n as la}from"./lick-target-env-8JxfVcIV.js";import{t as ua}from"./tmpdir-env-ate4iNcK.js";import{n as da,t as fa}from"./keyboard-TcuVIW9F.js";import{n as pa,t as ma}from"./hf-defaults-BwJdGLgk.js";import{t as ha}from"./ffmpeg-wasm-sx-3yVAE.js";import{t as ga}from"./local-llm-B3I2M1uZ.js";import{i as _a,n as va,r as ya,t as ba}from"./tar-BWIPCxI2.js";import{a as xa,c as Sa,i as Ca,o as wa,r as Ta,s as Ea}from"./v86-vm-DCm7zA2r.js";import{n as Da,r as Oa}from"./lick-urls-CgPiVwD-.js";let ka=null;function Aa(e){ka=e!==null&&Number.isFinite(e)&&e>0?e:null}function ja(){if(ka!==null)return ka;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const Ma=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function Na(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=Ma.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 Pa(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 Fa(e,t){return e.some(e=>Pa(e,t))}const Ia=`slicc-transcript`,La=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],Ra=new Set(`/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 za(e){return Ra.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Ba=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const Va=new Set(La),Ha=/^[0-9a-fA-F]{64}$/,Ua=/^\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 Wa(e){return typeof e==`string`&&Ha.test(e)}function Ga(e){return Ua.test(e)&&Number.isFinite(Date.parse(e))}function Ka(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 qa(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Ka(n,t)}:{ok:!0}}function Ja(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 Ya(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 Xa(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};let n=qa(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?Ya(e,t):n}function Za(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 Qa(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 $a(e,t){let n=Za(e,t);if(!n.ok)return n;let r=e.cost;return I(r)?Qa(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function eo(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`?Ga(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 to(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 no(e,t){let n=e.usage;return n===void 0?{ok:!0}:I(n)?$a(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function ro(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};let n=qa(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=to(e,t);if(!n.ok)return n}let r=eo(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=Ja(i,Xa,`${t}.content`);return a.ok?no(e,t):a}function io(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=qa(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Ja(r,ro,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function ao(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 oo(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`}:Wa(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 so=[`attachment-file-missing`,`attachment-association-unavailable`];function co(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?qa(e.missingReason,so,`${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 lo(e,t){return e.present?oo(e,t):co(e,t)}function uo(e,t){if(!I(e))return{ok:!1,error:`${t} must be a non-null object`};let n=ao(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=qa(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?lo(e,t):r}function fo(e,t){let n=qa(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 po(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=qa(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return I(r)?fo(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function mo(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 ho(e,t){return typeof e!=`string`||!Va.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function go(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 _o(e){if(!I(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=qa(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Ja(e.missing,ho,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function vo(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=qa(e.state,[`active`,`frozen`],`session.state`);return t.ok?_o(e.completeness):t}function yo(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)?Ja(n,po,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function bo(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Ja(t,io,`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=Ja(r,mo,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Ja(a,uo,`attachments`):{ok:!1,error:`attachments must be an array`}}function xo(e){let t=new Set,n=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 So(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 Co(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 wo(e){let t=new Set;for(let n of e){if(!I(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of Co(e))t.add(n)}return t}function To(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 Eo(e){return To(e,wo(e))}function Do(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 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))continue;let e=n.content;if(!Array.isArray(e))continue;let r=Do(e,t);if(!r.ok)return r}}return{ok:!0}}function ko(e,t){let n=new Set;for(let e of t)I(e)&&typeof e.id==`string`&&n.add(e.id);return Oo(e,n)}function Ao(e){let t=new Map;for(let n of e){if(!I(n)||typeof n.id!=`string`)continue;let e=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 jo(e,t){let n=Ao(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 Mo(e){let t=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(Co(e)))}return t}function No(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 Po(e,t){let n=new Set;for(let e of t)I(e)&&typeof e.id==`string`&&n.add(e.id);return No(e,n,Mo(t))}function Fo(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 Io(e,t){let n=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=Fo(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function Lo(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=xo(t);if(!o.ok)return o;let s=So(t);if(!s.ok)return s;let c=Eo(t);if(!c.ok)return c;let l=ko(t,n);if(!l.ok)return l;let u=jo(n,t);if(!u.ok)return u;let d=Po(r,t);return d.ok?Io(a,n):d}function Ro(e){let t=bo(e);return t.ok?Lo(e):t}function zo(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=go(e.export);if(!t.ok)return t;let n=vo(e.session);if(!n.ok)return n;let r=yo(e.privacy);return r.ok?Ro(e):r}async function Bo(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:Vo(a),sourceUrl:a}}function Vo(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const Ho=`slicc-sprinkle-routes`;function Uo(){try{let e=localStorage.getItem(Ho);return e?JSON.parse(e):{}}catch{return{}}}function Wo(e){try{localStorage.setItem(Ho,JSON.stringify(e))}catch{}}function Go(e){return Uo()[e]}function Ko(e,t){let n=Uo();n[e]=t,Wo(n)}function qo(e){let t=Uo();delete t[e],Wo(t)}function Jo(){return Uo()}function Yo(e,t,n){return Et(t,n,`${e} adapter does not implement ${t}.${n}`)}function Xo(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(Yo(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function Zo(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:Xo(t,`browser`,kt,e.browser),network:Xo(t,`network`,Tt,e.network),secrets:Xo(t,`secrets`,At,e.secrets),devices:Xo(t,`devices`,jt,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:Xo(t,`mounts`,Dt,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:Xo(t,`approvals`,Mt,e.approvals)}}function Qo(e={}){return Zo({adapter:`connect`,pageGestures:e.pageGestures})}function $o(e){let t=Nt(()=>import(`./extension-ops-OtrqWANJ.js`).then(t=>t.createExtensionOps(e)));return Zo({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 es(e={}){let t=Nt(()=>import(`./rest-ops-j0P6ql7f.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return Zo({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 ts(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return es({pageGestures:n});case`extension-direct`:case`extension-delegate`:return $o({adapter:e,pageGestures:n});case`connect`:return Qo({pageGestures:n})}}const ns=e(`quick-llm`);async function rs(e){let t=f();if(!t)return ns.debug(`No API key for active provider — skipping`),null;let n=d(),r=u(),i;if(i=e.modelId?ss(n,e.modelId)??ss(n,r):is(n,r),!i)return ns.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`]=cs());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 ns.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function is(e,t){let n=p(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=os(r.id),a=n.filter(e=>as(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function as(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 os(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 ss(e,t){return p(e).find(e=>e.id===t)}function cs(){return Ft(`ui-quick-llm`)}const ls=e(`sudo-suggest`),us=[`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
- `),ds=[`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
- `);async function fs(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`?us:ds,i=null;try{i=await rs({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){ls.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return ps(i)||n}function ps(e){if(!e)return null;let t=(e.split(`
4
- `,1)[0]?.trim()??``).replace(/^`+/,``).replace(/`+$/,``).replace(/^["']/,``).replace(/["']$/,``).trim();return t.length===0?null:t}const ms=e(`sudo:capability-gesture`);function hs(e,t={}){let n=t.suggest??fs;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 ms.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),wt();if(!e)return ms.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):(ms.warn(`capability broker approvals.request failed — denying`,{message:o.message}),wt())}}}const gs=e(`sudo:tray-first`);function _s(e,t={}){let n=t.suggest??fs,r=t.timeoutMs??6e5,i=t.getClient??(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-CR9k3qWE.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){gs.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 ys(e?.decision,o)}catch(e){gs.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return e.requestApproval(s,a)}}}const vs=[`user-timeout`,`cone-timeout`,`unavailable`];function ys(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=vs.find(e=>e===n.reason);return i?{decision:`deny`,reason:i}:{decision:`deny`}}function bs(e,t){return{requestApproval(n){return t.enqueueSudoRequest(e,n)}}}function xs(){return`lick-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}var Ss=class{pending=new Map;timeoutMs;newId;setTimer;clearTimer;onAutoSettle;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.newId=e.newId??xs,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 Cs(e){return re(ws(e))}function ws(e){let t=hs(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:_s(t)}let Ts=null;function Es(e){return Ts=e,()=>{Ts===e&&(Ts=null)}}function Ds(){if(!Ts)throw new Ba(`session-not-found`);return Ts}const Os=`focus`,ks={type:`leaf`,surfaceId:`chat`};function As(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 js={focus:{name:`focus`,tree:As({left:ks},{left:3,middle:1})}};function Ms(e){return js[e]??null}const Ns=`progress`;async function Ps(){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 Fs(){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 Is(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 Ls(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 Rs(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 zs=new Set([`--source`,`--profile`,`--backend`,`--max-body-mb`]);function Bs(e){for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`)return!1;if(n===`--help`||n===`-h`)return!0;zs.has(n)&&t++}return!1}function Vs(e){return`aem://${e.org}/${e.name}${e.path?`/${e.path}`:``}`}var Hs=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=Ls(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 Us(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 Ps():r?await Is(r,e):await Fs();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=Rs(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 Bo(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`?Vs(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(Bs(e))return n===`umount`?this.umountHelp():this.help();let r=Ls(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-DrF_Ifaz.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-UwMD8EkX.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
1
+ import{t as e}from"./logger-LESFN7Hj.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{C as l,d as u,f as d,i as f,u as p}from"./account-store-B8CJ-7Lx.js";import{c as m,d as h,n as g,r as _,s as v}from"./proxied-fetch-F-dCBEfh.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-CvUauhDf.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-HHgn9isb.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-QlgHaQc1.js";import{t as De}from"./providers-DXWoMKtv.js";import{r as Oe}from"./binary-cache-bSOhqXB1.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-nGhSz-U1.js";import"./core-EGZ5TU35.js";import{t as Fe}from"./utf16-clip-Dcxt-q1C.js";import{n as Ie,t as Le}from"./mime-types-D7IV6i7k.js";import{n as Re,t as ze}from"./float-topology-COIC4j_U.js";import{t as Be}from"./secrets-bridge-client-GOCzDscb.js";import{a as Ve,i as He,n as Ue,r as We}from"./tool-ui-DRnUkp2g.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-VJlzucJY.js";import{n as Xe,t as Ze}from"./types-D8gIX-W-.js";import{i as Qe}from"./mount-index-CQfmUPuZ.js";import{a as $e,i as et,n as tt,o as nt,s as rt,t as it}from"./signed-fetch-DeDG40wV.js";import{o as at}from"./mount-table-store-DrF_Ifaz.js";import{t as ot}from"./remote-cache-UwMD8EkX.js";import{n as st}from"./fs-D_cFUSir.js";import{a as ct}from"./tray-leader-status-CpkFr6n7.js";import{n as lt,t as ut}from"./slicc-version-Cy0PQepW.js";import{a as dt,i as ft,o as pt,r as C,t as mt}from"./browser-CGX7MbCQ.js";import{t as w}from"./subcommand-flags-BZi7j78Q.js";import{n as ht,r as gt,t as T}from"./subcommand-help-CgO7wRS5.js";import{n as _t}from"./cost-command-TMcbUPyN.js";import{d as vt,g as yt,i as bt,n as xt,o as St}from"./sudoers-BdBYQPUn.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-CKpY5F_-.js";import{t as It}from"./src-CUSndb9K.js";import{i as Lt,o as Rt}from"./browser-DuyhpHbR.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-BMils9JY.js";import{t as Yt}from"./buffer-B5d1xHaH.js";import"./buffer-polyfill-BwLbCySD.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-r9mnHMnp.js";import"./global-db-DJXlpNui.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-Dx_7TiP6.js";import{a as ar,i as or,r as sr,t as cr}from"./git-config-Bdgu8kD2.js";import{a as lr,i as ur,o as P,t as dr}from"./just-bash-compat-BRjWDzIj.js";import{h as fr,i as pr,r as mr}from"./stdio-tty-PRRbLXEX.js";import{i as hr,r as gr,t as _r}from"./home-dir-CR-07Jxc.js";import{i as vr,r as yr}from"./global-prefix-DqCuANmV.js";import{t as br}from"./wasm-programs-Bd5YaoqY.js";import{a as xr,c as Sr,n as Cr,r as wr,s as Tr}from"./jsh-discovery-JLWUZ8pe.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-D-ZRFYou.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-dUdxJmkR.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-C4bDA0PP.js";import{n as wi,t as Ti}from"./esbuild-wasm-DeTghvWH.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-DFzxaOky.js";import{i as ji,r as Mi,t as Ni}from"./script-catalog-BfaiuJ09.js";import{a as Pi,c as Fi,o as Ii,s as Li,t as Ri}from"./types-Dzr0qYl3.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-CMSbKC3q.js";import{i as Ki,t as qi}from"./github-auth-D-_-pCrt.js";import{a as Ji,i as Yi,o as Xi,r as Zi,t as Qi}from"./provenance-DdmsQ3Nr.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-NHKpL-_w.js";import{n as oa,t as sa}from"./magick-wasm-BbnwhVj1.js";import{i as ca,n as la,r as ua,t as da}from"./pdf-raster-BWk6ezTX.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-sx-3yVAE.js";import{t as ya}from"./local-llm-DUjRnDQ-.js";import{i as ba,n as xa,r as Sa,t as Ca}from"./tar-BWIPCxI2.js";import{a as wa,c as Ta,i as Ea,o as Da,r as Oa,s as ka}from"./v86-vm-DCm7zA2r.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=new Set(`/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=new Set,n=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=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=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=new Map;for(let n of e){if(!I(n)||typeof n.id!=`string`)continue;let e=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=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=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=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-OtrqWANJ.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-j0P6ql7f.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=f();if(!t)return as.debug(`No API key for active provider — skipping`),null;let n=d(),r=u(),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=p(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 p(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
+ `),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
+ `);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
+ `,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-CR9k3qWE.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=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=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-DrF_Ifaz.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-UwMD8EkX.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
5
5
  `,stderr:``,exitCode:0};let t=this.options.fs.getMountIndex();return{stdout:e.map(e=>{let n=t.getState(e);if(!n)return e;if(n.status===`ready`)return`${e} (indexed: ${n.indexed} entries)`;if(n.status===`indexing`)return`${e} (indexing: ${n.indexed} entries...)`;if(n.status===`error`)switch(n.abortCause){case`depth-exceeded`:return`${e} (index skipped: directory nesting exceeded the depth limit — reads use the slow path; raise SLICC_MOUNT_INDEX_MAX_DEPTH or 'mount unmount ${e}')`;case`entries-exceeded`:return`${e} (index skipped: mounted tree is too large — reads use the slow path; raise SLICC_MOUNT_INDEX_MAX_ENTRIES or 'mount unmount ${e}')`;case`cycle-detected`:return`${e} (index skipped: self-referential mount cycle detected — run 'mount unmount ${e}' to remove it)`;default:return`${e} (index error: ${n.error})`}return`${e} (pending index)`}).join(`
6
6
  `)+`
7
- `,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`mount list: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async handleInfo(e,t){if(Bs(e))return this.help();let n=Ls(e);if(n.positional.length===0)return{stdout:``,stderr:`mount info: path required
8
- `,exitCode:1};let r=this.resolvePath(n.positional[0],t);try{let{formatMountInfo:e,probeMountInfo:t}=await import(`./probe-info-Cfr3jYru.js`),i=await t(this.options.fs,r);return{stdout:n.json?`${JSON.stringify(i,null,2)}\n`:e(i),stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`mount info: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async handleRefresh(e,t,n){let r=Ls(e);if(r.positional.length===0)return{stdout:``,stderr:`mount refresh: path required
7
+ `,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`mount list: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async handleInfo(e,t){if(Us(e))return this.help();let n=Bs(e);if(n.positional.length===0)return{stdout:``,stderr:`mount info: path required
8
+ `,exitCode:1};let r=this.resolvePath(n.positional[0],t);try{let{formatMountInfo:e,probeMountInfo:t}=await import(`./probe-info-Cfr3jYru.js`),i=await t(this.options.fs,r);return{stdout:n.json?`${JSON.stringify(i,null,2)}\n`:e(i),stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`mount info: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async handleRefresh(e,t,n){let r=Bs(e);if(r.positional.length===0)return{stdout:``,stderr:`mount refresh: path required
9
9
  `,exitCode:1};let i=this.resolvePath(r.positional[0],t);try{let e=await this.options.fs.refreshMount(i,{bodies:r.bodies,env:n});return{stdout:`Refreshed ${i}: +${e.added.length} -${e.removed.length} ~${e.changed.length} (${e.unchanged} unchanged, ${e.errors.length} errors)\n`,stderr:e.errors.map(e=>` ${e.path}: ${e.message}\n`).join(``),exitCode:+(e.errors.length>0)}}catch(e){return{stdout:``,stderr:`mount refresh: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}resolvePath(e,t){let n;return n=e.startsWith(`/`)?e:`${t.replace(/\/$/,``)}/${e}`,n.length>1&&(n=n.replace(/\/+$/,``)),n}usageError(e){return{stdout:``,stderr:`${e}\n`,exitCode:1}}umountHelp(){return{stdout:[`Usage: umount [--clear-cache] <path>`,``,"Unmount a mount point. `umount <path>` is an alias for","`mount unmount <path>` — same behaviour, shorter to type.",``,`Options:`,` --clear-cache Also drop cached listings and bodies for a remote mount`,``,`Examples:`,` umount /mnt/myapp`,` umount --clear-cache /mnt/s3`,``,`See also: mount --help, mount list`].join(`
10
10
  `)+`
11
11
  `,stderr:``,exitCode:0}}help(){return{stdout:[`Usage: mount [OPTIONS] <target-path>`,` mount unmount [--clear-cache] <path>`,` mount list`,` mount --list`,` mount refresh [--bodies] <path>`,` mount info [--json] <path>`,``,`Mount a local directory, S3 bucket, or AEM authoring source into the`,`virtual filesystem.`,``,`Without --source, opens a directory picker (local mount). With --source, mounts`,`a remote source (S3-compatible, da.live, or the Helix 6 Source Bus).`,``,`A da:// source is checked against the site config first: sites upgraded to`,`Helix 6 are re-routed to the Source Bus, because admin.da.live no longer`,`holds their content. Use --backend to force either endpoint.`,``,`Options:`,` --source <url> Remote source: s3://bucket[/prefix], da://org/repo,`,` or aem://org/site`,` --profile <name> Profile name (default: "default")`,` --backend <da|aem> Force the Adobe backend instead of probing the site config`,` --no-probe Skip the root-level probe on mount`,` --max-body-mb <n> Override body size limit (MB)`,``,`Sub-commands:`," unmount [--clear-cache] <path> Remove a mount point (also spelled `umount <path>`)",` list, --list, -l Show active mount points`,` refresh [--bodies] <path> Re-index or revalidate a mount`,` info [--json] <path> Probe volume semantics (case, Unicode, exec bit)`,``,`Examples:`,` mount /mnt/myapp`,` mount --source s3://my-bucket --profile default /mnt/s3`,` mount --source da://my-org/my-repo /mnt/da`,` mount --source aem://my-org/my-site /mnt/aem`,` mount list`,` mount info /tmp`,` mount info --json /mnt/kb`,` mount refresh /mnt/myapp`,` mount unmount /mnt/myapp`,` umount /mnt/myapp`].join(`
12
12
  `)+`
13
- `,stderr:``,exitCode:0}}};async function Us(e){let t=`pendingMount:term:${e}`,n;try{n=await Jt(t)}catch{return null}if(!n)return null;try{await Kt(n)}catch{return null}return Qe.fromHandle(n,{mountId:at()})}async function Ws(e,t,n){let r=n.includes(`-A`)||n.includes(`--all`),i=n.includes(`-u`)||n.includes(`--update`),a=n.includes(`-f`)||n.includes(`--force`),o=n.filter(e=>!e.startsWith(`-`));if(!r&&!i&&o.length===0)return{stdout:``,stderr:`Nothing specified, nothing added.
14
- `,exitCode:0};if(r)await Gs(e,t,a);else if(o.includes(`.`))await Ks(e,t,a);else if(i)await qs(e,t,a);else for(let n of o)await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:n,force:a});return{stdout:``,stderr:``,exitCode:0}}async function Gs(e,t,n){let r=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[i,,a,o]of r)a!==o&&(a===0?await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}async function Ks(e,t,n){let r=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[i,,a,o]of r)a!==o&&a!==0&&await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n})}async function qs(e,t,n){let r=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[i,a,o,s]of r)a!==0&&o!==s&&(o===0?await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}const Js={boolean:[`dry-run`,`force`,`d`,`x`,`X`,`quiet`],alias:{n:`dry-run`,f:`force`,q:`quiet`}},L={init:{string:[`initial-branch`],alias:{b:`initial-branch`}},clone:{string:[`branch`,`depth`,`origin`,`upload-pack`],boolean:[`single-branch`,`quiet`],alias:{b:`branch`,o:`origin`,q:`quiet`},default:{"single-branch":!0}},commit:{string:[`message`,`author`,`date`,`file`,`cleanup`],boolean:[`amend`,`all`,`allow-empty`],alias:{m:`message`,a:`all`,F:`file`}},log:{string:[`max-count`,`format`,`author`,`committer`,`grep`,`since`,`until`,`skip`,`follow`],boolean:[`oneline`,`stat`,`reverse`,`all`,`color`],alias:{n:`max-count`,pretty:`format`},"--":!0},branch:{string:[`list`,`set-upstream-to`,`track`,`contains`,`no-contains`,`merged`,`no-merged`,`points-at`],boolean:[`color`],alias:{l:`list`,u:`set-upstream-to`,t:`track`}},checkout:{string:[`b`,`B`,`orphan`,`track`,`start-point`,`conflict`],"--":!0},clean:Js,diff:{string:[`format`,`diff-filter`,`unified`],boolean:[`staged`,`cached`,`name-only`,`name-status`,`stat`,`no-index`,`color`],alias:{pretty:`format`,U:`unified`},"--":!0},show:{string:[`format`],boolean:[`stat`,`color`],alias:{pretty:`format`}},status:{boolean:[`short`,`porcelain`,`color`],alias:{s:`short`}},merge:{string:[`message`,`strategy`,`strategy-option`],boolean:[`ff`,`ff-only`,`abort`,`edit`,`quiet`],alias:{m:`message`,s:`strategy`,X:`strategy-option`,q:`quiet`}},"cherry-pick":{boolean:[`no-commit`,`x`],alias:{n:`no-commit`}},revert:{boolean:[`no-commit`],alias:{n:`no-commit`}},rebase:{string:[`onto`,`strategy`,`strategy-option`],boolean:[`continue`,`abort`,`skip`,`interactive`,`rebase-merges`,`autosquash`],alias:{i:`interactive`,s:`strategy`,X:`strategy-option`}},"merge-file":{string:[`L`],boolean:[`stdout`,`quiet`,`diff3`,`ours`,`theirs`,`union`],alias:{p:`stdout`,q:`quiet`}},tag:{string:[`message`,`file`,`list`,`contains`,`points-at`],boolean:[`delete`,`annotate`,`force`],alias:{m:`message`,F:`file`,l:`list`,d:`delete`,a:`annotate`,f:`force`}},fetch:{string:[`depth`,`o`,`refmap`,`upload-pack`,`negotiation-tip`,`server-option`],boolean:[`prune`,`quiet`],alias:{p:`prune`,q:`quiet`}},pull:{string:[`depth`,`s`,`strategy`,`X`,`strategy-option`,`upload-pack`],boolean:[`ff-only`,`ff`,`quiet`],alias:{q:`quiet`}},push:{string:[`o`,`push-option`,`receive-pack`,`repo`,`exec`,`signed`,`4`,`6`],boolean:[`force`,`set-upstream`,`quiet`,`verbose`,`dry-run`,`tags`,`progress`],alias:{f:`force`,u:`set-upstream`,q:`quiet`,v:`verbose`}},"symbolic-ref":{string:[`m`],boolean:[`delete`,`quiet`,`short`,`recurse`],alias:{d:`delete`,q:`quiet`}},"ls-tree":{boolean:[`r`,`d`,`name-only`]},"ls-remote":{boolean:[`heads`,`tags`,`symref`,`exit-code`],alias:{h:`heads`,t:`tags`}}},Ys=/^(--?)([^=]+)(=.*)?$/;function Xs(e){let t=new Set(e.string??[]);for(let n of e.boolean??[])t.add(n),t.add(`no-${n}`);for(let[n,r]of Object.entries(e.alias??{})){t.add(n);for(let e of Array.isArray(r)?r:[r])t.add(e)}return t}function Zs(e){let t=new Set(e.string??[]);for(let[n,r]of Object.entries(e.alias??{})){let e=[n,...Array.isArray(r)?r:[r]];if(e.some(e=>t.has(e)))for(let n of e)t.add(n)}return t}function Qs(){let e=new Set([`c`,`C`,`git-dir`,`work-tree`]);for(let t of Object.values(L))for(let n of Zs(t))e.add(n);return e}function $s(e,t,n){for(let r of e){if(!t.has(r))return r;if(n.has(r))return}}function ec(e,t){let n=Xs(t),r=Zs(t),i=e.indexOf(`--`),a=i===-1?e:e.slice(0,i);for(let e=0;e<a.length;e++){let t=a[e];if(!t.startsWith(`-`)||t===`-`)continue;let i=Ys.exec(t);if(!i)continue;let o=i[2];if(i[1]===`-`&&o.length>1&&!i[3]&&!n.has(o)){let e=$s(o,n,r);if(e)return e;continue}if(!n.has(o))return o;!i[3]&&r.has(o)&&e+1<a.length&&e++}}function tc(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function nc(e,t){if(!t)return;let n=ec(e,t);return n?tc(n):void 0}function R(e,t){let n=e[t];if(n===void 0)return;let r=String(Array.isArray(n)?n[n.length-1]:n);return r===``?void 0:r}function rc(e){let t=/Could not read packfile at (.+?)\.(?:\s|$)/.exec(e);return t?`unable to read the packfile ${t[1]}: it could not be loaded in one piece — it may be missing or corrupted, or larger than the 100 MB hostfs whole-file limit if this repo is a --mount`:e.startsWith(`Could not read packfile data.`)?`unable to read packfile data: a packfile could not be loaded in one piece — it may be missing or corrupted, or larger than the 100 MB hostfs whole-file limit if this repo is a --mount`:null}function ic(e,t){if(!(e instanceof Error))return oc(String(e),t);let n=e;if(e.name===`MultipleGitError`||e.name===`AggregateError`||typeof AggregateError<`u`&&e instanceof AggregateError){let e=Array.isArray(n.errors)?n.errors:Array.isArray(n.data?.errors)?n.data?.errors:[];if(e.length>0)return e.map(e=>ic(e,t)).join(`
15
- `)}return oc(rc(e.message)??e.message,t)}function ac(e){let t=e.trim();if(!t)return!1;try{let e=/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(t)?t:t.includes(`@`)&&t.includes(`:`)?`ssh://${t.replace(`:`,`/`)}`:`https://${t}`,n=new URL(e).hostname.toLowerCase();return n===`github.com`||n.endsWith(`.github.com`)}catch{return/(?:^|[@/])github\.com(?:[/:]|$)/i.test(t)}}function oc(e,t){if(!/\b401\b|Unauthorized/i.test(e))return e;if(t!==void 0){if(!ac(t))return e}else if(!/github\.com/i.test(e))return`${e}\nhint: Authentication failed (401). Check credentials for this remote. If this is GitHub, stored \`git config github.token\` may be a stale snapshot — re-run \`oauth-token github\` (or Settings → Providers → GitHub).`;return`${e}\nhint: GitHub returned 401. Stored \`git config github.token\` may be a stale snapshot — git renews the OAuth broker on network ops, but a hand-written token is not refreshed. Re-run \`oauth-token github\` (or Settings → Providers → GitHub). If you must set \`github.token\` manually, capture stdout only (never \`2>&1\`) and prefer leaving the bridge to the OAuth login.`}const sc={refresh:!1},cc=new Set([`never`,`false`,`0`,`off`,`no`]),lc=new Set([`always`,`true`,`1`,`on`,`yes`]),uc=/^(--?)([^=]+)(=.*)?$/,dc=Qs();function fc(e){if(e===!1)return`never`;if(e===!0)return`always`;if(typeof e==`number`)return e===0?`never`:e===1?`always`:void 0;if(typeof e!=`string`||e.length===0)return;let t=e.toLowerCase();if(t===`never`||t===`false`||t===`0`||t===`off`||t===`no`)return`never`;if(t===`always`||t===`true`||t===`1`||t===`on`||t===`yes`)return`always`;if(t===`auto`)return`auto`}function pc(e){let t,n=e.indexOf(`--`),r=n===-1?e:e.slice(0,n);for(let e=0;e<r.length;e++){if(hc(r,e))continue;let n=r[e];if(n===`--no-color`){t=`never`;continue}if(n===`--color`){t=`always`;continue}n.startsWith(`--color=`)&&(t=fc(n.slice(8))??t)}return t}function mc(e){let t=e.indexOf(`--`),n=[];for(let r=0;r<e.length;r++){if(t!==-1&&r>=t){n.push(...e.slice(r));break}let i=e[r];if(hc(e,r,t)){n.push(i);continue}if(i.startsWith(`--color=`)){let e=gc(i.slice(8));e&&n.push(e);continue}n.push(i)}return n}function hc(e,t,n=-1){if(t===0||n!==-1&&t-1>=n)return!1;let r=e[t-1],i=uc.exec(r);return!i||i[3]?!1:dc.has(i[2])}function gc(e){let t=e.toLowerCase();if(cc.has(t))return`--no-color`;if(lc.has(t))return`--color`}function _c(e){let t=e.stdoutIsTTY&&e.term!==`dumb`,n=e=>{if(e===`always`)return!0;if(e===`never`)return!1;if(e===`auto`)return t},r=n(e.cliWhen);if(r!==void 0)return r;let i=n(fc(e.colorUi));return i===void 0?!e.noColorEnv&&t:i}function vc(e,t,n){return e?`\x1b[${t}m${n}\x1b[0m`:n}async function yc(e,t,n){let r=n.includes(`-d`)||n.includes(`-D`)||n.includes(`--delete`),i=n.includes(`-a`)||n.includes(`--all`);if(n.includes(`--show-current`)){let n=await j({fs:e.lfs,dir:t});return{stdout:n?`${n}\n`:``,stderr:``,exitCode:0}}let a=n.find(e=>!e.startsWith(`-`));if(r&&a)return await On({fs:e.lfs,dir:t,ref:a}),{stdout:`Deleted branch ${a}\n`,stderr:``,exitCode:0};if(a&&!r)return await yn({fs:e.lfs,dir:t,ref:a}),{stdout:``,stderr:``,exitCode:0};let o=await Qt({fs:e.lfs,dir:t}),s=await j({fs:e.lfs,dir:t}),c=``;for(let t of o)c+=t===s?`* ${vc(e.useColor,`32`,t)}\n`:` ${t}\n`;if(i)try{let n=await Qt({fs:e.lfs,dir:t,remote:`origin`});for(let t of n)c+=` ${vc(e.useColor,`31`,`remotes/origin/${t}`)}\n`}catch{}return{stdout:c,stderr:``,exitCode:0}}async function bc(e,t,n){let r=n.includes(`-b`),i=n.includes(`-f`)||n.includes(`--force`),a=n.indexOf(`--`);if(a!==-1){let r=n.slice(a+1);if(r.length===0)return{stdout:``,stderr:`error: you must specify path(s) to restore
16
- `,exitCode:1};let i=n.slice(0,a).filter(e=>!e.startsWith(`-`))[0];return Tc(e,t,r,i)}let o=n.find(e=>!e.startsWith(`-`));if(!o)return{stdout:``,stderr:`error: you must specify path(s) or a branch to checkout
17
- `,exitCode:1};if(r){let r=n.indexOf(`-b`),a=n.slice(r+1).filter(e=>!e.startsWith(`-`)),s=a.length>1?a[1]:void 0;try{await yn({fs:e.lfs,dir:t,ref:o,object:s,checkout:!1,force:i})}catch(e){return wc(e,o)}try{await xc(e,t,o,i)}catch(n){if(!i)try{await On({fs:e.lfs,dir:t,ref:o})}catch{}return wc(n,o)}return await e.fs.flush(),{stdout:`Switched to a new branch '${o}'\n`,stderr:``,exitCode:0}}try{await xc(e,t,o,i)}catch(e){return wc(e,o)}return await e.fs.flush(),{stdout:`Switched to branch '${o}'\n`,stderr:``,exitCode:0}}async function xc(e,t,n,r){let i;try{i=await D({fs:e.lfs,dir:t,ref:`HEAD`})}catch{i=void 0}let a=new Set(await O({fs:e.lfs,cache:e.cache,dir:t}));await Dn({fs:e.lfs,cache:e.cache,dir:t,ref:n,force:r});let o=await D({fs:e.lfs,dir:t,ref:n}),s=new Set(await O({fs:e.lfs,cache:e.cache,dir:t,ref:o}));await Sc(e,t,a,s),!(!r&&i===o)&&await Cc(e,t,o,a,s)}async function Sc(e,t,n,r){for(let i of n)if(!r.has(i)){try{await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:i})}catch{}try{await e.fs.rm(`${t}/${i}`)}catch{}}}async function Cc(e,t,n,r,i){for(let a of i){if(!r.has(a))continue;let i=`${t}/${a}`;try{let t=await e.fs.lstat(i);if(t.type===`symlink`||t.type===`directory`)continue}catch{continue}let{blob:o}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:a}),s=a.lastIndexOf(`/`);s!==-1&&await e.fs.mkdir(`${t}/${a.slice(0,s)}`,{recursive:!0}),await e.fs.writeFile(i,o),await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:a,ref:n})}}function wc(e,t){if(e instanceof Error&&e.name===`MultipleGitError`)return{stdout:``,stderr:`error: unable to checkout '${t}':\n${ic(e).split(`
13
+ `,stderr:``,exitCode:0}}};async function Ks(e){let t=`pendingMount:term:${e}`,n;try{n=await Jt(t)}catch{return null}if(!n)return null;try{await Kt(n)}catch{return null}return Qe.fromHandle(n,{mountId:at()})}async function qs(e,t,n){let r=n.includes(`-A`)||n.includes(`--all`),i=n.includes(`-u`)||n.includes(`--update`),a=n.includes(`-f`)||n.includes(`--force`),o=n.filter(e=>!e.startsWith(`-`));if(!r&&!i&&o.length===0)return{stdout:``,stderr:`Nothing specified, nothing added.
14
+ `,exitCode:0};if(r)await Js(e,t,a);else if(o.includes(`.`))await Ys(e,t,a);else if(i)await Xs(e,t,a);else for(let n of o)await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:n,force:a});return{stdout:``,stderr:``,exitCode:0}}async function Js(e,t,n){let r=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[i,,a,o]of r)a!==o&&(a===0?await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}async function Ys(e,t,n){let r=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[i,,a,o]of r)a!==o&&a!==0&&await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n})}async function Xs(e,t,n){let r=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[i,a,o,s]of r)a!==0&&o!==s&&(o===0?await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}const Zs={boolean:[`dry-run`,`force`,`d`,`x`,`X`,`quiet`],alias:{n:`dry-run`,f:`force`,q:`quiet`}},L={init:{string:[`initial-branch`],alias:{b:`initial-branch`}},clone:{string:[`branch`,`depth`,`origin`,`upload-pack`],boolean:[`single-branch`,`quiet`],alias:{b:`branch`,o:`origin`,q:`quiet`},default:{"single-branch":!0}},commit:{string:[`message`,`author`,`date`,`file`,`cleanup`],boolean:[`amend`,`all`,`allow-empty`],alias:{m:`message`,a:`all`,F:`file`}},log:{string:[`max-count`,`format`,`author`,`committer`,`grep`,`since`,`until`,`skip`,`follow`],boolean:[`oneline`,`stat`,`reverse`,`all`,`color`],alias:{n:`max-count`,pretty:`format`},"--":!0},branch:{string:[`list`,`set-upstream-to`,`track`,`contains`,`no-contains`,`merged`,`no-merged`,`points-at`],boolean:[`color`],alias:{l:`list`,u:`set-upstream-to`,t:`track`}},checkout:{string:[`b`,`B`,`orphan`,`track`,`start-point`,`conflict`],"--":!0},clean:Zs,diff:{string:[`format`,`diff-filter`,`unified`],boolean:[`staged`,`cached`,`name-only`,`name-status`,`stat`,`no-index`,`color`],alias:{pretty:`format`,U:`unified`},"--":!0},show:{string:[`format`],boolean:[`stat`,`color`],alias:{pretty:`format`}},status:{boolean:[`short`,`porcelain`,`color`],alias:{s:`short`}},merge:{string:[`message`,`strategy`,`strategy-option`],boolean:[`ff`,`ff-only`,`abort`,`edit`,`quiet`],alias:{m:`message`,s:`strategy`,X:`strategy-option`,q:`quiet`}},"cherry-pick":{boolean:[`no-commit`,`x`],alias:{n:`no-commit`}},revert:{boolean:[`no-commit`],alias:{n:`no-commit`}},rebase:{string:[`onto`,`strategy`,`strategy-option`],boolean:[`continue`,`abort`,`skip`,`interactive`,`rebase-merges`,`autosquash`],alias:{i:`interactive`,s:`strategy`,X:`strategy-option`}},"merge-file":{string:[`L`],boolean:[`stdout`,`quiet`,`diff3`,`ours`,`theirs`,`union`],alias:{p:`stdout`,q:`quiet`}},tag:{string:[`message`,`file`,`list`,`contains`,`points-at`],boolean:[`delete`,`annotate`,`force`],alias:{m:`message`,F:`file`,l:`list`,d:`delete`,a:`annotate`,f:`force`}},fetch:{string:[`depth`,`o`,`refmap`,`upload-pack`,`negotiation-tip`,`server-option`],boolean:[`prune`,`quiet`],alias:{p:`prune`,q:`quiet`}},pull:{string:[`depth`,`s`,`strategy`,`X`,`strategy-option`,`upload-pack`],boolean:[`ff-only`,`ff`,`quiet`],alias:{q:`quiet`}},push:{string:[`o`,`push-option`,`receive-pack`,`repo`,`exec`,`signed`,`4`,`6`],boolean:[`force`,`set-upstream`,`quiet`,`verbose`,`dry-run`,`tags`,`progress`],alias:{f:`force`,u:`set-upstream`,q:`quiet`,v:`verbose`}},"symbolic-ref":{string:[`m`],boolean:[`delete`,`quiet`,`short`,`recurse`],alias:{d:`delete`,q:`quiet`}},"ls-tree":{boolean:[`r`,`d`,`name-only`]},"ls-remote":{boolean:[`heads`,`tags`,`symref`,`exit-code`],alias:{h:`heads`,t:`tags`}}},Qs=/^(--?)([^=]+)(=.*)?$/;function $s(e){let t=new Set(e.string??[]);for(let n of e.boolean??[])t.add(n),t.add(`no-${n}`);for(let[n,r]of Object.entries(e.alias??{})){t.add(n);for(let e of Array.isArray(r)?r:[r])t.add(e)}return t}function ec(e){let t=new Set(e.string??[]);for(let[n,r]of Object.entries(e.alias??{})){let e=[n,...Array.isArray(r)?r:[r]];if(e.some(e=>t.has(e)))for(let n of e)t.add(n)}return t}function tc(){let e=new Set([`c`,`C`,`git-dir`,`work-tree`]);for(let t of Object.values(L))for(let n of ec(t))e.add(n);return e}function nc(e,t,n){for(let r of e){if(!t.has(r))return r;if(n.has(r))return}}function rc(e,t){let n=$s(t),r=ec(t),i=e.indexOf(`--`),a=i===-1?e:e.slice(0,i);for(let e=0;e<a.length;e++){let t=a[e];if(!t.startsWith(`-`)||t===`-`)continue;let i=Qs.exec(t);if(!i)continue;let o=i[2];if(i[1]===`-`&&o.length>1&&!i[3]&&!n.has(o)){let e=nc(o,n,r);if(e)return e;continue}if(!n.has(o))return o;!i[3]&&r.has(o)&&e+1<a.length&&e++}}function ic(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function ac(e,t){if(!t)return;let n=rc(e,t);return n?ic(n):void 0}function R(e,t){let n=e[t];if(n===void 0)return;let r=String(Array.isArray(n)?n[n.length-1]:n);return r===``?void 0:r}function oc(e){let t=/Could not read packfile at (.+?)\.(?:\s|$)/.exec(e);return t?`unable to read the packfile ${t[1]}: it could not be loaded in one piece — it may be missing or corrupted, or larger than the 100 MB hostfs whole-file limit if this repo is a --mount`:e.startsWith(`Could not read packfile data.`)?`unable to read packfile data: a packfile could not be loaded in one piece — it may be missing or corrupted, or larger than the 100 MB hostfs whole-file limit if this repo is a --mount`:null}function sc(e,t){if(!(e instanceof Error))return lc(String(e),t);let n=e;if(e.name===`MultipleGitError`||e.name===`AggregateError`||typeof AggregateError<`u`&&e instanceof AggregateError){let e=Array.isArray(n.errors)?n.errors:Array.isArray(n.data?.errors)?n.data?.errors:[];if(e.length>0)return e.map(e=>sc(e,t)).join(`
15
+ `)}return lc(oc(e.message)??e.message,t)}function cc(e){let t=e.trim();if(!t)return!1;try{let e=/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(t)?t:t.includes(`@`)&&t.includes(`:`)?`ssh://${t.replace(`:`,`/`)}`:`https://${t}`,n=new URL(e).hostname.toLowerCase();return n===`github.com`||n.endsWith(`.github.com`)}catch{return/(?:^|[@/])github\.com(?:[/:]|$)/i.test(t)}}function lc(e,t){if(!/\b401\b|Unauthorized/i.test(e))return e;if(t!==void 0){if(!cc(t))return e}else if(!/github\.com/i.test(e))return`${e}\nhint: Authentication failed (401). Check credentials for this remote. If this is GitHub, stored \`git config github.token\` may be a stale snapshot — re-run \`oauth-token github\` (or Settings → Providers → GitHub).`;return`${e}\nhint: GitHub returned 401. Stored \`git config github.token\` may be a stale snapshot — git renews the OAuth broker on network ops, but a hand-written token is not refreshed. Re-run \`oauth-token github\` (or Settings → Providers → GitHub). If you must set \`github.token\` manually, capture stdout only (never \`2>&1\`) and prefer leaving the bridge to the OAuth login.`}const uc={refresh:!1},dc=new Set([`never`,`false`,`0`,`off`,`no`]),fc=new Set([`always`,`true`,`1`,`on`,`yes`]),pc=/^(--?)([^=]+)(=.*)?$/,mc=tc();function hc(e){if(e===!1)return`never`;if(e===!0)return`always`;if(typeof e==`number`)return e===0?`never`:e===1?`always`:void 0;if(typeof e!=`string`||e.length===0)return;let t=e.toLowerCase();if(t===`never`||t===`false`||t===`0`||t===`off`||t===`no`)return`never`;if(t===`always`||t===`true`||t===`1`||t===`on`||t===`yes`)return`always`;if(t===`auto`)return`auto`}function gc(e){let t,n=e.indexOf(`--`),r=n===-1?e:e.slice(0,n);for(let e=0;e<r.length;e++){if(vc(r,e))continue;let n=r[e];if(n===`--no-color`){t=`never`;continue}if(n===`--color`){t=`always`;continue}n.startsWith(`--color=`)&&(t=hc(n.slice(8))??t)}return t}function _c(e){let t=e.indexOf(`--`),n=[];for(let r=0;r<e.length;r++){if(t!==-1&&r>=t){n.push(...e.slice(r));break}let i=e[r];if(vc(e,r,t)){n.push(i);continue}if(i.startsWith(`--color=`)){let e=yc(i.slice(8));e&&n.push(e);continue}n.push(i)}return n}function vc(e,t,n=-1){if(t===0||n!==-1&&t-1>=n)return!1;let r=e[t-1],i=pc.exec(r);return!i||i[3]?!1:mc.has(i[2])}function yc(e){let t=e.toLowerCase();if(dc.has(t))return`--no-color`;if(fc.has(t))return`--color`}function bc(e){let t=e.stdoutIsTTY&&e.term!==`dumb`,n=e=>{if(e===`always`)return!0;if(e===`never`)return!1;if(e===`auto`)return t},r=n(e.cliWhen);if(r!==void 0)return r;let i=n(hc(e.colorUi));return i===void 0?!e.noColorEnv&&t:i}function xc(e,t,n){return e?`\x1b[${t}m${n}\x1b[0m`:n}async function Sc(e,t,n){let r=n.includes(`-d`)||n.includes(`-D`)||n.includes(`--delete`),i=n.includes(`-a`)||n.includes(`--all`);if(n.includes(`--show-current`)){let n=await j({fs:e.lfs,dir:t});return{stdout:n?`${n}\n`:``,stderr:``,exitCode:0}}let a=n.find(e=>!e.startsWith(`-`));if(r&&a)return await On({fs:e.lfs,dir:t,ref:a}),{stdout:`Deleted branch ${a}\n`,stderr:``,exitCode:0};if(a&&!r)return await yn({fs:e.lfs,dir:t,ref:a}),{stdout:``,stderr:``,exitCode:0};let o=await Qt({fs:e.lfs,dir:t}),s=await j({fs:e.lfs,dir:t}),c=``;for(let t of o)c+=t===s?`* ${xc(e.useColor,`32`,t)}\n`:` ${t}\n`;if(i)try{let n=await Qt({fs:e.lfs,dir:t,remote:`origin`});for(let t of n)c+=` ${xc(e.useColor,`31`,`remotes/origin/${t}`)}\n`}catch{}return{stdout:c,stderr:``,exitCode:0}}async function Cc(e,t,n){let r=n.includes(`-b`),i=n.includes(`-f`)||n.includes(`--force`),a=n.indexOf(`--`);if(a!==-1){let r=n.slice(a+1);if(r.length===0)return{stdout:``,stderr:`error: you must specify path(s) to restore
16
+ `,exitCode:1};let i=n.slice(0,a).filter(e=>!e.startsWith(`-`))[0];return Oc(e,t,r,i)}let o=n.find(e=>!e.startsWith(`-`));if(!o)return{stdout:``,stderr:`error: you must specify path(s) or a branch to checkout
17
+ `,exitCode:1};if(r){let r=n.indexOf(`-b`),a=n.slice(r+1).filter(e=>!e.startsWith(`-`)),s=a.length>1?a[1]:void 0;try{await yn({fs:e.lfs,dir:t,ref:o,object:s,checkout:!1,force:i})}catch(e){return Dc(e,o)}try{await wc(e,t,o,i)}catch(n){if(!i)try{await On({fs:e.lfs,dir:t,ref:o})}catch{}return Dc(n,o)}return await e.fs.flush(),{stdout:`Switched to a new branch '${o}'\n`,stderr:``,exitCode:0}}try{await wc(e,t,o,i)}catch(e){return Dc(e,o)}return await e.fs.flush(),{stdout:`Switched to branch '${o}'\n`,stderr:``,exitCode:0}}async function wc(e,t,n,r){let i;try{i=await D({fs:e.lfs,dir:t,ref:`HEAD`})}catch{i=void 0}let a=new Set(await O({fs:e.lfs,cache:e.cache,dir:t}));await Dn({fs:e.lfs,cache:e.cache,dir:t,ref:n,force:r});let o=await D({fs:e.lfs,dir:t,ref:n}),s=new Set(await O({fs:e.lfs,cache:e.cache,dir:t,ref:o}));await Tc(e,t,a,s),!(!r&&i===o)&&await Ec(e,t,o,a,s)}async function Tc(e,t,n,r){for(let i of n)if(!r.has(i)){try{await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:i})}catch{}try{await e.fs.rm(`${t}/${i}`)}catch{}}}async function Ec(e,t,n,r,i){for(let a of i){if(!r.has(a))continue;let i=`${t}/${a}`;try{let t=await e.fs.lstat(i);if(t.type===`symlink`||t.type===`directory`)continue}catch{continue}let{blob:o}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:a}),s=a.lastIndexOf(`/`);s!==-1&&await e.fs.mkdir(`${t}/${a.slice(0,s)}`,{recursive:!0}),await e.fs.writeFile(i,o),await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:a,ref:n})}}function Dc(e,t){if(e instanceof Error&&e.name===`MultipleGitError`)return{stdout:``,stderr:`error: unable to checkout '${t}':\n${sc(e).split(`
18
18
  `).map(e=>` ${e}`).join(`
19
- `)}\n`,exitCode:1};throw e}async function Tc(e,t,n,r){let i=r??`HEAD`,a=await D({fs:e.lfs,dir:t,ref:i});for(let r of n){let{blob:n}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:a,filepath:r}),i=r.lastIndexOf(`/`);i!==-1&&await e.fs.mkdir(`${t}/${r.slice(0,i)}`,{recursive:!0}),await e.fs.writeFile(`${t}/${r}`,n),await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:r})}return await e.fs.flush(),{stdout:``,stderr:``,exitCode:0}}function Ec(e={}){let{favor:t,diff3:n,labels:r}=e;return({contents:e,branches:i})=>{let[a,o,s]=e,c=Ye(o??``,a??``,s??``,{favor:t,diff3:n,labels:{current:r?.current??i[1]??`ours`,base:r?.base??i[0]??`base`,other:r?.other??i[2]??`theirs`}});return{cleanMerge:t!==void 0||c.conflicts===0,mergedText:c.content}}}async function Dc(e,t,n){let r=Oc(n),i=await jc(e,t,r.base);for(let n of r.steps)if(n.kind===`first-parent`)for(let r=0;r<n.count;r++)i=await Nc(e,t,i,1);else i=await Nc(e,t,i,n.count);return i}function Oc(e){if(e.includes(`@{`))throw Error(`reflog selectors are unsupported`);let t=/^(.+?)(?:(~[0-9]*|\^[0-9]*))*$/.exec(e);if(!t)throw Error(`invalid revision`);let n=t[1],r=e.slice(n.length),i=r.match(/~[0-9]*|\^[0-9]*/g)??[];if(i.join(``)!==r)throw Error(`invalid revision`);return{base:n,steps:i.map(e=>{let t=e.length===1?1:Number(e.slice(1));return{kind:e[0]===`~`?`first-parent`:`parent`,count:t}})}}async function kc(e,t,n){try{return await Dc(e,t,n)}catch{return}}const Ac=/^[0-9a-f]{4,40}$/i;async function jc(e,t,n){if(n===`FETCH_HEAD`)return await Mc(e,t);try{return await D({fs:e.lfs,dir:t,ref:n})}catch(e){if(!Ac.test(n))throw e}return await In({fs:e.lfs,cache:e.cache,dir:t,oid:n})}async function Mc(e,t){let n=await Rn({fs:e.lfs,filepath:t}),r;try{let t=await e.lfs.readFile(`${n}/.git/FETCH_HEAD`,{encoding:`utf8`});r=typeof t==`string`?t:new TextDecoder().decode(t)}catch{throw Error(`Could not find FETCH_HEAD.`)}let i=r.split(`
20
- `).find(e=>e.trim().length>0)?.split(/[\t ]/)[0];if(!i||!Ac.test(i)||i.length!==40)throw Error(`Could not find FETCH_HEAD.`);return i.toLowerCase()}async function Nc(e,t,n,r){if(r<1)return n;let{commit:i}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:n}),a=i.parent[r-1];if(!a)throw Error(`missing parent`);return a}function Pc(e){return e.replace(/^\.\//,``).replace(/\/+$/,``)}function Fc(e,t){return t.length===0||t.some(t=>{let n=Pc(t);return n===``||e===n||e.startsWith(`${n}/`)})}function Ic(e,t){return t.length===0||t.some(t=>{let n=Pc(t);return n===``||e===n||e.startsWith(`${n}/`)||n.startsWith(`${e}/`)})}async function Lc(e,t,n){let{flags:r,positionals:i}=M(n,L[`cherry-pick`]),a=r[`no-commit`]===!0,o=r.x===!0,s=i[0];if(!s)return{stdout:``,stderr:`error: empty commit set passed
21
- `,exitCode:128};let c=await kc(e,t,s);if(c===void 0)return{stdout:``,stderr:`fatal: bad revision '${s}'\n`,exitCode:128};try{let n=await Fn({fs:e.lfs,cache:e.cache,dir:t,oid:c,abortOnConflict:!1,noUpdateBranch:a,committer:await e.resolveAuthor(t),mergeDriver:Ec()});if(a)return{stdout:``,stderr:``,exitCode:0};let r=n,{commit:i}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:n});if(o){let n=i.message.replace(/\s+$/,``);r=await xn({fs:e.lfs,cache:e.cache,dir:t,message:`${n}\n\n(cherry picked from commit ${c})\n`,author:i.author,committer:await e.resolveAuthor(t),amend:!0})}let s=await j({fs:e.lfs,dir:t}),l=i.message.split(`
22
- `)[0];return{stdout:`[${s??`HEAD`} ${r.slice(0,7)}] ${l}\n`,stderr:``,exitCode:0}}catch(e){return Rc(e,c)}}function Rc(e,t){let n=t.slice(0,7);if(e instanceof Error&&e.name===`MergeConflictError`){let t=e.data?.filepaths??[],r=``;for(let e of t)r+=`CONFLICT (content): Merge conflict in ${e}\n`;return r+=`error: could not apply ${n}...\n`,r+=`hint: after resolving the conflicts, mark them with 'git add <paths>',
19
+ `)}\n`,exitCode:1};throw e}async function Oc(e,t,n,r){let i=r??`HEAD`,a=await D({fs:e.lfs,dir:t,ref:i});for(let r of n){let{blob:n}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:a,filepath:r}),i=r.lastIndexOf(`/`);i!==-1&&await e.fs.mkdir(`${t}/${r.slice(0,i)}`,{recursive:!0}),await e.fs.writeFile(`${t}/${r}`,n),await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:r})}return await e.fs.flush(),{stdout:``,stderr:``,exitCode:0}}function kc(e={}){let{favor:t,diff3:n,labels:r}=e;return({contents:e,branches:i})=>{let[a,o,s]=e,c=Ye(o??``,a??``,s??``,{favor:t,diff3:n,labels:{current:r?.current??i[1]??`ours`,base:r?.base??i[0]??`base`,other:r?.other??i[2]??`theirs`}});return{cleanMerge:t!==void 0||c.conflicts===0,mergedText:c.content}}}async function Ac(e,t,n){let r=jc(n),i=await Pc(e,t,r.base);for(let n of r.steps)if(n.kind===`first-parent`)for(let r=0;r<n.count;r++)i=await Ic(e,t,i,1);else i=await Ic(e,t,i,n.count);return i}function jc(e){if(e.includes(`@{`))throw Error(`reflog selectors are unsupported`);let t=/^(.+?)(?:(~[0-9]*|\^[0-9]*))*$/.exec(e);if(!t)throw Error(`invalid revision`);let n=t[1],r=e.slice(n.length),i=r.match(/~[0-9]*|\^[0-9]*/g)??[];if(i.join(``)!==r)throw Error(`invalid revision`);return{base:n,steps:i.map(e=>{let t=e.length===1?1:Number(e.slice(1));return{kind:e[0]===`~`?`first-parent`:`parent`,count:t}})}}async function Mc(e,t,n){try{return await Ac(e,t,n)}catch{return}}const Nc=/^[0-9a-f]{4,40}$/i;async function Pc(e,t,n){if(n===`FETCH_HEAD`)return await Fc(e,t);try{return await D({fs:e.lfs,dir:t,ref:n})}catch(e){if(!Nc.test(n))throw e}return await In({fs:e.lfs,cache:e.cache,dir:t,oid:n})}async function Fc(e,t){let n=await Rn({fs:e.lfs,filepath:t}),r;try{let t=await e.lfs.readFile(`${n}/.git/FETCH_HEAD`,{encoding:`utf8`});r=typeof t==`string`?t:new TextDecoder().decode(t)}catch{throw Error(`Could not find FETCH_HEAD.`)}let i=r.split(`
20
+ `).find(e=>e.trim().length>0)?.split(/[\t ]/)[0];if(!i||!Nc.test(i)||i.length!==40)throw Error(`Could not find FETCH_HEAD.`);return i.toLowerCase()}async function Ic(e,t,n,r){if(r<1)return n;let{commit:i}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:n}),a=i.parent[r-1];if(!a)throw Error(`missing parent`);return a}function Lc(e){return e.replace(/^\.\//,``).replace(/\/+$/,``)}function Rc(e,t){return t.length===0||t.some(t=>{let n=Lc(t);return n===``||e===n||e.startsWith(`${n}/`)})}function zc(e,t){return t.length===0||t.some(t=>{let n=Lc(t);return n===``||e===n||e.startsWith(`${n}/`)||n.startsWith(`${e}/`)})}async function Bc(e,t,n){let{flags:r,positionals:i}=M(n,L[`cherry-pick`]),a=r[`no-commit`]===!0,o=r.x===!0,s=i[0];if(!s)return{stdout:``,stderr:`error: empty commit set passed
21
+ `,exitCode:128};let c=await Mc(e,t,s);if(c===void 0)return{stdout:``,stderr:`fatal: bad revision '${s}'\n`,exitCode:128};try{let n=await Fn({fs:e.lfs,cache:e.cache,dir:t,oid:c,abortOnConflict:!1,noUpdateBranch:a,committer:await e.resolveAuthor(t),mergeDriver:kc()});if(a)return{stdout:``,stderr:``,exitCode:0};let r=n,{commit:i}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:n});if(o){let n=i.message.replace(/\s+$/,``);r=await xn({fs:e.lfs,cache:e.cache,dir:t,message:`${n}\n\n(cherry picked from commit ${c})\n`,author:i.author,committer:await e.resolveAuthor(t),amend:!0})}let s=await j({fs:e.lfs,dir:t}),l=i.message.split(`
22
+ `)[0];return{stdout:`[${s??`HEAD`} ${r.slice(0,7)}] ${l}\n`,stderr:``,exitCode:0}}catch(e){return Vc(e,c)}}function Vc(e,t){let n=t.slice(0,7);if(e instanceof Error&&e.name===`MergeConflictError`){let t=e.data?.filepaths??[],r=``;for(let e of t)r+=`CONFLICT (content): Merge conflict in ${e}\n`;return r+=`error: could not apply ${n}...\n`,r+=`hint: after resolving the conflicts, mark them with 'git add <paths>',
23
23
  `,r+=`hint: then commit the result.
24
- `,{stdout:``,stderr:r,exitCode:1}}return e instanceof Error&&e.name===`CherryPickMergeCommitError`?{stdout:``,stderr:`error: commit ${t} is a merge but no -m option was given.\nfatal: cherry-pick failed\n`,exitCode:128}:e instanceof Error&&e.name===`CherryPickRootCommitError`?{stdout:``,stderr:`error: ${e.message}\nfatal: cherry-pick failed\n`,exitCode:128}:{stdout:``,stderr:`fatal: ${ic(e)}\n`,exitCode:128}}async function zc(e,t,n){let r=M(n,Js),i=!!r.flags[`dry-run`],a=!!r.flags.force,o=!!r.flags.d,s=!!r.flags.x,c=!!r.flags.X,l=!!r.flags.quiet,u=r.positionals;if(!i&&!a)return{stdout:``,stderr:`fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean
25
- `,exitCode:128};let d=await k({fs:e.lfs,cache:e.cache,dir:t,...sc}),f=Bc(d),p=d.filter(([,e,t,n])=>e===0&&t===2&&n===0).map(([e])=>e),m;if(c||s){let n=(await k({fs:e.lfs,cache:e.cache,dir:t,ignored:!0,...sc})).filter(([,e,t,n])=>e===0&&t===2&&n===0).map(([e])=>e);if(c){let e=new Set(p);m=n.filter(t=>!e.has(t))}else m=n}else m=p;u.length>0&&(m=m.filter(e=>u.some(t=>Hc(e,t))));let h=new Set,g=new Set;for(let e of m){let t=Vc(e,f);t===null?h.add(e):o&&g.add(t)}let _=[...[...h].sort().map(e=>({display:e,target:e,isDir:!1})),...[...g].sort().map(e=>({display:`${e}/`,target:e,isDir:!0}))],v=``;if(!l){let e=i?`Would remove`:`Removing`;for(let t of _)v+=`${e} ${t.display}\n`}if(!i)for(let n of _){let r=`${t}/${n.target}`;try{await e.fs.rm(r,{recursive:n.isDir})}catch{}}return{stdout:v,stderr:``,exitCode:0}}function Bc(e){let t=new Set([``]);for(let[n,r,,i]of e){if(r===0&&i===0)continue;let e=n.lastIndexOf(`/`);for(;e>0;)t.add(n.slice(0,e)),e=n.lastIndexOf(`/`,e-1)}return t}function Vc(e,t){let n=e.split(`/`);if(n.length===1)return null;for(let e=1;e<n.length;e++){let r=n.slice(0,e).join(`/`);if(!t.has(r))return r}return null}function Hc(e,t){let n=t.endsWith(`/`)?t.slice(0,-1):t;return e===n||e.startsWith(`${n}/`)}let Uc=null;function Wc(){return Uc||=g(),Uc}async function*Gc(e,t,n){t&&t({phase:`Receiving`,loaded:e.length,total:n??e.length}),yield e}function Kc(){return{request:async e=>{let{url:t,method:n=`GET`,headers:r={},body:i,onProgress:a}=e,o;if(i){let e=[];for await(let t of i)e.push(t);let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;let a=``;for(let e=0;e<n.length;e+=32768)a+=String.fromCharCode(...n.subarray(e,e+32768));o=a}let s=await Wc()(t,{method:n,headers:r,body:o}),c=parseInt(s.headers[`content-length`]??`0`,10)||void 0,l=Gc(s.body,a,c);return{url:s.url,method:n,headers:s.headers,body:l,statusCode:s.status,statusMessage:s.statusText}}}}const qc=Kc();async function Jc(e,t,n){let r=nc(n,L.clone);if(r)return r;let{flags:i,positionals:a}=M(n,L.clone),o=i,s=o.quiet===!0;if(a.length===0)return{stdout:``,stderr:`fatal: You must specify a repository to clone.
26
- `,exitCode:128};let c=a[0],l=a[1];if(!l){let e=c.match(/\/([^/]+?)(\.git)?$/);l=e?e[1]:`repo`}let u=x(l.startsWith(`/`)?l:`${t}/${l}`),d=R(o,`depth`),f=R(o,`branch`),p=o[`single-branch`]!==!1,m=s?``:`Cloning into '${l}'...\n`,h=Yc(c,t);if(h)return Xc(e,h,u,c,l,m,f,s);try{await bn({fs:e.lfs,cache:e.cache,http:qc,dir:u,url:c,corsProxy:e.corsProxy,depth:d?parseInt(d,10):1,ref:f,singleBranch:p,noCheckout:!1,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),onProgress:s?void 0:e=>{e.phase===`Receiving objects`&&(m+=`Receiving objects: ${e.loaded}/${e.total}\n`)}})}catch(e){return Qc(e,u,c)}if(await e.fs.flush(),!s)try{let t=await O({fs:e.lfs,cache:e.cache,dir:u});t.length>0&&(m+=`Checked out ${t.length} files.\n`)}catch{}return{stdout:s?``:`${m}done.\n`,stderr:``,exitCode:0}}function Yc(e,t){if(e.startsWith(`file://`))try{return x(decodeURIComponent(new URL(e).pathname))}catch{return null}return e.startsWith(`/`)?x(e):e.startsWith(`./`)||e.startsWith(`../`)?x(S(t,e)):null}async function Xc(e,t,n,r,i,a,o,s=!1){if(n===t||n.startsWith(`${t}/`))return Qc(Error(`destination is inside the source repository`),n);try{await e.lfs.stat(`${t}/.git`);try{if((await e.lfs.readdir(n)).length>0)return Qc(Error(`destination path '${i}' already exists and is not an empty directory.`),n)}catch{await e.lfs.mkdir(n,{recursive:!0})}let c=o??await j({fs:e.lfs,dir:t});if(await Zc(e,`${t}/.git`,`${n}/.git`),c&&await Dn({fs:e.lfs,cache:e.cache,dir:n,ref:c,force:!0}),await An({fs:e.lfs,dir:n,remote:`origin`,url:r,force:!0}),await e.fs.flush(),!s){let t=await O({fs:e.lfs,cache:e.cache,dir:n});t.length>0&&(a+=`Checked out ${t.length} files.\n`)}return{stdout:s?``:`${a}done.\n`,stderr:``,exitCode:0}}catch(e){return Qc(e,n,r)}}async function Zc(e,t,n){let r=await e.lfs.lstat(t);if(r.isDirectory()){await e.lfs.mkdir(n,{recursive:!0});for(let r of await e.lfs.readdir(t))await Zc(e,`${t}/${r}`,`${n}/${r}`)}else r.isSymbolicLink()?await e.lfs.symlink(await e.lfs.readlink(t),n):await e.lfs.writeFile(n,await e.lfs.readFile(t))}function Qc(e,t,n){return{stdout:``,stderr:`fatal: ${ic(e,n).replace(/'\/__opfs__\/[^']*<path>'/g,`'${t}'`).replace(/\/__opfs__\/[^\s'"<]*<path>/g,t).replace(/<path>/g,t)}\n`,exitCode:128}}const $c=[`MERGE_HEAD`,`MERGE_MSG`,`MERGE_MODE`,`AUTO_MERGE`];async function el(e,t){return`${await Rn({fs:e.lfs,filepath:t})}/.git`}async function tl(e,t){try{return(await e.fs.readTextFile(t)).trim()}catch{return}}async function nl(e,t){try{await e.fs.rm(t)}catch{}}async function rl(e,t){try{return await tl(e,`${await el(e,t)}/MERGE_HEAD`)}catch{return}}async function il(e,t){return await rl(e,t)!==void 0}async function al(e,t){try{return await tl(e,`${await el(e,t)}/MERGE_MSG`)}catch{return}}async function ol(e,t,n){let r=await el(e,t);await e.fs.writeFile(`${r}/ORIG_HEAD`,`${n}\n`)}async function sl(e,t,n,r){let i=await el(e,t);await e.fs.writeFile(`${i}/MERGE_HEAD`,`${n}\n`),await e.fs.writeFile(`${i}/MERGE_MSG`,r.endsWith(`
27
- `)?r:`${r}\n`)}async function cl(e,t){let n;try{n=await el(e,t)}catch{return}await Promise.all($c.map(t=>nl(e,`${n}/${t}`)))}async function ll(e,t){let n=await O({fs:e.lfs,cache:e.cache,dir:t}),r=[];for(let i of n)try{(await e.fs.readTextFile(`${t}/${i}`)).includes(`<<<<<<<`)&&r.push(i)}catch{}return r}const ul=new Set([`message`,`author`,`date`,`file`,`cleanup`,`amend`,`all`,`allow-empty`,`m`,`a`,`F`]);async function dl(e,t,n){let r=Cl(n),i=M(r,L.commit).flags,a=await rl(e,t),o=await xl(e,t,i);if(typeof o!=`string`){if(a){let n=await al(e,t);if(n)return await fl(e,t,i,n,a)}return o}return await fl(e,t,i,o,a)}async function fl(e,t,n,r,i){let a=n.amend===!0,o=n.all===!0,s=n[`allow-empty`]===!0;if(o&&await Sl(e,t),!s&&!a&&!i&&!(await k({fs:e.lfs,cache:e.cache,dir:t})).some(([,e,,t])=>t!==e))return{stdout:``,stderr:`nothing to commit, working tree clean
28
- `,exitCode:1};let c=await xn({fs:e.lfs,cache:e.cache,dir:t,message:r,author:await e.resolveAuthor(t),amend:a,noUpdateBranch:void 0,...i?{parent:[await D({fs:e.lfs,dir:t,ref:`HEAD`}),i]}:{}});i&&await cl(e,t);let l=c.slice(0,7);return{stdout:`[${await j({fs:e.lfs,dir:t})??`HEAD`} ${l}] ${r}\n`,stderr:``,exitCode:0}}function pl(e,t){let n=e[t];if(n!==void 0&&n!==!0&&n!==!1)return R(e,t)}function ml(e){return Object.keys(e).find(e=>!ul.has(e))}function hl(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function gl(e){return{stdout:``,stderr:`error: switch \`${e}\` requires a value\n`,exitCode:1}}function _l(e){let t=ml(e);return t?hl(t):`message`in e||`m`in e?gl(`m`):`file`in e||`F`in e?gl(`F`):{stdout:``,stderr:"error: option `-m' or `-F' is required\n",exitCode:1}}function vl(){return{stdout:``,stderr:`Aborting commit due to empty commit message.
29
- `,exitCode:1}}function yl(e){return{stdout:``,stderr:`error: could not read log file '${e}': No such file or directory\n`,exitCode:128}}async function bl(e,t,n){if(n===`-`)return e.stdin;let r=n.startsWith(`/`)?n:`${t}/${n}`;try{return await e.fs.readTextFile(r)}catch{return yl(n)}}async function xl(e,t,n){let r=pl(n,`message`);if(r!==void 0)return r;let i=pl(n,`file`);if(i!==void 0){let n=await bl(e,t,i);return typeof n==`string`&&n===``?vl():n}return _l(n)}async function Sl(e,t){let n=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,a,o]of n)i!==0&&a!==o&&(a===0?await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:r}):await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:r}))}function Cl(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.startsWith(`-`)&&!r.startsWith(`--`)&&r.length>2&&!r.includes(`=`)){let e=r.slice(1);for(let n of e)t.push(`-${n}`)}else t.push(r)}return t}async function wl(e,t,n){let r=n.includes(`--list`)||n.includes(`-l`),i=n.includes(`--unset`),a=n.includes(`--global`),o=n.find(e=>!e.startsWith(`-`)&&e.includes(`.`));if(r)return Ol(e,t,a);if(i)return Tl(e,t,o,a);if(!o)return{stdout:``,stderr:`usage: git config [--global] [--list] [--unset] <key> [<value>]
30
- `,exitCode:1};let s=n.indexOf(o),c;for(let e=s+1;e<n.length;e++)if(!n[e].startsWith(`-`)){c=n[e];break}return c===void 0?Dl(e,t,o,a):El(e,t,o,c,a)}async function Tl(e,t,n,r){if(!n)return{stdout:``,stderr:`error: key required for --unset
31
- `,exitCode:1};if(n===`credential.token`||n===`github.token`)return await e.setGithubToken(``),{stdout:``,stderr:``,exitCode:0};if(r){let t=await e.getGlobalFs();try{let e=await t.readTextFile(cr),r=or(e,n);await t.writeFile(cr,r)}catch{}}else try{let r=`${t}/.git/config`,i=await e.fs.readTextFile(r),a=or(i,n);await e.fs.writeFile(r,a)}catch{}return{stdout:``,stderr:``,exitCode:0}}async function El(e,t,n,r,i){return n===`credential.token`||n===`github.token`?(await e.setGithubToken(r),{stdout:``,stderr:``,exitCode:0}):(i?await ar(await e.getGlobalFs(),n,r):await pn({fs:e.lfs,dir:t,path:n,value:r}),n===`user.name`&&e.setDefaultAuthorName(r),n===`user.email`&&e.setDefaultAuthorEmail(r),{stdout:``,stderr:``,exitCode:0})}async function Dl(e,t,n,r){if(n===`credential.token`||n===`github.token`){let t=e.getGithubToken();return{stdout:t?`${t}\n`:``,stderr:``,exitCode:+!t}}let i;return r?i=await sr(await e.getGlobalFs(),n):(i=await un({fs:e.lfs,dir:t,path:n}),i||=await sr(await e.getGlobalFs(),n)),{stdout:i?`${i}\n`:``,stderr:``,exitCode:+!i}}async function Ol(e,t,n){let r=``;if(!n)try{let n=`${t}/.git/config`,i=await e.fs.readTextFile(n);r+=kl(i)}catch{}try{let t=await(await e.getGlobalFs()).readTextFile(cr);r+=kl(t)}catch{}return{stdout:r,stderr:``,exitCode:0}}function kl(e){let t=``,n=``,r=``;for(let i of e.split(`
32
- `)){let e=i.trim();if(!e||e.startsWith(`#`)||e.startsWith(`;`))continue;let a=e.match(/^\[(\w+)(?:\s+"([^"]*)")?\]$/);if(a){n=a[1].toLowerCase(),r=a[2]??``;continue}let o=e.match(/^(\w+)\s*=\s*(.*)$/);if(o&&n){let e=o[1],i=o[2].trim(),a=r?`${n}.${r}.${e}`:`${n}.${e}`;t+=`${a}=${i}\n`}}return t}const Al=`/dev/null`,jl={bytes:new Uint8Array,text:``,binary:!1};async function Ml(e,t,n,r){if(n.length!==2)return{stdout:``,stderr:`usage: git diff --no-index [<options>] <path> <path>
33
- `,exitCode:129};let[i,a]=await Promise.all([Rl(e,t,n[0]),Rl(e,t,n[1])]);[i,a]=await zl(e,t,i,a);let o=i.kind===`missing`?i:a.kind===`missing`?a:void 0;if(o)return{stdout:``,stderr:`error: Could not access '${o.given}'\n`,exitCode:1};let s=(i.kind===`dir`&&a.kind===`dir`?await Ul(e,i,a):[await Vl(e,i,a)]).filter(e=>!Nl(e.oldBlob.bytes,e.newBlob.bytes));return s.length===0?{stdout:``,stderr:``,exitCode:0}:{stdout:Pl(s,r,e.useColor),stderr:``,exitCode:1}}function Nl(e,t){if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}function Pl(e,t,n){if(t.nameOnly)return`${e.map(e=>e.absent===`new`?Al:e.newName).join(`
34
- `)}\n`;if(t.stat)return qe(e.map(Il),{color:n});let r=``;for(let i of e){if(i.oldBlob.binary||i.newBlob.binary){r+=`diff --git a/${i.oldName} b/${i.newName}\n`,r+=`Binary files ${Fl(i,`old`)} and ${Fl(i,`new`)} differ\n`;continue}r+=Je({oldContent:i.oldBlob.text,newContent:i.newBlob.text,oldName:i.oldName,newName:i.newName,absent:i.absent,context:t.context,color:n})}return r}function Fl(e,t){return e.absent===t?Al:t===`old`?`a/${e.oldName}`:`b/${e.newName}`}function Il(e){return{name:Ll(e.absent===`old`?Al:e.oldName,e.absent===`new`?Al:e.newName),oldContent:e.oldBlob.text,newContent:e.newBlob.text,binary:e.oldBlob.binary||e.newBlob.binary?{oldSize:e.oldBlob.bytes.byteLength,newSize:e.newBlob.bytes.byteLength}:void 0}}function Ll(e,t){if(e===t)return e;let n=0,r=Math.min(e.length,t.length);for(let i=0;i<r&&e[i]===t[i];i++)e[i]===`/`&&(n=i+1);let i=n>0?n-1:0,a=0;for(let n=e.length-1,r=t.length-1;n>=i&&r>=i&&e[n]===t[r];n--,r--)e[n]===`/`&&(a=e.length-n);if(n+a===0)return`${e} => ${t}`;let o=e.slice(n,Math.max(n,e.length-a)),s=t.slice(n,Math.max(n,t.length-a));return`${e.slice(0,n)}{${o} => ${s}}${e.slice(e.length-a)}`}async function Rl(e,t,n){if(n===Al)return{kind:`null`,given:n};let r=x(n.startsWith(`/`)?n:`${t}/${n}`);try{return(await e.fs.stat(r)).type===`directory`?{kind:`dir`,abs:r,given:n}:{kind:`file`,abs:r,given:n}}catch{return{kind:`missing`,given:n}}}async function zl(e,t,n,r){return n.kind===`dir`&&(r.kind===`file`||r.kind===`null`)?[await Rl(e,t,`${n.given}/${Bl(r.given)}`),r]:r.kind===`dir`&&(n.kind===`file`||n.kind===`null`)?[n,await Rl(e,t,`${r.given}/${Bl(n.given)}`)]:[n,r]}function Bl(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}async function Vl(e,t,n){let[r,i]=await Promise.all([Hl(e,t),Hl(e,n)]),a=t.kind===`null`?`old`:n.kind===`null`?`new`:void 0,o=Kl(t.kind===`null`?n.given:t.given);return{oldName:a?o:Kl(t.given),newName:a?o:Kl(n.given),absent:a,oldBlob:r,newBlob:i}}function Hl(e,t){return t.kind===`file`?Gl(e,t.abs):Promise.resolve(jl)}async function Ul(e,t,n){let[r,i]=await Promise.all([Wl(e,t.abs),Wl(e,n.abs)]),a=[...new Set([...r,...i])].sort(),o=[];for(let s of a){let a=Kl(`${t.given}/${s}`),c=Kl(`${n.given}/${s}`);i.has(s)?r.has(s)?o.push({oldName:a,newName:c,oldBlob:await Gl(e,`${t.abs}/${s}`),newBlob:await Gl(e,`${n.abs}/${s}`)}):o.push({oldName:c,newName:c,absent:`old`,oldBlob:jl,newBlob:await Gl(e,`${n.abs}/${s}`)}):o.push({oldName:a,newName:a,absent:`new`,oldBlob:await Gl(e,`${t.abs}/${s}`),newBlob:jl})}return o}async function Wl(e,t){let n=new Set,r=async i=>{let a=await e.fs.readDir(i?`${t}/${i}`:t);for(let e of a){let t=i?`${i}/${e.name}`:e.name;e.type===`directory`?await r(t):n.add(t)}};return await r(``),n}async function Gl(e,t){let n=await e.fs.readFile(t,{encoding:`binary`}),r=typeof n==`string`?new TextEncoder().encode(n):n,i=r.subarray(0,8e3).includes(0);return{bytes:r,text:i?``:new TextDecoder().decode(r),binary:i}}function Kl(e){return e.replace(/^\/+/,``)}function ql(e){return(t,n)=>{let r=[];for(let i of n){let n=i.find(e=>typeof e==`string`),a=i.map(e=>typeof e==`string`);(n===void 0||e(n,a))&&r.push(t(i))}return Promise.all(r)}}async function Jl(e,t,n){let r=cu(n),i=nc(r,L.diff);if(i)return i;let{flags:a,positionals:o,doubleDashRest:s}=M(r,L.diff),c=a.staged===!0||a.cached===!0,l=o.length>=2?o.slice(2):[],u={nameOnly:a[`name-only`]===!0,nameStatus:a[`name-status`]===!0,stat:a.stat===!0,pathspecs:[...l,...s],context:lu(a.unified)};if(a[`no-index`]===!0||a.index===!1)return Ml(e,t,o,u);if(o.length>=2)return eu(e,t,o[0],o[1],u);if(o.length===1){let n=uu(o[0]);if(n)return tu(e,t,n[0],n[1],u);let r=du(o[0]);return r?eu(e,t,r[0],r[1],u):c?Xl(e,t,o[0],u):ru(e,t,o[0],u)}return su(e,c?await Yl(e,t,u.pathspecs):await Zl(e,t,u.pathspecs),u)}async function Yl(e,t,n=[],r=`HEAD`){let i=[];return await en({fs:e.lfs,cache:e.cache,dir:t,trees:[kn({ref:r}),Pn()],iterate:ql(e=>Ic(e,n)),map:async(r,[a,o])=>{if(r===`.`||r===`.git`||r.startsWith(`.git/`)||!Fc(r,n))return;let s=a?await a.type():void 0,c=o?await o.type():void 0;if(s===`tree`||c===`tree`)return;let l=a?await a.oid():void 0,u=o?await o.oid():void 0;if(l===u)return;let d=await $l(e,t,l),f=await $l(e,t,u);i.push({filepath:r,oldContent:d,newContent:f,oldPresent:!!l,newPresent:!!u})}}),i}async function Xl(e,t,n,r){let i;try{i=await Dc(e,t,n)}catch{return pu(n)}return su(e,await Yl(e,t,r.pathspecs,i),r)}async function Zl(e,t,n=[]){let r=[];return await en({fs:e.lfs,cache:e.cache,dir:t,trees:[Pn(),Mn(sc)],iterate:ql((e,[t])=>t===!0&&Ic(e,n)),map:async(i,[a,o])=>{if(i===`.`)return;if(!a)return null;let s=await a.type();if(s===`tree`)return;if(s!==`blob`||!Fc(i,n))return null;let c=await a.oid(),l=await Ql(o);if(l&&c&&(await Zt({object:l})).oid===c)return null;let u=await $l(e,t,c),d=l?new TextDecoder().decode(l):``;return u!==d&&r.push({filepath:i,oldContent:u,newContent:d,oldPresent:!!c,newPresent:!!l}),null}}),r.sort((e,t)=>e.filepath<t.filepath?-1:+(e.filepath>t.filepath)),r}async function Ql(e){if(e)try{return await e.type()===`blob`?await e.content()??void 0:void 0}catch{return}}async function $l(e,t,n){if(!n)return``;try{let{blob:r}=await $t({fs:e.lfs,dir:t,oid:n,cache:e.cache});return new TextDecoder().decode(r)}catch{return``}}async function eu(e,t,n,r,i){try{return await nu(e,t,await Dc(e,t,n),await Dc(e,t,r),i)}catch{return pu(await fu(e,t,[n,r])??n)}}async function tu(e,t,n,r,i){let a=n||`HEAD`,o=r||`HEAD`;try{let n=await Dc(e,t,a),r=await Dc(e,t,o),s=await vn({fs:e.lfs,cache:e.cache,dir:t,oids:[n,r]});return s[0]?await nu(e,t,s[0],r,i):{stdout:``,stderr:`fatal: '${a}...${o}' has no merge base\n`,exitCode:128}}catch{return pu(await fu(e,t,[a,o])??a)}}async function nu(e,t,n,r,i){let a=[];return await en({fs:e.lfs,cache:e.cache,dir:t,trees:[kn({ref:n}),kn({ref:r})],iterate:ql(e=>Ic(e,i.pathspecs??[])),map:async(e,[t,n])=>{if(await au(t,n))return null;let r=await ou(e,t,n,i.pathspecs??[]);r&&a.push(r)}}),su(e,a,i)}async function ru(e,t,n,r){let i;try{i=await Dc(e,t,n)}catch{return pu(n)}let a=new Set(await O({fs:e.lfs,dir:t,cache:e.cache})),o=iu(a),s=[];return await en({fs:e.lfs,cache:e.cache,dir:t,trees:[kn({ref:i}),Mn(sc)],iterate:ql((e,[t])=>(t===!0||a.has(e)||o.has(e))&&Ic(e,r.pathspecs??[])),map:async(e,[t,n])=>{if(!t&&!a.has(e)&&!o.has(e))return null;let i=await ou(e,t,n,r.pathspecs??[]);i&&s.push(i)}}),su(e,s,r)}function iu(e){let t=new Set;for(let n of e){let e=n.indexOf(`/`);for(;e>0;)t.add(n.slice(0,e)),e=n.indexOf(`/`,e+1)}return t}async function au(e,t){if(!e||!t||await e.type()!==`tree`||await t.type()!==`tree`)return!1;let n=await e.oid();return!!n&&n===await t.oid()}async function ou(e,t,n,r){if(e===`.`||!Fc(e,r))return null;let i=t?await t.type():void 0,a=n?await n.type():void 0;if(i===`tree`||a===`tree`)return null;let o=t?await t.oid():void 0,s=n?await n.oid():void 0;if(o===s)return null;let c=t?await t.content():void 0,l=n?await n.content():void 0;return{filepath:e,oldContent:c?new TextDecoder().decode(c):``,newContent:l?new TextDecoder().decode(l):``,oldPresent:!!o,newPresent:!!s}}function su(e,t,n){return t.length===0?{stdout:``,stderr:``,exitCode:0}:n.nameStatus?{stdout:`${t.map(e=>{let t=e.oldPresent??e.oldContent!==``,n=e.newPresent??e.newContent!==``;return`${t?n?`M`:`D`:`A`}\t${e.filepath}`}).join(`
24
+ `,{stdout:``,stderr:r,exitCode:1}}return e instanceof Error&&e.name===`CherryPickMergeCommitError`?{stdout:``,stderr:`error: commit ${t} is a merge but no -m option was given.\nfatal: cherry-pick failed\n`,exitCode:128}:e instanceof Error&&e.name===`CherryPickRootCommitError`?{stdout:``,stderr:`error: ${e.message}\nfatal: cherry-pick failed\n`,exitCode:128}:{stdout:``,stderr:`fatal: ${sc(e)}\n`,exitCode:128}}async function Hc(e,t,n){let r=M(n,Zs),i=!!r.flags[`dry-run`],a=!!r.flags.force,o=!!r.flags.d,s=!!r.flags.x,c=!!r.flags.X,l=!!r.flags.quiet,u=r.positionals;if(!i&&!a)return{stdout:``,stderr:`fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean
25
+ `,exitCode:128};let d=await k({fs:e.lfs,cache:e.cache,dir:t,...uc}),f=Uc(d),p=d.filter(([,e,t,n])=>e===0&&t===2&&n===0).map(([e])=>e),m;if(c||s){let n=(await k({fs:e.lfs,cache:e.cache,dir:t,ignored:!0,...uc})).filter(([,e,t,n])=>e===0&&t===2&&n===0).map(([e])=>e);if(c){let e=new Set(p);m=n.filter(t=>!e.has(t))}else m=n}else m=p;u.length>0&&(m=m.filter(e=>u.some(t=>Gc(e,t))));let h=new Set,g=new Set;for(let e of m){let t=Wc(e,f);t===null?h.add(e):o&&g.add(t)}let _=[...[...h].sort().map(e=>({display:e,target:e,isDir:!1})),...[...g].sort().map(e=>({display:`${e}/`,target:e,isDir:!0}))],v=``;if(!l){let e=i?`Would remove`:`Removing`;for(let t of _)v+=`${e} ${t.display}\n`}if(!i)for(let n of _){let r=`${t}/${n.target}`;try{await e.fs.rm(r,{recursive:n.isDir})}catch{}}return{stdout:v,stderr:``,exitCode:0}}function Uc(e){let t=new Set([``]);for(let[n,r,,i]of e){if(r===0&&i===0)continue;let e=n.lastIndexOf(`/`);for(;e>0;)t.add(n.slice(0,e)),e=n.lastIndexOf(`/`,e-1)}return t}function Wc(e,t){let n=e.split(`/`);if(n.length===1)return null;for(let e=1;e<n.length;e++){let r=n.slice(0,e).join(`/`);if(!t.has(r))return r}return null}function Gc(e,t){let n=t.endsWith(`/`)?t.slice(0,-1):t;return e===n||e.startsWith(`${n}/`)}let Kc=null;function qc(){return Kc||=g(),Kc}async function*Jc(e,t,n){t&&t({phase:`Receiving`,loaded:e.length,total:n??e.length}),yield e}function Yc(){return{request:async e=>{let{url:t,method:n=`GET`,headers:r={},body:i,onProgress:a}=e,o;if(i){let e=[];for await(let t of i)e.push(t);let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;let a=``;for(let e=0;e<n.length;e+=32768)a+=String.fromCharCode(...n.subarray(e,e+32768));o=a}let s=await qc()(t,{method:n,headers:r,body:o}),c=parseInt(s.headers[`content-length`]??`0`,10)||void 0,l=Jc(s.body,a,c);return{url:s.url,method:n,headers:s.headers,body:l,statusCode:s.status,statusMessage:s.statusText}}}}const Xc=Yc();async function Zc(e,t,n){let r=ac(n,L.clone);if(r)return r;let{flags:i,positionals:a}=M(n,L.clone),o=i,s=o.quiet===!0;if(a.length===0)return{stdout:``,stderr:`fatal: You must specify a repository to clone.
26
+ `,exitCode:128};let c=a[0],l=a[1];if(!l){let e=c.match(/\/([^/]+?)(\.git)?$/);l=e?e[1]:`repo`}let u=x(l.startsWith(`/`)?l:`${t}/${l}`),d=R(o,`depth`),f=R(o,`branch`),p=o[`single-branch`]!==!1,m=s?``:`Cloning into '${l}'...\n`,h=Qc(c,t);if(h)return $c(e,h,u,c,l,m,f,s);try{await bn({fs:e.lfs,cache:e.cache,http:Xc,dir:u,url:c,corsProxy:e.corsProxy,depth:d?parseInt(d,10):1,ref:f,singleBranch:p,noCheckout:!1,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),onProgress:s?void 0:e=>{e.phase===`Receiving objects`&&(m+=`Receiving objects: ${e.loaded}/${e.total}\n`)}})}catch(e){return tl(e,u,c)}if(await e.fs.flush(),!s)try{let t=await O({fs:e.lfs,cache:e.cache,dir:u});t.length>0&&(m+=`Checked out ${t.length} files.\n`)}catch{}return{stdout:s?``:`${m}done.\n`,stderr:``,exitCode:0}}function Qc(e,t){if(e.startsWith(`file://`))try{return x(decodeURIComponent(new URL(e).pathname))}catch{return null}return e.startsWith(`/`)?x(e):e.startsWith(`./`)||e.startsWith(`../`)?x(S(t,e)):null}async function $c(e,t,n,r,i,a,o,s=!1){if(n===t||n.startsWith(`${t}/`))return tl(Error(`destination is inside the source repository`),n);try{await e.lfs.stat(`${t}/.git`);try{if((await e.lfs.readdir(n)).length>0)return tl(Error(`destination path '${i}' already exists and is not an empty directory.`),n)}catch{await e.lfs.mkdir(n,{recursive:!0})}let c=o??await j({fs:e.lfs,dir:t});if(await el(e,`${t}/.git`,`${n}/.git`),c&&await Dn({fs:e.lfs,cache:e.cache,dir:n,ref:c,force:!0}),await An({fs:e.lfs,dir:n,remote:`origin`,url:r,force:!0}),await e.fs.flush(),!s){let t=await O({fs:e.lfs,cache:e.cache,dir:n});t.length>0&&(a+=`Checked out ${t.length} files.\n`)}return{stdout:s?``:`${a}done.\n`,stderr:``,exitCode:0}}catch(e){return tl(e,n,r)}}async function el(e,t,n){let r=await e.lfs.lstat(t);if(r.isDirectory()){await e.lfs.mkdir(n,{recursive:!0});for(let r of await e.lfs.readdir(t))await el(e,`${t}/${r}`,`${n}/${r}`)}else r.isSymbolicLink()?await e.lfs.symlink(await e.lfs.readlink(t),n):await e.lfs.writeFile(n,await e.lfs.readFile(t))}function tl(e,t,n){return{stdout:``,stderr:`fatal: ${sc(e,n).replace(/'\/__opfs__\/[^']*<path>'/g,`'${t}'`).replace(/\/__opfs__\/[^\s'"<]*<path>/g,t).replace(/<path>/g,t)}\n`,exitCode:128}}const nl=[`MERGE_HEAD`,`MERGE_MSG`,`MERGE_MODE`,`AUTO_MERGE`];async function rl(e,t){return`${await Rn({fs:e.lfs,filepath:t})}/.git`}async function il(e,t){try{return(await e.fs.readTextFile(t)).trim()}catch{return}}async function al(e,t){try{await e.fs.rm(t)}catch{}}async function ol(e,t){try{return await il(e,`${await rl(e,t)}/MERGE_HEAD`)}catch{return}}async function sl(e,t){return await ol(e,t)!==void 0}async function cl(e,t){try{return await il(e,`${await rl(e,t)}/MERGE_MSG`)}catch{return}}async function ll(e,t,n){let r=await rl(e,t);await e.fs.writeFile(`${r}/ORIG_HEAD`,`${n}\n`)}async function ul(e,t,n,r){let i=await rl(e,t);await e.fs.writeFile(`${i}/MERGE_HEAD`,`${n}\n`),await e.fs.writeFile(`${i}/MERGE_MSG`,r.endsWith(`
27
+ `)?r:`${r}\n`)}async function dl(e,t){let n;try{n=await rl(e,t)}catch{return}await Promise.all(nl.map(t=>al(e,`${n}/${t}`)))}async function fl(e,t){let n=await O({fs:e.lfs,cache:e.cache,dir:t}),r=[];for(let i of n)try{(await e.fs.readTextFile(`${t}/${i}`)).includes(`<<<<<<<`)&&r.push(i)}catch{}return r}const pl=new Set([`message`,`author`,`date`,`file`,`cleanup`,`amend`,`all`,`allow-empty`,`m`,`a`,`F`]);async function ml(e,t,n){let r=El(n),i=M(r,L.commit).flags,a=await ol(e,t),o=await wl(e,t,i);if(typeof o!=`string`){if(a){let n=await cl(e,t);if(n)return await hl(e,t,i,n,a)}return o}return await hl(e,t,i,o,a)}async function hl(e,t,n,r,i){let a=n.amend===!0,o=n.all===!0,s=n[`allow-empty`]===!0;if(o&&await Tl(e,t),!s&&!a&&!i&&!(await k({fs:e.lfs,cache:e.cache,dir:t})).some(([,e,,t])=>t!==e))return{stdout:``,stderr:`nothing to commit, working tree clean
28
+ `,exitCode:1};let c=await xn({fs:e.lfs,cache:e.cache,dir:t,message:r,author:await e.resolveAuthor(t),amend:a,noUpdateBranch:void 0,...i?{parent:[await D({fs:e.lfs,dir:t,ref:`HEAD`}),i]}:{}});i&&await dl(e,t);let l=c.slice(0,7);return{stdout:`[${await j({fs:e.lfs,dir:t})??`HEAD`} ${l}] ${r}\n`,stderr:``,exitCode:0}}function gl(e,t){let n=e[t];if(n!==void 0&&n!==!0&&n!==!1)return R(e,t)}function _l(e){return Object.keys(e).find(e=>!pl.has(e))}function vl(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function yl(e){return{stdout:``,stderr:`error: switch \`${e}\` requires a value\n`,exitCode:1}}function bl(e){let t=_l(e);return t?vl(t):`message`in e||`m`in e?yl(`m`):`file`in e||`F`in e?yl(`F`):{stdout:``,stderr:"error: option `-m' or `-F' is required\n",exitCode:1}}function xl(){return{stdout:``,stderr:`Aborting commit due to empty commit message.
29
+ `,exitCode:1}}function Sl(e){return{stdout:``,stderr:`error: could not read log file '${e}': No such file or directory\n`,exitCode:128}}async function Cl(e,t,n){if(n===`-`)return e.stdin;let r=n.startsWith(`/`)?n:`${t}/${n}`;try{return await e.fs.readTextFile(r)}catch{return Sl(n)}}async function wl(e,t,n){let r=gl(n,`message`);if(r!==void 0)return r;let i=gl(n,`file`);if(i!==void 0){let n=await Cl(e,t,i);return typeof n==`string`&&n===``?xl():n}return bl(n)}async function Tl(e,t){let n=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,a,o]of n)i!==0&&a!==o&&(a===0?await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:r}):await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:r}))}function El(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.startsWith(`-`)&&!r.startsWith(`--`)&&r.length>2&&!r.includes(`=`)){let e=r.slice(1);for(let n of e)t.push(`-${n}`)}else t.push(r)}return t}async function Dl(e,t,n){let r=n.includes(`--list`)||n.includes(`-l`),i=n.includes(`--unset`),a=n.includes(`--global`),o=n.find(e=>!e.startsWith(`-`)&&e.includes(`.`));if(r)return jl(e,t,a);if(i)return Ol(e,t,o,a);if(!o)return{stdout:``,stderr:`usage: git config [--global] [--list] [--unset] <key> [<value>]
30
+ `,exitCode:1};let s=n.indexOf(o),c;for(let e=s+1;e<n.length;e++)if(!n[e].startsWith(`-`)){c=n[e];break}return c===void 0?Al(e,t,o,a):kl(e,t,o,c,a)}async function Ol(e,t,n,r){if(!n)return{stdout:``,stderr:`error: key required for --unset
31
+ `,exitCode:1};if(n===`credential.token`||n===`github.token`)return await e.setGithubToken(``),{stdout:``,stderr:``,exitCode:0};if(r){let t=await e.getGlobalFs();try{let e=await t.readTextFile(cr),r=or(e,n);await t.writeFile(cr,r)}catch{}}else try{let r=`${t}/.git/config`,i=await e.fs.readTextFile(r),a=or(i,n);await e.fs.writeFile(r,a)}catch{}return{stdout:``,stderr:``,exitCode:0}}async function kl(e,t,n,r,i){return n===`credential.token`||n===`github.token`?(await e.setGithubToken(r),{stdout:``,stderr:``,exitCode:0}):(i?await ar(await e.getGlobalFs(),n,r):await pn({fs:e.lfs,dir:t,path:n,value:r}),n===`user.name`&&e.setDefaultAuthorName(r),n===`user.email`&&e.setDefaultAuthorEmail(r),{stdout:``,stderr:``,exitCode:0})}async function Al(e,t,n,r){if(n===`credential.token`||n===`github.token`){let t=e.getGithubToken();return{stdout:t?`${t}\n`:``,stderr:``,exitCode:+!t}}let i;return r?i=await sr(await e.getGlobalFs(),n):(i=await un({fs:e.lfs,dir:t,path:n}),i||=await sr(await e.getGlobalFs(),n)),{stdout:i?`${i}\n`:``,stderr:``,exitCode:+!i}}async function jl(e,t,n){let r=``;if(!n)try{let n=`${t}/.git/config`,i=await e.fs.readTextFile(n);r+=Ml(i)}catch{}try{let t=await(await e.getGlobalFs()).readTextFile(cr);r+=Ml(t)}catch{}return{stdout:r,stderr:``,exitCode:0}}function Ml(e){let t=``,n=``,r=``;for(let i of e.split(`
32
+ `)){let e=i.trim();if(!e||e.startsWith(`#`)||e.startsWith(`;`))continue;let a=e.match(/^\[(\w+)(?:\s+"([^"]*)")?\]$/);if(a){n=a[1].toLowerCase(),r=a[2]??``;continue}let o=e.match(/^(\w+)\s*=\s*(.*)$/);if(o&&n){let e=o[1],i=o[2].trim(),a=r?`${n}.${r}.${e}`:`${n}.${e}`;t+=`${a}=${i}\n`}}return t}const Nl=`/dev/null`,Pl={bytes:new Uint8Array,text:``,binary:!1};async function Fl(e,t,n,r){if(n.length!==2)return{stdout:``,stderr:`usage: git diff --no-index [<options>] <path> <path>
33
+ `,exitCode:129};let[i,a]=await Promise.all([Vl(e,t,n[0]),Vl(e,t,n[1])]);[i,a]=await Hl(e,t,i,a);let o=i.kind===`missing`?i:a.kind===`missing`?a:void 0;if(o)return{stdout:``,stderr:`error: Could not access '${o.given}'\n`,exitCode:1};let s=(i.kind===`dir`&&a.kind===`dir`?await Kl(e,i,a):[await Wl(e,i,a)]).filter(e=>!Il(e.oldBlob.bytes,e.newBlob.bytes));return s.length===0?{stdout:``,stderr:``,exitCode:0}:{stdout:Ll(s,r,e.useColor),stderr:``,exitCode:1}}function Il(e,t){if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}function Ll(e,t,n){if(t.nameOnly)return`${e.map(e=>e.absent===`new`?Nl:e.newName).join(`
34
+ `)}\n`;if(t.stat)return qe(e.map(zl),{color:n});let r=``;for(let i of e){if(i.oldBlob.binary||i.newBlob.binary){r+=`diff --git a/${i.oldName} b/${i.newName}\n`,r+=`Binary files ${Rl(i,`old`)} and ${Rl(i,`new`)} differ\n`;continue}r+=Je({oldContent:i.oldBlob.text,newContent:i.newBlob.text,oldName:i.oldName,newName:i.newName,absent:i.absent,context:t.context,color:n})}return r}function Rl(e,t){return e.absent===t?Nl:t===`old`?`a/${e.oldName}`:`b/${e.newName}`}function zl(e){return{name:Bl(e.absent===`old`?Nl:e.oldName,e.absent===`new`?Nl:e.newName),oldContent:e.oldBlob.text,newContent:e.newBlob.text,binary:e.oldBlob.binary||e.newBlob.binary?{oldSize:e.oldBlob.bytes.byteLength,newSize:e.newBlob.bytes.byteLength}:void 0}}function Bl(e,t){if(e===t)return e;let n=0,r=Math.min(e.length,t.length);for(let i=0;i<r&&e[i]===t[i];i++)e[i]===`/`&&(n=i+1);let i=n>0?n-1:0,a=0;for(let n=e.length-1,r=t.length-1;n>=i&&r>=i&&e[n]===t[r];n--,r--)e[n]===`/`&&(a=e.length-n);if(n+a===0)return`${e} => ${t}`;let o=e.slice(n,Math.max(n,e.length-a)),s=t.slice(n,Math.max(n,t.length-a));return`${e.slice(0,n)}{${o} => ${s}}${e.slice(e.length-a)}`}async function Vl(e,t,n){if(n===Nl)return{kind:`null`,given:n};let r=x(n.startsWith(`/`)?n:`${t}/${n}`);try{return(await e.fs.stat(r)).type===`directory`?{kind:`dir`,abs:r,given:n}:{kind:`file`,abs:r,given:n}}catch{return{kind:`missing`,given:n}}}async function Hl(e,t,n,r){return n.kind===`dir`&&(r.kind===`file`||r.kind===`null`)?[await Vl(e,t,`${n.given}/${Ul(r.given)}`),r]:r.kind===`dir`&&(n.kind===`file`||n.kind===`null`)?[n,await Vl(e,t,`${r.given}/${Ul(n.given)}`)]:[n,r]}function Ul(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}async function Wl(e,t,n){let[r,i]=await Promise.all([Gl(e,t),Gl(e,n)]),a=t.kind===`null`?`old`:n.kind===`null`?`new`:void 0,o=Yl(t.kind===`null`?n.given:t.given);return{oldName:a?o:Yl(t.given),newName:a?o:Yl(n.given),absent:a,oldBlob:r,newBlob:i}}function Gl(e,t){return t.kind===`file`?Jl(e,t.abs):Promise.resolve(Pl)}async function Kl(e,t,n){let[r,i]=await Promise.all([ql(e,t.abs),ql(e,n.abs)]),a=[...new Set([...r,...i])].sort(),o=[];for(let s of a){let a=Yl(`${t.given}/${s}`),c=Yl(`${n.given}/${s}`);i.has(s)?r.has(s)?o.push({oldName:a,newName:c,oldBlob:await Jl(e,`${t.abs}/${s}`),newBlob:await Jl(e,`${n.abs}/${s}`)}):o.push({oldName:c,newName:c,absent:`old`,oldBlob:Pl,newBlob:await Jl(e,`${n.abs}/${s}`)}):o.push({oldName:a,newName:a,absent:`new`,oldBlob:await Jl(e,`${t.abs}/${s}`),newBlob:Pl})}return o}async function ql(e,t){let n=new Set,r=async i=>{let a=await e.fs.readDir(i?`${t}/${i}`:t);for(let e of a){let t=i?`${i}/${e.name}`:e.name;e.type===`directory`?await r(t):n.add(t)}};return await r(``),n}async function Jl(e,t){let n=await e.fs.readFile(t,{encoding:`binary`}),r=typeof n==`string`?new TextEncoder().encode(n):n,i=r.subarray(0,8e3).includes(0);return{bytes:r,text:i?``:new TextDecoder().decode(r),binary:i}}function Yl(e){return e.replace(/^\/+/,``)}function Xl(e){return(t,n)=>{let r=[];for(let i of n){let n=i.find(e=>typeof e==`string`),a=i.map(e=>typeof e==`string`);(n===void 0||e(n,a))&&r.push(t(i))}return Promise.all(r)}}async function Zl(e,t,n){let r=du(n),i=ac(r,L.diff);if(i)return i;let{flags:a,positionals:o,doubleDashRest:s}=M(r,L.diff),c=a.staged===!0||a.cached===!0,l=o.length>=2?o.slice(2):[],u={nameOnly:a[`name-only`]===!0,nameStatus:a[`name-status`]===!0,stat:a.stat===!0,pathspecs:[...l,...s],context:fu(a.unified)};if(a[`no-index`]===!0||a.index===!1)return Fl(e,t,o,u);if(o.length>=2)return ru(e,t,o[0],o[1],u);if(o.length===1){let n=pu(o[0]);if(n)return iu(e,t,n[0],n[1],u);let r=mu(o[0]);return r?ru(e,t,r[0],r[1],u):c?$l(e,t,o[0],u):ou(e,t,o[0],u)}return uu(e,c?await Ql(e,t,u.pathspecs):await eu(e,t,u.pathspecs),u)}async function Ql(e,t,n=[],r=`HEAD`){let i=[];return await en({fs:e.lfs,cache:e.cache,dir:t,trees:[kn({ref:r}),Pn()],iterate:Xl(e=>zc(e,n)),map:async(r,[a,o])=>{if(r===`.`||r===`.git`||r.startsWith(`.git/`)||!Rc(r,n))return;let s=a?await a.type():void 0,c=o?await o.type():void 0;if(s===`tree`||c===`tree`)return;let l=a?await a.oid():void 0,u=o?await o.oid():void 0;if(l===u)return;let d=await nu(e,t,l),f=await nu(e,t,u);i.push({filepath:r,oldContent:d,newContent:f,oldPresent:!!l,newPresent:!!u})}}),i}async function $l(e,t,n,r){let i;try{i=await Ac(e,t,n)}catch{return gu(n)}return uu(e,await Ql(e,t,r.pathspecs,i),r)}async function eu(e,t,n=[]){let r=[];return await en({fs:e.lfs,cache:e.cache,dir:t,trees:[Pn(),Mn(uc)],iterate:Xl((e,[t])=>t===!0&&zc(e,n)),map:async(i,[a,o])=>{if(i===`.`)return;if(!a)return null;let s=await a.type();if(s===`tree`)return;if(s!==`blob`||!Rc(i,n))return null;let c=await a.oid(),l=await tu(o);if(l&&c&&(await Zt({object:l})).oid===c)return null;let u=await nu(e,t,c),d=l?new TextDecoder().decode(l):``;return u!==d&&r.push({filepath:i,oldContent:u,newContent:d,oldPresent:!!c,newPresent:!!l}),null}}),r.sort((e,t)=>e.filepath<t.filepath?-1:+(e.filepath>t.filepath)),r}async function tu(e){if(e)try{return await e.type()===`blob`?await e.content()??void 0:void 0}catch{return}}async function nu(e,t,n){if(!n)return``;try{let{blob:r}=await $t({fs:e.lfs,dir:t,oid:n,cache:e.cache});return new TextDecoder().decode(r)}catch{return``}}async function ru(e,t,n,r,i){try{return await au(e,t,await Ac(e,t,n),await Ac(e,t,r),i)}catch{return gu(await hu(e,t,[n,r])??n)}}async function iu(e,t,n,r,i){let a=n||`HEAD`,o=r||`HEAD`;try{let n=await Ac(e,t,a),r=await Ac(e,t,o),s=await vn({fs:e.lfs,cache:e.cache,dir:t,oids:[n,r]});return s[0]?await au(e,t,s[0],r,i):{stdout:``,stderr:`fatal: '${a}...${o}' has no merge base\n`,exitCode:128}}catch{return gu(await hu(e,t,[a,o])??a)}}async function au(e,t,n,r,i){let a=[];return await en({fs:e.lfs,cache:e.cache,dir:t,trees:[kn({ref:n}),kn({ref:r})],iterate:Xl(e=>zc(e,i.pathspecs??[])),map:async(e,[t,n])=>{if(await cu(t,n))return null;let r=await lu(e,t,n,i.pathspecs??[]);r&&a.push(r)}}),uu(e,a,i)}async function ou(e,t,n,r){let i;try{i=await Ac(e,t,n)}catch{return gu(n)}let a=new Set(await O({fs:e.lfs,dir:t,cache:e.cache})),o=su(a),s=[];return await en({fs:e.lfs,cache:e.cache,dir:t,trees:[kn({ref:i}),Mn(uc)],iterate:Xl((e,[t])=>(t===!0||a.has(e)||o.has(e))&&zc(e,r.pathspecs??[])),map:async(e,[t,n])=>{if(!t&&!a.has(e)&&!o.has(e))return null;let i=await lu(e,t,n,r.pathspecs??[]);i&&s.push(i)}}),uu(e,s,r)}function su(e){let t=new Set;for(let n of e){let e=n.indexOf(`/`);for(;e>0;)t.add(n.slice(0,e)),e=n.indexOf(`/`,e+1)}return t}async function cu(e,t){if(!e||!t||await e.type()!==`tree`||await t.type()!==`tree`)return!1;let n=await e.oid();return!!n&&n===await t.oid()}async function lu(e,t,n,r){if(e===`.`||!Rc(e,r))return null;let i=t?await t.type():void 0,a=n?await n.type():void 0;if(i===`tree`||a===`tree`)return null;let o=t?await t.oid():void 0,s=n?await n.oid():void 0;if(o===s)return null;let c=t?await t.content():void 0,l=n?await n.content():void 0;return{filepath:e,oldContent:c?new TextDecoder().decode(c):``,newContent:l?new TextDecoder().decode(l):``,oldPresent:!!o,newPresent:!!s}}function uu(e,t,n){return t.length===0?{stdout:``,stderr:``,exitCode:0}:n.nameStatus?{stdout:`${t.map(e=>{let t=e.oldPresent??e.oldContent!==``,n=e.newPresent??e.newContent!==``;return`${t?n?`M`:`D`:`A`}\t${e.filepath}`}).join(`
35
35
  `)}\n`,stderr:``,exitCode:0}:n.nameOnly?{stdout:`${t.map(e=>e.filepath).join(`
36
- `)}\n`,stderr:``,exitCode:0}:n.stat?mu(t,e.useColor):{stdout:t.map(t=>Je({oldContent:t.oldContent,newContent:t.newContent,oldName:t.filepath,newName:t.filepath,context:n.context,color:e.useColor})).join(``),stderr:``,exitCode:0}}function cu(e){let t=e.indexOf(`--`);return e.map((e,n)=>(t===-1||n<t)&&/^-U\d+$/.test(e)?`--unified=${e.slice(2)}`:e)}function lu(e){let t=Array.isArray(e)?e[e.length-1]:e;if(t===void 0||typeof t==`boolean`||t===``)return;let n=Number.parseInt(String(t),10);return Number.isInteger(n)&&n>=0?n:void 0}function uu(e){let t=e.indexOf(`...`);return t===-1?null:[e.slice(0,t),e.slice(t+3)]}function du(e){if(e.includes(`...`))return null;let t=/^(.+)\.\.([^.]*)$/.exec(e);return t?.[1]!==void 0&&t[2]!==void 0?[t[1],t[2]]:null}async function fu(e,t,n){for(let r of n)try{await Dc(e,t,r)}catch{return r}return null}function pu(e){return{stdout:``,stderr:`fatal: ambiguous argument '${e}'\n`,exitCode:128}}function mu(e,t=!1){return{stdout:qe(e.map(e=>({name:e.filepath,oldContent:e.oldContent,newContent:e.newContent})),{color:t}),stderr:``,exitCode:0}}async function hu(e,t,n,r){let i=[];if(await en({fs:e.lfs,cache:e.cache,dir:t,trees:[kn({ref:n})],map:async(e,[t])=>{if(e===`.`||!t||await t.type()!==`blob`)return;let n=await t.content();n&&i.push({filepath:e,content:new TextDecoder().decode(n)})}}),i.length===0)return``;if(r)return mu(i.map(e=>({filepath:e.filepath,oldContent:``,newContent:e.content})),e.useColor).stdout;let a=``;for(let t of i)a+=Je({oldContent:``,newContent:t.content,oldName:t.filepath,newName:t.filepath,color:e.useColor});return a}async function gu(e,t,n){let r=nc(n,L.fetch);if(r)return r;let{flags:i,positionals:a}=M(n,L.fetch),o=i,s=a[0]??`origin`,c=a[1],l=o.prune===!0,u=o.quiet===!0,d=R(o,`depth`),f=u?``:`Fetching ${s}\n`,p=await zn({fs:e.lfs,cache:e.cache,http:qc,dir:t,remote:s,ref:c,corsProxy:e.corsProxy,prune:l,depth:d?parseInt(d,10):void 0,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),onProgress:u?void 0:e=>{f+=`${e.phase}: ${e.loaded}/${e.total}\n`}});return p.fetchHead&&(await _u(e,t,p.fetchHead,p.fetchHeadDescription),u||(f+=`From ${s}\n`,f+=` ${p.fetchHead.slice(0,7)}..${p.fetchHeadDescription??``}\n`)),{stdout:f,stderr:``,exitCode:0}}async function _u(e,t,n,r){let i=await Rn({fs:e.lfs,filepath:t}),a=r??``;await e.fs.writeFile(`${i}/.git/FETCH_HEAD`,`${n}\t\t${a}\n`)}async function vu(e,t,n){let r=M(n,L.init).flags,i=R(r,`initial-branch`)??e.getConfigOverrides()?.get(`init.defaultbranch`)??`main`;return await Ln({fs:e.lfs,dir:t,defaultBranch:i}),{stdout:`Initialized empty Git repository in ${t}/.git/\n`,stderr:``,exitCode:0}}function yu(e,t){let n=e.entry.commit.committer.timestamp,r=t.entry.commit.committer.timestamp;return n===r?e.tipRank===t.tipRank?e.seq<t.seq:e.tipRank<t.tipRank:n>r}var bu=class{heap=[];pushed=0;push(e,t){this.heap.push({entry:e,tipRank:t,seq:this.pushed++});let n=this.heap.length-1;for(;n>0;){let e=n-1>>1;if(!yu(this.heap[n],this.heap[e]))break;this.swap(n,e),n=e}}pop(){let e=this.heap[0];if(e===void 0)return;let t=this.heap.pop();return t!==void 0&&this.heap.length>0&&(this.heap[0]=t,this.siftDown()),e}siftDown(){for(let e=0;;){let t=e*2+1,n=e;if(t<this.heap.length&&yu(this.heap[t],this.heap[n])&&(n=t),t+1<this.heap.length&&yu(this.heap[t+1],this.heap[n])&&(n=t+1),n===e)return;this.swap(e,n),e=n}}swap(e,t){let n=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=n}};async function xu(e,t,n){try{return await D({fs:e.lfs,dir:t,ref:n})}catch{return}}async function Su(e,t,n,r){try{return await A({fs:e.lfs,dir:t,oid:n,cache:r})}catch{return}}async function Cu(e,t,n,r,i){let a=await Qt({fs:e.lfs,dir:t});for(let[o,s]of a.entries()){let a=await xu(e,t,s);if(a===void 0||r.has(a))continue;r.add(a);let c=await Su(e,t,a,i);c&&n.push(c,o)}}async function*wu(e,t,n){let r=new Set,i=new bu;for(await Cu(e,t,i,r,n.cache);;){let a=i.pop();if(a===void 0)return;yield a.entry;for(let o of a.entry.commit.parent){if(r.has(o))continue;r.add(o);let s=await Su(e,t,o,n.cache);s&&i.push(s,a.tipRank)}}}async function Tu(e,t,n){let r=[];if(n.limit<=0)return r;for await(let i of wu(e,t,{cache:n.cache}))if(r.push(i),r.length>=n.limit)break;return r}async function Eu(e,t,n){let{flags:r,positionals:i,doubleDashRest:a}=M(n,L.log),o=r,s=R(o,`max-count`),c=o.oneline===!0,l=o.stat===!0,u=o.reverse===!0,d=o.all===!0,f=R(o,`format`),p=R(o,`author`),m=R(o,`grep`),h=R(o,`follow`),g=await Du(e,t,{all:d,maxCount:s?parseInt(s,10):void 0,revision:i[0],pathspecs:a,followFile:h});return p&&(g=g.filter(e=>e.commit.author.name.includes(p))),m&&(g=g.filter(e=>e.commit.message.includes(m))),u&&(g=g.slice().reverse()),{stdout:await Iu(e,t,g,{format:f,oneline:c,showStat:l}),stderr:``,exitCode:0}}async function Du(e,t,n){let r=n.revision?Bu(n.revision):null,i=r?.[1]??n.revision,a=Vu(e.cache),o=n.maxCount??10;if(n.pathspecs.length>0&&!n.all&&!r&&!n.followFile)return await Nu(e,t,{ref:i,pathspecs:n.pathspecs,limit:o,caches:a});if(n.all&&n.pathspecs.length>0)return await Au(e,t,{pathspecs:n.pathspecs,limit:o,caches:a,exclude:r?await ku(e,t,r[0],a):void 0});let s=n.all?await Tu(e,t,{limit:n.maxCount??Ou,cache:a.git}):await Tn({fs:e.lfs,dir:t,cache:a.git,...i?{ref:i}:{},...!r&&n.pathspecs.length===0?{depth:n.maxCount??10}:{},...n.followFile?{filepath:n.followFile,follow:!0}:{}});if(r){let n=await ku(e,t,r[0],a);s=s.filter(e=>!n.has(e.oid))}return n.pathspecs.length>0?await Fu(e,t,s,n.pathspecs,o,a):r?s.slice(0,o):s}const Ou=50;async function ku(e,t,n,r){let i=await Tn({fs:e.lfs,dir:t,cache:r.git,ref:n});return new Set(i.map(e=>e.oid))}async function Au(e,t,n){let r=[],i=[],a=async()=>{if(i.length>0){let a=n.limit-r.length;r.push(...await Fu(e,t,i,n.pathspecs,a,n.caches)),i=[]}return r.length>=n.limit};for await(let o of wu(e,t,{cache:n.caches.git}))if(!n.exclude?.has(o.oid)&&(i.push(o),i.length>=64&&await a()))return r;return await a(),r}function ju(e){let t=e.replace(/^\.\//,``).replace(/\/+$/,``);return t===`.`?``:t}function Mu(e){let t=[...new Set(e.map(ju))];return t.some(e=>e===``)?null:t}async function Nu(e,t,n){let r=n.ref?{ref:n.ref}:{},i=Mu(n.pathspecs);return i===null?await Tn({fs:e.lfs,dir:t,cache:n.caches.git,...r,depth:n.limit}):i.length===1?(await Tn({fs:e.lfs,dir:t,cache:n.caches.git,...r,filepath:i[0],depth:n.limit,force:!0})).slice(0,n.limit):await Pu(e,t,{refArg:r,specs:i,limit:n.limit,caches:n.caches})}async function Pu(e,t,n){let r=[],i=0,a=Math.max(n.limit*4,32);for(;;){let o=await Tn({fs:e.lfs,dir:t,cache:n.caches.git,...n.refArg,depth:a});for(let e of o)n.caches.commitTrees.set(e.oid,e.commit.tree);for(let a of o.slice(i))if(await Gu(e,t,a,n.specs,n.caches)&&(r.push(a),r.length>=n.limit))return r;if(o.length<a)return r;i=o.length,a*=2}}async function Fu(e,t,n,r,i,a){let o=Mu(r);if(o===null)return n.slice(0,i);for(let e of n)a.commitTrees.set(e.oid,e.commit.tree);let s=[];for(let r of n)if(await Gu(e,t,r,o,a)&&s.push(r),s.length>=i)break;return s}async function Iu(e,t,n,r){let i=``;for(let a of n){let{commit:n,oid:o}=a;r.format?i+=`${Lu(o,n,r.format)}\n`:r.oneline?i+=`${vc(e.useColor,`33`,o.slice(0,7))} ${n.message.split(`
37
- `)[0]}\n`:(i+=`${vc(e.useColor,`33`,`commit ${o}`)}\n`,i+=`Author: ${n.author.name} <${n.author.email}>\n`,i+=`Date: ${new Date(n.author.timestamp*1e3).toLocaleString()}\n\n`,i+=` ${n.message.replace(/\n/g,`
38
- `)}\n\n`),r.showStat&&(i+=await zu(e,t,a))}return i}function Lu(e,t,n){let r=new Date(t.author.timestamp*1e3);return n.replace(/%H/g,e).replace(/%h/g,e.slice(0,7)).replace(/%s/g,t.message.split(`
39
- `)[0]).replace(/%an/g,t.author.name).replace(/%ae/g,t.author.email).replace(/%ad/g,r.toLocaleString()).replace(/%ar/g,Ru(r))}function Ru(e){let t=Date.now()-e.getTime(),n=Math.floor(t/1e3),r=Math.floor(n/60),i=Math.floor(r/60),a=Math.floor(i/24),o=Math.floor(a/7),s=Math.floor(a/30),c=Math.floor(a/365);return n<60?`${n} seconds ago`:r<60?`${r} minute${r===1?``:`s`} ago`:i<24?`${i} hour${i===1?``:`s`} ago`:a<7?`${a} day${a===1?``:`s`} ago`:o<4?`${o} week${o===1?``:`s`} ago`:s<12?`${s} month${s===1?``:`s`} ago`:`${c} year${c===1?``:`s`} ago`}async function zu(e,t,n){let{commit:r,oid:i}=n,a=r.parent.length>0?r.parent[0]:void 0;return a?(await eu(e,t,a,i,{nameOnly:!1,stat:!0})).stdout:await hu(e,t,i,!0)}function Bu(e){let t=/^(.+)\.\.([^.]*)$/.exec(e);return t?.[2]?[t[1],t[2]]:null}function Vu(e){return{git:e,commitTrees:new Map,trees:new Map,entries:new Map}}async function Hu(e,t,n,r){let i=r.trees.get(n);if(i)return i;let{tree:a}=await rn({fs:e.lfs,dir:t,oid:n,cache:r.git});return r.trees.set(n,a),a}async function Uu(e,t,n,r){let i=r.commitTrees.get(n);if(i)return i;let{commit:a}=await A({fs:e.lfs,dir:t,oid:n,cache:r.git});return r.commitTrees.set(n,a.tree),a.tree}async function Wu(e,t,n,r,i){let a=`${n}\u0000${r}`;if(i.entries.has(a))return i.entries.get(a);let o=r.split(`/`),s=n,c;for(let n=0;n<o.length&&s!==void 0;n++){let r=(await Hu(e,t,s,i)).find(e=>e.path===o[n]);if(!r)break;if(n===o.length-1){c=r.oid;break}s=r.type===`tree`?r.oid:void 0}return i.entries.set(a,c),c}async function Gu(e,t,n,r,i){let a=n.commit.parent[0],o=a?await Uu(e,t,a,i):void 0;for(let a of r)if(await Wu(e,t,n.commit.tree,a,i)!==(o===void 0?void 0:await Wu(e,t,o,a,i)))return!0;return!1}async function Ku(e,t,n){let r=n.includes(`--modified`)||n.includes(`-m`),i=n.includes(`--others`)||n.includes(`-o`),a=n.includes(`--deleted`)||n.includes(`-d`),o=n.filter(e=>!e.startsWith(`-`)).map(e=>e.replace(/\/+$/,``)).filter(e=>e.length>0),s=await k({fs:e.lfs,cache:e.cache,dir:t,...sc}),c=[],l=i?`others`:r?`modified`:a?`deleted`:`cached`;for(let[e,t,n,r]of s)Ju(l,t,n,r)&&(o.length>0&&!qu(e,o)||c.push(e));return c.sort(),{stdout:c.map(e=>`${e}\n`).join(``),stderr:``,exitCode:0}}function qu(e,t){for(let n of t)if(e===n||e.startsWith(n+`/`))return!0;return!1}function Ju(e,t,n,r){switch(e){case`others`:return t===0&&r===0&&n===2;case`modified`:return n!==0&&n!==r&&t!==0;case`deleted`:return n===0&&(t!==0||r!==0);case`cached`:if(r!==0||t!==0){if(n===0&&r===0&&t!==0)return!1;if(r!==0||t!==0&&n!==0)return!0}return!1}}async function Yu(e,t,n){let r=n.includes(`--heads`)||n.includes(`-h`),i=n.includes(`--tags`)||n.includes(`-t`),a=n.includes(`--symref`),o=n.filter(e=>!e.startsWith(`-`)),s=o[0]??`origin`,c=o.slice(1),l=(await sn({fs:e.lfs,dir:t}).catch(()=>[])).find(e=>e.remote===s)?.url??s;try{let t=r&&!i?`refs/heads/`:i&&!r?`refs/tags/`:void 0,o=(await En({http:qc,url:l,corsProxy:e.corsProxy,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),prefix:t,symrefs:a,peelTags:i})).filter(e=>Xu(e.ref,c)).map(e=>`${a&&e.target?`ref: ${e.target}\t${e.ref}\n`:``}${e.oid}\t${e.ref}\n`).join(``);return{stdout:o,stderr:``,exitCode:n.includes(`--exit-code`)&&!o?2:0}}catch(e){return{stdout:``,stderr:`fatal: ${oc(e instanceof Error?e.message:String(e),l)}\n`,exitCode:128}}}function Xu(e,t){return t.length===0||t.some(t=>{let n=t.replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*/g,`.*`);return RegExp(`^(?:refs/(?:heads|tags)/)?${n}$`).test(e)})}async function Zu(e,t,n){let{flags:r,positionals:i}=M(n,L[`ls-tree`]),a=r.r===!0,o=r.d===!0,s=r[`name-only`]===!0,c=i[0],l=Qu(i.slice(1));if(!c)return{stdout:``,stderr:`usage: git ls-tree [<options>] <tree-ish> [<path>...]
40
- `,exitCode:129};let u=await kc(e,t,c);if(u===void 0)return{stdout:``,stderr:`fatal: Not a valid object name ${c}\n`,exitCode:128};let d;try{d=(await rn({fs:e.lfs,cache:e.cache,dir:t,oid:u})).tree}catch{return{stdout:``,stderr:`fatal: Not a valid object name ${c}\n`,exitCode:128}}let f=[];return await $u(e,t,d,``,l,a,o,s,f),{stdout:f.join(``),stderr:``,exitCode:0}}function Qu(e){let t=[];for(let n of e){let e=n;for(e.startsWith(`./`)&&(e=e.slice(2));e.length>1&&e.endsWith(`/`);)e=e.slice(0,-1);t.push(e)}return t}async function $u(e,t,n,r,i,a,o,s,c){for(let l of n){let n=r?`${r}/${l.path}`:l.path,u=ed(n,i);if(u!==`no`){if(l.type===`tree`){let r=u===`exact`&&(o||!a),d=u===`parent`||a;if(r&&c.push(td(l,n,s)),d){let{tree:r}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:l.oid});await $u(e,t,r,n,i,a,o,s,c)}}else u!==`parent`&&!o&&c.push(td(l,n,s))}}}function ed(e,t){if(t.length===0)return`exact`;let n=!1;for(let r of t){if(r===``||e===r||e.startsWith(`${r}/`))return`exact`;r.startsWith(`${e}/`)&&(n=!0)}return n?`parent`:`no`}function td(e,t,n){return n?`${t}\n`:`${e.mode.padStart(6,`0`)} ${e.type} ${e.oid}\t${t}\n`}function nd(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function rd(e,t){let n,r=!1;for(let t of nd(e.flags[`strategy-option`]))t===`ours`||t===`theirs`||t===`union`?n=t:t===`diff3`&&(r=!0);return{noFf:e.flags.ff===!1||t.includes(`--no-ff`),ffOnly:e.flags[`ff-only`]===!0||t.includes(`--ff-only`),favor:n,diff3:r}}async function id(e,t,n){let r=nc(n,L.merge);if(r)return r;let i=M(n,L.merge);if(i.flags.abort===!0)return ad(e,t);let a=i.positionals[0];if(!a)return{stdout:``,stderr:`fatal: No branch specified to merge.
41
- `,exitCode:128};if(await il(e,t))return{stdout:``,stderr:`fatal: You have not concluded your merge (MERGE_HEAD exists).
36
+ `)}\n`,stderr:``,exitCode:0}:n.stat?_u(t,e.useColor):{stdout:t.map(t=>Je({oldContent:t.oldContent,newContent:t.newContent,oldName:t.filepath,newName:t.filepath,context:n.context,color:e.useColor})).join(``),stderr:``,exitCode:0}}function du(e){let t=e.indexOf(`--`);return e.map((e,n)=>(t===-1||n<t)&&/^-U\d+$/.test(e)?`--unified=${e.slice(2)}`:e)}function fu(e){let t=Array.isArray(e)?e[e.length-1]:e;if(t===void 0||typeof t==`boolean`||t===``)return;let n=Number.parseInt(String(t),10);return Number.isInteger(n)&&n>=0?n:void 0}function pu(e){let t=e.indexOf(`...`);return t===-1?null:[e.slice(0,t),e.slice(t+3)]}function mu(e){if(e.includes(`...`))return null;let t=/^(.+)\.\.([^.]*)$/.exec(e);return t?.[1]!==void 0&&t[2]!==void 0?[t[1],t[2]]:null}async function hu(e,t,n){for(let r of n)try{await Ac(e,t,r)}catch{return r}return null}function gu(e){return{stdout:``,stderr:`fatal: ambiguous argument '${e}'\n`,exitCode:128}}function _u(e,t=!1){return{stdout:qe(e.map(e=>({name:e.filepath,oldContent:e.oldContent,newContent:e.newContent})),{color:t}),stderr:``,exitCode:0}}async function vu(e,t,n,r){let i=[];if(await en({fs:e.lfs,cache:e.cache,dir:t,trees:[kn({ref:n})],map:async(e,[t])=>{if(e===`.`||!t||await t.type()!==`blob`)return;let n=await t.content();n&&i.push({filepath:e,content:new TextDecoder().decode(n)})}}),i.length===0)return``;if(r)return _u(i.map(e=>({filepath:e.filepath,oldContent:``,newContent:e.content})),e.useColor).stdout;let a=``;for(let t of i)a+=Je({oldContent:``,newContent:t.content,oldName:t.filepath,newName:t.filepath,color:e.useColor});return a}async function yu(e,t,n){let r=ac(n,L.fetch);if(r)return r;let{flags:i,positionals:a}=M(n,L.fetch),o=i,s=a[0]??`origin`,c=a[1],l=o.prune===!0,u=o.quiet===!0,d=R(o,`depth`),f=u?``:`Fetching ${s}\n`,p=await zn({fs:e.lfs,cache:e.cache,http:Xc,dir:t,remote:s,ref:c,corsProxy:e.corsProxy,prune:l,depth:d?parseInt(d,10):void 0,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),onProgress:u?void 0:e=>{f+=`${e.phase}: ${e.loaded}/${e.total}\n`}});return p.fetchHead&&(await bu(e,t,p.fetchHead,p.fetchHeadDescription),u||(f+=`From ${s}\n`,f+=` ${p.fetchHead.slice(0,7)}..${p.fetchHeadDescription??``}\n`)),{stdout:f,stderr:``,exitCode:0}}async function bu(e,t,n,r){let i=await Rn({fs:e.lfs,filepath:t}),a=r??``;await e.fs.writeFile(`${i}/.git/FETCH_HEAD`,`${n}\t\t${a}\n`)}async function xu(e,t,n){let r=M(n,L.init).flags,i=R(r,`initial-branch`)??e.getConfigOverrides()?.get(`init.defaultbranch`)??`main`;return await Ln({fs:e.lfs,dir:t,defaultBranch:i}),{stdout:`Initialized empty Git repository in ${t}/.git/\n`,stderr:``,exitCode:0}}function Su(e,t){let n=e.entry.commit.committer.timestamp,r=t.entry.commit.committer.timestamp;return n===r?e.tipRank===t.tipRank?e.seq<t.seq:e.tipRank<t.tipRank:n>r}var Cu=class{heap=[];pushed=0;push(e,t){this.heap.push({entry:e,tipRank:t,seq:this.pushed++});let n=this.heap.length-1;for(;n>0;){let e=n-1>>1;if(!Su(this.heap[n],this.heap[e]))break;this.swap(n,e),n=e}}pop(){let e=this.heap[0];if(e===void 0)return;let t=this.heap.pop();return t!==void 0&&this.heap.length>0&&(this.heap[0]=t,this.siftDown()),e}siftDown(){for(let e=0;;){let t=e*2+1,n=e;if(t<this.heap.length&&Su(this.heap[t],this.heap[n])&&(n=t),t+1<this.heap.length&&Su(this.heap[t+1],this.heap[n])&&(n=t+1),n===e)return;this.swap(e,n),e=n}}swap(e,t){let n=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=n}};async function wu(e,t,n){try{return await D({fs:e.lfs,dir:t,ref:n})}catch{return}}async function Tu(e,t,n,r){try{return await A({fs:e.lfs,dir:t,oid:n,cache:r})}catch{return}}async function Eu(e,t,n,r,i){let a=await Qt({fs:e.lfs,dir:t});for(let[o,s]of a.entries()){let a=await wu(e,t,s);if(a===void 0||r.has(a))continue;r.add(a);let c=await Tu(e,t,a,i);c&&n.push(c,o)}}async function*Du(e,t,n){let r=new Set,i=new Cu;for(await Eu(e,t,i,r,n.cache);;){let a=i.pop();if(a===void 0)return;yield a.entry;for(let o of a.entry.commit.parent){if(r.has(o))continue;r.add(o);let s=await Tu(e,t,o,n.cache);s&&i.push(s,a.tipRank)}}}async function Ou(e,t,n){let r=[];if(n.limit<=0)return r;for await(let i of Du(e,t,{cache:n.cache}))if(r.push(i),r.length>=n.limit)break;return r}async function ku(e,t,n){let{flags:r,positionals:i,doubleDashRest:a}=M(n,L.log),o=r,s=R(o,`max-count`),c=o.oneline===!0,l=o.stat===!0,u=o.reverse===!0,d=o.all===!0,f=R(o,`format`),p=R(o,`author`),m=R(o,`grep`),h=R(o,`follow`),g=await Au(e,t,{all:d,maxCount:s?parseInt(s,10):void 0,revision:i[0],pathspecs:a,followFile:h});return p&&(g=g.filter(e=>e.commit.author.name.includes(p))),m&&(g=g.filter(e=>e.commit.message.includes(m))),u&&(g=g.slice().reverse()),{stdout:await zu(e,t,g,{format:f,oneline:c,showStat:l}),stderr:``,exitCode:0}}async function Au(e,t,n){let r=n.revision?Uu(n.revision):null,i=r?.[1]??n.revision,a=Wu(e.cache),o=n.maxCount??10;if(n.pathspecs.length>0&&!n.all&&!r&&!n.followFile)return await Iu(e,t,{ref:i,pathspecs:n.pathspecs,limit:o,caches:a});if(n.all&&n.pathspecs.length>0)return await Nu(e,t,{pathspecs:n.pathspecs,limit:o,caches:a,exclude:r?await Mu(e,t,r[0],a):void 0});let s=n.all?await Ou(e,t,{limit:n.maxCount??ju,cache:a.git}):await Tn({fs:e.lfs,dir:t,cache:a.git,...i?{ref:i}:{},...!r&&n.pathspecs.length===0?{depth:n.maxCount??10}:{},...n.followFile?{filepath:n.followFile,follow:!0}:{}});if(r){let n=await Mu(e,t,r[0],a);s=s.filter(e=>!n.has(e.oid))}return n.pathspecs.length>0?await Ru(e,t,s,n.pathspecs,o,a):r?s.slice(0,o):s}const ju=50;async function Mu(e,t,n,r){let i=await Tn({fs:e.lfs,dir:t,cache:r.git,ref:n});return new Set(i.map(e=>e.oid))}async function Nu(e,t,n){let r=[],i=[],a=async()=>{if(i.length>0){let a=n.limit-r.length;r.push(...await Ru(e,t,i,n.pathspecs,a,n.caches)),i=[]}return r.length>=n.limit};for await(let o of Du(e,t,{cache:n.caches.git}))if(!n.exclude?.has(o.oid)&&(i.push(o),i.length>=64&&await a()))return r;return await a(),r}function Pu(e){let t=e.replace(/^\.\//,``).replace(/\/+$/,``);return t===`.`?``:t}function Fu(e){let t=[...new Set(e.map(Pu))];return t.some(e=>e===``)?null:t}async function Iu(e,t,n){let r=n.ref?{ref:n.ref}:{},i=Fu(n.pathspecs);return i===null?await Tn({fs:e.lfs,dir:t,cache:n.caches.git,...r,depth:n.limit}):i.length===1?(await Tn({fs:e.lfs,dir:t,cache:n.caches.git,...r,filepath:i[0],depth:n.limit,force:!0})).slice(0,n.limit):await Lu(e,t,{refArg:r,specs:i,limit:n.limit,caches:n.caches})}async function Lu(e,t,n){let r=[],i=0,a=Math.max(n.limit*4,32);for(;;){let o=await Tn({fs:e.lfs,dir:t,cache:n.caches.git,...n.refArg,depth:a});for(let e of o)n.caches.commitTrees.set(e.oid,e.commit.tree);for(let a of o.slice(i))if(await Ju(e,t,a,n.specs,n.caches)&&(r.push(a),r.length>=n.limit))return r;if(o.length<a)return r;i=o.length,a*=2}}async function Ru(e,t,n,r,i,a){let o=Fu(r);if(o===null)return n.slice(0,i);for(let e of n)a.commitTrees.set(e.oid,e.commit.tree);let s=[];for(let r of n)if(await Ju(e,t,r,o,a)&&s.push(r),s.length>=i)break;return s}async function zu(e,t,n,r){let i=``;for(let a of n){let{commit:n,oid:o}=a;r.format?i+=`${Bu(o,n,r.format)}\n`:r.oneline?i+=`${xc(e.useColor,`33`,o.slice(0,7))} ${n.message.split(`
37
+ `)[0]}\n`:(i+=`${xc(e.useColor,`33`,`commit ${o}`)}\n`,i+=`Author: ${n.author.name} <${n.author.email}>\n`,i+=`Date: ${new Date(n.author.timestamp*1e3).toLocaleString()}\n\n`,i+=` ${n.message.replace(/\n/g,`
38
+ `)}\n\n`),r.showStat&&(i+=await Hu(e,t,a))}return i}function Bu(e,t,n){let r=new Date(t.author.timestamp*1e3);return n.replace(/%H/g,e).replace(/%h/g,e.slice(0,7)).replace(/%s/g,t.message.split(`
39
+ `)[0]).replace(/%an/g,t.author.name).replace(/%ae/g,t.author.email).replace(/%ad/g,r.toLocaleString()).replace(/%ar/g,Vu(r))}function Vu(e){let t=Date.now()-e.getTime(),n=Math.floor(t/1e3),r=Math.floor(n/60),i=Math.floor(r/60),a=Math.floor(i/24),o=Math.floor(a/7),s=Math.floor(a/30),c=Math.floor(a/365);return n<60?`${n} seconds ago`:r<60?`${r} minute${r===1?``:`s`} ago`:i<24?`${i} hour${i===1?``:`s`} ago`:a<7?`${a} day${a===1?``:`s`} ago`:o<4?`${o} week${o===1?``:`s`} ago`:s<12?`${s} month${s===1?``:`s`} ago`:`${c} year${c===1?``:`s`} ago`}async function Hu(e,t,n){let{commit:r,oid:i}=n,a=r.parent.length>0?r.parent[0]:void 0;return a?(await ru(e,t,a,i,{nameOnly:!1,stat:!0})).stdout:await vu(e,t,i,!0)}function Uu(e){let t=/^(.+)\.\.([^.]*)$/.exec(e);return t?.[2]?[t[1],t[2]]:null}function Wu(e){return{git:e,commitTrees:new Map,trees:new Map,entries:new Map}}async function Gu(e,t,n,r){let i=r.trees.get(n);if(i)return i;let{tree:a}=await rn({fs:e.lfs,dir:t,oid:n,cache:r.git});return r.trees.set(n,a),a}async function Ku(e,t,n,r){let i=r.commitTrees.get(n);if(i)return i;let{commit:a}=await A({fs:e.lfs,dir:t,oid:n,cache:r.git});return r.commitTrees.set(n,a.tree),a.tree}async function qu(e,t,n,r,i){let a=`${n}\u0000${r}`;if(i.entries.has(a))return i.entries.get(a);let o=r.split(`/`),s=n,c;for(let n=0;n<o.length&&s!==void 0;n++){let r=(await Gu(e,t,s,i)).find(e=>e.path===o[n]);if(!r)break;if(n===o.length-1){c=r.oid;break}s=r.type===`tree`?r.oid:void 0}return i.entries.set(a,c),c}async function Ju(e,t,n,r,i){let a=n.commit.parent[0],o=a?await Ku(e,t,a,i):void 0;for(let a of r)if(await qu(e,t,n.commit.tree,a,i)!==(o===void 0?void 0:await qu(e,t,o,a,i)))return!0;return!1}async function Yu(e,t,n){let r=n.includes(`--modified`)||n.includes(`-m`),i=n.includes(`--others`)||n.includes(`-o`),a=n.includes(`--deleted`)||n.includes(`-d`),o=n.filter(e=>!e.startsWith(`-`)).map(e=>e.replace(/\/+$/,``)).filter(e=>e.length>0),s=await k({fs:e.lfs,cache:e.cache,dir:t,...uc}),c=[],l=i?`others`:r?`modified`:a?`deleted`:`cached`;for(let[e,t,n,r]of s)Zu(l,t,n,r)&&(o.length>0&&!Xu(e,o)||c.push(e));return c.sort(),{stdout:c.map(e=>`${e}\n`).join(``),stderr:``,exitCode:0}}function Xu(e,t){for(let n of t)if(e===n||e.startsWith(n+`/`))return!0;return!1}function Zu(e,t,n,r){switch(e){case`others`:return t===0&&r===0&&n===2;case`modified`:return n!==0&&n!==r&&t!==0;case`deleted`:return n===0&&(t!==0||r!==0);case`cached`:if(r!==0||t!==0){if(n===0&&r===0&&t!==0)return!1;if(r!==0||t!==0&&n!==0)return!0}return!1}}async function Qu(e,t,n){let r=n.includes(`--heads`)||n.includes(`-h`),i=n.includes(`--tags`)||n.includes(`-t`),a=n.includes(`--symref`),o=n.filter(e=>!e.startsWith(`-`)),s=o[0]??`origin`,c=o.slice(1),l=(await sn({fs:e.lfs,dir:t}).catch(()=>[])).find(e=>e.remote===s)?.url??s;try{let t=r&&!i?`refs/heads/`:i&&!r?`refs/tags/`:void 0,o=(await En({http:Xc,url:l,corsProxy:e.corsProxy,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),prefix:t,symrefs:a,peelTags:i})).filter(e=>$u(e.ref,c)).map(e=>`${a&&e.target?`ref: ${e.target}\t${e.ref}\n`:``}${e.oid}\t${e.ref}\n`).join(``);return{stdout:o,stderr:``,exitCode:n.includes(`--exit-code`)&&!o?2:0}}catch(e){return{stdout:``,stderr:`fatal: ${lc(e instanceof Error?e.message:String(e),l)}\n`,exitCode:128}}}function $u(e,t){return t.length===0||t.some(t=>{let n=t.replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*/g,`.*`);return RegExp(`^(?:refs/(?:heads|tags)/)?${n}$`).test(e)})}async function ed(e,t,n){let{flags:r,positionals:i}=M(n,L[`ls-tree`]),a=r.r===!0,o=r.d===!0,s=r[`name-only`]===!0,c=i[0],l=td(i.slice(1));if(!c)return{stdout:``,stderr:`usage: git ls-tree [<options>] <tree-ish> [<path>...]
40
+ `,exitCode:129};let u=await Mc(e,t,c);if(u===void 0)return{stdout:``,stderr:`fatal: Not a valid object name ${c}\n`,exitCode:128};let d;try{d=(await rn({fs:e.lfs,cache:e.cache,dir:t,oid:u})).tree}catch{return{stdout:``,stderr:`fatal: Not a valid object name ${c}\n`,exitCode:128}}let f=[];return await nd(e,t,d,``,l,a,o,s,f),{stdout:f.join(``),stderr:``,exitCode:0}}function td(e){let t=[];for(let n of e){let e=n;for(e.startsWith(`./`)&&(e=e.slice(2));e.length>1&&e.endsWith(`/`);)e=e.slice(0,-1);t.push(e)}return t}async function nd(e,t,n,r,i,a,o,s,c){for(let l of n){let n=r?`${r}/${l.path}`:l.path,u=rd(n,i);if(u!==`no`){if(l.type===`tree`){let r=u===`exact`&&(o||!a),d=u===`parent`||a;if(r&&c.push(id(l,n,s)),d){let{tree:r}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:l.oid});await nd(e,t,r,n,i,a,o,s,c)}}else u!==`parent`&&!o&&c.push(id(l,n,s))}}}function rd(e,t){if(t.length===0)return`exact`;let n=!1;for(let r of t){if(r===``||e===r||e.startsWith(`${r}/`))return`exact`;r.startsWith(`${e}/`)&&(n=!0)}return n?`parent`:`no`}function id(e,t,n){return n?`${t}\n`:`${e.mode.padStart(6,`0`)} ${e.type} ${e.oid}\t${t}\n`}function ad(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function od(e,t){let n,r=!1;for(let t of ad(e.flags[`strategy-option`]))t===`ours`||t===`theirs`||t===`union`?n=t:t===`diff3`&&(r=!0);return{noFf:e.flags.ff===!1||t.includes(`--no-ff`),ffOnly:e.flags[`ff-only`]===!0||t.includes(`--ff-only`),favor:n,diff3:r}}async function sd(e,t,n){let r=ac(n,L.merge);if(r)return r;let i=M(n,L.merge);if(i.flags.abort===!0)return cd(e,t);let a=i.positionals[0];if(!a)return{stdout:``,stderr:`fatal: No branch specified to merge.
41
+ `,exitCode:128};if(await sl(e,t))return{stdout:``,stderr:`fatal: You have not concluded your merge (MERGE_HEAD exists).
42
42
  Please, commit your changes before you merge.
43
- `,exitCode:128};let o=await kc(e,t,a);if(!o)return{stdout:``,stderr:`fatal: Could not find ${a}.\n`,exitCode:128};let{noFf:s,ffOnly:c,favor:l,diff3:u}=rd(i,n);try{await ol(e,t,await D({fs:e.lfs,dir:t,ref:`HEAD`}));let n=await an({fs:e.lfs,cache:e.cache,dir:t,ours:await j({fs:e.lfs,dir:t})??void 0,theirs:o,fastForward:!s,fastForwardOnly:c,author:await e.resolveAuthor(t),abortOnConflict:!1,mergeDriver:Ec({favor:l,diff3:u})});return n.alreadyMerged?{stdout:`Already up to date.
43
+ `,exitCode:128};let o=await Mc(e,t,a);if(!o)return{stdout:``,stderr:`fatal: Could not find ${a}.\n`,exitCode:128};let{noFf:s,ffOnly:c,favor:l,diff3:u}=od(i,n);try{await ll(e,t,await D({fs:e.lfs,dir:t,ref:`HEAD`}));let n=await an({fs:e.lfs,cache:e.cache,dir:t,ours:await j({fs:e.lfs,dir:t})??void 0,theirs:o,fastForward:!s,fastForwardOnly:c,author:await e.resolveAuthor(t),abortOnConflict:!1,mergeDriver:kc({favor:l,diff3:u})});return n.alreadyMerged?{stdout:`Already up to date.
44
44
  `,stderr:``,exitCode:0}:n.fastForward?(await Dn({fs:e.lfs,cache:e.cache,dir:t,ref:await j({fs:e.lfs,dir:t})??`HEAD`}),{stdout:`Updating..${n.oid?n.oid.slice(0,7):``}\nFast-forward\n`,stderr:``,exitCode:0}):n.mergeCommit?(await Dn({fs:e.lfs,cache:e.cache,dir:t,ref:await j({fs:e.lfs,dir:t})??`HEAD`,force:!0}),{stdout:`Merge made by the 'ort' strategy.
45
45
  `,stderr:``,exitCode:0}):{stdout:`Merge complete.
46
- `,stderr:``,exitCode:0}}catch(n){return n instanceof Error&&n.name===`MergeConflictError`&&await sl(e,t,o,`Merge branch '${a}' into ${await j({fs:e.lfs,dir:t})??`HEAD`}`),od(n)}}async function ad(e,t){if(!await il(e,t))return{stdout:``,stderr:`fatal: There is no merge to abort (MERGE_HEAD missing).
47
- `,exitCode:128};try{await wn({fs:e.lfs,cache:e.cache,dir:t,commit:`HEAD`})}catch{}return await Dn({fs:e.lfs,cache:e.cache,dir:t,ref:await j({fs:e.lfs,dir:t})??`HEAD`,force:!0}),await cl(e,t),{stdout:``,stderr:``,exitCode:0}}function od(e){if(e instanceof Error&&e.name===`MergeConflictError`)return{stdout:(e.data?.filepaths??[]).map(e=>`CONFLICT (content): Merge conflict in ${e}\n`).join(``),stderr:`Automatic merge failed; fix conflicts and then commit the result.
46
+ `,stderr:``,exitCode:0}}catch(n){return n instanceof Error&&n.name===`MergeConflictError`&&await ul(e,t,o,`Merge branch '${a}' into ${await j({fs:e.lfs,dir:t})??`HEAD`}`),ld(n)}}async function cd(e,t){if(!await sl(e,t))return{stdout:``,stderr:`fatal: There is no merge to abort (MERGE_HEAD missing).
47
+ `,exitCode:128};try{await wn({fs:e.lfs,cache:e.cache,dir:t,commit:`HEAD`})}catch{}return await Dn({fs:e.lfs,cache:e.cache,dir:t,ref:await j({fs:e.lfs,dir:t})??`HEAD`,force:!0}),await dl(e,t),{stdout:``,stderr:``,exitCode:0}}function ld(e){if(e instanceof Error&&e.name===`MergeConflictError`)return{stdout:(e.data?.filepaths??[]).map(e=>`CONFLICT (content): Merge conflict in ${e}\n`).join(``),stderr:`Automatic merge failed; fix conflicts and then commit the result.
48
48
  `,exitCode:1};if(e instanceof Error&&e.name===`MergeNotSupportedError`)return{stdout:``,stderr:`fatal: merge is not possible because you have unmerged files.
49
49
  `,exitCode:128};if(e instanceof Error&&e.name===`FastForwardError`)return{stdout:``,stderr:`fatal: Not possible to fast-forward, aborting.
50
- `,exitCode:128};throw e}async function sd(e,t,n){let r=n.includes(`--is-ancestor`),i=n.filter(e=>!e.startsWith(`-`));if(i.length<2)return{stdout:``,stderr:`usage: git merge-base <commit> <commit>
51
- `,exitCode:129};try{let n=await Promise.all(i.slice(0,2).map(n=>Dc(e,t,n)));if(r)return n[0]===n[1]?{stdout:``,stderr:``,exitCode:0}:{stdout:``,stderr:``,exitCode:+!await dn({fs:e.lfs,cache:e.cache,dir:t,oid:n[1],ancestor:n[0],depth:-1})};let a=await vn({fs:e.lfs,cache:e.cache,dir:t,oids:n});return{stdout:a[0]?`${a[0]}\n`:``,stderr:``,exitCode:+!a[0]}}catch{return{stdout:``,stderr:`fatal: Not a valid object name
52
- `,exitCode:128}}}function cd(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}async function ld(e,t,n){let r=M(n,L[`merge-file`]),i=r.positionals;if(i.length!==3)return{stdout:``,stderr:`usage: git merge-file [<options>] <current-file> <base-file> <other-file>
53
- `,exitCode:255};let a=cd(r.flags.L);if(a.length>3)return{stdout:``,stderr:`fatal: too many labels on the command line
50
+ `,exitCode:128};throw e}async function ud(e,t,n){let r=n.includes(`--is-ancestor`),i=n.filter(e=>!e.startsWith(`-`));if(i.length<2)return{stdout:``,stderr:`usage: git merge-base <commit> <commit>
51
+ `,exitCode:129};try{let n=await Promise.all(i.slice(0,2).map(n=>Ac(e,t,n)));if(r)return n[0]===n[1]?{stdout:``,stderr:``,exitCode:0}:{stdout:``,stderr:``,exitCode:+!await dn({fs:e.lfs,cache:e.cache,dir:t,oid:n[1],ancestor:n[0],depth:-1})};let a=await vn({fs:e.lfs,cache:e.cache,dir:t,oids:n});return{stdout:a[0]?`${a[0]}\n`:``,stderr:``,exitCode:+!a[0]}}catch{return{stdout:``,stderr:`fatal: Not a valid object name
52
+ `,exitCode:128}}}function dd(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}async function fd(e,t,n){let r=M(n,L[`merge-file`]),i=r.positionals;if(i.length!==3)return{stdout:``,stderr:`usage: git merge-file [<options>] <current-file> <base-file> <other-file>
53
+ `,exitCode:255};let a=dd(r.flags.L);if(a.length>3)return{stdout:``,stderr:`fatal: too many labels on the command line
54
54
  `,exitCode:255};let o=[r.flags.ours?`ours`:void 0,r.flags.theirs?`theirs`:void 0,r.flags.union?`union`:void 0].filter(e=>e!==void 0);if(o.length>1)return{stdout:``,stderr:`fatal: --ours, --theirs, and --union are mutually exclusive
55
- `,exitCode:255};let[s,c,l]=i,u=e=>e.startsWith(`/`)?e:`${t}/${e}`,d,f,p;try{d=await e.fs.readTextFile(u(s)),f=await e.fs.readTextFile(u(c)),p=await e.fs.readTextFile(u(l))}catch(e){return{stdout:``,stderr:`error: ${e instanceof Error?e.message:String(e)}\n`,exitCode:255}}let m=Ye(d,f,p,{diff3:!!r.flags.diff3,favor:o[0],labels:{current:a[0]??s,base:a[1]??c,other:a[2]??l}}),h=o.length>0?0:m.conflicts,g=!r.flags.quiet&&h>0?`warning: merge conflict in ${s}\n`:``,_=Math.min(h,127);return r.flags.stdout?{stdout:m.content,stderr:g,exitCode:_}:(await e.fs.writeFile(u(s),m.content),{stdout:``,stderr:g,exitCode:_})}async function ud(e,t,n){let r=nc(n,L.pull);if(r)return r;let{flags:i,positionals:a}=M(n,L.pull),o=a[0]??`origin`,s=a[1],c=i[`ff-only`]===!0||n.includes(`--ff-only`),l=i.ff===!1||n.includes(`--no-ff`),u=i.quiet===!0,d=u?``:`Pulling from ${o}...\n`;return await on({fs:e.lfs,cache:e.cache,http:qc,dir:t,remote:o,ref:s,corsProxy:e.corsProxy,author:await e.resolveAuthor(t),fastForwardOnly:c,fastForward:!l,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),onProgress:u?void 0:e=>{d+=`${e.phase}: ${e.loaded}/${e.total}\n`}}),u||(d+=`Already up to date.
56
- `),{stdout:d,stderr:``,exitCode:0}}async function dd(e,t,n){let{flags:r,positionals:i}=M(n,L.push),a=r.force===!0,o=r[`set-upstream`]===!0,s=r[`dry-run`]===!0,c=i[0]??`origin`,l=i[1]??await j({fs:e.lfs,dir:t});if(s)return{stdout:`Would push to ${c}...\n ${l} -> ${l}\n`,stderr:``,exitCode:0};let u=`Pushing to ${c}...\n`,d=await cn({fs:e.lfs,cache:e.cache,http:qc,dir:t,remote:c,ref:l??void 0,corsProxy:e.corsProxy,force:a,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),onProgress:e=>{u+=`${e.phase}: ${e.loaded}/${e.total}\n`}});if(d.ok)u+=`To ${c}\n`,u+=` ${l} -> ${l}\n`,o&&l&&(await pn({fs:e.lfs,dir:t,path:`branch.${l}.remote`,value:c}),await pn({fs:e.lfs,dir:t,path:`branch.${l}.merge`,value:`refs/heads/${l}`}),u+=`Branch '${l}' set up to track remote branch '${l}' from '${c}'.\n`);else{let n=(await sn({fs:e.lfs,dir:t}).catch(()=>[])).find(e=>e.remote===c)?.url;return{stdout:``,stderr:`error: failed to push to '${c}': ${oc(String(d.error),n)}\n`,exitCode:1}}return{stdout:u,stderr:``,exitCode:0}}function fd(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}const pd=`.git/rebase-merge`;async function md(e,t,n){let{flags:r,positionals:i}=M(n,L.rebase);for(let e of[`interactive`,`onto`,`rebase-merges`,`autosquash`])if(r[e])return{stdout:``,stderr:`fatal: git rebase --${e} is not supported\n`,exitCode:128};try{return r.abort?await vd(e,t):r.continue?await gd(e,t):r.skip?await _d(e,t):await hd(e,t,i[0],r)}catch(e){return{stdout:``,stderr:`fatal: ${ic(e)}\n`,exitCode:128}}}async function hd(e,t,n,r){if(!n)return{stdout:``,stderr:`fatal: No upstream specified.
57
- `,exitCode:128};if(await Ed(e,t))return{stdout:``,stderr:`fatal: It seems that there is already a rebase-merge directory,
55
+ `,exitCode:255};let[s,c,l]=i,u=e=>e.startsWith(`/`)?e:`${t}/${e}`,d,f,p;try{d=await e.fs.readTextFile(u(s)),f=await e.fs.readTextFile(u(c)),p=await e.fs.readTextFile(u(l))}catch(e){return{stdout:``,stderr:`error: ${e instanceof Error?e.message:String(e)}\n`,exitCode:255}}let m=Ye(d,f,p,{diff3:!!r.flags.diff3,favor:o[0],labels:{current:a[0]??s,base:a[1]??c,other:a[2]??l}}),h=o.length>0?0:m.conflicts,g=!r.flags.quiet&&h>0?`warning: merge conflict in ${s}\n`:``,_=Math.min(h,127);return r.flags.stdout?{stdout:m.content,stderr:g,exitCode:_}:(await e.fs.writeFile(u(s),m.content),{stdout:``,stderr:g,exitCode:_})}async function pd(e,t,n){let r=ac(n,L.pull);if(r)return r;let{flags:i,positionals:a}=M(n,L.pull),o=a[0]??`origin`,s=a[1],c=i[`ff-only`]===!0||n.includes(`--ff-only`),l=i.ff===!1||n.includes(`--no-ff`),u=i.quiet===!0,d=u?``:`Pulling from ${o}...\n`;return await on({fs:e.lfs,cache:e.cache,http:Xc,dir:t,remote:o,ref:s,corsProxy:e.corsProxy,author:await e.resolveAuthor(t),fastForwardOnly:c,fastForward:!l,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),onProgress:u?void 0:e=>{d+=`${e.phase}: ${e.loaded}/${e.total}\n`}}),u||(d+=`Already up to date.
56
+ `),{stdout:d,stderr:``,exitCode:0}}async function md(e,t,n){let{flags:r,positionals:i}=M(n,L.push),a=r.force===!0,o=r[`set-upstream`]===!0,s=r[`dry-run`]===!0,c=i[0]??`origin`,l=i[1]??await j({fs:e.lfs,dir:t});if(s)return{stdout:`Would push to ${c}...\n ${l} -> ${l}\n`,stderr:``,exitCode:0};let u=`Pushing to ${c}...\n`,d=await cn({fs:e.lfs,cache:e.cache,http:Xc,dir:t,remote:c,ref:l??void 0,corsProxy:e.corsProxy,force:a,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),onProgress:e=>{u+=`${e.phase}: ${e.loaded}/${e.total}\n`}});if(d.ok)u+=`To ${c}\n`,u+=` ${l} -> ${l}\n`,o&&l&&(await pn({fs:e.lfs,dir:t,path:`branch.${l}.remote`,value:c}),await pn({fs:e.lfs,dir:t,path:`branch.${l}.merge`,value:`refs/heads/${l}`}),u+=`Branch '${l}' set up to track remote branch '${l}' from '${c}'.\n`);else{let n=(await sn({fs:e.lfs,dir:t}).catch(()=>[])).find(e=>e.remote===c)?.url;return{stdout:``,stderr:`error: failed to push to '${c}': ${lc(String(d.error),n)}\n`,exitCode:1}}return{stdout:u,stderr:``,exitCode:0}}function hd(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}const gd=`.git/rebase-merge`;async function _d(e,t,n){let{flags:r,positionals:i}=M(n,L.rebase);for(let e of[`interactive`,`onto`,`rebase-merges`,`autosquash`])if(r[e])return{stdout:``,stderr:`fatal: git rebase --${e} is not supported\n`,exitCode:128};try{return r.abort?await xd(e,t):r.continue?await yd(e,t):r.skip?await bd(e,t):await vd(e,t,i[0],r)}catch(e){return{stdout:``,stderr:`fatal: ${sc(e)}\n`,exitCode:128}}}async function vd(e,t,n,r){if(!n)return{stdout:``,stderr:`fatal: No upstream specified.
57
+ `,exitCode:128};if(await kd(e,t))return{stdout:``,stderr:`fatal: It seems that there is already a rebase-merge directory,
58
58
  and I wonder if you are in the middle of another rebase.
59
59
  `,exitCode:128};let i=await j({fs:e.lfs,dir:t});if(!i)return{stdout:``,stderr:`fatal: no such branch/commit (detached HEAD)
60
- `,exitCode:128};let a=await Sd(e,t,n);if(!a)return{stdout:``,stderr:`fatal: invalid upstream '${n}'\n`,exitCode:128};let o=await D({fs:e.lfs,dir:t,ref:`HEAD`}),s=await wd(e,t);if(s)return s;let[c]=await vn({fs:e.lfs,cache:e.cache,dir:t,oids:[o,a]});if(c===o)return await Td(e,t,i,a),{stdout:`Fast-forwarded ${i} to ${n}.\n`,stderr:``,exitCode:0};if(c===a)return{stdout:`Current branch ${i} is up to date.\n`,stderr:``,exitCode:0};let l=await Cd(e,t,o,c),u=l.find(e=>e.parents>1);if(u)return{stdout:``,stderr:`error: commit ${u.oid} is a merge but no -m option was given.\nfatal: rebase failed\n`,exitCode:128};let d,f=!1;for(let e of fd(r[`strategy-option`]))e===`ours`||e===`theirs`||e===`union`?d=e:e===`diff3`&&(f=!0);return await Td(e,t,i,a),yd(e,t,{onto:a,origHead:o,headName:`refs/heads/${i}`,branch:i,todo:l.map(e=>e.oid),favor:d,diff3:f})}async function gd(e,t){let n=await Od(e,t);if(!n)return xd();if(n.current){let{commit:r}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:n.current});await xn({fs:e.lfs,cache:e.cache,dir:t,message:r.message,author:r.author,committer:await e.resolveAuthor(t)}),n.current=void 0}return yd(e,t,n)}async function _d(e,t){let n=await Od(e,t);return n?(await Dn({fs:e.lfs,cache:e.cache,dir:t,ref:n.branch,force:!0}),n.current=void 0,yd(e,t,n)):xd()}async function vd(e,t){let n=await Od(e,t);return n?(await Td(e,t,n.branch,n.origHead),await Ad(e,t),{stdout:``,stderr:``,exitCode:0}):xd()}async function yd(e,t,n){for(;n.todo.length>0;){let r=n.todo[0],{commit:i}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:r}),a=i.message.split(`
61
- `)[0];try{await Fn({fs:e.lfs,cache:e.cache,dir:t,oid:r,abortOnConflict:!1,committer:await e.resolveAuthor(t),mergeDriver:Ec({favor:n.favor,diff3:n.diff3})})}catch(i){if(i instanceof Error&&i.name===`MergeConflictError`){let o=i.data?.filepaths??[];return n.current=r,n.todo=n.todo.slice(1),await kd(e,t,n),bd(r,a,o)}throw i}n.todo=n.todo.slice(1)}return await Ad(e,t),{stdout:`Successfully rebased and updated ${n.headName}.\n`,stderr:``,exitCode:0}}function bd(e,t,n){let r=e.slice(0,7),i=``;for(let e of n)i+=`CONFLICT (content): Merge conflict in ${e}\n`;return i+=`error: could not apply ${r}... ${t}\n`,i+=`hint: Resolve all conflicts manually, mark them as resolved with
60
+ `,exitCode:128};let a=await Td(e,t,n);if(!a)return{stdout:``,stderr:`fatal: invalid upstream '${n}'\n`,exitCode:128};let o=await D({fs:e.lfs,dir:t,ref:`HEAD`}),s=await Dd(e,t);if(s)return s;let[c]=await vn({fs:e.lfs,cache:e.cache,dir:t,oids:[o,a]});if(c===o)return await Od(e,t,i,a),{stdout:`Fast-forwarded ${i} to ${n}.\n`,stderr:``,exitCode:0};if(c===a)return{stdout:`Current branch ${i} is up to date.\n`,stderr:``,exitCode:0};let l=await Ed(e,t,o,c),u=l.find(e=>e.parents>1);if(u)return{stdout:``,stderr:`error: commit ${u.oid} is a merge but no -m option was given.\nfatal: rebase failed\n`,exitCode:128};let d,f=!1;for(let e of hd(r[`strategy-option`]))e===`ours`||e===`theirs`||e===`union`?d=e:e===`diff3`&&(f=!0);return await Od(e,t,i,a),Sd(e,t,{onto:a,origHead:o,headName:`refs/heads/${i}`,branch:i,todo:l.map(e=>e.oid),favor:d,diff3:f})}async function yd(e,t){let n=await jd(e,t);if(!n)return wd();if(n.current){let{commit:r}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:n.current});await xn({fs:e.lfs,cache:e.cache,dir:t,message:r.message,author:r.author,committer:await e.resolveAuthor(t)}),n.current=void 0}return Sd(e,t,n)}async function bd(e,t){let n=await jd(e,t);return n?(await Dn({fs:e.lfs,cache:e.cache,dir:t,ref:n.branch,force:!0}),n.current=void 0,Sd(e,t,n)):wd()}async function xd(e,t){let n=await jd(e,t);return n?(await Od(e,t,n.branch,n.origHead),await Nd(e,t),{stdout:``,stderr:``,exitCode:0}):wd()}async function Sd(e,t,n){for(;n.todo.length>0;){let r=n.todo[0],{commit:i}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:r}),a=i.message.split(`
61
+ `)[0];try{await Fn({fs:e.lfs,cache:e.cache,dir:t,oid:r,abortOnConflict:!1,committer:await e.resolveAuthor(t),mergeDriver:kc({favor:n.favor,diff3:n.diff3})})}catch(i){if(i instanceof Error&&i.name===`MergeConflictError`){let o=i.data?.filepaths??[];return n.current=r,n.todo=n.todo.slice(1),await Md(e,t,n),Cd(r,a,o)}throw i}n.todo=n.todo.slice(1)}return await Nd(e,t),{stdout:`Successfully rebased and updated ${n.headName}.\n`,stderr:``,exitCode:0}}function Cd(e,t,n){let r=e.slice(0,7),i=``;for(let e of n)i+=`CONFLICT (content): Merge conflict in ${e}\n`;return i+=`error: could not apply ${r}... ${t}\n`,i+=`hint: Resolve all conflicts manually, mark them as resolved with
62
62
  `,i+=`hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
63
63
  `,i+=`hint: You can instead skip this commit: run "git rebase --skip".
64
64
  `,i+=`hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
65
- `,{stdout:``,stderr:i,exitCode:1}}function xd(){return{stdout:``,stderr:`fatal: No rebase in progress?
66
- `,exitCode:128}}async function Sd(e,t,n){return await kc(e,t,n)}async function Cd(e,t,n,r){let i=await Tn({fs:e.lfs,cache:e.cache,dir:t,ref:n}),a=[];for(let e of i){if(e.oid===r)break;a.push({oid:e.oid,parents:e.commit.parent.length})}return a.reverse()}async function wd(e,t){let n=await k({fs:e.lfs,cache:e.cache,dir:t}),r=!1,i=!1;for(let[,e,t,a]of n)(e!==0||a!==0)&&(t===a?e!==a&&(i=!0):r=!0);if(r)return{stdout:``,stderr:`error: cannot rebase: You have unstaged changes.
65
+ `,{stdout:``,stderr:i,exitCode:1}}function wd(){return{stdout:``,stderr:`fatal: No rebase in progress?
66
+ `,exitCode:128}}async function Td(e,t,n){return await Mc(e,t,n)}async function Ed(e,t,n,r){let i=await Tn({fs:e.lfs,cache:e.cache,dir:t,ref:n}),a=[];for(let e of i){if(e.oid===r)break;a.push({oid:e.oid,parents:e.commit.parent.length})}return a.reverse()}async function Dd(e,t){let n=await k({fs:e.lfs,cache:e.cache,dir:t}),r=!1,i=!1;for(let[,e,t,a]of n)(e!==0||a!==0)&&(t===a?e!==a&&(i=!0):r=!0);if(r)return{stdout:``,stderr:`error: cannot rebase: You have unstaged changes.
67
67
  error: Please commit or stash them.
68
68
  `,exitCode:128};if(i)return{stdout:``,stderr:`error: cannot rebase: Your index contains uncommitted changes.
69
69
  error: Please commit or stash them.
70
- `,exitCode:128}}async function Td(e,t,n,r){await tn({fs:e.lfs,dir:t,ref:`refs/heads/${n}`,value:r,force:!0}),await Dn({fs:e.lfs,cache:e.cache,dir:t,ref:n,force:!0})}async function Ed(e,t){return e.fs.exists(`${t}/${pd}/onto`)}async function Dd(e,t,n){try{return(await e.fs.readTextFile(`${t}/${pd}/${n}`)).trim()}catch{return}}async function Od(e,t){let n=await Dd(e,t,`onto`),r=await Dd(e,t,`orig-head`),i=await Dd(e,t,`head-name`);if(!n||!r||!i)return;let a=(await Dd(e,t,`git-rebase-todo`)??``).split(`
71
- `).map(e=>e.replace(/^pick\s+/,``).trim()).filter(e=>e.length>0),o=await Dd(e,t,`strategy-opts`)??``,s,c=!1;for(let e of o.split(/\s+/).filter(e=>e.length>0))e===`ours`||e===`theirs`||e===`union`?s=e:e===`diff3`&&(c=!0);return{onto:n,origHead:r,headName:i,branch:i.replace(/^refs\/heads\//,``),current:await Dd(e,t,`stopped-sha`),todo:a,favor:s,diff3:c}}async function kd(e,t,n){let r=`${t}/${pd}`;await e.fs.mkdir(r,{recursive:!0}),await e.fs.writeFile(`${r}/onto`,`${n.onto}\n`),await e.fs.writeFile(`${r}/orig-head`,`${n.origHead}\n`),await e.fs.writeFile(`${r}/head-name`,`${n.headName}\n`),await e.fs.writeFile(`${r}/git-rebase-todo`,`${n.todo.map(e=>`pick ${e}`).join(`
72
- `)}\n`),n.current?await e.fs.writeFile(`${r}/stopped-sha`,`${n.current}\n`):await jd(e,`${r}/stopped-sha`);let i=[];n.favor&&i.push(n.favor),n.diff3&&i.push(`diff3`),i.length>0?await e.fs.writeFile(`${r}/strategy-opts`,`${i.join(` `)}\n`):await jd(e,`${r}/strategy-opts`)}async function Ad(e,t){try{await e.fs.rm(`${t}/${pd}`,{recursive:!0})}catch{}}async function jd(e,t){try{await e.fs.rm(t)}catch{}}async function Md(e,t,n){let[r,...i]=n;if(r===`add`&&i.length>=2){let[n,r]=i;return await An({fs:e.lfs,dir:t,remote:n,url:r}),{stdout:``,stderr:``,exitCode:0}}if(r===`remove`||r===`rm`){let n=i[0];if(n)return await Sn({fs:e.lfs,dir:t,remote:n}),{stdout:``,stderr:``,exitCode:0}}let a=n.includes(`-v`)||n.includes(`--verbose`),o=await sn({fs:e.lfs,dir:t}),s=``;for(let{remote:e,url:t}of o)a?(s+=`${e}\t${t} (fetch)\n`,s+=`${e}\t${t} (push)\n`):s+=`${e}\n`;return{stdout:s,stderr:``,exitCode:0}}async function Nd(e,t,n){let r=n.includes(`--soft`),i=n.includes(`--hard`),a=n.includes(`--mixed`),o=n.filter(e=>!e.startsWith(`-`)),s=r||i||a;if(!s&&o.length===0){let n=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,,a]of n)a!==i&&await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}if(!s){let n=o.filter(e=>e!==`HEAD`);if(n.length===0){let n=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,,a]of n)a!==i&&await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}for(let r of n)await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}let c=o[0]??`HEAD`,l=await D({fs:e.lfs,dir:t,ref:c}),u=await j({fs:e.lfs,dir:t,fullname:!0});if(!u)return{stdout:``,stderr:`fatal: not on a branch, cannot reset
73
- `,exitCode:128};if(await tn({fs:e.lfs,dir:t,ref:u,value:l,force:!0}),r)return{stdout:`HEAD is now at ${l.slice(0,7)}\n`,stderr:``,exitCode:0};let d=new Set(await O({fs:e.lfs,cache:e.cache,dir:t}));for(let n of d)await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:n});return await Fd(e,t,l),i?(await Ld(e,t,l,d),await Pd(e,t,l),{stdout:`HEAD is now at ${l.slice(0,7)}\n`,stderr:``,exitCode:0}):{stdout:`HEAD is now at ${l.slice(0,7)}\n`,stderr:``,exitCode:0}}async function Pd(e,t,n){try{await wn({fs:e.lfs,cache:e.cache,dir:t,commit:n})}catch{}await cl(e,t)}async function Fd(e,t,n){let{tree:r}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:n});await Id(e,t,n,r,``)}async function Id(e,t,n,r,i){for(let a of r){let r=i?`${i}/${a.path}`:a.path;if(a.type===`blob`)await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:r,ref:n});else if(a.type===`tree`){let{tree:i}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await Id(e,t,n,i,r)}}}async function Ld(e,t,n,r){let i=new Set,{tree:a}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:n});await Rd(e,t,a,``,i);for(let r of i){let{blob:i}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r}),a=r.lastIndexOf(`/`);a!==-1&&await e.fs.mkdir(`${t}/${r.slice(0,a)}`,{recursive:!0}),await e.fs.writeFile(`${t}/${r}`,i)}for(let n of r)if(!i.has(n))try{await e.fs.rm(`${t}/${n}`)}catch{}}async function Rd(e,t,n,r,i){for(let a of n){let n=r?`${r}/${a.path}`:a.path;if(a.type===`blob`)i.add(n);else if(a.type===`tree`){let{tree:r}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await Rd(e,t,r,n,i)}}}async function zd(e,t,n){if(n.includes(`--show-toplevel`))try{return{stdout:`${await Rn({fs:e.lfs,filepath:t})}\n`,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`fatal: not a git repository
70
+ `,exitCode:128}}async function Od(e,t,n,r){await tn({fs:e.lfs,dir:t,ref:`refs/heads/${n}`,value:r,force:!0}),await Dn({fs:e.lfs,cache:e.cache,dir:t,ref:n,force:!0})}async function kd(e,t){return e.fs.exists(`${t}/${gd}/onto`)}async function Ad(e,t,n){try{return(await e.fs.readTextFile(`${t}/${gd}/${n}`)).trim()}catch{return}}async function jd(e,t){let n=await Ad(e,t,`onto`),r=await Ad(e,t,`orig-head`),i=await Ad(e,t,`head-name`);if(!n||!r||!i)return;let a=(await Ad(e,t,`git-rebase-todo`)??``).split(`
71
+ `).map(e=>e.replace(/^pick\s+/,``).trim()).filter(e=>e.length>0),o=await Ad(e,t,`strategy-opts`)??``,s,c=!1;for(let e of o.split(/\s+/).filter(e=>e.length>0))e===`ours`||e===`theirs`||e===`union`?s=e:e===`diff3`&&(c=!0);return{onto:n,origHead:r,headName:i,branch:i.replace(/^refs\/heads\//,``),current:await Ad(e,t,`stopped-sha`),todo:a,favor:s,diff3:c}}async function Md(e,t,n){let r=`${t}/${gd}`;await e.fs.mkdir(r,{recursive:!0}),await e.fs.writeFile(`${r}/onto`,`${n.onto}\n`),await e.fs.writeFile(`${r}/orig-head`,`${n.origHead}\n`),await e.fs.writeFile(`${r}/head-name`,`${n.headName}\n`),await e.fs.writeFile(`${r}/git-rebase-todo`,`${n.todo.map(e=>`pick ${e}`).join(`
72
+ `)}\n`),n.current?await e.fs.writeFile(`${r}/stopped-sha`,`${n.current}\n`):await Pd(e,`${r}/stopped-sha`);let i=[];n.favor&&i.push(n.favor),n.diff3&&i.push(`diff3`),i.length>0?await e.fs.writeFile(`${r}/strategy-opts`,`${i.join(` `)}\n`):await Pd(e,`${r}/strategy-opts`)}async function Nd(e,t){try{await e.fs.rm(`${t}/${gd}`,{recursive:!0})}catch{}}async function Pd(e,t){try{await e.fs.rm(t)}catch{}}async function Fd(e,t,n){let[r,...i]=n;if(r===`add`&&i.length>=2){let[n,r]=i;return await An({fs:e.lfs,dir:t,remote:n,url:r}),{stdout:``,stderr:``,exitCode:0}}if(r===`remove`||r===`rm`){let n=i[0];if(n)return await Sn({fs:e.lfs,dir:t,remote:n}),{stdout:``,stderr:``,exitCode:0}}let a=n.includes(`-v`)||n.includes(`--verbose`),o=await sn({fs:e.lfs,dir:t}),s=``;for(let{remote:e,url:t}of o)a?(s+=`${e}\t${t} (fetch)\n`,s+=`${e}\t${t} (push)\n`):s+=`${e}\n`;return{stdout:s,stderr:``,exitCode:0}}async function Id(e,t,n){let r=n.includes(`--soft`),i=n.includes(`--hard`),a=n.includes(`--mixed`),o=n.filter(e=>!e.startsWith(`-`)),s=r||i||a;if(!s&&o.length===0){let n=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,,a]of n)a!==i&&await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}if(!s){let n=o.filter(e=>e!==`HEAD`);if(n.length===0){let n=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,,a]of n)a!==i&&await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}for(let r of n)await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}let c=o[0]??`HEAD`,l=await D({fs:e.lfs,dir:t,ref:c}),u=await j({fs:e.lfs,dir:t,fullname:!0});if(!u)return{stdout:``,stderr:`fatal: not on a branch, cannot reset
73
+ `,exitCode:128};if(await tn({fs:e.lfs,dir:t,ref:u,value:l,force:!0}),r)return{stdout:`HEAD is now at ${l.slice(0,7)}\n`,stderr:``,exitCode:0};let d=new Set(await O({fs:e.lfs,cache:e.cache,dir:t}));for(let n of d)await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:n});return await Rd(e,t,l),i?(await Bd(e,t,l,d),await Ld(e,t,l),{stdout:`HEAD is now at ${l.slice(0,7)}\n`,stderr:``,exitCode:0}):{stdout:`HEAD is now at ${l.slice(0,7)}\n`,stderr:``,exitCode:0}}async function Ld(e,t,n){try{await wn({fs:e.lfs,cache:e.cache,dir:t,commit:n})}catch{}await dl(e,t)}async function Rd(e,t,n){let{tree:r}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:n});await zd(e,t,n,r,``)}async function zd(e,t,n,r,i){for(let a of r){let r=i?`${i}/${a.path}`:a.path;if(a.type===`blob`)await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:r,ref:n});else if(a.type===`tree`){let{tree:i}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await zd(e,t,n,i,r)}}}async function Bd(e,t,n,r){let i=new Set,{tree:a}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:n});await Vd(e,t,a,``,i);for(let r of i){let{blob:i}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r}),a=r.lastIndexOf(`/`);a!==-1&&await e.fs.mkdir(`${t}/${r.slice(0,a)}`,{recursive:!0}),await e.fs.writeFile(`${t}/${r}`,i)}for(let n of r)if(!i.has(n))try{await e.fs.rm(`${t}/${n}`)}catch{}}async function Vd(e,t,n,r,i){for(let a of n){let n=r?`${r}/${a.path}`:a.path;if(a.type===`blob`)i.add(n);else if(a.type===`tree`){let{tree:r}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await Vd(e,t,r,n,i)}}}async function Hd(e,t,n){if(n.includes(`--show-toplevel`))try{return{stdout:`${await Rn({fs:e.lfs,filepath:t})}\n`,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`fatal: not a git repository
74
74
  `,exitCode:128}}if(n.includes(`--is-inside-work-tree`))try{return await Rn({fs:e.lfs,filepath:t}),{stdout:`true
75
75
  `,stderr:``,exitCode:0}}catch{return{stdout:`false
76
- `,stderr:``,exitCode:0}}let r=n.find(e=>!e.startsWith(`-`))??`HEAD`;try{if(n.includes(`--abbrev-ref`))return r===`HEAD`?{stdout:`${await j({fs:e.lfs,dir:t})??`HEAD`}\n`,stderr:``,exitCode:0}:{stdout:`${r.replace(/^refs\/(?:heads|tags|remotes)\//,``)}\n`,stderr:``,exitCode:0};let i=await Dc(e,t,r),a=n.find(e=>e===`--short`||e.startsWith(`--short=`)),o=a?.includes(`=`)?Number(a.split(`=`)[1]):7;return{stdout:`${a?i.slice(0,Number.isFinite(o)?o:7):i}\n`,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`fatal: ambiguous argument '${r}'\n`,exitCode:128}}}async function Bd(e,t,n){let{flags:r,positionals:i}=M(n,L.revert),a=r[`no-commit`]===!0,o=i[0];if(!o)return{stdout:``,stderr:`error: empty commit set passed
77
- `,exitCode:128};let s=await kc(e,t,o);if(s===void 0)return{stdout:``,stderr:`fatal: bad revision '${o}'\n`,exitCode:128};let c;try{c=await D({fs:e.lfs,dir:t,ref:`HEAD`})}catch{return{stdout:``,stderr:`fatal: your current branch does not have any commits yet
76
+ `,stderr:``,exitCode:0}}let r=n.find(e=>!e.startsWith(`-`))??`HEAD`;try{if(n.includes(`--abbrev-ref`))return r===`HEAD`?{stdout:`${await j({fs:e.lfs,dir:t})??`HEAD`}\n`,stderr:``,exitCode:0}:{stdout:`${r.replace(/^refs\/(?:heads|tags|remotes)\//,``)}\n`,stderr:``,exitCode:0};let i=await Ac(e,t,r),a=n.find(e=>e===`--short`||e.startsWith(`--short=`)),o=a?.includes(`=`)?Number(a.split(`=`)[1]):7;return{stdout:`${a?i.slice(0,Number.isFinite(o)?o:7):i}\n`,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`fatal: ambiguous argument '${r}'\n`,exitCode:128}}}async function Ud(e,t,n){let{flags:r,positionals:i}=M(n,L.revert),a=r[`no-commit`]===!0,o=i[0];if(!o)return{stdout:``,stderr:`error: empty commit set passed
77
+ `,exitCode:128};let s=await Mc(e,t,o);if(s===void 0)return{stdout:``,stderr:`fatal: bad revision '${o}'\n`,exitCode:128};let c;try{c=await D({fs:e.lfs,dir:t,ref:`HEAD`})}catch{return{stdout:``,stderr:`fatal: your current branch does not have any commits yet
78
78
  `,exitCode:128}}let{commit:l}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:s});if(l.parent.length!==1)return{stdout:``,stderr:`error: commit ${s} is a merge but no -m option was given.\nfatal: revert failed\n`,exitCode:128};let u=l.parent[0],d=l.message.split(`
79
- `)[0],f=s.slice(0,7),p=await j({fs:e.lfs,dir:t})??`HEAD`;try{let n=await Vd(e,t,c,s,u,{current:p,base:f,other:`parent of ${f} (${d})`});if(n.length>0){let e=``;for(let t of n)e+=`CONFLICT (content): Merge conflict in ${t}\n`;return e+=`error: could not revert ${f}... ${d}\n`,e+=`hint: after resolving the conflicts, mark them with 'git add <paths>',
79
+ `)[0],f=s.slice(0,7),p=await j({fs:e.lfs,dir:t})??`HEAD`;try{let n=await Wd(e,t,c,s,u,{current:p,base:f,other:`parent of ${f} (${d})`});if(n.length>0){let e=``;for(let t of n)e+=`CONFLICT (content): Merge conflict in ${t}\n`;return e+=`error: could not revert ${f}... ${d}\n`,e+=`hint: after resolving the conflicts, mark them with 'git add <paths>',
80
80
  `,e+=`hint: then commit the result.
81
- `,{stdout:``,stderr:e,exitCode:1}}if(a)return{stdout:``,stderr:``,exitCode:0};let r=await e.resolveAuthor(t),i=`Revert "${d}"\n\nThis reverts commit ${s}.\n`;return{stdout:`[${p} ${(await xn({fs:e.lfs,cache:e.cache,dir:t,message:i,author:r,committer:r})).slice(0,7)}] Revert "${d}"\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`fatal: ${ic(e)}\n`,exitCode:128}}}async function Vd(e,t,n,r,i,a){let[o,s,c]=await Promise.all([O({fs:e.lfs,cache:e.cache,dir:t,ref:n}),O({fs:e.lfs,cache:e.cache,dir:t,ref:r}),O({fs:e.lfs,cache:e.cache,dir:t,ref:i})]),l=new Set([...o,...s,...c]),u=new TextEncoder,d=[];for(let o of l){let s=await Hd(e,t,r,o),c=await Hd(e,t,i,o);if(s===c)continue;let l=await Hd(e,t,n,o)??``,f,p=!1;if(l===(s??``))f=c??``;else{let e=Ye(l,s??``,c??``,{labels:a});f=e.content,p=e.conflicts>0}if(!p&&c===void 0&&f===``){await Ud(e,t,o);continue}await e.fs.writeFile(`${t}/${o}`,u.encode(f)),p?d.push(o):await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:o})}return d}async function Hd(e,t,n,r){try{let{blob:i}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return new TextDecoder().decode(i)}catch{return}}async function Ud(e,t,n){try{await e.fs.rm(`${t}/${n}`)}catch{}try{await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}catch{}}async function Wd(e,t,n){let r=n.includes(`--cached`),i=n.includes(`-r`)||n.includes(`-R`)||n.includes(`--recursive`),a=n.filter(e=>!e.startsWith(`-`));if(a.length===0)return{stdout:``,stderr:`fatal: No pathspec given. Which files should I remove?
82
- `,exitCode:128};for(let n of a){let a=await Gd(e,t,n,r,i);if(a)return a}return{stdout:``,stderr:``,exitCode:0}}async function Gd(e,t,n,r,i){let a=n.startsWith(`/`)?n:`${t}/${n}`,o=!1;try{o=(await e.fs.stat(a)).type===`directory`}catch{}if(o){if(!i)return{stdout:``,stderr:`fatal: not removing '${n}' recursively without -r\n`,exitCode:128};let a=(await O({fs:e.lfs,cache:e.cache,dir:t})).filter(e=>e===n||e.startsWith(n+`/`));for(let n of a)if(await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(`${t}/${n}`)}catch{}}else if(await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(a)}catch{}return null}async function Kd(e,t,n){let{flags:r,positionals:i}=M(n,L.show),a=r,o=a.stat===!0,s=R(a,`format`),c=i[0];if(c?.includes(`:`))return await qd(e,t,c);let l=c??`HEAD`,u=await kc(e,t,l);if(u===void 0)return{stdout:``,stderr:`fatal: bad object ${l}\n`,exitCode:128};let{commit:d}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:u}),f=Jd(u,d,s,e.useColor),p=d.parent.length>0?d.parent[0]:void 0;if(p){let n=await eu(e,t,p,u,{nameOnly:!1,stat:o});f+=n.stdout}else{let n=await hu(e,t,u,o);f+=n}return{stdout:f,stderr:``,exitCode:0}}async function qd(e,t,n){let r=n.indexOf(`:`),i=n.slice(0,r)||`HEAD`,a=n.slice(r+1),o=await kc(e,t,i);if(o===void 0)return{stdout:``,stderr:`fatal: bad object ${i}\n`,exitCode:128};let s=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:o,filepath:a});return{stdout:new TextDecoder().decode(s.blob),stderr:``,exitCode:0}}function Jd(e,t,n,r=!1){if(n)return n.replace(/%H/g,e).replace(/%h/g,e.slice(0,7)).replace(/%s/g,t.message.split(`
81
+ `,{stdout:``,stderr:e,exitCode:1}}if(a)return{stdout:``,stderr:``,exitCode:0};let r=await e.resolveAuthor(t),i=`Revert "${d}"\n\nThis reverts commit ${s}.\n`;return{stdout:`[${p} ${(await xn({fs:e.lfs,cache:e.cache,dir:t,message:i,author:r,committer:r})).slice(0,7)}] Revert "${d}"\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`fatal: ${sc(e)}\n`,exitCode:128}}}async function Wd(e,t,n,r,i,a){let[o,s,c]=await Promise.all([O({fs:e.lfs,cache:e.cache,dir:t,ref:n}),O({fs:e.lfs,cache:e.cache,dir:t,ref:r}),O({fs:e.lfs,cache:e.cache,dir:t,ref:i})]),l=new Set([...o,...s,...c]),u=new TextEncoder,d=[];for(let o of l){let s=await Gd(e,t,r,o),c=await Gd(e,t,i,o);if(s===c)continue;let l=await Gd(e,t,n,o)??``,f,p=!1;if(l===(s??``))f=c??``;else{let e=Ye(l,s??``,c??``,{labels:a});f=e.content,p=e.conflicts>0}if(!p&&c===void 0&&f===``){await Kd(e,t,o);continue}await e.fs.writeFile(`${t}/${o}`,u.encode(f)),p?d.push(o):await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:o})}return d}async function Gd(e,t,n,r){try{let{blob:i}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return new TextDecoder().decode(i)}catch{return}}async function Kd(e,t,n){try{await e.fs.rm(`${t}/${n}`)}catch{}try{await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}catch{}}async function qd(e,t,n){let r=n.includes(`--cached`),i=n.includes(`-r`)||n.includes(`-R`)||n.includes(`--recursive`),a=n.filter(e=>!e.startsWith(`-`));if(a.length===0)return{stdout:``,stderr:`fatal: No pathspec given. Which files should I remove?
82
+ `,exitCode:128};for(let n of a){let a=await Jd(e,t,n,r,i);if(a)return a}return{stdout:``,stderr:``,exitCode:0}}async function Jd(e,t,n,r,i){let a=n.startsWith(`/`)?n:`${t}/${n}`,o=!1;try{o=(await e.fs.stat(a)).type===`directory`}catch{}if(o){if(!i)return{stdout:``,stderr:`fatal: not removing '${n}' recursively without -r\n`,exitCode:128};let a=(await O({fs:e.lfs,cache:e.cache,dir:t})).filter(e=>e===n||e.startsWith(n+`/`));for(let n of a)if(await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(`${t}/${n}`)}catch{}}else if(await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(a)}catch{}return null}async function Yd(e,t,n){let{flags:r,positionals:i}=M(n,L.show),a=r,o=a.stat===!0,s=R(a,`format`),c=i[0];if(c?.includes(`:`))return await Xd(e,t,c);let l=c??`HEAD`,u=await Mc(e,t,l);if(u===void 0)return{stdout:``,stderr:`fatal: bad object ${l}\n`,exitCode:128};let{commit:d}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:u}),f=Zd(u,d,s,e.useColor),p=d.parent.length>0?d.parent[0]:void 0;if(p){let n=await ru(e,t,p,u,{nameOnly:!1,stat:o});f+=n.stdout}else{let n=await vu(e,t,u,o);f+=n}return{stdout:f,stderr:``,exitCode:0}}async function Xd(e,t,n){let r=n.indexOf(`:`),i=n.slice(0,r)||`HEAD`,a=n.slice(r+1),o=await Mc(e,t,i);if(o===void 0)return{stdout:``,stderr:`fatal: bad object ${i}\n`,exitCode:128};let s=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:o,filepath:a});return{stdout:new TextDecoder().decode(s.blob),stderr:``,exitCode:0}}function Zd(e,t,n,r=!1){if(n)return n.replace(/%H/g,e).replace(/%h/g,e.slice(0,7)).replace(/%s/g,t.message.split(`
83
83
  `)[0]).replace(/%an/g,t.author.name).replace(/%ae/g,t.author.email).replace(/%ad/g,new Date(t.author.timestamp*1e3).toLocaleString())+`
84
- `;let i=`${vc(r,`33`,`commit ${e}`)}\n`;return i+=`Author: ${t.author.name} <${t.author.email}>\n`,i+=`Date: ${new Date(t.author.timestamp*1e3).toLocaleString()}\n\n`,i+=` ${t.message.replace(/\n/g,`
85
- `)}\n\n`,i}async function Yd(e,t,n){let r=n.includes(`--heads`),i=n.includes(`--tags`),a=n.find(e=>!e.startsWith(`-`)),o=``;if(!i){let n=await Qt({fs:e.lfs,dir:t});for(let r of n){let n=await D({fs:e.lfs,dir:t,ref:r}),i=`refs/heads/${r}`;a&&!i.includes(a)||(o+=`${n} ${i}\n`)}}if(!r){let n=await Xt({fs:e.lfs,dir:t});for(let r of n){let n=await D({fs:e.lfs,dir:t,ref:r}),i=`refs/tags/${r}`;a&&!i.includes(a)||(o+=`${n} ${i}\n`)}}return{stdout:o,stderr:``,exitCode:0}}const Xd=new Uint8Array;async function Zd(e,t){return await e.fs.readFile(t,{encoding:`binary`})}function Qd(e,t){if(e===t)return!0;if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}function $d(e){if(!e.includes(0))try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return}}async function ef(e,t,n){let r=n[0];if(!r||r.startsWith(`-`))return tf(e,t,n);switch(r){case`push`:case`save`:return tf(e,t,n.slice(1));case`pop`:return of(e,t);case`apply`:return sf(e,t);case`list`:return ff(e,t);case`drop`:return pf(e,t,n.slice(1));case`show`:return mf(e,t);default:return{stdout:``,stderr:`error: unknown subcommand: ${r}\n`,exitCode:1}}}async function tf(e,t,n){let r=await j({fs:e.lfs,dir:t})??`HEAD`,i;try{i=await D({fs:e.lfs,dir:t,ref:`HEAD`})}catch{return{stdout:``,stderr:`fatal: cannot stash without a HEAD commit
86
- `,exitCode:128}}let a=await O({fs:e.lfs,cache:e.cache,dir:t,ref:`HEAD`}),o=await O({fs:e.lfs,cache:e.cache,dir:t}),s=new Set([...a,...o]),c=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[e,t,,n]of c)t===0&&n!==0&&s.add(e);let{dirtyFiles:l,indexEntries:u}=await nf(e,t,i,s,a);if(l.length===0)return{stdout:``,stderr:`No local changes to save
87
- `,exitCode:1};let d=await af(e,t,u),f=[i];try{let n=await D({fs:e.lfs,dir:t,ref:`refs/stash`});f.push(n)}catch{}let{commit:p}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:i}),m=`WIP on ${r}: ${i.slice(0,7)} ${p.message.split(`
88
- `)[0]}`,h=await e.resolveAuthor(t),g=Math.floor(Date.now()/1e3),_=await jn({fs:e.lfs,dir:t,commit:{tree:d,parent:f,author:{...h,timestamp:g,timezoneOffset:0},committer:{...h,timestamp:g,timezoneOffset:0},message:m}});return await tn({fs:e.lfs,dir:t,ref:`refs/stash`,value:_,force:!0}),await rf(e,t,i,l),{stdout:`Saved working directory and index state ${m}\n`,stderr:``,exitCode:0}}async function nf(e,t,n,r,i){let a=[],o=[];for(let s of r){let r=i.includes(s),c;try{c=await Zd(e,`${t}/${s}`)}catch{}if(r){let{blob:r}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:s});if(c===void 0)a.push({file:s,inHead:!0,existsInWorkdir:!1});else if(Qd(c,r)){let n=await nn({fs:e.lfs,dir:t,blob:r});o.push({filepath:s,oid:n})}else{a.push({file:s,inHead:!0,existsInWorkdir:!0});let n=await nn({fs:e.lfs,dir:t,blob:c});o.push({filepath:s,oid:n})}}else if(c!==void 0){a.push({file:s,inHead:!1,existsInWorkdir:!0});let n=await nn({fs:e.lfs,dir:t,blob:c});o.push({filepath:s,oid:n})}}return{dirtyFiles:a,indexEntries:o}}async function rf(e,t,n,r){for(let i of r)if(i.inHead){let{blob:r}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:i.file});await e.fs.writeFile(`${t}/${i.file}`,r),await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:i.file,ref:n})}else{try{await e.fs.rm(`${t}/${i.file}`)}catch{}try{await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:i.file})}catch{}}}async function af(e,t,n){let r=new Map;for(let{filepath:e,oid:t}of n){let n=e.split(`/`),i=r;for(let e=0;e<n.length-1;e++){let t=i.get(n[e]);t?.type!==`tree`&&(t={type:`tree`,children:new Map},i.set(n[e],t)),i=t.children}i.set(n[n.length-1],{type:`blob`,oid:t,mode:`100644`})}let i=async n=>{let r=[];for(let[e,t]of n)if(t.type===`blob`)r.push({mode:t.mode,path:e,oid:t.oid,type:`blob`});else{let n=await i(t.children);r.push({mode:`040000`,path:e,oid:n,type:`tree`})}return await hn({fs:e.lfs,dir:t,tree:r})};return i(r)}async function of(e,t){return cf(e,t,!0)}async function sf(e,t){return cf(e,t,!1)}async function cf(e,t,n){let r;try{r=await D({fs:e.lfs,dir:t,ref:`refs/stash`})}catch{return{stdout:``,stderr:`error: No stash entries found.
89
- `,exitCode:1}}let{commit:i}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:r}),a=await D({fs:e.lfs,dir:t,ref:`HEAD`}),o=i.parent[0]??a,{conflicts:s,warnings:c}=await lf(e,t,i.tree,o);if(s.length>0){let e=s.map(e=>`CONFLICT (content): Merge conflict in ${e}\n`).join(``),t=n?`The stash entry is kept in case you need it again.
90
- `:``;return{stdout:e,stderr:c.join(``)+t,exitCode:1}}return n?(i.parent.length>1?await tn({fs:e.lfs,dir:t,ref:`refs/stash`,value:i.parent[1],force:!0}):await hf(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{0} (${r.slice(0,7)})\n`,stderr:``,exitCode:0}):{stdout:``,stderr:``,exitCode:0}}async function lf(e,t,n,r){let i=new Map,a=async(n,r)=>{let{tree:o}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:n});for(let n of o){let o=r?`${r}/${n.path}`:n.path;if(n.type===`blob`){let{blob:r}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n.oid});i.set(o,r)}else n.type===`tree`&&await a(n.oid,o)}};await a(n,``);let o=new Set;try{let n=await O({fs:e.lfs,cache:e.cache,dir:t,ref:r});for(let e of n)o.add(e)}catch{}let s=[],c=[];for(let[n,a]of i){let i=o.has(n)?await df(e,t,r,n):Xd,l;try{l=await Zd(e,`${t}/${n}`)}catch{}let{merged:u,conflicted:d,binary:f}=uf(l,i,a),p=n.lastIndexOf(`/`);p!==-1&&await e.fs.mkdir(`${t}/${n.slice(0,p)}`,{recursive:!0}),await e.fs.writeFile(`${t}/${n}`,u),f&&c.push(`warning: Cannot merge binary files: ${n} (Updated upstream vs Stashed changes)\n`),d?s.push(n):Qd(u,i)||await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}for(let n of o)if(!i.has(n)){try{await e.fs.rm(`${t}/${n}`)}catch{}await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}return{conflicts:s,warnings:c}}function uf(e,t,n){if(e===void 0||Qd(e,n)||Qd(e,t))return{merged:n,conflicted:!1,binary:!1};if(Qd(n,t))return{merged:e,conflicted:!1,binary:!1};let r=$d(e),i=$d(t),a=$d(n);if(r===void 0||i===void 0||a===void 0)return{merged:e,conflicted:!0,binary:!0};let o=Ye(r,i,a,{labels:{current:`Updated upstream`,base:`stash base`,other:`Stashed changes`}});return{merged:new TextEncoder().encode(o.content),conflicted:o.conflicts>0,binary:!1}}async function df(e,t,n,r){try{let{blob:i}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return i}catch{return Xd}}async function ff(e,t){let n=``,r=0;try{let i=await D({fs:e.lfs,dir:t,ref:`refs/stash`});for(;i;){let{commit:a}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:i});if(n+=`stash@{${r}}: ${a.message}\n`,r++,a.parent.length>1)i=a.parent[1];else break}}catch{}return{stdout:n,stderr:``,exitCode:0}}async function pf(e,t,n){let r=0,i=n.find(e=>e.startsWith(`stash@{`));if(i){let e=i.match(/stash@\{(\d+)\}/);e&&(r=parseInt(e[1],10))}let a;try{a=await D({fs:e.lfs,dir:t,ref:`refs/stash`})}catch{return{stdout:``,stderr:`error: No stash entries found.
91
- `,exitCode:1}}if(r===0){let{commit:n}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:a});return n.parent.length>1?await tn({fs:e.lfs,dir:t,ref:`refs/stash`,value:n.parent[1],force:!0}):await hf(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{0} (${a.slice(0,7)})\n`,stderr:``,exitCode:0}}let o=[],s=a;for(let n=0;n<r;n++){let{commit:n}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:s});if(o.push({oid:s,commit:n}),n.parent.length<=1)return{stdout:``,stderr:`error: stash@{${r}} not found\n`,exitCode:1};s=n.parent[1]}let c=s,{commit:l}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:c}),u=l.parent.length>1?l.parent[1]:void 0;for(let n=o.length-1;n>=0;n--){let r=o[n],i=[r.commit.parent[0]];u&&i.push(u),u=await jn({fs:e.lfs,dir:t,commit:{...r.commit,parent:i}})}return u?await tn({fs:e.lfs,dir:t,ref:`refs/stash`,value:u,force:!0}):await hf(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{${r}} (${c.slice(0,7)})\n`,stderr:``,exitCode:0}}async function mf(e,t){let n;try{n=await D({fs:e.lfs,dir:t,ref:`refs/stash`})}catch{return{stdout:``,stderr:`error: No stash entries found.
92
- `,exitCode:1}}let{commit:r}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:n}),i=r.parent[0];return eu(e,t,i,n,{nameOnly:!1,stat:!0})}async function hf(e,t,n){try{await e.lfs.unlink(`${t}/.git/${n}`)}catch{}}async function gf(e,t,n){let r=n.includes(`--short`)||n.includes(`-s`),i=n.includes(`--porcelain`),a=n.indexOf(`--`),o=a===-1?[]:n.slice(a+1);if(r||i)return yf(e,t,o);let s=``;try{let n=await j({fs:e.lfs,dir:t});s+=`On branch ${n??`(no branch)`}\n`}catch{s+=`Not on any branch.
93
- `}let c=await il(e,t);c?(await ll(e,t)).length>0?(s+=`You have unmerged paths.
84
+ `;let i=`${xc(r,`33`,`commit ${e}`)}\n`;return i+=`Author: ${t.author.name} <${t.author.email}>\n`,i+=`Date: ${new Date(t.author.timestamp*1e3).toLocaleString()}\n\n`,i+=` ${t.message.replace(/\n/g,`
85
+ `)}\n\n`,i}async function Qd(e,t,n){let r=n.includes(`--heads`),i=n.includes(`--tags`),a=n.find(e=>!e.startsWith(`-`)),o=``;if(!i){let n=await Qt({fs:e.lfs,dir:t});for(let r of n){let n=await D({fs:e.lfs,dir:t,ref:r}),i=`refs/heads/${r}`;a&&!i.includes(a)||(o+=`${n} ${i}\n`)}}if(!r){let n=await Xt({fs:e.lfs,dir:t});for(let r of n){let n=await D({fs:e.lfs,dir:t,ref:r}),i=`refs/tags/${r}`;a&&!i.includes(a)||(o+=`${n} ${i}\n`)}}return{stdout:o,stderr:``,exitCode:0}}const $d=new Uint8Array;async function ef(e,t){return await e.fs.readFile(t,{encoding:`binary`})}function tf(e,t){if(e===t)return!0;if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}function nf(e){if(!e.includes(0))try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return}}async function rf(e,t,n){let r=n[0];if(!r||r.startsWith(`-`))return af(e,t,n);switch(r){case`push`:case`save`:return af(e,t,n.slice(1));case`pop`:return lf(e,t);case`apply`:return uf(e,t);case`list`:return hf(e,t);case`drop`:return gf(e,t,n.slice(1));case`show`:return _f(e,t);default:return{stdout:``,stderr:`error: unknown subcommand: ${r}\n`,exitCode:1}}}async function af(e,t,n){let r=await j({fs:e.lfs,dir:t})??`HEAD`,i;try{i=await D({fs:e.lfs,dir:t,ref:`HEAD`})}catch{return{stdout:``,stderr:`fatal: cannot stash without a HEAD commit
86
+ `,exitCode:128}}let a=await O({fs:e.lfs,cache:e.cache,dir:t,ref:`HEAD`}),o=await O({fs:e.lfs,cache:e.cache,dir:t}),s=new Set([...a,...o]),c=await k({fs:e.lfs,cache:e.cache,dir:t});for(let[e,t,,n]of c)t===0&&n!==0&&s.add(e);let{dirtyFiles:l,indexEntries:u}=await of(e,t,i,s,a);if(l.length===0)return{stdout:``,stderr:`No local changes to save
87
+ `,exitCode:1};let d=await cf(e,t,u),f=[i];try{let n=await D({fs:e.lfs,dir:t,ref:`refs/stash`});f.push(n)}catch{}let{commit:p}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:i}),m=`WIP on ${r}: ${i.slice(0,7)} ${p.message.split(`
88
+ `)[0]}`,h=await e.resolveAuthor(t),g=Math.floor(Date.now()/1e3),_=await jn({fs:e.lfs,dir:t,commit:{tree:d,parent:f,author:{...h,timestamp:g,timezoneOffset:0},committer:{...h,timestamp:g,timezoneOffset:0},message:m}});return await tn({fs:e.lfs,dir:t,ref:`refs/stash`,value:_,force:!0}),await sf(e,t,i,l),{stdout:`Saved working directory and index state ${m}\n`,stderr:``,exitCode:0}}async function of(e,t,n,r,i){let a=[],o=[];for(let s of r){let r=i.includes(s),c;try{c=await ef(e,`${t}/${s}`)}catch{}if(r){let{blob:r}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:s});if(c===void 0)a.push({file:s,inHead:!0,existsInWorkdir:!1});else if(tf(c,r)){let n=await nn({fs:e.lfs,dir:t,blob:r});o.push({filepath:s,oid:n})}else{a.push({file:s,inHead:!0,existsInWorkdir:!0});let n=await nn({fs:e.lfs,dir:t,blob:c});o.push({filepath:s,oid:n})}}else if(c!==void 0){a.push({file:s,inHead:!1,existsInWorkdir:!0});let n=await nn({fs:e.lfs,dir:t,blob:c});o.push({filepath:s,oid:n})}}return{dirtyFiles:a,indexEntries:o}}async function sf(e,t,n,r){for(let i of r)if(i.inHead){let{blob:r}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:i.file});await e.fs.writeFile(`${t}/${i.file}`,r),await Bn({fs:e.lfs,cache:e.cache,dir:t,filepath:i.file,ref:n})}else{try{await e.fs.rm(`${t}/${i.file}`)}catch{}try{await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:i.file})}catch{}}}async function cf(e,t,n){let r=new Map;for(let{filepath:e,oid:t}of n){let n=e.split(`/`),i=r;for(let e=0;e<n.length-1;e++){let t=i.get(n[e]);t?.type!==`tree`&&(t={type:`tree`,children:new Map},i.set(n[e],t)),i=t.children}i.set(n[n.length-1],{type:`blob`,oid:t,mode:`100644`})}let i=async n=>{let r=[];for(let[e,t]of n)if(t.type===`blob`)r.push({mode:t.mode,path:e,oid:t.oid,type:`blob`});else{let n=await i(t.children);r.push({mode:`040000`,path:e,oid:n,type:`tree`})}return await hn({fs:e.lfs,dir:t,tree:r})};return i(r)}async function lf(e,t){return df(e,t,!0)}async function uf(e,t){return df(e,t,!1)}async function df(e,t,n){let r;try{r=await D({fs:e.lfs,dir:t,ref:`refs/stash`})}catch{return{stdout:``,stderr:`error: No stash entries found.
89
+ `,exitCode:1}}let{commit:i}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:r}),a=await D({fs:e.lfs,dir:t,ref:`HEAD`}),o=i.parent[0]??a,{conflicts:s,warnings:c}=await ff(e,t,i.tree,o);if(s.length>0){let e=s.map(e=>`CONFLICT (content): Merge conflict in ${e}\n`).join(``),t=n?`The stash entry is kept in case you need it again.
90
+ `:``;return{stdout:e,stderr:c.join(``)+t,exitCode:1}}return n?(i.parent.length>1?await tn({fs:e.lfs,dir:t,ref:`refs/stash`,value:i.parent[1],force:!0}):await vf(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{0} (${r.slice(0,7)})\n`,stderr:``,exitCode:0}):{stdout:``,stderr:``,exitCode:0}}async function ff(e,t,n,r){let i=new Map,a=async(n,r)=>{let{tree:o}=await rn({fs:e.lfs,cache:e.cache,dir:t,oid:n});for(let n of o){let o=r?`${r}/${n.path}`:n.path;if(n.type===`blob`){let{blob:r}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n.oid});i.set(o,r)}else n.type===`tree`&&await a(n.oid,o)}};await a(n,``);let o=new Set;try{let n=await O({fs:e.lfs,cache:e.cache,dir:t,ref:r});for(let e of n)o.add(e)}catch{}let s=[],c=[];for(let[n,a]of i){let i=o.has(n)?await mf(e,t,r,n):$d,l;try{l=await ef(e,`${t}/${n}`)}catch{}let{merged:u,conflicted:d,binary:f}=pf(l,i,a),p=n.lastIndexOf(`/`);p!==-1&&await e.fs.mkdir(`${t}/${n.slice(0,p)}`,{recursive:!0}),await e.fs.writeFile(`${t}/${n}`,u),f&&c.push(`warning: Cannot merge binary files: ${n} (Updated upstream vs Stashed changes)\n`),d?s.push(n):tf(u,i)||await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}for(let n of o)if(!i.has(n)){try{await e.fs.rm(`${t}/${n}`)}catch{}await ln({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}return{conflicts:s,warnings:c}}function pf(e,t,n){if(e===void 0||tf(e,n)||tf(e,t))return{merged:n,conflicted:!1,binary:!1};if(tf(n,t))return{merged:e,conflicted:!1,binary:!1};let r=nf(e),i=nf(t),a=nf(n);if(r===void 0||i===void 0||a===void 0)return{merged:e,conflicted:!0,binary:!0};let o=Ye(r,i,a,{labels:{current:`Updated upstream`,base:`stash base`,other:`Stashed changes`}});return{merged:new TextEncoder().encode(o.content),conflicted:o.conflicts>0,binary:!1}}async function mf(e,t,n,r){try{let{blob:i}=await $t({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return i}catch{return $d}}async function hf(e,t){let n=``,r=0;try{let i=await D({fs:e.lfs,dir:t,ref:`refs/stash`});for(;i;){let{commit:a}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:i});if(n+=`stash@{${r}}: ${a.message}\n`,r++,a.parent.length>1)i=a.parent[1];else break}}catch{}return{stdout:n,stderr:``,exitCode:0}}async function gf(e,t,n){let r=0,i=n.find(e=>e.startsWith(`stash@{`));if(i){let e=i.match(/stash@\{(\d+)\}/);e&&(r=parseInt(e[1],10))}let a;try{a=await D({fs:e.lfs,dir:t,ref:`refs/stash`})}catch{return{stdout:``,stderr:`error: No stash entries found.
91
+ `,exitCode:1}}if(r===0){let{commit:n}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:a});return n.parent.length>1?await tn({fs:e.lfs,dir:t,ref:`refs/stash`,value:n.parent[1],force:!0}):await vf(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{0} (${a.slice(0,7)})\n`,stderr:``,exitCode:0}}let o=[],s=a;for(let n=0;n<r;n++){let{commit:n}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:s});if(o.push({oid:s,commit:n}),n.parent.length<=1)return{stdout:``,stderr:`error: stash@{${r}} not found\n`,exitCode:1};s=n.parent[1]}let c=s,{commit:l}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:c}),u=l.parent.length>1?l.parent[1]:void 0;for(let n=o.length-1;n>=0;n--){let r=o[n],i=[r.commit.parent[0]];u&&i.push(u),u=await jn({fs:e.lfs,dir:t,commit:{...r.commit,parent:i}})}return u?await tn({fs:e.lfs,dir:t,ref:`refs/stash`,value:u,force:!0}):await vf(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{${r}} (${c.slice(0,7)})\n`,stderr:``,exitCode:0}}async function _f(e,t){let n;try{n=await D({fs:e.lfs,dir:t,ref:`refs/stash`})}catch{return{stdout:``,stderr:`error: No stash entries found.
92
+ `,exitCode:1}}let{commit:r}=await A({fs:e.lfs,cache:e.cache,dir:t,oid:n}),i=r.parent[0];return ru(e,t,i,n,{nameOnly:!1,stat:!0})}async function vf(e,t,n){try{await e.lfs.unlink(`${t}/.git/${n}`)}catch{}}async function yf(e,t,n){let r=n.includes(`--short`)||n.includes(`-s`),i=n.includes(`--porcelain`),a=n.indexOf(`--`),o=a===-1?[]:n.slice(a+1);if(r||i)return Sf(e,t,o);let s=``;try{let n=await j({fs:e.lfs,dir:t});s+=`On branch ${n??`(no branch)`}\n`}catch{s+=`Not on any branch.
93
+ `}let c=await sl(e,t);c?(await fl(e,t)).length>0?(s+=`You have unmerged paths.
94
94
  `,s+=` (fix conflicts and run "git commit")
95
95
  `,s+=` (use "git merge --abort" to abort the merge)
96
96
 
@@ -98,25 +98,25 @@ error: Please commit or stash them.
98
98
  `,s+=` (use "git commit" to conclude merge)
99
99
 
100
100
  `):s+=`
101
- `;let{staged:l,unstaged:u,untracked:d}=_f(await k({fs:e.lfs,cache:e.cache,dir:t,...sc}),o);return s+=vf(l,u,d,c,e.useColor),{stdout:s,stderr:``,exitCode:0}}function _f(e,t){let n=[],r=[],i=[];for(let[a,o,s,c]of e)Fc(a,t)&&(o===0&&s===2&&c===0?i.push(a):c===2||o===1&&c===0&&s===0?n.push(a):s!==c&&s!==0?r.push(a):o===1&&s===0&&c===1&&r.push(a+` (deleted)`));return{staged:n,unstaged:r,untracked:i}}function vf(e,t,n,r=!1,i=!1){let a=``;if(e.length>0){a+=`Changes to be committed:
101
+ `;let{staged:l,unstaged:u,untracked:d}=bf(await k({fs:e.lfs,cache:e.cache,dir:t,...uc}),o);return s+=xf(l,u,d,c,e.useColor),{stdout:s,stderr:``,exitCode:0}}function bf(e,t){let n=[],r=[],i=[];for(let[a,o,s,c]of e)Rc(a,t)&&(o===0&&s===2&&c===0?i.push(a):c===2||o===1&&c===0&&s===0?n.push(a):s!==c&&s!==0?r.push(a):o===1&&s===0&&c===1&&r.push(a+` (deleted)`));return{staged:n,unstaged:r,untracked:i}}function xf(e,t,n,r=!1,i=!1){let a=``;if(e.length>0){a+=`Changes to be committed:
102
102
  `,a+=` (use "git restore --staged <file>..." to unstage)
103
103
 
104
- `;for(let t of e)a+=`\t${vc(i,`32`,t)}\n`;a+=`
104
+ `;for(let t of e)a+=`\t${xc(i,`32`,t)}\n`;a+=`
105
105
  `}if(t.length>0){a+=`Changes not staged for commit:
106
106
  `,a+=` (use "git add <file>..." to update what will be committed)
107
107
 
108
- `;for(let e of t)a+=`\t${vc(i,`31`,e)}\n`;a+=`
108
+ `;for(let e of t)a+=`\t${xc(i,`31`,e)}\n`;a+=`
109
109
  `}if(n.length>0){a+=`Untracked files:
110
110
  `,a+=` (use "git add <file>..." to include in what will be committed)
111
111
 
112
- `;for(let e of n)a+=`\t${vc(i,`31`,e)}\n`;a+=`
112
+ `;for(let e of n)a+=`\t${xc(i,`31`,e)}\n`;a+=`
113
113
  `}return e.length===0&&t.length===0&&n.length===0&&!r&&(a+=`nothing to commit, working tree clean
114
- `),a}async function yf(e,t,n){let r=await k({fs:e.lfs,cache:e.cache,dir:t,...sc}),i=``;for(let[e,t,a,o]of r){if(!Fc(e,n))continue;let r=bf(t,a,o);r&&(i+=`${r[0]}${r[1]} ${e}\n`)}return{stdout:i,stderr:``,exitCode:0}}function bf(e,t,n){return e===0&&t===2&&n===0?[`?`,`?`]:e===0&&t===2&&n===2?[`A`,` `]:e===0&&t===2&&n===3?[`A`,`M`]:e===1&&t===2&&n===1?[` `,`M`]:e===1&&t===2&&n===2?[`M`,` `]:e===1&&t===2&&n===3?[`M`,`M`]:e===1&&t===0&&n===0?[`D`,` `]:e===1&&t===0&&n===1?[` `,`D`]:null}const xf=`usage: git symbolic-ref <name>
114
+ `),a}async function Sf(e,t,n){let r=await k({fs:e.lfs,cache:e.cache,dir:t,...uc}),i=``;for(let[e,t,a,o]of r){if(!Rc(e,n))continue;let r=Cf(t,a,o);r&&(i+=`${r[0]}${r[1]} ${e}\n`)}return{stdout:i,stderr:``,exitCode:0}}function Cf(e,t,n){return e===0&&t===2&&n===0?[`?`,`?`]:e===0&&t===2&&n===2?[`A`,` `]:e===0&&t===2&&n===3?[`A`,`M`]:e===1&&t===2&&n===1?[` `,`M`]:e===1&&t===2&&n===2?[`M`,` `]:e===1&&t===2&&n===3?[`M`,`M`]:e===1&&t===0&&n===0?[`D`,` `]:e===1&&t===0&&n===1?[` `,`D`]:null}const wf=`usage: git symbolic-ref <name>
115
115
  or: git symbolic-ref <name> <ref>
116
- or: git symbolic-ref (-d | --delete) <name>`;function Sf(e){let t=Array.isArray(e)?e[e.length-1]:e;return typeof t==`boolean`?t:void 0}function Cf(e){let t={};typeof e.m==`string`&&(t.m=e.m);let n=Sf(e.delete);n!==void 0&&(t.delete=n);let r=Sf(e.d);r!==void 0&&(t.d=r);let i=Sf(e.quiet);i!==void 0&&(t.quiet=i);let a=Sf(e.q);a!==void 0&&(t.q=a);let o=Sf(e.short);o!==void 0&&(t.short=o);let s=Sf(e.recurse);return s!==void 0&&(t.recurse=s),t}function wf(){return{stdout:``,stderr:`${xf}\n`,exitCode:129}}function Tf(e){return!e.startsWith(`refs/`)||e.length===5||e.includes(`..`)||e.includes(`@{`)||e.split(`/`).some(e=>!e||e.startsWith(`.`)||e.endsWith(`.`)||e.endsWith(`.lock`))?!1:![...e].some(e=>{let t=e.charCodeAt(0);return t<=32||t===127||`~^:?*[\\`.includes(e)})}async function Ef(e,t,n){try{let r=await D({fs:e.lfs,dir:t,ref:n,depth:2});return r.startsWith(`refs/`)?{kind:`symbolic`,target:r}:{kind:`direct`}}catch{return{kind:`missing`}}}async function Df(e,t,n,r){let i=await Ef(e,t,n);if(i.kind!==`symbolic`)return{stdout:``,stderr:`fatal: ref ${n} is not a symbolic ref\n`,exitCode:i.kind===`direct`?1:128};if(!r)return i.target;let a=new Set([n]),o=i.target;for(;;){if(a.has(o))return{stdout:``,stderr:`fatal: ref ${n} has a circular symbolic target\n`,exitCode:128};a.add(o);let r=await Ef(e,t,o);if(r.kind!==`symbolic`)return o;o=r.target}}function Of(e){for(let t of[`refs/heads/`,`refs/tags/`,`refs/remotes/`])if(e.startsWith(t))return e.slice(t.length);return e.startsWith(`refs/`)?e.slice(5):e}function kf(e,t){let n=new Set([`m`,`delete`,`d`,`quiet`,`q`,`short`,`recurse`]),r=Object.keys(e).find(e=>!n.has(e));if(r)return{stdout:``,stderr:`error: unknown option '${r}'\n${xf}\n`,exitCode:129};if(e.m!==void 0)return{stdout:``,stderr:`fatal: option '-m' is not supported because reflogs are not persisted
117
- `,exitCode:128};if(e.delete===!1||t&&(e.short!==void 0||e.recurse!==void 0))return wf()}async function Af(e,t,n,r){if(n===`HEAD`)return{stdout:``,stderr:`fatal: deleting 'HEAD' is not allowed
118
- `,exitCode:128};let i=await Ef(e,t,n);return i.kind===`symbolic`?(await Cn({fs:e.lfs,dir:t,ref:n}),{stdout:``,stderr:``,exitCode:0}):{stdout:``,stderr:r?``:`fatal: Cannot delete ${n}, not a symbolic ref\n`,exitCode:i.kind===`direct`?1:128}}async function jf(e,t,n,r){return Tf(r)?(await tn({fs:e.lfs,dir:t,ref:n,value:r,force:!0,symbolic:!0}),{stdout:``,stderr:``,exitCode:0}):{stdout:``,stderr:r.startsWith(`refs/`)?`fatal: Refusing to set '${n}' to invalid ref '${r}'\n`:`fatal: Refusing to point ${n} outside of refs/\n`,exitCode:128}}async function Mf(e,t,n,r){let i=await Df(e,t,n,r.recurse!==!1);return typeof i==`string`?{stdout:`${r.short?Of(i):i}\n`,stderr:``,exitCode:0}:r.quiet&&i.exitCode===1?{...i,stderr:``}:i}async function Nf(e,t,n){let{flags:r,positionals:i}=M(n,L[`symbolic-ref`]),a=r.delete===!0,o=kf(r,a);if(o)return o;let s=r.quiet!==void 0||r.short!==void 0||r.recurse!==void 0;return a?i.length===1?Af(e,t,i[0],!!r.quiet):wf():i.length===2?s?wf():jf(e,t,i[0],i[1]):i.length===1?Mf(e,t,i[0],Cf(r)):wf()}async function Pf(e,t,n){let{flags:r,positionals:i}=M(n,L.tag),a=r,o=a.delete===!0,s=R(a,`list`),c=a.annotate===!0,l=R(a,`message`),u=a.force===!0;if(o){let n=i[0];return n?(await gn({fs:e.lfs,dir:t,ref:n}),{stdout:`Deleted tag '${n}'\n`,stderr:``,exitCode:0}):{stdout:``,stderr:`fatal: tag name required
119
- `,exitCode:128}}if(s!==void 0||i.length===0){let n=await Xt({fs:e.lfs,dir:t}),r=n,i=s||void 0;if(i){let e=RegExp(`^`+i.replace(/\*/g,`.*`)+`$`);r=n.filter(t=>e.test(t))}return{stdout:r.map(e=>`${e}\n`).join(``),stderr:``,exitCode:0}}let d=i[0],f=i[1];if(c||l){let n=await e.resolveAuthor(t);await Nn({fs:e.lfs,cache:e.cache,dir:t,ref:d,message:l??d,object:f,tagger:{...n,timestamp:Math.floor(Date.now()/1e3),timezoneOffset:0},force:u})}else await fn({fs:e.lfs,dir:t,ref:d,object:f,force:u});return{stdout:``,stderr:``,exitCode:0}}function Ff(e,t){let n=e===`dir`?16877:e===`symlink`?40960:33188;if(t===void 0)return n;let r=t&4095;return n&61440|r}function If(e,t){let n=t.mtimeMs??0;return{type:e,mode:Ff(e,t.mode),size:t.size??0,ino:t.ino??0,mtimeMs:n,ctimeMs:t.ctimeMs??n,uid:t.uid??1,gid:t.gid??1,dev:1,isFile:()=>e===`file`,isDirectory:()=>e===`dir`,isSymbolicLink:()=>e===`symlink`}}function Lf(e){return{size:e.size,mtimeMs:e.mtime,ctimeMs:e.ctime,...e.ino===void 0?{}:{ino:e.ino},...e.uid===void 0?{}:{uid:e.uid},...e.gid===void 0?{}:{gid:e.gid},...e.mode===void 0?{}:{mode:e.mode}}}function Rf(e){if(typeof e==`string`)return/^utf-?8$/i.test(e);if(e&&typeof e==`object`){let t=e.encoding;if(typeof t==`string`)return/^utf-?8$/i.test(t)}return!1}function zf(e){if(!e||typeof e!=`object`)return null;let{start:t,end:n}=e;return typeof t!=`number`||typeof n!=`number`?null:{start:t,end:n}}const Bf=`/objects/pack`,Vf=/^(.*\/objects)\/([0-9a-f]{2})\/[0-9a-f]{38,}$/,Hf=/\/objects\/[0-9a-f]{2}$/;function Uf(e){return e.endsWith(Bf)||Hf.test(e)}function Wf(e){let t=Xe(e);return e.type===`directory`?t?{type:`dir`,stats:t}:{type:`dir`}:t?{type:`file`,stats:t}:void 0}function Gf(e){let t=new Map;return{prime(n,r){if(r.length>e){t.clear();return}t.size+r.length>e&&t.clear();let i=x(n),a=i===`/`?`/`:`${i}/`;for(let e of r){let n=Wf(e);n?t.set(`${a}${e.name}`,n):t.delete(`${a}${e.name}`)}},get(e){let n=t.get(x(e));if(n)return If(n.type,n.stats?Lf(n.stats):{})},drop(e){t.delete(x(e))},clear(){t.clear()},size(){return t.size}}}function Kf(e,t={}){let n=t.objectCache?{packDirs:new Map,fanouts:new Map}:void 0,r=Gf(Math.max(0,t.statCacheMax??1e5)),i=async t=>{let n=await e.readDir(t,Uf(t)?void 0:{includeStats:!0});return r.prime(t,n),n.map(e=>e.name)},a=(e,t)=>{let n=e.fanouts.get(t);if(n!=null)return n;let r=i(t).then(e=>new Set(e));return e.fanouts.set(t,r),r},o=async e=>{if(!n)return!1;let t=Vf.exec(e);if(!t)return!1;try{return!(await a(n,t[1])).has(t[2])}catch{return!1}},s=()=>{n?.packDirs.clear(),n?.fanouts.clear()},c=async(e,t)=>(r.drop(e),await l(t)),l=async e=>{s();try{return await e()}finally{s()}};return{promises:{async readFile(t,n){if(await o(t))throw new Ze(`ENOENT`,`no such file or directory`,t);let r=zf(n);return r?await e.readFileRange(t,r.start,r.end):await e.readFile(t,Rf(n)?{encoding:`utf-8`}:{encoding:`binary`})},async writeFile(t,n,r){await c(t,()=>e.writeFile(t,n))},async unlink(t){await c(t,()=>e.rm(t))},async readdir(e){if(!n||!e.endsWith(Bf))return await i(e);let t=n.packDirs.get(e);if(t!=null)return[...await t];let r=i(e);return n.packDirs.set(e,r),[...await r]},async mkdir(t,n){let r=n??void 0;await c(t,()=>e.mkdir(t,r?.recursive===void 0?void 0:{recursive:r.recursive}))},async rmdir(t){r.clear(),await l(()=>e.rm(t))},async stat(t){let n=r.get(t);if(n)return n;let i=await e.stat(t);return If(i.type===`directory`?`dir`:`file`,Lf(i))},async lstat(t){let n=r.get(t);if(n)return n;let i=await e.lstat(t);return If(i.type===`directory`?`dir`:i.type===`symlink`?`symlink`:`file`,Lf(i))},async readlink(t){if(e.isPathUnderMount(t))throw new Ze(`EINVAL`,`symlinks not supported on mounted filesystems`,t);return e.readlink(t)},async symlink(t,n){if(e.isPathUnderMount(n))throw new Ze(`EINVAL`,`symlinks not supported on mounted filesystems`,n);await c(n,()=>e.symlink(t,n))}},clearStatCache(){r.clear()},statCacheSize(){return r.size()}}}const qf={maxEntries:5e4,maxFileBytes:1048576,maxTotalBytes:8388608},Jf=new Set([`ENOENT`,`ENOTDIR`,`EISDIR`]);function Yf(e){return e.endsWith(`.pack`)||e.endsWith(`.idx`)}function Xf(e){let t=e.replace(/\/{2,}/g,`/`);return t.length>1&&t.endsWith(`/`)?t.slice(0,-1):t}function Zf(e){let t=e.lastIndexOf(`/`);return t<0?`.`:t===0?`/`:e.slice(0,t)}function Qf(e){let t=e?.code;return typeof t==`string`?t:void 0}function $f(e){return typeof e==`string`?e.length*2:e.byteLength}function ep(e,t){return`${t?`u`:`b`} ${e}`}var tp=class{limits;stats=new Map;lstats=new Map;dirs=new Map;files=new Map;fileBytes=new Map;retainedBytes=0;constructor(e){this.limits=e}hasRoom(){return this.stats.size+this.lstats.size+this.dirs.size+this.files.size<this.limits.maxEntries}retainFile(e,t){let n=$f(t);return n>this.limits.maxFileBytes||this.retainedBytes+n>this.limits.maxTotalBytes?!1:(this.fileBytes.set(e,n),this.retainedBytes+=n,!0)}dropFile(e){let t=this.fileBytes.get(e);t!==void 0&&(this.fileBytes.delete(e),this.retainedBytes-=t)}forgetSelf(e){this.stats.delete(e),this.lstats.delete(e),this.dirs.delete(e);for(let t of[ep(e,!0),ep(e,!1)])this.files.delete(t),this.dropFile(t)}invalidatePath(e){let t=Xf(e);this.forgetSelf(t);let n=Zf(t);this.dirs.delete(n),this.stats.delete(n),this.lstats.delete(n)}invalidateSubtree(e){let t=Xf(e),n=`${t}/`;for(let e of[this.stats,this.lstats,this.dirs])for(let t of e.keys())t.startsWith(n)&&e.delete(t);for(let e of this.files.keys())e.slice(2).startsWith(n)&&(this.files.delete(e),this.dropFile(e));this.invalidatePath(t)}};function np(e,t,n,r){let i=e.get(t);if(i!=null)return i;let a=n();if(!r.admit())return a;e.set(t,a);let o=()=>{e.get(t)===a&&e.delete(t)};return a.then(e=>{r.keep&&!r.keep(e)&&o()},e=>{Jf.has(Qf(e)??``)||o()}),a}function rp(e,t={}){let n=new tp({...qf,...t}),r=()=>n.hasRoom(),i=async t=>(await np(n.dirs,Xf(t),()=>e.readdir(t),{admit:r})).slice(),a=async(t,i)=>{if(Yf(t))return e.readFile(t,i);let a=ep(Xf(t),Rf(i)),o=await np(n.files,a,()=>e.readFile(t,i),{admit:r,keep:e=>n.retainFile(a,e)});return typeof o==`string`?o:new Uint8Array(o)},o=(e,t)=>n=>np(e,Xf(n),()=>t(n),{admit:r}),s=async(e,t,r=!1)=>{try{return await t()}finally{r?n.invalidateSubtree(e):n.invalidatePath(e)}};return{readFile:a,readdir:i,stat:o(n.stats,t=>e.stat(t)),lstat:o(n.lstats,t=>e.lstat(t)),readlink:t=>e.readlink(t),writeFile:(t,n,r)=>s(t,()=>e.writeFile(t,n,r)),unlink:t=>s(t,()=>e.unlink(t),!0),rmdir:t=>s(t,()=>e.rmdir(t),!0),mkdir:(t,n)=>s(t,()=>e.mkdir(t,n)),symlink:(t,n)=>s(n,()=>e.symlink(t,n))}}const ip=e(`git-cache`);function ap(e){for(let t of Object.getOwnPropertySymbols(e)){if(t.description!==`PackfileCache`)continue;let n=e[t];if(n instanceof Map)return n}}function op(e){return`${e.replace(/\/+$/,``)}/.git`}var sp=class{fs;cache={};signatures=new Map;inFlight=0;maxResidentPacks;constructor(e,t={}){this.fs=e,this.maxResidentPacks=Math.max(1,t.maxResidentPacks??4)}setDeepVerification(e){this.cache.skipDeepPackVerification=!e}async beforeCommand(e){this.inFlight++;let t=op(e),n=this.signatures.get(t);if(n===void 0)return;let r=await this.packSignature(t);n!==r&&this.invalidate(e),this.signatures.set(t,r)}async afterCommand(e,t={}){this.inFlight=Math.max(0,this.inFlight-1);let n=op(e);t.wrotePacks&&(this.invalidate(e),this.signatures.delete(n)),this.inFlight===0&&(await this.evictFailedPacks(),await this.trimResidentPacks()),!this.signatures.has(n)&&this.hasCachedPacks(n)&&this.signatures.set(n,await this.packSignature(n))}async evictFailedPacks(){let e=ap(this.cache);if(e)for(let[t,n]of[...e]){let r;try{r=await n}catch{e.delete(t);continue}if(!r){e.delete(t);continue}if(r.pack)try{await r.pack||(r.pack=null)}catch{r.pack=null}}}hasCachedPacks(e){let t=ap(this.cache);if(!t)return!1;let n=`${e}/objects/pack/`;for(let e of t.keys())if(e.startsWith(n))return!0;return!1}invalidate(e){let t=`${op(e)}/objects/pack/`,n=ap(this.cache);if(n)for(let e of[...n.keys()])e.startsWith(t)&&n.delete(e)}async residentPackCount(){return(await this.residentPacks()).length}async packSignature(e){let t=[];try{t=(await this.fs.readdir(`${e}/objects/pack`)).filter(e=>e.endsWith(`.idx`)||e.endsWith(`.pack`)).sort()}catch{}let n=`-`;try{n=String((await this.fs.lstat(`${e}/packed-refs`)).mtimeMs)}catch{}return`${t.join(`,`)}|${n}`}async residentPacks(){let e=ap(this.cache);if(!e)return[];let t=[];for(let[n,r]of e){let e;try{e=await r}catch{continue}e?.pack&&t.push({key:n,index:e,usedAt:e._lastUsedAt??0})}return t.sort((e,t)=>e.usedAt-t.usedAt),t.map(({key:e,index:t})=>({key:e,index:t}))}async trimResidentPacks(){let e=await this.residentPacks();if(e.length<=this.maxResidentPacks)return;let t=e.slice(0,e.length-this.maxResidentPacks);for(let{index:e}of t)e.pack=null;ip.debug(`unloaded packfile buffers past the resident bound`,{unloaded:t.length,resident:this.maxResidentPacks})}};const cp=e(`git-commands`),lp=new Set([`clone`,`fetch`,`pull`,`push`,`ls-remote`]),up=new Set([`clone`,`fetch`,`pull`]),dp=new Set([`add`,`branch`,`commit`,`diff`,`init`,`log`,`ls-files`,`ls-tree`,`merge-base`,`rev-parse`,`show`,`show-ref`,`status`,`symbolic-ref`,`tag`]),fp={string:[`c`,`C`,`git-dir`,`work-tree`],boolean:[`help`,`version`,`no-pager`,`paginate`,`no-replace-objects`,`color`],alias:{h:`help`},stopEarly:!0};function pp(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function mp(e,t){if(e instanceof Map){let n=e.get(t);return n&&n.length>0?n:void 0}let n=e[t];return n&&n.length>0?n:void 0}var hp=class e{options;static globalFsByDbName=new Map;lfs;corsProxy;authorName;authorEmail;globalDbName;githubToken;currentEnv;currentConfigOverrides;currentStdin=``;cacheManager;constructor(e){this.options=e,this.lfs=Kf(e.fs,{statCacheMax:0}).promises,this.corsProxy=e.corsProxy,this.authorName=e.authorName??`User`,this.authorEmail=e.authorEmail??`user@example.com`,this.globalDbName=e.globalDbName??`slicc-fs-global`,this.cacheManager=new sp(this.lfs,{...e.maxResidentPacks===void 0?{}:{maxResidentPacks:e.maxResidentPacks}})}contextFor(e,t){let n=Kf(this.options.fs,{objectCache:!0}),r=dp.has(e)?rp(n.promises):n.promises,i=this.createOnAuthFailure();return{ctx:{lfs:r,fs:this.options.fs,cache:this.cacheManager.cache,corsProxy:this.corsProxy,getOnAuth:()=>this.getOnAuth(),getOnAuthFailure:()=>i,resolveAuthor:e=>this.resolveAuthor(e,r),getGlobalFs:()=>this.getGlobalFs(),setGithubToken:e=>this.setGithubToken(e),getGithubToken:()=>this.githubToken,setDefaultAuthorName:e=>{this.authorName=e},setDefaultAuthorEmail:e=>{this.authorEmail=e},getConfigOverrides:()=>this.currentConfigOverrides,stdin:this.currentStdin,useColor:t},client:n}}getOnAuth(){let e=this.resolveAuthToken();if(e)return()=>({username:`x-access-token`,password:e})}createOnAuthFailure(){if(!this.options.ensureFreshGithubToken)return;let e=!1;return async()=>{if(e)return;e=!0;try{await this.options.ensureFreshGithubToken?.({force:!0})}catch(e){cp.warn(`GitHub token force-renew after 401 failed`,{error:e instanceof Error?e.message:String(e)});return}await this.loadGithubToken();let t=this.resolveAuthToken();if(t)return{username:`x-access-token`,password:t}}}resolveAuthToken(e=this.currentEnv){if(this.githubToken)return this.githubToken;if(!e)return;let t=mp(e,`GH_TOKEN`);if(t)return t;let n=mp(e,`GITHUB_TOKEN`);if(n)return n}async githubCredential(e,t){return await this.ensureFreshGithubToken(t),await this.loadGithubToken(),this.resolveAuthToken(e)}async identity(){let e=await this.getGlobalFs();return{name:await sr(e,`user.name`)??this.authorName,email:await sr(e,`user.email`)??this.authorEmail}}getGlobalFs(){let t=e.globalFsByDbName.get(this.globalDbName);if(t!=null)return t;let n=st.create({dbName:this.globalDbName});return e.globalFsByDbName.set(this.globalDbName,n),n}async loadGithubToken(){try{let e=(await(await this.getGlobalFs()).readTextFile(`/workspace/.git/github-token`)).trim();this.githubToken=e||void 0}catch{this.githubToken=void 0}}async ensureFreshGithubToken(e){try{await this.options.ensureFreshGithubToken?.(e)}catch(e){cp.warn(`GitHub token freshness check failed; continuing with existing auth`,{error:e instanceof Error?e.message:String(e)})}}async setGithubToken(e){let t=e.trim(),n=await this.getGlobalFs();if(!t){try{await n.rm(`/workspace/.git/github-token`)}catch{}this.githubToken=void 0;return}await n.writeFile(`/workspace/.git/github-token`,t),this.githubToken=t}async resolveAuthor(e,t){let n=async n=>{try{return await un({fs:t,dir:e,path:n})}catch{return}},r=this.currentConfigOverrides,i=await this.getGlobalFs();return{name:r?.get(`user.name`)??await n(`user.name`)??await sr(i,`user.name`)??this.authorName,email:r?.get(`user.email`)??await n(`user.email`)??await sr(i,`user.email`)??this.authorEmail}}async execute(e,t,n,r,i){if(e.length===0)return this.help();let a=this.stripGlobalFlags(mc(e),t);if(a.versionRequested&&a.remainingArgs.length===0)return this.version();if(a.helpRequested||a.remainingArgs.length===0)return this.help();let o=a.effectiveCwd,[s,...c]=a.remainingArgs,l=L[s]??{},u=M(c,l),d=Object.hasOwn(l.alias??{},`h`);if(u.flags.help||u.flags.h&&!d)return this.help();this.currentEnv=n,this.currentConfigOverrides=a.configOverrides,this.currentStdin=r??``;let f=this.invocationColor(e,n,a.configOverrides,i),{ctx:p,client:m}=this.contextFor(s,f);try{return this.cacheManager.setDeepVerification(this.shouldVerifyPackfiles()),await this.cacheManager.beforeCommand(o),lp.has(s)&&await this.ensureFreshGithubToken(),await this.loadGithubToken(),await this.dispatch(s,p,o,c)}catch(e){return{stdout:``,stderr:`fatal: ${ic(e)}\n`,exitCode:128}}finally{await this.cacheManager.afterCommand(o,{wrotePacks:up.has(s)}),this.currentEnv=void 0,this.currentConfigOverrides=void 0,this.currentStdin=``,m.clearStatCache()}}async dispatch(e,t,n,r){switch(e){case`init`:return await vu(t,n,r);case`clone`:return await Jc(t,n,r);case`add`:return await Ws(t,n,r);case`status`:return await gf(t,n,r);case`commit`:return await dl(t,n,r);case`log`:return await Eu(t,n,r);case`ls-remote`:return await Yu(t,n,r);case`branch`:return await yc(t,n,r);case`checkout`:return await bc(t,n,r);case`clean`:return await zc(t,n,r);case`diff`:return await Jl(t,n,r);case`show`:return await Kd(t,n,r);case`remote`:return await Md(t,n,r);case`fetch`:return await gu(t,n,r);case`pull`:return await ud(t,n,r);case`push`:return await dd(t,n,r);case`merge`:return await id(t,n,r);case`merge-base`:return await sd(t,n,r);case`cherry-pick`:return await Lc(t,n,r);case`rebase`:return await md(t,n,r);case`revert`:return await Bd(t,n,r);case`merge-file`:return await ld(t,n,r);case`reset`:return await Nd(t,n,r);case`config`:return await wl(t,n,r);case`tag`:return await Pf(t,n,r);case`ls-files`:return await Ku(t,n,r);case`ls-tree`:return await Zu(t,n,r);case`show-ref`:return await Yd(t,n,r);case`symbolic-ref`:return await Nf(t,n,r);case`stash`:return await ef(t,n,r);case`rm`:return await Wd(t,n,r);case`mv`:{let{mv:e}=await import(`./mv-ohCkaQgo.js`);return await e(t,n,r)}case`rev-parse`:return await zd(t,n,r);case`help`:return this.help();case`version`:return this.version();default:return{stdout:``,stderr:`git: '${e}' is not a git command. See 'git help'.\n`,exitCode:127}}}invocationColor(e,t,n,r){return _c({cliWhen:pc(e),colorUi:n?.get(`color.ui`),noColorEnv:!!(t&&mp(t,`NO_COLOR`)),stdoutIsTTY:r?.stdoutIsTTY===!0,term:t?mp(t,`TERM`):void 0})}shouldVerifyPackfiles(){let e=this.currentEnv,t=e?mp(e,`SLICC_GIT_VERIFY_PACKS`):void 0;return t===void 0?this.options.verifyPackfiles===!0:t!==`0`&&t.toLowerCase()!==`false`}stripGlobalFlags(e,t){let n=M(e,fp),r=t;for(let e of pp(n.flags.C))e!==``&&(r=e.startsWith(`/`)?e:`${r}/${e}`);let i=new Map;for(let e of pp(n.flags.c)){if(e===``)continue;let t=e.indexOf(`=`);if(t<0){i.set(e.toLowerCase(),``);continue}i.set(e.slice(0,t).toLowerCase(),e.slice(t+1))}return{effectiveCwd:r,remainingArgs:n.positionals,helpRequested:!!(n.flags.help||n.flags.h),versionRequested:!!n.flags.version,configOverrides:i}}version(){return{stdout:`git version 2.43.0 (isomorphic-git ${mn()})\n`,stderr:``,exitCode:0}}help(){return{stdout:`usage: git <command> [<args>]
116
+ or: git symbolic-ref (-d | --delete) <name>`;function Tf(e){let t=Array.isArray(e)?e[e.length-1]:e;return typeof t==`boolean`?t:void 0}function Ef(e){let t={};typeof e.m==`string`&&(t.m=e.m);let n=Tf(e.delete);n!==void 0&&(t.delete=n);let r=Tf(e.d);r!==void 0&&(t.d=r);let i=Tf(e.quiet);i!==void 0&&(t.quiet=i);let a=Tf(e.q);a!==void 0&&(t.q=a);let o=Tf(e.short);o!==void 0&&(t.short=o);let s=Tf(e.recurse);return s!==void 0&&(t.recurse=s),t}function Df(){return{stdout:``,stderr:`${wf}\n`,exitCode:129}}function Of(e){return!e.startsWith(`refs/`)||e.length===5||e.includes(`..`)||e.includes(`@{`)||e.split(`/`).some(e=>!e||e.startsWith(`.`)||e.endsWith(`.`)||e.endsWith(`.lock`))?!1:![...e].some(e=>{let t=e.charCodeAt(0);return t<=32||t===127||`~^:?*[\\`.includes(e)})}async function kf(e,t,n){try{let r=await D({fs:e.lfs,dir:t,ref:n,depth:2});return r.startsWith(`refs/`)?{kind:`symbolic`,target:r}:{kind:`direct`}}catch{return{kind:`missing`}}}async function Af(e,t,n,r){let i=await kf(e,t,n);if(i.kind!==`symbolic`)return{stdout:``,stderr:`fatal: ref ${n} is not a symbolic ref\n`,exitCode:i.kind===`direct`?1:128};if(!r)return i.target;let a=new Set([n]),o=i.target;for(;;){if(a.has(o))return{stdout:``,stderr:`fatal: ref ${n} has a circular symbolic target\n`,exitCode:128};a.add(o);let r=await kf(e,t,o);if(r.kind!==`symbolic`)return o;o=r.target}}function jf(e){for(let t of[`refs/heads/`,`refs/tags/`,`refs/remotes/`])if(e.startsWith(t))return e.slice(t.length);return e.startsWith(`refs/`)?e.slice(5):e}function Mf(e,t){let n=new Set([`m`,`delete`,`d`,`quiet`,`q`,`short`,`recurse`]),r=Object.keys(e).find(e=>!n.has(e));if(r)return{stdout:``,stderr:`error: unknown option '${r}'\n${wf}\n`,exitCode:129};if(e.m!==void 0)return{stdout:``,stderr:`fatal: option '-m' is not supported because reflogs are not persisted
117
+ `,exitCode:128};if(e.delete===!1||t&&(e.short!==void 0||e.recurse!==void 0))return Df()}async function Nf(e,t,n,r){if(n===`HEAD`)return{stdout:``,stderr:`fatal: deleting 'HEAD' is not allowed
118
+ `,exitCode:128};let i=await kf(e,t,n);return i.kind===`symbolic`?(await Cn({fs:e.lfs,dir:t,ref:n}),{stdout:``,stderr:``,exitCode:0}):{stdout:``,stderr:r?``:`fatal: Cannot delete ${n}, not a symbolic ref\n`,exitCode:i.kind===`direct`?1:128}}async function Pf(e,t,n,r){return Of(r)?(await tn({fs:e.lfs,dir:t,ref:n,value:r,force:!0,symbolic:!0}),{stdout:``,stderr:``,exitCode:0}):{stdout:``,stderr:r.startsWith(`refs/`)?`fatal: Refusing to set '${n}' to invalid ref '${r}'\n`:`fatal: Refusing to point ${n} outside of refs/\n`,exitCode:128}}async function Ff(e,t,n,r){let i=await Af(e,t,n,r.recurse!==!1);return typeof i==`string`?{stdout:`${r.short?jf(i):i}\n`,stderr:``,exitCode:0}:r.quiet&&i.exitCode===1?{...i,stderr:``}:i}async function If(e,t,n){let{flags:r,positionals:i}=M(n,L[`symbolic-ref`]),a=r.delete===!0,o=Mf(r,a);if(o)return o;let s=r.quiet!==void 0||r.short!==void 0||r.recurse!==void 0;return a?i.length===1?Nf(e,t,i[0],!!r.quiet):Df():i.length===2?s?Df():Pf(e,t,i[0],i[1]):i.length===1?Ff(e,t,i[0],Ef(r)):Df()}async function Lf(e,t,n){let{flags:r,positionals:i}=M(n,L.tag),a=r,o=a.delete===!0,s=R(a,`list`),c=a.annotate===!0,l=R(a,`message`),u=a.force===!0;if(o){let n=i[0];return n?(await gn({fs:e.lfs,dir:t,ref:n}),{stdout:`Deleted tag '${n}'\n`,stderr:``,exitCode:0}):{stdout:``,stderr:`fatal: tag name required
119
+ `,exitCode:128}}if(s!==void 0||i.length===0){let n=await Xt({fs:e.lfs,dir:t}),r=n,i=s||void 0;if(i){let e=RegExp(`^`+i.replace(/\*/g,`.*`)+`$`);r=n.filter(t=>e.test(t))}return{stdout:r.map(e=>`${e}\n`).join(``),stderr:``,exitCode:0}}let d=i[0],f=i[1];if(c||l){let n=await e.resolveAuthor(t);await Nn({fs:e.lfs,cache:e.cache,dir:t,ref:d,message:l??d,object:f,tagger:{...n,timestamp:Math.floor(Date.now()/1e3),timezoneOffset:0},force:u})}else await fn({fs:e.lfs,dir:t,ref:d,object:f,force:u});return{stdout:``,stderr:``,exitCode:0}}function Rf(e,t){let n=e===`dir`?16877:e===`symlink`?40960:33188;if(t===void 0)return n;let r=t&4095;return n&61440|r}function zf(e,t){let n=t.mtimeMs??0;return{type:e,mode:Rf(e,t.mode),size:t.size??0,ino:t.ino??0,mtimeMs:n,ctimeMs:t.ctimeMs??n,uid:t.uid??1,gid:t.gid??1,dev:1,isFile:()=>e===`file`,isDirectory:()=>e===`dir`,isSymbolicLink:()=>e===`symlink`}}function Bf(e){return{size:e.size,mtimeMs:e.mtime,ctimeMs:e.ctime,...e.ino===void 0?{}:{ino:e.ino},...e.uid===void 0?{}:{uid:e.uid},...e.gid===void 0?{}:{gid:e.gid},...e.mode===void 0?{}:{mode:e.mode}}}function Vf(e){if(typeof e==`string`)return/^utf-?8$/i.test(e);if(e&&typeof e==`object`){let t=e.encoding;if(typeof t==`string`)return/^utf-?8$/i.test(t)}return!1}function Hf(e){if(!e||typeof e!=`object`)return null;let{start:t,end:n}=e;return typeof t!=`number`||typeof n!=`number`?null:{start:t,end:n}}const Uf=`/objects/pack`,Wf=/^(.*\/objects)\/([0-9a-f]{2})\/[0-9a-f]{38,}$/,Gf=/\/objects\/[0-9a-f]{2}$/;function Kf(e){return e.endsWith(Uf)||Gf.test(e)}function qf(e){let t=Xe(e);return e.type===`directory`?t?{type:`dir`,stats:t}:{type:`dir`}:t?{type:`file`,stats:t}:void 0}function Jf(e){let t=new Map;return{prime(n,r){if(r.length>e){t.clear();return}t.size+r.length>e&&t.clear();let i=x(n),a=i===`/`?`/`:`${i}/`;for(let e of r){let n=qf(e);n?t.set(`${a}${e.name}`,n):t.delete(`${a}${e.name}`)}},get(e){let n=t.get(x(e));if(n)return zf(n.type,n.stats?Bf(n.stats):{})},drop(e){t.delete(x(e))},clear(){t.clear()},size(){return t.size}}}function Yf(e,t={}){let n=t.objectCache?{packDirs:new Map,fanouts:new Map}:void 0,r=Jf(Math.max(0,t.statCacheMax??1e5)),i=async t=>{let n=await e.readDir(t,Kf(t)?void 0:{includeStats:!0});return r.prime(t,n),n.map(e=>e.name)},a=(e,t)=>{let n=e.fanouts.get(t);if(n!=null)return n;let r=i(t).then(e=>new Set(e));return e.fanouts.set(t,r),r},o=async e=>{if(!n)return!1;let t=Wf.exec(e);if(!t)return!1;try{return!(await a(n,t[1])).has(t[2])}catch{return!1}},s=()=>{n?.packDirs.clear(),n?.fanouts.clear()},c=async(e,t)=>(r.drop(e),await l(t)),l=async e=>{s();try{return await e()}finally{s()}};return{promises:{async readFile(t,n){if(await o(t))throw new Ze(`ENOENT`,`no such file or directory`,t);let r=Hf(n);return r?await e.readFileRange(t,r.start,r.end):await e.readFile(t,Vf(n)?{encoding:`utf-8`}:{encoding:`binary`})},async writeFile(t,n,r){await c(t,()=>e.writeFile(t,n))},async unlink(t){await c(t,()=>e.rm(t))},async readdir(e){if(!n||!e.endsWith(Uf))return await i(e);let t=n.packDirs.get(e);if(t!=null)return[...await t];let r=i(e);return n.packDirs.set(e,r),[...await r]},async mkdir(t,n){let r=n??void 0;await c(t,()=>e.mkdir(t,r?.recursive===void 0?void 0:{recursive:r.recursive}))},async rmdir(t){r.clear(),await l(()=>e.rm(t))},async stat(t){let n=r.get(t);if(n)return n;let i=await e.stat(t);return zf(i.type===`directory`?`dir`:`file`,Bf(i))},async lstat(t){let n=r.get(t);if(n)return n;let i=await e.lstat(t);return zf(i.type===`directory`?`dir`:i.type===`symlink`?`symlink`:`file`,Bf(i))},async readlink(t){if(e.isPathUnderMount(t))throw new Ze(`EINVAL`,`symlinks not supported on mounted filesystems`,t);return e.readlink(t)},async symlink(t,n){if(e.isPathUnderMount(n))throw new Ze(`EINVAL`,`symlinks not supported on mounted filesystems`,n);await c(n,()=>e.symlink(t,n))}},clearStatCache(){r.clear()},statCacheSize(){return r.size()}}}const Xf={maxEntries:5e4,maxFileBytes:1048576,maxTotalBytes:8388608},Zf=new Set([`ENOENT`,`ENOTDIR`,`EISDIR`]);function Qf(e){return e.endsWith(`.pack`)||e.endsWith(`.idx`)}function $f(e){let t=e.replace(/\/{2,}/g,`/`);return t.length>1&&t.endsWith(`/`)?t.slice(0,-1):t}function ep(e){let t=e.lastIndexOf(`/`);return t<0?`.`:t===0?`/`:e.slice(0,t)}function tp(e){let t=e?.code;return typeof t==`string`?t:void 0}function np(e){return typeof e==`string`?e.length*2:e.byteLength}function rp(e,t){return`${t?`u`:`b`} ${e}`}var ip=class{limits;stats=new Map;lstats=new Map;dirs=new Map;files=new Map;fileBytes=new Map;retainedBytes=0;constructor(e){this.limits=e}hasRoom(){return this.stats.size+this.lstats.size+this.dirs.size+this.files.size<this.limits.maxEntries}retainFile(e,t){let n=np(t);return n>this.limits.maxFileBytes||this.retainedBytes+n>this.limits.maxTotalBytes?!1:(this.fileBytes.set(e,n),this.retainedBytes+=n,!0)}dropFile(e){let t=this.fileBytes.get(e);t!==void 0&&(this.fileBytes.delete(e),this.retainedBytes-=t)}forgetSelf(e){this.stats.delete(e),this.lstats.delete(e),this.dirs.delete(e);for(let t of[rp(e,!0),rp(e,!1)])this.files.delete(t),this.dropFile(t)}invalidatePath(e){let t=$f(e);this.forgetSelf(t);let n=ep(t);this.dirs.delete(n),this.stats.delete(n),this.lstats.delete(n)}invalidateSubtree(e){let t=$f(e),n=`${t}/`;for(let e of[this.stats,this.lstats,this.dirs])for(let t of e.keys())t.startsWith(n)&&e.delete(t);for(let e of this.files.keys())e.slice(2).startsWith(n)&&(this.files.delete(e),this.dropFile(e));this.invalidatePath(t)}};function ap(e,t,n,r){let i=e.get(t);if(i!=null)return i;let a=n();if(!r.admit())return a;e.set(t,a);let o=()=>{e.get(t)===a&&e.delete(t)};return a.then(e=>{r.keep&&!r.keep(e)&&o()},e=>{Zf.has(tp(e)??``)||o()}),a}function op(e,t={}){let n=new ip({...Xf,...t}),r=()=>n.hasRoom(),i=async t=>(await ap(n.dirs,$f(t),()=>e.readdir(t),{admit:r})).slice(),a=async(t,i)=>{if(Qf(t))return e.readFile(t,i);let a=rp($f(t),Vf(i)),o=await ap(n.files,a,()=>e.readFile(t,i),{admit:r,keep:e=>n.retainFile(a,e)});return typeof o==`string`?o:new Uint8Array(o)},o=(e,t)=>n=>ap(e,$f(n),()=>t(n),{admit:r}),s=async(e,t,r=!1)=>{try{return await t()}finally{r?n.invalidateSubtree(e):n.invalidatePath(e)}};return{readFile:a,readdir:i,stat:o(n.stats,t=>e.stat(t)),lstat:o(n.lstats,t=>e.lstat(t)),readlink:t=>e.readlink(t),writeFile:(t,n,r)=>s(t,()=>e.writeFile(t,n,r)),unlink:t=>s(t,()=>e.unlink(t),!0),rmdir:t=>s(t,()=>e.rmdir(t),!0),mkdir:(t,n)=>s(t,()=>e.mkdir(t,n)),symlink:(t,n)=>s(n,()=>e.symlink(t,n))}}const sp=e(`git-cache`);function cp(e){for(let t of Object.getOwnPropertySymbols(e)){if(t.description!==`PackfileCache`)continue;let n=e[t];if(n instanceof Map)return n}}function lp(e){return`${e.replace(/\/+$/,``)}/.git`}var up=class{fs;cache={};signatures=new Map;inFlight=0;maxResidentPacks;constructor(e,t={}){this.fs=e,this.maxResidentPacks=Math.max(1,t.maxResidentPacks??4)}setDeepVerification(e){this.cache.skipDeepPackVerification=!e}async beforeCommand(e){this.inFlight++;let t=lp(e),n=this.signatures.get(t);if(n===void 0)return;let r=await this.packSignature(t);n!==r&&this.invalidate(e),this.signatures.set(t,r)}async afterCommand(e,t={}){this.inFlight=Math.max(0,this.inFlight-1);let n=lp(e);t.wrotePacks&&(this.invalidate(e),this.signatures.delete(n)),this.inFlight===0&&(await this.evictFailedPacks(),await this.trimResidentPacks()),!this.signatures.has(n)&&this.hasCachedPacks(n)&&this.signatures.set(n,await this.packSignature(n))}async evictFailedPacks(){let e=cp(this.cache);if(e)for(let[t,n]of[...e]){let r;try{r=await n}catch{e.delete(t);continue}if(!r){e.delete(t);continue}if(r.pack)try{await r.pack||(r.pack=null)}catch{r.pack=null}}}hasCachedPacks(e){let t=cp(this.cache);if(!t)return!1;let n=`${e}/objects/pack/`;for(let e of t.keys())if(e.startsWith(n))return!0;return!1}invalidate(e){let t=`${lp(e)}/objects/pack/`,n=cp(this.cache);if(n)for(let e of[...n.keys()])e.startsWith(t)&&n.delete(e)}async residentPackCount(){return(await this.residentPacks()).length}async packSignature(e){let t=[];try{t=(await this.fs.readdir(`${e}/objects/pack`)).filter(e=>e.endsWith(`.idx`)||e.endsWith(`.pack`)).sort()}catch{}let n=`-`;try{n=String((await this.fs.lstat(`${e}/packed-refs`)).mtimeMs)}catch{}return`${t.join(`,`)}|${n}`}async residentPacks(){let e=cp(this.cache);if(!e)return[];let t=[];for(let[n,r]of e){let e;try{e=await r}catch{continue}e?.pack&&t.push({key:n,index:e,usedAt:e._lastUsedAt??0})}return t.sort((e,t)=>e.usedAt-t.usedAt),t.map(({key:e,index:t})=>({key:e,index:t}))}async trimResidentPacks(){let e=await this.residentPacks();if(e.length<=this.maxResidentPacks)return;let t=e.slice(0,e.length-this.maxResidentPacks);for(let{index:e}of t)e.pack=null;sp.debug(`unloaded packfile buffers past the resident bound`,{unloaded:t.length,resident:this.maxResidentPacks})}};const dp=e(`git-commands`),fp=new Set([`clone`,`fetch`,`pull`,`push`,`ls-remote`]),pp=new Set([`clone`,`fetch`,`pull`]),mp=new Set([`add`,`branch`,`commit`,`diff`,`init`,`log`,`ls-files`,`ls-tree`,`merge-base`,`rev-parse`,`show`,`show-ref`,`status`,`symbolic-ref`,`tag`]),hp={string:[`c`,`C`,`git-dir`,`work-tree`],boolean:[`help`,`version`,`no-pager`,`paginate`,`no-replace-objects`,`color`],alias:{h:`help`},stopEarly:!0};function gp(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function _p(e,t){if(e instanceof Map){let n=e.get(t);return n&&n.length>0?n:void 0}let n=e[t];return n&&n.length>0?n:void 0}var vp=class e{options;static globalFsByDbName=new Map;lfs;corsProxy;authorName;authorEmail;globalDbName;githubToken;currentEnv;currentConfigOverrides;currentStdin=``;cacheManager;constructor(e){this.options=e,this.lfs=Yf(e.fs,{statCacheMax:0}).promises,this.corsProxy=e.corsProxy,this.authorName=e.authorName??`User`,this.authorEmail=e.authorEmail??`user@example.com`,this.globalDbName=e.globalDbName??`slicc-fs-global`,this.cacheManager=new up(this.lfs,{...e.maxResidentPacks===void 0?{}:{maxResidentPacks:e.maxResidentPacks}})}contextFor(e,t){let n=Yf(this.options.fs,{objectCache:!0}),r=mp.has(e)?op(n.promises):n.promises,i=this.createOnAuthFailure();return{ctx:{lfs:r,fs:this.options.fs,cache:this.cacheManager.cache,corsProxy:this.corsProxy,getOnAuth:()=>this.getOnAuth(),getOnAuthFailure:()=>i,resolveAuthor:e=>this.resolveAuthor(e,r),getGlobalFs:()=>this.getGlobalFs(),setGithubToken:e=>this.setGithubToken(e),getGithubToken:()=>this.githubToken,setDefaultAuthorName:e=>{this.authorName=e},setDefaultAuthorEmail:e=>{this.authorEmail=e},getConfigOverrides:()=>this.currentConfigOverrides,stdin:this.currentStdin,useColor:t},client:n}}getOnAuth(){let e=this.resolveAuthToken();if(e)return()=>({username:`x-access-token`,password:e})}createOnAuthFailure(){if(!this.options.ensureFreshGithubToken)return;let e=!1;return async()=>{if(e)return;e=!0;try{await this.options.ensureFreshGithubToken?.({force:!0})}catch(e){dp.warn(`GitHub token force-renew after 401 failed`,{error:e instanceof Error?e.message:String(e)});return}await this.loadGithubToken();let t=this.resolveAuthToken();if(t)return{username:`x-access-token`,password:t}}}resolveAuthToken(e=this.currentEnv){if(this.githubToken)return this.githubToken;if(!e)return;let t=_p(e,`GH_TOKEN`);if(t)return t;let n=_p(e,`GITHUB_TOKEN`);if(n)return n}async githubCredential(e,t){return await this.ensureFreshGithubToken(t),await this.loadGithubToken(),this.resolveAuthToken(e)}async identity(){let e=await this.getGlobalFs();return{name:await sr(e,`user.name`)??this.authorName,email:await sr(e,`user.email`)??this.authorEmail}}getGlobalFs(){let t=e.globalFsByDbName.get(this.globalDbName);if(t!=null)return t;let n=st.create({dbName:this.globalDbName});return e.globalFsByDbName.set(this.globalDbName,n),n}async loadGithubToken(){try{let e=(await(await this.getGlobalFs()).readTextFile(`/workspace/.git/github-token`)).trim();this.githubToken=e||void 0}catch{this.githubToken=void 0}}async ensureFreshGithubToken(e){try{await this.options.ensureFreshGithubToken?.(e)}catch(e){dp.warn(`GitHub token freshness check failed; continuing with existing auth`,{error:e instanceof Error?e.message:String(e)})}}async setGithubToken(e){let t=e.trim(),n=await this.getGlobalFs();if(!t){try{await n.rm(`/workspace/.git/github-token`)}catch{}this.githubToken=void 0;return}await n.writeFile(`/workspace/.git/github-token`,t),this.githubToken=t}async resolveAuthor(e,t){let n=async n=>{try{return await un({fs:t,dir:e,path:n})}catch{return}},r=this.currentConfigOverrides,i=await this.getGlobalFs();return{name:r?.get(`user.name`)??await n(`user.name`)??await sr(i,`user.name`)??this.authorName,email:r?.get(`user.email`)??await n(`user.email`)??await sr(i,`user.email`)??this.authorEmail}}async execute(e,t,n,r,i){if(e.length===0)return this.help();let a=this.stripGlobalFlags(_c(e),t);if(a.versionRequested&&a.remainingArgs.length===0)return this.version();if(a.helpRequested||a.remainingArgs.length===0)return this.help();let o=a.effectiveCwd,[s,...c]=a.remainingArgs,l=L[s]??{},u=M(c,l),d=Object.hasOwn(l.alias??{},`h`);if(u.flags.help||u.flags.h&&!d)return this.help();this.currentEnv=n,this.currentConfigOverrides=a.configOverrides,this.currentStdin=r??``;let f=this.invocationColor(e,n,a.configOverrides,i),{ctx:p,client:m}=this.contextFor(s,f);try{return this.cacheManager.setDeepVerification(this.shouldVerifyPackfiles()),await this.cacheManager.beforeCommand(o),fp.has(s)&&await this.ensureFreshGithubToken(),await this.loadGithubToken(),await this.dispatch(s,p,o,c)}catch(e){return{stdout:``,stderr:`fatal: ${sc(e)}\n`,exitCode:128}}finally{await this.cacheManager.afterCommand(o,{wrotePacks:pp.has(s)}),this.currentEnv=void 0,this.currentConfigOverrides=void 0,this.currentStdin=``,m.clearStatCache()}}async dispatch(e,t,n,r){switch(e){case`init`:return await xu(t,n,r);case`clone`:return await Zc(t,n,r);case`add`:return await qs(t,n,r);case`status`:return await yf(t,n,r);case`commit`:return await ml(t,n,r);case`log`:return await ku(t,n,r);case`ls-remote`:return await Qu(t,n,r);case`branch`:return await Sc(t,n,r);case`checkout`:return await Cc(t,n,r);case`clean`:return await Hc(t,n,r);case`diff`:return await Zl(t,n,r);case`show`:return await Yd(t,n,r);case`remote`:return await Fd(t,n,r);case`fetch`:return await yu(t,n,r);case`pull`:return await pd(t,n,r);case`push`:return await md(t,n,r);case`merge`:return await sd(t,n,r);case`merge-base`:return await ud(t,n,r);case`cherry-pick`:return await Bc(t,n,r);case`rebase`:return await _d(t,n,r);case`revert`:return await Ud(t,n,r);case`merge-file`:return await fd(t,n,r);case`reset`:return await Id(t,n,r);case`config`:return await Dl(t,n,r);case`tag`:return await Lf(t,n,r);case`ls-files`:return await Yu(t,n,r);case`ls-tree`:return await ed(t,n,r);case`show-ref`:return await Qd(t,n,r);case`symbolic-ref`:return await If(t,n,r);case`stash`:return await rf(t,n,r);case`rm`:return await qd(t,n,r);case`mv`:{let{mv:e}=await import(`./mv-ohCkaQgo.js`);return await e(t,n,r)}case`rev-parse`:return await Hd(t,n,r);case`help`:return this.help();case`version`:return this.version();default:return{stdout:``,stderr:`git: '${e}' is not a git command. See 'git help'.\n`,exitCode:127}}}invocationColor(e,t,n,r){return bc({cliWhen:gc(e),colorUi:n?.get(`color.ui`),noColorEnv:!!(t&&_p(t,`NO_COLOR`)),stdoutIsTTY:r?.stdoutIsTTY===!0,term:t?_p(t,`TERM`):void 0})}shouldVerifyPackfiles(){let e=this.currentEnv,t=e?_p(e,`SLICC_GIT_VERIFY_PACKS`):void 0;return t===void 0?this.options.verifyPackfiles===!0:t!==`0`&&t.toLowerCase()!==`false`}stripGlobalFlags(e,t){let n=M(e,hp),r=t;for(let e of gp(n.flags.C))e!==``&&(r=e.startsWith(`/`)?e:`${r}/${e}`);let i=new Map;for(let e of gp(n.flags.c)){if(e===``)continue;let t=e.indexOf(`=`);if(t<0){i.set(e.toLowerCase(),``);continue}i.set(e.slice(0,t).toLowerCase(),e.slice(t+1))}return{effectiveCwd:r,remainingArgs:n.positionals,helpRequested:!!(n.flags.help||n.flags.h),versionRequested:!!n.flags.version,configOverrides:i}}version(){return{stdout:`git version 2.43.0 (isomorphic-git ${mn()})\n`,stderr:``,exitCode:0}}help(){return{stdout:`usage: git <command> [<args>]
120
120
 
121
121
  Available commands:
122
122
  init Initialize a new repository
@@ -151,8 +151,8 @@ Available commands:
151
151
  config Get and set repository options
152
152
  rev-parse Pick out and massage parameters
153
153
 
154
- `,stderr:``,exitCode:0}}};function gp(e){return new Promise((t,n)=>{chrome.runtime.sendMessage(e,e=>{let r=chrome.runtime.lastError;if(r){n(Error(r.message??`chrome.runtime.lastError`));return}t(e)})})}const _p=1e4;async function vp(e,t,n){let r={method:e,headers:Ne({"Content-Type":`application/json`}),signal:AbortSignal.timeout(_p)};n&&(r.body=JSON.stringify(n));try{let e=await fetch(Me(`/api/secrets${t}`),r),n=await e.json().catch(()=>({}));return{ok:e.ok,status:e.status,data:n}}catch(e){return{ok:!1,status:0,data:{error:yp(e)}}}}function yp(e){let t=e instanceof Error?e.name:``;return t===`TimeoutError`||t===`AbortError`?`no response from the secret store within ${_p/1e3}s`:`secret store unreachable: ${e instanceof Error?e.message:String(e)}`}function bp(e,t){return`could not read ${e} secrets — ${t??`the bridge gave no reason`}`}function xp(e,t){let n=e.entries.find(e=>e.name===t)??null;if(n)return n;if(e.warnings.length>0)throw Error(e.warnings.join(`; `));return null}function Sp(){return{async list(){let[e,t]=await Promise.all([vp(`GET`,``),vp(`GET`,`/session`)]),n=[],r=[];if(e.ok)for(let t of e.data)n.push({name:t.name,domains:t.domains,persisted:!0});else r.push(bp(`saved`,Ep(e.data)));if(t.ok)for(let e of t.data)n.push({name:e.name,domains:e.domains,persisted:!1});else r.push(bp(`session`,Ep(t.data)));return{entries:n,warnings:r}},async getInfo(e){return xp(await this.list(),e)},async getMasked(e){let{ok:t,data:n}=await vp(`GET`,`/masked`);return t?n.find(t=>t.name===e)??null:null},async peek(e){let{ok:t,data:n}=await vp(`GET`,`/peek?name=${encodeURIComponent(e)}`);return t?n:null},async setSession(e,t,n){let{ok:r,data:i}=await vp(`POST`,`/session`,{name:e,value:t,domains:n});if(!r)throw Error(Ep(i)??`failed to set session secret`)},async setPersisted(e,t,n){let{ok:r,data:i}=await vp(`POST`,``,{name:e,value:t,domains:n});if(!r)throw Error(Ep(i)??`failed to persist secret`)},async setScope(e,t){let{ok:n,data:r}=await vp(`POST`,`/scope`,{name:e,domains:t});if(!n)throw Error(Ep(r)??`failed to update scope`)},async delete(e){let{ok:t,status:n,data:r}=await vp(`DELETE`,`/${encodeURIComponent(e)}`);if(n===404)return{removed:!1};if(!t)throw Error(Ep(r)??`failed to delete secret`);return{removed:!0,fromSession:r&&typeof r==`object`&&`fromSession`in r?!!r.fromSession:void 0}}}}function Cp(e){let t=t=>e(t);return{async list(){let[e,n]=await Promise.all([t({type:`secrets.list`}),t({type:`secrets.session.list`})]),r=[],i=[];for(let t of e?.entries??[])r.push({name:t.name,domains:t.domains,persisted:!0});for(let e of n?.entries??[])r.push({name:e.name,domains:e.domains,persisted:!1});return e?.entries||i.push(bp(`saved`,e?.error)),n?.entries||i.push(bp(`session`,n?.error)),{entries:r,warnings:i}},async getInfo(e){return xp(await this.list(),e)},async getMasked(e){return((await t({type:`secrets.list-masked-entries`}))?.entries??[]).find(t=>t.name===e)??null},async peek(e){let n=await t({type:`secrets.peek`,name:e});if(n?.error)throw Error(n.error);return n?.record??null},async setSession(e,n,r){let i=await t({type:`secrets.session.set`,name:e,value:n,domains:r});if(!i?.ok)throw Error(i?.error??`secrets.session.set failed`)},async setPersisted(e,n,r){let i=await t({type:`secrets.set`,name:e,value:n,domains:r});if(!i?.ok)throw Error(i?.error??`secrets.set failed`)},async setScope(e,n){let r=await t({type:`secrets.set-domains`,name:e,domains:n});if(!r?.ok)throw Error(r?.error??`secrets.set-domains failed`)},async delete(e){let n=await t({type:`secrets.delete`,name:e});if(!n?.ok)throw Error(n?.error??`secrets.delete failed`);return{removed:n.removed??!0,fromSession:n.fromSession}}}}function wp(){return Cp(e=>gp(e))}function Tp(){return Cp(e=>{let{type:t,...n}=e;return Be(t,n)})}function Ep(e){if(e&&typeof e==`object`&&`error`in e){let t=e.error;if(typeof t==`string`)return t}}function Dp(e){switch(e){case`extension-direct`:return wp();case`extension-delegate`:return Tp();default:return Sp()}}const Op=`git-credential-slicc`,kp=new Map([[Op,`git`],[`git-upload-pack`,`git`],[`git-receive-pack`,`git`],[`git-upload-archive`,`git`],[`git-remote-http`,`git`],[`git-remote-https`,`git`]]),Ap=[`github.com`,`*.github.com`],jp=/(_TOKEN|_PAT)$/;function Mp(e){let t=new Map;for(let n of e.split(`
155
- `)){let e=n.indexOf(`=`);e>0&&t.set(n.slice(0,e),n.slice(e+1).replace(/\r$/,``))}return t}function Np(e){let t=e.get(`host`)??``;try{return new URL(`https://${t}`).hostname}catch{return``}}async function Pp(e,t,n,r){for(let r of t){let t=await n.getMasked(r).catch(()=>null);if(t&&t.maskedValue===e)return t.domains}return r}async function Fp(e,t,n){let r=await t.githubToken?.(e).catch(()=>void 0);if(!r)return;let i=t.githubDomains?.()??Ap;return{token:r,domains:r===e.GH_TOKEN||r===e.GITHUB_TOKEN?await Pp(r,[`GH_TOKEN`,`GITHUB_TOKEN`],n,Ap):i}}async function Ip(e,t){let{entries:n}=await t.list().catch(()=>({entries:[]})),r=n.filter(e=>jp.test(e.name)&&!e.domains.includes(`*`)).filter(t=>Fa(t.domains,e)).sort((t,n)=>Number(!t.domains.includes(e))-Number(!n.domains.includes(e))||t.name.localeCompare(n.name));for(let e of r){let n=await t.getMasked(e.name).catch(()=>null);if(n)return{token:n.maskedValue,domains:n.domains}}}async function Lp(e,t,n){let r=Np(e);if(e.get(`protocol`)!==`https`||!r)return{stdout:``,stderr:``,exitCode:0};let i=(n.backend??(()=>Dp(Re())))(),a=await Fp(t,n,i),o=a&&Fa(a.domains,r)?a:await Ip(r,i);return o?{stdout:`username=${e.get(`username`)||`x-access-token`}\npassword=${o.token}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:``,exitCode:0}}async function Rp(e,t,n){let r=e.get(`password`),i=await n.githubToken?.(t).catch(()=>void 0);return r&&i===r&&await n.githubToken?.(t,{force:!0}).catch(()=>void 0),{stdout:``,stderr:``,exitCode:0}}function zp(e={}){return C(Op,async(t,n)=>{let r=t[0];if(r===void 0||r===`-h`||r===`--help`)return{stdout:`usage: git-credential-slicc <get|store|erase>
154
+ `,stderr:``,exitCode:0}}};function yp(e){return new Promise((t,n)=>{chrome.runtime.sendMessage(e,e=>{let r=chrome.runtime.lastError;if(r){n(Error(r.message??`chrome.runtime.lastError`));return}t(e)})})}const bp=1e4;async function xp(e,t,n){let r={method:e,headers:Ne({"Content-Type":`application/json`}),signal:AbortSignal.timeout(bp)};n&&(r.body=JSON.stringify(n));try{let e=await fetch(Me(`/api/secrets${t}`),r),n=await e.json().catch(()=>({}));return{ok:e.ok,status:e.status,data:n}}catch(e){return{ok:!1,status:0,data:{error:Sp(e)}}}}function Sp(e){let t=e instanceof Error?e.name:``;return t===`TimeoutError`||t===`AbortError`?`no response from the secret store within ${bp/1e3}s`:`secret store unreachable: ${e instanceof Error?e.message:String(e)}`}function Cp(e,t){return`could not read ${e} secrets — ${t??`the bridge gave no reason`}`}function wp(e,t){let n=e.entries.find(e=>e.name===t)??null;if(n)return n;if(e.warnings.length>0)throw Error(e.warnings.join(`; `));return null}function Tp(){return{async list(){let[e,t]=await Promise.all([xp(`GET`,``),xp(`GET`,`/session`)]),n=[],r=[];if(e.ok)for(let t of e.data)n.push({name:t.name,domains:t.domains,persisted:!0});else r.push(Cp(`saved`,kp(e.data)));if(t.ok)for(let e of t.data)n.push({name:e.name,domains:e.domains,persisted:!1});else r.push(Cp(`session`,kp(t.data)));return{entries:n,warnings:r}},async getInfo(e){return wp(await this.list(),e)},async getMasked(e){let{ok:t,data:n}=await xp(`GET`,`/masked`);return t?n.find(t=>t.name===e)??null:null},async peek(e){let{ok:t,data:n}=await xp(`GET`,`/peek?name=${encodeURIComponent(e)}`);return t?n:null},async setSession(e,t,n){let{ok:r,data:i}=await xp(`POST`,`/session`,{name:e,value:t,domains:n});if(!r)throw Error(kp(i)??`failed to set session secret`)},async setPersisted(e,t,n){let{ok:r,data:i}=await xp(`POST`,``,{name:e,value:t,domains:n});if(!r)throw Error(kp(i)??`failed to persist secret`)},async setScope(e,t){let{ok:n,data:r}=await xp(`POST`,`/scope`,{name:e,domains:t});if(!n)throw Error(kp(r)??`failed to update scope`)},async delete(e){let{ok:t,status:n,data:r}=await xp(`DELETE`,`/${encodeURIComponent(e)}`);if(n===404)return{removed:!1};if(!t)throw Error(kp(r)??`failed to delete secret`);return{removed:!0,fromSession:r&&typeof r==`object`&&`fromSession`in r?!!r.fromSession:void 0}}}}function Ep(e){let t=t=>e(t);return{async list(){let[e,n]=await Promise.all([t({type:`secrets.list`}),t({type:`secrets.session.list`})]),r=[],i=[];for(let t of e?.entries??[])r.push({name:t.name,domains:t.domains,persisted:!0});for(let e of n?.entries??[])r.push({name:e.name,domains:e.domains,persisted:!1});return e?.entries||i.push(Cp(`saved`,e?.error)),n?.entries||i.push(Cp(`session`,n?.error)),{entries:r,warnings:i}},async getInfo(e){return wp(await this.list(),e)},async getMasked(e){return((await t({type:`secrets.list-masked-entries`}))?.entries??[]).find(t=>t.name===e)??null},async peek(e){let n=await t({type:`secrets.peek`,name:e});if(n?.error)throw Error(n.error);return n?.record??null},async setSession(e,n,r){let i=await t({type:`secrets.session.set`,name:e,value:n,domains:r});if(!i?.ok)throw Error(i?.error??`secrets.session.set failed`)},async setPersisted(e,n,r){let i=await t({type:`secrets.set`,name:e,value:n,domains:r});if(!i?.ok)throw Error(i?.error??`secrets.set failed`)},async setScope(e,n){let r=await t({type:`secrets.set-domains`,name:e,domains:n});if(!r?.ok)throw Error(r?.error??`secrets.set-domains failed`)},async delete(e){let n=await t({type:`secrets.delete`,name:e});if(!n?.ok)throw Error(n?.error??`secrets.delete failed`);return{removed:n.removed??!0,fromSession:n.fromSession}}}}function Dp(){return Ep(e=>yp(e))}function Op(){return Ep(e=>{let{type:t,...n}=e;return Be(t,n)})}function kp(e){if(e&&typeof e==`object`&&`error`in e){let t=e.error;if(typeof t==`string`)return t}}function Ap(e){switch(e){case`extension-direct`:return Dp();case`extension-delegate`:return Op();default:return Tp()}}const jp=`git-credential-slicc`,Mp=new Map([[jp,`git`],[`git-upload-pack`,`git`],[`git-receive-pack`,`git`],[`git-upload-archive`,`git`],[`git-remote-http`,`git`],[`git-remote-https`,`git`]]),Np=[`github.com`,`*.github.com`],Pp=/(_TOKEN|_PAT)$/;function Fp(e){let t=new Map;for(let n of e.split(`
155
+ `)){let e=n.indexOf(`=`);e>0&&t.set(n.slice(0,e),n.slice(e+1).replace(/\r$/,``))}return t}function Ip(e){let t=e.get(`host`)??``;try{return new URL(`https://${t}`).hostname}catch{return``}}async function Lp(e,t,n,r){for(let r of t){let t=await n.getMasked(r).catch(()=>null);if(t&&t.maskedValue===e)return t.domains}return r}async function Rp(e,t,n){let r=await t.githubToken?.(e).catch(()=>void 0);if(!r)return;let i=t.githubDomains?.()??Np;return{token:r,domains:r===e.GH_TOKEN||r===e.GITHUB_TOKEN?await Lp(r,[`GH_TOKEN`,`GITHUB_TOKEN`],n,Np):i}}async function zp(e,t){let{entries:n}=await t.list().catch(()=>({entries:[]})),r=n.filter(e=>Pp.test(e.name)&&!e.domains.includes(`*`)).filter(t=>Ra(t.domains,e)).sort((t,n)=>Number(!t.domains.includes(e))-Number(!n.domains.includes(e))||t.name.localeCompare(n.name));for(let e of r){let n=await t.getMasked(e.name).catch(()=>null);if(n)return{token:n.maskedValue,domains:n.domains}}}async function Bp(e,t,n){let r=Ip(e);if(e.get(`protocol`)!==`https`||!r)return{stdout:``,stderr:``,exitCode:0};let i=(n.backend??(()=>Ap(Re())))(),a=await Rp(t,n,i),o=a&&Ra(a.domains,r)?a:await zp(r,i);return o?{stdout:`username=${e.get(`username`)||`x-access-token`}\npassword=${o.token}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:``,exitCode:0}}async function Vp(e,t,n){let r=e.get(`password`),i=await n.githubToken?.(t).catch(()=>void 0);return r&&i===r&&await n.githubToken?.(t,{force:!0}).catch(()=>void 0),{stdout:``,stderr:``,exitCode:0}}function Hp(e={}){return C(jp,async(t,n)=>{let r=t[0];if(r===void 0||r===`-h`||r===`--help`)return{stdout:`usage: git-credential-slicc <get|store|erase>
156
156
 
157
157
  The git credential helper for native git in the wasm realm, configured by
158
158
  default (credential.helper=slicc). Reads git's key=value request on stdin.
@@ -163,9 +163,9 @@ default (credential.helper=slicc). Reads git's key=value request on stdin.
163
163
  a host outside the credential's domains, or for plain http.
164
164
  store Nothing to do: SLICC keeps its own credentials.
165
165
  erase Renews SLICC's GitHub token when it was the one rejected.
166
- `,stderr:``,exitCode:+(r===void 0)};let i=Object.fromEntries(n.env),a=Mp(P(n.stdin));return r===`get`?Lp(a,i,e):r===`erase`?Rp(a,i,e):{stdout:``,stderr:``,exitCode:0}})}async function Bp(e){let t=De(`github`);if(t){if(e?.force){await t.onSilentRenew?.();return}await t.getValidAccessToken?.()}}function Vp(){let e=De(`github`);if(!e)return Ap;let t=typeof localStorage>`u`?[]:l(localStorage).github;return[...e.oauthTokenDomains??Ap,...t??[]]}const Hp=new Map([[`jsh`,`node`]]);function Up(e,t){return`${Hp.get(e)??e} ${t.join(` `)}`.trim()}function Wp(e){return Ct(`sudo`,e)}async function Gp(e,t){let n=e.trim();if(!n||bt(vt(t.policy,n),t.defaultDisposition??`allow`)!==`require-approval`)return{allowed:!0};let r=await t.broker.requestApproval({kind:`command`,detail:n,...t.reason?{reason:t.reason}:{}});if(r.decision===`deny`)return{allowed:!1,message:Wp(r),exitCode:77};if(r.decision===`always`){let e=r.pattern?.trim()||n;await t.persistGrant(e)}return{allowed:!0}}const Kp=`__SLICC_SUDO_REASON`,qp=/^#!/;function Jp(e){let t=[];for(let n of e.split(`
167
- `)){let e=n.trim();if(e.length===0){if(t.length>0)break;continue}if(!e.startsWith(`#`))break;if(qp.test(e))continue;let r=e.replace(/^#+/,``).trim();r&&t.push(r)}return Wt(t.join(` `))}var Yp=class{options;pendingCommandGrants=[];pendingSudoBypasses=new Map;constructor(e){this.options=e}isTransparentGatingEnabled(){let e=this.options.getSudo();return!!e&&e.transparentGating!==!1}wrapCommandForSudo(e){if(!this.isTransparentGatingEnabled()||kp.has(e.name))return e;let t=(t,n)=>this.gateCommandDispatch(e.name,t,n);return{...e,async execute(n,r){return await t(n,r.env?.get(Kp))||e.execute(n,r)}}}async gateCommandDispatch(e,t,n){let r=this.options.getSudo();if(!r)return null;let i=Up(e,t);if(this.consumeSudoBypass(i))return null;let a=r.getPolicy();if(!a)return null;let o=await Gp(i,{policy:a,broker:r.broker,persistGrant:async e=>{this.queueGrant(e)},defaultDisposition:r.defaultDisposition,...n?{reason:n}:{}});return o.allowed?null:{stdout:``,stderr:`${o.message}\n`,exitCode:o.exitCode??77}}queueGrant(e){this.pendingCommandGrants.push(e)}registerSudoBypass(e){let t=e.trim();t&&this.pendingSudoBypasses.set(t,(this.pendingSudoBypasses.get(t)??0)+1)}consumeSudoBypass(e){let t=this.pendingSudoBypasses.get(e);return t?(t===1?this.pendingSudoBypasses.delete(e):this.pendingSudoBypasses.set(e,t-1),!0):!1}async flushPendingCommandGrants(){if(this.pendingCommandGrants.length===0)return;let e=this.pendingCommandGrants;this.pendingCommandGrants=[];for(let t of e)try{await this.persistCommandGrant(t)}catch{}}async persistCommandGrant(e){let t=this.options.getSudo()?.persistCommandGrant;if(t){await t(e);return}let n=yt(e);if(!n)return;let r=`${xt}/granted`,i=this.options.fs,a=``;try{await i.exists(r)&&(a=await i.readFile(r))}catch(e){if(!(e instanceof Ze&&e.code===`ENOENT`))throw e}let o=a&&!a.endsWith(`
168
- `)?`${a}\n`:a;await i.writeFile(r,`${o}NOPASSWD Cmnd ${n}\n`)}};const Xp={maxTraversalEntries:1e5,maxTraversalDepth:256,maxTraversalWork:1e5,maxGlobOperations:1e5,maxLiveBytes:67108864,maxInputBytes:33554432,maxArchiveBytes:134217728,maxArchiveCompressedBytes:67108864,maxArchiveEntryBytes:67108864,maxArchiveEntries:1e5};function Zp(e,t){return e?{...Xp,...t}:t}const Qp=new Set([`SHLVL`,`_`]);function $p(e){let t=e.split(`\0`);if(t.length<4)return null;let[n=``,r=``,i=``,...a]=t;if(!/^\d+$/.test(n)||!i.startsWith(`/`))return null;let o={};for(let e of a){let t=e.indexOf(`=`);t>0&&(o[e.slice(0,t)]=e.slice(t+1))}let s=r.trim()===``?[]:r.trim().split(/\s+/).map(Number);return{status:Number(n),pipeStatus:s,cwd:i,env:o}}function em(e,t=[]){let n=new Set([...Qp,...t]);return Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e)))}function tm(e,t){if(t!==`bytes`)return e;let n=new Uint8Array(e.length);for(let t=0;t<e.length;t++)n[t]=e.charCodeAt(t)&255;return new TextDecoder().decode(n)}async function nm(e,t){let n=[],r=fr(e=>n.push(e)),i=await t.run([`bash`,`-c`,`__slicc_save() { local __s=\$1 __p=\$2 __c __n; { printf "%s\\0%s\\0%s\\0" "\$__s" "\$__p" "\$PWD"; for __c in {A..Z} {a..z} _; do eval "__slicc_names=(\\"\\\${!\${__c}@}\\")"; for __n in "\${__slicc_names[@]}"; do [[ \${!__n@a} == *x* ]] && printf "%s=%s\\0" "\$__n" "\${!__n}"; done; done; } >&97 2>/dev/null; }; trap '__slicc_save "\$?" "\${PIPESTATUS[*]}"' EXIT; ${e}`],t.env,[[97,r]]),a=n.reduce((e,t)=>e+t.length,0),o=new Uint8Array(a),s=0;for(let e of n)o.set(e,s),s+=e.length;return{stdout:tm(i.stdout,i.stdoutKind),stderr:i.stderr,exitCode:i.exitCode,state:a>0?$p(new TextDecoder().decode(o)):null}}const rm=`__SLICC_RUN_PID`,im=`__SLICC_OUTPUT_TEE__`;function am(e){let t=e?.get(rm);if(t===void 0)return;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:void 0}var om=class{host;constructor(e){this.host=e}async usesGnuBash(){let e=this.host;return!e.gnuBash||e.lastEnv.SLICC_SHELL===`just-bash`||typeof SharedArrayBuffer!=`function`?!1:(await e.scriptCatalog.getWasmCommands()).has(`bash`)}async runOnGnuBash(e,t,n,r,i,a){let o=this.host,{runWasmCommand:s,withoutRealmDefaults:c}=await import(`./run-DiQn9-Xh.js`),l=Jp(e),u={...o.lastEnv,...n===void 0?{}:{[rm]:String(n)},...l?{[Kp]:l}:{}},d=i===void 0?void 0:o.outputTees.get(i),f=await nm(e,{env:u,run:(e,i,a)=>s(e,this.wasmContext(i,t,r),{processConfig:o.buildJshProcessConfig(n),gate:o.gateNativeCommand,onOutput:d,fds:a,commands:()=>o.scriptCatalog.getWasmCommands(),gitIdentity:()=>o.gitIdentity()})}),p=o.lastEnv.PATH;return f.state&&(o.adoptCwd(f.state.cwd),o.adoptEnv(em(c(f.state.env,u),[rm,Kp,im]))),o.lastEnv.PATH!==p&&await o.syncJshCommands().catch(()=>void 0),await o.flushPendingCommandGrants(),o.applyPendingEnvWrites(),{stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:{...o.lastEnv},...a&&f.state?{pipeStatus:f.state.pipeStatus}:{}}}wasmContext(e,t,n){let r=this.host;return{fs:r.vfsAdapter,cwd:r.cwd,env:new Map(Object.entries(e)),exportedEnv:e,stdin:n,signal:t,exec:(e,t)=>r.bash.exec(e,{...t,umask:r.umask})}}};const sm=`/home/user`;async function cm(e){try{let t=await e.readDir(`/home`),n=null,r=null;for(let i of t)if(i.type===`directory`){r??=i.name;try{let t=(await e.stat(`/home/${i.name}/.welcome.json`)).mtime??0;(!n||t>n.mtime)&&(n={name:i.name,mtime:t})}catch{}}let i=n?.name??r;return i?`/home/${i}`:sm}catch{return sm}}function lm(e){return e.replace(/\/+$/,``).split(`/`).pop()||`user`}function um(e){let t=[],n=``,r=0;for(;r<e.length;){let i=e[r];if(i===`"`){for(r++;r<e.length&&e[r]!==`"`;)n+=e[r],r++;r++}else if(i===`'`){for(r++;r<e.length&&e[r]!==`'`;)n+=e[r],r++;r++}else i===`\\`&&r+1<e.length&&e[r+1]===` `?(n+=` `,r+=2):/\s/.test(i)?(n.length>0&&(t.push(n),n=``),r++):(n+=i,r++)}return n.length>0&&t.push(n),t}const dm=e(`almost-bash-shell`);var fm=class{host;registeredJshCommands=new Map;registeredWorkflowCommands=new Set;registeredWasmCommands=new Set;jshSyncInflight=null;jshSyncDirty=!1;constructor(e){this.host=e}scriptRegisteredNames(){return[...this.registeredJshCommands.keys(),...this.registeredWorkflowCommands,...this.registeredWasmCommands]}scanRoots(){return br(this.host.path())}async getJshCommandNames(){return[...(await this.getFilteredJshCommands()).keys()]}async getWorkflowCommandNames(){return[...(await this.getFilteredWorkflowCommands()).keys()]}async syncJshCommands(){return this.jshSyncInflight===null?(this.jshSyncInflight=this.doSyncJshCommands(),this.jshSyncInflight):(this.jshSyncDirty=!0,this.jshSyncInflight)}async getFilteredJshCommands(){let e=await this.host.scriptCatalog.getJshCommands(this.scanRoots()),t=new Map;for(let[n,r]of e)this.host.builtinCommandNames.has(n)||this.host.isCommandAllowed(n)&&t.set(n,r);return t}async getFilteredWorkflowCommands(){let e=await this.host.scriptCatalog.getWorkflowCommands(),t=new Map;for(let[n,r]of e)this.host.isCommandAllowed(n)&&t.set(n,r);return t}async tryJshFallback(e,t){let n=e.trim(),r=n.indexOf(` `),i=r>=0?n.slice(0,r):n,a=r>=0?n.slice(r+1).trim():``,o=(await this.getFilteredJshCommands()).get(i);if(!o)return null;let s=a?um(a):[],c;try{let e=await this.host.discoveryFs.readFile(o,{encoding:`utf-8`});c=typeof e==`string`?e:new TextDecoder().decode(e)}catch{return{stdout:``,stderr:`jsh: cannot read script '${o}'\n`,exitCode:127,env:this.host.lastEnv}}let l=[`node`,o,...s],u=await gi(c,l,{fs:this.host.vfsAdapter,cwd:this.host.cwd,env:new Map(Object.entries(this.host.lastEnv)),stdin:``,exec:(e,t)=>this.host.bash.exec(e,{env:t?.env??this.host.lastEnv,cwd:t?.cwd??this.host.cwd,umask:this.host.umask,...t?.env===void 0?{}:{replaceEnv:!0}})},this.host.buildJshProcessConfig(t));return{stdout:u.stdout,stderr:u.stderr,exitCode:u.exitCode,env:this.host.lastEnv}}makeScriptCommand(e){let t=this.host,n=t.scriptCatalog,r=t.discoveryFs,i=e,a=async(e,a)=>{let o=a.exec??((e,n)=>t.bash.exec(e,{env:n?.env??Object.fromEntries(a.env),cwd:n?.cwd??a.cwd,args:n?.args,...n?.env===void 0?{}:{replaceEnv:!0}})),s=(await n.getJshCommands(this.scanRoots())).get(i);if(s){let n;try{let e=await r.readFile(s,{encoding:`utf-8`});n=typeof e==`string`?e:new TextDecoder().decode(e)}catch{return{stdout:``,stderr:`jsh: cannot read script '${s}'\n`,exitCode:127}}return gi(n,[`node`,s,...e],{fs:a.fs,cwd:a.cwd,env:a.env,stdin:a.stdin,exec:o},t.buildJshProcessConfig(am(a.env)))}let c=(await n.getWasmCommands()).get(i);if(c){let{runWasmCommand:r}=await import(`./run-DiQn9-Xh.js`);return r(c.script?[i,...e]:[`--argv0`,c.argv0,`--module`,c.wasm,c.glue,...c.args??[],...e],a,{processConfig:t.buildJshProcessConfig(am(a.env)),gate:t.gateNativeCommand,defaults:c.env,commands:()=>n.getWasmCommands(),gitIdentity:()=>t.gitIdentity()})}let l=(await n.getWorkflowCommands()).get(i);if(l){let t=ki(l.path,e);return o(t[0],{args:t.slice(1),cwd:a.cwd})}return{stdout:``,stderr:`${i}: command no longer exists\n`,exitCode:127}};return{name:e,trusted:!0,async execute(e,t){try{return await a(e,t)}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`${i}: ${t}\n`,exitCode:1}}}}}async doSyncJshCommands(){try{let e=await this.host.scriptCatalog.getJshIndex(this.scanRoots()),t=e.commands;for(let t of e.collisions)dm.warn(`jsh command '${t.name}' is provided by more than one skill; using ${t.winnerPath} (${t.reason}), shadowed ${t.shadowedPaths.join(`, `)}`);let n=await this.getFilteredWorkflowCommands(),r=await this.host.scriptCatalog.getWasmCommands();for(let[e,n]of t)this.host.isCommandAllowed(e)&&(this.host.builtinCommandNames.has(e)&&!this.registeredJshCommands.has(e)||this.registeredJshCommands.get(e)!==n&&(this.host.bash.registerCommand(this.host.wrapCommandForDispatch(this.makeScriptCommand(e))),this.registeredJshCommands.set(e,n),this.host.builtinCommandNames.add(e)));let i=[...r.keys()].filter(e=>this.host.isCommandAllowed(e));this.registerLateScriptNames(i,this.registeredWasmCommands),this.registerLateScriptNames(n.keys(),this.registeredWorkflowCommands)}finally{this.jshSyncInflight=null,this.jshSyncDirty&&(this.jshSyncDirty=!1,this.syncJshCommands().catch(()=>void 0))}}registerLateScriptNames(e,t){let n=[this.registeredJshCommands,this.registeredWasmCommands,this.registeredWorkflowCommands];for(let r of e)if(!t.has(r)){if(n.some(e=>e!==t&&e.has(r))){t.add(r);continue}this.host.builtinCommandNames.has(r)||(this.host.bash.registerCommand(this.host.wrapCommandForDispatch(this.makeScriptCommand(r))),t.add(r),this.host.builtinCommandNames.add(r))}}},pm=class{aggregator=null;now;explicitSink;scrubLabel;ids=new Map;seq=0;constructor(e={}){this.now=e.now??Date.now,this.explicitSink=e.sink,this.scrubLabel=e.scrubLabel}allocateId(e=`p`){return this.seq+=1,`${e}-${this.seq}`}hasSink(){return this.resolveSink()!==null}setAggregator(e){this.aggregator=e}emit(e){let t=this.aggregator;if(t&&e.id!==t.id)return t.onChild(e),!0;let n=this.resolveSink();if(!n)return e.phase===`end`&&this.ids.delete(e.id),!1;let r=this.ids.get(e.id);if(e.phase===`update`){if(!r)return!1;let t=this.now();return t-r.lastUpdateAt<250?!1:(r.lastUpdateAt=t,this.deliver(r,n,e),!0)}if(e.phase===`start`){let t={lastUpdateAt:-1/0,rawLabel:e.label,label:this.scrubbed(e.label),tail:Promise.resolve()};return this.ids.set(e.id,t),this.deliver(t,n,e),!0}return r?(this.ids.delete(e.id),this.deliver(r,n,e),!0):!1}resolveSink(){if(this.explicitSink)return this.explicitSink;let e=Ve();if(!e)return null;let t=e.onUpdate;return e=>{t({content:[{type:Ns,progress:e}]})}}scrubbed(e){return this.scrubLabel?mm(this.scrubLabel,e):e}deliver(e,t,n){n.label!==e.rawLabel&&(e.rawLabel=n.label,e.label=this.scrubbed(n.label));let{label:r}=e;if(typeof r==`string`){let e=hm(r);t(e===n.label?n:{...n,label:e});return}e.tail=e.tail.then(async()=>{let i=await r;e.label=i,t({...n,label:hm(i)})})}};async function mm(e,t){if(!t)return t;try{return await e(t)}catch{return`[label withheld: secret scrub unavailable]`}}function hm(e,t=80){return e.length>t?`${e.slice(0,t-1)}…`:e}function gm(e,t){return t.length?`${e} ${t.join(` `)}`:e}function _m(e){try{let t=new URL(e);return`↓ ${t.host}${t.pathname===`/`?``:t.pathname}`}catch{return`↓ ${e}`}}function vm(e,t=Date.now){let n=new Map,r=e=>n.get(e)?.[0];return{start(r,i){if(!e.hasSink())return;let a={id:e.allocateId(`net`),label:_m(r),startedAt:t()},o=n.get(r);o?o.push(a):n.set(r,[a]),e.emit({id:a.id,label:a.label,fraction:i===void 0?void 0:0,done:0,total:i,unit:`bytes`,phase:`start`})},chunk(n,i,a){let o=r(n);if(!o)return;let s,c;if(a!==void 0&&a>0){s=Math.min(1,i/a);let e=t()-o.startedAt;i>0&&(c=Math.max(0,e/i*(a-i)))}e.emit({id:o.id,label:o.label,fraction:s,etaMs:c,done:i,total:a,unit:`bytes`,phase:`update`})},end(t){let r=n.get(t),i=r?.shift();r&&r.length===0&&n.delete(t),i&&e.emit({id:i.id,label:i.label,fraction:1,etaMs:0,unit:`bytes`,phase:`end`})}}}const ym={timeout:e=>{let t=0;for(;t<e.length&&e[t].startsWith(`-`)&&e[t]!==`--`;)[`-k`,`--kill-after`,`-s`,`--signal`].includes(e[t])&&(t+=1),t+=1;return e[t]===`--`&&(t+=1),t+1},env:e=>{let t=0;for(;t<e.length&&(e[t].startsWith(`-`)||e[t].includes(`=`));)t+=1;return t},nohup:()=>0,nice:e=>{let t=0;for(;t<e.length&&e[t].startsWith(`-`);)t+=1;return t}},bm=new Set([`xargs`,`watch`,`parallel`,`bash`,`sh`,`eval`,`source`,`.`]);function xm(e){let t=``;for(let n of e.parts)switch(n.type){case`Literal`:case`SingleQuoted`:case`Escaped`:t+=n.value;break;case`DoubleQuoted`:for(let e of n.parts){if(e.type!==`Literal`&&e.type!==`Escaped`)return null;t+=e.value}break;default:return null}return t}function Sm(e,t){switch(e.type){case`CommandSubstitution`:return Nm(e.body,t);case`DoubleQuoted`:{let n=0;for(let r of e.parts){let e=Sm(r,t);if(e===null)return null;n+=e}return n}case`ProcessSubstitution`:return null;default:return 0}}function Cm(e,t){let n=0;for(let r of e.parts){let e=Sm(r,t);if(e===null)return null;n+=e}return n}function wm(e,t){let n=0;for(let r of e.assignments){if(!r.value)continue;let e=Cm(r.value,t);if(e===null)return null;n+=e}for(let r of e.args){let e=Cm(r,t);if(e===null)return null;n+=e}if(!e.name)return n;let r=xm(e.name);if(r===null||bm.has(r))return null;if(!t.has(r))return n;n+=1;let i=ym[r];if(i){let r=e.args.map(xm);if(r.some(e=>e===null))return null;let a=r[i(r)];if(a===void 0)return n;if(bm.has(a))return null;t.has(a)&&(n+=1)}return n}function Tm(e){let t=typeof e.start==`number`?e.start:Number(e.start),n=typeof e.end==`number`?e.end:Number(e.end);if(!Number.isFinite(t)||!Number.isFinite(n)){let t=String(e.start),n=String(e.end);return t.length!==1||n.length!==1?null:Math.abs(n.charCodeAt(0)-t.charCodeAt(0))+1}let r=Math.abs(e.step??1)||1;return Math.floor(Math.abs(n-t)/r)+1}function Em(e){if(e.parts.length!==1||e.parts[0].type!==`CommandSubstitution`)return null;let t=e.parts[0].body;if(t.statements.length!==1)return null;let n=t.statements[0];if(n.pipelines.length!==1||n.pipelines[0].commands.length!==1)return null;let r=n.pipelines[0].commands[0];if(r.type!==`SimpleCommand`||!r.name||xm(r.name)!==`seq`)return null;let i=r.args.map(e=>{let t=xm(e);return t===null?NaN:Number(t)});if(i.some(e=>!Number.isFinite(e)))return null;let a=1,o=1,s;if(i.length===1)[s]=i;else if(i.length===2)[a,s]=i;else if(i.length===3)[a,o,s]=i;else return null;if(o===0)return null;let c=Math.floor((s-a)/o)+1;return c>0?c:0}function Dm(e){let t=0;for(let n of e){let e=n.type===`Word`?Om(n.word):Tm(n);if(e===null)return null;t+=e}return t}function Om(e){let t=Em(e);if(t!==null)return t;let n=1;for(let t of e.parts)switch(t.type){case`Literal`:case`SingleQuoted`:case`Escaped`:break;case`DoubleQuoted`:if(t.parts.some(e=>e.type!==`Literal`&&e.type!==`Escaped`))return null;break;case`BraceExpansion`:{let e=Dm(t.items);if(e===null)return null;n*=e;break}default:return null}return n}function km(e){let t=0;for(let n of e){let e=Om(n);if(e===null)return null;t+=e}return t}function Am(e,t){let n=0;for(let r of e){let e=Mm(r,t);if(e===null)return null;n+=e}return n}function jm(e,t){switch(e.type){case`SimpleCommand`:return wm(e,t);case`For`:{if(!e.words)return null;let n=km(e.words),r=Am(e.body,t);return n===null||r===null?null:e.words.filter(e=>Em(e)!==null&&t.has(`seq`)).length+n*r}case`Subshell`:case`Group`:return Am(e.body,t);case`FunctionDef`:return 0;default:return null}}function Mm(e,t){let n=0;for(let r of e.pipelines)for(let e of r.commands){let r=jm(e,t);if(r===null)return null;n+=r}return n}function Nm(e,t){return Am(e.statements,t)}function Pm(e,t){let n=Nm(e,t);return{totalSteps:n!==null&&n>0?n:null}}function Fm(e){return e.split(`
166
+ `,stderr:``,exitCode:+(r===void 0)};let i=Object.fromEntries(n.env),a=Fp(P(n.stdin));return r===`get`?Bp(a,i,e):r===`erase`?Vp(a,i,e):{stdout:``,stderr:``,exitCode:0}})}async function Up(e){let t=De(`github`);if(t){if(e?.force){await t.onSilentRenew?.();return}await t.getValidAccessToken?.()}}function Wp(){let e=De(`github`);if(!e)return Np;let t=typeof localStorage>`u`?[]:l(localStorage).github;return[...e.oauthTokenDomains??Np,...t??[]]}const Gp=new Map([[`jsh`,`node`]]);function Kp(e,t){return`${Gp.get(e)??e} ${t.join(` `)}`.trim()}function qp(e){return Ct(`sudo`,e)}async function Jp(e,t){let n=e.trim();if(!n||bt(vt(t.policy,n),t.defaultDisposition??`allow`)!==`require-approval`)return{allowed:!0};let r=await t.broker.requestApproval({kind:`command`,detail:n,...t.reason?{reason:t.reason}:{}});if(r.decision===`deny`)return{allowed:!1,message:qp(r),exitCode:77};if(r.decision===`always`){let e=r.pattern?.trim()||n;await t.persistGrant(e)}return{allowed:!0}}const Yp=`__SLICC_SUDO_REASON`,Xp=/^#!/;function Zp(e){let t=[];for(let n of e.split(`
167
+ `)){let e=n.trim();if(e.length===0){if(t.length>0)break;continue}if(!e.startsWith(`#`))break;if(Xp.test(e))continue;let r=e.replace(/^#+/,``).trim();r&&t.push(r)}return Wt(t.join(` `))}var Qp=class{options;pendingCommandGrants=[];pendingSudoBypasses=new Map;constructor(e){this.options=e}isTransparentGatingEnabled(){let e=this.options.getSudo();return!!e&&e.transparentGating!==!1}wrapCommandForSudo(e){if(!this.isTransparentGatingEnabled()||Mp.has(e.name))return e;let t=(t,n)=>this.gateCommandDispatch(e.name,t,n);return{...e,async execute(n,r){return await t(n,r.env?.get(Yp))||e.execute(n,r)}}}async gateCommandDispatch(e,t,n){let r=this.options.getSudo();if(!r)return null;let i=Kp(e,t);if(this.consumeSudoBypass(i))return null;let a=r.getPolicy();if(!a)return null;let o=await Jp(i,{policy:a,broker:r.broker,persistGrant:async e=>{this.queueGrant(e)},defaultDisposition:r.defaultDisposition,...n?{reason:n}:{}});return o.allowed?null:{stdout:``,stderr:`${o.message}\n`,exitCode:o.exitCode??77}}queueGrant(e){this.pendingCommandGrants.push(e)}registerSudoBypass(e){let t=e.trim();t&&this.pendingSudoBypasses.set(t,(this.pendingSudoBypasses.get(t)??0)+1)}consumeSudoBypass(e){let t=this.pendingSudoBypasses.get(e);return t?(t===1?this.pendingSudoBypasses.delete(e):this.pendingSudoBypasses.set(e,t-1),!0):!1}async flushPendingCommandGrants(){if(this.pendingCommandGrants.length===0)return;let e=this.pendingCommandGrants;this.pendingCommandGrants=[];for(let t of e)try{await this.persistCommandGrant(t)}catch{}}async persistCommandGrant(e){let t=this.options.getSudo()?.persistCommandGrant;if(t){await t(e);return}let n=yt(e);if(!n)return;let r=`${xt}/granted`,i=this.options.fs,a=``;try{await i.exists(r)&&(a=await i.readFile(r))}catch(e){if(!(e instanceof Ze&&e.code===`ENOENT`))throw e}let o=a&&!a.endsWith(`
168
+ `)?`${a}\n`:a;await i.writeFile(r,`${o}NOPASSWD Cmnd ${n}\n`)}};const $p={maxTraversalEntries:1e5,maxTraversalDepth:256,maxTraversalWork:1e5,maxGlobOperations:1e5,maxLiveBytes:67108864,maxInputBytes:33554432,maxArchiveBytes:134217728,maxArchiveCompressedBytes:67108864,maxArchiveEntryBytes:67108864,maxArchiveEntries:1e5};function em(e,t){return e?{...$p,...t}:t}const tm=new Set([`SHLVL`,`_`]);function nm(e){let t=e.split(`\0`);if(t.length<4)return null;let[n=``,r=``,i=``,...a]=t;if(!/^\d+$/.test(n)||!i.startsWith(`/`))return null;let o={};for(let e of a){let t=e.indexOf(`=`);t>0&&(o[e.slice(0,t)]=e.slice(t+1))}let s=r.trim()===``?[]:r.trim().split(/\s+/).map(Number);return{status:Number(n),pipeStatus:s,cwd:i,env:o}}function rm(e,t=[]){let n=new Set([...tm,...t]);return Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e)))}function im(e,t){if(t!==`bytes`)return e;let n=new Uint8Array(e.length);for(let t=0;t<e.length;t++)n[t]=e.charCodeAt(t)&255;return new TextDecoder().decode(n)}async function am(e,t){let n=[],r=fr(e=>n.push(e)),i=await t.run([`bash`,`-c`,`__slicc_save() { local __s=\$1 __p=\$2 __c __n; { printf "%s\\0%s\\0%s\\0" "\$__s" "\$__p" "\$PWD"; for __c in {A..Z} {a..z} _; do eval "__slicc_names=(\\"\\\${!\${__c}@}\\")"; for __n in "\${__slicc_names[@]}"; do [[ \${!__n@a} == *x* ]] && printf "%s=%s\\0" "\$__n" "\${!__n}"; done; done; } >&97 2>/dev/null; }; trap '__slicc_save "\$?" "\${PIPESTATUS[*]}"' EXIT; ${e}`],t.env,[[97,r]]),a=n.reduce((e,t)=>e+t.length,0),o=new Uint8Array(a),s=0;for(let e of n)o.set(e,s),s+=e.length;return{stdout:im(i.stdout,i.stdoutKind),stderr:i.stderr,exitCode:i.exitCode,state:a>0?nm(new TextDecoder().decode(o)):null}}const om=`__SLICC_RUN_PID`,sm=`__SLICC_OUTPUT_TEE__`;function cm(e){let t=e?.get(om);if(t===void 0)return;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:void 0}var lm=class{host;constructor(e){this.host=e}async usesGnuBash(){let e=this.host;return!e.gnuBash||e.lastEnv.SLICC_SHELL===`just-bash`||typeof SharedArrayBuffer!=`function`?!1:(await e.scriptCatalog.getWasmCommands()).has(`bash`)}async runOnGnuBash(e,t,n,r,i,a){let o=this.host,{runWasmCommand:s,withoutRealmDefaults:c}=await import(`./run-DX_sxl3W.js`),l=Zp(e),u={...o.lastEnv,...n===void 0?{}:{[om]:String(n)},...l?{[Yp]:l}:{}},d=i===void 0?void 0:o.outputTees.get(i),f=await am(e,{env:u,run:(e,i,a)=>s(e,this.wasmContext(i,t,r),{processConfig:o.buildJshProcessConfig(n),gate:o.gateNativeCommand,onOutput:d,fds:a,commands:()=>o.scriptCatalog.getWasmCommands(),gitIdentity:()=>o.gitIdentity()})}),p=o.lastEnv.PATH;return f.state&&(o.adoptCwd(f.state.cwd),o.adoptEnv(rm(c(f.state.env,u),[om,Yp,sm]))),o.lastEnv.PATH!==p&&await o.syncJshCommands().catch(()=>void 0),await o.flushPendingCommandGrants(),o.applyPendingEnvWrites(),{stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:{...o.lastEnv},...a&&f.state?{pipeStatus:f.state.pipeStatus}:{}}}wasmContext(e,t,n){let r=this.host;return{fs:r.vfsAdapter,cwd:r.cwd,env:new Map(Object.entries(e)),exportedEnv:e,stdin:n,signal:t,exec:(e,t)=>r.bash.exec(e,{...t,umask:r.umask})}}};function um(e){let t=[],n=``,r=0;for(;r<e.length;){let i=e[r];if(i===`"`){for(r++;r<e.length&&e[r]!==`"`;)n+=e[r],r++;r++}else if(i===`'`){for(r++;r<e.length&&e[r]!==`'`;)n+=e[r],r++;r++}else i===`\\`&&r+1<e.length&&e[r+1]===` `?(n+=` `,r+=2):/\s/.test(i)?(n.length>0&&(t.push(n),n=``),r++):(n+=i,r++)}return n.length>0&&t.push(n),t}const dm=e(`almost-bash-shell`);var fm=class{host;registeredJshCommands=new Map;registeredWorkflowCommands=new Set;registeredWasmCommands=new Set;jshSyncInflight=null;jshSyncDirty=!1;constructor(e){this.host=e}scriptRegisteredNames(){return[...this.registeredJshCommands.keys(),...this.registeredWorkflowCommands,...this.registeredWasmCommands]}scanRoots(){return Tr(this.host.path())}async getJshCommandNames(){return[...(await this.getFilteredJshCommands()).keys()]}async getWorkflowCommandNames(){return[...(await this.getFilteredWorkflowCommands()).keys()]}async syncJshCommands(){return this.jshSyncInflight===null?(this.jshSyncInflight=this.doSyncJshCommands(),this.jshSyncInflight):(this.jshSyncDirty=!0,this.jshSyncInflight)}async getFilteredJshCommands(){let e=await this.host.scriptCatalog.getJshCommands(this.scanRoots()),t=new Map;for(let[n,r]of e)this.host.builtinCommandNames.has(n)||this.host.isCommandAllowed(n)&&t.set(n,r);return t}async getFilteredWorkflowCommands(){let e=await this.host.scriptCatalog.getWorkflowCommands(),t=new Map;for(let[n,r]of e)this.host.isCommandAllowed(n)&&t.set(n,r);return t}async tryJshFallback(e,t){let n=e.trim(),r=n.indexOf(` `),i=r>=0?n.slice(0,r):n,a=r>=0?n.slice(r+1).trim():``,o=(await this.getFilteredJshCommands()).get(i);if(!o)return null;let s=a?um(a):[],c;try{let e=await this.host.discoveryFs.readFile(o,{encoding:`utf-8`});c=typeof e==`string`?e:new TextDecoder().decode(e)}catch{return{stdout:``,stderr:`jsh: cannot read script '${o}'\n`,exitCode:127,env:this.host.lastEnv}}let l=[`node`,o,...s],u=await yi(c,l,{fs:this.host.vfsAdapter,cwd:this.host.cwd,env:new Map(Object.entries(this.host.lastEnv)),stdin:``,exec:(e,t)=>this.host.bash.exec(e,{env:t?.env??this.host.lastEnv,cwd:t?.cwd??this.host.cwd,umask:this.host.umask,...t?.env===void 0?{}:{replaceEnv:!0}})},this.host.buildJshProcessConfig(t));return{stdout:u.stdout,stderr:u.stderr,exitCode:u.exitCode,env:this.host.lastEnv}}makeScriptCommand(e){let t=this.host,n=t.scriptCatalog,r=t.discoveryFs,i=e,a=async(e,a)=>{let o=a.exec??((e,n)=>t.bash.exec(e,{env:n?.env??Object.fromEntries(a.env),cwd:n?.cwd??a.cwd,args:n?.args,...n?.env===void 0?{}:{replaceEnv:!0}})),s=(await n.getJshCommands(this.scanRoots())).get(i);if(s){let n;try{let e=await r.readFile(s,{encoding:`utf-8`});n=typeof e==`string`?e:new TextDecoder().decode(e)}catch{return{stdout:``,stderr:`jsh: cannot read script '${s}'\n`,exitCode:127}}return yi(n,[`node`,s,...e],{fs:a.fs,cwd:a.cwd,env:a.env,stdin:a.stdin,exec:o},t.buildJshProcessConfig(cm(a.env)))}let c=(await n.getWasmCommands()).get(i);if(c){let{runWasmCommand:r}=await import(`./run-DX_sxl3W.js`);return r(c.script?[i,...e]:[`--argv0`,c.argv0,`--module`,c.wasm,c.glue,...c.args??[],...e],a,{processConfig:t.buildJshProcessConfig(cm(a.env)),gate:t.gateNativeCommand,defaults:c.env,commands:()=>n.getWasmCommands(),gitIdentity:()=>t.gitIdentity()})}let l=(await n.getWorkflowCommands()).get(i);if(l){let t=Mi(l.path,e);return o(t[0],{args:t.slice(1),cwd:a.cwd})}return{stdout:``,stderr:`${i}: command no longer exists\n`,exitCode:127}};return{name:e,trusted:!0,async execute(e,t){try{return await a(e,t)}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`${i}: ${t}\n`,exitCode:1}}}}}async doSyncJshCommands(){try{let e=await this.host.scriptCatalog.getJshIndex(this.scanRoots()),t=e.commands;for(let t of e.collisions)dm.warn(`jsh command '${t.name}' is provided by more than one skill; using ${t.winnerPath} (${t.reason}), shadowed ${t.shadowedPaths.join(`, `)}`);let n=await this.getFilteredWorkflowCommands(),r=await this.host.scriptCatalog.getWasmCommands();for(let[e,n]of t)this.host.isCommandAllowed(e)&&(this.host.builtinCommandNames.has(e)&&!this.registeredJshCommands.has(e)||this.registeredJshCommands.get(e)!==n&&(this.host.bash.registerCommand(this.host.wrapCommandForDispatch(this.makeScriptCommand(e))),this.registeredJshCommands.set(e,n),this.host.builtinCommandNames.add(e)));let i=[...r.keys()].filter(e=>this.host.isCommandAllowed(e));this.registerLateScriptNames(i,this.registeredWasmCommands),this.registerLateScriptNames(n.keys(),this.registeredWorkflowCommands)}finally{this.jshSyncInflight=null,this.jshSyncDirty&&(this.jshSyncDirty=!1,this.syncJshCommands().catch(()=>void 0))}}registerLateScriptNames(e,t){let n=[this.registeredJshCommands,this.registeredWasmCommands,this.registeredWorkflowCommands];for(let r of e)if(!t.has(r)){if(n.some(e=>e!==t&&e.has(r))){t.add(r);continue}this.host.builtinCommandNames.has(r)||(this.host.bash.registerCommand(this.host.wrapCommandForDispatch(this.makeScriptCommand(r))),t.add(r),this.host.builtinCommandNames.add(r))}}},pm=class{aggregator=null;now;explicitSink;scrubLabel;ids=new Map;seq=0;constructor(e={}){this.now=e.now??Date.now,this.explicitSink=e.sink,this.scrubLabel=e.scrubLabel}allocateId(e=`p`){return this.seq+=1,`${e}-${this.seq}`}hasSink(){return this.resolveSink()!==null}setAggregator(e){this.aggregator=e}emit(e){let t=this.aggregator;if(t&&e.id!==t.id)return t.onChild(e),!0;let n=this.resolveSink();if(!n)return e.phase===`end`&&this.ids.delete(e.id),!1;let r=this.ids.get(e.id);if(e.phase===`update`){if(!r)return!1;let t=this.now();return t-r.lastUpdateAt<250?!1:(r.lastUpdateAt=t,this.deliver(r,n,e),!0)}if(e.phase===`start`){let t={lastUpdateAt:-1/0,rawLabel:e.label,label:this.scrubbed(e.label),tail:Promise.resolve()};return this.ids.set(e.id,t),this.deliver(t,n,e),!0}return r?(this.ids.delete(e.id),this.deliver(r,n,e),!0):!1}resolveSink(){if(this.explicitSink)return this.explicitSink;let e=Ve();if(!e)return null;let t=e.onUpdate;return e=>{t({content:[{type:Is,progress:e}]})}}scrubbed(e){return this.scrubLabel?mm(this.scrubLabel,e):e}deliver(e,t,n){n.label!==e.rawLabel&&(e.rawLabel=n.label,e.label=this.scrubbed(n.label));let{label:r}=e;if(typeof r==`string`){let e=hm(r);t(e===n.label?n:{...n,label:e});return}e.tail=e.tail.then(async()=>{let i=await r;e.label=i,t({...n,label:hm(i)})})}};async function mm(e,t){if(!t)return t;try{return await e(t)}catch{return`[label withheld: secret scrub unavailable]`}}function hm(e,t=80){return e.length>t?`${e.slice(0,t-1)}…`:e}function gm(e,t){return t.length?`${e} ${t.join(` `)}`:e}function _m(e){try{let t=new URL(e);return`↓ ${t.host}${t.pathname===`/`?``:t.pathname}`}catch{return`↓ ${e}`}}function vm(e,t=Date.now){let n=new Map,r=e=>n.get(e)?.[0];return{start(r,i){if(!e.hasSink())return;let a={id:e.allocateId(`net`),label:_m(r),startedAt:t()},o=n.get(r);o?o.push(a):n.set(r,[a]),e.emit({id:a.id,label:a.label,fraction:i===void 0?void 0:0,done:0,total:i,unit:`bytes`,phase:`start`})},chunk(n,i,a){let o=r(n);if(!o)return;let s,c;if(a!==void 0&&a>0){s=Math.min(1,i/a);let e=t()-o.startedAt;i>0&&(c=Math.max(0,e/i*(a-i)))}e.emit({id:o.id,label:o.label,fraction:s,etaMs:c,done:i,total:a,unit:`bytes`,phase:`update`})},end(t){let r=n.get(t),i=r?.shift();r&&r.length===0&&n.delete(t),i&&e.emit({id:i.id,label:i.label,fraction:1,etaMs:0,unit:`bytes`,phase:`end`})}}}const ym={timeout:e=>{let t=0;for(;t<e.length&&e[t].startsWith(`-`)&&e[t]!==`--`;)[`-k`,`--kill-after`,`-s`,`--signal`].includes(e[t])&&(t+=1),t+=1;return e[t]===`--`&&(t+=1),t+1},env:e=>{let t=0;for(;t<e.length&&(e[t].startsWith(`-`)||e[t].includes(`=`));)t+=1;return t},nohup:()=>0,nice:e=>{let t=0;for(;t<e.length&&e[t].startsWith(`-`);)t+=1;return t}},bm=new Set([`xargs`,`watch`,`parallel`,`bash`,`sh`,`eval`,`source`,`.`]);function xm(e){let t=``;for(let n of e.parts)switch(n.type){case`Literal`:case`SingleQuoted`:case`Escaped`:t+=n.value;break;case`DoubleQuoted`:for(let e of n.parts){if(e.type!==`Literal`&&e.type!==`Escaped`)return null;t+=e.value}break;default:return null}return t}function Sm(e,t){switch(e.type){case`CommandSubstitution`:return Nm(e.body,t);case`DoubleQuoted`:{let n=0;for(let r of e.parts){let e=Sm(r,t);if(e===null)return null;n+=e}return n}case`ProcessSubstitution`:return null;default:return 0}}function Cm(e,t){let n=0;for(let r of e.parts){let e=Sm(r,t);if(e===null)return null;n+=e}return n}function wm(e,t){let n=0;for(let r of e.assignments){if(!r.value)continue;let e=Cm(r.value,t);if(e===null)return null;n+=e}for(let r of e.args){let e=Cm(r,t);if(e===null)return null;n+=e}if(!e.name)return n;let r=xm(e.name);if(r===null||bm.has(r))return null;if(!t.has(r))return n;n+=1;let i=ym[r];if(i){let r=e.args.map(xm);if(r.some(e=>e===null))return null;let a=r[i(r)];if(a===void 0)return n;if(bm.has(a))return null;t.has(a)&&(n+=1)}return n}function Tm(e){let t=typeof e.start==`number`?e.start:Number(e.start),n=typeof e.end==`number`?e.end:Number(e.end);if(!Number.isFinite(t)||!Number.isFinite(n)){let t=String(e.start),n=String(e.end);return t.length!==1||n.length!==1?null:Math.abs(n.charCodeAt(0)-t.charCodeAt(0))+1}let r=Math.abs(e.step??1)||1;return Math.floor(Math.abs(n-t)/r)+1}function Em(e){if(e.parts.length!==1||e.parts[0].type!==`CommandSubstitution`)return null;let t=e.parts[0].body;if(t.statements.length!==1)return null;let n=t.statements[0];if(n.pipelines.length!==1||n.pipelines[0].commands.length!==1)return null;let r=n.pipelines[0].commands[0];if(r.type!==`SimpleCommand`||!r.name||xm(r.name)!==`seq`)return null;let i=r.args.map(e=>{let t=xm(e);return t===null?NaN:Number(t)});if(i.some(e=>!Number.isFinite(e)))return null;let a=1,o=1,s;if(i.length===1)[s]=i;else if(i.length===2)[a,s]=i;else if(i.length===3)[a,o,s]=i;else return null;if(o===0)return null;let c=Math.floor((s-a)/o)+1;return c>0?c:0}function Dm(e){let t=0;for(let n of e){let e=n.type===`Word`?Om(n.word):Tm(n);if(e===null)return null;t+=e}return t}function Om(e){let t=Em(e);if(t!==null)return t;let n=1;for(let t of e.parts)switch(t.type){case`Literal`:case`SingleQuoted`:case`Escaped`:break;case`DoubleQuoted`:if(t.parts.some(e=>e.type!==`Literal`&&e.type!==`Escaped`))return null;break;case`BraceExpansion`:{let e=Dm(t.items);if(e===null)return null;n*=e;break}default:return null}return n}function km(e){let t=0;for(let n of e){let e=Om(n);if(e===null)return null;t+=e}return t}function Am(e,t){let n=0;for(let r of e){let e=Mm(r,t);if(e===null)return null;n+=e}return n}function jm(e,t){switch(e.type){case`SimpleCommand`:return wm(e,t);case`For`:{if(!e.words)return null;let n=km(e.words),r=Am(e.body,t);return n===null||r===null?null:e.words.filter(e=>Em(e)!==null&&t.has(`seq`)).length+n*r}case`Subshell`:case`Group`:return Am(e.body,t);case`FunctionDef`:return 0;default:return null}}function Mm(e,t){let n=0;for(let r of e.pipelines)for(let e of r.commands){let r=jm(e,t);if(r===null)return null;n+=r}return n}function Nm(e,t){return Am(e.statements,t)}function Pm(e,t){let n=Nm(e,t);return{totalSteps:n!==null&&n>0?n:null}}function Fm(e){return e.split(`
169
169
  `).map(e=>e.trim()).find(e=>e.length>0&&!e.startsWith(`#`))||`bash`}var Im=class{plan;emitter;label;now;id;steps=0;startedAt;finished=!1;children=new Map;constructor(e,t,n,r=Date.now){this.plan=e,this.emitter=t,this.label=n,this.now=r,this.id=t.allocateId(`script`),this.startedAt=r(),this.emitter.setAggregator(this),this.publish(`start`)}stepDone(){this.finished||(this.steps+=1,this.publish(`update`))}onChild(e){if(!this.finished){if(e.phase===`end`){this.children.delete(e.id);return}this.children.set(e.id,{fraction:e.fraction,label:e.label}),(e.fraction!==void 0||e.phase===`start`)&&this.publish(`update`)}}end(){this.finished||(this.finished=!0,this.emitter.setAggregator(null),this.emitter.emit({id:this.id,label:this.label,fraction:1,etaMs:0,done:this.steps,total:this.plan.totalSteps??void 0,unit:`iterations`,phase:`end`}))}fraction(){let e=[...this.children.values()].at(-1)?.fraction,t=this.plan.totalSteps;if(t===null)return e;let n=e??0;return Math.min(1,(this.steps+n)/t)}publish(e){let t=this.fraction(),n=this.now()-this.startedAt,r=t!==void 0&&t>0&&t<1?Math.max(0,n/t*(1-t)):t===1?0:void 0,i=[...this.children.values()].at(-1);this.emitter.emit({id:this.id,label:i?`${this.label} · ${i.label}`:this.label,fraction:t,etaMs:r,done:this.steps,total:this.plan.totalSteps??void 0,unit:`iterations`,phase:e})}};const Lm=globalThis.setTimeout.bind(globalThis);function Rm(e){let t=e/1e3;return`sleep ${Number.isInteger(t)?t:t.toFixed(1)}`}function zm(e,t={}){let n=t.now??Date.now,r=t.setTimeout??Lm,i=t.isAborted??(()=>!1),a=t.label??Rm,o=e=>new Promise(t=>r(t,e));return async t=>{let r=Math.max(0,t),s=e.allocateId(`sleep`),c=a(r),l=n();e.emit({id:s,label:c,fraction:0,etaMs:r,done:0,total:r,unit:`ms`,phase:`start`});try{let t=0;for(;t<r;){if(i())return;if(await o(Math.min(250,r-t)),t=n()-l,t<r){let n=Math.min(1,t/r);e.emit({id:s,label:c,fraction:n,etaMs:Math.max(0,r-t),done:Math.min(t,r),total:r,unit:`ms`,phase:`update`})}}}finally{e.emit({id:s,label:c,fraction:1,etaMs:0,done:r,total:r,unit:`ms`,phase:`end`})}}}const Bm=globalThis.setTimeout.bind(globalThis);function Vm(e){let t=/^(\d+(?:\.\d+)?|\.\d+)([smhd]?)$/.exec(e.trim());return t?Number(t[1])*({"":1e3,s:1e3,m:6e4,h:36e5,d:864e5}[t[2]]??1e3):null}function Hm(e){let t=0;for(;t<e.length;){let n=e[t];if(n===`--`)return t+1<e.length?t+1:-1;if(!n.startsWith(`-`))return t;[`-k`,`--kill-after`,`-s`,`--signal`].includes(n)&&(t+=1),t+=1}return-1}function Um(e,t,n={}){let r=n.now??Date.now,i=n.setTimeout??Bm;return{...e,async execute(n,a){let o=Hm(n),s=o>=0?Vm(n[o]):null;if(!t.hasSink()||s===null||s<=0)return e.execute(n,a);let c=t.allocateId(`timeout`),l=gm(e.name,n),u=r(),d=!0,f=()=>{if(!d)return;let e=r()-u,n=Math.min(1,e/s);t.emit({id:c,label:l,fraction:n,etaMs:Math.max(0,s-e),done:Math.min(e,s),total:s,unit:`ms`,phase:`update`}),e<s&&i(f,250)};t.emit({id:c,label:l,fraction:0,etaMs:s,done:0,total:s,unit:`ms`,phase:`start`}),i(f,250);try{return await e.execute(n,a)}finally{d=!1,t.emit({id:c,label:l,fraction:1,etaMs:0,done:s,total:s,unit:`ms`,phase:`end`})}}}}const Wm=new Set(`sleep,echo,printf,true,false,test,[,cd,pwd,export,unset,set,shift,local,return,break,continue,exit,:,read,let,declare,typeset,readonly,eval,exec,source,.,alias,unalias,type,command,builtin,wait,trap,basename,dirname,seq,expr`.split(`,`));function Gm(e,t,n={}){if((n.skip??Wm).has(e.name))return e;let r=e.name;return{...e,async execute(n,i){if(!t.hasSink())return e.execute(n,i);let a=t.allocateId(`cmd`),o=gm(r,n);t.emit({id:a,label:o,phase:`start`});try{return await e.execute(n,i)}finally{t.emit({id:a,label:o,phase:`end`})}}}}const Km={stdout:``,stderr:``,exitCode:130};function qm(e,t){if(!t)return e();if(t.aborted)return Promise.resolve(Km);let n,r=new Promise(e=>{n=()=>e(Km),t.addEventListener(`abort`,n,{once:!0})});return Promise.race([e(),r]).finally(()=>{n&&t.removeEventListener(`abort`,n)})}const Jm={directory:{title:`Mount local directory`,approve:`Select directory`},"usb-device":{title:`Connect USB device`,approve:`Select USB device`},"serial-port":{title:`Connect serial port`,approve:`Select serial port`},"hid-device":{title:`Connect HID device`,approve:`Select HID device`}};function Ym(e,t=[],n){let r=Jm[e],i=t.length?` data-action-data='${JSON.stringify({filters:t}).replace(/'/g,`&apos;`)}'`:``,a=e===`directory`&&n?`<div class="sprinkle-action-card__meta">Target: ${Pt(n)}</div>`:``;return`
170
170
  <div class="sprinkle-action-card">
171
171
  <div class="sprinkle-action-card__header">
@@ -177,10 +177,10 @@ default (credential.helper=slicc). Reads git's key=value request on stdin.
177
177
  <button class="sprinkle-btn sprinkle-btn--primary" data-action="approve" data-picker="${e}"${i}>${r.approve}</button>
178
178
  </div>
179
179
  </div>
180
- `}const Xm=Symbol(`mount:timeout`),Zm=Symbol(`mount:no-panel`);async function Qm(e,t){let n=He.generateId(),r=!1,i=!1,a=Ue({id:n,html:Ym(`directory`,[],t),onAction:(e,t)=>$m(e,t)},e.onUpdate).catch(e=>{if(r)return Xm;if(i)return Zm;throw e}),o,s=new Promise(e=>{o=setTimeout(()=>{r=!0,He.cancel(n,`mount: timed out`),e(Xm)},3e5)}),c=new Promise(e=>{He.waitForMount(n,5e3).then(()=>{},()=>{r||(i=!0,He.cancel(n,`mount: panel did not render the approval card`),e(Zm))})}),l=await Promise.race([a,s,c]);if(o&&clearTimeout(o),l===Xm)throw Error(`mount: timed out after 5 minute(s) waiting for user approval`);if(l===Zm)throw Error(`mount: chat panel did not render the approval card — open the chat panel and retry`);if(!l)throw Error(`mount: tool UI not available`);let u=l;if(u.denied)throw Error(`mount: denied by user`);if(u.cancelled)throw Error(`mount: cancelled`);if(u.error)throw Error(`mount: ${u.error}`);if(!u.handle)throw Error(`mount: no directory selected`);return u.handle}async function $m(e,t){if(e!==`approve`)return{denied:!0};let n=t;if(n?.handleInIdb&&typeof n.idbKey==`string`)try{let e=await Jt(n.idbKey);return e?(await Kt(e),{approved:!0,handle:e}):{error:`No directory handle found in storage`}}catch(e){return{error:e instanceof Error?e.message:String(e)}}if(n?.cancelled)return{cancelled:!0};if(n?.error)return{error:String(n.error)};try{return{approved:!0,handle:await window.showDirectoryPicker({mode:`readwrite`})}}catch(e){return e instanceof Error&&e.name===`AbortError`?{cancelled:!0}:{error:e instanceof Error?e.message:String(e)}}}function eh(e){let t=e?.parts;return t?.length!==1||t[0]?.type!==`Literal`?null:t[0].value??null}function th(e){return{type:`Word`,parts:[{type:`Literal`,value:e}]}}function nh(e){for(let t of e.args){let e=eh(t);if(e===`-o`||e===`--out`)return!0}return!1}function rh(e){for(let t of e.redirections){let e=t.operator,n=t.fd;if(e===`&>`||e===`&>>`||(e===`>`||e===`>>`||e===`>|`)&&(n==null||n===1))return!0}return!1}function ih(e){eh(e.name)!==`say`||nh(e)||(e.args=[th(`-o`),th(`-`),...e.args])}function ah(e,t){if(Array.isArray(e)){for(let n of e)ah(n,t);return}if(!e||typeof e!=`object`)return;let n=e;if(n.type===`Pipeline`&&Array.isArray(n.commands)){let e=n.commands;for(let n=0;n<e.length;n++){let r=e[n],i=e.length>1&&n<e.length-1,a=t||i||r?.type===`SimpleCommand`&&rh(r);r?.type===`SimpleCommand`&&a&&ih(r),ah(r,a)}return}if(n.type===`CommandSubstitution`||n.type===`ProcessSubstitution`){ah(n.body,!0);return}for(let e of Object.values(n))ah(e,t)}const oh={name:`say-stdio`,transform(e){return ah(e.ast,!1),{ast:e.ast}}};function sh(e){if(e?.trim())return e.split(`,`).map(e=>e.trim()).filter(Boolean)}function ch(e){if(!e)return!1;let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`yes`}function lh(e){return e.map(e=>{let t=e.boost?parseFloat(e.boost):NaN,n=Number.isFinite(t)?t:void 0;return{name:e.name,displayName:e.displayName||e.name,description:e.description||``,source:{repo:e.repo,path:e.path||void 0,skill:e.skill||void 0,installAll:ch(e.installAll)},affinity:{apps:sh(e.apps),tasks:sh(e.tasks),role:sh(e.role),purpose:sh(e.purpose)},priority:n}})}const uh={apps:3,tasks:2,role:1,purpose:1};function dh(e,t){return e.map(e=>{let n=0,r=[],i=(e.affinity.apps??[]).filter(e=>t.apps.includes(e));i.length&&(n+=i.length*uh.apps,r.push(`apps(${i.join(`, `)})`));let a=(e.affinity.tasks??[]).filter(e=>t.tasks.includes(e));return a.length&&(n+=a.length*uh.tasks,r.push(`tasks(${a.join(`, `)})`)),(e.affinity.role??[]).includes(t.role)&&(n+=uh.role,r.push(`role(${t.role})`)),(e.affinity.purpose??[]).includes(t.purpose)&&(n+=uh.purpose,r.push(`purpose(${t.purpose})`)),n*=e.priority??1,{entry:e,score:n,matchReasons:r}}).filter(e=>e.score>0).sort((e,t)=>t.score-e.score)}function fh(e){let t=`upskill ${e.repo}`;return e.path&&(t+=` --path ${e.path}`),e.installAll?t+=` --all`:e.skill&&(t+=` --skill ${e.skill}`),t}async function ph(e){let t=new Set;try{let n=await e.readDir(ji);for(let e of n)e.type===`directory`&&t.add(e.name)}catch{}let n=[`.agents`,`.claude`];try{let r=await e.readDir(`/`);for(let i of r)if(i.type===`directory`)for(let r of n)try{let n=`/${i.name}/${r}/skills`,a=await e.readDir(n);for(let e of a)e.type===`directory`&&t.add(e.name)}catch{}}catch{}return t}function mh(e){return{purpose:e.purpose??``,role:e.role??``,tasks:Array.isArray(e.tasks)?e.tasks:[],apps:Array.isArray(e.apps)?e.apps:[],name:e.name??``,company:typeof e.company==`string`?e.company:void 0}}function hh(e){return typeof e!=`string`||!e?null:ne(e)||null}function gh(e,t){if(t.length===0)return e;let n=new Set(t.map(e=>e.name));return[...e.filter(e=>!n.has(e.name)),...t]}async function _h(e,t){try{let n=hh(t);if(!n)return[];let r=await e(`${Ni}${n}.json`,{headers:{Accept:`application/json`}});return r.status===200?lh(ke(r.body).data):[]}catch{return[]}}async function vh(e){let t;try{t=await e(Pi,{headers:{Accept:`application/json`}})}catch(e){throw Error(Ui(e,Pi))}if(t.status!==200)throw Error(`HTTP ${t.status}`);return lh(ke(t.body).data)}function yh(e,t,n){let r=e.entry.source;if(r.skill){let e=n.get(r.skill);return e?{skillPath:e,skillName:r.skill}:r.path?{skillPath:r.path.replace(/^\/|\/$/g,``),skillName:r.skill}:{error:`skill "${r.skill}" not found in ${t}`}}if(r.path)return{skillPath:r.path.replace(/^\/|\/$/g,``),skillName:e.entry.name};let i=n.get(e.entry.name);return i?{skillPath:i,skillName:e.entry.name}:{error:`skill "${e.entry.name}" not found in ${t} and no explicit path provided`}}async function bh(e,t,n,r,i,a,o,s,c){let l=e.entry.source,u=l.path.replace(/^\/|\/$/g,``),d=o<s?` (~${Math.round((s-o)*(Date.now()-c)/o/1e3)}s remaining)`:``,f=[];for(let[e,t]of r)(t===u||t.startsWith(`${u}/`))&&f.push({name:e,path:t});if(f.length===0){let n=`no skills found under "${l.path}" in ${t}`;return{results:[{ok:!1,name:e.entry.name,error:n}],line:`[${o}/${s}] Failed "${e.entry.name}" bundle from ${t}: ${n}${d}\n`}}let p=Date.now(),m=0,h=0,g=[];for(let e of f){if(i.has(e.name))continue;let t=await ea(e.path,e.name,n,a,!1);t.ok?(g.push({ok:!0,name:e.name}),m++):(g.push({ok:!1,name:e.name,error:t.error}),h++)}let _=((Date.now()-p)/1e3).toFixed(1),v;return v=m===0&&h===0?`[${o}/${s}] Skipped "${e.entry.name}" bundle from ${t}: all sub-skills already installed${d}\n`:h===0?`[${o}/${s}] Installed "${e.entry.name}" bundle (${m} skill(s)) from ${t} (${_}s)${d}\n`:`[${o}/${s}] Installed "${e.entry.name}" bundle (${m}/${m+h} skill(s)) from ${t} (${_}s)${d}\n`,{results:g,line:v}}async function xh(e,t,n,r,i,a,o,s,c,l){let u=e.entry.source,d=s<c?` (~${Math.round((c-s)*(Date.now()-l)/s/1e3)}s remaining)`:``,f=await ta(n,r,i,u.path);if(f.error)return{results:[{ok:!1,name:e.entry.name,error:f.error}],line:`[${s}/${c}] Failed "${e.entry.name}" bundle from ${t}: ${f.error}${d}\n`};let p=Date.now(),m=0,h=0,g=[];for(let e of f.skills){if(a.has(e.name))continue;let t=await $i(n,r,e.path,e.name,o,i,!1);t.exitCode===0?(g.push({ok:!0,name:e.name}),m++):(g.push({ok:!1,name:e.name,error:t.stderr.trim()}),h++)}let _=((Date.now()-p)/1e3).toFixed(1),v;return v=m===0&&h===0?`[${s}/${c}] Skipped "${e.entry.name}" bundle from ${t}: all sub-skills already installed${d}\n`:h===0?`[${s}/${c}] Installed "${e.entry.name}" bundle (${m} skill(s)) from ${t} (${_}s)${d}\n`:`[${s}/${c}] Installed "${e.entry.name}" bundle (${m}/${m+h} skill(s)) from ${t} (${_}s)${d}\n`,{results:g,line:v}}async function Sh(e,t,n,r,i,a,o,s){let c=new Map;for(let e of Object.keys(n))if(e.endsWith(`/SKILL.md`)){let t=e.replace(/\/SKILL\.md$/,``);c.set(t.split(`/`).pop()||t,t)}let l=[],u=``;for(let d of t){let t=d.entry.source;if(t.installAll&&t.path){r.count++;let t=await bh(d,e,n,c,o,s,r.count,i,a);l.push(...t.results),u+=t.line;continue}let f=yh(d,e,c);if(`error`in f){l.push({ok:!1,name:d.entry.name,error:f.error}),r.count++;let t=r.count<i?` (~${Math.round((i-r.count)*(Date.now()-a)/r.count/1e3)}s remaining)`:``;u+=`[${r.count}/${i}] Failed "${d.entry.name}" from ${e}: ${f.error}${t}\n`;continue}let{skillPath:p,skillName:m}=f,h=Date.now(),g=await ea(p,m,n,s,!1);r.count++;let _=((Date.now()-h)/1e3).toFixed(1),v=(Date.now()-a)/r.count,ee=Math.round((i-r.count)*v/1e3),te=r.count<i?` (~${ee}s remaining)`:``;g.ok?(l.push({ok:!0,name:m}),u+=`[${r.count}/${i}] Installed "${m}" from ${e} (${_}s)${te}\n`):(l.push({ok:!1,name:m,error:g.error}),u+=`[${r.count}/${i}] Failed "${m}" from ${e}: ${g.error}${te}\n`)}return{errors:[],results:l,output:u}}async function Ch(e,t,n,r,i,a,o,s,c,l){let u=await Wi(c),d=[],f=``;for(let c of t){let t=c.entry.source;i.count++;let p=i.count<a?` (~${Math.round((a-i.count)*(Date.now()-o)/i.count/1e3)}s remaining)`:``;if(t.installAll&&t.path){let t=await xh(c,e,n,r,u,s,l,i.count,a,o);d.push(...t.results),f+=t.line;continue}let m=t.path?t.path.replace(/^\/|\/$/g,``):c.entry.name,h=t.skill||c.entry.name,g=await $i(n,r,m,h,l,u,!1);g.exitCode===0?(f+=`[${i.count}/${a}] Installed "${h}" from ${e}${p}\n`,d.push({ok:!0,name:h})):(f+=`[${i.count}/${a}] Failed "${h}" from ${e}: ${g.stderr.trim()}${p}\n`,d.push({ok:!1,name:h,error:g.stderr.trim()}))}return{errors:[],results:d,output:f}}function wh(e,t,n){let r=``;for(let i of e){if(i.status===`rejected`){t.push(`upskill: unexpected error: ${i.reason}`);continue}r+=i.value.output;for(let e of i.value.errors)t.push(e);for(let e of i.value.results)e.ok?n.push(e.name):e.error&&t.push(`upskill: ${e.error}`)}return r}async function Th(e,t,n){let r=Date.now(),i=(e,t=[])=>({installedNames:[],errors:t,skipped:e,log:``,elapsedSeconds:(Date.now()-r)/1e3}),a=null;if(n)a=mh(n);else try{let t=await e.readDir(`/home`);for(let n of t)try{let t=await e.readTextFile(`/home/${n.name}/.welcome.json`);a=mh(JSON.parse(t));break}catch{}}catch{}if(!a)return i(`no-profile`);let o,s;try{let[n,r,i]=await Promise.all([vh(t),_h(t,a.company),ph(e)]);o=gh(n,r),s=i}catch(e){return i(`catalog-fetch`,[`upskill: failed to fetch skill catalog from ${Pi}: ${e instanceof Error?e.message:String(e)}`])}let c=dh(o,a).filter(e=>!s.has(e.entry.name));if(c.length===0)return i(`all-installed`);let l=new Map;for(let e of c){let t=e.entry.source.repo,n=l.get(t);n?n.push(e):l.set(t,[e])}let u=c.length,d={count:0},f=[],p=[],m=``;m=wh(await Promise.allSettled(Array.from(l.entries()).map(async([n,i])=>{let[a,o]=n.split(`/`),c=await Vi(a,o,t);return c.status===`error`?Ch(n,i,a,o,d,u,r,s,t,e):Sh(n,i,Ii(c.files),d,u,r,s,e)})),f,p);let h=(Date.now()-r)/1e3;return p.length>0&&(await Zi(),m+=`\nInstalled ${p.length} recommended skill(s) in ${h.toFixed(1)}s\n`),{installedNames:p,errors:f,skipped:null,log:m,elapsedSeconds:h}}function Eh(e){let t=e.toLowerCase();return t.startsWith(`www.`)?t.slice(4):t}let Dh,Oh;async function kh(e){if(Dh)return Dh;if(Oh!==void 0)return Oh;Oh=(async()=>{let t;try{t=await e(Fi,{headers:{Accept:`application/json`}})}catch(e){throw Error(Ui(e,Fi))}if(t.status!==200)throw Error(`browse.sh returned HTTP ${t.status}`);let n=ke(t.body),r=Array.isArray(n)?n:n.skills??[];return Dh=r,r})();try{return await Oh}catch(e){throw Oh=void 0,e}}async function Ah(e,t){let n=await kh(t),r=e.trim().toLowerCase();return r?n.filter(e=>[e.title??``,e.name??``,e.description??``,e.hostname??``,...e.tags??[]].join(` `).toLowerCase().includes(r)).map(e=>({name:e.slug,displayName:e.title||e.name||e.task||e.slug,summary:e.description||``,source:`browseSh`,qualityScore:null,installHint:`upskill browse:${e.hostname}/${e.task}`,sourceRepo:e.hostname})):[]}const jh=/^[A-Za-z0-9._-]+$/;function Mh(e){return!e||e===`.`||e===`..`?!1:jh.test(e)}function Nh(e){let t;if(e.startsWith(`browse:`))t=e.slice(7);else{let n=e.match(/^https:\/\/browse\.sh\/skills\/([^/?#]+)\/([^/?#]+?)\/?$/);n&&(t=`${n[1]}/${n[2]}`)}if(!t)return null;let n=t.indexOf(`/`);if(n<0)return null;let r=t.slice(0,n),i=t.slice(n+1);if(!r||!i||i.includes(`/`)||!Mh(r)||!Mh(i))return null;let a=Eh(r);return Mh(a)?{hostname:a,task:i}:null}function Ph(e,t){let n=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(n)for(let e of n[1].split(/\r?\n/)){let n=e.match(/^([A-Za-z_][A-Za-z0-9_-]*)\s*:\s*(.*)$/);if(!n||n[1]!==t)continue;let r=n[2].trim();return(r.startsWith(`"`)&&r.endsWith(`"`)||r.startsWith(`'`)&&r.endsWith(`'`))&&(r=r.slice(1,-1)),r||void 0}}function Fh(e,t){let n=e.updated?` · updated ${e.updated}`:``;return[`> [!NOTE] **Imported from browse.sh** — original slug: \`${t}\``,`>`,"> **SLICC adaptation:** use `playwright-cli` — you are running inside the user's real browser session, so the bot-detection workarounds the upstream skill assumes are usually unnecessary.",`>`,`> Source: <https://browse.sh/skills/${t}>${n}`].join(`
180
+ `}const Xm=Symbol(`mount:timeout`),Zm=Symbol(`mount:no-panel`);async function Qm(e,t){let n=He.generateId(),r=!1,i=!1,a=Ue({id:n,html:Ym(`directory`,[],t),onAction:(e,t)=>$m(e,t)},e.onUpdate).catch(e=>{if(r)return Xm;if(i)return Zm;throw e}),o,s=new Promise(e=>{o=setTimeout(()=>{r=!0,He.cancel(n,`mount: timed out`),e(Xm)},3e5)}),c=new Promise(e=>{He.waitForMount(n,5e3).then(()=>{},()=>{r||(i=!0,He.cancel(n,`mount: panel did not render the approval card`),e(Zm))})}),l=await Promise.race([a,s,c]);if(o&&clearTimeout(o),l===Xm)throw Error(`mount: timed out after 5 minute(s) waiting for user approval`);if(l===Zm)throw Error(`mount: chat panel did not render the approval card — open the chat panel and retry`);if(!l)throw Error(`mount: tool UI not available`);let u=l;if(u.denied)throw Error(`mount: denied by user`);if(u.cancelled)throw Error(`mount: cancelled`);if(u.error)throw Error(`mount: ${u.error}`);if(!u.handle)throw Error(`mount: no directory selected`);return u.handle}async function $m(e,t){if(e!==`approve`)return{denied:!0};let n=t;if(n?.handleInIdb&&typeof n.idbKey==`string`)try{let e=await Jt(n.idbKey);return e?(await Kt(e),{approved:!0,handle:e}):{error:`No directory handle found in storage`}}catch(e){return{error:e instanceof Error?e.message:String(e)}}if(n?.cancelled)return{cancelled:!0};if(n?.error)return{error:String(n.error)};try{return{approved:!0,handle:await window.showDirectoryPicker({mode:`readwrite`})}}catch(e){return e instanceof Error&&e.name===`AbortError`?{cancelled:!0}:{error:e instanceof Error?e.message:String(e)}}}function eh(e){let t=e?.parts;return t?.length!==1||t[0]?.type!==`Literal`?null:t[0].value??null}function th(e){return{type:`Word`,parts:[{type:`Literal`,value:e}]}}function nh(e){for(let t of e.args){let e=eh(t);if(e===`-o`||e===`--out`)return!0}return!1}function rh(e){for(let t of e.redirections){let e=t.operator,n=t.fd;if(e===`&>`||e===`&>>`||(e===`>`||e===`>>`||e===`>|`)&&(n==null||n===1))return!0}return!1}function ih(e){eh(e.name)!==`say`||nh(e)||(e.args=[th(`-o`),th(`-`),...e.args])}function ah(e,t){if(Array.isArray(e)){for(let n of e)ah(n,t);return}if(!e||typeof e!=`object`)return;let n=e;if(n.type===`Pipeline`&&Array.isArray(n.commands)){let e=n.commands;for(let n=0;n<e.length;n++){let r=e[n],i=e.length>1&&n<e.length-1,a=t||i||r?.type===`SimpleCommand`&&rh(r);r?.type===`SimpleCommand`&&a&&ih(r),ah(r,a)}return}if(n.type===`CommandSubstitution`||n.type===`ProcessSubstitution`){ah(n.body,!0);return}for(let e of Object.values(n))ah(e,t)}const oh={name:`say-stdio`,transform(e){return ah(e.ast,!1),{ast:e.ast}}};function sh(e){if(e?.trim())return e.split(`,`).map(e=>e.trim()).filter(Boolean)}function ch(e){if(!e)return!1;let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`yes`}function lh(e){return e.map(e=>{let t=e.boost?parseFloat(e.boost):NaN,n=Number.isFinite(t)?t:void 0;return{name:e.name,displayName:e.displayName||e.name,description:e.description||``,source:{repo:e.repo,path:e.path||void 0,skill:e.skill||void 0,installAll:ch(e.installAll)},affinity:{apps:sh(e.apps),tasks:sh(e.tasks),role:sh(e.role),purpose:sh(e.purpose)},priority:n}})}const uh={apps:3,tasks:2,role:1,purpose:1};function dh(e,t){return e.map(e=>{let n=0,r=[],i=(e.affinity.apps??[]).filter(e=>t.apps.includes(e));i.length&&(n+=i.length*uh.apps,r.push(`apps(${i.join(`, `)})`));let a=(e.affinity.tasks??[]).filter(e=>t.tasks.includes(e));return a.length&&(n+=a.length*uh.tasks,r.push(`tasks(${a.join(`, `)})`)),(e.affinity.role??[]).includes(t.role)&&(n+=uh.role,r.push(`role(${t.role})`)),(e.affinity.purpose??[]).includes(t.purpose)&&(n+=uh.purpose,r.push(`purpose(${t.purpose})`)),n*=e.priority??1,{entry:e,score:n,matchReasons:r}}).filter(e=>e.score>0).sort((e,t)=>t.score-e.score)}function fh(e){let t=`upskill ${e.repo}`;return e.path&&(t+=` --path ${e.path}`),e.installAll?t+=` --all`:e.skill&&(t+=` --skill ${e.skill}`),t}async function ph(e){let t=new Set;try{let n=await e.readDir(Pi);for(let e of n)e.type===`directory`&&t.add(e.name)}catch{}let n=[`.agents`,`.claude`];try{let r=await e.readDir(`/`);for(let i of r)if(i.type===`directory`)for(let r of n)try{let n=`/${i.name}/${r}/skills`,a=await e.readDir(n);for(let e of a)e.type===`directory`&&t.add(e.name)}catch{}}catch{}return t}function mh(e){return{purpose:e.purpose??``,role:e.role??``,tasks:Array.isArray(e.tasks)?e.tasks:[],apps:Array.isArray(e.apps)?e.apps:[],name:e.name??``,company:typeof e.company==`string`?e.company:void 0}}function hh(e){return typeof e!=`string`||!e?null:ne(e)||null}function gh(e,t){if(t.length===0)return e;let n=new Set(t.map(e=>e.name));return[...e.filter(e=>!n.has(e.name)),...t]}async function _h(e,t){try{let n=hh(t);if(!n)return[];let r=await e(`${Ii}${n}.json`,{headers:{Accept:`application/json`}});return r.status===200?lh(ke(r.body).data):[]}catch{return[]}}async function vh(e){let t;try{t=await e(Li,{headers:{Accept:`application/json`}})}catch(e){throw Error(Ki(e,Li))}if(t.status!==200)throw Error(`HTTP ${t.status}`);return lh(ke(t.body).data)}function yh(e,t,n){let r=e.entry.source;if(r.skill){let e=n.get(r.skill);return e?{skillPath:e,skillName:r.skill}:r.path?{skillPath:r.path.replace(/^\/|\/$/g,``),skillName:r.skill}:{error:`skill "${r.skill}" not found in ${t}`}}if(r.path)return{skillPath:r.path.replace(/^\/|\/$/g,``),skillName:e.entry.name};let i=n.get(e.entry.name);return i?{skillPath:i,skillName:e.entry.name}:{error:`skill "${e.entry.name}" not found in ${t} and no explicit path provided`}}async function bh(e,t,n,r,i,a,o,s,c){let l=e.entry.source,u=l.path.replace(/^\/|\/$/g,``),d=o<s?` (~${Math.round((s-o)*(Date.now()-c)/o/1e3)}s remaining)`:``,f=[];for(let[e,t]of r)(t===u||t.startsWith(`${u}/`))&&f.push({name:e,path:t});if(f.length===0){let n=`no skills found under "${l.path}" in ${t}`;return{results:[{ok:!1,name:e.entry.name,error:n}],line:`[${o}/${s}] Failed "${e.entry.name}" bundle from ${t}: ${n}${d}\n`}}let p=Date.now(),m=0,h=0,g=[];for(let e of f){if(i.has(e.name))continue;let t=await ra(e.path,e.name,n,a,!1);t.ok?(g.push({ok:!0,name:e.name}),m++):(g.push({ok:!1,name:e.name,error:t.error}),h++)}let _=((Date.now()-p)/1e3).toFixed(1),v;return v=m===0&&h===0?`[${o}/${s}] Skipped "${e.entry.name}" bundle from ${t}: all sub-skills already installed${d}\n`:h===0?`[${o}/${s}] Installed "${e.entry.name}" bundle (${m} skill(s)) from ${t} (${_}s)${d}\n`:`[${o}/${s}] Installed "${e.entry.name}" bundle (${m}/${m+h} skill(s)) from ${t} (${_}s)${d}\n`,{results:g,line:v}}async function xh(e,t,n,r,i,a,o,s,c,l){let u=e.entry.source,d=s<c?` (~${Math.round((c-s)*(Date.now()-l)/s/1e3)}s remaining)`:``,f=await ia(n,r,i,u.path);if(f.error)return{results:[{ok:!1,name:e.entry.name,error:f.error}],line:`[${s}/${c}] Failed "${e.entry.name}" bundle from ${t}: ${f.error}${d}\n`};let p=Date.now(),m=0,h=0,g=[];for(let e of f.skills){if(a.has(e.name))continue;let t=await na(n,r,e.path,e.name,o,i,!1);t.exitCode===0?(g.push({ok:!0,name:e.name}),m++):(g.push({ok:!1,name:e.name,error:t.stderr.trim()}),h++)}let _=((Date.now()-p)/1e3).toFixed(1),v;return v=m===0&&h===0?`[${s}/${c}] Skipped "${e.entry.name}" bundle from ${t}: all sub-skills already installed${d}\n`:h===0?`[${s}/${c}] Installed "${e.entry.name}" bundle (${m} skill(s)) from ${t} (${_}s)${d}\n`:`[${s}/${c}] Installed "${e.entry.name}" bundle (${m}/${m+h} skill(s)) from ${t} (${_}s)${d}\n`,{results:g,line:v}}async function Sh(e,t,n,r,i,a,o,s){let c=new Map;for(let e of Object.keys(n))if(e.endsWith(`/SKILL.md`)){let t=e.replace(/\/SKILL\.md$/,``);c.set(t.split(`/`).pop()||t,t)}let l=[],u=``;for(let d of t){let t=d.entry.source;if(t.installAll&&t.path){r.count++;let t=await bh(d,e,n,c,o,s,r.count,i,a);l.push(...t.results),u+=t.line;continue}let f=yh(d,e,c);if(`error`in f){l.push({ok:!1,name:d.entry.name,error:f.error}),r.count++;let t=r.count<i?` (~${Math.round((i-r.count)*(Date.now()-a)/r.count/1e3)}s remaining)`:``;u+=`[${r.count}/${i}] Failed "${d.entry.name}" from ${e}: ${f.error}${t}\n`;continue}let{skillPath:p,skillName:m}=f,h=Date.now(),g=await ra(p,m,n,s,!1);r.count++;let _=((Date.now()-h)/1e3).toFixed(1),v=(Date.now()-a)/r.count,ee=Math.round((i-r.count)*v/1e3),te=r.count<i?` (~${ee}s remaining)`:``;g.ok?(l.push({ok:!0,name:m}),u+=`[${r.count}/${i}] Installed "${m}" from ${e} (${_}s)${te}\n`):(l.push({ok:!1,name:m,error:g.error}),u+=`[${r.count}/${i}] Failed "${m}" from ${e}: ${g.error}${te}\n`)}return{errors:[],results:l,output:u}}async function Ch(e,t,n,r,i,a,o,s,c,l){let u=await qi(c),d=[],f=``;for(let c of t){let t=c.entry.source;i.count++;let p=i.count<a?` (~${Math.round((a-i.count)*(Date.now()-o)/i.count/1e3)}s remaining)`:``;if(t.installAll&&t.path){let t=await xh(c,e,n,r,u,s,l,i.count,a,o);d.push(...t.results),f+=t.line;continue}let m=t.path?t.path.replace(/^\/|\/$/g,``):c.entry.name,h=t.skill||c.entry.name,g=await na(n,r,m,h,l,u,!1);g.exitCode===0?(f+=`[${i.count}/${a}] Installed "${h}" from ${e}${p}\n`,d.push({ok:!0,name:h})):(f+=`[${i.count}/${a}] Failed "${h}" from ${e}: ${g.stderr.trim()}${p}\n`,d.push({ok:!1,name:h,error:g.stderr.trim()}))}return{errors:[],results:d,output:f}}function wh(e,t,n){let r=``;for(let i of e){if(i.status===`rejected`){t.push(`upskill: unexpected error: ${i.reason}`);continue}r+=i.value.output;for(let e of i.value.errors)t.push(e);for(let e of i.value.results)e.ok?n.push(e.name):e.error&&t.push(`upskill: ${e.error}`)}return r}async function Th(e,t,n){let r=Date.now(),i=(e,t=[])=>({installedNames:[],errors:t,skipped:e,log:``,elapsedSeconds:(Date.now()-r)/1e3}),a=null;if(n)a=mh(n);else try{let t=await e.readDir(`/home`);for(let n of t)try{let t=await e.readTextFile(`/home/${n.name}/.welcome.json`);a=mh(JSON.parse(t));break}catch{}}catch{}if(!a)return i(`no-profile`);let o,s;try{let[n,r,i]=await Promise.all([vh(t),_h(t,a.company),ph(e)]);o=gh(n,r),s=i}catch(e){return i(`catalog-fetch`,[`upskill: failed to fetch skill catalog from ${Li}: ${e instanceof Error?e.message:String(e)}`])}let c=dh(o,a).filter(e=>!s.has(e.entry.name));if(c.length===0)return i(`all-installed`);let l=new Map;for(let e of c){let t=e.entry.source.repo,n=l.get(t);n?n.push(e):l.set(t,[e])}let u=c.length,d={count:0},f=[],p=[],m=``;m=wh(await Promise.allSettled(Array.from(l.entries()).map(async([n,i])=>{let[a,o]=n.split(`/`),c=await Wi(a,o,t);return c.status===`error`?Ch(n,i,a,o,d,u,r,s,t,e):Sh(n,i,zi(c.files),d,u,r,s,e)})),f,p);let h=(Date.now()-r)/1e3;return p.length>0&&(await ea(),m+=`\nInstalled ${p.length} recommended skill(s) in ${h.toFixed(1)}s\n`),{installedNames:p,errors:f,skipped:null,log:m,elapsedSeconds:h}}function Eh(e){let t=e.toLowerCase();return t.startsWith(`www.`)?t.slice(4):t}let Dh,Oh;async function kh(e){if(Dh)return Dh;if(Oh!==void 0)return Oh;Oh=(async()=>{let t;try{t=await e(Ri,{headers:{Accept:`application/json`}})}catch(e){throw Error(Ki(e,Ri))}if(t.status!==200)throw Error(`browse.sh returned HTTP ${t.status}`);let n=ke(t.body),r=Array.isArray(n)?n:n.skills??[];return Dh=r,r})();try{return await Oh}catch(e){throw Oh=void 0,e}}async function Ah(e,t){let n=await kh(t),r=e.trim().toLowerCase();return r?n.filter(e=>[e.title??``,e.name??``,e.description??``,e.hostname??``,...e.tags??[]].join(` `).toLowerCase().includes(r)).map(e=>({name:e.slug,displayName:e.title||e.name||e.task||e.slug,summary:e.description||``,source:`browseSh`,qualityScore:null,installHint:`upskill browse:${e.hostname}/${e.task}`,sourceRepo:e.hostname})):[]}const jh=/^[A-Za-z0-9._-]+$/;function Mh(e){return!e||e===`.`||e===`..`?!1:jh.test(e)}function Nh(e){let t;if(e.startsWith(`browse:`))t=e.slice(7);else{let n=e.match(/^https:\/\/browse\.sh\/skills\/([^/?#]+)\/([^/?#]+?)\/?$/);n&&(t=`${n[1]}/${n[2]}`)}if(!t)return null;let n=t.indexOf(`/`);if(n<0)return null;let r=t.slice(0,n),i=t.slice(n+1);if(!r||!i||i.includes(`/`)||!Mh(r)||!Mh(i))return null;let a=Eh(r);return Mh(a)?{hostname:a,task:i}:null}function Ph(e,t){let n=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(n)for(let e of n[1].split(/\r?\n/)){let n=e.match(/^([A-Za-z_][A-Za-z0-9_-]*)\s*:\s*(.*)$/);if(!n||n[1]!==t)continue;let r=n[2].trim();return(r.startsWith(`"`)&&r.endsWith(`"`)||r.startsWith(`'`)&&r.endsWith(`'`))&&(r=r.slice(1,-1)),r||void 0}}function Fh(e,t){let n=e.updated?` · updated ${e.updated}`:``;return[`> [!NOTE] **Imported from browse.sh** — original slug: \`${t}\``,`>`,"> **SLICC adaptation:** use `playwright-cli` — you are running inside the user's real browser session, so the bot-detection workarounds the upstream skill assumes are usually unnecessary.",`>`,`> Source: <https://browse.sh/skills/${t}>${n}`].join(`
181
181
  `)}function Ih(e){return e.replace(/(?:^|\n)> \[!NOTE\] \*\*Imported from browse\.sh\*\*[\s\S]*?(?:\n\n|$)/,`
182
182
  `)}function Lh(e,t){let n=e.match(/^(---\r?\n[\s\S]*?\r?\n---)(\r?\n|$)/);return n?`${n[1]}${n[2]||`
183
- `}\n${t}\n\n${e.slice(n[0].length)}`:`${t}\n\n${e}`}async function Rh(e,t,n){let r=`${e}/${t}`,i=`${Fi}/${e}/${t}`,a;try{let e=await n(i,{headers:{Accept:`application/json`}});if(e.status===404)return{ok:!1,error:`browse.sh skill "${r}" not found`};if(e.status!==200)return{ok:!1,error:`browse.sh returned HTTP ${e.status} for "${r}"`};a=ke(e.body)}catch(e){return{ok:!1,error:`failed to fetch browse.sh skill "${r}": ${Ui(e,i)}`}}let o;if(a.skillMdUrl)try{let e=await n(a.skillMdUrl,{headers:{Accept:`text/plain`}});e.status===200&&(o=Ae(e.body))}catch{}if(!o&&a.skillMd&&(o=a.skillMd),!o)return{ok:!1,error:`browse.sh skill "${r}" has no SKILL.md content`};let s=Ph(o,`name`),c=t.replace(/-[A-Za-z0-9]{4,8}$/,``),l=s||c||t;if(!Mh(l)||l.length>64)return{ok:!1,error:`refusing to install browse.sh skill with unsafe name "${l}"`};if(!Mh(e))return{ok:!1,error:`refusing to install browse.sh skill with unsafe hostname "${e}"`};let u=Fh(a,r);return{ok:!0,dirName:`browse-${e}-${l}`,slug:r,content:Lh(o,u)}}async function zh(e,t,n,r,i=!1){let a=await Rh(e,t,r);if(!a.ok)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let{dirName:o,slug:s,content:c}=a,l=`${ji}/${o}`;try{if(await n.stat(l),!i)return{stdout:``,stderr:`upskill: skill "${o}" already exists (use --force to overwrite)\n`,exitCode:1};await Hi(n,l,await na(n,o))}catch{}return await n.mkdir(l,{recursive:!0}),await n.writeFile(`${l}/SKILL.md`,c),await qi(n,o,{kind:`browse.sh`,source:s,skill:o,files:[`SKILL.md`]}),await Zi(),{stdout:`Installed skill "${o}" from browse.sh (${s})\n`,stderr:``,exitCode:0}}function Bh(){return"Discovery roots: /workspace/skills plus accessible **/.agents/skills/*, **/.claude/skills/*, **/.claude-plugin/marketplace.json skill collections anywhere in the VFS, and installed agent plugins (`plugin list`).\n"}function Vh(e){switch(e){case`native`:return`native`;case`agents`:return`.agents`;case`claude`:return`.claude`;case`marketplace`:return`marketplace`;case`plugin`:return`plugin`}}function Hh(e,t){let n=Math.max(4,...e.map(e=>e.name.length)),r=Math.max(20,97-n-2-11-1),i=`NAME`.padEnd(n),a=`─`.repeat(2+n+2+11+1+r),o=`${t}:\n\n`;o+=` ${i} SOURCE DESCRIPTION\n`,o+=`${a}\n`;for(let t of e){let e=t.description||``,i=e.length>r?`${e.slice(0,r-1)}…`:e;o+=` ${t.name.padEnd(n)} ${Vh(t.source).padEnd(11)} ${i}\n`}return o+=`\n${Bh()}`,o}function Uh(e){let t=`Skill: ${e.name}\n`;if(t+=`Description: ${e.description||`(none)`}\n`,t+=`Source: ${Vh(e.source)}\n`,t+=`Source root: ${e.sourceRoot}\n`,e.skillFilePath&&(t+=`Instructions: ${e.skillFilePath}\n`),e.shadowedPaths?.length){t+=`Shadowed paths:
183
+ `}\n${t}\n\n${e.slice(n[0].length)}`:`${t}\n\n${e}`}async function Rh(e,t,n){let r=`${e}/${t}`,i=`${Ri}/${e}/${t}`,a;try{let e=await n(i,{headers:{Accept:`application/json`}});if(e.status===404)return{ok:!1,error:`browse.sh skill "${r}" not found`};if(e.status!==200)return{ok:!1,error:`browse.sh returned HTTP ${e.status} for "${r}"`};a=ke(e.body)}catch(e){return{ok:!1,error:`failed to fetch browse.sh skill "${r}": ${Ki(e,i)}`}}let o;if(a.skillMdUrl)try{let e=await n(a.skillMdUrl,{headers:{Accept:`text/plain`}});e.status===200&&(o=Ae(e.body))}catch{}if(!o&&a.skillMd&&(o=a.skillMd),!o)return{ok:!1,error:`browse.sh skill "${r}" has no SKILL.md content`};let s=Ph(o,`name`),c=t.replace(/-[A-Za-z0-9]{4,8}$/,``),l=s||c||t;if(!Mh(l)||l.length>64)return{ok:!1,error:`refusing to install browse.sh skill with unsafe name "${l}"`};if(!Mh(e))return{ok:!1,error:`refusing to install browse.sh skill with unsafe hostname "${e}"`};let u=Fh(a,r);return{ok:!0,dirName:`browse-${e}-${l}`,slug:r,content:Lh(o,u)}}async function zh(e,t,n,r,i=!1){let a=await Rh(e,t,r);if(!a.ok)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let{dirName:o,slug:s,content:c}=a,l=`${Pi}/${o}`;try{if(await n.stat(l),!i)return{stdout:``,stderr:`upskill: skill "${o}" already exists (use --force to overwrite)\n`,exitCode:1};await Gi(n,l,await aa(n,o))}catch{}return await n.mkdir(l,{recursive:!0}),await n.writeFile(`${l}/SKILL.md`,c),await Xi(n,o,{kind:`browse.sh`,source:s,skill:o,files:[`SKILL.md`]}),await ea(),{stdout:`Installed skill "${o}" from browse.sh (${s})\n`,stderr:``,exitCode:0}}function Bh(){return"Discovery roots: /workspace/skills plus accessible **/.agents/skills/*, **/.claude/skills/*, **/.claude-plugin/marketplace.json skill collections anywhere in the VFS, and installed agent plugins (`plugin list`).\n"}function Vh(e){switch(e){case`native`:return`native`;case`agents`:return`.agents`;case`claude`:return`.claude`;case`marketplace`:return`marketplace`;case`plugin`:return`plugin`}}function Hh(e,t){let n=Math.max(4,...e.map(e=>e.name.length)),r=Math.max(20,97-n-2-11-1),i=`NAME`.padEnd(n),a=`─`.repeat(2+n+2+11+1+r),o=`${t}:\n\n`;o+=` ${i} SOURCE DESCRIPTION\n`,o+=`${a}\n`;for(let t of e){let e=t.description||``,i=e.length>r?`${e.slice(0,r-1)}…`:e;o+=` ${t.name.padEnd(n)} ${Vh(t.source).padEnd(11)} ${i}\n`}return o+=`\n${Bh()}`,o}function Uh(e){let t=`Skill: ${e.name}\n`;if(t+=`Description: ${e.description||`(none)`}\n`,t+=`Source: ${Vh(e.source)}\n`,t+=`Source root: ${e.sourceRoot}\n`,e.skillFilePath&&(t+=`Instructions: ${e.skillFilePath}\n`),e.shadowedPaths?.length){t+=`Shadowed paths:
184
184
  `;for(let n of e.shadowedPaths)t+=` - ${n}\n`}return t}function Wh(){return{stdout:`usage: upskill <command> [options]
185
185
 
186
186
  Install skills from GitHub repositories, the Tessl registry, or browse.sh.
@@ -269,7 +269,7 @@ Examples:
269
269
  upskill browse:weather.gov/get-forecast-1uezib
270
270
  upskill list --outdated
271
271
  upskill update --dry-run
272
- `,stderr:``,exitCode:0}}async function Gh(e,t,n,r){let i=e.slice(1).find(e=>e.startsWith(`-`));if(i)return{stdout:``,stderr:`skill: unknown option "${i}" for list\n`,exitCode:1};let a=await n.discoverSkills(t);if(a.length===0)return{stdout:`No discoverable skills found.\n\n${Bh()}Install skills with: upskill owner/repo --all\n`,stderr:``,exitCode:0};let{collisions:o}=await xr(t,vr(r));return{...Sr(`skill`,Hh(a,`Discoverable skills`),o,{builtinNames:new Set(pt())}),exitCode:0}}function Kh(e){return C(`skill`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return{stdout:`usage: skill <command> [options]
272
+ `,stderr:``,exitCode:0}}async function Gh(e,t,n,r){let i=e.slice(1).find(e=>e.startsWith(`-`));if(i)return{stdout:``,stderr:`skill: unknown option "${i}" for list\n`,exitCode:1};let a=await n.discoverSkills(t);if(a.length===0)return{stdout:`No discoverable skills found.\n\n${Bh()}Install skills with: upskill owner/repo --all\n`,stderr:``,exitCode:0};let{collisions:o}=await wr(t,xr(r));return{...Sr(`skill`,Hh(a,`Discoverable skills`),o,{builtinNames:new Set(pt())}),exitCode:0}}function Kh(e){return C(`skill`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return{stdout:`usage: skill <command> [options]
273
273
 
274
274
  Commands:
275
275
  list List discoverable skills
@@ -288,18 +288,18 @@ 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-xfcvSHrM.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-Q90o6PXo.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
- `,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=>Qi(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 Ri(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 zi(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 Wi(t),d=await Ki(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,`${ji}/${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 qi(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 Vi(e,t,a,i??`main`);if(s.status===`ok`){let i=Ii(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 Bi(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])=>Li(e)))}function ig(e){return new Map([...e].sort(([e],[t])=>e.localeCompare(t)))}function ag(e,t){let n=t?`${t}/`:``,r=new Map;for(let[t,i]of Object.entries(e)){if(!t.startsWith(n)||t.endsWith(`/`))continue;let e=t.slice(n.length);Li(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=`${ji}/${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(`${ji}/${n}`,{recursive:!0}),await e.writeFile(l,d),await qi(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=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=Qi(t);return i?{version:1,kind:`github`,source:`${i.owner}/${i.repo}`,skill:e,ref:r??i.branch,path:n??i.path,installed:new Date().toISOString()}:null}async function ug(e,t,n){if(t.length===0){let t=await Gi(e);return{targets:t.provenanced,missing:[],skipped:t.unattributed}}let r=[],i=[];for(let a of t){let t=await Ji(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\`
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=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=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: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\`
295
295
  `:`upskill: no install provenance for "${e.name}" — re-run with --from <owner>/<repo> (optionally --path <dir>) to record its source, or reinstall it once
296
296
  `}function fg(e,t){return`${e} ${t}${e===1?``:`s`}`}function pg(e){return`\nSkipped ${fg(e.length,`skill`)} with no install provenance — not checked:\n ${e.join(`, `)}\n Runtime-bundled skills have no record by design; \`upgrade apply\` keeps those current.
297
297
  For the rest, record a source once with \`upskill update <skill> --from <owner>/<repo> --dry-run\`,
298
298
  after which a bare \`upskill update\` sweeps them too.
299
299
  `}function mg(e,t,n,r,i){let a=t?`Skill update (dry run — nothing written):
300
300
  `:`Skill update:
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 Zi();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-xfcvSHrM.js`).then(e=>e.r)).discoverSkills(e),{collisions:i}=await xr(e,vr(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(pt())}),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=`${Mi}/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(Ui(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=ke(r.body);if(!i.data)return[];let a=new Map;for(let e of i.data){if(e.type!==`skill`)continue;let t=e.attributes,n=Xi(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=`${Mi}/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: ${Ui(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=Xi(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(Mi).host,fetch:Cg},{label:`browse.sh`,host:new URL(Fi).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+=`
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-Q90o6PXo.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(pt())}),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=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>
@@ -315,21 +315,21 @@ Examples:
315
315
  `,stderr:o,exitCode:0};let l=``;for(let e of c)l+=jg(e);return{stdout:l,stderr:o,exitCode:0}}async function Ng(e,t,n){if(n){let n=await Th(e,t);return n.skipped===`no-profile`?{stdout:``,stderr:`upskill: no user profile found. Complete the welcome onboarding first, or create /home/<name>/.welcome.json manually.
316
316
  `,exitCode:1}:n.skipped===`catalog-fetch`?{stdout:``,stderr:n.errors.map(e=>`${e}\n`).join(``),exitCode:1}:n.skipped===`all-installed`?{stdout:`No new skill recommendations — all matching skills are already installed.
317
317
  `,stderr:``,exitCode:0}:{stdout:n.log,stderr:n.errors.map(e=>`${e}\n`).join(``),exitCode:+(n.errors.length>0)}}let r=null;try{let t=await e.readDir(`/home`);for(let n of t)try{let t=await e.readTextFile(`/home/${n.name}/.welcome.json`);r=JSON.parse(t);break}catch{}}catch{}if(!r)return{stdout:``,stderr:`upskill: no user profile found. Complete the welcome onboarding first, or create /home/<name>/.welcome.json manually.
318
- `,exitCode:1};let i,a;try{let[n,o,s]=await Promise.all([(async()=>{let e=await t(Pi,{headers:{Accept:`application/json`}});if(e.status!==200)throw Error(`HTTP ${e.status}`);return lh(ke(e.body).data)})(),_h(t,r.company),ph(e)]);i=gh(n,o),a=s}catch(e){return{stdout:``,stderr:`upskill: failed to fetch skill catalog from ${Pi}: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let o=dh(i,r).filter(e=>!a.has(e.entry.name));if(o.length===0)return{stdout:`No new skill recommendations — all matching skills are already installed.
318
+ `,exitCode:1};let i,a;try{let[n,o,s]=await Promise.all([(async()=>{let e=await t(Li,{headers:{Accept:`application/json`}});if(e.status!==200)throw Error(`HTTP ${e.status}`);return lh(ke(e.body).data)})(),_h(t,r.company),ph(e)]);i=gh(n,o),a=s}catch(e){return{stdout:``,stderr:`upskill: failed to fetch skill catalog from ${Li}: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let o=dh(i,r).filter(e=>!a.has(e.entry.name));if(o.length===0)return{stdout:`No new skill recommendations — all matching skills are already installed.
319
319
  `,stderr:``,exitCode:0};let s=`Recommended skills for you:
320
320
 
321
321
  `,c=0;for(let e of o){c++;let t=fh(e.entry.source);s+=` ${c}. ${e.entry.displayName.padEnd(35)} score: ${Math.round(e.score)}\n`,s+=` ${e.entry.description}\n`,s+=` Match: ${e.matchReasons.join(`, `)}\n`,s+=` Install: ${t}\n\n`}return s+=`To install all recommended: upskill recommendations --install
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-xfcvSHrM.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 Ji(n,t),a=i?Yi(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
- `,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 ea(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 $i(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 $i(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 Wi(r),l=await ta(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 Vi(i,a,r,o);if(e.status===`ok`){let r=await Ki(i,a,o,c,!0,s),l=await Lg(u,i,a,Ii(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 Zi()),{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=Qi(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
- `,exitCode:1};let a=await wg(i,r);if(`error`in a)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let o=await Wi(r);return $i(a.owner,a.repo,a.skillPath,a.skillName,n,o,t,r)}function Kg(){return{stdout:`usage: afplay [-v volume] [-r rate] <file>
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-Q90o6PXo.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
+ `,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
+ `,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
 
329
329
  Plays an audio file using the Web Audio API.
330
330
  -v volume Volume level (0 to 1, default 1)
331
331
  -r rate Playback rate (0.25 to 4, default 1)
332
- `,stderr:``,exitCode:0}}function qg(e){return{stdout:``,stderr:`afplay: ${e}\n`,exitCode:1}}function Jg(e){return e instanceof Error?e.message:String(e)}const Yg={"-v":`a volume value`,"-r":`a rate value`};function Xg(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<0||t>1?`volume must be between 0 and 1`:null}function Zg(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<.25||t>4?`rate must be between 0.25 and 4`:null}function Qg(e,t,n){switch(t){case`-v`:return Xg(n)||(e.volume=Number.parseFloat(n),null);case`-r`:return Zg(n)||(e.rate=Number.parseFloat(n),null);default:return`unknown option: ${t}`}}function $g(e){let t={volume:1,rate:1,filePath:null};for(let n=0;n<e.length;n++){let r=e[n];if(Object.hasOwn(Yg,r)){let i=n+1<e.length&&!e[n+1].startsWith(`-`)?e[++n]:null;if(i==null)return qg(`${r} requires ${Yg[r]}`);let a=Qg(t,r,i);if(a)return qg(a);continue}if(r.startsWith(`-`))return qg(`unknown option: ${r}`);if(t.filePath!==null)return qg(`only one file can be specified`);t.filePath=r}return t}let e_=null;function t_(){return(!e_||e_.state===`closed`)&&(e_=new AudioContext),e_}function n_(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function r_(e,t){let n=t.fs.resolvePath(t.cwd,e);try{return{bytes:new Uint8Array(await t.fs.readFileBuffer(n)),fullPath:n}}catch{return qg(`cannot open ${e}: No such file`)}}function i_(e,t){return wr(e).startsWith(`audio/`)?null:qg(`${t} is not an audio file`)}async function a_(e,t,n,r,i){try{let n=wr(t);return await i.call(`play-audio`,{bytes:n_(e),mimeType:n,volume:r},{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return qg(`failed to play ${n}: ${Jg(e)}`)}}async function o_(e,t,n,r){try{let t=t_();t.state===`suspended`&&await t.resume();let i=await t.decodeAudioData(n_(e)),a=t.createBufferSource();a.buffer=i,a.playbackRate.value=r;let o=t.createGain();return o.gain.value=n,a.connect(o),o.connect(t.destination),new Promise(e=>{a.onended=()=>{e({stdout:``,stderr:``,exitCode:0})},a.start()})}catch(e){return qg(`failed to play ${t}: ${Jg(e)}`)}}async function s_(e,t,n,r){let i=be()&&typeof AudioContext<`u`,a=b();if(!i&&!a)return qg(`Web Audio API unavailable in this environment`);let o=await r_(e,r);return`exitCode`in o?o:i_(o.fullPath,e)||(i?o_(o.bytes,e,t,n):a_(o.bytes,o.fullPath,e,t,a))}function c_(){return C(`afplay`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return Kg();let n=$g(e);return`exitCode`in n?n:n.filePath?s_(n.filePath,n.volume,n.rate,t):Kg()})}function l_(){return C(`chime`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?{stdout:`usage: chime
332
+ `,stderr:``,exitCode:0}}function qg(e){return{stdout:``,stderr:`afplay: ${e}\n`,exitCode:1}}function Jg(e){return e instanceof Error?e.message:String(e)}const Yg={"-v":`a volume value`,"-r":`a rate value`};function Xg(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<0||t>1?`volume must be between 0 and 1`:null}function Zg(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<.25||t>4?`rate must be between 0.25 and 4`:null}function Qg(e,t,n){switch(t){case`-v`:return Xg(n)||(e.volume=Number.parseFloat(n),null);case`-r`:return Zg(n)||(e.rate=Number.parseFloat(n),null);default:return`unknown option: ${t}`}}function $g(e){let t={volume:1,rate:1,filePath:null};for(let n=0;n<e.length;n++){let r=e[n];if(Object.hasOwn(Yg,r)){let i=n+1<e.length&&!e[n+1].startsWith(`-`)?e[++n]:null;if(i==null)return qg(`${r} requires ${Yg[r]}`);let a=Qg(t,r,i);if(a)return qg(a);continue}if(r.startsWith(`-`))return qg(`unknown option: ${r}`);if(t.filePath!==null)return qg(`only one file can be specified`);t.filePath=r}return t}let e_=null;function t_(){return(!e_||e_.state===`closed`)&&(e_=new AudioContext),e_}function n_(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function r_(e,t){let n=t.fs.resolvePath(t.cwd,e);try{return{bytes:new Uint8Array(await t.fs.readFileBuffer(n)),fullPath:n}}catch{return qg(`cannot open ${e}: No such file`)}}function i_(e,t){return Dr(e).startsWith(`audio/`)?null:qg(`${t} is not an audio file`)}async function a_(e,t,n,r,i){try{let n=Dr(t);return await i.call(`play-audio`,{bytes:n_(e),mimeType:n,volume:r},{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return qg(`failed to play ${n}: ${Jg(e)}`)}}async function o_(e,t,n,r){try{let t=t_();t.state===`suspended`&&await t.resume();let i=await t.decodeAudioData(n_(e)),a=t.createBufferSource();a.buffer=i,a.playbackRate.value=r;let o=t.createGain();return o.gain.value=n,a.connect(o),o.connect(t.destination),new Promise(e=>{a.onended=()=>{e({stdout:``,stderr:``,exitCode:0})},a.start()})}catch(e){return qg(`failed to play ${t}: ${Jg(e)}`)}}async function s_(e,t,n,r){let i=be()&&typeof AudioContext<`u`,a=b();if(!i&&!a)return qg(`Web Audio API unavailable in this environment`);let o=await r_(e,r);return`exitCode`in o?o:i_(o.fullPath,e)||(i?o_(o.bytes,e,t,n):a_(o.bytes,o.fullPath,e,t,a))}function c_(){return C(`afplay`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return Kg();let n=$g(e);return`exitCode`in n?n:n.filePath?s_(n.filePath,n.volume,n.rate,t):Kg()})}function l_(){return C(`chime`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?{stdout:`usage: chime
333
333
 
334
334
  Plays a notification chime sound.
335
335
  Alias for: afplay /shared/sounds/chime.mp3
@@ -345,7 +345,7 @@ Examples:
345
345
  `)+`
346
346
  `}function L_(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 R_=new Set([`check`,`lint`,`format`]);function z_(e,t,n){let r=e,i=(Array.isArray(r.message)?r.message.map(e=>e&&typeof e==`object`&&typeof e.content==`string`?e.content:``).join(``):``)||(typeof r.description==`string`?r.description:String(r.description??``)),a=r.location?.span,o=Array.isArray(a)&&typeof a[0]==`number`?a[0]:null;if(o===null)return{severity:typeof r.severity==`string`?r.severity:`unknown`,category:typeof r.category==`string`?r.category:`unknown`,message:i,filePath:t,line:null,column:null};let s=new TextEncoder().encode(n),c=new TextDecoder().decode(s.slice(0,Math.max(0,Math.min(o,s.length)))),l=1;for(let e of c)e===`
347
347
  `&&l++;let u=c.lastIndexOf(`
348
- `),d=Array.from(c.slice(u+1)).length+1;return{severity:typeof r.severity==`string`?r.severity:`unknown`,category:typeof r.category==`string`?r.category:`unknown`,message:i,filePath:t,line:l,column:d}}const B_=`2.5.14`,V_=`6.0.0`,H_=Si,U_=`@biomejs/wasm-web@${B_} @biomejs/js-api@${V_} esbuild-wasm@${H_}`,W_={"@biomejs/wasm-web":`@biomejs/wasm-web@${B_}`,"@biomejs/js-api":`@biomejs/js-api@${V_}`,"esbuild-wasm":`esbuild-wasm@${H_}`},G_=`run: ${F} ${U_} (no network fallback)`,K_=`biome - thin wrapper over the ipk-loaded @biomejs/wasm-web
348
+ `),d=Array.from(c.slice(u+1)).length+1;return{severity:typeof r.severity==`string`?r.severity:`unknown`,category:typeof r.category==`string`?r.category:`unknown`,message:i,filePath:t,line:l,column:d}}const B_=`2.5.14`,V_=`6.0.0`,H_=Ti,U_=`@biomejs/wasm-web@${B_} @biomejs/js-api@${V_} esbuild-wasm@${H_}`,W_={"@biomejs/wasm-web":`@biomejs/wasm-web@${B_}`,"@biomejs/js-api":`@biomejs/js-api@${V_}`,"esbuild-wasm":`esbuild-wasm@${H_}`},G_=`run: ${F} ${U_} (no network fallback)`,K_=`biome - thin wrapper over the ipk-loaded @biomejs/wasm-web
349
349
 
350
350
  Usage:
351
351
  biome <subcommand> [options] [files...]
@@ -392,7 +392,7 @@ Install:
392
392
  lint/format to run (loading the wasm-web ESM glue also needs the
393
393
  esbuild-wasm transpiler). There is no bundled binary, no CDN
394
394
  fallback; a missing package exits non-zero with a clear \`ipk add\` hint.
395
- `;function q_(e,t,n){let r=e[t+1];if(typeof r!=`string`||r.startsWith(`-`))throw Error(`biome: ${n} requires a value`);return r}function J_(e){if(!e)throw Error(`biome: --reporter requires a value`);if(e!==`plain`&&e!==`json`)throw Error(`biome: unknown reporter: ${e}`);return e}function Y_(e){return e.some((t,n)=>t===`--json`||t===`--reporter=json`||t===`--reporter`&&e[n+1]===`json`)}function X_(e,t,n){let r=t[n];switch(r){case`-h`:case`--help`:return e.showHelp=!0,n;case`-v`:case`--version`:return e.showVersion=!0,n;case`--write`:return e.write=!0,n;case`--check`:return e.check=!0,n;case`--json`:return e.reporter=`json`,n;case`--stdin-file-path`:return e.stdinFilePath=q_(t,n,r),n+1;case`--config-path`:return e.configPath=q_(t,n,r),n+1;case`--reporter`:return e.reporter=J_(q_(t,n,r)),n+1}return r.startsWith(`--stdin-file-path=`)?(e.stdinFilePath=Z_(r,`--stdin-file-path`),n):r.startsWith(`--config-path=`)?(e.configPath=Z_(r,`--config-path`),n):r.startsWith(`--reporter=`)?(e.reporter=J_(r.slice(11)),n):null}function Z_(e,t){let n=e.slice(t.length+1);if(!n)throw Error(`biome: ${t} requires a value`);return n}function Q_(e){let t={subcommand:null,paths:[],write:!1,check:!1,stdinFilePath:null,configPath:null,reporter:`plain`,showHelp:!1,showVersion:!1};if(e.length===0)return t.showHelp=!0,t;for(let n=0;n<e.length;n++){let r=e[n],i=X_(t,e,n);if(i!==null){n=i;continue}if(t.subcommand===null&&R_.has(r)){t.subcommand=r;continue}if(r.startsWith(`-`))throw Error(`biome: unknown option: ${r}`);t.paths.push(r)}if(t.write&&t.check)throw Error(`biome: --write and --check cannot be used together`);if(t.check&&t.subcommand!==`format`)throw Error(`biome: --check is only valid with the format subcommand`);return t}async function $_(e,t,n){let r=[],i=[];for(let a of n){let n=e.resolvePath(t,a);if(!await e.exists(n)){i.push(a);continue}(await e.stat?.(n))?.isDirectory?await ev(e,n,r):A_(n)&&r.push(n)}return{files:r,missing:i}}async function ev(e,t,n){let r=await e.readdir?.(t)??[];for(let i of r){if(i===`node_modules`||i.startsWith(`.git`))continue;let r=t===`/`?`/${i}`:`${t}/${i}`;(await e.stat?.(r))?.isDirectory?await ev(e,r,n):A_(r)&&n.push(r)}}async function tv(e){let t;try{t=await Cr(`@biomejs/wasm-web/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;try{let n=await e.reader.readFile(t.path),r=JSON.parse(n);return typeof r.version==`string`?r.version:null}catch{return null}}async function nv(e){let t;try{t=await Cr(`@biomejs/wasm-web/package.json`,e.fromDir,e.reader)}catch{return{ok:!1,missing:`@biomejs/wasm-web`}}if(t.type!==`file`)return{ok:!1,missing:`@biomejs/wasm-web`};try{if((await Cr(`@biomejs/js-api/web`,e.fromDir,e.reader)).type!==`file`)return{ok:!1,missing:`@biomejs/js-api`}}catch{return{ok:!1,missing:`@biomejs/js-api`}}try{if((await Cr(`esbuild-wasm/package.json`,e.fromDir,e.reader)).type!==`file`)return{ok:!1,missing:`esbuild-wasm`}}catch{return{ok:!1,missing:`esbuild-wasm`}}return{ok:!0,wasmPkgDir:Ge(t.path).dir}}function rv(e,t){let n=j_(x(e));if(t===null)return n;let r=Ke(t),i=Ke(n),a=0;for(;a<r.length&&a<i.length&&r[a]===i[a];)a++;return[...Array.from({length:r.length-a},()=>`..`),...i.slice(a)].join(`/`)}const iv=`
395
+ `;function q_(e,t,n){let r=e[t+1];if(typeof r!=`string`||r.startsWith(`-`))throw Error(`biome: ${n} requires a value`);return r}function J_(e){if(!e)throw Error(`biome: --reporter requires a value`);if(e!==`plain`&&e!==`json`)throw Error(`biome: unknown reporter: ${e}`);return e}function Y_(e){return e.some((t,n)=>t===`--json`||t===`--reporter=json`||t===`--reporter`&&e[n+1]===`json`)}function X_(e,t,n){let r=t[n];switch(r){case`-h`:case`--help`:return e.showHelp=!0,n;case`-v`:case`--version`:return e.showVersion=!0,n;case`--write`:return e.write=!0,n;case`--check`:return e.check=!0,n;case`--json`:return e.reporter=`json`,n;case`--stdin-file-path`:return e.stdinFilePath=q_(t,n,r),n+1;case`--config-path`:return e.configPath=q_(t,n,r),n+1;case`--reporter`:return e.reporter=J_(q_(t,n,r)),n+1}return r.startsWith(`--stdin-file-path=`)?(e.stdinFilePath=Z_(r,`--stdin-file-path`),n):r.startsWith(`--config-path=`)?(e.configPath=Z_(r,`--config-path`),n):r.startsWith(`--reporter=`)?(e.reporter=J_(r.slice(11)),n):null}function Z_(e,t){let n=e.slice(t.length+1);if(!n)throw Error(`biome: ${t} requires a value`);return n}function Q_(e){let t={subcommand:null,paths:[],write:!1,check:!1,stdinFilePath:null,configPath:null,reporter:`plain`,showHelp:!1,showVersion:!1};if(e.length===0)return t.showHelp=!0,t;for(let n=0;n<e.length;n++){let r=e[n],i=X_(t,e,n);if(i!==null){n=i;continue}if(t.subcommand===null&&R_.has(r)){t.subcommand=r;continue}if(r.startsWith(`-`))throw Error(`biome: unknown option: ${r}`);t.paths.push(r)}if(t.write&&t.check)throw Error(`biome: --write and --check cannot be used together`);if(t.check&&t.subcommand!==`format`)throw Error(`biome: --check is only valid with the format subcommand`);return t}async function $_(e,t,n){let r=[],i=[];for(let a of n){let n=e.resolvePath(t,a);if(!await e.exists(n)){i.push(a);continue}(await e.stat?.(n))?.isDirectory?await ev(e,n,r):A_(n)&&r.push(n)}return{files:r,missing:i}}async function ev(e,t,n){let r=await e.readdir?.(t)??[];for(let i of r){if(i===`node_modules`||i.startsWith(`.git`))continue;let r=t===`/`?`/${i}`:`${t}/${i}`;(await e.stat?.(r))?.isDirectory?await ev(e,r,n):A_(r)&&n.push(r)}}async function tv(e){let t;try{t=await Er(`@biomejs/wasm-web/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;try{let n=await e.reader.readFile(t.path),r=JSON.parse(n);return typeof r.version==`string`?r.version:null}catch{return null}}async function nv(e){let t;try{t=await Er(`@biomejs/wasm-web/package.json`,e.fromDir,e.reader)}catch{return{ok:!1,missing:`@biomejs/wasm-web`}}if(t.type!==`file`)return{ok:!1,missing:`@biomejs/wasm-web`};try{if((await Er(`@biomejs/js-api/web`,e.fromDir,e.reader)).type!==`file`)return{ok:!1,missing:`@biomejs/js-api`}}catch{return{ok:!1,missing:`@biomejs/js-api`}}try{if((await Er(`esbuild-wasm/package.json`,e.fromDir,e.reader)).type!==`file`)return{ok:!1,missing:`esbuild-wasm`}}catch{return{ok:!1,missing:`esbuild-wasm`}}return{ok:!0,wasmPkgDir:Ge(t.path).dir}}function rv(e,t){let n=j_(x(e));if(t===null)return n;let r=Ke(t),i=Ke(n),a=0;for(;a<r.length&&a<i.length&&r[a]===i[a];)a++;return[...Array.from({length:r.length-a},()=>`..`),...i.slice(a)].join(`/`)}const iv=`
396
396
  const fs = require('fs');
397
397
  const JSH_WRAP_PREFIX = ${JSON.stringify(M_)};
398
398
  const JSH_WRAP_SUFFIX = ${JSON.stringify(`
@@ -524,10 +524,10 @@ async function main() {
524
524
  process.stdout.write(JSON.stringify(results));
525
525
  }
526
526
  main().catch((err) => { process.stderr.write(String(err && err.message || err) + '\\n'); process.exit(1); });
527
- `;function av(e){let t=e.match(/Cannot find module '(@biomejs\/[^']+)'/);if(!t)return null;let n=t[1].split(`/`).slice(0,2).join(`/`);return`biome: ${n} is not installed (run: ${F} ${W_[n]??n}); ${G_}\n`}async function ov(e,t,n,r,i,a,o,s,c){let l={op:t,write:n,check:r,configuration:i,configurationRoot:a,reporter:o,files:s.map(e=>({path:e.path,biomePath:rv(e.path,a),source:e.source,wrap:P_(e.path)}))},u=[`node`,`[biome-helper]`,JSON.stringify(l),c];return sv(await gi(iv,u,e,void 0,{filename:`[biome-helper]`}))}function sv(e){if(e.exitCode!==0)return{results:[],stderr:av(e.stderr)??e.stderr,exitCode:e.exitCode};if(e.stdout.trim()===``){let t=av(e.stderr)??e.stderr.trim();return{results:[],stderr:t?`biome: helper exited 0 with no output: ${t.replace(/\n$/,``)}\n`:`biome: helper exited 0 with no output (nothing was linted)
527
+ `;function av(e){let t=e.match(/Cannot find module '(@biomejs\/[^']+)'/);if(!t)return null;let n=t[1].split(`/`).slice(0,2).join(`/`);return`biome: ${n} is not installed (run: ${F} ${W_[n]??n}); ${G_}\n`}async function ov(e,t,n,r,i,a,o,s,c){let l={op:t,write:n,check:r,configuration:i,configurationRoot:a,reporter:o,files:s.map(e=>({path:e.path,biomePath:rv(e.path,a),source:e.source,wrap:P_(e.path)}))},u=[`node`,`[biome-helper]`,JSON.stringify(l),c];return sv(await yi(iv,u,e,void 0,{filename:`[biome-helper]`}))}function sv(e){if(e.exitCode!==0)return{results:[],stderr:av(e.stderr)??e.stderr,exitCode:e.exitCode};if(e.stdout.trim()===``){let t=av(e.stderr)??e.stderr.trim();return{results:[],stderr:t?`biome: helper exited 0 with no output: ${t.replace(/\n$/,``)}\n`:`biome: helper exited 0 with no output (nothing was linted)
528
528
  `,exitCode:1}}try{return{results:JSON.parse(e.stdout),stderr:``,exitCode:0}}catch(t){let n=t instanceof Error?t.message:String(t),r=e.stderr.trim();return{results:[],stderr:r?`biome: failed to parse helper output: ${n} (helper stderr: ${r})\n`:`biome: failed to parse helper output: ${n}\n`,exitCode:1}}}function cv(e,t,n,r=``){if(e===`plain`)return t;let i=(t.stderr||t.stdout).trimEnd(),a=i?[{severity:t.exitCode===0?`information`:`error`,category:n,message:i,filePath:r,line:null,column:null}]:[],o={summary:{errors:t.exitCode===0?0:1,warnings:0,filesChecked:0,unformattedFiles:0},diagnostics:a,files:[]};return{stdout:`${JSON.stringify(o)}\n`,stderr:``,exitCode:t.exitCode}}async function lv(e,t){let n=await nv(t);if(!n.ok)return{stdout:``,stderr:`biome: ${n.missing} is not installed (run: ${F} ${W_[n.missing]??n.missing}); ${G_}\n`,exitCode:1};let r=`${n.wasmPkgDir}/biome_wasm_bg.wasm`;return await e.fs.exists(r)?{wasmPath:r}:{stdout:``,stderr:`biome: ${r} not found (reinstall: ${F} ${W_[`@biomejs/wasm-web`]})\n`,exitCode:1}}async function uv(e,t){if(t.paths.length===0&&e.stdin)return{inputs:[{path:t.stdinFilePath??`/stdin.ts`,source:P(e.stdin)}],missingErrText:``};if(t.paths.length===0)return{stdout:``,stderr:`biome: no files or directories specified
529
529
  `,exitCode:2};let n=await $_(e.fs,e.cwd,t.paths),r=n.missing.map(e=>`biome: ${e}: no such file or directory\n`).join(``),i=[];for(let t of n.files)i.push({path:t,source:await e.fs.readFile(t)});return i.length===0?{stdout:``,stderr:`${r}biome: no lintable files found\n`,exitCode:+(n.missing.length>0)}:{inputs:i,missingErrText:r}}async function dv(e,t,n,r,i){let a=[],o=[i],s=0,c=0,l=0;for(let i of r.results)t.reporter===`plain`&&i.diagnosticsText&&o.push(O_(i.diagnosticsText)),s+=i.errorCount,c+=i.warningCount,t.write&&i.formatted!==null&&!i.unchanged?(await e.fs.writeFile(i.path,i.formatted),l++):!t.write&&t.subcommand===`format`&&!t.check&&n.length===1&&n[0].path===i.path&&a.push(i.formatted??n[0].source);t.write&&l>0&&o.push(`biome: wrote ${l} file(s)\n`);let u=+(s>0||c>0||i.length>0);if(t.reporter===`json`){let e=i?[{severity:`error`,category:`io`,message:i.trimEnd(),filePath:``,line:null,column:null}]:[],t={summary:{errors:s+e.length,warnings:c,filesChecked:r.results.length,unformattedFiles:r.results.filter(e=>!e.unchanged).length},diagnostics:[...r.results.flatMap(e=>e.diagnostics),...e],files:r.results.map(e=>({path:e.path,unchanged:e.unchanged}))};return{stdout:`${JSON.stringify(t)}\n`,stderr:``,exitCode:u}}return{stdout:a.join(``),stderr:o.join(``),exitCode:u}}async function fv(e){let t=await tv(e);return t?{stdout:`${t}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`biome: @biomejs/wasm-web is not installed (run: ${F} @biomejs/wasm-web@${B_}); ${G_}\n`,exitCode:1}}async function pv(e,t){return e.showHelp?cv(e.reporter,{stdout:K_,stderr:``,exitCode:0},`usage`):e.showVersion?cv(e.reporter,await fv(t),`runtime`):null}function mv(e,t){let n=e.paths[0];if(!n)return``;try{return t.fs.resolvePath(t.cwd,n)}catch{return``}}async function hv(e,t){let n=L_(t),r=await pv(e,n);if(r)return r;if(e.subcommand===null)return cv(e.reporter,{stdout:``,stderr:`biome: missing subcommand (expected check, lint, or format)
530
- `,exitCode:2},`usage`);let i=await uv(t,e);if(`exitCode`in i)return cv(e.reporter,i,`io`);let a=e.paths.length===0&&t.stdin?t.cwd:Ge(i.inputs[0].path).dir,o=await w_(t.fs,t.cwd,a,e.configPath);if(!o.ok)return cv(e.reporter,{stdout:``,stderr:`${o.error}\n`,exitCode:o.exitCode},`configuration`,i.inputs[0].path);let s=await lv(t,n);if(`exitCode`in s)return cv(e.reporter,s,`runtime`,i.inputs[0].path);let c=await ov(t,e.subcommand,e.write,e.check,o.resolved?.configuration??null,o.resolved===null?null:Ge(o.resolved.path).dir,e.reporter,i.inputs,s.wasmPath);return c.exitCode===0?dv(t,e,i.inputs,c,i.missingErrText):cv(e.reporter,{stdout:``,stderr:i.missingErrText+c.stderr,exitCode:c.exitCode},`runtime`,i.inputs[0].path)}function gv(){return C(`biome`,async(e,t)=>{let n;try{n=Q_(e)}catch(t){return cv(Y_(e)?`json`:`plain`,{stdout:``,stderr:`${t instanceof Error?t.message:String(t)}\n`,exitCode:2},`usage`)}try{return await hv(n,t)}catch(e){if(n.reporter===`plain`)throw e;return cv(`json`,{stdout:``,stderr:`biome: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1},`runtime`,mv(n,t))}})}function _v(e=`biscotto`,t={}){return C(e,async(n,r)=>{let{runBiscotto:i}=await import(`./run-BAmXlRlW.js`);return i(e,n,r,t.getParentJid?.(),t.isScoop?.()===!0)})}function vv(e={}){let t=e.getFollowers??ie,n=e.getPanelRpc??b,r=e.getEmitter??(()=>null);return{listRuntimeIds(){return t().filter(e=>e.runtime===`slicc-cherry`).map(e=>e.runtimeId)},async emitSliccEvent(e,t,i){let a=r();if(a)try{return await a(e,t,i)?{delivered:!0}:{delivered:!1,reason:`the follower runtime is not connected to the leader`}}catch(e){return{delivered:!1,reason:`direct emit failed: ${e instanceof Error?e.message:String(e)}`}}let o=n();if(!o)return{delivered:!1,reason:`no page bridge to the leader tray (panel-RPC client)`};try{return(await o.call(`cherry-emit`,{runtimeId:e,name:t,detail:i}))?.delivered?{delivered:!0}:{delivered:!1,reason:`the follower runtime is not connected to the leader`}}catch(e){return{delivered:!1,reason:`panel-RPC delivery failed: ${e instanceof Error?e.message:String(e)}`}}}}}const yv=[`--detail`,`--runtime`];function bv(e){return{stdout:``,stderr:`cherry-emit: ${e}\n`,exitCode:1}}function xv(e){let t=w(e,{value:yv});return`error`in t?bv(t.error):{positionals:t.positionals,detailJson:t.values.get(`--detail`),runtime:t.values.get(`--runtime`)}}function Sv(e,t){return e.length===0?bv(`no cherry follower runtime is connected`):t?e.includes(t)?t:bv(`runtime '${t}' not connected. Available: ${e.join(`, `)}`):e.length>1?bv(`multiple runtimes connected, pass --runtime <id>. Available: ${e.join(`, `)}`):e[0]}function Cv(e){if(e===void 0)return{detail:void 0};try{return{detail:JSON.parse(e)}}catch{return bv(`--detail must be valid JSON`)}}function wv(e={}){let t=e.registry??vv();return C(`cherry-emit`,async e=>{if(T(e,{valueFlags:yv}))return{stdout:`cherry-emit - push a slicc.event to a cherry host page through a follower runtime
530
+ `,exitCode:2},`usage`);let i=await uv(t,e);if(`exitCode`in i)return cv(e.reporter,i,`io`);let a=e.paths.length===0&&t.stdin?t.cwd:Ge(i.inputs[0].path).dir,o=await w_(t.fs,t.cwd,a,e.configPath);if(!o.ok)return cv(e.reporter,{stdout:``,stderr:`${o.error}\n`,exitCode:o.exitCode},`configuration`,i.inputs[0].path);let s=await lv(t,n);if(`exitCode`in s)return cv(e.reporter,s,`runtime`,i.inputs[0].path);let c=await ov(t,e.subcommand,e.write,e.check,o.resolved?.configuration??null,o.resolved===null?null:Ge(o.resolved.path).dir,e.reporter,i.inputs,s.wasmPath);return c.exitCode===0?dv(t,e,i.inputs,c,i.missingErrText):cv(e.reporter,{stdout:``,stderr:i.missingErrText+c.stderr,exitCode:c.exitCode},`runtime`,i.inputs[0].path)}function gv(){return C(`biome`,async(e,t)=>{let n;try{n=Q_(e)}catch(t){return cv(Y_(e)?`json`:`plain`,{stdout:``,stderr:`${t instanceof Error?t.message:String(t)}\n`,exitCode:2},`usage`)}try{return await hv(n,t)}catch(e){if(n.reporter===`plain`)throw e;return cv(`json`,{stdout:``,stderr:`biome: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1},`runtime`,mv(n,t))}})}function _v(e=`biscotto`,t={}){return C(e,async(n,r)=>{let{runBiscotto:i}=await import(`./run-Di_-pc-e.js`);return i(e,n,r,t.getParentJid?.(),t.isScoop?.()===!0)})}function vv(e={}){let t=e.getFollowers??ie,n=e.getPanelRpc??b,r=e.getEmitter??(()=>null);return{listRuntimeIds(){return t().filter(e=>e.runtime===`slicc-cherry`).map(e=>e.runtimeId)},async emitSliccEvent(e,t,i){let a=r();if(a)try{return await a(e,t,i)?{delivered:!0}:{delivered:!1,reason:`the follower runtime is not connected to the leader`}}catch(e){return{delivered:!1,reason:`direct emit failed: ${e instanceof Error?e.message:String(e)}`}}let o=n();if(!o)return{delivered:!1,reason:`no page bridge to the leader tray (panel-RPC client)`};try{return(await o.call(`cherry-emit`,{runtimeId:e,name:t,detail:i}))?.delivered?{delivered:!0}:{delivered:!1,reason:`the follower runtime is not connected to the leader`}}catch(e){return{delivered:!1,reason:`panel-RPC delivery failed: ${e instanceof Error?e.message:String(e)}`}}}}}const yv=[`--detail`,`--runtime`];function bv(e){return{stdout:``,stderr:`cherry-emit: ${e}\n`,exitCode:1}}function xv(e){let t=w(e,{value:yv});return`error`in t?bv(t.error):{positionals:t.positionals,detailJson:t.values.get(`--detail`),runtime:t.values.get(`--runtime`)}}function Sv(e,t){return e.length===0?bv(`no cherry follower runtime is connected`):t?e.includes(t)?t:bv(`runtime '${t}' not connected. Available: ${e.join(`, `)}`):e.length>1?bv(`multiple runtimes connected, pass --runtime <id>. Available: ${e.join(`, `)}`):e[0]}function Cv(e){if(e===void 0)return{detail:void 0};try{return{detail:JSON.parse(e)}}catch{return bv(`--detail must be valid JSON`)}}function wv(e={}){let t=e.registry??vv();return C(`cherry-emit`,async e=>{if(T(e,{valueFlags:yv}))return{stdout:`cherry-emit - push a slicc.event to a cherry host page through a follower runtime
531
531
 
532
532
  Usage: cherry-emit <name> [--detail <json>] [--runtime <id>]
533
533
 
@@ -586,7 +586,7 @@ suffix (0-based, as ImageMagick does); page 0 is used when none is given:
586
586
  convert -density 150 doc.pdf page0.png
587
587
  convert doc.pdf[2] -resize 800x page3.png
588
588
  Use pdftoppm to rasterize a whole document in one pass.
589
- `,stderr:``,exitCode:0}}const Gv=new Map([[`-resize`,1],[`-thumbnail`,1],[`-rotate`,1],[`-crop`,1],[`-quality`,1],[`-auto-orient`,0],[`-auto-gamma`,0],[`-auto-level`,0],[`-flip`,0],[`-flop`,0],[`-strip`,0],[`-trim`,0],[`-negate`,0],[`-normalize`,0],[`-background`,1],[`-extent`,1],[`-alpha`,1],[`-colorspace`,1],[`-transparent`,1],[`-blur`,1],[`-sharpen`,1],[`-gravity`,1],[`-fill`,1],[`-undercolor`,1],[`-pointsize`,1],[`-density`,1],[`-annotate`,2]]);var Kv=class{tokens;index=0;density=72;constructor(e){this.tokens=e}parse(){return this.readSequence(!1)}readSequence(e){let t=[],n=[],r=!1;for(;this.index<this.tokens.length;){let i=this.tokens[this.index];if(i===`)`){if(!e)throw Error(`unexpected )`);this.index++,r=!0;break}i===`(`?this.readGroup(t,n):i===`+append`||i===`-append`?this.append(t,i):Gv.has(i)?this.readOperation(t,n,i):this.readInput(t,n,i)}if(e&&!r)throw Error(`missing )`);return this.finishSequence(t,n)}readGroup(e,t){this.index++;let n=this.readSequence(!0);n.operations.unshift(...t.splice(0)),e.push(n)}append(e,t){if(e.length<2)throw Error(`${t} requires at least two images`);let n=[...e];e.splice(0,e.length,{kind:`append`,direction:t===`+append`?`horizontal`:`vertical`,children:n,appendSettings:qv(n),operations:[]}),this.index++}readOperation(e,t,n){let r=Gv.get(n),i=this.tokens.slice(this.index+1,this.index+1+r);if(i.length!==r||i.some(e=>Xv(e)))throw Error(`missing argument for ${n}`);let a={type:n.slice(1),value:i[0]??``,...r===2?{text:i[1]}:{}};a.type===`density`&&(this.density=Yv(a.value)),(e.at(-1)?.operations??t).push(a),this.index+=r+1}readInput(e,t,n){if(n.startsWith(`-`)||n.startsWith(`+`))throw Error(`unsupported option ${n}`);e.push({kind:`input`,path:n,operations:t.splice(0),density:this.density}),this.index++}finishSequence(e,t){if(t.length>0)throw Error(`operation requires an input image`);if(e.length===0)throw Error(`expected an input image`);if(e.length>1)throw Error(`multiple input files require +append or -append`);return e[0]}};function qv(e){let t={};for(let n of e)for(let e of n.operations)e.type===`background`&&(t.background=e.value),e.type===`gravity`&&(t.gravity=e.value);return t}function Jv(e){if(e.length<2)throw Error(`expected exactly one input file and one output file`);let t=e.at(-1),n=Gv.get(t);if(n!==void 0)throw Error(n>0?`missing argument for ${t}`:`expected an output file`);if(Xv(t))throw Error(`expected an output file`);return{expression:new Kv(e.slice(0,-1)).parse(),outputPath:t}}function Yv(e){let t=Number(e.split(`x`)[0]);if(!Number.isFinite(t)||t<=0)throw Error(`Invalid density: ${e}`);return t}function Xv(e){return e===`(`||e===`)`||e===`+append`||e===`-append`||Gv.has(e)}const Zv=/^(?:\d+(?:x\d*)?|x\d+)(?:[%!^<>@])?$/,Qv=/^\d+x\d+(?:[+-]\d+[+-]\d+)?$/;function $v(e,t,n){if(!(n===`resize`||n===`thumbnail`?Zv:Qv).test(t))throw Error(`Invalid ${n} geometry: ${t}`);return new e.MagickGeometry(t)}function ey(e,t,n){t.resize($v(e,n,`resize`))}function ty(e,t){let n=parseFloat(t);if(isNaN(n))throw Error(`Invalid rotation degrees: ${t}`);e.rotate(n)}function ny(e,t,n,r){let i=$v(e,n,`crop`);r===void 0?t.crop(i):t.crop(i,r)}function ry(e,t){let n=parseInt(t,10);if(isNaN(n)||n<0||n>100)throw Error(`Invalid quality: ${t} (must be 0-100)`);e.quality=n}const iy={northwest:`Northwest`,north:`North`,northeast:`Northeast`,west:`West`,center:`Center`,east:`East`,southwest:`Southwest`,south:`South`,southeast:`Southeast`};function ay(e,t){let n=iy[t.toLowerCase()],r=n?e.Gravity[n]:void 0;if(r===void 0)throw Error(`Invalid gravity: ${t}`);return r}const oy={"auto-orient":e=>e.autoOrient(),"auto-gamma":e=>e.autoGamma(),"auto-level":e=>e.autoLevel(),flip:e=>e.flip(),flop:e=>e.flop(),strip:e=>e.strip(),trim:e=>e.trim(),negate:e=>e.negate(),normalize:e=>e.normalize()};function sy(e){return e.toLowerCase().replaceAll(/[-_ ]/g,``)}function cy(e,t,n){let r=sy(t),i=Object.entries(e).find(([e])=>sy(e)===r);if(!i)throw Error(`Invalid ${n}: ${t}`);return i[1]}function ly(e,t,n,r){let i=$v(e,n,`extent`),a=r.background?new e.MagickColor(r.background):void 0;r.gravity!==void 0&&a?t.extent(i,r.gravity,a):r.gravity===void 0?a?t.extent(i,a):t.extent(i):t.extent(i,r.gravity)}function uy(e,t){let n=`(?:\\d+(?:\\.\\d*)?|\\.\\d+)`,r=e.match(RegExp(`^(${n})(?:x(${n}))?$`));if(!r)throw Error(`Invalid ${t} radius/sigma: ${e}`);return[Number(r[1]),r[2]===void 0?1:Number(r[2])]}function dy(e,t,n,r){let i=n.value.match(/^([+-]\d+)([+-]\d+)$/);if(!i)throw Error(`Invalid annotate offset: ${n.value} (expected +X+Y)`);let a=new e.Drawables;r.gravity!==void 0&&a.gravity(r.gravity),r.fill!==void 0&&a.fillColor(new e.MagickColor(r.fill)),r.undercolor!==void 0&&a.textUnderColor(new e.MagickColor(r.undercolor)),a.font(Vv),r.pointsize!==void 0&&a.fontPointSize(r.pointsize),a.text(Number(i[1]),Number(i[2]),n.text??``).draw(t)}async function fy(e){if(Hv.has(e.Magick))return;let t=Uv??=fetch(Rv).then(async e=>{if(!e.ok)throw Error(`Failed to load annotation font (${e.status})`);return new Uint8Array(await e.arrayBuffer())});try{e.Magick.addFont(Vv,await t),Hv.add(e.Magick)}catch(e){throw Uv===t&&(Uv=null),e}}function py(e){return e.operations.some(e=>e.type===`annotate`)?!0:e.kind===`append`&&e.children.some(py)}function my(e,t,n,r){let i=oy[n.type];if(i){i(t);return}switch(n.type){case`density`:return;case`resize`:ey(e,t,n.value);return;case`thumbnail`:t.thumbnail($v(e,n.value,`thumbnail`));return;case`rotate`:ty(t,n.value);return;case`crop`:ny(e,t,n.value,r.gravity);return;case`quality`:ry(t,n.value);return;case`background`:r.background=n.value,t.backgroundColor=new e.MagickColor(n.value);return;case`extent`:ly(e,t,n.value,r);return;case`alpha`:t.alpha(cy(e.AlphaAction,n.value,`alpha mode`));return;case`colorspace`:t.colorSpace=cy(e.ColorSpace,n.value,`colorspace`);return;case`transparent`:t.transparent(new e.MagickColor(n.value));return;case`blur`:t.blur(...uy(n.value,`blur`));return;case`sharpen`:t.sharpen(...uy(n.value,`sharpen`));return;case`gravity`:r.gravity=ay(e,n.value);return;case`fill`:r.fill=n.value;return;case`undercolor`:r.undercolor=n.value;return;case`pointsize`:{let e=Number(n.value);if(!Number.isFinite(e)||e<=0)throw Error(`Invalid point size: ${n.value}`);r.pointsize=e;return}case`annotate`:dy(e,t,n,r);return}}function hy(e,t,n){let{background:r,gravity:i}=t.appendSettings;if(r===void 0&&i===void 0)return;let a=i===void 0?void 0:ay(e,i),o=r===void 0?void 0:new e.MagickColor(r),s=Math.max(...n.map(e=>e.width)),c=Math.max(...n.map(e=>e.height));for(let r of n){let n=t.direction===`vertical`?s:r.width,i=t.direction===`horizontal`?c:r.height;if(n===r.width&&i===r.height)continue;let l=new e.MagickGeometry(n,i);a!==void 0&&o?r.extent(l,a,o):a===void 0?o&&r.extent(l,o):r.extent(l,a)}}function gy(e,t,n){let r={};for(let i of n)my(e,t,i,r)}function _y(e,t){let n=null,r=Bv(t);return e.write(r,e=>{n=new Uint8Array(e)}),n}async function vy(e,t,n,r,i=[],a=0){if(a===t.children.length)return r(i);await yy(e,t.children[a],n,async o=>{i.push(o),await vy(e,t,n,r,i,a+1),i.pop()})}async function yy(e,t,n,r){if(t.kind===`input`){await e.ImageMagick.read(n.get(t),async n=>{gy(e,n,t.operations),await r(n)});return}await vy(e,t,n,async n=>{hy(e,t,n);let i=e.MagickImageCollection.create();i.push(...n);let a=t.direction===`horizontal`?i.appendHorizontally.bind(i):i.appendVertically.bind(i);try{await a(async n=>{gy(e,n,t.operations),await r(n)})}finally{i.length=0,i.dispose()}})}function by(e){let t=e.match(/^(.*)\[(\d+)\]$/);return t?{path:t[1],scene:Number(t[2])}:{path:e}}async function xy(e,t,n=new Map,r=new Map){if(e.kind===`input`){let{path:i,scene:a}=by(e.path),o=t.fs.resolvePath(t.cwd,i),s=r.get(o);if(s===void 0&&(s=await t.fs.readFileBuffer(o),r.set(o,s)),oa(s)){let t=await sa(s,(a??0)+1,{scale:ca(e.density),format:`png`});return n.set(e,t.bytes),n}return n.set(e,s),n}for(let i of e.children)await xy(i,t,n,r);return n}function Sy(e=`convert`){return C(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Wv();let r;try{r=Jv(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let e=await xy(r.expression,n),t=await ra({ipk:zv(n)});py(r.expression)&&await fy(t);let i=null;if(await yy(t,r.expression,e,async e=>{i=_y(e,r.outputPath)}),!i||i.byteLength===0)throw Error(`Failed to generate output image`);let a=n.fs.resolvePath(n.cwd,r.outputPath);return await n.fs.writeFile(a,i),{stdout:``,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}})}function Cy(){return globalThis.__slicc_lickManager??null}let wy=null;async function Ty(){if(wy)return wy;let{createLickManagerProxy:e}=await import(`./lick-manager-proxy-DMaLHm_t.js`);return wy=e(),wy}async function Ey(){let e=Cy();if(e)return{resolveLickTarget:async t=>e.resolveLickTarget?.(t)??{status:`unverifiable`},createWebhook:(t,n,r)=>e.createWebhook(t,n,r),deleteWebhook:t=>e.deleteWebhook(t),listWebhooks:async()=>e.listWebhooks(),createCronTask:(t,n,r)=>e.createCronTask(t,n,r),deleteCronTask:t=>e.deleteCronTask(t),listCronTasks:async()=>e.listCronTasks()};if(ze())return null;let t=await Ty(),{listCronTasksAsync:n,listWebhooksAsync:r}=await import(`./lick-manager-proxy-DMaLHm_t.js`);return{resolveLickTarget:e=>t.resolveLickTarget(e),createWebhook:(e,n,r)=>t.createWebhook(e,n,r),deleteWebhook:e=>t.deleteWebhook(e),listWebhooks:()=>r(),createCronTask:(e,n,r)=>t.createCronTask(e,n,r),deleteCronTask:e=>t.deleteCronTask(e),listCronTasks:()=>n()}}function Dy(e){if(e.length===0)return`no cones or scoops are registered`;let t=e.slice(0,12),n=e.length>t.length?`, …`:``;return`valid targets: ${t.join(`, `)}${n}`}async function Oy(e,t,n){if(!n||!e)return null;let r;try{r=await e.resolveLickTarget(n)}catch{return null}return r.status===`unresolved`?`${t}: --scoop "${n}" matches no live cone or scoop — its licks would be dropped (${Dy(r.candidates)})\n`:null}function ky(e){return{stdout:``,stderr:`crontask ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}function Ay(){return{stdout:`usage: crontask <command> [options]
589
+ `,stderr:``,exitCode:0}}const Gv=new Map([[`-resize`,1],[`-thumbnail`,1],[`-rotate`,1],[`-crop`,1],[`-quality`,1],[`-auto-orient`,0],[`-auto-gamma`,0],[`-auto-level`,0],[`-flip`,0],[`-flop`,0],[`-strip`,0],[`-trim`,0],[`-negate`,0],[`-normalize`,0],[`-background`,1],[`-extent`,1],[`-alpha`,1],[`-colorspace`,1],[`-transparent`,1],[`-blur`,1],[`-sharpen`,1],[`-gravity`,1],[`-fill`,1],[`-undercolor`,1],[`-pointsize`,1],[`-density`,1],[`-annotate`,2]]);var Kv=class{tokens;index=0;density=72;constructor(e){this.tokens=e}parse(){return this.readSequence(!1)}readSequence(e){let t=[],n=[],r=!1;for(;this.index<this.tokens.length;){let i=this.tokens[this.index];if(i===`)`){if(!e)throw Error(`unexpected )`);this.index++,r=!0;break}i===`(`?this.readGroup(t,n):i===`+append`||i===`-append`?this.append(t,i):Gv.has(i)?this.readOperation(t,n,i):this.readInput(t,n,i)}if(e&&!r)throw Error(`missing )`);return this.finishSequence(t,n)}readGroup(e,t){this.index++;let n=this.readSequence(!0);n.operations.unshift(...t.splice(0)),e.push(n)}append(e,t){if(e.length<2)throw Error(`${t} requires at least two images`);let n=[...e];e.splice(0,e.length,{kind:`append`,direction:t===`+append`?`horizontal`:`vertical`,children:n,appendSettings:qv(n),operations:[]}),this.index++}readOperation(e,t,n){let r=Gv.get(n),i=this.tokens.slice(this.index+1,this.index+1+r);if(i.length!==r||i.some(e=>Xv(e)))throw Error(`missing argument for ${n}`);let a={type:n.slice(1),value:i[0]??``,...r===2?{text:i[1]}:{}};a.type===`density`&&(this.density=Yv(a.value)),(e.at(-1)?.operations??t).push(a),this.index+=r+1}readInput(e,t,n){if(n.startsWith(`-`)||n.startsWith(`+`))throw Error(`unsupported option ${n}`);e.push({kind:`input`,path:n,operations:t.splice(0),density:this.density}),this.index++}finishSequence(e,t){if(t.length>0)throw Error(`operation requires an input image`);if(e.length===0)throw Error(`expected an input image`);if(e.length>1)throw Error(`multiple input files require +append or -append`);return e[0]}};function qv(e){let t={};for(let n of e)for(let e of n.operations)e.type===`background`&&(t.background=e.value),e.type===`gravity`&&(t.gravity=e.value);return t}function Jv(e){if(e.length<2)throw Error(`expected exactly one input file and one output file`);let t=e.at(-1),n=Gv.get(t);if(n!==void 0)throw Error(n>0?`missing argument for ${t}`:`expected an output file`);if(Xv(t))throw Error(`expected an output file`);return{expression:new Kv(e.slice(0,-1)).parse(),outputPath:t}}function Yv(e){let t=Number(e.split(`x`)[0]);if(!Number.isFinite(t)||t<=0)throw Error(`Invalid density: ${e}`);return t}function Xv(e){return e===`(`||e===`)`||e===`+append`||e===`-append`||Gv.has(e)}const Zv=/^(?:\d+(?:x\d*)?|x\d+)(?:[%!^<>@])?$/,Qv=/^\d+x\d+(?:[+-]\d+[+-]\d+)?$/;function $v(e,t,n){if(!(n===`resize`||n===`thumbnail`?Zv:Qv).test(t))throw Error(`Invalid ${n} geometry: ${t}`);return new e.MagickGeometry(t)}function ey(e,t,n){t.resize($v(e,n,`resize`))}function ty(e,t){let n=parseFloat(t);if(isNaN(n))throw Error(`Invalid rotation degrees: ${t}`);e.rotate(n)}function ny(e,t,n,r){let i=$v(e,n,`crop`);r===void 0?t.crop(i):t.crop(i,r)}function ry(e,t){let n=parseInt(t,10);if(isNaN(n)||n<0||n>100)throw Error(`Invalid quality: ${t} (must be 0-100)`);e.quality=n}const iy={northwest:`Northwest`,north:`North`,northeast:`Northeast`,west:`West`,center:`Center`,east:`East`,southwest:`Southwest`,south:`South`,southeast:`Southeast`};function ay(e,t){let n=iy[t.toLowerCase()],r=n?e.Gravity[n]:void 0;if(r===void 0)throw Error(`Invalid gravity: ${t}`);return r}const oy={"auto-orient":e=>e.autoOrient(),"auto-gamma":e=>e.autoGamma(),"auto-level":e=>e.autoLevel(),flip:e=>e.flip(),flop:e=>e.flop(),strip:e=>e.strip(),trim:e=>e.trim(),negate:e=>e.negate(),normalize:e=>e.normalize()};function sy(e){return e.toLowerCase().replaceAll(/[-_ ]/g,``)}function cy(e,t,n){let r=sy(t),i=Object.entries(e).find(([e])=>sy(e)===r);if(!i)throw Error(`Invalid ${n}: ${t}`);return i[1]}function ly(e,t,n,r){let i=$v(e,n,`extent`),a=r.background?new e.MagickColor(r.background):void 0;r.gravity!==void 0&&a?t.extent(i,r.gravity,a):r.gravity===void 0?a?t.extent(i,a):t.extent(i):t.extent(i,r.gravity)}function uy(e,t){let n=`(?:\\d+(?:\\.\\d*)?|\\.\\d+)`,r=e.match(RegExp(`^(${n})(?:x(${n}))?$`));if(!r)throw Error(`Invalid ${t} radius/sigma: ${e}`);return[Number(r[1]),r[2]===void 0?1:Number(r[2])]}function dy(e,t,n,r){let i=n.value.match(/^([+-]\d+)([+-]\d+)$/);if(!i)throw Error(`Invalid annotate offset: ${n.value} (expected +X+Y)`);let a=new e.Drawables;r.gravity!==void 0&&a.gravity(r.gravity),r.fill!==void 0&&a.fillColor(new e.MagickColor(r.fill)),r.undercolor!==void 0&&a.textUnderColor(new e.MagickColor(r.undercolor)),a.font(Vv),r.pointsize!==void 0&&a.fontPointSize(r.pointsize),a.text(Number(i[1]),Number(i[2]),n.text??``).draw(t)}async function fy(e){if(Hv.has(e.Magick))return;let t=Uv??=fetch(Rv).then(async e=>{if(!e.ok)throw Error(`Failed to load annotation font (${e.status})`);return new Uint8Array(await e.arrayBuffer())});try{e.Magick.addFont(Vv,await t),Hv.add(e.Magick)}catch(e){throw Uv===t&&(Uv=null),e}}function py(e){return e.operations.some(e=>e.type===`annotate`)?!0:e.kind===`append`&&e.children.some(py)}function my(e,t,n,r){let i=oy[n.type];if(i){i(t);return}switch(n.type){case`density`:return;case`resize`:ey(e,t,n.value);return;case`thumbnail`:t.thumbnail($v(e,n.value,`thumbnail`));return;case`rotate`:ty(t,n.value);return;case`crop`:ny(e,t,n.value,r.gravity);return;case`quality`:ry(t,n.value);return;case`background`:r.background=n.value,t.backgroundColor=new e.MagickColor(n.value);return;case`extent`:ly(e,t,n.value,r);return;case`alpha`:t.alpha(cy(e.AlphaAction,n.value,`alpha mode`));return;case`colorspace`:t.colorSpace=cy(e.ColorSpace,n.value,`colorspace`);return;case`transparent`:t.transparent(new e.MagickColor(n.value));return;case`blur`:t.blur(...uy(n.value,`blur`));return;case`sharpen`:t.sharpen(...uy(n.value,`sharpen`));return;case`gravity`:r.gravity=ay(e,n.value);return;case`fill`:r.fill=n.value;return;case`undercolor`:r.undercolor=n.value;return;case`pointsize`:{let e=Number(n.value);if(!Number.isFinite(e)||e<=0)throw Error(`Invalid point size: ${n.value}`);r.pointsize=e;return}case`annotate`:dy(e,t,n,r);return}}function hy(e,t,n){let{background:r,gravity:i}=t.appendSettings;if(r===void 0&&i===void 0)return;let a=i===void 0?void 0:ay(e,i),o=r===void 0?void 0:new e.MagickColor(r),s=Math.max(...n.map(e=>e.width)),c=Math.max(...n.map(e=>e.height));for(let r of n){let n=t.direction===`vertical`?s:r.width,i=t.direction===`horizontal`?c:r.height;if(n===r.width&&i===r.height)continue;let l=new e.MagickGeometry(n,i);a!==void 0&&o?r.extent(l,a,o):a===void 0?o&&r.extent(l,o):r.extent(l,a)}}function gy(e,t,n){let r={};for(let i of n)my(e,t,i,r)}function _y(e,t){let n=null,r=Bv(t);return e.write(r,e=>{n=new Uint8Array(e)}),n}async function vy(e,t,n,r,i=[],a=0){if(a===t.children.length)return r(i);await yy(e,t.children[a],n,async o=>{i.push(o),await vy(e,t,n,r,i,a+1),i.pop()})}async function yy(e,t,n,r){if(t.kind===`input`){await e.ImageMagick.read(n.get(t),async n=>{gy(e,n,t.operations),await r(n)});return}await vy(e,t,n,async n=>{hy(e,t,n);let i=e.MagickImageCollection.create();i.push(...n);let a=t.direction===`horizontal`?i.appendHorizontally.bind(i):i.appendVertically.bind(i);try{await a(async n=>{gy(e,n,t.operations),await r(n)})}finally{i.length=0,i.dispose()}})}function by(e){let t=e.match(/^(.*)\[(\d+)\]$/);return t?{path:t[1],scene:Number(t[2])}:{path:e}}async function xy(e,t,n=new Map,r=new Map){if(e.kind===`input`){let{path:i,scene:a}=by(e.path),o=t.fs.resolvePath(t.cwd,i),s=r.get(o);if(s===void 0&&(s=await t.fs.readFileBuffer(o),r.set(o,s)),la(s)){let t=await ua(s,(a??0)+1,{scale:da(e.density),format:`png`});return n.set(e,t.bytes),n}return n.set(e,s),n}for(let i of e.children)await xy(i,t,n,r);return n}function Sy(e=`convert`){return C(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Wv();let r;try{r=Jv(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let e=await xy(r.expression,n),t=await oa({ipk:zv(n)});py(r.expression)&&await fy(t);let i=null;if(await yy(t,r.expression,e,async e=>{i=_y(e,r.outputPath)}),!i||i.byteLength===0)throw Error(`Failed to generate output image`);let a=n.fs.resolvePath(n.cwd,r.outputPath);return await n.fs.writeFile(a,i),{stdout:``,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}})}function Cy(){return globalThis.__slicc_lickManager??null}let wy=null;async function Ty(){if(wy)return wy;let{createLickManagerProxy:e}=await import(`./lick-manager-proxy-DMaLHm_t.js`);return wy=e(),wy}async function Ey(){let e=Cy();if(e)return{resolveLickTarget:async t=>e.resolveLickTarget?.(t)??{status:`unverifiable`},createWebhook:(t,n,r)=>e.createWebhook(t,n,r),deleteWebhook:t=>e.deleteWebhook(t),listWebhooks:async()=>e.listWebhooks(),createCronTask:(t,n,r)=>e.createCronTask(t,n,r),deleteCronTask:t=>e.deleteCronTask(t),listCronTasks:async()=>e.listCronTasks()};if(ze())return null;let t=await Ty(),{listCronTasksAsync:n,listWebhooksAsync:r}=await import(`./lick-manager-proxy-DMaLHm_t.js`);return{resolveLickTarget:e=>t.resolveLickTarget(e),createWebhook:(e,n,r)=>t.createWebhook(e,n,r),deleteWebhook:e=>t.deleteWebhook(e),listWebhooks:()=>r(),createCronTask:(e,n,r)=>t.createCronTask(e,n,r),deleteCronTask:e=>t.deleteCronTask(e),listCronTasks:()=>n()}}function Dy(e){if(e.length===0)return`no cones or scoops are registered`;let t=e.slice(0,12),n=e.length>t.length?`, …`:``;return`valid targets: ${t.join(`, `)}${n}`}async function Oy(e,t,n){if(!n||!e)return null;let r;try{r=await e.resolveLickTarget(n)}catch{return null}return r.status===`unresolved`?`${t}: --scoop "${n}" matches no live cone or scoop — its licks would be dropped (${Dy(r.candidates)})\n`:null}function ky(e){return{stdout:``,stderr:`crontask ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}function Ay(){return{stdout:`usage: crontask <command> [options]
590
590
 
591
591
  Commands:
592
592
  create [options] Create a new cron task
@@ -618,7 +618,7 @@ Examples:
618
618
  crontask create --name every-5min --scoop poller --cron "*/5 * * * *" --filter "() => ({ time: Date.now() })"
619
619
  crontask list
620
620
  crontask delete abc123
621
- `,stderr:``,exitCode:0}}async function jy(e,t,n){let r={method:e,headers:Ne({"Content-Type":`application/json`})};n&&(r.body=JSON.stringify(n));let i=await fetch(Me(`/api/crontasks${t}`),r),a=await i.json().catch(()=>({}));return{ok:i.ok,status:i.status,data:a}}const My=[`--name`,`--cron`,`--filter`,`--scoop`];function Ny(e){return{stdout:``,stderr:`crontask: ${e}\n`,exitCode:1}}async function Py(e,t,n){let r=w(e.slice(1),{value:My});if(`error`in r)return Ny(r.error);let i=r.values.get(`--name`),a=r.values.get(`--cron`),o=r.values.get(`--filter`),s=r.values.get(`--scoop`);if(s=la(s,t),!i)return{stdout:``,stderr:`crontask: --name is required
621
+ `,stderr:``,exitCode:0}}async function jy(e,t,n){let r={method:e,headers:Ne({"Content-Type":`application/json`})};n&&(r.body=JSON.stringify(n));let i=await fetch(Me(`/api/crontasks${t}`),r),a=await i.json().catch(()=>({}));return{ok:i.ok,status:i.status,data:a}}const My=[`--name`,`--cron`,`--filter`,`--scoop`];function Ny(e){return{stdout:``,stderr:`crontask: ${e}\n`,exitCode:1}}async function Py(e,t,n){let r=w(e.slice(1),{value:My});if(`error`in r)return Ny(r.error);let i=r.values.get(`--name`),a=r.values.get(`--cron`),o=r.values.get(`--filter`),s=r.values.get(`--scoop`);if(s=fa(s,t),!i)return{stdout:``,stderr:`crontask: --name is required
622
622
  `,exitCode:1};if(!a)return{stdout:``,stderr:`crontask: --cron is required
623
623
  `,exitCode:1};let c=await Oy(await Ey(),`crontask create`,r.values.get(`--scoop`));if(c)return{stdout:``,stderr:c,exitCode:1};if(!n()){if(o)return{stdout:``,stderr:`crontask: --filter is not supported in extension mode (CSP restriction)
624
624
  `,exitCode:1};let e=await Ey();if(!e)return ky(`create`);let t=await e.createCronTask(i,a,s),n=`Created cron task "${t.name}"\n`;return n+=`ID: ${t.id}\n`,n+=`Cron: ${t.cron}\n`,t.scoop&&(n+=`Scoop: ${t.scoop}\n`),t.nextRun&&(n+=`Next run: ${new Date(t.nextRun).toLocaleString()}\n`),{stdout:n,stderr:``,exitCode:0}}let{ok:l,data:u}=await jy(`POST`,``,{name:i,cron:a,filter:o,scoop:s});if(!l)return{stdout:``,stderr:`crontask: failed to create: ${u.error??`unknown error`}\n`,exitCode:1};let d=u,f=`Created cron task "${d.name}"\n`;return f+=`ID: ${d.id}\n`,f+=`Cron: ${d.cron}\n`,d.scoop&&(f+=`Scoop: ${d.scoop}\n`),d.filter&&(f+=`Filter: ${d.filter}\n`),d.nextRun&&(f+=`Next run: ${new Date(d.nextRun).toLocaleString()}\n`),{stdout:f,stderr:``,exitCode:0}}function Fy(e){let t=`Active cron tasks:
@@ -651,7 +651,7 @@ Usage:
651
651
  Read-only. See 'df --help' for the underlying command.
652
652
  `}function Zy(e,t){return e===null?`unavailable`:t?Vy(e):`${e}`}async function Qy(e){let t=e.fs?.backend??`unknown`,n=null,r=null,i=null,a=globalThis.navigator?.storage;if(a){try{let e=await a.estimate();n=typeof e.usage==`number`?e.usage:null,r=typeof e.quota==`number`?e.quota:null}catch{}if(typeof a.persisted==`function`)try{i=await a.persisted()}catch{i=null}}let o=null,s=e.legacyIdbExists??Uy;try{o=await s()}catch{o=null}return{backend:t,usage:n,quota:r,persisted:i,legacyIdbPresent:o}}function $y(e,t){let n=e.usage!==null&&e.quota!==null&&e.quota>0?`${Math.round(e.usage/e.quota*100)}%`:`unavailable`,r=e.persisted===null?`unavailable`:e.persisted?`true`:`false`,i=e.legacyIdbPresent===null?`unavailable`:e.legacyIdbPresent?`present (slicc-fs)`:`absent`;return`${[`Backend: ${e.backend}`,`Usage: ${Zy(e.usage,t)}`,`Quota: ${Zy(e.quota,t)}`,`Used: ${n}`,`Persisted: ${r}`,`Legacy IDB: ${i}`].join(`
653
653
  `)}\n`}function eb(e={}){return C(`df`,async t=>{if(t.includes(`--help`))return{stdout:Yy(`df`),stderr:``,exitCode:0};let n=new Set([`-h`,`--human-readable`]),r=t.find(e=>!n.has(e));if(r!==void 0)return{stdout:``,stderr:`df: unsupported argument: ${r}\n`,exitCode:1};let i=t.includes(`-h`)||t.includes(`--human-readable`);return{stdout:$y(await Qy(e),i),stderr:``,exitCode:0}})}function tb(e={}){return C(`diskutil`,async t=>{if(t.includes(`--help`))return{stdout:Xy(),stderr:``,exitCode:0};let n=t[0];return n===`info`?{stdout:$y(await Qy(e),!0),stderr:``,exitCode:0}:{stdout:``,stderr:n?`diskutil: unsupported subcommand: ${n} (try 'diskutil info')\n`:`diskutil: missing subcommand (try 'diskutil info')
654
- `,exitCode:1}})}const nb=e(`di`),rb=new WeakMap;async function ib(e,t){let n=rb.get(e);if(n)return n;let r;if(await e.exists(`/workspace/node_modules/pyodide/pyodide-lock.json`))try{r=await e.readFile(`/workspace/node_modules/pyodide/pyodide-lock.json`)}catch(e){return nb.error(`failed to read pyodide-lock.json`,e),null}else{let e=`${Jr}pyodide-lock.json`,n;try{n=await t(e,{method:`GET`,headers:{Accept:`application/json`},timeoutMs:3e4})}catch(e){return nb.error(`failed to fetch pyodide-lock.json from CDN`,e),null}if(n.status<200||n.status>=300)return nb.error(`pyodide-lock.json CDN fetch returned HTTP ${n.status}`),null;r=Ae(n.body)}let i;try{i=JSON.parse(r)}catch(e){return nb.error(`pyodide-lock.json was not valid JSON`,e),null}let a=new Map;for(let[e,t]of Object.entries(i.packages??{}))!t||typeof t.file_name!=`string`||a.set(Gr(t.name??e),t);return rb.set(e,a),a}async function ab(e,t,n,r){let i=await ib(e,t);if(!i)return null;let a=i.get(Gr(n));if(!a?.file_name||!a.version||!a.sha256)return null;if(r&&r!==a.version)throw Error(`di: ${n}==${r} requested but the Pyodide lockfile pins ${a.name??n}==${a.version} (the Pyodide CDN serves only the locked version — omit the version, or use real uv locally)`);return{name:a.name??n,version:a.version,source:`pyodide-cdn`,fileName:a.file_name,sha256:a.sha256,url:`${Jr}${a.file_name}`}}function ob(e,t){let n=`https://pypi.org/pypi/${encodeURIComponent(e)}`;return t?`${n}/${encodeURIComponent(t)}/json`:`${n}/json`}function sb(e){if(!e.endsWith(`.whl`))return null;let t=e.slice(0,-4).split(`-`);return t.length<3?null:t[t.length-1]}async function cb(e,t,n){let r=`di: PyPI lookup for ${t}${n?`==${n}`:``}`,i=ob(t,n),a;try{a=await e(i,{method:`GET`,headers:{Accept:`application/json`},timeoutMs:3e4})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`${r}: network error (${t})`)}if(a.status===404)throw Error(`di: package '${t}'${n?` version '${n}'`:``} not found on PyPI`);if(a.status<200||a.status>=300){let e=a.statusText?` ${a.statusText}`:``;throw Error(`${r} returned HTTP ${a.status}${e}`)}let o;try{o=JSON.parse(Ae(a.body))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`${r}: response was not valid JSON (${t})`)}let s=o.info?.name??t,c=o.info?.version??n;if(!c)throw Error(`${r}: PyPI did not report a version for '${t}'`);let l=(o.urls??[]).filter(e=>e.packagetype===`bdist_wheel`&&typeof e.filename==`string`&&typeof e.url==`string`);if(l.length===0)throw Error(`di: ${s}==${c} has no wheel on PyPI (sdist/source-only packages are not supported in SLICC's di subset — use real uv locally)`);let u=l.find(e=>sb(e.filename)===`any`);if(!u){let e=l.map(e=>e.filename).join(`, `);throw Error(`di: ${s}==${c} only ships platform-specific wheels (${e}); SLICC's di subset installs pure-Python (none-any) wheels only — use real uv locally for compiled packages`)}let d=u.digests?.sha256;if(!d)throw Error(`di: PyPI did not provide a sha256 digest for ${u.filename}`);return{name:s,version:c,source:`pypi`,fileName:u.filename,sha256:d,url:u.url}}const lb=`/workspace/python_wheels`,ub=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function db(e){let t=e.trim();if(!t)throw Error(`di: package spec is required`);let n=t,r,i=t.indexOf(`==`);if(i!==-1)n=t.slice(0,i),r=t.slice(i+2);else{let e=t.indexOf(`@`);e!==-1&&(n=t.slice(0,e),r=t.slice(e+1))}if(n=n.trim(),r=r?.trim(),!ub.test(n))throw Error(`di: invalid package name '${n}'`);if(r!==void 0&&r===``)throw Error(`di: empty version in spec '${e}'`);return{name:n,version:r}}function fb(e){return e instanceof Error?e:Error(String(e))}async function pb(e,t,n){return await ab(e,t,n.name,n.version)||cb(t,n.name,n.version)}async function mb(e,t,n){let r=await pb(e,t,n),i=await ni(t,{url:r.url,sha256:r.sha256,label:`di: download ${r.name}==${r.version}`});await e.mkdir(lb,{recursive:!0});let a=S(lb,r.fileName),o=!0;if(await e.exists(a)){let t=await e.readFile(a,{encoding:`binary`}),n=await ee(t);if(n===r.sha256.toLowerCase())o=!1;else throw Error(`di: ${r.fileName} is already staged with different bytes (sha256 ${n} != ${r.sha256.toLowerCase()}); refusing to overwrite`)}else await e.writeFile(a,i);return{name:r.name,version:r.version,source:r.source,fileName:r.fileName,sha256:r.sha256,staged:o}}async function hb(e,t,n,r){let i=await Zr(e,n),a=[],o=[];for(let n of r){let r;try{r=db(n)}catch(e){o.push({spec:n,error:fb(e)});continue}try{a.push(await mb(e,t,r))}catch(e){o.push({spec:n,error:fb(e)})}}if(a.length>0){let t=await ei(e,i),n=t.dependencies,r=await Wr(e,i);for(let e of a)n=Vr(n,e.name,e.version),r=ti(r,{name:e.name,version:e.version,source:e.source,fileName:e.fileName,sha256:e.sha256});await Xr(e,i,{...t,dependencies:n}),await qr(e,i,r)}return{results:a,errors:o,manifestDir:i}}async function gb(e,t){let n=await Yr(e,t);if(!n)return null;let r=await ei(e,n),i=await Wr(e,n),a=new Map(i.map(e=>[Gr(e.name),e]));return r.dependencies.map(e=>{let{name:t,version:n}=Kr(e),r=a.get(Gr(t));return{name:t,version:n||r?.version||`?`,source:r?.source??`unknown`}})}const _b=[];function vb(e){return`${e} - minimal Python package manager (pure-Python + Pyodide wheels)
654
+ `,exitCode:1}})}const nb=e(`di`),rb=new WeakMap;async function ib(e,t){let n=rb.get(e);if(n)return n;let r;if(await e.exists(`/workspace/node_modules/pyodide/pyodide-lock.json`))try{r=await e.readFile(`/workspace/node_modules/pyodide/pyodide-lock.json`)}catch(e){return nb.error(`failed to read pyodide-lock.json`,e),null}else{let e=`${Zr}pyodide-lock.json`,n;try{n=await t(e,{method:`GET`,headers:{Accept:`application/json`},timeoutMs:3e4})}catch(e){return nb.error(`failed to fetch pyodide-lock.json from CDN`,e),null}if(n.status<200||n.status>=300)return nb.error(`pyodide-lock.json CDN fetch returned HTTP ${n.status}`),null;r=Ae(n.body)}let i;try{i=JSON.parse(r)}catch(e){return nb.error(`pyodide-lock.json was not valid JSON`,e),null}let a=new Map;for(let[e,t]of Object.entries(i.packages??{}))!t||typeof t.file_name!=`string`||a.set(Jr(t.name??e),t);return rb.set(e,a),a}async function ab(e,t,n,r){let i=await ib(e,t);if(!i)return null;let a=i.get(Jr(n));if(!a?.file_name||!a.version||!a.sha256)return null;if(r&&r!==a.version)throw Error(`di: ${n}==${r} requested but the Pyodide lockfile pins ${a.name??n}==${a.version} (the Pyodide CDN serves only the locked version — omit the version, or use real uv locally)`);return{name:a.name??n,version:a.version,source:`pyodide-cdn`,fileName:a.file_name,sha256:a.sha256,url:`${Zr}${a.file_name}`}}function ob(e,t){let n=`https://pypi.org/pypi/${encodeURIComponent(e)}`;return t?`${n}/${encodeURIComponent(t)}/json`:`${n}/json`}function sb(e){if(!e.endsWith(`.whl`))return null;let t=e.slice(0,-4).split(`-`);return t.length<3?null:t[t.length-1]}async function cb(e,t,n){let r=`di: PyPI lookup for ${t}${n?`==${n}`:``}`,i=ob(t,n),a;try{a=await e(i,{method:`GET`,headers:{Accept:`application/json`},timeoutMs:3e4})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`${r}: network error (${t})`)}if(a.status===404)throw Error(`di: package '${t}'${n?` version '${n}'`:``} not found on PyPI`);if(a.status<200||a.status>=300){let e=a.statusText?` ${a.statusText}`:``;throw Error(`${r} returned HTTP ${a.status}${e}`)}let o;try{o=JSON.parse(Ae(a.body))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`${r}: response was not valid JSON (${t})`)}let s=o.info?.name??t,c=o.info?.version??n;if(!c)throw Error(`${r}: PyPI did not report a version for '${t}'`);let l=(o.urls??[]).filter(e=>e.packagetype===`bdist_wheel`&&typeof e.filename==`string`&&typeof e.url==`string`);if(l.length===0)throw Error(`di: ${s}==${c} has no wheel on PyPI (sdist/source-only packages are not supported in SLICC's di subset — use real uv locally)`);let u=l.find(e=>sb(e.filename)===`any`);if(!u){let e=l.map(e=>e.filename).join(`, `);throw Error(`di: ${s}==${c} only ships platform-specific wheels (${e}); SLICC's di subset installs pure-Python (none-any) wheels only — use real uv locally for compiled packages`)}let d=u.digests?.sha256;if(!d)throw Error(`di: PyPI did not provide a sha256 digest for ${u.filename}`);return{name:s,version:c,source:`pypi`,fileName:u.filename,sha256:d,url:u.url}}const lb=`/workspace/python_wheels`,ub=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function db(e){let t=e.trim();if(!t)throw Error(`di: package spec is required`);let n=t,r,i=t.indexOf(`==`);if(i!==-1)n=t.slice(0,i),r=t.slice(i+2);else{let e=t.indexOf(`@`);e!==-1&&(n=t.slice(0,e),r=t.slice(e+1))}if(n=n.trim(),r=r?.trim(),!ub.test(n))throw Error(`di: invalid package name '${n}'`);if(r!==void 0&&r===``)throw Error(`di: empty version in spec '${e}'`);return{name:n,version:r}}function fb(e){return e instanceof Error?e:Error(String(e))}async function pb(e,t,n){return await ab(e,t,n.name,n.version)||cb(t,n.name,n.version)}async function mb(e,t,n){let r=await pb(e,t,n),i=await ai(t,{url:r.url,sha256:r.sha256,label:`di: download ${r.name}==${r.version}`});await e.mkdir(lb,{recursive:!0});let a=S(lb,r.fileName),o=!0;if(await e.exists(a)){let t=await e.readFile(a,{encoding:`binary`}),n=await ee(t);if(n===r.sha256.toLowerCase())o=!1;else throw Error(`di: ${r.fileName} is already staged with different bytes (sha256 ${n} != ${r.sha256.toLowerCase()}); refusing to overwrite`)}else await e.writeFile(a,i);return{name:r.name,version:r.version,source:r.source,fileName:r.fileName,sha256:r.sha256,staged:o}}async function hb(e,t,n,r){let i=await ei(e,n),a=[],o=[];for(let n of r){let r;try{r=db(n)}catch(e){o.push({spec:n,error:fb(e)});continue}try{a.push(await mb(e,t,r))}catch(e){o.push({spec:n,error:fb(e)})}}if(a.length>0){let t=await ri(e,i),n=t.dependencies,r=await qr(e,i);for(let e of a)n=Wr(n,e.name,e.version),r=ii(r,{name:e.name,version:e.version,source:e.source,fileName:e.fileName,sha256:e.sha256});await $r(e,i,{...t,dependencies:n}),await Xr(e,i,r)}return{results:a,errors:o,manifestDir:i}}async function gb(e,t){let n=await Qr(e,t);if(!n)return null;let r=await ri(e,n),i=await qr(e,n),a=new Map(i.map(e=>[Jr(e.name),e]));return r.dependencies.map(e=>{let{name:t,version:n}=Yr(e),r=a.get(Jr(t));return{name:t,version:n||r?.version||`?`,source:r?.source??`unknown`}})}const _b=[];function vb(e){return`${e} - minimal Python package manager (pure-Python + Pyodide wheels)
655
655
 
656
656
  Usage:
657
657
  ${e} add <pkg>[@<version>] [<pkg> ...] resolve, stage, and record wheels
@@ -745,12 +745,12 @@ Module resolution:
745
745
 
746
746
  Install:
747
747
  Inert until the backing package is installed:
748
- ${F} esbuild-wasm@${Si}
748
+ ${F} esbuild-wasm@${Ti}
749
749
  Then \`esbuild --version\` and the bundle/transform commands above.
750
- `,Sx=new Set([`iife`,`cjs`,`esm`]),Cx=new Set([`browser`,`node`,`neutral`]),wx=new Set([`linked`,`inline`,`external`,`both`]),Tx={"-h":`showHelp`,"--help":`showHelp`,"-v":`showVersion`,"--version":`showVersion`,"--bundle":`bundle`,"--transform":`transform`,"--minify":`minify`};function Ex(e){if(e.startsWith(`--`)){let t=e.indexOf(`=`);if(t>0)return{key:e.slice(0,t),inlineValue:e.slice(t+1)}}return{key:e,inlineValue:null}}function Dx(e,t,n){if(e.inlineValue!==null)return{value:e.inlineValue,advance:0};let r=t[n+1];if(typeof r!=`string`||r.startsWith(`-`))throw Error(`esbuild: ${e.key} requires a value`);return{value:r,advance:1}}function Ox(e,t,n,r){if(t.inlineValue!==null){if(!wx.has(t.inlineValue))throw Error(`esbuild: --sourcemap value must be one of linked|inline|external|both (got "${t.inlineValue}")`);return e.sourcemap=t.inlineValue,0}let i=n[r+1];return typeof i==`string`&&wx.has(i)?(e.sourcemap=i,1):(e.sourcemap=!0,0)}function kx(e,t,n,r){if(t.key===`--outfile`){let{value:i,advance:a}=Dx(t,n,r);return e.outfile=i,a}if(t.key===`--format`){let{value:i,advance:a}=Dx(t,n,r);if(!Sx.has(i))throw Error(`esbuild: --format must be one of iife|cjs|esm (got "${i}")`);return e.format=i,a}if(t.key===`--platform`){let{value:i,advance:a}=Dx(t,n,r);if(!Cx.has(i))throw Error(`esbuild: --platform must be one of browser|node|neutral (got "${i}")`);return e.platform=i,a}if(t.key===`--target`){let{value:i,advance:a}=Dx(t,n,r);return e.target=i.split(`,`).map(e=>e.trim()).filter(Boolean),a}if(t.key===`--loader`){let{value:i,advance:a}=Dx(t,n,r);return e.loader=i,a}return-1}function Ax(e,t,n){if(!e.startsWith(t))return!1;let r=e.slice(t.length),i=r.indexOf(`=`);if(i<1)throw Error(`esbuild: ${t.slice(0,-1)} requires <key>=<value>`);return n[r.slice(0,i)]=r.slice(i+1),!0}function jx(e){let t={entries:[],bundle:!1,transform:!1,outfile:null,format:null,minify:!1,sourcemap:null,target:null,loader:null,external:[],platform:null,define:{},banner:{},footer:{},treeShaking:null,showHelp:!1,showVersion:!1};for(let n=0;n<e.length;n++){let r=e[n],i=Tx[r];if(i){t[i]=!0;continue}if(r.startsWith(`--external:`)){t.external.push(r.slice(11));continue}if(Ax(r,`--define:`,t.define)||Ax(r,`--banner:`,t.banner)||Ax(r,`--footer:`,t.footer))continue;let a=Ex(r);if(a.key===`--tree-shaking`){if(a.inlineValue===null)t.treeShaking=!0;else if(a.inlineValue===`true`||a.inlineValue===`false`)t.treeShaking=a.inlineValue===`true`;else throw Error(`esbuild: --tree-shaking must be true or false (got "${a.inlineValue}")`);continue}if(a.key===`--sourcemap`){n+=Ox(t,a,e,n);continue}let o=kx(t,a,e,n);if(o>=0){n+=o;continue}if(r.startsWith(`-`))throw Error(`esbuild: unknown option: ${r}`);t.entries.push(r)}return t}function Mx(e,t,n,r,i){return{name:`slicc-vfs`,setup(a){a.onResolve({filter:/.*/},async a=>{if(a.kind!==`entry-point`&&Nx(a.path,r)||/^[a-z]+:/.test(a.path)&&!a.path.startsWith(`file:`))return{path:a.path,external:!0};if(Fx(a.path)){let n=a.importer?.startsWith(`/`)?Pr(a.importer):t;return{path:await Rx(e,e.resolvePath(n,a.path))}}return Ix(a.path,a.importer,n,Px(i,a.kind))}),a.onLoad({filter:/.*/},async t=>t.namespace&&t.namespace!==`file`?null:{contents:await e.readFile(t.path),loader:Lx(t.path),resolveDir:Pr(t.path)})}}}function Nx(e,t){return t.some(t=>{if(e===t)return!0;if(!t.includes(`*`))return!Fx(t)&&e.startsWith(`${t}/`);let n=t.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(`*`,`.*`);return RegExp(`^${n}$`).test(e)})}function Px(e,t){let n=t===`require-call`||t===`require-resolve`?`require`:`import`;switch(e??`browser`){case`browser`:return[`browser`,n,`default`];case`node`:return[`node`,n,`default`];case`neutral`:return[n,`default`]}}function Fx(e){return e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`/`)}async function Ix(e,t,n,r){let i=t?.startsWith(`/`)?Pr(t):n.fromDir;try{let t=await Cr(e,i,n.reader,{conditions:r});return t.type===`file`?{path:t.path}:{path:e,external:!0}}catch(e){return{errors:[{text:e instanceof Error?e.message:String(e)}]}}}function Lx(e){let t=Ar(e).toLowerCase(),n=t.lastIndexOf(`.`);if(n<0)return`js`;switch(t.slice(n+1)){case`ts`:return`ts`;case`tsx`:return`tsx`;case`jsx`:return`jsx`;case`mjs`:case`cjs`:case`js`:return`js`;case`json`:return`json`;case`css`:return`css`;case`txt`:return`text`;default:return`js`}}async function Rx(e,t){if(await e.exists(t))try{if(!(await e.stat(t)).isDirectory)return t}catch{return t}let n=[`.ts`,`.tsx`,`.jsx`,`.mjs`,`.cjs`,`.js`,`.json`];for(let r of n){let n=`${t}${r}`;if(await e.exists(n))return n}for(let r of n){let n=kr(t,`index${r}`);if(await e.exists(n))return n}return t}async function zx(e,t,n){let r=[];if(n.length>0){let t=await e(n,{kind:`warning`,color:!1});r.push(t.join(``))}if(t.length>0){let n=await e(t,{kind:`error`,color:!1});r.push(n.join(``))}return r.join(``)}function Bx(){return C(`esbuild`,async(e,t)=>{let n;try{n=jx(e)}catch(e){return{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}if(n.showHelp||e.length===0&&!t.stdin)return{stdout:xx,stderr:``,exitCode:0};if(!n.transform&&!n.bundle&&n.entries.length>1)return{stdout:``,stderr:`esbuild: multiple entry points require --bundle (transform mode accepts at most one entry)
751
- `,exitCode:2};let r;try{r=await xi({ipk:bx(t)})}catch(e){return{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return n.showVersion?{stdout:`${r.version}\n`,stderr:``,exitCode:0}:n.transform||!n.bundle&&n.entries.length<=1?Vx(n,t,r):Hx(n,t,r)})}async function Vx(e,t,n){let r,i=`<stdin>`;if(e.entries.length===1){let n=t.fs.resolvePath(t.cwd,e.entries[0]);if(!await t.fs.exists(n))return{stdout:``,stderr:`esbuild: ${e.entries[0]}: no such file\n`,exitCode:1};r=await t.fs.readFile(n),i=n}else if(r=P(t.stdin),!r)return{stdout:xx,stderr:``,exitCode:0};let a={loader:e.loader??Lx(i),sourcefile:i,...e.format?{format:e.format}:{},...e.minify?{minify:!0}:{},...e.sourcemap?{sourcemap:e.sourcemap}:{},...e.target?{target:e.target}:{},...e.platform?{platform:e.platform}:{},...Object.keys(e.define).length>0?{define:e.define}:{},...e.treeShaking===null?{}:{treeShaking:e.treeShaking}};try{let i=await n.transform(r,a),o=await zx(n.formatMessages,[],i.warnings);if(e.outfile){let n=t.fs.resolvePath(t.cwd,e.outfile);return await t.fs.writeFile(n,i.code),i.map&&e.sourcemap&&e.sourcemap!==`inline`&&await t.fs.writeFile(`${n}.map`,i.map),{stdout:``,stderr:o,exitCode:0}}return{stdout:i.code,stderr:o,exitCode:0}}catch(e){let t=e;return Array.isArray(t.errors)?{stdout:``,stderr:await zx(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function Hx(e,t,n){if(e.entries.length===0)return{stdout:``,stderr:`esbuild: --bundle requires at least one entry point
750
+ `,Sx=new Set([`iife`,`cjs`,`esm`]),Cx=new Set([`browser`,`node`,`neutral`]),wx=new Set([`linked`,`inline`,`external`,`both`]),Tx={"-h":`showHelp`,"--help":`showHelp`,"-v":`showVersion`,"--version":`showVersion`,"--bundle":`bundle`,"--transform":`transform`,"--minify":`minify`};function Ex(e){if(e.startsWith(`--`)){let t=e.indexOf(`=`);if(t>0)return{key:e.slice(0,t),inlineValue:e.slice(t+1)}}return{key:e,inlineValue:null}}function Dx(e,t,n){if(e.inlineValue!==null)return{value:e.inlineValue,advance:0};let r=t[n+1];if(typeof r!=`string`||r.startsWith(`-`))throw Error(`esbuild: ${e.key} requires a value`);return{value:r,advance:1}}function Ox(e,t,n,r){if(t.inlineValue!==null){if(!wx.has(t.inlineValue))throw Error(`esbuild: --sourcemap value must be one of linked|inline|external|both (got "${t.inlineValue}")`);return e.sourcemap=t.inlineValue,0}let i=n[r+1];return typeof i==`string`&&wx.has(i)?(e.sourcemap=i,1):(e.sourcemap=!0,0)}function kx(e,t,n,r){if(t.key===`--outfile`){let{value:i,advance:a}=Dx(t,n,r);return e.outfile=i,a}if(t.key===`--format`){let{value:i,advance:a}=Dx(t,n,r);if(!Sx.has(i))throw Error(`esbuild: --format must be one of iife|cjs|esm (got "${i}")`);return e.format=i,a}if(t.key===`--platform`){let{value:i,advance:a}=Dx(t,n,r);if(!Cx.has(i))throw Error(`esbuild: --platform must be one of browser|node|neutral (got "${i}")`);return e.platform=i,a}if(t.key===`--target`){let{value:i,advance:a}=Dx(t,n,r);return e.target=i.split(`,`).map(e=>e.trim()).filter(Boolean),a}if(t.key===`--loader`){let{value:i,advance:a}=Dx(t,n,r);return e.loader=i,a}return-1}function Ax(e,t,n){if(!e.startsWith(t))return!1;let r=e.slice(t.length),i=r.indexOf(`=`);if(i<1)throw Error(`esbuild: ${t.slice(0,-1)} requires <key>=<value>`);return n[r.slice(0,i)]=r.slice(i+1),!0}function jx(e){let t={entries:[],bundle:!1,transform:!1,outfile:null,format:null,minify:!1,sourcemap:null,target:null,loader:null,external:[],platform:null,define:{},banner:{},footer:{},treeShaking:null,showHelp:!1,showVersion:!1};for(let n=0;n<e.length;n++){let r=e[n],i=Tx[r];if(i){t[i]=!0;continue}if(r.startsWith(`--external:`)){t.external.push(r.slice(11));continue}if(Ax(r,`--define:`,t.define)||Ax(r,`--banner:`,t.banner)||Ax(r,`--footer:`,t.footer))continue;let a=Ex(r);if(a.key===`--tree-shaking`){if(a.inlineValue===null)t.treeShaking=!0;else if(a.inlineValue===`true`||a.inlineValue===`false`)t.treeShaking=a.inlineValue===`true`;else throw Error(`esbuild: --tree-shaking must be true or false (got "${a.inlineValue}")`);continue}if(a.key===`--sourcemap`){n+=Ox(t,a,e,n);continue}let o=kx(t,a,e,n);if(o>=0){n+=o;continue}if(r.startsWith(`-`))throw Error(`esbuild: unknown option: ${r}`);t.entries.push(r)}return t}function Mx(e,t,n,r,i){return{name:`slicc-vfs`,setup(a){a.onResolve({filter:/.*/},async a=>{if(a.kind!==`entry-point`&&Nx(a.path,r)||/^[a-z]+:/.test(a.path)&&!a.path.startsWith(`file:`))return{path:a.path,external:!0};if(Fx(a.path)){let n=a.importer?.startsWith(`/`)?Lr(a.importer):t;return{path:await Rx(e,e.resolvePath(n,a.path))}}return Ix(a.path,a.importer,n,Px(i,a.kind))}),a.onLoad({filter:/.*/},async t=>t.namespace&&t.namespace!==`file`?null:{contents:await e.readFile(t.path),loader:Lx(t.path),resolveDir:Lr(t.path)})}}}function Nx(e,t){return t.some(t=>{if(e===t)return!0;if(!t.includes(`*`))return!Fx(t)&&e.startsWith(`${t}/`);let n=t.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(`*`,`.*`);return RegExp(`^${n}$`).test(e)})}function Px(e,t){let n=t===`require-call`||t===`require-resolve`?`require`:`import`;switch(e??`browser`){case`browser`:return[`browser`,n,`default`];case`node`:return[`node`,n,`default`];case`neutral`:return[n,`default`]}}function Fx(e){return e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`/`)}async function Ix(e,t,n,r){let i=t?.startsWith(`/`)?Lr(t):n.fromDir;try{let t=await Er(e,i,n.reader,{conditions:r});return t.type===`file`?{path:t.path}:{path:e,external:!0}}catch(e){return{errors:[{text:e instanceof Error?e.message:String(e)}]}}}function Lx(e){let t=Nr(e).toLowerCase(),n=t.lastIndexOf(`.`);if(n<0)return`js`;switch(t.slice(n+1)){case`ts`:return`ts`;case`tsx`:return`tsx`;case`jsx`:return`jsx`;case`mjs`:case`cjs`:case`js`:return`js`;case`json`:return`json`;case`css`:return`css`;case`txt`:return`text`;default:return`js`}}async function Rx(e,t){if(await e.exists(t))try{if(!(await e.stat(t)).isDirectory)return t}catch{return t}let n=[`.ts`,`.tsx`,`.jsx`,`.mjs`,`.cjs`,`.js`,`.json`];for(let r of n){let n=`${t}${r}`;if(await e.exists(n))return n}for(let r of n){let n=Mr(t,`index${r}`);if(await e.exists(n))return n}return t}async function zx(e,t,n){let r=[];if(n.length>0){let t=await e(n,{kind:`warning`,color:!1});r.push(t.join(``))}if(t.length>0){let n=await e(t,{kind:`error`,color:!1});r.push(n.join(``))}return r.join(``)}function Bx(){return C(`esbuild`,async(e,t)=>{let n;try{n=jx(e)}catch(e){return{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}if(n.showHelp||e.length===0&&!t.stdin)return{stdout:xx,stderr:``,exitCode:0};if(!n.transform&&!n.bundle&&n.entries.length>1)return{stdout:``,stderr:`esbuild: multiple entry points require --bundle (transform mode accepts at most one entry)
751
+ `,exitCode:2};let r;try{r=await wi({ipk:bx(t)})}catch(e){return{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return n.showVersion?{stdout:`${r.version}\n`,stderr:``,exitCode:0}:n.transform||!n.bundle&&n.entries.length<=1?Vx(n,t,r):Hx(n,t,r)})}async function Vx(e,t,n){let r,i=`<stdin>`;if(e.entries.length===1){let n=t.fs.resolvePath(t.cwd,e.entries[0]);if(!await t.fs.exists(n))return{stdout:``,stderr:`esbuild: ${e.entries[0]}: no such file\n`,exitCode:1};r=await t.fs.readFile(n),i=n}else if(r=P(t.stdin),!r)return{stdout:xx,stderr:``,exitCode:0};let a={loader:e.loader??Lx(i),sourcefile:i,...e.format?{format:e.format}:{},...e.minify?{minify:!0}:{},...e.sourcemap?{sourcemap:e.sourcemap}:{},...e.target?{target:e.target}:{},...e.platform?{platform:e.platform}:{},...Object.keys(e.define).length>0?{define:e.define}:{},...e.treeShaking===null?{}:{treeShaking:e.treeShaking}};try{let i=await n.transform(r,a),o=await zx(n.formatMessages,[],i.warnings);if(e.outfile){let n=t.fs.resolvePath(t.cwd,e.outfile);return await t.fs.writeFile(n,i.code),i.map&&e.sourcemap&&e.sourcemap!==`inline`&&await t.fs.writeFile(`${n}.map`,i.map),{stdout:``,stderr:o,exitCode:0}}return{stdout:i.code,stderr:o,exitCode:0}}catch(e){let t=e;return Array.isArray(t.errors)?{stdout:``,stderr:await zx(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function Hx(e,t,n){if(e.entries.length===0)return{stdout:``,stderr:`esbuild: --bundle requires at least one entry point
752
752
  `,exitCode:2};let r=e.entries.map(e=>t.fs.resolvePath(t.cwd,e));for(let e of r)if(!await t.fs.exists(e))return{stdout:``,stderr:`esbuild: ${e}: no such file\n`,exitCode:1};let i={entryPoints:r,bundle:!0,write:!1,plugins:[Mx(t.fs,t.cwd,bx(t),e.external,e.platform)],format:e.format??`esm`,...Ux(e)};try{let r=await n.build(i),a=await zx(n.formatMessages,r.errors,r.warnings),o=r.outputFiles??[];if(e.outfile){if(o.length===0)return{stdout:``,stderr:`esbuild: build produced no output
753
- `,exitCode:1};let n=t.fs.resolvePath(t.cwd,e.outfile);await t.fs.writeFile(n,o[0].text);let r=Pr(n);for(let e=1;e<o.length;e++){let n=o[e],i=kr(r,Ar(n.path));await t.fs.writeFile(i,n.text)}return{stdout:``,stderr:a,exitCode:0}}return{stdout:o.map(e=>e.text).join(``),stderr:a,exitCode:0}}catch(e){let t=e;return Array.isArray(t.errors)?{stdout:``,stderr:await zx(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function Ux(e){return{...e.minify?{minify:!0}:{},...e.sourcemap?{sourcemap:e.sourcemap}:{},...e.target?{target:e.target}:{},...e.external.length>0?{external:e.external}:{},...e.platform?{platform:e.platform}:{},...Object.keys(e.define).length>0?{define:e.define}:{},...Object.keys(e.banner).length>0?{banner:e.banner}:{},...Object.keys(e.footer).length>0?{footer:e.footer}:{},...e.treeShaking===null?{}:{treeShaking:e.treeShaking}}}function Wx(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}var Gx=class{ops(){return import(`./esptool-operations-h8-8jVn_.js`)}registry(){if(!ci())throw Error(`Web Serial is unavailable in this browser`);return mi()}async chipInfo(e,t,n){return(await this.ops()).esptoolChipInfo(this.registry(),e,t,n)}async readMac(e,t,n){return(await this.ops()).esptoolReadMac(this.registry(),e,t,n)}async eraseFlash(e,t,n){await(await this.ops()).esptoolEraseFlash(this.registry(),e,t,n)}async flash(e,t,n,r,i){await(await this.ops()).esptoolFlash(this.registry(),e,t,n,r,i)}async readFlash(e,t,n,r,i){return(await this.ops()).esptoolReadFlash(this.registry(),e,t,n,r,i)}async readReg(e,t,n,r){return(await this.ops()).esptoolReadReg(this.registry(),e,t,n,r)}async flashId(e,t,n){return(await this.ops()).esptoolFlashId(this.registry(),e,t,n)}async eraseRegion(e,t,n,r,i){await(await this.ops()).esptoolEraseRegion(this.registry(),e,t,n,r,i)}async run(e,t,n){await(await this.ops()).esptoolRun(this.registry(),e,t,n)}},Kx=class e{rpc;constructor(e){this.rpc=e}static INFO_TIMEOUT_MS=12e4;static ERASE_TIMEOUT_MS=3e5;static FLASH_TIMEOUT_MS=6e5;async withProgress(e,t,n){let r=this.rpc.onEvent(`esptool-progress`,n=>{let r=n;!r||r.handle!==e||t(r.line)});try{return await n()}finally{r()}}async chipInfo(t,n,r){return this.withProgress(t,r,()=>this.rpc.call(`esptool-chip-info`,{handle:t,baudRate:n},{timeoutMs:e.INFO_TIMEOUT_MS}))}async readMac(t,n,r){return this.withProgress(t,r,()=>this.rpc.call(`esptool-read-mac`,{handle:t,baudRate:n},{timeoutMs:e.INFO_TIMEOUT_MS}))}async eraseFlash(t,n,r){await this.withProgress(t,r,()=>this.rpc.call(`esptool-erase-flash`,{handle:t,baudRate:n},{timeoutMs:e.ERASE_TIMEOUT_MS}))}async flash(t,n,r,i,a){await this.withProgress(t,a,()=>this.rpc.call(`esptool-flash`,{handle:t,baudRate:n,eraseAll:r,segments:i.map(e=>({address:e.address,bytes:Wx(e.data)}))},{timeoutMs:e.FLASH_TIMEOUT_MS}))}async readFlash(t,n,r,i,a){let{bytes:o}=await this.withProgress(t,a,()=>this.rpc.call(`esptool-read-flash`,{handle:t,baudRate:n,address:r,size:i},{timeoutMs:e.FLASH_TIMEOUT_MS}));return new Uint8Array(o)}async readReg(t,n,r,i){return this.withProgress(t,i,()=>this.rpc.call(`esptool-read-reg`,{handle:t,baudRate:n,address:r},{timeoutMs:e.INFO_TIMEOUT_MS}))}async flashId(t,n,r){return this.withProgress(t,r,()=>this.rpc.call(`esptool-flash-id`,{handle:t,baudRate:n},{timeoutMs:e.INFO_TIMEOUT_MS}))}async eraseRegion(t,n,r,i,a){await this.withProgress(t,a,()=>this.rpc.call(`esptool-erase-region`,{handle:t,baudRate:n,address:r,size:i},{timeoutMs:e.ERASE_TIMEOUT_MS}))}async run(t,n,r){await this.withProgress(t,r,()=>this.rpc.call(`esptool-run`,{handle:t,baudRate:n},{timeoutMs:e.INFO_TIMEOUT_MS}))}};function qx(e,t){return e&&ci()?new Gx:t?new Kx(t):null}const Jx=Symbol(`picker-approval-timeout`);async function Yx(e,t,n){let r=He.generateId(),i=!1,a=Ue({id:r,html:Ym(e,t),onAction:async(e,t)=>{if(e!==`approve`)return{denied:!0};let n=t;return n?.cancelled?{cancelled:!0}:n?.error?{error:String(n.error)}:n?.granted&&typeof n.handle==`string`?{approved:!0,handle:n.handle,info:n.info??null}:n?.granted&&n?.info?{approved:!0,info:n.info}:{error:`picker returned an unexpected response`}}},n.onUpdate).catch(e=>{if(i)return Jx;throw e}),o,s=new Promise(t=>{o=setTimeout(()=>{i=!0,He.cancel(r,`${e}: timed out`),t(Jx)},12e4)}),c=await Promise.race([a,s]);if(o&&clearTimeout(o),c===Jx)throw Error(`${e}: timed out after 120s waiting for user approval`);let l=c;if(l.denied)throw Error(`${e}: denied by user`);if(l.cancelled)throw Error(`${e}: cancelled`);if(l.error)throw Error(`${e}: ${l.error}`);if(!l.approved||!l.info)throw Error(`${e}: no device selected`);return{handle:l.handle??``,info:l.info}}const Xx=new Set([`--vid`,`--pid`,`--baud`,`--data-bits`,`--stop-bits`,`--parity`,`--flow-control`,`--buffer-size`,`--bytes`,`--until`,`--timeout-ms`,`--dtr`,`--rts`,`--break`,`--__resolved`]);function Zx(e){return Vn(e,Xx)}function B(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 Qx(e){let t=e.replace(/0x/gi,``).replace(/[\s:,]/g,``);if(t.length===0)return new Uint8Array;if(t.length%2!=0||/[^0-9a-f]/i.test(t))throw Error(`invalid hex string: '${e}'`);let n=new Uint8Array(t.length/2);for(let e=0;e<n.length;e++)n[e]=parseInt(t.slice(e*2,e*2+2),16);return n}function $x(e){let t={};return e.has(`--vid`)&&(t.usbVendorId=B(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.usbProductId=B(e.get(`--pid`),`pid`)),Object.keys(t).length>0?[t]:[]}const eS=new Set([`none`,`even`,`odd`]),tS=new Set([`none`,`hardware`]);function nS(e){let t={baudRate:e.has(`--baud`)?B(e.get(`--baud`),`baud`):9600};if(e.has(`--data-bits`)&&(t.dataBits=B(e.get(`--data-bits`),`data-bits`)),e.has(`--stop-bits`)&&(t.stopBits=B(e.get(`--stop-bits`),`stop-bits`)),e.has(`--parity`)){let n=e.get(`--parity`);if(!eS.has(n))throw Error(`invalid --parity: '${n}'`);t.parity=n}if(e.has(`--flow-control`)){let n=e.get(`--flow-control`);if(!tS.has(n))throw Error(`invalid --flow-control: '${n}'`);t.flowControl=n}return e.has(`--buffer-size`)&&(t.bufferSize=B(e.get(`--buffer-size`),`buffer-size`)),t}function rS(e){let t={};return e.has(`--bytes`)&&(t.maxBytes=B(e.get(`--bytes`),`bytes`)),e.has(`--until`)&&(t.until=Qx(e.get(`--until`))),e.has(`--timeout-ms`)&&(t.timeoutMs=B(e.get(`--timeout-ms`),`timeout-ms`)),t}function iS(e,t){let n=e.toLowerCase();if(n===`on`||n===`true`||n===`1`)return!0;if(n===`off`||n===`false`||n===`0`)return!1;throw Error(`invalid ${t}: '${e}' (use on/off)`)}function aS(e){let t={};return e.has(`--dtr`)&&(t.dataTerminalReady=iS(e.get(`--dtr`),`dtr`)),e.has(`--rts`)&&(t.requestToSend=iS(e.get(`--rts`),`rts`)),e.has(`--break`)&&(t.break=iS(e.get(`--break`),`break`)),t}function oS(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 sS(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function cS(e){return`0x${e.toString(16).padStart(4,`0`)}`}function lS(e){let t=e.usbVendorId!==void 0||e.usbProductId!==void 0?`${cS(e.usbVendorId??0)}:${cS(e.usbProductId??0)}`:`(native serial)`,n=e.opened?` [open]`:``;return`${e.handle}\t${t}${n}`}function uS(e){return`cts=${+!!e.clearToSend} dcd=${+!!e.dataCarrierDetect} dsr=${+!!e.dataSetReady} ri=${+!!e.ringIndicator}\n`}function V(e){return{stdout:e,stderr:``,exitCode:0}}function H(e){return{stdout:``,stderr:`serial: ${e}\n`,exitCode:1}}const dS=`serial - access serial ports via Web Serial
753
+ `,exitCode:1};let n=t.fs.resolvePath(t.cwd,e.outfile);await t.fs.writeFile(n,o[0].text);let r=Lr(n);for(let e=1;e<o.length;e++){let n=o[e],i=Mr(r,Nr(n.path));await t.fs.writeFile(i,n.text)}return{stdout:``,stderr:a,exitCode:0}}return{stdout:o.map(e=>e.text).join(``),stderr:a,exitCode:0}}catch(e){let t=e;return Array.isArray(t.errors)?{stdout:``,stderr:await zx(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function Ux(e){return{...e.minify?{minify:!0}:{},...e.sourcemap?{sourcemap:e.sourcemap}:{},...e.target?{target:e.target}:{},...e.external.length>0?{external:e.external}:{},...e.platform?{platform:e.platform}:{},...Object.keys(e.define).length>0?{define:e.define}:{},...Object.keys(e.banner).length>0?{banner:e.banner}:{},...Object.keys(e.footer).length>0?{footer:e.footer}:{},...e.treeShaking===null?{}:{treeShaking:e.treeShaking}}}function Wx(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}var Gx=class{ops(){return import(`./esptool-operations-h8-8jVn_.js`)}registry(){if(!vi())throw Error(`Web Serial is unavailable in this browser`);return hi()}async chipInfo(e,t,n){return(await this.ops()).esptoolChipInfo(this.registry(),e,t,n)}async readMac(e,t,n){return(await this.ops()).esptoolReadMac(this.registry(),e,t,n)}async eraseFlash(e,t,n){await(await this.ops()).esptoolEraseFlash(this.registry(),e,t,n)}async flash(e,t,n,r,i){await(await this.ops()).esptoolFlash(this.registry(),e,t,n,r,i)}async readFlash(e,t,n,r,i){return(await this.ops()).esptoolReadFlash(this.registry(),e,t,n,r,i)}async readReg(e,t,n,r){return(await this.ops()).esptoolReadReg(this.registry(),e,t,n,r)}async flashId(e,t,n){return(await this.ops()).esptoolFlashId(this.registry(),e,t,n)}async eraseRegion(e,t,n,r,i){await(await this.ops()).esptoolEraseRegion(this.registry(),e,t,n,r,i)}async run(e,t,n){await(await this.ops()).esptoolRun(this.registry(),e,t,n)}},Kx=class e{rpc;constructor(e){this.rpc=e}static INFO_TIMEOUT_MS=12e4;static ERASE_TIMEOUT_MS=3e5;static FLASH_TIMEOUT_MS=6e5;async withProgress(e,t,n){let r=this.rpc.onEvent(`esptool-progress`,n=>{let r=n;!r||r.handle!==e||t(r.line)});try{return await n()}finally{r()}}async chipInfo(t,n,r){return this.withProgress(t,r,()=>this.rpc.call(`esptool-chip-info`,{handle:t,baudRate:n},{timeoutMs:e.INFO_TIMEOUT_MS}))}async readMac(t,n,r){return this.withProgress(t,r,()=>this.rpc.call(`esptool-read-mac`,{handle:t,baudRate:n},{timeoutMs:e.INFO_TIMEOUT_MS}))}async eraseFlash(t,n,r){await this.withProgress(t,r,()=>this.rpc.call(`esptool-erase-flash`,{handle:t,baudRate:n},{timeoutMs:e.ERASE_TIMEOUT_MS}))}async flash(t,n,r,i,a){await this.withProgress(t,a,()=>this.rpc.call(`esptool-flash`,{handle:t,baudRate:n,eraseAll:r,segments:i.map(e=>({address:e.address,bytes:Wx(e.data)}))},{timeoutMs:e.FLASH_TIMEOUT_MS}))}async readFlash(t,n,r,i,a){let{bytes:o}=await this.withProgress(t,a,()=>this.rpc.call(`esptool-read-flash`,{handle:t,baudRate:n,address:r,size:i},{timeoutMs:e.FLASH_TIMEOUT_MS}));return new Uint8Array(o)}async readReg(t,n,r,i){return this.withProgress(t,i,()=>this.rpc.call(`esptool-read-reg`,{handle:t,baudRate:n,address:r},{timeoutMs:e.INFO_TIMEOUT_MS}))}async flashId(t,n,r){return this.withProgress(t,r,()=>this.rpc.call(`esptool-flash-id`,{handle:t,baudRate:n},{timeoutMs:e.INFO_TIMEOUT_MS}))}async eraseRegion(t,n,r,i,a){await this.withProgress(t,a,()=>this.rpc.call(`esptool-erase-region`,{handle:t,baudRate:n,address:r,size:i},{timeoutMs:e.ERASE_TIMEOUT_MS}))}async run(t,n,r){await this.withProgress(t,r,()=>this.rpc.call(`esptool-run`,{handle:t,baudRate:n},{timeoutMs:e.INFO_TIMEOUT_MS}))}};function qx(e,t){return e&&vi()?new Gx:t?new Kx(t):null}const Jx=Symbol(`picker-approval-timeout`);async function Yx(e,t,n){let r=He.generateId(),i=!1,a=Ue({id:r,html:Ym(e,t),onAction:async(e,t)=>{if(e!==`approve`)return{denied:!0};let n=t;return n?.cancelled?{cancelled:!0}:n?.error?{error:String(n.error)}:n?.granted&&typeof n.handle==`string`?{approved:!0,handle:n.handle,info:n.info??null}:n?.granted&&n?.info?{approved:!0,info:n.info}:{error:`picker returned an unexpected response`}}},n.onUpdate).catch(e=>{if(i)return Jx;throw e}),o,s=new Promise(t=>{o=setTimeout(()=>{i=!0,He.cancel(r,`${e}: timed out`),t(Jx)},12e4)}),c=await Promise.race([a,s]);if(o&&clearTimeout(o),c===Jx)throw Error(`${e}: timed out after 120s waiting for user approval`);let l=c;if(l.denied)throw Error(`${e}: denied by user`);if(l.cancelled)throw Error(`${e}: cancelled`);if(l.error)throw Error(`${e}: ${l.error}`);if(!l.approved||!l.info)throw Error(`${e}: no device selected`);return{handle:l.handle??``,info:l.info}}const Xx=new Set([`--vid`,`--pid`,`--baud`,`--data-bits`,`--stop-bits`,`--parity`,`--flow-control`,`--buffer-size`,`--bytes`,`--until`,`--timeout-ms`,`--dtr`,`--rts`,`--break`,`--__resolved`]);function Zx(e){return Vn(e,Xx)}function B(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 Qx(e){let t=e.replace(/0x/gi,``).replace(/[\s:,]/g,``);if(t.length===0)return new Uint8Array;if(t.length%2!=0||/[^0-9a-f]/i.test(t))throw Error(`invalid hex string: '${e}'`);let n=new Uint8Array(t.length/2);for(let e=0;e<n.length;e++)n[e]=parseInt(t.slice(e*2,e*2+2),16);return n}function $x(e){let t={};return e.has(`--vid`)&&(t.usbVendorId=B(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.usbProductId=B(e.get(`--pid`),`pid`)),Object.keys(t).length>0?[t]:[]}const eS=new Set([`none`,`even`,`odd`]),tS=new Set([`none`,`hardware`]);function nS(e){let t={baudRate:e.has(`--baud`)?B(e.get(`--baud`),`baud`):9600};if(e.has(`--data-bits`)&&(t.dataBits=B(e.get(`--data-bits`),`data-bits`)),e.has(`--stop-bits`)&&(t.stopBits=B(e.get(`--stop-bits`),`stop-bits`)),e.has(`--parity`)){let n=e.get(`--parity`);if(!eS.has(n))throw Error(`invalid --parity: '${n}'`);t.parity=n}if(e.has(`--flow-control`)){let n=e.get(`--flow-control`);if(!tS.has(n))throw Error(`invalid --flow-control: '${n}'`);t.flowControl=n}return e.has(`--buffer-size`)&&(t.bufferSize=B(e.get(`--buffer-size`),`buffer-size`)),t}function rS(e){let t={};return e.has(`--bytes`)&&(t.maxBytes=B(e.get(`--bytes`),`bytes`)),e.has(`--until`)&&(t.until=Qx(e.get(`--until`))),e.has(`--timeout-ms`)&&(t.timeoutMs=B(e.get(`--timeout-ms`),`timeout-ms`)),t}function iS(e,t){let n=e.toLowerCase();if(n===`on`||n===`true`||n===`1`)return!0;if(n===`off`||n===`false`||n===`0`)return!1;throw Error(`invalid ${t}: '${e}' (use on/off)`)}function aS(e){let t={};return e.has(`--dtr`)&&(t.dataTerminalReady=iS(e.get(`--dtr`),`dtr`)),e.has(`--rts`)&&(t.requestToSend=iS(e.get(`--rts`),`rts`)),e.has(`--break`)&&(t.break=iS(e.get(`--break`),`break`)),t}function oS(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 sS(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function cS(e){return`0x${e.toString(16).padStart(4,`0`)}`}function lS(e){let t=e.usbVendorId!==void 0||e.usbProductId!==void 0?`${cS(e.usbVendorId??0)}:${cS(e.usbProductId??0)}`:`(native serial)`,n=e.opened?` [open]`:``;return`${e.handle}\t${t}${n}`}function uS(e){return`cts=${+!!e.clearToSend} dcd=${+!!e.dataCarrierDetect} dsr=${+!!e.dataSetReady} ri=${+!!e.ringIndicator}\n`}function V(e){return{stdout:e,stderr:``,exitCode:0}}function H(e){return{stdout:``,stderr:`serial: ${e}\n`,exitCode:1}}const dS=`serial - access serial ports via Web Serial
754
754
 
755
755
  Usage: serial <subcommand> [options]
756
756
 
@@ -769,7 +769,7 @@ Open flags:
769
769
  --parity none|even|odd --flow-control none|hardware --buffer-size N
770
770
 
771
771
  Read flags:
772
- --bytes N Stop after N bytes (default: ${_i} cap)
772
+ --bytes N Stop after N bytes (default: ${ui} cap)
773
773
  --until <hex> Stop once this byte sequence is seen
774
774
  --timeout-ms N Stop after N ms (default 1000)
775
775
  --hex Hex-dump the bytes instead of emitting raw
@@ -780,10 +780,10 @@ Signal flags (set):
780
780
  Options:
781
781
  -h, --help
782
782
 
783
- Reads/writes are capped at ${_i} bytes (4 MiB).
783
+ Reads/writes are capped at ${ui} bytes (4 MiB).
784
784
  `;function fS(e,t){if(t)return V(e.length?`${sS(e)}\n`:``);let n=``;for(let t=0;t<e.length;t++)n+=String.fromCharCode(e[t]);return V(n)}async function pS(e){let t=await e.list();return t.length===0?V(`no granted serial ports
785
785
  `):V(`${t.map(lS).join(`
786
- `)}\n`)}async function mS(e,t){let n=e.get(`--__resolved`);if(n)return V(`${lS(await t.info(n))}\n`);let r=$x(e),i=Ve();if(i){let e=await Yx(`serial-port`,r,i);if(e.handle)return V(`${lS(await t.info(e.handle))}\n`);let n=e.info,a=ci();if(!a)return H(`request: Web Serial unavailable for port re-acquire`);let o=(await a.getPorts()).find(e=>{let t=typeof e.getInfo==`function`?e.getInfo():{};return(n.usbVendorId===void 0||t.usbVendorId===n.usbVendorId)&&(n.usbProductId===void 0||t.usbProductId===n.usbProductId)});if(!o)return H(`request: granted port could not be re-acquired`);let s=mi(),c=s.register(o),l=s.get(c);return l?V(`${lS(si(c,l))}\n`):H(`request: failed to register granted port`)}return V(`${lS(await t.request(r))}\n`)}async function hS(e,t,n){let r=e[1];return r?(await n.open(r,nS(t)),V(``)):H(`open: handle required`)}async function gS(e,t){let n=e[1];return n?(await t.close(n),V(``)):H(`close: handle required`)}async function _S(e,t,n,r){let i=e[1];if(!i)return H(`read: handle required`);let a=rS(t);return a.maxBytes!==void 0&&a.maxBytes>4194304?H(`read --bytes exceeds 4 MiB limit`):fS(await r.read(i,a),n.has(`--hex`))}async function vS(e,t,n){let r=e[1];if(!r)return H(`write: handle required`);let i=oS(t);return i.length>4194304?H(`write payload exceeds 4 MiB limit`):V(`${await n.write(r,i)} bytes written\n`)}async function yS(e,t,n){let[,r,i]=e;return!r||!i?H(`signals: handle and get|set required`):i===`get`?V(uS(await n.getSignals(r))):i===`set`?(await n.setSignals(r,aS(t)),V(``)):H(`signals: unknown action '${i}' (use get|set)`)}async function bS(e,t,n){let{positionals:r,flags:i,bools:a}=Zx(e),o=r[0];switch(o){case`list`:return pS(n);case`request`:return mS(i,n);case`open`:return hS(r,i,n);case`close`:return gS(r,n);case`read`:return _S(r,i,a,n);case`write`:return vS(r,t,n);case`signals`:return yS(r,i,n);default:return H(`unknown subcommand '${o??``}'. Try 'serial --help'.`)}}function xS(){return C(`serial`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return V(dS);let n=di(be(),b());if(!n)return H(`Web Serial is unavailable in this environment`);try{return await bS(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?H(`user cancelled or no port selected`):H(t)}})}const SS=new Set([`--port`,`--baud`,`--vid`,`--pid`]),CS=115200;function wS(e){return Vn(e,SS)}function TS(e){let t=e.replace(/-/g,`_`);return t===`chip_info`||t===`id`?`chip_id`:t}function ES(e){return{stdout:e,stderr:``,exitCode:0}}function DS(e){return{stdout:``,stderr:`esptool: ${e}\n`,exitCode:1}}const OS=`esptool - flash ESP32 / ESP8266 chips via esptool-js
786
+ `)}\n`)}async function mS(e,t){let n=e.get(`--__resolved`);if(n)return V(`${lS(await t.info(n))}\n`);let r=$x(e),i=Ve();if(i){let e=await Yx(`serial-port`,r,i);if(e.handle)return V(`${lS(await t.info(e.handle))}\n`);let n=e.info,a=vi();if(!a)return H(`request: Web Serial unavailable for port re-acquire`);let o=(await a.getPorts()).find(e=>{let t=typeof e.getInfo==`function`?e.getInfo():{};return(n.usbVendorId===void 0||t.usbVendorId===n.usbVendorId)&&(n.usbProductId===void 0||t.usbProductId===n.usbProductId)});if(!o)return H(`request: granted port could not be re-acquired`);let s=hi(),c=s.register(o),l=s.get(c);return l?V(`${lS(di(c,l))}\n`):H(`request: failed to register granted port`)}return V(`${lS(await t.request(r))}\n`)}async function hS(e,t,n){let r=e[1];return r?(await n.open(r,nS(t)),V(``)):H(`open: handle required`)}async function gS(e,t){let n=e[1];return n?(await t.close(n),V(``)):H(`close: handle required`)}async function _S(e,t,n,r){let i=e[1];if(!i)return H(`read: handle required`);let a=rS(t);return a.maxBytes!==void 0&&a.maxBytes>4194304?H(`read --bytes exceeds 4 MiB limit`):fS(await r.read(i,a),n.has(`--hex`))}async function vS(e,t,n){let r=e[1];if(!r)return H(`write: handle required`);let i=oS(t);return i.length>4194304?H(`write payload exceeds 4 MiB limit`):V(`${await n.write(r,i)} bytes written\n`)}async function yS(e,t,n){let[,r,i]=e;return!r||!i?H(`signals: handle and get|set required`):i===`get`?V(uS(await n.getSignals(r))):i===`set`?(await n.setSignals(r,aS(t)),V(``)):H(`signals: unknown action '${i}' (use get|set)`)}async function bS(e,t,n){let{positionals:r,flags:i,bools:a}=Zx(e),o=r[0];switch(o){case`list`:return pS(n);case`request`:return mS(i,n);case`open`:return hS(r,i,n);case`close`:return gS(r,n);case`read`:return _S(r,i,a,n);case`write`:return vS(r,t,n);case`signals`:return yS(r,i,n);default:return H(`unknown subcommand '${o??``}'. Try 'serial --help'.`)}}function xS(){return C(`serial`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return V(dS);let n=bi(be(),b());if(!n)return H(`Web Serial is unavailable in this environment`);try{return await bS(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?H(`user cancelled or no port selected`):H(t)}})}const SS=new Set([`--port`,`--baud`,`--vid`,`--pid`]),CS=115200;function wS(e){return Vn(e,SS)}function TS(e){let t=e.replace(/-/g,`_`);return t===`chip_info`||t===`id`?`chip_id`:t}function ES(e){return{stdout:e,stderr:``,exitCode:0}}function DS(e){return{stdout:``,stderr:`esptool: ${e}\n`,exitCode:1}}const OS=`esptool - flash ESP32 / ESP8266 chips via esptool-js
787
787
 
788
788
  Usage: esptool [--port H] [--baud N] <subcommand> [args]
789
789
 
@@ -820,7 +820,7 @@ Without --port, the Web Serial picker opens (asks for permission).
820
820
  `)}\n`:`region erased
821
821
  `)}case`run`:{let e=await kS(a,r);return await n.run(e,c,u),ES(l.length?`${l.join(`
822
822
  `)}\n`:`running app
823
- `)}default:return DS(`unknown subcommand '${i[0]??``}'. Try 'esptool --help'.`)}}function MS(){return C(`esptool`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return ES(OS);let n=be(),r=b(),i=qx(n,r),a=di(n,r);if(!i||!a)return DS(`Web Serial is unavailable in this environment`);try{return await jS(e,t,i,a)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?DS(`user cancelled or no port selected`):DS(t)}})}function NS(){return C(`ffmpeg`,async(e,t)=>{let{runFfmpeg:n}=await import(`./run-juG_3wwW.js`);return n(e,t)})}function PS(){return C(`ffprobe`,async(e,t)=>{let{runFfprobe:n}=await import(`./run-CRTEPV5c.js`);return n(e,t)})}function FS(e){let t=xe().find(t=>t.id===e);return t?t.id:null}function IS(){return xe().map(e=>e.id)}function LS(e){return Ce(e)}function RS(e,t){if(Se(e,t),Te()[e]!==t)throw Error(`flag ${e} cannot be overridden on this float`)}function zS(e){let t=globalThis.localStorage;if(!t||typeof t.setItem!=`function`)throw Error(`this realm has no localStorage to apply the override`);t.setItem(Ee,e)}const BS=`usage: flags set <id> on|off
823
+ `)}default:return DS(`unknown subcommand '${i[0]??``}'. Try 'esptool --help'.`)}}function MS(){return C(`esptool`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return ES(OS);let n=be(),r=b(),i=qx(n,r),a=bi(n,r);if(!i||!a)return DS(`Web Serial is unavailable in this environment`);try{return await jS(e,t,i,a)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?DS(`user cancelled or no port selected`):DS(t)}})}function NS(){return C(`ffmpeg`,async(e,t)=>{let{runFfmpeg:n}=await import(`./run-juG_3wwW.js`);return n(e,t)})}function PS(){return C(`ffprobe`,async(e,t)=>{let{runFfprobe:n}=await import(`./run-CRTEPV5c.js`);return n(e,t)})}function FS(e){let t=xe().find(t=>t.id===e);return t?t.id:null}function IS(){return xe().map(e=>e.id)}function LS(e){return Ce(e)}function RS(e,t){if(Se(e,t),Te()[e]!==t)throw Error(`flag ${e} cannot be overridden on this float`)}function zS(e){let t=globalThis.localStorage;if(!t||typeof t.setItem!=`function`)throw Error(`this realm has no localStorage to apply the override`);t.setItem(Ee,e)}const BS=`usage: flags set <id> on|off
824
824
  flags get <id>
825
825
 
826
826
  set <id> on|off Persist a local override. The next new session reads it.
@@ -830,7 +830,7 @@ Without --port, the Web Serial picker opens (asks for permission).
830
830
 
831
831
  set <id> on|off Persist a local override. The next new session reads it.
832
832
  get <id> Print the resolved value`)}})}const qS=new Map;let JS=0;const YS=e=>({stdout:e,stderr:``,exitCode:0}),XS=e=>({stdout:``,stderr:`fswatch: ${e}\n`,exitCode:1}),ZS=[`--path`,`--pattern`,`--scoop`,`--name`];function QS(e){let t=w(e.slice(1),{});if(`error`in t)return XS(t.error);if(qS.size===0)return YS(`No active file watchers.
833
- `);let n=``;for(let[,e]of qS)n+=`ID: ${e.id}\n`,n+=` Name: ${e.name}\n`,n+=` Path: ${e.basePath}\n`,n+=` Pattern: ${e.pattern}\n`,e.scoop&&(n+=` Scoop: ${e.scoop}\n`),n+=` Created: ${e.createdAt}\n\n`;return YS(n)}function $S(e){let t=w(e.slice(1),{});if(`error`in t)return XS(t.error);let n=t.positionals[0];if(!n)return XS(`delete requires an ID`);let r=qS.get(n);return r?(r.unsubscribe(),qS.delete(n),YS(`Deleted watcher "${r.name}" (${n})\n`)):XS(`watcher not found: ${n}`)}function eC(e){let t=w(e.slice(1),{value:ZS});return`error`in t?t:{basePath:t.values.get(`--path`)??``,pattern:t.values.get(`--pattern`)??``,scoop:t.values.get(`--scoop`)??``,name:t.values.get(`--name`)??``}}function tC(e){let t=RegExp(`^`+e.replace(/\./g,`\\.`).replace(/\*/g,`.*`)+`$`);return e=>t.test(e.split(`/`).pop()??``)}async function nC(e,t){let n=eC(e);if(`error`in n)return XS(n.error);let r=n,i=r.scoop||void 0;if(r.scoop=la(r.scoop,t)??``,!r.basePath||!r.pattern)return XS(`--path and --pattern are required`);let a=await Oy(await Ey(),`fswatch create`,i);if(a)return{stdout:``,stderr:a,exitCode:1};let o=globalThis,s=o.__slicc_fs_watcher;if(!s)return XS(`file system watcher not available`);let c=`fsw-${++JS}`,l=r.name||`${r.pattern} in ${r.basePath}`,u=o.__slicc_lick_handler,d=s.watch(r.basePath,tC(r.pattern),e=>{if(!u)return;let t=e.map(e=>({type:e.type,path:e.path}));u({type:`fswatch`,fswatchId:c,fswatchName:l,targetScoop:r.scoop,timestamp:new Date().toISOString(),changes:t,body:{changes:t}})});qS.set(c,{id:c,name:l,basePath:r.basePath,pattern:r.pattern,scoop:r.scoop,unsubscribe:d,createdAt:new Date().toISOString()});let f=`Created file watcher "${l}"\n`;return f+=`ID: ${c}\n`,f+=`Path: ${r.basePath}\n`,f+=`Pattern: ${r.pattern}\n`,r.scoop&&(f+=`Scoop: ${r.scoop}\n`),YS(f)}function rC(){return C(`fswatch`,async(e,t)=>{let n=e[0];if(!n||T(e,{valueFlags:ZS}))return YS(`usage: fswatch <command> [options]
833
+ `);let n=``;for(let[,e]of qS)n+=`ID: ${e.id}\n`,n+=` Name: ${e.name}\n`,n+=` Path: ${e.basePath}\n`,n+=` Pattern: ${e.pattern}\n`,e.scoop&&(n+=` Scoop: ${e.scoop}\n`),n+=` Created: ${e.createdAt}\n\n`;return YS(n)}function $S(e){let t=w(e.slice(1),{});if(`error`in t)return XS(t.error);let n=t.positionals[0];if(!n)return XS(`delete requires an ID`);let r=qS.get(n);return r?(r.unsubscribe(),qS.delete(n),YS(`Deleted watcher "${r.name}" (${n})\n`)):XS(`watcher not found: ${n}`)}function eC(e){let t=w(e.slice(1),{value:ZS});return`error`in t?t:{basePath:t.values.get(`--path`)??``,pattern:t.values.get(`--pattern`)??``,scoop:t.values.get(`--scoop`)??``,name:t.values.get(`--name`)??``}}function tC(e){let t=RegExp(`^`+e.replace(/\./g,`\\.`).replace(/\*/g,`.*`)+`$`);return e=>t.test(e.split(`/`).pop()??``)}async function nC(e,t){let n=eC(e);if(`error`in n)return XS(n.error);let r=n,i=r.scoop||void 0;if(r.scoop=fa(r.scoop,t)??``,!r.basePath||!r.pattern)return XS(`--path and --pattern are required`);let a=await Oy(await Ey(),`fswatch create`,i);if(a)return{stdout:``,stderr:a,exitCode:1};let o=globalThis,s=o.__slicc_fs_watcher;if(!s)return XS(`file system watcher not available`);let c=`fsw-${++JS}`,l=r.name||`${r.pattern} in ${r.basePath}`,u=o.__slicc_lick_handler,d=s.watch(r.basePath,tC(r.pattern),e=>{if(!u)return;let t=e.map(e=>({type:e.type,path:e.path}));u({type:`fswatch`,fswatchId:c,fswatchName:l,targetScoop:r.scoop,timestamp:new Date().toISOString(),changes:t,body:{changes:t}})});qS.set(c,{id:c,name:l,basePath:r.basePath,pattern:r.pattern,scoop:r.scoop,unsubscribe:d,createdAt:new Date().toISOString()});let f=`Created file watcher "${l}"\n`;return f+=`ID: ${c}\n`,f+=`Path: ${r.basePath}\n`,f+=`Pattern: ${r.pattern}\n`,r.scoop&&(f+=`Scoop: ${r.scoop}\n`),YS(f)}function rC(){return C(`fswatch`,async(e,t)=>{let n=e[0];if(!n||T(e,{valueFlags:ZS}))return YS(`usage: fswatch <command> [options]
834
834
 
835
835
  Commands:
836
836
  create --path <path> --pattern <glob> [--scoop <name>] [--name <name>] Watch for file changes
@@ -842,7 +842,7 @@ Options:
842
842
  --pattern <glob> File pattern to match, e.g. "*.md", "*.bsh" (required)
843
843
  --scoop <target> Scoop name, cone name, or folder. Omit for your own cone.
844
844
  --name <name> Human-readable name for the watcher
845
- `);switch(n){case`list`:return QS(e);case`delete`:return $S(e);case`create`:return await nC(e,t.env);default:return XS(`unknown command: ${n}`)}})}function iC(e){return C(`gelatiere`,async(t,n)=>{let{runGelatiere:r}=await import(`./run-ZVh0R1Qb.js`);return r(t,n,e)})}function aC(e={}){return C(`go`,async(t,n)=>{let{runGoCommand:r}=await import(`./go-driver-BPwIwoNY.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}function oC(){return{stdout:`usage: hear [-i file] [-l lang] [-T seconds] [-d deviceId] [--engine name]
845
+ `);switch(n){case`list`:return QS(e);case`delete`:return $S(e);case`create`:return await nC(e,t.env);default:return XS(`unknown command: ${n}`)}})}function iC(e){return C(`gelatiere`,async(t,n)=>{let{runGelatiere:r}=await import(`./run-ZVh0R1Qb.js`);return r(t,n,e)})}function aC(e={}){return C(`go`,async(t,n)=>{let{runGoCommand:r}=await import(`./go-driver-BQftm-Ef.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}function oC(){return{stdout:`usage: hear [-i file] [-l lang] [-T seconds] [-d deviceId] [--engine name]
846
846
  hear --devices | --status | --warmup
847
847
 
848
848
  Speech recognition: listens on the microphone until you pause, then
@@ -867,7 +867,7 @@ Options:
867
867
  `;case`loading`:{let t=e=>(e/1024/1024).toFixed(1);return`enhanced 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 fC(e){return{stdout:``,stderr:`hear: ${e}\n`,exitCode:1}}function pC(e){return e instanceof Error?e.message:String(e)}function mC(e){let t=e.map((e,t)=>`${e.deviceId}\t${e.label||`Microphone ${t+1}`}`);return t.join(`
868
868
  `)+(t.length?`
869
869
  `:``)}async function hC(e){try{return e.local?navigator.mediaDevices?.enumerateDevices?{stdout:mC((await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)),stderr:``,exitCode:0}:fC(`device enumeration unavailable`):{stdout:mC((await e.panelRpc.call(`enumerate-media-devices`,void 0)).audioinputs),stderr:``,exitCode:0}}catch(e){return fC(pC(e))}}async function gC(e,t){try{if(e.local){let{hearStatus:e,hearWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:dC(t?n():e()),stderr:``,exitCode:0}}return{stdout:dC(t?await e.panelRpc.call(`hear-warmup`,void 0):await e.panelRpc.call(`hear-status`,void 0)),stderr:``,exitCode:0}}catch(e){return fC(pC(e))}}function _C(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function vC(e,t,n,r){if(n.byteLength===0)return fC(`no audio on ${r}`);let i=_C(n);try{return{stdout:(e.local?await(await import(`./speech-page-realm-stub-C7EPKrHd.js`)).hearTranscribe(i,t.lang):await e.panelRpc.call(`hear-transcribe`,{bytes:i,lang:t.lang},{timeoutMs:6e5})).transcript+`
870
- `,stderr:``,exitCode:0}}catch(e){return fC(`transcription failed: ${pC(e)}`)}}async function yC(e,t,n){let r=t.inputFile,i=n.fs.resolvePath(n.cwd,r),a;try{a=new Uint8Array(await n.fs.readFileBuffer(i))}catch{return fC(`cannot open ${r}: No such file`)}let o=wr(i);return!o.startsWith(`audio/`)&&!o.startsWith(`video/`)?fC(`${r} is not an audio file`):vC(e,t,a,r)}async function bC(e,t){let n=Math.round(t.timeoutSeconds*1e3);try{let r={lang:t.lang,timeoutMs:n,deviceId:t.deviceId,engine:t.engine},i=e.local?await(await import(`./speech-page-realm-stub-C7EPKrHd.js`)).hearCapture(r):await e.panelRpc.call(`hear-capture`,r,{timeoutMs:n+3e4});return i.transcript?{stdout:i.transcript+`
870
+ `,stderr:``,exitCode:0}}catch(e){return fC(`transcription failed: ${pC(e)}`)}}async function yC(e,t,n){let r=t.inputFile,i=n.fs.resolvePath(n.cwd,r),a;try{a=new Uint8Array(await n.fs.readFileBuffer(i))}catch{return fC(`cannot open ${r}: No such file`)}let o=Dr(i);return!o.startsWith(`audio/`)&&!o.startsWith(`video/`)?fC(`${r} is not an audio file`):vC(e,t,a,r)}async function bC(e,t){let n=Math.round(t.timeoutSeconds*1e3);try{let r={lang:t.lang,timeoutMs:n,deviceId:t.deviceId,engine:t.engine},i=e.local?await(await import(`./speech-page-realm-stub-C7EPKrHd.js`)).hearCapture(r):await e.panelRpc.call(`hear-capture`,r,{timeoutMs:n+3e4});return i.transcript?{stdout:i.transcript+`
871
871
  `,stderr:``,exitCode:0}:{stdout:``,stderr:`hear: no speech detected
872
872
  `,exitCode:1}}catch(e){return fC(pC(e))}}function xC(){return C(`hear`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return oC();let n=uC(e);if(`exitCode`in n)return n;let r={local:be(),panelRpc:b()};if(!r.local&&!r.panelRpc)return fC(`speech recognition unavailable in this environment`);if(n.devices)return hC(r);if(n.status||n.warmup)return gC(r,n.warmup);if(n.inputFile&&n.inputFile!==`-`)return yC(r,n,t);let i=ur(t.stdin);return n.inputFile===`-`||n.deviceId==null&&!mr(t,i.byteLength)?vC(r,n,i,`stdin`):bC(r,n)})}function SC(e,t,n){return typeof e.onSessionReplaced==`function`?e.onSessionReplaced(t,n):()=>void 0}function CC(e){let{browser:t,targetId:n,listeners:r,enable:i}=e,a=e.transport,o=e.sessionId,s=e=>{for(let[t,n]of r)e.off(t,n),e.on(t,n)},c=e=>{for(let[t,n]of r)e.off(t,n)};s(a);let l=SC(t,n,(e,t)=>{if(t!==a&&c(a),a=t,o=e,s(a),i)try{Promise.resolve(i(a,o)).catch(()=>void 0)}catch{}});return{get sessionId(){return o},get transport(){return a},stop(){l(),c(a)}}}const wC=[`debug`,`log`,`info`,`warning`,`error`],TC=1e3,EC={assert:`error`,trace:`debug`,dir:`log`,dirxml:`log`,table:`log`,count:`info`,timeEnd:`info`,clear:`log`,startGroup:`log`,startGroupCollapsed:`log`,endGroup:`log`,profile:`debug`,profileEnd:`debug`};function DC(e,t,n,r,i){if(t.consoleCleanup.has(r))return;t.consoleMessages.set(r,[]);let a=CC({browser:e,targetId:r,transport:n,sessionId:i,listeners:[[`Runtime.consoleAPICalled`,e=>{let n=e;if(n.sessionId!==a.sessionId)return;let i=n.type??`log`,o=EC[i]??i,s=(n.args??[]).map(e=>String(e.value??e.description??``)).join(` `),c=t.consoleMessages.get(r);c&&(c.push({level:o,text:s,timestamp:Date.now()}),c.length>TC&&c.splice(0,c.length-TC))}]],enable:(e,t)=>e.send(`Runtime.enable`,{},t)});t.consoleCleanup.set(r,()=>a.stop())}const OC=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=n[0]??`log`,s=r.clear===`true`,c=wC.indexOf(o);if(c===-1)return{stdout:``,stderr:`Invalid level "${o}". Valid: ${wC.join(`, `)}\n`,exitCode:1};t.consoleCleanup.has(a.targetId)||await i(a.targetId,async({sessionId:n,transport:r})=>{await r.send(`Runtime.enable`,{},n),DC(e,t,r,a.targetId,n)});let l=(t.consoleMessages.get(a.targetId)??[]).filter(e=>wC.indexOf(e.level)>=c);return s&&t.consoleMessages.set(a.targetId,[]),l.length===0?{stdout:`No console messages
873
873
  `,stderr:``,exitCode:0}:{stdout:l.map(e=>`[${e.level}] ${e.text}`).join(`
@@ -913,7 +913,7 @@ Options:
913
913
  `,exitCode:1};let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=KC(`eval-file`,r);if(`error`in s)return{stdout:``,stderr:s.error,exitCode:1};let c=s.path,l;try{l=await t.readTextFile(o)}catch(e){return{stdout:``,stderr:`eval-file: cannot read ${o}: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let u=await i(a.targetId,async e=>{let t=await Un(e,r),n=await GC(t?n=>e.evaluateInFrame(t.frameId,n,{world:`main`}):t=>e.evaluate(t),l);return typeof n==`string`?n:JSON.stringify(n,null,2)});if(c){let e=u??`null`;return await t.writeFile(c,e),{stdout:`Result saved to ${c} (${Math.round(new TextEncoder().encode(e).length/1024)} KB)\n`,stderr:``,exitCode:0}}return{stdout:(u??`undefined`)+`
914
914
  `,stderr:``,exitCode:0}};function YC(e){return async(t,n)=>{let r=typeof t==`string`?t:t instanceof URL?t.toString():t.url,i=h(n?.headers),a=await e(r,{method:n?.method??`GET`,...i?{headers:i}:{}});return new Response(a.body,{status:a.status,statusText:a.statusText,headers:a.headers})}}async function XC(e){let t=new Set;try{let n=await e.readDir(`/workspace/skills`);for(let e of n)e.type===`directory`&&e.name.startsWith(`browse-`)&&t.add(e.name)}catch{}return t}async function ZC(e,t,n){let r=``;try{r=new URL(e).hostname}catch{return{}}let i=r?Eh(r):``;if(!i)return{};let a;try{a=await kh(n)}catch(e){return{warning:`playwright-cli: warning: browse.sh catalog unavailable: ${e instanceof Error?e.message:String(e)}`}}let o=await XC(t),s=[];for(let e of a){if(!e.hostname||Eh(e.hostname)!==i)continue;let t=e.name||e.task.replace(/-[A-Za-z0-9]{4,8}$/,``)||e.task,n=`browse-${e.hostname}-${t}`;s.push({slug:e.slug,name:e.name,title:e.title||e.name||e.task,recommendedMethod:e.recommendedMethod,installed:o.has(n),installHint:`upskill browse:${e.hostname}/${e.task}`})}return{skills:s}}async function QC(e,t={}){let n=t.fetchImpl??g(),r;try{r=await n(e,{method:t.method??`GET`})}catch(t){return{url:e,links:[],handoff:null,error:t instanceof Error?t.message:String(t)}}let i=[];for(let[e,t]of Object.entries(r.headers))e.toLowerCase()===`link`&&typeof t==`string`&&t.length>0&&i.push(t);let o=s(i,e),c=a(o),l={url:e,status:r.status,links:o,handoff:c};if(t.discover&&o.length>0){let e=await px(o,{fetchImpl:YC(n)});l.discovery={catalog:e.catalog,serviceDesc:e.serviceDesc,serviceMeta:e.serviceMeta,status:e.status,llmsTxt:e.llmsTxt,failures:e.failures}}else t.discover&&(l.discovery={failures:[]});if(t.discover&&t.fs){let r=await ZC(e,t.fs,n);r.warning?l.browseShWarning=r.warning:r.skills&&r.skills.length>0&&(l.discovery={...l.discovery??{failures:[]},browseShSkills:r.skills})}return l}const $C=async({fs:e,positional:t,flags:n})=>{if(t.length===0)return{stdout:``,stderr:`fetch requires a URL
915
915
  `,exitCode:1};let r=t[0],{browseShWarning:i,...a}=await QC(r,{discover:n.discover===`true`,method:n.method??`GET`,fs:e});return{stdout:JSON.stringify(a,null,2)+`
916
- `,stderr:i?`${i}\n`:``,exitCode:+!!a.error}};function ew(e){if(!e)return 0;let t={Alt:1,Control:2,Meta:4,Shift:8};return e.split(`,`).map(e=>t[e.trim()]??0).reduce((e,t)=>e|t,0)}async function tw(e){let[t,n]=da(`Enter`);await e.send(`Input.dispatchKeyEvent`,t),await e.send(`Input.dispatchKeyEvent`,n)}async function nw(e,t,n){((await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:Qn,returnByValue:!0})).result?.value??``)!==n&&await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:Hn,arguments:[{value:n}],returnByValue:!0})}async function rw(e,t,n){await e.clickByBackendNodeId(t.backendNodeId),await e.send(`Runtime.callFunctionOn`,{objectId:t.objectId,functionDeclaration:Zn,returnByValue:!0}),await e.insertText(n),await nw(e,t.objectId,n)}const iw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`click requires a ref (e.g. e5)
916
+ `,stderr:i?`${i}\n`:``,exitCode:+!!a.error}};function ew(e){if(!e)return 0;let t={Alt:1,Control:2,Meta:4,Shift:8};return e.split(`,`).map(e=>t[e.trim()]??0).reduce((e,t)=>e|t,0)}async function tw(e){let[t,n]=ma(`Enter`);await e.send(`Input.dispatchKeyEvent`,t),await e.send(`Input.dispatchKeyEvent`,n)}async function nw(e,t,n){((await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:Qn,returnByValue:!0})).result?.value??``)!==n&&await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:Hn,arguments:[{value:n}],returnByValue:!0})}async function rw(e,t,n){await e.clickByBackendNodeId(t.backendNodeId),await e.send(`Runtime.callFunctionOn`,{objectId:t.objectId,functionDeclaration:Zn,returnByValue:!0}),await e.insertText(n),await nw(e,t.objectId,n)}const iw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`click requires a ref (e.g. e5)
917
917
  `,exitCode:1};let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=ew(r.modifiers);return{stdout:await i(a.targetId,async e=>{let n=ce(t,a.targetId),r=await y(e,n,o);return r.entry.frameId?(await pe(e,r.objectId,`function() {
918
918
  this.scrollIntoView({ block: 'center' });
919
919
  this.click();
@@ -929,9 +929,9 @@ Options:
929
929
  this.dispatchEvent(new Event('change', { bubbles: true }));
930
930
  }`,[s]),t.snapshots.delete(a.targetId),r.submit===`true`&&await tw(e),`Filled ${o} with: ${s} (in iframe)`):(await rw(e,i,s),t.snapshots.delete(a.targetId),r.submit===`true`&&await tw(e),`Filled ${o} with: ${s}`)})+`
931
931
  `,stderr:``,exitCode:0}},sw=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`press requires a key name
932
- `,exitCode:1};let i=N(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0],[o,s]=da(a);return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,o,e),await t.send(`Input.dispatchKeyEvent`,s,e)}),{stdout:`Pressed ${a}\n`,stderr:``,exitCode:0}},cw=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`keydown requires a key name
933
- `,exitCode:1};let i=N(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0],o=fa(a,`keyDown`);return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,o,e)}),{stdout:`Key ${a} down\n`,stderr:``,exitCode:0}},lw=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`keyup requires a key name
934
- `,exitCode:1};let i=N(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0],o=fa(a,`keyUp`);return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,o,e)}),{stdout:`Key ${a} up\n`,stderr:``,exitCode:0}},uw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`dblclick requires a ref (e.g. e5)
932
+ `,exitCode:1};let i=N(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0],[o,s]=ma(a);return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,o,e),await t.send(`Input.dispatchKeyEvent`,s,e)}),{stdout:`Pressed ${a}\n`,stderr:``,exitCode:0}},cw=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`keydown requires a key name
933
+ `,exitCode:1};let i=N(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0],o=ha(a,`keyDown`);return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,o,e)}),{stdout:`Key ${a} down\n`,stderr:``,exitCode:0}},lw=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`keyup requires a key name
934
+ `,exitCode:1};let i=N(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0],o=ha(a,`keyUp`);return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,o,e)}),{stdout:`Key ${a} up\n`,stderr:``,exitCode:0}},uw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`dblclick requires a ref (e.g. e5)
935
935
  `,exitCode:1};let a=N(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=n[1]||`left`,c=ew(r.modifiers);return{stdout:await i(a.targetId,async e=>{let n=ce(t,a.targetId),r=await y(e,n,o);return r.entry.frameId?(await pe(e,r.objectId,`function() {
936
936
  this.scrollIntoView({ block: 'center' });
937
937
  this.dispatchEvent(new MouseEvent('dblclick', { bubbles: true }));
@@ -1152,7 +1152,7 @@ Options:
1152
1152
  return el.files.length;
1153
1153
  })()`,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`,XT],[`state-load`,ZT],[`console`,OC],[`requests`,vT],[`request`,yT],[`request-headers`,bT],[`request-body`,xT],[`response-headers`,ST],[`response-body`,CT],[`mousemove`,xw],[`mousedown`,Sw],[`mouseup`,Cw],[`mousewheel`,ww],[`drop`,Ew],[`route`,jT],[`route-list`,MT],[`unroute`,NT],[`generate-locator`,zC],[`highlight`,BC]]);function bE(){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 xE(e){return e.map(e=>e===`--no-iframes`||e.startsWith(`--no-iframes=`)?e.replace(`--no-iframes`,`--_noiframes`):e)}function SE(e){return{...e,bool:[...e.bool??[],`--_noiframes`],value:[...e.value??[],`--_noiframes`]}}const CE=2e3;function wE(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 TE(e,t,n,r){if(!t||typeof e.getTabLockStats!=`function`)return r;let i=e.getTabLockStats(),a=i.totalWaitMs-t.totalWaitMs;if(a<CE)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>=CE?`${(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.
1154
1154
  `;return{...r,stderr:r.stderr+c}}async function EE(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 DE(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 OE(e,t,n){let r=yE.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?DE(e,t,void 0):a}catch(r){return i?.aborted?DE(e,t,r):await EE(n.browser,n.flags,r)}}async function kE(e,t,n,r){let i=w(xE(n),SE(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-Dgedzig_.js`);return{answer:{stdout:n(e,t),stderr:``,exitCode:0}}}let o=null;try{let{validateSubcommandArgs:r}=await import(`./validate-args-hQ6FqlWN.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 AE(e,t,n,r={}){let i=t?Kn(t,n):null,a=bE();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-Dgedzig_.js`);return{stdout:t(e)+`
1155
- `,stderr:``,exitCode:0}}let c=o[0],l=o.slice(1),u=await kE(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=wE(t,p),h=ua(s.env),g=FT(r.isScoop?.()??!1,h),_=await OE(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 LT(t,n,v,i,g));try{await RT(n,i,g,{command:c,args:l,result:_,snapshotPath:ee,targetId:v})}catch{}return TE(t,m,p,ee&&tr.has(c)?{..._,stdout:`${_.stdout}Snapshot: ${ee}\n`}:_)})}const jE=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`,`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 ME(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
+ `,stderr:``,exitCode:0}}let c=o[0],l=o.slice(1),u=await kE(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=wE(t,p),h=pa(s.env),g=FT(r.isScoop?.()??!1,h),_=await OE(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 LT(t,n,v,i,g));try{await RT(n,i,g,{command:c,args:l,result:_,snapshotPath:ee,targetId:v})}catch{}return TE(t,m,p,ee&&tr.has(c)?{..._,stdout:`${_.stdout}Snapshot: ${ee}\n`}:_)})}const jE=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`,`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 ME(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:
1156
1156
  `);let a=[];for(let[e,t]of jE){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(`
1157
1157
  `)+`
1158
1158
  `}function NE(e={}){return C(`commands`,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`commands - display available commands
@@ -1183,7 +1183,7 @@ Defaults:
1183
1183
  --to /workspace/models/<repo>/
1184
1184
  --revision main
1185
1185
  --concurrency, -j 4 files at once
1186
- --max-in-flight-mb ${ma/1048576} MB of downloads in flight at once
1186
+ --max-in-flight-mb ${_a/1048576} MB of downloads in flight at once
1187
1187
 
1188
1188
  Notes:
1189
1189
  - <repo> is the standard <owner>/<name> form.
@@ -1197,7 +1197,7 @@ Notes:
1197
1197
  - Background-job logs get a progress line every few seconds.
1198
1198
  - Weights are read by the speech engines via the preview SW from the
1199
1199
  target directory; transformers expects <localModelPath>/<repo>/.
1200
- `,stderr:``,exitCode:e}}function FE(e){return{stdout:``,stderr:`hf: ${e}\n`,exitCode:1}}const IE=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;function LE(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 RE(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=LE(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 IE.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 zE(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 BE=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=`, ~${zE(e/t*1e3)} left`)}return`hf: ${this.filesDone}/${this.filesTotal} files, ${n}, ${Vy(t)}/s${r}\n`}};function VE(e){let t=e;return typeof t.writeStdout==`function`?t.writeStdout.bind(t):void 0}async function HE(e,t,n,r){let i=RE(e);if(`error`in i)return FE(i.error);let a=pa(i.repo,i.to,t.cwd),{downloadHfRepo:o,HfFileDownloadError:s}=await import(`./hf-download-CNg2vD63.js`),c=VE(t),l=new BE(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 ${zE(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}):FE(e instanceof Error?e.message:String(e))}}const UE=[`--to`,`--revision`,`--rev`,`--concurrency`,`-j`,`--max-in-flight-mb`];function WE(e){let t=e.now??Date.now;return{name:`hf`,async execute(n,r){if(n.length===0||T(n,{valueFlags:UE}))return PE(+(n.length===0));let i=n[0];return i===`download`?HE(n.slice(1),r,e,t):FE(`unknown subcommand: ${i}`)}}}const GE=new Set([`--vid`,`--pid`,`--usage-page`,`--usage`,`--__resolved`,`--timeout`]);function KE(e){return Vn(e,GE)}function qE(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 JE(e){let t={};return e.has(`--vid`)&&(t.vendorId=qE(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=qE(e.get(`--pid`),`pid`)),e.has(`--usage-page`)&&(t.usagePage=qE(e.get(`--usage-page`),`usage-page`)),e.has(`--usage`)&&(t.usage=qE(e.get(`--usage`),`usage`)),Object.keys(t).length>0?[t]:[]}function YE(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 XE(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function ZE(e){return e.toString(16).padStart(2,`0`)}function QE(e){return`0x${e.toString(16).padStart(4,`0`)}`}function $E(e){let t=e.productName||`(unknown)`,n=e.opened?` [open]`:``,r=e.usagePage===void 0?``:`\t${QE(e.usagePage)}:${QE(e.usage??0)}`;return`${e.handle}\t${QE(e.vendorId)}:${QE(e.productId)}${r}\t${t}${n}`}function eD(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 tD(e){return`${e.map($E).join(`
1200
+ `,stderr:``,exitCode:e}}function FE(e){return{stdout:``,stderr:`hf: ${e}\n`,exitCode:1}}const IE=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;function LE(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 RE(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=LE(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 IE.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 zE(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 BE=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=`, ~${zE(e/t*1e3)} left`)}return`hf: ${this.filesDone}/${this.filesTotal} files, ${n}, ${Vy(t)}/s${r}\n`}};function VE(e){let t=e;return typeof t.writeStdout==`function`?t.writeStdout.bind(t):void 0}async function HE(e,t,n,r){let i=RE(e);if(`error`in i)return FE(i.error);let a=ga(i.repo,i.to,t.cwd),{downloadHfRepo:o,HfFileDownloadError:s}=await import(`./hf-download-CNg2vD63.js`),c=VE(t),l=new BE(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 ${zE(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}):FE(e instanceof Error?e.message:String(e))}}const UE=[`--to`,`--revision`,`--rev`,`--concurrency`,`-j`,`--max-in-flight-mb`];function WE(e){let t=e.now??Date.now;return{name:`hf`,async execute(n,r){if(n.length===0||T(n,{valueFlags:UE}))return PE(+(n.length===0));let i=n[0];return i===`download`?HE(n.slice(1),r,e,t):FE(`unknown subcommand: ${i}`)}}}const GE=new Set([`--vid`,`--pid`,`--usage-page`,`--usage`,`--__resolved`,`--timeout`]);function KE(e){return Vn(e,GE)}function qE(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 JE(e){let t={};return e.has(`--vid`)&&(t.vendorId=qE(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=qE(e.get(`--pid`),`pid`)),e.has(`--usage-page`)&&(t.usagePage=qE(e.get(`--usage-page`),`usage-page`)),e.has(`--usage`)&&(t.usage=qE(e.get(`--usage`),`usage`)),Object.keys(t).length>0?[t]:[]}function YE(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 XE(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function ZE(e){return e.toString(16).padStart(2,`0`)}function QE(e){return`0x${e.toString(16).padStart(4,`0`)}`}function $E(e){let t=e.productName||`(unknown)`,n=e.opened?` [open]`:``,r=e.usagePage===void 0?``:`\t${QE(e.usagePage)}:${QE(e.usage??0)}`;return`${e.handle}\t${QE(e.vendorId)}:${QE(e.productId)}${r}\t${t}${n}`}function eD(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 tD(e){return`${e.map($E).join(`
1201
1201
  `)}\n`}function nD(e){return`${ZE(e.reportId)} ${XE(e.bytes)}`.trimEnd()}function rD(e){return{stdout:e,stderr:``,exitCode:0}}function W(e){return{stdout:``,stderr:`hid: ${e}\n`,exitCode:1}}const iD=`hid - access HID devices via WebHID
1202
1202
 
1203
1203
  Usage: hid <subcommand> [options]
@@ -1221,11 +1221,11 @@ Options:
1221
1221
  --timeout <ms> query: wait this long for an input report (default 1000)
1222
1222
  -h, --help
1223
1223
 
1224
- Report payloads are capped at ${ui} bytes (4 MiB).
1224
+ Report payloads are capped at ${fi} bytes (4 MiB).
1225
1225
  `;function aD(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return rD(t)}return rD(e.length?`${XE(e)}\n`:``)}function oD(e){return!e||e.aborted?Promise.resolve():new Promise(t=>{e.addEventListener(`abort`,()=>t(),{once:!0})})}async function sD(e){let t=await e.list();return t.length===0?rD(`no granted HID devices
1226
1226
  `):rD(`${t.map($E).join(`
1227
- `)}\n`)}async function cD(e,t){let n=e.get(`--__resolved`),r=JE(e),i=r[0];if(n){let e=n.split(`,`).filter(e=>e.length>0);return e.length===0?W(`request: missing resolved handle`):rD(tD(eD(await Promise.all(e.map(e=>t.info(e))),i)))}let a=Ve();return a?lD(r,i,a,t):rD(tD(eD(await t.request(r),i)))}async function lD(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=li();if(!t)return W(`request: WebHID unavailable for device re-acquire`);let n=await t.getDevices(),r=ri(),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=eD(s.length>0?s:[],t);return c.length===0?W(`request: granted device could not be re-acquired`):rD(tD(c))}async function uD(e,t,n){let r=t[1];return r?(e===`open`?await n.open(r):await n.close(r),rD(``)):W(`${e}: handle required`)}async function dD(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return W(`${e}: handle and report-id required`);let o=qE(a,`report-id`),s=YE(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),rD(``))}async function fD(e,t,n){let[,r,i]=e;return!r||i===void 0?W(`feature-get: handle and report-id required`):aD((await t.receiveFeatureReport(r,qE(i,`report-id`))).bytes,n)}async function pD(e,t,n){let r=e[1];if(!r)return W(`watch: handle required`);let i=[],a=await n.subscribeInputReports(r,e=>{i.push(nD(e))});try{await oD(t.signal)}finally{await a()}return rD(i.length?`${i.join(`
1228
- `)}\n`:``)}async function mD(e,t,n,r,i){let[,a,o]=e;if(!a||o===void 0)return W(`query: handle and report-id required`);let s=qE(o,`report-id`),c=YE(t);if(c.length>4194304)return W(`query payload exceeds 4 MiB limit`);let l=n.has(`--timeout`)?qE(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?aD(t.bytes,!0):rD(`${nD(t)}\n`)}finally{p!==void 0&&clearTimeout(p),await f()}}async function hD(e,t,n){let{positionals:r,flags:i,bools:a}=KE(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return sD(n);case`request`:return cD(i,n);case`open`:case`close`:return uD(o,r,n);case`send`:case`feature-send`:return dD(o,r,t,n);case`feature-get`:return fD(r,n,s);case`watch`:return pD(r,t,n);case`query`:return mD(r,t,i,n,s);default:return W(`unknown subcommand '${o??``}'. Try 'hid --help'.`)}}function gD(){return C(`hid`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return rD(iD);let n=fi(be(),b());if(!n)return W(`WebHID is unavailable in this environment`);try{return await hD(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 _D=1e3,vD=`usage: id [-u|-g|-G] [-n] [-r] [USER]`,yD=`${vD}
1227
+ `)}\n`)}async function cD(e,t){let n=e.get(`--__resolved`),r=JE(e),i=r[0];if(n){let e=n.split(`,`).filter(e=>e.length>0);return e.length===0?W(`request: missing resolved handle`):rD(tD(eD(await Promise.all(e.map(e=>t.info(e))),i)))}let a=Ve();return a?lD(r,i,a,t):rD(tD(eD(await t.request(r),i)))}async function lD(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=eD(s.length>0?s:[],t);return c.length===0?W(`request: granted device could not be re-acquired`):rD(tD(c))}async function uD(e,t,n){let r=t[1];return r?(e===`open`?await n.open(r):await n.close(r),rD(``)):W(`${e}: handle required`)}async function dD(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return W(`${e}: handle and report-id required`);let o=qE(a,`report-id`),s=YE(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),rD(``))}async function fD(e,t,n){let[,r,i]=e;return!r||i===void 0?W(`feature-get: handle and report-id required`):aD((await t.receiveFeatureReport(r,qE(i,`report-id`))).bytes,n)}async function pD(e,t,n){let r=e[1];if(!r)return W(`watch: handle required`);let i=[],a=await n.subscribeInputReports(r,e=>{i.push(nD(e))});try{await oD(t.signal)}finally{await a()}return rD(i.length?`${i.join(`
1228
+ `)}\n`:``)}async function mD(e,t,n,r,i){let[,a,o]=e;if(!a||o===void 0)return W(`query: handle and report-id required`);let s=qE(o,`report-id`),c=YE(t);if(c.length>4194304)return W(`query payload exceeds 4 MiB limit`);let l=n.has(`--timeout`)?qE(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?aD(t.bytes,!0):rD(`${nD(t)}\n`)}finally{p!==void 0&&clearTimeout(p),await f()}}async function hD(e,t,n){let{positionals:r,flags:i,bools:a}=KE(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return sD(n);case`request`:return cD(i,n);case`open`:case`close`:return uD(o,r,n);case`send`:case`feature-send`:return dD(o,r,t,n);case`feature-get`:return fD(r,n,s);case`watch`:return pD(r,t,n);case`query`:return mD(r,t,i,n,s);default:return W(`unknown subcommand '${o??``}'. Try 'hid --help'.`)}}function gD(){return C(`hid`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return rD(iD);let n=pi(be(),b());if(!n)return W(`WebHID is unavailable in this environment`);try{return await hD(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 _D=1e3,vD=`usage: id [-u|-g|-G] [-n] [-r] [USER]`,yD=`${vD}
1229
1229
 
1230
1230
  Print the user and group identity of this SLICC runtime.
1231
1231
 
@@ -1245,7 +1245,7 @@ cone shares one home); a scoop is a service identity whose uid is derived from
1245
1245
  its folder name, so it is stable across reloads and distinct per scoop.
1246
1246
  Every user is in a user-private group of the same name, plus the role group
1247
1247
  \`cone\` (10) or \`scoop\` (20).
1248
- `,bD=`/scoops/`;function xD(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 SD(e,t){return{name:e,uid:t===`cone`?_D:xD(e),role:t}}function CD(e){return[{gid:e.uid,name:e.name},e.role===`cone`?{gid:10,name:`cone`}:{gid:20,name:`scoop`}]}function wD(e,t){return`${e}(${t})`}function TD(e){let t=CD(e),n=t[0];return`uid=${wD(e.uid,e.name)} gid=${wD(n.gid,n.name)} groups=${t.map(e=>wD(e.gid,e.name)).join(`,`)}\n`}async function ED(e){let t=e.env.get(`HOME`)??``,n=t.startsWith(bD)?`scoop`:`cone`,r=e.env.get(`USER`)||DD(t,n);return r?SD(r,n):SD(lm(await cm(OD(e.fs))),`cone`)}function DD(e,t){return e===``?``:t===`cone`?lm(e):e.slice(8).split(`/`)[0]??``}function OD(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 kD(e,t){return await e.fs.exists(`/home/${t}`).catch(()=>!1)?SD(t,`cone`):await e.fs.exists(`${bD}${t}`).catch(()=>!1)?SD(t,`scoop`):null}function AD(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=MD[r];if(e){e(t);continue}if(r.length>1&&r.startsWith(`-`)){for(let e of r.slice(1)){let n=jD[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 jD={u:e=>{e.select=`user`},g:e=>{e.select=`group`},G:e=>{e.select=`groups`},n:e=>{e.names=!0},r:()=>void 0},MD={"--user":jD.u,"--group":jD.g,"--groups":jD.G,"--name":jD.n,"--real":jD.r};function ND(e,t){let n=CD(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 TD(e)}}function PD(){return C(`id`,async(e,t)=>{let n=AD(e);if(`error`in n)return{stdout:``,stderr:`id: ${n.error}\n${vD}\n`,exitCode:1};if(n.mode===`help`)return ID(yD);if(n.mode===`version`)return ID(`id (SLICC) ${lt().version}\n`);let r=n.operand===void 0?await ED(t):await kD(t,n.operand);return r?ID(ND(r,n)):{stdout:``,stderr:`id: '${n.operand}': no such user\n`,exitCode:1}})}function FD(){return C(`whoami`,async(e,t)=>ID(`${(await ED(t)).name}\n`))}function ID(e){return{stdout:e,stderr:``,exitCode:0}}function LD(){return{stdout:`imgcat - preview image and video files in the preview tab
1248
+ `,bD=`/scoops/`;function xD(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 SD(e,t){return{name:e,uid:t===`cone`?_D:xD(e),role:t}}function CD(e){return[{gid:e.uid,name:e.name},e.role===`cone`?{gid:10,name:`cone`}:{gid:20,name:`scoop`}]}function wD(e,t){return`${e}(${t})`}function TD(e){let t=CD(e),n=t[0];return`uid=${wD(e.uid,e.name)} gid=${wD(n.gid,n.name)} groups=${t.map(e=>wD(e.gid,e.name)).join(`,`)}\n`}async function ED(e){let t=e.env.get(`HOME`)??``,n=t.startsWith(bD)?`scoop`:`cone`,r=e.env.get(`USER`)||DD(t,n);return r?SD(r,n):SD(hr(await gr(OD(e.fs))),`cone`)}function DD(e,t){return e===``?``:t===`cone`?hr(e):e.slice(8).split(`/`)[0]??``}function OD(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 kD(e,t){return await e.fs.exists(`/home/${t}`).catch(()=>!1)?SD(t,`cone`):await e.fs.exists(`${bD}${t}`).catch(()=>!1)?SD(t,`scoop`):null}function AD(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=MD[r];if(e){e(t);continue}if(r.length>1&&r.startsWith(`-`)){for(let e of r.slice(1)){let n=jD[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 jD={u:e=>{e.select=`user`},g:e=>{e.select=`group`},G:e=>{e.select=`groups`},n:e=>{e.names=!0},r:()=>void 0},MD={"--user":jD.u,"--group":jD.g,"--groups":jD.G,"--name":jD.n,"--real":jD.r};function ND(e,t){let n=CD(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 TD(e)}}function PD(){return C(`id`,async(e,t)=>{let n=AD(e);if(`error`in n)return{stdout:``,stderr:`id: ${n.error}\n${vD}\n`,exitCode:1};if(n.mode===`help`)return ID(yD);if(n.mode===`version`)return ID(`id (SLICC) ${lt().version}\n`);let r=n.operand===void 0?await ED(t):await kD(t,n.operand);return r?ID(ND(r,n)):{stdout:``,stderr:`id: '${n.operand}': no such user\n`,exitCode:1}})}function FD(){return C(`whoami`,async(e,t)=>ID(`${(await ED(t)).name}\n`))}function ID(e){return{stdout:e,stderr:``,exitCode:0}}function LD(){return{stdout:`imgcat - preview image and video files in the preview tab
1249
1249
 
1250
1250
  Usage: imgcat <path> [path...]
1251
1251
 
@@ -1338,7 +1338,7 @@ no-op.
1338
1338
  `)}\n`:``,exitCode:l.errors.length===0?0:1}}function jO(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(`
1339
1339
  `)}\n`}async function MO(e,t,n,r){let{global:i,specs:a}=wO(t);if(a.length===0)return{stdout:``,stderr:`${e}: uninstall requires at least one package name\n`,exitCode:1};let{uninstallPackages:o}=await gO(),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: ${EO(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.errors.map(t=>`${e}: failed to uninstall ${t.spec}: ${EO(t.error)}`);l.length>0&&u.push(`${e}: ${l.join(`, `)} not installed${i?` globally`:``}`);let d=s.errors.length>0;return i&&await DO(r),{stdout:c.length>0?`${c.join(`
1340
1340
  `)}\n`:``,stderr:u.length>0?`${u.join(`
1341
- `)}\n`:``,exitCode:+!!d}}async function NO(e,t,n,r){let{global:i}=wO(t);try{let{listGlobalPackages:e,listLocalPackages:t}=await gO(),a=i?await e(r.fs):await t(r.fs,n.cwd);return{stdout:jO(i?hr:n.cwd,a),stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: list failed: ${EO(t)}\n`,exitCode:1}}}async function PO(e,t,n,r){let{global:i}=wO(t);return{stdout:`${i?gr:`${n.cwd.replace(/\/$/,``)}/node_modules`}\n`,stderr:``,exitCode:0}}const FO=`0.5.462`,IO=`v86 is not installed in node_modules: run \`${F} v86@${FO}\` (no network fallback)`;let LO=null;async function RO(e={}){return LO||=HO(e.ipk).catch(e=>{throw LO=null,e}),LO}const zO=[{js:`build/libv86.mjs`,wasm:`build/v86.wasm`}];async function BO(e,t){for(let{js:n,wasm:r}of zO){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 VO(e){let t;try{t=await Cr(`v86/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;let n=await BO(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.462`);return{jsSource:await e.reader.readFile(n.jsPath),wasmBytes:await e.readBytes(n.wasmPath),version:i}}catch{return null}}async function HO(e){if(Fr())throw Error(`v86 is not available in Node runtime`);if(!e)throw Error(IO);let t=await VO(e);if(!t)throw Error(IO);let n=URL.createObjectURL(new Blob([t.jsSource],{type:`text/javascript`})),r;try{r=await import(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 Ci(t.wasmBytes),version:t.version}}function UO(e){return async t=>(await WebAssembly.instantiate(e,t)).exports}const WO={command:`biome`,example:`biome check foo.js`,bootstrap:`${F} ${U_}`},GO={command:`playwright-cli`,example:`playwright-cli open https://example.com`},KO={command:`puppeteer`,example:`puppeteer open https://example.com`},qO={command:`convert`,example:`convert input.png output.jpg`,bootstrap:`${F} @imagemagick/magick-wasm@${ia}`},JO={...qO,command:`magick`,example:`magick input.png output.jpg`},YO={command:`pdftoppm`,example:`pdftoppm -png -r 150 doc.pdf page`},XO={"@biomejs/biome":WO,biome:WO,esbuild:{command:`esbuild`,example:`esbuild --bundle src/index.js --outfile=dist/bundle.js`,bootstrap:`${F} esbuild-wasm@${Si}`},playwright:GO,"@playwright/test":GO,"playwright-core":GO,puppeteer:KO,"puppeteer-core":KO,typescript:{command:`tsc`,example:`tsc --noEmit`,bootstrap:Ir},"pdf-poppler":YO,"pdf-to-img":YO,pdf2pic:YO,"pdf-img-convert":YO,poppler:YO,"poppler-utils":YO,imagemagick:qO,"imagemagick-cli":qO,"imagemagick-convert":qO,"magick-cli":JO,"@imagemagick/magick-wasm":JO,ffmpeg:{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${F} @ffmpeg/core@${ha}`},"@ffmpeg/ffmpeg":{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${F} @ffmpeg/core@${ha}`},ffprobe:{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${F} @ffmpeg/core@${ha}`},"@ffprobe-installer/ffprobe":{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${F} @ffmpeg/core@${ha}`},sqlite3:{command:`sqlite3`,example:`sqlite3 database.db "SELECT 1"`},v86:{command:`v86`,example:`v86 start -cdrom alpine.iso`,bootstrap:`${F} v86@${FO}`}};function ZO(e){return Object.hasOwn(XO,e)?XO[e]:void 0}function QO(e){return/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function $O(e,t,n,r){let i=n.length?[r.command,...n].map(QO).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(QO).join(` `)}`),`${a.join(`
1341
+ `)}\n`:``,exitCode:+!!d}}async function NO(e,t,n,r){let{global:i}=wO(t);try{let{listGlobalPackages:e,listLocalPackages:t}=await gO(),a=i?await e(r.fs):await t(r.fs,n.cwd);return{stdout:jO(i?vr:n.cwd,a),stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: list failed: ${EO(t)}\n`,exitCode:1}}}async function PO(e,t,n,r){let{global:i}=wO(t);return{stdout:`${i?yr:`${n.cwd.replace(/\/$/,``)}/node_modules`}\n`,stderr:``,exitCode:0}}const FO=`0.5.462`,IO=`v86 is not installed in node_modules: run \`${F} v86@${FO}\` (no network fallback)`;let LO=null;async function RO(e={}){return LO||=HO(e.ipk).catch(e=>{throw LO=null,e}),LO}const zO=[{js:`build/libv86.mjs`,wasm:`build/v86.wasm`}];async function BO(e,t){for(let{js:n,wasm:r}of zO){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 VO(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 BO(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.462`);return{jsSource:await e.reader.readFile(n.jsPath),wasmBytes:await e.readBytes(n.wasmPath),version:i}}catch{return null}}async function HO(e){if(Rr())throw Error(`v86 is not available in Node runtime`);if(!e)throw Error(IO);let t=await VO(e);if(!t)throw Error(IO);let n=URL.createObjectURL(new Blob([t.jsSource],{type:`text/javascript`})),r;try{r=await import(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 UO(e){return async t=>(await WebAssembly.instantiate(e,t)).exports}const WO={command:`biome`,example:`biome check foo.js`,bootstrap:`${F} ${U_}`},GO={command:`playwright-cli`,example:`playwright-cli open https://example.com`},KO={command:`puppeteer`,example:`puppeteer open https://example.com`},qO={command:`convert`,example:`convert input.png output.jpg`,bootstrap:`${F} @imagemagick/magick-wasm@${sa}`},JO={...qO,command:`magick`,example:`magick input.png output.jpg`},YO={command:`pdftoppm`,example:`pdftoppm -png -r 150 doc.pdf page`},XO={"@biomejs/biome":WO,biome:WO,esbuild:{command:`esbuild`,example:`esbuild --bundle src/index.js --outfile=dist/bundle.js`,bootstrap:`${F} esbuild-wasm@${Ti}`},playwright:GO,"@playwright/test":GO,"playwright-core":GO,puppeteer:KO,"puppeteer-core":KO,typescript:{command:`tsc`,example:`tsc --noEmit`,bootstrap:zr},"pdf-poppler":YO,"pdf-to-img":YO,pdf2pic:YO,"pdf-img-convert":YO,poppler:YO,"poppler-utils":YO,imagemagick:qO,"imagemagick-cli":qO,"imagemagick-convert":qO,"magick-cli":JO,"@imagemagick/magick-wasm":JO,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@${FO}`}};function ZO(e){return Object.hasOwn(XO,e)?XO[e]:void 0}function QO(e){return/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function $O(e,t,n,r){let i=n.length?[r.command,...n].map(QO).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(QO).join(` `)}`),`${a.join(`
1342
1342
  `)}\n`}const ek=/require\(\s*["']([^"']+)["']\s*\)/;function tk(e){return`${e} - run an installed package's executable bin
1343
1343
 
1344
1344
  Usage:
@@ -1352,8 +1352,8 @@ Options:
1352
1352
  --force Install a package even when a SLICC built-in shadows it
1353
1353
  --global Resolve only from the shared global prefix (/shared/lib/node_modules)
1354
1354
  -h, --help Show this help message
1355
- `}async function nk(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function rk(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function ik(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*ak(e,t=!1){if(t){yield gr;return}let n=x(e);for(;yield S(n,`node_modules`),n!==`/`;)n=Ge(n).dir;yield gr}async function ok(e,t,n,r=!1){for(let i of ak(t,r)){let t=S(i,`.bin`,n);if(!await rk(e,t))continue;let r=await nk(e,t),a=ek.exec(r),o=Ge(t).dir;return{binFilePath:a?S(o,a[1]):t,argvName:t}}return null}function sk(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function ck(e,t){if(typeof e==`string`)return{binName:sk(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,sk(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 lk(e,t,n,r=!1){for(let i of ak(t,r)){let t=S(i,n),r=S(t,`package.json`);if(!await rk(e,r))continue;let a;try{a=JSON.parse(await nk(e,r))}catch{return null}let o=ck(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 uk(e,t,n,r=!1){return await ok(e,t,n,r)??await lk(e,t,n,r)}async function dk(e,t,n){for(let r of ak(t))if(await rk(e,S(r,n,`package.json`)))return!0;return!1}function fk(e){return e instanceof Error?e.message:String(e)}function pk(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function mk(e,t,n,r){try{let{installPackages:i}=await import(`./installer-iQBJzSUD.js`),a=await i([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(a.errors.length>0)return{error:pk(e,`failed to install '${t}': ${fk(a.errors[0].error)}`)};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:o.length>0?`${o.join(`
1356
- `)}\n`:``}}catch(n){return{error:pk(e,`failed to install '${t}': ${fk(n)}`)}}}async function hk(e,t,n,r){return await rk(r,n)?null:await ik(r,n)?pk(e,`bin target '${n}' is a directory, not a file`):pk(e,`bin file '${n}' for '${t}' does not exist`)}async function gk(e,t,n,r,i,a){if(await dk(a.fs,i.cwd,t))return{error:pk(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:ZO(t);if(o)return{error:{stdout:``,stderr:$O(e,t,n,o),exitCode:1}};let s=await mk(e,t,i,a);if(`error`in s)return s;let c=await uk(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:pk(e,`package '${t}' was installed but does not expose an executable bin`)}}function _k(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:tk(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:tk(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await uk(t.fs,r.cwd,c,o)}catch(t){return pk(e,fk(t))}let d=``;if(!u){if(o)return pk(e,`no global bin '${c}' found in ${gr}`);let n=await gk(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await hk(e,c,u.binFilePath,t.fs);if(f)return f;let p=vi(await nk(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await gi(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function vk(e={}){return C(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-tZnU3VbE.js`);return r(t,n,e)})}const yk=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function bk(e={}){return C(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Ek();let n=e.processManager??xk();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1355
+ `}async function nk(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function rk(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function ik(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*ak(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 ok(e,t,n,r=!1){for(let i of ak(t,r)){let t=S(i,`.bin`,n);if(!await rk(e,t))continue;let r=await nk(e,t),a=ek.exec(r),o=Ge(t).dir;return{binFilePath:a?S(o,a[1]):t,argvName:t}}return null}function sk(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function ck(e,t){if(typeof e==`string`)return{binName:sk(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,sk(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 lk(e,t,n,r=!1){for(let i of ak(t,r)){let t=S(i,n),r=S(t,`package.json`);if(!await rk(e,r))continue;let a;try{a=JSON.parse(await nk(e,r))}catch{return null}let o=ck(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 uk(e,t,n,r=!1){return await ok(e,t,n,r)??await lk(e,t,n,r)}async function dk(e,t,n){for(let r of ak(t))if(await rk(e,S(r,n,`package.json`)))return!0;return!1}function fk(e){return e instanceof Error?e.message:String(e)}function pk(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function mk(e,t,n,r){try{let{installPackages:i}=await import(`./installer-iQBJzSUD.js`),a=await i([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(a.errors.length>0)return{error:pk(e,`failed to install '${t}': ${fk(a.errors[0].error)}`)};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:o.length>0?`${o.join(`
1356
+ `)}\n`:``}}catch(n){return{error:pk(e,`failed to install '${t}': ${fk(n)}`)}}}async function hk(e,t,n,r){return await rk(r,n)?null:await ik(r,n)?pk(e,`bin target '${n}' is a directory, not a file`):pk(e,`bin file '${n}' for '${t}' does not exist`)}async function gk(e,t,n,r,i,a){if(await dk(a.fs,i.cwd,t))return{error:pk(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:ZO(t);if(o)return{error:{stdout:``,stderr:$O(e,t,n,o),exitCode:1}};let s=await mk(e,t,i,a);if(`error`in s)return s;let c=await uk(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:pk(e,`package '${t}' was installed but does not expose an executable bin`)}}function _k(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:tk(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:tk(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await uk(t.fs,r.cwd,c,o)}catch(t){return pk(e,fk(t))}let d=``;if(!u){if(o)return pk(e,`no global bin '${c}' found in ${yr}`);let n=await gk(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await hk(e,c,u.binFilePath,t.fs);if(f)return f;let p=Ci(await nk(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 vk(e={}){return C(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-CTLq4YA5.js`);return r(t,n,e)})}const yk=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function bk(e={}){return C(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Ek();let n=e.processManager??xk();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1357
1357
  `,exitCode:1};let r=Sk(t);if(!r.ok)return{stdout:``,stderr:r.stderr,exitCode:r.exitCode};let{allDelivered:i,errors:a}=Ck(n,r.pids,r.signal);return{stdout:``,stderr:a.length?`${a.join(`
1358
1358
  `)}\n`:``,exitCode:+!i}})}function xk(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function Sk(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
1359
1359
  `,exitCode:2};let i=wk(n);if(i instanceof Error)return{ok:!1,stderr:`kill: ${i.message}\n`,exitCode:2};t=i;continue}if(i.startsWith(`-`)){let e=Tk(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
@@ -1395,13 +1395,13 @@ Examples:
1395
1395
  load <name> Restore a saved arrangement
1396
1396
  delete <name> Delete a saved arrangement
1397
1397
  reset Restore the default arrangement
1398
- edit Alias for \`layout set ${Os}\` (there is no edit mode)
1398
+ edit Alias for \`layout set ${js}\` (there is no edit mode)
1399
1399
  docs Describe the layout surfaces
1400
1400
  panels List the registered panel ids
1401
1401
 
1402
1402
  Zones: ${Dk.join(`, `)}
1403
- `,kk=new Set([`files`,`term`,`memory`,`monitor`]),Ak=`sprinkle:`;function jk(e){return e===`chat`||kk.has(e)||e.startsWith(Ak)?e:`${Ak}${e}`}function Mk(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 Nk=`usage: layout size <surfaceId> [--width <px|percent>] [--height <px|percent>]`;function Pk(e){let t=e[0],n=t?Ms(t):null;return n?{kind:`set`,tree:n.tree}:{error:`unknown layout: ${t??`(none)`}`}}function Fk(e){let t=e[0];return Dk.includes(t)?{kind:`chat`,zone:t}:{error:`usage: layout chat <${Dk.join(`|`)}>`}}function Ik(e){let[t,n]=e;return!t||!Dk.includes(n)?{error:`usage: layout open <surfaceId> <${Dk.join(`|`)}>`}:{kind:`open`,surfaceId:jk(t),zone:n}}function Lk(e){let t=e[0];return t?{kind:`close`,surfaceId:jk(t)}:{error:`usage: layout close <surfaceId>`}}function Rk(e){let[t,n]=e;return!t||!Dk.includes(n)?{error:`usage: layout move <surfaceId> <${Dk.join(`|`)}>`}:{kind:`move`,surfaceId:jk(t),zone:n}}function zk(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=Mk(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 Bk(e){let t=e[0];if(!t)return{error:Nk};let n={};for(let t=1;t<e.length;t+=2){let r=zk(n,e[t],e[t+1]);if(r)return r}return n.widthPx==null&&n.widthPercent==null&&n.heightPx==null&&n.heightPercent==null?{error:Nk}:{kind:`size`,surfaceId:jk(t),size:n}}function Vk(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 Hk(e,t){let n=t[0];return n?e===`load`?{kind:`load`,name:n}:{kind:`delete`,name:n}:{error:`usage: layout ${e} <name>`}}function Uk(e,t){let n=t[0];return n?e===`show`?{kind:`show`,panelId:jk(n)}:{kind:`hide`,panelId:jk(n)}:{error:`usage: layout ${e} <panelId>`}}function Wk(){let e=Ms(Os);return e?{kind:`set`,tree:e.tree}:{error:`default layout unavailable`}}function Gk(e){let[t,...n]=e;switch(t){case`set`:return Pk(n);case`chat`:return Fk(n);case`open`:return Ik(n);case`close`:return Lk(n);case`move`:return Rk(n);case`size`:return Bk(n);case`reset`:return{kind:`reset`};case`edit`:return Wk();case`load`:return Hk(`load`,n);case`save`:return Vk(n);case`delete`:return Hk(`delete`,n);case`docs`:return{kind:`docs`};case`panels`:return{kind:`panels`};case`show`:return Uk(`show`,n);case`hide`:return Uk(`hide`,n);default:return{error:`usage: layout <set|edit|chat|open|close|move|size|show|hide|load|save|delete|docs|panels|list|reset>`}}}function Kk(){return C(`layout`,async e=>{if(T(e))return{stdout:e[0]?.startsWith(`-`)?Ok:gt(`layout`,e[0],Ok),stderr:``,exitCode:0};if(e[0]===`list`||e.length===0)return{stdout:`layouts: ${Object.keys(js).join(`, `)}\ndefault: ${Os}\n`,stderr:``,exitCode:0};let t=Gk(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
1404
- `,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 qk=ga.id;function Jk(){return`local-llm — inspect and configure the Local LLM provider
1403
+ `,kk=new Set([`files`,`term`,`memory`,`monitor`]),Ak=`sprinkle:`;function jk(e){return e===`chat`||kk.has(e)||e.startsWith(Ak)?e:`${Ak}${e}`}function Mk(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 Nk=`usage: layout size <surfaceId> [--width <px|percent>] [--height <px|percent>]`;function Pk(e){let t=e[0],n=t?Fs(t):null;return n?{kind:`set`,tree:n.tree}:{error:`unknown layout: ${t??`(none)`}`}}function Fk(e){let t=e[0];return Dk.includes(t)?{kind:`chat`,zone:t}:{error:`usage: layout chat <${Dk.join(`|`)}>`}}function Ik(e){let[t,n]=e;return!t||!Dk.includes(n)?{error:`usage: layout open <surfaceId> <${Dk.join(`|`)}>`}:{kind:`open`,surfaceId:jk(t),zone:n}}function Lk(e){let t=e[0];return t?{kind:`close`,surfaceId:jk(t)}:{error:`usage: layout close <surfaceId>`}}function Rk(e){let[t,n]=e;return!t||!Dk.includes(n)?{error:`usage: layout move <surfaceId> <${Dk.join(`|`)}>`}:{kind:`move`,surfaceId:jk(t),zone:n}}function zk(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=Mk(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 Bk(e){let t=e[0];if(!t)return{error:Nk};let n={};for(let t=1;t<e.length;t+=2){let r=zk(n,e[t],e[t+1]);if(r)return r}return n.widthPx==null&&n.widthPercent==null&&n.heightPx==null&&n.heightPercent==null?{error:Nk}:{kind:`size`,surfaceId:jk(t),size:n}}function Vk(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 Hk(e,t){let n=t[0];return n?e===`load`?{kind:`load`,name:n}:{kind:`delete`,name:n}:{error:`usage: layout ${e} <name>`}}function Uk(e,t){let n=t[0];return n?e===`show`?{kind:`show`,panelId:jk(n)}:{kind:`hide`,panelId:jk(n)}:{error:`usage: layout ${e} <panelId>`}}function Wk(){let e=Fs(js);return e?{kind:`set`,tree:e.tree}:{error:`default layout unavailable`}}function Gk(e){let[t,...n]=e;switch(t){case`set`:return Pk(n);case`chat`:return Fk(n);case`open`:return Ik(n);case`close`:return Lk(n);case`move`:return Rk(n);case`size`:return Bk(n);case`reset`:return{kind:`reset`};case`edit`:return Wk();case`load`:return Hk(`load`,n);case`save`:return Vk(n);case`delete`:return Hk(`delete`,n);case`docs`:return{kind:`docs`};case`panels`:return{kind:`panels`};case`show`:return Uk(`show`,n);case`hide`:return Uk(`hide`,n);default:return{error:`usage: layout <set|edit|chat|open|close|move|size|show|hide|load|save|delete|docs|panels|list|reset>`}}}function Kk(){return C(`layout`,async e=>{if(T(e))return{stdout:e[0]?.startsWith(`-`)?Ok:gt(`layout`,e[0],Ok),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=Gk(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
1404
+ `,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 qk=ya.id;function Jk(){return`local-llm — inspect and configure the Local LLM provider
1405
1405
 
1406
1406
  Usage:
1407
1407
  local-llm Show current config + verify connection
@@ -1426,7 +1426,7 @@ Common base URLs:
1426
1426
  `)+`
1427
1427
  `,stderr:``,exitCode:0}}function $k(e,t){let n=t.models.length;return{stdout:[`✓ ${e} (${Yk(t.runtime,!1)})`,` Saved ${n} model${n===1?``:`s`} to Settings:`,...Xk(t.models)].join(`
1428
1428
  `)+`
1429
- `,stderr:``,exitCode:0}}function eA(){return C(qk,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:Jk(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-BRvILyCO.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-B3I2M1uZ.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(qk);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1429
+ `,stderr:``,exitCode:0}}function eA(){return C(qk,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:Jk(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-B8CJ-7Lx.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-DUjRnDQ-.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(qk);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1430
1430
  `,exitCode:1};let c=await a(s,t(qk)??void 0);if(!c.ok)return Zk(s,c);if(o===`discover`){let e=n(qk)??``;return i(qk,e,s,c.models.join(`, `)),$k(s,c)}return Qk(s,c)})}function tA(){return{stdout:`usage: man <topic>
1431
1431
 
1432
1432
  Fetches documentation for a given topic from sliccy.com.
@@ -1445,7 +1445,7 @@ Notes:
1445
1445
  Document-Isolation-Policy). Embedded floats cannot be isolated and
1446
1446
  report why instead.
1447
1447
  - The browser randomizes measurement timing — expect a short delay.
1448
- `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??oA();if(!r&&!e.measure)return iA(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return iA(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return iA(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:cA(a),stderr:``,exitCode:0}})}function uA(e){return C(`memory`,async t=>{let{runMemory:n}=await import(`./run-B_j9TU7i.js`);return n(t,e)})}function dA(){return C(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const fA=`/.cache/artificial-analysis.json`,pA=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],mA=[`--provider`];function hA(e){return{stdout:``,stderr:e.endsWith(`
1448
+ `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??oA();if(!r&&!e.measure)return iA(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return iA(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return iA(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:cA(a),stderr:``,exitCode:0}})}function uA(e){return C(`memory`,async t=>{let{runMemory:n}=await import(`./run-BeaQNubO.js`);return n(t,e)})}function dA(){return C(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const fA=`/.cache/artificial-analysis.json`,pA=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],mA=[`--provider`];function hA(e){return{stdout:``,stderr:e.endsWith(`
1449
1449
  `)?e:`${e}\n`,exitCode:1}}async function gA(e){try{let t=await e.readFile(fA),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}return null}function _A(){try{return localStorage.getItem(`aa_api_key`)}catch{return null}}function vA(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 yA(e,t){let n={fetchedAt:Date.now(),models:t};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(fA,JSON.stringify(n))}catch{}}async function bA(e,t=!1){if(e&&!t){let t=await gA(e);if(t)return t}let n={Accept:`application/json`},r=_A();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=vA(Array.isArray(s)?s:s.data??s.models??[]);return e&&c.length>0&&await yA(e,c),c}function xA(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function SA(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=xA(e),a=t.find(e=>xA(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 CA(){return`models - list available LLM models
1450
1450
 
1451
1451
  Usage: models [options]
@@ -1460,7 +1460,7 @@ Options:
1460
1460
  -h, --help Show this help message
1461
1461
  `}function wA(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function TA(e){return`$${e.toFixed(2)}`}const EA=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function DA(e){let t=`${e.id} ${e.name??``}`;return!EA.test(t)}function OA(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 kA(e){let t=e.toLowerCase();return t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``),OA(t)??t.replace(/-[\d.]+$/,``)}function AA(e){let t=new Map;for(let n of e){let e=kA(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function jA(e,t,n,r,i){let a=i?SA(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 MA(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=`${TA(e.cost.input)} / ${TA(e.cost.output)}`,a=`${wA(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(`
1462
1462
  `)+`
1463
- `}function NA(e){let t=w(e,{bool:pA,value:mA});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 PA(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 FA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(DA);if(o.length===0)return[];let s=o.map(e=>jA(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=AA(s)),s}function IA(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 LA(e,t){if(T(e,{valueFlags:mA}))return{stdout:CA(),stderr:``,exitCode:0};let n=NA(e);if(`error`in n)return hA(`models: ${n.error}`);let r=await import(`./account-store-BRvILyCO.js`).then(e=>e.t);if(r.getAccounts().length===0)return hA(`No provider accounts configured. Run the provider settings to add one.
1463
+ `}function NA(e){let t=w(e,{bool:pA,value:mA});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 PA(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 FA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(DA);if(o.length===0)return[];let s=o.map(e=>jA(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=AA(s)),s}function IA(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 LA(e,t){if(T(e,{valueFlags:mA}))return{stdout:CA(),stderr:``,exitCode:0};let n=NA(e);if(`error`in n)return hA(`models: ${n.error}`);let r=await import(`./account-store-B8CJ-7Lx.js`).then(e=>e.t);if(r.getAccounts().length===0)return hA(`No provider accounts configured. Run the provider settings to add one.
1464
1464
  `);let i=r.resolveCurrentModel(),a=i.id,o=i.provider,s=r.getSelectedProvider(),c=r.getSelectedModelId(),l;if(!n.noBenchmarks){let e=await bA(t,n.forceRefresh);e.length>0&&(l=e)}let u=PA(r,n,s);if(`error`in u)return hA(u.error);let d=[],f=[];for(let e of u){let t=FA(r,e,a,o,l,n.allVersions);if(t.length===0){if(!n.allMode)return hA(`No models available for provider ${e}.\n`);continue}if(d.push(...t),!n.jsonMode){let n=r.getProviderConfig(e);f.push(MA(n.name,e,t,!!l))}}return n.jsonMode?{stdout:JSON.stringify(d,null,2)+`
1465
1465
  `,stderr:``,exitCode:0}:(n.allVersions||f.push(`Showing latest versions only. Use --all-versions to see all.
1466
1466
  `),f.push(IA(o,a,s,c)),{stdout:f.join(`
@@ -1474,12 +1474,12 @@ Options:
1474
1474
  --input-type=TYPE module or commonjs (stdin / -e / .js)
1475
1475
  -h, --help print this help
1476
1476
  -v, --version print Node shim version
1477
- `,stderr:``,exitCode:0}}function GA(){return{stdout:`${Nr}\n`,stderr:``,exitCode:0}}function KA(e,t){if(t){if(e.endsWith(`.mjs`)&&t===`commonjs`)return{stdout:``,stderr:`node: cannot set --input-type=commonjs for a .mjs file
1477
+ `,stderr:``,exitCode:0}}function GA(){return{stdout:`${Ir}\n`,stderr:``,exitCode:0}}function KA(e,t){if(t){if(e.endsWith(`.mjs`)&&t===`commonjs`)return{stdout:``,stderr:`node: cannot set --input-type=commonjs for a .mjs file
1478
1478
  `,exitCode:9};if(e.endsWith(`.cjs`)&&t===`module`)return{stdout:``,stderr:`node: cannot set --input-type=module for a .cjs file
1479
- `,exitCode:9}}}function qA(e,t){if(!e.startsWith(`/`))return t;let n=e.lastIndexOf(`/`);return n<=0?`/`:e.slice(0,n)}function JA(e){return e instanceof Error?e.stack??e.message:String(e)}async function YA(e,t,n){if(!(Tr(e)||Br(e)||t.endsWith(`.mjs`)))return e;try{return(await(await xi()).transform(e,{loader:`js`,format:`cjs`,sourcefile:`${t.replace(/\.[^./]+$/,``)}.js`,supported:{"dynamic-import":!1}})).code}catch(r){if(!/top-level await/i.test(JA(r)))throw r;return bi()({source:e,filename:t,fromDir:qA(t,n)})}}async function XA(e,t,n){let r=e;try{r=await YA(e,t,n)}catch(e){return{stdout:``,stderr:`${JA(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:`${JA(e)}\n`,exitCode:1}}}async function ZA(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
1479
+ `,exitCode:9}}}function qA(e,t){if(!e.startsWith(`/`))return t;let n=e.lastIndexOf(`/`);return n<=0?`/`:e.slice(0,n)}function JA(e){return e instanceof Error?e.stack??e.message:String(e)}async function YA(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(JA(r)))throw r;return ci()({source:e,filename:t,fromDir:qA(t,n)})}}async function XA(e,t,n){let r=e;try{r=await YA(e,t,n)}catch(e){return{stdout:``,stderr:`${JA(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:`${JA(e)}\n`,exitCode:1}}}async function ZA(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
1480
1480
  `,exitCode:9}};if(e.length>0&&zA.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"
1481
1481
  `,exitCode:9}}}function QA(e={},t=`node`){return{name:t,trusted:!0,async execute(t,n){let r=UA(t);if(r.error)return r.error;if(r.help)return WA();if(r.version)return GA();let i=await ZA(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
1482
- `,exitCode:9}:i.result;let{code:a,filename:o,argv:s,innerCtx:c}=i,l=KA(o,r.inputType);if(l)return l;let u=vi(a);return r.check?XA(u,o,n.cwd):gi(u,s,c,e.buildProcessConfig?.(n.env),{filename:o})}}}const $A=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];async function ej(){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 tj=[],nj=[`--yes`];function rj(){return C(`nuke`,async e=>{if(T(e,{valueFlags:tj}))return{stdout:`Usage: nuke <launch-code>
1482
+ `,exitCode:9}:i.result;let{code:a,filename:o,argv:s,innerCtx:c}=i,l=KA(o,r.inputType);if(l)return l;let u=Ci(a);return r.check?XA(u,o,n.cwd):yi(u,s,c,e.buildProcessConfig?.(n.env),{filename:o})}}}const $A=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];async function ej(){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 tj=[],nj=[`--yes`];function rj(){return C(`nuke`,async e=>{if(T(e,{valueFlags:tj}))return{stdout:`Usage: nuke <launch-code>
1483
1483
 
1484
1484
  Completely reset the environment by deleting all local data and reloading.
1485
1485
  Destroys the file system, chat history, and scoops database.
@@ -1518,7 +1518,7 @@ Examples:
1518
1518
  `)}\n`,stderr:``,exitCode:0}}async function cj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain add: requires <providerId> and <domain>
1519
1519
  `,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 lj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain remove: requires <providerId> and <domain>
1520
1520
  `,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 uj(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>
1521
- `,exitCode:1}}async function dj(e,t,n,r){switch(t){case`list`:return sj(e,n);case`add`:return cj(e,n,r);case`remove`:return lj(e,n,r);case`clear`:return uj(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${aj()}`,exitCode:1}}}function fj(){return C(`oauth-domain`,async e=>{if(e.length===0||T(e))return{stdout:aj(),stderr:``,exitCode:0};let t=w(e);if(`error`in t)return oj(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-BRvILyCO.js`).then(e=>e.t);try{return await dj(a,n,r,i)}catch(e){return oj(e instanceof Error?e.message:String(e))}})}function pj(){return C(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-B88ZYCvC.js`);return n(e,t)})}const mj=[`--download`,`-d`,`--view`,`-v`],hj=[`--size`],gj={low:256,medium:768,high:1536};function _j(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1521
+ `,exitCode:1}}async function dj(e,t,n,r){switch(t){case`list`:return sj(e,n);case`add`:return cj(e,n,r);case`remove`:return lj(e,n,r);case`clear`:return uj(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${aj()}`,exitCode:1}}}function fj(){return C(`oauth-domain`,async e=>{if(e.length===0||T(e))return{stdout:aj(),stderr:``,exitCode:0};let t=w(e);if(`error`in t)return oj(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-B8CJ-7Lx.js`).then(e=>e.t);try{return await dj(a,n,r,i)}catch(e){return oj(e instanceof Error?e.message:String(e))}})}function pj(){return C(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-LvFUk-li.js`);return n(e,t)})}const mj=[`--download`,`-d`,`--view`,`-v`],hj=[`--size`],gj={low:256,medium:768,high:1536};function _j(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1522
1522
 
1523
1523
  VFS paths are served in a new browser tab via the preview service worker.
1524
1524
  URLs (http/https/etc.) are opened directly in a new tab.
@@ -1537,14 +1537,14 @@ Examples:
1537
1537
  --size medium (768x768)
1538
1538
  --size high (1536x1536)
1539
1539
  --size WxH (custom box, e.g. 512x512)
1540
- `}const xj=new Set([`image/png`,`image/webp`]);function Sj(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}async function Cj(e,t){let n=Sj(e),r=new Blob([n],{type:t}),i=await createImageBitmap(r);try{return{width:i.width,height:i.height}}finally{i.close?.()}}async function wj(e,t,n,r){let i=Sj(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=yj(e,t)?xj.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 Tj(e){let t=w(e,{bool:mj,value:hj});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 Ej(e){return{ok:!0,message:e}}function G(e){return{ok:!1,result:{stdout:``,stderr:e,exitCode:1}}}function Dj(e){return e?` (targetId: ${e})`:``}function Oj(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 kj(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),Ej(`opened sprinkle ${e} from ${a}`)}catch(e){return G(`open: ${e instanceof Error?e.message:String(e)}\n`)}}if(r){let e=await Er(t.fs,Pr(a)),n=Ur(a,e),r;try{r=await i(n)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return Ej(`opened ${a} → ${n}${Dj(r)}`)}return G(`open: sprinkle manager not initialized
1540
+ `}const xj=new Set([`image/png`,`image/webp`]);function Sj(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}async function Cj(e,t){let n=Sj(e),r=new Blob([n],{type:t}),i=await createImageBitmap(r);try{return{width:i.width,height:i.height}}finally{i.close?.()}}async function wj(e,t,n,r){let i=Sj(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=yj(e,t)?xj.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 Tj(e){let t=w(e,{bool:mj,value:hj});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 Ej(e){return{ok:!0,message:e}}function G(e){return{ok:!1,result:{stdout:``,stderr:e,exitCode:1}}}function Dj(e){return e?` (targetId: ${e})`:``}function Oj(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 kj(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),Ej(`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 Ej(`opened ${a} → ${n}${Dj(r)}`)}return G(`open: sprinkle manager not initialized
1541
1541
  `)}async function Aj(e,t,n){if(!t)return G(`open: browser APIs are unavailable in this environment
1542
- `);let r;try{r=await n(e)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return Ej(`opened ${e}${Dj(r)}`)}async function jj(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=wr(n),c=new Uint8Array(o),l=null;if(i!==void 0&&(l=vj(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 Cj(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`+bj())}let u;try{u=await wj(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 Ej(`${n} (${u.nativeWidth}x${u.nativeHeight} → ${u.width}x${u.height}, ${f} KB, ${u.mime})\n<img:data:${u.mime};base64,${d}>`)}async function Mj(e,t,n,r){if(!r)return G(`open: --download requires the in-panel terminal (DOM-only)
1543
- `);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:wr(t)}),c=URL.createObjectURL(s),l=document.createElement(`a`);return l.href=c,l.download=Ar(t)||`download`,l.style.display=`none`,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(c),0),Ej(`downloaded ${t}`)}async function Nj(e,t,n,r){if(!n)return G(`open: browser APIs are unavailable in this environment
1544
- `);let i=!1;try{i=(await t.fs.stat(e)).isDirectory}catch{}let a=await Er(t.fs,i?e:Pr(e)),o=Ur(e,a),s;try{s=await r(o)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return Ej(`opened ${e} → ${o}${Dj(s)}`)}async function Pj(e,t,n,r){if(!Or(e)&&e.endsWith(`.shtml`)&&t.fs)return kj(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return G(`open: browser APIs are unavailable in this environment
1545
- `);if(Or(e))return Aj(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?jj(e,i,t,n.sizeSpec):n.download?Mj(e,i,t,r.hasDom):Nj(i,t,r.canOpenWindow,r.openExternal)}function Fj(e){return C(`open`,async(t,n)=>{if(t.length===0||T(t,{valueFlags:hj}))return _j();let r=Tj(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 _j();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:Oj(e,l,u)},f=[];for(let e of s){let t=await Pj(e,n,{view:a,download:i,sizeSpec:o},d);if(!t.ok)return t.result;f.push(t.message)}return{stdout:f.join(`
1542
+ `);let r;try{r=await n(e)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return Ej(`opened ${e}${Dj(r)}`)}async function jj(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=vj(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 Cj(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`+bj())}let u;try{u=await wj(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 Ej(`${n} (${u.nativeWidth}x${u.nativeHeight} → ${u.width}x${u.height}, ${f} KB, ${u.mime})\n<img:data:${u.mime};base64,${d}>`)}async function Mj(e,t,n,r){if(!r)return G(`open: --download requires the in-panel terminal (DOM-only)
1543
+ `);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),Ej(`downloaded ${t}`)}async function Nj(e,t,n,r){if(!n)return G(`open: browser APIs are unavailable in this environment
1544
+ `);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 Ej(`opened ${e} → ${o}${Dj(s)}`)}async function Pj(e,t,n,r){if(!jr(e)&&e.endsWith(`.shtml`)&&t.fs)return kj(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return G(`open: browser APIs are unavailable in this environment
1545
+ `);if(jr(e))return Aj(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?jj(e,i,t,n.sizeSpec):n.download?Mj(e,i,t,r.hasDom):Nj(i,t,r.canOpenWindow,r.openExternal)}function Fj(e){return C(`open`,async(t,n)=>{if(t.length===0||T(t,{valueFlags:hj}))return _j();let r=Tj(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 _j();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:Oj(e,l,u)},f=[];for(let e of s){let t=await Pj(e,n,{view:a,download:i,sizeSpec:o},d);if(!t.ok)return t.result;f.push(t.message)}return{stdout:f.join(`
1546
1546
  `)+`
1547
- `,stderr:``,exitCode:0}})}function Ij(){return C(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-C3zWZ82o.js`);return n(e,t)})}function Lj(e=`pdftk`){return C(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function Rj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1547
+ `,stderr:``,exitCode:0}})}function Ij(){return C(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-DDRN0EMs.js`);return n(e,t)})}function Lj(e=`pdftk`){return C(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function Rj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1548
1548
 
1549
1549
  Rasterize PDF pages to images. Writes <prefix>-<n>.<ext> per page, where <n>
1550
1550
  is zero-padded to the digit width of the last page (out-1.png for a 9-page
@@ -1571,7 +1571,7 @@ Examples:
1571
1571
  pdftoppm -png -r 150 doc.pdf page
1572
1572
  pdftoppm -jpeg -jpegopt quality=80 -f 1 -l 3 doc.pdf out
1573
1573
  pdftoppm -png -singlefile -scale-to 1024 doc.pdf cover
1574
- `,stderr:``,exitCode:0}}function zj(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 Bj(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 Vj(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=Bj(e[++d]),t=`jpeg`;break;case`-r`:n=zj(e[++d],`-r`);break;case`-f`:r=zj(e[++d],`-f`);break;case`-l`:i=zj(e[++d],`-l`);break;case`-scale-to`:a=zj(e[++d],`-scale-to`);break;case`-scale-to-x`:o=zj(e[++d],`-scale-to-x`);break;case`-scale-to-y`:s=zj(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 Hj(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function Uj(e,t,n,r){let i=String(n).length;return`${e}-${String(t).padStart(i,`0`)}.${r}`}function Wj(e){return e===`jpeg`?`jpg`:`png`}function Gj(e){return e.scaleToX===void 0?e.scaleToY===void 0?e.scaleTo===void 0?{scale:ca(e.dpi)}:{longEdge:e.scaleTo}:{height:e.scaleToY}:{width:e.scaleToX}}async function Kj(e,t){let n=e.fs.resolvePath(e.cwd,t),r=await e.fs.readFileBuffer(n);if(!oa(r))throw Error(`${t}: not a PDF file`);return r}function qj(e=`pdftoppm`){return C(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Rj();let r;try{r=Vj(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let t=await Kj(n,r.inputPath),i=Wj(r.format),a=r.outputRoot??Hj(Ar(r.inputPath)),o=[];return await aa(t,{firstPage:r.firstPage,lastPage:r.singleFile?r.firstPage??1:r.lastPage,format:r.format,quality:r.quality,...Gj(r)},async(e,t)=>{let s=r.singleFile?`${a}.${i}`:Uj(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(`
1574
+ `,stderr:``,exitCode:0}}function zj(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 Bj(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 Vj(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=Bj(e[++d]),t=`jpeg`;break;case`-r`:n=zj(e[++d],`-r`);break;case`-f`:r=zj(e[++d],`-f`);break;case`-l`:i=zj(e[++d],`-l`);break;case`-scale-to`:a=zj(e[++d],`-scale-to`);break;case`-scale-to-x`:o=zj(e[++d],`-scale-to-x`);break;case`-scale-to-y`:s=zj(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 Hj(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function Uj(e,t,n,r){let i=String(n).length;return`${e}-${String(t).padStart(i,`0`)}.${r}`}function Wj(e){return e===`jpeg`?`jpg`:`png`}function Gj(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 Kj(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 qj(e=`pdftoppm`){return C(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Rj();let r;try{r=Vj(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let t=await Kj(n,r.inputPath),i=Wj(r.format),a=r.outputRoot??Hj(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,...Gj(r)},async(e,t)=>{let s=r.singleFile?`${a}.${i}`:Uj(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(`
1575
1575
  `)}\n`,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}})}function Jj(e=`pdftotext`){return C(e,async(t,n)=>{let{runPdftotext:r}=await import(`./run-BVzzZSqz.js`);return r(e,t,n)})}function Yj(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 Xj(){Jw(()=>()=>ie()),qw(()=>()=>Yj(ie()))}const Zj=`/workspace/.plugins/sources`;function Qj(e){return{stdout:e,stderr:``,exitCode:0}}function K(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function $j(e,t){let n=w(t,{});return`error`in n?K(`plugin ${e}: ${n.error}`):{ok:!0,positionals:n.positionals}}function eM(){return`usage: plugin <command> [args]
1576
1576
 
1577
1577
  Load Agent Plugins packages (agent-plugins.org spec v1.0.0): portable
@@ -1604,7 +1604,7 @@ Examples:
1604
1604
  plugin list
1605
1605
  plugin info my-plugin
1606
1606
  plugin remove my-plugin
1607
- `}function tM(e={}){return C(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return Qj(eM());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await cM(i,a,e);case`list`:case`ls`:return await fM(i,e);case`info`:return await pM(i,e);case`validate`:return await mM(i,a,e,ua(n?.env));case`remove`:case`rm`:case`delete`:return await hM(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 nM(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-D_cFUSir.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DJXlpNui.js`).then(e=>e.n);return t.create({dbName:n})}async function rM(e,t,n){let r=gM(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-NHKpL-_w.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 iM(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function aM(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${Zj}/${t.map(iM).join(`--`)}`}async function oM(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-CMSbKC3q.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 sM(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function cM(e,t,n){if(T(e))return Qj(`usage: plugin install <path|repo>
1607
+ `}function tM(e={}){return C(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return Qj(eM());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await cM(i,a,e);case`list`:case`ls`:return await fM(i,e);case`info`:return await pM(i,e);case`validate`:return await mM(i,a,e,pa(n?.env));case`remove`:case`rm`:case`delete`:return await hM(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 nM(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-D_cFUSir.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DJXlpNui.js`).then(e=>e.n);return t.create({dbName:n})}async function rM(e,t,n){let r=gM(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-NHKpL-_w.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 iM(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function aM(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${Zj}/${t.map(iM).join(`--`)}`}async function oM(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-CMSbKC3q.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 sM(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function cM(e,t,n){if(T(e))return Qj(`usage: plugin install <path|repo>
1608
1608
 
1609
1609
  Loads the Agent Plugins package at <path>, or downloads it from a GitHub
1610
1610
  reference (owner/repo, owner/repo@branch, or
@@ -1668,7 +1668,7 @@ Examples:
1668
1668
  ps -o scoop,stat,pid full scoop jid, with STAT and PID
1669
1669
  `,stderr:``,exitCode:0}}const RM=new Set([`dev`,`proc`,`lib`,`bin`,`usr`,`etc`,`home`,`tmp`]);async function zM(e,t=RM){let n=[],r=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 BM(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 VM(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`slicc-fs`}catch{}}function HM(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 UM(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 WM(e,t){return`installed pyodide ${e} is not the supported version ${t}: run \`ipk uninstall pyodide\` then \`ipk add pyodide@${t}\``}function GM(){return{stdout:`usage: python3 [-c code | script.py] [args...]
1670
1670
  `,stderr:``,exitCode:0}}function KM(){return{stdout:`Python 3.14 (Pyodide)
1671
- `,stderr:``,exitCode:0}}async function qM(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 JM(e){let t=HM(e),n=await $r(t);if(!n)return{kind:`result`,result:{stdout:``,stderr:`${Qr}\n`,exitCode:1}};let r=await UM(t.reader,n);return r?r===Hr?{kind:`ok`,assetRoot:n}:{kind:`result`,result:{stdout:``,stderr:`${WM(r,Hr)}\n`,exitCode:1}}:{kind:`result`,result:{stdout:``,stderr:`${Qr}\n`,exitCode:1}}}const YM=new Set(`EsSuBIPqObdR`);function XM(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=>YM.has(e)))break;t++}return t===0?e:e.slice(t)}function ZM(e,t={}){return C(e,async(n,r)=>{let i=XM(n),a=i[0];if(a===`--help`||a===`-h`)return GM();if(a===`--version`||a===`-V`)return KM();let o=await qM(e,i,r);if(o.kind===`result`)return o.result;let{code:s,filename:c,sysArgv:l,procArgv:u}=o,d=await zM(r.fs),f=BM(r.fs,d),p=t.buildProcessConfig?.(r.env),m=p?.processManager??QM(),h=p?.owner??{kind:`system`},g=p?.getParentPid?.(),_=t.realmFactory??ai(),v=t.pyodideIndexURL??yi(),ee=t.pyodideAssetRoot;if(!ee&&v===void 0){let e=await JM(r);if(e.kind===`result`)return e.result;ee=e.assetRoot}let te=c===`<stdin>`?``:P(r.stdin),ne=VM();return m?hi({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:ii()}):eN({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 QM(){let e=globalThis.__slicc_pm;return e&&typeof e==`object`&&typeof e.spawn==`function`&&typeof e.onSignal==`function`?e:null}let $M=null;async function eN(e){if(!$M){let{ProcessManager:e}=await import(`./process-manager-BkhAohXT.js`).then(e=>e.n);$M=new e}return hi({pm:$M,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:ii()})}function tN(){return C(`rg`,async(e,t)=>{let{runRg:n}=await import(`./run-DniTiLYn.js`);return n(e,t)})}function nN(e,t,n={}){let r=new Map;for(let e of t)r.set(e.path,e);let i=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 rN(){return null}function iN(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=aN(r),o=aN(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 aN(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 oN(){return{stdout:`rsync — sync files between local VFS and a remote tray runtime
1671
+ `,stderr:``,exitCode:0}}async function qM(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 JM(e){let t=HM(e),n=await ni(t);if(!n)return{kind:`result`,result:{stdout:``,stderr:`${ti}\n`,exitCode:1}};let r=await UM(t.reader,n);return r?r===Gr?{kind:`ok`,assetRoot:n}:{kind:`result`,result:{stdout:``,stderr:`${WM(r,Gr)}\n`,exitCode:1}}:{kind:`result`,result:{stdout:``,stderr:`${ti}\n`,exitCode:1}}}const YM=new Set(`EsSuBIPqObdR`);function XM(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=>YM.has(e)))break;t++}return t===0?e:e.slice(t)}function ZM(e,t={}){return C(e,async(n,r)=>{let i=XM(n),a=i[0];if(a===`--help`||a===`-h`)return GM();if(a===`--version`||a===`-V`)return KM();let o=await qM(e,i,r);if(o.kind===`result`)return o.result;let{code:s,filename:c,sysArgv:l,procArgv:u}=o,d=await zM(r.fs),f=BM(r.fs,d),p=t.buildProcessConfig?.(r.env),m=p?.processManager??QM(),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 JM(r);if(e.kind===`result`)return e.result;ee=e.assetRoot}let te=c===`<stdin>`?``:P(r.stdin),ne=VM();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()}):eN({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 QM(){let e=globalThis.__slicc_pm;return e&&typeof e==`object`&&typeof e.spawn==`function`&&typeof e.onSignal==`function`?e:null}let $M=null;async function eN(e){if(!$M){let{ProcessManager:e}=await import(`./process-manager-BkhAohXT.js`).then(e=>e.n);$M=new e}return li({pm:$M,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 tN(){return C(`rg`,async(e,t)=>{let{runRg:n}=await import(`./run-J5J6cey1.js`);return n(e,t)})}function nN(e,t,n={}){let r=new Map;for(let e of t)r.set(e.path,e);let i=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 rN(){return null}function iN(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=aN(r),o=aN(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 aN(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 oN(){return{stdout:`rsync — sync files between local VFS and a remote tray runtime
1672
1672
 
1673
1673
  Usage:
1674
1674
  rsync [flags] <local-path> <runtime-id>:<remote-path> # push
@@ -1766,7 +1766,7 @@ Examples:
1766
1766
  secret peek OPENAI_KEY
1767
1767
  secret set GITHUB_TOKEN ghp_… --domain "api.github.com" --persist # prompts
1768
1768
  secret scope GITHUB_TOKEN --domain "api.github.com,*.github.com" # prompts
1769
- `}function WN(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 GN(e){return{stdout:``,stderr:`secret: ${e}\n`,exitCode:1}}const KN={persist:`persist secret`,scope:`edit secret scope`,value:`change secret value`},qN=new Set;function JN(e,t){if(e===t)return!0;try{return St(e).test(t)}catch{return!1}}function YN(e,t){for(let n of e)if(JN(n,t))return!0;return!1}function XN(e){return{stdout:``,stderr:`${Ct(`secret`,e)}\n`,exitCode:1}}function ZN(e){let t=Re(),n=e.isExtension??(t===`extension-direct`||t===`extension-delegate`),r=e.backend??Dp(t),i=e.grants??qN,a=e.broker,o=()=>(a??=Cs(null),a);return{backend:r,inExtension:n,gate:async(e,t)=>{let n=`secret:${e}:${t}`;if(YN(i,n))return`ok`;let r=await o().requestApproval({kind:`secret`,detail:`${KN[e]}: ${t}`,suggestedPattern:n});if(r.decision===`deny`)return r;if(r.decision===`always`){let e=r.pattern?.trim();i.add(e&&JN(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 QN(e){let t=P(e);if(t.length!==0)return t.endsWith(`\r
1769
+ `}function WN(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 GN(e){return{stdout:``,stderr:`secret: ${e}\n`,exitCode:1}}const KN={persist:`persist secret`,scope:`edit secret scope`,value:`change secret value`},qN=new Set;function JN(e,t){if(e===t)return!0;try{return St(e).test(t)}catch{return!1}}function YN(e,t){for(let n of e)if(JN(n,t))return!0;return!1}function XN(e){return{stdout:``,stderr:`${Ct(`secret`,e)}\n`,exitCode:1}}function ZN(e){let t=Re(),n=e.isExtension??(t===`extension-direct`||t===`extension-delegate`),r=e.backend??Ap(t),i=e.grants??qN,a=e.broker,o=()=>(a??=Es(null),a);return{backend:r,inExtension:n,gate:async(e,t)=>{let n=`secret:${e}:${t}`;if(YN(i,n))return`ok`;let r=await o().requestApproval({kind:`secret`,detail:`${KN[e]}: ${t}`,suggestedPattern:n});if(r.decision===`deny`)return r;if(r.decision===`always`){let e=r.pattern?.trim();i.add(e&&JN(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 QN(e){let t=P(e);if(t.length!==0)return t.endsWith(`\r
1770
1770
  `)?t.slice(0,-2):t.endsWith(`
1771
1771
  `)?t.slice(0,-1):t}async function $N(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}):XN(i)}async function eP(e,t,n,r){if(await r.backend.getInfo(e)){let t=await r.gate(`value`,e);if(t!==`ok`)return XN(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 tP(e,t,n){let r=w(e.slice(1),{value:VN,bool:HN});if(`error`in r)return GN(r.error);let i=r.positionals[0];if(!i||i.startsWith(`-`))return{stdout:``,stderr:`secret: set requires a <name>
1772
1772
  `,exitCode:1};let a=r.positionals[1],o=QN(t.stdin);if(a!==void 0&&o!==void 0)return{stdout:``,stderr:`secret: provide <value> as an argument OR via stdin, not both
@@ -1779,7 +1779,7 @@ Examples:
1779
1779
  `,exitCode:1};let i=WN(n.values.get(`--domain`));if(!i)return{stdout:``,stderr:`secret: scope requires --domain <patterns>
1780
1780
  `,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}):XN(a)}async function sP(e,t){let n=w(e.slice(1),{});if(`error`in n)return GN(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
1781
1781
  `,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 cP(e,t,n){let r=w(e.slice(1),{});if(`error`in r)return GN(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 lP(e,t){let n=w(e.slice(1),{});if(`error`in n)return GN(n.error);let r=n.positionals[0],i=n.positionals[1];if(!r||!i)return{stdout:``,stderr:`secret: test requires <name> <url>
1782
- `,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?Fa(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 uP(e,t){let n=w(e.slice(1),{});if(`error`in n)return GN(n.error);if(!t.inExtension)return{stdout:`secret: in CLI mode, edit ~/.slicc/secrets.env directly with your text editor.
1782
+ `,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 uP(e,t){let n=w(e.slice(1),{});if(`error`in n)return GN(n.error);if(!t.inExtension)return{stdout:`secret: in CLI mode, edit ~/.slicc/secrets.env directly with your text editor.
1783
1783
  (changes are picked up on the next request — no restart needed)
1784
1784
  `,stderr:``,exitCode:0};try{return await chrome.runtime.openOptionsPage(),{stdout:`Opened Mount Secrets options page in a new tab.
1785
1785
  `,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 dP(e,t,n){let r=e[0];switch(r){case`set`:return tP(e,t,n);case`get`:case`read`:return iP(e,n);case`shell-env`:return rP(e,n);case`peek`:return aP(e,n);case`scope`:return oP(e,n);case`list`:return sP(e,n);case`delete`:case`rm`:return cP(e,r,n);case`test`:return lP(e,n);case`edit`:return uP(e,n);default:return{stdout:``,stderr:`secret: unknown command "${r}"\n`,exitCode:1}}}function fP(e={}){let t=ZN(e);return C(`secret`,async(e,n)=>{if(e.length===0||T(e,{valueFlags:VN}))return{stdout:UN(),stderr:``,exitCode:0};try{return await dP(e,n,t)}catch(e){return{stdout:``,stderr:`secret: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function pP(){return null}function mP(){return null}function hP(){return{stdout:`usage: serve [--entry <relative-path>] [--ttl <duration>] [--bridge | --no-bridge] [--max-tabs <n>] [--quiet] [--stop <token>] [--list] <directory>
@@ -1829,17 +1829,17 @@ Limits and lifetime:
1829
1829
  `};let e=Number.parseInt(t,10);return!Number.isFinite(e)||e<=0?{error:`serve: --max-tabs must be a positive integer
1830
1830
  `}:(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
1831
1831
  `}:(n.maxTabs=t,{skip:0})}return e.startsWith(`-`)?{error:`serve: unknown option: ${e}\n`}:n.directory?{error:`serve: expected a single directory argument
1832
- `}:(n.directory=e,{skip:0})}function xP(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=bP(e[n],e[n+1],t);if(gP(r))return{...t,error:r.error};n+=r.skip}return t}async function SP(e,t,n,r){if(!Mr(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=zr(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 CP(e){return`exitCode`in e}async function wP(e){let t=Na(e)??e,n,r=mP();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
1832
+ `}:(n.directory=e,{skip:0})}function xP(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=bP(e[n],e[n+1],t);if(gP(r))return{...t,error:r.error};n+=r.skip}return t}async function SP(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 CP(e){return`exitCode`in e}async function wP(e){let t=Ia(e)??e,n,r=mP();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
1833
1833
  `,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 TP(){let e=mP();if(e){let t=(await e({type:`list`})).previews??[];return t.length===0?{stdout:`No active previews
1834
1834
  `,stderr:``,exitCode:0}:{stdout:DP(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
1835
1835
  `,stderr:``,exitCode:0}:{stdout:DP(n),stderr:``,exitCode:0}}function EP(e){return e.mode===`persistent`?e.state===`pending`?`uploading`:`persistent`:`live`}function DP(e){return`Active previews:\n TOKEN MODE EXPIRES URL ROOT CREATED\n${e.map(e=>` ${e.previewToken} ${EP(e)} ${e.expiresAt??`-`} ${e.url} ${e.servedRoot} ${e.createdAt}\n`).join(``)}`}function OP(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 kP(e){let t,n=mP();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.
1836
- `,stderr:``,exitCode:0}:{stdout:`Preview lifecycle records (oldest to newest):\n${t.map(OP).join(``)}`,stderr:``,exitCode:0}}async function AP(e){let t,n,r=mP();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 jP(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:wr(s)})}return n}function MP(e){return e().catch(e=>({stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}))}async function NP(e){let t=pP();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 PP(e,t){if(t)return t.createPage(e);typeof window<`u`&&typeof window.open==`function`&&window.open(e,`_blank`,`noopener,noreferrer`)}async function FP(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 IP(e,t,n,r,i,a,o){let s;try{s=await NP({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 PP(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 LP(e){if(e.stop){let t=e.stop;return MP(()=>wP(t))}if(e.list)return MP(()=>TP());if(e.logs&&e.truncate)return{stdout:``,stderr:`serve: --logs and --truncate are mutually exclusive
1836
+ `,stderr:``,exitCode:0}:{stdout:`Preview lifecycle records (oldest to newest):\n${t.map(OP).join(``)}`,stderr:``,exitCode:0}}async function AP(e){let t,n,r=mP();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 jP(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 MP(e){return e().catch(e=>({stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}))}async function NP(e){let t=pP();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 PP(e,t){if(t)return t.createPage(e);typeof window<`u`&&typeof window.open==`function`&&window.open(e,`_blank`,`noopener,noreferrer`)}async function FP(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 IP(e,t,n,r,i,a,o){let s;try{s=await NP({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 PP(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 LP(e){if(e.stop){let t=e.stop;return MP(()=>wP(t))}if(e.list)return MP(()=>TP());if(e.logs&&e.truncate)return{stdout:``,stderr:`serve: --logs and --truncate are mutually exclusive
1837
1837
  `,exitCode:1};if(e.lines!==void 0&&!e.logs)return{stdout:``,stderr:`serve: --lines requires --logs
1838
1838
  `,exitCode:1};if(e.logs){let t=typeof e.logs==`string`?e.logs:void 0;return MP(()=>kP({previewToken:t,lines:e.lines}))}if(e.truncate){let t=typeof e.truncate==`string`?e.truncate:void 0;return MP(()=>AP(t))}}function RP(e){if(e.ttlMs!==void 0&&e.bridge)return{stdout:``,stderr:`serve: --ttl cannot be combined with --bridge
1839
1839
  `,exitCode:1};if(e.ttlMs!==void 0&&e.maxTabs!==void 0)return{stdout:``,stderr:`serve: --ttl cannot be combined with --max-tabs
1840
1840
  `,exitCode:1}}async function zP(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return jP(t,n)}}async function BP(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return hP();let i=xP(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await LP(i);if(a)return a;if(!i.directory)return hP();let o=RP(i);if(o)return o;let s=await SP(i.directory,i.entry,t.fs,t.cwd);if(CP(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await zP(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)
1841
1841
  `:``,f=await FP(!i.noBridge&&i.bridge,d);return f.ok?IP(i,c,l,f.webhookId,d,u,n):f.result}function VP(e,t){return C(`serve`,(n,r)=>BP(n,r,e,t))}const HP=`usage: session export [--id <id>] [--output <path>]
1842
- `;function UP(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 WP(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${HP}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${HP}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${HP}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${HP}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${HP}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${HP}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function GP(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 Ba(`transfer-corrupt`);return r}async function KP(e,t){let n=WP(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=UP(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${HP}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await Ds().export(a,{}),n=await GP(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 Ba?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function qP(){return C(`session`,async(e,t)=>{if(e[0]===`export`&&!T(e))return KP(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-DgYVRLd1.js`);return n(e,t,HP)})}function JP(){return C(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-BRFnmkzR.js`);return await n(e,t)})}const YP=`leader`;function XP(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function ZP(e){return+!!e.leader+e.followers.length}function QP(){return{stdout:`usage: sprinkle <subcommand> [args]
1842
+ `;function UP(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 WP(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${HP}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${HP}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${HP}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${HP}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${HP}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${HP}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function GP(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 KP(e,t){let n=WP(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=UP(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${HP}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await As().export(a,{}),n=await GP(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 qP(){return C(`session`,async(e,t)=>{if(e[0]===`export`&&!T(e))return KP(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-iXbYQvmD.js`);return n(e,t,HP)})}function JP(){return C(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-DdzDhy5R.js`);return await n(e,t)})}const YP=`leader`;function XP(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function ZP(e){return+!!e.leader+e.followers.length}function QP(){return{stdout:`usage: sprinkle <subcommand> [args]
1843
1843
 
1844
1844
  list [--runtime <id>] List sprinkles + an instance line per runtime
1845
1845
  open <name> Open a sprinkle by name
@@ -1863,15 +1863,15 @@ Limits and lifetime:
1863
1863
  `,stderr:``,exitCode:0}}function rF(e){return e.map(e=>{let t=e.runtime?` (${e.runtime})`:``;return` instance: ${e.runtimeId}${t}`})}function iF(e){return[...e.map(e=>({name:e,runtimeId:YP})),...XP()]}async function aF(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&&!eF().includes(r))return J(`list`,tF(r));await e.refresh();let i=e.available();if(i.length===0)return{stdout:`No .shtml sprinkles found.
1864
1864
  `,stderr:``,exitCode:0};let a=new Set(e.opened()),o=iF([...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(...rF(t))}return s.length===0?{stdout:`No sprinkles are open on runtime "${r}".\n`,stderr:``,exitCode:0}:{stdout:s.join(`
1865
1865
  `)+`
1866
- `,stderr:``,exitCode:0}}function oF(e,t){return!t||Go(e)?null:(Ko(e,t),Go(e)===t?t:null)}async function sF(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=la(void 0,n),o=oF(i,a);try{a?await e.open(i,void 0,{lickOriginTarget:a}):await e.open(i)}catch(e){return o&&qo(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 cF(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 lF(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 uF(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 dF(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=Jo(),t=Object.entries(e);return t.length===0?{stdout:`No sprinkle routes configured (all licks go to cone).
1866
+ `,stderr:``,exitCode:0}}function oF(e,t){return!t||Jo(e)?null:(Yo(e,t),Jo(e)===t?t:null)}async function sF(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=oF(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 cF(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 lF(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 uF(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 dF(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).
1867
1867
  `,stderr:``,exitCode:0}:{stdout:`Sprinkle routes (applied to every runtime — the leader resolves the
1868
1868
  route for follower-forwarded licks too):
1869
1869
  `+t.map(([e,t])=>` ${e} -> ${t}`).join(`
1870
1870
  `)+`
1871
- `,stderr:``,exitCode:0}}if(t.bools.has(`--clear`))return qo(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=Go(n);return e?{stdout:`${n} -> ${e}\n`,stderr:``,exitCode:0}:{stdout:`${n} -> cone (default)\n`,stderr:``,exitCode:0}}return Ko(n,r),{stdout:`Sprinkle "${n}" lick events will route to scoop "${r}".\n`,stderr:``,exitCode:0}}function fF(e){let t=[];return e.leader&&t.push(YP),t.push(...e.followers),t.join(`, `)}async function pF(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&&!eF().includes(o))return J(`send`,tF(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`,tF(s.unknownRuntime));let c=ZP(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`} (${fF(s)}).\n`,stderr:``,exitCode:0}}function mF(){return C(`sprinkle`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return QP();let n=e[0];if(T(e.slice(1),{valueFlags:[`--scoop`,`--runtime`]}))return{stdout:gt(`sprinkle`,n,QP().stdout),stderr:``,exitCode:0};if(n===`chat`)return nF(ht(e),t);let r=$P();if(!r)return{stdout:``,stderr:`sprinkle: sprinkle manager not initialized
1871
+ `,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 fF(e){let t=[];return e.leader&&t.push(YP),t.push(...e.followers),t.join(`, `)}async function pF(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&&!eF().includes(o))return J(`send`,tF(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`,tF(s.unknownRuntime));let c=ZP(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`} (${fF(s)}).\n`,stderr:``,exitCode:0}}function mF(){return C(`sprinkle`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return QP();let n=e[0];if(T(e.slice(1),{valueFlags:[`--scoop`,`--runtime`]}))return{stdout:gt(`sprinkle`,n,QP().stdout),stderr:``,exitCode:0};if(n===`chat`)return nF(ht(e),t);let r=$P();if(!r)return{stdout:``,stderr:`sprinkle: sprinkle manager not initialized
1872
1872
  `,exitCode:1};switch(n){case`list`:return aF(r,e);case`open`:return sF(r,e,t.env);case`close`:return cF(r,e);case`reload`:return lF(r,e);case`refresh`:return uF(r,e);case`route`:return dF(e);case`send`:return pF(r,e);default:return{stdout:``,stderr:`sprinkle: unknown subcommand "${n}"\n`,exitCode:1}}})}function hF(){return{stdout:`usage: sqlite3 [database] [sql]
1873
- `,stderr:``,exitCode:0}}function gF(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 _F(e,t){return e===`:memory:`?e:t.fs.resolvePath(t.cwd,e)}async function vF(e,t,n){return t===`:memory:`||!await n.fs.exists(t)?new e.Database:new e.Database(await n.fs.readFileBuffer(t))}async function yF(e,t,n){t!==`:memory:`&&await n.fs.writeFile(t,e.export())}function bF(e){let t=e.flatMap(e=>e.values.map(e=>e.map(jr).join(`|`)));return t.length>0?`${t.join(`
1874
- `)}\n`:``}async function xF(e,t,n){let r=await Rr(),i=_F(e,n),a=await vF(r,i,n),o=a.exec(t);return await yF(a,i,n),a.close(),bF(o)}function SF(e,t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}function CF(e=`sqlite3`){return C(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return hF();let{database:r,sql:i}=gF(t,n);if(!i)return SF(e,`interactive mode is not supported; provide SQL as argument or stdin`);try{return{stdout:await xF(r,i,n),stderr:``,exitCode:0}}catch(t){return SF(e,t)}})}function wF(e){return{stdout:``,stderr:e.endsWith(`
1873
+ `,stderr:``,exitCode:0}}function gF(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 _F(e,t){return e===`:memory:`?e:t.fs.resolvePath(t.cwd,e)}async function vF(e,t,n){return t===`:memory:`||!await n.fs.exists(t)?new e.Database:new e.Database(await n.fs.readFileBuffer(t))}async function yF(e,t,n){t!==`:memory:`&&await n.fs.writeFile(t,e.export())}function bF(e){let t=e.flatMap(e=>e.values.map(e=>e.map(Pr).join(`|`)));return t.length>0?`${t.join(`
1874
+ `)}\n`:``}async function xF(e,t,n){let r=await Vr(),i=_F(e,n),a=await vF(r,i,n),o=a.exec(t);return await yF(a,i,n),a.close(),bF(o)}function SF(e,t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}function CF(e=`sqlite3`){return C(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return hF();let{database:r,sql:i}=gF(t,n);if(!i)return SF(e,`interactive mode is not supported; provide SQL as argument or stdin`);try{return{stdout:await xF(r,i,n),stderr:``,exitCode:0}}catch(t){return SF(e,t)}})}function wF(e){return{stdout:``,stderr:e.endsWith(`
1875
1875
  `)?e:`${e}\n`,exitCode:1}}function TF(){return{stdout:`ssh - run a command on a connected tray follower
1876
1876
 
1877
1877
  Usage: ssh [--cwd <dir>] [--timeout <seconds>] <runtime-id> <command...>
@@ -1916,11 +1916,11 @@ Options:
1916
1916
  -h, --help Show this help message and exit.
1917
1917
  `,stderr:``,exitCode:0};if(!t)return{stdout:``,stderr:`sudo: command-level approval is not configured
1918
1918
  `,exitCode:1};if(!i.exec)return{stdout:``,stderr:`sudo: cannot dispatch inner command in this context
1919
- `,exitCode:1};let a=Up(e[0],e.slice(1)),o=i.env?.get(Kp),s=await t.requestApproval({kind:`command`,detail:a,...o?{reason:o}:{}});if(s.decision===`deny`)return AF(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 MF(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 NF(e,t){return e.fs.lstat?e.fs.lstat(t):e.fs.stat(t)}function PF(e,t){return e.some(e=>/^-[^-]/.test(e)&&e.slice(1).includes(t))}async function FF(e,t,n){let r=e.fs.resolvePath(e.cwd,t);try{let i=await NF(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}': ${MF(e)}\n`}}}function IF(){return C(`rm`,async(e,t)=>{let n={recursive:PF(e,`r`)||PF(e,`R`)||e.includes(`--recursive`),force:PF(e,`f`)||e.includes(`--force`),verbose:PF(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
1919
+ `,exitCode:1};let a=Kp(e[0],e.slice(1)),o=i.env?.get(Yp),s=await t.requestApproval({kind:`command`,detail:a,...o?{reason:o}:{}});if(s.decision===`deny`)return AF(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 MF(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 NF(e,t){return e.fs.lstat?e.fs.lstat(t):e.fs.stat(t)}function PF(e,t){return e.some(e=>/^-[^-]/.test(e)&&e.slice(1).includes(t))}async function FF(e,t,n){let r=e.fs.resolvePath(e.cwd,t);try{let i=await NF(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}': ${MF(e)}\n`}}}function IF(){return C(`rm`,async(e,t)=>{let n={recursive:PF(e,`r`)||PF(e,`R`)||e.includes(`--recursive`),force:PF(e,`f`)||e.includes(`--force`),verbose:PF(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
1920
1920
  `,exitCode:1};let i=await Promise.all(r.map(e=>FF(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 LF(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 RF(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 zF(e,t,n){try{let r=e.fs.resolvePath(e.cwd,t),i=n.follow?await e.fs.stat(r):await NF(e,r);return{stdout:n.format?`${LF(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 BF(){return C(`stat`,async(e,t)=>{let n=RF(e);if(n.paths.length===0)return{stdout:``,stderr:`stat: missing operand
1921
1921
  `,exitCode:1};let r=await Promise.all(n.paths.map(e=>zF(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 VF(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n<=0?`/`:t.slice(0,n)}async function HF(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 NF(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}': ${MF(e)}\n`}}if(!n||s===i.length-1)return{stdout:o,stderr:``};a=VF(a)}return{stdout:o,stderr:``}}function UF(){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
1922
1922
  `,exitCode:1};let a=await Promise.all(i.map(e=>HF(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 WF(){return{stdout:`usage: tar (-c|-x|-t) [-zv] -f <archive> [-C <dir>] [paths...]
1923
- `,stderr:``,exitCode:0}}function GF(e){return{stdout:``,stderr:`tar: ${e}\n`,exitCode:1}}function KF(e,t){if(e.mode)return GF(`exactly one of -c, -x, or -t is required`);e.mode=t}function qF(e,t,n){if(n)return[n,t];let r=e[t+1];return r===void 0?void 0:[r,t+1]}const JF={c:`create`,x:`extract`,t:`list`};function YF(e,t,n,r,i){let a=JF[e];if(a)return{nextIndex:r,error:KF(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:GF(`unsupported option -${e}`)};let o=qF(n,r,t);return o?(e===`f`?i.archive=o[0]:i.directory=o[0],{nextIndex:o[1],consumedValue:!0}):{nextIndex:r,error:GF(`option -${e} requires an argument`)}}function XF(e,t,n){let r=e[t];for(let i=1;i<r.length;i++){let a=YF(r[i],r.slice(i+1),e,t,n);if(a.error||a.consumedValue)return a}return{nextIndex:t}}const ZF=/^[cxtzvfC]+$/;function QF(e){let t=e.length>0&&ZF.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 GF(`unsupported option ${r}`);let i=XF(t,e,n);if(i.error)return i.error;e=i.nextIndex}return n}function $F(e,t){let n=e.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^(?:\.\/)+/,``);return n?n===`.`?`.`:n.replace(/\/+$/,``):Ar(t)}function eI(e){let t=e.mtime?.getTime();return t===void 0||Number.isNaN(t)?{}:{mtime:Math.floor(t/1e3)}}async function tI(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},...eI(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:new Uint8Array,directory:!0,...o===void 0?{}:{mode:o},...eI(i)});for(let n of await e.fs.readdir(t))await tI(e,kr(t,n),`${a}${n}`,r)}function nI(e,t){let n=e.length>=2&&e[0]===31&&e[1]===139,r=t||n?ba(e):e;return ya(r,{stripNpmPrefix:!1,includeDirectories:!0,preserveRawPaths:!0})}function rI(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 Lr(t,i)?i:void 0}async function iI(e){try{await e()}catch(e){let t=e?.code;if(t===`ENOSYS`||t===`ENOTSUP`||t===`EOPNOTSUPP`)return;throw e}}async function aI(e,t,n,r){let i=new Map(t),a=new Map(n),o=[...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: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 iI(()=>r.updateMetadataBatch(s));return}let c=e.fs;if(typeof c.updateMetadataBatch==`function`){await iI(()=>c.updateMetadataBatch(s));return}for(let[e,n]of t)await iI(()=>c.chmod(e,n));for(let[e,t]of n){let n=new Date(t*1e3);await iI(()=>c.utimes(e,n,n))}}async function oI(e,t,n,r,i){let a=n.directory?493:420,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=Pr(t);c!==`/`&&await e.fs.mkdir(c,{recursive:!0}),await e.fs.writeFile(t,n.bytes),s&&i.push([t,n.mode])}async function sI(e,t){if(e.paths.length===0)return GF(`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 tI(t,e,$F(i,e),n)}let i=t.fs.resolvePath(t.cwd,e.archive),a=_a(n);return await t.fs.writeFile(i,e.gzip?va(a):a),{stdout:e.verbose?`${n.map(e=>e.path).join(`
1923
+ `,stderr:``,exitCode:0}}function GF(e){return{stdout:``,stderr:`tar: ${e}\n`,exitCode:1}}function KF(e,t){if(e.mode)return GF(`exactly one of -c, -x, or -t is required`);e.mode=t}function qF(e,t,n){if(n)return[n,t];let r=e[t+1];return r===void 0?void 0:[r,t+1]}const JF={c:`create`,x:`extract`,t:`list`};function YF(e,t,n,r,i){let a=JF[e];if(a)return{nextIndex:r,error:KF(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:GF(`unsupported option -${e}`)};let o=qF(n,r,t);return o?(e===`f`?i.archive=o[0]:i.directory=o[0],{nextIndex:o[1],consumedValue:!0}):{nextIndex:r,error:GF(`option -${e} requires an argument`)}}function XF(e,t,n){let r=e[t];for(let i=1;i<r.length;i++){let a=YF(r[i],r.slice(i+1),e,t,n);if(a.error||a.consumedValue)return a}return{nextIndex:t}}const ZF=/^[cxtzvfC]+$/;function QF(e){let t=e.length>0&&ZF.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 GF(`unsupported option ${r}`);let i=XF(t,e,n);if(i.error)return i.error;e=i.nextIndex}return n}function $F(e,t){let n=e.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^(?:\.\/)+/,``);return n?n===`.`?`.`:n.replace(/\/+$/,``):Nr(t)}function eI(e){let t=e.mtime?.getTime();return t===void 0||Number.isNaN(t)?{}:{mtime:Math.floor(t/1e3)}}async function tI(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},...eI(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:new Uint8Array,directory:!0,...o===void 0?{}:{mode:o},...eI(i)});for(let n of await e.fs.readdir(t))await tI(e,Mr(t,n),`${a}${n}`,r)}function nI(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 rI(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 iI(e){try{await e()}catch(e){let t=e?.code;if(t===`ENOSYS`||t===`ENOTSUP`||t===`EOPNOTSUPP`)return;throw e}}async function aI(e,t,n,r){let i=new Map(t),a=new Map(n),o=[...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: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 iI(()=>r.updateMetadataBatch(s));return}let c=e.fs;if(typeof c.updateMetadataBatch==`function`){await iI(()=>c.updateMetadataBatch(s));return}for(let[e,n]of t)await iI(()=>c.chmod(e,n));for(let[e,t]of n){let n=new Date(t*1e3);await iI(()=>c.utimes(e,n,n))}}async function oI(e,t,n,r,i){let a=n.directory?493:420,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 sI(e,t){if(e.paths.length===0)return GF(`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 tI(t,e,$F(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(`
1924
1924
  `)}\n`:``,stderr:``,exitCode:0}}function cI(e){let t=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 lI(e,t,n){if(e.paths.length>0)return GF(`${e.mode} mode does not accept input paths`);let r=t.fs.resolvePath(t.cwd,e.archive),i=nI(await t.fs.readFileBuffer(r),e.gzip);if(e.mode===`list`){let e=i.map(e=>e.path).join(`
1925
1925
  `);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=[],s=[],c=[],l=[];for(let e of i){let n=rI(t,a,e.path);if(!n)return GF(`blocked suspicious path ${e.path}`);await oI(t,n,e,c,s),e.mtime!==void 0&&l.push([n,e.mtime]),o.push(e.path)}return await aI(t,[...cI(s),...cI(c)],cI(l),n),{stdout:e.verbose?`${o.join(`
1926
1926
  `)}\n`:``,stderr:``,exitCode:0}}function uI(e={}){return C(`tar`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return WF();let r=QF(t);return`exitCode`in r?r:r.mode?r.archive?r.mode===`list`&&r.directory!==`.`?GF(`-C is only supported in create or extract mode`):r.mode===`create`?sI(r,n):lI(r,n,e.fs):GF(`option -f requires an archive path`):GF(`exactly one of -c, -x, or -t is required`)})}var dI=`/**
@@ -2761,13 +2761,13 @@ Notes:
2761
2761
 
2762
2762
  Install:
2763
2763
  Inert until the backing package is installed in node_modules:
2764
- ${Ir}
2764
+ ${zr}
2765
2765
  Then \`tsc --version\` and the transpile commands above. There is no
2766
2766
  bundled binary, no CDN fallback; a missing package exits non-zero
2767
2767
  with a clear \`ipk add\` hint.
2768
- `;function hI(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 gI(e,t){let n=`${Ar(e).replace(/\.(ts|tsx|mts|cts)$/i,``)}.js`;return t?`${t.endsWith(`/`)?t.slice(0,-1):t}/${n}`:`${Pr(e)}/${n}`}async function _I(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=Pr(n)}return null}function vI(e){return{target:e.ScriptTarget.ES2022,module:e.ModuleKind.ESNext,moduleResolution:e.ModuleResolutionKind.Bundler,esModuleInterop:!0,allowSyntheticDefaultImports:!0,isolatedModules:!0}}function yI(e){if(typeof e!=`object`||!e)return{};let{compilerOptions:t}=e;return t??{}}async function bI(e,t,n){let r=vI(t),i=await _I(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,...yI(o)}}}function xI(e,t){let n=e.flattenDiagnosticMessageText(t.messageText,`
2768
+ `;function hI(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 gI(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 _I(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 vI(e){return{target:e.ScriptTarget.ES2022,module:e.ModuleKind.ESNext,moduleResolution:e.ModuleResolutionKind.Bundler,esModuleInterop:!0,allowSyntheticDefaultImports:!0,isolatedModules:!0}}function yI(e){if(typeof e!=`object`||!e)return{};let{compilerOptions:t}=e;return t??{}}async function bI(e,t,n){let r=vI(t),i=await _I(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,...yI(o)}}}function xI(e,t){let n=e.flattenDiagnosticMessageText(t.messageText,`
2769
2769
  `);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 SI(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 CI(e,t,n,r,i){let a=e.transpileModule(t,{compilerOptions:r,fileName:n,reportDiagnostics:i});return{outputText:a.outputText,diagnostics:a.diagnostics??[]}}function wI(e,t,n,r){let{outputText:i,diagnostics:a}=CI(e,r,`<stdin>.ts`,n.compilerOptions,!0),o=a.map(t=>xI(e,t)),s=o.length>0?`${o.join(`
2770
- `)}\n`:``;return{stdout:t.noEmit?``:i,stderr:s,exitCode:+(a.length>0)}}async function TI(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}}SI(e,a);let{outputText:s,diagnostics:c}=CI(e,o,a,i.compilerOptions,!0),l=[];for(let t of c)l.push(`${xI(e,t)}\n`);let u=c.length>0;if(r.noEmit)return{stderr:l.join(``),hadError:u};let d=t.fs.resolvePath(t.cwd,gI(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 EI(e,t){let n;try{n=hI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:mI,stderr:``,exitCode:0}};let r;try{r=await Dr(pI(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 DI(){return C(`tsc`,async(e,t)=>{let n=await EI(e,t);if(`done`in n)return n.done;let{parsed:r,ts:i}=n,a=await bI(t.fs,i,t.cwd);if(r.files.length===0){let e=P(t.stdin);return e?wI(i,r,a,e):{stdout:mI,stderr:``,exitCode:0}}let o=[],s=!1;for(let e of r.files){let n=await TI(i,t,e,r,a);n.stderr&&o.push(n.stderr),n.hadError&&(s=!0)}return{stdout:``,stderr:o.join(``),exitCode:+!!s}})}const OI=[`**/*.test.{js,ts}`];function kI(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 AI(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 jI(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=kI(s,e[o+1]);if(c){n=c.reporter,c.consumed===2&&(o+=1);continue}let l=AI(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:[...OI],reporter:n,showHelp:r,coverage:i,coverageDir:a}}function MI(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 MI(`${r}${e}${i}`))o.push(t);return o}function NI(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 PI(e,t,n){let r=n.flatMap(MI).map(NI),i=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 FI=null;async function II(e){if(FI)return FI;let t={module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,esModuleInterop:!0,isolatedModules:!1};return FI=`
2770
+ `)}\n`:``;return{stdout:t.noEmit?``:i,stderr:s,exitCode:+(a.length>0)}}async function TI(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}}SI(e,a);let{outputText:s,diagnostics:c}=CI(e,o,a,i.compilerOptions,!0),l=[];for(let t of c)l.push(`${xI(e,t)}\n`);let u=c.length>0;if(r.noEmit)return{stderr:l.join(``),hadError:u};let d=t.fs.resolvePath(t.cwd,gI(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 EI(e,t){let n;try{n=hI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:mI,stderr:``,exitCode:0}};let r;try{r=await Ar(pI(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 DI(){return C(`tsc`,async(e,t)=>{let n=await EI(e,t);if(`done`in n)return n.done;let{parsed:r,ts:i}=n,a=await bI(t.fs,i,t.cwd);if(r.files.length===0){let e=P(t.stdin);return e?wI(i,r,a,e):{stdout:mI,stderr:``,exitCode:0}}let o=[],s=!1;for(let e of r.files){let n=await TI(i,t,e,r,a);n.stderr&&o.push(n.stderr),n.hadError&&(s=!0)}return{stdout:``,stderr:o.join(``),exitCode:+!!s}})}const OI=[`**/*.test.{js,ts}`];function kI(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 AI(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 jI(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=kI(s,e[o+1]);if(c){n=c.reporter,c.consumed===2&&(o+=1);continue}let l=AI(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:[...OI],reporter:n,showHelp:r,coverage:i,coverageDir:a}}function MI(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 MI(`${r}${e}${i}`))o.push(t);return o}function NI(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 PI(e,t,n){let r=n.flatMap(MI).map(NI),i=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 FI=null;async function II(e){if(FI)return FI;let t={module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,esModuleInterop:!0,isolatedModules:!1};return FI=`
2771
2771
  if (typeof process !== 'undefined' && !process.versions) {
2772
2772
  try { process.versions = { node: '20.0.0' }; } catch (_) { /* readonly process.versions is fine */ }
2773
2773
  }
@@ -2785,7 +2785,7 @@ const __tst_module_exports = (function () {
2785
2785
  })();
2786
2786
  const __tst = __tst_module_exports.default || __tst_module_exports;
2787
2787
  __tst.manual = true;
2788
- `.trim(),FI}function LI(e,t=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 RI(e){let t=new Set,n=/(?:^|[^\w$.])require\(\s*(["'`])([^"'`]+)\1\s*\)/g,r;for(;(r=n.exec(e))!==null;)t.add(r[2]);return[...t]}async function zI(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 BI(e,t,n,r,i,a){let o=new Map,s=new Map,c=[{path:n,cjs:r}];for(;c.length>0;){let{path:n,cjs:r}=c.shift(),l=Pr(n),u=new Map;for(let n of RI(r)){if(!n.startsWith(`./`)&&!n.startsWith(`../`))continue;let r=await zI(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 VI(e,t,n,r,i,a,o=``,s=``){let c=r===`spec`?`pretty`:`tap`,l=[];for(let[e,t]of i.entries()){let n=LI(t,a.get(e)??new Map);l.push(`${JSON.stringify(e)}: function (module, exports, require) {\n${n}\n}`)}let u=`{${l.join(`,
2788
+ `.trim(),FI}function LI(e,t=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 RI(e){let t=new Set,n=/(?:^|[^\w$.])require\(\s*(["'`])([^"'`]+)\1\s*\)/g,r;for(;(r=n.exec(e))!==null;)t.add(r[2]);return[...t]}async function zI(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 BI(e,t,n,r,i,a){let o=new Map,s=new Map,c=[{path:n,cjs:r}];for(;c.length>0;){let{path:n,cjs:r}=c.shift(),l=Lr(n),u=new Map;for(let n of RI(r)){if(!n.startsWith(`./`)&&!n.startsWith(`../`))continue;let r=await zI(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 VI(e,t,n,r,i,a,o=``,s=``){let c=r===`spec`?`pretty`:`tap`,l=[];for(let[e,t]of i.entries()){let n=LI(t,a.get(e)??new Map);l.push(`${JSON.stringify(e)}: function (module, exports, require) {\n${n}\n}`)}let u=`{${l.join(`,
2789
2789
  `)}}`,d=LI(n,a.get(t)??new Map),f=o,p=s;return`"use strict";
2790
2790
  ${f}${e}
2791
2791
  const __realmRequire = require;
@@ -2851,7 +2851,7 @@ Notes:
2851
2851
  with statement counters. nyc/c8 cannot wrap this runner: it is not a
2852
2852
  Node child. Istanbul/Babel are not bundled (webapp size-limit); the
2853
2853
  TypeScript AST already in process does the rewrite.
2854
- `,stderr:``,exitCode:0}};let r=await PI(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 Dr(pI(t))}catch(e){return{done:{stdout:``,stderr:`tst: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}let a=await II(i),o=n.coverage?await import(`./coverage-instrument-CjoHgKzK.js`):null;return{parsed:n,files:r,ts:i,harness:a,userOpts:UI(i),coverageMaps:{},coverageCounts:{},coverageMod:o}}function GI(e){return e.includes(`# fail `)||/(^|\n)not ok /.test(e)}async function KI(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 BI(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=VI(a,n,d,s.reporter,f,p,c?`${c.coverageRuntimeSource()}\n`:``,c?`\n${c.coverageDumpSource()}`:``),h=await gi(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||GI(g)}}function qI(){return C(`tst`,async(e,t)=>{let n=await WI(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 KI(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 JI=[],YI=`usage: theme <subcommand> [args]
2854
+ `,stderr:``,exitCode:0}};let r=await PI(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(pI(t))}catch(e){return{done:{stdout:``,stderr:`tst: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}let a=await II(i),o=n.coverage?await import(`./coverage-instrument-CjoHgKzK.js`):null;return{parsed:n,files:r,ts:i,harness:a,userOpts:UI(i),coverageMaps:{},coverageCounts:{},coverageMod:o}}function GI(e){return e.includes(`# fail `)||/(^|\n)not ok /.test(e)}async function KI(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 BI(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=VI(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||GI(g)}}function qI(){return C(`tst`,async(e,t)=>{let n=await WI(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 KI(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 JI=[],YI=`usage: theme <subcommand> [args]
2855
2855
 
2856
2856
  Subcommands:
2857
2857
  list List available preset and custom themes
@@ -2876,7 +2876,7 @@ Remove FILE. Symbolic links are removed without following their target.
2876
2876
  `:`unlink: extra operand
2877
2877
  `,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 hL(){return{stdout:`usage: unzip <archive.zip> [-d <destination>]
2878
2878
  `,stderr:``,exitCode:0}}function gL(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
2879
- `,exitCode:1}}:{kind:`ok`,archive:n[0],destination:t||`.`}}async function _L(e,t,n,r){let i=n.replace(/\\/g,`/`);if(!i||i.endsWith(`/`))return!1;let a=e.fs.resolvePath(t,i);if(!Lr(t,a))return{stdout:``,stderr:`unzip: blocked suspicious path ${n}\n`,exitCode:1};let o=Pr(a);return o!==`/`&&await e.fs.mkdir(o,{recursive:!0}),await e.fs.writeFile(a,r),!0}function vL(){return C(`unzip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return hL();let n=gL(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 _L(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 yL=`ai-ecoverse/slicc`,bL=`usage: upgrade status | upgrade apply --from=<version> --to=<version>`,xL=`packages/vfs-root`,SL=3e4,CL=[`${xL}/workspace/skills/`,`${xL}/shared/sprinkles/`,`${xL}/shared/sounds/`,`${xL}/shared/GELATIERE.md`,`${xL}/shared/wiki/WIKI.md`,`${xL}/etc/`],wL=[`auto-applied`,`merged-clean`,`kept-local`,`needs-review`,`unchanged`,`added-new`];function TL(){return Object.fromEntries(wL.map(e=>[e,0]))}function EL(e,t,n,r){let i=TL();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 DL(e){if(e[0]!==`apply`)throw Error(bL);let t=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 OL(e){return e.startsWith(`v`)?e:`v${e}`}function kL(e){if(!CL.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 AL(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(Error(`request timed out after ${SL}ms`)),SL)})])}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 jL(e,t){let n=await AL(t,`https://api.github.com/repos/${yL}/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=new Map;for(let e of r.tree){if(e.type!==`blob`||typeof e.path!=`string`)continue;let t=kL(e.path);t&&i.set(t,e.path)}return i}function ML(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`https://raw.githubusercontent.com/${yL}/${encodeURIComponent(e)}/${n}`}function NL(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}function PL(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}async function FL(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 IL(e,t,n,r,i){let a=`${t}.upgrade-${OL(n)}-to-${OL(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 LL(e,t,n,r,i,a,o){let s=await FL(e.fs,t);if(!a)return{path:t,classification:s?`kept-local`:`unchanged`};if(!i)return s?{path:t,classification:NL(s,a)?`unchanged`:`kept-local`}:{path:t,classification:`added-new`,content:a};if(NL(i,a)||NL(s,a))return{path:t,classification:`unchanged`};if(!s)return{path:t,classification:`kept-local`};if(NL(s,i))return{path:t,classification:`auto-applied`,content:a};let[c,l,u]=[s,i,a].map(PL);if(c!==null&&l!==null&&u!==null){let i=Ye(c,l,u,{diff3:!0,labels:{current:`local:${t}`,base:`${OL(n)}:${t}`,other:`${OL(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 IL(e.fs,t,n,r,o)}}return{path:t,classification:`needs-review`,content:a,sidecar:await IL(e.fs,t,n,r,o)}}async function RL(e,t){t.content?await e.writeFile(t.path,t.content):await e.exists(t.path)&&await e.rm(t.path)}async function zL(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 FL(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 RL(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 BL(e,t,n){let r=OL(t),i=OL(n),[a,o]=await Promise.all([jL(r,e.fetch),jL(i,e.fetch)]),s=[...new Set([...a.keys(),...o.keys()])].sort(),c=await Promise.all(s.map(async t=>{let[n,s]=await Promise.all([a.has(t)?AL(e.fetch,ML(r,a.get(t))).then(e=>je(e.body)):void 0,o.has(t)?AL(e.fetch,ML(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 LL(e,r,t,n,i,a,l));return await zL(e.fs,u),u}async function VL(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 HL(e){return C(`upgrade`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`${bL}\n`,stderr:``,exitCode:0};if(t[0]===`status`)return t.length>1?{stdout:EL(``,``,[],[`unsupported argument: ${t[1]}`]),stderr:``,exitCode:1}:{stdout:await VL(e),stderr:``,exitCode:0};let n=``,r=``;try{({from:n,to:r}=DL(t));let i=await BL(e,n,r),a=i.some(e=>e.classification===`needs-review`);return{stdout:EL(n,r,i,[]),stderr:``,exitCode:+!!a}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:EL(n,r,[],[t]),stderr:``,exitCode:1}}})}const UL=`usage: uptime [-p|--pretty] [-s|--since]`,WL=`${UL}
2879
+ `,exitCode:1}}:{kind:`ok`,archive:n[0],destination:t||`.`}}async function _L(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 vL(){return C(`unzip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return hL();let n=gL(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 _L(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 yL=`ai-ecoverse/slicc`,bL=`usage: upgrade status | upgrade apply --from=<version> --to=<version>`,xL=`packages/vfs-root`,SL=3e4,CL=[`${xL}/workspace/skills/`,`${xL}/shared/sprinkles/`,`${xL}/shared/sounds/`,`${xL}/shared/GELATIERE.md`,`${xL}/shared/wiki/WIKI.md`,`${xL}/etc/`],wL=[`auto-applied`,`merged-clean`,`kept-local`,`needs-review`,`unchanged`,`added-new`];function TL(){return Object.fromEntries(wL.map(e=>[e,0]))}function EL(e,t,n,r){let i=TL();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 DL(e){if(e[0]!==`apply`)throw Error(bL);let t=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 OL(e){return e.startsWith(`v`)?e:`v${e}`}function kL(e){if(!CL.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 AL(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(Error(`request timed out after ${SL}ms`)),SL)})])}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 jL(e,t){let n=await AL(t,`https://api.github.com/repos/${yL}/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=new Map;for(let e of r.tree){if(e.type!==`blob`||typeof e.path!=`string`)continue;let t=kL(e.path);t&&i.set(t,e.path)}return i}function ML(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`https://raw.githubusercontent.com/${yL}/${encodeURIComponent(e)}/${n}`}function NL(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}function PL(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}async function FL(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 IL(e,t,n,r,i){let a=`${t}.upgrade-${OL(n)}-to-${OL(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 LL(e,t,n,r,i,a,o){let s=await FL(e.fs,t);if(!a)return{path:t,classification:s?`kept-local`:`unchanged`};if(!i)return s?{path:t,classification:NL(s,a)?`unchanged`:`kept-local`}:{path:t,classification:`added-new`,content:a};if(NL(i,a)||NL(s,a))return{path:t,classification:`unchanged`};if(!s)return{path:t,classification:`kept-local`};if(NL(s,i))return{path:t,classification:`auto-applied`,content:a};let[c,l,u]=[s,i,a].map(PL);if(c!==null&&l!==null&&u!==null){let i=Ye(c,l,u,{diff3:!0,labels:{current:`local:${t}`,base:`${OL(n)}:${t}`,other:`${OL(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 IL(e.fs,t,n,r,o)}}return{path:t,classification:`needs-review`,content:a,sidecar:await IL(e.fs,t,n,r,o)}}async function RL(e,t){t.content?await e.writeFile(t.path,t.content):await e.exists(t.path)&&await e.rm(t.path)}async function zL(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 FL(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 RL(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 BL(e,t,n){let r=OL(t),i=OL(n),[a,o]=await Promise.all([jL(r,e.fetch),jL(i,e.fetch)]),s=[...new Set([...a.keys(),...o.keys()])].sort(),c=await Promise.all(s.map(async t=>{let[n,s]=await Promise.all([a.has(t)?AL(e.fetch,ML(r,a.get(t))).then(e=>je(e.body)):void 0,o.has(t)?AL(e.fetch,ML(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 LL(e,r,t,n,i,a,l));return await zL(e.fs,u),u}async function VL(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 HL(e){return C(`upgrade`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`${bL}\n`,stderr:``,exitCode:0};if(t[0]===`status`)return t.length>1?{stdout:EL(``,``,[],[`unsupported argument: ${t[1]}`]),stderr:``,exitCode:1}:{stdout:await VL(e),stderr:``,exitCode:0};let n=``,r=``;try{({from:n,to:r}=DL(t));let i=await BL(e,n,r),a=i.some(e=>e.classification===`needs-review`);return{stdout:EL(n,r,i,[]),stderr:``,exitCode:+!!a}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:EL(n,r,[],[t]),stderr:``,exitCode:1}}})}const UL=`usage: uptime [-p|--pretty] [-s|--since]`,WL=`${UL}
2880
2880
 
2881
2881
  Print how long this SLICC has been running. The clock starts when the browser
2882
2882
  window was last loaded — a reload is a reboot.
@@ -2892,7 +2892,7 @@ The load average is the average number of live kernel processes over the last
2892
2892
  processes are retained in bounded numbers, so a long burst of short commands
2893
2893
  can under-report the older windows. The user count is always 1: a SLICC
2894
2894
  runtime has one user identity (see \`id\`).
2895
- `,GL=[1,5,15],KL=6e4,qL=60*KL,JL=24*qL;function YL(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function XL(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 ZL(e){let t=Math.max(0,e),n=Math.floor(t/JL),r=Math.floor(t%JL/qL),i=Math.floor(t%qL/KL),a=r>0?`${r}:${String(i).padStart(2,`0`)}`:`${i} min`;return n===0?a:`${n} ${n===1?`day`:`days`}, ${a}`}function QL(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/JL),`day`),r(Math.floor(t%JL/qL),`hour`),r(Math.floor(t%qL/KL),`minute`),n.length===0?`up ${Math.floor(t/1e3)} seconds`:`up ${n.join(`, `)}`}function $L(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 eR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function tR(e,t,n){let r=GL.map(r=>XL(e,t,r*KL,n).toFixed(2));return` ${eR(t)} up ${ZL(t-n)}, 1 user, load average: ${r.join(`, `)}\n`}function nR(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 rR(e={}){return C(`uptime`,async t=>{let n=nR(t);if(typeof n!=`string`)return{stdout:``,stderr:`uptime: ${n.error}\n${UL}\n`,exitCode:1};if(n===`help`)return{stdout:WL,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():ja();if(n===`since`)return iR(`${$L(i)}\n`);if(n===`pretty`)return iR(`${QL(r-i)}\n`);let a=e.processManager??YL();return iR(tR(a?a.list():[],r,i))})}function iR(e){return{stdout:e,stderr:``,exitCode:0}}const aR=new Set([`--vid`,`--pid`,`--class`,`--subclass`,`--protocol`,`--serial`,`--request-type`,`--recipient`,`--request`,`--value`,`--index`,`--__resolved`]);function oR(e){return Vn(e,aR)}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 sR(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 cR=new Set([`standard`,`class`,`vendor`]),lR=new Set([`device`,`interface`,`endpoint`,`other`]);function uR(e){let t=e.get(`--request-type`)??`vendor`,n=e.get(`--recipient`)??`device`;if(!cR.has(t))throw Error(`invalid --request-type: '${t}'`);if(!lR.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 dR(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 fR(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function pR(e){return`0x${e.toString(16).padStart(4,`0`)}`}function mR(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${pR(e.vendorId)}:${pR(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 hR=`usb - access USB devices via WebUSB
2895
+ `,GL=[1,5,15],KL=6e4,qL=60*KL,JL=24*qL;function YL(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function XL(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 ZL(e){let t=Math.max(0,e),n=Math.floor(t/JL),r=Math.floor(t%JL/qL),i=Math.floor(t%qL/KL),a=r>0?`${r}:${String(i).padStart(2,`0`)}`:`${i} min`;return n===0?a:`${n} ${n===1?`day`:`days`}, ${a}`}function QL(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/JL),`day`),r(Math.floor(t%JL/qL),`hour`),r(Math.floor(t%qL/KL),`minute`),n.length===0?`up ${Math.floor(t/1e3)} seconds`:`up ${n.join(`, `)}`}function $L(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 eR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function tR(e,t,n){let r=GL.map(r=>XL(e,t,r*KL,n).toFixed(2));return` ${eR(t)} up ${ZL(t-n)}, 1 user, load average: ${r.join(`, `)}\n`}function nR(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 rR(e={}){return C(`uptime`,async t=>{let n=nR(t);if(typeof n!=`string`)return{stdout:``,stderr:`uptime: ${n.error}\n${UL}\n`,exitCode:1};if(n===`help`)return{stdout:WL,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 iR(`${$L(i)}\n`);if(n===`pretty`)return iR(`${QL(r-i)}\n`);let a=e.processManager??YL();return iR(tR(a?a.list():[],r,i))})}function iR(e){return{stdout:e,stderr:``,exitCode:0}}const aR=new Set([`--vid`,`--pid`,`--class`,`--subclass`,`--protocol`,`--serial`,`--request-type`,`--recipient`,`--request`,`--value`,`--index`,`--__resolved`]);function oR(e){return Vn(e,aR)}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 sR(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 cR=new Set([`standard`,`class`,`vendor`]),lR=new Set([`device`,`interface`,`endpoint`,`other`]);function uR(e){let t=e.get(`--request-type`)??`vendor`,n=e.get(`--recipient`)??`device`;if(!cR.has(t))throw Error(`invalid --request-type: '${t}'`);if(!lR.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 dR(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 fR(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function pR(e){return`0x${e.toString(16).padStart(4,`0`)}`}function mR(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${pR(e.vendorId)}:${pR(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 hR=`usb - access USB devices via WebUSB
2896
2896
 
2897
2897
  Usage: usb <subcommand> [options]
2898
2898
 
@@ -2930,10 +2930,10 @@ Options:
2930
2930
  (bridged waits time out after 5 minutes and drop the waiter)
2931
2931
  -h, --help
2932
2932
 
2933
- Transfers are capped at ${Di} bytes (4 MiB).
2933
+ Transfers are capped at ${Ai} bytes (4 MiB).
2934
2934
  `;function gR(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?`${fR(e)}\n`:``)}async function _R(e){let t=await e.list();return t.length===0?X(`no granted USB devices
2935
2935
  `):X(`${t.map(mR).join(`
2936
- `)}\n`)}async function vR(e,t){let n=e.get(`--__resolved`);if(n)return X(`${mR(await t.info(n))}\n`);let r=sR(e),i=Ve();if(i){let e=await Yx(`usb-device`,r,i);if(e.handle)return X(`${mR(await t.info(e.handle))}\n`);let n=e.info,a=Ti();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=Ei().register(o);return X(`${mR(wi(s,o))}\n`)}return X(`${mR(await t.request(r))}\n`)}async function yR(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 bR(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 xR(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 SR(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 CR(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`):gR((await n.controlIn(i,uR(t),o)).bytes,r)}async function wR(e,t,n,r){let i=e[1];if(!i)return Z(`control-out: handle required`);let a=dR(t);return a.length>4194304?Z(`control-out payload exceeds 4 MiB limit`):X(`${(await r.controlOut(i,uR(n),a)).bytesWritten} bytes written\n`)}async function TR(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`):gR((await n.transferIn(i,Y(a,`endpoint`),s)).bytes,r)}async function ER(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`transfer-out: handle and endpoint required`);let o=dR(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 DR(e,t,n){let{positionals:r,flags:i,bools:a}=oR(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return _R(n);case`request`:return vR(i,n);case`open`:case`close`:case`reset`:return yR(o,r,n,a);case`clear-halt`:return bR(r,n);case`select-config`:return xR(r,n);case`claim`:case`release`:return SR(o,r,n,a);case`control-in`:return CR(r,i,n,s);case`control-out`:return wR(r,t,i,n);case`transfer-in`:return TR(r,i,n,s);case`transfer-out`:return ER(r,t,i,n);default:return Z(`unknown subcommand '${o??``}'. Try 'usb --help'.`)}}function OR(){return C(`usb`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return X(hR);let n=oi(be(),b());if(!n)return Z(`WebUSB is unavailable in this environment`);try{return await DR(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 kR=`/workspace/.v86`,AR=`v86 - run an x86 virtual machine (v86 wasm engine)
2936
+ `)}\n`)}async function vR(e,t){let n=e.get(`--__resolved`);if(n)return X(`${mR(await t.info(n))}\n`);let r=sR(e),i=Ve();if(i){let e=await Yx(`usb-device`,r,i);if(e.handle)return X(`${mR(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(`${mR(Di(s,o))}\n`)}return X(`${mR(await t.request(r))}\n`)}async function yR(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 bR(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 xR(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 SR(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 CR(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`):gR((await n.controlIn(i,uR(t),o)).bytes,r)}async function wR(e,t,n,r){let i=e[1];if(!i)return Z(`control-out: handle required`);let a=dR(t);return a.length>4194304?Z(`control-out payload exceeds 4 MiB limit`):X(`${(await r.controlOut(i,uR(n),a)).bytesWritten} bytes written\n`)}async function TR(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`):gR((await n.transferIn(i,Y(a,`endpoint`),s)).bytes,r)}async function ER(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`transfer-out: handle and endpoint required`);let o=dR(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 DR(e,t,n){let{positionals:r,flags:i,bools:a}=oR(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return _R(n);case`request`:return vR(i,n);case`open`:case`close`:case`reset`:return yR(o,r,n,a);case`clear-halt`:return bR(r,n);case`select-config`:return xR(r,n);case`claim`:case`release`:return SR(o,r,n,a);case`control-in`:return CR(r,i,n,s);case`control-out`:return wR(r,t,i,n);case`transfer-in`:return TR(r,i,n,s);case`transfer-out`:return ER(r,t,i,n);default:return Z(`unknown subcommand '${o??``}'. Try 'usb --help'.`)}}function OR(){return C(`usb`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return X(hR);let n=mi(be(),b());if(!n)return Z(`WebUSB is unavailable in this environment`);try{return await DR(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 kR=`/workspace/.v86`,AR=`v86 - run an x86 virtual machine (v86 wasm engine)
2937
2937
 
2938
2938
  Requires: ${F} v86@${FO}
2939
2939
 
@@ -2984,12 +2984,12 @@ Notes:
2984
2984
  mkdir -p ${kR}
2985
2985
  curl -o ${kR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
2986
2986
  curl -o ${kR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
2987
- or pass -bios / -vgabios with explicit VFS paths.`,MR={"-n":NR,"-name":NR,"--name":NR,"-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)=>PR(e,`cdrom`,t),"-hda":(e,t)=>PR(e,`hda`,t),"-fda":(e,t)=>PR(e,`fda`,t),"-kernel":(e,t)=>PR(e,`kernel`,t),"-initrd":(e,t)=>PR(e,`initrd`,t),"-append":(e,t)=>PR(e,`append`,t),"-bios":(e,t)=>PR(e,`bios`,t),"-vgabios":(e,t)=>PR(e,`vgabios`,t),"-state":(e,t)=>PR(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 NR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function PR(e,t,n){return e[t]=n,null}const FR=[...Object.keys(MR),`--fps`,`--tail`,`--send`,`--to`];function IR(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(MR,r)?MR[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 LR(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 RR(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 zR(e){return Ta(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function BR(e){return`exitCode`in e}async function VR(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 HR={a:801,c:306,d:531};function UR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function WR(e={}){return C(`v86`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`||t[0]===`help`)return $(AR);if(t[0]===`--version`)return GR(n,e);let r=t[0];if(T(t.slice(1),{valueFlags:FR}))return $(gt(`v86`,r,AR,{prefix:`v86`}));let i=ht(t.slice(1));try{switch(r){case`start`:return await ZR(i,n,e);case`ls`:return $R();case`type`:return await rz(i,n);case`key`:return await iz(i,n);case`mouse`:return await oz(i,n);case`screenshot`:return await sz(i,n);case`text`:return await cz(i,n);case`serve`:return lz(i);case`serial`:return uz(i);case`state`:return await dz(i,n);case`stop`:return await fz(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function GR(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(LR(e))).version} (qemu-flavored CLI)\n`);let n=await VO(LR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(IO)}async function KR(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await VR(t,e.bios??`${kR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(jR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await VR(t,e.vgabios??`${kR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(jR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function qR(e,t,n){let r=await KR(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 VR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=HR[e.boot]),e.state){let r=await VR(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 JR=6e4;function YR(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(Error(`engine init timed out after ${JR/1e3}s`)),JR);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function XR(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 ZR(e,t,n){let r=IR(e);if(!r.ok)return Q(r.error);let i=r.parsed;if(Ta(i.name))return Q(`VM '${i.name}' already running — stop it first or pick another -n name`);let a=LR(t),o=n.loadEngine?await n.loadEngine(a):await RO({ipk:a}),s={wasm_fn:UO(o.wasmModule),memory_size:i.memoryMib*1024*1024,vga_memory_size:i.vgaMemoryMib*1024*1024,autostart:!1,disable_speaker:!0,fastboot:!0},c=await qR(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??UR();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`,()=>{QR(u,d)})}wa(u);try{if(await YR(l),i.netRelay===`fetch`){let e=XR(l,n);if(e)return await QR(u,d),e}Ca(u),await l.run()}catch(e){return await QR(u,d),Q(`boot failed: ${e instanceof Error?e.message:String(e)}`)}u.onScreenChange=()=>{import(`./registry-DfuJBCKY.js`).then(({getComputerRegistry:e})=>{e()?.refresh(`v86:${u.name}`)})},import(`./v86-16ZWsI-9.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 QR(e,t){Ea(e),Sa(e.name),import(`./v86-16ZWsI-9.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 $R(){let e=xa();if(e.length===0)return $(`no VMs running
2987
+ or pass -bios / -vgabios with explicit VFS paths.`,MR={"-n":NR,"-name":NR,"--name":NR,"-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)=>PR(e,`cdrom`,t),"-hda":(e,t)=>PR(e,`hda`,t),"-fda":(e,t)=>PR(e,`fda`,t),"-kernel":(e,t)=>PR(e,`kernel`,t),"-initrd":(e,t)=>PR(e,`initrd`,t),"-append":(e,t)=>PR(e,`append`,t),"-bios":(e,t)=>PR(e,`bios`,t),"-vgabios":(e,t)=>PR(e,`vgabios`,t),"-state":(e,t)=>PR(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 NR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function PR(e,t,n){return e[t]=n,null}const FR=[...Object.keys(MR),`--fps`,`--tail`,`--send`,`--to`];function IR(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(MR,r)?MR[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 LR(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 RR(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 zR(e){return Oa(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function BR(e){return`exitCode`in e}async function VR(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 HR={a:801,c:306,d:531};function UR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function WR(e={}){return C(`v86`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`||t[0]===`help`)return $(AR);if(t[0]===`--version`)return GR(n,e);let r=t[0];if(T(t.slice(1),{valueFlags:FR}))return $(gt(`v86`,r,AR,{prefix:`v86`}));let i=ht(t.slice(1));try{switch(r){case`start`:return await ZR(i,n,e);case`ls`:return $R();case`type`:return await rz(i,n);case`key`:return await iz(i,n);case`mouse`:return await oz(i,n);case`screenshot`:return await sz(i,n);case`text`:return await cz(i,n);case`serve`:return lz(i);case`serial`:return uz(i);case`state`:return await dz(i,n);case`stop`:return await fz(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function GR(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(LR(e))).version} (qemu-flavored CLI)\n`);let n=await VO(LR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(IO)}async function KR(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await VR(t,e.bios??`${kR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(jR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await VR(t,e.vgabios??`${kR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(jR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function qR(e,t,n){let r=await KR(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 VR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=HR[e.boot]),e.state){let r=await VR(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 JR=6e4;function YR(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(Error(`engine init timed out after ${JR/1e3}s`)),JR);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function XR(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 ZR(e,t,n){let r=IR(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=LR(t),o=n.loadEngine?await n.loadEngine(a):await RO({ipk:a}),s={wasm_fn:UO(o.wasmModule),memory_size:i.memoryMib*1024*1024,vga_memory_size:i.vgaMemoryMib*1024*1024,autostart:!1,disable_speaker:!0,fastboot:!0},c=await qR(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??UR();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`,()=>{QR(u,d)})}Da(u);try{if(await YR(l),i.netRelay===`fetch`){let e=XR(l,n);if(e)return await QR(u,d),e}Ea(u),await l.run()}catch(e){return await QR(u,d),Q(`boot failed: ${e instanceof Error?e.message:String(e)}`)}u.onScreenChange=()=>{import(`./registry-DfuJBCKY.js`).then(({getComputerRegistry:e})=>{e()?.refresh(`v86:${u.name}`)})},import(`./v86-16ZWsI-9.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 QR(e,t){ka(e),Ta(e.name),import(`./v86-16ZWsI-9.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 $R(){let e=wa();if(e.length===0)return $(`no VMs running
2988
2988
  `);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(`
2989
2989
  `)}\n`)}function ez(e,t){return`prefer: computer ${e} -c ${t}\n`}async function tz(e,t,n,r){let i=zR(t);if(BR(i))return i;let[{runComputer:a},{getComputerRegistry:o,installComputerRegistry:s},c]=await Promise.all([import(`./run-BJGzDxyk.js`).then(e=>e.t),import(`./registry-DfuJBCKY.js`),import(`./v86-16ZWsI-9.js`)]),l=c.v86ComputerId(t),u=o()??s(null);return u.get(l)||c.registerV86Computer(i,u),nz(await a([`-c`,l,...n],e,{registry:u}),r,l)}function nz(e,t,n){let r=ez(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 rz(e,t){let{name:n,rest:r}=RR(e);if(r.length===0){let e=zR(n);return BR(e)?e:Q(`type: no text supplied`)}return tz(t,n,[`type`,`--`,...r],`type`)}async function iz(e,t){let{name:n,rest:r}=RR(e);if(r.length===0){let e=zR(n);return BR(e)?e:Q(`key: no chord supplied`)}return tz(t,n,[`key`,...r],`key`)}const az=[`left`,`middle`,`right`];async function oz(e,t){let{name:n,rest:r}=RR(e),i=zR(n);if(BR(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?tz(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>`):tz(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!az.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),tz(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function sz(e,t){let{name:n,rest:r}=RR(e);return tz(t,n,[`screenshot`,...r],`screenshot`)}async function cz(e,t){let{name:n}=RR(e);return tz(t,n,[`text`],`text`)}function lz(e){let{name:t}=RR(e);return $(`v86 serve is retired.\nUse: computer watch -c v86:${t}\nLive frames go to the overlay, lightbox, and bash rows.\n`)}function uz(e){let{name:t,rest:n}=RR(e),r=zR(t);if(BR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
2990
2990
  `);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(`
2991
2991
  `).slice(-Math.max(1,e)).join(`
2992
- `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function dz(e,t){let{name:n,rest:r}=RR(e),i=zR(n);if(BR(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 fz(e,t){let{name:n,rest:r}=RR(e),i=zR(n);if(BR(i))return i;let a=t.processManager??UR();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await QR(i,a),$(`VM '${n}' stopped\n`))}function pz(e={}){return C(`wasm`,async(t,n)=>{let{runWasmCommand:r}=await import(`./run-DiQn9-Xh.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}const mz=[`--name`,`--filter`,`--scoop`],hz={state:`inactive`,session:null};function gz(){return{stdout:`usage: webhook <command> [options]
2992
+ `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function dz(e,t){let{name:n,rest:r}=RR(e),i=zR(n);if(BR(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 fz(e,t){let{name:n,rest:r}=RR(e),i=zR(n);if(BR(i))return i;let a=t.processManager??UR();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await QR(i,a),$(`VM '${n}' stopped\n`))}function pz(e={}){return C(`wasm`,async(t,n)=>{let{runWasmCommand:r}=await import(`./run-DX_sxl3W.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}const mz=[`--name`,`--filter`,`--scoop`],hz={state:`inactive`,session:null};function gz(){return{stdout:`usage: webhook <command> [options]
2993
2993
 
2994
2994
  Commands:
2995
2995
  create [--scoop <name>] [--name <name>] [--filter <code>] Create a new webhook endpoint
@@ -3009,11 +3009,11 @@ Examples:
3009
3009
  webhook create --scoop slack-relay --name slack --filter "(e) => ({ text: e.body.text, user: e.body.user })"
3010
3010
  webhook list
3011
3011
  webhook delete abc123
3012
- `,stderr:``,exitCode:0}}function _z(e){return e().session?.webhookUrl??null}function vz(e,t,n){return t?Da(t,e):n()?Oa(self.location.href,e):`(URL unavailable — connect a leader tray)`}function yz(e){return{stdout:``,stderr:`webhook ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}async function bz(e){if(e.length!==1)return{stdout:``,stderr:`webhook rotate: takes no arguments
3012
+ `,stderr:``,exitCode:0}}function _z(e){return e().session?.webhookUrl??null}function vz(e,t,n){return t?Aa(t,e):n()?ja(self.location.href,e):`(URL unavailable — connect a leader tray)`}function yz(e){return{stdout:``,stderr:`webhook ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}async function bz(e){if(e.length!==1)return{stdout:``,stderr:`webhook rotate: takes no arguments
3013
3013
  `,exitCode:1};let t=b();if(!t)return{stdout:``,stderr:`webhook rotate: no leader panel connected
3014
3014
  `,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.
3015
3015
  `,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`webhook rotate: rotation failed; reconnect the leader and retry
3016
- `,exitCode:1}}}async function xz(e,t,n){let r=w(e.slice(1),{value:mz});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=la(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
3016
+ `,exitCode:1}}}async function xz(e,t,n){let r=w(e.slice(1),{value:mz});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
3017
3017
  `,exitCode:1};let s=wz(t);if(s)return s;let c=await Ey();if(!c)return yz(`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=Tz(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 Sz(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 yz(`list`);let i=await r.listWebhooks();if(i.length===0)return{stdout:`No active webhooks
3018
3018
  `,stderr:``,exitCode:0};let{trayUrlBase:a,urlResolutionError:o}=Ez(t);return{stdout:Dz(i.map(e=>({id:e.id,name:e.name,url:vz(e.id,a,t.hasLocalNodeServer),createdAt:e.createdAt,filter:e.filter,scoop:e.scoop})),a,o,t.hasLocalNodeServer),stderr:``,exitCode:0}}async function Cz(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
3019
3019
  `,exitCode:1};if(!r)return{stdout:``,stderr:`webhook delete: requires an ID
@@ -3072,7 +3072,7 @@ EXAMPLES:
3072
3072
  `:``}function $z(e,t,n){e.quiet||t.push(`websocat: ${n}`)}function eB(e,t){e.verbose<1||(e.customHeaders.length>0&&$z(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&&$z(e,t,`--ping-interval has no effect in browsers (no ping API exposed)`),e.insecure&&$z(e,t,`-k/--insecure has no effect in browsers`))}function tB(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 nB(e,t,n,r){if(n.outLines.length<Jz){n.outLines.push(r);return}n.droppedForOverflow===0&&$z(e,t,`output buffer reached ${Jz} 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 rB(e,n,r){let{bytes:i,isBinary:a}=qz(r);return i.length>e.bufferSize&&($z(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):Kz(i)}function iB(e,t){return e.maxMessages!==void 0&&t>=e.maxMessages||e.oneMessage}function aB(e,t,n){try{n===void 0?e.close(t):e.close(t,n)}catch{}}function oB(e,t){setTimeout(()=>{aB(t,e.closeStatus??1e3,e.closeReason)},0)}function sB(e,t,n){let r=Wz(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=Gz(n,i,t.jsonrpcOmit),i+=1),t.binary?e.send(new TextEncoder().encode(r).buffer):e.send(r),a+=1}return a}function cB(e,t,n){!t.oneMessage&&!t.noClose&&(t.exitOnEof||n===0)&&oB(t,e)}async function lB(e,t,n){let r=[];eB(e,r);let i=e.nullTerminated?`\0`:`
3073
3073
  `,a=tB(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=Yz(),u=Xz(),d=0,f=!1,p=setTimeout(()=>{f=!0,aB(o,1e3),c||l.reject(Error(`connect timeout`))},e.connTimeoutMs),m=()=>{if(e.noClose){u.settle(d);return}aB(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=rB(e,r,t.data);nB(e,r,s,n)}s.received+=1,iB(e,s.received)&&(s.finishing=!0,m())}},o.onerror=()=>{f||($z(e,r,`websocket error`),d=1,c||l.reject(Error(`connect failed`)))},o.onclose=t=>{if(clearTimeout(p),f){u.settle(124);return}e.verbose>=1&&$z(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(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:Zz(s.outLines,i),stderr:Qz(r.concat([`websocat: ${t}`])),exitCode:t===`connect timeout`?124:1}}e.unidirectionalReverse?!e.noClose&&e.exitOnEof&&!e.oneMessage&&oB(e,o):cB(o,e,sB(o,e,t));let h=await u.promise;return s.droppedForOverflow>0&&$z(e,r,`dropped ${s.droppedForOverflow} inbound message(s) due to output buffer cap`),{stdout:Zz(s.outLines,i),stderr:Qz(r),exitCode:h}}function uB(e){return{stdout:``,stderr:e,exitCode:2}}function dB(e){return e.WebSocketCtor??(typeof WebSocket<`u`?WebSocket:void 0)}async function fB(e,t,n={}){let r=Uz(e);if(r.showHelp)return Az();if(r.error)return uB(r.error);if(!r.url)return uB(`websocat: missing ws:// or wss:// URL (use --help for usage)
3074
3074
  `);if(!/^wss?:\/\//i.test(r.url))return uB(`websocat: URL must start with ws:// or wss://, got '${r.url}'\n`);let i=dB(n);return i?lB(r,t.stdin,i):{stdout:``,stderr:`websocat: no WebSocket implementation available in this runtime
3075
- `,exitCode:1}}function pB(){return C(`websocat`,async(e,t)=>fB(e,{stdin:P(t.stdin)}))}function mB(){return C(`__wf_progress`,async()=>({stdout:``,stderr:``,exitCode:0}))}const hB={commands:new Map,collisions:[]};async function gB(e,t){let n=vr(t);return e.scriptCatalog?e.scriptCatalog.getJshIndex(n):e.fs?xr(e.fs,n):hB}async function _B(e){return e.scriptCatalog?e.scriptCatalog.getWorkflowCommands():e.fs?Oi(e.fs):new Map}async function vB(e){return e.scriptCatalog?e.scriptCatalog.getWasmCommands():new Map}function yB(e,t){let n=e.script?`script`:`wasm`;return`${e.glue} (${n}, ${e.pkg}${t?`, ${t}`:``})`}function bB(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 ${yB(r)})`),t){let e=n?[t,...n.shadowedPaths]:[t];for(let t of e)a.push(` (shadowed ${t})`)}return a}function xB(e,{collision:t,wasm:n,wf:r}){let i=[e];for(let e of t?.shadowedPaths??[])i.push(` (shadowed ${e})`);return n&&i.push(` ${yB(n,`shadowed by .jsh`)}`),r&&i.push(` ${r.path} (workflow, shadowed by .jsh)`),i}function SB(e,t,n,r,i){let{jshPath:a,wasm:o,wf:s}=t;if(n.has(e))return{lines:bB(e,t),found:!0};if(a)return{lines:xB(a,t),found:!0};if(o){let e=[yB(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 CB(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
3075
+ `,exitCode:1}}function pB(){return C(`websocat`,async(e,t)=>fB(e,{stdin:P(t.stdin)}))}function mB(){return C(`__wf_progress`,async()=>({stdout:``,stderr:``,exitCode:0}))}const hB={commands:new Map,collisions:[]};async function gB(e,t){let n=xr(t);return e.scriptCatalog?e.scriptCatalog.getJshIndex(n):e.fs?wr(e.fs,n):hB}async function _B(e){return e.scriptCatalog?e.scriptCatalog.getWorkflowCommands():e.fs?ji(e.fs):new Map}async function vB(e){return e.scriptCatalog?e.scriptCatalog.getWasmCommands():new Map}function yB(e,t){let n=e.script?`script`:`wasm`;return`${e.glue} (${n}, ${e.pkg}${t?`, ${t}`:``})`}function bB(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 ${yB(r)})`),t){let e=n?[t,...n.shadowedPaths]:[t];for(let t of e)a.push(` (shadowed ${t})`)}return a}function xB(e,{collision:t,wasm:n,wf:r}){let i=[e];for(let e of t?.shadowedPaths??[])i.push(` (shadowed ${e})`);return n&&i.push(` ${yB(n,`shadowed by .jsh`)}`),r&&i.push(` ${r.path} (workflow, shadowed by .jsh)`),i}function SB(e,t,n,r,i){let{jshPath:a,wasm:o,wf:s}=t;if(n.has(e))return{lines:bB(e,t),found:!0};if(a)return{lines:xB(a,t),found:!0};if(o){let e=[yB(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 CB(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
3076
3076
 
3077
3077
  Usage: which <command> [command...]
3078
3078
 
@@ -3220,7 +3220,7 @@ pass --wait to block and print the full result.`,FB=new Set([`list`,`status`,`st
3220
3220
  `,stderr:``,exitCode:0};if(t[0]===`list`||t[0]===`status`||t[0]===`stop`)return KB(t,n);if(t[0]===`save`)return GB(t,n,e);let r=zB(t);if(r.help)return{stdout:PB+`
3221
3221
  `,stderr:``,exitCode:0};if(r.error)return{stdout:``,stderr:r.error+`
3222
3222
  `,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=DB(i);if(!o.name)return{stdout:``,stderr:`workflow: script must define a meta block with a name (description optional)
3223
- `,exitCode:1};let s=EB().slice(10,22),c=`/shared/workflow-runs/${s}/scratch/`;await n.fs.mkdir(c,{recursive:!0});let l=EB(),u=kB({prelude:TB,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?VB(u,a,l,o,n):HB({code:u,source:i,name:o.name,filename:a,sentinel:l,runId:s,ctx:n,options:e})})}async function VB(e,t,n,r,i){let a;try{a=await gi(e,[`workflow`,t],i,void 0,{filename:t})}catch(e){return NB.error(`workflow run failed`,e),{stdout:``,stderr:`workflow: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return qB(r,a,n)}async function HB(e){let t=IB();if(!t)return{stdout:``,stderr:`workflow: run manager not available
3223
+ `,exitCode:1};let s=EB().slice(10,22),c=`/shared/workflow-runs/${s}/scratch/`;await n.fs.mkdir(c,{recursive:!0});let l=EB(),u=kB({prelude:TB,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?VB(u,a,l,o,n):HB({code:u,source:i,name:o.name,filename:a,sentinel:l,runId:s,ctx:n,options:e})})}async function VB(e,t,n,r,i){let a;try{a=await yi(e,[`workflow`,t],i,void 0,{filename:t})}catch(e){return NB.error(`workflow run failed`,e),{stdout:``,stderr:`workflow: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return qB(r,a,n)}async function HB(e){let t=IB();if(!t)return{stdout:``,stderr:`workflow: run manager not available
3224
3224
  `,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 UB=/^[a-z0-9][a-z0-9-]*$/,WB=`/workspace/.workflows`;async function GB(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]
3225
3225
  `,exitCode:1};if(!UB.test(o))return{stdout:``,stderr:`workflow: invalid name '${o}' (use [a-z0-9][a-z0-9-]*)\n`,exitCode:1};let c=IB()?.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=`${WB}/${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(WB,{recursive:!0}),await t.fs.writeFile(l,c.source);try{await n.syncScriptCommands?.()}catch(e){NB.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 KB(e,t){let n=IB();if(e[0]===`list`){if(!n)return{stdout:``,stderr:`workflow: run manager not available
3226
3226
  `,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(`
@@ -3248,9 +3248,9 @@ pass --wait to block and print the full result.`,FB=new Set([`list`,`status`,`st
3248
3248
  -i output in C include style
3249
3249
  -r reverse: convert a hex dump back to binary (-r -p for plain)
3250
3250
  -h show this help
3251
- `,stderr:``,exitCode:0};let n;try{n=sV(e)}catch(e){return YB(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await lV(t,r,a)}catch{return YB(`${r}: No such file or directory`)}if(n.revert){let e=QB(o),r=n.plain?rV(e):iV(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:QB(r),stderr:``,exitCode:0}}let{data:s,base:c}=dV(n,o),l=uV(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 pV(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=kr(t,o),s=n?`${n}/${o}`:o;a+=await pV(e,i,s,r)}return a}function mV(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3251
+ `,stderr:``,exitCode:0};let n;try{n=sV(e)}catch(e){return YB(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await lV(t,r,a)}catch{return YB(`${r}: No such file or directory`)}if(n.revert){let e=QB(o),r=n.plain?rV(e):iV(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:QB(r),stderr:``,exitCode:0}}let{data:s,base:c}=dV(n,o),l=uV(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 pV(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 pV(e,i,s,r)}return a}function mV(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3252
3252
  `,stderr:``,exitCode:0}}function hV(){return C(`zip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return mV();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
3253
- `,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(/^\.\//,``))||Ar(r);if(i.isDirectory&&!n)return{stdout:``,stderr:`zip: ${e} is a directory (use -r)\n`,exitCode:1};s+=await pV(t,r,a,o)}if(s===0)return{stdout:``,stderr:`zip: nothing to do
3254
- `,exitCode:1};let c=Rt(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function gV(e){let t;return C(`mcp`,async(n,r)=>{if(!t){let{createMcpCommand:n}=await import(`./mcp-command-Bt6e8qII.js`);t=n({fs:e.fs,scriptCatalog:e.scriptCatalog,connectionManager:e.mcpConnectionManager})}return t.execute(n,r)})}function _V(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function vV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[OO(`ipk`,r),OO(`npm`,r),OO(`i`,r),_k(`ipx`,{fs:t,fetch:n}),_k(`npx`,{fs:t,fetch:n}),wb(`di`,{fs:t,fetch:n}),wb(`uv`,{fs:t,fetch:n}),HL({fs:t,fetch:n})]}function yV(e){let t={buildProcessConfig:e.buildProcessConfig};return[`python3`,`python`,`pyodide`].map(e=>ZM(e,t))}function bV(e){let t=e.scriptCatalog;return{buildProcessConfig:e.buildProcessConfig,terminal:e.terminal,gate:e.gateNativeCommand,commands:t&&(()=>t.getWasmCommands()),gitIdentity:e.gitIdentity}}function xV(e={}){let t=[NE({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),oe(),kF(),JP(),VP(e.browserAPI,e.fs),Fj(e.browserAPI),zy(e.browserAPI),RD(e),hV(),vL(),uI(e.fs?{fs:e.fs}:{}),IF(),UF(),BF(),Pv(),pz(bV(e)),aC(bV(e)),fV(),CF(`sqlite3`),CF(`sqllite`),DI(),qI(),Bx(),gv(),QA({buildProcessConfig:e.buildProcessConfig}),QA({buildProcessConfig:e.buildProcessConfig},`jsh`),...yV(e),...vV(e),...e.fs?[iC({fs:e.fs})]:[],...e.fs?[uA({fs:e.fs})]:[],...e.fetch?[WE({fetch:e.fetch,streamFetch:e.streamFetch})]:[],NS(),PS(),KS(),Oz(e.webhook),pB(),Ry(e.crontask),gV(e),tM({fs:e.fs,fetch:e.fetch}),rC(),mF(),Ij(),Lj(`pdftk`),Lj(`pdf`),_v(`biscotto`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),_v(`biscotti`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),qj(`pdftoppm`),qj(`pdftocairo`),Jj(`pdftotext`),Sy(`convert`),Sy(`magick`),CB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),ZI(),pL(),PD(),FD(),mL(),dA(),tN(),rA(),dx(),pj(),fj(),eA(),fP(_V(e)),zp(e.gitCredential),mN({fs:e.fs}),BN(),jv(),Mv(),Nv(`xclip`),Nv(`xsel`),zN(),xC(),c_(),l_(),RA(e.fs),_t(),rj(),u_({getParentJid:e.getParentJid}),yx(),CM({processManager:e.processManager}),rR({processManager:e.processManager}),bk({processManager:e.processManager}),vk({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...f_(),lA(),Kk(),OR(),gD(),xS(),WR({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}),jF(e.sudoCommand),BB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),mB(),qP()];return e.fs&&(Xj(),t.push(...er.map(t=>AE(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let SV=null;function CV(e){SV=e}function wV(e){SV?.(e)}var TV=Yt();const EV={user:`user`,home:sm},DV=new Set([`root`,`nobody`,`nogroup`]),OV=/^[A-Za-z_][A-Za-z0-9_.-]*$/;function kV(e){return{user:OV.test(e.user)&&!DV.has(e.user)?e.user:EV.user,home:e.home.startsWith(`/`)&&!/[:\n]/.test(e.home)?e.home:EV.home}}function AV(e,t){let{user:n,home:r}=kV(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(`
3253
+ `,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 pV(t,r,a,o)}if(s===0)return{stdout:``,stderr:`zip: nothing to do
3254
+ `,exitCode:1};let c=Rt(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function gV(e){let t;return C(`mcp`,async(n,r)=>{if(!t){let{createMcpCommand:n}=await import(`./mcp-command-CROIBc4z.js`);t=n({fs:e.fs,scriptCatalog:e.scriptCatalog,connectionManager:e.mcpConnectionManager})}return t.execute(n,r)})}function _V(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function vV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[OO(`ipk`,r),OO(`npm`,r),OO(`i`,r),_k(`ipx`,{fs:t,fetch:n}),_k(`npx`,{fs:t,fetch:n}),wb(`di`,{fs:t,fetch:n}),wb(`uv`,{fs:t,fetch:n}),HL({fs:t,fetch:n})]}function yV(e){let t={buildProcessConfig:e.buildProcessConfig};return[`python3`,`python`,`pyodide`].map(e=>ZM(e,t))}function bV(e){let t=e.scriptCatalog;return{buildProcessConfig:e.buildProcessConfig,terminal:e.terminal,gate:e.gateNativeCommand,commands:t&&(()=>t.getWasmCommands()),gitIdentity:e.gitIdentity}}function xV(e={}){let t=[NE({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),oe(),kF(),JP(),VP(e.browserAPI,e.fs),Fj(e.browserAPI),zy(e.browserAPI),RD(e),hV(),vL(),uI(e.fs?{fs:e.fs}:{}),IF(),UF(),BF(),Pv(),pz(bV(e)),aC(bV(e)),fV(),CF(`sqlite3`),CF(`sqllite`),DI(),qI(),Bx(),gv(),QA({buildProcessConfig:e.buildProcessConfig}),QA({buildProcessConfig:e.buildProcessConfig},`jsh`),...yV(e),...vV(e),...e.fs?[iC({fs:e.fs})]:[],...e.fs?[uA({fs:e.fs})]:[],...e.fetch?[WE({fetch:e.fetch,streamFetch:e.streamFetch})]:[],NS(),PS(),KS(),Oz(e.webhook),pB(),Ry(e.crontask),gV(e),tM({fs:e.fs,fetch:e.fetch}),rC(),mF(),Ij(),Lj(`pdftk`),Lj(`pdf`),_v(`biscotto`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),_v(`biscotti`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),qj(`pdftoppm`),qj(`pdftocairo`),Jj(`pdftotext`),Sy(`convert`),Sy(`magick`),CB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),ZI(),pL(),PD(),FD(),mL(),dA(),tN(),rA(),dx(),pj(),fj(),eA(),fP(_V(e)),Hp(e.gitCredential),mN({fs:e.fs}),BN(),jv(),Mv(),Nv(`xclip`),Nv(`xsel`),zN(),xC(),c_(),l_(),RA(e.fs),_t(),rj(),u_({getParentJid:e.getParentJid}),yx(),CM({processManager:e.processManager}),rR({processManager:e.processManager}),bk({processManager:e.processManager}),vk({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...f_(),lA(),Kk(),OR(),gD(),xS(),WR({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}),jF(e.sudoCommand),BB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),mB(),qP()];return e.fs&&(Xj(),t.push(...er.map(t=>AE(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let SV=null;function CV(e){SV=e}function wV(e){SV?.(e)}var TV=Yt();const EV={user:`user`,home:_r},DV=new Set([`root`,`nobody`,`nogroup`]),OV=/^[A-Za-z_][A-Za-z0-9_.-]*$/;function kV(e){return{user:OV.test(e.user)&&!DV.has(e.user)?e.user:EV.user,home:e.home.startsWith(`/`)&&!/[:\n]/.test(e.home)?e.home:EV.home}}function AV(e,t){let{user:n,home:r}=kV(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(`
3255
3255
  `);if(e===`/etc/group`)return[`root:x:0:`,`${n}:x:1000:`,`nogroup:x:65534:`,``].join(`
3256
- `)}function jV(e,t=EV){let n=AV(e,t);return n===void 0?void 0:new TextEncoder().encode(n)}function MV(e){return e===`/etc`?[`group`,`passwd`]:[]}function NV(e){return e?.code===`ENOENT`}const PV=Reflect.get(dt,`DefenseInDepthBox`);function FV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function IV(e,t){if(typeof e!=`string`)return e;let n=FV(t);if(n===`binary`||n===`latin1`){let t=Oe(e);if(t)return t}return TV.Buffer.from(e,n)}function LV(e){return e===`/bin`?`/usr/bin`:e.startsWith(`/bin/`)?`/usr${e}`:e}function RV(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 zV(e,t){let n=MV(e).filter(e=>!t.includes(e));return n.length?[...t,...n].sort():t}function BV(e,t){let n=MV(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 VV=class{vfs;registeredCommandsFn=null;identityFn=null;listingStats=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 jV(e,this.identityFn?.()??EV)}isVirtualBinCommand(e){return e.length>0&&!e.includes(`/`)&&this.getVirtualBinCommands().includes(e)}getVirtualBinCommands(){return this.registeredCommandsFn?.()??[]}virtualUsrStat(e){let t=LV(e);if(t===`/usr`||t===`/usr/bin`)return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime: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:RV(e).length,mtime: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=PV?.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=FV(t),a=TV.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=LV(e);if(t.startsWith(`/usr/bin/`)&&this.isVirtualBinCommand(t.slice(9)))return RV(t.slice(9));let n;try{n=await this.vfs.readFile(e,{encoding:`binary`})}catch(t){let n=this.identityFile(e);if(n&&NV(t))return n;throw t}return n instanceof Uint8Array?n:new TextEncoder().encode(n)}identityStat(e,t){let n=this.identityFile(e);if(!(!n||!NV(t)))return{isFile:!0,isDirectory:!1,isSymbolicLink:!1,mode:420,size:n.length,mtime:new Date(0)}}async readFileBytes(e){let t=await this.readFileBuffer(e);return TV.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,IV(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(x(e),IV(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(LV(t)===`/usr/bin`)return this.getVirtualBinCommands().slice().sort();let n=this.vfs.readDirSync(t);if(n!==null)return zV(t,n.map(e=>e.name));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),zV(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(LV(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 BV(t,this.mapFastEntriesToDirents(n));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),BV(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||!NV(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 MV(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 HV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?HV(e.getUnderlyingFS?.()):null}const UV=e(`almost-bash-shell`);function WV(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{[rm]:t,[im]:n,[Kp]:r,[Gt]:i,[Ht]:a,...o}=e;return o}function GV(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 KV=class e{options;bash;vfsAdapter;gitCommands;mountCommands;lastEnv;cwd;umask=18;builtinCommandNames;staticBuiltinNames;allowedCommands;scriptCatalog;initialJshSync=null;ownsScriptCatalog;commandGate;jshRegistry;gnuBashFallback;pendingEnvWrites=new Map;activeShellPid;progress;activeRunSignal;commandAbort=new AbortController;scriptRun=null;scriptRunsActive=0;registryNames=new Set;outputTees=new Map;nextOutputTeeId=0;resolveJshProcessConfig=e=>this.buildJshProcessConfig(am(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:sm,PATH:yr,USER:`user`,SHELL:`/bin/bash`,TMPDIR:`/tmp`,PWD:t,...e.env}}buildSupplementalCommands(e,t,n){return xV({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:Vp},gitIdentity:()=>this.gitCommands.identity(),mcpConnectionManager:e.mcpConnectionManager})}constructor(t){this.options=t,this.vfsAdapter=new VV(t.fs),this.progress=new pm({scrubLabel:t.scrubProgressLabel}),this.allowedCommands=e.buildAllowedCommandSet(t),this.commandGate=new Yp({getSudo:()=>this.options.sudo,fs:t.fs});let n=t.cwd??`/`,r=e.buildInitialEnv(t,n);this.gitCommands=new hp({fs:t.fs,authorName:r.GIT_AUTHOR_NAME??`User`,authorEmail:r.GIT_AUTHOR_EMAIL??`user@example.com`,ensureFreshGithubToken:Bp}),this.mountCommands=new Hs({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:Qm});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=HV(i)??HV(a);this.scriptCatalog=t.scriptCatalog??new Ai({jshFs:i,bshFs:a,watcher:o}),this.ownsScriptCatalog=!t.scriptCatalog,o&&o.watch(`/`,e=>e.endsWith(`.jsh`)||e.endsWith(`.workflow.js`)||_r(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=[...pt(),...ft()],p=this.allowedCommands?f.filter(e=>this.isCommandAllowed(e)):void 0;if(this.bash=new mt({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:Zp(t.isScoop?.()??!1,t.executionLimits)}),this.bash.registerTransformPlugin(oh),this.allowedCommands!==null){let e=this.bash;for(let t of ft())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??[...pt(),...ft()];this.builtinCommandNames=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 om({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 pi(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 cm(e);this.lastEnv.HOME=t,this.options.env?.USER||(this.lastEnv.USER=lm(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){UV.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(wV(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=Jp(e),s={env:{...this.lastEnv,...n===void 0?{}:{[rm]:String(n)},...i===void 0?{}:{[im]:i},...o?{[Kp]:o}:{}},cwd:this.cwd,umask:this.umask,signal:t,...r===``?{}:{stdin:r,stdinKind:`bytes`}},c=this.lastEnv.PATH,l=GV([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=WV(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-CSwess-H.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()||kp.has(e))return null;let r=await this.commandGate.gateCommandDispatch(e,t,n[Kp]);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(im),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(im);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(kp.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{Ba as _,AB as a,Aa as b,Ns as c,Ss as d,bs as f,Ia as g,Go as h,EB as i,Es as l,es as m,VV as n,wB as o,ts as p,CV as r,sm as s,KV as t,Cs as u,za as v,zo as y};
3256
+ `)}function jV(e,t=EV){let n=AV(e,t);return n===void 0?void 0:new TextEncoder().encode(n)}function MV(e){return e===`/etc`?[`group`,`passwd`]:[]}function NV(e){return e?.code===`ENOENT`}const PV=Reflect.get(dt,`DefenseInDepthBox`);function FV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function IV(e,t){if(typeof e!=`string`)return e;let n=FV(t);if(n===`binary`||n===`latin1`){let t=Oe(e);if(t)return t}return TV.Buffer.from(e,n)}function LV(e){return e===`/bin`?`/usr/bin`:e.startsWith(`/bin/`)?`/usr${e}`:e}function RV(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 zV(e,t){let n=MV(e).filter(e=>!t.includes(e));return n.length?[...t,...n].sort():t}function BV(e,t){let n=MV(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 VV=class{vfs;registeredCommandsFn=null;identityFn=null;listingStats=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 jV(e,this.identityFn?.()??EV)}isVirtualBinCommand(e){return e.length>0&&!e.includes(`/`)&&this.getVirtualBinCommands().includes(e)}getVirtualBinCommands(){return this.registeredCommandsFn?.()??[]}virtualUsrStat(e){let t=LV(e);if(t===`/usr`||t===`/usr/bin`)return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime: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:RV(e).length,mtime: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=PV?.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=FV(t),a=TV.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=LV(e);if(t.startsWith(`/usr/bin/`)&&this.isVirtualBinCommand(t.slice(9)))return RV(t.slice(9));let n;try{n=await this.vfs.readFile(e,{encoding:`binary`})}catch(t){let n=this.identityFile(e);if(n&&NV(t))return n;throw t}return n instanceof Uint8Array?n:new TextEncoder().encode(n)}identityStat(e,t){let n=this.identityFile(e);if(!(!n||!NV(t)))return{isFile:!0,isDirectory:!1,isSymbolicLink:!1,mode:420,size:n.length,mtime:new Date(0)}}async readFileBytes(e){let t=await this.readFileBuffer(e);return TV.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,IV(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(x(e),IV(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(LV(t)===`/usr/bin`)return this.getVirtualBinCommands().slice().sort();let n=this.vfs.readDirSync(t);if(n!==null)return zV(t,n.map(e=>e.name));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),zV(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(LV(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 BV(t,this.mapFastEntriesToDirents(n));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),BV(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||!NV(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 MV(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 HV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?HV(e.getUnderlyingFS?.()):null}const UV=e(`almost-bash-shell`);function WV(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,[Yp]:r,[Gt]:i,[Ht]:a,...o}=e;return o}function GV(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 KV=class e{options;bash;vfsAdapter;gitCommands;mountCommands;lastEnv;cwd;umask=18;builtinCommandNames;staticBuiltinNames;allowedCommands;scriptCatalog;initialJshSync=null;ownsScriptCatalog;commandGate;jshRegistry;gnuBashFallback;pendingEnvWrites=new Map;activeShellPid;progress;activeRunSignal;commandAbort=new AbortController;scriptRun=null;scriptRunsActive=0;registryNames=new Set;outputTees=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 xV({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:Wp},gitIdentity:()=>this.gitCommands.identity(),mcpConnectionManager:e.mcpConnectionManager})}constructor(t){this.options=t,this.vfsAdapter=new VV(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:Up}),this.mountCommands=new Gs({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:Qm});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=HV(i)??HV(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=[...pt(),...ft()],p=this.allowedCommands?f.filter(e=>this.isCommandAllowed(e)):void 0;if(this.bash=new mt({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 ft())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??[...pt(),...ft()];this.builtinCommandNames=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){UV.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(wV(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=Zp(e),s={env:{...this.lastEnv,...n===void 0?{}:{[om]:String(n)},...i===void 0?{}:{[sm]:i},...o?{[Yp]:o}:{}},cwd:this.cwd,umask:this.umask,signal:t,...r===``?{}:{stdin:r,stdinKind:`bytes`}},c=this.lastEnv.PATH,l=GV([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=WV(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-CSwess-H.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()||Mp.has(e))return null;let r=await this.commandGate.gateCommandDispatch(e,t,n[Yp]);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(Mp.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 _,AB as a,ks as c,Cs as d,is as f,Ua as g,za as h,EB as i,Es as l,Jo as m,VV as n,wB as o,rs as p,CV as r,Is as s,KV as t,Ts as u,Ho as v,Na as y};