sliccy 6.234.2 → 6.235.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/ui/.vite/manifest.json +177 -177
  2. package/dist/ui/assets/{SKILL-BcBnRJhU.js → SKILL-Btc2ZGeK.js} +1 -1
  3. package/dist/ui/assets/SKILL-Dyvlv3-H.js +1 -0
  4. package/dist/ui/assets/{account-store-B89MQ7Me.js → account-store-BGMKtG5Y.js} +1 -1
  5. package/dist/ui/assets/{account-store-BXz6ZFZh.js → account-store-Dp3-Xn7L.js} +1 -1
  6. package/dist/ui/assets/{adobe-DIbRzVFr.js → adobe-BAk2XFoI.js} +1 -1
  7. package/dist/ui/assets/{adobe-BNVxZtfN.js → adobe-Bjzb-4li.js} +1 -1
  8. package/dist/ui/assets/agent-command-impl-BQZK9ujN.js +7 -0
  9. package/dist/ui/assets/{agent-help-B-gfDDn0.js → agent-help-BWtxl_zJ.js} +39 -0
  10. package/dist/ui/assets/{agent-panels-BtNjX3Iu.js → agent-panels-CKLY91Ka.js} +1 -1
  11. package/dist/ui/assets/{almost-bash-shell-headless-C84faNVw.js → almost-bash-shell-headless-Di8IjgQ4.js} +514 -513
  12. package/dist/ui/assets/{apply-layout-CL42RRRY.js → apply-layout-CS-toayl.js} +1 -1
  13. package/dist/ui/assets/{azure-openai-CYrp6e51.js → azure-openai-BPzPHwaS.js} +1 -1
  14. package/dist/ui/assets/{azure-openai-Bw_ryG1R.js → azure-openai-wdTg5Wbz.js} +1 -1
  15. package/dist/ui/assets/{cdp-BKI1JXvP.js → cdp-DDvgfoMG.js} +1 -1
  16. package/dist/ui/assets/{cerebras-oijJ50j1.js → cerebras-CfXNiSS5.js} +1 -1
  17. package/dist/ui/assets/{cerebras-DMu4SzZq.js → cerebras-dGdYGjQw.js} +1 -1
  18. package/dist/ui/assets/{composer-speech-CPwX-84w.js → composer-speech-BdRosU9N.js} +1 -1
  19. package/dist/ui/assets/{connect-surface-CdGGwWaQ.js → connect-surface-BlQdWnMB.js} +1 -1
  20. package/dist/ui/assets/{cost-command-BUgEVZCe.js → cost-command-05RLVzlt.js} +5 -0
  21. package/dist/ui/assets/{directed-approval-D5pWaIEI.js → directed-approval-Bd7qek3T.js} +1 -1
  22. package/dist/ui/assets/{emscripten-vfs-hook-C8j2YqYo.js → emscripten-vfs-hook-jCFXNkwf.js} +1 -1
  23. package/dist/ui/assets/{frozen-archive-writer-ClCZhviP.js → frozen-archive-writer-C3tdnTfy.js} +1 -1
  24. package/dist/ui/assets/{gelatiere-unit-B_ypTSv1.js → gelatiere-unit-DcStO6Pk.js} +1 -1
  25. package/dist/ui/assets/{github-BYAzMsMt.js → github-BVvS9yXo.js} +1 -1
  26. package/dist/ui/assets/{github-BXOZZRCn.js → github-Bv7TQyhc.js} +1 -1
  27. package/dist/ui/assets/{github-copilot-BotqkEF-.js → github-copilot-COXEglZJ.js} +1 -1
  28. package/dist/ui/assets/{github-copilot-C2vPEEMD.js → github-copilot-DtuKtM8B.js} +1 -1
  29. package/dist/ui/assets/{hear-DI9HbHzF.js → hear-CraiWDpz.js} +1 -1
  30. package/dist/ui/assets/{js-realm-worker-0A397O1r.js → js-realm-worker-9AElT3xJ.js} +9 -7
  31. package/dist/ui/assets/{jsh-executor-P6raP_yT.js → jsh-executor-D8okn0pR.js} +2 -2
  32. package/dist/ui/assets/jsh-runtime-extensions-pb2O5sX7.js +1 -0
  33. package/dist/ui/assets/{kernel-worker-CsBgMxu3.js → kernel-worker-DefIX_AF.js} +76 -74
  34. package/dist/ui/assets/{lick-ws-bridge-DZftnR2M.js → lick-ws-bridge-DIhQXDNu.js} +1 -1
  35. package/dist/ui/assets/{lick-ws-bridge-DzcpLAp7.js → lick-ws-bridge-DqvDNYdO.js} +1 -1
  36. package/dist/ui/assets/{live-session-curation-SAu12XT0.js → live-session-curation-xBvullFQ.js} +1 -1
  37. package/dist/ui/assets/{live-session-snapshot-BDwg0Tlk.js → live-session-snapshot-BBO9svAu.js} +1 -1
  38. package/dist/ui/assets/{local-llm-C8XsApDI.js → local-llm-B4YA09uv.js} +1 -1
  39. package/dist/ui/assets/{local-llm-D3YpFMfx.js → local-llm-DvCg__dx.js} +1 -1
  40. package/dist/ui/assets/{main-cherry-C9cG558r.js → main-cherry-CfObHKlY.js} +1 -1
  41. package/dist/ui/assets/{main-CCA3V0ON.js → main-v-uHzakV.js} +3 -3
  42. package/dist/ui/assets/{mcp-command-CP16m6me.js → mcp-command-CQkRyZv1.js} +9 -9
  43. package/dist/ui/assets/{memory-curation-seam-DWY1vBcQ.js → memory-curation-seam-CNje6hJ8.js} +1 -1
  44. package/dist/ui/assets/{memory-health-CVTso24P.js → memory-health-C_wI3AOx.js} +1 -1
  45. package/dist/ui/assets/{memory-write-execute-dtfCDQsE.js → memory-write-execute-D052wKe_.js} +1 -1
  46. package/dist/ui/assets/{merge-folded-cost-into-frozen-BHSCGyqy.js → merge-folded-cost-into-frozen-f-UEXAfF.js} +1 -1
  47. package/dist/ui/assets/{new-session-DFNOHhAo.js → new-session-BT6tsmB6.js} +2 -2
  48. package/dist/ui/assets/{oauth-bootstrap-DZI6iVTw.js → oauth-bootstrap-nVNcu8ih.js} +2 -2
  49. package/dist/ui/assets/{onboarding-orchestrator-B1gI1wq2.js → onboarding-orchestrator-aAGs543b.js} +1 -1
  50. package/dist/ui/assets/{openai-codex-gx5UzFOb.js → openai-codex-BrF7dQqU.js} +1 -1
  51. package/dist/ui/assets/{openai-codex-BpEo8zt_.js → openai-codex-DIt1eAL_.js} +1 -1
  52. package/dist/ui/assets/{openrouter-DyETIhiO.js → openrouter-DxYCIi6r.js} +1 -1
  53. package/dist/ui/assets/{openrouter-D_srHh9D.js → openrouter-DzDP8Nsr.js} +1 -1
  54. package/dist/ui/assets/{openrouter-free-CN9R-pFM.js → openrouter-free-B1NcCkBD.js} +1 -1
  55. package/dist/ui/assets/{openrouter-free-Bp2tU9FR.js → openrouter-free-BCfkQSXH.js} +1 -1
  56. package/dist/ui/assets/{openrouter-oauth-I5LUYqtH.js → openrouter-oauth-CDUTjZL0.js} +1 -1
  57. package/dist/ui/assets/{openrouter-oauth-Wr0i5Fiz.js → openrouter-oauth-CWrCuOZo.js} +1 -1
  58. package/dist/ui/assets/{panel-rpc-handlers-Dw1XhS-W.js → panel-rpc-handlers-CFeJoi6l.js} +2 -2
  59. package/dist/ui/assets/{panelize-shell-J_kHfXn-.js → panelize-shell-Dsl0LtcU.js} +1 -1
  60. package/dist/ui/assets/{pi-edit-execution-Ba_D9vY1.js → pi-edit-execution-D9KvDmkY.js} +1 -1
  61. package/dist/ui/assets/{provider-CT6lmTmO.js → provider-BeHuaFUs.js} +1 -1
  62. package/dist/ui/assets/{provider-eTbuK6t4.js → provider-Dp-AUJYR.js} +1 -1
  63. package/dist/ui/assets/{provider-settings-CGcZJy3v.js → provider-settings-gkKLdxqj.js} +1 -1
  64. package/dist/ui/assets/provider-store-access-BpYc7sxi.js +1 -0
  65. package/dist/ui/assets/provider-store-access-DmCK1m2H.js +1 -0
  66. package/dist/ui/assets/{providers-BWWdnCv2.js → providers-Cu-JTUhF.js} +1 -1
  67. package/dist/ui/assets/{providers-DN5CpwM4.js → providers-g8bqtt3g.js} +2 -2
  68. package/dist/ui/assets/{quick-llm-B_FBAVnD.js → quick-llm-BiIGx8uX.js} +1 -1
  69. package/dist/ui/assets/{realm-inprocess-CklkqHBO.js → realm-inprocess-CvVF0qXA.js} +6 -4
  70. package/dist/ui/assets/{realm-unhandled-rejections-BJVGg28T.js → realm-unhandled-rejections-CCFHXO-I.js} +1 -1
  71. package/dist/ui/assets/{realm-unhandled-rejections-BmnkdM7-.js → realm-unhandled-rejections-DuMO2BTT.js} +1 -1
  72. package/dist/ui/assets/{recovery-screen-r6qGFDLy.js → recovery-screen-MOiv9sFc.js} +1 -1
  73. package/dist/ui/assets/{remote-terminal-view-7SVEwYar.js → remote-terminal-view-CasqnGQw.js} +2 -2
  74. package/dist/ui/assets/{restore-DB4t9f2x.js → restore-30lG0Rle.js} +1 -1
  75. package/dist/ui/assets/{run-DpSfWot-.js → run-BXY4xm9Y.js} +2 -2
  76. package/dist/ui/assets/{run-CCUKvvPv.js → run-CTXs0tgt.js} +2 -2
  77. package/dist/ui/assets/{run-CGYW74BK.js → run-CogNNkBe.js} +1 -1
  78. package/dist/ui/assets/{run-DtwP8Z1e.js → run-D5V1rBmu.js} +1 -1
  79. package/dist/ui/assets/{session-command-memory-2wvzOG50.js → session-command-memory-DUB-rTlJ.js} +2 -2
  80. package/dist/ui/assets/{session-jsonl-B8gD6pZp.js → session-jsonl-By4E4Ifw.js} +1 -1
  81. package/dist/ui/assets/{session-jsonl-C0eT3g_O.js → session-jsonl-_6flcE_u.js} +1 -1
  82. package/dist/ui/assets/{session-search-index-Bw64dUdP.js → session-search-index-CHeeecsJ.js} +1 -1
  83. package/dist/ui/assets/{setup-feature-flags-remote-B0JEOr5f.js → setup-feature-flags-remote-CL50wmO5.js} +1 -1
  84. package/dist/ui/assets/{setup-model-catalog-Ch5t-zZI.js → setup-model-catalog-C1iT0LX3.js} +1 -1
  85. package/dist/ui/assets/{silent-renew-backoff-BAtE5l_Z.js → silent-renew-backoff-BMztJHje.js} +1 -1
  86. package/dist/ui/assets/slicc-version-65AwHbmH.js +1 -0
  87. package/dist/ui/assets/{soundscape-vLyu8uzw.js → soundscape-Bqt7hhbo.js} +1 -1
  88. package/dist/ui/assets/{speak-BUcAR0ZB.js → speak-Bt6rUel5.js} +1 -1
  89. package/dist/ui/assets/{sprinkle-manager-BkrX-0Pb.js → sprinkle-manager-BO_EiUuv.js} +1 -1
  90. package/dist/ui/assets/{sprinkle-renderer-ZIQYuRcN.js → sprinkle-renderer-B-5D8jG7.js} +1 -1
  91. package/dist/ui/assets/{sudo-I-a8kg43.js → sudo-BXYhcyYn.js} +1 -1
  92. package/dist/ui/assets/{supervisor-DWP52nCg.js → supervisor-D9GsUUZz.js} +1 -1
  93. package/dist/ui/assets/{sync-dialog-DYuqB9Lu.js → sync-dialog-CQAslMYT.js} +1 -1
  94. package/dist/ui/assets/{transformers-env-DbjuwG_9.js → transformers-env-CfJzmxee.js} +1 -1
  95. package/dist/ui/assets/{tray-leader-CCNQOH9C.js → tray-leader-DDtu7vPC.js} +1 -1
  96. package/dist/ui/assets/{tray-leave-runtime-c3qFkoS8.js → tray-leave-runtime-18EOUa0y.js} +1 -1
  97. package/dist/ui/assets/{tray-sidecar-wKixyWJ4.js → tray-sidecar-Czj8OIo2.js} +1 -1
  98. package/dist/ui/assets/{upgrade-detection-GsJZdqlG.js → upgrade-detection-DFrbhD5b.js} +1 -1
  99. package/dist/ui/assets/{voice-reply-DsYDHs69.js → voice-reply-_4YMaQsn.js} +1 -1
  100. package/dist/ui/assets/{wc-attach-BVezjUnL.js → wc-attach-Dq6xz6VP.js} +2 -2
  101. package/dist/ui/assets/{wc-browser-CUlOCHE2.js → wc-browser-DarLxgVl.js} +1 -1
  102. package/dist/ui/assets/{wc-computers-Bir1XsVN.js → wc-computers-Dgt_14kH.js} +1 -1
  103. package/dist/ui/assets/{wc-detached-D9SVxLko.js → wc-detached-BIwL6lvs.js} +1 -1
  104. package/dist/ui/assets/{wc-extension-kZR1QlCq.js → wc-extension-kAXUuhKY.js} +2 -2
  105. package/dist/ui/assets/{wc-follower-bZrkGbcr.js → wc-follower-BxZs23i2.js} +3 -3
  106. package/dist/ui/assets/{wc-follower-oauth-MyuhwC3y.js → wc-follower-oauth-SwN-s0h6.js} +1 -1
  107. package/dist/ui/assets/{wc-gelatiere-7UUwz3A6.js → wc-gelatiere-DJiVHjQS.js} +1 -1
  108. package/dist/ui/assets/{wc-live-DaAEDDJl.js → wc-live-CWROGoQx.js} +5 -5
  109. package/dist/ui/assets/{wc-nav-C-HOv75d.js → wc-nav-CcrWWixX.js} +2 -2
  110. package/dist/ui/assets/{wc-onboarding-DMIVj7fy.js → wc-onboarding-BEnUTFQr.js} +2 -2
  111. package/dist/ui/assets/{wc-permissions-1T9jRzTT.js → wc-permissions-DsjjTDGc.js} +2 -2
  112. package/dist/ui/assets/{wc-placeholder-QPYKjI3m.js → wc-placeholder-DJSoiPYz.js} +3 -3
  113. package/dist/ui/assets/{wc-secret-request-DYWBWDa9.js → wc-secret-request-CASq9SdH.js} +1 -1
  114. package/dist/ui/assets/{wc-settings-BYGHXGHu.js → wc-settings-DzZ3vKZK.js} +3 -3
  115. package/dist/ui/assets/{wc-shell-CHKiGJ-8.js → wc-shell-BW5oZjMk.js} +3 -3
  116. package/dist/ui/assets/{wc-shortcut-config-CzEcbhZJ.js → wc-shortcut-config-CxjODcHO.js} +1 -1
  117. package/dist/ui/assets/{wc-sprinkles-CP5YwHx0.js → wc-sprinkles-BGacrZ0g.js} +2 -2
  118. package/dist/ui/assets/{wc-transcript-export-vCxTrrQa.js → wc-transcript-export-D6yGycOu.js} +2 -2
  119. package/dist/ui/assets/{wc-tray-BYX4KK6K.js → wc-tray-CE-PDIL5.js} +4 -4
  120. package/dist/ui/assets/welcome-detection-BOdQEeMJ.js +1 -0
  121. package/dist/ui/assets/{whisper-session-Bl9hvJ5_.js → whisper-session-D9dh1Wpf.js} +2 -2
  122. package/dist/ui/assets/{xai-grok-DArMCgVP.js → xai-grok-DFPGp-w8.js} +1 -1
  123. package/dist/ui/assets/{xai-grok-D_nGI-2s.js → xai-grok-DZo25qHM.js} +1 -1
  124. package/dist/ui/index.html +3 -3
  125. package/dist/ui/packages/webapp/index.html +3 -3
  126. package/package.json +1 -1
  127. package/dist/ui/assets/SKILL-Dk6kide7.js +0 -1
  128. package/dist/ui/assets/jsh-runtime-extensions-vA6JAYXY.js +0 -1
  129. package/dist/ui/assets/provider-store-access-B-sq52Ov.js +0 -1
  130. package/dist/ui/assets/provider-store-access-gJH6TPH8.js +0 -1
  131. package/dist/ui/assets/slicc-version-VGI-VLHB.js +0 -1
  132. package/dist/ui/assets/welcome-detection-BDF7lypt.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-B89MQ7Me.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"./runtime-env-DadgceZk.js";import{t as te}from"./slugify-BYJ6QVAt.js";import{i as ne,n as re,r as ie,t as ae}from"./host-command-CwRNpVLr.js";import{a as oe,i as se,n as ce,r as le,t as ue}from"./snapshot-D6YGbggk.js";import{n as de,t as y}from"./panel-rpc-accessor-B4BfPLSo.js";import{a as fe,c as pe,n as me,o as he,s as ge,t as _e}from"./feature-flags-QlgHaQc1.js";import{t as ve}from"./providers-BWWdnCv2.js";import{r as ye}from"./binary-cache-bSOhqXB1.js";import{i as be,n as xe,r as Se}from"./fetch-body-CuwTaJC_.js";import{s as Ce,t as we}from"./api-endpoint-D8lUKmPu.js";import{t as Te}from"./compat-nGhSz-U1.js";import"./core-C1m4D34S.js";import{n as Ee,t as De}from"./mime-types-D7IV6i7k.js";import{n as Oe,t as ke}from"./float-topology-COIC4j_U.js";import{t as Ae}from"./secrets-bridge-client-GOCzDscb.js";import{a as je,i as Me,n as Ne,r as Pe}from"./tool-ui-DRnUkp2g.js";import{a as Fe,i as Ie,n as b,t as x}from"./path-utils-DNJG-zQf.js";import{n as Le,r as Re,t as ze}from"./merge-file-core-VJlzucJY.js";import{r as Be}from"./workspace-mode-D0kUKBVS.js";import{n as Ve,t as He}from"./thinking-level-5x0UAu9N.js";import{n as Ue,t as We}from"./types-D8gIX-W-.js";import{i as Ge}from"./mount-index-CQfmUPuZ.js";import{a as Ke,i as qe,n as Je,o as Ye,s as Xe,t as Ze}from"./signed-fetch-DeDG40wV.js";import{o as Qe}from"./mount-table-store-DrF_Ifaz.js";import{t as $e}from"./remote-cache-UwMD8EkX.js";import{n as et}from"./fs-CKSBDyCr.js";import{a as tt}from"./tray-leader-status-CpkFr6n7.js";import{n as nt,t as rt}from"./slicc-version-VGI-VLHB.js";import{a as it,i as at,o as ot,r as S,t as st}from"./browser-Jlk38XAj.js";import{t as C}from"./subcommand-flags-BZi7j78Q.js";import{n as ct,r as lt,t as w}from"./subcommand-help-CgO7wRS5.js";import{n as ut}from"./cost-command-BUgEVZCe.js";import{d as dt,g as ft,i as pt,n as mt,o as ht}from"./sudoers-BdBYQPUn.js";import{t as gt}from"./sudo-refusal-DVwTXFRE.js";import{n as _t}from"./types-Dj5TU-Qg.js";import{a as vt,c as yt,i as bt,l as xt,n as St,o as Ct,r as wt,t as Tt}from"./types-JfhqX7lD.js";import{n as T,t as Et}from"./boundary-DjgipyWT.js";import"./rest-paths-Dia19u9P.js";import{t as Dt}from"./html-B_Hg2WOy.js";import{n as Ot}from"./llm-session-id-BZyXP_j2.js";import{t as kt}from"./src-CUSndb9K.js";import{i as At,o as jt}from"./browser-DuyhpHbR.js";import{a as Mt,c as Nt,n as Pt,o as Ft,r as It,s as Lt,t as Rt}from"./reason-l_1I9RdR.js";import{i as zt,r as Bt,t as Vt}from"./mount-picker-popup-BMils9JY.js";import{t as Ht}from"./buffer-B5d1xHaH.js";import"./buffer-polyfill-BwLbCySD.js";import{A as Ut,B as E,C as Wt,D,E as Gt,F as Kt,G as qt,H as O,I as k,J as Jt,K as Yt,L as Xt,M as Zt,N as Qt,O as $t,P as en,R as tn,S as nn,T as rn,U as an,V as on,W as sn,Y as cn,_ as ln,a as un,b as dn,c as fn,d as pn,f as mn,g as hn,h as gn,i as _n,j as vn,k as yn,l as bn,m as xn,n as Sn,o as Cn,p as A,q as wn,r as Tn,s as En,t as Dn,u as On,v as kn,w as An,x as jn,y as Mn,z as Nn}from"./isomorphic-git-r9mnHMnp.js";import"./global-db-DJXlpNui.js";import{S as Pn,_ as Fn,a as In,b as Ln,c as Rn,d as zn,f as Bn,g as Vn,h as Hn,i as Un,l as Wn,n as Gn,o as Kn,p as qn,r as Jn,s as Yn,t as Xn,u as Zn,v as j,x as M,y as Qn}from"./state-Tykh4Vum.js";import{a as $n,i as er,r as tr,t as nr}from"./git-config-Bdgu8kD2.js";import{i as rr,m as ir,r as ar}from"./stdio-tty-CA5sZxWL.js";import{i as or,r as sr}from"./global-prefix-DqCuANmV.js";import{t as cr}from"./wasm-programs-Bd5YaoqY.js";import{a as lr,n as ur,o as dr,r as fr,s as pr}from"./jsh-discovery-CnvNKojr.js";import{C as mr,a as hr,b as gr,c as _r,d as vr,f as yr,h as br,i as xr,l as Sr,m as Cr,n as wr,o as Tr,p as Er,r as Dr,s as Or,t as N,u as kr,v as Ar,y as jr}from"./shared-D-ZRFYou.js";import{_ as Mr,a as Nr,b as Pr,d as Fr,f as Ir,g as Lr,h as Rr,i as zr,l as Br,m as Vr,p as Hr,r as Ur,s as Wr,u as Gr,v as Kr,x as qr,y as Jr}from"./require-guards-DnafTLJr.js";import{_ as Yr,a as Xr,b as Zr,c as Qr,d as $r,f as ei,g as ti,h as ni,l as ri,m as ii,n as ai,p as oi,s as si,t as ci,u as li,v as ui,x as di,y as fi}from"./jsh-executor-P6raP_yT.js";import{n as pi,t as mi}from"./esbuild-wasm-DeTghvWH.js";import{n as hi}from"./wasm-compiler-Ct7QZURL.js";import{a as gi,o as _i,s as vi,t as yi}from"./usb-device-registry-DFzxaOky.js";import{a as P,i as bi,r as xi,t as Si}from"./just-bash-compat-B-SPHuh_.js";import{i as Ci,r as wi,t as Ti}from"./script-catalog-WaCMvXY3.js";import{a as Ei,c as Di,o as Oi,s as ki,t as Ai}from"./types-Dzr0qYl3.js";import{a as ji,c as Mi,d as Ni,f as Pi,n as Fi,r as Ii,u as Li}from"./github-zip-CUIsX5nN.js";import{i as Ri,t as zi}from"./github-auth-CSG4xZUZ.js";import{a as Bi,i as Vi,o as Hi,r as Ui,t as Wi}from"./provenance-DdmsQ3Nr.js";import{a as Gi,c as Ki,i as qi,n as Ji,o as Yi,r as Xi,s as Zi}from"./github-install-HX3c8n0G.js";import{n as Qi,t as $i}from"./magick-wasm-BbnwhVj1.js";import{i as ea,n as ta,r as na,t as ra}from"./pdf-raster-BWk6ezTX.js";import{n as ia}from"./lick-target-env-8JxfVcIV.js";import{t as aa}from"./tmpdir-env-ate4iNcK.js";import{n as oa,t as sa}from"./hf-defaults-BwJdGLgk.js";import{t as ca}from"./ffmpeg-wasm-sx-3yVAE.js";import{t as la}from"./local-llm-C8XsApDI.js";import{i as ua,n as da,r as fa,t as pa}from"./tar-BWIPCxI2.js";import{a as ma,c as ha,i as ga,o as _a,r as va,s as ya}from"./v86-vm-DCm7zA2r.js";import{n as ba,r as xa}from"./lick-urls-CgPiVwD-.js";let Sa=null;function Ca(e){Sa=e!==null&&Number.isFinite(e)&&e>0?e:null}function wa(){if(Sa!==null)return Sa;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const Ta=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function Ea(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=Ta.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 Da(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 Oa(e,t){return e.some(e=>Da(e,t))}const ka=`slicc-transcript`,Aa=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],ja=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 Ma(e){return ja.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Na=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const Pa=new Set(Aa),Fa=/^[0-9a-fA-F]{64}$/,Ia=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;function F(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function La(e){return typeof e==`string`&&Fa.test(e)}function Ra(e){return Ia.test(e)&&Number.isFinite(Date.parse(e))}function za(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 Ba(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:za(n,t)}:{ok:!0}}function Va(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 Ha(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 Ua(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Ba(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?Ha(e,t):n}function Wa(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 Ga(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 Ka(e,t){let n=Wa(e,t);if(!n.ok)return n;let r=e.cost;return F(r)?Ga(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function qa(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`?Ra(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 Ja(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 Ya(e,t){let n=e.usage;return n===void 0?{ok:!0}:F(n)?Ka(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function Xa(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Ba(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=Ja(e,t);if(!n.ok)return n}let r=qa(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=Va(i,Ua,`${t}.content`);return a.ok?Ya(e,t):a}function Za(e,t){if(!F(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=Ba(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Va(r,Xa,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function Qa(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 $a(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`}:La(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 eo=[`attachment-file-missing`,`attachment-association-unavailable`];function to(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?Ba(e.missingReason,eo,`${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 no(e,t){return e.present?$a(e,t):to(e,t)}function ro(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Qa(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=Ba(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?no(e,t):r}function io(e,t){let n=Ba(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 ao(e,t){if(!F(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=Ba(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return F(r)?io(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function oo(e,t){return F(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 so(e,t){return typeof e!=`string`||!Pa.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function co(e){if(!F(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 F(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 lo(e){if(!F(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=Ba(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Va(e.missing,so,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function uo(e){if(!F(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=Ba(e.state,[`active`,`frozen`],`session.state`);return t.ok?lo(e.completeness):t}function fo(e){if(!F(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(!F(e.redactionCounts))return{ok:!1,error:`privacy.redactionCounts must be a non-null object`};let n=e.redactions;return Array.isArray(n)?Va(n,ao,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function po(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Va(t,Za,`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=Va(r,oo,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Va(a,ro,`attachments`):{ok:!1,error:`attachments must be an array`}}function mo(e){let t=new Set,n=new Set;for(let r of e){if(!F(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(!(!F(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 ho(e){for(let t of e){if(!F(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(!F(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 go(e){let t=[];for(let n of e){if(!F(n))continue;let e=n.content;if(Array.isArray(e))for(let n of e)F(n)&&n.type===`tool-call`&&typeof n.id==`string`&&t.push(n.id)}return t}function _o(e){let t=new Set;for(let n of e){if(!F(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of go(e))t.add(n)}return t}function vo(e,t){for(let n of e){if(!F(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of e){if(!F(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 yo(e){return vo(e,_o(e))}function bo(e,t){for(let n of e){if(!F(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 xo(e,t){for(let n of e){if(!F(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of e){if(!F(n))continue;let e=n.content;if(!Array.isArray(e))continue;let r=bo(e,t);if(!r.ok)return r}}return{ok:!0}}function So(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return xo(e,n)}function Co(e){let t=new Map;for(let n of e){if(!F(n)||typeof n.id!=`string`)continue;let e=new Set,r=n.messages;if(Array.isArray(r))for(let t of r)F(t)&&typeof t.id==`string`&&e.add(t.id);t.set(n.id,e)}return t}function wo(e,t){let n=Co(t);for(let t=0;t<e.length;t++){let r=e[t];if(!F(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 To(e){let t=new Map;for(let n of e){if(!F(n)||typeof n.id!=`string`)continue;let e=Array.isArray(n.messages)?n.messages:[];t.set(n.id,new Set(go(e)))}return t}function Eo(e,t,n){for(let r=0;r<e.length;r++){let i=e[r];if(!F(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 Do(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return Eo(e,n,To(t))}function Oo(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 ko(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);for(let t=0;t<e.length;t++){let r=e[t];if(!F(r))continue;let i=r.target;if(!F(i))continue;let a=Oo(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function Ao(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=mo(t);if(!o.ok)return o;let s=ho(t);if(!s.ok)return s;let c=yo(t);if(!c.ok)return c;let l=So(t,n);if(!l.ok)return l;let u=wo(n,t);if(!u.ok)return u;let d=Do(r,t);return d.ok?ko(a,n):d}function jo(e){let t=po(e);return t.ok?Ao(e):t}function Mo(e){if(!F(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=co(e.export);if(!t.ok)return t;let n=uo(e.session);if(!n.ok)return n;let r=fo(e.privacy);return r.ok?jo(e):r}async function No(e,t,n){let r=await n({method:`GET`,path:`/${e}/sites/${t}/config.json`,origin:Ye});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:Po(a),sourceUrl:a}}function Po(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const Fo=`slicc-sprinkle-routes`;function Io(){try{let e=localStorage.getItem(Fo);return e?JSON.parse(e):{}}catch{return{}}}function Lo(e){try{localStorage.setItem(Fo,JSON.stringify(e))}catch{}}function Ro(e){return Io()[e]}function zo(e,t){let n=Io();n[e]=t,Lo(n)}function Bo(e){let t=Io();delete t[e],Lo(t)}function Vo(){return Io()}function Ho(e,t,n){return yt(t,n,`${e} adapter does not implement ${t}.${n}`)}function Uo(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(Ho(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function Wo(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:Uo(t,`browser`,St,e.browser),network:Uo(t,`network`,vt,e.network),secrets:Uo(t,`secrets`,Ct,e.secrets),devices:Uo(t,`devices`,wt,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:Uo(t,`mounts`,bt,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:Uo(t,`approvals`,Tt,e.approvals)}}function Go(e={}){return Wo({adapter:`connect`,pageGestures:e.pageGestures})}function Ko(e){let t=Et(()=>import(`./extension-ops-OtrqWANJ.js`).then(t=>t.createExtensionOps(e)));return Wo({adapter:e.adapter,pageGestures:e.pageGestures,network:{crossOriginFetch:e=>T(`network`,`crossOriginFetch`,async()=>(await t()).crossOriginFetch(e))},secrets:{listMaskedEnv:()=>T(`secrets`,`listMaskedEnv`,async()=>(await t()).secrets.listMaskedEnv()),getMasked:e=>T(`secrets`,`getMasked`,async()=>(await t()).secrets.getMasked(e)),set:e=>T(`secrets`,`set`,async()=>(await t()).secrets.set(e)),delete:e=>T(`secrets`,`delete`,async()=>(await t()).secrets.delete(e))},mounts:{signRequest:e=>T(`mounts`,`signRequest`,async()=>(await t()).signRequest(e))},approvals:{request:e=>T(`approvals`,`request`,async()=>(await t()).requestApproval(e))}})}function qo(e={}){let t=Et(()=>import(`./rest-ops-j0P6ql7f.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return Wo({adapter:`node-rest`,pageGestures:e.pageGestures,network:{localNodeServer:()=>Promise.resolve({ok:!0,value:{available:!0}}),crossOriginFetch:e=>T(`network`,`crossOriginFetch`,async()=>(await t()).crossOriginFetch(e))},secrets:{listMaskedEnv:()=>T(`secrets`,`listMaskedEnv`,async()=>(await t()).secrets.listMaskedEnv()),getMasked:e=>T(`secrets`,`getMasked`,async()=>(await t()).secrets.getMasked(e)),set:e=>T(`secrets`,`set`,async()=>(await t()).secrets.set(e)),delete:e=>T(`secrets`,`delete`,async()=>(await t()).secrets.delete(e))},mounts:{signRequest:e=>T(`mounts`,`signRequest`,async()=>(await t()).signRequest(e))},approvals:{request:e=>T(`approvals`,`request`,async()=>(await t()).requestApproval(e))}})}function Jo(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return qo({pageGestures:n});case`extension-direct`:case`extension-delegate`:return Ko({adapter:e,pageGestures:n});case`connect`:return Go({pageGestures:n})}}const Yo=e(`quick-llm`);async function Xo(e){let t=f();if(!t)return Yo.debug(`No API key for active provider — skipping`),null;let n=d(),r=u(),i;if(i=e.modelId?es(n,e.modelId)??es(n,r):Zo(n,r),!i)return Yo.debug(`No model available for provider`,{providerId:n}),null;let a={role:`user`,content:e.prompt,timestamp:Date.now()},o={};i.provider===`adobe`&&(o[`X-Session-Id`]=ts());try{let n=(await Te(i,{systemPrompt:e.system,messages:[a]},{apiKey:t,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(o).length>0?o:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return n.length>0?n:null}catch(e){return Yo.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function Zo(e,t){let n=p(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=$o(r.id),a=n.filter(e=>Qo(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function Qo(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 $o(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 es(e,t){return p(e).find(e=>e.id===t)}function ts(){return Ot(`ui-quick-llm`)}const ns=e(`sudo-suggest`),rs=[`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
- `),is=[`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 as(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`?rs:is,i=null;try{i=await Xo({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){ns.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return os(i)||n}function os(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 ss=e(`sudo:capability-gesture`);function cs(e,t={}){let n=t.suggest??as;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 ss.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),_t();if(!e)return ss.warn(`no CapabilityBroker injected for the sudo gesture hop — denying (composition bug, never a guessed transport)`,{detail:t.detail}),_t();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?xt(o.value,a):(ss.warn(`capability broker approvals.request failed — denying`,{message:o.message}),_t())}}}const ls=e(`sudo:tray-first`);function us(e,t={}){let n=t.suggest??as,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 _t();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){ls.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 fs(e?.decision,o)}catch(e){ls.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return e.requestApproval(s,a)}}}const ds=[`user-timeout`,`cone-timeout`,`unavailable`];function fs(e,t){if(!e||typeof e!=`object`)return _t();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 _t();let i=ds.find(e=>e===n.reason);return i?{decision:`deny`,reason:i}:{decision:`deny`}}function ps(e,t){return{requestApproval(n){return t.enqueueSudoRequest(e,n)}}}function ms(){return`lick-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}var hs=class{pending=new Map;timeoutMs;newId;setTimer;clearTimer;onAutoSettle;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.newId=e.newId??ms,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(ie(`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 gs(e){return ne(_s(e))}function _s(e){let t=cs(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:us(t)}let vs=null;function ys(e){return vs=e,()=>{vs===e&&(vs=null)}}function bs(){if(!vs)throw new Na(`session-not-found`);return vs}const xs=`focus`,Ss={type:`leaf`,surfaceId:`chat`};function Cs(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 ws={focus:{name:`focus`,tree:Cs({left:Ss},{left:3,middle:1})}};function Ts(e){return ws[e]??null}const Es=`progress`;async function Ds(){try{let e=await Bt();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 Vt(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);return await zt(t),t}throw Error(`mount: unexpected popup result`)}catch(e){throw Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}async function Os(){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 ks(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 Vt(r.idbKey);if(!i)throw Error(`no directory handle found in storage`);return await zt(i),i}function As(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 js(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 Ms=new Set([`--source`,`--profile`,`--backend`,`--max-body-mb`]);function Ns(e){for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`)return!1;if(n===`--help`||n===`-h`)return!0;Ms.has(n)&&t++}return!1}function Ps(e){return`aem://${e.org}/${e.name}${e.path?`/${e.path}`:``}`}var Fs=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=As(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=je();if(!n){let n=await Is(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=de()?null:y(),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=ee()?await Ds():r?await ks(r,e):await Os();let a=Ge.fromHandle(i,{mountId:Qe()});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=Qe(),i=new $e({mountId:r,ttlMs:3e4}),a=new qe({source:t.source,profile:n,cache:i,maxBodyBytes:t.maxBodyMb?t.maxBodyMb*1024*1024:void 0,mountId:r,signedFetch:this.signedFetchS3??Je(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??Ze(),i=js(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 No(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=Qe(),c=new $e({mountId:s,ttlMs:3e4}),l={source:a===`aem`?Ps(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 Xe(l):new Ke(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(Ns(e))return n===`umount`?this.umountHelp():this.help();let r=As(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-BGMKtG5Y.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"./runtime-env-DadgceZk.js";import{t as te}from"./slugify-BYJ6QVAt.js";import{i as ne,n as re,r as ie,t as ae}from"./host-command-CwRNpVLr.js";import{a as oe,i as se,n as ce,r as le,t as ue}from"./snapshot-D6YGbggk.js";import{n as de,t as y}from"./panel-rpc-accessor-B4BfPLSo.js";import{a as fe,c as pe,n as me,o as he,s as ge,t as _e}from"./feature-flags-QlgHaQc1.js";import{t as ve}from"./providers-Cu-JTUhF.js";import{r as ye}from"./binary-cache-bSOhqXB1.js";import{i as be,n as xe,r as Se}from"./fetch-body-CuwTaJC_.js";import{s as Ce,t as we}from"./api-endpoint-D8lUKmPu.js";import{t as Te}from"./compat-nGhSz-U1.js";import"./core-C1m4D34S.js";import{n as Ee,t as De}from"./mime-types-D7IV6i7k.js";import{n as Oe,t as ke}from"./float-topology-COIC4j_U.js";import{t as Ae}from"./secrets-bridge-client-GOCzDscb.js";import{a as je,i as Me,n as Ne,r as Pe}from"./tool-ui-DRnUkp2g.js";import{a as Fe,i as Ie,n as b,t as x}from"./path-utils-DNJG-zQf.js";import{n as Le,r as Re,t as ze}from"./merge-file-core-VJlzucJY.js";import{n as Be,t as Ve}from"./types-D8gIX-W-.js";import{i as He}from"./mount-index-CQfmUPuZ.js";import{a as Ue,i as We,n as Ge,o as Ke,s as qe,t as Je}from"./signed-fetch-DeDG40wV.js";import{o as Ye}from"./mount-table-store-DrF_Ifaz.js";import{t as Xe}from"./remote-cache-UwMD8EkX.js";import{n as Ze}from"./fs-CKSBDyCr.js";import{a as Qe}from"./tray-leader-status-CpkFr6n7.js";import{n as $e,t as et}from"./slicc-version-65AwHbmH.js";import{a as tt,i as nt,o as rt,r as S,t as it}from"./browser-Jlk38XAj.js";import{t as C}from"./subcommand-flags-BZi7j78Q.js";import{n as at,r as ot,t as w}from"./subcommand-help-CgO7wRS5.js";import{n as st}from"./cost-command-05RLVzlt.js";import{d as ct,g as lt,i as ut,n as dt,o as ft}from"./sudoers-BdBYQPUn.js";import{t as pt}from"./sudo-refusal-DVwTXFRE.js";import{n as mt}from"./types-Dj5TU-Qg.js";import{a as ht,c as gt,i as _t,l as vt,n as yt,o as bt,r as xt,t as St}from"./types-JfhqX7lD.js";import{n as T,t as Ct}from"./boundary-DjgipyWT.js";import"./rest-paths-Dia19u9P.js";import{t as wt}from"./html-B_Hg2WOy.js";import{n as Tt}from"./llm-session-id-BZyXP_j2.js";import{t as Et}from"./src-CUSndb9K.js";import{i as Dt,o as Ot}from"./browser-DuyhpHbR.js";import{a as kt,c as At,n as jt,o as Mt,r as Nt,s as Pt,t as Ft}from"./reason-l_1I9RdR.js";import{i as It,r as Lt,t as Rt}from"./mount-picker-popup-BMils9JY.js";import{t as zt}from"./buffer-B5d1xHaH.js";import"./buffer-polyfill-BwLbCySD.js";import{A as Bt,B as E,C as Vt,D,E as Ht,F as Ut,G as Wt,H as O,I as k,J as Gt,K as Kt,L as qt,M as Jt,N as Yt,O as Xt,P as Zt,R as Qt,S as $t,T as en,U as tn,V as nn,W as rn,Y as an,_ as on,a as sn,b as cn,c as ln,d as un,f as dn,g as fn,h as pn,i as mn,j as hn,k as gn,l as _n,m as vn,n as yn,o as bn,p as A,q as xn,r as Sn,s as Cn,t as wn,u as Tn,v as En,w as Dn,x as On,y as kn,z as An}from"./isomorphic-git-r9mnHMnp.js";import"./global-db-DJXlpNui.js";import{S as jn,_ as Mn,a as Nn,b as Pn,c as Fn,d as In,f as Ln,g as Rn,h as zn,i as Bn,l as Vn,n as Hn,o as Un,p as Wn,r as Gn,s as Kn,t as qn,u as Jn,v as j,x as M,y as Yn}from"./state-Tykh4Vum.js";import{a as Xn,i as Zn,r as Qn,t as $n}from"./git-config-Bdgu8kD2.js";import{i as er,m as tr,r as nr}from"./stdio-tty-CA5sZxWL.js";import{i as rr,r as ir}from"./global-prefix-DqCuANmV.js";import{t as ar}from"./wasm-programs-Bd5YaoqY.js";import{a as or,n as sr,o as cr,r as lr,s as ur}from"./jsh-discovery-CnvNKojr.js";import{C as dr,a as fr,b as pr,c as mr,d as hr,f as gr,h as _r,i as vr,l as yr,m as br,n as xr,o as Sr,p as Cr,r as wr,s as Tr,t as N,u as Er,v as Dr,y as Or}from"./shared-D-ZRFYou.js";import{_ as kr,a as Ar,b as jr,d as Mr,f as Nr,g as Pr,h as Fr,i as Ir,l as Lr,m as Rr,p as zr,r as Br,s as Vr,u as Hr,v as Ur,x as Wr,y as Gr}from"./require-guards-DnafTLJr.js";import{_ as Kr,a as qr,b as Jr,c as Yr,d as Xr,f as Zr,g as Qr,h as $r,l as ei,m as ti,n as ni,p as ri,s as ii,t as ai,u as oi,v as si,x as ci,y as li}from"./jsh-executor-D8okn0pR.js";import{n as ui,t as di}from"./esbuild-wasm-DeTghvWH.js";import{n as fi}from"./wasm-compiler-Ct7QZURL.js";import{a as pi,o as mi,s as hi,t as gi}from"./usb-device-registry-DFzxaOky.js";import{a as P,i as _i,r as vi,t as yi}from"./just-bash-compat-B-SPHuh_.js";import{i as bi,r as xi,t as Si}from"./script-catalog-WaCMvXY3.js";import{a as Ci,c as wi,o as Ti,s as Ei,t as Di}from"./types-Dzr0qYl3.js";import{a as Oi,c as ki,d as Ai,f as ji,n as Mi,r as Ni,u as Pi}from"./github-zip-CUIsX5nN.js";import{i as Fi,t as Ii}from"./github-auth-CSG4xZUZ.js";import{a as Li,i as Ri,o as zi,r as Bi,t as Vi}from"./provenance-DdmsQ3Nr.js";import{a as Hi,c as Ui,i as Wi,n as Gi,o as Ki,r as qi,s as Ji}from"./github-install-HX3c8n0G.js";import{n as Yi,t as Xi}from"./magick-wasm-BbnwhVj1.js";import{i as Zi,n as Qi,r as $i,t as ea}from"./pdf-raster-BWk6ezTX.js";import{n as ta}from"./lick-target-env-8JxfVcIV.js";import{t as na}from"./tmpdir-env-ate4iNcK.js";import{n as ra,t as ia}from"./hf-defaults-BwJdGLgk.js";import{t as aa}from"./ffmpeg-wasm-sx-3yVAE.js";import{t as oa}from"./local-llm-B4YA09uv.js";import{i as sa,n as ca,r as la,t as ua}from"./tar-BWIPCxI2.js";import{a as da,c as fa,i as pa,o as ma,r as ha,s as ga}from"./v86-vm-DCm7zA2r.js";import{n as _a,r as va}from"./lick-urls-CgPiVwD-.js";let ya=null;function ba(e){ya=e!==null&&Number.isFinite(e)&&e>0?e:null}function xa(){if(ya!==null)return ya;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const Sa=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function Ca(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=Sa.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 wa(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 Ta(e,t){return e.some(e=>wa(e,t))}const Ea=`slicc-transcript`,Da=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],Oa=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 ka(e){return Oa.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Aa=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const ja=new Set(Da),Ma=/^[0-9a-fA-F]{64}$/,Na=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;function F(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Pa(e){return typeof e==`string`&&Ma.test(e)}function Fa(e){return Na.test(e)&&Number.isFinite(Date.parse(e))}function Ia(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 La(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Ia(n,t)}:{ok:!0}}function Ra(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 za(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 Ba(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=La(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?za(e,t):n}function Va(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 Ha(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 Ua(e,t){let n=Va(e,t);if(!n.ok)return n;let r=e.cost;return F(r)?Ha(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function Wa(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`?Fa(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 Ga(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 Ka(e,t){let n=e.usage;return n===void 0?{ok:!0}:F(n)?Ua(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function qa(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=La(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=Ga(e,t);if(!n.ok)return n}let r=Wa(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=Ra(i,Ba,`${t}.content`);return a.ok?Ka(e,t):a}function Ja(e,t){if(!F(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=La(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Ra(r,qa,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function Ya(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 Xa(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`}:Pa(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 Za=[`attachment-file-missing`,`attachment-association-unavailable`];function Qa(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?La(e.missingReason,Za,`${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 $a(e,t){return e.present?Xa(e,t):Qa(e,t)}function eo(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Ya(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=La(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?$a(e,t):r}function to(e,t){let n=La(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 no(e,t){if(!F(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=La(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return F(r)?to(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function ro(e,t){return F(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 io(e,t){return typeof e!=`string`||!ja.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function ao(e){if(!F(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 F(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 oo(e){if(!F(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=La(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Ra(e.missing,io,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function so(e){if(!F(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=La(e.state,[`active`,`frozen`],`session.state`);return t.ok?oo(e.completeness):t}function co(e){if(!F(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(!F(e.redactionCounts))return{ok:!1,error:`privacy.redactionCounts must be a non-null object`};let n=e.redactions;return Array.isArray(n)?Ra(n,no,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function lo(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Ra(t,Ja,`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=Ra(r,ro,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Ra(a,eo,`attachments`):{ok:!1,error:`attachments must be an array`}}function uo(e){let t=new Set,n=new Set;for(let r of e){if(!F(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(!(!F(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 fo(e){for(let t of e){if(!F(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(!F(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 po(e){let t=[];for(let n of e){if(!F(n))continue;let e=n.content;if(Array.isArray(e))for(let n of e)F(n)&&n.type===`tool-call`&&typeof n.id==`string`&&t.push(n.id)}return t}function mo(e){let t=new Set;for(let n of e){if(!F(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of po(e))t.add(n)}return t}function ho(e,t){for(let n of e){if(!F(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of e){if(!F(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 go(e){return ho(e,mo(e))}function _o(e,t){for(let n of e){if(!F(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 vo(e,t){for(let n of e){if(!F(n))continue;let e=n.messages;if(Array.isArray(e))for(let n of e){if(!F(n))continue;let e=n.content;if(!Array.isArray(e))continue;let r=_o(e,t);if(!r.ok)return r}}return{ok:!0}}function yo(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return vo(e,n)}function bo(e){let t=new Map;for(let n of e){if(!F(n)||typeof n.id!=`string`)continue;let e=new Set,r=n.messages;if(Array.isArray(r))for(let t of r)F(t)&&typeof t.id==`string`&&e.add(t.id);t.set(n.id,e)}return t}function xo(e,t){let n=bo(t);for(let t=0;t<e.length;t++){let r=e[t];if(!F(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 So(e){let t=new Map;for(let n of e){if(!F(n)||typeof n.id!=`string`)continue;let e=Array.isArray(n.messages)?n.messages:[];t.set(n.id,new Set(po(e)))}return t}function Co(e,t,n){for(let r=0;r<e.length;r++){let i=e[r];if(!F(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 wo(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return Co(e,n,So(t))}function To(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 Eo(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);for(let t=0;t<e.length;t++){let r=e[t];if(!F(r))continue;let i=r.target;if(!F(i))continue;let a=To(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function Do(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=uo(t);if(!o.ok)return o;let s=fo(t);if(!s.ok)return s;let c=go(t);if(!c.ok)return c;let l=yo(t,n);if(!l.ok)return l;let u=xo(n,t);if(!u.ok)return u;let d=wo(r,t);return d.ok?Eo(a,n):d}function Oo(e){let t=lo(e);return t.ok?Do(e):t}function ko(e){if(!F(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=ao(e.export);if(!t.ok)return t;let n=so(e.session);if(!n.ok)return n;let r=co(e.privacy);return r.ok?Oo(e):r}async function Ao(e,t,n){let r=await n({method:`GET`,path:`/${e}/sites/${t}/config.json`,origin:Ke});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:jo(a),sourceUrl:a}}function jo(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const Mo=`slicc-sprinkle-routes`;function No(){try{let e=localStorage.getItem(Mo);return e?JSON.parse(e):{}}catch{return{}}}function Po(e){try{localStorage.setItem(Mo,JSON.stringify(e))}catch{}}function Fo(e){return No()[e]}function Io(e,t){let n=No();n[e]=t,Po(n)}function Lo(e){let t=No();delete t[e],Po(t)}function Ro(){return No()}function zo(e,t,n){return gt(t,n,`${e} adapter does not implement ${t}.${n}`)}function Bo(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(zo(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function Vo(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:Bo(t,`browser`,yt,e.browser),network:Bo(t,`network`,ht,e.network),secrets:Bo(t,`secrets`,bt,e.secrets),devices:Bo(t,`devices`,xt,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:Bo(t,`mounts`,_t,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:Bo(t,`approvals`,St,e.approvals)}}function Ho(e={}){return Vo({adapter:`connect`,pageGestures:e.pageGestures})}function Uo(e){let t=Ct(()=>import(`./extension-ops-OtrqWANJ.js`).then(t=>t.createExtensionOps(e)));return Vo({adapter:e.adapter,pageGestures:e.pageGestures,network:{crossOriginFetch:e=>T(`network`,`crossOriginFetch`,async()=>(await t()).crossOriginFetch(e))},secrets:{listMaskedEnv:()=>T(`secrets`,`listMaskedEnv`,async()=>(await t()).secrets.listMaskedEnv()),getMasked:e=>T(`secrets`,`getMasked`,async()=>(await t()).secrets.getMasked(e)),set:e=>T(`secrets`,`set`,async()=>(await t()).secrets.set(e)),delete:e=>T(`secrets`,`delete`,async()=>(await t()).secrets.delete(e))},mounts:{signRequest:e=>T(`mounts`,`signRequest`,async()=>(await t()).signRequest(e))},approvals:{request:e=>T(`approvals`,`request`,async()=>(await t()).requestApproval(e))}})}function Wo(e={}){let t=Ct(()=>import(`./rest-ops-j0P6ql7f.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return Vo({adapter:`node-rest`,pageGestures:e.pageGestures,network:{localNodeServer:()=>Promise.resolve({ok:!0,value:{available:!0}}),crossOriginFetch:e=>T(`network`,`crossOriginFetch`,async()=>(await t()).crossOriginFetch(e))},secrets:{listMaskedEnv:()=>T(`secrets`,`listMaskedEnv`,async()=>(await t()).secrets.listMaskedEnv()),getMasked:e=>T(`secrets`,`getMasked`,async()=>(await t()).secrets.getMasked(e)),set:e=>T(`secrets`,`set`,async()=>(await t()).secrets.set(e)),delete:e=>T(`secrets`,`delete`,async()=>(await t()).secrets.delete(e))},mounts:{signRequest:e=>T(`mounts`,`signRequest`,async()=>(await t()).signRequest(e))},approvals:{request:e=>T(`approvals`,`request`,async()=>(await t()).requestApproval(e))}})}function Go(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return Wo({pageGestures:n});case`extension-direct`:case`extension-delegate`:return Uo({adapter:e,pageGestures:n});case`connect`:return Ho({pageGestures:n})}}const Ko=e(`quick-llm`);async function qo(e){let t=f();if(!t)return Ko.debug(`No API key for active provider — skipping`),null;let n=d(),r=u(),i;if(i=e.modelId?Zo(n,e.modelId)??Zo(n,r):Jo(n,r),!i)return Ko.debug(`No model available for provider`,{providerId:n}),null;let a={role:`user`,content:e.prompt,timestamp:Date.now()},o={};i.provider===`adobe`&&(o[`X-Session-Id`]=Qo());try{let n=(await Te(i,{systemPrompt:e.system,messages:[a]},{apiKey:t,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(o).length>0?o:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return n.length>0?n:null}catch(e){return Ko.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function Jo(e,t){let n=p(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=Xo(r.id),a=n.filter(e=>Yo(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function Yo(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 Xo(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 Zo(e,t){return p(e).find(e=>e.id===t)}function Qo(){return Tt(`ui-quick-llm`)}const $o=e(`sudo-suggest`),es=[`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
+ `),ts=[`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 ns(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`?es:ts,i=null;try{i=await qo({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){$o.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return rs(i)||n}function rs(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 is=e(`sudo:capability-gesture`);function as(e,t={}){let n=t.suggest??ns;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 is.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),mt();if(!e)return is.warn(`no CapabilityBroker injected for the sudo gesture hop — denying (composition bug, never a guessed transport)`,{detail:t.detail}),mt();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?vt(o.value,a):(is.warn(`capability broker approvals.request failed — denying`,{message:o.message}),mt())}}}const os=e(`sudo:tray-first`);function ss(e,t={}){let n=t.suggest??ns,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 mt();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){os.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 ls(e?.decision,o)}catch(e){os.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return e.requestApproval(s,a)}}}const cs=[`user-timeout`,`cone-timeout`,`unavailable`];function ls(e,t){if(!e||typeof e!=`object`)return mt();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 mt();let i=cs.find(e=>e===n.reason);return i?{decision:`deny`,reason:i}:{decision:`deny`}}function us(e,t){return{requestApproval(n){return t.enqueueSudoRequest(e,n)}}}function ds(){return`lick-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}var fs=class{pending=new Map;timeoutMs;newId;setTimer;clearTimer;onAutoSettle;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.newId=e.newId??ds,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(ie(`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 ps(e){return ne(ms(e))}function ms(e){let t=as(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:ss(t)}let hs=null;function gs(e){return hs=e,()=>{hs===e&&(hs=null)}}function _s(){if(!hs)throw new Aa(`session-not-found`);return hs}const vs=`focus`,ys={type:`leaf`,surfaceId:`chat`};function bs(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 xs={focus:{name:`focus`,tree:bs({left:ys},{left:3,middle:1})}};function Ss(e){return xs[e]??null}const Cs=`progress`;async function ws(){try{let e=await Lt();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 Rt(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);return await It(t),t}throw Error(`mount: unexpected popup result`)}catch(e){throw Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}async function Ts(){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 Es(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 Rt(r.idbKey);if(!i)throw Error(`no directory handle found in storage`);return await It(i),i}function Ds(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 Os(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 ks=new Set([`--source`,`--profile`,`--backend`,`--max-body-mb`]);function As(e){for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`)return!1;if(n===`--help`||n===`-h`)return!0;ks.has(n)&&t++}return!1}function js(e){return`aem://${e.org}/${e.name}${e.path?`/${e.path}`:``}`}var Ms=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=Ds(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=je();if(!n){let n=await Ns(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=de()?null:y(),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=ee()?await ws():r?await Es(r,e):await Ts();let a=He.fromHandle(i,{mountId:Ye()});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=Ye(),i=new Xe({mountId:r,ttlMs:3e4}),a=new We({source:t.source,profile:n,cache:i,maxBodyBytes:t.maxBodyMb?t.maxBodyMb*1024*1024:void 0,mountId:r,signedFetch:this.signedFetchS3??Ge(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??Je(),i=Os(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 Ao(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=Ye(),c=new Xe({mountId:s,ttlMs:3e4}),l={source:a===`aem`?js(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 qe(l):new Ue(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(As(e))return n===`umount`?this.umountHelp():this.help();let r=Ds(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(Ns(e))return this.help();let n=As(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=As(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(As(e))return this.help();let n=Ds(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=Ds(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 Is(e){let t=`pendingMount:term:${e}`,n;try{n=await Vt(t)}catch{return null}if(!n)return null;try{await zt(n)}catch{return null}return Ge.fromHandle(n,{mountId:Qe()})}async function Ls(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 Rs(e,t,a);else if(o.includes(`.`))await zs(e,t,a);else if(i)await Bs(e,t,a);else for(let n of o)await un({fs:e.lfs,cache:e.cache,dir:t,filepath:n,force:a});return{stdout:``,stderr:``,exitCode:0}}async function Rs(e,t,n){let r=await O({fs:e.lfs,cache:e.cache,dir:t});for(let[i,,a,o]of r)a!==o&&(a===0?await tn({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await un({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}async function zs(e,t,n){let r=await O({fs:e.lfs,cache:e.cache,dir:t});for(let[i,,a,o]of r)a!==o&&a!==0&&await un({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n})}async function Bs(e,t,n){let r=await O({fs:e.lfs,cache:e.cache,dir:t});for(let[i,a,o,s]of r)a!==0&&o!==s&&(o===0?await tn({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await un({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}const Vs={boolean:[`dry-run`,`force`,`d`,`x`,`X`,`quiet`],alias:{n:`dry-run`,f:`force`,q:`quiet`}},I={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:Vs,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`}}},Hs=/^(--?)([^=]+)(=.*)?$/;function Us(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 Ws(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 Gs(){let e=new Set([`c`,`C`,`git-dir`,`work-tree`]);for(let t of Object.values(I))for(let n of Ws(t))e.add(n);return e}function Ks(e,t,n){for(let r of e){if(!t.has(r))return r;if(n.has(r))return}}function qs(e,t){let n=Us(t),r=Ws(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=Hs.exec(t);if(!i)continue;let o=i[2];if(i[1]===`-`&&o.length>1&&!i[3]&&!n.has(o)){let e=Ks(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 Js(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function Ys(e,t){if(!t)return;let n=qs(e,t);return n?Js(n):void 0}function L(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 Xs(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 Zs(e,t){if(!(e instanceof Error))return $s(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=>Zs(e,t)).join(`
15
- `)}return $s(Xs(e.message)??e.message,t)}function Qs(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 $s(e,t){if(!/\b401\b|Unauthorized/i.test(e))return e;if(t!==void 0){if(!Qs(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 ec={refresh:!1},tc=new Set([`never`,`false`,`0`,`off`,`no`]),nc=new Set([`always`,`true`,`1`,`on`,`yes`]),rc=/^(--?)([^=]+)(=.*)?$/,ic=Gs();function ac(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 oc(e){let t,n=e.indexOf(`--`),r=n===-1?e:e.slice(0,n);for(let e=0;e<r.length;e++){if(cc(r,e))continue;let n=r[e];if(n===`--no-color`){t=`never`;continue}if(n===`--color`){t=`always`;continue}n.startsWith(`--color=`)&&(t=ac(n.slice(8))??t)}return t}function sc(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(cc(e,r,t)){n.push(i);continue}if(i.startsWith(`--color=`)){let e=lc(i.slice(8));e&&n.push(e);continue}n.push(i)}return n}function cc(e,t,n=-1){if(t===0||n!==-1&&t-1>=n)return!1;let r=e[t-1],i=rc.exec(r);return!i||i[3]?!1:ic.has(i[2])}function lc(e){let t=e.toLowerCase();if(tc.has(t))return`--no-color`;if(nc.has(t))return`--color`}function uc(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(ac(e.colorUi));return i===void 0?!e.noColorEnv&&t:i}function dc(e,t,n){return e?`\x1b[${t}m${n}\x1b[0m`:n}async function fc(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 A({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 xn({fs:e.lfs,dir:t,ref:a}),{stdout:`Deleted branch ${a}\n`,stderr:``,exitCode:0};if(a&&!r)return await fn({fs:e.lfs,dir:t,ref:a}),{stdout:``,stderr:``,exitCode:0};let o=await Gt({fs:e.lfs,dir:t}),s=await A({fs:e.lfs,dir:t}),c=``;for(let t of o)c+=t===s?`* ${dc(e.useColor,`32`,t)}\n`:` ${t}\n`;if(i)try{let n=await Gt({fs:e.lfs,dir:t,remote:`origin`});for(let t of n)c+=` ${dc(e.useColor,`31`,`remotes/origin/${t}`)}\n`}catch{}return{stdout:c,stderr:``,exitCode:0}}async function pc(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 vc(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 fn({fs:e.lfs,dir:t,ref:o,object:s,checkout:!1,force:i})}catch(e){return _c(e,o)}try{await mc(e,t,o,i)}catch(n){if(!i)try{await xn({fs:e.lfs,dir:t,ref:o})}catch{}return _c(n,o)}return await e.fs.flush(),{stdout:`Switched to a new branch '${o}'\n`,stderr:``,exitCode:0}}try{await mc(e,t,o,i)}catch(e){return _c(e,o)}return await e.fs.flush(),{stdout:`Switched to branch '${o}'\n`,stderr:``,exitCode:0}}async function mc(e,t,n,r){let i;try{i=await E({fs:e.lfs,dir:t,ref:`HEAD`})}catch{i=void 0}let a=new Set(await D({fs:e.lfs,cache:e.cache,dir:t}));await bn({fs:e.lfs,cache:e.cache,dir:t,ref:n,force:r});let o=await E({fs:e.lfs,dir:t,ref:n}),s=new Set(await D({fs:e.lfs,cache:e.cache,dir:t,ref:o}));await hc(e,t,a,s),!(!r&&i===o)&&await gc(e,t,o,a,s)}async function hc(e,t,n,r){for(let i of n)if(!r.has(i)){try{await tn({fs:e.lfs,cache:e.cache,dir:t,filepath:i})}catch{}try{await e.fs.rm(`${t}/${i}`)}catch{}}}async function gc(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 Kt({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 Nn({fs:e.lfs,cache:e.cache,dir:t,filepath:a,ref:n})}}function _c(e,t){if(e instanceof Error&&e.name===`MultipleGitError`)return{stdout:``,stderr:`error: unable to checkout '${t}':\n${Zs(e).split(`
13
+ `,stderr:``,exitCode:0}}};async function Ns(e){let t=`pendingMount:term:${e}`,n;try{n=await Rt(t)}catch{return null}if(!n)return null;try{await It(n)}catch{return null}return He.fromHandle(n,{mountId:Ye()})}async function Ps(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 Fs(e,t,a);else if(o.includes(`.`))await Is(e,t,a);else if(i)await Ls(e,t,a);else for(let n of o)await sn({fs:e.lfs,cache:e.cache,dir:t,filepath:n,force:a});return{stdout:``,stderr:``,exitCode:0}}async function Fs(e,t,n){let r=await O({fs:e.lfs,cache:e.cache,dir:t});for(let[i,,a,o]of r)a!==o&&(a===0?await Qt({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await sn({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}async function Is(e,t,n){let r=await O({fs:e.lfs,cache:e.cache,dir:t});for(let[i,,a,o]of r)a!==o&&a!==0&&await sn({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n})}async function Ls(e,t,n){let r=await O({fs:e.lfs,cache:e.cache,dir:t});for(let[i,a,o,s]of r)a!==0&&o!==s&&(o===0?await Qt({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await sn({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}const Rs={boolean:[`dry-run`,`force`,`d`,`x`,`X`,`quiet`],alias:{n:`dry-run`,f:`force`,q:`quiet`}},I={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:Rs,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`}}},zs=/^(--?)([^=]+)(=.*)?$/;function Bs(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 Vs(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 Hs(){let e=new Set([`c`,`C`,`git-dir`,`work-tree`]);for(let t of Object.values(I))for(let n of Vs(t))e.add(n);return e}function Us(e,t,n){for(let r of e){if(!t.has(r))return r;if(n.has(r))return}}function Ws(e,t){let n=Bs(t),r=Vs(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=zs.exec(t);if(!i)continue;let o=i[2];if(i[1]===`-`&&o.length>1&&!i[3]&&!n.has(o)){let e=Us(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 Gs(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function Ks(e,t){if(!t)return;let n=Ws(e,t);return n?Gs(n):void 0}function L(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 qs(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 Js(e,t){if(!(e instanceof Error))return Xs(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=>Js(e,t)).join(`
15
+ `)}return Xs(qs(e.message)??e.message,t)}function Ys(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 Xs(e,t){if(!/\b401\b|Unauthorized/i.test(e))return e;if(t!==void 0){if(!Ys(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 Zs={refresh:!1},Qs=new Set([`never`,`false`,`0`,`off`,`no`]),$s=new Set([`always`,`true`,`1`,`on`,`yes`]),ec=/^(--?)([^=]+)(=.*)?$/,tc=Hs();function nc(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 rc(e){let t,n=e.indexOf(`--`),r=n===-1?e:e.slice(0,n);for(let e=0;e<r.length;e++){if(ac(r,e))continue;let n=r[e];if(n===`--no-color`){t=`never`;continue}if(n===`--color`){t=`always`;continue}n.startsWith(`--color=`)&&(t=nc(n.slice(8))??t)}return t}function ic(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(ac(e,r,t)){n.push(i);continue}if(i.startsWith(`--color=`)){let e=oc(i.slice(8));e&&n.push(e);continue}n.push(i)}return n}function ac(e,t,n=-1){if(t===0||n!==-1&&t-1>=n)return!1;let r=e[t-1],i=ec.exec(r);return!i||i[3]?!1:tc.has(i[2])}function oc(e){let t=e.toLowerCase();if(Qs.has(t))return`--no-color`;if($s.has(t))return`--color`}function sc(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(nc(e.colorUi));return i===void 0?!e.noColorEnv&&t:i}function cc(e,t,n){return e?`\x1b[${t}m${n}\x1b[0m`:n}async function lc(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 A({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 vn({fs:e.lfs,dir:t,ref:a}),{stdout:`Deleted branch ${a}\n`,stderr:``,exitCode:0};if(a&&!r)return await ln({fs:e.lfs,dir:t,ref:a}),{stdout:``,stderr:``,exitCode:0};let o=await Ht({fs:e.lfs,dir:t}),s=await A({fs:e.lfs,dir:t}),c=``;for(let t of o)c+=t===s?`* ${cc(e.useColor,`32`,t)}\n`:` ${t}\n`;if(i)try{let n=await Ht({fs:e.lfs,dir:t,remote:`origin`});for(let t of n)c+=` ${cc(e.useColor,`31`,`remotes/origin/${t}`)}\n`}catch{}return{stdout:c,stderr:``,exitCode:0}}async function uc(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 hc(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 ln({fs:e.lfs,dir:t,ref:o,object:s,checkout:!1,force:i})}catch(e){return mc(e,o)}try{await dc(e,t,o,i)}catch(n){if(!i)try{await vn({fs:e.lfs,dir:t,ref:o})}catch{}return mc(n,o)}return await e.fs.flush(),{stdout:`Switched to a new branch '${o}'\n`,stderr:``,exitCode:0}}try{await dc(e,t,o,i)}catch(e){return mc(e,o)}return await e.fs.flush(),{stdout:`Switched to branch '${o}'\n`,stderr:``,exitCode:0}}async function dc(e,t,n,r){let i;try{i=await E({fs:e.lfs,dir:t,ref:`HEAD`})}catch{i=void 0}let a=new Set(await D({fs:e.lfs,cache:e.cache,dir:t}));await _n({fs:e.lfs,cache:e.cache,dir:t,ref:n,force:r});let o=await E({fs:e.lfs,dir:t,ref:n}),s=new Set(await D({fs:e.lfs,cache:e.cache,dir:t,ref:o}));await fc(e,t,a,s),!(!r&&i===o)&&await pc(e,t,o,a,s)}async function fc(e,t,n,r){for(let i of n)if(!r.has(i)){try{await Qt({fs:e.lfs,cache:e.cache,dir:t,filepath:i})}catch{}try{await e.fs.rm(`${t}/${i}`)}catch{}}}async function pc(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 Ut({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 An({fs:e.lfs,cache:e.cache,dir:t,filepath:a,ref:n})}}function mc(e,t){if(e instanceof Error&&e.name===`MultipleGitError`)return{stdout:``,stderr:`error: unable to checkout '${t}':\n${Js(e).split(`
18
18
  `).map(e=>` ${e}`).join(`
19
- `)}\n`,exitCode:1};throw e}async function vc(e,t,n,r){let i=r??`HEAD`,a=await E({fs:e.lfs,dir:t,ref:i});for(let r of n){let{blob:n}=await Kt({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 un({fs:e.lfs,cache:e.cache,dir:t,filepath:r})}return await e.fs.flush(),{stdout:``,stderr:``,exitCode:0}}function yc(e={}){let{favor:t,diff3:n,labels:r}=e;return({contents:e,branches:i})=>{let[a,o,s]=e,c=ze(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 bc(e,t,n){let r=xc(n),i=await wc(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 Ec(e,t,i,1);else i=await Ec(e,t,i,n.count);return i}function xc(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 Sc(e,t,n){try{return await bc(e,t,n)}catch{return}}const Cc=/^[0-9a-f]{4,40}$/i;async function wc(e,t,n){if(n===`FETCH_HEAD`)return await Tc(e,t);try{return await E({fs:e.lfs,dir:t,ref:n})}catch(e){if(!Cc.test(n))throw e}return await kn({fs:e.lfs,cache:e.cache,dir:t,oid:n})}async function Tc(e,t){let n=await jn({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||!Cc.test(i)||i.length!==40)throw Error(`Could not find FETCH_HEAD.`);return i.toLowerCase()}async function Ec(e,t,n,r){if(r<1)return n;let{commit:i}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n}),a=i.parent[r-1];if(!a)throw Error(`missing parent`);return a}function Dc(e){return e.replace(/^\.\//,``).replace(/\/+$/,``)}function Oc(e,t){return t.length===0||t.some(t=>{let n=Dc(t);return n===``||e===n||e.startsWith(`${n}/`)})}function kc(e,t){return t.length===0||t.some(t=>{let n=Dc(t);return n===``||e===n||e.startsWith(`${n}/`)||n.startsWith(`${e}/`)})}async function Ac(e,t,n){let{flags:r,positionals:i}=M(n,I[`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 Sc(e,t,s);if(c===void 0)return{stdout:``,stderr:`fatal: bad revision '${s}'\n`,exitCode:128};try{let n=await On({fs:e.lfs,cache:e.cache,dir:t,oid:c,abortOnConflict:!1,noUpdateBranch:a,committer:await e.resolveAuthor(t),mergeDriver:yc()});if(a)return{stdout:``,stderr:``,exitCode:0};let r=n,{commit:i}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n});if(o){let n=i.message.replace(/\s+$/,``);r=await mn({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 A({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 jc(e,c)}}function jc(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 hc(e,t,n,r){let i=r??`HEAD`,a=await E({fs:e.lfs,dir:t,ref:i});for(let r of n){let{blob:n}=await Ut({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 sn({fs:e.lfs,cache:e.cache,dir:t,filepath:r})}return await e.fs.flush(),{stdout:``,stderr:``,exitCode:0}}function gc(e={}){let{favor:t,diff3:n,labels:r}=e;return({contents:e,branches:i})=>{let[a,o,s]=e,c=ze(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 _c(e,t,n){let r=vc(n),i=await xc(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 Cc(e,t,i,1);else i=await Cc(e,t,i,n.count);return i}function vc(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 yc(e,t,n){try{return await _c(e,t,n)}catch{return}}const bc=/^[0-9a-f]{4,40}$/i;async function xc(e,t,n){if(n===`FETCH_HEAD`)return await Sc(e,t);try{return await E({fs:e.lfs,dir:t,ref:n})}catch(e){if(!bc.test(n))throw e}return await En({fs:e.lfs,cache:e.cache,dir:t,oid:n})}async function Sc(e,t){let n=await On({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||!bc.test(i)||i.length!==40)throw Error(`Could not find FETCH_HEAD.`);return i.toLowerCase()}async function Cc(e,t,n,r){if(r<1)return n;let{commit:i}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n}),a=i.parent[r-1];if(!a)throw Error(`missing parent`);return a}function wc(e){return e.replace(/^\.\//,``).replace(/\/+$/,``)}function Tc(e,t){return t.length===0||t.some(t=>{let n=wc(t);return n===``||e===n||e.startsWith(`${n}/`)})}function Ec(e,t){return t.length===0||t.some(t=>{let n=wc(t);return n===``||e===n||e.startsWith(`${n}/`)||n.startsWith(`${e}/`)})}async function Dc(e,t,n){let{flags:r,positionals:i}=M(n,I[`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 yc(e,t,s);if(c===void 0)return{stdout:``,stderr:`fatal: bad revision '${s}'\n`,exitCode:128};try{let n=await Tn({fs:e.lfs,cache:e.cache,dir:t,oid:c,abortOnConflict:!1,noUpdateBranch:a,committer:await e.resolveAuthor(t),mergeDriver:gc()});if(a)return{stdout:``,stderr:``,exitCode:0};let r=n,{commit:i}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n});if(o){let n=i.message.replace(/\s+$/,``);r=await dn({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 A({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 Oc(e,c)}}function Oc(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: ${Zs(e)}\n`,exitCode:128}}async function Mc(e,t,n){let r=M(n,Vs),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 O({fs:e.lfs,cache:e.cache,dir:t,...ec}),f=Nc(d),p=d.filter(([,e,t,n])=>e===0&&t===2&&n===0).map(([e])=>e),m;if(c||s){let n=(await O({fs:e.lfs,cache:e.cache,dir:t,ignored:!0,...ec})).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=>Fc(e,t))));let h=new Set,g=new Set;for(let e of m){let t=Pc(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 Nc(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 Pc(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 Fc(e,t){let n=t.endsWith(`/`)?t.slice(0,-1):t;return e===n||e.startsWith(`${n}/`)}let Ic=null;function Lc(){return Ic||=g(),Ic}async function*Rc(e,t,n){t&&t({phase:`Receiving`,loaded:e.length,total:n??e.length}),yield e}function zc(){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 Lc()(t,{method:n,headers:r,body:o}),c=parseInt(s.headers[`content-length`]??`0`,10)||void 0,l=Rc(s.body,a,c);return{url:s.url,method:n,headers:s.headers,body:l,statusCode:s.status,statusMessage:s.statusText}}}}const Bc=zc();async function Vc(e,t,n){let r=Ys(n,I.clone);if(r)return r;let{flags:i,positionals:a}=M(n,I.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=b(l.startsWith(`/`)?l:`${t}/${l}`),d=L(o,`depth`),f=L(o,`branch`),p=o[`single-branch`]!==!1,m=s?``:`Cloning into '${l}'...\n`,h=Hc(c,t);if(h)return Uc(e,h,u,c,l,m,f,s);try{await pn({fs:e.lfs,cache:e.cache,http:Bc,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 Gc(e,u,c)}if(await e.fs.flush(),!s)try{let t=await D({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 Hc(e,t){if(e.startsWith(`file://`))try{return b(decodeURIComponent(new URL(e).pathname))}catch{return null}return e.startsWith(`/`)?b(e):e.startsWith(`./`)||e.startsWith(`../`)?b(x(t,e)):null}async function Uc(e,t,n,r,i,a,o,s=!1){if(n===t||n.startsWith(`${t}/`))return Gc(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 Gc(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 A({fs:e.lfs,dir:t});if(await Wc(e,`${t}/.git`,`${n}/.git`),c&&await bn({fs:e.lfs,cache:e.cache,dir:n,ref:c,force:!0}),await Cn({fs:e.lfs,dir:n,remote:`origin`,url:r,force:!0}),await e.fs.flush(),!s){let t=await D({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 Gc(e,n,r)}}async function Wc(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 Wc(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 Gc(e,t,n){return{stdout:``,stderr:`fatal: ${Zs(e,n).replace(/'\/__opfs__\/[^']*<path>'/g,`'${t}'`).replace(/\/__opfs__\/[^\s'"<]*<path>/g,t).replace(/<path>/g,t)}\n`,exitCode:128}}const Kc=[`MERGE_HEAD`,`MERGE_MSG`,`MERGE_MODE`,`AUTO_MERGE`];async function qc(e,t){return`${await jn({fs:e.lfs,filepath:t})}/.git`}async function Jc(e,t){try{return(await e.fs.readTextFile(t)).trim()}catch{return}}async function Yc(e,t){try{await e.fs.rm(t)}catch{}}async function Xc(e,t){try{return await Jc(e,`${await qc(e,t)}/MERGE_HEAD`)}catch{return}}async function Zc(e,t){return await Xc(e,t)!==void 0}async function Qc(e,t){try{return await Jc(e,`${await qc(e,t)}/MERGE_MSG`)}catch{return}}async function $c(e,t,n){let r=await qc(e,t);await e.fs.writeFile(`${r}/ORIG_HEAD`,`${n}\n`)}async function el(e,t,n,r){let i=await qc(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 tl(e,t){let n;try{n=await qc(e,t)}catch{return}await Promise.all(Kc.map(t=>Yc(e,`${n}/${t}`)))}async function nl(e,t){let n=await D({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 rl=new Set([`message`,`author`,`date`,`file`,`cleanup`,`amend`,`all`,`allow-empty`,`m`,`a`,`F`]);async function il(e,t,n){let r=gl(n),i=M(r,I.commit).flags,a=await Xc(e,t),o=await ml(e,t,i);if(typeof o!=`string`){if(a){let n=await Qc(e,t);if(n)return await al(e,t,i,n,a)}return o}return await al(e,t,i,o,a)}async function al(e,t,n,r,i){let a=n.amend===!0,o=n.all===!0,s=n[`allow-empty`]===!0;if(o&&await hl(e,t),!s&&!a&&!i&&!(await O({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 mn({fs:e.lfs,cache:e.cache,dir:t,message:r,author:await e.resolveAuthor(t),amend:a,noUpdateBranch:void 0,...i?{parent:[await E({fs:e.lfs,dir:t,ref:`HEAD`}),i]}:{}});i&&await tl(e,t);let l=c.slice(0,7);return{stdout:`[${await A({fs:e.lfs,dir:t})??`HEAD`} ${l}] ${r}\n`,stderr:``,exitCode:0}}function ol(e,t){let n=e[t];if(n!==void 0&&n!==!0&&n!==!1)return L(e,t)}function sl(e){return Object.keys(e).find(e=>!rl.has(e))}function cl(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function ll(e){return{stdout:``,stderr:`error: switch \`${e}\` requires a value\n`,exitCode:1}}function ul(e){let t=sl(e);return t?cl(t):`message`in e||`m`in e?ll(`m`):`file`in e||`F`in e?ll(`F`):{stdout:``,stderr:"error: option `-m' or `-F' is required\n",exitCode:1}}function dl(){return{stdout:``,stderr:`Aborting commit due to empty commit message.
29
- `,exitCode:1}}function fl(e){return{stdout:``,stderr:`error: could not read log file '${e}': No such file or directory\n`,exitCode:128}}async function pl(e,t,n){if(n===`-`)return e.stdin;let r=n.startsWith(`/`)?n:`${t}/${n}`;try{return await e.fs.readTextFile(r)}catch{return fl(n)}}async function ml(e,t,n){let r=ol(n,`message`);if(r!==void 0)return r;let i=ol(n,`file`);if(i!==void 0){let n=await pl(e,t,i);return typeof n==`string`&&n===``?dl():n}return ul(n)}async function hl(e,t){let n=await O({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,a,o]of n)i!==0&&a!==o&&(a===0?await tn({fs:e.lfs,cache:e.cache,dir:t,filepath:r}):await un({fs:e.lfs,cache:e.cache,dir:t,filepath:r}))}function gl(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 _l(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 xl(e,t,a);if(i)return vl(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?bl(e,t,o,a):yl(e,t,o,c,a)}async function vl(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(nr),r=er(e,n);await t.writeFile(nr,r)}catch{}}else try{let r=`${t}/.git/config`,i=await e.fs.readTextFile(r),a=er(i,n);await e.fs.writeFile(r,a)}catch{}return{stdout:``,stderr:``,exitCode:0}}async function yl(e,t,n,r,i){return n===`credential.token`||n===`github.token`?(await e.setGithubToken(r),{stdout:``,stderr:``,exitCode:0}):(i?await $n(await e.getGlobalFs(),n,r):await on({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 bl(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 tr(await e.getGlobalFs(),n):(i=await nn({fs:e.lfs,dir:t,path:n}),i||=await tr(await e.getGlobalFs(),n)),{stdout:i?`${i}\n`:``,stderr:``,exitCode:+!i}}async function xl(e,t,n){let r=``;if(!n)try{let n=`${t}/.git/config`,i=await e.fs.readTextFile(n);r+=Sl(i)}catch{}try{let t=await(await e.getGlobalFs()).readTextFile(nr);r+=Sl(t)}catch{}return{stdout:r,stderr:``,exitCode:0}}function Sl(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 Cl=`/dev/null`,wl={bytes:new Uint8Array,text:``,binary:!1};async function Tl(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([jl(e,t,n[0]),jl(e,t,n[1])]);[i,a]=await Ml(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 Il(e,i,a):[await Pl(e,i,a)]).filter(e=>!El(e.oldBlob.bytes,e.newBlob.bytes));return s.length===0?{stdout:``,stderr:``,exitCode:0}:{stdout:Dl(s,r,e.useColor),stderr:``,exitCode:1}}function El(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 Dl(e,t,n){if(t.nameOnly)return`${e.map(e=>e.absent===`new`?Cl:e.newName).join(`
34
- `)}\n`;if(t.stat)return Le(e.map(kl),{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 ${Ol(i,`old`)} and ${Ol(i,`new`)} differ\n`;continue}r+=Re({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 Ol(e,t){return e.absent===t?Cl:t===`old`?`a/${e.oldName}`:`b/${e.newName}`}function kl(e){return{name:Al(e.absent===`old`?Cl:e.oldName,e.absent===`new`?Cl: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 Al(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 jl(e,t,n){if(n===Cl)return{kind:`null`,given:n};let r=b(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 Ml(e,t,n,r){return n.kind===`dir`&&(r.kind===`file`||r.kind===`null`)?[await jl(e,t,`${n.given}/${Nl(r.given)}`),r]:r.kind===`dir`&&(n.kind===`file`||n.kind===`null`)?[n,await jl(e,t,`${r.given}/${Nl(n.given)}`)]:[n,r]}function Nl(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}async function Pl(e,t,n){let[r,i]=await Promise.all([Fl(e,t),Fl(e,n)]),a=t.kind===`null`?`old`:n.kind===`null`?`new`:void 0,o=zl(t.kind===`null`?n.given:t.given);return{oldName:a?o:zl(t.given),newName:a?o:zl(n.given),absent:a,oldBlob:r,newBlob:i}}function Fl(e,t){return t.kind===`file`?Rl(e,t.abs):Promise.resolve(wl)}async function Il(e,t,n){let[r,i]=await Promise.all([Ll(e,t.abs),Ll(e,n.abs)]),a=[...new Set([...r,...i])].sort(),o=[];for(let s of a){let a=zl(`${t.given}/${s}`),c=zl(`${n.given}/${s}`);i.has(s)?r.has(s)?o.push({oldName:a,newName:c,oldBlob:await Rl(e,`${t.abs}/${s}`),newBlob:await Rl(e,`${n.abs}/${s}`)}):o.push({oldName:c,newName:c,absent:`old`,oldBlob:wl,newBlob:await Rl(e,`${n.abs}/${s}`)}):o.push({oldName:a,newName:a,absent:`new`,oldBlob:await Rl(e,`${t.abs}/${s}`),newBlob:wl})}return o}async function Ll(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 Rl(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 zl(e){return e.replace(/^\/+/,``)}function Bl(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 Vl(e,t,n){let r=tu(n),i=Ys(r,I.diff);if(i)return i;let{flags:a,positionals:o,doubleDashRest:s}=M(r,I.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:nu(a.unified)};if(a[`no-index`]===!0||a.index===!1)return Tl(e,t,o,u);if(o.length>=2)return ql(e,t,o[0],o[1],u);if(o.length===1){let n=ru(o[0]);if(n)return Jl(e,t,n[0],n[1],u);let r=iu(o[0]);return r?ql(e,t,r[0],r[1],u):c?Ul(e,t,o[0],u):Xl(e,t,o[0],u)}return eu(e,c?await Hl(e,t,u.pathspecs):await Wl(e,t,u.pathspecs),u)}async function Hl(e,t,n=[],r=`HEAD`){let i=[];return await qt({fs:e.lfs,cache:e.cache,dir:t,trees:[Sn({ref:r}),Dn()],iterate:Bl(e=>kc(e,n)),map:async(r,[a,o])=>{if(r===`.`||r===`.git`||r.startsWith(`.git/`)||!Oc(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 Kl(e,t,l),f=await Kl(e,t,u);i.push({filepath:r,oldContent:d,newContent:f,oldPresent:!!l,newPresent:!!u})}}),i}async function Ul(e,t,n,r){let i;try{i=await bc(e,t,n)}catch{return ou(n)}return eu(e,await Hl(e,t,r.pathspecs,i),r)}async function Wl(e,t,n=[]){let r=[];return await qt({fs:e.lfs,cache:e.cache,dir:t,trees:[Dn(),Tn(ec)],iterate:Bl((e,[t])=>t===!0&&kc(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`||!Oc(i,n))return null;let c=await a.oid(),l=await Gl(o);if(l&&c&&(await Wt({object:l})).oid===c)return null;let u=await Kl(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 Gl(e){if(e)try{return await e.type()===`blob`?await e.content()??void 0:void 0}catch{return}}async function Kl(e,t,n){if(!n)return``;try{let{blob:r}=await Kt({fs:e.lfs,dir:t,oid:n,cache:e.cache});return new TextDecoder().decode(r)}catch{return``}}async function ql(e,t,n,r,i){try{return await Yl(e,t,await bc(e,t,n),await bc(e,t,r),i)}catch{return ou(await au(e,t,[n,r])??n)}}async function Jl(e,t,n,r,i){let a=n||`HEAD`,o=r||`HEAD`;try{let n=await bc(e,t,a),r=await bc(e,t,o),s=await dn({fs:e.lfs,cache:e.cache,dir:t,oids:[n,r]});return s[0]?await Yl(e,t,s[0],r,i):{stdout:``,stderr:`fatal: '${a}...${o}' has no merge base\n`,exitCode:128}}catch{return ou(await au(e,t,[a,o])??a)}}async function Yl(e,t,n,r,i){let a=[];return await qt({fs:e.lfs,cache:e.cache,dir:t,trees:[Sn({ref:n}),Sn({ref:r})],iterate:Bl(e=>kc(e,i.pathspecs??[])),map:async(e,[t,n])=>{if(await Ql(t,n))return null;let r=await $l(e,t,n,i.pathspecs??[]);r&&a.push(r)}}),eu(e,a,i)}async function Xl(e,t,n,r){let i;try{i=await bc(e,t,n)}catch{return ou(n)}let a=new Set(await D({fs:e.lfs,dir:t,cache:e.cache})),o=Zl(a),s=[];return await qt({fs:e.lfs,cache:e.cache,dir:t,trees:[Sn({ref:i}),Tn(ec)],iterate:Bl((e,[t])=>(t===!0||a.has(e)||o.has(e))&&kc(e,r.pathspecs??[])),map:async(e,[t,n])=>{if(!t&&!a.has(e)&&!o.has(e))return null;let i=await $l(e,t,n,r.pathspecs??[]);i&&s.push(i)}}),eu(e,s,r)}function Zl(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 Ql(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 $l(e,t,n,r){if(e===`.`||!Oc(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 eu(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: ${Js(e)}\n`,exitCode:128}}async function kc(e,t,n){let r=M(n,Rs),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 O({fs:e.lfs,cache:e.cache,dir:t,...Zs}),f=Ac(d),p=d.filter(([,e,t,n])=>e===0&&t===2&&n===0).map(([e])=>e),m;if(c||s){let n=(await O({fs:e.lfs,cache:e.cache,dir:t,ignored:!0,...Zs})).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=>Mc(e,t))));let h=new Set,g=new Set;for(let e of m){let t=jc(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 Ac(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 jc(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 Mc(e,t){let n=t.endsWith(`/`)?t.slice(0,-1):t;return e===n||e.startsWith(`${n}/`)}let Nc=null;function Pc(){return Nc||=g(),Nc}async function*Fc(e,t,n){t&&t({phase:`Receiving`,loaded:e.length,total:n??e.length}),yield e}function Ic(){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 Pc()(t,{method:n,headers:r,body:o}),c=parseInt(s.headers[`content-length`]??`0`,10)||void 0,l=Fc(s.body,a,c);return{url:s.url,method:n,headers:s.headers,body:l,statusCode:s.status,statusMessage:s.statusText}}}}const Lc=Ic();async function Rc(e,t,n){let r=Ks(n,I.clone);if(r)return r;let{flags:i,positionals:a}=M(n,I.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=b(l.startsWith(`/`)?l:`${t}/${l}`),d=L(o,`depth`),f=L(o,`branch`),p=o[`single-branch`]!==!1,m=s?``:`Cloning into '${l}'...\n`,h=zc(c,t);if(h)return Bc(e,h,u,c,l,m,f,s);try{await un({fs:e.lfs,cache:e.cache,http:Lc,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 Hc(e,u,c)}if(await e.fs.flush(),!s)try{let t=await D({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 zc(e,t){if(e.startsWith(`file://`))try{return b(decodeURIComponent(new URL(e).pathname))}catch{return null}return e.startsWith(`/`)?b(e):e.startsWith(`./`)||e.startsWith(`../`)?b(x(t,e)):null}async function Bc(e,t,n,r,i,a,o,s=!1){if(n===t||n.startsWith(`${t}/`))return Hc(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 Hc(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 A({fs:e.lfs,dir:t});if(await Vc(e,`${t}/.git`,`${n}/.git`),c&&await _n({fs:e.lfs,cache:e.cache,dir:n,ref:c,force:!0}),await bn({fs:e.lfs,dir:n,remote:`origin`,url:r,force:!0}),await e.fs.flush(),!s){let t=await D({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 Hc(e,n,r)}}async function Vc(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 Vc(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 Hc(e,t,n){return{stdout:``,stderr:`fatal: ${Js(e,n).replace(/'\/__opfs__\/[^']*<path>'/g,`'${t}'`).replace(/\/__opfs__\/[^\s'"<]*<path>/g,t).replace(/<path>/g,t)}\n`,exitCode:128}}const Uc=[`MERGE_HEAD`,`MERGE_MSG`,`MERGE_MODE`,`AUTO_MERGE`];async function Wc(e,t){return`${await On({fs:e.lfs,filepath:t})}/.git`}async function Gc(e,t){try{return(await e.fs.readTextFile(t)).trim()}catch{return}}async function Kc(e,t){try{await e.fs.rm(t)}catch{}}async function qc(e,t){try{return await Gc(e,`${await Wc(e,t)}/MERGE_HEAD`)}catch{return}}async function Jc(e,t){return await qc(e,t)!==void 0}async function Yc(e,t){try{return await Gc(e,`${await Wc(e,t)}/MERGE_MSG`)}catch{return}}async function Xc(e,t,n){let r=await Wc(e,t);await e.fs.writeFile(`${r}/ORIG_HEAD`,`${n}\n`)}async function Zc(e,t,n,r){let i=await Wc(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 Qc(e,t){let n;try{n=await Wc(e,t)}catch{return}await Promise.all(Uc.map(t=>Kc(e,`${n}/${t}`)))}async function $c(e,t){let n=await D({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 el=new Set([`message`,`author`,`date`,`file`,`cleanup`,`amend`,`all`,`allow-empty`,`m`,`a`,`F`]);async function tl(e,t,n){let r=pl(n),i=M(r,I.commit).flags,a=await qc(e,t),o=await dl(e,t,i);if(typeof o!=`string`){if(a){let n=await Yc(e,t);if(n)return await nl(e,t,i,n,a)}return o}return await nl(e,t,i,o,a)}async function nl(e,t,n,r,i){let a=n.amend===!0,o=n.all===!0,s=n[`allow-empty`]===!0;if(o&&await fl(e,t),!s&&!a&&!i&&!(await O({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 dn({fs:e.lfs,cache:e.cache,dir:t,message:r,author:await e.resolveAuthor(t),amend:a,noUpdateBranch:void 0,...i?{parent:[await E({fs:e.lfs,dir:t,ref:`HEAD`}),i]}:{}});i&&await Qc(e,t);let l=c.slice(0,7);return{stdout:`[${await A({fs:e.lfs,dir:t})??`HEAD`} ${l}] ${r}\n`,stderr:``,exitCode:0}}function rl(e,t){let n=e[t];if(n!==void 0&&n!==!0&&n!==!1)return L(e,t)}function il(e){return Object.keys(e).find(e=>!el.has(e))}function al(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function ol(e){return{stdout:``,stderr:`error: switch \`${e}\` requires a value\n`,exitCode:1}}function sl(e){let t=il(e);return t?al(t):`message`in e||`m`in e?ol(`m`):`file`in e||`F`in e?ol(`F`):{stdout:``,stderr:"error: option `-m' or `-F' is required\n",exitCode:1}}function cl(){return{stdout:``,stderr:`Aborting commit due to empty commit message.
29
+ `,exitCode:1}}function ll(e){return{stdout:``,stderr:`error: could not read log file '${e}': No such file or directory\n`,exitCode:128}}async function ul(e,t,n){if(n===`-`)return e.stdin;let r=n.startsWith(`/`)?n:`${t}/${n}`;try{return await e.fs.readTextFile(r)}catch{return ll(n)}}async function dl(e,t,n){let r=rl(n,`message`);if(r!==void 0)return r;let i=rl(n,`file`);if(i!==void 0){let n=await ul(e,t,i);return typeof n==`string`&&n===``?cl():n}return sl(n)}async function fl(e,t){let n=await O({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,a,o]of n)i!==0&&a!==o&&(a===0?await Qt({fs:e.lfs,cache:e.cache,dir:t,filepath:r}):await sn({fs:e.lfs,cache:e.cache,dir:t,filepath:r}))}function pl(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 ml(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 vl(e,t,a);if(i)return hl(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?_l(e,t,o,a):gl(e,t,o,c,a)}async function hl(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($n),r=Zn(e,n);await t.writeFile($n,r)}catch{}}else try{let r=`${t}/.git/config`,i=await e.fs.readTextFile(r),a=Zn(i,n);await e.fs.writeFile(r,a)}catch{}return{stdout:``,stderr:``,exitCode:0}}async function gl(e,t,n,r,i){return n===`credential.token`||n===`github.token`?(await e.setGithubToken(r),{stdout:``,stderr:``,exitCode:0}):(i?await Xn(await e.getGlobalFs(),n,r):await nn({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 _l(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 Qn(await e.getGlobalFs(),n):(i=await $t({fs:e.lfs,dir:t,path:n}),i||=await Qn(await e.getGlobalFs(),n)),{stdout:i?`${i}\n`:``,stderr:``,exitCode:+!i}}async function vl(e,t,n){let r=``;if(!n)try{let n=`${t}/.git/config`,i=await e.fs.readTextFile(n);r+=yl(i)}catch{}try{let t=await(await e.getGlobalFs()).readTextFile($n);r+=yl(t)}catch{}return{stdout:r,stderr:``,exitCode:0}}function yl(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 bl=`/dev/null`,xl={bytes:new Uint8Array,text:``,binary:!1};async function Sl(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([Ol(e,t,n[0]),Ol(e,t,n[1])]);[i,a]=await kl(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 Nl(e,i,a):[await jl(e,i,a)]).filter(e=>!Cl(e.oldBlob.bytes,e.newBlob.bytes));return s.length===0?{stdout:``,stderr:``,exitCode:0}:{stdout:wl(s,r,e.useColor),stderr:``,exitCode:1}}function Cl(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 wl(e,t,n){if(t.nameOnly)return`${e.map(e=>e.absent===`new`?bl:e.newName).join(`
34
+ `)}\n`;if(t.stat)return Le(e.map(El),{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 ${Tl(i,`old`)} and ${Tl(i,`new`)} differ\n`;continue}r+=Re({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 Tl(e,t){return e.absent===t?bl:t===`old`?`a/${e.oldName}`:`b/${e.newName}`}function El(e){return{name:Dl(e.absent===`old`?bl:e.oldName,e.absent===`new`?bl: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 Dl(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 Ol(e,t,n){if(n===bl)return{kind:`null`,given:n};let r=b(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 kl(e,t,n,r){return n.kind===`dir`&&(r.kind===`file`||r.kind===`null`)?[await Ol(e,t,`${n.given}/${Al(r.given)}`),r]:r.kind===`dir`&&(n.kind===`file`||n.kind===`null`)?[n,await Ol(e,t,`${r.given}/${Al(n.given)}`)]:[n,r]}function Al(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}async function jl(e,t,n){let[r,i]=await Promise.all([Ml(e,t),Ml(e,n)]),a=t.kind===`null`?`old`:n.kind===`null`?`new`:void 0,o=Il(t.kind===`null`?n.given:t.given);return{oldName:a?o:Il(t.given),newName:a?o:Il(n.given),absent:a,oldBlob:r,newBlob:i}}function Ml(e,t){return t.kind===`file`?Fl(e,t.abs):Promise.resolve(xl)}async function Nl(e,t,n){let[r,i]=await Promise.all([Pl(e,t.abs),Pl(e,n.abs)]),a=[...new Set([...r,...i])].sort(),o=[];for(let s of a){let a=Il(`${t.given}/${s}`),c=Il(`${n.given}/${s}`);i.has(s)?r.has(s)?o.push({oldName:a,newName:c,oldBlob:await Fl(e,`${t.abs}/${s}`),newBlob:await Fl(e,`${n.abs}/${s}`)}):o.push({oldName:c,newName:c,absent:`old`,oldBlob:xl,newBlob:await Fl(e,`${n.abs}/${s}`)}):o.push({oldName:a,newName:a,absent:`new`,oldBlob:await Fl(e,`${t.abs}/${s}`),newBlob:xl})}return o}async function Pl(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 Fl(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 Il(e){return e.replace(/^\/+/,``)}function Ll(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 Rl(e,t,n){let r=Ql(n),i=Ks(r,I.diff);if(i)return i;let{flags:a,positionals:o,doubleDashRest:s}=M(r,I.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:$l(a.unified)};if(a[`no-index`]===!0||a.index===!1)return Sl(e,t,o,u);if(o.length>=2)return Wl(e,t,o[0],o[1],u);if(o.length===1){let n=eu(o[0]);if(n)return Gl(e,t,n[0],n[1],u);let r=tu(o[0]);return r?Wl(e,t,r[0],r[1],u):c?Bl(e,t,o[0],u):ql(e,t,o[0],u)}return Zl(e,c?await zl(e,t,u.pathspecs):await Vl(e,t,u.pathspecs),u)}async function zl(e,t,n=[],r=`HEAD`){let i=[];return await Wt({fs:e.lfs,cache:e.cache,dir:t,trees:[yn({ref:r}),wn()],iterate:Ll(e=>Ec(e,n)),map:async(r,[a,o])=>{if(r===`.`||r===`.git`||r.startsWith(`.git/`)||!Tc(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 Ul(e,t,l),f=await Ul(e,t,u);i.push({filepath:r,oldContent:d,newContent:f,oldPresent:!!l,newPresent:!!u})}}),i}async function Bl(e,t,n,r){let i;try{i=await _c(e,t,n)}catch{return ru(n)}return Zl(e,await zl(e,t,r.pathspecs,i),r)}async function Vl(e,t,n=[]){let r=[];return await Wt({fs:e.lfs,cache:e.cache,dir:t,trees:[wn(),Sn(Zs)],iterate:Ll((e,[t])=>t===!0&&Ec(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`||!Tc(i,n))return null;let c=await a.oid(),l=await Hl(o);if(l&&c&&(await Vt({object:l})).oid===c)return null;let u=await Ul(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 Hl(e){if(e)try{return await e.type()===`blob`?await e.content()??void 0:void 0}catch{return}}async function Ul(e,t,n){if(!n)return``;try{let{blob:r}=await Ut({fs:e.lfs,dir:t,oid:n,cache:e.cache});return new TextDecoder().decode(r)}catch{return``}}async function Wl(e,t,n,r,i){try{return await Kl(e,t,await _c(e,t,n),await _c(e,t,r),i)}catch{return ru(await nu(e,t,[n,r])??n)}}async function Gl(e,t,n,r,i){let a=n||`HEAD`,o=r||`HEAD`;try{let n=await _c(e,t,a),r=await _c(e,t,o),s=await cn({fs:e.lfs,cache:e.cache,dir:t,oids:[n,r]});return s[0]?await Kl(e,t,s[0],r,i):{stdout:``,stderr:`fatal: '${a}...${o}' has no merge base\n`,exitCode:128}}catch{return ru(await nu(e,t,[a,o])??a)}}async function Kl(e,t,n,r,i){let a=[];return await Wt({fs:e.lfs,cache:e.cache,dir:t,trees:[yn({ref:n}),yn({ref:r})],iterate:Ll(e=>Ec(e,i.pathspecs??[])),map:async(e,[t,n])=>{if(await Yl(t,n))return null;let r=await Xl(e,t,n,i.pathspecs??[]);r&&a.push(r)}}),Zl(e,a,i)}async function ql(e,t,n,r){let i;try{i=await _c(e,t,n)}catch{return ru(n)}let a=new Set(await D({fs:e.lfs,dir:t,cache:e.cache})),o=Jl(a),s=[];return await Wt({fs:e.lfs,cache:e.cache,dir:t,trees:[yn({ref:i}),Sn(Zs)],iterate:Ll((e,[t])=>(t===!0||a.has(e)||o.has(e))&&Ec(e,r.pathspecs??[])),map:async(e,[t,n])=>{if(!t&&!a.has(e)&&!o.has(e))return null;let i=await Xl(e,t,n,r.pathspecs??[]);i&&s.push(i)}}),Zl(e,s,r)}function Jl(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 Yl(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 Xl(e,t,n,r){if(e===`.`||!Tc(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 Zl(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?su(t,e.useColor):{stdout:t.map(t=>Re({oldContent:t.oldContent,newContent:t.newContent,oldName:t.filepath,newName:t.filepath,context:n.context,color:e.useColor})).join(``),stderr:``,exitCode:0}}function tu(e){let t=e.indexOf(`--`);return e.map((e,n)=>(t===-1||n<t)&&/^-U\d+$/.test(e)?`--unified=${e.slice(2)}`:e)}function nu(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 ru(e){let t=e.indexOf(`...`);return t===-1?null:[e.slice(0,t),e.slice(t+3)]}function iu(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 au(e,t,n){for(let r of n)try{await bc(e,t,r)}catch{return r}return null}function ou(e){return{stdout:``,stderr:`fatal: ambiguous argument '${e}'\n`,exitCode:128}}function su(e,t=!1){return{stdout:Le(e.map(e=>({name:e.filepath,oldContent:e.oldContent,newContent:e.newContent})),{color:t}),stderr:``,exitCode:0}}async function cu(e,t,n,r){let i=[];if(await qt({fs:e.lfs,cache:e.cache,dir:t,trees:[Sn({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 su(i.map(e=>({filepath:e.filepath,oldContent:``,newContent:e.content})),e.useColor).stdout;let a=``;for(let t of i)a+=Re({oldContent:``,newContent:t.content,oldName:t.filepath,newName:t.filepath,color:e.useColor});return a}async function lu(e,t,n){let r=Ys(n,I.fetch);if(r)return r;let{flags:i,positionals:a}=M(n,I.fetch),o=i,s=a[0]??`origin`,c=a[1],l=o.prune===!0,u=o.quiet===!0,d=L(o,`depth`),f=u?``:`Fetching ${s}\n`,p=await Mn({fs:e.lfs,cache:e.cache,http:Bc,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 uu(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 uu(e,t,n,r){let i=await jn({fs:e.lfs,filepath:t}),a=r??``;await e.fs.writeFile(`${i}/.git/FETCH_HEAD`,`${n}\t\t${a}\n`)}async function du(e,t,n){let r=M(n,I.init).flags,i=L(r,`initial-branch`)??e.getConfigOverrides()?.get(`init.defaultbranch`)??`main`;return await An({fs:e.lfs,dir:t,defaultBranch:i}),{stdout:`Initialized empty Git repository in ${t}/.git/\n`,stderr:``,exitCode:0}}function fu(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 pu=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(!fu(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&&fu(this.heap[t],this.heap[n])&&(n=t),t+1<this.heap.length&&fu(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 mu(e,t,n){try{return await E({fs:e.lfs,dir:t,ref:n})}catch{return}}async function hu(e,t,n,r){try{return await k({fs:e.lfs,dir:t,oid:n,cache:r})}catch{return}}async function gu(e,t,n,r,i){let a=await Gt({fs:e.lfs,dir:t});for(let[o,s]of a.entries()){let a=await mu(e,t,s);if(a===void 0||r.has(a))continue;r.add(a);let c=await hu(e,t,a,i);c&&n.push(c,o)}}async function*_u(e,t,n){let r=new Set,i=new pu;for(await gu(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 hu(e,t,o,n.cache);s&&i.push(s,a.tipRank)}}}async function vu(e,t,n){let r=[];if(n.limit<=0)return r;for await(let i of _u(e,t,{cache:n.cache}))if(r.push(i),r.length>=n.limit)break;return r}async function yu(e,t,n){let{flags:r,positionals:i,doubleDashRest:a}=M(n,I.log),o=r,s=L(o,`max-count`),c=o.oneline===!0,l=o.stat===!0,u=o.reverse===!0,d=o.all===!0,f=L(o,`format`),p=L(o,`author`),m=L(o,`grep`),h=L(o,`follow`),g=await bu(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 ku(e,t,g,{format:f,oneline:c,showStat:l}),stderr:``,exitCode:0}}async function bu(e,t,n){let r=n.revision?Nu(n.revision):null,i=r?.[1]??n.revision,a=Pu(e.cache),o=n.maxCount??10;if(n.pathspecs.length>0&&!n.all&&!r&&!n.followFile)return await Eu(e,t,{ref:i,pathspecs:n.pathspecs,limit:o,caches:a});if(n.all&&n.pathspecs.length>0)return await Cu(e,t,{pathspecs:n.pathspecs,limit:o,caches:a,exclude:r?await Su(e,t,r[0],a):void 0});let s=n.all?await vu(e,t,{limit:n.maxCount??xu,cache:a.git}):await vn({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 Su(e,t,r[0],a);s=s.filter(e=>!n.has(e.oid))}return n.pathspecs.length>0?await Ou(e,t,s,n.pathspecs,o,a):r?s.slice(0,o):s}const xu=50;async function Su(e,t,n,r){let i=await vn({fs:e.lfs,dir:t,cache:r.git,ref:n});return new Set(i.map(e=>e.oid))}async function Cu(e,t,n){let r=[],i=[],a=async()=>{if(i.length>0){let a=n.limit-r.length;r.push(...await Ou(e,t,i,n.pathspecs,a,n.caches)),i=[]}return r.length>=n.limit};for await(let o of _u(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 wu(e){let t=e.replace(/^\.\//,``).replace(/\/+$/,``);return t===`.`?``:t}function Tu(e){let t=[...new Set(e.map(wu))];return t.some(e=>e===``)?null:t}async function Eu(e,t,n){let r=n.ref?{ref:n.ref}:{},i=Tu(n.pathspecs);return i===null?await vn({fs:e.lfs,dir:t,cache:n.caches.git,...r,depth:n.limit}):i.length===1?(await vn({fs:e.lfs,dir:t,cache:n.caches.git,...r,filepath:i[0],depth:n.limit,force:!0})).slice(0,n.limit):await Du(e,t,{refArg:r,specs:i,limit:n.limit,caches:n.caches})}async function Du(e,t,n){let r=[],i=0,a=Math.max(n.limit*4,32);for(;;){let o=await vn({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 Ru(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 Ou(e,t,n,r,i,a){let o=Tu(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 Ru(e,t,r,o,a)&&s.push(r),s.length>=i)break;return s}async function ku(e,t,n,r){let i=``;for(let a of n){let{commit:n,oid:o}=a;r.format?i+=`${Au(o,n,r.format)}\n`:r.oneline?i+=`${dc(e.useColor,`33`,o.slice(0,7))} ${n.message.split(`
37
- `)[0]}\n`:(i+=`${dc(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 Mu(e,t,a))}return i}function Au(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,ju(r))}function ju(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 Mu(e,t,n){let{commit:r,oid:i}=n,a=r.parent.length>0?r.parent[0]:void 0;return a?(await ql(e,t,a,i,{nameOnly:!1,stat:!0})).stdout:await cu(e,t,i,!0)}function Nu(e){let t=/^(.+)\.\.([^.]*)$/.exec(e);return t?.[2]?[t[1],t[2]]:null}function Pu(e){return{git:e,commitTrees:new Map,trees:new Map,entries:new Map}}async function Fu(e,t,n,r){let i=r.trees.get(n);if(i)return i;let{tree:a}=await Xt({fs:e.lfs,dir:t,oid:n,cache:r.git});return r.trees.set(n,a),a}async function Iu(e,t,n,r){let i=r.commitTrees.get(n);if(i)return i;let{commit:a}=await k({fs:e.lfs,dir:t,oid:n,cache:r.git});return r.commitTrees.set(n,a.tree),a.tree}async function Lu(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 Fu(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 Ru(e,t,n,r,i){let a=n.commit.parent[0],o=a?await Iu(e,t,a,i):void 0;for(let a of r)if(await Lu(e,t,n.commit.tree,a,i)!==(o===void 0?void 0:await Lu(e,t,o,a,i)))return!0;return!1}async function zu(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 O({fs:e.lfs,cache:e.cache,dir:t,...ec}),c=[],l=i?`others`:r?`modified`:a?`deleted`:`cached`;for(let[e,t,n,r]of s)Vu(l,t,n,r)&&(o.length>0&&!Bu(e,o)||c.push(e));return c.sort(),{stdout:c.map(e=>`${e}\n`).join(``),stderr:``,exitCode:0}}function Bu(e,t){for(let n of t)if(e===n||e.startsWith(n+`/`))return!0;return!1}function Vu(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 Hu(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 $t({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 yn({http:Bc,url:l,corsProxy:e.corsProxy,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),prefix:t,symrefs:a,peelTags:i})).filter(e=>Uu(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: ${$s(e instanceof Error?e.message:String(e),l)}\n`,exitCode:128}}}function Uu(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 Wu(e,t,n){let{flags:r,positionals:i}=M(n,I[`ls-tree`]),a=r.r===!0,o=r.d===!0,s=r[`name-only`]===!0,c=i[0],l=Gu(i.slice(1));if(!c)return{stdout:``,stderr:`usage: git ls-tree [<options>] <tree-ish> [<path>...]
40
- `,exitCode:129};let u=await Sc(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 Xt({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 Ku(e,t,d,``,l,a,o,s,f),{stdout:f.join(``),stderr:``,exitCode:0}}function Gu(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 Ku(e,t,n,r,i,a,o,s,c){for(let l of n){let n=r?`${r}/${l.path}`:l.path,u=qu(n,i);if(u!==`no`){if(l.type===`tree`){let r=u===`exact`&&(o||!a),d=u===`parent`||a;if(r&&c.push(Ju(l,n,s)),d){let{tree:r}=await Xt({fs:e.lfs,cache:e.cache,dir:t,oid:l.oid});await Ku(e,t,r,n,i,a,o,s,c)}}else u!==`parent`&&!o&&c.push(Ju(l,n,s))}}}function qu(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 Ju(e,t,n){return n?`${t}\n`:`${e.mode.padStart(6,`0`)} ${e.type} ${e.oid}\t${t}\n`}function Yu(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function Xu(e,t){let n,r=!1;for(let t of Yu(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 Zu(e,t,n){let r=Ys(n,I.merge);if(r)return r;let i=M(n,I.merge);if(i.flags.abort===!0)return Qu(e,t);let a=i.positionals[0];if(!a)return{stdout:``,stderr:`fatal: No branch specified to merge.
41
- `,exitCode:128};if(await Zc(e,t))return{stdout:``,stderr:`fatal: You have not concluded your merge (MERGE_HEAD exists).
36
+ `)}\n`,stderr:``,exitCode:0}:n.stat?iu(t,e.useColor):{stdout:t.map(t=>Re({oldContent:t.oldContent,newContent:t.newContent,oldName:t.filepath,newName:t.filepath,context:n.context,color:e.useColor})).join(``),stderr:``,exitCode:0}}function Ql(e){let t=e.indexOf(`--`);return e.map((e,n)=>(t===-1||n<t)&&/^-U\d+$/.test(e)?`--unified=${e.slice(2)}`:e)}function $l(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 eu(e){let t=e.indexOf(`...`);return t===-1?null:[e.slice(0,t),e.slice(t+3)]}function tu(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 nu(e,t,n){for(let r of n)try{await _c(e,t,r)}catch{return r}return null}function ru(e){return{stdout:``,stderr:`fatal: ambiguous argument '${e}'\n`,exitCode:128}}function iu(e,t=!1){return{stdout:Le(e.map(e=>({name:e.filepath,oldContent:e.oldContent,newContent:e.newContent})),{color:t}),stderr:``,exitCode:0}}async function au(e,t,n,r){let i=[];if(await Wt({fs:e.lfs,cache:e.cache,dir:t,trees:[yn({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 iu(i.map(e=>({filepath:e.filepath,oldContent:``,newContent:e.content})),e.useColor).stdout;let a=``;for(let t of i)a+=Re({oldContent:``,newContent:t.content,oldName:t.filepath,newName:t.filepath,color:e.useColor});return a}async function ou(e,t,n){let r=Ks(n,I.fetch);if(r)return r;let{flags:i,positionals:a}=M(n,I.fetch),o=i,s=a[0]??`origin`,c=a[1],l=o.prune===!0,u=o.quiet===!0,d=L(o,`depth`),f=u?``:`Fetching ${s}\n`,p=await kn({fs:e.lfs,cache:e.cache,http:Lc,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 su(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 su(e,t,n,r){let i=await On({fs:e.lfs,filepath:t}),a=r??``;await e.fs.writeFile(`${i}/.git/FETCH_HEAD`,`${n}\t\t${a}\n`)}async function cu(e,t,n){let r=M(n,I.init).flags,i=L(r,`initial-branch`)??e.getConfigOverrides()?.get(`init.defaultbranch`)??`main`;return await Dn({fs:e.lfs,dir:t,defaultBranch:i}),{stdout:`Initialized empty Git repository in ${t}/.git/\n`,stderr:``,exitCode:0}}function lu(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 uu=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(!lu(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&&lu(this.heap[t],this.heap[n])&&(n=t),t+1<this.heap.length&&lu(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 du(e,t,n){try{return await E({fs:e.lfs,dir:t,ref:n})}catch{return}}async function fu(e,t,n,r){try{return await k({fs:e.lfs,dir:t,oid:n,cache:r})}catch{return}}async function pu(e,t,n,r,i){let a=await Ht({fs:e.lfs,dir:t});for(let[o,s]of a.entries()){let a=await du(e,t,s);if(a===void 0||r.has(a))continue;r.add(a);let c=await fu(e,t,a,i);c&&n.push(c,o)}}async function*mu(e,t,n){let r=new Set,i=new uu;for(await pu(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 fu(e,t,o,n.cache);s&&i.push(s,a.tipRank)}}}async function hu(e,t,n){let r=[];if(n.limit<=0)return r;for await(let i of mu(e,t,{cache:n.cache}))if(r.push(i),r.length>=n.limit)break;return r}async function gu(e,t,n){let{flags:r,positionals:i,doubleDashRest:a}=M(n,I.log),o=r,s=L(o,`max-count`),c=o.oneline===!0,l=o.stat===!0,u=o.reverse===!0,d=o.all===!0,f=L(o,`format`),p=L(o,`author`),m=L(o,`grep`),h=L(o,`follow`),g=await _u(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 Eu(e,t,g,{format:f,oneline:c,showStat:l}),stderr:``,exitCode:0}}async function _u(e,t,n){let r=n.revision?Au(n.revision):null,i=r?.[1]??n.revision,a=ju(e.cache),o=n.maxCount??10;if(n.pathspecs.length>0&&!n.all&&!r&&!n.followFile)return await Cu(e,t,{ref:i,pathspecs:n.pathspecs,limit:o,caches:a});if(n.all&&n.pathspecs.length>0)return await bu(e,t,{pathspecs:n.pathspecs,limit:o,caches:a,exclude:r?await yu(e,t,r[0],a):void 0});let s=n.all?await hu(e,t,{limit:n.maxCount??vu,cache:a.git}):await hn({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 yu(e,t,r[0],a);s=s.filter(e=>!n.has(e.oid))}return n.pathspecs.length>0?await Tu(e,t,s,n.pathspecs,o,a):r?s.slice(0,o):s}const vu=50;async function yu(e,t,n,r){let i=await hn({fs:e.lfs,dir:t,cache:r.git,ref:n});return new Set(i.map(e=>e.oid))}async function bu(e,t,n){let r=[],i=[],a=async()=>{if(i.length>0){let a=n.limit-r.length;r.push(...await Tu(e,t,i,n.pathspecs,a,n.caches)),i=[]}return r.length>=n.limit};for await(let o of mu(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 xu(e){let t=e.replace(/^\.\//,``).replace(/\/+$/,``);return t===`.`?``:t}function Su(e){let t=[...new Set(e.map(xu))];return t.some(e=>e===``)?null:t}async function Cu(e,t,n){let r=n.ref?{ref:n.ref}:{},i=Su(n.pathspecs);return i===null?await hn({fs:e.lfs,dir:t,cache:n.caches.git,...r,depth:n.limit}):i.length===1?(await hn({fs:e.lfs,dir:t,cache:n.caches.git,...r,filepath:i[0],depth:n.limit,force:!0})).slice(0,n.limit):await wu(e,t,{refArg:r,specs:i,limit:n.limit,caches:n.caches})}async function wu(e,t,n){let r=[],i=0,a=Math.max(n.limit*4,32);for(;;){let o=await hn({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 Fu(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 Tu(e,t,n,r,i,a){let o=Su(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 Fu(e,t,r,o,a)&&s.push(r),s.length>=i)break;return s}async function Eu(e,t,n,r){let i=``;for(let a of n){let{commit:n,oid:o}=a;r.format?i+=`${Du(o,n,r.format)}\n`:r.oneline?i+=`${cc(e.useColor,`33`,o.slice(0,7))} ${n.message.split(`
37
+ `)[0]}\n`:(i+=`${cc(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 ku(e,t,a))}return i}function Du(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,Ou(r))}function Ou(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 ku(e,t,n){let{commit:r,oid:i}=n,a=r.parent.length>0?r.parent[0]:void 0;return a?(await Wl(e,t,a,i,{nameOnly:!1,stat:!0})).stdout:await au(e,t,i,!0)}function Au(e){let t=/^(.+)\.\.([^.]*)$/.exec(e);return t?.[2]?[t[1],t[2]]:null}function ju(e){return{git:e,commitTrees:new Map,trees:new Map,entries:new Map}}async function Mu(e,t,n,r){let i=r.trees.get(n);if(i)return i;let{tree:a}=await qt({fs:e.lfs,dir:t,oid:n,cache:r.git});return r.trees.set(n,a),a}async function Nu(e,t,n,r){let i=r.commitTrees.get(n);if(i)return i;let{commit:a}=await k({fs:e.lfs,dir:t,oid:n,cache:r.git});return r.commitTrees.set(n,a.tree),a.tree}async function Pu(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 Mu(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 Fu(e,t,n,r,i){let a=n.commit.parent[0],o=a?await Nu(e,t,a,i):void 0;for(let a of r)if(await Pu(e,t,n.commit.tree,a,i)!==(o===void 0?void 0:await Pu(e,t,o,a,i)))return!0;return!1}async function Iu(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 O({fs:e.lfs,cache:e.cache,dir:t,...Zs}),c=[],l=i?`others`:r?`modified`:a?`deleted`:`cached`;for(let[e,t,n,r]of s)Ru(l,t,n,r)&&(o.length>0&&!Lu(e,o)||c.push(e));return c.sort(),{stdout:c.map(e=>`${e}\n`).join(``),stderr:``,exitCode:0}}function Lu(e,t){for(let n of t)if(e===n||e.startsWith(n+`/`))return!0;return!1}function Ru(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 zu(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 Xt({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 gn({http:Lc,url:l,corsProxy:e.corsProxy,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),prefix:t,symrefs:a,peelTags:i})).filter(e=>Bu(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: ${Xs(e instanceof Error?e.message:String(e),l)}\n`,exitCode:128}}}function Bu(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 Vu(e,t,n){let{flags:r,positionals:i}=M(n,I[`ls-tree`]),a=r.r===!0,o=r.d===!0,s=r[`name-only`]===!0,c=i[0],l=Hu(i.slice(1));if(!c)return{stdout:``,stderr:`usage: git ls-tree [<options>] <tree-ish> [<path>...]
40
+ `,exitCode:129};let u=await yc(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 qt({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 Uu(e,t,d,``,l,a,o,s,f),{stdout:f.join(``),stderr:``,exitCode:0}}function Hu(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 Uu(e,t,n,r,i,a,o,s,c){for(let l of n){let n=r?`${r}/${l.path}`:l.path,u=Wu(n,i);if(u!==`no`){if(l.type===`tree`){let r=u===`exact`&&(o||!a),d=u===`parent`||a;if(r&&c.push(Gu(l,n,s)),d){let{tree:r}=await qt({fs:e.lfs,cache:e.cache,dir:t,oid:l.oid});await Uu(e,t,r,n,i,a,o,s,c)}}else u!==`parent`&&!o&&c.push(Gu(l,n,s))}}}function Wu(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 Gu(e,t,n){return n?`${t}\n`:`${e.mode.padStart(6,`0`)} ${e.type} ${e.oid}\t${t}\n`}function Ku(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function qu(e,t){let n,r=!1;for(let t of Ku(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 Ju(e,t,n){let r=Ks(n,I.merge);if(r)return r;let i=M(n,I.merge);if(i.flags.abort===!0)return Yu(e,t);let a=i.positionals[0];if(!a)return{stdout:``,stderr:`fatal: No branch specified to merge.
41
+ `,exitCode:128};if(await Jc(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 Sc(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}=Xu(i,n);try{await $c(e,t,await E({fs:e.lfs,dir:t,ref:`HEAD`}));let n=await Zt({fs:e.lfs,cache:e.cache,dir:t,ours:await A({fs:e.lfs,dir:t})??void 0,theirs:o,fastForward:!s,fastForwardOnly:c,author:await e.resolveAuthor(t),abortOnConflict:!1,mergeDriver:yc({favor:l,diff3:u})});return n.alreadyMerged?{stdout:`Already up to date.
44
- `,stderr:``,exitCode:0}:n.fastForward?(await bn({fs:e.lfs,cache:e.cache,dir:t,ref:await A({fs:e.lfs,dir:t})??`HEAD`}),{stdout:`Updating..${n.oid?n.oid.slice(0,7):``}\nFast-forward\n`,stderr:``,exitCode:0}):n.mergeCommit?(await bn({fs:e.lfs,cache:e.cache,dir:t,ref:await A({fs:e.lfs,dir:t})??`HEAD`,force:!0}),{stdout:`Merge made by the 'ort' strategy.
43
+ `,exitCode:128};let o=await yc(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}=qu(i,n);try{await Xc(e,t,await E({fs:e.lfs,dir:t,ref:`HEAD`}));let n=await Jt({fs:e.lfs,cache:e.cache,dir:t,ours:await A({fs:e.lfs,dir:t})??void 0,theirs:o,fastForward:!s,fastForwardOnly:c,author:await e.resolveAuthor(t),abortOnConflict:!1,mergeDriver:gc({favor:l,diff3:u})});return n.alreadyMerged?{stdout:`Already up to date.
44
+ `,stderr:``,exitCode:0}:n.fastForward?(await _n({fs:e.lfs,cache:e.cache,dir:t,ref:await A({fs:e.lfs,dir:t})??`HEAD`}),{stdout:`Updating..${n.oid?n.oid.slice(0,7):``}\nFast-forward\n`,stderr:``,exitCode:0}):n.mergeCommit?(await _n({fs:e.lfs,cache:e.cache,dir:t,ref:await A({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 el(e,t,o,`Merge branch '${a}' into ${await A({fs:e.lfs,dir:t})??`HEAD`}`),$u(n)}}async function Qu(e,t){if(!await Zc(e,t))return{stdout:``,stderr:`fatal: There is no merge to abort (MERGE_HEAD missing).
47
- `,exitCode:128};try{await _n({fs:e.lfs,cache:e.cache,dir:t,commit:`HEAD`})}catch{}return await bn({fs:e.lfs,cache:e.cache,dir:t,ref:await A({fs:e.lfs,dir:t})??`HEAD`,force:!0}),await tl(e,t),{stdout:``,stderr:``,exitCode:0}}function $u(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 Zc(e,t,o,`Merge branch '${a}' into ${await A({fs:e.lfs,dir:t})??`HEAD`}`),Xu(n)}}async function Yu(e,t){if(!await Jc(e,t))return{stdout:``,stderr:`fatal: There is no merge to abort (MERGE_HEAD missing).
47
+ `,exitCode:128};try{await mn({fs:e.lfs,cache:e.cache,dir:t,commit:`HEAD`})}catch{}return await _n({fs:e.lfs,cache:e.cache,dir:t,ref:await A({fs:e.lfs,dir:t})??`HEAD`,force:!0}),await Qc(e,t),{stdout:``,stderr:``,exitCode:0}}function Xu(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 ed(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=>bc(e,t,n)));if(r)return n[0]===n[1]?{stdout:``,stderr:``,exitCode:0}:{stdout:``,stderr:``,exitCode:+!await rn({fs:e.lfs,cache:e.cache,dir:t,oid:n[1],ancestor:n[0],depth:-1})};let a=await dn({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 td(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}async function nd(e,t,n){let r=M(n,I[`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=td(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 Zu(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=>_c(e,t,n)));if(r)return n[0]===n[1]?{stdout:``,stderr:``,exitCode:0}:{stdout:``,stderr:``,exitCode:+!await en({fs:e.lfs,cache:e.cache,dir:t,oid:n[1],ancestor:n[0],depth:-1})};let a=await cn({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 Qu(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}async function $u(e,t,n){let r=M(n,I[`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=Qu(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=ze(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 rd(e,t,n){let r=Ys(n,I.pull);if(r)return r;let{flags:i,positionals:a}=M(n,I.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 Qt({fs:e.lfs,cache:e.cache,http:Bc,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 id(e,t,n){let{flags:r,positionals:i}=M(n,I.push),a=r.force===!0,o=r[`set-upstream`]===!0,s=r[`dry-run`]===!0,c=i[0]??`origin`,l=i[1]??await A({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 en({fs:e.lfs,cache:e.cache,http:Bc,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 on({fs:e.lfs,dir:t,path:`branch.${l}.remote`,value:c}),await on({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 $t({fs:e.lfs,dir:t}).catch(()=>[])).find(e=>e.remote===c)?.url;return{stdout:``,stderr:`error: failed to push to '${c}': ${$s(String(d.error),n)}\n`,exitCode:1}}return{stdout:u,stderr:``,exitCode:0}}function ad(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}const od=`.git/rebase-merge`;async function sd(e,t,n){let{flags:r,positionals:i}=M(n,I.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 dd(e,t):r.continue?await ld(e,t):r.skip?await ud(e,t):await cd(e,t,i[0],r)}catch(e){return{stdout:``,stderr:`fatal: ${Zs(e)}\n`,exitCode:128}}}async function cd(e,t,n,r){if(!n)return{stdout:``,stderr:`fatal: No upstream specified.
57
- `,exitCode:128};if(await yd(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=ze(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 ed(e,t,n){let r=Ks(n,I.pull);if(r)return r;let{flags:i,positionals:a}=M(n,I.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 Yt({fs:e.lfs,cache:e.cache,http:Lc,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 td(e,t,n){let{flags:r,positionals:i}=M(n,I.push),a=r.force===!0,o=r[`set-upstream`]===!0,s=r[`dry-run`]===!0,c=i[0]??`origin`,l=i[1]??await A({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 Zt({fs:e.lfs,cache:e.cache,http:Lc,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 nn({fs:e.lfs,dir:t,path:`branch.${l}.remote`,value:c}),await nn({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 Xt({fs:e.lfs,dir:t}).catch(()=>[])).find(e=>e.remote===c)?.url;return{stdout:``,stderr:`error: failed to push to '${c}': ${Xs(String(d.error),n)}\n`,exitCode:1}}return{stdout:u,stderr:``,exitCode:0}}function nd(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}const rd=`.git/rebase-merge`;async function id(e,t,n){let{flags:r,positionals:i}=M(n,I.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 cd(e,t):r.continue?await od(e,t):r.skip?await sd(e,t):await ad(e,t,i[0],r)}catch(e){return{stdout:``,stderr:`fatal: ${Js(e)}\n`,exitCode:128}}}async function ad(e,t,n,r){if(!n)return{stdout:``,stderr:`fatal: No upstream specified.
57
+ `,exitCode:128};if(await gd(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 A({fs:e.lfs,dir:t});if(!i)return{stdout:``,stderr:`fatal: no such branch/commit (detached HEAD)
60
- `,exitCode:128};let a=await hd(e,t,n);if(!a)return{stdout:``,stderr:`fatal: invalid upstream '${n}'\n`,exitCode:128};let o=await E({fs:e.lfs,dir:t,ref:`HEAD`}),s=await _d(e,t);if(s)return s;let[c]=await dn({fs:e.lfs,cache:e.cache,dir:t,oids:[o,a]});if(c===o)return await vd(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 gd(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 ad(r[`strategy-option`]))e===`ours`||e===`theirs`||e===`union`?d=e:e===`diff3`&&(f=!0);return await vd(e,t,i,a),fd(e,t,{onto:a,origHead:o,headName:`refs/heads/${i}`,branch:i,todo:l.map(e=>e.oid),favor:d,diff3:f})}async function ld(e,t){let n=await xd(e,t);if(!n)return md();if(n.current){let{commit:r}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n.current});await mn({fs:e.lfs,cache:e.cache,dir:t,message:r.message,author:r.author,committer:await e.resolveAuthor(t)}),n.current=void 0}return fd(e,t,n)}async function ud(e,t){let n=await xd(e,t);return n?(await bn({fs:e.lfs,cache:e.cache,dir:t,ref:n.branch,force:!0}),n.current=void 0,fd(e,t,n)):md()}async function dd(e,t){let n=await xd(e,t);return n?(await vd(e,t,n.branch,n.origHead),await Cd(e,t),{stdout:``,stderr:``,exitCode:0}):md()}async function fd(e,t,n){for(;n.todo.length>0;){let r=n.todo[0],{commit:i}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:r}),a=i.message.split(`
61
- `)[0];try{await On({fs:e.lfs,cache:e.cache,dir:t,oid:r,abortOnConflict:!1,committer:await e.resolveAuthor(t),mergeDriver:yc({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 Sd(e,t,n),pd(r,a,o)}throw i}n.todo=n.todo.slice(1)}return await Cd(e,t),{stdout:`Successfully rebased and updated ${n.headName}.\n`,stderr:``,exitCode:0}}function pd(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 fd(e,t,n);if(!a)return{stdout:``,stderr:`fatal: invalid upstream '${n}'\n`,exitCode:128};let o=await E({fs:e.lfs,dir:t,ref:`HEAD`}),s=await md(e,t);if(s)return s;let[c]=await cn({fs:e.lfs,cache:e.cache,dir:t,oids:[o,a]});if(c===o)return await hd(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 pd(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 nd(r[`strategy-option`]))e===`ours`||e===`theirs`||e===`union`?d=e:e===`diff3`&&(f=!0);return await hd(e,t,i,a),ld(e,t,{onto:a,origHead:o,headName:`refs/heads/${i}`,branch:i,todo:l.map(e=>e.oid),favor:d,diff3:f})}async function od(e,t){let n=await vd(e,t);if(!n)return dd();if(n.current){let{commit:r}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n.current});await dn({fs:e.lfs,cache:e.cache,dir:t,message:r.message,author:r.author,committer:await e.resolveAuthor(t)}),n.current=void 0}return ld(e,t,n)}async function sd(e,t){let n=await vd(e,t);return n?(await _n({fs:e.lfs,cache:e.cache,dir:t,ref:n.branch,force:!0}),n.current=void 0,ld(e,t,n)):dd()}async function cd(e,t){let n=await vd(e,t);return n?(await hd(e,t,n.branch,n.origHead),await bd(e,t),{stdout:``,stderr:``,exitCode:0}):dd()}async function ld(e,t,n){for(;n.todo.length>0;){let r=n.todo[0],{commit:i}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:r}),a=i.message.split(`
61
+ `)[0];try{await Tn({fs:e.lfs,cache:e.cache,dir:t,oid:r,abortOnConflict:!1,committer:await e.resolveAuthor(t),mergeDriver:gc({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 yd(e,t,n),ud(r,a,o)}throw i}n.todo=n.todo.slice(1)}return await bd(e,t),{stdout:`Successfully rebased and updated ${n.headName}.\n`,stderr:``,exitCode:0}}function ud(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 md(){return{stdout:``,stderr:`fatal: No rebase in progress?
66
- `,exitCode:128}}async function hd(e,t,n){return await Sc(e,t,n)}async function gd(e,t,n,r){let i=await vn({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 _d(e,t){let n=await O({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 dd(){return{stdout:``,stderr:`fatal: No rebase in progress?
66
+ `,exitCode:128}}async function fd(e,t,n){return await yc(e,t,n)}async function pd(e,t,n,r){let i=await hn({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 md(e,t){let n=await O({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 vd(e,t,n,r){await Jt({fs:e.lfs,dir:t,ref:`refs/heads/${n}`,value:r,force:!0}),await bn({fs:e.lfs,cache:e.cache,dir:t,ref:n,force:!0})}async function yd(e,t){return e.fs.exists(`${t}/${od}/onto`)}async function bd(e,t,n){try{return(await e.fs.readTextFile(`${t}/${od}/${n}`)).trim()}catch{return}}async function xd(e,t){let n=await bd(e,t,`onto`),r=await bd(e,t,`orig-head`),i=await bd(e,t,`head-name`);if(!n||!r||!i)return;let a=(await bd(e,t,`git-rebase-todo`)??``).split(`
71
- `).map(e=>e.replace(/^pick\s+/,``).trim()).filter(e=>e.length>0),o=await bd(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 bd(e,t,`stopped-sha`),todo:a,favor:s,diff3:c}}async function Sd(e,t,n){let r=`${t}/${od}`;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 wd(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 wd(e,`${r}/strategy-opts`)}async function Cd(e,t){try{await e.fs.rm(`${t}/${od}`,{recursive:!0})}catch{}}async function wd(e,t){try{await e.fs.rm(t)}catch{}}async function Td(e,t,n){let[r,...i]=n;if(r===`add`&&i.length>=2){let[n,r]=i;return await Cn({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 hn({fs:e.lfs,dir:t,remote:n}),{stdout:``,stderr:``,exitCode:0}}let a=n.includes(`-v`)||n.includes(`--verbose`),o=await $t({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 Ed(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 O({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,,a]of n)a!==i&&await Nn({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 O({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,,a]of n)a!==i&&await Nn({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}for(let r of n)await Nn({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}let c=o[0]??`HEAD`,l=await E({fs:e.lfs,dir:t,ref:c}),u=await A({fs:e.lfs,dir:t,fullname:!0});if(!u)return{stdout:``,stderr:`fatal: not on a branch, cannot reset
73
- `,exitCode:128};if(await Jt({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 D({fs:e.lfs,cache:e.cache,dir:t}));for(let n of d)await tn({fs:e.lfs,cache:e.cache,dir:t,filepath:n});return await Od(e,t,l),i?(await Ad(e,t,l,d),await Dd(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 Dd(e,t,n){try{await _n({fs:e.lfs,cache:e.cache,dir:t,commit:n})}catch{}await tl(e,t)}async function Od(e,t,n){let{tree:r}=await Xt({fs:e.lfs,cache:e.cache,dir:t,oid:n});await kd(e,t,n,r,``)}async function kd(e,t,n,r,i){for(let a of r){let r=i?`${i}/${a.path}`:a.path;if(a.type===`blob`)await Nn({fs:e.lfs,cache:e.cache,dir:t,filepath:r,ref:n});else if(a.type===`tree`){let{tree:i}=await Xt({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await kd(e,t,n,i,r)}}}async function Ad(e,t,n,r){let i=new Set,{tree:a}=await Xt({fs:e.lfs,cache:e.cache,dir:t,oid:n});await jd(e,t,a,``,i);for(let r of i){let{blob:i}=await Kt({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 jd(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 Xt({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await jd(e,t,r,n,i)}}}async function Md(e,t,n){if(n.includes(`--show-toplevel`))try{return{stdout:`${await jn({fs:e.lfs,filepath:t})}\n`,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`fatal: not a git repository
74
- `,exitCode:128}}if(n.includes(`--is-inside-work-tree`))try{return await jn({fs:e.lfs,filepath:t}),{stdout:`true
70
+ `,exitCode:128}}async function hd(e,t,n,r){await Gt({fs:e.lfs,dir:t,ref:`refs/heads/${n}`,value:r,force:!0}),await _n({fs:e.lfs,cache:e.cache,dir:t,ref:n,force:!0})}async function gd(e,t){return e.fs.exists(`${t}/${rd}/onto`)}async function _d(e,t,n){try{return(await e.fs.readTextFile(`${t}/${rd}/${n}`)).trim()}catch{return}}async function vd(e,t){let n=await _d(e,t,`onto`),r=await _d(e,t,`orig-head`),i=await _d(e,t,`head-name`);if(!n||!r||!i)return;let a=(await _d(e,t,`git-rebase-todo`)??``).split(`
71
+ `).map(e=>e.replace(/^pick\s+/,``).trim()).filter(e=>e.length>0),o=await _d(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 _d(e,t,`stopped-sha`),todo:a,favor:s,diff3:c}}async function yd(e,t,n){let r=`${t}/${rd}`;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 xd(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 xd(e,`${r}/strategy-opts`)}async function bd(e,t){try{await e.fs.rm(`${t}/${rd}`,{recursive:!0})}catch{}}async function xd(e,t){try{await e.fs.rm(t)}catch{}}async function Sd(e,t,n){let[r,...i]=n;if(r===`add`&&i.length>=2){let[n,r]=i;return await bn({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 fn({fs:e.lfs,dir:t,remote:n}),{stdout:``,stderr:``,exitCode:0}}let a=n.includes(`-v`)||n.includes(`--verbose`),o=await Xt({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 Cd(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 O({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,,a]of n)a!==i&&await An({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 O({fs:e.lfs,cache:e.cache,dir:t});for(let[r,i,,a]of n)a!==i&&await An({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}for(let r of n)await An({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}let c=o[0]??`HEAD`,l=await E({fs:e.lfs,dir:t,ref:c}),u=await A({fs:e.lfs,dir:t,fullname:!0});if(!u)return{stdout:``,stderr:`fatal: not on a branch, cannot reset
73
+ `,exitCode:128};if(await Gt({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 D({fs:e.lfs,cache:e.cache,dir:t}));for(let n of d)await Qt({fs:e.lfs,cache:e.cache,dir:t,filepath:n});return await Td(e,t,l),i?(await Dd(e,t,l,d),await wd(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 wd(e,t,n){try{await mn({fs:e.lfs,cache:e.cache,dir:t,commit:n})}catch{}await Qc(e,t)}async function Td(e,t,n){let{tree:r}=await qt({fs:e.lfs,cache:e.cache,dir:t,oid:n});await Ed(e,t,n,r,``)}async function Ed(e,t,n,r,i){for(let a of r){let r=i?`${i}/${a.path}`:a.path;if(a.type===`blob`)await An({fs:e.lfs,cache:e.cache,dir:t,filepath:r,ref:n});else if(a.type===`tree`){let{tree:i}=await qt({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await Ed(e,t,n,i,r)}}}async function Dd(e,t,n,r){let i=new Set,{tree:a}=await qt({fs:e.lfs,cache:e.cache,dir:t,oid:n});await Od(e,t,a,``,i);for(let r of i){let{blob:i}=await Ut({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 Od(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 qt({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await Od(e,t,r,n,i)}}}async function kd(e,t,n){if(n.includes(`--show-toplevel`))try{return{stdout:`${await On({fs:e.lfs,filepath:t})}\n`,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`fatal: not a git repository
74
+ `,exitCode:128}}if(n.includes(`--is-inside-work-tree`))try{return await On({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 A({fs:e.lfs,dir:t})??`HEAD`}\n`,stderr:``,exitCode:0}:{stdout:`${r.replace(/^refs\/(?:heads|tags|remotes)\//,``)}\n`,stderr:``,exitCode:0};let i=await bc(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 Nd(e,t,n){let{flags:r,positionals:i}=M(n,I.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 Sc(e,t,o);if(s===void 0)return{stdout:``,stderr:`fatal: bad revision '${o}'\n`,exitCode:128};let c;try{c=await E({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 A({fs:e.lfs,dir:t})??`HEAD`}\n`,stderr:``,exitCode:0}:{stdout:`${r.replace(/^refs\/(?:heads|tags|remotes)\//,``)}\n`,stderr:``,exitCode:0};let i=await _c(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 Ad(e,t,n){let{flags:r,positionals:i}=M(n,I.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 yc(e,t,o);if(s===void 0)return{stdout:``,stderr:`fatal: bad revision '${o}'\n`,exitCode:128};let c;try{c=await E({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 k({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 A({fs:e.lfs,dir:t})??`HEAD`;try{let n=await Pd(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 A({fs:e.lfs,dir:t})??`HEAD`;try{let n=await jd(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 mn({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: ${Zs(e)}\n`,exitCode:128}}}async function Pd(e,t,n,r,i,a){let[o,s,c]=await Promise.all([D({fs:e.lfs,cache:e.cache,dir:t,ref:n}),D({fs:e.lfs,cache:e.cache,dir:t,ref:r}),D({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 Fd(e,t,r,o),c=await Fd(e,t,i,o);if(s===c)continue;let l=await Fd(e,t,n,o)??``,f,p=!1;if(l===(s??``))f=c??``;else{let e=ze(l,s??``,c??``,{labels:a});f=e.content,p=e.conflicts>0}if(!p&&c===void 0&&f===``){await Id(e,t,o);continue}await e.fs.writeFile(`${t}/${o}`,u.encode(f)),p?d.push(o):await un({fs:e.lfs,cache:e.cache,dir:t,filepath:o})}return d}async function Fd(e,t,n,r){try{let{blob:i}=await Kt({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return new TextDecoder().decode(i)}catch{return}}async function Id(e,t,n){try{await e.fs.rm(`${t}/${n}`)}catch{}try{await tn({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}catch{}}async function Ld(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 Rd(e,t,n,r,i);if(a)return a}return{stdout:``,stderr:``,exitCode:0}}async function Rd(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 D({fs:e.lfs,cache:e.cache,dir:t})).filter(e=>e===n||e.startsWith(n+`/`));for(let n of a)if(await tn({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(`${t}/${n}`)}catch{}}else if(await tn({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(a)}catch{}return null}async function zd(e,t,n){let{flags:r,positionals:i}=M(n,I.show),a=r,o=a.stat===!0,s=L(a,`format`),c=i[0];if(c?.includes(`:`))return await Bd(e,t,c);let l=c??`HEAD`,u=await Sc(e,t,l);if(u===void 0)return{stdout:``,stderr:`fatal: bad object ${l}\n`,exitCode:128};let{commit:d}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:u}),f=Vd(u,d,s,e.useColor),p=d.parent.length>0?d.parent[0]:void 0;if(p){let n=await ql(e,t,p,u,{nameOnly:!1,stat:o});f+=n.stdout}else{let n=await cu(e,t,u,o);f+=n}return{stdout:f,stderr:``,exitCode:0}}async function Bd(e,t,n){let r=n.indexOf(`:`),i=n.slice(0,r)||`HEAD`,a=n.slice(r+1),o=await Sc(e,t,i);if(o===void 0)return{stdout:``,stderr:`fatal: bad object ${i}\n`,exitCode:128};let s=await Kt({fs:e.lfs,cache:e.cache,dir:t,oid:o,filepath:a});return{stdout:new TextDecoder().decode(s.blob),stderr:``,exitCode:0}}function Vd(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 dn({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: ${Js(e)}\n`,exitCode:128}}}async function jd(e,t,n,r,i,a){let[o,s,c]=await Promise.all([D({fs:e.lfs,cache:e.cache,dir:t,ref:n}),D({fs:e.lfs,cache:e.cache,dir:t,ref:r}),D({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 Md(e,t,r,o),c=await Md(e,t,i,o);if(s===c)continue;let l=await Md(e,t,n,o)??``,f,p=!1;if(l===(s??``))f=c??``;else{let e=ze(l,s??``,c??``,{labels:a});f=e.content,p=e.conflicts>0}if(!p&&c===void 0&&f===``){await Nd(e,t,o);continue}await e.fs.writeFile(`${t}/${o}`,u.encode(f)),p?d.push(o):await sn({fs:e.lfs,cache:e.cache,dir:t,filepath:o})}return d}async function Md(e,t,n,r){try{let{blob:i}=await Ut({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return new TextDecoder().decode(i)}catch{return}}async function Nd(e,t,n){try{await e.fs.rm(`${t}/${n}`)}catch{}try{await Qt({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}catch{}}async function Pd(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 Fd(e,t,n,r,i);if(a)return a}return{stdout:``,stderr:``,exitCode:0}}async function Fd(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 D({fs:e.lfs,cache:e.cache,dir:t})).filter(e=>e===n||e.startsWith(n+`/`));for(let n of a)if(await Qt({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(`${t}/${n}`)}catch{}}else if(await Qt({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(a)}catch{}return null}async function Id(e,t,n){let{flags:r,positionals:i}=M(n,I.show),a=r,o=a.stat===!0,s=L(a,`format`),c=i[0];if(c?.includes(`:`))return await Ld(e,t,c);let l=c??`HEAD`,u=await yc(e,t,l);if(u===void 0)return{stdout:``,stderr:`fatal: bad object ${l}\n`,exitCode:128};let{commit:d}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:u}),f=Rd(u,d,s,e.useColor),p=d.parent.length>0?d.parent[0]:void 0;if(p){let n=await Wl(e,t,p,u,{nameOnly:!1,stat:o});f+=n.stdout}else{let n=await au(e,t,u,o);f+=n}return{stdout:f,stderr:``,exitCode:0}}async function Ld(e,t,n){let r=n.indexOf(`:`),i=n.slice(0,r)||`HEAD`,a=n.slice(r+1),o=await yc(e,t,i);if(o===void 0)return{stdout:``,stderr:`fatal: bad object ${i}\n`,exitCode:128};let s=await Ut({fs:e.lfs,cache:e.cache,dir:t,oid:o,filepath:a});return{stdout:new TextDecoder().decode(s.blob),stderr:``,exitCode:0}}function Rd(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=`${dc(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 Hd(e,t,n){let r=n.includes(`--heads`),i=n.includes(`--tags`),a=n.find(e=>!e.startsWith(`-`)),o=``;if(!i){let n=await Gt({fs:e.lfs,dir:t});for(let r of n){let n=await E({fs:e.lfs,dir:t,ref:r}),i=`refs/heads/${r}`;a&&!i.includes(a)||(o+=`${n} ${i}\n`)}}if(!r){let n=await Ut({fs:e.lfs,dir:t});for(let r of n){let n=await E({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 Ud=new Uint8Array;async function Wd(e,t){return await e.fs.readFile(t,{encoding:`binary`})}function Gd(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 Kd(e){if(!e.includes(0))try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return}}async function qd(e,t,n){let r=n[0];if(!r||r.startsWith(`-`))return Jd(e,t,n);switch(r){case`push`:case`save`:return Jd(e,t,n.slice(1));case`pop`:return Qd(e,t);case`apply`:return $d(e,t);case`list`:return af(e,t);case`drop`:return of(e,t,n.slice(1));case`show`:return sf(e,t);default:return{stdout:``,stderr:`error: unknown subcommand: ${r}\n`,exitCode:1}}}async function Jd(e,t,n){let r=await A({fs:e.lfs,dir:t})??`HEAD`,i;try{i=await E({fs:e.lfs,dir:t,ref:`HEAD`})}catch{return{stdout:``,stderr:`fatal: cannot stash without a HEAD commit
86
- `,exitCode:128}}let a=await D({fs:e.lfs,cache:e.cache,dir:t,ref:`HEAD`}),o=await D({fs:e.lfs,cache:e.cache,dir:t}),s=new Set([...a,...o]),c=await O({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 Yd(e,t,i,s,a);if(l.length===0)return{stdout:``,stderr:`No local changes to save
87
- `,exitCode:1};let d=await Zd(e,t,u),f=[i];try{let n=await E({fs:e.lfs,dir:t,ref:`refs/stash`});f.push(n)}catch{}let{commit:p}=await k({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 wn({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 Jt({fs:e.lfs,dir:t,ref:`refs/stash`,value:_,force:!0}),await Xd(e,t,i,l),{stdout:`Saved working directory and index state ${m}\n`,stderr:``,exitCode:0}}async function Yd(e,t,n,r,i){let a=[],o=[];for(let s of r){let r=i.includes(s),c;try{c=await Wd(e,`${t}/${s}`)}catch{}if(r){let{blob:r}=await Kt({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(Gd(c,r)){let n=await Yt({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 Yt({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 Yt({fs:e.lfs,dir:t,blob:c});o.push({filepath:s,oid:n})}}return{dirtyFiles:a,indexEntries:o}}async function Xd(e,t,n,r){for(let i of r)if(i.inHead){let{blob:r}=await Kt({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:i.file});await e.fs.writeFile(`${t}/${i.file}`,r),await Nn({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 tn({fs:e.lfs,cache:e.cache,dir:t,filepath:i.file})}catch{}}}async function Zd(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 cn({fs:e.lfs,dir:t,tree:r})};return i(r)}async function Qd(e,t){return ef(e,t,!0)}async function $d(e,t){return ef(e,t,!1)}async function ef(e,t,n){let r;try{r=await E({fs:e.lfs,dir:t,ref:`refs/stash`})}catch{return{stdout:``,stderr:`error: No stash entries found.
89
- `,exitCode:1}}let{commit:i}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:r}),a=await E({fs:e.lfs,dir:t,ref:`HEAD`}),o=i.parent[0]??a,{conflicts:s,warnings:c}=await tf(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 Jt({fs:e.lfs,dir:t,ref:`refs/stash`,value:i.parent[1],force:!0}):await cf(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{0} (${r.slice(0,7)})\n`,stderr:``,exitCode:0}):{stdout:``,stderr:``,exitCode:0}}async function tf(e,t,n,r){let i=new Map,a=async(n,r)=>{let{tree:o}=await Xt({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 Kt({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 D({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 rf(e,t,r,n):Ud,l;try{l=await Wd(e,`${t}/${n}`)}catch{}let{merged:u,conflicted:d,binary:f}=nf(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):Gd(u,i)||await un({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 tn({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}return{conflicts:s,warnings:c}}function nf(e,t,n){if(e===void 0||Gd(e,n)||Gd(e,t))return{merged:n,conflicted:!1,binary:!1};if(Gd(n,t))return{merged:e,conflicted:!1,binary:!1};let r=Kd(e),i=Kd(t),a=Kd(n);if(r===void 0||i===void 0||a===void 0)return{merged:e,conflicted:!0,binary:!0};let o=ze(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 rf(e,t,n,r){try{let{blob:i}=await Kt({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return i}catch{return Ud}}async function af(e,t){let n=``,r=0;try{let i=await E({fs:e.lfs,dir:t,ref:`refs/stash`});for(;i;){let{commit:a}=await k({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 of(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 E({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 k({fs:e.lfs,cache:e.cache,dir:t,oid:a});return n.parent.length>1?await Jt({fs:e.lfs,dir:t,ref:`refs/stash`,value:n.parent[1],force:!0}):await cf(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 k({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 k({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 wn({fs:e.lfs,dir:t,commit:{...r.commit,parent:i}})}return u?await Jt({fs:e.lfs,dir:t,ref:`refs/stash`,value:u,force:!0}):await cf(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{${r}} (${c.slice(0,7)})\n`,stderr:``,exitCode:0}}async function sf(e,t){let n;try{n=await E({fs:e.lfs,dir:t,ref:`refs/stash`})}catch{return{stdout:``,stderr:`error: No stash entries found.
92
- `,exitCode:1}}let{commit:r}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n}),i=r.parent[0];return ql(e,t,i,n,{nameOnly:!1,stat:!0})}async function cf(e,t,n){try{await e.lfs.unlink(`${t}/.git/${n}`)}catch{}}async function lf(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 ff(e,t,o);let s=``;try{let n=await A({fs:e.lfs,dir:t});s+=`On branch ${n??`(no branch)`}\n`}catch{s+=`Not on any branch.
93
- `}let c=await Zc(e,t);c?(await nl(e,t)).length>0?(s+=`You have unmerged paths.
84
+ `;let i=`${cc(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 zd(e,t,n){let r=n.includes(`--heads`),i=n.includes(`--tags`),a=n.find(e=>!e.startsWith(`-`)),o=``;if(!i){let n=await Ht({fs:e.lfs,dir:t});for(let r of n){let n=await E({fs:e.lfs,dir:t,ref:r}),i=`refs/heads/${r}`;a&&!i.includes(a)||(o+=`${n} ${i}\n`)}}if(!r){let n=await Bt({fs:e.lfs,dir:t});for(let r of n){let n=await E({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 Bd=new Uint8Array;async function Vd(e,t){return await e.fs.readFile(t,{encoding:`binary`})}function Hd(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 Ud(e){if(!e.includes(0))try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return}}async function Wd(e,t,n){let r=n[0];if(!r||r.startsWith(`-`))return Gd(e,t,n);switch(r){case`push`:case`save`:return Gd(e,t,n.slice(1));case`pop`:return Yd(e,t);case`apply`:return Xd(e,t);case`list`:return tf(e,t);case`drop`:return nf(e,t,n.slice(1));case`show`:return rf(e,t);default:return{stdout:``,stderr:`error: unknown subcommand: ${r}\n`,exitCode:1}}}async function Gd(e,t,n){let r=await A({fs:e.lfs,dir:t})??`HEAD`,i;try{i=await E({fs:e.lfs,dir:t,ref:`HEAD`})}catch{return{stdout:``,stderr:`fatal: cannot stash without a HEAD commit
86
+ `,exitCode:128}}let a=await D({fs:e.lfs,cache:e.cache,dir:t,ref:`HEAD`}),o=await D({fs:e.lfs,cache:e.cache,dir:t}),s=new Set([...a,...o]),c=await O({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 Kd(e,t,i,s,a);if(l.length===0)return{stdout:``,stderr:`No local changes to save
87
+ `,exitCode:1};let d=await Jd(e,t,u),f=[i];try{let n=await E({fs:e.lfs,dir:t,ref:`refs/stash`});f.push(n)}catch{}let{commit:p}=await k({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 xn({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 Gt({fs:e.lfs,dir:t,ref:`refs/stash`,value:_,force:!0}),await qd(e,t,i,l),{stdout:`Saved working directory and index state ${m}\n`,stderr:``,exitCode:0}}async function Kd(e,t,n,r,i){let a=[],o=[];for(let s of r){let r=i.includes(s),c;try{c=await Vd(e,`${t}/${s}`)}catch{}if(r){let{blob:r}=await Ut({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(Hd(c,r)){let n=await Kt({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 Kt({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 Kt({fs:e.lfs,dir:t,blob:c});o.push({filepath:s,oid:n})}}return{dirtyFiles:a,indexEntries:o}}async function qd(e,t,n,r){for(let i of r)if(i.inHead){let{blob:r}=await Ut({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:i.file});await e.fs.writeFile(`${t}/${i.file}`,r),await An({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 Qt({fs:e.lfs,cache:e.cache,dir:t,filepath:i.file})}catch{}}}async function Jd(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 an({fs:e.lfs,dir:t,tree:r})};return i(r)}async function Yd(e,t){return Zd(e,t,!0)}async function Xd(e,t){return Zd(e,t,!1)}async function Zd(e,t,n){let r;try{r=await E({fs:e.lfs,dir:t,ref:`refs/stash`})}catch{return{stdout:``,stderr:`error: No stash entries found.
89
+ `,exitCode:1}}let{commit:i}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:r}),a=await E({fs:e.lfs,dir:t,ref:`HEAD`}),o=i.parent[0]??a,{conflicts:s,warnings:c}=await Qd(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 Gt({fs:e.lfs,dir:t,ref:`refs/stash`,value:i.parent[1],force:!0}):await af(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{0} (${r.slice(0,7)})\n`,stderr:``,exitCode:0}):{stdout:``,stderr:``,exitCode:0}}async function Qd(e,t,n,r){let i=new Map,a=async(n,r)=>{let{tree:o}=await qt({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 Ut({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 D({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 ef(e,t,r,n):Bd,l;try{l=await Vd(e,`${t}/${n}`)}catch{}let{merged:u,conflicted:d,binary:f}=$d(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):Hd(u,i)||await sn({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 Qt({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}return{conflicts:s,warnings:c}}function $d(e,t,n){if(e===void 0||Hd(e,n)||Hd(e,t))return{merged:n,conflicted:!1,binary:!1};if(Hd(n,t))return{merged:e,conflicted:!1,binary:!1};let r=Ud(e),i=Ud(t),a=Ud(n);if(r===void 0||i===void 0||a===void 0)return{merged:e,conflicted:!0,binary:!0};let o=ze(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 ef(e,t,n,r){try{let{blob:i}=await Ut({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return i}catch{return Bd}}async function tf(e,t){let n=``,r=0;try{let i=await E({fs:e.lfs,dir:t,ref:`refs/stash`});for(;i;){let{commit:a}=await k({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 nf(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 E({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 k({fs:e.lfs,cache:e.cache,dir:t,oid:a});return n.parent.length>1?await Gt({fs:e.lfs,dir:t,ref:`refs/stash`,value:n.parent[1],force:!0}):await af(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 k({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 k({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 xn({fs:e.lfs,dir:t,commit:{...r.commit,parent:i}})}return u?await Gt({fs:e.lfs,dir:t,ref:`refs/stash`,value:u,force:!0}):await af(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{${r}} (${c.slice(0,7)})\n`,stderr:``,exitCode:0}}async function rf(e,t){let n;try{n=await E({fs:e.lfs,dir:t,ref:`refs/stash`})}catch{return{stdout:``,stderr:`error: No stash entries found.
92
+ `,exitCode:1}}let{commit:r}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n}),i=r.parent[0];return Wl(e,t,i,n,{nameOnly:!1,stat:!0})}async function af(e,t,n){try{await e.lfs.unlink(`${t}/.git/${n}`)}catch{}}async function of(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 lf(e,t,o);let s=``;try{let n=await A({fs:e.lfs,dir:t});s+=`On branch ${n??`(no branch)`}\n`}catch{s+=`Not on any branch.
93
+ `}let c=await Jc(e,t);c?(await $c(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}=uf(await O({fs:e.lfs,cache:e.cache,dir:t,...ec}),o);return s+=df(l,u,d,c,e.useColor),{stdout:s,stderr:``,exitCode:0}}function uf(e,t){let n=[],r=[],i=[];for(let[a,o,s,c]of e)Oc(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 df(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}=sf(await O({fs:e.lfs,cache:e.cache,dir:t,...Zs}),o);return s+=cf(l,u,d,c,e.useColor),{stdout:s,stderr:``,exitCode:0}}function sf(e,t){let n=[],r=[],i=[];for(let[a,o,s,c]of e)Tc(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 cf(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${dc(i,`32`,t)}\n`;a+=`
104
+ `;for(let t of e)a+=`\t${cc(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${dc(i,`31`,e)}\n`;a+=`
108
+ `;for(let e of t)a+=`\t${cc(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${dc(i,`31`,e)}\n`;a+=`
112
+ `;for(let e of n)a+=`\t${cc(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 ff(e,t,n){let r=await O({fs:e.lfs,cache:e.cache,dir:t,...ec}),i=``;for(let[e,t,a,o]of r){if(!Oc(e,n))continue;let r=pf(t,a,o);r&&(i+=`${r[0]}${r[1]} ${e}\n`)}return{stdout:i,stderr:``,exitCode:0}}function pf(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 mf=`usage: git symbolic-ref <name>
114
+ `),a}async function lf(e,t,n){let r=await O({fs:e.lfs,cache:e.cache,dir:t,...Zs}),i=``;for(let[e,t,a,o]of r){if(!Tc(e,n))continue;let r=uf(t,a,o);r&&(i+=`${r[0]}${r[1]} ${e}\n`)}return{stdout:i,stderr:``,exitCode:0}}function uf(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 df=`usage: git symbolic-ref <name>
115
115
  or: git symbolic-ref <name> <ref>
116
- or: git symbolic-ref (-d | --delete) <name>`;function hf(e){let t=Array.isArray(e)?e[e.length-1]:e;return typeof t==`boolean`?t:void 0}function gf(e){let t={};typeof e.m==`string`&&(t.m=e.m);let n=hf(e.delete);n!==void 0&&(t.delete=n);let r=hf(e.d);r!==void 0&&(t.d=r);let i=hf(e.quiet);i!==void 0&&(t.quiet=i);let a=hf(e.q);a!==void 0&&(t.q=a);let o=hf(e.short);o!==void 0&&(t.short=o);let s=hf(e.recurse);return s!==void 0&&(t.recurse=s),t}function _f(){return{stdout:``,stderr:`${mf}\n`,exitCode:129}}function vf(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 yf(e,t,n){try{let r=await E({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 bf(e,t,n,r){let i=await yf(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 yf(e,t,o);if(r.kind!==`symbolic`)return o;o=r.target}}function xf(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 Sf(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${mf}\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 _f()}async function Cf(e,t,n,r){if(n===`HEAD`)return{stdout:``,stderr:`fatal: deleting 'HEAD' is not allowed
118
- `,exitCode:128};let i=await yf(e,t,n);return i.kind===`symbolic`?(await gn({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 wf(e,t,n,r){return vf(r)?(await Jt({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 Tf(e,t,n,r){let i=await bf(e,t,n,r.recurse!==!1);return typeof i==`string`?{stdout:`${r.short?xf(i):i}\n`,stderr:``,exitCode:0}:r.quiet&&i.exitCode===1?{...i,stderr:``}:i}async function Ef(e,t,n){let{flags:r,positionals:i}=M(n,I[`symbolic-ref`]),a=r.delete===!0,o=Sf(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?Cf(e,t,i[0],!!r.quiet):_f():i.length===2?s?_f():wf(e,t,i[0],i[1]):i.length===1?Tf(e,t,i[0],gf(r)):_f()}async function Df(e,t,n){let{flags:r,positionals:i}=M(n,I.tag),a=r,o=a.delete===!0,s=L(a,`list`),c=a.annotate===!0,l=L(a,`message`),u=a.force===!0;if(o){let n=i[0];return n?(await ln({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 Ut({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 En({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 an({fs:e.lfs,dir:t,ref:d,object:f,force:u});return{stdout:``,stderr:``,exitCode:0}}function Of(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 kf(e,t){let n=t.mtimeMs??0;return{type:e,mode:Of(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 Af(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 jf(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 Mf(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 Nf=`/objects/pack`,Pf=/^(.*\/objects)\/([0-9a-f]{2})\/[0-9a-f]{38,}$/,Ff=/\/objects\/[0-9a-f]{2}$/;function If(e){return e.endsWith(Nf)||Ff.test(e)}function Lf(e){let t=Ue(e);return e.type===`directory`?t?{type:`dir`,stats:t}:{type:`dir`}:t?{type:`file`,stats:t}:void 0}function Rf(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=b(n),a=i===`/`?`/`:`${i}/`;for(let e of r){let n=Lf(e);n?t.set(`${a}${e.name}`,n):t.delete(`${a}${e.name}`)}},get(e){let n=t.get(b(e));if(n)return kf(n.type,n.stats?Af(n.stats):{})},drop(e){t.delete(b(e))},clear(){t.clear()},size(){return t.size}}}function zf(e,t={}){let n=t.objectCache?{packDirs:new Map,fanouts:new Map}:void 0,r=Rf(Math.max(0,t.statCacheMax??1e5)),i=async t=>{let n=await e.readDir(t,If(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=Pf.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 We(`ENOENT`,`no such file or directory`,t);let r=Mf(n);return r?await e.readFileRange(t,r.start,r.end):await e.readFile(t,jf(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(Nf))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 kf(i.type===`directory`?`dir`:`file`,Af(i))},async lstat(t){let n=r.get(t);if(n)return n;let i=await e.lstat(t);return kf(i.type===`directory`?`dir`:i.type===`symlink`?`symlink`:`file`,Af(i))},async readlink(t){if(e.isPathUnderMount(t))throw new We(`EINVAL`,`symlinks not supported on mounted filesystems`,t);return e.readlink(t)},async symlink(t,n){if(e.isPathUnderMount(n))throw new We(`EINVAL`,`symlinks not supported on mounted filesystems`,n);await c(n,()=>e.symlink(t,n))}},clearStatCache(){r.clear()},statCacheSize(){return r.size()}}}const Bf={maxEntries:5e4,maxFileBytes:1048576,maxTotalBytes:8388608},Vf=new Set([`ENOENT`,`ENOTDIR`,`EISDIR`]);function Hf(e){return e.endsWith(`.pack`)||e.endsWith(`.idx`)}function Uf(e){let t=e.replace(/\/{2,}/g,`/`);return t.length>1&&t.endsWith(`/`)?t.slice(0,-1):t}function Wf(e){let t=e.lastIndexOf(`/`);return t<0?`.`:t===0?`/`:e.slice(0,t)}function Gf(e){let t=e?.code;return typeof t==`string`?t:void 0}function Kf(e){return typeof e==`string`?e.length*2:e.byteLength}function qf(e,t){return`${t?`u`:`b`} ${e}`}var Jf=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=Kf(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[qf(e,!0),qf(e,!1)])this.files.delete(t),this.dropFile(t)}invalidatePath(e){let t=Uf(e);this.forgetSelf(t);let n=Wf(t);this.dirs.delete(n),this.stats.delete(n),this.lstats.delete(n)}invalidateSubtree(e){let t=Uf(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 Yf(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=>{Vf.has(Gf(e)??``)||o()}),a}function Xf(e,t={}){let n=new Jf({...Bf,...t}),r=()=>n.hasRoom(),i=async t=>(await Yf(n.dirs,Uf(t),()=>e.readdir(t),{admit:r})).slice(),a=async(t,i)=>{if(Hf(t))return e.readFile(t,i);let a=qf(Uf(t),jf(i)),o=await Yf(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=>Yf(e,Uf(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 Zf=e(`git-cache`);function Qf(e){for(let t of Object.getOwnPropertySymbols(e)){if(t.description!==`PackfileCache`)continue;let n=e[t];if(n instanceof Map)return n}}function $f(e){return`${e.replace(/\/+$/,``)}/.git`}var ep=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=$f(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=$f(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=Qf(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=Qf(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=`${$f(e)}/objects/pack/`,n=Qf(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=Qf(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;Zf.debug(`unloaded packfile buffers past the resident bound`,{unloaded:t.length,resident:this.maxResidentPacks})}};const tp=e(`git-commands`),np=new Set([`clone`,`fetch`,`pull`,`push`,`ls-remote`]),rp=new Set([`clone`,`fetch`,`pull`]),ip=new Set([`add`,`branch`,`commit`,`diff`,`init`,`log`,`ls-files`,`ls-tree`,`merge-base`,`rev-parse`,`show`,`show-ref`,`status`,`symbolic-ref`,`tag`]),ap={string:[`c`,`C`,`git-dir`,`work-tree`],boolean:[`help`,`version`,`no-pager`,`paginate`,`no-replace-objects`,`color`],alias:{h:`help`},stopEarly:!0};function op(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function sp(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 cp=class e{options;static globalFsByDbName=new Map;lfs;corsProxy;authorName;authorEmail;globalDbName;githubToken;currentEnv;currentConfigOverrides;currentStdin=``;cacheManager;constructor(e){this.options=e,this.lfs=zf(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 ep(this.lfs,{...e.maxResidentPacks===void 0?{}:{maxResidentPacks:e.maxResidentPacks}})}contextFor(e,t){let n=zf(this.options.fs,{objectCache:!0}),r=ip.has(e)?Xf(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){tp.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=sp(e,`GH_TOKEN`);if(t)return t;let n=sp(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 tr(e,`user.name`)??this.authorName,email:await tr(e,`user.email`)??this.authorEmail}}getGlobalFs(){let t=e.globalFsByDbName.get(this.globalDbName);if(t!=null)return t;let n=et.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){tp.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 nn({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 tr(i,`user.name`)??this.authorName,email:r?.get(`user.email`)??await n(`user.email`)??await tr(i,`user.email`)??this.authorEmail}}async execute(e,t,n,r,i){if(e.length===0)return this.help();let a=this.stripGlobalFlags(sc(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=I[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),np.has(s)&&await this.ensureFreshGithubToken(),await this.loadGithubToken(),await this.dispatch(s,p,o,c)}catch(e){return{stdout:``,stderr:`fatal: ${Zs(e)}\n`,exitCode:128}}finally{await this.cacheManager.afterCommand(o,{wrotePacks:rp.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 du(t,n,r);case`clone`:return await Vc(t,n,r);case`add`:return await Ls(t,n,r);case`status`:return await lf(t,n,r);case`commit`:return await il(t,n,r);case`log`:return await yu(t,n,r);case`ls-remote`:return await Hu(t,n,r);case`branch`:return await fc(t,n,r);case`checkout`:return await pc(t,n,r);case`clean`:return await Mc(t,n,r);case`diff`:return await Vl(t,n,r);case`show`:return await zd(t,n,r);case`remote`:return await Td(t,n,r);case`fetch`:return await lu(t,n,r);case`pull`:return await rd(t,n,r);case`push`:return await id(t,n,r);case`merge`:return await Zu(t,n,r);case`merge-base`:return await ed(t,n,r);case`cherry-pick`:return await Ac(t,n,r);case`rebase`:return await sd(t,n,r);case`revert`:return await Nd(t,n,r);case`merge-file`:return await nd(t,n,r);case`reset`:return await Ed(t,n,r);case`config`:return await _l(t,n,r);case`tag`:return await Df(t,n,r);case`ls-files`:return await zu(t,n,r);case`ls-tree`:return await Wu(t,n,r);case`show-ref`:return await Hd(t,n,r);case`symbolic-ref`:return await Ef(t,n,r);case`stash`:return await qd(t,n,r);case`rm`:return await Ld(t,n,r);case`mv`:{let{mv:e}=await import(`./mv-ohCkaQgo.js`);return await e(t,n,r)}case`rev-parse`:return await Md(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 uc({cliWhen:oc(e),colorUi:n?.get(`color.ui`),noColorEnv:!!(t&&sp(t,`NO_COLOR`)),stdoutIsTTY:r?.stdoutIsTTY===!0,term:t?sp(t,`TERM`):void 0})}shouldVerifyPackfiles(){let e=this.currentEnv,t=e?sp(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,ap),r=t;for(let e of op(n.flags.C))e!==``&&(r=e.startsWith(`/`)?e:`${r}/${e}`);let i=new Map;for(let e of op(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 ${sn()})\n`,stderr:``,exitCode:0}}help(){return{stdout:`usage: git <command> [<args>]
116
+ or: git symbolic-ref (-d | --delete) <name>`;function ff(e){let t=Array.isArray(e)?e[e.length-1]:e;return typeof t==`boolean`?t:void 0}function pf(e){let t={};typeof e.m==`string`&&(t.m=e.m);let n=ff(e.delete);n!==void 0&&(t.delete=n);let r=ff(e.d);r!==void 0&&(t.d=r);let i=ff(e.quiet);i!==void 0&&(t.quiet=i);let a=ff(e.q);a!==void 0&&(t.q=a);let o=ff(e.short);o!==void 0&&(t.short=o);let s=ff(e.recurse);return s!==void 0&&(t.recurse=s),t}function mf(){return{stdout:``,stderr:`${df}\n`,exitCode:129}}function hf(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 gf(e,t,n){try{let r=await E({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 _f(e,t,n,r){let i=await gf(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 gf(e,t,o);if(r.kind!==`symbolic`)return o;o=r.target}}function vf(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 yf(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${df}\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 mf()}async function bf(e,t,n,r){if(n===`HEAD`)return{stdout:``,stderr:`fatal: deleting 'HEAD' is not allowed
118
+ `,exitCode:128};let i=await gf(e,t,n);return i.kind===`symbolic`?(await pn({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 xf(e,t,n,r){return hf(r)?(await Gt({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 Sf(e,t,n,r){let i=await _f(e,t,n,r.recurse!==!1);return typeof i==`string`?{stdout:`${r.short?vf(i):i}\n`,stderr:``,exitCode:0}:r.quiet&&i.exitCode===1?{...i,stderr:``}:i}async function Cf(e,t,n){let{flags:r,positionals:i}=M(n,I[`symbolic-ref`]),a=r.delete===!0,o=yf(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?bf(e,t,i[0],!!r.quiet):mf():i.length===2?s?mf():xf(e,t,i[0],i[1]):i.length===1?Sf(e,t,i[0],pf(r)):mf()}async function wf(e,t,n){let{flags:r,positionals:i}=M(n,I.tag),a=r,o=a.delete===!0,s=L(a,`list`),c=a.annotate===!0,l=L(a,`message`),u=a.force===!0;if(o){let n=i[0];return n?(await on({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 Bt({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 Cn({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 tn({fs:e.lfs,dir:t,ref:d,object:f,force:u});return{stdout:``,stderr:``,exitCode:0}}function Tf(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 Ef(e,t){let n=t.mtimeMs??0;return{type:e,mode:Tf(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 Df(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 Of(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 kf(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 Af=`/objects/pack`,jf=/^(.*\/objects)\/([0-9a-f]{2})\/[0-9a-f]{38,}$/,Mf=/\/objects\/[0-9a-f]{2}$/;function Nf(e){return e.endsWith(Af)||Mf.test(e)}function Pf(e){let t=Be(e);return e.type===`directory`?t?{type:`dir`,stats:t}:{type:`dir`}:t?{type:`file`,stats:t}:void 0}function Ff(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=b(n),a=i===`/`?`/`:`${i}/`;for(let e of r){let n=Pf(e);n?t.set(`${a}${e.name}`,n):t.delete(`${a}${e.name}`)}},get(e){let n=t.get(b(e));if(n)return Ef(n.type,n.stats?Df(n.stats):{})},drop(e){t.delete(b(e))},clear(){t.clear()},size(){return t.size}}}function If(e,t={}){let n=t.objectCache?{packDirs:new Map,fanouts:new Map}:void 0,r=Ff(Math.max(0,t.statCacheMax??1e5)),i=async t=>{let n=await e.readDir(t,Nf(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=jf.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 Ve(`ENOENT`,`no such file or directory`,t);let r=kf(n);return r?await e.readFileRange(t,r.start,r.end):await e.readFile(t,Of(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(Af))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 Ef(i.type===`directory`?`dir`:`file`,Df(i))},async lstat(t){let n=r.get(t);if(n)return n;let i=await e.lstat(t);return Ef(i.type===`directory`?`dir`:i.type===`symlink`?`symlink`:`file`,Df(i))},async readlink(t){if(e.isPathUnderMount(t))throw new Ve(`EINVAL`,`symlinks not supported on mounted filesystems`,t);return e.readlink(t)},async symlink(t,n){if(e.isPathUnderMount(n))throw new Ve(`EINVAL`,`symlinks not supported on mounted filesystems`,n);await c(n,()=>e.symlink(t,n))}},clearStatCache(){r.clear()},statCacheSize(){return r.size()}}}const Lf={maxEntries:5e4,maxFileBytes:1048576,maxTotalBytes:8388608},Rf=new Set([`ENOENT`,`ENOTDIR`,`EISDIR`]);function zf(e){return e.endsWith(`.pack`)||e.endsWith(`.idx`)}function Bf(e){let t=e.replace(/\/{2,}/g,`/`);return t.length>1&&t.endsWith(`/`)?t.slice(0,-1):t}function Vf(e){let t=e.lastIndexOf(`/`);return t<0?`.`:t===0?`/`:e.slice(0,t)}function Hf(e){let t=e?.code;return typeof t==`string`?t:void 0}function Uf(e){return typeof e==`string`?e.length*2:e.byteLength}function Wf(e,t){return`${t?`u`:`b`} ${e}`}var Gf=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=Uf(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[Wf(e,!0),Wf(e,!1)])this.files.delete(t),this.dropFile(t)}invalidatePath(e){let t=Bf(e);this.forgetSelf(t);let n=Vf(t);this.dirs.delete(n),this.stats.delete(n),this.lstats.delete(n)}invalidateSubtree(e){let t=Bf(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 Kf(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=>{Rf.has(Hf(e)??``)||o()}),a}function qf(e,t={}){let n=new Gf({...Lf,...t}),r=()=>n.hasRoom(),i=async t=>(await Kf(n.dirs,Bf(t),()=>e.readdir(t),{admit:r})).slice(),a=async(t,i)=>{if(zf(t))return e.readFile(t,i);let a=Wf(Bf(t),Of(i)),o=await Kf(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=>Kf(e,Bf(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 Jf=e(`git-cache`);function Yf(e){for(let t of Object.getOwnPropertySymbols(e)){if(t.description!==`PackfileCache`)continue;let n=e[t];if(n instanceof Map)return n}}function Xf(e){return`${e.replace(/\/+$/,``)}/.git`}var Zf=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=Xf(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=Xf(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=Yf(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=Yf(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=`${Xf(e)}/objects/pack/`,n=Yf(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=Yf(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;Jf.debug(`unloaded packfile buffers past the resident bound`,{unloaded:t.length,resident:this.maxResidentPacks})}};const Qf=e(`git-commands`),$f=new Set([`clone`,`fetch`,`pull`,`push`,`ls-remote`]),ep=new Set([`clone`,`fetch`,`pull`]),tp=new Set([`add`,`branch`,`commit`,`diff`,`init`,`log`,`ls-files`,`ls-tree`,`merge-base`,`rev-parse`,`show`,`show-ref`,`status`,`symbolic-ref`,`tag`]),np={string:[`c`,`C`,`git-dir`,`work-tree`],boolean:[`help`,`version`,`no-pager`,`paginate`,`no-replace-objects`,`color`],alias:{h:`help`},stopEarly:!0};function rp(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function ip(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 ap=class e{options;static globalFsByDbName=new Map;lfs;corsProxy;authorName;authorEmail;globalDbName;githubToken;currentEnv;currentConfigOverrides;currentStdin=``;cacheManager;constructor(e){this.options=e,this.lfs=If(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 Zf(this.lfs,{...e.maxResidentPacks===void 0?{}:{maxResidentPacks:e.maxResidentPacks}})}contextFor(e,t){let n=If(this.options.fs,{objectCache:!0}),r=tp.has(e)?qf(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){Qf.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=ip(e,`GH_TOKEN`);if(t)return t;let n=ip(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 Qn(e,`user.name`)??this.authorName,email:await Qn(e,`user.email`)??this.authorEmail}}getGlobalFs(){let t=e.globalFsByDbName.get(this.globalDbName);if(t!=null)return t;let n=Ze.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){Qf.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 $t({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 Qn(i,`user.name`)??this.authorName,email:r?.get(`user.email`)??await n(`user.email`)??await Qn(i,`user.email`)??this.authorEmail}}async execute(e,t,n,r,i){if(e.length===0)return this.help();let a=this.stripGlobalFlags(ic(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=I[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),$f.has(s)&&await this.ensureFreshGithubToken(),await this.loadGithubToken(),await this.dispatch(s,p,o,c)}catch(e){return{stdout:``,stderr:`fatal: ${Js(e)}\n`,exitCode:128}}finally{await this.cacheManager.afterCommand(o,{wrotePacks:ep.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 cu(t,n,r);case`clone`:return await Rc(t,n,r);case`add`:return await Ps(t,n,r);case`status`:return await of(t,n,r);case`commit`:return await tl(t,n,r);case`log`:return await gu(t,n,r);case`ls-remote`:return await zu(t,n,r);case`branch`:return await lc(t,n,r);case`checkout`:return await uc(t,n,r);case`clean`:return await kc(t,n,r);case`diff`:return await Rl(t,n,r);case`show`:return await Id(t,n,r);case`remote`:return await Sd(t,n,r);case`fetch`:return await ou(t,n,r);case`pull`:return await ed(t,n,r);case`push`:return await td(t,n,r);case`merge`:return await Ju(t,n,r);case`merge-base`:return await Zu(t,n,r);case`cherry-pick`:return await Dc(t,n,r);case`rebase`:return await id(t,n,r);case`revert`:return await Ad(t,n,r);case`merge-file`:return await $u(t,n,r);case`reset`:return await Cd(t,n,r);case`config`:return await ml(t,n,r);case`tag`:return await wf(t,n,r);case`ls-files`:return await Iu(t,n,r);case`ls-tree`:return await Vu(t,n,r);case`show-ref`:return await zd(t,n,r);case`symbolic-ref`:return await Cf(t,n,r);case`stash`:return await Wd(t,n,r);case`rm`:return await Pd(t,n,r);case`mv`:{let{mv:e}=await import(`./mv-ohCkaQgo.js`);return await e(t,n,r)}case`rev-parse`:return await kd(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 sc({cliWhen:rc(e),colorUi:n?.get(`color.ui`),noColorEnv:!!(t&&ip(t,`NO_COLOR`)),stdoutIsTTY:r?.stdoutIsTTY===!0,term:t?ip(t,`TERM`):void 0})}shouldVerifyPackfiles(){let e=this.currentEnv,t=e?ip(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,np),r=t;for(let e of rp(n.flags.C))e!==``&&(r=e.startsWith(`/`)?e:`${r}/${e}`);let i=new Map;for(let e of rp(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 ${rn()})\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,10 +151,10 @@ 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}}};const lp={maxTraversalEntries:1e5,maxTraversalDepth:256,maxTraversalWork:1e5,maxGlobOperations:1e5,maxLiveBytes:67108864,maxInputBytes:33554432,maxArchiveBytes:134217728,maxArchiveCompressedBytes:67108864,maxArchiveEntryBytes:67108864,maxArchiveEntries:1e5};function up(e,t){return e?{...lp,...t}:t}const dp=new Set([`SHLVL`,`_`]);function fp(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 pp(e,t=[]){let n=new Set([...dp,...t]);return Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e)))}function mp(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 hp(e,t){let n=[],r=ir(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:mp(i.stdout,i.stdoutKind),stderr:i.stderr,exitCode:i.exitCode,state:a>0?fp(new TextDecoder().decode(o)):null}}const gp=`/home/user`;async function _p(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}`:gp}catch{return gp}}function vp(e){return e.replace(/\/+$/,``).split(`/`).pop()||`user`}function yp(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}var bp=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=je();if(!e)return null;let t=e.onUpdate;return e=>{t({content:[{type:Es,progress:e}]})}}scrubbed(e){return this.scrubLabel?xp(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=Sp(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:Sp(i)})})}};async function xp(e,t){if(!t)return t;try{return await e(t)}catch{return`[label withheld: secret scrub unavailable]`}}function Sp(e,t=80){return e.length>t?`${e.slice(0,t-1)}…`:e}function Cp(e,t){return t.length?`${e} ${t.join(` `)}`:e}function wp(e){try{let t=new URL(e);return`↓ ${t.host}${t.pathname===`/`?``:t.pathname}`}catch{return`↓ ${e}`}}function Tp(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:wp(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 Ep={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}},Dp=new Set([`xargs`,`watch`,`parallel`,`bash`,`sh`,`eval`,`source`,`.`]);function Op(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 kp(e,t){switch(e.type){case`CommandSubstitution`:return Bp(e.body,t);case`DoubleQuoted`:{let n=0;for(let r of e.parts){let e=kp(r,t);if(e===null)return null;n+=e}return n}case`ProcessSubstitution`:return null;default:return 0}}function Ap(e,t){let n=0;for(let r of e.parts){let e=kp(r,t);if(e===null)return null;n+=e}return n}function jp(e,t){let n=0;for(let r of e.assignments){if(!r.value)continue;let e=Ap(r.value,t);if(e===null)return null;n+=e}for(let r of e.args){let e=Ap(r,t);if(e===null)return null;n+=e}if(!e.name)return n;let r=Op(e.name);if(r===null||Dp.has(r))return null;if(!t.has(r))return n;n+=1;let i=Ep[r];if(i){let r=e.args.map(Op);if(r.some(e=>e===null))return null;let a=r[i(r)];if(a===void 0)return n;if(Dp.has(a))return null;t.has(a)&&(n+=1)}return n}function Mp(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 Np(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||Op(r.name)!==`seq`)return null;let i=r.args.map(e=>{let t=Op(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 Pp(e){let t=0;for(let n of e){let e=n.type===`Word`?Fp(n.word):Mp(n);if(e===null)return null;t+=e}return t}function Fp(e){let t=Np(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=Pp(t.items);if(e===null)return null;n*=e;break}default:return null}return n}function Ip(e){let t=0;for(let n of e){let e=Fp(n);if(e===null)return null;t+=e}return t}function Lp(e,t){let n=0;for(let r of e){let e=zp(r,t);if(e===null)return null;n+=e}return n}function Rp(e,t){switch(e.type){case`SimpleCommand`:return jp(e,t);case`For`:{if(!e.words)return null;let n=Ip(e.words),r=Lp(e.body,t);return n===null||r===null?null:e.words.filter(e=>Np(e)!==null&&t.has(`seq`)).length+n*r}case`Subshell`:case`Group`:return Lp(e.body,t);case`FunctionDef`:return 0;default:return null}}function zp(e,t){let n=0;for(let r of e.pipelines)for(let e of r.commands){let r=Rp(e,t);if(r===null)return null;n+=r}return n}function Bp(e,t){return Lp(e.statements,t)}function Vp(e,t){let n=Bp(e,t);return{totalSteps:n!==null&&n>0?n:null}}function Hp(e){return e.split(`
155
- `).map(e=>e.trim()).find(e=>e.length>0&&!e.startsWith(`#`))||`bash`}var Up=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 Wp=globalThis.setTimeout.bind(globalThis);function Gp(e){let t=e/1e3;return`sleep ${Number.isInteger(t)?t:t.toFixed(1)}`}function Kp(e,t={}){let n=t.now??Date.now,r=t.setTimeout??Wp,i=t.isAborted??(()=>!1),a=t.label??Gp,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 qp=globalThis.setTimeout.bind(globalThis);function Jp(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 Yp(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 Xp(e,t,n={}){let r=n.now??Date.now,i=n.setTimeout??qp;return{...e,async execute(n,a){let o=Yp(n),s=o>=0?Jp(n[o]):null;if(!t.hasSink()||s===null||s<=0)return e.execute(n,a);let c=t.allocateId(`timeout`),l=Cp(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 Zp=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 Qp(e,t,n={}){if((n.skip??Zp).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=Cp(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 $p={stdout:``,stderr:``,exitCode:130};function em(e,t){if(!t)return e();if(t.aborted)return Promise.resolve($p);let n,r=new Promise(e=>{n=()=>e($p),t.addEventListener(`abort`,n,{once:!0})});return Promise.race([e(),r]).finally(()=>{n&&t.removeEventListener(`abort`,n)})}const tm=new Map([[`jsh`,`node`]]);function nm(e,t){return`${tm.get(e)??e} ${t.join(` `)}`.trim()}function rm(e){return gt(`sudo`,e)}async function im(e,t){let n=e.trim();if(!n||pt(dt(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:rm(r),exitCode:77};if(r.decision===`always`){let e=r.pattern?.trim()||n;await t.persistGrant(e)}return{allowed:!0}}const am=`__SLICC_SUDO_REASON`,om=/^#!/;function sm(e){let t=[];for(let n of e.split(`
156
- `)){let e=n.trim();if(e.length===0){if(t.length>0)break;continue}if(!e.startsWith(`#`))break;if(om.test(e))continue;let r=e.replace(/^#+/,``).trim();r&&t.push(r)}return Rt(t.join(` `))}function cm(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 lm=1e4;async function um(e,t,n){let r={method:e,headers:we({"Content-Type":`application/json`}),signal:AbortSignal.timeout(lm)};n&&(r.body=JSON.stringify(n));try{let e=await fetch(Ce(`/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:dm(e)}}}}function dm(e){let t=e instanceof Error?e.name:``;return t===`TimeoutError`||t===`AbortError`?`no response from the secret store within ${lm/1e3}s`:`secret store unreachable: ${e instanceof Error?e.message:String(e)}`}function fm(e,t){return`could not read ${e} secrets — ${t??`the bridge gave no reason`}`}function pm(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 mm(){return{async list(){let[e,t]=await Promise.all([um(`GET`,``),um(`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(fm(`saved`,vm(e.data)));if(t.ok)for(let e of t.data)n.push({name:e.name,domains:e.domains,persisted:!1});else r.push(fm(`session`,vm(t.data)));return{entries:n,warnings:r}},async getInfo(e){return pm(await this.list(),e)},async getMasked(e){let{ok:t,data:n}=await um(`GET`,`/masked`);return t?n.find(t=>t.name===e)??null:null},async peek(e){let{ok:t,data:n}=await um(`GET`,`/peek?name=${encodeURIComponent(e)}`);return t?n:null},async setSession(e,t,n){let{ok:r,data:i}=await um(`POST`,`/session`,{name:e,value:t,domains:n});if(!r)throw Error(vm(i)??`failed to set session secret`)},async setPersisted(e,t,n){let{ok:r,data:i}=await um(`POST`,``,{name:e,value:t,domains:n});if(!r)throw Error(vm(i)??`failed to persist secret`)},async setScope(e,t){let{ok:n,data:r}=await um(`POST`,`/scope`,{name:e,domains:t});if(!n)throw Error(vm(r)??`failed to update scope`)},async delete(e){let{ok:t,status:n,data:r}=await um(`DELETE`,`/${encodeURIComponent(e)}`);if(n===404)return{removed:!1};if(!t)throw Error(vm(r)??`failed to delete secret`);return{removed:!0,fromSession:r&&typeof r==`object`&&`fromSession`in r?!!r.fromSession:void 0}}}}function hm(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(fm(`saved`,e?.error)),n?.entries||i.push(fm(`session`,n?.error)),{entries:r,warnings:i}},async getInfo(e){return pm(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 gm(){return hm(e=>cm(e))}function _m(){return hm(e=>{let{type:t,...n}=e;return Ae(t,n)})}function vm(e){if(e&&typeof e==`object`&&`error`in e){let t=e.error;if(typeof t==`string`)return t}}function ym(e){switch(e){case`extension-direct`:return gm();case`extension-delegate`:return _m();default:return mm()}}const bm=`git-credential-slicc`,xm=new Map([[bm,`git`],[`git-upload-pack`,`git`],[`git-receive-pack`,`git`],[`git-upload-archive`,`git`],[`git-remote-http`,`git`],[`git-remote-https`,`git`]]),Sm=[`github.com`,`*.github.com`],Cm=/(_TOKEN|_PAT)$/;function wm(e){let t=new Map;for(let n of e.split(`
157
- `)){let e=n.indexOf(`=`);e>0&&t.set(n.slice(0,e),n.slice(e+1).replace(/\r$/,``))}return t}function Tm(e){let t=e.get(`host`)??``;try{return new URL(`https://${t}`).hostname}catch{return``}}async function Em(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 Dm(e,t,n){let r=await t.githubToken?.(e).catch(()=>void 0);if(!r)return;let i=t.githubDomains?.()??Sm;return{token:r,domains:r===e.GH_TOKEN||r===e.GITHUB_TOKEN?await Em(r,[`GH_TOKEN`,`GITHUB_TOKEN`],n,Sm):i}}async function Om(e,t){let{entries:n}=await t.list().catch(()=>({entries:[]})),r=n.filter(e=>Cm.test(e.name)&&!e.domains.includes(`*`)).filter(t=>Oa(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 km(e,t,n){let r=Tm(e);if(e.get(`protocol`)!==`https`||!r)return{stdout:``,stderr:``,exitCode:0};let i=(n.backend??(()=>ym(Oe())))(),a=await Dm(t,n,i),o=a&&Oa(a.domains,r)?a:await Om(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 Am(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 jm(e={}){return S(bm,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}}};const op={maxTraversalEntries:1e5,maxTraversalDepth:256,maxTraversalWork:1e5,maxGlobOperations:1e5,maxLiveBytes:67108864,maxInputBytes:33554432,maxArchiveBytes:134217728,maxArchiveCompressedBytes:67108864,maxArchiveEntryBytes:67108864,maxArchiveEntries:1e5};function sp(e,t){return e?{...op,...t}:t}const cp=new Set([`SHLVL`,`_`]);function lp(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 up(e,t=[]){let n=new Set([...cp,...t]);return Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e)))}function dp(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 fp(e,t){let n=[],r=tr(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:dp(i.stdout,i.stdoutKind),stderr:i.stderr,exitCode:i.exitCode,state:a>0?lp(new TextDecoder().decode(o)):null}}const pp=`/home/user`;async function mp(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}`:pp}catch{return pp}}function hp(e){return e.replace(/\/+$/,``).split(`/`).pop()||`user`}function gp(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}var _p=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=je();if(!e)return null;let t=e.onUpdate;return e=>{t({content:[{type:Cs,progress:e}]})}}scrubbed(e){return this.scrubLabel?vp(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=yp(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:yp(i)})})}};async function vp(e,t){if(!t)return t;try{return await e(t)}catch{return`[label withheld: secret scrub unavailable]`}}function yp(e,t=80){return e.length>t?`${e.slice(0,t-1)}…`:e}function bp(e,t){return t.length?`${e} ${t.join(` `)}`:e}function xp(e){try{let t=new URL(e);return`↓ ${t.host}${t.pathname===`/`?``:t.pathname}`}catch{return`↓ ${e}`}}function Sp(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:xp(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 Cp={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}},wp=new Set([`xargs`,`watch`,`parallel`,`bash`,`sh`,`eval`,`source`,`.`]);function Tp(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 Ep(e,t){switch(e.type){case`CommandSubstitution`:return Lp(e.body,t);case`DoubleQuoted`:{let n=0;for(let r of e.parts){let e=Ep(r,t);if(e===null)return null;n+=e}return n}case`ProcessSubstitution`:return null;default:return 0}}function Dp(e,t){let n=0;for(let r of e.parts){let e=Ep(r,t);if(e===null)return null;n+=e}return n}function Op(e,t){let n=0;for(let r of e.assignments){if(!r.value)continue;let e=Dp(r.value,t);if(e===null)return null;n+=e}for(let r of e.args){let e=Dp(r,t);if(e===null)return null;n+=e}if(!e.name)return n;let r=Tp(e.name);if(r===null||wp.has(r))return null;if(!t.has(r))return n;n+=1;let i=Cp[r];if(i){let r=e.args.map(Tp);if(r.some(e=>e===null))return null;let a=r[i(r)];if(a===void 0)return n;if(wp.has(a))return null;t.has(a)&&(n+=1)}return n}function kp(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 Ap(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||Tp(r.name)!==`seq`)return null;let i=r.args.map(e=>{let t=Tp(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 jp(e){let t=0;for(let n of e){let e=n.type===`Word`?Mp(n.word):kp(n);if(e===null)return null;t+=e}return t}function Mp(e){let t=Ap(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=jp(t.items);if(e===null)return null;n*=e;break}default:return null}return n}function Np(e){let t=0;for(let n of e){let e=Mp(n);if(e===null)return null;t+=e}return t}function Pp(e,t){let n=0;for(let r of e){let e=Ip(r,t);if(e===null)return null;n+=e}return n}function Fp(e,t){switch(e.type){case`SimpleCommand`:return Op(e,t);case`For`:{if(!e.words)return null;let n=Np(e.words),r=Pp(e.body,t);return n===null||r===null?null:e.words.filter(e=>Ap(e)!==null&&t.has(`seq`)).length+n*r}case`Subshell`:case`Group`:return Pp(e.body,t);case`FunctionDef`:return 0;default:return null}}function Ip(e,t){let n=0;for(let r of e.pipelines)for(let e of r.commands){let r=Fp(e,t);if(r===null)return null;n+=r}return n}function Lp(e,t){return Pp(e.statements,t)}function Rp(e,t){let n=Lp(e,t);return{totalSteps:n!==null&&n>0?n:null}}function zp(e){return e.split(`
155
+ `).map(e=>e.trim()).find(e=>e.length>0&&!e.startsWith(`#`))||`bash`}var Bp=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 Vp=globalThis.setTimeout.bind(globalThis);function Hp(e){let t=e/1e3;return`sleep ${Number.isInteger(t)?t:t.toFixed(1)}`}function Up(e,t={}){let n=t.now??Date.now,r=t.setTimeout??Vp,i=t.isAborted??(()=>!1),a=t.label??Hp,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 Wp=globalThis.setTimeout.bind(globalThis);function Gp(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 Kp(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 qp(e,t,n={}){let r=n.now??Date.now,i=n.setTimeout??Wp;return{...e,async execute(n,a){let o=Kp(n),s=o>=0?Gp(n[o]):null;if(!t.hasSink()||s===null||s<=0)return e.execute(n,a);let c=t.allocateId(`timeout`),l=bp(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 Jp=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 Yp(e,t,n={}){if((n.skip??Jp).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=bp(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 Xp={stdout:``,stderr:``,exitCode:130};function Zp(e,t){if(!t)return e();if(t.aborted)return Promise.resolve(Xp);let n,r=new Promise(e=>{n=()=>e(Xp),t.addEventListener(`abort`,n,{once:!0})});return Promise.race([e(),r]).finally(()=>{n&&t.removeEventListener(`abort`,n)})}const Qp=new Map([[`jsh`,`node`]]);function $p(e,t){return`${Qp.get(e)??e} ${t.join(` `)}`.trim()}function em(e){return pt(`sudo`,e)}async function tm(e,t){let n=e.trim();if(!n||ut(ct(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:em(r),exitCode:77};if(r.decision===`always`){let e=r.pattern?.trim()||n;await t.persistGrant(e)}return{allowed:!0}}const nm=`__SLICC_SUDO_REASON`,rm=/^#!/;function im(e){let t=[];for(let n of e.split(`
156
+ `)){let e=n.trim();if(e.length===0){if(t.length>0)break;continue}if(!e.startsWith(`#`))break;if(rm.test(e))continue;let r=e.replace(/^#+/,``).trim();r&&t.push(r)}return Ft(t.join(` `))}function am(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 om=1e4;async function sm(e,t,n){let r={method:e,headers:we({"Content-Type":`application/json`}),signal:AbortSignal.timeout(om)};n&&(r.body=JSON.stringify(n));try{let e=await fetch(Ce(`/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:cm(e)}}}}function cm(e){let t=e instanceof Error?e.name:``;return t===`TimeoutError`||t===`AbortError`?`no response from the secret store within ${om/1e3}s`:`secret store unreachable: ${e instanceof Error?e.message:String(e)}`}function lm(e,t){return`could not read ${e} secrets — ${t??`the bridge gave no reason`}`}function um(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 dm(){return{async list(){let[e,t]=await Promise.all([sm(`GET`,``),sm(`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(lm(`saved`,hm(e.data)));if(t.ok)for(let e of t.data)n.push({name:e.name,domains:e.domains,persisted:!1});else r.push(lm(`session`,hm(t.data)));return{entries:n,warnings:r}},async getInfo(e){return um(await this.list(),e)},async getMasked(e){let{ok:t,data:n}=await sm(`GET`,`/masked`);return t?n.find(t=>t.name===e)??null:null},async peek(e){let{ok:t,data:n}=await sm(`GET`,`/peek?name=${encodeURIComponent(e)}`);return t?n:null},async setSession(e,t,n){let{ok:r,data:i}=await sm(`POST`,`/session`,{name:e,value:t,domains:n});if(!r)throw Error(hm(i)??`failed to set session secret`)},async setPersisted(e,t,n){let{ok:r,data:i}=await sm(`POST`,``,{name:e,value:t,domains:n});if(!r)throw Error(hm(i)??`failed to persist secret`)},async setScope(e,t){let{ok:n,data:r}=await sm(`POST`,`/scope`,{name:e,domains:t});if(!n)throw Error(hm(r)??`failed to update scope`)},async delete(e){let{ok:t,status:n,data:r}=await sm(`DELETE`,`/${encodeURIComponent(e)}`);if(n===404)return{removed:!1};if(!t)throw Error(hm(r)??`failed to delete secret`);return{removed:!0,fromSession:r&&typeof r==`object`&&`fromSession`in r?!!r.fromSession:void 0}}}}function fm(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(lm(`saved`,e?.error)),n?.entries||i.push(lm(`session`,n?.error)),{entries:r,warnings:i}},async getInfo(e){return um(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 pm(){return fm(e=>am(e))}function mm(){return fm(e=>{let{type:t,...n}=e;return Ae(t,n)})}function hm(e){if(e&&typeof e==`object`&&`error`in e){let t=e.error;if(typeof t==`string`)return t}}function gm(e){switch(e){case`extension-direct`:return pm();case`extension-delegate`:return mm();default:return dm()}}const _m=`git-credential-slicc`,vm=new Map([[_m,`git`],[`git-upload-pack`,`git`],[`git-receive-pack`,`git`],[`git-upload-archive`,`git`],[`git-remote-http`,`git`],[`git-remote-https`,`git`]]),ym=[`github.com`,`*.github.com`],bm=/(_TOKEN|_PAT)$/;function xm(e){let t=new Map;for(let n of e.split(`
157
+ `)){let e=n.indexOf(`=`);e>0&&t.set(n.slice(0,e),n.slice(e+1).replace(/\r$/,``))}return t}function Sm(e){let t=e.get(`host`)??``;try{return new URL(`https://${t}`).hostname}catch{return``}}async function Cm(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 wm(e,t,n){let r=await t.githubToken?.(e).catch(()=>void 0);if(!r)return;let i=t.githubDomains?.()??ym;return{token:r,domains:r===e.GH_TOKEN||r===e.GITHUB_TOKEN?await Cm(r,[`GH_TOKEN`,`GITHUB_TOKEN`],n,ym):i}}async function Tm(e,t){let{entries:n}=await t.list().catch(()=>({entries:[]})),r=n.filter(e=>bm.test(e.name)&&!e.domains.includes(`*`)).filter(t=>Ta(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 Em(e,t,n){let r=Sm(e);if(e.get(`protocol`)!==`https`||!r)return{stdout:``,stderr:``,exitCode:0};let i=(n.backend??(()=>gm(Oe())))(),a=await wm(t,n,i),o=a&&Ta(a.domains,r)?a:await Tm(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 Dm(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 Om(e={}){return S(_m,async(t,n)=>{let r=t[0];if(r===void 0||r===`-h`||r===`--help`)return{stdout:`usage: git-credential-slicc <get|store|erase>
158
158
 
159
159
  The git credential helper for native git in the wasm realm, configured by
160
160
  default (credential.helper=slicc). Reads git's key=value request on stdin.
@@ -165,7 +165,7 @@ default (credential.helper=slicc). Reads git's key=value request on stdin.
165
165
  a host outside the credential's domains, or for plain http.
166
166
  store Nothing to do: SLICC keeps its own credentials.
167
167
  erase Renews SLICC's GitHub token when it was the one rejected.
168
- `,stderr:``,exitCode:+(r===void 0)};let i=Object.fromEntries(n.env),a=wm(P(n.stdin));return r===`get`?km(a,i,e):r===`erase`?Am(a,i,e):{stdout:``,stderr:``,exitCode:0}})}const Mm={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 Nm(e,t=[],n){let r=Mm[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: ${Dt(n)}</div>`:``;return`
168
+ `,stderr:``,exitCode:+(r===void 0)};let i=Object.fromEntries(n.env),a=xm(P(n.stdin));return r===`get`?Em(a,i,e):r===`erase`?Dm(a,i,e):{stdout:``,stderr:``,exitCode:0}})}const km={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 Am(e,t=[],n){let r=km[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: ${wt(n)}</div>`:``;return`
169
169
  <div class="sprinkle-action-card">
170
170
  <div class="sprinkle-action-card__header">
171
171
  <div class="sprinkle-action-card__title-group">${r.title}${a}</div>
@@ -176,11 +176,11 @@ default (credential.helper=slicc). Reads git's key=value request on stdin.
176
176
  <button class="sprinkle-btn sprinkle-btn--primary" data-action="approve" data-picker="${e}"${i}>${r.approve}</button>
177
177
  </div>
178
178
  </div>
179
- `}const Pm=Symbol(`mount:timeout`),Fm=Symbol(`mount:no-panel`);async function Im(e,t){let n=Me.generateId(),r=!1,i=!1,a=Ne({id:n,html:Nm(`directory`,[],t),onAction:(e,t)=>Lm(e,t)},e.onUpdate).catch(e=>{if(r)return Pm;if(i)return Fm;throw e}),o,s=new Promise(e=>{o=setTimeout(()=>{r=!0,Me.cancel(n,`mount: timed out`),e(Pm)},3e5)}),c=new Promise(e=>{Me.waitForMount(n,5e3).then(()=>{},()=>{r||(i=!0,Me.cancel(n,`mount: panel did not render the approval card`),e(Fm))})}),l=await Promise.race([a,s,c]);if(o&&clearTimeout(o),l===Pm)throw Error(`mount: timed out after 5 minute(s) waiting for user approval`);if(l===Fm)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 Lm(e,t){if(e!==`approve`)return{denied:!0};let n=t;if(n?.handleInIdb&&typeof n.idbKey==`string`)try{let e=await Vt(n.idbKey);return e?(await zt(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 Rm(e){let t=e?.parts;return t?.length!==1||t[0]?.type!==`Literal`?null:t[0].value??null}function zm(e){return{type:`Word`,parts:[{type:`Literal`,value:e}]}}function Bm(e){for(let t of e.args){let e=Rm(t);if(e===`-o`||e===`--out`)return!0}return!1}function Vm(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 Hm(e){Rm(e.name)!==`say`||Bm(e)||(e.args=[zm(`-o`),zm(`-`),...e.args])}function Um(e,t){if(Array.isArray(e)){for(let n of e)Um(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`&&Vm(r);r?.type===`SimpleCommand`&&a&&Hm(r),Um(r,a)}return}if(n.type===`CommandSubstitution`||n.type===`ProcessSubstitution`){Um(n.body,!0);return}for(let e of Object.values(n))Um(e,t)}const Wm={name:`say-stdio`,transform(e){return Um(e.ast,!1),{ast:e.ast}}};function Gm(e){if(e?.trim())return e.split(`,`).map(e=>e.trim()).filter(Boolean)}function Km(e){if(!e)return!1;let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`yes`}function qm(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:Km(e.installAll)},affinity:{apps:Gm(e.apps),tasks:Gm(e.tasks),role:Gm(e.role),purpose:Gm(e.purpose)},priority:n}})}const Jm={apps:3,tasks:2,role:1,purpose:1};function Ym(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*Jm.apps,r.push(`apps(${i.join(`, `)})`));let a=(e.affinity.tasks??[]).filter(e=>t.tasks.includes(e));return a.length&&(n+=a.length*Jm.tasks,r.push(`tasks(${a.join(`, `)})`)),(e.affinity.role??[]).includes(t.role)&&(n+=Jm.role,r.push(`role(${t.role})`)),(e.affinity.purpose??[]).includes(t.purpose)&&(n+=Jm.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 Xm(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 Zm(e){let t=new Set;try{let n=await e.readDir(Ei);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 Qm(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 $m(e){return typeof e!=`string`||!e?null:te(e)||null}function eh(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 th(e,t){try{let n=$m(t);if(!n)return[];let r=await e(`${Oi}${n}.json`,{headers:{Accept:`application/json`}});return r.status===200?qm(be(r.body).data):[]}catch{return[]}}async function nh(e){let t;try{t=await e(ki,{headers:{Accept:`application/json`}})}catch(e){throw Error(Ri(e,ki))}if(t.status!==200)throw Error(`HTTP ${t.status}`);return qm(be(t.body).data)}function rh(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 ih(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 Yi(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 ah(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 Xi(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 Ji(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 oh(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 ih(d,e,n,c,o,s,r.count,i,a);l.push(...t.results),u+=t.line;continue}let f=rh(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 Yi(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 sh(e,t,n,r,i,a,o,s,c,l){let u=await zi(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 ah(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 Ji(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 ch(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 lh(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=Qm(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=Qm(JSON.parse(t));break}catch{}}catch{}if(!a)return i(`no-profile`);let o,s;try{let[n,r,i]=await Promise.all([nh(t),th(t,a.company),Zm(e)]);o=eh(n,r),s=i}catch(e){return i(`catalog-fetch`,[`upskill: failed to fetch skill catalog from ${ki}: ${e instanceof Error?e.message:String(e)}`])}let c=Ym(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=ch(await Promise.allSettled(Array.from(l.entries()).map(async([n,i])=>{let[a,o]=n.split(`/`),c=await Ii(a,o,t);return c.status===`error`?sh(n,i,a,o,d,u,r,s,t,e):oh(n,i,ji(c.files),d,u,r,s,e)})),f,p);let h=(Date.now()-r)/1e3;return p.length>0&&(await Ki(),m+=`\nInstalled ${p.length} recommended skill(s) in ${h.toFixed(1)}s\n`),{installedNames:p,errors:f,skipped:null,log:m,elapsedSeconds:h}}function uh(e){let t=e.toLowerCase();return t.startsWith(`www.`)?t.slice(4):t}let dh,fh;async function ph(e){if(dh)return dh;if(fh!==void 0)return fh;fh=(async()=>{let t;try{t=await e(Ai,{headers:{Accept:`application/json`}})}catch(e){throw Error(Ri(e,Ai))}if(t.status!==200)throw Error(`browse.sh returned HTTP ${t.status}`);let n=be(t.body),r=Array.isArray(n)?n:n.skills??[];return dh=r,r})();try{return await fh}catch(e){throw fh=void 0,e}}async function mh(e,t){let n=await ph(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 hh=/^[A-Za-z0-9._-]+$/;function gh(e){return!e||e===`.`||e===`..`?!1:hh.test(e)}function _h(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(`/`)||!gh(r)||!gh(i))return null;let a=uh(r);return gh(a)?{hostname:a,task:i}:null}function vh(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 yh(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
- `)}function bh(e){return e.replace(/(?:^|\n)> \[!NOTE\] \*\*Imported from browse\.sh\*\*[\s\S]*?(?:\n\n|$)/,`
181
- `)}function xh(e,t){let n=e.match(/^(---\r?\n[\s\S]*?\r?\n---)(\r?\n|$)/);return n?`${n[1]}${n[2]||`
182
- `}\n${t}\n\n${e.slice(n[0].length)}`:`${t}\n\n${e}`}async function Sh(e,t,n){let r=`${e}/${t}`,i=`${Ai}/${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=be(e.body)}catch(e){return{ok:!1,error:`failed to fetch browse.sh skill "${r}": ${Ri(e,i)}`}}let o;if(a.skillMdUrl)try{let e=await n(a.skillMdUrl,{headers:{Accept:`text/plain`}});e.status===200&&(o=xe(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=vh(o,`name`),c=t.replace(/-[A-Za-z0-9]{4,8}$/,``),l=s||c||t;if(!gh(l)||l.length>64)return{ok:!1,error:`refusing to install browse.sh skill with unsafe name "${l}"`};if(!gh(e))return{ok:!1,error:`refusing to install browse.sh skill with unsafe hostname "${e}"`};let u=yh(a,r);return{ok:!0,dirName:`browse-${e}-${l}`,slug:r,content:xh(o,u)}}async function Ch(e,t,n,r,i=!1){let a=await Sh(e,t,r);if(!a.ok)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let{dirName:o,slug:s,content:c}=a,l=`${Ei}/${o}`;try{if(await n.stat(l),!i)return{stdout:``,stderr:`upskill: skill "${o}" already exists (use --force to overwrite)\n`,exitCode:1};await Li(n,l,await Zi(n,o))}catch{}return await n.mkdir(l,{recursive:!0}),await n.writeFile(`${l}/SKILL.md`,c),await Hi(n,o,{kind:`browse.sh`,source:s,skill:o,files:[`SKILL.md`]}),await Ki(),{stdout:`Installed skill "${o}" from browse.sh (${s})\n`,stderr:``,exitCode:0}}function wh(){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 Th(e){switch(e){case`native`:return`native`;case`agents`:return`.agents`;case`claude`:return`.claude`;case`marketplace`:return`marketplace`;case`plugin`:return`plugin`}}function Eh(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)} ${Th(t.source).padEnd(11)} ${i}\n`}return o+=`\n${wh()}`,o}function Dh(e){let t=`Skill: ${e.name}\n`;if(t+=`Description: ${e.description||`(none)`}\n`,t+=`Source: ${Th(e.source)}\n`,t+=`Source root: ${e.sourceRoot}\n`,e.skillFilePath&&(t+=`Instructions: ${e.skillFilePath}\n`),e.shadowedPaths?.length){t+=`Shadowed paths:
183
- `;for(let n of e.shadowedPaths)t+=` - ${n}\n`}return t}function Oh(){return{stdout:`usage: upskill <command> [options]
179
+ `}const jm=Symbol(`mount:timeout`),Mm=Symbol(`mount:no-panel`);async function Nm(e,t){let n=Me.generateId(),r=!1,i=!1,a=Ne({id:n,html:Am(`directory`,[],t),onAction:(e,t)=>Pm(e,t)},e.onUpdate).catch(e=>{if(r)return jm;if(i)return Mm;throw e}),o,s=new Promise(e=>{o=setTimeout(()=>{r=!0,Me.cancel(n,`mount: timed out`),e(jm)},3e5)}),c=new Promise(e=>{Me.waitForMount(n,5e3).then(()=>{},()=>{r||(i=!0,Me.cancel(n,`mount: panel did not render the approval card`),e(Mm))})}),l=await Promise.race([a,s,c]);if(o&&clearTimeout(o),l===jm)throw Error(`mount: timed out after 5 minute(s) waiting for user approval`);if(l===Mm)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 Pm(e,t){if(e!==`approve`)return{denied:!0};let n=t;if(n?.handleInIdb&&typeof n.idbKey==`string`)try{let e=await Rt(n.idbKey);return e?(await It(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 Fm(e){let t=e?.parts;return t?.length!==1||t[0]?.type!==`Literal`?null:t[0].value??null}function Im(e){return{type:`Word`,parts:[{type:`Literal`,value:e}]}}function Lm(e){for(let t of e.args){let e=Fm(t);if(e===`-o`||e===`--out`)return!0}return!1}function Rm(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 zm(e){Fm(e.name)!==`say`||Lm(e)||(e.args=[Im(`-o`),Im(`-`),...e.args])}function Bm(e,t){if(Array.isArray(e)){for(let n of e)Bm(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`&&Rm(r);r?.type===`SimpleCommand`&&a&&zm(r),Bm(r,a)}return}if(n.type===`CommandSubstitution`||n.type===`ProcessSubstitution`){Bm(n.body,!0);return}for(let e of Object.values(n))Bm(e,t)}const Vm={name:`say-stdio`,transform(e){return Bm(e.ast,!1),{ast:e.ast}}};function Hm(e){if(e?.trim())return e.split(`,`).map(e=>e.trim()).filter(Boolean)}function Um(e){if(!e)return!1;let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`yes`}function Wm(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:Um(e.installAll)},affinity:{apps:Hm(e.apps),tasks:Hm(e.tasks),role:Hm(e.role),purpose:Hm(e.purpose)},priority:n}})}const Gm={apps:3,tasks:2,role:1,purpose:1};function Km(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*Gm.apps,r.push(`apps(${i.join(`, `)})`));let a=(e.affinity.tasks??[]).filter(e=>t.tasks.includes(e));return a.length&&(n+=a.length*Gm.tasks,r.push(`tasks(${a.join(`, `)})`)),(e.affinity.role??[]).includes(t.role)&&(n+=Gm.role,r.push(`role(${t.role})`)),(e.affinity.purpose??[]).includes(t.purpose)&&(n+=Gm.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 qm(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 Jm(e){let t=new Set;try{let n=await e.readDir(Ci);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 Ym(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 Xm(e){return typeof e!=`string`||!e?null:te(e)||null}function Zm(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 Qm(e,t){try{let n=Xm(t);if(!n)return[];let r=await e(`${Ti}${n}.json`,{headers:{Accept:`application/json`}});return r.status===200?Wm(be(r.body).data):[]}catch{return[]}}async function $m(e){let t;try{t=await e(Ei,{headers:{Accept:`application/json`}})}catch(e){throw Error(Fi(e,Ei))}if(t.status!==200)throw Error(`HTTP ${t.status}`);return Wm(be(t.body).data)}function eh(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 th(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 Ki(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 nh(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 qi(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 Gi(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 rh(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 th(d,e,n,c,o,s,r.count,i,a);l.push(...t.results),u+=t.line;continue}let f=eh(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 Ki(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 ih(e,t,n,r,i,a,o,s,c,l){let u=await Ii(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 nh(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 Gi(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 ah(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 oh(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=Ym(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=Ym(JSON.parse(t));break}catch{}}catch{}if(!a)return i(`no-profile`);let o,s;try{let[n,r,i]=await Promise.all([$m(t),Qm(t,a.company),Jm(e)]);o=Zm(n,r),s=i}catch(e){return i(`catalog-fetch`,[`upskill: failed to fetch skill catalog from ${Ei}: ${e instanceof Error?e.message:String(e)}`])}let c=Km(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=ah(await Promise.allSettled(Array.from(l.entries()).map(async([n,i])=>{let[a,o]=n.split(`/`),c=await Ni(a,o,t);return c.status===`error`?ih(n,i,a,o,d,u,r,s,t,e):rh(n,i,Oi(c.files),d,u,r,s,e)})),f,p);let h=(Date.now()-r)/1e3;return p.length>0&&(await Ui(),m+=`\nInstalled ${p.length} recommended skill(s) in ${h.toFixed(1)}s\n`),{installedNames:p,errors:f,skipped:null,log:m,elapsedSeconds:h}}function sh(e){let t=e.toLowerCase();return t.startsWith(`www.`)?t.slice(4):t}let ch,lh;async function uh(e){if(ch)return ch;if(lh!==void 0)return lh;lh=(async()=>{let t;try{t=await e(Di,{headers:{Accept:`application/json`}})}catch(e){throw Error(Fi(e,Di))}if(t.status!==200)throw Error(`browse.sh returned HTTP ${t.status}`);let n=be(t.body),r=Array.isArray(n)?n:n.skills??[];return ch=r,r})();try{return await lh}catch(e){throw lh=void 0,e}}async function dh(e,t){let n=await uh(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 fh=/^[A-Za-z0-9._-]+$/;function ph(e){return!e||e===`.`||e===`..`?!1:fh.test(e)}function mh(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(`/`)||!ph(r)||!ph(i))return null;let a=sh(r);return ph(a)?{hostname:a,task:i}:null}function hh(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 gh(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
+ `)}function _h(e){return e.replace(/(?:^|\n)> \[!NOTE\] \*\*Imported from browse\.sh\*\*[\s\S]*?(?:\n\n|$)/,`
181
+ `)}function vh(e,t){let n=e.match(/^(---\r?\n[\s\S]*?\r?\n---)(\r?\n|$)/);return n?`${n[1]}${n[2]||`
182
+ `}\n${t}\n\n${e.slice(n[0].length)}`:`${t}\n\n${e}`}async function yh(e,t,n){let r=`${e}/${t}`,i=`${Di}/${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=be(e.body)}catch(e){return{ok:!1,error:`failed to fetch browse.sh skill "${r}": ${Fi(e,i)}`}}let o;if(a.skillMdUrl)try{let e=await n(a.skillMdUrl,{headers:{Accept:`text/plain`}});e.status===200&&(o=xe(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=hh(o,`name`),c=t.replace(/-[A-Za-z0-9]{4,8}$/,``),l=s||c||t;if(!ph(l)||l.length>64)return{ok:!1,error:`refusing to install browse.sh skill with unsafe name "${l}"`};if(!ph(e))return{ok:!1,error:`refusing to install browse.sh skill with unsafe hostname "${e}"`};let u=gh(a,r);return{ok:!0,dirName:`browse-${e}-${l}`,slug:r,content:vh(o,u)}}async function bh(e,t,n,r,i=!1){let a=await yh(e,t,r);if(!a.ok)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let{dirName:o,slug:s,content:c}=a,l=`${Ci}/${o}`;try{if(await n.stat(l),!i)return{stdout:``,stderr:`upskill: skill "${o}" already exists (use --force to overwrite)\n`,exitCode:1};await Pi(n,l,await Ji(n,o))}catch{}return await n.mkdir(l,{recursive:!0}),await n.writeFile(`${l}/SKILL.md`,c),await zi(n,o,{kind:`browse.sh`,source:s,skill:o,files:[`SKILL.md`]}),await Ui(),{stdout:`Installed skill "${o}" from browse.sh (${s})\n`,stderr:``,exitCode:0}}function xh(){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 Sh(e){switch(e){case`native`:return`native`;case`agents`:return`.agents`;case`claude`:return`.claude`;case`marketplace`:return`marketplace`;case`plugin`:return`plugin`}}function Ch(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)} ${Sh(t.source).padEnd(11)} ${i}\n`}return o+=`\n${xh()}`,o}function wh(e){let t=`Skill: ${e.name}\n`;if(t+=`Description: ${e.description||`(none)`}\n`,t+=`Source: ${Sh(e.source)}\n`,t+=`Source root: ${e.sourceRoot}\n`,e.skillFilePath&&(t+=`Instructions: ${e.skillFilePath}\n`),e.shadowedPaths?.length){t+=`Shadowed paths:
183
+ `;for(let n of e.shadowedPaths)t+=` - ${n}\n`}return t}function Th(){return{stdout:`usage: upskill <command> [options]
184
184
 
185
185
  Install skills from GitHub repositories, the Tessl registry, or browse.sh.
186
186
 
@@ -196,7 +196,7 @@ Commands:
196
196
  tessl:<name> Install skill from Tessl registry
197
197
  browse:<hostname>/<task> Install site-specific skill from browse.sh
198
198
 
199
- ${wh()}
199
+ ${xh()}
200
200
  GitHub Installation:
201
201
  upskill owner/repo List available skills in repo
202
202
  upskill owner/repo --skill name Install specific skill
@@ -268,14 +268,14 @@ Examples:
268
268
  upskill browse:weather.gov/get-forecast-1uezib
269
269
  upskill list --outdated
270
270
  upskill update --dry-run
271
- `,stderr:``,exitCode:0}}async function kh(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${wh()}Install skills with: upskill owner/repo --all\n`,stderr:``,exitCode:0};let{collisions:o}=await fr(t,lr(r));return{...pr(`skill`,Eh(a,`Discoverable skills`),o,{builtinNames:new Set(ot())}),exitCode:0}}function Ah(e){return S(`skill`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return{stdout:`usage: skill <command> [options]
271
+ `,stderr:``,exitCode:0}}async function Eh(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${xh()}Install skills with: upskill owner/repo --all\n`,stderr:``,exitCode:0};let{collisions:o}=await lr(t,or(r));return{...ur(`skill`,Ch(a,`Discoverable skills`),o,{builtinNames:new Set(rt())}),exitCode:0}}function Dh(e){return S(`skill`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return{stdout:`usage: skill <command> [options]
272
272
 
273
273
  Commands:
274
274
  list List discoverable skills
275
275
  info <name> Show details about a skill
276
276
  read <name> Read the SKILL.md instructions
277
277
 
278
- ${wh()}
278
+ ${xh()}
279
279
  For installing skills from registries or GitHub, use 'upskill':
280
280
  upskill search "query" Search registries (Tessl + browse.sh)
281
281
  upskill owner/repo --list List skills in GitHub repo
@@ -287,69 +287,64 @@ Examples:
287
287
  skill list
288
288
  skill info bluebubbles
289
289
  skill read bluebubbles
290
- `,stderr:``,exitCode:0};let r=t[0],i=await import(`./kernel-worker-CsBgMxu3.js`).then(e=>e.r);try{switch(r){case`list`:return kh(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
- `,exitCode:1};let r=await i.getSkillInfo(e,n);return r?{stdout:Dh(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
290
+ `,stderr:``,exitCode:0};let r=t[0],i=await import(`./kernel-worker-DefIX_AF.js`).then(e=>e.r);try{switch(r){case`list`:return Eh(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
+ `,exitCode:1};let r=await i.getSkillInfo(e,n);return r?{stdout:wh(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
292
292
  `,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+`
293
- `,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 jh=[{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 Mh(e){let t={skills:[],dryRun:!1,json:!1};for(let n=0;n<e.length;n++){let r=e[n],i=jh.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 Nh(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}async function Ph(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 Fh(e,t,n,r){let i=await Ph(e,t);return Ni(n)?i?{status:`kept-local`,write:!1}:{status:`added`,write:!0}:i?Nh(i,r)?{status:`unchanged`,write:!1}:{status:`updated`,write:!0}:{status:`added`,write:!0}}async function Ih(e,t,n,r){let i={changes:[],writes:[],removals:[]};for(let[r,a]of n){let n=`${t}/${r}`,{status:o,write:s}=await Fh(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 Pi(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 Lh(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 zi(t),d=await Vi(s,c,o.ref,u,!0,l||void 0);if(d&&r.sha===d&&await Rh(e,n,r))return{...o,to:d,outcome:`current`,changes:[]};let f=await zh(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 Ih(e,`${Ei}/${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 Wh(e,{changes:h,writes:g,removals:_}),await Hi(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 Rh(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 zh(e,t,n,r,i,a,o){let s=await Ii(e,t,a,i??`main`);if(s.status===`ok`){let i=ji(s.files),a=n||Bh(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:Uh(i,a),path:a}}try{return{files:Hh(Vh(await Fi(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 Bh(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 Vh(e){return new Map([...e].filter(([e])=>Mi(e)))}function Hh(e){return new Map([...e].sort(([e],[t])=>e.localeCompare(t)))}function Uh(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);Mi(e)&&r.set(e,i)}return Hh(r)}async function Wh(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 Gh(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 Sh(o,s,t);if(!c.ok)return{...a,outcome:`error`,error:c.error};let l=`${Ei}/${n}/SKILL.md`,u=await Ph(e,l),d=new TextEncoder().encode(c.content),f=u!==void 0&&bh(new TextDecoder().decode(u))===bh(c.content);if(Nh(u,d)||f)return{...a,changes:[{path:`SKILL.md`,status:`unchanged`}]};let p=u?`updated`:`added`;return i||(await e.mkdir(`${Ei}/${n}`,{recursive:!0}),await e.writeFile(l,d),await Hi(e,n,{...r,files:[`SKILL.md`]})),{...a,outcome:`updated`,changes:[{path:`SKILL.md`,status:p}]}}function Kh(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 qh(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 Jh(e,t,n){if(t.length===0){let t=await Bi(e);return{targets:t.provenanced,missing:[],skipped:t.unattributed}}let r=[],i=[];for(let a of t){let t=await Ui(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?qh(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 Yh(e){return e.reason===`not-installed`?`upskill: no skill named "${e.name}" is installed — check \`upskill list\`
293
+ `,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 Oh=[{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=>Wi(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 kh(e){let t={skills:[],dryRun:!1,json:!1};for(let n=0;n<e.length;n++){let r=e[n],i=Oh.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 Ah(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}async function jh(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 Mh(e,t,n,r){let i=await jh(e,t);return Ai(n)?i?{status:`kept-local`,write:!1}:{status:`added`,write:!0}:i?Ah(i,r)?{status:`unchanged`,write:!1}:{status:`updated`,write:!0}:{status:`added`,write:!0}}async function Nh(e,t,n,r){let i={changes:[],writes:[],removals:[]};for(let[r,a]of n){let n=`${t}/${r}`,{status:o,write:s}=await Mh(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 ji(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 Ph(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 Ii(t),d=await Ri(s,c,o.ref,u,!0,l||void 0);if(d&&r.sha===d&&await Fh(e,n,r))return{...o,to:d,outcome:`current`,changes:[]};let f=await Ih(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 Nh(e,`${Ci}/${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 Vh(e,{changes:h,writes:g,removals:_}),await zi(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 Fh(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 Ih(e,t,n,r,i,a,o){let s=await Ni(e,t,a,i??`main`);if(s.status===`ok`){let i=Oi(s.files),a=n||Lh(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:Bh(i,a),path:a}}try{return{files:zh(Rh(await Mi(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 Lh(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 Rh(e){return new Map([...e].filter(([e])=>ki(e)))}function zh(e){return new Map([...e].sort(([e],[t])=>e.localeCompare(t)))}function Bh(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);ki(e)&&r.set(e,i)}return zh(r)}async function Vh(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 Hh(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 yh(o,s,t);if(!c.ok)return{...a,outcome:`error`,error:c.error};let l=`${Ci}/${n}/SKILL.md`,u=await jh(e,l),d=new TextEncoder().encode(c.content),f=u!==void 0&&_h(new TextDecoder().decode(u))===_h(c.content);if(Ah(u,d)||f)return{...a,changes:[{path:`SKILL.md`,status:`unchanged`}]};let p=u?`updated`:`added`;return i||(await e.mkdir(`${Ci}/${n}`,{recursive:!0}),await e.writeFile(l,d),await zi(e,n,{...r,files:[`SKILL.md`]})),{...a,outcome:`updated`,changes:[{path:`SKILL.md`,status:p}]}}function Uh(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 Wh(e,t,n,r){let i=Wi(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 Gh(e,t,n){if(t.length===0){let t=await Li(e);return{targets:t.provenanced,missing:[],skipped:t.unattributed}}let r=[],i=[];for(let a of t){let t=await Bi(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?Wh(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 Kh(e){return e.reason===`not-installed`?`upskill: no skill named "${e.name}" is installed — check \`upskill list\`
294
294
  `:`upskill: no install provenance for "${e.name}" — re-run with --from <owner>/<repo> (optionally --path <dir>) to record its source, or reinstall it once
295
- `}function Xh(e,t){return`${e} ${t}${e===1?``:`s`}`}function Zh(e){return`\nSkipped ${Xh(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.
295
+ `}function qh(e,t){return`${e} ${t}${e===1?``:`s`}`}function Jh(e){return`\nSkipped ${qh(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.
296
296
  For the rest, record a source once with \`upskill update <skill> --from <owner>/<repo> --dry-run\`,
297
297
  after which a bare \`upskill update\` sweeps them too.
298
- `}function Qh(e,t,n,r,i){let a=t?`Skill update (dry run — nothing written):
298
+ `}function Yh(e,t,n,r,i){let a=t?`Skill update (dry run — nothing written):
299
299
  `:`Skill update:
300
- `;for(let n of e)a+=Kh(n,t);if(i.length>0&&(a+=Zh(i)),!n&&r&&e.length>0){let n=i.length>0?`all ${Xh(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 $h(e,t,n){let{targets:r,missing:i,skipped:a}=await Jh(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 Gh(e,t,i.name,i.provenance,n.dryRun):await Lh(e,t,i.name,i.provenance,n.branch,n.dryRun));return{results:o,skipped:a,missing:i}}async function eg(e,t,n){let r=Mh(e);if(r.error)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{results:i,missing:a,skipped:o}=await $h(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`:Qh([],r.dryRun,!1,!0,o),stderr:``,exitCode:0}:{stdout:``,stderr:a.length?a.map(Yh).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 Ki();let l=a.map(Yh).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:Qh(i,r.dryRun,c,u,o),stderr:l,exitCode:+!u}}function tg(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 ng(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 rg(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}${ng(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(`
301
- `)}\n`}async function ig(e,t,n){let r=await(await import(`./kernel-worker-CsBgMxu3.js`).then(e=>e.r)).discoverSkills(e),{collisions:i}=await fr(e,lr(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${wh()}`,stderr:``,exitCode:0}:{...pr(`upskill`,Eh(r,`Discoverable local skills`),i,{builtinNames:new Set(ot())}),exitCode:0}}async function ag(e,t,n){let{results:r,skipped:i}=await $h(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:rg(r,i),stderr:c,exitCode:+!s}}async function og(e,t,n,r){let i=tg(e);return i.error?{stdout:``,stderr:`${i.error}\n`,exitCode:1}:i.outdated?ag(t,n,i.json):ig(t,i.json,r)}async function sg(e,t){let n=`${Di}/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(Ri(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=be(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=Gi(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 cg(e,t){let n=`${Di}/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: ${Ri(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=be(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=Gi(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 lg=[{label:`Tessl`,host:new URL(Di).host,fetch:sg},{label:`browse.sh`,host:new URL(Ai).host,fetch:mh}];function ug(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(lg.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=ug(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=lg[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+=`
300
+ `;for(let n of e)a+=Uh(n,t);if(i.length>0&&(a+=Jh(i)),!n&&r&&e.length>0){let n=i.length>0?`all ${qh(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 Xh(e,t,n){let{targets:r,missing:i,skipped:a}=await Gh(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 Hh(e,t,i.name,i.provenance,n.dryRun):await Ph(e,t,i.name,i.provenance,n.branch,n.dryRun));return{results:o,skipped:a,missing:i}}async function Zh(e,t,n){let r=kh(e);if(r.error)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{results:i,missing:a,skipped:o}=await Xh(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`:Yh([],r.dryRun,!1,!0,o),stderr:``,exitCode:0}:{stdout:``,stderr:a.length?a.map(Kh).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 Ui();let l=a.map(Kh).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:Yh(i,r.dryRun,c,u,o),stderr:l,exitCode:+!u}}function Qh(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 $h(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 eg(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}${$h(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(`
301
+ `)}\n`}async function tg(e,t,n){let r=await(await import(`./kernel-worker-DefIX_AF.js`).then(e=>e.r)).discoverSkills(e),{collisions:i}=await lr(e,or(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${xh()}`,stderr:``,exitCode:0}:{...ur(`upskill`,Ch(r,`Discoverable local skills`),i,{builtinNames:new Set(rt())}),exitCode:0}}async function ng(e,t,n){let{results:r,skipped:i}=await Xh(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:eg(r,i),stderr:c,exitCode:+!s}}async function rg(e,t,n,r){let i=Qh(e);return i.error?{stdout:``,stderr:`${i.error}\n`,exitCode:1}:i.outdated?ng(t,n,i.json):tg(t,i.json,r)}async function ig(e,t){let n=`${wi}/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(Fi(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=be(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=Hi(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 ag(e,t){let n=`${wi}/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: ${Fi(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=be(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=Hi(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 og=[{label:`Tessl`,host:new URL(wi).host,fetch:ig},{label:`browse.sh`,host:new URL(Di).host,fetch:dh}];function sg(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 cg(e,t,n=1){let r=await Promise.allSettled(og.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=sg(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=og[e],r=t.reason instanceof Error?t.reason.message:String(t.reason);s+=`warning: ${n.label} registry unavailable (${n.host}): ${r}\n`}}if(o.length===0){let t=a?`${s}upskill: registries failed to respond\n`:s;return{stdout:`No skills found for "${e}"\n\nTry a different search term or browse the registries at https://tessl.io/registry or https://browse.sh\n`,stderr:t,exitCode:+!!a}}let c=o.length,l=Math.ceil(c/10),u=Math.max(1,Math.min(n,l)),d=(u-1)*10,f=o.slice(d,d+10),p=`Search results for "${e}" (page ${u}/${l}, ${c} total):\n\n`;for(let e of f){let t=e.qualityScore==null?` `:String(e.qualityScore).padStart(3),n=`[${e.source}]`,r=e.sourceRepo?` ${e.sourceRepo}`:``;p+=` ${e.name.padEnd(30)} ${t} ${n.padEnd(10)}${r}\n`,e.summary&&(p+=` ${e.summary}\n`),p+=`
302
302
  `}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:
303
303
  `,p+=` From Tessl: upskill <owner/repo> --skill <name>
304
304
  `,p+=` From browse.sh: upskill browse:<hostname>/<task>
305
- `,{stdout:p,stderr:``,exitCode:0}}function fg(e,t,n){let r=`upskill ${e}`;return t&&(r+=` --branch ${t}`),n&&(r+=` --path ${n}`),r}async function pg(e,t){let n=[],r;try{r=await t(e,{method:`GET`})}catch(t){return n.push({rel:c,href:e,error:t instanceof Error?t.message:String(t)}),{links:[],failures:n}}let i=[];for(let[e,t]of Object.entries(r.headers||{}))e.toLowerCase()===`link`&&typeof t==`string`&&t.length>0&&i.push(t);if(i.length===0)return{links:[],failures:n};let o=s(i,e),l=[];for(let e of o){if(!e.rel.includes(c))continue;let t=a([e]);t?.verb===`upskill`&&l.push({target:t.target,branch:t.branch,path:t.path,instruction:t.instruction,installHint:fg(t.target,t.branch,t.path)})}return{links:l,failures:n}}function mg(e,t,n){if(!e||t.length===0)return[];let r=[];for(let i of t){if(!i.hostname||uh(i.hostname)!==e)continue;let t=i.name||i.task.replace(/-[A-Za-z0-9]{4,8}$/,``)||i.task,a=`browse-${i.hostname}-${t}`;r.push({slug:i.slug,hostname:i.hostname,task:i.task,title:i.title||i.name||i.task,description:i.description,installed:n.has(a),installHint:`upskill browse:${i.hostname}/${i.task}`})}return r}function hg(e){let t=e.active?` [active]`:``,n=`${e.title||`(untitled)`}${t}\n`;if(n+=` ${e.url}\n`,e.origin.length>0){n+=` Origin-advertised:
305
+ `,{stdout:p,stderr:``,exitCode:0}}function lg(e,t,n){let r=`upskill ${e}`;return t&&(r+=` --branch ${t}`),n&&(r+=` --path ${n}`),r}async function ug(e,t){let n=[],r;try{r=await t(e,{method:`GET`})}catch(t){return n.push({rel:c,href:e,error:t instanceof Error?t.message:String(t)}),{links:[],failures:n}}let i=[];for(let[e,t]of Object.entries(r.headers||{}))e.toLowerCase()===`link`&&typeof t==`string`&&t.length>0&&i.push(t);if(i.length===0)return{links:[],failures:n};let o=s(i,e),l=[];for(let e of o){if(!e.rel.includes(c))continue;let t=a([e]);t?.verb===`upskill`&&l.push({target:t.target,branch:t.branch,path:t.path,instruction:t.instruction,installHint:lg(t.target,t.branch,t.path)})}return{links:l,failures:n}}function dg(e,t,n){if(!e||t.length===0)return[];let r=[];for(let i of t){if(!i.hostname||sh(i.hostname)!==e)continue;let t=i.name||i.task.replace(/-[A-Za-z0-9]{4,8}$/,``)||i.task,a=`browse-${i.hostname}-${t}`;r.push({slug:i.slug,hostname:i.hostname,task:i.task,title:i.title||i.name||i.task,description:i.description,installed:n.has(a),installHint:`upskill browse:${i.hostname}/${i.task}`})}return r}function fg(e){let t=e.active?` [active]`:``,n=`${e.title||`(untitled)`}${t}\n`;if(n+=` ${e.url}\n`,e.origin.length>0){n+=` Origin-advertised:
306
306
  `;for(let t of e.origin)n+=` ${t.installHint}`,t.instruction&&(n+=` # ${t.instruction}`),n+=`
307
307
  `}if(e.catalog.length>0){n+=` Browse.sh catalog:
308
308
  `;for(let t of e.catalog){let e=t.installed?`✓`:` `;n+=` ${e} ${t.title.padEnd(40)} ${t.installHint}\n`}}e.origin.length===0&&e.catalog.length===0&&!e.failures.length&&(n+=` No skill suggestions for this tab.
309
309
  `);for(let t of e.failures)n+=` (discovery failed: ${t.error})\n`;return n+=`
310
- `,n}async function gg(e,t,n,r){if(!n)return{stdout:``,stderr:`upskill: browser APIs unavailable in this environment
310
+ `,n}async function pg(e,t,n,r){if(!n)return{stdout:``,stderr:`upskill: browser APIs unavailable in this environment
311
311
  `,exitCode:1};let i;try{i=await n.listPages()}catch{try{i=await n.listAllTargets()}catch(e){return{stdout:``,stderr:`upskill: failed to list browser tabs: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}if(i.length===0)return r?{stdout:JSON.stringify({tabs:[]},null,2)+`
312
312
  `,stderr:``,exitCode:0}:{stdout:`No open browser tabs.
313
- `,stderr:``,exitCode:0};let a=[],o=``;try{a=await ph(t)}catch(e){o=`upskill: warning: browse.sh catalog unavailable: ${e instanceof Error?e.message:String(e)}\n`}let s=await Zm(e),c=[];for(let e of i){let n=``;try{n=new URL(e.url).hostname}catch{}let r=n?uh(n):``,i=[],o=[];if(n&&/^https?:/i.test(e.url)){let n=await pg(e.url,t);i=n.links,o=n.failures}let l=mg(r,a,s);c.push({targetId:e.targetId,title:e.title,url:e.url,hostname:r,active:e.active,origin:i,catalog:l,failures:o})}if(r)return{stdout:JSON.stringify({tabs:c},null,2)+`
314
- `,stderr:o,exitCode:0};let l=``;for(let e of c)l+=hg(e);return{stdout:l,stderr:o,exitCode:0}}async function _g(e,t,n){if(n){let n=await lh(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.
313
+ `,stderr:``,exitCode:0};let a=[],o=``;try{a=await uh(t)}catch(e){o=`upskill: warning: browse.sh catalog unavailable: ${e instanceof Error?e.message:String(e)}\n`}let s=await Jm(e),c=[];for(let e of i){let n=``;try{n=new URL(e.url).hostname}catch{}let r=n?sh(n):``,i=[],o=[];if(n&&/^https?:/i.test(e.url)){let n=await ug(e.url,t);i=n.links,o=n.failures}let l=dg(r,a,s);c.push({targetId:e.targetId,title:e.title,url:e.url,hostname:r,active:e.active,origin:i,catalog:l,failures:o})}if(r)return{stdout:JSON.stringify({tabs:c},null,2)+`
314
+ `,stderr:o,exitCode:0};let l=``;for(let e of c)l+=fg(e);return{stdout:l,stderr:o,exitCode:0}}async function mg(e,t,n){if(n){let n=await oh(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.
315
315
  `,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.
316
316
  `,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.
317
- `,exitCode:1};let i,a;try{let[n,o,s]=await Promise.all([(async()=>{let e=await t(ki,{headers:{Accept:`application/json`}});if(e.status!==200)throw Error(`HTTP ${e.status}`);return qm(be(e.body).data)})(),th(t,r.company),Zm(e)]);i=eh(n,o),a=s}catch(e){return{stdout:``,stderr:`upskill: failed to fetch skill catalog from ${ki}: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let o=Ym(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.
317
+ `,exitCode:1};let i,a;try{let[n,o,s]=await Promise.all([(async()=>{let e=await t(Ei,{headers:{Accept:`application/json`}});if(e.status!==200)throw Error(`HTTP ${e.status}`);return Wm(be(e.body).data)})(),Qm(t,r.company),Jm(e)]);i=Zm(n,o),a=s}catch(e){return{stdout:``,stderr:`upskill: failed to fetch skill catalog from ${Ei}: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let o=Km(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
318
  `,stderr:``,exitCode:0};let s=`Recommended skills for you:
319
319
 
320
- `,c=0;for(let e of o){c++;let t=Xm(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
321
- `,{stdout:s,stderr:``,exitCode:0}}function vg(e){return!e||e.startsWith(`-`)?{stdout:``,stderr:`upskill: --branch requires a value
320
+ `,c=0;for(let e of o){c++;let t=qm(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
321
+ `,{stdout:s,stderr:``,exitCode:0}}function hg(e){return!e||e.startsWith(`-`)?{stdout:``,stderr:`upskill: --branch requires a value
322
322
  `,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
323
- `,exitCode:1}}function yg(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
324
- `,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=vg(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 bg(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./kernel-worker-CsBgMxu3.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 Ui(n,t),a=i?Wi(i):"Installed from: (no provenance recorded — reinstall to enable `upskill update`)\n";return{stdout:Dh(e)+a,stderr:``,exitCode:0}}let i=await r.readSkillInstructions(n,t);return i===null?{stdout:``,stderr:`upskill: no SKILL.md found for "${t}"\n`,exitCode:1}:{stdout:i+`
325
- `,stderr:``,exitCode:0}}async function xg(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 Yi(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 Sg(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 Ji(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 Cg(e,t,n,r,i,a,o,s){let c=``,l=``,u=0;for(let d of e){let e=await Ji(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 wg(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 Tg(e,t,n,r){let{owner:i,repo:a}=e,o=t.branch??e.branch,s=t.subPath??e.path,c=await zi(r),l=await Xi(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:wg(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:wg(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 Ii(i,a,r,o);if(e.status===`ok`){let r=await Vi(i,a,o,c,!0,s),l=await xg(u,i,a,ji(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 Sg(u,i,a,c,n,t.force,o,f);({output:p,errors:m,successCount:h}=e)}}else({output:p,errors:m,successCount:h}=await Cg(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 Ki()),{stdout:p,stderr:m,exitCode:+!!m}}async function Eg(e,t,n,r,i){switch(e[0]){case`tabs`:return gg(t,n,r,e.includes(`--json`));case`recommendations`:return _g(t,n,e.includes(`--install`));case`update`:case`upgrade`:return eg(e.slice(1),t,n);case`list`:return og(e.slice(1),t,n,i);case`info`:case`read`:return bg(e[0],e[1],t);case`search`:return Og(e,n);default:return null}}function Dg(e,t,n){return S(`upskill`,async(r,i)=>{if(r.length===0||r.includes(`--help`)||r.includes(`-h`))return Oh();let a=await Eg(r,e,t,n,i.env.get(`PATH`));if(a)return a;let o=yg(r);if(o.earlyReturn)return o.earlyReturn;if(!o.sourceRef)return Oh();if(o.sourceRef.startsWith(`tessl:`))return kg(o.sourceRef,o.force,e,t);let s=_h(o.sourceRef);if(s)return Ch(s.hostname,s.task,e,t,o.force);let c=qi(o.sourceRef);return c?Tg(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 Og(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):Oh()}async function kg(e,t,n,r){let i=e.slice(6);if(!i)return{stdout:``,stderr:`upskill: tessl: requires a skill name
326
- `,exitCode:1};let a=await cg(i,r);if(`error`in a)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let o=await zi(r);return Ji(a.owner,a.repo,a.skillPath,a.skillName,n,o,t,r)}function Ag(){return{stdout:`usage: afplay [-v volume] [-r rate] <file>
323
+ `,exitCode:1}}function gg(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
324
+ `,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=hg(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 _g(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./kernel-worker-DefIX_AF.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 Bi(n,t),a=i?Vi(i):"Installed from: (no provenance recorded — reinstall to enable `upskill update`)\n";return{stdout:wh(e)+a,stderr:``,exitCode:0}}let i=await r.readSkillInstructions(n,t);return i===null?{stdout:``,stderr:`upskill: no SKILL.md found for "${t}"\n`,exitCode:1}:{stdout:i+`
325
+ `,stderr:``,exitCode:0}}async function vg(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 Ki(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 yg(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 Gi(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 bg(e,t,n,r,i,a,o,s){let c=``,l=``,u=0;for(let d of e){let e=await Gi(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 xg(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 Sg(e,t,n,r){let{owner:i,repo:a}=e,o=t.branch??e.branch,s=t.subPath??e.path,c=await Ii(r),l=await qi(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:xg(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:xg(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 Ni(i,a,r,o);if(e.status===`ok`){let r=await Ri(i,a,o,c,!0,s),l=await vg(u,i,a,Oi(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 yg(u,i,a,c,n,t.force,o,f);({output:p,errors:m,successCount:h}=e)}}else({output:p,errors:m,successCount:h}=await bg(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 Ui()),{stdout:p,stderr:m,exitCode:+!!m}}async function Cg(e,t,n,r,i){switch(e[0]){case`tabs`:return pg(t,n,r,e.includes(`--json`));case`recommendations`:return mg(t,n,e.includes(`--install`));case`update`:case`upgrade`:return Zh(e.slice(1),t,n);case`list`:return rg(e.slice(1),t,n,i);case`info`:case`read`:return _g(e[0],e[1],t);case`search`:return Tg(e,n);default:return null}}function wg(e,t,n){return S(`upskill`,async(r,i)=>{if(r.length===0||r.includes(`--help`)||r.includes(`-h`))return Th();let a=await Cg(r,e,t,n,i.env.get(`PATH`));if(a)return a;let o=gg(r);if(o.earlyReturn)return o.earlyReturn;if(!o.sourceRef)return Th();if(o.sourceRef.startsWith(`tessl:`))return Eg(o.sourceRef,o.force,e,t);let s=mh(o.sourceRef);if(s)return bh(s.hostname,s.task,e,t,o.force);let c=Wi(o.sourceRef);return c?Sg(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 Tg(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?cg(a,t,i):Th()}async function Eg(e,t,n,r){let i=e.slice(6);if(!i)return{stdout:``,stderr:`upskill: tessl: requires a skill name
326
+ `,exitCode:1};let a=await ag(i,r);if(`error`in a)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let o=await Ii(r);return Gi(a.owner,a.repo,a.skillPath,a.skillName,n,o,t,r)}function Dg(){return{stdout:`usage: afplay [-v volume] [-r rate] <file>
327
327
 
328
328
  Plays an audio file using the Web Audio API.
329
329
  -v volume Volume level (0 to 1, default 1)
330
330
  -r rate Playback rate (0.25 to 4, default 1)
331
- `,stderr:``,exitCode:0}}function jg(e){return{stdout:``,stderr:`afplay: ${e}\n`,exitCode:1}}function Mg(e){return e instanceof Error?e.message:String(e)}const Ng={"-v":`a volume value`,"-r":`a rate value`};function Pg(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<0||t>1?`volume must be between 0 and 1`:null}function Fg(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<.25||t>4?`rate must be between 0.25 and 4`:null}function Ig(e,t,n){switch(t){case`-v`:return Pg(n)||(e.volume=Number.parseFloat(n),null);case`-r`:return Fg(n)||(e.rate=Number.parseFloat(n),null);default:return`unknown option: ${t}`}}function Lg(e){let t={volume:1,rate:1,filePath:null};for(let n=0;n<e.length;n++){let r=e[n];if(Object.hasOwn(Ng,r)){let i=n+1<e.length&&!e[n+1].startsWith(`-`)?e[++n]:null;if(i==null)return jg(`${r} requires ${Ng[r]}`);let a=Ig(t,r,i);if(a)return jg(a);continue}if(r.startsWith(`-`))return jg(`unknown option: ${r}`);if(t.filePath!==null)return jg(`only one file can be specified`);t.filePath=r}return t}let Rg=null;function zg(){return(!Rg||Rg.state===`closed`)&&(Rg=new AudioContext),Rg}function Bg(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function Vg(e,t){let n=t.fs.resolvePath(t.cwd,e);try{return{bytes:new Uint8Array(await t.fs.readFileBuffer(n)),fullPath:n}}catch{return jg(`cannot open ${e}: No such file`)}}function Hg(e,t){return hr(e).startsWith(`audio/`)?null:jg(`${t} is not an audio file`)}async function Ug(e,t,n,r,i){try{let n=hr(t);return await i.call(`play-audio`,{bytes:Bg(e),mimeType:n,volume:r},{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return jg(`failed to play ${n}: ${Mg(e)}`)}}async function Wg(e,t,n,r){try{let t=zg();t.state===`suspended`&&await t.resume();let i=await t.decodeAudioData(Bg(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 jg(`failed to play ${t}: ${Mg(e)}`)}}async function Gg(e,t,n,r){let i=de()&&typeof AudioContext<`u`,a=y();if(!i&&!a)return jg(`Web Audio API unavailable in this environment`);let o=await Vg(e,r);return`exitCode`in o?o:Hg(o.fullPath,e)||(i?Wg(o.bytes,e,t,n):Ug(o.bytes,o.fullPath,e,t,a))}function Kg(){return S(`afplay`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return Ag();let n=Lg(e);return`exitCode`in n?n:n.filePath?Gg(n.filePath,n.volume,n.rate,t):Ag()})}function qg(){return S(`chime`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?{stdout:`usage: chime
331
+ `,stderr:``,exitCode:0}}function Og(e){return{stdout:``,stderr:`afplay: ${e}\n`,exitCode:1}}function kg(e){return e instanceof Error?e.message:String(e)}const Ag={"-v":`a volume value`,"-r":`a rate value`};function jg(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<0||t>1?`volume must be between 0 and 1`:null}function Mg(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<.25||t>4?`rate must be between 0.25 and 4`:null}function Ng(e,t,n){switch(t){case`-v`:return jg(n)||(e.volume=Number.parseFloat(n),null);case`-r`:return Mg(n)||(e.rate=Number.parseFloat(n),null);default:return`unknown option: ${t}`}}function Pg(e){let t={volume:1,rate:1,filePath:null};for(let n=0;n<e.length;n++){let r=e[n];if(Object.hasOwn(Ag,r)){let i=n+1<e.length&&!e[n+1].startsWith(`-`)?e[++n]:null;if(i==null)return Og(`${r} requires ${Ag[r]}`);let a=Ng(t,r,i);if(a)return Og(a);continue}if(r.startsWith(`-`))return Og(`unknown option: ${r}`);if(t.filePath!==null)return Og(`only one file can be specified`);t.filePath=r}return t}let Fg=null;function Ig(){return(!Fg||Fg.state===`closed`)&&(Fg=new AudioContext),Fg}function Lg(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function Rg(e,t){let n=t.fs.resolvePath(t.cwd,e);try{return{bytes:new Uint8Array(await t.fs.readFileBuffer(n)),fullPath:n}}catch{return Og(`cannot open ${e}: No such file`)}}function zg(e,t){return fr(e).startsWith(`audio/`)?null:Og(`${t} is not an audio file`)}async function Bg(e,t,n,r,i){try{let n=fr(t);return await i.call(`play-audio`,{bytes:Lg(e),mimeType:n,volume:r},{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return Og(`failed to play ${n}: ${kg(e)}`)}}async function Vg(e,t,n,r){try{let t=Ig();t.state===`suspended`&&await t.resume();let i=await t.decodeAudioData(Lg(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 Og(`failed to play ${t}: ${kg(e)}`)}}async function Hg(e,t,n,r){let i=de()&&typeof AudioContext<`u`,a=y();if(!i&&!a)return Og(`Web Audio API unavailable in this environment`);let o=await Rg(e,r);return`exitCode`in o?o:zg(o.fullPath,e)||(i?Vg(o.bytes,e,t,n):Bg(o.bytes,o.fullPath,e,t,a))}function Ug(){return S(`afplay`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return Dg();let n=Pg(e);return`exitCode`in n?n:n.filePath?Hg(n.filePath,n.volume,n.rate,t):Dg()})}function Wg(){return S(`chime`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?{stdout:`usage: chime
332
332
 
333
333
  Plays a notification chime sound.
334
334
  Alias for: afplay /shared/sounds/chime.mp3
335
- `,stderr:``,exitCode:0}:Gg(`/shared/sounds/chime.mp3`,1,1,t))}const Jg=e(`agent-command`);function Yg(e,t,n){let r=t[n+1];return r===void 0||r.length>0&&r.startsWith(`-`)?{error:`agent: ${e} requires a value`}:r===``?{error:`agent: ${e} requires a non-empty value`}:{value:r,consumed:2}}function Xg(e,t,n){let r=Yg(e,t,n);return`error`in r?{error:r.error,consumed:0}:Ve(r.value)?{value:r.value,consumed:r.consumed}:{error:`agent: ${e} must be one of: ${He.join(`, `)}`,consumed:0}}function Zg(e,t){let n=Yg(`--background-after`,e,t);if(`error`in n)return{error:n.error,consumed:0};let r=Number(n.value);return!Number.isFinite(r)||r<0?{error:`agent: --background-after must be a number of seconds >= 0`,consumed:0}:{value:r,consumed:n.consumed}}function Qg(e,t){let n=Yg(`--read-only`,e,t);if(`error`in n)return{error:n.error,consumed:0};let r=i_(n.value);return r.length===0?{error:`agent: --read-only requires a non-empty value`,consumed:0}:{value:r,consumed:n.consumed}}function $g(e,t){let n=e[t+1];if(n===void 0||n===``||n.length>0&&n.startsWith(`-`))return{error:`agent: --schema-b64 requires a value`,consumed:0};try{let e=atob(n),t=JSON.parse(new TextDecoder().decode(Uint8Array.from(e,e=>e.charCodeAt(0))));return typeof t!=`object`||!t?{error:`agent: --schema-b64 must decode to a JSON object`,consumed:0}:{value:t,consumed:2}}catch{return{error:`agent: --schema-b64 must be valid base64-encoded JSON`,consumed:0}}}const e_={"-h":(e,t,n,r)=>(r.help=!0,{consumed:1}),"--help":(e,t,n,r)=>(r.help=!0,{consumed:1}),"--model":(e,t,n,r)=>{let i=Yg(e,t,n);return`error`in i?{error:i.error,consumed:0}:(r.modelId=i.value,{consumed:i.consumed})},"--thinking":(e,t,n,r)=>{let i=Xg(e,t,n);return i.error?{error:i.error,consumed:0}:(r.thinkingLevel=i.value,{consumed:i.consumed})},"--effort":(e,t,n,r)=>{let i=Xg(e,t,n);return i.error?{error:i.error,consumed:0}:(r.thinkingLevel=i.value,{consumed:i.consumed})},"--background-after":(e,t,n,r)=>{let i=Zg(t,n);return i.error?{error:i.error,consumed:0}:(r.backgroundAfterSeconds=i.value,{consumed:i.consumed})},"--workspace-mode":(e,t,n,r)=>{let i=Yg(e,t,n);if(`error`in i)return{error:i.error,consumed:0};let a=Be(i.value);return a.ok?(r.workspaceMode=a.mode,{consumed:i.consumed}):{error:`agent: ${a.error}`,consumed:0}},"--read-only":(e,t,n,r)=>{let i=Qg(t,n);return i.error?{error:i.error,consumed:0}:(r.visiblePaths=i.value,{consumed:i.consumed})},"--schema-b64":(e,t,n,r)=>{let i=$g(t,n);return i.error?{error:i.error,consumed:0}:(r.schemaOut=i.value,{consumed:i.consumed})},"--persist-session":(e,t,n,r)=>(r.persistSession=!0,{consumed:1}),"--no-persist-session":(e,t,n,r)=>(r.persistSession=!1,{consumed:1}),"--image":(e,t,n,r)=>{let i=Yg(e,t,n);return`error`in i?{error:i.error,consumed:0}:(r.imagePaths.push(i.value),{consumed:i.consumed})},"--no-escalate":(e,t,n,r)=>(r.noEscalate=!0,{consumed:1})};function t_(e,t,n,r){if(r.positionals.length===2)return r.positionals.push(e),{consumed:1};if(e.startsWith(`--image=`)){let t=e.slice(8);return t===``?{error:`agent: --image requires a non-empty value`,consumed:0}:(r.imagePaths.push(t),{consumed:1})}if(e.length>0&&e.startsWith(`-`)){let i=e_[e];return i?i(e,t,n,r):{error:`agent: unknown flag '${e}'`,consumed:0}}return r.positionals.push(e),{consumed:1}}function n_(e){if(e.help)return{help:!0};if(e.positionals.length<3)return{error:`agent: missing required argument ${[`<cwd>`,`<allowed-commands>`,`<prompt>`][e.positionals.length]}`};if(e.positionals.length>3)return{error:`agent: too many arguments`};let[t,n,r]=e.positionals;return{cwd:t,allowedCommandsRaw:n,prompt:r}}function r_(e){let t={positionals:[],help:!1,imagePaths:[],noEscalate:!1},n=0;for(;n<e.length;){let r=t_(e[n],e,n,t);if(r.error)return{help:!1,error:r.error};n+=r.consumed}let r=n_(t);if(`help`in r)return{help:!0};if(`error`in r)return{help:!1,error:r.error};if(t.imagePaths.length>8)return{help:!1,error:`agent: too many images (${t.imagePaths.length}); --image accepts at most 8`};let i=r;return{help:!1,cwd:i.cwd,allowedCommandsRaw:i.allowedCommandsRaw,prompt:i.prompt,modelId:t.modelId,visiblePaths:t.visiblePaths,thinkingLevel:t.thinkingLevel,backgroundAfterSeconds:t.backgroundAfterSeconds,structuredOutputSchema:t.schemaOut,persistSession:t.persistSession,workspaceMode:t.workspaceMode,imagePaths:t.imagePaths,noEscalate:t.noEscalate}}function i_(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function a_(e,t){if(e.startsWith(`/`))return b(e);let n=t.length>0?t:`/`;return b(`${n}/${e}`)}function o_(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function s_(e){return e==null?`
336
- `:e.replace(/\n+$/,``)+`
337
- `}function c_(e){return e==null||e===``?``:e.replace(/\n+$/,``)+`
338
- `}function l_(){let e=globalThis.__slicc_agent;if(!(!e||typeof e.spawn!=`function`))return e}function u_(e,t,n){return t?`agent: cwd not found: ${n}\n`:e&&!e.isDirectory?`agent: cwd not a directory: ${n}\n`:null}function d_(e,t,n){let r=e;return typeof r.canWrite==`function`&&!r.canWrite(t)?`agent: cwd not writable: ${n}\n`:null}function f_(e,t,n,r,i,a){let o={cwd:t,allowedCommands:n,prompt:r};e.modelId!==void 0&&(o.modelId=e.modelId),e.visiblePaths!==void 0&&(o.visiblePaths=e.visiblePaths),e.thinkingLevel!==void 0&&(o.thinkingLevel=e.thinkingLevel),e.backgroundAfterSeconds!==void 0&&(o.backgroundAfterSeconds=e.backgroundAfterSeconds),e.structuredOutputSchema!==void 0&&(o.structuredOutputSchema=e.structuredOutputSchema),e.persistSession!==void 0&&(o.persistSession=e.persistSession),e.workspaceMode!==void 0&&(o.workspaceMode=e.workspaceMode),e.noEscalate&&(o.escalate=!1),i.cwd&&i.cwd.length>0&&(o.invokingCwd=i.cwd),i.signal!==void 0&&(o.signal=i.signal);let s=a?.();return s!==void 0&&s.length>0&&(o.parentJid=s),o}function p_(e={}){let{getParentJid:t}=e;return S(`agent`,async(e,n)=>{let r=r_(e);if(r.help){let{AGENT_HELP:e}=await import(`./agent-help-B-gfDDn0.js`);return{stdout:e,stderr:``,exitCode:0}}if(r.error)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let i=r.cwd??``;if(i===``)return{stdout:``,stderr:`agent: <cwd> must not be empty
339
- `,exitCode:1};let a=a_(i,n.cwd),o=o_(r.allowedCommandsRaw??``),s=r.prompt??``,c=null,l=!1;try{c=await n.fs.stat(a)}catch{l=!0}let u=u_(c,l,i);if(u)return{stdout:``,stderr:u,exitCode:1};let d=d_(n.fs,a,i);if(d)return{stdout:``,stderr:d,exitCode:1};let f;if(r.imagePaths!==void 0&&r.imagePaths.length>0){let{readImages:e}=await import(`./agent-images-DaBj3QYk.js`),t=await e(n.fs,r.imagePaths.map(e=>({arg:e,path:a_(e,n.cwd)})));if(`error`in t)return{stdout:``,stderr:t.error,exitCode:1};f=t.images}let p=l_();if(!p)return{stdout:``,stderr:`agent: orchestrator bridge not available
340
- `,exitCode:1};let m=f_(r,a,o,s,n,t);return f!==void 0&&(m.images=f),m_(p,m)})}async function m_(e,t){try{let n=await e.spawn(t),r=typeof n?.exitCode==`number`?n.exitCode:0,i=n?.finalText;return r===0?{stdout:s_(i),stderr:``,exitCode:0}:{stdout:``,stderr:c_(i),exitCode:r}}catch(e){let t=e instanceof Error?e.message:String(e);return Jg.error(`agent bridge threw`,e),{stdout:``,stderr:`${t}\n`,exitCode:1}}}const h_=[`bg`,`caller`,`disown`,`enable`,`fc`,`fg`,`jobs`,`logout`,`suspend`,`times`,`trap`,`ulimit`];function g_(){return h_.map(e=>S(e,async(t,n)=>{let{runBashBuiltin:r}=await import(`./run-B39tlo9Y.js`);return r(e,t,n)}))}function __(e,t){e.escaped?e.escaped=!1:t===`\\`?e.escaped=!0:t===`"`&&(e.inString=!1)}function v_(e,t){let n=t+2;for(;n<e.length&&e[n]!==`
341
- `&&e[n]!==`\r`;)n++;return{text:` `.repeat(n-t),end:n-1}}function y_(e,t){let n=` `,r=t+2;for(;r<e.length&&(e[r]!==`*`||e[r+1]!==`/`);)n+=e[r]===`
342
- `||e[r]===`\r`?e[r]:` `,r++;return r<e.length&&(n+=` `,r++),{text:n,end:r}}function b_(e){let t=``,n={inString:!1,escaped:!1};for(let r=0;r<e.length;r++){let i=e[r],a=e[r+1];if(n.inString){t+=i,__(n,i);continue}if(i===`"`){n.inString=!0,t+=i;continue}if(i===`/`&&a===`/`){let n=v_(e,r);t+=n.text,r=n.end;continue}if(i===`/`&&a===`*`){let n=y_(e,r);t+=n.text,r=n.end;continue}t+=i}return t}function x_(e){let t=``,n=!1,r=!1;for(let i=0;i<e.length;i++){let a=e[i];if(n){t+=a,r?r=!1:a===`\\`?r=!0:a===`"`&&(n=!1);continue}if(a===`"`){n=!0,t+=a;continue}if(a===`,`){let t=i+1;for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]===`}`||e[t]===`]`)continue}t+=a}return t}function S_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function C_(e){let t=e.charCodeAt(0)===65279?e.slice(1):e,n=JSON.parse(x_(b_(t)));if(!S_(n))throw Error(`configuration must contain a JSON object`);return n}function w_(e){if(typeof e==`string`)return e;if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=e.path;return typeof t==`string`?t:null}function T_(e){let t=e.plugins;if(!Array.isArray(t))return null;for(let e of t){let t=w_(e);if(t!==null)return t}return null}async function E_(e,t){let n=b(t);for(;;){if(!n.split(`/`).includes(`node_modules`))for(let t of[`biome.json`,`biome.jsonc`]){let r=x(n,t);if(await e.exists(r))return r}if(n===`/`)return null;n=Fe(n).dir}}async function D_(e,t,n){let r;try{r=await e.readFile(t)}catch(e){return{ok:!1,error:`biome: failed to read configuration ${t}: ${e instanceof Error?e.message:String(e)}`,exitCode:n}}try{let e=C_(r),i=T_(e);return i===null?{ok:!0,resolved:{path:t,configuration:e}}:{ok:!1,error:`biome: unsupported configuration ${t}: path-based plugin ${JSON.stringify(i)} cannot be loaded by @biomejs/js-api@6.0.0`,exitCode:n}}catch(e){return{ok:!1,error:`biome: failed to parse configuration ${t}: ${e instanceof Error?e.message:String(e)}`,exitCode:n}}}async function O_(e,t,n,r){if(r!==null){let n=b(e.resolvePath(t,r));return await e.exists(n)?D_(e,n,2):{ok:!1,error:`biome: configuration file not found: ${n}`,exitCode:2}}let i=await E_(e,n);return i===null?{ok:!0,resolved:null}:D_(e,i,1)}const k_=new Set(`address.article.aside.blockquote.dd.div.dl.dt.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hr.li.main.nav.ol.p.pre.section.table.tbody.td.tfoot.th.thead.tr.ul`.split(`.`)),A_={amp:`&`,apos:`'`,gt:`>`,lt:`<`,nbsp:` `,quot:`"`};function j_(e){let t=e.slice(1,-1);if(!t.startsWith(`#`))return A_[t.toLowerCase()]??e;let n=t[1]?.toLowerCase()===`x`,r=Number.parseInt(t.slice(n?2:1),n?16:10);return!Number.isFinite(r)||r<0||r>1114111||r>=55296&&r<=57343?e:String.fromCodePoint(r)}function M_(e){let t=``,n=0,r=!1;for(let i of e.matchAll(/<!--[\s\S]*?-->|<![^>]*>|<\/?[A-Za-z][^>]*>/g)){let a=e.slice(n,i.index);a&&(t+=a,r=!1);let o=i[0],s=/^<\/?\s*([A-Za-z0-9-]+)/.exec(o)?.[1]?.toLowerCase();s===`br`?(t+=`
343
- `,r=!1):s&&k_.has(s)&&t.length>0&&!t.endsWith(`
335
+ `,stderr:``,exitCode:0}:Hg(`/shared/sounds/chime.mp3`,1,1,t))}function Gg(e={}){return S(`agent`,async(t,n)=>{let{executeAgentCommand:r}=await import(`./agent-command-impl-BQZK9ujN.js`);return r(t,n,e)})}const Kg=[`bg`,`caller`,`disown`,`enable`,`fc`,`fg`,`jobs`,`logout`,`suspend`,`times`,`trap`,`ulimit`];function qg(){return Kg.map(e=>S(e,async(t,n)=>{let{runBashBuiltin:r}=await import(`./run-B39tlo9Y.js`);return r(e,t,n)}))}function Jg(e,t){e.escaped?e.escaped=!1:t===`\\`?e.escaped=!0:t===`"`&&(e.inString=!1)}function Yg(e,t){let n=t+2;for(;n<e.length&&e[n]!==`
336
+ `&&e[n]!==`\r`;)n++;return{text:` `.repeat(n-t),end:n-1}}function Xg(e,t){let n=` `,r=t+2;for(;r<e.length&&(e[r]!==`*`||e[r+1]!==`/`);)n+=e[r]===`
337
+ `||e[r]===`\r`?e[r]:` `,r++;return r<e.length&&(n+=` `,r++),{text:n,end:r}}function Zg(e){let t=``,n={inString:!1,escaped:!1};for(let r=0;r<e.length;r++){let i=e[r],a=e[r+1];if(n.inString){t+=i,Jg(n,i);continue}if(i===`"`){n.inString=!0,t+=i;continue}if(i===`/`&&a===`/`){let n=Yg(e,r);t+=n.text,r=n.end;continue}if(i===`/`&&a===`*`){let n=Xg(e,r);t+=n.text,r=n.end;continue}t+=i}return t}function Qg(e){let t=``,n=!1,r=!1;for(let i=0;i<e.length;i++){let a=e[i];if(n){t+=a,r?r=!1:a===`\\`?r=!0:a===`"`&&(n=!1);continue}if(a===`"`){n=!0,t+=a;continue}if(a===`,`){let t=i+1;for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]===`}`||e[t]===`]`)continue}t+=a}return t}function $g(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function e_(e){let t=e.charCodeAt(0)===65279?e.slice(1):e,n=JSON.parse(Qg(Zg(t)));if(!$g(n))throw Error(`configuration must contain a JSON object`);return n}function t_(e){if(typeof e==`string`)return e;if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=e.path;return typeof t==`string`?t:null}function n_(e){let t=e.plugins;if(!Array.isArray(t))return null;for(let e of t){let t=t_(e);if(t!==null)return t}return null}async function r_(e,t){let n=b(t);for(;;){if(!n.split(`/`).includes(`node_modules`))for(let t of[`biome.json`,`biome.jsonc`]){let r=x(n,t);if(await e.exists(r))return r}if(n===`/`)return null;n=Fe(n).dir}}async function i_(e,t,n){let r;try{r=await e.readFile(t)}catch(e){return{ok:!1,error:`biome: failed to read configuration ${t}: ${e instanceof Error?e.message:String(e)}`,exitCode:n}}try{let e=e_(r),i=n_(e);return i===null?{ok:!0,resolved:{path:t,configuration:e}}:{ok:!1,error:`biome: unsupported configuration ${t}: path-based plugin ${JSON.stringify(i)} cannot be loaded by @biomejs/js-api@6.0.0`,exitCode:n}}catch(e){return{ok:!1,error:`biome: failed to parse configuration ${t}: ${e instanceof Error?e.message:String(e)}`,exitCode:n}}}async function a_(e,t,n,r){if(r!==null){let n=b(e.resolvePath(t,r));return await e.exists(n)?i_(e,n,2):{ok:!1,error:`biome: configuration file not found: ${n}`,exitCode:2}}let i=await r_(e,n);return i===null?{ok:!0,resolved:null}:i_(e,i,1)}const o_=new Set(`address.article.aside.blockquote.dd.div.dl.dt.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hr.li.main.nav.ol.p.pre.section.table.tbody.td.tfoot.th.thead.tr.ul`.split(`.`)),s_={amp:`&`,apos:`'`,gt:`>`,lt:`<`,nbsp:` `,quot:`"`};function c_(e){let t=e.slice(1,-1);if(!t.startsWith(`#`))return s_[t.toLowerCase()]??e;let n=t[1]?.toLowerCase()===`x`,r=Number.parseInt(t.slice(n?2:1),n?16:10);return!Number.isFinite(r)||r<0||r>1114111||r>=55296&&r<=57343?e:String.fromCodePoint(r)}function l_(e){let t=``,n=0,r=!1;for(let i of e.matchAll(/<!--[\s\S]*?-->|<![^>]*>|<\/?[A-Za-z][^>]*>/g)){let a=e.slice(n,i.index);a&&(t+=a,r=!1);let o=i[0],s=/^<\/?\s*([A-Za-z0-9-]+)/.exec(o)?.[1]?.toLowerCase();s===`br`?(t+=`
338
+ `,r=!1):s&&o_.has(s)&&t.length>0&&!t.endsWith(`
344
339
  `)&&(t+=`
345
- `,r=!0),n=(i.index??0)+o.length}let i=e.slice(n);return i&&(t+=i,r=!1),r&&(t=t.slice(0,-1)),t.replace(/&(?:amp|lt|gt|quot|apos|nbsp|#(?:[0-9]+|[xX][0-9A-Fa-f]+));/gi,j_)}const N_=new Set([`js`,`mjs`,`cjs`,`jsx`,`ts`,`mts`,`cts`,`tsx`,`json`,`jsonc`,`css`,`graphql`,`gql`,`html`,`svelte`,`vue`,`astro`,`jsh`,`bsh`]);function P_(e){let t=e.lastIndexOf(`.`);return t<0?!1:N_.has(e.slice(t+1).toLowerCase())}function F_(e){return e.endsWith(`.jsh`)||e.endsWith(`.bsh`)?`${e.slice(0,-4)}.js`:e}const I_=`async function __slicc() {
346
- `,L_=new TextEncoder().encode(I_).length;function R_(e){return e.endsWith(`.jsh`)||e.endsWith(`.bsh`)}function z_(e,t){let n=[e];for(;n.length>0;){let e=n.pop();if(!e||typeof e!=`object`)continue;if(Array.isArray(e)){for(let t of e)n.push(t);continue}let r=e,i=r.span;Array.isArray(i)&&i.length===2&&typeof i[0]==`number`&&typeof i[1]==`number`&&(r.span=[Math.max(0,i[0]-t),Math.max(0,i[1]-t)]),typeof r.sourceCode==`string`&&(r.sourceCode=null);for(let e of Object.keys(r))e!==`span`&&e!==`sourceCode`&&n.push(r[e])}}function B_(e){let t=(e.endsWith(`
340
+ `,r=!0),n=(i.index??0)+o.length}let i=e.slice(n);return i&&(t+=i,r=!1),r&&(t=t.slice(0,-1)),t.replace(/&(?:amp|lt|gt|quot|apos|nbsp|#(?:[0-9]+|[xX][0-9A-Fa-f]+));/gi,c_)}const u_=new Set([`js`,`mjs`,`cjs`,`jsx`,`ts`,`mts`,`cts`,`tsx`,`json`,`jsonc`,`css`,`graphql`,`gql`,`html`,`svelte`,`vue`,`astro`,`jsh`,`bsh`]);function d_(e){let t=e.lastIndexOf(`.`);return t<0?!1:u_.has(e.slice(t+1).toLowerCase())}function f_(e){return e.endsWith(`.jsh`)||e.endsWith(`.bsh`)?`${e.slice(0,-4)}.js`:e}const p_=`async function __slicc() {
341
+ `,m_=new TextEncoder().encode(p_).length;function h_(e){return e.endsWith(`.jsh`)||e.endsWith(`.bsh`)}function g_(e,t){let n=[e];for(;n.length>0;){let e=n.pop();if(!e||typeof e!=`object`)continue;if(Array.isArray(e)){for(let t of e)n.push(t);continue}let r=e,i=r.span;Array.isArray(i)&&i.length===2&&typeof i[0]==`number`&&typeof i[1]==`number`&&(r.span=[Math.max(0,i[0]-t),Math.max(0,i[1]-t)]),typeof r.sourceCode==`string`&&(r.sourceCode=null);for(let e of Object.keys(r))e!==`span`&&e!==`sourceCode`&&n.push(r[e])}}function __(e){let t=(e.endsWith(`
347
342
  `)?e.slice(0,-1):e).split(`
348
343
  `);return t.shift(),t.pop(),t.map(e=>e.startsWith(` `)?e.slice(1):e).join(`
349
344
  `)+`
350
- `}function V_(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 H_=new Set([`check`,`lint`,`format`]);function U_(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===`
345
+ `}function v_(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 y_=new Set([`check`,`lint`,`format`]);function b_(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===`
351
346
  `&&l++;let u=c.lastIndexOf(`
352
- `),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 W_=`2.5.14`,G_=`6.0.0`,K_=mi,q_=`@biomejs/wasm-web@${W_} @biomejs/js-api@${G_} esbuild-wasm@${K_}`,J_={"@biomejs/wasm-web":`@biomejs/wasm-web@${W_}`,"@biomejs/js-api":`@biomejs/js-api@${G_}`,"esbuild-wasm":`esbuild-wasm@${K_}`},Y_=`run: ${N} ${q_} (no network fallback)`,X_=`biome - thin wrapper over the ipk-loaded @biomejs/wasm-web
347
+ `),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 x_=`2.5.14`,S_=`6.0.0`,C_=di,w_=`@biomejs/wasm-web@${x_} @biomejs/js-api@${S_} esbuild-wasm@${C_}`,T_={"@biomejs/wasm-web":`@biomejs/wasm-web@${x_}`,"@biomejs/js-api":`@biomejs/js-api@${S_}`,"esbuild-wasm":`esbuild-wasm@${C_}`},E_=`run: ${N} ${w_} (no network fallback)`,D_=`biome - thin wrapper over the ipk-loaded @biomejs/wasm-web
353
348
 
354
349
  Usage:
355
350
  biome <subcommand> [options] [files...]
@@ -391,20 +386,20 @@ Exit codes:
391
386
 
392
387
  Install:
393
388
  Inert until the backing packages are installed in node_modules:
394
- ${N} ${q_}
389
+ ${N} ${w_}
395
390
  All three packages must be present in the VFS \`node_modules\` for
396
391
  lint/format to run (loading the wasm-web ESM glue also needs the
397
392
  esbuild-wasm transpiler). There is no bundled binary, no CDN
398
393
  fallback; a missing package exits non-zero with a clear \`ipk add\` hint.
399
- `;function Z_(e,t,n){let r=e[t+1];if(typeof r!=`string`||r.startsWith(`-`))throw Error(`biome: ${n} requires a value`);return r}function Q_(e){if(!e)throw Error(`biome: --reporter requires a value`);if(e!==`plain`&&e!==`json`)throw Error(`biome: unknown reporter: ${e}`);return e}function $_(e){return e.some((t,n)=>t===`--json`||t===`--reporter=json`||t===`--reporter`&&e[n+1]===`json`)}function ev(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=Z_(t,n,r),n+1;case`--config-path`:return e.configPath=Z_(t,n,r),n+1;case`--reporter`:return e.reporter=Q_(Z_(t,n,r)),n+1}return r.startsWith(`--stdin-file-path=`)?(e.stdinFilePath=tv(r,`--stdin-file-path`),n):r.startsWith(`--config-path=`)?(e.configPath=tv(r,`--config-path`),n):r.startsWith(`--reporter=`)?(e.reporter=Q_(r.slice(11)),n):null}function tv(e,t){let n=e.slice(t.length+1);if(!n)throw Error(`biome: ${t} requires a value`);return n}function nv(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=ev(t,e,n);if(i!==null){n=i;continue}if(t.subcommand===null&&H_.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 rv(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 iv(e,n,r):P_(n)&&r.push(n)}return{files:r,missing:i}}async function iv(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 iv(e,r,n):P_(r)&&n.push(r)}}async function av(e){let t;try{t=await mr(`@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 ov(e){let t;try{t=await mr(`@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 mr(`@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 mr(`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:Fe(t.path).dir}}function sv(e,t){let n=F_(b(e));if(t===null)return n;let r=Ie(t),i=Ie(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 cv=`
394
+ `;function O_(e,t,n){let r=e[t+1];if(typeof r!=`string`||r.startsWith(`-`))throw Error(`biome: ${n} requires a value`);return r}function k_(e){if(!e)throw Error(`biome: --reporter requires a value`);if(e!==`plain`&&e!==`json`)throw Error(`biome: unknown reporter: ${e}`);return e}function A_(e){return e.some((t,n)=>t===`--json`||t===`--reporter=json`||t===`--reporter`&&e[n+1]===`json`)}function j_(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=O_(t,n,r),n+1;case`--config-path`:return e.configPath=O_(t,n,r),n+1;case`--reporter`:return e.reporter=k_(O_(t,n,r)),n+1}return r.startsWith(`--stdin-file-path=`)?(e.stdinFilePath=M_(r,`--stdin-file-path`),n):r.startsWith(`--config-path=`)?(e.configPath=M_(r,`--config-path`),n):r.startsWith(`--reporter=`)?(e.reporter=k_(r.slice(11)),n):null}function M_(e,t){let n=e.slice(t.length+1);if(!n)throw Error(`biome: ${t} requires a value`);return n}function N_(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=j_(t,e,n);if(i!==null){n=i;continue}if(t.subcommand===null&&y_.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 P_(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 F_(e,n,r):d_(n)&&r.push(n)}return{files:r,missing:i}}async function F_(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 F_(e,r,n):d_(r)&&n.push(r)}}async function I_(e){let t;try{t=await dr(`@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 L_(e){let t;try{t=await dr(`@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 dr(`@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 dr(`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:Fe(t.path).dir}}function R_(e,t){let n=f_(b(e));if(t===null)return n;let r=Ie(t),i=Ie(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 z_=`
400
395
  const fs = require('fs');
401
- const JSH_WRAP_PREFIX = ${JSON.stringify(I_)};
396
+ const JSH_WRAP_PREFIX = ${JSON.stringify(p_)};
402
397
  const JSH_WRAP_SUFFIX = ${JSON.stringify(`
403
398
  }`)};
404
- const JSH_WRAP_PREFIX_BYTES = ${L_};
405
- const shiftBiomeSpans = ${z_.toString()};
406
- const unwrapFormattedJsh = ${B_.toString()};
407
- const biomeDiagnosticToJson = ${U_.toString()};
399
+ const JSH_WRAP_PREFIX_BYTES = ${m_};
400
+ const shiftBiomeSpans = ${g_.toString()};
401
+ const unwrapFormattedJsh = ${__.toString()};
402
+ const biomeDiagnosticToJson = ${b_.toString()};
408
403
  function supportsFeature(biome, projectKey, path, feature) {
409
404
  const workspace = biome.workspace;
410
405
  if (!workspace || typeof workspace.fileFeatures !== 'function') {
@@ -528,28 +523,28 @@ async function main() {
528
523
  process.stdout.write(JSON.stringify(results));
529
524
  }
530
525
  main().catch((err) => { process.stderr.write(String(err && err.message || err) + '\\n'); process.exit(1); });
531
- `;function lv(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: ${N} ${J_[n]??n}); ${Y_}\n`}async function uv(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:sv(e.path,a),source:e.source,wrap:R_(e.path)}))},u=[`node`,`[biome-helper]`,JSON.stringify(l),c];return dv(await ci(cv,u,e,void 0,{filename:`[biome-helper]`}))}function dv(e){if(e.exitCode!==0)return{results:[],stderr:lv(e.stderr)??e.stderr,exitCode:e.exitCode};if(e.stdout.trim()===``){let t=lv(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)
532
- `,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 fv(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 pv(e,t){let n=await ov(t);if(!n.ok)return{stdout:``,stderr:`biome: ${n.missing} is not installed (run: ${N} ${J_[n.missing]??n.missing}); ${Y_}\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: ${N} ${J_[`@biomejs/wasm-web`]})\n`,exitCode:1}}async function mv(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
533
- `,exitCode:2};let n=await rv(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 hv(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(M_(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 gv(e){let t=await av(e);return t?{stdout:`${t}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`biome: @biomejs/wasm-web is not installed (run: ${N} @biomejs/wasm-web@${W_}); ${Y_}\n`,exitCode:1}}async function _v(e,t){return e.showHelp?fv(e.reporter,{stdout:X_,stderr:``,exitCode:0},`usage`):e.showVersion?fv(e.reporter,await gv(t),`runtime`):null}function vv(e,t){let n=e.paths[0];if(!n)return``;try{return t.fs.resolvePath(t.cwd,n)}catch{return``}}async function yv(e,t){let n=V_(t),r=await _v(e,n);if(r)return r;if(e.subcommand===null)return fv(e.reporter,{stdout:``,stderr:`biome: missing subcommand (expected check, lint, or format)
534
- `,exitCode:2},`usage`);let i=await mv(t,e);if(`exitCode`in i)return fv(e.reporter,i,`io`);let a=e.paths.length===0&&t.stdin?t.cwd:Fe(i.inputs[0].path).dir,o=await O_(t.fs,t.cwd,a,e.configPath);if(!o.ok)return fv(e.reporter,{stdout:``,stderr:`${o.error}\n`,exitCode:o.exitCode},`configuration`,i.inputs[0].path);let s=await pv(t,n);if(`exitCode`in s)return fv(e.reporter,s,`runtime`,i.inputs[0].path);let c=await uv(t,e.subcommand,e.write,e.check,o.resolved?.configuration??null,o.resolved===null?null:Fe(o.resolved.path).dir,e.reporter,i.inputs,s.wasmPath);return c.exitCode===0?hv(t,e,i.inputs,c,i.missingErrText):fv(e.reporter,{stdout:``,stderr:i.missingErrText+c.stderr,exitCode:c.exitCode},`runtime`,i.inputs[0].path)}function bv(){return S(`biome`,async(e,t)=>{let n;try{n=nv(e)}catch(t){return fv($_(e)?`json`:`plain`,{stdout:``,stderr:`${t instanceof Error?t.message:String(t)}\n`,exitCode:2},`usage`)}try{return await yv(n,t)}catch(e){if(n.reporter===`plain`)throw e;return fv(`json`,{stdout:``,stderr:`biome: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1},`runtime`,vv(n,t))}})}function xv(e=`biscotto`,t={}){return S(e,async(n,r)=>{let{runBiscotto:i}=await import(`./run-BAmXlRlW.js`);return i(e,n,r,t.getParentJid?.(),t.isScoop?.()===!0)})}function Sv(e={}){let t=e.getFollowers??re,n=e.getPanelRpc??y,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 Cv=[`--detail`,`--runtime`];function wv(e){return{stdout:``,stderr:`cherry-emit: ${e}\n`,exitCode:1}}function Tv(e){let t=C(e,{value:Cv});return`error`in t?wv(t.error):{positionals:t.positionals,detailJson:t.values.get(`--detail`),runtime:t.values.get(`--runtime`)}}function Ev(e,t){return e.length===0?wv(`no cherry follower runtime is connected`):t?e.includes(t)?t:wv(`runtime '${t}' not connected. Available: ${e.join(`, `)}`):e.length>1?wv(`multiple runtimes connected, pass --runtime <id>. Available: ${e.join(`, `)}`):e[0]}function Dv(e){if(e===void 0)return{detail:void 0};try{return{detail:JSON.parse(e)}}catch{return wv(`--detail must be valid JSON`)}}function Ov(e={}){let t=e.registry??Sv();return S(`cherry-emit`,async e=>{if(w(e,{valueFlags:Cv}))return{stdout:`cherry-emit - push a slicc.event to a cherry host page through a follower runtime
526
+ `;function B_(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: ${N} ${T_[n]??n}); ${E_}\n`}async function V_(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:R_(e.path,a),source:e.source,wrap:h_(e.path)}))},u=[`node`,`[biome-helper]`,JSON.stringify(l),c];return H_(await ai(z_,u,e,void 0,{filename:`[biome-helper]`}))}function H_(e){if(e.exitCode!==0)return{results:[],stderr:B_(e.stderr)??e.stderr,exitCode:e.exitCode};if(e.stdout.trim()===``){let t=B_(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
+ `,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 U_(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 W_(e,t){let n=await L_(t);if(!n.ok)return{stdout:``,stderr:`biome: ${n.missing} is not installed (run: ${N} ${T_[n.missing]??n.missing}); ${E_}\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: ${N} ${T_[`@biomejs/wasm-web`]})\n`,exitCode:1}}async function G_(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
528
+ `,exitCode:2};let n=await P_(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 K_(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(l_(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 q_(e){let t=await I_(e);return t?{stdout:`${t}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`biome: @biomejs/wasm-web is not installed (run: ${N} @biomejs/wasm-web@${x_}); ${E_}\n`,exitCode:1}}async function J_(e,t){return e.showHelp?U_(e.reporter,{stdout:D_,stderr:``,exitCode:0},`usage`):e.showVersion?U_(e.reporter,await q_(t),`runtime`):null}function Y_(e,t){let n=e.paths[0];if(!n)return``;try{return t.fs.resolvePath(t.cwd,n)}catch{return``}}async function X_(e,t){let n=v_(t),r=await J_(e,n);if(r)return r;if(e.subcommand===null)return U_(e.reporter,{stdout:``,stderr:`biome: missing subcommand (expected check, lint, or format)
529
+ `,exitCode:2},`usage`);let i=await G_(t,e);if(`exitCode`in i)return U_(e.reporter,i,`io`);let a=e.paths.length===0&&t.stdin?t.cwd:Fe(i.inputs[0].path).dir,o=await a_(t.fs,t.cwd,a,e.configPath);if(!o.ok)return U_(e.reporter,{stdout:``,stderr:`${o.error}\n`,exitCode:o.exitCode},`configuration`,i.inputs[0].path);let s=await W_(t,n);if(`exitCode`in s)return U_(e.reporter,s,`runtime`,i.inputs[0].path);let c=await V_(t,e.subcommand,e.write,e.check,o.resolved?.configuration??null,o.resolved===null?null:Fe(o.resolved.path).dir,e.reporter,i.inputs,s.wasmPath);return c.exitCode===0?K_(t,e,i.inputs,c,i.missingErrText):U_(e.reporter,{stdout:``,stderr:i.missingErrText+c.stderr,exitCode:c.exitCode},`runtime`,i.inputs[0].path)}function Z_(){return S(`biome`,async(e,t)=>{let n;try{n=N_(e)}catch(t){return U_(A_(e)?`json`:`plain`,{stdout:``,stderr:`${t instanceof Error?t.message:String(t)}\n`,exitCode:2},`usage`)}try{return await X_(n,t)}catch(e){if(n.reporter===`plain`)throw e;return U_(`json`,{stdout:``,stderr:`biome: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1},`runtime`,Y_(n,t))}})}function Q_(e=`biscotto`,t={}){return S(e,async(n,r)=>{let{runBiscotto:i}=await import(`./run-BAmXlRlW.js`);return i(e,n,r,t.getParentJid?.(),t.isScoop?.()===!0)})}function $_(e={}){let t=e.getFollowers??re,n=e.getPanelRpc??y,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 ev=[`--detail`,`--runtime`];function tv(e){return{stdout:``,stderr:`cherry-emit: ${e}\n`,exitCode:1}}function nv(e){let t=C(e,{value:ev});return`error`in t?tv(t.error):{positionals:t.positionals,detailJson:t.values.get(`--detail`),runtime:t.values.get(`--runtime`)}}function rv(e,t){return e.length===0?tv(`no cherry follower runtime is connected`):t?e.includes(t)?t:tv(`runtime '${t}' not connected. Available: ${e.join(`, `)}`):e.length>1?tv(`multiple runtimes connected, pass --runtime <id>. Available: ${e.join(`, `)}`):e[0]}function iv(e){if(e===void 0)return{detail:void 0};try{return{detail:JSON.parse(e)}}catch{return tv(`--detail must be valid JSON`)}}function av(e={}){let t=e.registry??$_();return S(`cherry-emit`,async e=>{if(w(e,{valueFlags:ev}))return{stdout:`cherry-emit - push a slicc.event to a cherry host page through a follower runtime
535
530
 
536
531
  Usage: cherry-emit <name> [--detail <json>] [--runtime <id>]
537
532
 
538
533
  --detail <json> JSON payload delivered as the event detail
539
534
  --runtime <id> Target a specific follower runtime (canonical id, e.g. follower-abc).
540
535
  Defaults to the sole connected runtime; required when more than one.
541
- `,stderr:``,exitCode:0};let n=Tv(e);if(`exitCode`in n)return n;let r=n.positionals[0];if(!r)return wv(`event name is required`);let i=Ev(t.listRuntimeIds(),n.runtime);if(typeof i!=`string`)return i;let a=Dv(n.detailJson);if(`exitCode`in a)return a;let o=await t.emitSliccEvent(i,r,a.detail);return o.delivered?{stdout:`cherry-emit: sent '${r}' to ${i}\n`,stderr:``,exitCode:0}:wv(`failed to deliver '${r}' to ${i}: ${o.reason}`)})}function kv(e){return e instanceof Error?e.message:String(e)}function Av(){return{stdout:`usage: pbcopy
536
+ `,stderr:``,exitCode:0};let n=nv(e);if(`exitCode`in n)return n;let r=n.positionals[0];if(!r)return tv(`event name is required`);let i=rv(t.listRuntimeIds(),n.runtime);if(typeof i!=`string`)return i;let a=iv(n.detailJson);if(`exitCode`in a)return a;let o=await t.emitSliccEvent(i,r,a.detail);return o.delivered?{stdout:`cherry-emit: sent '${r}' to ${i}\n`,stderr:``,exitCode:0}:tv(`failed to deliver '${r}' to ${i}: ${o.reason}`)})}function ov(e){return e instanceof Error?e.message:String(e)}function sv(){return{stdout:`usage: pbcopy
542
537
 
543
538
  Copy stdin to the clipboard.
544
539
  Example: echo hello | pbcopy
545
- `,stderr:``,exitCode:0}}function jv(){return{stdout:`usage: pbpaste
540
+ `,stderr:``,exitCode:0}}function cv(){return{stdout:`usage: pbpaste
546
541
 
547
542
  Paste clipboard contents to stdout.
548
- `,stderr:``,exitCode:0}}function Mv(e){return{stdout:`usage: ${e} [-i|-o]\n\n -i Force copy mode (read from stdin)
543
+ `,stderr:``,exitCode:0}}function lv(e){return{stdout:`usage: ${e} [-i|-o]\n\n -i Force copy mode (read from stdin)
549
544
  -o Force paste mode (write to stdout)
550
545
  (default) Auto-detect: stdin present = copy, no stdin = paste
551
- Example: echo hello | ${e}\n Example: ${e} -o > file.txt\n`,stderr:``,exitCode:0}}async function Nv(e,t){let n=!!globalThis.navigator?.clipboard,r=n?null:y();if(!n&&!r)return{stdout:``,stderr:`${t}: clipboard API is unavailable\n`,exitCode:1};try{return n?await navigator.clipboard.writeText(e):await r.call(`clipboard-write-text`,{text:e}),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`${t}: failed to write to clipboard: ${kv(e)}\n`,exitCode:1}}}async function Pv(e){let t=!!globalThis.navigator?.clipboard,n=t?null:y();if(!t&&!n)return{stdout:``,stderr:`${e}: clipboard API is unavailable\n`,exitCode:1};try{return{stdout:t?await navigator.clipboard.readText():(await n.call(`clipboard-read-text`,void 0)).text,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: failed to read from clipboard: ${kv(t)}\n`,exitCode:1}}}function Fv(){return S(`pbcopy`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?Av():Nv(P(t.stdin),`pbcopy`))}function Iv(){return S(`pbpaste`,async e=>e.includes(`--help`)||e.includes(`-h`)?jv():Pv(`pbpaste`))}function Lv(e){return S(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return Mv(e);let r=t.includes(`-i`),i=t.includes(`-o`);if(r&&i)return{stdout:``,stderr:`${e}: cannot use both -i and -o\n`,exitCode:1};if(i)return Pv(e);let a=P(n.stdin);return r||a.length>0?Nv(a,e):Pv(e)})}function Rv(){return S(`cmp`,async(e,t)=>{let n=e.some(e=>e===`-s`||e===`--quiet`||e===`--silent`),r=e.filter(e=>![`-s`,`--quiet`,`--silent`].includes(e));if(r.length!==2||r.some(e=>e.startsWith(`-`)&&e!==`-`))return{stdout:``,stderr:`cmp: usage: cmp [-s|--quiet|--silent] FILE1 FILE2
552
- `,exitCode:2};let i=await zv(t,r[0]);if(`error`in i)return n?{...i.error,stderr:``}:i.error;let a=await zv(t,r[1]);if(`error`in a)return n?{...a.error,stderr:``}:a.error;let o=Bv(i.bytes,a.bytes);return o?n?{stdout:``,stderr:``,exitCode:1}:o.eof?{stdout:``,stderr:`cmp: EOF on ${i.bytes.length<a.bytes.length?r[0]:r[1]} after byte ${o.byte-1}, line ${o.line}\n`,exitCode:1}:{stdout:`${r[0]} ${r[1]} differ: byte ${o.byte}, line ${o.line}\n`,stderr:``,exitCode:1}:{stdout:``,stderr:``,exitCode:0}})}async function zv(e,t){if(t===`-`){let t=bi(e.stdin);return{bytes:Uint8Array.from(t,e=>e.charCodeAt(0)&255)}}try{return{bytes:await e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t))}}catch{return{error:{stdout:``,stderr:`cmp: ${t}: No such file or directory\n`,exitCode:2}}}}function Bv(e,t){let n=Math.min(e.length,t.length),r=1;for(let i=0;i<n;i++){if(e[i]!==t[i])return{byte:i+1,line:r,eof:!1};e[i]===10&&r++}return e.length===t.length?null:{byte:n+1,line:r,eof:!0}}function Vv(e={}){return S(`computer`,async(t,n)=>{let{runComputer:r}=await import(`./run-CnfMQAT6.js`).then(e=>e.t);return r(t,n,e)})}var Hv=`/assets/AdobeClean-Regular-CVsq5gF7.otf`;function Uv(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 Wv(e){let t=e.toLowerCase();return t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)?`JPEG`:t.endsWith(`.png`)?`PNG`:t.endsWith(`.gif`)?`GIF`:t.endsWith(`.webp`)?`WEBP`:t.endsWith(`.bmp`)?`BMP`:t.endsWith(`.tiff`)||t.endsWith(`.tif`)?`TIFF`:t.endsWith(`.avif`)?`AVIF`:`PNG`}const Gv=`AdobeClean-Regular.otf`,Kv=new WeakSet;let qv=null;function Jv(){return{stdout:`usage: convert [input ...] [operations...] [output]
546
+ Example: echo hello | ${e}\n Example: ${e} -o > file.txt\n`,stderr:``,exitCode:0}}async function uv(e,t){let n=!!globalThis.navigator?.clipboard,r=n?null:y();if(!n&&!r)return{stdout:``,stderr:`${t}: clipboard API is unavailable\n`,exitCode:1};try{return n?await navigator.clipboard.writeText(e):await r.call(`clipboard-write-text`,{text:e}),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`${t}: failed to write to clipboard: ${ov(e)}\n`,exitCode:1}}}async function dv(e){let t=!!globalThis.navigator?.clipboard,n=t?null:y();if(!t&&!n)return{stdout:``,stderr:`${e}: clipboard API is unavailable\n`,exitCode:1};try{return{stdout:t?await navigator.clipboard.readText():(await n.call(`clipboard-read-text`,void 0)).text,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: failed to read from clipboard: ${ov(t)}\n`,exitCode:1}}}function fv(){return S(`pbcopy`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?sv():uv(P(t.stdin),`pbcopy`))}function pv(){return S(`pbpaste`,async e=>e.includes(`--help`)||e.includes(`-h`)?cv():dv(`pbpaste`))}function mv(e){return S(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return lv(e);let r=t.includes(`-i`),i=t.includes(`-o`);if(r&&i)return{stdout:``,stderr:`${e}: cannot use both -i and -o\n`,exitCode:1};if(i)return dv(e);let a=P(n.stdin);return r||a.length>0?uv(a,e):dv(e)})}function hv(){return S(`cmp`,async(e,t)=>{let n=e.some(e=>e===`-s`||e===`--quiet`||e===`--silent`),r=e.filter(e=>![`-s`,`--quiet`,`--silent`].includes(e));if(r.length!==2||r.some(e=>e.startsWith(`-`)&&e!==`-`))return{stdout:``,stderr:`cmp: usage: cmp [-s|--quiet|--silent] FILE1 FILE2
547
+ `,exitCode:2};let i=await gv(t,r[0]);if(`error`in i)return n?{...i.error,stderr:``}:i.error;let a=await gv(t,r[1]);if(`error`in a)return n?{...a.error,stderr:``}:a.error;let o=_v(i.bytes,a.bytes);return o?n?{stdout:``,stderr:``,exitCode:1}:o.eof?{stdout:``,stderr:`cmp: EOF on ${i.bytes.length<a.bytes.length?r[0]:r[1]} after byte ${o.byte-1}, line ${o.line}\n`,exitCode:1}:{stdout:`${r[0]} ${r[1]} differ: byte ${o.byte}, line ${o.line}\n`,stderr:``,exitCode:1}:{stdout:``,stderr:``,exitCode:0}})}async function gv(e,t){if(t===`-`){let t=_i(e.stdin);return{bytes:Uint8Array.from(t,e=>e.charCodeAt(0)&255)}}try{return{bytes:await e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t))}}catch{return{error:{stdout:``,stderr:`cmp: ${t}: No such file or directory\n`,exitCode:2}}}}function _v(e,t){let n=Math.min(e.length,t.length),r=1;for(let i=0;i<n;i++){if(e[i]!==t[i])return{byte:i+1,line:r,eof:!1};e[i]===10&&r++}return e.length===t.length?null:{byte:n+1,line:r,eof:!0}}function vv(e={}){return S(`computer`,async(t,n)=>{let{runComputer:r}=await import(`./run-CnfMQAT6.js`).then(e=>e.t);return r(t,n,e)})}var yv=`/assets/AdobeClean-Regular-CVsq5gF7.otf`;function bv(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 xv(e){let t=e.toLowerCase();return t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)?`JPEG`:t.endsWith(`.png`)?`PNG`:t.endsWith(`.gif`)?`GIF`:t.endsWith(`.webp`)?`WEBP`:t.endsWith(`.bmp`)?`BMP`:t.endsWith(`.tiff`)||t.endsWith(`.tif`)?`TIFF`:t.endsWith(`.avif`)?`AVIF`:`PNG`}const Sv=`AdobeClean-Regular.otf`,Cv=new WeakSet;let wv=null;function Tv(){return{stdout:`usage: convert [input ...] [operations...] [output]
553
548
 
554
549
  Operations:
555
550
  -resize GEOMETRY resize; supports %, !, ^, >, and < modifiers
@@ -590,7 +585,7 @@ suffix (0-based, as ImageMagick does); page 0 is used when none is given:
590
585
  convert -density 150 doc.pdf page0.png
591
586
  convert doc.pdf[2] -resize 800x page3.png
592
587
  Use pdftoppm to rasterize a whole document in one pass.
593
- `,stderr:``,exitCode:0}}const Yv=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 Xv=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):Yv.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:Zv(n),operations:[]}),this.index++}readOperation(e,t,n){let r=Yv.get(n),i=this.tokens.slice(this.index+1,this.index+1+r);if(i.length!==r||i.some(e=>ey(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=$v(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 Zv(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 Qv(e){if(e.length<2)throw Error(`expected exactly one input file and one output file`);let t=e.at(-1),n=Yv.get(t);if(n!==void 0)throw Error(n>0?`missing argument for ${t}`:`expected an output file`);if(ey(t))throw Error(`expected an output file`);return{expression:new Xv(e.slice(0,-1)).parse(),outputPath:t}}function $v(e){let t=Number(e.split(`x`)[0]);if(!Number.isFinite(t)||t<=0)throw Error(`Invalid density: ${e}`);return t}function ey(e){return e===`(`||e===`)`||e===`+append`||e===`-append`||Yv.has(e)}const ty=/^(?:\d+(?:x\d*)?|x\d+)(?:[%!^<>@])?$/,ny=/^\d+x\d+(?:[+-]\d+[+-]\d+)?$/;function ry(e,t,n){if(!(n===`resize`||n===`thumbnail`?ty:ny).test(t))throw Error(`Invalid ${n} geometry: ${t}`);return new e.MagickGeometry(t)}function iy(e,t,n){t.resize(ry(e,n,`resize`))}function ay(e,t){let n=parseFloat(t);if(isNaN(n))throw Error(`Invalid rotation degrees: ${t}`);e.rotate(n)}function oy(e,t,n,r){let i=ry(e,n,`crop`);r===void 0?t.crop(i):t.crop(i,r)}function sy(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 cy={northwest:`Northwest`,north:`North`,northeast:`Northeast`,west:`West`,center:`Center`,east:`East`,southwest:`Southwest`,south:`South`,southeast:`Southeast`};function ly(e,t){let n=cy[t.toLowerCase()],r=n?e.Gravity[n]:void 0;if(r===void 0)throw Error(`Invalid gravity: ${t}`);return r}const uy={"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 dy(e){return e.toLowerCase().replaceAll(/[-_ ]/g,``)}function fy(e,t,n){let r=dy(t),i=Object.entries(e).find(([e])=>dy(e)===r);if(!i)throw Error(`Invalid ${n}: ${t}`);return i[1]}function py(e,t,n,r){let i=ry(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 my(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 hy(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(Gv),r.pointsize!==void 0&&a.fontPointSize(r.pointsize),a.text(Number(i[1]),Number(i[2]),n.text??``).draw(t)}async function gy(e){if(Kv.has(e.Magick))return;let t=qv??=fetch(Hv).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(Gv,await t),Kv.add(e.Magick)}catch(e){throw qv===t&&(qv=null),e}}function _y(e){return e.operations.some(e=>e.type===`annotate`)?!0:e.kind===`append`&&e.children.some(_y)}function vy(e,t,n,r){let i=uy[n.type];if(i){i(t);return}switch(n.type){case`density`:return;case`resize`:iy(e,t,n.value);return;case`thumbnail`:t.thumbnail(ry(e,n.value,`thumbnail`));return;case`rotate`:ay(t,n.value);return;case`crop`:oy(e,t,n.value,r.gravity);return;case`quality`:sy(t,n.value);return;case`background`:r.background=n.value,t.backgroundColor=new e.MagickColor(n.value);return;case`extent`:py(e,t,n.value,r);return;case`alpha`:t.alpha(fy(e.AlphaAction,n.value,`alpha mode`));return;case`colorspace`:t.colorSpace=fy(e.ColorSpace,n.value,`colorspace`);return;case`transparent`:t.transparent(new e.MagickColor(n.value));return;case`blur`:t.blur(...my(n.value,`blur`));return;case`sharpen`:t.sharpen(...my(n.value,`sharpen`));return;case`gravity`:r.gravity=ly(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`:hy(e,t,n,r);return}}function yy(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:ly(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 by(e,t,n){let r={};for(let i of n)vy(e,t,i,r)}function xy(e,t){let n=null,r=Wv(t);return e.write(r,e=>{n=new Uint8Array(e)}),n}async function Sy(e,t,n,r,i=[],a=0){if(a===t.children.length)return r(i);await Cy(e,t.children[a],n,async o=>{i.push(o),await Sy(e,t,n,r,i,a+1),i.pop()})}async function Cy(e,t,n,r){if(t.kind===`input`){await e.ImageMagick.read(n.get(t),async n=>{by(e,n,t.operations),await r(n)});return}await Sy(e,t,n,async n=>{yy(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=>{by(e,n,t.operations),await r(n)})}finally{i.length=0,i.dispose()}})}function wy(e){let t=e.match(/^(.*)\[(\d+)\]$/);return t?{path:t[1],scene:Number(t[2])}:{path:e}}async function Ty(e,t,n=new Map,r=new Map){if(e.kind===`input`){let{path:i,scene:a}=wy(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)),ta(s)){let t=await na(s,(a??0)+1,{scale:ra(e.density),format:`png`});return n.set(e,t.bytes),n}return n.set(e,s),n}for(let i of e.children)await Ty(i,t,n,r);return n}function Ey(e=`convert`){return S(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Jv();let r;try{r=Qv(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let e=await Ty(r.expression,n),t=await Qi({ipk:Uv(n)});_y(r.expression)&&await gy(t);let i=null;if(await Cy(t,r.expression,e,async e=>{i=xy(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 Dy(){return globalThis.__slicc_lickManager??null}let Oy=null;async function ky(){if(Oy)return Oy;let{createLickManagerProxy:e}=await import(`./lick-manager-proxy-DMaLHm_t.js`);return Oy=e(),Oy}async function Ay(){let e=Dy();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(ke())return null;let t=await ky(),{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 jy(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 My(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 (${jy(r.candidates)})\n`:null}function Ny(e){return{stdout:``,stderr:`crontask ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}function Py(){return{stdout:`usage: crontask <command> [options]
588
+ `,stderr:``,exitCode:0}}const Ev=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 Dv=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):Ev.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:Ov(n),operations:[]}),this.index++}readOperation(e,t,n){let r=Ev.get(n),i=this.tokens.slice(this.index+1,this.index+1+r);if(i.length!==r||i.some(e=>jv(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=Av(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 Ov(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 kv(e){if(e.length<2)throw Error(`expected exactly one input file and one output file`);let t=e.at(-1),n=Ev.get(t);if(n!==void 0)throw Error(n>0?`missing argument for ${t}`:`expected an output file`);if(jv(t))throw Error(`expected an output file`);return{expression:new Dv(e.slice(0,-1)).parse(),outputPath:t}}function Av(e){let t=Number(e.split(`x`)[0]);if(!Number.isFinite(t)||t<=0)throw Error(`Invalid density: ${e}`);return t}function jv(e){return e===`(`||e===`)`||e===`+append`||e===`-append`||Ev.has(e)}const Mv=/^(?:\d+(?:x\d*)?|x\d+)(?:[%!^<>@])?$/,Nv=/^\d+x\d+(?:[+-]\d+[+-]\d+)?$/;function Pv(e,t,n){if(!(n===`resize`||n===`thumbnail`?Mv:Nv).test(t))throw Error(`Invalid ${n} geometry: ${t}`);return new e.MagickGeometry(t)}function Fv(e,t,n){t.resize(Pv(e,n,`resize`))}function Iv(e,t){let n=parseFloat(t);if(isNaN(n))throw Error(`Invalid rotation degrees: ${t}`);e.rotate(n)}function Lv(e,t,n,r){let i=Pv(e,n,`crop`);r===void 0?t.crop(i):t.crop(i,r)}function Rv(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 zv={northwest:`Northwest`,north:`North`,northeast:`Northeast`,west:`West`,center:`Center`,east:`East`,southwest:`Southwest`,south:`South`,southeast:`Southeast`};function Bv(e,t){let n=zv[t.toLowerCase()],r=n?e.Gravity[n]:void 0;if(r===void 0)throw Error(`Invalid gravity: ${t}`);return r}const Vv={"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 Hv(e){return e.toLowerCase().replaceAll(/[-_ ]/g,``)}function Uv(e,t,n){let r=Hv(t),i=Object.entries(e).find(([e])=>Hv(e)===r);if(!i)throw Error(`Invalid ${n}: ${t}`);return i[1]}function Wv(e,t,n,r){let i=Pv(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 Gv(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 Kv(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(Sv),r.pointsize!==void 0&&a.fontPointSize(r.pointsize),a.text(Number(i[1]),Number(i[2]),n.text??``).draw(t)}async function qv(e){if(Cv.has(e.Magick))return;let t=wv??=fetch(yv).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(Sv,await t),Cv.add(e.Magick)}catch(e){throw wv===t&&(wv=null),e}}function Jv(e){return e.operations.some(e=>e.type===`annotate`)?!0:e.kind===`append`&&e.children.some(Jv)}function Yv(e,t,n,r){let i=Vv[n.type];if(i){i(t);return}switch(n.type){case`density`:return;case`resize`:Fv(e,t,n.value);return;case`thumbnail`:t.thumbnail(Pv(e,n.value,`thumbnail`));return;case`rotate`:Iv(t,n.value);return;case`crop`:Lv(e,t,n.value,r.gravity);return;case`quality`:Rv(t,n.value);return;case`background`:r.background=n.value,t.backgroundColor=new e.MagickColor(n.value);return;case`extent`:Wv(e,t,n.value,r);return;case`alpha`:t.alpha(Uv(e.AlphaAction,n.value,`alpha mode`));return;case`colorspace`:t.colorSpace=Uv(e.ColorSpace,n.value,`colorspace`);return;case`transparent`:t.transparent(new e.MagickColor(n.value));return;case`blur`:t.blur(...Gv(n.value,`blur`));return;case`sharpen`:t.sharpen(...Gv(n.value,`sharpen`));return;case`gravity`:r.gravity=Bv(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`:Kv(e,t,n,r);return}}function Xv(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:Bv(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 Zv(e,t,n){let r={};for(let i of n)Yv(e,t,i,r)}function Qv(e,t){let n=null,r=xv(t);return e.write(r,e=>{n=new Uint8Array(e)}),n}async function $v(e,t,n,r,i=[],a=0){if(a===t.children.length)return r(i);await ey(e,t.children[a],n,async o=>{i.push(o),await $v(e,t,n,r,i,a+1),i.pop()})}async function ey(e,t,n,r){if(t.kind===`input`){await e.ImageMagick.read(n.get(t),async n=>{Zv(e,n,t.operations),await r(n)});return}await $v(e,t,n,async n=>{Xv(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=>{Zv(e,n,t.operations),await r(n)})}finally{i.length=0,i.dispose()}})}function ty(e){let t=e.match(/^(.*)\[(\d+)\]$/);return t?{path:t[1],scene:Number(t[2])}:{path:e}}async function ny(e,t,n=new Map,r=new Map){if(e.kind===`input`){let{path:i,scene:a}=ty(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)),Qi(s)){let t=await $i(s,(a??0)+1,{scale:ea(e.density),format:`png`});return n.set(e,t.bytes),n}return n.set(e,s),n}for(let i of e.children)await ny(i,t,n,r);return n}function ry(e=`convert`){return S(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Tv();let r;try{r=kv(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let e=await ny(r.expression,n),t=await Yi({ipk:bv(n)});Jv(r.expression)&&await qv(t);let i=null;if(await ey(t,r.expression,e,async e=>{i=Qv(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 iy(){return globalThis.__slicc_lickManager??null}let ay=null;async function oy(){if(ay)return ay;let{createLickManagerProxy:e}=await import(`./lick-manager-proxy-DMaLHm_t.js`);return ay=e(),ay}async function sy(){let e=iy();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(ke())return null;let t=await oy(),{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 cy(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 ly(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 (${cy(r.candidates)})\n`:null}function uy(e){return{stdout:``,stderr:`crontask ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}function dy(){return{stdout:`usage: crontask <command> [options]
594
589
 
595
590
  Commands:
596
591
  create [options] Create a new cron task
@@ -622,14 +617,14 @@ Examples:
622
617
  crontask create --name every-5min --scoop poller --cron "*/5 * * * *" --filter "() => ({ time: Date.now() })"
623
618
  crontask list
624
619
  crontask delete abc123
625
- `,stderr:``,exitCode:0}}async function Fy(e,t,n){let r={method:e,headers:we({"Content-Type":`application/json`})};n&&(r.body=JSON.stringify(n));let i=await fetch(Ce(`/api/crontasks${t}`),r),a=await i.json().catch(()=>({}));return{ok:i.ok,status:i.status,data:a}}const Iy=[`--name`,`--cron`,`--filter`,`--scoop`];function Ly(e){return{stdout:``,stderr:`crontask: ${e}\n`,exitCode:1}}async function Ry(e,t,n){let r=C(e.slice(1),{value:Iy});if(`error`in r)return Ly(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=ia(s,t),!i)return{stdout:``,stderr:`crontask: --name is required
620
+ `,stderr:``,exitCode:0}}async function fy(e,t,n){let r={method:e,headers:we({"Content-Type":`application/json`})};n&&(r.body=JSON.stringify(n));let i=await fetch(Ce(`/api/crontasks${t}`),r),a=await i.json().catch(()=>({}));return{ok:i.ok,status:i.status,data:a}}const py=[`--name`,`--cron`,`--filter`,`--scoop`];function my(e){return{stdout:``,stderr:`crontask: ${e}\n`,exitCode:1}}async function hy(e,t,n){let r=C(e.slice(1),{value:py});if(`error`in r)return my(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=ta(s,t),!i)return{stdout:``,stderr:`crontask: --name is required
626
621
  `,exitCode:1};if(!a)return{stdout:``,stderr:`crontask: --cron is required
627
- `,exitCode:1};let c=await My(await Ay(),`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)
628
- `,exitCode:1};let e=await Ay();if(!e)return Ny(`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 Fy(`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 zy(e){let t=`Active cron tasks:
622
+ `,exitCode:1};let c=await ly(await sy(),`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)
623
+ `,exitCode:1};let e=await sy();if(!e)return uy(`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 fy(`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 gy(e){let t=`Active cron tasks:
629
624
  `;for(let n of e)t+=` ${n.id} ${n.name.padEnd(20)} ${n.cron.padEnd(15)}`,n.scoop&&(t+=` -> ${n.scoop}`),n.filter&&(t+=` [filtered]`),t+=` (${n.status})`,n.nextRun&&(t+=` next: ${new Date(n.nextRun).toLocaleString()}`),t+=`
630
- `;return t}async function By(e,t){let n=C(e.slice(1),{});if(`error`in n)return Ly(n.error);if(!t()){let e=await Ay();if(!e)return Ny(`list`);let t=await e.listCronTasks();return t.length===0?{stdout:`No active cron tasks
631
- `,stderr:``,exitCode:0}:{stdout:zy(t),stderr:``,exitCode:0}}let{ok:r,data:i}=await Fy(`GET`,``);if(!r)return{stdout:``,stderr:`crontask: failed to list: ${i.error??`unknown error`}\n`,exitCode:1};let a=i;return a.length===0?{stdout:`No active cron tasks
632
- `,stderr:``,exitCode:0}:{stdout:zy(a),stderr:``,exitCode:0}}async function Vy(e,t){let n=e[0],r=C(e.slice(1),{});if(`error`in r)return Ly(r.error);let i=r.positionals[0];if(!i)return{stdout:``,stderr:`crontask: ${n} requires an ID\n`,exitCode:1};if(!t()){let e=await Ay();return e?await e.deleteCronTask(i)?{stdout:`Deleted cron task "${i}"\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`crontask: task "${i}" not found\n`,exitCode:1}:Ny(`delete`)}let{ok:a,status:o,data:s}=await Fy(`DELETE`,`/${i}`);return a?{stdout:`Deleted cron task "${i}"\n`,stderr:``,exitCode:0}:o===404?{stdout:``,stderr:`crontask: task "${i}" not found\n`,exitCode:1}:{stdout:``,stderr:`crontask: failed to delete: ${s.error??`unknown error`}\n`,exitCode:1}}function Hy(e={}){let t=e.hasLocalNodeServer??(()=>!1);return S(`crontask`,async(e,n)=>{let r=e[0];if(!r||w(e,{valueFlags:Iy}))return Py();try{switch(r){case`create`:return await Ry(e,n.env,t);case`list`:return await By(e,t);case`delete`:case`kill`:return await Vy(e,t);default:return{stdout:``,stderr:`crontask: unknown command "${r}"\n`,exitCode:1}}}catch(e){return{stdout:``,stderr:`crontask: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function Uy(e){return S(`curlwright`,async(t,n)=>{let{runCurlwright:r}=await import(`./run-D6LxdCnL.js`);return r(e,t,n)})}function Wy(e,t={}){if(!Number.isFinite(e)||e<0)return``;if(t.si){if(e<1e3)return`${Math.round(e)} B`;let t=[`kB`,`MB`,`GB`,`TB`],n=e/1e3,r=0;for(;n>=1e3&&r<t.length-1;)n/=1e3,r+=1;return`${n<10?n.toFixed(1):Math.round(n)} ${t[r]}`}if(e<1024)return Number.isInteger(e)?`${e} B`:e>=.1?`${e.toFixed(1)} B`:e>0?`${Math.max(.01,Number(e.toFixed(2)))} B`:`0 B`;let n=[`KB`,`MB`,`GB`,`TB`,`PB`],r=e,i=-1;for(;r>=1024&&i<n.length-1;)r/=1024,i+=1;return`${r.toFixed(1)} ${n[i]}`}function Gy(e){return Wy(e,{si:!1})}const Ky=`slicc-fs`;async function qy(){try{let e=globalThis.indexedDB;if(!e)return!1;let t=e.databases;return typeof t!=`function`||(await t.call(e)).some(e=>e.name===Ky)}catch{return!0}}async function Jy(){let e=globalThis.indexedDB;return e?new Promise(t=>{let n;try{n=e.deleteDatabase(Ky)}catch{t(`error`);return}n.onsuccess=()=>t(`deleted`),n.onerror=()=>t(`error`),n.onblocked=()=>t(`blocked`)}):`error`}async function Yy(){if(!await qy())return{kind:`absent`,message:`legacy slicc-fs IDB not present — nothing to clean`};let e=await Jy();return e===`deleted`?{kind:`deleted`,message:`legacy slicc-fs IDB deleted`}:e===`blocked`?{kind:`blocked`,message:`legacy slicc-fs IDB delete blocked by another connection — close other tabs and retry`}:{kind:`error`,message:`legacy slicc-fs IDB delete failed`}}function Xy(){return`slicc-fs-cleanup — delete the legacy slicc-fs IndexedDB
625
+ `;return t}async function _y(e,t){let n=C(e.slice(1),{});if(`error`in n)return my(n.error);if(!t()){let e=await sy();if(!e)return uy(`list`);let t=await e.listCronTasks();return t.length===0?{stdout:`No active cron tasks
626
+ `,stderr:``,exitCode:0}:{stdout:gy(t),stderr:``,exitCode:0}}let{ok:r,data:i}=await fy(`GET`,``);if(!r)return{stdout:``,stderr:`crontask: failed to list: ${i.error??`unknown error`}\n`,exitCode:1};let a=i;return a.length===0?{stdout:`No active cron tasks
627
+ `,stderr:``,exitCode:0}:{stdout:gy(a),stderr:``,exitCode:0}}async function vy(e,t){let n=e[0],r=C(e.slice(1),{});if(`error`in r)return my(r.error);let i=r.positionals[0];if(!i)return{stdout:``,stderr:`crontask: ${n} requires an ID\n`,exitCode:1};if(!t()){let e=await sy();return e?await e.deleteCronTask(i)?{stdout:`Deleted cron task "${i}"\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`crontask: task "${i}" not found\n`,exitCode:1}:uy(`delete`)}let{ok:a,status:o,data:s}=await fy(`DELETE`,`/${i}`);return a?{stdout:`Deleted cron task "${i}"\n`,stderr:``,exitCode:0}:o===404?{stdout:``,stderr:`crontask: task "${i}" not found\n`,exitCode:1}:{stdout:``,stderr:`crontask: failed to delete: ${s.error??`unknown error`}\n`,exitCode:1}}function yy(e={}){let t=e.hasLocalNodeServer??(()=>!1);return S(`crontask`,async(e,n)=>{let r=e[0];if(!r||w(e,{valueFlags:py}))return dy();try{switch(r){case`create`:return await hy(e,n.env,t);case`list`:return await _y(e,t);case`delete`:case`kill`:return await vy(e,t);default:return{stdout:``,stderr:`crontask: unknown command "${r}"\n`,exitCode:1}}}catch(e){return{stdout:``,stderr:`crontask: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function by(e){return S(`curlwright`,async(t,n)=>{let{runCurlwright:r}=await import(`./run-D6LxdCnL.js`);return r(e,t,n)})}function xy(e,t={}){if(!Number.isFinite(e)||e<0)return``;if(t.si){if(e<1e3)return`${Math.round(e)} B`;let t=[`kB`,`MB`,`GB`,`TB`],n=e/1e3,r=0;for(;n>=1e3&&r<t.length-1;)n/=1e3,r+=1;return`${n<10?n.toFixed(1):Math.round(n)} ${t[r]}`}if(e<1024)return Number.isInteger(e)?`${e} B`:e>=.1?`${e.toFixed(1)} B`:e>0?`${Math.max(.01,Number(e.toFixed(2)))} B`:`0 B`;let n=[`KB`,`MB`,`GB`,`TB`,`PB`],r=e,i=-1;for(;r>=1024&&i<n.length-1;)r/=1024,i+=1;return`${r.toFixed(1)} ${n[i]}`}function Sy(e){return xy(e,{si:!1})}const Cy=`slicc-fs`;async function wy(){try{let e=globalThis.indexedDB;if(!e)return!1;let t=e.databases;return typeof t!=`function`||(await t.call(e)).some(e=>e.name===Cy)}catch{return!0}}async function Ty(){let e=globalThis.indexedDB;return e?new Promise(t=>{let n;try{n=e.deleteDatabase(Cy)}catch{t(`error`);return}n.onsuccess=()=>t(`deleted`),n.onerror=()=>t(`error`),n.onblocked=()=>t(`blocked`)}):`error`}async function Ey(){if(!await wy())return{kind:`absent`,message:`legacy slicc-fs IDB not present — nothing to clean`};let e=await Ty();return e===`deleted`?{kind:`deleted`,message:`legacy slicc-fs IDB deleted`}:e===`blocked`?{kind:`blocked`,message:`legacy slicc-fs IDB delete blocked by another connection — close other tabs and retry`}:{kind:`error`,message:`legacy slicc-fs IDB delete failed`}}function Dy(){return`slicc-fs-cleanup — delete the legacy slicc-fs IndexedDB
633
628
 
634
629
  Usage:
635
630
  slicc-fs-cleanup Delete the legacy slicc-fs IDB.
@@ -638,7 +633,7 @@ Usage:
638
633
  SLICC's filesystem lives in OPFS; the legacy slicc-fs IndexedDB from
639
634
  the pre-OPFS era is never read anymore. This command deletes it on
640
635
  explicit invocation to reclaim the space.
641
- `}const Zy={deleted:0,absent:0,blocked:1,error:1};function Qy(e={}){let t=e.runCleanup??Yy;return S(`slicc-fs-cleanup`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:Xy(),stderr:``,exitCode:0};if(e.length>0)return{stdout:``,stderr:`slicc-fs-cleanup: unsupported argument: ${e[0]}\n`,exitCode:1};let n=await t(),r=Zy[n.kind];return r===0?{stdout:`${n.message}\n`,stderr:``,exitCode:r}:{stdout:``,stderr:`slicc-fs-cleanup: ${n.message}\n`,exitCode:r}})}function $y(e){return`${e} — report VFS backend and storage usage/quota
636
+ `}const Oy={deleted:0,absent:0,blocked:1,error:1};function ky(e={}){let t=e.runCleanup??Ey;return S(`slicc-fs-cleanup`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:Dy(),stderr:``,exitCode:0};if(e.length>0)return{stdout:``,stderr:`slicc-fs-cleanup: unsupported argument: ${e[0]}\n`,exitCode:1};let n=await t(),r=Oy[n.kind];return r===0?{stdout:`${n.message}\n`,stderr:``,exitCode:r}:{stdout:``,stderr:`slicc-fs-cleanup: ${n.message}\n`,exitCode:r}})}function Ay(e){return`${e} — report VFS backend and storage usage/quota
642
637
 
643
638
  Usage:
644
639
  ${e} Show diagnostics (raw bytes).
@@ -646,16 +641,16 @@ Usage:
646
641
  ${e} --help Show this help.
647
642
 
648
643
  Read-only. Cleanup of the legacy IndexedDB lives in 'slicc-fs-cleanup'.
649
- `}function eb(){return`diskutil — VFS diagnostics alias
644
+ `}function jy(){return`diskutil — VFS diagnostics alias
650
645
 
651
646
  Usage:
652
647
  diskutil info Show VFS diagnostics (alias for 'df -h').
653
648
  diskutil --help Show this help.
654
649
 
655
650
  Read-only. See 'df --help' for the underlying command.
656
- `}function tb(e,t){return e===null?`unavailable`:t?Gy(e):`${e}`}async function nb(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??qy;try{o=await s()}catch{o=null}return{backend:t,usage:n,quota:r,persisted:i,legacyIdbPresent:o}}function rb(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: ${tb(e.usage,t)}`,`Quota: ${tb(e.quota,t)}`,`Used: ${n}`,`Persisted: ${r}`,`Legacy IDB: ${i}`].join(`
657
- `)}\n`}function ib(e={}){return S(`df`,async t=>{if(t.includes(`--help`))return{stdout:$y(`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:rb(await nb(e),i),stderr:``,exitCode:0}})}function ab(e={}){return S(`diskutil`,async t=>{if(t.includes(`--help`))return{stdout:eb(),stderr:``,exitCode:0};let n=t[0];return n===`info`?{stdout:rb(await nb(e),!0),stderr:``,exitCode:0}:{stdout:``,stderr:n?`diskutil: unsupported subcommand: ${n} (try 'diskutil info')\n`:`diskutil: missing subcommand (try 'diskutil info')
658
- `,exitCode:1}})}const ob=e(`di`),sb=new WeakMap;async function cb(e,t){let n=sb.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 ob.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 ob.error(`failed to fetch pyodide-lock.json from CDN`,e),null}if(n.status<200||n.status>=300)return ob.error(`pyodide-lock.json CDN fetch returned HTTP ${n.status}`),null;r=xe(n.body)}let i;try{i=JSON.parse(r)}catch(e){return ob.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(Ir(t.name??e),t);return sb.set(e,a),a}async function lb(e,t,n,r){let i=await cb(e,t);if(!i)return null;let a=i.get(Ir(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 ub(e,t){let n=`https://pypi.org/pypi/${encodeURIComponent(e)}`;return t?`${n}/${encodeURIComponent(t)}/json`:`${n}/json`}function db(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 fb(e,t,n){let r=`di: PyPI lookup for ${t}${n?`==${n}`:``}`,i=ub(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(xe(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=>db(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 pb=`/workspace/python_wheels`,mb=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function hb(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(),!mb.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 gb(e){return e instanceof Error?e:Error(String(e))}async function _b(e,t,n){return await lb(e,t,n.name,n.version)||fb(t,n.name,n.version)}async function vb(e,t,n){let r=await _b(e,t,n),i=await Jr(t,{url:r.url,sha256:r.sha256,label:`di: download ${r.name}==${r.version}`});await e.mkdir(pb,{recursive:!0});let a=x(pb,r.fileName),o=!0;if(await e.exists(a)){let t=await e.readFile(a,{encoding:`binary`}),n=await Pr(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 yb(e,t,n,r){let i=await Hr(e,n),a=[],o=[];for(let n of r){let r;try{r=hb(n)}catch(e){o.push({spec:n,error:gb(e)});continue}try{a.push(await vb(e,t,r))}catch(e){o.push({spec:n,error:gb(e)})}}if(a.length>0){let t=await Gr(e,i),n=t.dependencies,r=await Fr(e,i);for(let e of a)n=Mr(n,e.name,e.version),r=Kr(r,{name:e.name,version:e.version,source:e.source,fileName:e.fileName,sha256:e.sha256});await Vr(e,i,{...t,dependencies:n}),await Rr(e,i,r)}return{results:a,errors:o,manifestDir:i}}async function bb(e,t){let n=await Br(e,t);if(!n)return null;let r=await Gr(e,n),i=await Fr(e,n),a=new Map(i.map(e=>[Ir(e.name),e]));return r.dependencies.map(e=>{let{name:t,version:n}=Lr(e),r=a.get(Ir(t));return{name:t,version:n||r?.version||`?`,source:r?.source??`unknown`}})}const xb=[];function Sb(e){return`${e} - minimal Python package manager (pure-Python + Pyodide wheels)
651
+ `}function My(e,t){return e===null?`unavailable`:t?Sy(e):`${e}`}async function Ny(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??wy;try{o=await s()}catch{o=null}return{backend:t,usage:n,quota:r,persisted:i,legacyIdbPresent:o}}function Py(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: ${My(e.usage,t)}`,`Quota: ${My(e.quota,t)}`,`Used: ${n}`,`Persisted: ${r}`,`Legacy IDB: ${i}`].join(`
652
+ `)}\n`}function Fy(e={}){return S(`df`,async t=>{if(t.includes(`--help`))return{stdout:Ay(`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:Py(await Ny(e),i),stderr:``,exitCode:0}})}function Iy(e={}){return S(`diskutil`,async t=>{if(t.includes(`--help`))return{stdout:jy(),stderr:``,exitCode:0};let n=t[0];return n===`info`?{stdout:Py(await Ny(e),!0),stderr:``,exitCode:0}:{stdout:``,stderr:n?`diskutil: unsupported subcommand: ${n} (try 'diskutil info')\n`:`diskutil: missing subcommand (try 'diskutil info')
653
+ `,exitCode:1}})}const Ly=e(`di`),Ry=new WeakMap;async function zy(e,t){let n=Ry.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 Ly.error(`failed to read pyodide-lock.json`,e),null}else{let e=`${Ir}pyodide-lock.json`,n;try{n=await t(e,{method:`GET`,headers:{Accept:`application/json`},timeoutMs:3e4})}catch(e){return Ly.error(`failed to fetch pyodide-lock.json from CDN`,e),null}if(n.status<200||n.status>=300)return Ly.error(`pyodide-lock.json CDN fetch returned HTTP ${n.status}`),null;r=xe(n.body)}let i;try{i=JSON.parse(r)}catch(e){return Ly.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(Nr(t.name??e),t);return Ry.set(e,a),a}async function By(e,t,n,r){let i=await zy(e,t);if(!i)return null;let a=i.get(Nr(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:`${Ir}${a.file_name}`}}function Vy(e,t){let n=`https://pypi.org/pypi/${encodeURIComponent(e)}`;return t?`${n}/${encodeURIComponent(t)}/json`:`${n}/json`}function Hy(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 Uy(e,t,n){let r=`di: PyPI lookup for ${t}${n?`==${n}`:``}`,i=Vy(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(xe(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=>Hy(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 Wy=`/workspace/python_wheels`,Gy=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function Ky(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(),!Gy.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 qy(e){return e instanceof Error?e:Error(String(e))}async function Jy(e,t,n){return await By(e,t,n.name,n.version)||Uy(t,n.name,n.version)}async function Yy(e,t,n){let r=await Jy(e,t,n),i=await Gr(t,{url:r.url,sha256:r.sha256,label:`di: download ${r.name}==${r.version}`});await e.mkdir(Wy,{recursive:!0});let a=x(Wy,r.fileName),o=!0;if(await e.exists(a)){let t=await e.readFile(a,{encoding:`binary`}),n=await jr(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 Xy(e,t,n,r){let i=await zr(e,n),a=[],o=[];for(let n of r){let r;try{r=Ky(n)}catch(e){o.push({spec:n,error:qy(e)});continue}try{a.push(await Yy(e,t,r))}catch(e){o.push({spec:n,error:qy(e)})}}if(a.length>0){let t=await Hr(e,i),n=t.dependencies,r=await Mr(e,i);for(let e of a)n=kr(n,e.name,e.version),r=Ur(r,{name:e.name,version:e.version,source:e.source,fileName:e.fileName,sha256:e.sha256});await Rr(e,i,{...t,dependencies:n}),await Fr(e,i,r)}return{results:a,errors:o,manifestDir:i}}async function Zy(e,t){let n=await Lr(e,t);if(!n)return null;let r=await Hr(e,n),i=await Mr(e,n),a=new Map(i.map(e=>[Nr(e.name),e]));return r.dependencies.map(e=>{let{name:t,version:n}=Pr(e),r=a.get(Nr(t));return{name:t,version:n||r?.version||`?`,source:r?.source??`unknown`}})}const Qy=[];function $y(e){return`${e} - minimal Python package manager (pure-Python + Pyodide wheels)
659
654
 
660
655
  Usage:
661
656
  ${e} add <pkg>[@<version>] [<pkg> ...] resolve, stage, and record wheels
@@ -668,20 +663,20 @@ Resolution:
668
663
  staged under /workspace/python_wheels/ and recorded in pyproject.toml + uv.lock.
669
664
 
670
665
  Anything else is not implemented in SLICC's ${e} subset; use real uv locally.
671
- `}function Cb(e,t){return{stdout:``,stderr:`${e}: '${t}' is not implemented in SLICC's di/uv subset; use real uv locally. Run '${e} --help' for supported verbs.\n`,exitCode:1}}function wb(e){return e instanceof Error?e.message:String(e)}function Tb(e){let t=Math.max(4,...e.map(e=>e.name.length)),n=Math.max(7,...e.map(e=>e.version.length));return`${e.map(e=>`${e.name.padEnd(t)} ${e.version.padEnd(n)} (${e.source})`).join(`
672
- `)}\n`}async function Eb(e,t,n,r){let i=C(t,{value:xb});if(`error`in i)return{stdout:``,stderr:`${e}: ${i.error}\n`,exitCode:1};let a=i.positionals;if(a.length===0)return{stdout:``,stderr:`${e}: add requires at least one package\n`,exitCode:1};let o;try{o=await yb(r.fs,r.fetch,n.cwd,a)}catch(t){return{stdout:``,stderr:`${e}: ${wb(t)}\n`,exitCode:1}}let s=o.results.map(t=>t.staged?`${e}: added ${t.name}==${t.version} (${t.source}) -> ${t.fileName}`:`${e}: ${t.name}==${t.version} already staged (${t.source})`),c=o.errors.map(t=>`${e}: failed to add ${t.spec}: ${wb(t.error)}`);return{stdout:s.length>0?`${s.join(`
666
+ `}function eb(e,t){return{stdout:``,stderr:`${e}: '${t}' is not implemented in SLICC's di/uv subset; use real uv locally. Run '${e} --help' for supported verbs.\n`,exitCode:1}}function tb(e){return e instanceof Error?e.message:String(e)}function nb(e){let t=Math.max(4,...e.map(e=>e.name.length)),n=Math.max(7,...e.map(e=>e.version.length));return`${e.map(e=>`${e.name.padEnd(t)} ${e.version.padEnd(n)} (${e.source})`).join(`
667
+ `)}\n`}async function rb(e,t,n,r){let i=C(t,{value:Qy});if(`error`in i)return{stdout:``,stderr:`${e}: ${i.error}\n`,exitCode:1};let a=i.positionals;if(a.length===0)return{stdout:``,stderr:`${e}: add requires at least one package\n`,exitCode:1};let o;try{o=await Xy(r.fs,r.fetch,n.cwd,a)}catch(t){return{stdout:``,stderr:`${e}: ${tb(t)}\n`,exitCode:1}}let s=o.results.map(t=>t.staged?`${e}: added ${t.name}==${t.version} (${t.source}) -> ${t.fileName}`:`${e}: ${t.name}==${t.version} already staged (${t.source})`),c=o.errors.map(t=>`${e}: failed to add ${t.spec}: ${tb(t.error)}`);return{stdout:s.length>0?`${s.join(`
673
668
  `)}\n`:``,stderr:c.length>0?`${c.join(`
674
- `)}\n`:``,exitCode:o.errors.length===0?0:1}}async function Db(e,t,n,r){let i=C(t,{value:xb});if(`error`in i)return{stdout:``,stderr:`${e}: ${i.error}\n`,exitCode:1};let a=await bb(r.fs,n.cwd);return a===null?{stdout:``,stderr:`${e}: no pyproject.toml found (run '${e} add <pkg>' first)\n`,exitCode:0}:a.length===0?{stdout:`${e}: no dependencies recorded\n`,stderr:``,exitCode:0}:{stdout:Tb(a),stderr:``,exitCode:0}}function Ob(e,t){return S(e,async(n,r)=>{if(n.length===0)return{stdout:Sb(e),stderr:`${e}: missing verb\n`,exitCode:1};if(w(n,{valueFlags:xb}))return{stdout:Sb(e),stderr:``,exitCode:0};let i=n[0],a=n.slice(1);return i===`add`?Eb(e,a,r,t):i===`list`?Db(e,a,r,t):Cb(e,i)})}const kb=`https://cloudflare-dns.com/dns-query`,Ab=`https://dns.quad9.net/dns-query`,jb=`usage: dig <name> [type] [@server] [+short] [--json]`,Mb=[`A`,`AAAA`,`MX`,`TXT`,`CNAME`,`NS`,`SOA`,`SRV`,`PTR`,`CAA`],Nb={"1.1.1.1":kb,"1.0.0.1":kb,"cloudflare-dns.com":kb,"8.8.8.8":`https://dns.google/resolve`,"8.8.4.4":`https://dns.google/resolve`,"dns.google":`https://dns.google/resolve`,"9.9.9.9":Ab,"149.112.112.112":Ab,"dns.quad9.net":Ab};function Pb(e){let t=e.split(`.`);if(t.length!==4)return;let n=t.map(Number);if(!(t.some(e=>!/^[0-9]+$/.test(e))||n.some(e=>!Number.isInteger(e)||e<0||e>255)))return n}function Fb(e){if(e.includes(`%`))return;let t=e;if(e.includes(`.`)){let n=e.lastIndexOf(`:`),r=n>=0?Pb(e.slice(n+1)):void 0;if(!r)return;let i=[r[0]*256+r[1],r[2]*256+r[3]].map(e=>e.toString(16));t=`${e.slice(0,n+1)}${i.join(`:`)}`}let n=t.split(`::`);if(n.length>2)return;let r=n[0]?n[0].split(`:`):[],i=n[1]?n[1].split(`:`):[],a=[...r,...i];if(!a.some(e=>!/^[0-9a-f]{1,4}$/i.test(e))){if(n.length===1)return a.length===8?a:void 0;if(!(a.length>=8))return[...r,...Array(8-a.length).fill(`0`),...i]}}function Ib(e){let t=Pb(e);if(t)return`${t.reverse().join(`.`)}.in-addr.arpa`;let n=Fb(e);if(n)return`${n.map(e=>e.padStart(4,`0`)).join(``).split(``).reverse().join(`.`)}.ip6.arpa`}function Lb(e){return{kind:`error`,message:`dig: '${e}' is not a valid record type; ${jb}\n`}}function Rb(e,t,n){let r=e[t+1]?.trim();if(!r)return{error:{kind:`error`,message:`dig: -x requires an address
675
- `}};let i=Ib(r);return i?n.name?{error:Lb(r)}:(n.name=i,n.type=`PTR`,{nextIndex:t+1}):{error:{kind:`error`,message:`dig: '${r}' is not a valid IP address for -x\n`}}}function zb(e,t,n){return n.server?{error:{kind:`error`,message:`dig: multiple @server arguments
669
+ `)}\n`:``,exitCode:o.errors.length===0?0:1}}async function ib(e,t,n,r){let i=C(t,{value:Qy});if(`error`in i)return{stdout:``,stderr:`${e}: ${i.error}\n`,exitCode:1};let a=await Zy(r.fs,n.cwd);return a===null?{stdout:``,stderr:`${e}: no pyproject.toml found (run '${e} add <pkg>' first)\n`,exitCode:0}:a.length===0?{stdout:`${e}: no dependencies recorded\n`,stderr:``,exitCode:0}:{stdout:nb(a),stderr:``,exitCode:0}}function ab(e,t){return S(e,async(n,r)=>{if(n.length===0)return{stdout:$y(e),stderr:`${e}: missing verb\n`,exitCode:1};if(w(n,{valueFlags:Qy}))return{stdout:$y(e),stderr:``,exitCode:0};let i=n[0],a=n.slice(1);return i===`add`?rb(e,a,r,t):i===`list`?ib(e,a,r,t):eb(e,i)})}const ob=`https://cloudflare-dns.com/dns-query`,sb=`https://dns.quad9.net/dns-query`,cb=`usage: dig <name> [type] [@server] [+short] [--json]`,lb=[`A`,`AAAA`,`MX`,`TXT`,`CNAME`,`NS`,`SOA`,`SRV`,`PTR`,`CAA`],ub={"1.1.1.1":ob,"1.0.0.1":ob,"cloudflare-dns.com":ob,"8.8.8.8":`https://dns.google/resolve`,"8.8.4.4":`https://dns.google/resolve`,"dns.google":`https://dns.google/resolve`,"9.9.9.9":sb,"149.112.112.112":sb,"dns.quad9.net":sb};function db(e){let t=e.split(`.`);if(t.length!==4)return;let n=t.map(Number);if(!(t.some(e=>!/^[0-9]+$/.test(e))||n.some(e=>!Number.isInteger(e)||e<0||e>255)))return n}function fb(e){if(e.includes(`%`))return;let t=e;if(e.includes(`.`)){let n=e.lastIndexOf(`:`),r=n>=0?db(e.slice(n+1)):void 0;if(!r)return;let i=[r[0]*256+r[1],r[2]*256+r[3]].map(e=>e.toString(16));t=`${e.slice(0,n+1)}${i.join(`:`)}`}let n=t.split(`::`);if(n.length>2)return;let r=n[0]?n[0].split(`:`):[],i=n[1]?n[1].split(`:`):[],a=[...r,...i];if(!a.some(e=>!/^[0-9a-f]{1,4}$/i.test(e))){if(n.length===1)return a.length===8?a:void 0;if(!(a.length>=8))return[...r,...Array(8-a.length).fill(`0`),...i]}}function pb(e){let t=db(e);if(t)return`${t.reverse().join(`.`)}.in-addr.arpa`;let n=fb(e);if(n)return`${n.map(e=>e.padStart(4,`0`)).join(``).split(``).reverse().join(`.`)}.ip6.arpa`}function mb(e){return{kind:`error`,message:`dig: '${e}' is not a valid record type; ${cb}\n`}}function hb(e,t,n){let r=e[t+1]?.trim();if(!r)return{error:{kind:`error`,message:`dig: -x requires an address
670
+ `}};let i=pb(r);return i?n.name?{error:mb(r)}:(n.name=i,n.type=`PTR`,{nextIndex:t+1}):{error:{kind:`error`,message:`dig: '${r}' is not a valid IP address for -x\n`}}}function gb(e,t,n){return n.server?{error:{kind:`error`,message:`dig: multiple @server arguments
676
671
  `}}:(n.server=e.slice(1).trim(),n.server?{nextIndex:t}:{error:{kind:`error`,message:`dig: empty @server argument
677
- `}})}function Bb(e,t,n){let r=e.trim(),i=r.toUpperCase(),a=n.name?.toUpperCase();if(Mb.includes(i)&&!n.type&&n.name)n.type=i;else if(!n.name)n.name=r;else if(a&&Mb.includes(a)&&!n.type)n.name=r,n.type=a;else return{error:Lb(r)};return{nextIndex:t}}function Vb(e,t,n){let r=e[t];return r.startsWith(`+`)?(r===`+short`&&(n.short=!0),{nextIndex:t}):r===`--json`?(n.json=!0,{nextIndex:t}):r===`-x`?Rb(e,t,n):r.startsWith(`@`)?zb(r,t,n):r.startsWith(`-`)?{error:{kind:`error`,message:`dig: unknown option: ${r}\n`}}:Bb(r,t,n)}function Hb(e){if(e.short&&e.json)return{kind:`error`,message:`dig: +short and --json are mutually exclusive
678
- `};if(!e.name)return{kind:`error`,message:`dig: missing domain name\n${jb}\n`};let t=e.server?.toLowerCase(),n=t?Nb[t]:void 0,r=e.server&&!n?`dig: note: @${e.server} not supported over DoH; using cloudflare-dns.com\n`:``;return{kind:`query`,name:e.name,type:e.type??`A`,short:e.short,json:e.json,resolverUrl:n??`https://cloudflare-dns.com/dns-query`,fallbackNote:r}}function Ub(e){if(e.includes(`-v`)||e.includes(`--version`))return{kind:`version`};let t={short:!1,json:!1};for(let n=0;n<e.length;n+=1){let r=Vb(e,n,t);if(`error`in r)return r.error;n=r.nextIndex}return Hb(t)}const Wb={A:1,NS:2,CNAME:5,SOA:6,PTR:12,MX:15,TXT:16,AAAA:28,SRV:33,CAA:257},Gb=new Set(`#/:<>?@[\\]^|`);function Kb(e){return Array.from(e).some(e=>{let t=e.codePointAt(0)??0;return t<=127&&(t<33||t===127||Gb.has(e))})}function qb(e){if(Kb(e))throw Error(`invalid hostname`);if(/^[\x21-\x7e]+$/.test(e))return e;let t=`.invalid`,n=new URL(`https://${e}${t}`);if(n.username||n.password||n.port||n.pathname!==`/`||n.search||n.hash||!n.hostname.endsWith(t)||n.hostname.includes(`:`))throw Error(`invalid hostname`);let r=n.hostname.slice(0,-8);if(!r||r.includes(`.`)||!/^[\x21-\x7e]+$/.test(r))throw Error(`invalid hostname`);return r}function Jb(e){if(e===`.`)return``;let t=e.endsWith(`.`)?e.slice(0,-1):e,n=t.split(`.`);if(!t||n.some(e=>e.length===0))throw Error(`invalid DNS name: ${e}`);try{return n.map(qb).join(`.`)}catch{throw Error(`invalid DNS name: ${e}`)}}function Yb(e,t){let n=Jb(e).split(`.`).filter(e=>e.length>0).map(e=>new TextEncoder().encode(e));if(n.some(e=>e.length>63))throw Error(`invalid DNS name: ${e}`);let r=n.reduce((e,t)=>e+t.length+1,1);if(r>255)throw Error(`invalid DNS name: ${e}`);let i=Wb[t];if(!i)throw Error(`unsupported record type: ${t}`);let a=new Uint8Array(12+r+4),o=new DataView(a.buffer);o.setUint16(2,256),o.setUint16(4,1);let s=12;for(let e of n)a[s]=e.length,a.set(e,s+1),s+=e.length+1;return s+=1,o.setUint16(s,i),o.setUint16(s+2,1),a}function Xb(e,n,r){return`${e}?dns=${t(Yb(n,r)).replaceAll(`+`,`-`).replaceAll(`/`,`_`).replace(/=+$/,``)}`}function Zb(e,t,n){if(t<0||n<0||t+n>e.length)throw Error(`truncated DNS message`)}function Qb(e,t){let n=[],r=new Set,i=t,a=t,o=!1,s=1;for(let t=0;t<=e.length;t+=1){Zb(e,i,1);let t=e[i];if(t===0)return o||(a=i+1),{name:n.length>0?`${n.join(`.`)}.`:`.`,labels:n,nextOffset:a};if((t&192)==192){Zb(e,i,2);let n=(t&63)<<8|e[i+1];if(n>=i)throw Error(`invalid DNS compression pointer`);if(r.has(n))throw Error(`DNS compression pointer loop`);r.add(n),o||(a=i+2),o=!0,i=n;continue}if(t&192||t>63)throw Error(`invalid DNS label`);if(Zb(e,i+1,t),s+=t+1,s>255)throw Error(`DNS name too long`);n.push(new TextDecoder().decode(e.subarray(i+1,i+1+t))),i+=t+1}throw Error(`invalid DNS name`)}function R(e,t){return Zb(e,t,2),new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(t)}function $b(e,t){return Zb(e,t,4),new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(t)}function ex(e,t){let n=Array.from({length:8},(n,r)=>R(e,t+r*2)),r=-1,i=0;for(let e=0;e<n.length;){if(n[e]!==0){e+=1;continue}let t=e;for(;t<n.length&&n[t]===0;)t+=1;t-e>i&&([r,i]=[e,t-e]),e=t}let a=n.map(e=>e.toString(16));return i<2?a.join(`:`):`${a.slice(0,r).join(`:`)}::${a.slice(r+i).join(`:`)}`}function tx(e,t,n){return`"${Array.from(e.subarray(t,n),e=>e===34?`\\"`:e===92?`\\\\`:e>=32&&e<=126?String.fromCharCode(e):`\\${String(e).padStart(3,`0`)}`).join(``)}"`}function nx(e,t,n){let r=t,i=[];for(;r<n;){let t=e[r];if(Zb(e,r+1,t),r+t+1>n)throw Error(`invalid TXT record`);i.push(tx(e,r+1,r+1+t)),r+=t+1}return i.join(` `)}function rx(e,t,n){if(n-t<2)throw Error(`invalid CAA record`);let r=e[t+1];if(t+2+r>n)throw Error(`invalid CAA record`);let i=new TextDecoder,a=i.decode(e.subarray(t+2,t+2+r)),o=i.decode(e.subarray(t+2+r,n));return`${e[t]} ${a} ${JSON.stringify(o)}`}function ix(e,t,n,r){if(t===1){if(r-n!==4)throw Error(`invalid A record`);return Array.from(e.subarray(n,r)).join(`.`)}if(t===28){if(r-n!==16)throw Error(`invalid AAAA record`);return ex(e,n)}if([2,5,12].includes(t)){let t=Qb(e,n);if(t.nextOffset!==r)throw Error(`invalid DNS name record`);return t.name}if(t===15){if(r-n<3)throw Error(`invalid MX record`);let t=Qb(e,n+2);if(t.nextOffset!==r)throw Error(`invalid MX record`);return`${R(e,n)} ${t.name}`}if(t===16)return nx(e,n,r);if(t===6){let t=Qb(e,n),i=Qb(e,t.nextOffset);if(i.nextOffset+20!==r)throw Error(`invalid SOA record`);let a=Array.from({length:5},(t,n)=>$b(e,i.nextOffset+n*4));return`${t.name} ${i.name} ${a.join(` `)}`}if(t===33){if(r-n<7)throw Error(`invalid SRV record`);let t=Qb(e,n+6);if(t.nextOffset!==r)throw Error(`invalid SRV record`);return`${R(e,n)} ${R(e,n+2)} ${R(e,n+4)} ${t.name}`}if(t===257)return rx(e,n,r);let i=Array.from(e.subarray(n,r),e=>e.toString(16).padStart(2,`0`));return`\\# ${r-n} ${i.join(``)}`}function ax(e,t,n,r){let i=[],a=t;for(let t=0;t<n;t+=1){let t=Qb(e,a);a=t.nextOffset,Zb(e,a,10);let n=R(e,a),o=R(e,a+2),s=$b(e,a+4),c=R(e,a+8),l=a+10,u=l+c;Zb(e,l,c);let d=ix(e,n,l,u);r&&o===1&&i.push({name:t.name,type:n,TTL:s,data:d}),a=u}return{answers:i,nextOffset:a}}function ox(e){return e.replace(/[A-Z]/g,e=>e.toLowerCase())}function sx(e,t,n,r,i){let a=Jb(r).split(`.`).filter(Boolean);if(!(e.labels.length===a.length&&e.labels.every((e,t)=>ox(e)===ox(a[t])))||t!==Wb[i]||n!==1)throw Error(`unexpected DNS response question`)}function cx(e,t,n){Zb(e,0,12);let r=R(e,2);if(R(e,0)!==0||!(r&32768))throw Error(`invalid DNS response`);if(r&512)throw Error(`truncated DNS response`);let i=R(e,4),a=R(e,6),o=R(e,8),s=R(e,10);if(i!==1)throw Error(`invalid DNS question count`);let c=12,l=Qb(e,c);c=l.nextOffset,Zb(e,c,4),sx(l,R(e,c),R(e,c+2),t,n),c+=4;let u=ax(e,c,a,!0);if(ax(e,ax(e,u.nextOffset,o,!1).nextOffset,s,!1).nextOffset!==e.length)throw Error(`trailing DNS message data`);return{Status:r&15,Answer:u.answers}}const lx={1:`A`,2:`NS`,5:`CNAME`,6:`SOA`,12:`PTR`,15:`MX`,16:`TXT`,28:`AAAA`,33:`SRV`,257:`CAA`},ux={0:`NOERROR`,1:`FORMERR`,2:`SERVFAIL`,3:`NXDOMAIN`,4:`NOTIMP`,5:`REFUSED`};function dx(){return{stdout:`usage: dig <name> [type] [@server] [+opts] [--json]
672
+ `}})}function _b(e,t,n){let r=e.trim(),i=r.toUpperCase(),a=n.name?.toUpperCase();if(lb.includes(i)&&!n.type&&n.name)n.type=i;else if(!n.name)n.name=r;else if(a&&lb.includes(a)&&!n.type)n.name=r,n.type=a;else return{error:mb(r)};return{nextIndex:t}}function vb(e,t,n){let r=e[t];return r.startsWith(`+`)?(r===`+short`&&(n.short=!0),{nextIndex:t}):r===`--json`?(n.json=!0,{nextIndex:t}):r===`-x`?hb(e,t,n):r.startsWith(`@`)?gb(r,t,n):r.startsWith(`-`)?{error:{kind:`error`,message:`dig: unknown option: ${r}\n`}}:_b(r,t,n)}function yb(e){if(e.short&&e.json)return{kind:`error`,message:`dig: +short and --json are mutually exclusive
673
+ `};if(!e.name)return{kind:`error`,message:`dig: missing domain name\n${cb}\n`};let t=e.server?.toLowerCase(),n=t?ub[t]:void 0,r=e.server&&!n?`dig: note: @${e.server} not supported over DoH; using cloudflare-dns.com\n`:``;return{kind:`query`,name:e.name,type:e.type??`A`,short:e.short,json:e.json,resolverUrl:n??`https://cloudflare-dns.com/dns-query`,fallbackNote:r}}function bb(e){if(e.includes(`-v`)||e.includes(`--version`))return{kind:`version`};let t={short:!1,json:!1};for(let n=0;n<e.length;n+=1){let r=vb(e,n,t);if(`error`in r)return r.error;n=r.nextIndex}return yb(t)}const xb={A:1,NS:2,CNAME:5,SOA:6,PTR:12,MX:15,TXT:16,AAAA:28,SRV:33,CAA:257},Sb=new Set(`#/:<>?@[\\]^|`);function Cb(e){return Array.from(e).some(e=>{let t=e.codePointAt(0)??0;return t<=127&&(t<33||t===127||Sb.has(e))})}function wb(e){if(Cb(e))throw Error(`invalid hostname`);if(/^[\x21-\x7e]+$/.test(e))return e;let t=`.invalid`,n=new URL(`https://${e}${t}`);if(n.username||n.password||n.port||n.pathname!==`/`||n.search||n.hash||!n.hostname.endsWith(t)||n.hostname.includes(`:`))throw Error(`invalid hostname`);let r=n.hostname.slice(0,-8);if(!r||r.includes(`.`)||!/^[\x21-\x7e]+$/.test(r))throw Error(`invalid hostname`);return r}function Tb(e){if(e===`.`)return``;let t=e.endsWith(`.`)?e.slice(0,-1):e,n=t.split(`.`);if(!t||n.some(e=>e.length===0))throw Error(`invalid DNS name: ${e}`);try{return n.map(wb).join(`.`)}catch{throw Error(`invalid DNS name: ${e}`)}}function Eb(e,t){let n=Tb(e).split(`.`).filter(e=>e.length>0).map(e=>new TextEncoder().encode(e));if(n.some(e=>e.length>63))throw Error(`invalid DNS name: ${e}`);let r=n.reduce((e,t)=>e+t.length+1,1);if(r>255)throw Error(`invalid DNS name: ${e}`);let i=xb[t];if(!i)throw Error(`unsupported record type: ${t}`);let a=new Uint8Array(12+r+4),o=new DataView(a.buffer);o.setUint16(2,256),o.setUint16(4,1);let s=12;for(let e of n)a[s]=e.length,a.set(e,s+1),s+=e.length+1;return s+=1,o.setUint16(s,i),o.setUint16(s+2,1),a}function Db(e,n,r){return`${e}?dns=${t(Eb(n,r)).replaceAll(`+`,`-`).replaceAll(`/`,`_`).replace(/=+$/,``)}`}function Ob(e,t,n){if(t<0||n<0||t+n>e.length)throw Error(`truncated DNS message`)}function kb(e,t){let n=[],r=new Set,i=t,a=t,o=!1,s=1;for(let t=0;t<=e.length;t+=1){Ob(e,i,1);let t=e[i];if(t===0)return o||(a=i+1),{name:n.length>0?`${n.join(`.`)}.`:`.`,labels:n,nextOffset:a};if((t&192)==192){Ob(e,i,2);let n=(t&63)<<8|e[i+1];if(n>=i)throw Error(`invalid DNS compression pointer`);if(r.has(n))throw Error(`DNS compression pointer loop`);r.add(n),o||(a=i+2),o=!0,i=n;continue}if(t&192||t>63)throw Error(`invalid DNS label`);if(Ob(e,i+1,t),s+=t+1,s>255)throw Error(`DNS name too long`);n.push(new TextDecoder().decode(e.subarray(i+1,i+1+t))),i+=t+1}throw Error(`invalid DNS name`)}function R(e,t){return Ob(e,t,2),new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(t)}function Ab(e,t){return Ob(e,t,4),new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(t)}function jb(e,t){let n=Array.from({length:8},(n,r)=>R(e,t+r*2)),r=-1,i=0;for(let e=0;e<n.length;){if(n[e]!==0){e+=1;continue}let t=e;for(;t<n.length&&n[t]===0;)t+=1;t-e>i&&([r,i]=[e,t-e]),e=t}let a=n.map(e=>e.toString(16));return i<2?a.join(`:`):`${a.slice(0,r).join(`:`)}::${a.slice(r+i).join(`:`)}`}function Mb(e,t,n){return`"${Array.from(e.subarray(t,n),e=>e===34?`\\"`:e===92?`\\\\`:e>=32&&e<=126?String.fromCharCode(e):`\\${String(e).padStart(3,`0`)}`).join(``)}"`}function Nb(e,t,n){let r=t,i=[];for(;r<n;){let t=e[r];if(Ob(e,r+1,t),r+t+1>n)throw Error(`invalid TXT record`);i.push(Mb(e,r+1,r+1+t)),r+=t+1}return i.join(` `)}function Pb(e,t,n){if(n-t<2)throw Error(`invalid CAA record`);let r=e[t+1];if(t+2+r>n)throw Error(`invalid CAA record`);let i=new TextDecoder,a=i.decode(e.subarray(t+2,t+2+r)),o=i.decode(e.subarray(t+2+r,n));return`${e[t]} ${a} ${JSON.stringify(o)}`}function Fb(e,t,n,r){if(t===1){if(r-n!==4)throw Error(`invalid A record`);return Array.from(e.subarray(n,r)).join(`.`)}if(t===28){if(r-n!==16)throw Error(`invalid AAAA record`);return jb(e,n)}if([2,5,12].includes(t)){let t=kb(e,n);if(t.nextOffset!==r)throw Error(`invalid DNS name record`);return t.name}if(t===15){if(r-n<3)throw Error(`invalid MX record`);let t=kb(e,n+2);if(t.nextOffset!==r)throw Error(`invalid MX record`);return`${R(e,n)} ${t.name}`}if(t===16)return Nb(e,n,r);if(t===6){let t=kb(e,n),i=kb(e,t.nextOffset);if(i.nextOffset+20!==r)throw Error(`invalid SOA record`);let a=Array.from({length:5},(t,n)=>Ab(e,i.nextOffset+n*4));return`${t.name} ${i.name} ${a.join(` `)}`}if(t===33){if(r-n<7)throw Error(`invalid SRV record`);let t=kb(e,n+6);if(t.nextOffset!==r)throw Error(`invalid SRV record`);return`${R(e,n)} ${R(e,n+2)} ${R(e,n+4)} ${t.name}`}if(t===257)return Pb(e,n,r);let i=Array.from(e.subarray(n,r),e=>e.toString(16).padStart(2,`0`));return`\\# ${r-n} ${i.join(``)}`}function Ib(e,t,n,r){let i=[],a=t;for(let t=0;t<n;t+=1){let t=kb(e,a);a=t.nextOffset,Ob(e,a,10);let n=R(e,a),o=R(e,a+2),s=Ab(e,a+4),c=R(e,a+8),l=a+10,u=l+c;Ob(e,l,c);let d=Fb(e,n,l,u);r&&o===1&&i.push({name:t.name,type:n,TTL:s,data:d}),a=u}return{answers:i,nextOffset:a}}function Lb(e){return e.replace(/[A-Z]/g,e=>e.toLowerCase())}function Rb(e,t,n,r,i){let a=Tb(r).split(`.`).filter(Boolean);if(!(e.labels.length===a.length&&e.labels.every((e,t)=>Lb(e)===Lb(a[t])))||t!==xb[i]||n!==1)throw Error(`unexpected DNS response question`)}function zb(e,t,n){Ob(e,0,12);let r=R(e,2);if(R(e,0)!==0||!(r&32768))throw Error(`invalid DNS response`);if(r&512)throw Error(`truncated DNS response`);let i=R(e,4),a=R(e,6),o=R(e,8),s=R(e,10);if(i!==1)throw Error(`invalid DNS question count`);let c=12,l=kb(e,c);c=l.nextOffset,Ob(e,c,4),Rb(l,R(e,c),R(e,c+2),t,n),c+=4;let u=Ib(e,c,a,!0);if(Ib(e,Ib(e,u.nextOffset,o,!1).nextOffset,s,!1).nextOffset!==e.length)throw Error(`trailing DNS message data`);return{Status:r&15,Answer:u.answers}}const Bb={1:`A`,2:`NS`,5:`CNAME`,6:`SOA`,12:`PTR`,15:`MX`,16:`TXT`,28:`AAAA`,33:`SRV`,257:`CAA`},Vb={0:`NOERROR`,1:`FORMERR`,2:`SERVFAIL`,3:`NXDOMAIN`,4:`NOTIMP`,5:`REFUSED`};function Hb(){return{stdout:`usage: dig <name> [type] [@server] [+opts] [--json]
679
674
  dig -x <address> [@server] [+opts] [--json]
680
675
  dig -v | --version
681
676
 
682
677
  Resolve DNS records via DNS-over-HTTPS.
683
678
 
684
- Supported types: `+Mb.join(`, `)+` (default: A).
679
+ Supported types: `+lb.join(`, `)+` (default: A).
685
680
 
686
681
  Flags:
687
682
  @server use a supported Cloudflare, Google, or Quad9 resolver
@@ -691,11 +686,11 @@ Flags:
691
686
  +opts other dig +options are accepted as no-ops
692
687
  --json resolver response as pretty-printed JSON
693
688
  -h, --help show this help
694
- `,stderr:``,exitCode:0}}function fx(e){return lx[e]??`TYPE${e}`}function px(e,t){let{fallbackNote:n,json:r,name:i,short:a}=t;if(typeof e.Status==`number`&&e.Status!==0)return{stdout:``,stderr:`${n}dig: ${i}: ${ux[e.Status]??String(e.Status)}\n`,exitCode:1};if(r)return{stdout:`${JSON.stringify(e,null,2)}\n`,stderr:n,exitCode:0};let o=e.Answer??[];return o.length===0?{stdout:a?``:`;; no records found
689
+ `,stderr:``,exitCode:0}}function Ub(e){return Bb[e]??`TYPE${e}`}function Wb(e,t){let{fallbackNote:n,json:r,name:i,short:a}=t;if(typeof e.Status==`number`&&e.Status!==0)return{stdout:``,stderr:`${n}dig: ${i}: ${Vb[e.Status]??String(e.Status)}\n`,exitCode:1};if(r)return{stdout:`${JSON.stringify(e,null,2)}\n`,stderr:n,exitCode:0};let o=e.Answer??[];return o.length===0?{stdout:a?``:`;; no records found
695
690
  `,stderr:n,exitCode:0}:a?{stdout:`${o.map(e=>e.data).join(`
696
- `)}\n`,stderr:n,exitCode:0}:{stdout:`${o.map(e=>`${e.name}\t${e.TTL??0}\tIN\t${fx(e.type)}\t${e.data}`).join(`
697
- `)}\n`,stderr:n,exitCode:0}}async function mx(e,t){let n=Ub(e);if(n.kind===`version`)return{stdout:`DiG 9.20.0-slicc (DNS-over-HTTPS)
698
- `,stderr:``,exitCode:0};if(n.kind===`error`)return{stdout:``,stderr:n.message,exitCode:1};let{fallbackNote:r,name:i,resolverUrl:a,type:o}=n,s=a===Ab,c,l;try{c=s?Xb(a,i,o):`${a}?name=${encodeURIComponent(i)}&type=${o}`,l=await t(c,{method:`GET`,headers:{Accept:s?`application/dns-message`:`application/dns-json`}})}catch(e){return{stdout:``,stderr:`${r}dig: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}if(l.status<200||l.status>=300)return{stdout:``,stderr:`${r}dig: lookup failed: ${l.status} ${l.statusText}\n`,exitCode:1};try{return px(s?cx(l.body,i,o):JSON.parse(new TextDecoder(`utf-8`).decode(l.body)),n)}catch{return{stdout:``,stderr:`${r}dig: invalid response from resolver\n`,exitCode:1}}}function hx(){let e=g();return S(`dig`,async t=>t.includes(`--help`)||t.includes(`-h`)?dx():mx(t,e))}const gx=[`api-catalog`,`service-desc`,`service-meta`,`status`,`https://llmstxt.org/rel/llms-txt`];async function _x(e,t={}){let n=t.fetchImpl??fetch,r=t.timeoutMs??3e3,i={links:e,failures:[]},a=[],o=new Set;for(let s of e)for(let e of s.rel)gx.includes(e)&&(o.has(e)||(o.add(e),a.push(vx(n,s.href,r,t.signal).then(t=>yx(i,e,t)).catch(t=>{i.failures.push({rel:e,href:s.href,error:t instanceof Error?t.message:String(t)})}))));return await Promise.all(a),i}async function vx(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(Error(`timeout`)),n),o=()=>i.abort(Error(`aborted`));r&&r.addEventListener(`abort`,o,{once:!0});try{let n=await e(t,{signal:i.signal});if(!n.ok)throw Error(`HTTP ${n.status}`);return{contentType:n.headers.get(`content-type`)??``,body:await n.text()}}finally{clearTimeout(a),r&&r.removeEventListener(`abort`,o)}}function yx(e,t,n){if(t===`https://llmstxt.org/rel/llms-txt`){e.llmsTxt=n.body;return}let r=n.contentType.includes(`json`)||n.contentType.includes(`linkset`),i=n.body;if(r)try{i=JSON.parse(n.body)}catch{i=n.body}switch(t){case`api-catalog`:e.catalog=i;break;case`service-desc`:e.serviceDesc=i;break;case`service-meta`:e.serviceMeta=i;break;case`status`:e.status=i}}const bx=[`--follow`];function xx(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})}}function Sx(){return`discover — fetch a URL and parse RFC 8288 Link headers
691
+ `)}\n`,stderr:n,exitCode:0}:{stdout:`${o.map(e=>`${e.name}\t${e.TTL??0}\tIN\t${Ub(e.type)}\t${e.data}`).join(`
692
+ `)}\n`,stderr:n,exitCode:0}}async function Gb(e,t){let n=bb(e);if(n.kind===`version`)return{stdout:`DiG 9.20.0-slicc (DNS-over-HTTPS)
693
+ `,stderr:``,exitCode:0};if(n.kind===`error`)return{stdout:``,stderr:n.message,exitCode:1};let{fallbackNote:r,name:i,resolverUrl:a,type:o}=n,s=a===sb,c,l;try{c=s?Db(a,i,o):`${a}?name=${encodeURIComponent(i)}&type=${o}`,l=await t(c,{method:`GET`,headers:{Accept:s?`application/dns-message`:`application/dns-json`}})}catch(e){return{stdout:``,stderr:`${r}dig: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}if(l.status<200||l.status>=300)return{stdout:``,stderr:`${r}dig: lookup failed: ${l.status} ${l.statusText}\n`,exitCode:1};try{return Wb(s?zb(l.body,i,o):JSON.parse(new TextDecoder(`utf-8`).decode(l.body)),n)}catch{return{stdout:``,stderr:`${r}dig: invalid response from resolver\n`,exitCode:1}}}function Kb(){let e=g();return S(`dig`,async t=>t.includes(`--help`)||t.includes(`-h`)?Hb():Gb(t,e))}const qb=[`api-catalog`,`service-desc`,`service-meta`,`status`,`https://llmstxt.org/rel/llms-txt`];async function Jb(e,t={}){let n=t.fetchImpl??fetch,r=t.timeoutMs??3e3,i={links:e,failures:[]},a=[],o=new Set;for(let s of e)for(let e of s.rel)qb.includes(e)&&(o.has(e)||(o.add(e),a.push(Yb(n,s.href,r,t.signal).then(t=>Xb(i,e,t)).catch(t=>{i.failures.push({rel:e,href:s.href,error:t instanceof Error?t.message:String(t)})}))));return await Promise.all(a),i}async function Yb(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(Error(`timeout`)),n),o=()=>i.abort(Error(`aborted`));r&&r.addEventListener(`abort`,o,{once:!0});try{let n=await e(t,{signal:i.signal});if(!n.ok)throw Error(`HTTP ${n.status}`);return{contentType:n.headers.get(`content-type`)??``,body:await n.text()}}finally{clearTimeout(a),r&&r.removeEventListener(`abort`,o)}}function Xb(e,t,n){if(t===`https://llmstxt.org/rel/llms-txt`){e.llmsTxt=n.body;return}let r=n.contentType.includes(`json`)||n.contentType.includes(`linkset`),i=n.body;if(r)try{i=JSON.parse(n.body)}catch{i=n.body}switch(t){case`api-catalog`:e.catalog=i;break;case`service-desc`:e.serviceDesc=i;break;case`service-meta`:e.serviceMeta=i;break;case`status`:e.status=i}}const Zb=[`--follow`];function Qb(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})}}function $b(){return`discover — fetch a URL and parse RFC 8288 Link headers
699
694
 
700
695
  Usage:
701
696
  discover <url> Print parsed links (and any SLICC handoff match)
@@ -709,9 +704,9 @@ Output is always JSON.
709
704
  Examples:
710
705
  discover ${r}/handoff?handoff=demo
711
706
  discover --follow ${r}/llms.txt
712
- `}function Cx(){return S(`discover`,async e=>{if(e.length===0||w(e))return{stdout:Sx(),stderr:``,exitCode:0};let t=C(e,{bool:bx});if(`error`in t)return{stdout:``,stderr:`discover: ${t.error}\n`,exitCode:1};let n=t.bools.has(`--follow`);if(t.positionals.length!==1)return{stdout:``,stderr:`discover: expected exactly one URL argument
713
- `,exitCode:2};let r=t.positionals[0],i=g(),o;try{o=await i(r,{method:`GET`})}catch(e){return{stdout:``,stderr:`discover: fetch failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let c=[];for(let[e,t]of Object.entries(o.headers))e.toLowerCase()===`link`&&typeof t==`string`&&t.length>0&&c.push(t);let l=s(c,r),u=a(l),d={url:r,status:o.status,links:l,handoff:u};if(n&&l.length>0){let e=await _x(l,{fetchImpl:xx(i)});d.discovery={catalog:e.catalog,serviceDesc:e.serviceDesc,serviceMeta:e.serviceMeta,status:e.status,llmsTxt:e.llmsTxt,failures:e.failures}}return{stdout:JSON.stringify(d,null,2)+`
714
- `,stderr:``,exitCode:0}})}function wx(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 Tx=`esbuild - thin wrapper over the ipk-loaded esbuild-wasm
707
+ `}function ex(){return S(`discover`,async e=>{if(e.length===0||w(e))return{stdout:$b(),stderr:``,exitCode:0};let t=C(e,{bool:Zb});if(`error`in t)return{stdout:``,stderr:`discover: ${t.error}\n`,exitCode:1};let n=t.bools.has(`--follow`);if(t.positionals.length!==1)return{stdout:``,stderr:`discover: expected exactly one URL argument
708
+ `,exitCode:2};let r=t.positionals[0],i=g(),o;try{o=await i(r,{method:`GET`})}catch(e){return{stdout:``,stderr:`discover: fetch failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let c=[];for(let[e,t]of Object.entries(o.headers))e.toLowerCase()===`link`&&typeof t==`string`&&t.length>0&&c.push(t);let l=s(c,r),u=a(l),d={url:r,status:o.status,links:l,handoff:u};if(n&&l.length>0){let e=await Jb(l,{fetchImpl:Qb(i)});d.discovery={catalog:e.catalog,serviceDesc:e.serviceDesc,serviceMeta:e.serviceMeta,status:e.status,llmsTxt:e.llmsTxt,failures:e.failures}}return{stdout:JSON.stringify(d,null,2)+`
709
+ `,stderr:``,exitCode:0}})}function tx(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 nx=`esbuild - thin wrapper over the ipk-loaded esbuild-wasm
715
710
 
716
711
  Usage:
717
712
  esbuild [options] <entry> Bundle / transform
@@ -749,12 +744,12 @@ Module resolution:
749
744
 
750
745
  Install:
751
746
  Inert until the backing package is installed:
752
- ${N} esbuild-wasm@${mi}
747
+ ${N} esbuild-wasm@${di}
753
748
  Then \`esbuild --version\` and the bundle/transform commands above.
754
- `,Ex=new Set([`iife`,`cjs`,`esm`]),Dx=new Set([`browser`,`node`,`neutral`]),Ox=new Set([`linked`,`inline`,`external`,`both`]),kx={"-h":`showHelp`,"--help":`showHelp`,"-v":`showVersion`,"--version":`showVersion`,"--bundle":`bundle`,"--transform":`transform`,"--minify":`minify`};function Ax(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 jx(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 Mx(e,t,n,r){if(t.inlineValue!==null){if(!Ox.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`&&Ox.has(i)?(e.sourcemap=i,1):(e.sourcemap=!0,0)}function Nx(e,t,n,r){if(t.key===`--outfile`){let{value:i,advance:a}=jx(t,n,r);return e.outfile=i,a}if(t.key===`--format`){let{value:i,advance:a}=jx(t,n,r);if(!Ex.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}=jx(t,n,r);if(!Dx.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}=jx(t,n,r);return e.target=i.split(`,`).map(e=>e.trim()).filter(Boolean),a}if(t.key===`--loader`){let{value:i,advance:a}=jx(t,n,r);return e.loader=i,a}return-1}function Px(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 Fx(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=kx[r];if(i){t[i]=!0;continue}if(r.startsWith(`--external:`)){t.external.push(r.slice(11));continue}if(Px(r,`--define:`,t.define)||Px(r,`--banner:`,t.banner)||Px(r,`--footer:`,t.footer))continue;let a=Ax(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+=Mx(t,a,e,n);continue}let o=Nx(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 Ix(e,t,n,r,i){return{name:`slicc-vfs`,setup(a){a.onResolve({filter:/.*/},async a=>{if(a.kind!==`entry-point`&&Lx(a.path,r)||/^[a-z]+:/.test(a.path)&&!a.path.startsWith(`file:`))return{path:a.path,external:!0};if(zx(a.path)){let n=a.importer?.startsWith(`/`)?Tr(a.importer):t;return{path:await Hx(e,e.resolvePath(n,a.path))}}return Bx(a.path,a.importer,n,Rx(i,a.kind))}),a.onLoad({filter:/.*/},async t=>t.namespace&&t.namespace!==`file`?null:{contents:await e.readFile(t.path),loader:Vx(t.path),resolveDir:Tr(t.path)})}}}function Lx(e,t){return t.some(t=>{if(e===t)return!0;if(!t.includes(`*`))return!zx(t)&&e.startsWith(`${t}/`);let n=t.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(`*`,`.*`);return RegExp(`^${n}$`).test(e)})}function Rx(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 zx(e){return e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`/`)}async function Bx(e,t,n,r){let i=t?.startsWith(`/`)?Tr(t):n.fromDir;try{let t=await mr(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 Vx(e){let t=xr(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 Hx(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=br(t,`index${r}`);if(await e.exists(n))return n}return t}async function Ux(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 Wx(){return S(`esbuild`,async(e,t)=>{let n;try{n=Fx(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:Tx,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)
755
- `,exitCode:2};let r;try{r=await pi({ipk:wx(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?Gx(n,t,r):Kx(n,t,r)})}async function Gx(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:Tx,stderr:``,exitCode:0};let a={loader:e.loader??Vx(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 Ux(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 Ux(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function Kx(e,t,n){if(e.entries.length===0)return{stdout:``,stderr:`esbuild: --bundle requires at least one entry point
756
- `,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:[Ix(t.fs,t.cwd,wx(t),e.external,e.platform)],format:e.format??`esm`,...qx(e)};try{let r=await n.build(i),a=await Ux(n.formatMessages,r.errors,r.warnings),o=r.outputFiles??[];if(e.outfile){if(o.length===0)return{stdout:``,stderr:`esbuild: build produced no output
757
- `,exitCode:1};let n=t.fs.resolvePath(t.cwd,e.outfile);await t.fs.writeFile(n,o[0].text);let r=Tr(n);for(let e=1;e<o.length;e++){let n=o[e],i=br(r,xr(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 Ux(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function qx(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 Jx(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}var Yx=class{ops(){return import(`./esptool-operations-h8-8jVn_.js`)}registry(){if(!ei())throw Error(`Web Serial is unavailable in this browser`);return oi()}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)}},Xx=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:Jx(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 Zx(e,t){return e&&ei()?new Yx:t?new Xx(t):null}const Qx=Symbol(`picker-approval-timeout`);async function $x(e,t,n){let r=Me.generateId(),i=!1,a=Ne({id:r,html:Nm(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 Qx;throw e}),o,s=new Promise(t=>{o=setTimeout(()=>{i=!0,Me.cancel(r,`${e}: timed out`),t(Qx)},12e4)}),c=await Promise.race([a,s]);if(o&&clearTimeout(o),c===Qx)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 eS=new Set([`--vid`,`--pid`,`--baud`,`--data-bits`,`--stop-bits`,`--parity`,`--flow-control`,`--buffer-size`,`--bytes`,`--until`,`--timeout-ms`,`--dtr`,`--rts`,`--break`,`--__resolved`]);function tS(e){return Pn(e,eS)}function z(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 nS(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 rS(e){let t={};return e.has(`--vid`)&&(t.usbVendorId=z(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.usbProductId=z(e.get(`--pid`),`pid`)),Object.keys(t).length>0?[t]:[]}const iS=new Set([`none`,`even`,`odd`]),aS=new Set([`none`,`hardware`]);function oS(e){let t={baudRate:e.has(`--baud`)?z(e.get(`--baud`),`baud`):9600};if(e.has(`--data-bits`)&&(t.dataBits=z(e.get(`--data-bits`),`data-bits`)),e.has(`--stop-bits`)&&(t.stopBits=z(e.get(`--stop-bits`),`stop-bits`)),e.has(`--parity`)){let n=e.get(`--parity`);if(!iS.has(n))throw Error(`invalid --parity: '${n}'`);t.parity=n}if(e.has(`--flow-control`)){let n=e.get(`--flow-control`);if(!aS.has(n))throw Error(`invalid --flow-control: '${n}'`);t.flowControl=n}return e.has(`--buffer-size`)&&(t.bufferSize=z(e.get(`--buffer-size`),`buffer-size`)),t}function sS(e){let t={};return e.has(`--bytes`)&&(t.maxBytes=z(e.get(`--bytes`),`bytes`)),e.has(`--until`)&&(t.until=nS(e.get(`--until`))),e.has(`--timeout-ms`)&&(t.timeoutMs=z(e.get(`--timeout-ms`),`timeout-ms`)),t}function cS(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 lS(e){let t={};return e.has(`--dtr`)&&(t.dataTerminalReady=cS(e.get(`--dtr`),`dtr`)),e.has(`--rts`)&&(t.requestToSend=cS(e.get(`--rts`),`rts`)),e.has(`--break`)&&(t.break=cS(e.get(`--break`),`break`)),t}function uS(e){let t=bi(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function dS(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function fS(e){return`0x${e.toString(16).padStart(4,`0`)}`}function pS(e){let t=e.usbVendorId!==void 0||e.usbProductId!==void 0?`${fS(e.usbVendorId??0)}:${fS(e.usbProductId??0)}`:`(native serial)`,n=e.opened?` [open]`:``;return`${e.handle}\t${t}${n}`}function mS(e){return`cts=${+!!e.clearToSend} dcd=${+!!e.dataCarrierDetect} dsr=${+!!e.dataSetReady} ri=${+!!e.ringIndicator}\n`}function B(e){return{stdout:e,stderr:``,exitCode:0}}function V(e){return{stdout:``,stderr:`serial: ${e}\n`,exitCode:1}}const hS=`serial - access serial ports via Web Serial
749
+ `,rx=new Set([`iife`,`cjs`,`esm`]),ix=new Set([`browser`,`node`,`neutral`]),ax=new Set([`linked`,`inline`,`external`,`both`]),ox={"-h":`showHelp`,"--help":`showHelp`,"-v":`showVersion`,"--version":`showVersion`,"--bundle":`bundle`,"--transform":`transform`,"--minify":`minify`};function sx(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 cx(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 lx(e,t,n,r){if(t.inlineValue!==null){if(!ax.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`&&ax.has(i)?(e.sourcemap=i,1):(e.sourcemap=!0,0)}function ux(e,t,n,r){if(t.key===`--outfile`){let{value:i,advance:a}=cx(t,n,r);return e.outfile=i,a}if(t.key===`--format`){let{value:i,advance:a}=cx(t,n,r);if(!rx.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}=cx(t,n,r);if(!ix.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}=cx(t,n,r);return e.target=i.split(`,`).map(e=>e.trim()).filter(Boolean),a}if(t.key===`--loader`){let{value:i,advance:a}=cx(t,n,r);return e.loader=i,a}return-1}function dx(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 fx(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=ox[r];if(i){t[i]=!0;continue}if(r.startsWith(`--external:`)){t.external.push(r.slice(11));continue}if(dx(r,`--define:`,t.define)||dx(r,`--banner:`,t.banner)||dx(r,`--footer:`,t.footer))continue;let a=sx(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+=lx(t,a,e,n);continue}let o=ux(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 px(e,t,n,r,i){return{name:`slicc-vfs`,setup(a){a.onResolve({filter:/.*/},async a=>{if(a.kind!==`entry-point`&&mx(a.path,r)||/^[a-z]+:/.test(a.path)&&!a.path.startsWith(`file:`))return{path:a.path,external:!0};if(gx(a.path)){let n=a.importer?.startsWith(`/`)?Sr(a.importer):t;return{path:await yx(e,e.resolvePath(n,a.path))}}return _x(a.path,a.importer,n,hx(i,a.kind))}),a.onLoad({filter:/.*/},async t=>t.namespace&&t.namespace!==`file`?null:{contents:await e.readFile(t.path),loader:vx(t.path),resolveDir:Sr(t.path)})}}}function mx(e,t){return t.some(t=>{if(e===t)return!0;if(!t.includes(`*`))return!gx(t)&&e.startsWith(`${t}/`);let n=t.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(`*`,`.*`);return RegExp(`^${n}$`).test(e)})}function hx(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 gx(e){return e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`/`)}async function _x(e,t,n,r){let i=t?.startsWith(`/`)?Sr(t):n.fromDir;try{let t=await dr(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 vx(e){let t=vr(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 yx(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=_r(t,`index${r}`);if(await e.exists(n))return n}return t}async function bx(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 xx(){return S(`esbuild`,async(e,t)=>{let n;try{n=fx(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:nx,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)
750
+ `,exitCode:2};let r;try{r=await ui({ipk:tx(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?Sx(n,t,r):Cx(n,t,r)})}async function Sx(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:nx,stderr:``,exitCode:0};let a={loader:e.loader??vx(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 bx(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 bx(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function Cx(e,t,n){if(e.entries.length===0)return{stdout:``,stderr:`esbuild: --bundle requires at least one entry point
751
+ `,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:[px(t.fs,t.cwd,tx(t),e.external,e.platform)],format:e.format??`esm`,...wx(e)};try{let r=await n.build(i),a=await bx(n.formatMessages,r.errors,r.warnings),o=r.outputFiles??[];if(e.outfile){if(o.length===0)return{stdout:``,stderr:`esbuild: build produced no output
752
+ `,exitCode:1};let n=t.fs.resolvePath(t.cwd,e.outfile);await t.fs.writeFile(n,o[0].text);let r=Sr(n);for(let e=1;e<o.length;e++){let n=o[e],i=_r(r,vr(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 bx(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function wx(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 Tx(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}var Ex=class{ops(){return import(`./esptool-operations-h8-8jVn_.js`)}registry(){if(!Zr())throw Error(`Web Serial is unavailable in this browser`);return ri()}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)}},Dx=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:Tx(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 Ox(e,t){return e&&Zr()?new Ex:t?new Dx(t):null}const kx=Symbol(`picker-approval-timeout`);async function Ax(e,t,n){let r=Me.generateId(),i=!1,a=Ne({id:r,html:Am(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 kx;throw e}),o,s=new Promise(t=>{o=setTimeout(()=>{i=!0,Me.cancel(r,`${e}: timed out`),t(kx)},12e4)}),c=await Promise.race([a,s]);if(o&&clearTimeout(o),c===kx)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 jx=new Set([`--vid`,`--pid`,`--baud`,`--data-bits`,`--stop-bits`,`--parity`,`--flow-control`,`--buffer-size`,`--bytes`,`--until`,`--timeout-ms`,`--dtr`,`--rts`,`--break`,`--__resolved`]);function Mx(e){return jn(e,jx)}function z(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 Nx(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 Px(e){let t={};return e.has(`--vid`)&&(t.usbVendorId=z(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.usbProductId=z(e.get(`--pid`),`pid`)),Object.keys(t).length>0?[t]:[]}const Fx=new Set([`none`,`even`,`odd`]),Ix=new Set([`none`,`hardware`]);function Lx(e){let t={baudRate:e.has(`--baud`)?z(e.get(`--baud`),`baud`):9600};if(e.has(`--data-bits`)&&(t.dataBits=z(e.get(`--data-bits`),`data-bits`)),e.has(`--stop-bits`)&&(t.stopBits=z(e.get(`--stop-bits`),`stop-bits`)),e.has(`--parity`)){let n=e.get(`--parity`);if(!Fx.has(n))throw Error(`invalid --parity: '${n}'`);t.parity=n}if(e.has(`--flow-control`)){let n=e.get(`--flow-control`);if(!Ix.has(n))throw Error(`invalid --flow-control: '${n}'`);t.flowControl=n}return e.has(`--buffer-size`)&&(t.bufferSize=z(e.get(`--buffer-size`),`buffer-size`)),t}function Rx(e){let t={};return e.has(`--bytes`)&&(t.maxBytes=z(e.get(`--bytes`),`bytes`)),e.has(`--until`)&&(t.until=Nx(e.get(`--until`))),e.has(`--timeout-ms`)&&(t.timeoutMs=z(e.get(`--timeout-ms`),`timeout-ms`)),t}function zx(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 Bx(e){let t={};return e.has(`--dtr`)&&(t.dataTerminalReady=zx(e.get(`--dtr`),`dtr`)),e.has(`--rts`)&&(t.requestToSend=zx(e.get(`--rts`),`rts`)),e.has(`--break`)&&(t.break=zx(e.get(`--break`),`break`)),t}function Vx(e){let t=_i(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function Hx(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function Ux(e){return`0x${e.toString(16).padStart(4,`0`)}`}function Wx(e){let t=e.usbVendorId!==void 0||e.usbProductId!==void 0?`${Ux(e.usbVendorId??0)}:${Ux(e.usbProductId??0)}`:`(native serial)`,n=e.opened?` [open]`:``;return`${e.handle}\t${t}${n}`}function Gx(e){return`cts=${+!!e.clearToSend} dcd=${+!!e.dataCarrierDetect} dsr=${+!!e.dataSetReady} ri=${+!!e.ringIndicator}\n`}function B(e){return{stdout:e,stderr:``,exitCode:0}}function V(e){return{stdout:``,stderr:`serial: ${e}\n`,exitCode:1}}const Kx=`serial - access serial ports via Web Serial
758
753
 
759
754
  Usage: serial <subcommand> [options]
760
755
 
@@ -773,7 +768,7 @@ Open flags:
773
768
  --parity none|even|odd --flow-control none|hardware --buffer-size N
774
769
 
775
770
  Read flags:
776
- --bytes N Stop after N bytes (default: ${li} cap)
771
+ --bytes N Stop after N bytes (default: ${oi} cap)
777
772
  --until <hex> Stop once this byte sequence is seen
778
773
  --timeout-ms N Stop after N ms (default 1000)
779
774
  --hex Hex-dump the bytes instead of emitting raw
@@ -784,10 +779,10 @@ Signal flags (set):
784
779
  Options:
785
780
  -h, --help
786
781
 
787
- Reads/writes are capped at ${li} bytes (4 MiB).
788
- `;function gS(e,t){if(t)return B(e.length?`${dS(e)}\n`:``);let n=``;for(let t=0;t<e.length;t++)n+=String.fromCharCode(e[t]);return B(n)}async function _S(e){let t=await e.list();return t.length===0?B(`no granted serial ports
789
- `):B(`${t.map(pS).join(`
790
- `)}\n`)}async function vS(e,t){let n=e.get(`--__resolved`);if(n)return B(`${pS(await t.info(n))}\n`);let r=rS(e),i=je();if(i){let e=await $x(`serial-port`,r,i);if(e.handle)return B(`${pS(await t.info(e.handle))}\n`);let n=e.info,a=ei();if(!a)return V(`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 V(`request: granted port could not be re-acquired`);let s=oi(),c=s.register(o),l=s.get(c);return l?B(`${pS($r(c,l))}\n`):V(`request: failed to register granted port`)}return B(`${pS(await t.request(r))}\n`)}async function yS(e,t,n){let r=e[1];return r?(await n.open(r,oS(t)),B(``)):V(`open: handle required`)}async function bS(e,t){let n=e[1];return n?(await t.close(n),B(``)):V(`close: handle required`)}async function xS(e,t,n,r){let i=e[1];if(!i)return V(`read: handle required`);let a=sS(t);return a.maxBytes!==void 0&&a.maxBytes>4194304?V(`read --bytes exceeds 4 MiB limit`):gS(await r.read(i,a),n.has(`--hex`))}async function SS(e,t,n){let r=e[1];if(!r)return V(`write: handle required`);let i=uS(t);return i.length>4194304?V(`write payload exceeds 4 MiB limit`):B(`${await n.write(r,i)} bytes written\n`)}async function CS(e,t,n){let[,r,i]=e;return!r||!i?V(`signals: handle and get|set required`):i===`get`?B(mS(await n.getSignals(r))):i===`set`?(await n.setSignals(r,lS(t)),B(``)):V(`signals: unknown action '${i}' (use get|set)`)}async function wS(e,t,n){let{positionals:r,flags:i,bools:a}=tS(e),o=r[0];switch(o){case`list`:return _S(n);case`request`:return vS(i,n);case`open`:return yS(r,i,n);case`close`:return bS(r,n);case`read`:return xS(r,i,a,n);case`write`:return SS(r,t,n);case`signals`:return CS(r,i,n);default:return V(`unknown subcommand '${o??``}'. Try 'serial --help'.`)}}function TS(){return S(`serial`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return B(hS);let n=ri(de(),y());if(!n)return V(`Web Serial is unavailable in this environment`);try{return await wS(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?V(`user cancelled or no port selected`):V(t)}})}const ES=new Set([`--port`,`--baud`,`--vid`,`--pid`]),DS=115200;function OS(e){return Pn(e,ES)}function kS(e){let t=e.replace(/-/g,`_`);return t===`chip_info`||t===`id`?`chip_id`:t}function AS(e){return{stdout:e,stderr:``,exitCode:0}}function jS(e){return{stdout:``,stderr:`esptool: ${e}\n`,exitCode:1}}const MS=`esptool - flash ESP32 / ESP8266 chips via esptool-js
782
+ Reads/writes are capped at ${oi} bytes (4 MiB).
783
+ `;function qx(e,t){if(t)return B(e.length?`${Hx(e)}\n`:``);let n=``;for(let t=0;t<e.length;t++)n+=String.fromCharCode(e[t]);return B(n)}async function Jx(e){let t=await e.list();return t.length===0?B(`no granted serial ports
784
+ `):B(`${t.map(Wx).join(`
785
+ `)}\n`)}async function Yx(e,t){let n=e.get(`--__resolved`);if(n)return B(`${Wx(await t.info(n))}\n`);let r=Px(e),i=je();if(i){let e=await Ax(`serial-port`,r,i);if(e.handle)return B(`${Wx(await t.info(e.handle))}\n`);let n=e.info,a=Zr();if(!a)return V(`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 V(`request: granted port could not be re-acquired`);let s=ri(),c=s.register(o),l=s.get(c);return l?B(`${Wx(Xr(c,l))}\n`):V(`request: failed to register granted port`)}return B(`${Wx(await t.request(r))}\n`)}async function Xx(e,t,n){let r=e[1];return r?(await n.open(r,Lx(t)),B(``)):V(`open: handle required`)}async function Zx(e,t){let n=e[1];return n?(await t.close(n),B(``)):V(`close: handle required`)}async function Qx(e,t,n,r){let i=e[1];if(!i)return V(`read: handle required`);let a=Rx(t);return a.maxBytes!==void 0&&a.maxBytes>4194304?V(`read --bytes exceeds 4 MiB limit`):qx(await r.read(i,a),n.has(`--hex`))}async function $x(e,t,n){let r=e[1];if(!r)return V(`write: handle required`);let i=Vx(t);return i.length>4194304?V(`write payload exceeds 4 MiB limit`):B(`${await n.write(r,i)} bytes written\n`)}async function eS(e,t,n){let[,r,i]=e;return!r||!i?V(`signals: handle and get|set required`):i===`get`?B(Gx(await n.getSignals(r))):i===`set`?(await n.setSignals(r,Bx(t)),B(``)):V(`signals: unknown action '${i}' (use get|set)`)}async function tS(e,t,n){let{positionals:r,flags:i,bools:a}=Mx(e),o=r[0];switch(o){case`list`:return Jx(n);case`request`:return Yx(i,n);case`open`:return Xx(r,i,n);case`close`:return Zx(r,n);case`read`:return Qx(r,i,a,n);case`write`:return $x(r,t,n);case`signals`:return eS(r,i,n);default:return V(`unknown subcommand '${o??``}'. Try 'serial --help'.`)}}function nS(){return S(`serial`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return B(Kx);let n=ei(de(),y());if(!n)return V(`Web Serial is unavailable in this environment`);try{return await tS(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?V(`user cancelled or no port selected`):V(t)}})}const rS=new Set([`--port`,`--baud`,`--vid`,`--pid`]),iS=115200;function aS(e){return jn(e,rS)}function oS(e){let t=e.replace(/-/g,`_`);return t===`chip_info`||t===`id`?`chip_id`:t}function sS(e){return{stdout:e,stderr:``,exitCode:0}}function cS(e){return{stdout:``,stderr:`esptool: ${e}\n`,exitCode:1}}const lS=`esptool - flash ESP32 / ESP8266 chips via esptool-js
791
786
 
792
787
  Usage: esptool [--port H] [--baud N] <subcommand> [args]
793
788
 
@@ -804,37 +799,37 @@ Subcommands:
804
799
 
805
800
  Options:
806
801
  --port H Use an existing serial handle from 'serial request'
807
- --baud N Flash baud rate (default ${DS})
802
+ --baud N Flash baud rate (default ${iS})
808
803
  --vid 0x.. Picker filter when --port is omitted
809
804
  --pid 0x.. Picker filter when --port is omitted
810
805
  --erase write_flash: erase the whole chip before writing
811
806
  -h, --help
812
807
 
813
808
  Without --port, the Web Serial picker opens (asks for permission).
814
- `;async function NS(e,t){return e.get(`--port`)||(await t.request(rS(e))).handle}async function PS(e,t){let n=e.slice(1);if(n.length===0||n.length%2!=0)throw Error(`write_flash expects <addr> <file> pairs`);let r=[];for(let e=0;e<n.length;e+=2){let i=z(n[e],`address`),a=t.fs.resolvePath(t.cwd,n[e+1]),o=await t.fs.readFileBuffer(a);r.push({address:i,data:o})}return r}async function FS(e,t,n,r){let{positionals:i,flags:a,bools:o}=OS(e),s=kS(i[0]??``),c=a.has(`--baud`)?z(a.get(`--baud`),`baud`):DS,l=[],u=e=>l.push(e);switch(s){case`chip_id`:{let e=await NS(a,r),t=await n.chipInfo(e,c,u);return l.push(`Chip type: ${t.chip}`),l.push(`Chip description: ${t.description}`),l.push(`Features: ${t.features.join(`, `)}`),l.push(`Crystal: ${t.crystalMHz}MHz`),l.push(`MAC: ${t.mac}`),AS(`${l.join(`
815
- `)}\n`)}case`read_mac`:{let e=await NS(a,r),{mac:t}=await n.readMac(e,c,u);return l.push(`MAC: ${t}`),AS(`${l.join(`
816
- `)}\n`)}case`erase_flash`:{let e=await NS(a,r);return await n.eraseFlash(e,c,u),AS(l.length?`${l.join(`
809
+ `;async function uS(e,t){return e.get(`--port`)||(await t.request(Px(e))).handle}async function dS(e,t){let n=e.slice(1);if(n.length===0||n.length%2!=0)throw Error(`write_flash expects <addr> <file> pairs`);let r=[];for(let e=0;e<n.length;e+=2){let i=z(n[e],`address`),a=t.fs.resolvePath(t.cwd,n[e+1]),o=await t.fs.readFileBuffer(a);r.push({address:i,data:o})}return r}async function fS(e,t,n,r){let{positionals:i,flags:a,bools:o}=aS(e),s=oS(i[0]??``),c=a.has(`--baud`)?z(a.get(`--baud`),`baud`):iS,l=[],u=e=>l.push(e);switch(s){case`chip_id`:{let e=await uS(a,r),t=await n.chipInfo(e,c,u);return l.push(`Chip type: ${t.chip}`),l.push(`Chip description: ${t.description}`),l.push(`Features: ${t.features.join(`, `)}`),l.push(`Crystal: ${t.crystalMHz}MHz`),l.push(`MAC: ${t.mac}`),sS(`${l.join(`
810
+ `)}\n`)}case`read_mac`:{let e=await uS(a,r),{mac:t}=await n.readMac(e,c,u);return l.push(`MAC: ${t}`),sS(`${l.join(`
811
+ `)}\n`)}case`erase_flash`:{let e=await uS(a,r);return await n.eraseFlash(e,c,u),sS(l.length?`${l.join(`
817
812
  `)}\n`:`flash erased
818
- `)}case`write_flash`:{let e=await PS(i,t),s=await NS(a,r);return await n.flash(s,c,o.has(`--erase`),e,u),AS(l.length?`${l.join(`
813
+ `)}case`write_flash`:{let e=await dS(i,t),s=await uS(a,r);return await n.flash(s,c,o.has(`--erase`),e,u),sS(l.length?`${l.join(`
819
814
  `)}\n`:`flash written
820
- `)}case`read_flash`:{if(i.length<4)return jS(`read_flash expects <addr> <size> <outfile>`);let e=z(i[1],`address`),o=z(i[2],`size`),s=t.fs.resolvePath(t.cwd,i[3]),d=await NS(a,r),f=await n.readFlash(d,c,e,o,u);return await t.fs.writeFile(s,f),l.push(`Wrote ${f.byteLength} bytes to ${s}`),AS(`${l.join(`
821
- `)}\n`)}case`read_reg`:{if(i.length<2)return jS(`read_reg expects <addr>`);let e=z(i[1],`address`),t=await NS(a,r),{value:o}=await n.readReg(t,c,e,u);return l.push(`0x${e.toString(16)} = 0x${(o>>>0).toString(16).padStart(8,`0`)}`),AS(`${l.join(`
822
- `)}\n`)}case`flash_id`:{let e=await NS(a,r),t=await n.flashId(e,c,u);return l.push(`Manufacturer: 0x${t.manufacturer.toString(16).padStart(2,`0`)}`),l.push(`Device: 0x${t.device.toString(16).padStart(4,`0`)}`),l.push(`Detected flash size: ${t.flashSize??`unknown`}`),AS(`${l.join(`
823
- `)}\n`)}case`erase_region`:{if(i.length<3)return jS(`erase_region expects <addr> <size>`);let e=z(i[1],`address`),t=z(i[2],`size`),o=await NS(a,r);return await n.eraseRegion(o,c,e,t,u),AS(l.length?`${l.join(`
815
+ `)}case`read_flash`:{if(i.length<4)return cS(`read_flash expects <addr> <size> <outfile>`);let e=z(i[1],`address`),o=z(i[2],`size`),s=t.fs.resolvePath(t.cwd,i[3]),d=await uS(a,r),f=await n.readFlash(d,c,e,o,u);return await t.fs.writeFile(s,f),l.push(`Wrote ${f.byteLength} bytes to ${s}`),sS(`${l.join(`
816
+ `)}\n`)}case`read_reg`:{if(i.length<2)return cS(`read_reg expects <addr>`);let e=z(i[1],`address`),t=await uS(a,r),{value:o}=await n.readReg(t,c,e,u);return l.push(`0x${e.toString(16)} = 0x${(o>>>0).toString(16).padStart(8,`0`)}`),sS(`${l.join(`
817
+ `)}\n`)}case`flash_id`:{let e=await uS(a,r),t=await n.flashId(e,c,u);return l.push(`Manufacturer: 0x${t.manufacturer.toString(16).padStart(2,`0`)}`),l.push(`Device: 0x${t.device.toString(16).padStart(4,`0`)}`),l.push(`Detected flash size: ${t.flashSize??`unknown`}`),sS(`${l.join(`
818
+ `)}\n`)}case`erase_region`:{if(i.length<3)return cS(`erase_region expects <addr> <size>`);let e=z(i[1],`address`),t=z(i[2],`size`),o=await uS(a,r);return await n.eraseRegion(o,c,e,t,u),sS(l.length?`${l.join(`
824
819
  `)}\n`:`region erased
825
- `)}case`run`:{let e=await NS(a,r);return await n.run(e,c,u),AS(l.length?`${l.join(`
820
+ `)}case`run`:{let e=await uS(a,r);return await n.run(e,c,u),sS(l.length?`${l.join(`
826
821
  `)}\n`:`running app
827
- `)}default:return jS(`unknown subcommand '${i[0]??``}'. Try 'esptool --help'.`)}}function IS(){return S(`esptool`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return AS(MS);let n=de(),r=y(),i=Zx(n,r),a=ri(n,r);if(!i||!a)return jS(`Web Serial is unavailable in this environment`);try{return await FS(e,t,i,a)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?jS(`user cancelled or no port selected`):jS(t)}})}function LS(){return S(`ffmpeg`,async(e,t)=>{let{runFfmpeg:n}=await import(`./run-dcwnpB-U.js`);return n(e,t)})}function RS(){return S(`ffprobe`,async(e,t)=>{let{runFfprobe:n}=await import(`./run-yplzwsG-.js`);return n(e,t)})}function zS(e){let t=fe().find(t=>t.id===e);return t?t.id:null}function BS(){return fe().map(e=>e.id)}function VS(e){return me(e)}function HS(e,t){if(pe(e,t),ge()[e]!==t)throw Error(`flag ${e} cannot be overridden on this float`)}function US(e){let t=globalThis.localStorage;if(!t||typeof t.setItem!=`function`)throw Error(`this realm has no localStorage to apply the override`);t.setItem(_e,e)}const WS=`usage: flags set <id> on|off
822
+ `)}default:return cS(`unknown subcommand '${i[0]??``}'. Try 'esptool --help'.`)}}function pS(){return S(`esptool`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return sS(lS);let n=de(),r=y(),i=Ox(n,r),a=ei(n,r);if(!i||!a)return cS(`Web Serial is unavailable in this environment`);try{return await fS(e,t,i,a)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?cS(`user cancelled or no port selected`):cS(t)}})}function mS(){return S(`ffmpeg`,async(e,t)=>{let{runFfmpeg:n}=await import(`./run-dcwnpB-U.js`);return n(e,t)})}function hS(){return S(`ffprobe`,async(e,t)=>{let{runFfprobe:n}=await import(`./run-yplzwsG-.js`);return n(e,t)})}function gS(e){let t=fe().find(t=>t.id===e);return t?t.id:null}function _S(){return fe().map(e=>e.id)}function vS(e){return me(e)}function yS(e,t){if(pe(e,t),ge()[e]!==t)throw Error(`flag ${e} cannot be overridden on this float`)}function bS(e){let t=globalThis.localStorage;if(!t||typeof t.setItem!=`function`)throw Error(`this realm has no localStorage to apply the override`);t.setItem(_e,e)}const xS=`usage: flags set <id> on|off
828
823
  flags get <id>
829
824
 
830
825
  set <id> on|off Persist a local override. The next new session reads it.
831
826
  get <id> Print the resolved value
832
- `;function GS(e){return{stdout:``,stderr:`${e}\n`,exitCode:1}}function KS(){return`known flags: ${BS().join(`, `)}\n`}async function qS(e,t){let n=y();if(n&&!de()){let{overridesJson:r}=await n.call(`feature-flag-set`,{id:e,value:t});US(r)}else HS(e,t);if(VS(e)!==t)throw Error(`flag ${e} is ${VS(e)??`unset`} after set`)}async function JS(e){if(e.length!==2)return GS(`usage: flags set <id> on|off`);let t=zS(e[0]);if(!t)return GS(`flags: unknown flag ${e[0]}\n${KS().trimEnd()}`);let n=e[1].toLowerCase();if(n!==`on`&&n!==`off`)return GS(`flags set: value must be on or off`);try{await qS(t,n)}catch(e){return GS(`flags set: ${e instanceof Error?e.message:String(e)}`)}return{stdout:`${t}=${n}\n`,stderr:``,exitCode:0}}function YS(e){if(e.length!==1)return GS(`usage: flags get <id>`);let t=zS(e[0]);if(!t)return GS(`flags: unknown flag ${e[0]}\n${KS().trimEnd()}`);let n=VS(t);return n===void 0?GS(`flags: ${t} has no value`):{stdout:`${n}\n`,stderr:``,exitCode:0}}function XS(){return S(`flags`,async e=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return{stdout:WS,stderr:``,exitCode:0};let t=e[0];if(w(e.slice(1)))return{stdout:lt(`flags`,t,WS),stderr:``,exitCode:0};switch(t){case`set`:return JS(e.slice(1));case`get`:return YS(e.slice(1));default:return GS(`flags: unknown subcommand "${t}"\nusage: flags set <id> on|off
827
+ `;function SS(e){return{stdout:``,stderr:`${e}\n`,exitCode:1}}function CS(){return`known flags: ${_S().join(`, `)}\n`}async function wS(e,t){let n=y();if(n&&!de()){let{overridesJson:r}=await n.call(`feature-flag-set`,{id:e,value:t});bS(r)}else yS(e,t);if(vS(e)!==t)throw Error(`flag ${e} is ${vS(e)??`unset`} after set`)}async function TS(e){if(e.length!==2)return SS(`usage: flags set <id> on|off`);let t=gS(e[0]);if(!t)return SS(`flags: unknown flag ${e[0]}\n${CS().trimEnd()}`);let n=e[1].toLowerCase();if(n!==`on`&&n!==`off`)return SS(`flags set: value must be on or off`);try{await wS(t,n)}catch(e){return SS(`flags set: ${e instanceof Error?e.message:String(e)}`)}return{stdout:`${t}=${n}\n`,stderr:``,exitCode:0}}function ES(e){if(e.length!==1)return SS(`usage: flags get <id>`);let t=gS(e[0]);if(!t)return SS(`flags: unknown flag ${e[0]}\n${CS().trimEnd()}`);let n=vS(t);return n===void 0?SS(`flags: ${t} has no value`):{stdout:`${n}\n`,stderr:``,exitCode:0}}function DS(){return S(`flags`,async e=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return{stdout:xS,stderr:``,exitCode:0};let t=e[0];if(w(e.slice(1)))return{stdout:ot(`flags`,t,xS),stderr:``,exitCode:0};switch(t){case`set`:return TS(e.slice(1));case`get`:return ES(e.slice(1));default:return SS(`flags: unknown subcommand "${t}"\nusage: flags set <id> on|off
833
828
  flags get <id>
834
829
 
835
830
  set <id> on|off Persist a local override. The next new session reads it.
836
- get <id> Print the resolved value`)}})}const ZS=new Map;let QS=0;const $S=e=>({stdout:e,stderr:``,exitCode:0}),eC=e=>({stdout:``,stderr:`fswatch: ${e}\n`,exitCode:1}),tC=[`--path`,`--pattern`,`--scoop`,`--name`];function nC(e){let t=C(e.slice(1),{});if(`error`in t)return eC(t.error);if(ZS.size===0)return $S(`No active file watchers.
837
- `);let n=``;for(let[,e]of ZS)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 $S(n)}function rC(e){let t=C(e.slice(1),{});if(`error`in t)return eC(t.error);let n=t.positionals[0];if(!n)return eC(`delete requires an ID`);let r=ZS.get(n);return r?(r.unsubscribe(),ZS.delete(n),$S(`Deleted watcher "${r.name}" (${n})\n`)):eC(`watcher not found: ${n}`)}function iC(e){let t=C(e.slice(1),{value:tC});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 aC(e){let t=RegExp(`^`+e.replace(/\./g,`\\.`).replace(/\*/g,`.*`)+`$`);return e=>t.test(e.split(`/`).pop()??``)}async function oC(e,t){let n=iC(e);if(`error`in n)return eC(n.error);let r=n,i=r.scoop||void 0;if(r.scoop=ia(r.scoop,t)??``,!r.basePath||!r.pattern)return eC(`--path and --pattern are required`);let a=await My(await Ay(),`fswatch create`,i);if(a)return{stdout:``,stderr:a,exitCode:1};let o=globalThis,s=o.__slicc_fs_watcher;if(!s)return eC(`file system watcher not available`);let c=`fsw-${++QS}`,l=r.name||`${r.pattern} in ${r.basePath}`,u=o.__slicc_lick_handler,d=s.watch(r.basePath,aC(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}})});ZS.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`),$S(f)}function sC(){return S(`fswatch`,async(e,t)=>{let n=e[0];if(!n||w(e,{valueFlags:tC}))return $S(`usage: fswatch <command> [options]
831
+ get <id> Print the resolved value`)}})}const OS=new Map;let kS=0;const AS=e=>({stdout:e,stderr:``,exitCode:0}),jS=e=>({stdout:``,stderr:`fswatch: ${e}\n`,exitCode:1}),MS=[`--path`,`--pattern`,`--scoop`,`--name`];function NS(e){let t=C(e.slice(1),{});if(`error`in t)return jS(t.error);if(OS.size===0)return AS(`No active file watchers.
832
+ `);let n=``;for(let[,e]of OS)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 AS(n)}function PS(e){let t=C(e.slice(1),{});if(`error`in t)return jS(t.error);let n=t.positionals[0];if(!n)return jS(`delete requires an ID`);let r=OS.get(n);return r?(r.unsubscribe(),OS.delete(n),AS(`Deleted watcher "${r.name}" (${n})\n`)):jS(`watcher not found: ${n}`)}function FS(e){let t=C(e.slice(1),{value:MS});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 IS(e){let t=RegExp(`^`+e.replace(/\./g,`\\.`).replace(/\*/g,`.*`)+`$`);return e=>t.test(e.split(`/`).pop()??``)}async function LS(e,t){let n=FS(e);if(`error`in n)return jS(n.error);let r=n,i=r.scoop||void 0;if(r.scoop=ta(r.scoop,t)??``,!r.basePath||!r.pattern)return jS(`--path and --pattern are required`);let a=await ly(await sy(),`fswatch create`,i);if(a)return{stdout:``,stderr:a,exitCode:1};let o=globalThis,s=o.__slicc_fs_watcher;if(!s)return jS(`file system watcher not available`);let c=`fsw-${++kS}`,l=r.name||`${r.pattern} in ${r.basePath}`,u=o.__slicc_lick_handler,d=s.watch(r.basePath,IS(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}})});OS.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`),AS(f)}function RS(){return S(`fswatch`,async(e,t)=>{let n=e[0];if(!n||w(e,{valueFlags:MS}))return AS(`usage: fswatch <command> [options]
838
833
 
839
834
  Commands:
840
835
  create --path <path> --pattern <glob> [--scoop <name>] [--name <name>] Watch for file changes
@@ -846,7 +841,7 @@ Options:
846
841
  --pattern <glob> File pattern to match, e.g. "*.md", "*.bsh" (required)
847
842
  --scoop <target> Scoop name, cone name, or folder. Omit for your own cone.
848
843
  --name <name> Human-readable name for the watcher
849
- `);switch(n){case`list`:return nC(e);case`delete`:return rC(e);case`create`:return await oC(e,t.env);default:return eC(`unknown command: ${n}`)}})}function cC(e){return S(`gelatiere`,async(t,n)=>{let{runGelatiere:r}=await import(`./run-ZVh0R1Qb.js`);return r(t,n,e)})}function lC(e={}){return S(`go`,async(t,n)=>{let{runGoCommand:r}=await import(`./go-driver-CKhlxhTD.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}function uC(){return{stdout:`usage: hear [-i file] [-l lang] [-T seconds] [-d deviceId] [--engine name]
844
+ `);switch(n){case`list`:return NS(e);case`delete`:return PS(e);case`create`:return await LS(e,t.env);default:return jS(`unknown command: ${n}`)}})}function zS(e){return S(`gelatiere`,async(t,n)=>{let{runGelatiere:r}=await import(`./run-ZVh0R1Qb.js`);return r(t,n,e)})}function BS(e={}){return S(`go`,async(t,n)=>{let{runGoCommand:r}=await import(`./go-driver-CKhlxhTD.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}function VS(){return{stdout:`usage: hear [-i file] [-l lang] [-T seconds] [-d deviceId] [--engine name]
850
845
  hear --devices | --status | --warmup
851
846
 
852
847
  Speech recognition: listens on the microphone until you pause, then
@@ -865,26 +860,26 @@ Options:
865
860
  --devices List audio input devices
866
861
  --status Show the enhanced model state (downloading/ready + ETA)
867
862
  --warmup Start the enhanced model download in the background
868
- `,stderr:``,exitCode:0}}const dC={"--devices":`devices`,"--status":`status`,"--warmup":`warmup`},fC={"-i":`a file path`,"-l":`a language tag`,"-T":`a timeout in seconds`,"-d":`a device id`,"--engine":`an engine name`};function pC(e,t,n){switch(t){case`-i`:return e.inputFile=n,null;case`-l`:return e.lang=n,null;case`-d`:return e.deviceId=n,null;case`-T`:{let t=Number.parseFloat(n);return Number.isNaN(t)||t<=0||t>600?`-T requires a timeout between 0 and 600 seconds`:(e.timeoutSeconds=t,null)}case`--engine`:return n!==`builtin`&&n!==`enhanced`?`--engine must be builtin or enhanced`:(e.engine=n,null);default:return`unknown option: ${t}`}}function mC(e){let t={inputFile:null,lang:void 0,timeoutSeconds:30,deviceId:void 0,engine:`auto`,devices:!1,status:!1,warmup:!1};for(let n=0;n<e.length;n++){let r=e[n],i=dC[r];if(i){t[i]=!0;continue}if(!(r in fC))return H(`unknown option: ${r}`);let a=n+1<e.length?e[++n]:null;if(a==null)return H(`${r} requires ${fC[r]}`);let o=pC(t,r,a);if(o)return H(o)}return t}function hC(e){switch(e.state){case`ready`:return`enhanced engine: ready
863
+ `,stderr:``,exitCode:0}}const HS={"--devices":`devices`,"--status":`status`,"--warmup":`warmup`},US={"-i":`a file path`,"-l":`a language tag`,"-T":`a timeout in seconds`,"-d":`a device id`,"--engine":`an engine name`};function WS(e,t,n){switch(t){case`-i`:return e.inputFile=n,null;case`-l`:return e.lang=n,null;case`-d`:return e.deviceId=n,null;case`-T`:{let t=Number.parseFloat(n);return Number.isNaN(t)||t<=0||t>600?`-T requires a timeout between 0 and 600 seconds`:(e.timeoutSeconds=t,null)}case`--engine`:return n!==`builtin`&&n!==`enhanced`?`--engine must be builtin or enhanced`:(e.engine=n,null);default:return`unknown option: ${t}`}}function GS(e){let t={inputFile:null,lang:void 0,timeoutSeconds:30,deviceId:void 0,engine:`auto`,devices:!1,status:!1,warmup:!1};for(let n=0;n<e.length;n++){let r=e[n],i=HS[r];if(i){t[i]=!0;continue}if(!(r in US))return H(`unknown option: ${r}`);let a=n+1<e.length?e[++n]:null;if(a==null)return H(`${r} requires ${US[r]}`);let o=WS(t,r,a);if(o)return H(o)}return t}function KS(e){switch(e.state){case`ready`:return`enhanced engine: ready
869
864
  `;case`failed`:return`enhanced engine: failed (re-run hear --warmup to retry)
870
865
  `;case`idle`:return`enhanced engine: not downloaded (run hear --warmup)
871
- `;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 H(e){return{stdout:``,stderr:`hear: ${e}\n`,exitCode:1}}function gC(e){return e instanceof Error?e.message:String(e)}function _C(e){let t=e.map((e,t)=>`${e.deviceId}\t${e.label||`Microphone ${t+1}`}`);return t.join(`
866
+ `;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 H(e){return{stdout:``,stderr:`hear: ${e}\n`,exitCode:1}}function qS(e){return e instanceof Error?e.message:String(e)}function JS(e){let t=e.map((e,t)=>`${e.deviceId}\t${e.label||`Microphone ${t+1}`}`);return t.join(`
872
867
  `)+(t.length?`
873
- `:``)}async function vC(e){try{return e.local?navigator.mediaDevices?.enumerateDevices?{stdout:_C((await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)),stderr:``,exitCode:0}:H(`device enumeration unavailable`):{stdout:_C((await e.panelRpc.call(`enumerate-media-devices`,void 0)).audioinputs),stderr:``,exitCode:0}}catch(e){return H(gC(e))}}async function yC(e,t){try{if(e.local){let{hearStatus:e,hearWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:hC(t?n():e()),stderr:``,exitCode:0}}return{stdout:hC(t?await e.panelRpc.call(`hear-warmup`,void 0):await e.panelRpc.call(`hear-status`,void 0)),stderr:``,exitCode:0}}catch(e){return H(gC(e))}}function bC(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function xC(e,t,n,r){if(n.byteLength===0)return H(`no audio on ${r}`);let i=bC(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+`
874
- `,stderr:``,exitCode:0}}catch(e){return H(`transcription failed: ${gC(e)}`)}}async function SC(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 H(`cannot open ${r}: No such file`)}let o=hr(i);return!o.startsWith(`audio/`)&&!o.startsWith(`video/`)?H(`${r} is not an audio file`):xC(e,t,a,r)}async function CC(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+`
868
+ `:``)}async function YS(e){try{return e.local?navigator.mediaDevices?.enumerateDevices?{stdout:JS((await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)),stderr:``,exitCode:0}:H(`device enumeration unavailable`):{stdout:JS((await e.panelRpc.call(`enumerate-media-devices`,void 0)).audioinputs),stderr:``,exitCode:0}}catch(e){return H(qS(e))}}async function XS(e,t){try{if(e.local){let{hearStatus:e,hearWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:KS(t?n():e()),stderr:``,exitCode:0}}return{stdout:KS(t?await e.panelRpc.call(`hear-warmup`,void 0):await e.panelRpc.call(`hear-status`,void 0)),stderr:``,exitCode:0}}catch(e){return H(qS(e))}}function ZS(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function QS(e,t,n,r){if(n.byteLength===0)return H(`no audio on ${r}`);let i=ZS(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+`
869
+ `,stderr:``,exitCode:0}}catch(e){return H(`transcription failed: ${qS(e)}`)}}async function $S(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 H(`cannot open ${r}: No such file`)}let o=fr(i);return!o.startsWith(`audio/`)&&!o.startsWith(`video/`)?H(`${r} is not an audio file`):QS(e,t,a,r)}async function eC(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+`
875
870
  `,stderr:``,exitCode:0}:{stdout:``,stderr:`hear: no speech detected
876
- `,exitCode:1}}catch(e){return H(gC(e))}}function wC(){return S(`hear`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return uC();let n=mC(e);if(`exitCode`in n)return n;let r={local:de(),panelRpc:y()};if(!r.local&&!r.panelRpc)return H(`speech recognition unavailable in this environment`);if(n.devices)return vC(r);if(n.status||n.warmup)return yC(r,n.warmup);if(n.inputFile&&n.inputFile!==`-`)return SC(r,n,t);let i=xi(t.stdin);return n.inputFile===`-`||n.deviceId==null&&!ar(t,i.byteLength)?xC(r,n,i,`stdin`):CC(r,n)})}function TC(e,t,n){return typeof e.onSessionReplaced==`function`?e.onSessionReplaced(t,n):()=>void 0}function EC(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=TC(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 DC=[`debug`,`log`,`info`,`warning`,`error`],OC=1e3,kC={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 AC(e,t,n,r,i){if(t.consoleCleanup.has(r))return;t.consoleMessages.set(r,[]);let a=EC({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=kC[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>OC&&c.splice(0,c.length-OC))}]],enable:(e,t)=>e.send(`Runtime.enable`,{},t)});t.consoleCleanup.set(r,()=>a.stop())}const jC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0]??`log`,s=r.clear===`true`,c=DC.indexOf(o);if(c===-1)return{stdout:``,stderr:`Invalid level "${o}". Valid: ${DC.join(`, `)}\n`,exitCode:1};t.consoleCleanup.has(a.targetId)||await i(a.targetId,async({sessionId:n,transport:r})=>{await r.send(`Runtime.enable`,{},n),AC(e,t,r,a.targetId,n)});let l=(t.consoleMessages.get(a.targetId)??[]).filter(e=>DC.indexOf(e.level)>=c);return s&&t.consoleMessages.set(a.targetId,[]),l.length===0?{stdout:`No console messages
871
+ `,exitCode:1}}catch(e){return H(qS(e))}}function tC(){return S(`hear`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return VS();let n=GS(e);if(`exitCode`in n)return n;let r={local:de(),panelRpc:y()};if(!r.local&&!r.panelRpc)return H(`speech recognition unavailable in this environment`);if(n.devices)return YS(r);if(n.status||n.warmup)return XS(r,n.warmup);if(n.inputFile&&n.inputFile!==`-`)return $S(r,n,t);let i=vi(t.stdin);return n.inputFile===`-`||n.deviceId==null&&!nr(t,i.byteLength)?QS(r,n,i,`stdin`):eC(r,n)})}function nC(e,t,n){return typeof e.onSessionReplaced==`function`?e.onSessionReplaced(t,n):()=>void 0}function rC(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=nC(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 iC=[`debug`,`log`,`info`,`warning`,`error`],aC=1e3,oC={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 sC(e,t,n,r,i){if(t.consoleCleanup.has(r))return;t.consoleMessages.set(r,[]);let a=rC({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=oC[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>aC&&c.splice(0,c.length-aC))}]],enable:(e,t)=>e.send(`Runtime.enable`,{},t)});t.consoleCleanup.set(r,()=>a.stop())}const cC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0]??`log`,s=r.clear===`true`,c=iC.indexOf(o);if(c===-1)return{stdout:``,stderr:`Invalid level "${o}". Valid: ${iC.join(`, `)}\n`,exitCode:1};t.consoleCleanup.has(a.targetId)||await i(a.targetId,async({sessionId:n,transport:r})=>{await r.send(`Runtime.enable`,{},n),sC(e,t,r,a.targetId,n)});let l=(t.consoleMessages.get(a.targetId)??[]).filter(e=>iC.indexOf(e.level)>=c);return s&&t.consoleMessages.set(a.targetId,[]),l.length===0?{stdout:`No console messages
877
872
  `,stderr:``,exitCode:0}:{stdout:l.map(e=>`[${e.level}] ${e.text}`).join(`
878
873
  `)+`
879
- `,stderr:``,exitCode:0}};function MC(e){return e.cookies??[]}function NC(e){return`${e.name}=${e.value}\tDomain=${e.domain}\tPath=${e.path}\tSecure=${e.secure}\tHttpOnly=${e.httpOnly}\tExpires=${e.expires}`}function PC(e){return{name:e.name,value:e.value,...e.domain===void 0?{}:{domain:e.domain},...e.path===void 0?{}:{path:e.path},...e.secure===void 0?{}:{secure:e.secure},...e.httpOnly===void 0?{}:{httpOnly:e.httpOnly},...e.expires===void 0?{}:{expires:e.expires},...e.sameSite===void 0?{}:{sameSite:e.sameSite},...e.url===void 0?{}:{url:e.url}}}function FC(e){return{name:e.name,...e.domain===void 0?{}:{domain:e.domain},...e.path===void 0?{}:{path:e.path},...e.url===void 0?{}:{url:e.url}}}const IC=async({browser:e,flags:t,onTab:n})=>{let r=j(t);if(`error`in r)return{stdout:``,stderr:r.error,exitCode:1};let i=t.domain,a=t.path;return{stdout:await n(r.targetId,async e=>{let t=MC(await e.send(`Network.getCookies`)),n=i||a?t.filter(e=>(!i||String(e.domain??``).includes(i))&&(!a||String(e.path??``).startsWith(a))):t;return n.length===0?`No cookies`:n.map(NC).join(`
874
+ `,stderr:``,exitCode:0}};function lC(e){return e.cookies??[]}function uC(e){return`${e.name}=${e.value}\tDomain=${e.domain}\tPath=${e.path}\tSecure=${e.secure}\tHttpOnly=${e.httpOnly}\tExpires=${e.expires}`}function dC(e){return{name:e.name,value:e.value,...e.domain===void 0?{}:{domain:e.domain},...e.path===void 0?{}:{path:e.path},...e.secure===void 0?{}:{secure:e.secure},...e.httpOnly===void 0?{}:{httpOnly:e.httpOnly},...e.expires===void 0?{}:{expires:e.expires},...e.sameSite===void 0?{}:{sameSite:e.sameSite},...e.url===void 0?{}:{url:e.url}}}function fC(e){return{name:e.name,...e.domain===void 0?{}:{domain:e.domain},...e.path===void 0?{}:{path:e.path},...e.url===void 0?{}:{url:e.url}}}const pC=async({browser:e,flags:t,onTab:n})=>{let r=j(t);if(`error`in r)return{stdout:``,stderr:r.error,exitCode:1};let i=t.domain,a=t.path;return{stdout:await n(r.targetId,async e=>{let t=lC(await e.send(`Network.getCookies`)),n=i||a?t.filter(e=>(!i||String(e.domain??``).includes(i))&&(!a||String(e.path??``).startsWith(a))):t;return n.length===0?`No cookies`:n.map(uC).join(`
880
875
  `)})+`
881
- `,stderr:``,exitCode:0}},LC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`cookie-get requires a cookie name
882
- `,exitCode:1};let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0];return{stdout:await r(i.targetId,async e=>{let t=MC(await e.send(`Network.getCookies`)).filter(e=>e.name===a);if(t.length===0)throw Error(`Cookie "${a}" not found`);return t.map(NC).join(`
876
+ `,stderr:``,exitCode:0}},mC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`cookie-get requires a cookie name
877
+ `,exitCode:1};let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0];return{stdout:await r(i.targetId,async e=>{let t=lC(await e.send(`Network.getCookies`)).filter(e=>e.name===a);if(t.length===0)throw Error(`Cookie "${a}" not found`);return t.map(uC).join(`
883
878
  `)})+`
884
- `,stderr:``,exitCode:0}},RC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length<2)return{stdout:``,stderr:`cookie-set requires <name> <value>
885
- `,exitCode:1};let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{let r=await Zn(e),i={name:t[0],value:t[1]};n.domain&&(i.domain=n.domain),n.path&&(i.path=n.path),n.secure===`true`&&(i.secure=!0),n.httpOnly===`true`&&(i.httpOnly=!0),n.expires&&(i.expires=parseFloat(n.expires)),n.sameSite&&(i.sameSite=n.sameSite),!i.domain&&!i.path&&(i.url=r.href),await e.send(`Network.setCookie`,PC(i))}),{stdout:`Cookie "${t[0]}" set\n`,stderr:``,exitCode:0})},zC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`cookie-delete requires a cookie name
886
- `,exitCode:1};let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{let r={name:t[0]};n.domain&&(r.domain=n.domain),n.path&&(r.path=n.path),!r.domain&&!r.path&&(r.url=(await Zn(e)).href),await e.send(`Network.deleteCookies`,FC(r))}),{stdout:`Cookie "${t[0]}" deleted\n`,stderr:``,exitCode:0})},BC=async({browser:e,flags:t,onTab:n})=>{let r=j(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:(await n(r.targetId,async e=>{await e.send(`Network.clearBrowserCookies`)}),{stdout:`All cookies cleared
887
- `,stderr:``,exitCode:0})},VC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`generate-locator requires a ref (e.g. e5)
879
+ `,stderr:``,exitCode:0}},hC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length<2)return{stdout:``,stderr:`cookie-set requires <name> <value>
880
+ `,exitCode:1};let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{let r=await Jn(e),i={name:t[0],value:t[1]};n.domain&&(i.domain=n.domain),n.path&&(i.path=n.path),n.secure===`true`&&(i.secure=!0),n.httpOnly===`true`&&(i.httpOnly=!0),n.expires&&(i.expires=parseFloat(n.expires)),n.sameSite&&(i.sameSite=n.sameSite),!i.domain&&!i.path&&(i.url=r.href),await e.send(`Network.setCookie`,dC(i))}),{stdout:`Cookie "${t[0]}" set\n`,stderr:``,exitCode:0})},gC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`cookie-delete requires a cookie name
881
+ `,exitCode:1};let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{let r={name:t[0]};n.domain&&(r.domain=n.domain),n.path&&(r.path=n.path),!r.domain&&!r.path&&(r.url=(await Jn(e)).href),await e.send(`Network.deleteCookies`,fC(r))}),{stdout:`Cookie "${t[0]}" deleted\n`,stderr:``,exitCode:0})},_C=async({browser:e,flags:t,onTab:n})=>{let r=j(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:(await n(r.targetId,async e=>{await e.send(`Network.clearBrowserCookies`)}),{stdout:`All cookies cleared
882
+ `,stderr:``,exitCode:0})},vC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`generate-locator requires a ref (e.g. e5)
888
883
  `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=t.snapshots.get(a.targetId);if(!s)return{stdout:``,stderr:`No snapshot available. Run "snapshot" first.
889
884
  `,exitCode:1};let c=s.refToBackendNodeId.get(o);if(!c){let e=s.refToSelector.get(o);return e?{stdout:`page.locator(${JSON.stringify(e.split(`,`)[0].trim())})\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`Unknown ref "${o}"\n`,exitCode:1}}let l=``;return await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`DOM.enable`,{},e);let n=(await t.send(`DOM.resolveNode`,{backendNodeId:c},e)).object;if(!n?.objectId){let e=s.refToSelector.get(o)?.split(`,`)[0].trim()??``;l=`page.locator(${JSON.stringify(e)})`;return}let r=await t.send(`Runtime.callFunctionOn`,{objectId:n.objectId,functionDeclaration:`function() {
890
885
  const el = this;
@@ -896,7 +891,7 @@ Options:
896
891
  const id = el.id;
897
892
  return JSON.stringify({ testId, label, placeholder, id });
898
893
  }`,returnByValue:!0},e),i=JSON.parse(r.result?.value??`{}`);if(i.testId)l=`page.getByTestId(${JSON.stringify(i.testId)})`;else if(i.label)l=`page.getByLabel(${JSON.stringify(i.label)})`;else if(i.placeholder)l=`page.getByPlaceholder(${JSON.stringify(i.placeholder)})`;else if(i.id)l=`page.locator(${JSON.stringify(`#${i.id}`)})`;else{let e=s.refToSelector.get(o)?.split(`,`)[0].trim()??``;l=`page.locator(${JSON.stringify(e)})`}}),{stdout:l+`
899
- `,stderr:``,exitCode:0}},HC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=r.hide===`true`,s=r.style??`outline: 3px solid #ff4444; background: rgba(255, 68, 68, 0.1);`;if(o&&!n[0])return await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Runtime.evaluate`,{expression:`document.querySelectorAll('[data-slicc-highlight]').forEach(el => {
894
+ `,stderr:``,exitCode:0}},yC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=r.hide===`true`,s=r.style??`outline: 3px solid #ff4444; background: rgba(255, 68, 68, 0.1);`;if(o&&!n[0])return await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Runtime.evaluate`,{expression:`document.querySelectorAll('[data-slicc-highlight]').forEach(el => {
900
895
  el.style.outline = '';
901
896
  el.style.background = '';
902
897
  el.removeAttribute('data-slicc-highlight');
@@ -924,35 +919,35 @@ Options:
924
919
  el.style.cssText += '; ' + styleVal;
925
920
  el.setAttribute('data-slicc-highlight','1');
926
921
  }
927
- })()`;await t.send(`Runtime.evaluate`,{expression:r,returnByValue:!0},e)}}),{stdout:o?`Highlight removed from ${c}\n`:`Highlighted ${c}\n`,stderr:``,exitCode:0}},UC=async({browser:e,positional:t,flags:n,onTab:r})=>{let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t.length>0?t.join(` `):void 0;return await r(i.targetId,async e=>{await e.send(`Page.enable`),await e.send(`Page.handleJavaScriptDialog`,{accept:!0,...a===void 0?{}:{promptText:a}})}),{stdout:`Accepted dialog${a?` with "${a}"`:``}\n`,stderr:``,exitCode:0}},WC=async({browser:e,flags:t,onTab:n})=>{let r=j(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:(await n(r.targetId,async e=>{await e.send(`Page.enable`),await e.send(`Page.handleJavaScriptDialog`,{accept:!1})}),{stdout:`Dismissed dialog
928
- `,stderr:``,exitCode:0})};function GC(e){let t=e instanceof Error?e.message:String(e);return/SyntaxError/.test(t)}function KC(e){return/\bawait\b/.test(e)||/\breturn\b/.test(e)}async function qC(e,t){try{return await e(t)}catch(n){if(!GC(n)||!KC(t))throw n;try{return await e(`(async () => (\n${t}\n))()`)}catch(r){if(!GC(r))throw r;try{return await e(`(async () => {\n${t}\n})()`)}catch(e){throw GC(e)?n:e}}}}function JC(e,t){let n=t.filename,r=t.output;return n!==void 0&&r!==void 0?{error:`${e}: --filename and --output are aliases — pass one, not both\n`}:{path:n??r}}const YC=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`eval requires an expression
929
- `,exitCode:1};let a=JC(`eval`,r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};let s=n.join(` `),c=await i(o.targetId,async e=>{let t=await Qn(e,r),n=await qC(t?n=>e.evaluateInFrame(t.frameId,n,{world:`main`}):t=>e.evaluate(t),s);return typeof n==`string`?n:JSON.stringify(n,null,2)});return a.path?(await t.writeFile(a.path,c??`null`),{stdout:`Result saved to ${a.path}\n`,stderr:``,exitCode:0}):{stdout:(c??`undefined`)+`
930
- `,stderr:``,exitCode:0}},XC=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`eval-file requires a file path
931
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=JC(`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 Qn(e,r),n=await qC(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`)+`
932
- `,stderr:``,exitCode:0}};function ZC(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 QC(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 $C(e,t,n){let r=``;try{r=new URL(e).hostname}catch{return{}}let i=r?uh(r):``;if(!i)return{};let a;try{a=await ph(n)}catch(e){return{warning:`playwright-cli: warning: browse.sh catalog unavailable: ${e instanceof Error?e.message:String(e)}`}}let o=await QC(t),s=[];for(let e of a){if(!e.hostname||uh(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 ew(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 _x(o,{fetchImpl:ZC(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 $C(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 tw=async({fs:e,positional:t,flags:n})=>{if(t.length===0)return{stdout:``,stderr:`fetch requires a URL
933
- `,exitCode:1};let r=t[0],{browseShWarning:i,...a}=await ew(r,{discover:n.discover===`true`,method:n.method??`GET`,fs:e});return{stdout:JSON.stringify(a,null,2)+`
934
- `,stderr:i?`${i}\n`:``,exitCode:+!!a.error}};function nw(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 rw(e){await e.send(`Input.dispatchKeyEvent`,{type:`keyDown`,key:`Enter`}),await e.send(`Input.dispatchKeyEvent`,{type:`keyUp`,key:`Enter`})}async function iw(e,t,n){((await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:Kn,returnByValue:!0})).result?.value??``)!==n&&await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:In,arguments:[{value:n}],returnByValue:!0})}async function aw(e,t,n){await e.clickByBackendNodeId(t),await e.send(`DOM.enable`),await e.send(`Runtime.enable`);let r=(await e.send(`DOM.resolveNode`,{backendNodeId:t})).object;r?.objectId&&await e.send(`Runtime.callFunctionOn`,{objectId:r.objectId,functionDeclaration:Gn,returnByValue:!0}),await e.insertText(n),r?.objectId&&await iw(e,r.objectId,n)}async function ow(e,t,n){await e.click(t),await e.evaluate(`(function() {
922
+ })()`;await t.send(`Runtime.evaluate`,{expression:r,returnByValue:!0},e)}}),{stdout:o?`Highlight removed from ${c}\n`:`Highlighted ${c}\n`,stderr:``,exitCode:0}},bC=async({browser:e,positional:t,flags:n,onTab:r})=>{let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t.length>0?t.join(` `):void 0;return await r(i.targetId,async e=>{await e.send(`Page.enable`),await e.send(`Page.handleJavaScriptDialog`,{accept:!0,...a===void 0?{}:{promptText:a}})}),{stdout:`Accepted dialog${a?` with "${a}"`:``}\n`,stderr:``,exitCode:0}},xC=async({browser:e,flags:t,onTab:n})=>{let r=j(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:(await n(r.targetId,async e=>{await e.send(`Page.enable`),await e.send(`Page.handleJavaScriptDialog`,{accept:!1})}),{stdout:`Dismissed dialog
923
+ `,stderr:``,exitCode:0})};function SC(e){let t=e instanceof Error?e.message:String(e);return/SyntaxError/.test(t)}function CC(e){return/\bawait\b/.test(e)||/\breturn\b/.test(e)}async function wC(e,t){try{return await e(t)}catch(n){if(!SC(n)||!CC(t))throw n;try{return await e(`(async () => (\n${t}\n))()`)}catch(r){if(!SC(r))throw r;try{return await e(`(async () => {\n${t}\n})()`)}catch(e){throw SC(e)?n:e}}}}function TC(e,t){let n=t.filename,r=t.output;return n!==void 0&&r!==void 0?{error:`${e}: --filename and --output are aliases — pass one, not both\n`}:{path:n??r}}const EC=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`eval requires an expression
924
+ `,exitCode:1};let a=TC(`eval`,r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};let s=n.join(` `),c=await i(o.targetId,async e=>{let t=await Yn(e,r),n=await wC(t?n=>e.evaluateInFrame(t.frameId,n,{world:`main`}):t=>e.evaluate(t),s);return typeof n==`string`?n:JSON.stringify(n,null,2)});return a.path?(await t.writeFile(a.path,c??`null`),{stdout:`Result saved to ${a.path}\n`,stderr:``,exitCode:0}):{stdout:(c??`undefined`)+`
925
+ `,stderr:``,exitCode:0}},DC=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`eval-file requires a file path
926
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=TC(`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 Yn(e,r),n=await wC(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`)+`
927
+ `,stderr:``,exitCode:0}};function OC(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 kC(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 AC(e,t,n){let r=``;try{r=new URL(e).hostname}catch{return{}}let i=r?sh(r):``;if(!i)return{};let a;try{a=await uh(n)}catch(e){return{warning:`playwright-cli: warning: browse.sh catalog unavailable: ${e instanceof Error?e.message:String(e)}`}}let o=await kC(t),s=[];for(let e of a){if(!e.hostname||sh(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 jC(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 Jb(o,{fetchImpl:OC(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 AC(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 MC=async({fs:e,positional:t,flags:n})=>{if(t.length===0)return{stdout:``,stderr:`fetch requires a URL
928
+ `,exitCode:1};let r=t[0],{browseShWarning:i,...a}=await jC(r,{discover:n.discover===`true`,method:n.method??`GET`,fs:e});return{stdout:JSON.stringify(a,null,2)+`
929
+ `,stderr:i?`${i}\n`:``,exitCode:+!!a.error}};function NC(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 PC(e){await e.send(`Input.dispatchKeyEvent`,{type:`keyDown`,key:`Enter`}),await e.send(`Input.dispatchKeyEvent`,{type:`keyUp`,key:`Enter`})}async function FC(e,t,n){((await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:Un,returnByValue:!0})).result?.value??``)!==n&&await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:Nn,arguments:[{value:n}],returnByValue:!0})}async function IC(e,t,n){await e.clickByBackendNodeId(t),await e.send(`DOM.enable`),await e.send(`Runtime.enable`);let r=(await e.send(`DOM.resolveNode`,{backendNodeId:t})).object;r?.objectId&&await e.send(`Runtime.callFunctionOn`,{objectId:r.objectId,functionDeclaration:Hn,returnByValue:!0}),await e.insertText(n),r?.objectId&&await FC(e,r.objectId,n)}async function LC(e,t,n){await e.click(t),await e.evaluate(`(function() {
935
930
  const el = document.querySelector(${JSON.stringify(t)});
936
- if (el) { return (${Gn}).call(el); }
931
+ if (el) { return (${Hn}).call(el); }
937
932
  return false;
938
933
  })()`),await e.insertText(n);let r=t.split(`,`)[0].trim();await e.evaluate(`(function() {
939
934
  const el = document.querySelector(${JSON.stringify(r)});
940
935
  if (!el) return '';
941
- return (${Kn}).call(el);
936
+ return (${Un}).call(el);
942
937
  })()`)!==n&&await e.evaluate(`(function() {
943
938
  const el = document.querySelector(${JSON.stringify(r)});
944
939
  if (!el) return;
945
- (${In}).call(el, ${JSON.stringify(n)});
946
- })()`)}const sw=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)
947
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=nw(r.modifiers);return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Fn(o),i=n.refToFrameId?.get(o);if(r&&i){let r=n.refToSelector.get(o);if(!r)throw Error(`Unknown ref "${o}" in iframe`);let s=r.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
940
+ (${Nn}).call(el, ${JSON.stringify(n)});
941
+ })()`)}const RC=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)
942
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=NC(r.modifiers);return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Mn(o),i=n.refToFrameId?.get(o);if(r&&i){let r=n.refToSelector.get(o);if(!r)throw Error(`Unknown ref "${o}" in iframe`);let s=r.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
948
943
  var el = document.querySelector(${JSON.stringify(s)});
949
944
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
950
945
  el.scrollIntoView({ block: 'center' });
951
946
  el.click();
952
947
  })()`),t.snapshots.delete(a.targetId),`Clicked ${o} (in iframe)`}let c=n.refToBackendNodeId.get(o);if(c)return await e.clickByBackendNodeId(c,s),t.snapshots.delete(a.targetId),`Clicked ${o}`;let l=n.refToSelector.get(o);if(!l)throw Error(`Unknown ref "${o}". Available: ${[...n.refToSelector.keys()].slice(0,10).join(`, `)}...`);return await e.click(l,s),t.snapshots.delete(a.targetId),`Clicked ${o}`})+`
953
- `,stderr:``,exitCode:0}},cw=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`type requires text
954
- `,exitCode:1};let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t.join(` `);return await r(i.targetId,async e=>{await e.type(a),n.submit===`true`&&await rw(e)}),{stdout:`Typed: ${a}\n`,stderr:``,exitCode:0}},lw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`fill requires <ref> <text>
955
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=n.slice(1).join(` `);return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:i}=Fn(o),c=n.refToFrameId?.get(o);if(i&&c){let i=n.refToSelector.get(o);if(!i)throw Error(`Unknown ref "${o}" in iframe`);let l=i.split(`,`)[0].trim();return await e.evaluateInFrame(c,`(function() {
948
+ `,stderr:``,exitCode:0}},zC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`type requires text
949
+ `,exitCode:1};let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t.join(` `);return await r(i.targetId,async e=>{await e.type(a),n.submit===`true`&&await PC(e)}),{stdout:`Typed: ${a}\n`,stderr:``,exitCode:0}},BC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`fill requires <ref> <text>
950
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=n.slice(1).join(` `);return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:i}=Mn(o),c=n.refToFrameId?.get(o);if(i&&c){let i=n.refToSelector.get(o);if(!i)throw Error(`Unknown ref "${o}" in iframe`);let l=i.split(`,`)[0].trim();return await e.evaluateInFrame(c,`(function() {
956
951
  var el = document.querySelector(${JSON.stringify(l)});
957
952
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
958
953
  el.scrollIntoView({ block: 'center' });
@@ -961,33 +956,33 @@ Options:
961
956
  el.value = ${JSON.stringify(s)};
962
957
  el.dispatchEvent(new Event('input', { bubbles: true }));
963
958
  el.dispatchEvent(new Event('change', { bubbles: true }));
964
- })()`),t.snapshots.delete(a.targetId),r.submit===`true`&&await rw(e),`Filled ${o} with: ${s} (in iframe)`}let l=n.refToBackendNodeId.get(o);if(l)return await aw(e,l,s),t.snapshots.delete(a.targetId),r.submit===`true`&&await rw(e),`Filled ${o} with: ${s}`;let u=n.refToSelector.get(o);if(!u)throw Error(`Unknown ref "${o}"`);return await ow(e,u,s),t.snapshots.delete(a.targetId),r.submit===`true`&&await rw(e),`Filled ${o} with: ${s}`})+`
965
- `,stderr:``,exitCode:0}},uw=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`press requires a key name
966
- `,exitCode:1};let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0];return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,{type:`keyDown`,key:a},e),await t.send(`Input.dispatchKeyEvent`,{type:`keyUp`,key:a},e)}),{stdout:`Pressed ${a}\n`,stderr:``,exitCode:0}},dw=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`keydown requires a key name
967
- `,exitCode:1};let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0];return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,{type:`keyDown`,key:a},e)}),{stdout:`Key ${a} down\n`,stderr:``,exitCode:0}},fw=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`keyup requires a key name
968
- `,exitCode:1};let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0];return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,{type:`keyUp`,key:a},e)}),{stdout:`Key ${a} up\n`,stderr:``,exitCode:0}},pw=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)
969
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=n[1]||`left`,c=nw(r.modifiers);return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Fn(o),i=n.refToFrameId?.get(o);if(r&&i){let r=n.refToSelector.get(o);if(!r)throw Error(`Unknown ref "${o}" in iframe`);let s=r.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
959
+ })()`),t.snapshots.delete(a.targetId),r.submit===`true`&&await PC(e),`Filled ${o} with: ${s} (in iframe)`}let l=n.refToBackendNodeId.get(o);if(l)return await IC(e,l,s),t.snapshots.delete(a.targetId),r.submit===`true`&&await PC(e),`Filled ${o} with: ${s}`;let u=n.refToSelector.get(o);if(!u)throw Error(`Unknown ref "${o}"`);return await LC(e,u,s),t.snapshots.delete(a.targetId),r.submit===`true`&&await PC(e),`Filled ${o} with: ${s}`})+`
960
+ `,stderr:``,exitCode:0}},VC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`press requires a key name
961
+ `,exitCode:1};let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0];return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,{type:`keyDown`,key:a},e),await t.send(`Input.dispatchKeyEvent`,{type:`keyUp`,key:a},e)}),{stdout:`Pressed ${a}\n`,stderr:``,exitCode:0}},HC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`keydown requires a key name
962
+ `,exitCode:1};let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0];return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,{type:`keyDown`,key:a},e)}),{stdout:`Key ${a} down\n`,stderr:``,exitCode:0}},UC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`keyup requires a key name
963
+ `,exitCode:1};let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=t[0];return await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchKeyEvent`,{type:`keyUp`,key:a},e)}),{stdout:`Key ${a} up\n`,stderr:``,exitCode:0}},WC=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)
964
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=n[1]||`left`,c=NC(r.modifiers);return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Mn(o),i=n.refToFrameId?.get(o);if(r&&i){let r=n.refToSelector.get(o);if(!r)throw Error(`Unknown ref "${o}" in iframe`);let s=r.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
970
965
  var el = document.querySelector(${JSON.stringify(s)});
971
966
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
972
967
  el.scrollIntoView({ block: 'center' });
973
968
  el.dispatchEvent(new MouseEvent('dblclick', { bubbles: true }));
974
969
  })()`),t.snapshots.delete(a.targetId),`Double-clicked ${o} (in iframe)`}let l=n.refToBackendNodeId.get(o);if(!l)throw Error(`Unknown ref "${o}"`);return await e.dblclickByBackendNodeId(l,s,c),t.snapshots.delete(a.targetId),`Double-clicked ${o}`})+`
975
- `,stderr:``,exitCode:0}},mw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`hover requires a ref (e.g. e5)
976
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0];return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Fn(o),i=n.refToFrameId?.get(o);if(r&&i){let t=n.refToSelector.get(o);if(!t)throw Error(`Unknown ref "${o}" in iframe`);let r=t.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
970
+ `,stderr:``,exitCode:0}},GC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`hover requires a ref (e.g. e5)
971
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0];return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Mn(o),i=n.refToFrameId?.get(o);if(r&&i){let t=n.refToSelector.get(o);if(!t)throw Error(`Unknown ref "${o}" in iframe`);let r=t.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
977
972
  var el = document.querySelector(${JSON.stringify(r)});
978
973
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
979
974
  el.scrollIntoView({ block: 'center' });
980
975
  el.dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
981
976
  })()`),`Hovered ${o} (in iframe)`}let s=n.refToBackendNodeId.get(o);if(!s)throw Error(`Unknown ref "${o}"`);return await e.hoverByBackendNodeId(s),`Hovered ${o}`})+`
982
- `,stderr:``,exitCode:0}},hw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`select requires <ref> <value>
983
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=n.slice(1).join(` `);return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Fn(o),i=n.refToFrameId?.get(o);if(r&&i){let r=n.refToSelector.get(o);if(!r)throw Error(`Unknown ref "${o}" in iframe`);let c=r.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
977
+ `,stderr:``,exitCode:0}},KC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`select requires <ref> <value>
978
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=n.slice(1).join(` `);return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Mn(o),i=n.refToFrameId?.get(o);if(r&&i){let r=n.refToSelector.get(o);if(!r)throw Error(`Unknown ref "${o}" in iframe`);let c=r.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
984
979
  var el = document.querySelector(${JSON.stringify(c)});
985
980
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
986
981
  el.value = ${JSON.stringify(s)};
987
982
  el.dispatchEvent(new Event('change', { bubbles: true }));
988
983
  })()`),t.snapshots.delete(a.targetId),`Selected "${s}" on ${o} (in iframe)`}let c=n.refToBackendNodeId.get(o);if(!c)throw Error(`Unknown ref "${o}"`);return await e.selectByBackendNodeId(c,s),t.snapshots.delete(a.targetId),`Selected "${s}" on ${o}`})+`
989
- `,stderr:``,exitCode:0}},gw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`check requires a ref (e.g. e5)
990
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0];return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Fn(o),i=n.refToFrameId?.get(o);if(r&&i){let r=n.refToSelector.get(o);if(!r)throw Error(`Unknown ref "${o}" in iframe`);let s=r.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
984
+ `,stderr:``,exitCode:0}},qC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`check requires a ref (e.g. e5)
985
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0];return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Mn(o),i=n.refToFrameId?.get(o);if(r&&i){let r=n.refToSelector.get(o);if(!r)throw Error(`Unknown ref "${o}" in iframe`);let s=r.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
991
986
  var el = document.querySelector(${JSON.stringify(s)});
992
987
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
993
988
  if (!el.checked) {
@@ -996,8 +991,8 @@ Options:
996
991
  el.dispatchEvent(new MouseEvent('click', { bubbles: true }));
997
992
  }
998
993
  })()`),t.snapshots.delete(a.targetId),`Checked ${o} (in iframe)`}let s=n.refToBackendNodeId.get(o);if(!s)throw Error(`Unknown ref "${o}"`);let c=await e.setCheckedByBackendNodeId(s,!0);return c===`toggled`&&t.snapshots.delete(a.targetId),c===`already`?`${o} already checked`:`Checked ${o}`})+`
999
- `,stderr:``,exitCode:0}},_w=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`uncheck requires a ref (e.g. e5)
1000
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0];return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Fn(o),i=n.refToFrameId?.get(o);if(r&&i){let r=n.refToSelector.get(o);if(!r)throw Error(`Unknown ref "${o}" in iframe`);let s=r.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
994
+ `,stderr:``,exitCode:0}},JC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`uncheck requires a ref (e.g. e5)
995
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0];return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let{isIframe:r}=Mn(o),i=n.refToFrameId?.get(o);if(r&&i){let r=n.refToSelector.get(o);if(!r)throw Error(`Unknown ref "${o}" in iframe`);let s=r.split(`,`)[0].trim();return await e.evaluateInFrame(i,`(function() {
1001
996
  var el = document.querySelector(${JSON.stringify(s)});
1002
997
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
1003
998
  if (el.checked) {
@@ -1006,14 +1001,14 @@ Options:
1006
1001
  el.dispatchEvent(new MouseEvent('click', { bubbles: true }));
1007
1002
  }
1008
1003
  })()`),t.snapshots.delete(a.targetId),`Unchecked ${o} (in iframe)`}let s=n.refToBackendNodeId.get(o);if(!s)throw Error(`Unknown ref "${o}"`);let c=await e.setCheckedByBackendNodeId(s,!1);return c===`toggled`&&t.snapshots.delete(a.targetId),c===`already`?`${o} already unchecked`:`Unchecked ${o}`})+`
1009
- `,stderr:``,exitCode:0}},vw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`drag requires <startRef> <endRef>
1004
+ `,stderr:``,exitCode:0}},YC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`drag requires <startRef> <endRef>
1010
1005
  `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=n[1];return{stdout:await i(a.targetId,async e=>{let n=t.snapshots.get(a.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let r=n.refToBackendNodeId.get(o),i=n.refToBackendNodeId.get(s);if(!r)throw Error(`Unknown ref "${o}"`);if(!i)throw Error(`Unknown ref "${s}"`);return await e.dragByBackendNodeIds(r,i),t.snapshots.delete(a.targetId),`Dragged ${o} to ${s}`})+`
1011
- `,stderr:``,exitCode:0}};async function yw(e,t){let n=await e.readFile(t,{encoding:`binary`});if(n instanceof Uint8Array)return n;if(typeof n!=`string`)throw Error(`cannot represent '${t}' faithfully: unexpected file content type`);if(n.includes(`�`))throw Error(`cannot represent '${t}' faithfully: file was read as text (contains U+FFFD). Binary files must be read as bytes, not UTF-8.`);return new TextEncoder().encode(n)}function bw(e){return e===void 0?`left`:e===`left`||e===`right`||e===`middle`?e:{error:`Invalid button "${e}". Must be left, right, or middle.\n`}}const xw={png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`,pdf:`application/pdf`,txt:`text/plain`,json:`application/json`,csv:`text/csv`,html:`text/html`,htm:`text/html`,xml:`application/xml`,zip:`application/zip`,mp4:`video/mp4`,mp3:`audio/mpeg`};function Sw(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return xw[t]??`application/octet-stream`}const Cw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`mousemove requires <x> <y>
1006
+ `,stderr:``,exitCode:0}};async function XC(e,t){let n=await e.readFile(t,{encoding:`binary`});if(n instanceof Uint8Array)return n;if(typeof n!=`string`)throw Error(`cannot represent '${t}' faithfully: unexpected file content type`);if(n.includes(`�`))throw Error(`cannot represent '${t}' faithfully: file was read as text (contains U+FFFD). Binary files must be read as bytes, not UTF-8.`);return new TextEncoder().encode(n)}function ZC(e){return e===void 0?`left`:e===`left`||e===`right`||e===`middle`?e:{error:`Invalid button "${e}". Must be left, right, or middle.\n`}}const QC={png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`,pdf:`application/pdf`,txt:`text/plain`,json:`application/json`,csv:`text/csv`,html:`text/html`,htm:`text/html`,xml:`application/xml`,zip:`application/zip`,mp4:`video/mp4`,mp3:`audio/mpeg`};function $C(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return QC[t]??`application/octet-stream`}const ew=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`mousemove requires <x> <y>
1012
1007
  `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=parseFloat(n[0]),s=parseFloat(n[1]);return isNaN(o)||isNaN(s)?{stdout:``,stderr:`x and y must be numbers
1013
- `,exitCode:1}:(await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchMouseEvent`,{type:`mouseMoved`,x:o,y:s,button:`none`,modifiers:0},e)}),t.lastMousePosition.set(a.targetId,{x:o,y:s}),{stdout:`Mouse moved to (${o}, ${s})\n`,stderr:``,exitCode:0})},ww=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=bw(n[0]);if(typeof o==`object`)return{stdout:``,stderr:o.error,exitCode:1};let s=t.lastMousePosition.get(a.targetId)??{x:0,y:0};return await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchMouseEvent`,{type:`mousePressed`,button:o,clickCount:1,x:s.x,y:s.y,modifiers:0},e)}),{stdout:`Mouse button ${o} pressed\n`,stderr:``,exitCode:0}},Tw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=bw(n[0]);if(typeof o==`object`)return{stdout:``,stderr:o.error,exitCode:1};let s=t.lastMousePosition.get(a.targetId)??{x:0,y:0};return await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchMouseEvent`,{type:`mouseReleased`,button:o,clickCount:1,x:s.x,y:s.y,modifiers:0},e)}),{stdout:`Mouse button ${o} released\n`,stderr:``,exitCode:0}},Ew=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`mousewheel requires <dx> <dy>
1008
+ `,exitCode:1}:(await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchMouseEvent`,{type:`mouseMoved`,x:o,y:s,button:`none`,modifiers:0},e)}),t.lastMousePosition.set(a.targetId,{x:o,y:s}),{stdout:`Mouse moved to (${o}, ${s})\n`,stderr:``,exitCode:0})},tw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=ZC(n[0]);if(typeof o==`object`)return{stdout:``,stderr:o.error,exitCode:1};let s=t.lastMousePosition.get(a.targetId)??{x:0,y:0};return await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchMouseEvent`,{type:`mousePressed`,button:o,clickCount:1,x:s.x,y:s.y,modifiers:0},e)}),{stdout:`Mouse button ${o} pressed\n`,stderr:``,exitCode:0}},nw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=ZC(n[0]);if(typeof o==`object`)return{stdout:``,stderr:o.error,exitCode:1};let s=t.lastMousePosition.get(a.targetId)??{x:0,y:0};return await i(a.targetId,async({sessionId:e,transport:t})=>{await t.send(`Input.dispatchMouseEvent`,{type:`mouseReleased`,button:o,clickCount:1,x:s.x,y:s.y,modifiers:0},e)}),{stdout:`Mouse button ${o} released\n`,stderr:``,exitCode:0}},rw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`mousewheel requires <dx> <dy>
1014
1009
  `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=parseFloat(n[0]),s=parseFloat(n[1]);if(isNaN(o)||isNaN(s))return{stdout:``,stderr:`dx and dy must be numbers
1015
- `,exitCode:1};let c=t.lastMousePosition.get(a.targetId)??{x:0,y:0},l=``;return await i(a.targetId,async({sessionId:e,transport:t})=>{if((await t.send(`Runtime.evaluate`,{expression:`document.visibilityState`,returnByValue:!0},e)).result?.value===`hidden`){let n=await t.send(`Runtime.evaluate`,{expression:Dw(c.x,c.y,o,s),returnByValue:!0},e);if(n.exceptionDetails)throw Error(n.exceptionDetails.exception?.description??n.exceptionDetails.text??`Page scroll failed`);l=`note: the tab is in the background, so the wheel was applied as a page scroll
1016
- `;return}await t.send(`Input.dispatchMouseEvent`,{type:`mouseWheel`,deltaX:o,deltaY:s,x:c.x,y:c.y,modifiers:0},e)}),{stdout:`Mouse wheel scrolled (dx=${o}, dy=${s})\n`,stderr:l,exitCode:0}};function Dw(e,t,n,r){return`(() => {
1010
+ `,exitCode:1};let c=t.lastMousePosition.get(a.targetId)??{x:0,y:0},l=``;return await i(a.targetId,async({sessionId:e,transport:t})=>{if((await t.send(`Runtime.evaluate`,{expression:`document.visibilityState`,returnByValue:!0},e)).result?.value===`hidden`){let n=await t.send(`Runtime.evaluate`,{expression:iw(c.x,c.y,o,s),returnByValue:!0},e);if(n.exceptionDetails)throw Error(n.exceptionDetails.exception?.description??n.exceptionDetails.text??`Page scroll failed`);l=`note: the tab is in the background, so the wheel was applied as a page scroll
1011
+ `;return}await t.send(`Input.dispatchMouseEvent`,{type:`mouseWheel`,deltaX:o,deltaY:s,x:c.x,y:c.y,modifiers:0},e)}),{stdout:`Mouse wheel scrolled (dx=${o}, dy=${s})\n`,stderr:l,exitCode:0}};function iw(e,t,n,r){return`(() => {
1017
1012
  const dx = ${JSON.stringify(n)}, dy = ${JSON.stringify(r)};
1018
1013
  const canScroll = (el) => {
1019
1014
  const style = getComputedStyle(el);
@@ -1032,8 +1027,8 @@ Options:
1032
1027
  : (document.scrollingElement || document.documentElement);
1033
1028
  target.scrollBy({ left: dx, top: dy, behavior: 'instant' });
1034
1029
  return true;
1035
- })()`}const Ow=async({browser:e,fs:n,state:r,positional:i,flags:a,onTab:o})=>{if(i.length===0)return{stdout:``,stderr:`drop requires a ref (e.g. e5)
1036
- `,exitCode:1};let s=j(a);if(`error`in s)return{stdout:``,stderr:s.error,exitCode:1};let c=i[0],l=a.path,u=a.data,d=[];if(l){let e=await yw(n,l),r=l.split(`/`).pop()??l;d.push({name:r,type:Sw(r),base64:t(e)})}let f=[];if(u){let e=u.indexOf(`=`);if(e===-1)return{stdout:``,stderr:`--data format must be "mime/type=value"
1030
+ })()`}const aw=async({browser:e,fs:n,state:r,positional:i,flags:a,onTab:o})=>{if(i.length===0)return{stdout:``,stderr:`drop requires a ref (e.g. e5)
1031
+ `,exitCode:1};let s=j(a);if(`error`in s)return{stdout:``,stderr:s.error,exitCode:1};let c=i[0],l=a.path,u=a.data,d=[];if(l){let e=await XC(n,l),r=l.split(`/`).pop()??l;d.push({name:r,type:$C(r),base64:t(e)})}let f=[];if(u){let e=u.indexOf(`=`);if(e===-1)return{stdout:``,stderr:`--data format must be "mime/type=value"
1037
1032
  `,exitCode:1};f.push({mimeType:u.slice(0,e),value:u.slice(e+1)})}return{stdout:await o(s.targetId,async({sessionId:e,transport:t})=>{let n=r.snapshots.get(s.targetId);if(!n)throw Error(`No snapshot available. Run "snapshot" first.`);let i=n.refToBackendNodeId.get(c);if(i){await t.send(`DOM.enable`,{},e);let n=await t.send(`DOM.resolveNode`,{backendNodeId:i},e),a=await t.send(`Runtime.callFunctionOn`,{objectId:n.object.objectId,functionDeclaration:`function(filesData, dataItems) {
1038
1033
  var dt = new DataTransfer();
1039
1034
  for (var i = 0; i < filesData.length; i++) {
@@ -1048,7 +1043,7 @@ Options:
1048
1043
  this.dispatchEvent(new DragEvent('dragover', { bubbles: true, cancelable: true, dataTransfer: dt }));
1049
1044
  this.dispatchEvent(new DragEvent('drop', { bubbles: true, cancelable: true, dataTransfer: dt }));
1050
1045
  return this.tagName;
1051
- }`,arguments:[{value:d},{value:f}],returnByValue:!0},e);if(a.exceptionDetails){let e=a.exceptionDetails.exception?.description??a.exceptionDetails.text??`Drop failed`;throw Error(e)}return r.snapshots.delete(s.targetId),`Dropped onto ${c}`}let{isIframe:a}=Fn(c),o=n.refToFrameId?.get(c),l;if(a&&o){let e=n.refToSelector.get(c);if(!e)throw Error(`Unknown ref "${c}" in iframe`);l=e.split(`,`)[0].trim()}else{let e=n.refToSelector.get(c);if(!e)throw Error(`Unknown ref "${c}". Available: ${[...n.refToSelector.keys()].slice(0,10).join(`, `)}...`);l=e.split(`,`)[0].trim()}let u=JSON.stringify(d),p=JSON.stringify(f),m=`(function() {
1046
+ }`,arguments:[{value:d},{value:f}],returnByValue:!0},e);if(a.exceptionDetails){let e=a.exceptionDetails.exception?.description??a.exceptionDetails.text??`Drop failed`;throw Error(e)}return r.snapshots.delete(s.targetId),`Dropped onto ${c}`}let{isIframe:a}=Mn(c),o=n.refToFrameId?.get(c),l;if(a&&o){let e=n.refToSelector.get(c);if(!e)throw Error(`Unknown ref "${c}" in iframe`);l=e.split(`,`)[0].trim()}else{let e=n.refToSelector.get(c);if(!e)throw Error(`Unknown ref "${c}". Available: ${[...n.refToSelector.keys()].slice(0,10).join(`, `)}...`);l=e.split(`,`)[0].trim()}let u=JSON.stringify(d),p=JSON.stringify(f),m=`(function() {
1052
1047
  var el = document.querySelector(${JSON.stringify(l)});
1053
1048
  if (!el) throw new Error('Element not found for ref ${c}: ' + ${JSON.stringify(l)});
1054
1049
  var dt = new DataTransfer();
@@ -1068,7 +1063,7 @@ Options:
1068
1063
  el.dispatchEvent(new DragEvent('drop', { bubbles: true, cancelable: true, dataTransfer: dt }));
1069
1064
  return true;
1070
1065
  })()`,h=await t.send(`Runtime.evaluate`,{expression:m,returnByValue:!0,awaitPromise:!1},e);if(h.exceptionDetails){let e=h.exceptionDetails.exception?.description??h.exceptionDetails.text??`Drop failed`;throw Error(e)}return r.snapshots.delete(s.targetId),`Dropped onto ${c}`})+`
1071
- `,stderr:``,exitCode:0}},kw=e(`playwright-teleport`),Aw={origin:``,localStorage:{},sessionStorage:{}};function jw(e){let t=new Map;for(let n of e){let e=n.domain??`unknown`;t.set(e,(t.get(e)??0)+1)}return[...t.entries()].sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${t} ${e}`).join(`, `)}function Mw(e){return Object.keys(e.localStorage).length+Object.keys(e.sessionStorage).length}function Nw(e){if(!e)return null;try{return new URL(e).origin}catch{return null}}function Pw(e){try{return new URL(`/favicon.ico`,e).toString()}catch{return e}}function Fw(e,t,n){let r=Nw(t);if(t&&r===e)return t;let i=Nw(n);return n&&i===e?n:e||(t??n)}async function Iw(e,t){let n=await e.evaluate(`(() => {
1066
+ `,stderr:``,exitCode:0}},ow=e(`playwright-teleport`),sw={origin:``,localStorage:{},sessionStorage:{}};function cw(e){let t=new Map;for(let n of e){let e=n.domain??`unknown`;t.set(e,(t.get(e)??0)+1)}return[...t.entries()].sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${t} ${e}`).join(`, `)}function lw(e){return Object.keys(e.localStorage).length+Object.keys(e.sessionStorage).length}function uw(e){if(!e)return null;try{return new URL(e).origin}catch{return null}}function dw(e){try{return new URL(`/favicon.ico`,e).toString()}catch{return e}}function fw(e,t,n){let r=uw(t);if(t&&r===e)return t;let i=uw(n);return n&&i===e?n:e||(t??n)}async function pw(e,t){let n=await e.evaluate(`(() => {
1072
1067
  const collect = (storage) => {
1073
1068
  const items = {};
1074
1069
  for (let i = 0; i < storage.length; i++) {
@@ -1082,7 +1077,7 @@ Options:
1082
1077
  localStorage: collect(window.localStorage),
1083
1078
  sessionStorage: collect(window.sessionStorage),
1084
1079
  });
1085
- })()`);if(typeof n!=`string`||n.length===0)return kw.warn(`Teleport storage capture returned non-string result`,{label:t,type:typeof n}),Aw;try{let e=JSON.parse(n);return{origin:typeof e.origin==`string`?e.origin:``,localStorage:e.localStorage??{},sessionStorage:e.sessionStorage??{}}}catch(e){return kw.warn(`Could not parse teleport storage snapshot`,{label:t,error:String(e)}),Aw}}function Lw(e){return`(() => {
1080
+ })()`);if(typeof n!=`string`||n.length===0)return ow.warn(`Teleport storage capture returned non-string result`,{label:t,type:typeof n}),sw;try{let e=JSON.parse(n);return{origin:typeof e.origin==`string`?e.origin:``,localStorage:e.localStorage??{},sessionStorage:e.sessionStorage??{}}}catch(e){return ow.warn(`Could not parse teleport storage snapshot`,{label:t,error:String(e)}),sw}}function mw(e){return`(() => {
1086
1081
  const snapshot = ${JSON.stringify(e)};
1087
1082
  if (!snapshot.origin || window.location.origin !== snapshot.origin) return;
1088
1083
  const markerKey = '__slicc_teleport_storage_applied__:' + snapshot.origin;
@@ -1098,7 +1093,7 @@ Options:
1098
1093
  apply(window.localStorage, snapshot.localStorage || {});
1099
1094
  apply(window.sessionStorage, snapshot.sessionStorage || {});
1100
1095
  try { window.sessionStorage.setItem(markerKey, '1'); } catch {}
1101
- })();`}function Rw(e){return`(() => {
1096
+ })();`}function hw(e){return`(() => {
1102
1097
  const snapshot = ${JSON.stringify(e)};
1103
1098
  if (!snapshot.origin || globalThis.location.origin !== snapshot.origin) {
1104
1099
  throw new Error('Teleport storage origin mismatch');
@@ -1116,88 +1111,88 @@ Options:
1116
1111
  localStorageCount: Object.keys(snapshot.localStorage || {}).length,
1117
1112
  sessionStorageCount: Object.keys(snapshot.sessionStorage || {}).length,
1118
1113
  });
1119
- })();`}async function zw(e,t,n){let r=Mw(t);if(r===0)return;let i=await e.evaluate(Rw(t));kw.info(`Applied teleport storage snapshot on current page`,{target:n,totalEntries:r,resultType:typeof i}),kw.debug(`Applied teleport storage snapshot details`,{target:n,origin:t.origin||`(unknown)`,totalEntries:r,resultType:typeof i})}async function Bw(e,t,n){let r=Mw(t);if(r===0)return null;let i=await e.send(`Page.addScriptToEvaluateOnNewDocument`,{source:Lw(t)}),a=typeof i.identifier==`string`?i.identifier:null;return kw.info(`Installed teleport storage init script`,{target:n,totalEntries:r,hasIdentifier:!!a}),kw.debug(`Installed teleport storage init script details`,{target:n,origin:t.origin||`(unknown)`,localStorageCount:Object.keys(t.localStorage).length,sessionStorageCount:Object.keys(t.sessionStorage).length,hasIdentifier:!!a}),a?{identifier:a,targetId:e.targetId}:null}async function Vw(e,t,n){if(t)try{await e.send(`Page.removeScriptToEvaluateOnNewDocument`,{identifier:t.identifier})}catch(e){kw.warn(`Failed to remove teleport storage init script`,{target:n,error:String(e)})}}async function Hw(e){let t=await e.evaluate(`(() => JSON.stringify({
1114
+ })();`}async function gw(e,t,n){let r=lw(t);if(r===0)return;let i=await e.evaluate(hw(t));ow.info(`Applied teleport storage snapshot on current page`,{target:n,totalEntries:r,resultType:typeof i}),ow.debug(`Applied teleport storage snapshot details`,{target:n,origin:t.origin||`(unknown)`,totalEntries:r,resultType:typeof i})}async function _w(e,t,n){let r=lw(t);if(r===0)return null;let i=await e.send(`Page.addScriptToEvaluateOnNewDocument`,{source:mw(t)}),a=typeof i.identifier==`string`?i.identifier:null;return ow.info(`Installed teleport storage init script`,{target:n,totalEntries:r,hasIdentifier:!!a}),ow.debug(`Installed teleport storage init script details`,{target:n,origin:t.origin||`(unknown)`,localStorageCount:Object.keys(t.localStorage).length,sessionStorageCount:Object.keys(t.sessionStorage).length,hasIdentifier:!!a}),a?{identifier:a,targetId:e.targetId}:null}async function vw(e,t,n){if(t)try{await e.send(`Page.removeScriptToEvaluateOnNewDocument`,{identifier:t.identifier})}catch(e){ow.warn(`Failed to remove teleport storage init script`,{target:n,error:String(e)})}}async function yw(e){let t=await e.evaluate(`(() => JSON.stringify({
1120
1115
  url: window.location.href,
1121
1116
  title: document.title || '',
1122
1117
  bodySnippet: document.body?.innerText?.replace(/\\s+/g, ' ').trim().slice(0, 500) || '(empty)',
1123
- }))()`);if(typeof t!=`string`||t.length===0)return{url:``,title:``,bodySnippet:`(unavailable)`};try{let e=JSON.parse(t);return{url:typeof e.url==`string`?e.url:``,title:typeof e.title==`string`?e.title:``,bodySnippet:typeof e.bodySnippet==`string`&&e.bodySnippet.length>0?e.bodySnippet:`(empty)`}}catch{return{url:``,title:``,bodySnippet:`(unparseable)`}}}function Uw(e){return/callback|authorize\/resume|error/i.test(e)}async function Ww(e,t,n){try{let r=await Hw(e),i=`${n}:${r.url}:${r.title}`;if(t.lastFollowerDiagnosticKey===i)return;t.lastFollowerDiagnosticKey=i,kw.debug(`Teleport follower diagnostics`,{reason:n,url:r.url,title:r.title,bodySnippet:r.bodySnippet})}catch(e){kw.warn(`Could not capture teleport follower diagnostics`,{reason:n,error:String(e)})}}async function Gw(e,t,n){let r=t.followerStorageScript;if(r){t.followerStorageScript=null;try{await e.withTab(r.targetId,e=>Vw(e,r,`follower`)),kw.info(`Removed follower teleport storage init script`,{reason:n})}catch(e){kw.warn(`Failed to remove follower teleport storage init script`,{reason:n,error:String(e)})}}}function Kw(e){return Array.isArray(e)?e:[]}const U=e(`playwright-teleport`);let qw=null,Jw=null;function Yw(e){qw=e}function Xw(e){Jw=e}function Zw(){return Jw?.()??null}async function Qw(e,t){if(U.warn(`Teleport timed out`,{timeoutMs:t.timeoutMs,phase:t.phase}),U.debug(`Teleport timeout details`,{timeoutMs:t.timeoutMs,phase:t.phase,followerTargetId:t.followerTargetId}),t.phase=`timedOut`,t.followerTargetId){try{await e.withTab(t.followerTargetId,e=>Ww(e,t,`timeout`))}catch(e){U.warn(`Could not attach to follower for timeout diagnostics`,{error:String(e)})}await Gw(e,t,`timeout`)}if($w(t),t.followerTargetId)try{await e.closePage(t.followerTargetId)}catch(e){U.warn(`Failed to close follower tab after timeout`,{error:String(e)})}t.rejectBlock?.(Error(`Teleport timed out after ${Math.round(t.timeoutMs/1e3)}s — human did not complete auth`))}function $w(e){U.info(`Cleaning up teleport watcher`,{phase:e.phase,hadPoll:!!e.pollInterval,hadTimeout:!!e.timeoutTimer,hadListener:!!e.cleanupListener}),e.pollInterval&&=(clearInterval(e.pollInterval),void 0),e.timeoutTimer&&=(clearTimeout(e.timeoutTimer),void 0),e.cleanupListener&&=(e.cleanupListener(),void 0)}function eT(e,t,n,r,i,a,o,s){if(a===`preview`)throw Error(`cannot teleport to a preview target (no Network.*)`);U.info(`Arming teleport watcher`,{timeoutMs:i,runtimeSelection:a?`explicit`:`auto`}),U.debug(`Arming teleport watcher details`,{startPattern:n.source,returnPattern:r.source,timeoutMs:i,runtimeId:a??`auto`,originalUrl:o});let c={startPattern:n,returnPattern:r,timeoutMs:i,runtimeId:a,phase:`armed`,leaderTargetId:s,originalLeaderUrl:o};return c.completionPromise=new Promise((e,t)=>{c.resolveBlock=e,c.rejectBlock=t}),c.completionPromise.catch(()=>{}),c.pollInterval=setInterval(()=>{(async()=>{if(c.phase!==`armed`)return;let r=c.leaderTargetId;if(r)try{let i=await e.withTab(r,e=>e.evaluate(`window.location.href`)),a=typeof i==`string`?i:String(i);U.debug(`Polling leader tab URL`,{targetId:r,href:a,startPattern:n.source}),n.test(a)&&(U.info(`Teleport start pattern matched on leader`),U.debug(`Teleport start pattern matched on leader details`,{targetId:r,href:a,startPattern:n.source}),nT(e,t,c,a).catch(e=>{U.error(`Unhandled teleport trigger error`,{error:String(e)})}))}catch(e){U.warn(`Error polling leader tab URL`,{targetId:r,error:String(e)})}})().catch(e=>{U.warn(`Leader teleport poll failed`,{error:String(e)})})},1e3),s&&t.teleportWatchers.set(s,c),c}async function tT(e,t,n,r,i){if(n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)try{let a=await e.withTab(r,e=>e.evaluate(`window.location.href`)),o=typeof a==`string`?a:String(a);if(!o)return;if(n.lastFollowerUrl!==o&&(n.lastFollowerUrl=o,U.debug(`Follower teleport navigation`,{href:o,phase:n.phase})),n.phase===`waitingForAuth`){n.startPattern.test(o)?(n.phase=`waitingForReturn`,U.info(`Follower reached auth provider; waiting for return pattern`),U.debug(`Follower reached auth provider details`,{href:o,startPattern:n.startPattern.source})):U.debug(`Waiting for auth redirect on follower`,{href:o,startPattern:n.startPattern.source});return}U.debug(`Polling follower tab URL for return`,{href:o,returnPattern:n.returnPattern.source}),Uw(o)&&await e.withTab(r,e=>Ww(e,n,`waiting-for-return`)),n.returnPattern.test(o)&&(U.info(`Follower return pattern matched after auth`),U.debug(`Follower return pattern matched after auth details`,{href:o,returnPattern:n.returnPattern.source}),sT(e,t,n,i).catch(e=>{U.error(`Unhandled teleport capture error`,{error:String(e)})}))}catch(e){U.warn(`Error polling follower tab URL`,{error:String(e)})}}async function nT(e,t,n,r){if(n.phase===`armed`){n.phase=`teleporting`,U.info(`Teleport triggered`),U.debug(`Teleport trigger details`,{triggerUrl:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0);try{let i=n.leaderTargetId;if(!i)throw Error(`teleport has no leader tab to capture from`);let a=[],o=Aw;try{a=Kw((await e.withTab(i,e=>e.send(`Network.getCookies`,{}))).cookies),U.info(`Captured leader cookies for follower`,{count:a.length})}catch(e){U.warn(`Could not capture leader cookies`,{error:String(e)})}try{o=await e.withTab(i,e=>Iw(e,`leader`)),U.info(`Captured leader storage for follower`,{totalEntries:Mw(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),U.debug(`Captured leader storage for follower details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){U.warn(`Could not capture leader storage`,{error:String(e)})}let s=n.runtimeId;if(!s){let e=qw?.();if(!e)throw Error(`No follower selection available — not connected to a tray`);let t=e();if(!t)throw Error(`No followers connected to teleport to`);s=t.runtimeId}U.info(`Selected follower for teleport`),U.debug(`Selected follower for teleport details`,{runtimeId:s});let c=await e.createRemotePage(s,`about:blank`),l=c.includes(`:`)?c:`${s}:${c}`;n.followerTargetId=l,U.info(`Opened follower tab for teleport`),U.debug(`Opened follower tab for teleport details`,{followerTargetId:l});let u=r;await e.withTab(l,async e=>{if(await e.send(`Page.enable`),a.length>0)try{await e.send(`Network.setCookies`,{cookies:a}),U.info(`Injected leader cookies into follower`,{count:a.length})}catch(e){U.warn(`Could not inject leader cookies into follower`,{error:String(e)})}n.followerStorageScript=await Bw(e,o,`follower`),U.info(`Navigating follower to intercepted auth URL`),U.debug(`Navigating follower to intercepted auth URL details`,{url:u,originalLeaderUrl:n.originalLeaderUrl,triggerUrl:r,storageOrigin:o.origin||`(unknown)`}),await e.send(`Page.navigate`,{url:u})}),U.info(`Starting teleport timeout timer`,{timeoutMs:n.timeoutMs}),n.timeoutTimer=setTimeout(()=>{(n.phase===`teleporting`||n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)&&Qw(e,n).catch(e=>{U.error(`Teleport timeout handler failed`,{error:String(e)})})},n.timeoutMs),n.phase=`waitingForAuth`,U.info(`Teleport waiting for follower auth redirect`),U.debug(`Teleport waiting for follower auth redirect details`,{startPattern:n.startPattern.source}),n.pollInterval=setInterval(()=>{tT(e,t,n,l,s).catch(e=>{U.warn(`Follower teleport poll failed`,{error:String(e)})})},1e3)}catch(t){U.error(`Teleport trigger failed`,{error:String(t)}),await Gw(e,n,`trigger-error`),n.phase=`done`,$w(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}async function rT(e,t){U.info(`Waiting for redirect chain to settle (2s)`),await new Promise(e=>setTimeout(e,2e3));let n=t.followerTargetId,r=t.followerStorageScript??null;t.followerStorageScript=null;let{cookies:i,followerStorage:a,finalUrl:o}=await e.withTab(n,async e=>{let n;try{let t=await e.evaluate(`window.location.href`);n=typeof t==`string`?t:String(t),U.debug(`Captured final URL from follower`,{finalUrl:n})}catch(e){U.warn(`Could not read follower URL (may be mid-navigation)`,{error:String(e)})}try{let t=await e.evaluate(`document.body?.innerText?.substring(0, 500) || "(empty)"`);U.debug(`Follower page content at capture time`,{bodyText:t})}catch(e){U.warn(`Could not read follower page content`,{error:String(e)})}let i=Kw((await e.send(`Network.getCookies`)).cookies),a=i.length>0?jw(i):`none`;U.info(`Captured cookies from follower`,{count:i.length}),U.debug(`Captured cookies from follower details`,{count:i.length,domains:a});let o=Aw;try{o=await Iw(e,`follower`),U.info(`Captured follower storage for leader`,{totalEntries:Mw(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),U.debug(`Captured follower storage for leader details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){U.warn(`Could not capture follower storage`,{error:String(e)})}return await Ww(e,t,`capture`),await Vw(e,r,`follower`),{cookies:i,followerStorage:o,finalUrl:n}});try{await e.closePage(t.followerTargetId),U.info(`Closed follower tab after teleport`),U.debug(`Closed follower tab after teleport details`,{followerTargetId:t.followerTargetId})}catch(e){U.warn(`Failed to close follower tab`,{error:String(e)})}return{cookies:i,followerStorage:a,finalUrl:o}}async function iT(e,t,n,r){try{await e.navigate(n),await zw(e,t,`leader`),r&&r!==n&&await e.navigate(r)}catch(i){U.warn(`Direct leader origin hydration failed, falling back to init-script replay`,{error:String(i)}),U.debug(`Direct leader origin hydration fallback details`,{hydrationUrl:n,landingUrl:r,error:String(i)});let a=await Bw(e,t,`leader`);try{r&&await e.navigate(r)}finally{await Vw(e,a,`leader`)}}}async function aT(e,t,n,r,i){let a=e.targetId,o=await Bw(e,n,`leader`);try{r&&(U.info(`Navigating leader after auth-state injection`,{hasLandingUrl:!0,storageEntries:Mw(n)}),U.debug(`Navigating leader after auth-state injection details`,{landingUrl:r,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:n.origin||`(unknown)`,storageEntries:Mw(n)}),await e.navigate(r))}finally{await Vw(e,o,`leader`)}}async function oT(e,t,n,r,i){let a=t.leaderTargetId,o=r.origin||``,s=Fw(o,t.originalLeaderUrl,i),c=Nw(t.originalLeaderUrl),l=!!o&&c!==o,u=l?Pw(o):null;return a?(await e.withTab(a,async e=>{n.length>0&&(await e.send(`Network.setCookies`,{cookies:n}),U.info(`Injected cookies into leader tab`,{count:n.length}),U.debug(`Injected cookies into leader tab details`,{count:n.length,leaderTargetId:a})),l&&u?(U.info(`Hydrating leader storage origin before landing`,{storageEntries:Mw(r)}),U.debug(`Hydrating leader storage origin before landing details`,{hydrationUrl:u,landingUrl:s,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:o,storageEntries:Mw(r)}),await iT(e,r,u,s)):await aT(e,t,r,s,i)}),s):(U.warn(`No leader tab available for auth-state injection`),s)}async function sT(e,t,n,r){if(n.phase===`teleporting`||n.phase===`waitingForReturn`){n.phase=`capturing`,U.info(`Capturing auth state from follower`),U.debug(`Capturing auth state from follower details`,{followerTargetId:n.followerTargetId,runtimeId:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0),n.timeoutTimer&&=(clearTimeout(n.timeoutTimer),void 0);try{let{cookies:t,followerStorage:i,finalUrl:a}=await rT(e,n),o=Mw(i),s=await oT(e,n,t,i,a);n.phase=`done`,$w(n);let c=t.length>0?` (${jw(t)})`:``,l=o>0?` + ${o} storage entr${o===1?`y`:`ies`}`:``,u=s?` (navigated to ${s})`:``,d=`Teleported ${t.length} cookie(s)${c}${l} from ${r}${u}`;U.info(`Teleport completed successfully`,{cookieCount:t.length,storageEntries:o,landed:!!s}),U.debug(`Teleport completed successfully details`,{result:d}),n.resolveBlock?.(d)}catch(t){U.error(`Teleport auth-state capture failed`,{error:String(t)}),await Gw(e,n,`capture-error`),n.phase=`done`,$w(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}const cT=e(`playwright`),lT=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`goto requires a URL
1124
- `,exitCode:1};let o=j(i);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};await a(o.targetId,e=>e.navigate(r[0])),n.snapshots.delete(o.targetId);let s=i[`teleport-start`],c=i[`teleport-return`];if(s&&c){cT.info(`Arming teleport via goto/navigate flags`),cT.debug(`Arming teleport via goto/navigate flags details`,{targetId:o.targetId,startPattern:s,returnPattern:c});let t,a;try{t=new RegExp(s)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-start: ${s}\n`,exitCode:1}}try{a=new RegExp(c)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-return: ${c}\n`,exitCode:1}}let l=i.timeout?parseInt(i.timeout,10):300,u=n.teleportWatchers.get(o.targetId);u&&($w(u),n.teleportWatchers.delete(o.targetId)),eT(e,n,t,a,l*1e3,i[`teleport-runtime`],r[0],o.targetId)}if(i.discover===`true`){let{browseShWarning:e,...n}=await ew(r[0],{discover:!0,fs:t}),i={action:`navigate`,targetId:o.targetId,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(i,null,2)+`
1125
- `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Navigated to ${r[0]}\n`,stderr:``,exitCode:0}},uT=async({browser:e,state:t,flags:n,onTab:r})=>{let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`history.back()`)}),t.snapshots.delete(i.targetId),{stdout:`Navigated back
1126
- `,stderr:``,exitCode:0})},dT=async({browser:e,state:t,flags:n,onTab:r})=>{let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`history.forward()`)}),t.snapshots.delete(i.targetId),{stdout:`Navigated forward
1127
- `,stderr:``,exitCode:0})},fT=async({browser:e,flags:t,onTab:n})=>{let r=j(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:(await n(r.targetId,async e=>{await e.send(`Page.reload`)}),{stdout:`Reloaded
1128
- `,stderr:``,exitCode:0})},pT=async({browser:e,flags:t,positional:n,onTab:r})=>{let i=j(t);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=n[0];return a!==`online`&&a!==`offline`?{stdout:``,stderr:`network-state-set requires "online" or "offline"
1129
- `,exitCode:1}:(await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Network.enable`,{},e),await t.send(`Network.emulateNetworkConditions`,{offline:a===`offline`,latency:0,downloadThroughput:-1,uploadThroughput:-1},e)}),{stdout:`Network set to ${a}\n`,stderr:``,exitCode:0})},mT=[`image/`,`font/`,`text/css`,`application/javascript`,`text/javascript`];function hT(e,t){if(e&&mT.some(t=>e.startsWith(t)))return!0;try{let e=new URL(t).pathname;return/\.(png|jpe?g|gif|webp|svg|ico|woff2?|ttf|eot|otf|css|js|mjs)$/i.test(e)}catch{return!1}}function gT(e,t,n,r,i){if(t.networkCleanup.has(r))return;t.networkRequests.set(r,[]),t.networkRequestIndex.set(r,new Map);let a=1,o=EC({browser:e,targetId:r,transport:n,sessionId:i,listeners:[[`Network.requestWillBeSent`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId,s=n.request;if(!i||!s)return;let c=t.networkRequests.get(r),l=t.networkRequestIndex.get(r);if(!c||!l)return;let u=s.url??``,d={index:a++,requestId:i,method:s.method??`GET`,url:u,requestHeaders:s.headers??{},requestBody:s.postData==null?null:String(s.postData),status:null,responseHeaders:null,responseBody:null,responseBodyBase64:!1,mimeType:null,isStatic:hT(null,u),timestamp:Date.now()};if(c.push(d),l.set(i,d),c.length>500){let e=c.splice(0,c.length-500);for(let t of e)l.delete(t.requestId)}}],[`Network.responseReceived`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId,a=n.response;if(!i||!a)return;let s=t.networkRequestIndex.get(r)?.get(i);s&&(s.status=a.status??null,s.responseHeaders=a.headers??null,s.mimeType=a.mimeType??null,s.isStatic=hT(s.mimeType,s.url))}],[`Network.loadingFinished`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId;if(!i)return;let a=t.networkRequestIndex.get(r)?.get(i);!a||a.isStatic||a.responseBody!==null||o.transport.send(`Network.getResponseBody`,{requestId:i},o.sessionId).then(e=>{let t=e;t&&(a.responseBody=t.body??null,a.responseBodyBase64=t.base64Encoded===!0)}).catch(()=>{})}]],enable:(e,t)=>e.send(`Network.enable`,{},t)});t.networkCleanup.set(r,()=>o.stop())}function _T(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<55296||n>57343)continue;if(n>=56320)return t;let r=e.charCodeAt(t+1);if(Number.isNaN(r)||r<56320||r>57343)return t;t++}return-1}function vT(e,t){if(t){let t;try{t=atob(e)}catch{return{error:`response body is flagged base64 but is not valid base64`}}let n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return{bytes:n}}let n=_T(e);return n>=0?{error:`response body has an unpaired surrogate at index ${n} and cannot be saved without substituting U+FFFD`}:{bytes:new TextEncoder().encode(e)}}function yT(e,t,n){let r=parseInt(n,10);return!Number.isFinite(r)||r<1?null:(e.networkRequests.get(t)??[]).find(e=>e.index===r)??null}const bT=async({browser:e,state:t,flags:n,onTab:r})=>{let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};t.networkCleanup.has(i.targetId)||await r(i.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),gT(e,t,r,i.targetId,n)});let a=n.static===`true`,o=n.filter,s=n.clear===`true`,c=t.networkRequests.get(i.targetId)??[];if(a||(c=c.filter(e=>!e.isStatic)),o){let e;try{e=new RegExp(o)}catch{return{stdout:``,stderr:`Invalid filter regex: ${o}\n`,exitCode:1}}c=c.filter(t=>e.test(t.url))}return s&&(t.networkRequests.set(i.targetId,[]),t.networkRequestIndex.set(i.targetId,new Map)),c.length===0?{stdout:`No requests
1118
+ }))()`);if(typeof t!=`string`||t.length===0)return{url:``,title:``,bodySnippet:`(unavailable)`};try{let e=JSON.parse(t);return{url:typeof e.url==`string`?e.url:``,title:typeof e.title==`string`?e.title:``,bodySnippet:typeof e.bodySnippet==`string`&&e.bodySnippet.length>0?e.bodySnippet:`(empty)`}}catch{return{url:``,title:``,bodySnippet:`(unparseable)`}}}function bw(e){return/callback|authorize\/resume|error/i.test(e)}async function xw(e,t,n){try{let r=await yw(e),i=`${n}:${r.url}:${r.title}`;if(t.lastFollowerDiagnosticKey===i)return;t.lastFollowerDiagnosticKey=i,ow.debug(`Teleport follower diagnostics`,{reason:n,url:r.url,title:r.title,bodySnippet:r.bodySnippet})}catch(e){ow.warn(`Could not capture teleport follower diagnostics`,{reason:n,error:String(e)})}}async function Sw(e,t,n){let r=t.followerStorageScript;if(r){t.followerStorageScript=null;try{await e.withTab(r.targetId,e=>vw(e,r,`follower`)),ow.info(`Removed follower teleport storage init script`,{reason:n})}catch(e){ow.warn(`Failed to remove follower teleport storage init script`,{reason:n,error:String(e)})}}}function Cw(e){return Array.isArray(e)?e:[]}const U=e(`playwright-teleport`);let ww=null,Tw=null;function Ew(e){ww=e}function Dw(e){Tw=e}function Ow(){return Tw?.()??null}async function kw(e,t){if(U.warn(`Teleport timed out`,{timeoutMs:t.timeoutMs,phase:t.phase}),U.debug(`Teleport timeout details`,{timeoutMs:t.timeoutMs,phase:t.phase,followerTargetId:t.followerTargetId}),t.phase=`timedOut`,t.followerTargetId){try{await e.withTab(t.followerTargetId,e=>xw(e,t,`timeout`))}catch(e){U.warn(`Could not attach to follower for timeout diagnostics`,{error:String(e)})}await Sw(e,t,`timeout`)}if(Aw(t),t.followerTargetId)try{await e.closePage(t.followerTargetId)}catch(e){U.warn(`Failed to close follower tab after timeout`,{error:String(e)})}t.rejectBlock?.(Error(`Teleport timed out after ${Math.round(t.timeoutMs/1e3)}s — human did not complete auth`))}function Aw(e){U.info(`Cleaning up teleport watcher`,{phase:e.phase,hadPoll:!!e.pollInterval,hadTimeout:!!e.timeoutTimer,hadListener:!!e.cleanupListener}),e.pollInterval&&=(clearInterval(e.pollInterval),void 0),e.timeoutTimer&&=(clearTimeout(e.timeoutTimer),void 0),e.cleanupListener&&=(e.cleanupListener(),void 0)}function jw(e,t,n,r,i,a,o,s){if(a===`preview`)throw Error(`cannot teleport to a preview target (no Network.*)`);U.info(`Arming teleport watcher`,{timeoutMs:i,runtimeSelection:a?`explicit`:`auto`}),U.debug(`Arming teleport watcher details`,{startPattern:n.source,returnPattern:r.source,timeoutMs:i,runtimeId:a??`auto`,originalUrl:o});let c={startPattern:n,returnPattern:r,timeoutMs:i,runtimeId:a,phase:`armed`,leaderTargetId:s,originalLeaderUrl:o};return c.completionPromise=new Promise((e,t)=>{c.resolveBlock=e,c.rejectBlock=t}),c.completionPromise.catch(()=>{}),c.pollInterval=setInterval(()=>{(async()=>{if(c.phase!==`armed`)return;let r=c.leaderTargetId;if(r)try{let i=await e.withTab(r,e=>e.evaluate(`window.location.href`)),a=typeof i==`string`?i:String(i);U.debug(`Polling leader tab URL`,{targetId:r,href:a,startPattern:n.source}),n.test(a)&&(U.info(`Teleport start pattern matched on leader`),U.debug(`Teleport start pattern matched on leader details`,{targetId:r,href:a,startPattern:n.source}),Nw(e,t,c,a).catch(e=>{U.error(`Unhandled teleport trigger error`,{error:String(e)})}))}catch(e){U.warn(`Error polling leader tab URL`,{targetId:r,error:String(e)})}})().catch(e=>{U.warn(`Leader teleport poll failed`,{error:String(e)})})},1e3),s&&t.teleportWatchers.set(s,c),c}async function Mw(e,t,n,r,i){if(n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)try{let a=await e.withTab(r,e=>e.evaluate(`window.location.href`)),o=typeof a==`string`?a:String(a);if(!o)return;if(n.lastFollowerUrl!==o&&(n.lastFollowerUrl=o,U.debug(`Follower teleport navigation`,{href:o,phase:n.phase})),n.phase===`waitingForAuth`){n.startPattern.test(o)?(n.phase=`waitingForReturn`,U.info(`Follower reached auth provider; waiting for return pattern`),U.debug(`Follower reached auth provider details`,{href:o,startPattern:n.startPattern.source})):U.debug(`Waiting for auth redirect on follower`,{href:o,startPattern:n.startPattern.source});return}U.debug(`Polling follower tab URL for return`,{href:o,returnPattern:n.returnPattern.source}),bw(o)&&await e.withTab(r,e=>xw(e,n,`waiting-for-return`)),n.returnPattern.test(o)&&(U.info(`Follower return pattern matched after auth`),U.debug(`Follower return pattern matched after auth details`,{href:o,returnPattern:n.returnPattern.source}),Rw(e,t,n,i).catch(e=>{U.error(`Unhandled teleport capture error`,{error:String(e)})}))}catch(e){U.warn(`Error polling follower tab URL`,{error:String(e)})}}async function Nw(e,t,n,r){if(n.phase===`armed`){n.phase=`teleporting`,U.info(`Teleport triggered`),U.debug(`Teleport trigger details`,{triggerUrl:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0);try{let i=n.leaderTargetId;if(!i)throw Error(`teleport has no leader tab to capture from`);let a=[],o=sw;try{a=Cw((await e.withTab(i,e=>e.send(`Network.getCookies`,{}))).cookies),U.info(`Captured leader cookies for follower`,{count:a.length})}catch(e){U.warn(`Could not capture leader cookies`,{error:String(e)})}try{o=await e.withTab(i,e=>pw(e,`leader`)),U.info(`Captured leader storage for follower`,{totalEntries:lw(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),U.debug(`Captured leader storage for follower details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){U.warn(`Could not capture leader storage`,{error:String(e)})}let s=n.runtimeId;if(!s){let e=ww?.();if(!e)throw Error(`No follower selection available — not connected to a tray`);let t=e();if(!t)throw Error(`No followers connected to teleport to`);s=t.runtimeId}U.info(`Selected follower for teleport`),U.debug(`Selected follower for teleport details`,{runtimeId:s});let c=await e.createRemotePage(s,`about:blank`),l=c.includes(`:`)?c:`${s}:${c}`;n.followerTargetId=l,U.info(`Opened follower tab for teleport`),U.debug(`Opened follower tab for teleport details`,{followerTargetId:l});let u=r;await e.withTab(l,async e=>{if(await e.send(`Page.enable`),a.length>0)try{await e.send(`Network.setCookies`,{cookies:a}),U.info(`Injected leader cookies into follower`,{count:a.length})}catch(e){U.warn(`Could not inject leader cookies into follower`,{error:String(e)})}n.followerStorageScript=await _w(e,o,`follower`),U.info(`Navigating follower to intercepted auth URL`),U.debug(`Navigating follower to intercepted auth URL details`,{url:u,originalLeaderUrl:n.originalLeaderUrl,triggerUrl:r,storageOrigin:o.origin||`(unknown)`}),await e.send(`Page.navigate`,{url:u})}),U.info(`Starting teleport timeout timer`,{timeoutMs:n.timeoutMs}),n.timeoutTimer=setTimeout(()=>{(n.phase===`teleporting`||n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)&&kw(e,n).catch(e=>{U.error(`Teleport timeout handler failed`,{error:String(e)})})},n.timeoutMs),n.phase=`waitingForAuth`,U.info(`Teleport waiting for follower auth redirect`),U.debug(`Teleport waiting for follower auth redirect details`,{startPattern:n.startPattern.source}),n.pollInterval=setInterval(()=>{Mw(e,t,n,l,s).catch(e=>{U.warn(`Follower teleport poll failed`,{error:String(e)})})},1e3)}catch(t){U.error(`Teleport trigger failed`,{error:String(t)}),await Sw(e,n,`trigger-error`),n.phase=`done`,Aw(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}async function Pw(e,t){U.info(`Waiting for redirect chain to settle (2s)`),await new Promise(e=>setTimeout(e,2e3));let n=t.followerTargetId,r=t.followerStorageScript??null;t.followerStorageScript=null;let{cookies:i,followerStorage:a,finalUrl:o}=await e.withTab(n,async e=>{let n;try{let t=await e.evaluate(`window.location.href`);n=typeof t==`string`?t:String(t),U.debug(`Captured final URL from follower`,{finalUrl:n})}catch(e){U.warn(`Could not read follower URL (may be mid-navigation)`,{error:String(e)})}try{let t=await e.evaluate(`document.body?.innerText?.substring(0, 500) || "(empty)"`);U.debug(`Follower page content at capture time`,{bodyText:t})}catch(e){U.warn(`Could not read follower page content`,{error:String(e)})}let i=Cw((await e.send(`Network.getCookies`)).cookies),a=i.length>0?cw(i):`none`;U.info(`Captured cookies from follower`,{count:i.length}),U.debug(`Captured cookies from follower details`,{count:i.length,domains:a});let o=sw;try{o=await pw(e,`follower`),U.info(`Captured follower storage for leader`,{totalEntries:lw(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),U.debug(`Captured follower storage for leader details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){U.warn(`Could not capture follower storage`,{error:String(e)})}return await xw(e,t,`capture`),await vw(e,r,`follower`),{cookies:i,followerStorage:o,finalUrl:n}});try{await e.closePage(t.followerTargetId),U.info(`Closed follower tab after teleport`),U.debug(`Closed follower tab after teleport details`,{followerTargetId:t.followerTargetId})}catch(e){U.warn(`Failed to close follower tab`,{error:String(e)})}return{cookies:i,followerStorage:a,finalUrl:o}}async function Fw(e,t,n,r){try{await e.navigate(n),await gw(e,t,`leader`),r&&r!==n&&await e.navigate(r)}catch(i){U.warn(`Direct leader origin hydration failed, falling back to init-script replay`,{error:String(i)}),U.debug(`Direct leader origin hydration fallback details`,{hydrationUrl:n,landingUrl:r,error:String(i)});let a=await _w(e,t,`leader`);try{r&&await e.navigate(r)}finally{await vw(e,a,`leader`)}}}async function Iw(e,t,n,r,i){let a=e.targetId,o=await _w(e,n,`leader`);try{r&&(U.info(`Navigating leader after auth-state injection`,{hasLandingUrl:!0,storageEntries:lw(n)}),U.debug(`Navigating leader after auth-state injection details`,{landingUrl:r,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:n.origin||`(unknown)`,storageEntries:lw(n)}),await e.navigate(r))}finally{await vw(e,o,`leader`)}}async function Lw(e,t,n,r,i){let a=t.leaderTargetId,o=r.origin||``,s=fw(o,t.originalLeaderUrl,i),c=uw(t.originalLeaderUrl),l=!!o&&c!==o,u=l?dw(o):null;return a?(await e.withTab(a,async e=>{n.length>0&&(await e.send(`Network.setCookies`,{cookies:n}),U.info(`Injected cookies into leader tab`,{count:n.length}),U.debug(`Injected cookies into leader tab details`,{count:n.length,leaderTargetId:a})),l&&u?(U.info(`Hydrating leader storage origin before landing`,{storageEntries:lw(r)}),U.debug(`Hydrating leader storage origin before landing details`,{hydrationUrl:u,landingUrl:s,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:o,storageEntries:lw(r)}),await Fw(e,r,u,s)):await Iw(e,t,r,s,i)}),s):(U.warn(`No leader tab available for auth-state injection`),s)}async function Rw(e,t,n,r){if(n.phase===`teleporting`||n.phase===`waitingForReturn`){n.phase=`capturing`,U.info(`Capturing auth state from follower`),U.debug(`Capturing auth state from follower details`,{followerTargetId:n.followerTargetId,runtimeId:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0),n.timeoutTimer&&=(clearTimeout(n.timeoutTimer),void 0);try{let{cookies:t,followerStorage:i,finalUrl:a}=await Pw(e,n),o=lw(i),s=await Lw(e,n,t,i,a);n.phase=`done`,Aw(n);let c=t.length>0?` (${cw(t)})`:``,l=o>0?` + ${o} storage entr${o===1?`y`:`ies`}`:``,u=s?` (navigated to ${s})`:``,d=`Teleported ${t.length} cookie(s)${c}${l} from ${r}${u}`;U.info(`Teleport completed successfully`,{cookieCount:t.length,storageEntries:o,landed:!!s}),U.debug(`Teleport completed successfully details`,{result:d}),n.resolveBlock?.(d)}catch(t){U.error(`Teleport auth-state capture failed`,{error:String(t)}),await Sw(e,n,`capture-error`),n.phase=`done`,Aw(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}const zw=e(`playwright`),Bw=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`goto requires a URL
1119
+ `,exitCode:1};let o=j(i);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};await a(o.targetId,e=>e.navigate(r[0])),n.snapshots.delete(o.targetId);let s=i[`teleport-start`],c=i[`teleport-return`];if(s&&c){zw.info(`Arming teleport via goto/navigate flags`),zw.debug(`Arming teleport via goto/navigate flags details`,{targetId:o.targetId,startPattern:s,returnPattern:c});let t,a;try{t=new RegExp(s)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-start: ${s}\n`,exitCode:1}}try{a=new RegExp(c)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-return: ${c}\n`,exitCode:1}}let l=i.timeout?parseInt(i.timeout,10):300,u=n.teleportWatchers.get(o.targetId);u&&(Aw(u),n.teleportWatchers.delete(o.targetId)),jw(e,n,t,a,l*1e3,i[`teleport-runtime`],r[0],o.targetId)}if(i.discover===`true`){let{browseShWarning:e,...n}=await jC(r[0],{discover:!0,fs:t}),i={action:`navigate`,targetId:o.targetId,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(i,null,2)+`
1120
+ `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Navigated to ${r[0]}\n`,stderr:``,exitCode:0}},Vw=async({browser:e,state:t,flags:n,onTab:r})=>{let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`history.back()`)}),t.snapshots.delete(i.targetId),{stdout:`Navigated back
1121
+ `,stderr:``,exitCode:0})},Hw=async({browser:e,state:t,flags:n,onTab:r})=>{let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`history.forward()`)}),t.snapshots.delete(i.targetId),{stdout:`Navigated forward
1122
+ `,stderr:``,exitCode:0})},Uw=async({browser:e,flags:t,onTab:n})=>{let r=j(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:(await n(r.targetId,async e=>{await e.send(`Page.reload`)}),{stdout:`Reloaded
1123
+ `,stderr:``,exitCode:0})},Ww=async({browser:e,flags:t,positional:n,onTab:r})=>{let i=j(t);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};let a=n[0];return a!==`online`&&a!==`offline`?{stdout:``,stderr:`network-state-set requires "online" or "offline"
1124
+ `,exitCode:1}:(await r(i.targetId,async({sessionId:e,transport:t})=>{await t.send(`Network.enable`,{},e),await t.send(`Network.emulateNetworkConditions`,{offline:a===`offline`,latency:0,downloadThroughput:-1,uploadThroughput:-1},e)}),{stdout:`Network set to ${a}\n`,stderr:``,exitCode:0})},Gw=[`image/`,`font/`,`text/css`,`application/javascript`,`text/javascript`];function Kw(e,t){if(e&&Gw.some(t=>e.startsWith(t)))return!0;try{let e=new URL(t).pathname;return/\.(png|jpe?g|gif|webp|svg|ico|woff2?|ttf|eot|otf|css|js|mjs)$/i.test(e)}catch{return!1}}function qw(e,t,n,r,i){if(t.networkCleanup.has(r))return;t.networkRequests.set(r,[]),t.networkRequestIndex.set(r,new Map);let a=1,o=rC({browser:e,targetId:r,transport:n,sessionId:i,listeners:[[`Network.requestWillBeSent`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId,s=n.request;if(!i||!s)return;let c=t.networkRequests.get(r),l=t.networkRequestIndex.get(r);if(!c||!l)return;let u=s.url??``,d={index:a++,requestId:i,method:s.method??`GET`,url:u,requestHeaders:s.headers??{},requestBody:s.postData==null?null:String(s.postData),status:null,responseHeaders:null,responseBody:null,responseBodyBase64:!1,mimeType:null,isStatic:Kw(null,u),timestamp:Date.now()};if(c.push(d),l.set(i,d),c.length>500){let e=c.splice(0,c.length-500);for(let t of e)l.delete(t.requestId)}}],[`Network.responseReceived`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId,a=n.response;if(!i||!a)return;let s=t.networkRequestIndex.get(r)?.get(i);s&&(s.status=a.status??null,s.responseHeaders=a.headers??null,s.mimeType=a.mimeType??null,s.isStatic=Kw(s.mimeType,s.url))}],[`Network.loadingFinished`,e=>{let n=e;if(n.sessionId!==o.sessionId)return;let i=n.requestId;if(!i)return;let a=t.networkRequestIndex.get(r)?.get(i);!a||a.isStatic||a.responseBody!==null||o.transport.send(`Network.getResponseBody`,{requestId:i},o.sessionId).then(e=>{let t=e;t&&(a.responseBody=t.body??null,a.responseBodyBase64=t.base64Encoded===!0)}).catch(()=>{})}]],enable:(e,t)=>e.send(`Network.enable`,{},t)});t.networkCleanup.set(r,()=>o.stop())}function Jw(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<55296||n>57343)continue;if(n>=56320)return t;let r=e.charCodeAt(t+1);if(Number.isNaN(r)||r<56320||r>57343)return t;t++}return-1}function Yw(e,t){if(t){let t;try{t=atob(e)}catch{return{error:`response body is flagged base64 but is not valid base64`}}let n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return{bytes:n}}let n=Jw(e);return n>=0?{error:`response body has an unpaired surrogate at index ${n} and cannot be saved without substituting U+FFFD`}:{bytes:new TextEncoder().encode(e)}}function Xw(e,t,n){let r=parseInt(n,10);return!Number.isFinite(r)||r<1?null:(e.networkRequests.get(t)??[]).find(e=>e.index===r)??null}const Zw=async({browser:e,state:t,flags:n,onTab:r})=>{let i=j(n);if(`error`in i)return{stdout:``,stderr:i.error,exitCode:1};t.networkCleanup.has(i.targetId)||await r(i.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),qw(e,t,r,i.targetId,n)});let a=n.static===`true`,o=n.filter,s=n.clear===`true`,c=t.networkRequests.get(i.targetId)??[];if(a||(c=c.filter(e=>!e.isStatic)),o){let e;try{e=new RegExp(o)}catch{return{stdout:``,stderr:`Invalid filter regex: ${o}\n`,exitCode:1}}c=c.filter(t=>e.test(t.url))}return s&&(t.networkRequests.set(i.targetId,[]),t.networkRequestIndex.set(i.targetId,new Map)),c.length===0?{stdout:`No requests
1130
1125
  `,stderr:``,exitCode:0}:{stdout:c.map(e=>`${e.index} ${e.method} ${e.url} → ${e.status??`pending`}`).join(`
1131
1126
  `)+`
1132
- `,stderr:``,exitCode:0}},xT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),gT(e,t,r,o.targetId,n)});let s=n[0]??``,c=yT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};let l=[`Method: ${c.method}`,`URL: ${c.url}`,`Status: ${c.status??`pending`}`,``,`Request Headers:`,...Object.entries(c.requestHeaders).map(([e,t])=>` ${e}: ${t}`)];if(c.requestBody!==null&&l.push(``,`Request Body: ${c.requestBody}`),c.responseHeaders!==null&&(l.push(``,`Response Headers:`),l.push(...Object.entries(c.responseHeaders).map(([e,t])=>` ${e}: ${t}`))),c.responseBody!==null){let e=c.responseBody,t=e.length>4096?e.slice(0,4096)+`
1127
+ `,stderr:``,exitCode:0}},Qw=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),qw(e,t,r,o.targetId,n)});let s=n[0]??``,c=Xw(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};let l=[`Method: ${c.method}`,`URL: ${c.url}`,`Status: ${c.status??`pending`}`,``,`Request Headers:`,...Object.entries(c.requestHeaders).map(([e,t])=>` ${e}: ${t}`)];if(c.requestBody!==null&&l.push(``,`Request Body: ${c.requestBody}`),c.responseHeaders!==null&&(l.push(``,`Response Headers:`),l.push(...Object.entries(c.responseHeaders).map(([e,t])=>` ${e}: ${t}`))),c.responseBody!==null){let e=c.responseBody,t=e.length>4096?e.slice(0,4096)+`
1133
1128
  ... (truncated)`:e,n=c.responseBodyBase64?`Response Body (base64)`:`Response Body`;l.push(``,`${n}:\n${t}`)}let u=l.join(`
1134
1129
  `)+`
1135
- `,d=r.filename;return d?(await i.writeFile(d,u),{stdout:`Saved to ${d}\n`,stderr:``,exitCode:0}):{stdout:u,stderr:``,exitCode:0}},ST=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),gT(e,t,r,o.targetId,n)});let s=n[0]??``,c=yT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};let l=Object.entries(c.requestHeaders).map(([e,t])=>`${e}: ${t}`).join(`
1130
+ `,d=r.filename;return d?(await i.writeFile(d,u),{stdout:`Saved to ${d}\n`,stderr:``,exitCode:0}):{stdout:u,stderr:``,exitCode:0}},$w=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),qw(e,t,r,o.targetId,n)});let s=n[0]??``,c=Xw(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};let l=Object.entries(c.requestHeaders).map(([e,t])=>`${e}: ${t}`).join(`
1136
1131
  `)+`
1137
- `,u=r.filename;return u?(await i.writeFile(u,l),{stdout:`Saved to ${u}\n`,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}},CT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),gT(e,t,r,o.targetId,n)});let s=n[0]??``,c=yT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.requestBody===null)return{stdout:`(no request body)
1132
+ `,u=r.filename;return u?(await i.writeFile(u,l),{stdout:`Saved to ${u}\n`,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}},eT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),qw(e,t,r,o.targetId,n)});let s=n[0]??``,c=Xw(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.requestBody===null)return{stdout:`(no request body)
1138
1133
  `,stderr:``,exitCode:0};let l=r.filename;return l?(await i.writeFile(l,c.requestBody),{stdout:`Saved to ${l}\n`,stderr:``,exitCode:0}):{stdout:c.requestBody+`
1139
- `,stderr:``,exitCode:0}},wT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),gT(e,t,r,o.targetId,n)});let s=n[0]??``,c=yT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.responseHeaders===null)return{stdout:`(response not yet received)
1134
+ `,stderr:``,exitCode:0}},tT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),qw(e,t,r,o.targetId,n)});let s=n[0]??``,c=Xw(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.responseHeaders===null)return{stdout:`(response not yet received)
1140
1135
  `,stderr:``,exitCode:0};let l=Object.entries(c.responseHeaders).map(([e,t])=>`${e}: ${t}`).join(`
1141
1136
  `)+`
1142
- `,u=r.filename;return u?(await i.writeFile(u,l),{stdout:`Saved to ${u}\n`,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}},TT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),gT(e,t,r,o.targetId,n)});let s=n[0]??``,c=yT(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.responseBody===null)return{stdout:`(response body not yet available)
1143
- `,stderr:``,exitCode:0};let l=r.filename,u=vT(c.responseBody,c.responseBodyBase64);if(`error`in u)return{stdout:``,stderr:`Request ${s}: ${u.error}\n`,exitCode:1};if(l)return await i.writeFile(l,u.bytes),{stdout:`Saved to ${l}\n`,stderr:``,exitCode:0};if(c.mimeType!==null&&!c.mimeType.startsWith(`text/`)&&!c.mimeType.includes(`json`)&&!c.mimeType.includes(`javascript`)&&!c.mimeType.includes(`xml`))return{stdout:`[binary body, ${u.bytes.length} bytes]\n`,stderr:``,exitCode:0};let d=c.responseBodyBase64?new TextDecoder().decode(u.bytes):c.responseBody;return{stdout:(d.length>4096?d.slice(0,4096)+`
1137
+ `,u=r.filename;return u?(await i.writeFile(u,l),{stdout:`Saved to ${u}\n`,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}},nT=async({browser:e,state:t,positional:n,flags:r,fs:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};t.networkCleanup.has(o.targetId)||await a(o.targetId,async({sessionId:n,transport:r})=>{await r.send(`Network.enable`,{},n),qw(e,t,r,o.targetId,n)});let s=n[0]??``,c=Xw(t,o.targetId,s);if(!c)return{stdout:``,stderr:`No request at index ${s}\n`,exitCode:1};if(c.responseBody===null)return{stdout:`(response body not yet available)
1138
+ `,stderr:``,exitCode:0};let l=r.filename,u=Yw(c.responseBody,c.responseBodyBase64);if(`error`in u)return{stdout:``,stderr:`Request ${s}: ${u.error}\n`,exitCode:1};if(l)return await i.writeFile(l,u.bytes),{stdout:`Saved to ${l}\n`,stderr:``,exitCode:0};if(c.mimeType!==null&&!c.mimeType.startsWith(`text/`)&&!c.mimeType.includes(`json`)&&!c.mimeType.includes(`javascript`)&&!c.mimeType.includes(`xml`))return{stdout:`[binary body, ${u.bytes.length} bytes]\n`,stderr:``,exitCode:0};let d=c.responseBodyBase64?new TextDecoder().decode(u.bytes):c.responseBody;return{stdout:(d.length>4096?d.slice(0,4096)+`
1144
1139
  ... (truncated)`:d)+`
1145
- `,stderr:``,exitCode:0}},ET=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a,signal:o})=>{let s=r[0]||`about:blank`,c=i.filter;await se(e,n),Ln(o,`about to open the recording tab`);let l=await e.createPage(s);try{let{transport:r,sessionId:i}=await a(l,async e=>{let t=await e.transport.send(`Target.attachToTarget`,{targetId:l,flatten:!0});return{transport:e.transport,sessionId:t.sessionId}});n.harRecorder||=e.createHarRecorder(t,r);let u=await n.harRecorder.startRecording(l,i,c,o);return{stdout:`Recording started (targetId: ${l}, recordingId: ${u}) at ${s}\nHAR saved to /recordings/${u}/\n`,stderr:``,exitCode:0}}catch(t){throw await e.closePage(l).catch(()=>void 0),t}},DT=async({state:e,positional:t})=>{if(t.length===0)return{stdout:``,stderr:`stop-recording requires a recordingId
1146
- `,exitCode:1};let n=t[0];return e.harRecorder?{stdout:`Recording stopped. HAR files saved to ${await e.harRecorder.stopRecording(n)}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`Recording not found: ${n}\n`,exitCode:1}},OT=e(`playwright-route`),kT=[{urlPattern:`*`,requestStage:`Request`}];function AT(e){let t=e.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(/\*\*/g,`@@`).replace(/\*/g,`[^/]*`).replace(/@@/g,`.*`);return RegExp(`^${t}$`)}async function jT(e,n,r,i,a){if(a.sessionId!==n)return;let{requestId:o,request:s}=a,c=(r.routes.get(i)??[]).find(e=>e.regex.test(s.url));if(!c){await e.send(`Fetch.continueRequest`,{requestId:o},n).catch(e=>{OT.warn(`Fetch.continueRequest failed — intercepted request may hang`,{requestId:o,err:e})});return}let l=[{name:`Content-Type`,value:c.contentType},...Object.entries(c.headers).map(([e,t])=>({name:e,value:t}))];await e.send(`Fetch.fulfillRequest`,{requestId:o,responseCode:c.status,responseHeaders:l,body:c.body?t(new TextEncoder().encode(c.body)):void 0},n).catch(e=>{OT.warn(`Fetch.fulfillRequest failed`,{requestId:o,url:s.url,err:e})})}async function MT(e,t,n,r){await t(r,async({sessionId:t,transport:i})=>{await i.send(`Fetch.enable`,{patterns:kT},t);let a,o=e=>{a&&jT(a.transport,a.sessionId,n,r,e)};try{a=EC({browser:e,targetId:r,transport:i,sessionId:t,listeners:[[`Fetch.requestPaused`,o]],enable:(e,t)=>e.send(`Fetch.enable`,{patterns:kT},t)})}catch(e){throw await i.send(`Fetch.disable`,{},t).catch(()=>void 0),e}let s=a;n.routeCleanup.set(r,()=>{s.stop(),s.transport.send(`Fetch.disable`,{},s.sessionId).catch(()=>void 0)})})}const NT=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`route requires a URL pattern
1147
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s={pattern:o,regex:AT(o),status:r.status?parseInt(r.status,10):200,body:r.body??``,contentType:r[`content-type`]??`text/plain`,headers:{}};if(r.header){r.header.includes(`,`)&&OT.warn(`--header value contains comma — only last segment used. Use separate route calls for multiple headers.`);for(let e of r.header.split(`,`)){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();s.headers[n]=r}}}t.routeCleanup.has(a.targetId)||(t.routes.has(a.targetId)||t.routes.set(a.targetId,[]),await MT(e,i,t,a.targetId));let c=t.routes.get(a.targetId)??[];return c.unshift(s),t.routes.set(a.targetId,c),{stdout:`Route added: ${o}\n`,stderr:``,exitCode:0}},PT=async({state:e,flags:t})=>{let n=j(t);if(`error`in n)return{stdout:``,stderr:n.error,exitCode:1};let r=e.routes.get(n.targetId)??[];return r.length===0?{stdout:`No active routes
1140
+ `,stderr:``,exitCode:0}},rT=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a,signal:o})=>{let s=r[0]||`about:blank`,c=i.filter;await se(e,n),Pn(o,`about to open the recording tab`);let l=await e.createPage(s);try{let{transport:r,sessionId:i}=await a(l,async e=>{let t=await e.transport.send(`Target.attachToTarget`,{targetId:l,flatten:!0});return{transport:e.transport,sessionId:t.sessionId}});n.harRecorder||=e.createHarRecorder(t,r);let u=await n.harRecorder.startRecording(l,i,c,o);return{stdout:`Recording started (targetId: ${l}, recordingId: ${u}) at ${s}\nHAR saved to /recordings/${u}/\n`,stderr:``,exitCode:0}}catch(t){throw await e.closePage(l).catch(()=>void 0),t}},iT=async({state:e,positional:t})=>{if(t.length===0)return{stdout:``,stderr:`stop-recording requires a recordingId
1141
+ `,exitCode:1};let n=t[0];return e.harRecorder?{stdout:`Recording stopped. HAR files saved to ${await e.harRecorder.stopRecording(n)}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`Recording not found: ${n}\n`,exitCode:1}},aT=e(`playwright-route`),oT=[{urlPattern:`*`,requestStage:`Request`}];function sT(e){let t=e.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(/\*\*/g,`@@`).replace(/\*/g,`[^/]*`).replace(/@@/g,`.*`);return RegExp(`^${t}$`)}async function cT(e,n,r,i,a){if(a.sessionId!==n)return;let{requestId:o,request:s}=a,c=(r.routes.get(i)??[]).find(e=>e.regex.test(s.url));if(!c){await e.send(`Fetch.continueRequest`,{requestId:o},n).catch(e=>{aT.warn(`Fetch.continueRequest failed — intercepted request may hang`,{requestId:o,err:e})});return}let l=[{name:`Content-Type`,value:c.contentType},...Object.entries(c.headers).map(([e,t])=>({name:e,value:t}))];await e.send(`Fetch.fulfillRequest`,{requestId:o,responseCode:c.status,responseHeaders:l,body:c.body?t(new TextEncoder().encode(c.body)):void 0},n).catch(e=>{aT.warn(`Fetch.fulfillRequest failed`,{requestId:o,url:s.url,err:e})})}async function lT(e,t,n,r){await t(r,async({sessionId:t,transport:i})=>{await i.send(`Fetch.enable`,{patterns:oT},t);let a,o=e=>{a&&cT(a.transport,a.sessionId,n,r,e)};try{a=rC({browser:e,targetId:r,transport:i,sessionId:t,listeners:[[`Fetch.requestPaused`,o]],enable:(e,t)=>e.send(`Fetch.enable`,{patterns:oT},t)})}catch(e){throw await i.send(`Fetch.disable`,{},t).catch(()=>void 0),e}let s=a;n.routeCleanup.set(r,()=>{s.stop(),s.transport.send(`Fetch.disable`,{},s.sessionId).catch(()=>void 0)})})}const uT=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`route requires a URL pattern
1142
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s={pattern:o,regex:sT(o),status:r.status?parseInt(r.status,10):200,body:r.body??``,contentType:r[`content-type`]??`text/plain`,headers:{}};if(r.header){r.header.includes(`,`)&&aT.warn(`--header value contains comma — only last segment used. Use separate route calls for multiple headers.`);for(let e of r.header.split(`,`)){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();s.headers[n]=r}}}t.routeCleanup.has(a.targetId)||(t.routes.has(a.targetId)||t.routes.set(a.targetId,[]),await lT(e,i,t,a.targetId));let c=t.routes.get(a.targetId)??[];return c.unshift(s),t.routes.set(a.targetId,c),{stdout:`Route added: ${o}\n`,stderr:``,exitCode:0}},dT=async({state:e,flags:t})=>{let n=j(t);if(`error`in n)return{stdout:``,stderr:n.error,exitCode:1};let r=e.routes.get(n.targetId)??[];return r.length===0?{stdout:`No active routes
1148
1143
  `,stderr:``,exitCode:0}:{stdout:r.map((e,t)=>`${t+1}. ${e.pattern} → ${e.status} ${e.contentType}`).join(`
1149
1144
  `)+`
1150
- `,stderr:``,exitCode:0}},FT=async({state:e,positional:t,flags:n})=>{let r=j(n);if(`error`in r)return{stdout:``,stderr:r.error,exitCode:1};let i=t[0];if(!i){e.routes.set(r.targetId,[]);let t=e.routeCleanup.get(r.targetId);return t&&(t(),e.routeCleanup.delete(r.targetId)),{stdout:`All routes removed
1151
- `,stderr:``,exitCode:0}}let a=e.routes.get(r.targetId)??[],o=a.length,s=a.filter(e=>e.pattern!==i);if(e.routes.set(r.targetId,s),s.length===0){let t=e.routeCleanup.get(r.targetId);t&&(t(),e.routeCleanup.delete(r.targetId))}return{stdout:`Removed ${o-s.length} route(s) matching "${i}"\n`,stderr:``,exitCode:0}},IT=`/.playwright`;function LT(e,t){return e?`${t.replace(/\/+$/,``)}${IT}`:IT}async function RT(e,t,n){if(!t.sessionDirsCreated.has(n)){for(let t of[n,`${n}/snapshots`,`${n}/screenshots`])try{await e.mkdir(t,{recursive:!0})}catch(e){if(!Bn(e))throw e}t.sessionDirsCreated.add(n)}}async function zT(e,t,n,r,i){try{return await e.withTab(n,async e=>{let{url:a,title:o,text:s,refToSelector:c,refToBackendNodeId:l,refToFrameId:u}=await ue(e),d={url:a,title:o,refToSelector:c,refToBackendNodeId:l,refToFrameId:u,content:s,timestamp:Date.now()};r.snapshots.set(n,d);let f=[`Page URL: ${a}`,`Page Title: ${o}`,``,s].join(`
1152
- `),p=`${i}/snapshots/page-${Rn(new Date)}.yml`;return await t.writeFile(p,f),p})}catch{return null}}async function BT(e,t,n,r){await RT(e,t,n);let i=new Date().toISOString(),a=`playwright-cli ${r.command}${r.args.length?` `+r.args.join(` `):``}`,o=r.result.exitCode===0?r.result.stdout.trim()||`OK`:`Error: ${r.result.stderr.trim()}`,s=[`### ${a}`,`- **Time**: ${i}`];if(r.tabUrl||r.targetId){let e=r.tabUrl?`${r.tabUrl}${r.targetId?` (targetId: ${r.targetId})`:``}`:`targetId: ${r.targetId}`;s.push(`- **Tab**: ${e}`)}s.push(`- **Result**: ${o}`),r.snapshotPath&&s.push(``,`[Snapshot](${r.snapshotPath})`),s.push(`---`,``);let c=s.join(`
1145
+ `,stderr:``,exitCode:0}},fT=async({state:e,positional:t,flags:n})=>{let r=j(n);if(`error`in r)return{stdout:``,stderr:r.error,exitCode:1};let i=t[0];if(!i){e.routes.set(r.targetId,[]);let t=e.routeCleanup.get(r.targetId);return t&&(t(),e.routeCleanup.delete(r.targetId)),{stdout:`All routes removed
1146
+ `,stderr:``,exitCode:0}}let a=e.routes.get(r.targetId)??[],o=a.length,s=a.filter(e=>e.pattern!==i);if(e.routes.set(r.targetId,s),s.length===0){let t=e.routeCleanup.get(r.targetId);t&&(t(),e.routeCleanup.delete(r.targetId))}return{stdout:`Removed ${o-s.length} route(s) matching "${i}"\n`,stderr:``,exitCode:0}},pT=`/.playwright`;function mT(e,t){return e?`${t.replace(/\/+$/,``)}${pT}`:pT}async function hT(e,t,n){if(!t.sessionDirsCreated.has(n)){for(let t of[n,`${n}/snapshots`,`${n}/screenshots`])try{await e.mkdir(t,{recursive:!0})}catch(e){if(!Ln(e))throw e}t.sessionDirsCreated.add(n)}}async function gT(e,t,n,r,i){try{return await e.withTab(n,async e=>{let{url:a,title:o,text:s,refToSelector:c,refToBackendNodeId:l,refToFrameId:u}=await ue(e),d={url:a,title:o,refToSelector:c,refToBackendNodeId:l,refToFrameId:u,content:s,timestamp:Date.now()};r.snapshots.set(n,d);let f=[`Page URL: ${a}`,`Page Title: ${o}`,``,s].join(`
1147
+ `),p=`${i}/snapshots/page-${Fn(new Date)}.yml`;return await t.writeFile(p,f),p})}catch{return null}}async function _T(e,t,n,r){await hT(e,t,n);let i=new Date().toISOString(),a=`playwright-cli ${r.command}${r.args.length?` `+r.args.join(` `):``}`,o=r.result.exitCode===0?r.result.stdout.trim()||`OK`:`Error: ${r.result.stderr.trim()}`,s=[`### ${a}`,`- **Time**: ${i}`];if(r.tabUrl||r.targetId){let e=r.tabUrl?`${r.tabUrl}${r.targetId?` (targetId: ${r.targetId})`:``}`:`targetId: ${r.targetId}`;s.push(`- **Tab**: ${e}`)}s.push(`- **Result**: ${o}`),r.snapshotPath&&s.push(``,`[Snapshot](${r.snapshotPath})`),s.push(`---`,``);let c=s.join(`
1153
1148
  `)+`
1154
- `,l=`${n}/session.md`,u=``;try{let t=await e.readFile(l);u=typeof t==`string`?t:new TextDecoder().decode(t)}catch{}await e.writeFile(l,u+c)}function VT(){return import(`./snapshot-features-Dw5v6SoZ.js`)}async function HT(e,t,n,r){let i=await e.getAccessibilityTreeForFrame(r.frameId),a=new Map,o=new Map,s=new Map,c=le(i,a,o,{value:0},``,`f1`);for(let e of a.keys())s.set(e,r.frameId);let l=c.join(`
1155
- `);return t.snapshots.set(n,{url:r.url,title:r.name,refToSelector:a,refToBackendNodeId:o,refToFrameId:s,content:l,timestamp:Date.now()}),l}async function UT(e,t){await e.send(`DOM.enable`),await e.send(`Runtime.enable`);let n=(await e.send(`DOM.resolveNode`,{backendNodeId:t})).object;if(n?.objectId)return(await e.send(`Runtime.callFunctionOn`,{objectId:n.objectId,functionDeclaration:`function() {
1149
+ `,l=`${n}/session.md`,u=``;try{let t=await e.readFile(l);u=typeof t==`string`?t:new TextDecoder().decode(t)}catch{}await e.writeFile(l,u+c)}function vT(){return import(`./snapshot-features-Dw5v6SoZ.js`)}async function yT(e,t,n,r){let i=await e.getAccessibilityTreeForFrame(r.frameId),a=new Map,o=new Map,s=new Map,c=le(i,a,o,{value:0},``,`f1`);for(let e of a.keys())s.set(e,r.frameId);let l=c.join(`
1150
+ `);return t.snapshots.set(n,{url:r.url,title:r.name,refToSelector:a,refToBackendNodeId:o,refToFrameId:s,content:l,timestamp:Date.now()}),l}async function bT(e,t){await e.send(`DOM.enable`),await e.send(`Runtime.enable`);let n=(await e.send(`DOM.resolveNode`,{backendNodeId:t})).object;if(n?.objectId)return(await e.send(`Runtime.callFunctionOn`,{objectId:n.objectId,functionDeclaration:`function() {
1156
1151
  this.scrollIntoView({ block: 'center' });
1157
1152
  const r = this.getBoundingClientRect();
1158
1153
  return { x: r.x + window.scrollX, y: r.y + window.scrollY, width: r.width, height: r.height };
1159
- }`,returnByValue:!0})).result?.value}async function WT(e,t){let n=await e.evaluate(`(function() {
1154
+ }`,returnByValue:!0})).result?.value}async function xT(e,t){let n=await e.evaluate(`(function() {
1160
1155
  const el = document.querySelector(${JSON.stringify(t.split(`,`)[0].trim())});
1161
1156
  if (!el) return null;
1162
1157
  el.scrollIntoView({ block: 'center' });
1163
1158
  const r = el.getBoundingClientRect();
1164
1159
  return JSON.stringify({ x: r.x + window.scrollX, y: r.y + window.scrollY, width: r.width, height: r.height });
1165
- })()`);return n?Vn(n,`element clip rect`):void 0}async function GT(e,t,n){let r=t.refToBackendNodeId.get(n);if(r)return UT(e,r);let i=t.refToSelector.get(n);if(!i)throw Error(`Unknown ref "${n}"`);return WT(e,i)}const KT=async({browser:e,fs:t,state:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=r[`no-iframes`]===`true`,s=r.depth;if(s!==void 0&&!/^[1-9][0-9]*$/.test(s))return{stdout:``,stderr:`snapshot: --depth must be a positive integer, got "${s}"\n`,exitCode:1};let c=s===void 0?void 0:parseInt(s,10),l=r.boxes===`true`;if(l&&r.frame)return{stdout:``,stderr:`snapshot: --boxes is not supported with --frame (child-frame rects live in another coordinate space)
1166
- `,exitCode:1};let u=await i(a.targetId,async e=>{let t=await Qn(e,r);if(t)return HT(e,n,a.targetId,t);let{snapshot:i,output:s}=await oe(e,n,a.targetId,{noIframes:o});if(!l)return s;let{annotateBoxes:c}=await VT();return c(e,i.refToBackendNodeId,s)});if(c!==void 0){let{limitSnapshotDepth:e}=await VT();u=e(u,c)}return r.filename?(await t.writeFile(r.filename,u),{stdout:`Snapshot saved to ${r.filename}\n`,stderr:``,exitCode:0}):{stdout:u+`
1167
- `,stderr:``,exitCode:0}},qT=async e=>{let{findHandlerImpl:t}=await VT();return t(e)},JT=async({browser:e,flags:t,onTab:n})=>{let r=j(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:{stdout:await n(r.targetId,async e=>`Frame IDs (use with --frame, never --tab):\n${(await e.getFrameTree()).map(e=>{let t=e.parentFrameId?`child`:`main`,n=e.parentFrameId?` parentFrameId=${e.parentFrameId}`:``;return` [${t}] frameId=${e.frameId}${n} - ${e.url}`}).join(`
1160
+ })()`);return n?Rn(n,`element clip rect`):void 0}async function ST(e,t,n){let r=t.refToBackendNodeId.get(n);if(r)return bT(e,r);let i=t.refToSelector.get(n);if(!i)throw Error(`Unknown ref "${n}"`);return xT(e,i)}const CT=async({browser:e,fs:t,state:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=r[`no-iframes`]===`true`,s=r.depth;if(s!==void 0&&!/^[1-9][0-9]*$/.test(s))return{stdout:``,stderr:`snapshot: --depth must be a positive integer, got "${s}"\n`,exitCode:1};let c=s===void 0?void 0:parseInt(s,10),l=r.boxes===`true`;if(l&&r.frame)return{stdout:``,stderr:`snapshot: --boxes is not supported with --frame (child-frame rects live in another coordinate space)
1161
+ `,exitCode:1};let u=await i(a.targetId,async e=>{let t=await Yn(e,r);if(t)return yT(e,n,a.targetId,t);let{snapshot:i,output:s}=await oe(e,n,a.targetId,{noIframes:o});if(!l)return s;let{annotateBoxes:c}=await vT();return c(e,i.refToBackendNodeId,s)});if(c!==void 0){let{limitSnapshotDepth:e}=await vT();u=e(u,c)}return r.filename?(await t.writeFile(r.filename,u),{stdout:`Snapshot saved to ${r.filename}\n`,stderr:``,exitCode:0}):{stdout:u+`
1162
+ `,stderr:``,exitCode:0}},wT=async e=>{let{findHandlerImpl:t}=await vT();return t(e)},TT=async({browser:e,flags:t,onTab:n})=>{let r=j(t);return`error`in r?{stdout:``,stderr:r.error,exitCode:1}:{stdout:await n(r.targetId,async e=>`Frame IDs (use with --frame, never --tab):\n${(await e.getFrameTree()).map(e=>{let t=e.parentFrameId?`child`:`main`,n=e.parentFrameId?` parentFrameId=${e.parentFrameId}`:``;return` [${t}] frameId=${e.frameId}${n} - ${e.url}`}).join(`
1168
1163
  `)}`)+`
1169
- `,stderr:``,exitCode:0}},YT=async({browser:e,fs:t,flags:n,scratchDir:r,onTab:i})=>{let a=j(n);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n.filename||`${r}/page-${Rn(new Date)}.pdf`;try{await i(a.targetId,async({sessionId:e,transport:n})=>{let r=(await n.send(`Page.printToPDF`,{},e)).data,i=Yn(r);await t.writeFile(o,i)})}catch(e){let t=e instanceof Error?e.message:String(e);return ee()?{stdout:``,stderr:`pdf: not available in extension mode — use screenshot --full-page
1170
- `,exitCode:1}:{stdout:``,stderr:`pdf: ${t}\n`,exitCode:1}}return{stdout:`Saved PDF to ${o}\n`,stderr:``,exitCode:0}};async function XT(e,t,n,r){let i=t.snapshots.get(n);if(!i)throw Error(`No snapshot available. Run "snapshot" first.`);let a=await GT(e,i,r);return!a||a.width<=0||a.height<=0?{error:`could not resolve element ${r} to a visible box — the snapshot is likely stale (navigation, reload, or layout change). Re-run "snapshot" and retry with a fresh ref, or omit the ref to capture the viewport deliberately.`}:{clip:a}}const ZT=new Set([`png`,`jpeg`,`webp`]);function QT(e){let t=e.type;if(t&&ZT.has(t))return t;let n=e.filename??``;return/\.jpe?g$/i.test(n)?`jpeg`:/\.webp$/i.test(n)?`webp`:`png`}const $T=async({browser:e,fs:t,state:n,positional:r,flags:i,scratchDir:a,sessionRoot:o,onTab:s})=>{let c=j(i);if(`error`in c)return{stdout:``,stderr:c.error,exitCode:1};if(i.type&&!ZT.has(i.type))return{stdout:``,stderr:`screenshot: --type must be png, jpeg, or webp, got "${i.type}"\n`,exitCode:1};if(i[`max-width`]&&QT(i)!==`png`)return{stdout:``,stderr:`screenshot: --max-width requires png output (the downscale pass measures PNG headers); drop --type/--filename extension or --max-width
1171
- `,exitCode:1};let l=await s(c.targetId,async e=>{let s;if(r[0]?.startsWith(`e`)){let t=await XT(e,n,c.targetId,r[0]);if(`error`in t)return t;s=t.clip}let l=i.fullPage===`true`||i[`full-page`]===`true`;if(i.hires===`true`){let{hiresClip:t}=await VT();s=await t(e,s,l)}let u=i[`max-width`]?parseInt(i[`max-width`],10):void 0,d=QT(i),f=await e.screenshot({format:d,fullPage:l,...s?{clip:s}:{},...u?{maxWidth:u}:{}}),p=d===`jpeg`?`jpg`:d,m=i.filename||`${a}/screenshot-${Date.now()}.${p}`,h=Yn(f);await t.writeFile(m,h);try{await RT(t,n,o);let e=`${o}/screenshots/screenshot-${Rn(new Date)}.${p}`;await t.writeFile(e,h)}catch{}return{message:`Screenshot saved to ${m} (${Math.round(h.length/1024)} KB)`}});return`error`in l?{stdout:``,stderr:`screenshot: ${l.error}\n`,exitCode:1}:{stdout:l.message+`
1172
- `,stderr:``,exitCode:0}},eE=async({browser:e,fs:t,positional:n,flags:r,sessionRoot:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};let s=r.filename??n[0]??`${i}/storage-state.json`,c=[],l=[],u=``;await a(o.targetId,async e=>{c=(await e.send(`Network.getCookies`)).cookies??[];let{sessionId:t,transport:n}=e;u=(await n.send(`Runtime.evaluate`,{expression:`location.origin`,returnByValue:!0},t)).result.value??``;let r=(await n.send(`Runtime.evaluate`,{expression:`JSON.stringify(Object.entries(localStorage).map(([name,value])=>({name,value})))`,returnByValue:!0},t)).result.value??`[]`;l=JSON.parse(r)});let d=JSON.stringify({cookies:c,origins:u?[{origin:u,localStorage:l}]:[]},null,2);return await t.writeFile(s,d),{stdout:`Saved storage state to ${s}\n`,stderr:``,exitCode:0}},tE=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`state-load requires a filename
1164
+ `,stderr:``,exitCode:0}},ET=async({browser:e,fs:t,flags:n,scratchDir:r,onTab:i})=>{let a=j(n);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n.filename||`${r}/page-${Fn(new Date)}.pdf`;try{await i(a.targetId,async({sessionId:e,transport:n})=>{let r=(await n.send(`Page.printToPDF`,{},e)).data,i=Kn(r);await t.writeFile(o,i)})}catch(e){let t=e instanceof Error?e.message:String(e);return ee()?{stdout:``,stderr:`pdf: not available in extension mode — use screenshot --full-page
1165
+ `,exitCode:1}:{stdout:``,stderr:`pdf: ${t}\n`,exitCode:1}}return{stdout:`Saved PDF to ${o}\n`,stderr:``,exitCode:0}};async function DT(e,t,n,r){let i=t.snapshots.get(n);if(!i)throw Error(`No snapshot available. Run "snapshot" first.`);let a=await ST(e,i,r);return!a||a.width<=0||a.height<=0?{error:`could not resolve element ${r} to a visible box — the snapshot is likely stale (navigation, reload, or layout change). Re-run "snapshot" and retry with a fresh ref, or omit the ref to capture the viewport deliberately.`}:{clip:a}}const OT=new Set([`png`,`jpeg`,`webp`]);function kT(e){let t=e.type;if(t&&OT.has(t))return t;let n=e.filename??``;return/\.jpe?g$/i.test(n)?`jpeg`:/\.webp$/i.test(n)?`webp`:`png`}const AT=async({browser:e,fs:t,state:n,positional:r,flags:i,scratchDir:a,sessionRoot:o,onTab:s})=>{let c=j(i);if(`error`in c)return{stdout:``,stderr:c.error,exitCode:1};if(i.type&&!OT.has(i.type))return{stdout:``,stderr:`screenshot: --type must be png, jpeg, or webp, got "${i.type}"\n`,exitCode:1};if(i[`max-width`]&&kT(i)!==`png`)return{stdout:``,stderr:`screenshot: --max-width requires png output (the downscale pass measures PNG headers); drop --type/--filename extension or --max-width
1166
+ `,exitCode:1};let l=await s(c.targetId,async e=>{let s;if(r[0]?.startsWith(`e`)){let t=await DT(e,n,c.targetId,r[0]);if(`error`in t)return t;s=t.clip}let l=i.fullPage===`true`||i[`full-page`]===`true`;if(i.hires===`true`){let{hiresClip:t}=await vT();s=await t(e,s,l)}let u=i[`max-width`]?parseInt(i[`max-width`],10):void 0,d=kT(i),f=await e.screenshot({format:d,fullPage:l,...s?{clip:s}:{},...u?{maxWidth:u}:{}}),p=d===`jpeg`?`jpg`:d,m=i.filename||`${a}/screenshot-${Date.now()}.${p}`,h=Kn(f);await t.writeFile(m,h);try{await hT(t,n,o);let e=`${o}/screenshots/screenshot-${Fn(new Date)}.${p}`;await t.writeFile(e,h)}catch{}return{message:`Screenshot saved to ${m} (${Math.round(h.length/1024)} KB)`}});return`error`in l?{stdout:``,stderr:`screenshot: ${l.error}\n`,exitCode:1}:{stdout:l.message+`
1167
+ `,stderr:``,exitCode:0}},jT=async({browser:e,fs:t,positional:n,flags:r,sessionRoot:i,onTab:a})=>{let o=j(r);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};let s=r.filename??n[0]??`${i}/storage-state.json`,c=[],l=[],u=``;await a(o.targetId,async e=>{c=(await e.send(`Network.getCookies`)).cookies??[];let{sessionId:t,transport:n}=e;u=(await n.send(`Runtime.evaluate`,{expression:`location.origin`,returnByValue:!0},t)).result.value??``;let r=(await n.send(`Runtime.evaluate`,{expression:`JSON.stringify(Object.entries(localStorage).map(([name,value])=>({name,value})))`,returnByValue:!0},t)).result.value??`[]`;l=JSON.parse(r)});let d=JSON.stringify({cookies:c,origins:u?[{origin:u,localStorage:l}]:[]},null,2);return await t.writeFile(s,d),{stdout:`Saved storage state to ${s}\n`,stderr:``,exitCode:0}},MT=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`state-load requires a filename
1173
1168
  `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s;try{let e=await t.readTextFile(o);s=JSON.parse(e)}catch{return{stdout:``,stderr:`Failed to read storage state from ${o}\n`,exitCode:1}}let c=[];(s.cookies?.length||s.origins?.length)&&await i(a.targetId,async e=>{if(s.cookies?.length&&await e.send(`Network.setCookies`,{cookies:s.cookies}),!s.origins?.length)return;let{sessionId:t,transport:n}=e,r=(await n.send(`Runtime.evaluate`,{expression:`location.origin`,returnByValue:!0},t)).result.value??``,i=s.origins.filter(e=>e.origin===r);c=s.origins.filter(e=>e.origin!==r);for(let{localStorage:e}of i){let r=`(function() {
1174
1169
  var items = ${JSON.stringify(e)};
1175
1170
  for (var i = 0; i < items.length; i++) {
1176
1171
  localStorage.setItem(items[i].name, items[i].value);
1177
1172
  }
1178
- })()`;await n.send(`Runtime.evaluate`,{expression:r,returnByValue:!0},t)}});let l=``;return c.length>0&&(l=`Skipped localStorage for non-matching origins: ${c.map(e=>e.origin).join(`, `)}\n`),{stdout:`Loaded storage state from ${o}\n`,stderr:l,exitCode:0}};function nE(e,t){return{list:async({browser:e,flags:n,onTab:r})=>{let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:{stdout:await r(i.targetId,async e=>{let n=await e.evaluate(`JSON.stringify(Object.entries(${t}))`),r=JSON.parse(n);return r.length===0?`No ${t} entries`:r.map(([e,t])=>`${e}=${t}`).join(`
1173
+ })()`;await n.send(`Runtime.evaluate`,{expression:r,returnByValue:!0},t)}});let l=``;return c.length>0&&(l=`Skipped localStorage for non-matching origins: ${c.map(e=>e.origin).join(`, `)}\n`),{stdout:`Loaded storage state from ${o}\n`,stderr:l,exitCode:0}};function NT(e,t){return{list:async({browser:e,flags:n,onTab:r})=>{let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:{stdout:await r(i.targetId,async e=>{let n=await e.evaluate(`JSON.stringify(Object.entries(${t}))`),r=JSON.parse(n);return r.length===0?`No ${t} entries`:r.map(([e,t])=>`${e}=${t}`).join(`
1179
1174
  `)})+`
1180
1175
  `,stderr:``,exitCode:0}},get:async({browser:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`${e}-get requires a key\n`,exitCode:1};let o=j(i);return`error`in o?{stdout:``,stderr:o.error,exitCode:1}:{stdout:await a(o.targetId,async e=>{let n=await e.evaluate(`${t}.getItem(${JSON.stringify(r[0])})`);if(n===null)throw Error(`Key "${r[0]}" not found in ${t}`);return n})+`
1181
- `,stderr:``,exitCode:0}},set:async({browser:n,positional:r,flags:i,onTab:a})=>{if(r.length<2)return{stdout:``,stderr:`${e}-set requires <key> <value>\n`,exitCode:1};let o=j(i);return`error`in o?{stdout:``,stderr:o.error,exitCode:1}:(await a(o.targetId,async e=>{await e.evaluate(`${t}.setItem(${JSON.stringify(r[0])}, ${JSON.stringify(r.slice(1).join(` `))})`)}),{stdout:`${t} "${r[0]}" set\n`,stderr:``,exitCode:0})},del:async({browser:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`${e}-delete requires a key\n`,exitCode:1};let o=j(i);return`error`in o?{stdout:``,stderr:o.error,exitCode:1}:(await a(o.targetId,async e=>{await e.evaluate(`${t}.removeItem(${JSON.stringify(r[0])})`)}),{stdout:`${t} "${r[0]}" deleted\n`,stderr:``,exitCode:0})},clear:async({browser:e,flags:n,onTab:r})=>{let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`${t}.clear()`)}),{stdout:`${t} cleared\n`,stderr:``,exitCode:0})}}}const rE=nE(`localstorage`,`localStorage`),iE=nE(`sessionstorage`,`sessionStorage`),aE=e(`playwright`),oE={width:412,height:915,deviceScaleFactor:2.625};function sE(e,t,n,r,i){let a=n[`teleport-start`],o=n[`teleport-return`];if(!a||!o)return null;aE.info(`Arming teleport via open/tab-new flags`),aE.debug(`Arming teleport via open/tab-new flags details`,{targetId:i,startPattern:a,returnPattern:o});let s,c;try{s=new RegExp(a)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-start: ${a}\n`,exitCode:1}}try{c=new RegExp(o)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-return: ${o}\n`,exitCode:1}}let l=n.timeout?parseInt(n.timeout,10):300,u=t.teleportWatchers.get(i);return u&&($w(u),t.teleportWatchers.delete(i)),eT(e,t,s,c,l*1e3,n[`teleport-runtime`],r,i),null}const cE=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a})=>{let o=r[0]||`about:blank`,s=i.runtime,c=i.mobile===`true`;await se(e,n);let l=c?`about:blank`:o,u;if(u=s?await e.createRemotePage(s,l):await e.createPage(l),c&&await a(u,async e=>{await e.setViewportOverride(oE.width,oE.height,{deviceScaleFactor:oE.deviceScaleFactor,mobile:!0,userAgent:`Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36`}),o!==`about:blank`&&await e.navigate(o)}),i.foreground===`true`||i.fg===`true`)try{await a(u,e=>e.bringToFront())}catch(e){aE.debug(`open/tab-new --foreground bringToFront failed`,{targetId:u,error:e instanceof Error?e.message:String(e)})}let d=sE(e,n,i,o,u);if(d)return d;if(i.discover===`true`){let{browseShWarning:e,...n}=await ew(o,{discover:!0,fs:t}),r={action:`open`,targetId:u,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(r,null,2)+`
1182
- `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Opened ${o} in new tab [targetId: ${u}]\n`,stderr:``,exitCode:0}},lE=async({browser:e,state:t})=>{let n=await ce(e,t);return n.length===0?{stdout:`No tabs open
1176
+ `,stderr:``,exitCode:0}},set:async({browser:n,positional:r,flags:i,onTab:a})=>{if(r.length<2)return{stdout:``,stderr:`${e}-set requires <key> <value>\n`,exitCode:1};let o=j(i);return`error`in o?{stdout:``,stderr:o.error,exitCode:1}:(await a(o.targetId,async e=>{await e.evaluate(`${t}.setItem(${JSON.stringify(r[0])}, ${JSON.stringify(r.slice(1).join(` `))})`)}),{stdout:`${t} "${r[0]}" set\n`,stderr:``,exitCode:0})},del:async({browser:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`${e}-delete requires a key\n`,exitCode:1};let o=j(i);return`error`in o?{stdout:``,stderr:o.error,exitCode:1}:(await a(o.targetId,async e=>{await e.evaluate(`${t}.removeItem(${JSON.stringify(r[0])})`)}),{stdout:`${t} "${r[0]}" deleted\n`,stderr:``,exitCode:0})},clear:async({browser:e,flags:n,onTab:r})=>{let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`${t}.clear()`)}),{stdout:`${t} cleared\n`,stderr:``,exitCode:0})}}}const PT=NT(`localstorage`,`localStorage`),FT=NT(`sessionstorage`,`sessionStorage`),IT=e(`playwright`),LT={width:412,height:915,deviceScaleFactor:2.625};function RT(e,t,n,r,i){let a=n[`teleport-start`],o=n[`teleport-return`];if(!a||!o)return null;IT.info(`Arming teleport via open/tab-new flags`),IT.debug(`Arming teleport via open/tab-new flags details`,{targetId:i,startPattern:a,returnPattern:o});let s,c;try{s=new RegExp(a)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-start: ${a}\n`,exitCode:1}}try{c=new RegExp(o)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-return: ${o}\n`,exitCode:1}}let l=n.timeout?parseInt(n.timeout,10):300,u=t.teleportWatchers.get(i);return u&&(Aw(u),t.teleportWatchers.delete(i)),jw(e,t,s,c,l*1e3,n[`teleport-runtime`],r,i),null}const zT=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a})=>{let o=r[0]||`about:blank`,s=i.runtime,c=i.mobile===`true`;await se(e,n);let l=c?`about:blank`:o,u;if(u=s?await e.createRemotePage(s,l):await e.createPage(l),c&&await a(u,async e=>{await e.setViewportOverride(LT.width,LT.height,{deviceScaleFactor:LT.deviceScaleFactor,mobile:!0,userAgent:`Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36`}),o!==`about:blank`&&await e.navigate(o)}),i.foreground===`true`||i.fg===`true`)try{await a(u,e=>e.bringToFront())}catch(e){IT.debug(`open/tab-new --foreground bringToFront failed`,{targetId:u,error:e instanceof Error?e.message:String(e)})}let d=RT(e,n,i,o,u);if(d)return d;if(i.discover===`true`){let{browseShWarning:e,...n}=await jC(o,{discover:!0,fs:t}),r={action:`open`,targetId:u,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(r,null,2)+`
1177
+ `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Opened ${o} in new tab [targetId: ${u}]\n`,stderr:``,exitCode:0}},BT=async({browser:e,state:t})=>{let n=await ce(e,t);return n.length===0?{stdout:`No tabs open
1183
1178
  `,stderr:``,exitCode:0}:{stdout:n.map(e=>{let t=!!e.active,n=e.targetId.includes(`:`),r=t?` (active)`:``,i=n?` [remote:${e.targetId.substring(0,e.targetId.indexOf(`:`))}]`:``;return`[${e.targetId}] ${e.url} "${e.title}"${r}${i}`}).join(`
1184
1179
  `)+`
1185
- `,stderr:``,exitCode:0}},uE=async({browser:e,state:t,flags:n})=>{let r=j(n);if(`error`in r)return{stdout:``,stderr:r.error,exitCode:1};await e.closePage(r.targetId),t.snapshots.delete(r.targetId),t.teleportWatchers.delete(r.targetId),t.consoleMessages.delete(r.targetId);let i=t.consoleCleanup.get(r.targetId);i&&(i(),t.consoleCleanup.delete(r.targetId)),t.networkRequests.delete(r.targetId);let a=t.networkCleanup.get(r.targetId);a&&(a(),t.networkCleanup.delete(r.targetId));let o=t.routeCleanup.get(r.targetId);return o&&(o(),t.routeCleanup.delete(r.targetId)),t.routes.delete(r.targetId),t.lastMousePosition.delete(r.targetId),{stdout:`Closed tab ${r.targetId}\n`,stderr:``,exitCode:0}},dE=async({browser:e,state:t,positional:n,onTab:r})=>{if(n.length===0)return{stdout:``,stderr:`tab-select requires a tab index
1180
+ `,stderr:``,exitCode:0}},VT=async({browser:e,state:t,flags:n})=>{let r=j(n);if(`error`in r)return{stdout:``,stderr:r.error,exitCode:1};await e.closePage(r.targetId),t.snapshots.delete(r.targetId),t.teleportWatchers.delete(r.targetId),t.consoleMessages.delete(r.targetId);let i=t.consoleCleanup.get(r.targetId);i&&(i(),t.consoleCleanup.delete(r.targetId)),t.networkRequests.delete(r.targetId);let a=t.networkCleanup.get(r.targetId);a&&(a(),t.networkCleanup.delete(r.targetId));let o=t.routeCleanup.get(r.targetId);return o&&(o(),t.routeCleanup.delete(r.targetId)),t.routes.delete(r.targetId),t.lastMousePosition.delete(r.targetId),{stdout:`Closed tab ${r.targetId}\n`,stderr:``,exitCode:0}},HT=async({browser:e,state:t,positional:n,onTab:r})=>{if(n.length===0)return{stdout:``,stderr:`tab-select requires a tab index
1186
1181
  `,exitCode:1};let i=n[0];if(!/^[0-9]+$/.test(i))return{stdout:``,stderr:`tab-select index must be a positive integer
1187
1182
  `,exitCode:1};let a=parseInt(i,10);if(a<1)return{stdout:``,stderr:`tab-select index must be a positive integer
1188
- `,exitCode:1};let o=await ce(e,t);if(a>o.length)return{stdout:``,stderr:`tab-select index ${a} out of range (${o.length} tab${o.length===1?``:`s`} open)\n`,exitCode:1};let s=o[a-1].targetId;return await r(s,e=>e.bringToFront()),{stdout:`Selected tab ${a} [targetId: ${s}]\n`,stderr:``,exitCode:0}},fE=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`resize requires <width> <height>
1183
+ `,exitCode:1};let o=await ce(e,t);if(a>o.length)return{stdout:``,stderr:`tab-select index ${a} out of range (${o.length} tab${o.length===1?``:`s`} open)\n`,exitCode:1};let s=o[a-1].targetId;return await r(s,e=>e.bringToFront()),{stdout:`Selected tab ${a} [targetId: ${s}]\n`,stderr:``,exitCode:0}},UT=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`resize requires <width> <height>
1189
1184
  `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=parseInt(n[0],10),s=parseInt(n[1],10);return isNaN(o)||isNaN(s)||o<=0||s<=0?{stdout:``,stderr:`resize requires positive integer width and height
1190
- `,exitCode:1}:(await i(a.targetId,e=>e.setViewportOverride(o,s)),t.snapshots.delete(a.targetId),{stdout:`Resized viewport to ${o}x${s}\n`,stderr:``,exitCode:0})},pE=e(`playwright-teleport`);function mE(){pE.info(`Listing available follower runtimes`);let e=Zw();if(!e)return{stdout:``,stderr:`teleport: not connected to a tray
1185
+ `,exitCode:1}:(await i(a.targetId,e=>e.setViewportOverride(o,s)),t.snapshots.delete(a.targetId),{stdout:`Resized viewport to ${o}x${s}\n`,stderr:``,exitCode:0})},WT=e(`playwright-teleport`);function GT(){WT.info(`Listing available follower runtimes`);let e=Ow();if(!e)return{stdout:``,stderr:`teleport: not connected to a tray
1191
1186
  `,exitCode:1};let t=e();if(t.length===0)return{stdout:`No followers connected to the tray.
1192
1187
  `,stderr:``,exitCode:0};let n=[`Available runtimes for teleport:`];for(let e of t){let t=[e.runtimeId];if(e.floatType&&t.push(`[${e.floatType}]`),e.runtime&&t.push(`(${e.runtime})`),e.lastActivity){let n=Math.round((Date.now()-e.lastActivity)/1e3);t.push(`active ${n}s ago`)}n.push(` ${t.join(` `)}`)}return{stdout:n.join(`
1193
1188
  `)+`
1194
- `,stderr:``,exitCode:0}}function hE({state:e,flags:t}){let n=j(t);if(`error`in n)return{stdout:``,stderr:n.error,exitCode:1};pE.info(`Disarming teleport watcher via --off`,{targetId:n.targetId});let r=e.teleportWatchers.get(n.targetId);return r&&($w(r),e.teleportWatchers.delete(n.targetId)),{stdout:`Teleport watcher disarmed
1195
- `,stderr:``,exitCode:0}}function gE(e,t){let n,r;try{n=new RegExp(e)}catch{return{error:`Invalid regex for --start: ${e}\n`}}try{r=new RegExp(t)}catch{return{error:`Invalid regex for --return: ${t}\n`}}return{startPattern:n,returnPattern:r}}function _E(e){return(Zw()?.()??[]).find(t=>t.runtimeId===e)?.runtime===`slicc-cherry`?`teleport: runtime ${e} is a cherry host and cannot serve a cookie teleport (no Network.* access)\n`:null}async function vE({browser:e,state:t,flags:n,onTab:r,signal:i}){let a=j(n);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n.start||n[`teleport-start`],s=n.return||n[`teleport-return`];if(!o||!s)return{stdout:``,stderr:`teleport requires --start <regex> and --return <regex>
1196
- `,exitCode:1};let c=gE(o,s);if(`error`in c)return{stdout:``,stderr:c.error,exitCode:1};let l=n.timeout?parseInt(n.timeout,10):300;if(isNaN(l)||l<=0)return{stdout:``,stderr:`--timeout must be a positive number
1197
- `,exitCode:1};let u=n.runtime;if(u){let e=_E(u);if(e)return{stdout:``,stderr:e,exitCode:1}}let d=t.teleportWatchers.get(a.targetId);d&&(pE.info(`Disarming existing teleport watcher before re-arming`,{targetId:a.targetId}),$w(d),t.teleportWatchers.delete(a.targetId));let f;try{let e=await r(a.targetId,e=>e.evaluate(`window.location.href`));f=typeof e==`string`?e:String(e)}catch{}return pE.info(`Arming teleport via explicit subcommand`,{targetId:a.targetId,timeoutSec:l,runtimeSelection:u?`explicit`:`auto`}),pE.debug(`Arming teleport via explicit subcommand details`,{targetId:a.targetId,startPattern:o,returnPattern:s,timeoutSec:l,runtimeId:u??`auto`,leaderUrl:f}),Ln(i,`about to arm a teleport watcher on tab ${a.targetId}`),eT(e,t,c.startPattern,c.returnPattern,l*1e3,u,f,a.targetId),{stdout:`Teleport armed on tab ${a.targetId}. Will trigger when URL matches ${o}\n`,stderr:``,exitCode:0}}const yE=async e=>e.flags.list===`true`?mE():e.flags.off===`true`?hE(e):vE(e),bE={png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`,pdf:`application/pdf`,txt:`text/plain`,json:`application/json`,csv:`text/csv`,html:`text/html`,htm:`text/html`,xml:`application/xml`,zip:`application/zip`,mp4:`video/mp4`,mp3:`audio/mpeg`};function xE(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return bE[t]??`application/octet-stream`}function SE(e,t){if(e.length===0)return{error:`upload requires at least one file path
1198
- `};if(!qn(e[0]))return{targetRef:null,filePaths:e};let n=e[0],r=e.slice(1);return t?t.refToBackendNodeId.has(n)?r.length===0?{error:`upload requires at least one file path
1189
+ `,stderr:``,exitCode:0}}function KT({state:e,flags:t}){let n=j(t);if(`error`in n)return{stdout:``,stderr:n.error,exitCode:1};WT.info(`Disarming teleport watcher via --off`,{targetId:n.targetId});let r=e.teleportWatchers.get(n.targetId);return r&&(Aw(r),e.teleportWatchers.delete(n.targetId)),{stdout:`Teleport watcher disarmed
1190
+ `,stderr:``,exitCode:0}}function qT(e,t){let n,r;try{n=new RegExp(e)}catch{return{error:`Invalid regex for --start: ${e}\n`}}try{r=new RegExp(t)}catch{return{error:`Invalid regex for --return: ${t}\n`}}return{startPattern:n,returnPattern:r}}function JT(e){return(Ow()?.()??[]).find(t=>t.runtimeId===e)?.runtime===`slicc-cherry`?`teleport: runtime ${e} is a cherry host and cannot serve a cookie teleport (no Network.* access)\n`:null}async function YT({browser:e,state:t,flags:n,onTab:r,signal:i}){let a=j(n);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n.start||n[`teleport-start`],s=n.return||n[`teleport-return`];if(!o||!s)return{stdout:``,stderr:`teleport requires --start <regex> and --return <regex>
1191
+ `,exitCode:1};let c=qT(o,s);if(`error`in c)return{stdout:``,stderr:c.error,exitCode:1};let l=n.timeout?parseInt(n.timeout,10):300;if(isNaN(l)||l<=0)return{stdout:``,stderr:`--timeout must be a positive number
1192
+ `,exitCode:1};let u=n.runtime;if(u){let e=JT(u);if(e)return{stdout:``,stderr:e,exitCode:1}}let d=t.teleportWatchers.get(a.targetId);d&&(WT.info(`Disarming existing teleport watcher before re-arming`,{targetId:a.targetId}),Aw(d),t.teleportWatchers.delete(a.targetId));let f;try{let e=await r(a.targetId,e=>e.evaluate(`window.location.href`));f=typeof e==`string`?e:String(e)}catch{}return WT.info(`Arming teleport via explicit subcommand`,{targetId:a.targetId,timeoutSec:l,runtimeSelection:u?`explicit`:`auto`}),WT.debug(`Arming teleport via explicit subcommand details`,{targetId:a.targetId,startPattern:o,returnPattern:s,timeoutSec:l,runtimeId:u??`auto`,leaderUrl:f}),Pn(i,`about to arm a teleport watcher on tab ${a.targetId}`),jw(e,t,c.startPattern,c.returnPattern,l*1e3,u,f,a.targetId),{stdout:`Teleport armed on tab ${a.targetId}. Will trigger when URL matches ${o}\n`,stderr:``,exitCode:0}}const XT=async e=>e.flags.list===`true`?GT():e.flags.off===`true`?KT(e):YT(e),ZT={png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`,pdf:`application/pdf`,txt:`text/plain`,json:`application/json`,csv:`text/csv`,html:`text/html`,htm:`text/html`,xml:`application/xml`,zip:`application/zip`,mp4:`video/mp4`,mp3:`audio/mpeg`};function QT(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return ZT[t]??`application/octet-stream`}function $T(e,t){if(e.length===0)return{error:`upload requires at least one file path
1193
+ `};if(!Wn(e[0]))return{targetRef:null,filePaths:e};let n=e[0],r=e.slice(1);return t?t.refToBackendNodeId.has(n)?r.length===0?{error:`upload requires at least one file path
1199
1194
  `}:{targetRef:n,filePaths:r}:{error:`Unknown ref "${n}"\n`}:{error:`No snapshot available. Run "snapshot" first.
1200
- `}}const CE=new Map([[`teleport`,yE],[`open`,cE],[`tab-new`,cE],[`fetch`,tw],[`goto`,lT],[`navigate`,lT],[`snapshot`,KT],[`find`,qT],[`frames`,JT],[`screenshot`,$T],[`click`,sw],[`type`,cw],[`fill`,lw],[`eval`,YC],[`eval-file`,XC],[`press`,uw],[`keydown`,dw],[`keyup`,fw],[`go-back`,uT],[`go-forward`,dT],[`reload`,fT],[`tab-list`,lE],[`tab-close`,uE],[`close`,uE],[`dblclick`,pw],[`hover`,mw],[`select`,hw],[`check`,gw],[`uncheck`,_w],[`drag`,vw],[`resize`,fE],[`dialog-accept`,UC],[`dialog-dismiss`,WC],[`cookie-list`,IC],[`cookie-get`,LC],[`cookie-set`,RC],[`cookie-delete`,zC],[`cookie-clear`,BC],[`localstorage-list`,rE.list],[`localstorage-get`,rE.get],[`localstorage-set`,rE.set],[`localstorage-delete`,rE.del],[`localstorage-clear`,rE.clear],[`sessionstorage-list`,iE.list],[`sessionstorage-get`,iE.get],[`sessionstorage-set`,iE.set],[`sessionstorage-delete`,iE.del],[`sessionstorage-clear`,iE.clear],[`record`,ET],[`stop-recording`,DT],[`tab-select`,dE],[`pdf`,YT],[`network-state-set`,pT],[`upload`,async({browser:e,fs:n,state:r,positional:i,flags:a,onTab:o})=>{let s=j(a);if(`error`in s)return{stdout:``,stderr:s.error,exitCode:1};let c=r.snapshots.get(s.targetId),l=SE(i,c);if(`error`in l)return{stdout:``,stderr:l.error,exitCode:1};let{targetRef:u,filePaths:d}=l,f=[];for(let e of d){let r=await yw(n,e),i=e.split(`/`).pop()??e;f.push({name:i,type:xE(i),base64:t(r)})}if(u){let e=c.refToBackendNodeId.get(u);await o(s.targetId,async({sessionId:t,transport:n})=>{await n.send(`DOM.enable`,{},t);let{object:r}=await n.send(`DOM.resolveNode`,{backendNodeId:e},t),i=await n.send(`Runtime.callFunctionOn`,{objectId:r.objectId,functionDeclaration:`function(filesData) {
1195
+ `}}const eE=new Map([[`teleport`,XT],[`open`,zT],[`tab-new`,zT],[`fetch`,MC],[`goto`,Bw],[`navigate`,Bw],[`snapshot`,CT],[`find`,wT],[`frames`,TT],[`screenshot`,AT],[`click`,RC],[`type`,zC],[`fill`,BC],[`eval`,EC],[`eval-file`,DC],[`press`,VC],[`keydown`,HC],[`keyup`,UC],[`go-back`,Vw],[`go-forward`,Hw],[`reload`,Uw],[`tab-list`,BT],[`tab-close`,VT],[`close`,VT],[`dblclick`,WC],[`hover`,GC],[`select`,KC],[`check`,qC],[`uncheck`,JC],[`drag`,YC],[`resize`,UT],[`dialog-accept`,bC],[`dialog-dismiss`,xC],[`cookie-list`,pC],[`cookie-get`,mC],[`cookie-set`,hC],[`cookie-delete`,gC],[`cookie-clear`,_C],[`localstorage-list`,PT.list],[`localstorage-get`,PT.get],[`localstorage-set`,PT.set],[`localstorage-delete`,PT.del],[`localstorage-clear`,PT.clear],[`sessionstorage-list`,FT.list],[`sessionstorage-get`,FT.get],[`sessionstorage-set`,FT.set],[`sessionstorage-delete`,FT.del],[`sessionstorage-clear`,FT.clear],[`record`,rT],[`stop-recording`,iT],[`tab-select`,HT],[`pdf`,ET],[`network-state-set`,Ww],[`upload`,async({browser:e,fs:n,state:r,positional:i,flags:a,onTab:o})=>{let s=j(a);if(`error`in s)return{stdout:``,stderr:s.error,exitCode:1};let c=r.snapshots.get(s.targetId),l=$T(i,c);if(`error`in l)return{stdout:``,stderr:l.error,exitCode:1};let{targetRef:u,filePaths:d}=l,f=[];for(let e of d){let r=await XC(n,e),i=e.split(`/`).pop()??e;f.push({name:i,type:QT(i),base64:t(r)})}if(u){let e=c.refToBackendNodeId.get(u);await o(s.targetId,async({sessionId:t,transport:n})=>{await n.send(`DOM.enable`,{},t);let{object:r}=await n.send(`DOM.resolveNode`,{backendNodeId:e},t),i=await n.send(`Runtime.callFunctionOn`,{objectId:r.objectId,functionDeclaration:`function(filesData) {
1201
1196
  const el = this;
1202
1197
  if (el.tagName !== 'INPUT' || el.type !== 'file') {
1203
1198
  throw new Error('Element ' + el.tagName + ' is not a file input');
@@ -1228,12 +1223,12 @@ Options:
1228
1223
  el.dispatchEvent(new Event('change', { bubbles: true }));
1229
1224
  el.dispatchEvent(new Event('input', { bubbles: true }));
1230
1225
  return el.files.length;
1231
- })()`,r=await t.send(`Runtime.evaluate`,{expression:n,returnByValue:!0,awaitPromise:!1},e);if(r.exceptionDetails){let e=r.exceptionDetails.exception?.description??r.exceptionDetails.text??`File upload failed`;throw Error(e)}});let p=d.map(e=>e.split(`/`).pop()??e).join(`, `);return{stdout:`Uploaded ${d.length} file(s): ${p}\n`,stderr:``,exitCode:0}}],[`state-save`,eE],[`state-load`,tE],[`console`,jC],[`requests`,bT],[`request`,xT],[`request-headers`,ST],[`request-body`,CT],[`response-headers`,wT],[`response-body`,TT],[`mousemove`,Cw],[`mousedown`,ww],[`mouseup`,Tw],[`mousewheel`,Ew],[`drop`,Ow],[`route`,NT],[`route-list`,PT],[`unroute`,FT],[`generate-locator`,VC],[`highlight`,HC]]);function wE(){let e=(Un.string??[]).map(e=>`--${e}`),t=new Set(Un.boolean??[]);for(let[e,n]of Object.entries(Un.alias??{})){let r=[e,...Array.isArray(n)?n:[n]];if(r.some(e=>t.has(e)))for(let e of r)t.add(e)}return{value:e,bool:[...[...t].map(e=>`--${e}`),`--help`,`-h`,`--no-iframes`]}}function TE(e){return e.map(e=>e===`--no-iframes`||e.startsWith(`--no-iframes=`)?e.replace(`--no-iframes`,`--_noiframes`):e)}function EE(e){return{...e,bool:[...e.bool??[],`--_noiframes`],value:[...e.value??[],`--_noiframes`]}}const DE=2e3;function OE(e,t){if(typeof e.getTabLockStats!=`function`)return;let n=e.getTabLockStats();return t?{totalWaitMs:n.totalWaitMs,tabWaitMs:e.getTabLockStats(t).tabWaitMs}:{totalWaitMs:n.totalWaitMs}}function kE(e,t,n,r){if(!t||typeof e.getTabLockStats!=`function`)return r;let i=e.getTabLockStats(),a=i.totalWaitMs-t.totalWaitMs;if(a<DE)return r;let o=(a/1e3).toFixed(1),s=n&&t.tabWaitMs!==void 0?e.getTabLockStats(n).tabWaitMs-t.tabWaitMs:0,c=`note: browser bridge contended — lock waits totaled ${o}s while this command ran, ${s>=DE?`${(s/1e3).toFixed(1)}s of it waiting on this tab (--tab=${n})`:`all of it waiting on the bridge, not on this tab`} (queue depth ${i.queueDepth}). Commands on the same tab serialize; commands on different tabs run in parallel — stagger callers on THIS tab, or give each caller its own tab.
1232
- `;return{...r,stderr:r.stderr+c}}async function AE(e,t,n){let r=n instanceof Error?n.message:String(n);return{stdout:``,stderr:`Error: ${(t.tab?await Wn(e,t.tab,n):null)??r}\n`,exitCode:1}}function jE(e,t,n){return{stdout:``,stderr:`${e} ${t}: ${n===void 0?`aborted: the caller stopped waiting for it`:n instanceof Error?n.message:String(n)}\n`,exitCode:130}}async function ME(e,t,n){let r=CE.get(t);if(!r)return{stdout:``,stderr:`Unknown command: ${t}\nRun "playwright-cli help" for usage.\n`,exitCode:1};let{signal:i}=n;try{let a=await r(n);return i?.aborted?jE(e,t,void 0):a}catch(r){return i?.aborted?jE(e,t,r):await AE(n.browser,n.flags,r)}}async function NE(e,t,n,r){let i=C(TE(n),EE(r));if(`error`in i)return{answer:{stdout:``,stderr:`${e} ${t}: ${i.error}\n`,exitCode:1}};let a;try{({flags:a}=Hn(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-aKSKYJF6.js`);return{answer:{stdout:n(e,t),stderr:``,exitCode:0}}}let o=null;try{let{validateSubcommandArgs:r}=await import(`./validate-args-BcxRh84E.js`);o=r(e,t,n,i.positionals)}catch{o=null}return o?{answer:{stdout:``,stderr:o,exitCode:1}}:{positional:i.positionals,flags:a}}function PE(e,t,n,r={}){let i=t?zn(t,n):null,a=wE();return S(e,async(o,s)=>{if(o.length===0||o[0]===`help`||o[0]===`--help`||o[0]===`-h`){let{formatHelp:t}=await import(`./help-aKSKYJF6.js`);return{stdout:t(e)+`
1233
- `,stderr:``,exitCode:0}}let c=o[0],l=o.slice(1),u=await NE(e,c,l,a);if(`answer`in u)return u.answer;let{positional:d,flags:f}=u;if(!t||!i)return{stdout:``,stderr:`${e}: browser APIs are unavailable in this environment\n`,exitCode:1};let p=f.tab??null,m=OE(t,p),h=aa(s.env),g=LT(r.isScoop?.()??!1,h),_=await ME(e,c,{browser:t,fs:n,state:i,positional:d,flags:f,scratchDir:h,sessionRoot:g,onTab:(e,n)=>t.withTab(e,n,{signal:s.signal}),signal:s.signal}),v=f.tab??null,ee=null;Xn.has(c)&&_.exitCode===0&&v&&(ee=await zT(t,n,v,i,g));try{await BT(n,i,g,{command:c,args:l,result:_,snapshotPath:ee,targetId:v})}catch{}return kE(t,m,p,_)})}const FE=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`,...Jn,`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)`,[...h_]]]);function IE(e,t=[],n=[]){let r=[],i=new Set(e);for(let e of t)i.delete(e);for(let e of n)i.delete(e);r.push(`Available commands:
1234
- `);let a=[];for(let[e,t]of FE){let n=t.filter(e=>i.has(e));if(n.length>0){r.push(` ${e}:`),r.push(` ${n.join(`, `)}\n`);for(let e of n)i.delete(e)}}for(let e of i)a.push(e);return a.length>0&&(r.push(` Other:`),r.push(` ${a.sort().join(`, `)}\n`)),t.length>0&&(r.push(` User scripts (.jsh):`),r.push(` ${t.sort().join(`, `)}\n`)),n.length>0&&(r.push(` Workflows:`),r.push(` ${n.sort().join(`, `)}\n`)),r.push(`Use '<command> --help' for details on a specific command.`),r.join(`
1226
+ })()`,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`,jT],[`state-load`,MT],[`console`,cC],[`requests`,Zw],[`request`,Qw],[`request-headers`,$w],[`request-body`,eT],[`response-headers`,tT],[`response-body`,nT],[`mousemove`,ew],[`mousedown`,tw],[`mouseup`,nw],[`mousewheel`,rw],[`drop`,aw],[`route`,uT],[`route-list`,dT],[`unroute`,fT],[`generate-locator`,vC],[`highlight`,yC]]);function tE(){let e=(Bn.string??[]).map(e=>`--${e}`),t=new Set(Bn.boolean??[]);for(let[e,n]of Object.entries(Bn.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 nE(e){return e.map(e=>e===`--no-iframes`||e.startsWith(`--no-iframes=`)?e.replace(`--no-iframes`,`--_noiframes`):e)}function rE(e){return{...e,bool:[...e.bool??[],`--_noiframes`],value:[...e.value??[],`--_noiframes`]}}const iE=2e3;function aE(e,t){if(typeof e.getTabLockStats!=`function`)return;let n=e.getTabLockStats();return t?{totalWaitMs:n.totalWaitMs,tabWaitMs:e.getTabLockStats(t).tabWaitMs}:{totalWaitMs:n.totalWaitMs}}function oE(e,t,n,r){if(!t||typeof e.getTabLockStats!=`function`)return r;let i=e.getTabLockStats(),a=i.totalWaitMs-t.totalWaitMs;if(a<iE)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>=iE?`${(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.
1227
+ `;return{...r,stderr:r.stderr+c}}async function sE(e,t,n){let r=n instanceof Error?n.message:String(n);return{stdout:``,stderr:`Error: ${(t.tab?await Vn(e,t.tab,n):null)??r}\n`,exitCode:1}}function cE(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 lE(e,t,n){let r=eE.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?cE(e,t,void 0):a}catch(r){return i?.aborted?cE(e,t,r):await sE(n.browser,n.flags,r)}}async function uE(e,t,n,r){let i=C(nE(n),rE(r));if(`error`in i)return{answer:{stdout:``,stderr:`${e} ${t}: ${i.error}\n`,exitCode:1}};let a;try{({flags:a}=zn(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-aKSKYJF6.js`);return{answer:{stdout:n(e,t),stderr:``,exitCode:0}}}let o=null;try{let{validateSubcommandArgs:r}=await import(`./validate-args-BcxRh84E.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 dE(e,t,n,r={}){let i=t?In(t,n):null,a=tE();return S(e,async(o,s)=>{if(o.length===0||o[0]===`help`||o[0]===`--help`||o[0]===`-h`){let{formatHelp:t}=await import(`./help-aKSKYJF6.js`);return{stdout:t(e)+`
1228
+ `,stderr:``,exitCode:0}}let c=o[0],l=o.slice(1),u=await uE(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=aE(t,p),h=na(s.env),g=mT(r.isScoop?.()??!1,h),_=await lE(e,c,{browser:t,fs:n,state:i,positional:d,flags:f,scratchDir:h,sessionRoot:g,onTab:(e,n)=>t.withTab(e,n,{signal:s.signal}),signal:s.signal}),v=f.tab??null,ee=null;qn.has(c)&&_.exitCode===0&&v&&(ee=await gT(t,n,v,i,g));try{await _T(n,i,g,{command:c,args:l,result:_,snapshotPath:ee,targetId:v})}catch{}return oE(t,m,p,_)})}const fE=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`,...Gn,`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)`,[...Kg]]]);function pE(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:
1229
+ `);let a=[];for(let[e,t]of fE){let n=t.filter(e=>i.has(e));if(n.length>0){r.push(` ${e}:`),r.push(` ${n.join(`, `)}\n`);for(let e of n)i.delete(e)}}for(let e of i)a.push(e);return a.length>0&&(r.push(` Other:`),r.push(` ${a.sort().join(`, `)}\n`)),t.length>0&&(r.push(` User scripts (.jsh):`),r.push(` ${t.sort().join(`, `)}\n`)),n.length>0&&(r.push(` Workflows:`),r.push(` ${n.sort().join(`, `)}\n`)),r.push(`Use '<command> --help' for details on a specific command.`),r.join(`
1235
1230
  `)+`
1236
- `}function LE(e={}){return S(`commands`,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`commands - display available commands
1231
+ `}function mE(e={}){return S(`commands`,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`commands - display available commands
1237
1232
 
1238
1233
  Usage: commands [command]
1239
1234
 
@@ -1244,7 +1239,7 @@ If a command name is provided, shows help for that command.
1244
1239
  Otherwise, lists all available commands.
1245
1240
 
1246
1241
  Note: This is an enhanced version of 'help' that shows all custom commands.
1247
- `,stderr:``,exitCode:0};if(t.length>0&&n.exec){let e=t[0];return n.exec(`${e} --help`,{cwd:n.cwd})}return{stdout:IE(n.getRegisteredCommands?.()??[],await e.getJshCommands?.()??[],await e.getWorkflowCommands?.()??[]),stderr:``,exitCode:0}})}function RE(e){return{stdout:`hf - download model repos from the Hugging Face Hub into the VFS
1242
+ `,stderr:``,exitCode:0};if(t.length>0&&n.exec){let e=t[0];return n.exec(`${e} --help`,{cwd:n.cwd})}return{stdout:pE(n.getRegisteredCommands?.()??[],await e.getJshCommands?.()??[],await e.getWorkflowCommands?.()??[]),stderr:``,exitCode:0}})}function hE(e){return{stdout:`hf - download model repos from the Hugging Face Hub into the VFS
1248
1243
 
1249
1244
  Usage:
1250
1245
  hf download <repo> [files...] [--to <dir>] [--revision <rev>] [--force]
@@ -1261,7 +1256,7 @@ Defaults:
1261
1256
  --to /workspace/models/<repo>/
1262
1257
  --revision main
1263
1258
  --concurrency, -j 4 files at once
1264
- --max-in-flight-mb ${sa/1048576} MB of downloads in flight at once
1259
+ --max-in-flight-mb ${ia/1048576} MB of downloads in flight at once
1265
1260
 
1266
1261
  Notes:
1267
1262
  - <repo> is the standard <owner>/<name> form.
@@ -1275,8 +1270,8 @@ Notes:
1275
1270
  - Background-job logs get a progress line every few seconds.
1276
1271
  - Weights are read by the speech engines via the preview SW from the
1277
1272
  target directory; transformers expects <localModelPath>/<repo>/.
1278
- `,stderr:``,exitCode:e}}function zE(e){return{stdout:``,stderr:`hf: ${e}\n`,exitCode:1}}const BE=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;function VE(e,t){if(typeof t!=`string`)return{error:`${e} requires a value`};let n=Number(t);return!/^\d+$/.test(t)||!Number.isSafeInteger(n)||n<1?{error:`${e} must be a positive integer, got '${t}'`}:n}function HE(e){let t=null,n=`main`,r=!1,i,a,o=[],s=0;for(;s<e.length;){let c=e[s];if(c===`--concurrency`||c===`-j`||c===`--max-in-flight-mb`){let t=VE(c,e[s+1]);if(typeof t!=`number`)return t;c===`--max-in-flight-mb`?a=t:i=t,s+=2;continue}if(c===`--to`){let n=e[s+1];if(typeof n!=`string`)return{error:`--to requires a value`};t=n,s+=2;continue}if(c===`--revision`||c===`--rev`){let t=e[s+1];if(typeof t!=`string`)return{error:`${c} requires a value`};n=t,s+=2;continue}if(c===`--force`||c===`-f`){r=!0,s+=1;continue}if(c.startsWith(`--`))return{error:`unknown option: ${c}`};o.push(c),s+=1}if(o.length===0)return{error:`download requires <repo>`};let c=o[0];return BE.test(c)?{repo:c,files:o.slice(1),to:t,revision:n,force:r,concurrency:i,maxInFlightMb:a}:{error:`invalid repo '${c}' — expected <owner>/<name>`}}function UE(e){let t=Math.max(0,Math.round(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m ${t%60}s`:`${Math.floor(n/60)}h ${n%60}m`}var WE=class{filesTotal;bytesTotal;now;filesDone=0;bytesDone=0;bytesFetched=0;lastLineAt=-1/0;startedAt;constructor(e,t,n=Date.now){this.filesTotal=e,this.bytesTotal=t,this.now=n,this.startedAt=n()}listed(e,t){this.filesTotal=e,this.bytesTotal=t>0?t:void 0}file(e,t){this.filesDone+=1,this.bytesDone+=t,e===`downloaded`&&(this.bytesFetched+=t)}rate(){let e=(this.now()-this.startedAt)/1e3;return e>0?this.bytesFetched/e:0}elapsedMs(){return this.now()-this.startedAt}line(){let e=this.now();if(!(this.filesDone>=this.filesTotal)&&e-this.lastLineAt<5e3)return null;this.lastLineAt=e;let t=this.rate(),n=Gy(this.bytesDone),r=``;if(this.bytesTotal!==void 0){n+=` of ${Gy(this.bytesTotal)}`;let e=this.bytesTotal-this.bytesDone;t>0&&e>0&&(r=`, ~${UE(e/t*1e3)} left`)}return`hf: ${this.filesDone}/${this.filesTotal} files, ${n}, ${Gy(t)}/s${r}\n`}};function GE(e){let t=e;return typeof t.writeStdout==`function`?t.writeStdout.bind(t):void 0}async function KE(e,t,n,r){let i=HE(e);if(`error`in i)return zE(i.error);let a=oa(i.repo,i.to,t.cwd),{downloadHfRepo:o,HfFileDownloadError:s}=await import(`./hf-download-CNg2vD63.js`),c=GE(t),l=new WE(i.files.length,void 0,r),u=``;try{let e=await o({fetch:n.fetch,streamFetch:n.streamFetch,fs:t.fs,repo:i.repo,targetDir:a,files:i.files,revision:i.revision,force:i.force,concurrency:i.concurrency,maxBytesInFlight:i.maxInFlightMb===void 0?void 0:i.maxInFlightMb*1024*1024,signal:t.signal,endpoint:t.env.get(`HF_ENDPOINT`),progress:{onListed:({files:e,totalBytes:t})=>{l.listed(e.length,t);let n=`hf: ${e.length} file(s) listed in ${i.repo}@${i.revision}\n`;u+=n,c?.(n)},onFile:e=>{u+=e.status===`downloaded`?`hf: downloaded ${e.file} (${Gy(e.bytes)})\n`:`hf: skipped ${e.file} (already at ${a})\n`,l.file(e.status,e.bytes);let t=c?l.line():null;t&&c?.(t)}}}),r=e.downloaded>0?` in ${UE(l.elapsedMs())} (${Gy(l.rate())}/s)`:``,s=`hf: ${e.downloaded} downloaded, ${e.skipped} skipped, ${Gy(e.totalBytes)} total into ${a}${r}\n`;return{stdout:``,stderr:u+s,exitCode:0}}catch(e){return e instanceof s?(u+=`hf: failed ${e.file}: ${e.message}\n`,{stdout:``,stderr:u,exitCode:1}):zE(e instanceof Error?e.message:String(e))}}const qE=[`--to`,`--revision`,`--rev`,`--concurrency`,`-j`,`--max-in-flight-mb`];function JE(e){let t=e.now??Date.now;return{name:`hf`,async execute(n,r){if(n.length===0||w(n,{valueFlags:qE}))return RE(+(n.length===0));let i=n[0];return i===`download`?KE(n.slice(1),r,e,t):zE(`unknown subcommand: ${i}`)}}}const YE=new Set([`--vid`,`--pid`,`--usage-page`,`--usage`,`--__resolved`,`--timeout`]);function XE(e){return Pn(e,YE)}function ZE(e,t){let n=/^0x/i.test(e)?parseInt(e,16):parseInt(e,10);if(!Number.isFinite(n)||Number.isNaN(n))throw Error(`invalid ${t}: '${e}'`);return n}function QE(e){let t={};return e.has(`--vid`)&&(t.vendorId=ZE(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=ZE(e.get(`--pid`),`pid`)),e.has(`--usage-page`)&&(t.usagePage=ZE(e.get(`--usage-page`),`usage-page`)),e.has(`--usage`)&&(t.usage=ZE(e.get(`--usage`),`usage`)),Object.keys(t).length>0?[t]:[]}function $E(e){let t=bi(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function eD(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function tD(e){return e.toString(16).padStart(2,`0`)}function nD(e){return`0x${e.toString(16).padStart(4,`0`)}`}function rD(e){let t=e.productName||`(unknown)`,n=e.opened?` [open]`:``,r=e.usagePage===void 0?``:`\t${nD(e.usagePage)}:${nD(e.usage??0)}`;return`${e.handle}\t${nD(e.vendorId)}:${nD(e.productId)}${r}\t${t}${n}`}function iD(e,t){let n=t?.usagePage,r=t?.usage;if(n===void 0&&r===void 0)return e;let i=e.findIndex(e=>(n===void 0||e.usagePage===n)&&(r===void 0||e.usage===r));if(i<=0)return e;let a=e.slice(),[o]=a.splice(i,1);return a.unshift(o),a}function aD(e){return`${e.map(rD).join(`
1279
- `)}\n`}function oD(e){return`${tD(e.reportId)} ${eD(e.bytes)}`.trimEnd()}function sD(e){return{stdout:e,stderr:``,exitCode:0}}function W(e){return{stdout:``,stderr:`hid: ${e}\n`,exitCode:1}}const cD=`hid - access HID devices via WebHID
1273
+ `,stderr:``,exitCode:e}}function gE(e){return{stdout:``,stderr:`hf: ${e}\n`,exitCode:1}}const _E=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;function vE(e,t){if(typeof t!=`string`)return{error:`${e} requires a value`};let n=Number(t);return!/^\d+$/.test(t)||!Number.isSafeInteger(n)||n<1?{error:`${e} must be a positive integer, got '${t}'`}:n}function yE(e){let t=null,n=`main`,r=!1,i,a,o=[],s=0;for(;s<e.length;){let c=e[s];if(c===`--concurrency`||c===`-j`||c===`--max-in-flight-mb`){let t=vE(c,e[s+1]);if(typeof t!=`number`)return t;c===`--max-in-flight-mb`?a=t:i=t,s+=2;continue}if(c===`--to`){let n=e[s+1];if(typeof n!=`string`)return{error:`--to requires a value`};t=n,s+=2;continue}if(c===`--revision`||c===`--rev`){let t=e[s+1];if(typeof t!=`string`)return{error:`${c} requires a value`};n=t,s+=2;continue}if(c===`--force`||c===`-f`){r=!0,s+=1;continue}if(c.startsWith(`--`))return{error:`unknown option: ${c}`};o.push(c),s+=1}if(o.length===0)return{error:`download requires <repo>`};let c=o[0];return _E.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 bE(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 xE=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=Sy(this.bytesDone),r=``;if(this.bytesTotal!==void 0){n+=` of ${Sy(this.bytesTotal)}`;let e=this.bytesTotal-this.bytesDone;t>0&&e>0&&(r=`, ~${bE(e/t*1e3)} left`)}return`hf: ${this.filesDone}/${this.filesTotal} files, ${n}, ${Sy(t)}/s${r}\n`}};function SE(e){let t=e;return typeof t.writeStdout==`function`?t.writeStdout.bind(t):void 0}async function CE(e,t,n,r){let i=yE(e);if(`error`in i)return gE(i.error);let a=ra(i.repo,i.to,t.cwd),{downloadHfRepo:o,HfFileDownloadError:s}=await import(`./hf-download-CNg2vD63.js`),c=SE(t),l=new xE(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} (${Sy(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 ${bE(l.elapsedMs())} (${Sy(l.rate())}/s)`:``,s=`hf: ${e.downloaded} downloaded, ${e.skipped} skipped, ${Sy(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}):gE(e instanceof Error?e.message:String(e))}}const wE=[`--to`,`--revision`,`--rev`,`--concurrency`,`-j`,`--max-in-flight-mb`];function TE(e){let t=e.now??Date.now;return{name:`hf`,async execute(n,r){if(n.length===0||w(n,{valueFlags:wE}))return hE(+(n.length===0));let i=n[0];return i===`download`?CE(n.slice(1),r,e,t):gE(`unknown subcommand: ${i}`)}}}const EE=new Set([`--vid`,`--pid`,`--usage-page`,`--usage`,`--__resolved`,`--timeout`]);function DE(e){return jn(e,EE)}function OE(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 kE(e){let t={};return e.has(`--vid`)&&(t.vendorId=OE(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=OE(e.get(`--pid`),`pid`)),e.has(`--usage-page`)&&(t.usagePage=OE(e.get(`--usage-page`),`usage-page`)),e.has(`--usage`)&&(t.usage=OE(e.get(`--usage`),`usage`)),Object.keys(t).length>0?[t]:[]}function AE(e){let t=_i(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function jE(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function ME(e){return e.toString(16).padStart(2,`0`)}function NE(e){return`0x${e.toString(16).padStart(4,`0`)}`}function PE(e){let t=e.productName||`(unknown)`,n=e.opened?` [open]`:``,r=e.usagePage===void 0?``:`\t${NE(e.usagePage)}:${NE(e.usage??0)}`;return`${e.handle}\t${NE(e.vendorId)}:${NE(e.productId)}${r}\t${t}${n}`}function FE(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 IE(e){return`${e.map(PE).join(`
1274
+ `)}\n`}function LE(e){return`${ME(e.reportId)} ${jE(e.bytes)}`.trimEnd()}function RE(e){return{stdout:e,stderr:``,exitCode:0}}function W(e){return{stdout:``,stderr:`hid: ${e}\n`,exitCode:1}}const zE=`hid - access HID devices via WebHID
1280
1275
 
1281
1276
  Usage: hid <subcommand> [options]
1282
1277
 
@@ -1299,11 +1294,11 @@ Options:
1299
1294
  --timeout <ms> query: wait this long for an input report (default 1000)
1300
1295
  -h, --help
1301
1296
 
1302
- Report payloads are capped at ${ni} bytes (4 MiB).
1303
- `;function lD(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return sD(t)}return sD(e.length?`${eD(e)}\n`:``)}function uD(e){return!e||e.aborted?Promise.resolve():new Promise(t=>{e.addEventListener(`abort`,()=>t(),{once:!0})})}async function dD(e){let t=await e.list();return t.length===0?sD(`no granted HID devices
1304
- `):sD(`${t.map(rD).join(`
1305
- `)}\n`)}async function fD(e,t){let n=e.get(`--__resolved`),r=QE(e),i=r[0];if(n){let e=n.split(`,`).filter(e=>e.length>0);return e.length===0?W(`request: missing resolved handle`):sD(aD(iD(await Promise.all(e.map(e=>t.info(e))),i)))}let a=je();return a?pD(r,i,a,t):sD(aD(iD(await t.request(r),i)))}async function pD(e,t,n,r){let i=await $x(`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=ti();if(!t)return W(`request: WebHID unavailable for device re-acquire`);let n=await t.getDevices(),r=Yr(),s=n.filter(t=>t.vendorId===e.vendorId&&t.productId===e.productId);if(s.length===0)return W(`request: granted device could not be re-acquired`);for(let e of s)r.register(e);a=e.vendorId,o=e.productId}let s=(await r.list()).filter(e=>e.vendorId===a&&e.productId===o),c=iD(s.length>0?s:[],t);return c.length===0?W(`request: granted device could not be re-acquired`):sD(aD(c))}async function mD(e,t,n){let r=t[1];return r?(e===`open`?await n.open(r):await n.close(r),sD(``)):W(`${e}: handle required`)}async function hD(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return W(`${e}: handle and report-id required`);let o=ZE(a,`report-id`),s=$E(n);return s.length>4194304?W(`${e} payload exceeds 4 MiB limit`):(e===`send`?await r.sendReport(i,o,s):await r.sendFeatureReport(i,o,s),sD(``))}async function gD(e,t,n){let[,r,i]=e;return!r||i===void 0?W(`feature-get: handle and report-id required`):lD((await t.receiveFeatureReport(r,ZE(i,`report-id`))).bytes,n)}async function _D(e,t,n){let r=e[1];if(!r)return W(`watch: handle required`);let i=[],a=await n.subscribeInputReports(r,e=>{i.push(oD(e))});try{await uD(t.signal)}finally{await a()}return sD(i.length?`${i.join(`
1306
- `)}\n`:``)}async function vD(e,t,n,r,i){let[,a,o]=e;if(!a||o===void 0)return W(`query: handle and report-id required`);let s=ZE(o,`report-id`),c=$E(t);if(c.length>4194304)return W(`query payload exceeds 4 MiB limit`);let l=n.has(`--timeout`)?ZE(n.get(`--timeout`),`timeout`):1e3,u=()=>{},d=new Promise(e=>{u=e}),f=await r.subscribeInputReports(a,e=>{u(e)}),p;try{await r.sendReport(a,s,c);let e=new Promise(e=>{p=setTimeout(()=>e(`timeout`),l)}),t=await Promise.race([d,e]);return t===`timeout`?W(`query: no input report within ${l}ms`):i?lD(t.bytes,!0):sD(`${oD(t)}\n`)}finally{p!==void 0&&clearTimeout(p),await f()}}async function yD(e,t,n){let{positionals:r,flags:i,bools:a}=XE(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return dD(n);case`request`:return fD(i,n);case`open`:case`close`:return mD(o,r,n);case`send`:case`feature-send`:return hD(o,r,t,n);case`feature-get`:return gD(r,n,s);case`watch`:return _D(r,t,n);case`query`:return vD(r,t,i,n,s);default:return W(`unknown subcommand '${o??``}'. Try 'hid --help'.`)}}function bD(){return S(`hid`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return sD(cD);let n=ii(de(),y());if(!n)return W(`WebHID is unavailable in this environment`);try{return await yD(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No device selected/i.test(t)?W(`user cancelled or no device selected`):W(t)}})}const xD=1e3,SD=`usage: id [-u|-g|-G] [-n] [-r] [USER]`,CD=`${SD}
1297
+ Report payloads are capped at ${$r} bytes (4 MiB).
1298
+ `;function BE(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return RE(t)}return RE(e.length?`${jE(e)}\n`:``)}function VE(e){return!e||e.aborted?Promise.resolve():new Promise(t=>{e.addEventListener(`abort`,()=>t(),{once:!0})})}async function HE(e){let t=await e.list();return t.length===0?RE(`no granted HID devices
1299
+ `):RE(`${t.map(PE).join(`
1300
+ `)}\n`)}async function UE(e,t){let n=e.get(`--__resolved`),r=kE(e),i=r[0];if(n){let e=n.split(`,`).filter(e=>e.length>0);return e.length===0?W(`request: missing resolved handle`):RE(IE(FE(await Promise.all(e.map(e=>t.info(e))),i)))}let a=je();return a?WE(r,i,a,t):RE(IE(FE(await t.request(r),i)))}async function WE(e,t,n,r){let i=await Ax(`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=Qr();if(!t)return W(`request: WebHID unavailable for device re-acquire`);let n=await t.getDevices(),r=Kr(),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=FE(s.length>0?s:[],t);return c.length===0?W(`request: granted device could not be re-acquired`):RE(IE(c))}async function GE(e,t,n){let r=t[1];return r?(e===`open`?await n.open(r):await n.close(r),RE(``)):W(`${e}: handle required`)}async function KE(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return W(`${e}: handle and report-id required`);let o=OE(a,`report-id`),s=AE(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),RE(``))}async function qE(e,t,n){let[,r,i]=e;return!r||i===void 0?W(`feature-get: handle and report-id required`):BE((await t.receiveFeatureReport(r,OE(i,`report-id`))).bytes,n)}async function JE(e,t,n){let r=e[1];if(!r)return W(`watch: handle required`);let i=[],a=await n.subscribeInputReports(r,e=>{i.push(LE(e))});try{await VE(t.signal)}finally{await a()}return RE(i.length?`${i.join(`
1301
+ `)}\n`:``)}async function YE(e,t,n,r,i){let[,a,o]=e;if(!a||o===void 0)return W(`query: handle and report-id required`);let s=OE(o,`report-id`),c=AE(t);if(c.length>4194304)return W(`query payload exceeds 4 MiB limit`);let l=n.has(`--timeout`)?OE(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?BE(t.bytes,!0):RE(`${LE(t)}\n`)}finally{p!==void 0&&clearTimeout(p),await f()}}async function XE(e,t,n){let{positionals:r,flags:i,bools:a}=DE(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return HE(n);case`request`:return UE(i,n);case`open`:case`close`:return GE(o,r,n);case`send`:case`feature-send`:return KE(o,r,t,n);case`feature-get`:return qE(r,n,s);case`watch`:return JE(r,t,n);case`query`:return YE(r,t,i,n,s);default:return W(`unknown subcommand '${o??``}'. Try 'hid --help'.`)}}function ZE(){return S(`hid`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return RE(zE);let n=ti(de(),y());if(!n)return W(`WebHID is unavailable in this environment`);try{return await XE(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 QE=1e3,$E=`usage: id [-u|-g|-G] [-n] [-r] [USER]`,eD=`${$E}
1307
1302
 
1308
1303
  Print the user and group identity of this SLICC runtime.
1309
1304
 
@@ -1318,22 +1313,22 @@ Options:
1318
1313
  --version Print the SLICC build.
1319
1314
 
1320
1315
  Identity comes from the home directory, which is where the rest of the shell
1321
- gets it too. A cone is the human user (uid ${xD}, one per runtime, since every
1316
+ gets it too. A cone is the human user (uid ${QE}, one per runtime, since every
1322
1317
  cone shares one home); a scoop is a service identity whose uid is derived from
1323
1318
  its folder name, so it is stable across reloads and distinct per scoop.
1324
1319
  Every user is in a user-private group of the same name, plus the role group
1325
1320
  \`cone\` (10) or \`scoop\` (20).
1326
- `,wD=`/scoops/`;function TD(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return 2e3+t%58e3}function ED(e,t){return{name:e,uid:t===`cone`?xD:TD(e),role:t}}function DD(e){return[{gid:e.uid,name:e.name},e.role===`cone`?{gid:10,name:`cone`}:{gid:20,name:`scoop`}]}function OD(e,t){return`${e}(${t})`}function kD(e){let t=DD(e),n=t[0];return`uid=${OD(e.uid,e.name)} gid=${OD(n.gid,n.name)} groups=${t.map(e=>OD(e.gid,e.name)).join(`,`)}\n`}async function AD(e){let t=e.env.get(`HOME`)??``,n=t.startsWith(wD)?`scoop`:`cone`,r=e.env.get(`USER`)||jD(t,n);return r?ED(r,n):ED(vp(await _p(MD(e.fs))),`cone`)}function jD(e,t){return e===``?``:t===`cone`?vp(e):e.slice(8).split(`/`)[0]??``}function MD(e){return{readDir:async t=>(await e.readdirWithFileTypes?.(t)??[]).map(e=>({name:e.name,type:e.isDirectory?`directory`:`file`})),stat:async t=>({mtime:(await e.stat(t)).mtime.getTime()})}}async function ND(e,t){return await e.fs.exists(`/home/${t}`).catch(()=>!1)?ED(t,`cone`):await e.fs.exists(`${wD}${t}`).catch(()=>!1)?ED(t,`scoop`):null}function PD(e){let t={select:`all`,names:!1,mode:`run`},n=[];for(let r of e){if(r===`--help`||r===`-h`)return{...t,mode:`help`};if(r===`--version`)return{...t,mode:`version`};let e=ID[r];if(e){e(t);continue}if(r.length>1&&r.startsWith(`-`)){for(let e of r.slice(1)){let n=FD[e];if(!n)return{error:`unrecognized option '-${e}'`};n(t)}continue}n.push(r)}return n.length>1?{error:`extra operand '${n[1]}'`}:(n[0]!==void 0&&(t.operand=n[0]),t.names&&t.select===`all`?{error:`cannot print only names in default format`}:t)}const FD={u:e=>{e.select=`user`},g:e=>{e.select=`group`},G:e=>{e.select=`groups`},n:e=>{e.names=!0},r:()=>void 0},ID={"--user":FD.u,"--group":FD.g,"--groups":FD.G,"--name":FD.n,"--real":FD.r};function LD(e,t){let n=DD(e),r=(e,n)=>t.names?n:String(e);switch(t.select){case`user`:return`${r(e.uid,e.name)}\n`;case`group`:return`${r(n[0].gid,n[0].name)}\n`;case`groups`:return`${n.map(e=>r(e.gid,e.name)).join(` `)}\n`;case`all`:return kD(e)}}function RD(){return S(`id`,async(e,t)=>{let n=PD(e);if(`error`in n)return{stdout:``,stderr:`id: ${n.error}\n${SD}\n`,exitCode:1};if(n.mode===`help`)return BD(CD);if(n.mode===`version`)return BD(`id (SLICC) ${nt().version}\n`);let r=n.operand===void 0?await AD(t):await ND(t,n.operand);return r?BD(LD(r,n)):{stdout:``,stderr:`id: '${n.operand}': no such user\n`,exitCode:1}})}function zD(){return S(`whoami`,async(e,t)=>BD(`${(await AD(t)).name}\n`))}function BD(e){return{stdout:e,stderr:``,exitCode:0}}function VD(){return{stdout:`imgcat - preview image and video files in the preview tab
1321
+ `,tD=`/scoops/`;function nD(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 rD(e,t){return{name:e,uid:t===`cone`?QE:nD(e),role:t}}function iD(e){return[{gid:e.uid,name:e.name},e.role===`cone`?{gid:10,name:`cone`}:{gid:20,name:`scoop`}]}function aD(e,t){return`${e}(${t})`}function oD(e){let t=iD(e),n=t[0];return`uid=${aD(e.uid,e.name)} gid=${aD(n.gid,n.name)} groups=${t.map(e=>aD(e.gid,e.name)).join(`,`)}\n`}async function sD(e){let t=e.env.get(`HOME`)??``,n=t.startsWith(tD)?`scoop`:`cone`,r=e.env.get(`USER`)||cD(t,n);return r?rD(r,n):rD(hp(await mp(lD(e.fs))),`cone`)}function cD(e,t){return e===``?``:t===`cone`?hp(e):e.slice(8).split(`/`)[0]??``}function lD(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 uD(e,t){return await e.fs.exists(`/home/${t}`).catch(()=>!1)?rD(t,`cone`):await e.fs.exists(`${tD}${t}`).catch(()=>!1)?rD(t,`scoop`):null}function dD(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=pD[r];if(e){e(t);continue}if(r.length>1&&r.startsWith(`-`)){for(let e of r.slice(1)){let n=fD[e];if(!n)return{error:`unrecognized option '-${e}'`};n(t)}continue}n.push(r)}return n.length>1?{error:`extra operand '${n[1]}'`}:(n[0]!==void 0&&(t.operand=n[0]),t.names&&t.select===`all`?{error:`cannot print only names in default format`}:t)}const fD={u:e=>{e.select=`user`},g:e=>{e.select=`group`},G:e=>{e.select=`groups`},n:e=>{e.names=!0},r:()=>void 0},pD={"--user":fD.u,"--group":fD.g,"--groups":fD.G,"--name":fD.n,"--real":fD.r};function mD(e,t){let n=iD(e),r=(e,n)=>t.names?n:String(e);switch(t.select){case`user`:return`${r(e.uid,e.name)}\n`;case`group`:return`${r(n[0].gid,n[0].name)}\n`;case`groups`:return`${n.map(e=>r(e.gid,e.name)).join(` `)}\n`;case`all`:return oD(e)}}function hD(){return S(`id`,async(e,t)=>{let n=dD(e);if(`error`in n)return{stdout:``,stderr:`id: ${n.error}\n${$E}\n`,exitCode:1};if(n.mode===`help`)return _D(eD);if(n.mode===`version`)return _D(`id (SLICC) ${$e().version}\n`);let r=n.operand===void 0?await sD(t):await uD(t,n.operand);return r?_D(mD(r,n)):{stdout:``,stderr:`id: '${n.operand}': no such user\n`,exitCode:1}})}function gD(){return S(`whoami`,async(e,t)=>_D(`${(await sD(t)).name}\n`))}function _D(e){return{stdout:e,stderr:``,exitCode:0}}function vD(){return{stdout:`imgcat - preview image and video files in the preview tab
1327
1322
 
1328
1323
  Usage: imgcat <path> [path...]
1329
1324
 
1330
1325
  Options:
1331
1326
  -h, --help Show this help message
1332
- `,stderr:``,exitCode:0}}function HD(e={}){return S(`imgcat`,async(t,n)=>{if(t.length===0||w(t))return VD();let r=C(t);if(`error`in r)return{stdout:``,stderr:`imgcat: ${r.error}\n`,exitCode:1};if(r.positionals.length===0)return VD();if(!e.onMediaPreview)return{stdout:``,stderr:`imgcat: terminal preview is unavailable
1333
- `,exitCode:1};let i=[];for(let e of r.positionals){let t=n.fs.resolvePath(n.cwd,e);if(!(await n.fs.stat(t)).isFile)return{stdout:``,stderr:`imgcat: not a file: ${e}\n`,exitCode:1};let r=De(t);if(!Ee(r))return{stdout:``,stderr:`imgcat: unsupported media type: ${e}\n`,exitCode:1};let a=await n.fs.readFileBuffer(t),o=new Uint8Array(a.byteLength);o.set(a),i.push({path:t,mimeType:r,bytes:o})}try{return await e.onMediaPreview(i),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`imgcat: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}const UD=new Set([`run`,`run-script`]),WD=new Set([`test`,`start`,`stop`,`restart`]),GD=new Set([` `,` `,`
1334
- `,`;`,`|`,`&`,`(`,`)`,`{`,`}`,`<`,`>`]),KD=new Set([`;`,`|`,`&`,`(`,`)`,`{`,`
1335
- `]),qD=/^[A-Za-z_][A-Za-z0-9_]*=/,JD=/^[@A-Za-z0-9._-]+$/,YD=new Set([`if`,`then`,`else`,`elif`,`fi`,`for`,`while`,`until`,`do`,`done`,`case`,`in`,`esac`,`function`,`time`,`!`]),XD=new Set([`if`,`then`,`else`,`elif`,`while`,`until`,`do`,`time`,`!`]),ZD=new Set([`ipx`,`npx`]);function QD(e){return`'${e.replace(/'/g,`'\\''`)}'`}async function $D(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}function*eO(e){let t=b(e);for(;yield t,t!==`/`;)t=Fe(t).dir}function tO(e){if(typeof e!=`object`||!e)return{};let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}function nO(e){return typeof e==`string`?e:void 0}async function rO(e,t){for(let n of eO(t)){let t=x(n,`package.json`);if(!await e.exists(t))continue;let r;try{r=JSON.parse(await $D(e,t))}catch(e){throw Error(`${t} is not valid JSON: ${e instanceof Error?e.message:String(e)}`)}return{dir:n,name:nO(r.name),version:nO(r.version),scripts:tO(r.scripts)}}return null}function iO(e,t){let n=t,r=``;for(;n<e.length;){let t=e[n];if(r!==``){t===`\\`&&r===`"`?n++:t===r&&(r=``),n++;continue}if(t===`'`||t===`"`){r=t,n++;continue}if(t===`\\`){n+=2;continue}if(GD.has(t))break;n++}return{start:t,end:n,text:e.slice(t,n)}}function aO(e){let t=[],n=0,r=!0;for(;n<e.length;){let i=e[n];if(i===` `||i===` `){n++;continue}if(KD.has(i)){r=!0,n++;continue}let a=iO(e,n);if(a.end===a.start){n++;continue}if(r&&!qD.test(a.text)){if(XD.has(a.text)){n=a.end;continue}t.push(a),r=!1}n=a.end}return t}function oO(e,t){return!JD.test(e)||YD.has(e)||ZD.has(e)?!1:!t.isRegistered(e)}async function sO(e,t){let n=aO(e).filter(e=>oO(e.text,t));if(n.length===0)return e;let r=[];for(let e of n)await t.hasLocalBin(e.text)&&r.push(e);if(r.length===0)return e;let i=e;for(let e of[...r].reverse())i=`${i.slice(0,e.start)}ipx ${i.slice(e.start)}`;return i}function cO(e){let t=[];for(let n of eO(e))t.push(x(n,`node_modules`,`.bin`));return t}function lO(e,t,n,r){let i=r.env.get(`PATH`)??``,a={PATH:[...cO(e.dir),i].filter(e=>e!==``).join(`:`),npm_lifecycle_event:t,npm_lifecycle_script:n};return e.name!==void 0&&(a.npm_package_name=e.name),e.version!==void 0&&(a.npm_package_version=e.version),a}function uO(e){return e.name===void 0?e.dir:e.version===void 0?e.name:`${e.name}@${e.version}`}function dO(e,t){let n=Object.entries(t.scripts);if(n.length===0)return`${e}: no scripts defined in ${x(t.dir,`package.json`)}\n`;let r=[`Scripts available in ${uO(t)} via \`${e} run\`:`];for(let[e,t]of n)r.push(` ${e}`),r.push(` ${t}`);return`${r.join(`
1336
- `)}\n`}function fO(e,t){return t===`--silent`||t===`-s`?(e.silent=!0,!0):t===`--if-present`&&(e.ifPresent=!0,!0)}function pO(e){let t={silent:!1,ifPresent:!1},n=[],r,i=!1;for(let a of e){if(i){n.push(a);continue}if(a===`--`){i=!0;continue}fO(t,a)||(r===void 0?r=a:n.push(a))}return{flags:t,script:r,extraArgs:n}}function mO(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}function hO(e,t,n,r){let i=r.length>0?` ${r.map(QD).join(` `)}`:``,a=[],o=e.scripts[`pre${t}`];o!==void 0&&a.push({event:`pre${t}`,body:o}),a.push({event:t,body:`${n}${i}`});let s=e.scripts[`post${t}`];return s!==void 0&&a.push({event:`post${t}`,body:s}),a}async function gO(e,t,n,r){if(n===`start`&&await r.exists(x(t.dir,`server.js`)))return`node server.js`;if(n===`restart`)return`${e} stop --if-present && ${e} start`}function _O(e,t,n){let r=new Set(n.getRegisteredCommands?.()??[]);return{isRegistered:e=>r.has(e),hasLocalBin:async n=>{for(let r of cO(t.dir))if(await e.exists(x(r,n)))return!0;return!1}}}async function vO(e,t,n,r,i,a){let o=i.exec;if(!o)return mO(e,`run requires shell exec support, which this context does not provide`);let s=_O(a.fs,t,i),c=uO(t),l=``,u=``;for(let a of n){r.silent||(l+=`\n> ${c} ${a.event}\n> ${a.body}\n\n`);let n=await o(await sO(a.body,s),{cwd:t.dir,env:lO(t,a.event,a.body,i),stdin:bi(i.stdin),stdinKind:`bytes`});if(l+=n.stdout,u+=n.stderr,n.exitCode!==0)return u+=`${e}: script '${a.event}' exited with code ${n.exitCode}\n`,{stdout:l,stderr:u,exitCode:n.exitCode}}return{stdout:l,stderr:u,exitCode:0}}async function yO(e,t,n,r){let i;try{i=await rO(r.fs,n.cwd)}catch(t){return mO(e,t instanceof Error?t.message:String(t))}if(!i)return mO(e,`no package.json found in ${n.cwd} or any parent directory — nothing to run`);let{flags:a,script:o,extraArgs:s}=pO(t);if(o===void 0)return{stdout:dO(e,i),stderr:``,exitCode:0};let c=i.scripts[o]??await gO(e,i,o,r.fs)??void 0;if(c===void 0){if(a.ifPresent)return{stdout:``,stderr:``,exitCode:0};let t=Object.keys(i.scripts);return mO(e,`missing script: ${o}${t.length>0?` (available: ${t.join(`, `)})`:` (${x(i.dir,`package.json`)} defines no scripts)`}`)}return vO(e,i,hO(i,o,c,s),a,n,r)}const bO=()=>import(`./installer-CbjJjnwg.js`),xO=new Set([`install`,`i`,`add`]),SO=new Set([`uninstall`,`remove`,`rm`,`un`]),CO=new Set([`list`,`ls`]),wO=new Set([`-g`,`--global`,`--location=global`]),TO=[`-g`,`--global`,`-D`,`--save-dev`];function EO(e){return`${e} - install packages from the npm registry into node_modules
1327
+ `,stderr:``,exitCode:0}}function yD(e={}){return S(`imgcat`,async(t,n)=>{if(t.length===0||w(t))return vD();let r=C(t);if(`error`in r)return{stdout:``,stderr:`imgcat: ${r.error}\n`,exitCode:1};if(r.positionals.length===0)return vD();if(!e.onMediaPreview)return{stdout:``,stderr:`imgcat: terminal preview is unavailable
1328
+ `,exitCode:1};let i=[];for(let e of r.positionals){let t=n.fs.resolvePath(n.cwd,e);if(!(await n.fs.stat(t)).isFile)return{stdout:``,stderr:`imgcat: not a file: ${e}\n`,exitCode:1};let r=De(t);if(!Ee(r))return{stdout:``,stderr:`imgcat: unsupported media type: ${e}\n`,exitCode:1};let a=await n.fs.readFileBuffer(t),o=new Uint8Array(a.byteLength);o.set(a),i.push({path:t,mimeType:r,bytes:o})}try{return await e.onMediaPreview(i),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`imgcat: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}const bD=new Set([`run`,`run-script`]),xD=new Set([`test`,`start`,`stop`,`restart`]),SD=new Set([` `,` `,`
1329
+ `,`;`,`|`,`&`,`(`,`)`,`{`,`}`,`<`,`>`]),CD=new Set([`;`,`|`,`&`,`(`,`)`,`{`,`
1330
+ `]),wD=/^[A-Za-z_][A-Za-z0-9_]*=/,TD=/^[@A-Za-z0-9._-]+$/,ED=new Set([`if`,`then`,`else`,`elif`,`fi`,`for`,`while`,`until`,`do`,`done`,`case`,`in`,`esac`,`function`,`time`,`!`]),DD=new Set([`if`,`then`,`else`,`elif`,`while`,`until`,`do`,`time`,`!`]),OD=new Set([`ipx`,`npx`]);function kD(e){return`'${e.replace(/'/g,`'\\''`)}'`}async function AD(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}function*jD(e){let t=b(e);for(;yield t,t!==`/`;)t=Fe(t).dir}function MD(e){if(typeof e!=`object`||!e)return{};let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}function ND(e){return typeof e==`string`?e:void 0}async function PD(e,t){for(let n of jD(t)){let t=x(n,`package.json`);if(!await e.exists(t))continue;let r;try{r=JSON.parse(await AD(e,t))}catch(e){throw Error(`${t} is not valid JSON: ${e instanceof Error?e.message:String(e)}`)}return{dir:n,name:ND(r.name),version:ND(r.version),scripts:MD(r.scripts)}}return null}function FD(e,t){let n=t,r=``;for(;n<e.length;){let t=e[n];if(r!==``){t===`\\`&&r===`"`?n++:t===r&&(r=``),n++;continue}if(t===`'`||t===`"`){r=t,n++;continue}if(t===`\\`){n+=2;continue}if(SD.has(t))break;n++}return{start:t,end:n,text:e.slice(t,n)}}function ID(e){let t=[],n=0,r=!0;for(;n<e.length;){let i=e[n];if(i===` `||i===` `){n++;continue}if(CD.has(i)){r=!0,n++;continue}let a=FD(e,n);if(a.end===a.start){n++;continue}if(r&&!wD.test(a.text)){if(DD.has(a.text)){n=a.end;continue}t.push(a),r=!1}n=a.end}return t}function LD(e,t){return!TD.test(e)||ED.has(e)||OD.has(e)?!1:!t.isRegistered(e)}async function RD(e,t){let n=ID(e).filter(e=>LD(e.text,t));if(n.length===0)return e;let r=[];for(let e of n)await t.hasLocalBin(e.text)&&r.push(e);if(r.length===0)return e;let i=e;for(let e of[...r].reverse())i=`${i.slice(0,e.start)}ipx ${i.slice(e.start)}`;return i}function zD(e){let t=[];for(let n of jD(e))t.push(x(n,`node_modules`,`.bin`));return t}function BD(e,t,n,r){let i=r.env.get(`PATH`)??``,a={PATH:[...zD(e.dir),i].filter(e=>e!==``).join(`:`),npm_lifecycle_event:t,npm_lifecycle_script:n};return e.name!==void 0&&(a.npm_package_name=e.name),e.version!==void 0&&(a.npm_package_version=e.version),a}function VD(e){return e.name===void 0?e.dir:e.version===void 0?e.name:`${e.name}@${e.version}`}function HD(e,t){let n=Object.entries(t.scripts);if(n.length===0)return`${e}: no scripts defined in ${x(t.dir,`package.json`)}\n`;let r=[`Scripts available in ${VD(t)} via \`${e} run\`:`];for(let[e,t]of n)r.push(` ${e}`),r.push(` ${t}`);return`${r.join(`
1331
+ `)}\n`}function UD(e,t){return t===`--silent`||t===`-s`?(e.silent=!0,!0):t===`--if-present`&&(e.ifPresent=!0,!0)}function WD(e){let t={silent:!1,ifPresent:!1},n=[],r,i=!1;for(let a of e){if(i){n.push(a);continue}if(a===`--`){i=!0;continue}UD(t,a)||(r===void 0?r=a:n.push(a))}return{flags:t,script:r,extraArgs:n}}function GD(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}function KD(e,t,n,r){let i=r.length>0?` ${r.map(kD).join(` `)}`:``,a=[],o=e.scripts[`pre${t}`];o!==void 0&&a.push({event:`pre${t}`,body:o}),a.push({event:t,body:`${n}${i}`});let s=e.scripts[`post${t}`];return s!==void 0&&a.push({event:`post${t}`,body:s}),a}async function qD(e,t,n,r){if(n===`start`&&await r.exists(x(t.dir,`server.js`)))return`node server.js`;if(n===`restart`)return`${e} stop --if-present && ${e} start`}function JD(e,t,n){let r=new Set(n.getRegisteredCommands?.()??[]);return{isRegistered:e=>r.has(e),hasLocalBin:async n=>{for(let r of zD(t.dir))if(await e.exists(x(r,n)))return!0;return!1}}}async function YD(e,t,n,r,i,a){let o=i.exec;if(!o)return GD(e,`run requires shell exec support, which this context does not provide`);let s=JD(a.fs,t,i),c=VD(t),l=``,u=``;for(let a of n){r.silent||(l+=`\n> ${c} ${a.event}\n> ${a.body}\n\n`);let n=await o(await RD(a.body,s),{cwd:t.dir,env:BD(t,a.event,a.body,i),stdin:_i(i.stdin),stdinKind:`bytes`});if(l+=n.stdout,u+=n.stderr,n.exitCode!==0)return u+=`${e}: script '${a.event}' exited with code ${n.exitCode}\n`,{stdout:l,stderr:u,exitCode:n.exitCode}}return{stdout:l,stderr:u,exitCode:0}}async function XD(e,t,n,r){let i;try{i=await PD(r.fs,n.cwd)}catch(t){return GD(e,t instanceof Error?t.message:String(t))}if(!i)return GD(e,`no package.json found in ${n.cwd} or any parent directory — nothing to run`);let{flags:a,script:o,extraArgs:s}=WD(t);if(o===void 0)return{stdout:HD(e,i),stderr:``,exitCode:0};let c=i.scripts[o]??await qD(e,i,o,r.fs)??void 0;if(c===void 0){if(a.ifPresent)return{stdout:``,stderr:``,exitCode:0};let t=Object.keys(i.scripts);return GD(e,`missing script: ${o}${t.length>0?` (available: ${t.join(`, `)})`:` (${x(i.dir,`package.json`)} defines no scripts)`}`)}return YD(e,i,KD(i,o,c,s),a,n,r)}const ZD=()=>import(`./installer-CbjJjnwg.js`),QD=new Set([`install`,`i`,`add`]),$D=new Set([`uninstall`,`remove`,`rm`,`un`]),eO=new Set([`list`,`ls`]),tO=new Set([`-g`,`--global`,`--location=global`]),nO=[`-g`,`--global`,`-D`,`--save-dev`];function rO(e){return`${e} - install packages from the npm registry into node_modules
1337
1332
  and run package.json scripts; also install conda/emscripten-forge
1338
1333
  packages via '${e} mamba'
1339
1334
 
@@ -1409,15 +1404,15 @@ manifest without rewriting it. With -g, packages go to /shared/lib/node_modules
1409
1404
  and deps are recorded in /shared/lib/package.json. Existing fields are
1410
1405
  preserved. Idempotent: re-installing an already-satisfied package is a clean
1411
1406
  no-op.
1412
- `}function DO(e){let t=C(e,{bool:TO,value:[`--location`]});if(`error`in t)return t;let n=t.values.get(`--location`);return n!==void 0&&n!==`global`?{error:`unknown flag: --location=${n}`}:{global:t.bools.has(`-g`)||t.bools.has(`--global`)||n===`global`,saveDev:t.bools.has(`-D`)||t.bools.has(`--save-dev`),specs:t.positionals}}function OO(e){let t=!1,n=[];for(let r of e){if(wO.has(r)){t=!0;continue}r.startsWith(`-`)||n.push(r)}return{global:t,specs:n}}function kO(e){return w(e)}function AO(e){return e instanceof Error?e.message:String(e)}async function jO(e){e.scriptCatalog?.invalidateJsh(),await e.syncScriptCommands?.()}function MO(e,t){let n=e===`i`;return S(e,async(r,i)=>{if(n)return kO(r)?{stdout:EO(e),stderr:``,exitCode:0}:PO(e,r,i,t);if(r[0]===`mamba`){let{runIpkMamba:n}=await import(`./ipk-mamba-BRxsK-p_.js`);return n(e,r.slice(1),i,t)}if(kO(r))return{stdout:EO(e),stderr:``,exitCode:0};if(r.length===0)return{stdout:EO(e),stderr:`${e}: missing subcommand\n`,exitCode:1};let a=r[0],o=r.slice(1);return xO.has(a)?PO(e,o,i,t):SO.has(a)?IO(e,o,i,t):CO.has(a)?LO(e,o,i,t):a===`root`?RO(e,o,i,t):UD.has(a)?yO(e,o,i,{fs:t.fs}):WD.has(a)?yO(e,r,i,{fs:t.fs}):{stdout:``,stderr:`${e}: unknown subcommand '${a}' (supported: install, uninstall, list, root, run, mamba)\n`,exitCode:1}})}async function NO(e,t,n){let{installFromManifest:r,ManifestNotFoundError:i}=await bO(),a;try{a=await r({fs:n.fs,fetch:n.fetch,cwd:t.cwd})}catch(t){return t instanceof i?{stdout:``,stderr:`${e}: ${t.message}\n`,exitCode:1}:{stdout:``,stderr:`${e}: install failed: ${AO(t)}\n`,exitCode:1}}if(a.empty&&a.errors.length===0)return{stdout:`${e}: nothing to install (package.json declares no dependencies)\n`,stderr:``,exitCode:0};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),s=[...(a.notes??[]).map(t=>`${e}: ${t}`),...a.errors.map(t=>`${e}: failed to install ${t.spec}: ${AO(t.error)}`)];return{stdout:o.length>0?`${o.join(`
1407
+ `}function iO(e){let t=C(e,{bool:nO,value:[`--location`]});if(`error`in t)return t;let n=t.values.get(`--location`);return n!==void 0&&n!==`global`?{error:`unknown flag: --location=${n}`}:{global:t.bools.has(`-g`)||t.bools.has(`--global`)||n===`global`,saveDev:t.bools.has(`-D`)||t.bools.has(`--save-dev`),specs:t.positionals}}function aO(e){let t=!1,n=[];for(let r of e){if(tO.has(r)){t=!0;continue}r.startsWith(`-`)||n.push(r)}return{global:t,specs:n}}function oO(e){return w(e)}function sO(e){return e instanceof Error?e.message:String(e)}async function cO(e){e.scriptCatalog?.invalidateJsh(),await e.syncScriptCommands?.()}function lO(e,t){let n=e===`i`;return S(e,async(r,i)=>{if(n)return oO(r)?{stdout:rO(e),stderr:``,exitCode:0}:dO(e,r,i,t);if(r[0]===`mamba`){let{runIpkMamba:n}=await import(`./ipk-mamba-BRxsK-p_.js`);return n(e,r.slice(1),i,t)}if(oO(r))return{stdout:rO(e),stderr:``,exitCode:0};if(r.length===0)return{stdout:rO(e),stderr:`${e}: missing subcommand\n`,exitCode:1};let a=r[0],o=r.slice(1);return QD.has(a)?dO(e,o,i,t):$D.has(a)?pO(e,o,i,t):eO.has(a)?mO(e,o,i,t):a===`root`?hO(e,o,i,t):bD.has(a)?XD(e,o,i,{fs:t.fs}):xD.has(a)?XD(e,r,i,{fs:t.fs}):{stdout:``,stderr:`${e}: unknown subcommand '${a}' (supported: install, uninstall, list, root, run, mamba)\n`,exitCode:1}})}async function uO(e,t,n){let{installFromManifest:r,ManifestNotFoundError:i}=await ZD(),a;try{a=await r({fs:n.fs,fetch:n.fetch,cwd:t.cwd})}catch(t){return t instanceof i?{stdout:``,stderr:`${e}: ${t.message}\n`,exitCode:1}:{stdout:``,stderr:`${e}: install failed: ${sO(t)}\n`,exitCode:1}}if(a.empty&&a.errors.length===0)return{stdout:`${e}: nothing to install (package.json declares no dependencies)\n`,stderr:``,exitCode:0};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),s=[...(a.notes??[]).map(t=>`${e}: ${t}`),...a.errors.map(t=>`${e}: failed to install ${t.spec}: ${sO(t.error)}`)];return{stdout:o.length>0?`${o.join(`
1413
1408
  `)}\n`:``,stderr:s.length>0?`${s.join(`
1414
- `)}\n`:``,exitCode:a.errors.length===0?0:1}}async function PO(e,t,n,r){let i=DO(t);if(`error`in i)return{stdout:``,stderr:`${e}: ${i.error}\n`,exitCode:1};let{global:a,saveDev:o,specs:s}=i;if(a&&s.length===0)return{stdout:``,stderr:`${e}: global install requires at least one package name\n`,exitCode:1};if(s.length===0)return NO(e,n,r);let{installPackages:c}=await bO(),l;try{l=await c(s,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:a,saveDev:o})}catch(t){return{stdout:``,stderr:`${e}: install failed: ${AO(t)}\n`,exitCode:1}}let u=l.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),d=[...(l.notes??[]).map(t=>`${e}: ${t}`),...l.errors.map(t=>`${e}: failed to install ${t.spec}: ${AO(t.error)}`)];return a&&l.results.length>0&&await jO(r),{stdout:u.length>0?`${u.join(`
1409
+ `)}\n`:``,exitCode:a.errors.length===0?0:1}}async function dO(e,t,n,r){let i=iO(t);if(`error`in i)return{stdout:``,stderr:`${e}: ${i.error}\n`,exitCode:1};let{global:a,saveDev:o,specs:s}=i;if(a&&s.length===0)return{stdout:``,stderr:`${e}: global install requires at least one package name\n`,exitCode:1};if(s.length===0)return uO(e,n,r);let{installPackages:c}=await ZD(),l;try{l=await c(s,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:a,saveDev:o})}catch(t){return{stdout:``,stderr:`${e}: install failed: ${sO(t)}\n`,exitCode:1}}let u=l.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),d=[...(l.notes??[]).map(t=>`${e}: ${t}`),...l.errors.map(t=>`${e}: failed to install ${t.spec}: ${sO(t.error)}`)];return a&&l.results.length>0&&await cO(r),{stdout:u.length>0?`${u.join(`
1415
1410
  `)}\n`:``,stderr:d.length>0?`${d.join(`
1416
- `)}\n`:``,exitCode:l.errors.length===0?0:1}}function FO(e,t){if(t.length===0)return`${e}\n└── (empty)\n`;let n=[`${e}`];for(let e=0;e<t.length;e++){let r=e===t.length-1?`└──`:`├──`;n.push(`${r} ${t[e].name}@${t[e].version}`)}return`${n.join(`
1417
- `)}\n`}async function IO(e,t,n,r){let{global:i,specs:a}=OO(t);if(a.length===0)return{stdout:``,stderr:`${e}: uninstall requires at least one package name\n`,exitCode:1};let{uninstallPackages:o}=await bO(),s;try{s=await o(a,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:i})}catch(t){return{stdout:``,stderr:`${e}: uninstall failed: ${AO(t)}\n`,exitCode:1}}let c=s.results.filter(e=>e.removed).map(t=>`${e}: removed ${t.name}`),l=s.results.filter(e=>!e.removed).map(e=>e.name),u=s.errors.map(t=>`${e}: failed to uninstall ${t.spec}: ${AO(t.error)}`);l.length>0&&u.push(`${e}: ${l.join(`, `)} not installed${i?` globally`:``}`);let d=s.errors.length>0;return i&&await jO(r),{stdout:c.length>0?`${c.join(`
1411
+ `)}\n`:``,exitCode:l.errors.length===0?0:1}}function fO(e,t){if(t.length===0)return`${e}\n└── (empty)\n`;let n=[`${e}`];for(let e=0;e<t.length;e++){let r=e===t.length-1?`└──`:`├──`;n.push(`${r} ${t[e].name}@${t[e].version}`)}return`${n.join(`
1412
+ `)}\n`}async function pO(e,t,n,r){let{global:i,specs:a}=aO(t);if(a.length===0)return{stdout:``,stderr:`${e}: uninstall requires at least one package name\n`,exitCode:1};let{uninstallPackages:o}=await ZD(),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: ${sO(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}: ${sO(t.error)}`);l.length>0&&u.push(`${e}: ${l.join(`, `)} not installed${i?` globally`:``}`);let d=s.errors.length>0;return i&&await cO(r),{stdout:c.length>0?`${c.join(`
1418
1413
  `)}\n`:``,stderr:u.length>0?`${u.join(`
1419
- `)}\n`:``,exitCode:+!!d}}async function LO(e,t,n,r){let{global:i}=OO(t);try{let{listGlobalPackages:e,listLocalPackages:t}=await bO(),a=i?await e(r.fs):await t(r.fs,n.cwd);return{stdout:FO(i?or:n.cwd,a),stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: list failed: ${AO(t)}\n`,exitCode:1}}}async function RO(e,t,n,r){let{global:i}=OO(t);return{stdout:`${i?sr:`${n.cwd.replace(/\/$/,``)}/node_modules`}\n`,stderr:``,exitCode:0}}const zO=`0.5.462`,BO=`v86 is not installed in node_modules: run \`${N} v86@${zO}\` (no network fallback)`;let VO=null;async function HO(e={}){return VO||=KO(e.ipk).catch(e=>{throw VO=null,e}),VO}const UO=[{js:`build/libv86.mjs`,wasm:`build/v86.wasm`}];async function WO(e,t){for(let{js:n,wasm:r}of UO){let i=`${e}/${n}`,a=`${e}/${r}`;if(await t.exists(i)&&await t.exists(a))return{jsPath:i,wasmPath:a}}return null}async function GO(e){let t;try{t=await mr(`v86/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;let n=await WO(Fe(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 KO(e){if(Er())throw Error(`v86 is not available in Node runtime`);if(!e)throw Error(BO);let t=await GO(e);if(!t)throw Error(BO);let n=URL.createObjectURL(new Blob([t.jsSource],{type:`text/javascript`})),r;try{r=await import(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 hi(t.wasmBytes),version:t.version}}function qO(e){return async t=>(await WebAssembly.instantiate(e,t)).exports}const JO={command:`biome`,example:`biome check foo.js`,bootstrap:`${N} ${q_}`},YO={command:`playwright-cli`,example:`playwright-cli open https://example.com`},XO={command:`puppeteer`,example:`puppeteer open https://example.com`},ZO={command:`convert`,example:`convert input.png output.jpg`,bootstrap:`${N} @imagemagick/magick-wasm@${$i}`},QO={...ZO,command:`magick`,example:`magick input.png output.jpg`},$O={command:`pdftoppm`,example:`pdftoppm -png -r 150 doc.pdf page`},ek={"@biomejs/biome":JO,biome:JO,esbuild:{command:`esbuild`,example:`esbuild --bundle src/index.js --outfile=dist/bundle.js`,bootstrap:`${N} esbuild-wasm@${mi}`},playwright:YO,"@playwright/test":YO,"playwright-core":YO,puppeteer:XO,"puppeteer-core":XO,typescript:{command:`tsc`,example:`tsc --noEmit`,bootstrap:Dr},"pdf-poppler":$O,"pdf-to-img":$O,pdf2pic:$O,"pdf-img-convert":$O,poppler:$O,"poppler-utils":$O,imagemagick:ZO,"imagemagick-cli":ZO,"imagemagick-convert":ZO,"magick-cli":QO,"@imagemagick/magick-wasm":QO,ffmpeg:{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${N} @ffmpeg/core@${ca}`},"@ffmpeg/ffmpeg":{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${N} @ffmpeg/core@${ca}`},ffprobe:{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${N} @ffmpeg/core@${ca}`},"@ffprobe-installer/ffprobe":{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${N} @ffmpeg/core@${ca}`},sqlite3:{command:`sqlite3`,example:`sqlite3 database.db "SELECT 1"`},v86:{command:`v86`,example:`v86 start -cdrom alpine.iso`,bootstrap:`${N} v86@${zO}`}};function tk(e){return Object.hasOwn(ek,e)?ek[e]:void 0}function nk(e){return/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function rk(e,t,n,r){let i=n.length?[r.command,...n].map(nk).join(` `):r.example,a=[`${e}: SLICC has a built-in \`${r.command}\` for npm package \`${t}\`.`,` try: ${i}`];return r.bootstrap&&a.push(` first run: ${r.bootstrap}`),a.push(` install anyway: ${[e,`--force`,t,...n].map(nk).join(` `)}`),`${a.join(`
1420
- `)}\n`}const ik=/require\(\s*["']([^"']+)["']\s*\)/;function ak(e){return`${e} - run an installed package's executable bin
1414
+ `)}\n`:``,exitCode:+!!d}}async function mO(e,t,n,r){let{global:i}=aO(t);try{let{listGlobalPackages:e,listLocalPackages:t}=await ZD(),a=i?await e(r.fs):await t(r.fs,n.cwd);return{stdout:fO(i?rr:n.cwd,a),stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: list failed: ${sO(t)}\n`,exitCode:1}}}async function hO(e,t,n,r){let{global:i}=aO(t);return{stdout:`${i?ir:`${n.cwd.replace(/\/$/,``)}/node_modules`}\n`,stderr:``,exitCode:0}}const gO=`0.5.462`,_O=`v86 is not installed in node_modules: run \`${N} v86@${gO}\` (no network fallback)`;let vO=null;async function yO(e={}){return vO||=CO(e.ipk).catch(e=>{throw vO=null,e}),vO}const bO=[{js:`build/libv86.mjs`,wasm:`build/v86.wasm`}];async function xO(e,t){for(let{js:n,wasm:r}of bO){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 SO(e){let t;try{t=await dr(`v86/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;let n=await xO(Fe(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 CO(e){if(Cr())throw Error(`v86 is not available in Node runtime`);if(!e)throw Error(_O);let t=await SO(e);if(!t)throw Error(_O);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 fi(t.wasmBytes),version:t.version}}function wO(e){return async t=>(await WebAssembly.instantiate(e,t)).exports}const TO={command:`biome`,example:`biome check foo.js`,bootstrap:`${N} ${w_}`},EO={command:`playwright-cli`,example:`playwright-cli open https://example.com`},DO={command:`puppeteer`,example:`puppeteer open https://example.com`},OO={command:`convert`,example:`convert input.png output.jpg`,bootstrap:`${N} @imagemagick/magick-wasm@${Xi}`},kO={...OO,command:`magick`,example:`magick input.png output.jpg`},AO={command:`pdftoppm`,example:`pdftoppm -png -r 150 doc.pdf page`},jO={"@biomejs/biome":TO,biome:TO,esbuild:{command:`esbuild`,example:`esbuild --bundle src/index.js --outfile=dist/bundle.js`,bootstrap:`${N} esbuild-wasm@${di}`},playwright:EO,"@playwright/test":EO,"playwright-core":EO,puppeteer:DO,"puppeteer-core":DO,typescript:{command:`tsc`,example:`tsc --noEmit`,bootstrap:wr},"pdf-poppler":AO,"pdf-to-img":AO,pdf2pic:AO,"pdf-img-convert":AO,poppler:AO,"poppler-utils":AO,imagemagick:OO,"imagemagick-cli":OO,"imagemagick-convert":OO,"magick-cli":kO,"@imagemagick/magick-wasm":kO,ffmpeg:{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${N} @ffmpeg/core@${aa}`},"@ffmpeg/ffmpeg":{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${N} @ffmpeg/core@${aa}`},ffprobe:{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${N} @ffmpeg/core@${aa}`},"@ffprobe-installer/ffprobe":{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${N} @ffmpeg/core@${aa}`},sqlite3:{command:`sqlite3`,example:`sqlite3 database.db "SELECT 1"`},v86:{command:`v86`,example:`v86 start -cdrom alpine.iso`,bootstrap:`${N} v86@${gO}`}};function MO(e){return Object.hasOwn(jO,e)?jO[e]:void 0}function NO(e){return/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function PO(e,t,n,r){let i=n.length?[r.command,...n].map(NO).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(NO).join(` `)}`),`${a.join(`
1415
+ `)}\n`}const FO=/require\(\s*["']([^"']+)["']\s*\)/;function IO(e){return`${e} - run an installed package's executable bin
1421
1416
 
1422
1417
  Usage:
1423
1418
  ${e} [--force] [--global] <pkg-or-bin> [args...]
@@ -1430,12 +1425,12 @@ Options:
1430
1425
  --force Install a package even when a SLICC built-in shadows it
1431
1426
  --global Resolve only from the shared global prefix (/shared/lib/node_modules)
1432
1427
  -h, --help Show this help message
1433
- `}async function ok(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function sk(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function ck(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*lk(e,t=!1){if(t){yield sr;return}let n=b(e);for(;yield x(n,`node_modules`),n!==`/`;)n=Fe(n).dir;yield sr}async function uk(e,t,n,r=!1){for(let i of lk(t,r)){let t=x(i,`.bin`,n);if(!await sk(e,t))continue;let r=await ok(e,t),a=ik.exec(r),o=Fe(t).dir;return{binFilePath:a?x(o,a[1]):t,argvName:t}}return null}function dk(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function fk(e,t){if(typeof e==`string`)return{binName:dk(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,dk(t)];for(let t of n){let n=Object.getOwnPropertyDescriptor(e,t)?.value;if(typeof n==`string`)return{binName:t,binPath:n}}let r=Object.entries(e).filter(e=>typeof e[1]==`string`);if(r.length===1){let[e,t]=r[0];return{binName:e,binPath:t}}return null}async function pk(e,t,n,r=!1){for(let i of lk(t,r)){let t=x(i,n),r=x(t,`package.json`);if(!await sk(e,r))continue;let a;try{a=JSON.parse(await ok(e,r))}catch{return null}let o=fk(a.bin,n);if(!o)return null;let s=o.binPath.replace(/^\.\//,``);return{binFilePath:x(t,s),argvName:x(i,`.bin`,o.binName)}}return null}async function mk(e,t,n,r=!1){return await uk(e,t,n,r)??await pk(e,t,n,r)}async function hk(e,t,n){for(let r of lk(t))if(await sk(e,x(r,n,`package.json`)))return!0;return!1}function gk(e){return e instanceof Error?e.message:String(e)}function _k(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function vk(e,t,n,r){try{let{installPackages:i}=await import(`./installer-CbjJjnwg.js`),a=await i([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(a.errors.length>0)return{error:_k(e,`failed to install '${t}': ${gk(a.errors[0].error)}`)};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:o.length>0?`${o.join(`
1434
- `)}\n`:``}}catch(n){return{error:_k(e,`failed to install '${t}': ${gk(n)}`)}}}async function yk(e,t,n,r){return await sk(r,n)?null:await ck(r,n)?_k(e,`bin target '${n}' is a directory, not a file`):_k(e,`bin file '${n}' for '${t}' does not exist`)}async function bk(e,t,n,r,i,a){if(await hk(a.fs,i.cwd,t))return{error:_k(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:tk(t);if(o)return{error:{stdout:``,stderr:rk(e,t,n,o),exitCode:1}};let s=await vk(e,t,i,a);if(`error`in s)return s;let c=await mk(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:_k(e,`package '${t}' was installed but does not expose an executable bin`)}}function xk(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:ak(e),stderr:``,exitCode:+(n.length===0)};let i=n[0]===`--force`,a=i?n.slice(1):n,o=a[0]===`--global`;o&&(a=a.slice(1));let s=a;if(s.length===0)return{stdout:ak(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await mk(t.fs,r.cwd,c,o)}catch(t){return _k(e,gk(t))}let d=``;if(!u){if(o)return _k(e,`no global bin '${c}' found in ${sr}`);let n=await bk(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await yk(e,c,u.binFilePath,t.fs);if(f)return f;let p=ui(await ok(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await ci(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function Sk(e={}){return S(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-DpSfWot-.js`);return r(t,n,e)})}const Ck=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function wk(e={}){return S(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Ak();let n=e.processManager??Tk();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1435
- `,exitCode:1};let r=Ek(t);if(!r.ok)return{stdout:``,stderr:r.stderr,exitCode:r.exitCode};let{allDelivered:i,errors:a}=Dk(n,r.pids,r.signal);return{stdout:``,stderr:a.length?`${a.join(`
1436
- `)}\n`:``,exitCode:+!i}})}function Tk(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function Ek(e){let t=`SIGTERM`,n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i===`-s`||i===`--signal`){let n=e[++r];if(!n)return{ok:!1,stderr:`kill: -s requires a signal name
1437
- `,exitCode:2};let i=Ok(n);if(i instanceof Error)return{ok:!1,stderr:`kill: ${i.message}\n`,exitCode:2};t=i;continue}if(i.startsWith(`-`)){let e=kk(i);if(e instanceof Error)return{ok:!1,stderr:`kill: ${e.message}\n`,exitCode:2};t=e;continue}let a=Number.parseInt(i,10);if(!Number.isFinite(a)||String(a)!==i)return{ok:!1,stderr:`kill: invalid pid '${i}'\n`,exitCode:2};n.push(a)}return n.length===0?{ok:!1,stderr:`kill: no pids supplied
1438
- `,exitCode:2}:Ck.has(t)?{ok:!0,signal:t,pids:n}:{ok:!1,stderr:`kill: signal ${t} not supported\n`,exitCode:2}}function Dk(e,t,n){let r=!0,i=[];for(let a of t)e.signal(a,n)||(r=!1,i.push(e.get(a)?`kill: (${a}) - process already terminated`:`kill: (${a}) - no such process`));return{allDelivered:r,errors:i}}function Ok(e){let t=e.toUpperCase(),n=t.startsWith(`SIG`)?t:`SIG${t}`;return n===`SIGINT`||n===`SIGTERM`||n===`SIGKILL`||n===`SIGSTOP`||n===`SIGCONT`?n:Error(`unknown signal '${e}'`)}function kk(e){return e===`-9`?`SIGKILL`:Ok(e.slice(1))}function Ak(){return{stdout:`Usage: kill [-s SIGNAL | -INT | -TERM | -KILL | -STOP | -CONT | -9] PID [PID …]
1428
+ `}async function LO(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function RO(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function zO(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*BO(e,t=!1){if(t){yield ir;return}let n=b(e);for(;yield x(n,`node_modules`),n!==`/`;)n=Fe(n).dir;yield ir}async function VO(e,t,n,r=!1){for(let i of BO(t,r)){let t=x(i,`.bin`,n);if(!await RO(e,t))continue;let r=await LO(e,t),a=FO.exec(r),o=Fe(t).dir;return{binFilePath:a?x(o,a[1]):t,argvName:t}}return null}function HO(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function UO(e,t){if(typeof e==`string`)return{binName:HO(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,HO(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 WO(e,t,n,r=!1){for(let i of BO(t,r)){let t=x(i,n),r=x(t,`package.json`);if(!await RO(e,r))continue;let a;try{a=JSON.parse(await LO(e,r))}catch{return null}let o=UO(a.bin,n);if(!o)return null;let s=o.binPath.replace(/^\.\//,``);return{binFilePath:x(t,s),argvName:x(i,`.bin`,o.binName)}}return null}async function GO(e,t,n,r=!1){return await VO(e,t,n,r)??await WO(e,t,n,r)}async function KO(e,t,n){for(let r of BO(t))if(await RO(e,x(r,n,`package.json`)))return!0;return!1}function qO(e){return e instanceof Error?e.message:String(e)}function JO(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function YO(e,t,n,r){try{let{installPackages:i}=await import(`./installer-CbjJjnwg.js`),a=await i([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(a.errors.length>0)return{error:JO(e,`failed to install '${t}': ${qO(a.errors[0].error)}`)};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:o.length>0?`${o.join(`
1429
+ `)}\n`:``}}catch(n){return{error:JO(e,`failed to install '${t}': ${qO(n)}`)}}}async function XO(e,t,n,r){return await RO(r,n)?null:await zO(r,n)?JO(e,`bin target '${n}' is a directory, not a file`):JO(e,`bin file '${n}' for '${t}' does not exist`)}async function ZO(e,t,n,r,i,a){if(await KO(a.fs,i.cwd,t))return{error:JO(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:MO(t);if(o)return{error:{stdout:``,stderr:PO(e,t,n,o),exitCode:1}};let s=await YO(e,t,i,a);if(`error`in s)return s;let c=await GO(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:JO(e,`package '${t}' was installed but does not expose an executable bin`)}}function QO(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:IO(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:IO(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await GO(t.fs,r.cwd,c,o)}catch(t){return JO(e,qO(t))}let d=``;if(!u){if(o)return JO(e,`no global bin '${c}' found in ${ir}`);let n=await ZO(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await XO(e,c,u.binFilePath,t.fs);if(f)return f;let p=si(await LO(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await ai(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function $O(e={}){return S(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-BXY4xm9Y.js`);return r(t,n,e)})}const ek=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function tk(e={}){return S(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return sk();let n=e.processManager??nk();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1430
+ `,exitCode:1};let r=rk(t);if(!r.ok)return{stdout:``,stderr:r.stderr,exitCode:r.exitCode};let{allDelivered:i,errors:a}=ik(n,r.pids,r.signal);return{stdout:``,stderr:a.length?`${a.join(`
1431
+ `)}\n`:``,exitCode:+!i}})}function nk(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function rk(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
1432
+ `,exitCode:2};let i=ak(n);if(i instanceof Error)return{ok:!1,stderr:`kill: ${i.message}\n`,exitCode:2};t=i;continue}if(i.startsWith(`-`)){let e=ok(i);if(e instanceof Error)return{ok:!1,stderr:`kill: ${e.message}\n`,exitCode:2};t=e;continue}let a=Number.parseInt(i,10);if(!Number.isFinite(a)||String(a)!==i)return{ok:!1,stderr:`kill: invalid pid '${i}'\n`,exitCode:2};n.push(a)}return n.length===0?{ok:!1,stderr:`kill: no pids supplied
1433
+ `,exitCode:2}:ek.has(t)?{ok:!0,signal:t,pids:n}:{ok:!1,stderr:`kill: signal ${t} not supported\n`,exitCode:2}}function ik(e,t,n){let r=!0,i=[];for(let a of t)e.signal(a,n)||(r=!1,i.push(e.get(a)?`kill: (${a}) - process already terminated`:`kill: (${a}) - no such process`));return{allDelivered:r,errors:i}}function ak(e){let t=e.toUpperCase(),n=t.startsWith(`SIG`)?t:`SIG${t}`;return n===`SIGINT`||n===`SIGTERM`||n===`SIGKILL`||n===`SIGSTOP`||n===`SIGCONT`?n:Error(`unknown signal '${e}'`)}function ok(e){return e===`-9`?`SIGKILL`:ak(e.slice(1))}function sk(){return{stdout:`Usage: kill [-s SIGNAL | -INT | -TERM | -KILL | -STOP | -CONT | -9] PID [PID …]
1439
1434
 
1440
1435
  Send a signal to one or more processes tracked by the kernel.
1441
1436
 
@@ -1457,7 +1452,7 @@ Examples:
1457
1452
  kill -INT 1024 1025 SIGINT both
1458
1453
  kill -STOP 1024 pause; \`kill -CONT 1024\` resumes
1459
1454
  kill -s SIGKILL 1024 explicit signal name
1460
- `,stderr:``,exitCode:0}}const jk=[`top`,`left`,`middle`,`right`,`bottom`],Mk=`usage: layout <verb> [args]
1455
+ `,stderr:``,exitCode:0}}const ck=[`top`,`left`,`middle`,`right`,`bottom`],lk=`usage: layout <verb> [args]
1461
1456
 
1462
1457
  list List the built-in presets
1463
1458
  set <preset> Switch to a built-in preset
@@ -1473,13 +1468,13 @@ Examples:
1473
1468
  load <name> Restore a saved arrangement
1474
1469
  delete <name> Delete a saved arrangement
1475
1470
  reset Restore the default arrangement
1476
- edit Alias for \`layout set ${xs}\` (there is no edit mode)
1471
+ edit Alias for \`layout set ${vs}\` (there is no edit mode)
1477
1472
  docs Describe the layout surfaces
1478
1473
  panels List the registered panel ids
1479
1474
 
1480
- Zones: ${jk.join(`, `)}
1481
- `,Nk=new Set([`files`,`term`,`memory`,`monitor`]),Pk=`sprinkle:`;function Fk(e){return e===`chat`||Nk.has(e)||e.startsWith(Pk)?e:`${Pk}${e}`}function Ik(e){let t=/^(\d+(?:\.\d+)?)%$/.exec(e);if(t)return{percent:Number.parseFloat(t[1])};let n=/^(\d+(?:\.\d+)?)(?:px)?$/.exec(e);return n?{px:Number.parseFloat(n[1])}:null}const Lk=`usage: layout size <surfaceId> [--width <px|percent>] [--height <px|percent>]`;function Rk(e){let t=e[0],n=t?Ts(t):null;return n?{kind:`set`,tree:n.tree}:{error:`unknown layout: ${t??`(none)`}`}}function zk(e){let t=e[0];return jk.includes(t)?{kind:`chat`,zone:t}:{error:`usage: layout chat <${jk.join(`|`)}>`}}function Bk(e){let[t,n]=e;return!t||!jk.includes(n)?{error:`usage: layout open <surfaceId> <${jk.join(`|`)}>`}:{kind:`open`,surfaceId:Fk(t),zone:n}}function Vk(e){let t=e[0];return t?{kind:`close`,surfaceId:Fk(t)}:{error:`usage: layout close <surfaceId>`}}function Hk(e){let[t,n]=e;return!t||!jk.includes(n)?{error:`usage: layout move <surfaceId> <${jk.join(`|`)}>`}:{kind:`move`,surfaceId:Fk(t),zone:n}}function Uk(e,t,n){if(t!==`--width`&&t!==`--height`)return{error:`layout size: unknown flag "${t}"`};if(!n)return{error:`layout size: missing value for ${t}`};let r=Ik(n);return r?(t===`--width`?r.percent==null?e.widthPx=r.px:e.widthPercent=r.percent:r.percent==null?e.heightPx=r.px:e.heightPercent=r.percent,null):{error:`layout size: invalid size "${n}" (want <number>px or <number>%)`}}function Wk(e){let t=e[0];if(!t)return{error:Lk};let n={};for(let t=1;t<e.length;t+=2){let r=Uk(n,e[t],e[t+1]);if(r)return r}return n.widthPx==null&&n.widthPercent==null&&n.heightPx==null&&n.heightPercent==null?{error:Lk}:{kind:`size`,surfaceId:Fk(t),size:n}}function Gk(e){let t=e[0];if(!t||t.startsWith(`--`))return{error:`usage: layout save <name> [--protected]`};if(!/^[\w.-]+$/.test(t))return{error:`invalid layout name "${t}" (use letters, digits, . _ -)`};let n=e.slice(1),r=n.find(e=>e!==`--protected`);return r?{error:`layout save: unknown flag "${r}"`}:{kind:`save`,name:t,protected:n.includes(`--protected`)}}function Kk(e,t){let n=t[0];return n?e===`load`?{kind:`load`,name:n}:{kind:`delete`,name:n}:{error:`usage: layout ${e} <name>`}}function qk(e,t){let n=t[0];return n?e===`show`?{kind:`show`,panelId:Fk(n)}:{kind:`hide`,panelId:Fk(n)}:{error:`usage: layout ${e} <panelId>`}}function Jk(){let e=Ts(xs);return e?{kind:`set`,tree:e.tree}:{error:`default layout unavailable`}}function Yk(e){let[t,...n]=e;switch(t){case`set`:return Rk(n);case`chat`:return zk(n);case`open`:return Bk(n);case`close`:return Vk(n);case`move`:return Hk(n);case`size`:return Wk(n);case`reset`:return{kind:`reset`};case`edit`:return Jk();case`load`:return Kk(`load`,n);case`save`:return Gk(n);case`delete`:return Kk(`delete`,n);case`docs`:return{kind:`docs`};case`panels`:return{kind:`panels`};case`show`:return qk(`show`,n);case`hide`:return qk(`hide`,n);default:return{error:`usage: layout <set|edit|chat|open|close|move|size|show|hide|load|save|delete|docs|panels|list|reset>`}}}function Xk(){return S(`layout`,async e=>{if(w(e))return{stdout:e[0]?.startsWith(`-`)?Mk:lt(`layout`,e[0],Mk),stderr:``,exitCode:0};if(e[0]===`list`||e.length===0)return{stdout:`layouts: ${Object.keys(ws).join(`, `)}\ndefault: ${xs}\n`,stderr:``,exitCode:0};let t=Yk(e);if(`error`in t)return{stdout:``,stderr:`layout: ${t.error}\n`,exitCode:1};let n=y();if(!n)return{stdout:``,stderr:`layout: UI is unavailable in this environment
1482
- `,exitCode:1};try{let e=await n.call(`layout-apply`,t);if(e&&e.applied===!1)return{stdout:``,stderr:`layout: ${e.error??`could not apply layout`}\n`,exitCode:1};let r=e?.output;return{stdout:r?`${r.replace(/\n*$/,``)}\n`:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`layout: ${e.message}\n`,exitCode:1}}})}const Zk=la.id;function Qk(){return`local-llm — inspect and configure the Local LLM provider
1475
+ Zones: ${ck.join(`, `)}
1476
+ `,uk=new Set([`files`,`term`,`memory`,`monitor`]),dk=`sprinkle:`;function fk(e){return e===`chat`||uk.has(e)||e.startsWith(dk)?e:`${dk}${e}`}function pk(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 mk=`usage: layout size <surfaceId> [--width <px|percent>] [--height <px|percent>]`;function hk(e){let t=e[0],n=t?Ss(t):null;return n?{kind:`set`,tree:n.tree}:{error:`unknown layout: ${t??`(none)`}`}}function gk(e){let t=e[0];return ck.includes(t)?{kind:`chat`,zone:t}:{error:`usage: layout chat <${ck.join(`|`)}>`}}function _k(e){let[t,n]=e;return!t||!ck.includes(n)?{error:`usage: layout open <surfaceId> <${ck.join(`|`)}>`}:{kind:`open`,surfaceId:fk(t),zone:n}}function vk(e){let t=e[0];return t?{kind:`close`,surfaceId:fk(t)}:{error:`usage: layout close <surfaceId>`}}function yk(e){let[t,n]=e;return!t||!ck.includes(n)?{error:`usage: layout move <surfaceId> <${ck.join(`|`)}>`}:{kind:`move`,surfaceId:fk(t),zone:n}}function bk(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=pk(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 xk(e){let t=e[0];if(!t)return{error:mk};let n={};for(let t=1;t<e.length;t+=2){let r=bk(n,e[t],e[t+1]);if(r)return r}return n.widthPx==null&&n.widthPercent==null&&n.heightPx==null&&n.heightPercent==null?{error:mk}:{kind:`size`,surfaceId:fk(t),size:n}}function Sk(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 Ck(e,t){let n=t[0];return n?e===`load`?{kind:`load`,name:n}:{kind:`delete`,name:n}:{error:`usage: layout ${e} <name>`}}function wk(e,t){let n=t[0];return n?e===`show`?{kind:`show`,panelId:fk(n)}:{kind:`hide`,panelId:fk(n)}:{error:`usage: layout ${e} <panelId>`}}function Tk(){let e=Ss(vs);return e?{kind:`set`,tree:e.tree}:{error:`default layout unavailable`}}function Ek(e){let[t,...n]=e;switch(t){case`set`:return hk(n);case`chat`:return gk(n);case`open`:return _k(n);case`close`:return vk(n);case`move`:return yk(n);case`size`:return xk(n);case`reset`:return{kind:`reset`};case`edit`:return Tk();case`load`:return Ck(`load`,n);case`save`:return Sk(n);case`delete`:return Ck(`delete`,n);case`docs`:return{kind:`docs`};case`panels`:return{kind:`panels`};case`show`:return wk(`show`,n);case`hide`:return wk(`hide`,n);default:return{error:`usage: layout <set|edit|chat|open|close|move|size|show|hide|load|save|delete|docs|panels|list|reset>`}}}function Dk(){return S(`layout`,async e=>{if(w(e))return{stdout:e[0]?.startsWith(`-`)?lk:ot(`layout`,e[0],lk),stderr:``,exitCode:0};if(e[0]===`list`||e.length===0)return{stdout:`layouts: ${Object.keys(xs).join(`, `)}\ndefault: ${vs}\n`,stderr:``,exitCode:0};let t=Ek(e);if(`error`in t)return{stdout:``,stderr:`layout: ${t.error}\n`,exitCode:1};let n=y();if(!n)return{stdout:``,stderr:`layout: UI is unavailable in this environment
1477
+ `,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 Ok=oa.id;function kk(){return`local-llm — inspect and configure the Local LLM provider
1483
1478
 
1484
1479
  Usage:
1485
1480
  local-llm Show current config + verify connection
@@ -1498,21 +1493,21 @@ Common base URLs:
1498
1493
  llama.cpp http://localhost:8080/v1
1499
1494
  vLLM http://localhost:8000/v1
1500
1495
  Jan http://localhost:1337/v1
1501
- `}function $k(e,t){return e.version?t?`${e.kind} (${e.version})`:`${e.kind} ${e.version}`:e.kind}function eA(e){return e.map(e=>` • ${e}`)}function tA(e,t){let n=[`✗ Could not reach ${e}`,` runtime: ${$k(t.runtime,!0)}`,` error: ${t.error?.message??`unknown`}`];return t.error?.hint&&n.push(` hint: ${t.error.hint}`),{stdout:``,stderr:n.join(`
1496
+ `}function Ak(e,t){return e.version?t?`${e.kind} (${e.version})`:`${e.kind} ${e.version}`:e.kind}function jk(e){return e.map(e=>` • ${e}`)}function Mk(e,t){let n=[`✗ Could not reach ${e}`,` runtime: ${Ak(t.runtime,!0)}`,` error: ${t.error?.message??`unknown`}`];return t.error?.hint&&n.push(` hint: ${t.error.hint}`),{stdout:``,stderr:n.join(`
1502
1497
  `)+`
1503
- `,exitCode:1}}function nA(e,t){return{stdout:[`✓ ${e}`,` runtime: ${$k(t.runtime,!0)}`,` models: ${t.models.length}`,...eA(t.models)].join(`
1498
+ `,exitCode:1}}function Nk(e,t){return{stdout:[`✓ ${e}`,` runtime: ${Ak(t.runtime,!0)}`,` models: ${t.models.length}`,...jk(t.models)].join(`
1504
1499
  `)+`
1505
- `,stderr:``,exitCode:0}}function rA(e,t){let n=t.models.length;return{stdout:[`✓ ${e} (${$k(t.runtime,!1)})`,` Saved ${n} model${n===1?``:`s`} to Settings:`,...eA(t.models)].join(`
1500
+ `,stderr:``,exitCode:0}}function Pk(e,t){let n=t.models.length;return{stdout:[`✓ ${e} (${Ak(t.runtime,!1)})`,` Saved ${n} model${n===1?``:`s`} to Settings:`,...jk(t.models)].join(`
1506
1501
  `)+`
1507
- `,stderr:``,exitCode:0}}function iA(){return S(Zk,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:Qk(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-B89MQ7Me.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-C8XsApDI.js`).then(e=>e.n),o=e[0]??`status`;if(o!==`status`&&o!==`discover`)return{stdout:``,stderr:`Unknown subcommand: ${o}. See \`local-llm --help\`.\n`,exitCode:2};let s=r(Zk);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1508
- `,exitCode:1};let c=await a(s,t(Zk)??void 0);if(!c.ok)return tA(s,c);if(o===`discover`){let e=n(Zk)??``;return i(Zk,e,s,c.models.join(`, `)),rA(s,c)}return nA(s,c)})}function aA(){return{stdout:`usage: man <topic>
1502
+ `,stderr:``,exitCode:0}}function Fk(){return S(Ok,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:kk(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-BGMKtG5Y.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-B4YA09uv.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(Ok);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1503
+ `,exitCode:1};let c=await a(s,t(Ok)??void 0);if(!c.ok)return Mk(s,c);if(o===`discover`){let e=n(Ok)??``;return i(Ok,e,s,c.models.join(`, `)),Pk(s,c)}return Nk(s,c)})}function Ik(){return{stdout:`usage: man <topic>
1509
1504
 
1510
1505
  Fetches documentation for a given topic from sliccy.com.
1511
- `,stderr:``,exitCode:0}}function oA(e){return e.replace(/<[^>]*>/g,``).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&quot;/g,`"`).replace(/&#39;/g,`'`).replace(/&nbsp;/g,` `).replace(/&amp;/g,`&`).trimEnd()}function sA(){let e=g();return S(`man`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return aA();if(t.length===0)return{stdout:``,stderr:`What manual page do you want?
1506
+ `,stderr:``,exitCode:0}}function Lk(e){return e.replace(/<[^>]*>/g,``).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&quot;/g,`"`).replace(/&#39;/g,`'`).replace(/&nbsp;/g,` `).replace(/&amp;/g,`&`).trimEnd()}function Rk(){let e=g();return S(`man`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return Ik();if(t.length===0)return{stdout:``,stderr:`What manual page do you want?
1512
1507
  For example, try 'man commands'.
1513
- `,exitCode:1};let n=t.join(`-`),r=`https://www.sliccy.com/man/${n}.plain.html`;try{let t=await e(r,{method:`GET`});return t.status===404?{stdout:``,stderr:`No manual entry for ${n}\n`,exitCode:1}:t.status<200||t.status>=300?{stdout:``,stderr:`man: failed to fetch manual page for ${n}: ${t.status} ${t.statusText}\n`,exitCode:1}:{stdout:oA(new TextDecoder(`utf-8`).decode(t.body))+`
1514
- `,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`man: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function cA(e){return{stdout:``,stderr:`meminfo: ${e}\n`,exitCode:1}}function lA(e){return e.attribution.length===0?`(shared)`:e.attribution.map(e=>{let t=e.container?.src??e.container?.id??e.url??`?`;return e.scope?`${e.scope} ${t}`:t}).join(`, `)}function uA(){let e=globalThis.performance,t=e?.measureUserAgentSpecificMemory;return t?t.bind(e):null}function dA(e){if(e[0]===`--help`||e[0]===`-h`||e[0]===`help`)return{help:!0};let t=!1;for(let n of e){if(n!==`--json`)return{error:`unknown option '${n}' — see \`meminfo --help\``};t=!0}return{help:!1,json:t}}function fA(e){let t=[`total: ${Gy(e.bytes)}`],n=[...e.breakdown].filter(e=>e.bytes>0).sort((e,t)=>t.bytes-e.bytes);if(n.length>0){t.push(``,`BYTES TYPES ATTRIBUTION`);for(let e of n)t.push(`${Gy(e.bytes).padEnd(10)} ${e.types.join(`,`).padEnd(20)} ${lA(e)}`)}return`${t.join(`
1515
- `)}\n`}function pA(e={}){return S(`meminfo`,async t=>{let n=dA(t);if(`error`in n)return cA(n.error);if(n.help)return{stdout:`meminfo - agent-cluster memory diagnostics
1508
+ `,exitCode:1};let n=t.join(`-`),r=`https://www.sliccy.com/man/${n}.plain.html`;try{let t=await e(r,{method:`GET`});return t.status===404?{stdout:``,stderr:`No manual entry for ${n}\n`,exitCode:1}:t.status<200||t.status>=300?{stdout:``,stderr:`man: failed to fetch manual page for ${n}: ${t.status} ${t.statusText}\n`,exitCode:1}:{stdout:Lk(new TextDecoder(`utf-8`).decode(t.body))+`
1509
+ `,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`man: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function zk(e){return{stdout:``,stderr:`meminfo: ${e}\n`,exitCode:1}}function Bk(e){return e.attribution.length===0?`(shared)`:e.attribution.map(e=>{let t=e.container?.src??e.container?.id??e.url??`?`;return e.scope?`${e.scope} ${t}`:t}).join(`, `)}function Vk(){let e=globalThis.performance,t=e?.measureUserAgentSpecificMemory;return t?t.bind(e):null}function Hk(e){if(e[0]===`--help`||e[0]===`-h`||e[0]===`help`)return{help:!0};let t=!1;for(let n of e){if(n!==`--json`)return{error:`unknown option '${n}' — see \`meminfo --help\``};t=!0}return{help:!1,json:t}}function Uk(e){let t=[`total: ${Sy(e.bytes)}`],n=[...e.breakdown].filter(e=>e.bytes>0).sort((e,t)=>t.bytes-e.bytes);if(n.length>0){t.push(``,`BYTES TYPES ATTRIBUTION`);for(let e of n)t.push(`${Sy(e.bytes).padEnd(10)} ${e.types.join(`,`).padEnd(20)} ${Bk(e)}`)}return`${t.join(`
1510
+ `)}\n`}function Wk(e={}){return S(`meminfo`,async t=>{let n=Hk(t);if(`error`in n)return zk(n.error);if(n.help)return{stdout:`meminfo - agent-cluster memory diagnostics
1516
1511
 
1517
1512
  Usage:
1518
1513
  meminfo Human-readable breakdown (bytes, scope, types, url)
@@ -1523,8 +1518,8 @@ Notes:
1523
1518
  Document-Isolation-Policy). Embedded floats cannot be isolated and
1524
1519
  report why instead.
1525
1520
  - The browser randomizes measurement timing — expect a short delay.
1526
- `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??uA();if(!r&&!e.measure)return cA(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return cA(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return cA(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:fA(a),stderr:``,exitCode:0}})}function mA(e){return S(`memory`,async t=>{let{runMemory:n}=await import(`./run-CGYW74BK.js`);return n(t,e)})}function hA(){return S(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const gA=`/.cache/artificial-analysis.json`,_A=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],vA=[`--provider`];function yA(e){return{stdout:``,stderr:e.endsWith(`
1527
- `)?e:`${e}\n`,exitCode:1}}async function bA(e){try{let t=await e.readFile(gA),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}return null}function xA(){try{return localStorage.getItem(`aa_api_key`)}catch{return null}}function SA(e){return e.map(e=>{let t=e;return{slug:t.slug??``,name:t.name??``,creator_slug:t.model_creator?.slug??``,intelligence_index:t.evaluations?.artificial_analysis_intelligence_index??null,coding_index:t.evaluations?.artificial_analysis_coding_index??null,speed_tps:t.median_output_tokens_per_second??null}})}async function CA(e,t){let n={fetchedAt:Date.now(),models:t};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(gA,JSON.stringify(n))}catch{}}async function wA(e,t=!1){if(e&&!t){let t=await bA(e);if(t)return t}let n={Accept:`application/json`},r=xA();r&&(n[`x-api-key`]=r);let i=g(),a;try{a=await i(`https://artificialanalysis.ai/api/v2/data/llms/models`,{method:`GET`,headers:n})}catch{return[]}if(a.status===401||a.status<200||a.status>=300)return[];let o;try{o=JSON.parse(new TextDecoder().decode(a.body))}catch{return[]}if(typeof o!=`object`||!o)return[];let s=o,c=SA(Array.isArray(s)?s:s.data??s.models??[]);return e&&c.length>0&&await CA(e,c),c}function TA(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function EA(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=TA(e),a=t.find(e=>TA(e.slug)===i);if(a)return a;let o=t.filter(e=>n.includes(e.slug)||e.slug.includes(n));if(o.length!==0)return o.sort((e,t)=>t.slug.length-e.slug.length),o[0]}function DA(){return`models - list available LLM models
1521
+ `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??Vk();if(!r&&!e.measure)return zk(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return zk(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return zk(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:Uk(a),stderr:``,exitCode:0}})}function Gk(e){return S(`memory`,async t=>{let{runMemory:n}=await import(`./run-CogNNkBe.js`);return n(t,e)})}function Kk(){return S(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const qk=`/.cache/artificial-analysis.json`,Jk=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],Yk=[`--provider`];function Xk(e){return{stdout:``,stderr:e.endsWith(`
1522
+ `)?e:`${e}\n`,exitCode:1}}async function Zk(e){try{let t=await e.readFile(qk),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}return null}function Qk(){try{return localStorage.getItem(`aa_api_key`)}catch{return null}}function $k(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 eA(e,t){let n={fetchedAt:Date.now(),models:t};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(qk,JSON.stringify(n))}catch{}}async function tA(e,t=!1){if(e&&!t){let t=await Zk(e);if(t)return t}let n={Accept:`application/json`},r=Qk();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=$k(Array.isArray(s)?s:s.data??s.models??[]);return e&&c.length>0&&await eA(e,c),c}function nA(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function rA(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=nA(e),a=t.find(e=>nA(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 iA(){return`models - list available LLM models
1528
1523
 
1529
1524
  Usage: models [options]
1530
1525
 
@@ -1536,14 +1531,14 @@ Options:
1536
1531
  --refresh Force re-fetch benchmark data from Artificial Analysis
1537
1532
  --no-benchmarks Skip benchmark data enrichment (faster, works offline)
1538
1533
  -h, --help Show this help message
1539
- `}function OA(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function kA(e){return`$${e.toFixed(2)}`}const AA=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function jA(e){let t=`${e.id} ${e.name??``}`;return!AA.test(t)}function MA(e){let t=e.match(/^(claude-(?:opus|sonnet|haiku))/);if(t)return t[1];let n=e.match(/^(gpt-\d+)(?:\.\d+)?(-[a-z][-a-z]*)?$/);if(n)return n[1]+(n[2]??``);let r=e.match(/^gemini-[\d.]+-(.+)$/);if(r)return`gemini-${r[1]}`;let i=e.match(/^gemini-(\d+)-(.+)$/);if(i)return`gemini-${i[2]}`;let a=e.match(/^grok-[\d.]+-([\w-]+)$/);if(a)return`grok-${a[1]}`;if(e.match(/^(grok)-[\d.]+$/))return`grok`;let o=e.match(/^(o\d+(?:-[a-z]+)?)(?:-\d.*)?$/);if(o)return o[1]}function NA(e){let t=e.toLowerCase();return t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``),MA(t)??t.replace(/-[\d.]+$/,``)}function PA(e){let t=new Map;for(let n of e){let e=NA(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function FA(e,t,n,r,i){let a=i?EA(e.id,i):void 0,o={id:e.id,name:e.name,provider:t,cost:e.cost??{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:e.contextWindow??0,maxTokens:e.maxTokens??0,reasoning:!!e.reasoning,input:e.input??[`text`],selected:e.id===n&&t===r};return a?.intelligence_index!=null&&(o.intelligence=a.intelligence_index),a?.coding_index!=null&&(o.codingScore=a.coding_index),a?.speed_tps!=null&&(o.speed=a.speed_tps),o}function IA(e,t,n,r){let i=[];i.push(`Models for "${e}" (${t}):\n`);for(let e of n){let t=e.selected?` ► `:` `,n=e.id.padEnd(30),r=`${kA(e.cost.input)} / ${kA(e.cost.output)}`,a=`${OA(e.contextWindow)} ctx`,o=e.intelligence==null?``:`IQ:${e.intelligence}`,s=e.speed==null?``:`${Math.round(e.speed)} t/s`,c=e.reasoning?`reasoning`:``,l=o||s?`${o.padEnd(6)} ${s.padEnd(8)}`:``;i.push(`${t}${n} ${r.padEnd(16)} ${a.padEnd(10)} ${l} ${c}`)}return i.push(`\n ${n.length} model${n.length===1?``:`s`} available.`),r&&i.push(` Intelligence data: artificialanalysis.ai`),i.join(`
1534
+ `}function aA(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function oA(e){return`$${e.toFixed(2)}`}const sA=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function cA(e){let t=`${e.id} ${e.name??``}`;return!sA.test(t)}function lA(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 uA(e){let t=e.toLowerCase();return t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``),lA(t)??t.replace(/-[\d.]+$/,``)}function dA(e){let t=new Map;for(let n of e){let e=uA(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function fA(e,t,n,r,i){let a=i?rA(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 pA(e,t,n,r){let i=[];i.push(`Models for "${e}" (${t}):\n`);for(let e of n){let t=e.selected?` ► `:` `,n=e.id.padEnd(30),r=`${oA(e.cost.input)} / ${oA(e.cost.output)}`,a=`${aA(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(`
1540
1535
  `)+`
1541
- `}function LA(e){let t=C(e,{bool:_A,value:vA});return`error`in t?t:{jsonMode:t.bools.has(`--json`),allMode:t.bools.has(`--all`),allVersions:t.bools.has(`--all-versions`),forceRefresh:t.bools.has(`--refresh`),noBenchmarks:t.bools.has(`--no-benchmarks`),explicitProvider:t.values.get(`--provider`)}}function RA(e,t,n){if(t.explicitProvider){let n=e.getAvailableProviders();return n.includes(t.explicitProvider)?[t.explicitProvider]:{error:`Unknown provider: ${t.explicitProvider}. Available: ${n.join(`, `)}\n`}}return t.allMode?[...new Set(e.getAccounts().map(e=>e.providerId))]:[n]}function zA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(jA);if(o.length===0)return[];let s=o.map(e=>FA(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=PA(s)),s}function BA(e,t,n,r){let i=`${e}:${t}`,a=`${n}:${r}`;return i===a?`Currently using: ${i}\n`:`Currently using: ${i} (selected ${a} — resolved to a different model)\n`}async function VA(e,t){if(w(e,{valueFlags:vA}))return{stdout:DA(),stderr:``,exitCode:0};let n=LA(e);if(`error`in n)return yA(`models: ${n.error}`);let r=await import(`./account-store-B89MQ7Me.js`).then(e=>e.t);if(r.getAccounts().length===0)return yA(`No provider accounts configured. Run the provider settings to add one.
1542
- `);let i=r.resolveCurrentModel(),a=i.id,o=i.provider,s=r.getSelectedProvider(),c=r.getSelectedModelId(),l;if(!n.noBenchmarks){let e=await wA(t,n.forceRefresh);e.length>0&&(l=e)}let u=RA(r,n,s);if(`error`in u)return yA(u.error);let d=[],f=[];for(let e of u){let t=zA(r,e,a,o,l,n.allVersions);if(t.length===0){if(!n.allMode)return yA(`No models available for provider ${e}.\n`);continue}if(d.push(...t),!n.jsonMode){let n=r.getProviderConfig(e);f.push(IA(n.name,e,t,!!l))}}return n.jsonMode?{stdout:JSON.stringify(d,null,2)+`
1536
+ `}function mA(e){let t=C(e,{bool:Jk,value:Yk});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 hA(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 gA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(cA);if(o.length===0)return[];let s=o.map(e=>fA(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=dA(s)),s}function _A(e,t,n,r){let i=`${e}:${t}`,a=`${n}:${r}`;return i===a?`Currently using: ${i}\n`:`Currently using: ${i} (selected ${a} — resolved to a different model)\n`}async function vA(e,t){if(w(e,{valueFlags:Yk}))return{stdout:iA(),stderr:``,exitCode:0};let n=mA(e);if(`error`in n)return Xk(`models: ${n.error}`);let r=await import(`./account-store-BGMKtG5Y.js`).then(e=>e.t);if(r.getAccounts().length===0)return Xk(`No provider accounts configured. Run the provider settings to add one.
1537
+ `);let i=r.resolveCurrentModel(),a=i.id,o=i.provider,s=r.getSelectedProvider(),c=r.getSelectedModelId(),l;if(!n.noBenchmarks){let e=await tA(t,n.forceRefresh);e.length>0&&(l=e)}let u=hA(r,n,s);if(`error`in u)return Xk(u.error);let d=[],f=[];for(let e of u){let t=gA(r,e,a,o,l,n.allVersions);if(t.length===0){if(!n.allMode)return Xk(`No models available for provider ${e}.\n`);continue}if(d.push(...t),!n.jsonMode){let n=r.getProviderConfig(e);f.push(pA(n.name,e,t,!!l))}}return n.jsonMode?{stdout:JSON.stringify(d,null,2)+`
1543
1538
  `,stderr:``,exitCode:0}:(n.allVersions||f.push(`Showing latest versions only. Use --all-versions to see all.
1544
- `),f.push(BA(o,a,s,c)),{stdout:f.join(`
1545
- `),stderr:``,exitCode:0})}function HA(e){return S(`models`,async t=>VA(t,e))}const UA=new Set([`-`,`/dev/stdin`,`/dev/fd/0`,`/proc/self/fd/0`]);function WA(e){return e===`-e`||e===`--eval`||UA.has(e)||!e.startsWith(`-`)}function GA(e){return{stdout:``,stderr:`node: ${e} is not a valid value for --input-type. Valid values are: 'commonjs' or 'module'.\n`,exitCode:9}}function KA(e,t,n){let r=e.startsWith(`--input-type=`),i=r?e.slice(13):t,a=r?n+1:n+2;return i===void 0?{nextIndex:n+1,error:{stdout:``,stderr:`node: option --input-type requires an argument
1546
- `,exitCode:9}}:i!==`module`&&i!==`commonjs`?{nextIndex:a,error:GA(i)}:{inputType:i,nextIndex:a}}function qA(e){let t=!1,n=!1,r=!1,i,a=0;for(;a<e.length;){let o=e[a];if(WA(o))break;if(o===`-h`||o===`--help`){t=!0,a+=1;continue}if(o===`-v`||o===`--version`){n=!0,a+=1;continue}if(o===`-c`||o===`--check`){r=!0,a+=1;continue}if(o===`--input-type`||o.startsWith(`--input-type=`)){let s=KA(o,e[a+1],a);if(s.error)return{help:t,version:n,check:r,inputType:i,sourceIndex:s.nextIndex,error:s.error};i=s.inputType,a=s.nextIndex;continue}return{help:t,version:n,check:r,inputType:i,sourceIndex:a,error:{stdout:``,stderr:`node: unsupported option '${o}'\n`,exitCode:9}}}return{help:t,version:n,check:r,inputType:i,sourceIndex:a}}function JA(){return{stdout:`usage: node [options] [script.js] [args...]
1539
+ `),f.push(_A(o,a,s,c)),{stdout:f.join(`
1540
+ `),stderr:``,exitCode:0})}function yA(e){return S(`models`,async t=>vA(t,e))}const bA=new Set([`-`,`/dev/stdin`,`/dev/fd/0`,`/proc/self/fd/0`]);function xA(e){return e===`-e`||e===`--eval`||bA.has(e)||!e.startsWith(`-`)}function SA(e){return{stdout:``,stderr:`node: ${e} is not a valid value for --input-type. Valid values are: 'commonjs' or 'module'.\n`,exitCode:9}}function CA(e,t,n){let r=e.startsWith(`--input-type=`),i=r?e.slice(13):t,a=r?n+1:n+2;return i===void 0?{nextIndex:n+1,error:{stdout:``,stderr:`node: option --input-type requires an argument
1541
+ `,exitCode:9}}:i!==`module`&&i!==`commonjs`?{nextIndex:a,error:SA(i)}:{inputType:i,nextIndex:a}}function wA(e){let t=!1,n=!1,r=!1,i,a=0;for(;a<e.length;){let o=e[a];if(xA(o))break;if(o===`-h`||o===`--help`){t=!0,a+=1;continue}if(o===`-v`||o===`--version`){n=!0,a+=1;continue}if(o===`-c`||o===`--check`){r=!0,a+=1;continue}if(o===`--input-type`||o.startsWith(`--input-type=`)){let s=CA(o,e[a+1],a);if(s.error)return{help:t,version:n,check:r,inputType:i,sourceIndex:s.nextIndex,error:s.error};i=s.inputType,a=s.nextIndex;continue}return{help:t,version:n,check:r,inputType:i,sourceIndex:a,error:{stdout:``,stderr:`node: unsupported option '${o}'\n`,exitCode:9}}}return{help:t,version:n,check:r,inputType:i,sourceIndex:a}}function TA(){return{stdout:`usage: node [options] [script.js] [args...]
1547
1542
  node [options] -e <code> [args...]
1548
1543
 
1549
1544
  Options:
@@ -1552,20 +1547,20 @@ Options:
1552
1547
  --input-type=TYPE module or commonjs (stdin / -e / .js)
1553
1548
  -h, --help print this help
1554
1549
  -v, --version print Node shim version
1555
- `,stderr:``,exitCode:0}}function YA(){return{stdout:`${wr}\n`,stderr:``,exitCode:0}}function XA(e,t){if(t){if(e.endsWith(`.mjs`)&&t===`commonjs`)return{stdout:``,stderr:`node: cannot set --input-type=commonjs for a .mjs file
1550
+ `,stderr:``,exitCode:0}}function EA(){return{stdout:`${xr}\n`,stderr:``,exitCode:0}}function DA(e,t){if(t){if(e.endsWith(`.mjs`)&&t===`commonjs`)return{stdout:``,stderr:`node: cannot set --input-type=commonjs for a .mjs file
1556
1551
  `,exitCode:9};if(e.endsWith(`.cjs`)&&t===`module`)return{stdout:``,stderr:`node: cannot set --input-type=module for a .cjs file
1557
- `,exitCode:9}}}function ZA(e,t){if(!e.startsWith(`/`))return t;let n=e.lastIndexOf(`/`);return n<=0?`/`:e.slice(0,n)}function QA(e){return e instanceof Error?e.stack??e.message:String(e)}async function $A(e,t,n){if(!(gr(e)||jr(e)||t.endsWith(`.mjs`)))return e;try{return(await(await pi()).transform(e,{loader:`js`,format:`cjs`,sourcefile:`${t.replace(/\.[^./]+$/,``)}.js`,supported:{"dynamic-import":!1}})).code}catch(r){if(!/top-level await/i.test(QA(r)))throw r;return fi()({source:e,filename:t,fromDir:ZA(t,n)})}}async function ej(e,t,n){let r=e;try{r=await $A(e,t,n)}catch(e){return{stdout:``,stderr:`${QA(e)}\n`,exitCode:1}}try{let e=Object.getPrototypeOf(async function(){}).constructor;return new e(r),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`${QA(e)}\n`,exitCode:1}}}async function tj(e,t){if(e.length>0&&(e[0]===`-e`||e[0]===`--eval`))return e[1]?{kind:`ok`,code:e[1],filename:`[eval]`,argv:[`node`,...e.slice(2)],innerCtx:t}:{kind:`result`,result:{stdout:``,stderr:`node: option requires an argument -- eval
1558
- `,exitCode:9}};if(e.length>0&&UA.has(e[0]))return{kind:`ok`,code:P(t.stdin),filename:`<stdin>`,argv:[`node`,e[0],...e.slice(1)],innerCtx:{...t,stdin:``}};if(e.length>0&&!e[0].startsWith(`-`)){let n=e[0],r=t.fs.resolvePath(t.cwd,n);return await t.fs.exists(r)?{kind:`ok`,code:await t.fs.readFile(r),filename:r,argv:[`node`,r,...e.slice(1)],innerCtx:t}:{kind:`result`,result:{stdout:``,stderr:`node: cannot find module '${n}'\n`,exitCode:1}}}return P(t.stdin).trim().length>0?{kind:`ok`,code:P(t.stdin),filename:`<stdin>`,argv:[`node`],innerCtx:{...t,stdin:``}}:e.length>0?{kind:`result`,result:{stdout:``,stderr:`node: unsupported option '${e[0]}'\n`,exitCode:9}}:{kind:`result`,result:{stdout:``,stderr:`node: REPL mode is not supported in this environment; use node -e "code"
1559
- `,exitCode:9}}}function nj(e={},t=`node`){return{name:t,trusted:!0,async execute(t,n){let r=qA(t);if(r.error)return r.error;if(r.help)return JA();if(r.version)return YA();let i=await tj(t.slice(r.sourceIndex),n);if(i.kind===`result`)return r.check&&i.result.exitCode===9&&t.slice(r.sourceIndex).length===0?{stdout:``,stderr:`node: -c/--check requires a filename or -e CODE
1560
- `,exitCode:9}:i.result;let{code:a,filename:o,argv:s,innerCtx:c}=i,l=XA(o,r.inputType);if(l)return l;let u=ui(a);return r.check?ej(u,o,n.cwd):ci(u,s,c,e.buildProcessConfig?.(n.env),{filename:o})}}}const rj=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];async function ij(){try{let e=await navigator.serviceWorker?.getRegistrations?.();e&&await Promise.all(e.map(e=>e.unregister().catch(()=>!1)))}catch{}try{let e=await indexedDB.databases();await Promise.all(e.filter(e=>!!e.name).map(e=>new Promise(t=>{let n=indexedDB.deleteDatabase(e.name);n.onsuccess=()=>t(),n.onerror=()=>t(),n.onblocked=()=>t()})))}catch{}try{let e=navigator.storage;if(typeof e?.getDirectory==`function`){let t=await e.getDirectory(),n=[];for await(let e of t.keys())n.push(e);await Promise.all(n.map(e=>t.removeEntry(e,{recursive:!0}).catch(()=>{})))}}catch{}}const aj=[],oj=[`--yes`];function sj(){return S(`nuke`,async e=>{if(w(e,{valueFlags:aj}))return{stdout:`Usage: nuke <launch-code>
1552
+ `,exitCode:9}}}function OA(e,t){if(!e.startsWith(`/`))return t;let n=e.lastIndexOf(`/`);return n<=0?`/`:e.slice(0,n)}function kA(e){return e instanceof Error?e.stack??e.message:String(e)}async function AA(e,t,n){if(!(pr(e)||Or(e)||t.endsWith(`.mjs`)))return e;try{return(await(await ui()).transform(e,{loader:`js`,format:`cjs`,sourcefile:`${t.replace(/\.[^./]+$/,``)}.js`,supported:{"dynamic-import":!1}})).code}catch(r){if(!/top-level await/i.test(kA(r)))throw r;return li()({source:e,filename:t,fromDir:OA(t,n)})}}async function jA(e,t,n){let r=e;try{r=await AA(e,t,n)}catch(e){return{stdout:``,stderr:`${kA(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:`${kA(e)}\n`,exitCode:1}}}async function MA(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
1553
+ `,exitCode:9}};if(e.length>0&&bA.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"
1554
+ `,exitCode:9}}}function NA(e={},t=`node`){return{name:t,trusted:!0,async execute(t,n){let r=wA(t);if(r.error)return r.error;if(r.help)return TA();if(r.version)return EA();let i=await MA(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
1555
+ `,exitCode:9}:i.result;let{code:a,filename:o,argv:s,innerCtx:c}=i,l=DA(o,r.inputType);if(l)return l;let u=si(a);return r.check?jA(u,o,n.cwd):ai(u,s,c,e.buildProcessConfig?.(n.env),{filename:o})}}}const PA=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];async function FA(){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 IA=[],LA=[`--yes`];function RA(){return S(`nuke`,async e=>{if(w(e,{valueFlags:IA}))return{stdout:`Usage: nuke <launch-code>
1561
1556
 
1562
1557
  Completely reset the environment by deleting all local data and reloading.
1563
1558
  Destroys the file system, chat history, and scoops database.
1564
1559
  Requires the secret launch code to proceed.
1565
- `,stderr:``,exitCode:0};let t=C(e,{value:aj,bool:oj});return`error`in t?{stdout:``,stderr:`nuke: ${t.error}\n`,exitCode:1}:t.positionals.join(``).includes(`1234`)?((async()=>{await ij(),cj(rj)})(),{stdout:`Nuking everything…
1560
+ `,stderr:``,exitCode:0};let t=C(e,{value:IA,bool:LA});return`error`in t?{stdout:``,stderr:`nuke: ${t.error}\n`,exitCode:1}:t.positionals.join(``).includes(`1234`)?((async()=>{await FA(),zA(PA)})(),{stdout:`Nuking everything…
1566
1561
  `,stderr:``,exitCode:0}):{stdout:``,stderr:`⚠️ WARNING: this will reset the entire environment, file system, chats, and scoops.
1567
1562
  Run nuke again with the secret launch code to proceed.
1568
- `,exitCode:1}})}function cj(e=[]){let t=[...e];try{if(typeof BroadcastChannel==`function`){let e=new BroadcastChannel(`slicc-nuke-control`);e.postMessage({type:`nuke-reload`,keysToRemove:t}),setTimeout(()=>e.close(),100)}}catch{}for(let e of t)try{globalThis.localStorage?.removeItem(e)}catch{}try{globalThis.location?.reload?.()}catch{}}function lj(){return`oauth-domain — manage extra allowed domains for OAuth-issued tokens
1563
+ `,exitCode:1}})}function zA(e=[]){let t=[...e];try{if(typeof BroadcastChannel==`function`){let e=new BroadcastChannel(`slicc-nuke-control`);e.postMessage({type:`nuke-reload`,keysToRemove:t}),setTimeout(()=>e.close(),100)}}catch{}for(let e of t)try{globalThis.localStorage?.removeItem(e)}catch{}try{globalThis.location?.reload?.()}catch{}}function BA(){return`oauth-domain — manage extra allowed domains for OAuth-issued tokens
1569
1564
 
1570
1565
  Usage:
1571
1566
  oauth-domain list List extra domains for every provider
@@ -1590,13 +1585,13 @@ Examples:
1590
1585
  oauth-domain add adobe '*.da.live'
1591
1586
  oauth-domain list adobe
1592
1587
  oauth-domain remove adobe admin.da.live
1593
- `}function uj(e){return{stdout:``,stderr:`oauth-domain: ${e}\n`,exitCode:1}}function dj(e,t){if(t){let n=e.getExtraOAuthDomains(t);return n.length===0?{stdout:`(no extra domains configured for ${t})\n`,stderr:``,exitCode:0}:{stdout:`${n.join(`
1588
+ `}function VA(e){return{stdout:``,stderr:`oauth-domain: ${e}\n`,exitCode:1}}function HA(e,t){if(t){let n=e.getExtraOAuthDomains(t);return n.length===0?{stdout:`(no extra domains configured for ${t})\n`,stderr:``,exitCode:0}:{stdout:`${n.join(`
1594
1589
  `)}\n`,stderr:``,exitCode:0}}let n=Object.entries(e.getAllExtraOAuthDomains()).filter(([,e])=>e.length>0);return n.length===0?{stdout:`(no extra OAuth domains configured)
1595
1590
  `,stderr:``,exitCode:0}:{stdout:`${n.map(([e,t])=>`${e}: ${t.join(`, `)}`).join(`
1596
- `)}\n`,stderr:``,exitCode:0}}async function fj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain add: requires <providerId> and <domain>
1597
- `,exitCode:1};let r=e.getExtraOAuthDomains(t),i=n.toLowerCase();return r.some(e=>e.toLowerCase()===i)?{stdout:`(${n} already in ${t} extras)\n`,stderr:``,exitCode:0}:(await e.setExtraOAuthDomainsAsync(t,[...r,n]),{stdout:`Added ${n} to ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0})}async function pj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain remove: requires <providerId> and <domain>
1598
- `,exitCode:1};let r=e.getExtraOAuthDomains(t),i=n.toLowerCase(),a=r.filter(e=>e.toLowerCase()!==i);return a.length===r.length?{stdout:`(${n} not found in ${t} extras)\n`,stderr:``,exitCode:0}:(await e.setExtraOAuthDomainsAsync(t,a),{stdout:`Removed ${n} from ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0})}async function mj(e,t){return t?(await e.setExtraOAuthDomainsAsync(t,[]),{stdout:`Cleared extra domains for ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0}):{stdout:``,stderr:`oauth-domain clear: requires <providerId>
1599
- `,exitCode:1}}async function hj(e,t,n,r){switch(t){case`list`:return dj(e,n);case`add`:return fj(e,n,r);case`remove`:return pj(e,n,r);case`clear`:return mj(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${lj()}`,exitCode:1}}}function gj(){return S(`oauth-domain`,async e=>{if(e.length===0||w(e))return{stdout:lj(),stderr:``,exitCode:0};let t=C(e);if(`error`in t)return uj(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-B89MQ7Me.js`).then(e=>e.t);try{return await hj(a,n,r,i)}catch(e){return uj(e instanceof Error?e.message:String(e))}})}function _j(){return S(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-CCUKvvPv.js`);return n(e,t)})}const vj=[`--download`,`-d`,`--view`,`-v`],yj=[`--size`],bj={low:256,medium:768,high:1536};function xj(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1591
+ `)}\n`,stderr:``,exitCode:0}}async function UA(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain add: requires <providerId> and <domain>
1592
+ `,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 WA(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain remove: requires <providerId> and <domain>
1593
+ `,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 GA(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>
1594
+ `,exitCode:1}}async function KA(e,t,n,r){switch(t){case`list`:return HA(e,n);case`add`:return UA(e,n,r);case`remove`:return WA(e,n,r);case`clear`:return GA(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${BA()}`,exitCode:1}}}function qA(){return S(`oauth-domain`,async e=>{if(e.length===0||w(e))return{stdout:BA(),stderr:``,exitCode:0};let t=C(e);if(`error`in t)return VA(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-BGMKtG5Y.js`).then(e=>e.t);try{return await KA(a,n,r,i)}catch(e){return VA(e instanceof Error?e.message:String(e))}})}function JA(){return S(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-CTXs0tgt.js`);return n(e,t)})}const YA=[`--download`,`-d`,`--view`,`-v`],XA=[`--size`],ZA={low:256,medium:768,high:1536};function QA(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1600
1595
 
1601
1596
  VFS paths are served in a new browser tab via the preview service worker.
1602
1597
  URLs (http/https/etc.) are opened directly in a new tab.
@@ -1610,19 +1605,19 @@ Examples:
1610
1605
  medium (768x768), high (1536x1536), or a custom WxH
1611
1606
  box like 512x512. The image is fit inside the box
1612
1607
  with aspect ratio preserved and is never upscaled.
1613
- `,stderr:``,exitCode:0}}function Sj(e){if(e in bj){let t=bj[e];return{maxW:t,maxH:t}}let t=/^(\d+)x(\d+)$/.exec(e);if(t){let e=parseInt(t[1],10),n=parseInt(t[2],10);if(e>0&&n>0)return{maxW:e,maxH:n}}return null}function Cj(e,t){if(t===`image/png`||t===`image/apng`){if(e.length<26)return!1;let t=e[25];return t===4||t===6}if(t===`image/webp`){if(e.length<16)return!1;let t=String.fromCharCode(e[12],e[13],e[14],e[15]);return t===`VP8L`?!0:t===`VP8X`?e.length<21?!1:!!(e[20]&16):!1}return!1}function wj(){return`open --view requires --size to bound the inlined image. Use one of:
1608
+ `,stderr:``,exitCode:0}}function $A(e){if(e in ZA){let t=ZA[e];return{maxW:t,maxH:t}}let t=/^(\d+)x(\d+)$/.exec(e);if(t){let e=parseInt(t[1],10),n=parseInt(t[2],10);if(e>0&&n>0)return{maxW:e,maxH:n}}return null}function ej(e,t){if(t===`image/png`||t===`image/apng`){if(e.length<26)return!1;let t=e[25];return t===4||t===6}if(t===`image/webp`){if(e.length<16)return!1;let t=String.fromCharCode(e[12],e[13],e[14],e[15]);return t===`VP8L`?!0:t===`VP8X`?e.length<21?!1:!!(e[20]&16):!1}return!1}function tj(){return`open --view requires --size to bound the inlined image. Use one of:
1614
1609
  --size low (256x256)
1615
1610
  --size medium (768x768)
1616
1611
  --size high (1536x1536)
1617
1612
  --size WxH (custom box, e.g. 512x512)
1618
- `}const Tj=new Set([`image/png`,`image/webp`]);function Ej(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}async function Dj(e,t){let n=Ej(e),r=new Blob([n],{type:t}),i=await createImageBitmap(r);try{return{width:i.width,height:i.height}}finally{i.close?.()}}async function Oj(e,t,n,r){let i=Ej(e),a=new Blob([i],{type:t}),o=await createImageBitmap(a);try{let i=o.width,a=o.height,s=Math.min(n/i,r/a,1),c=Math.max(1,Math.round(i*s)),l=Math.max(1,Math.round(a*s)),u=new OffscreenCanvas(c,l),d=u.getContext(`2d`);if(!d)throw Error(`failed to acquire 2d context for resize`);d.drawImage(o,0,0,c,l);let f=Cj(e,t)?Tj.has(t)?t:`image/png`:`image/jpeg`,p=await u.convertToBlob(f===`image/jpeg`?{type:`image/jpeg`,quality:.85}:{type:f});return{bytes:new Uint8Array(await p.arrayBuffer()),mime:f,width:c,height:l,nativeWidth:i,nativeHeight:a}}finally{o.close?.()}}function kj(e){let t=C(e,{bool:vj,value:yj});if(`error`in t)return{error:`open: ${t.error}`};let n=t.values.get(`--size`);return n?.startsWith(`-`)&&n!==`-`?{error:`open: unknown flag: ${n}`}:{download:t.bools.has(`--download`)||t.bools.has(`-d`),view:t.bools.has(`--view`)||t.bools.has(`-v`),sizeSpec:n,targets:t.positionals}}function Aj(e){return{ok:!0,message:e}}function G(e){return{ok:!1,result:{stdout:``,stderr:e,exitCode:1}}}function jj(e){return e?` (targetId: ${e})`:``}function Mj(e,t,n){return async r=>{if(e)return e.createPage(r);if(t){window.open(r,`_blank`,`noopener,noreferrer`);return}try{await n.call(`window-open`,{url:r,target:`_blank`,features:`noopener,noreferrer`})}catch(e){throw Error(`open: ${e instanceof Error?e.message:String(e)}`)}}}async function Nj(e,t,n,r,i){let a=t.fs.resolvePath(t.cwd,e);if(n){let e=(a.split(`/`).pop()??``).replace(/\.shtml$/,``);try{return await n.open(e),Aj(`opened sprinkle ${e} from ${a}`)}catch(e){return G(`open: ${e instanceof Error?e.message:String(e)}\n`)}}if(r){let e=await _r(t.fs,Tr(a)),n=qr(a,e),r;try{r=await i(n)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return Aj(`opened ${a} → ${n}${jj(r)}`)}return G(`open: sprinkle manager not initialized
1619
- `)}async function Pj(e,t,n){if(!t)return G(`open: browser APIs are unavailable in this environment
1620
- `);let r;try{r=await n(e)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return Aj(`opened ${e}${jj(r)}`)}async function Fj(e,n,r,i){let a;try{a=await r.fs.stat(n)}catch{return G(`open: no such file: ${e}\n`)}if(!a.isFile)return G(`open: not a file: ${e}\n`);let o;try{o=await r.fs.readFileBuffer(n)}catch{return G(`open: failed to read: ${e}\n`)}let s=hr(n),c=new Uint8Array(o),l=null;if(i!==void 0&&(l=Sj(i),!l))return G(`open: invalid --size spec '${i}' (expected low|medium|high or WxH such as 512x512)\n`);if(!l){let t;try{t=await Dj(c,s)}catch(t){return G(`open: not an image or failed to decode: ${e} (${t instanceof Error?t.message:String(t)})\n`)}let r=Math.round(c.byteLength/1024);return G(`open --view: ${n} is ${t.width}x${t.height} (${r} KB, ${s})\n`+wj())}let u;try{u=await Oj(c,s,l.maxW,l.maxH)}catch(t){return G(`open: not an image or failed to decode: ${e} (${t instanceof Error?t.message:String(t)})\n`)}let d=t(u.bytes),f=Math.round(u.bytes.byteLength/1024);return Aj(`${n} (${u.nativeWidth}x${u.nativeHeight} → ${u.width}x${u.height}, ${f} KB, ${u.mime})\n<img:data:${u.mime};base64,${d}>`)}async function Ij(e,t,n,r){if(!r)return G(`open: --download requires the in-panel terminal (DOM-only)
1621
- `);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:hr(t)}),c=URL.createObjectURL(s),l=document.createElement(`a`);return l.href=c,l.download=xr(t)||`download`,l.style.display=`none`,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(c),0),Aj(`downloaded ${t}`)}async function Lj(e,t,n,r){if(!n)return G(`open: browser APIs are unavailable in this environment
1622
- `);let i=!1;try{i=(await t.fs.stat(e)).isDirectory}catch{}let a=await _r(t.fs,i?e:Tr(e)),o=qr(e,a),s;try{s=await r(o)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return Aj(`opened ${e} → ${o}${jj(s)}`)}async function Rj(e,t,n,r){if(!yr(e)&&e.endsWith(`.shtml`)&&t.fs)return Nj(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return G(`open: browser APIs are unavailable in this environment
1623
- `);if(yr(e))return Pj(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?Fj(e,i,t,n.sizeSpec):n.download?Ij(e,i,t,r.hasDom):Lj(i,t,r.canOpenWindow,r.openExternal)}function zj(e){return S(`open`,async(t,n)=>{if(t.length===0||w(t,{valueFlags:yj}))return xj();let r=kj(t);if(`error`in r)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{download:i,view:a,sizeSpec:o,targets:s}=r;if(s.length===0)return xj();let c=globalThis.__slicc_sprinkleManager,l=typeof window<`u`&&typeof document<`u`,u=l?null:y(),d={canOpenWindow:!!e||l||!!u,hasDom:l,sprinkleManager:c,openExternal:Mj(e,l,u)},f=[];for(let e of s){let t=await Rj(e,n,{view:a,download:i,sizeSpec:o},d);if(!t.ok)return t.result;f.push(t.message)}return{stdout:f.join(`
1613
+ `}const nj=new Set([`image/png`,`image/webp`]);function rj(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}async function ij(e,t){let n=rj(e),r=new Blob([n],{type:t}),i=await createImageBitmap(r);try{return{width:i.width,height:i.height}}finally{i.close?.()}}async function aj(e,t,n,r){let i=rj(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=ej(e,t)?nj.has(t)?t:`image/png`:`image/jpeg`,p=await u.convertToBlob(f===`image/jpeg`?{type:`image/jpeg`,quality:.85}:{type:f});return{bytes:new Uint8Array(await p.arrayBuffer()),mime:f,width:c,height:l,nativeWidth:i,nativeHeight:a}}finally{o.close?.()}}function oj(e){let t=C(e,{bool:YA,value:XA});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 sj(e){return{ok:!0,message:e}}function G(e){return{ok:!1,result:{stdout:``,stderr:e,exitCode:1}}}function cj(e){return e?` (targetId: ${e})`:``}function lj(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 uj(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),sj(`opened sprinkle ${e} from ${a}`)}catch(e){return G(`open: ${e instanceof Error?e.message:String(e)}\n`)}}if(r){let e=await mr(t.fs,Sr(a)),n=Wr(a,e),r;try{r=await i(n)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return sj(`opened ${a} → ${n}${cj(r)}`)}return G(`open: sprinkle manager not initialized
1614
+ `)}async function dj(e,t,n){if(!t)return G(`open: browser APIs are unavailable in this environment
1615
+ `);let r;try{r=await n(e)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return sj(`opened ${e}${cj(r)}`)}async function fj(e,n,r,i){let a;try{a=await r.fs.stat(n)}catch{return G(`open: no such file: ${e}\n`)}if(!a.isFile)return G(`open: not a file: ${e}\n`);let o;try{o=await r.fs.readFileBuffer(n)}catch{return G(`open: failed to read: ${e}\n`)}let s=fr(n),c=new Uint8Array(o),l=null;if(i!==void 0&&(l=$A(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 ij(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`+tj())}let u;try{u=await aj(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 sj(`${n} (${u.nativeWidth}x${u.nativeHeight} → ${u.width}x${u.height}, ${f} KB, ${u.mime})\n<img:data:${u.mime};base64,${d}>`)}async function pj(e,t,n,r){if(!r)return G(`open: --download requires the in-panel terminal (DOM-only)
1616
+ `);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:fr(t)}),c=URL.createObjectURL(s),l=document.createElement(`a`);return l.href=c,l.download=vr(t)||`download`,l.style.display=`none`,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(c),0),sj(`downloaded ${t}`)}async function mj(e,t,n,r){if(!n)return G(`open: browser APIs are unavailable in this environment
1617
+ `);let i=!1;try{i=(await t.fs.stat(e)).isDirectory}catch{}let a=await mr(t.fs,i?e:Sr(e)),o=Wr(e,a),s;try{s=await r(o)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return sj(`opened ${e} → ${o}${cj(s)}`)}async function hj(e,t,n,r){if(!gr(e)&&e.endsWith(`.shtml`)&&t.fs)return uj(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return G(`open: browser APIs are unavailable in this environment
1618
+ `);if(gr(e))return dj(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?fj(e,i,t,n.sizeSpec):n.download?pj(e,i,t,r.hasDom):mj(i,t,r.canOpenWindow,r.openExternal)}function gj(e){return S(`open`,async(t,n)=>{if(t.length===0||w(t,{valueFlags:XA}))return QA();let r=oj(t);if(`error`in r)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{download:i,view:a,sizeSpec:o,targets:s}=r;if(s.length===0)return QA();let c=globalThis.__slicc_sprinkleManager,l=typeof window<`u`&&typeof document<`u`,u=l?null:y(),d={canOpenWindow:!!e||l||!!u,hasDom:l,sprinkleManager:c,openExternal:lj(e,l,u)},f=[];for(let e of s){let t=await hj(e,n,{view:a,download:i,sizeSpec:o},d);if(!t.ok)return t.result;f.push(t.message)}return{stdout:f.join(`
1624
1619
  `)+`
1625
- `,stderr:``,exitCode:0}})}function Bj(){return S(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-DtwP8Z1e.js`);return n(e,t)})}function Vj(e=`pdftk`){return S(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function Hj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1620
+ `,stderr:``,exitCode:0}})}function _j(){return S(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-D5V1rBmu.js`);return n(e,t)})}function vj(e=`pdftk`){return S(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function yj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1626
1621
 
1627
1622
  Rasterize PDF pages to images. Writes <prefix>-<n>.<ext> per page, where <n>
1628
1623
  is zero-padded to the digit width of the last page (out-1.png for a 9-page
@@ -1649,8 +1644,8 @@ Examples:
1649
1644
  pdftoppm -png -r 150 doc.pdf page
1650
1645
  pdftoppm -jpeg -jpegopt quality=80 -f 1 -l 3 doc.pdf out
1651
1646
  pdftoppm -png -singlefile -scale-to 1024 doc.pdf cover
1652
- `,stderr:``,exitCode:0}}function Uj(e,t){if(e===void 0)throw Error(`missing argument for ${t}`);let n=Number(e);if(!Number.isFinite(n)||!Number.isInteger(n)||n<=0)throw Error(`invalid ${t} value: ${e}`);return n}function Wj(e){if(e===void 0)throw Error(`missing argument for -jpegopt`);for(let t of e.split(`,`)){let[e,n]=t.split(`=`);if(e?.trim()!==`quality`)continue;let r=Number(n);if(!Number.isFinite(r)||r<0||r>100)throw Error(`invalid -jpegopt quality: ${n}`);return r}throw Error(`unsupported -jpegopt: ${e}`)}function Gj(e){let t=`png`,n=150,r,i,a,o,s,c,l=!1,u=[];for(let d=0;d<e.length;d++){let f=e[d];switch(f){case`-png`:t=`png`;break;case`-jpeg`:t=`jpeg`;break;case`-jpegopt`:c=Wj(e[++d]),t=`jpeg`;break;case`-r`:n=Uj(e[++d],`-r`);break;case`-f`:r=Uj(e[++d],`-f`);break;case`-l`:i=Uj(e[++d],`-l`);break;case`-scale-to`:a=Uj(e[++d],`-scale-to`);break;case`-scale-to-x`:o=Uj(e[++d],`-scale-to-x`);break;case`-scale-to-y`:s=Uj(e[++d],`-scale-to-y`);break;case`-singlefile`:l=!0;break;default:if(f.startsWith(`-`))throw Error(`unsupported option ${f}`);u.push(f)}}if(u.length===0)throw Error(`expected an input PDF`);if(u.length>2)throw Error(`expected at most one input PDF and one output prefix`);if(r!==void 0&&i!==void 0&&r>i)throw Error(`invalid page range: ${r}-${i}`);return{inputPath:u[0],outputRoot:u[1],format:t,dpi:n,firstPage:r,lastPage:i,scaleTo:a,scaleToX:o,scaleToY:s,quality:c,singleFile:l}}function Kj(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function qj(e,t,n,r){let i=String(n).length;return`${e}-${String(t).padStart(i,`0`)}.${r}`}function Jj(e){return e===`jpeg`?`jpg`:`png`}function Yj(e){return e.scaleToX===void 0?e.scaleToY===void 0?e.scaleTo===void 0?{scale:ra(e.dpi)}:{longEdge:e.scaleTo}:{height:e.scaleToY}:{width:e.scaleToX}}async function Xj(e,t){let n=e.fs.resolvePath(e.cwd,t),r=await e.fs.readFileBuffer(n);if(!ta(r))throw Error(`${t}: not a PDF file`);return r}function Zj(e=`pdftoppm`){return S(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Hj();let r;try{r=Gj(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let t=await Xj(n,r.inputPath),i=Jj(r.format),a=r.outputRoot??Kj(xr(r.inputPath)),o=[];return await ea(t,{firstPage:r.firstPage,lastPage:r.singleFile?r.firstPage??1:r.lastPage,format:r.format,quality:r.quality,...Yj(r)},async(e,t)=>{let s=r.singleFile?`${a}.${i}`:qj(a,e.pageNumber,t.lastPage,i);await n.fs.writeFile(n.fs.resolvePath(n.cwd,s),e.bytes),o.push(s)}),o.length===0?{stdout:``,stderr:`${e}: no pages to render\n`,exitCode:1}:{stdout:`${o.join(`
1653
- `)}\n`,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}})}function Qj(e=`pdftotext`){return S(e,async(t,n)=>{let{runPdftotext:r}=await import(`./run-BVzzZSqz.js`);return r(e,t,n)})}function $j(e){let t=e.filter(e=>e.teleportEligible===!0&&e.bootstrapId&&e.floatType);if(t.length===0)return null;let n=t.filter(e=>e.floatType===`standalone`),r=n.length>0?n:t;r.sort((e,t)=>(t.lastActivity??0)-(e.lastActivity??0));let i=r[0];return{runtimeId:i.runtimeId,bootstrapId:i.bootstrapId,floatType:i.floatType}}function eM(){Xw(()=>()=>re()),Yw(()=>()=>$j(re()))}const tM=`/workspace/.plugins/sources`;function nM(e){return{stdout:e,stderr:``,exitCode:0}}function K(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function rM(e,t){let n=C(t,{});return`error`in n?K(`plugin ${e}: ${n.error}`):{ok:!0,positionals:n.positionals}}function iM(){return`usage: plugin <command> [args]
1647
+ `,stderr:``,exitCode:0}}function bj(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 xj(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 Sj(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=xj(e[++d]),t=`jpeg`;break;case`-r`:n=bj(e[++d],`-r`);break;case`-f`:r=bj(e[++d],`-f`);break;case`-l`:i=bj(e[++d],`-l`);break;case`-scale-to`:a=bj(e[++d],`-scale-to`);break;case`-scale-to-x`:o=bj(e[++d],`-scale-to-x`);break;case`-scale-to-y`:s=bj(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 Cj(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function wj(e,t,n,r){let i=String(n).length;return`${e}-${String(t).padStart(i,`0`)}.${r}`}function Tj(e){return e===`jpeg`?`jpg`:`png`}function Ej(e){return e.scaleToX===void 0?e.scaleToY===void 0?e.scaleTo===void 0?{scale:ea(e.dpi)}:{longEdge:e.scaleTo}:{height:e.scaleToY}:{width:e.scaleToX}}async function Dj(e,t){let n=e.fs.resolvePath(e.cwd,t),r=await e.fs.readFileBuffer(n);if(!Qi(r))throw Error(`${t}: not a PDF file`);return r}function Oj(e=`pdftoppm`){return S(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return yj();let r;try{r=Sj(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let t=await Dj(n,r.inputPath),i=Tj(r.format),a=r.outputRoot??Cj(vr(r.inputPath)),o=[];return await Zi(t,{firstPage:r.firstPage,lastPage:r.singleFile?r.firstPage??1:r.lastPage,format:r.format,quality:r.quality,...Ej(r)},async(e,t)=>{let s=r.singleFile?`${a}.${i}`:wj(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(`
1648
+ `)}\n`,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}})}function kj(e=`pdftotext`){return S(e,async(t,n)=>{let{runPdftotext:r}=await import(`./run-BVzzZSqz.js`);return r(e,t,n)})}function Aj(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 jj(){Dw(()=>()=>re()),Ew(()=>()=>Aj(re()))}const Mj=`/workspace/.plugins/sources`;function Nj(e){return{stdout:e,stderr:``,exitCode:0}}function K(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function Pj(e,t){let n=C(t,{});return`error`in n?K(`plugin ${e}: ${n.error}`):{ok:!0,positionals:n.positionals}}function Fj(){return`usage: plugin <command> [args]
1654
1649
 
1655
1650
  Load Agent Plugins packages (agent-plugins.org spec v1.0.0): portable
1656
1651
  directories bundling Agent Skills (skills/*/SKILL.md) and MCP servers
@@ -1660,7 +1655,7 @@ Commands:
1660
1655
  install <path|repo> Validate the plugin and register it. <repo> is a
1661
1656
  GitHub reference (owner/repo, owner/repo@branch, or
1662
1657
  https://github.com/owner/repo[/tree/branch[/dir]]),
1663
- downloaded into ${tM}/.
1658
+ downloaded into ${Mj}/.
1664
1659
  Skills surface through the standard skills discovery;
1665
1660
  streamable-http MCP servers are added to the MCP
1666
1661
  store as "<plugin>:<server>".
@@ -1682,36 +1677,36 @@ Examples:
1682
1677
  plugin list
1683
1678
  plugin info my-plugin
1684
1679
  plugin remove my-plugin
1685
- `}function aM(e={}){return S(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return nM(iM());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await fM(i,a,e);case`list`:case`ls`:return await gM(i,e);case`info`:return await _M(i,e);case`validate`:return await vM(i,a,e,aa(n?.env));case`remove`:case`rm`:case`delete`:return await yM(i,e);default:return K(`plugin: unknown subcommand "${r}" (try \`plugin --help\`)`)}}catch(e){return K(`plugin ${r}: ${e instanceof Error?e.message:String(e)}`)}})}async function oM(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-CKSBDyCr.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 sM(e,t,n){let r=bM(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-HX3c8n0G.js`).then(e=>e.t),a=i(e);if(a){let e=`${a.owner}/${a.repo}${a.branch?`@${a.branch}`:``}${a.path?`/${a.path}`:``}`;return{kind:`github`,ref:{...a,display:e}}}return{kind:`error`,message:`${r} does not exist and "${e}" is not a GitHub reference (owner/repo[@branch] or https://github.com/owner/repo[/tree/branch[/dir]])`}}function cM(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function lM(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${tM}/${t.map(cM).join(`--`)}`}async function uM(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-CUIsX5nN.js`).then(e=>e.i),s=await i(e.owner,e.repo,r,e.branch);if(s.status===`error`)return`failed to download ${e.display}: ${s.message}`;let c=a(s.files),l=e.path?e.path.replace(/^\/|\/$/g,``)+`/`:``;if(!c[`${l}plugin.json`])return`no plugin.json found at ${e.display} — not an Agent Plugins package`;try{await n.rm(t,{recursive:!0})}catch{}return await n.mkdir(t,{recursive:!0}),(await o(c,l,t,n,!1)).length===0?`no files found at ${e.display}`:null}async function dM(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function fM(e,t,n){if(w(e))return nM(`usage: plugin install <path|repo>
1680
+ `}function Ij(e={}){return S(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return Nj(Fj());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await Uj(i,a,e);case`list`:case`ls`:return await qj(i,e);case`info`:return await Jj(i,e);case`validate`:return await Yj(i,a,e,na(n?.env));case`remove`:case`rm`:case`delete`:return await Xj(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 Lj(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-CKSBDyCr.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 Rj(e,t,n){let r=Zj(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-HX3c8n0G.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 zj(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function Bj(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${Mj}/${t.map(zj).join(`--`)}`}async function Vj(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-CUIsX5nN.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 Hj(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function Uj(e,t,n){if(w(e))return Nj(`usage: plugin install <path|repo>
1686
1681
 
1687
1682
  Loads the Agent Plugins package at <path>, or downloads it from a GitHub
1688
1683
  reference (owner/repo, owner/repo@branch, or
1689
1684
  https://github.com/owner/repo[/tree/branch[/dir]]) into
1690
- ${tM}/ first. Validates plugin.json (closed
1685
+ ${Mj}/ first. Validates plugin.json (closed
1691
1686
  schema, name constraints), discovers skills/*/SKILL.md, and validates
1692
1687
  mcp.json. On success the plugin is recorded in
1693
1688
  /workspace/.plugins/plugins.json — its skills then surface through the
1694
1689
  standard skills discovery, and each supported streamable-http MCP server
1695
1690
  is registered in the MCP store as "<plugin>:<server>".
1696
- `);let r=rM(`install`,e);if(!(`ok`in r))return r;if(r.positionals.length<1)return K(`plugin install: expected <path|repo>`);let i=await oM(n),a=await sM(r.positionals[0],t,i);if(a.kind===`error`)return K(`plugin install: ${a.message}`);let o,s;if(a.kind===`github`){if(!n.fetch)return K(`plugin install: GitHub installs are unavailable (no network fetch configured)`);o=lM(a.ref),s=a.ref.display;let e=await uM(a.ref,o,i,n.fetch);if(e)return K(`plugin install: ${e}`)}else o=a.root;let{loadPluginFromDirectory:c}=await import(`./loader-D4Fuki1u.js`),l=await c(i,o);if(!l.ok)return a.kind===`github`&&await dM(i,o),K(`plugin install: plugin at ${s??o} was rejected:\n${xM(l.diagnostics)}`);let{plugin:u}=l,d=u.manifest.name,{getInstalledPlugin:f,setInstalledPlugin:p}=await import(`./store-Mw1jky9b.js`),m=await f(d,n.fs);if(m&&m.root!==o)return a.kind===`github`&&await dM(i,o),K(`plugin install: a plugin named "${d}" is already installed from ${m.root} (remove it first)`);let h=await hM(u,n),g=await mM(d,m?.mcpServerNames,h.registered,n);return await p(d,{root:o,version:u.manifest.version,description:u.manifest.description,installedAt:new Date().toISOString(),mcpServerNames:h.registered,...s?{source:s}:{}},n.fs),nM(pM(u,h,g,s??o,l.diagnostics))}function pM(e,t,n,r,i){let a=e.manifest.name,o=t.registered,s=e.mcp.servers.filter(e=>e.status!==`supported`),c=[`Installed agent plugin "${a}"${e.manifest.version?` v${e.manifest.version}`:``} from ${r}`,` skills: ${e.skills.length}${e.skills.length>0?` (${e.skills.map(e=>e.name).join(`, `)})`:``}`,` mcp: ${o.length} registered${o.length>0?` (${o.join(`, `)})`:``}${s.length>0?`, ${s.length} skipped`:``}${n>0?`, ${n} removed from previous install`:``}`];return t.conflicts.length>0&&c.push(` warning: not bridged — MCP server name(s) already in use and not owned by this plugin: ${t.conflicts.join(`, `)} (remove them with \`mcp remove\` first)`),i.length>0&&c.push(`Diagnostics:`,xM(i)),c.join(`
1691
+ `);let r=Pj(`install`,e);if(!(`ok`in r))return r;if(r.positionals.length<1)return K(`plugin install: expected <path|repo>`);let i=await Lj(n),a=await Rj(r.positionals[0],t,i);if(a.kind===`error`)return K(`plugin install: ${a.message}`);let o,s;if(a.kind===`github`){if(!n.fetch)return K(`plugin install: GitHub installs are unavailable (no network fetch configured)`);o=Bj(a.ref),s=a.ref.display;let e=await Vj(a.ref,o,i,n.fetch);if(e)return K(`plugin install: ${e}`)}else o=a.root;let{loadPluginFromDirectory:c}=await import(`./loader-D4Fuki1u.js`),l=await c(i,o);if(!l.ok)return a.kind===`github`&&await Hj(i,o),K(`plugin install: plugin at ${s??o} was rejected:\n${Qj(l.diagnostics)}`);let{plugin:u}=l,d=u.manifest.name,{getInstalledPlugin:f,setInstalledPlugin:p}=await import(`./store-Mw1jky9b.js`),m=await f(d,n.fs);if(m&&m.root!==o)return a.kind===`github`&&await Hj(i,o),K(`plugin install: a plugin named "${d}" is already installed from ${m.root} (remove it first)`);let h=await Kj(u,n),g=await Gj(d,m?.mcpServerNames,h.registered,n);return await p(d,{root:o,version:u.manifest.version,description:u.manifest.description,installedAt:new Date().toISOString(),mcpServerNames:h.registered,...s?{source:s}:{}},n.fs),Nj(Wj(u,h,g,s??o,l.diagnostics))}function Wj(e,t,n,r,i){let a=e.manifest.name,o=t.registered,s=e.mcp.servers.filter(e=>e.status!==`supported`),c=[`Installed agent plugin "${a}"${e.manifest.version?` v${e.manifest.version}`:``} from ${r}`,` skills: ${e.skills.length}${e.skills.length>0?` (${e.skills.map(e=>e.name).join(`, `)})`:``}`,` mcp: ${o.length} registered${o.length>0?` (${o.join(`, `)})`:``}${s.length>0?`, ${s.length} skipped`:``}${n>0?`, ${n} removed from previous install`:``}`];return t.conflicts.length>0&&c.push(` warning: not bridged — MCP server name(s) already in use and not owned by this plugin: ${t.conflicts.join(`, `)} (remove them with \`mcp remove\` first)`),i.length>0&&c.push(`Diagnostics:`,Qj(i)),c.join(`
1697
1692
  `)+`
1698
- `}async function mM(e,t,n,r){let i=(t??[]).filter(e=>!n.includes(e));if(i.length===0)return 0;let{deleteServer:a,getServer:o}=await import(`./store-wiEGJ_43.js`).then(e=>e.r),s=0;for(let t of i)(await o(t,r.fs))?.pluginOrigin===e&&await a(t,r.fs)&&(s+=1);return s}async function hM(e,t){let n=e.mcp.servers.filter(e=>e.status===`supported`);if(n.length===0)return{registered:[],conflicts:[]};let{getServer:r,setServer:i}=await import(`./store-wiEGJ_43.js`).then(e=>e.r),{McpClient:a}=await import(`./client-D5zdJCVT.js`),o=[],s=[];for(let c of n){let n=c.config,l=`${e.manifest.name}:${c.name}`,u=await r(l,t.fs);if(u&&u.pluginOrigin!==e.manifest.name){s.push(l);continue}let d=[];try{let e=new a({url:n.url,headers:n.headers});await e.initialize(),d=await e.toolsList()}catch{}await i(l,{url:n.url,...n.headers?{headers:n.headers}:{},tools:d,addedAt:new Date().toISOString(),pluginOrigin:e.manifest.name},t.fs),o.push(l)}return{registered:o,conflicts:s}}async function gM(e,t){if(w(e))return nM(`usage: plugin list
1699
- `);let n=rM(`list`,e);if(!(`ok`in n))return n;let{listInstalledPlugins:r}=await import(`./store-Mw1jky9b.js`),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return nM("No agent plugins installed. Use `plugin install <path>`.\n");let o=[[`NAME`,`VERSION`,`ROOT`,`MCP`]];for(let e of a){let t=i[e];o.push([e,t.version??`-`,t.root,String(t.mcpServerNames?.length??0)])}let s=o[0].map((e,t)=>Math.max(...o.map(e=>e[t].length)));return nM(o.map(e=>e.map((e,t)=>e.padEnd(s[t])).join(` `)).join(`
1693
+ `}async function Gj(e,t,n,r){let i=(t??[]).filter(e=>!n.includes(e));if(i.length===0)return 0;let{deleteServer:a,getServer:o}=await import(`./store-wiEGJ_43.js`).then(e=>e.r),s=0;for(let t of i)(await o(t,r.fs))?.pluginOrigin===e&&await a(t,r.fs)&&(s+=1);return s}async function Kj(e,t){let n=e.mcp.servers.filter(e=>e.status===`supported`);if(n.length===0)return{registered:[],conflicts:[]};let{getServer:r,setServer:i}=await import(`./store-wiEGJ_43.js`).then(e=>e.r),{McpClient:a}=await import(`./client-D5zdJCVT.js`),o=[],s=[];for(let c of n){let n=c.config,l=`${e.manifest.name}:${c.name}`,u=await r(l,t.fs);if(u&&u.pluginOrigin!==e.manifest.name){s.push(l);continue}let d=[];try{let e=new a({url:n.url,headers:n.headers});await e.initialize(),d=await e.toolsList()}catch{}await i(l,{url:n.url,...n.headers?{headers:n.headers}:{},tools:d,addedAt:new Date().toISOString(),pluginOrigin:e.manifest.name},t.fs),o.push(l)}return{registered:o,conflicts:s}}async function qj(e,t){if(w(e))return Nj(`usage: plugin list
1694
+ `);let n=Pj(`list`,e);if(!(`ok`in n))return n;let{listInstalledPlugins:r}=await import(`./store-Mw1jky9b.js`),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return Nj("No agent plugins installed. Use `plugin install <path>`.\n");let o=[[`NAME`,`VERSION`,`ROOT`,`MCP`]];for(let e of a){let t=i[e];o.push([e,t.version??`-`,t.root,String(t.mcpServerNames?.length??0)])}let s=o[0].map((e,t)=>Math.max(...o.map(e=>e[t].length)));return Nj(o.map(e=>e.map((e,t)=>e.padEnd(s[t])).join(` `)).join(`
1700
1695
  `)+`
1701
- `)}async function _M(e,t){if(w(e))return nM(`usage: plugin info <name>
1702
- `);let n=rM(`info`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return K(`plugin info: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i}=await import(`./store-Mw1jky9b.js`),a=await i(r,t.fs);if(!a)return K(`plugin info: no installed plugin named "${r}"`);let o=await oM(t),{loadPluginFromDirectory:s}=await import(`./loader-D4Fuki1u.js`),c=await s(o,a.root);if(!c.ok)return K(`plugin info: plugin at ${a.root} no longer loads:\n${xM(c.diagnostics)}`);let{plugin:l}=c,u=l.manifest,d=[`${u.name}${u.version?` v${u.version}`:``}`,...u.description?[` ${u.description}`]:[],` root: ${l.root}`,...u.license?[` license: ${u.license}`]:[],...u.homepage?[` home: ${u.homepage}`]:[],``,`Skills (${l.skills.length}):`,...l.skills.map(e=>` ${e.name} ${e.description}`),``,`MCP servers (${l.mcp.servers.length}):`,...l.mcp.servers.map(e=>e.status===`supported`?` ${e.name} ${e.config.type} ${e.config.url}`:` ${e.name} [skipped: ${e.reason}]`)];return c.diagnostics.length>0&&d.push(``,`Diagnostics:`,xM(c.diagnostics)),nM(d.join(`
1696
+ `)}async function Jj(e,t){if(w(e))return Nj(`usage: plugin info <name>
1697
+ `);let n=Pj(`info`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return K(`plugin info: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i}=await import(`./store-Mw1jky9b.js`),a=await i(r,t.fs);if(!a)return K(`plugin info: no installed plugin named "${r}"`);let o=await Lj(t),{loadPluginFromDirectory:s}=await import(`./loader-D4Fuki1u.js`),c=await s(o,a.root);if(!c.ok)return K(`plugin info: plugin at ${a.root} no longer loads:\n${Qj(c.diagnostics)}`);let{plugin:l}=c,u=l.manifest,d=[`${u.name}${u.version?` v${u.version}`:``}`,...u.description?[` ${u.description}`]:[],` root: ${l.root}`,...u.license?[` license: ${u.license}`]:[],...u.homepage?[` home: ${u.homepage}`]:[],``,`Skills (${l.skills.length}):`,...l.skills.map(e=>` ${e.name} ${e.description}`),``,`MCP servers (${l.mcp.servers.length}):`,...l.mcp.servers.map(e=>e.status===`supported`?` ${e.name} ${e.config.type} ${e.config.url}`:` ${e.name} [skipped: ${e.reason}]`)];return c.diagnostics.length>0&&d.push(``,`Diagnostics:`,Qj(c.diagnostics)),Nj(d.join(`
1703
1698
  `)+`
1704
- `)}async function vM(e,t,n,r){if(w(e))return nM(`usage: plugin validate <path|repo>
1705
- `);let i=rM(`validate`,e);if(!(`ok`in i))return i;if(i.positionals.length<1)return K(`plugin validate: expected <path|repo>`);let a=await oM(n),o=await sM(i.positionals[0],t,a);if(o.kind===`error`)return K(`plugin validate: ${o.message}`);let s,c=null;if(o.kind===`github`){if(!n.fetch)return K(`plugin validate: GitHub sources are unavailable (no network fetch configured)`);c=`${r}/.plugin-validate/${lM(o.ref).split(`/`).pop()}`;let e=await uM(o.ref,c,a,n.fetch);if(e)return K(`plugin validate: ${e}`);s=c}else s=o.root;let{loadPluginFromDirectory:l}=await import(`./loader-D4Fuki1u.js`),u;try{u=await l(a,s)}finally{c&&await dM(a,c)}if(!u.ok)return{stdout:``,stderr:`plugin validate: REJECTED\n${xM(u.diagnostics)}\n`,exitCode:1};let{plugin:d}=u,f=d.mcp.servers.filter(e=>e.status===`supported`).length,p=[`plugin validate: OK — "${d.manifest.name}"${d.manifest.version?` v${d.manifest.version}`:``}`,` skills: ${d.skills.length}`,` mcp servers: ${f} supported, ${d.mcp.servers.length-f} skipped (mcp.json ${d.mcp.status})`];return u.diagnostics.length>0&&p.push(`Diagnostics:`,xM(u.diagnostics)),nM(p.join(`
1699
+ `)}async function Yj(e,t,n,r){if(w(e))return Nj(`usage: plugin validate <path|repo>
1700
+ `);let i=Pj(`validate`,e);if(!(`ok`in i))return i;if(i.positionals.length<1)return K(`plugin validate: expected <path|repo>`);let a=await Lj(n),o=await Rj(i.positionals[0],t,a);if(o.kind===`error`)return K(`plugin validate: ${o.message}`);let s,c=null;if(o.kind===`github`){if(!n.fetch)return K(`plugin validate: GitHub sources are unavailable (no network fetch configured)`);c=`${r}/.plugin-validate/${Bj(o.ref).split(`/`).pop()}`;let e=await Vj(o.ref,c,a,n.fetch);if(e)return K(`plugin validate: ${e}`);s=c}else s=o.root;let{loadPluginFromDirectory:l}=await import(`./loader-D4Fuki1u.js`),u;try{u=await l(a,s)}finally{c&&await Hj(a,c)}if(!u.ok)return{stdout:``,stderr:`plugin validate: REJECTED\n${Qj(u.diagnostics)}\n`,exitCode:1};let{plugin:d}=u,f=d.mcp.servers.filter(e=>e.status===`supported`).length,p=[`plugin validate: OK — "${d.manifest.name}"${d.manifest.version?` v${d.manifest.version}`:``}`,` skills: ${d.skills.length}`,` mcp servers: ${f} supported, ${d.mcp.servers.length-f} skipped (mcp.json ${d.mcp.status})`];return u.diagnostics.length>0&&p.push(`Diagnostics:`,Qj(u.diagnostics)),Nj(p.join(`
1706
1701
  `)+`
1707
- `)}async function yM(e,t){if(w(e))return nM(`usage: plugin remove <name>
1708
- `);let n=rM(`remove`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return K(`plugin remove: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i,deleteInstalledPlugin:a}=await import(`./store-Mw1jky9b.js`),o=await i(r,t.fs);if(!o)return K(`plugin remove: no installed plugin named "${r}"`);let s=0;if(o.mcpServerNames&&o.mcpServerNames.length>0){let{deleteServer:e,getServer:n}=await import(`./store-wiEGJ_43.js`).then(e=>e.r);for(let i of o.mcpServerNames)(await n(i,t.fs))?.pluginOrigin===r&&await e(i,t.fs)&&(s+=1)}await a(r,t.fs);let c=o.root.startsWith(`${tM}/`);return c&&await dM(await oM(t),o.root),nM([`Removed agent plugin "${r}"`,` registry: removed`,` mcp servers: ${s} removed`,c?` files: removed (${o.root})`:` files: left in place (${o.root})`].join(`
1702
+ `)}async function Xj(e,t){if(w(e))return Nj(`usage: plugin remove <name>
1703
+ `);let n=Pj(`remove`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return K(`plugin remove: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i,deleteInstalledPlugin:a}=await import(`./store-Mw1jky9b.js`),o=await i(r,t.fs);if(!o)return K(`plugin remove: no installed plugin named "${r}"`);let s=0;if(o.mcpServerNames&&o.mcpServerNames.length>0){let{deleteServer:e,getServer:n}=await import(`./store-wiEGJ_43.js`).then(e=>e.r);for(let i of o.mcpServerNames)(await n(i,t.fs))?.pluginOrigin===r&&await e(i,t.fs)&&(s+=1)}await a(r,t.fs);let c=o.root.startsWith(`${Mj}/`);return c&&await Hj(await Lj(t),o.root),Nj([`Removed agent plugin "${r}"`,` registry: removed`,` mcp servers: ${s} removed`,c?` files: removed (${o.root})`:` files: left in place (${o.root})`].join(`
1709
1704
  `)+`
1710
- `)}function bM(e,t){let n=t.startsWith(`/`)?t:`${e.replace(/\/$/,``)}/${t}`,r=[];for(let e of n.split(`/`))e!==``&&e!==`.`&&(e===`..`?r.pop():r.push(e));return`/${r.join(`/`)}`}function xM(e){return e.map(e=>` ${e.level===`error`?`error`:`warn `} [${e.component}] ${e.message}`).join(`
1711
- `)}const SM=[`pid`,`ppid`,`kind`,`stat`,`start`,`scoop`,`command`],CM=[`pid`,`ppid`,`stat`,`start`,`scoop`,`command`],wM={running:`R`,pending:`S`,exited:`Z`,killed:`K`},TM=[`-a`,`-A`,`-e`,`--all`,`-T`,`--tree`],EM=[`-o`,`--columns`];function DM(e={}){return S(`ps`,async t=>{if(w(t,{valueFlags:EM}))return VM();let n=e.processManager??OM();if(!n)return{stdout:``,stderr:`ps: no process manager available in this runtime
1712
- `,exitCode:1};let r=C(t,{bool:TM,value:EM});if(`error`in r)return{stdout:``,stderr:`ps: ${r.error}\n`,exitCode:r.error.startsWith(`unknown flag:`)?1:2};if(r.positionals.length>0)return{stdout:``,stderr:`ps: unrecognized argument '${r.positionals[0]}'\n`,exitCode:2};let i=CM,a=r.bools.has(`-T`)||r.bools.has(`--tree`),o=r.bools.has(`-a`)||r.bools.has(`-A`)||r.bools.has(`-e`)||r.bools.has(`--all`),s=r.values.get(`-o`)??r.values.get(`--columns`);if(s!==void 0){let e=kM(s);if(e instanceof Error)return{stdout:``,stderr:`ps: ${e.message}\n`,exitCode:2};i=e}let c=n.list().sort((e,t)=>e.pid-t.pid),l=o?c:c.filter(e=>e.status===`running`||e.status===`pending`),u=a?BM(l):l.map(e=>({proc:e,depth:0})),d=AM(i,u.map(({proc:e})=>e),s!==void 0),f=u.map(({proc:e,depth:t})=>NM(e,i,t,a,d));return{stdout:[jM(i,d),...f].join(`
1705
+ `)}function Zj(e,t){let n=t.startsWith(`/`)?t:`${e.replace(/\/$/,``)}/${t}`,r=[];for(let e of n.split(`/`))e!==``&&e!==`.`&&(e===`..`?r.pop():r.push(e));return`/${r.join(`/`)}`}function Qj(e){return e.map(e=>` ${e.level===`error`?`error`:`warn `} [${e.component}] ${e.message}`).join(`
1706
+ `)}const $j=[`pid`,`ppid`,`kind`,`stat`,`start`,`scoop`,`command`],eM=[`pid`,`ppid`,`stat`,`start`,`scoop`,`command`],tM={running:`R`,pending:`S`,exited:`Z`,killed:`K`},nM=[`-a`,`-A`,`-e`,`--all`,`-T`,`--tree`],rM=[`-o`,`--columns`];function iM(e={}){return S(`ps`,async t=>{if(w(t,{valueFlags:rM}))return vM();let n=e.processManager??aM();if(!n)return{stdout:``,stderr:`ps: no process manager available in this runtime
1707
+ `,exitCode:1};let r=C(t,{bool:nM,value:rM});if(`error`in r)return{stdout:``,stderr:`ps: ${r.error}\n`,exitCode:r.error.startsWith(`unknown flag:`)?1:2};if(r.positionals.length>0)return{stdout:``,stderr:`ps: unrecognized argument '${r.positionals[0]}'\n`,exitCode:2};let i=eM,a=r.bools.has(`-T`)||r.bools.has(`--tree`),o=r.bools.has(`-a`)||r.bools.has(`-A`)||r.bools.has(`-e`)||r.bools.has(`--all`),s=r.values.get(`-o`)??r.values.get(`--columns`);if(s!==void 0){let e=oM(s);if(e instanceof Error)return{stdout:``,stderr:`ps: ${e.message}\n`,exitCode:2};i=e}let c=n.list().sort((e,t)=>e.pid-t.pid),l=o?c:c.filter(e=>e.status===`running`||e.status===`pending`),u=a?_M(l):l.map(e=>({proc:e,depth:0})),d=sM(i,u.map(({proc:e})=>e),s!==void 0),f=u.map(({proc:e,depth:t})=>uM(e,i,t,a,d));return{stdout:[cM(i,d),...f].join(`
1713
1708
  `)+`
1714
- `,stderr:``,exitCode:0}})}function OM(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function kM(e){let t=e.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);if(t.length===0)return Error(`-o requires at least one column`);let n=[];for(let e of t){if(!SM.includes(e))return Error(`unknown column '${e}'; supported: ${SM.join(`, `)}`);n.push(e)}return n}function AM(e,t,n){if(!(n&&e.includes(`scoop`)))return{full:!1,width:10};let r=5;for(let e of t)r=Math.max(r,IM(e).length);return{full:!0,width:r}}function jM(e,t){return e.map(e=>MM(e,t)).join(` `)}function MM(e,t){switch(e){case`pid`:return`PID`.padStart(5);case`ppid`:return`PPID`.padStart(5);case`kind`:return`KIND`.padEnd(10);case`stat`:return`STAT`;case`start`:return`START`;case`scoop`:return`SCOOP`.padEnd(t.width);case`command`:return`COMMAND`}}function NM(e,t,n,r,i){return t.map(t=>PM(e,t,n,r,i)).join(` `)}function PM(e,t,n,r,i){switch(t){case`pid`:return String(e.pid).padStart(5);case`ppid`:return String(e.ppid).padStart(5);case`kind`:return e.kind.padEnd(10);case`stat`:return wM[e.status];case`start`:return FM(e.startedAt);case`scoop`:return LM(e,i);case`command`:return RM(e,n,r)}}function FM(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}function IM(e){return e.owner.kind===`cone`?`cone`:e.owner.kind===`system`?`system`:e.owner.kind===`jshd`?`jshd`:e.owner.scoopJid??`scoop`}function LM(e,t){let n=IM(e);return(t.full?n:n.slice(0,t.width)).padEnd(t.width)}function RM(e,t,n){let r=n&&t>0?` `.repeat(t-1)+`└─ `:``,i=e.argv.length===0?`[${e.kind}]`:e.argv.map(zM).join(` `);return r+(i.length>80?i.slice(0,79)+`…`:i)}function zM(e){return e===``?`''`:/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:e.includes(`"`)&&!e.includes(`'`)?`'${e}'`:`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`}function BM(e){let t=new Map;for(let n of e)t.set(n.pid,n);let n=new Map,r=[];for(let i of e)if(t.has(i.ppid)){let e=n.get(i.ppid)??[];e.push(i),n.set(i.ppid,e)}else r.push(i);let i=[],a=new Set,o=(e,t)=>{if(a.has(e.pid))return;a.add(e.pid),i.push({proc:e,depth:t});let r=n.get(e.pid)??[];for(let e of r.sort((e,t)=>e.pid-t.pid))o(e,t+1)};for(let e of r.sort((e,t)=>e.pid-t.pid))o(e,0);return i}function VM(){return{stdout:`Usage: ps [-a] [-T] [-o col[,col…]]
1709
+ `,stderr:``,exitCode:0}})}function aM(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function oM(e){let t=e.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);if(t.length===0)return Error(`-o requires at least one column`);let n=[];for(let e of t){if(!$j.includes(e))return Error(`unknown column '${e}'; supported: ${$j.join(`, `)}`);n.push(e)}return n}function sM(e,t,n){if(!(n&&e.includes(`scoop`)))return{full:!1,width:10};let r=5;for(let e of t)r=Math.max(r,pM(e).length);return{full:!0,width:r}}function cM(e,t){return e.map(e=>lM(e,t)).join(` `)}function lM(e,t){switch(e){case`pid`:return`PID`.padStart(5);case`ppid`:return`PPID`.padStart(5);case`kind`:return`KIND`.padEnd(10);case`stat`:return`STAT`;case`start`:return`START`;case`scoop`:return`SCOOP`.padEnd(t.width);case`command`:return`COMMAND`}}function uM(e,t,n,r,i){return t.map(t=>dM(e,t,n,r,i)).join(` `)}function dM(e,t,n,r,i){switch(t){case`pid`:return String(e.pid).padStart(5);case`ppid`:return String(e.ppid).padStart(5);case`kind`:return e.kind.padEnd(10);case`stat`:return tM[e.status];case`start`:return fM(e.startedAt);case`scoop`:return mM(e,i);case`command`:return hM(e,n,r)}}function fM(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}function pM(e){return e.owner.kind===`cone`?`cone`:e.owner.kind===`system`?`system`:e.owner.kind===`jshd`?`jshd`:e.owner.scoopJid??`scoop`}function mM(e,t){let n=pM(e);return(t.full?n:n.slice(0,t.width)).padEnd(t.width)}function hM(e,t,n){let r=n&&t>0?` `.repeat(t-1)+`└─ `:``,i=e.argv.length===0?`[${e.kind}]`:e.argv.map(gM).join(` `);return r+(i.length>80?i.slice(0,79)+`…`:i)}function gM(e){return e===``?`''`:/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:e.includes(`"`)&&!e.includes(`'`)?`'${e}'`:`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`}function _M(e){let t=new Map;for(let n of e)t.set(n.pid,n);let n=new Map,r=[];for(let i of e)if(t.has(i.ppid)){let e=n.get(i.ppid)??[];e.push(i),n.set(i.ppid,e)}else r.push(i);let i=[],a=new Set,o=(e,t)=>{if(a.has(e.pid))return;a.add(e.pid),i.push({proc:e,depth:t});let r=n.get(e.pid)??[];for(let e of r.sort((e,t)=>e.pid-t.pid))o(e,t+1)};for(let e of r.sort((e,t)=>e.pid-t.pid))o(e,0);return i}function vM(){return{stdout:`Usage: ps [-a] [-T] [-o col[,col…]]
1715
1710
 
1716
1711
  List processes tracked by the kernel.
1717
1712
 
@@ -1744,9 +1739,9 @@ Examples:
1744
1739
  ps -a -T full tree
1745
1740
  ps -o pid,kind,stat just three columns
1746
1741
  ps -o scoop,stat,pid full scoop jid, with STAT and PID
1747
- `,stderr:``,exitCode:0}}const HM=new Set([`dev`,`proc`,`lib`,`bin`,`usr`,`etc`,`home`,`tmp`]);async function UM(e,t=HM){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 WM(e,t){let n=e;if(typeof n.listMountPoints!=`function`)return[];let r=e=>{for(let n of t)if(e===n||e.startsWith(n===`/`?`/`:n+`/`)||n.startsWith(e+`/`))return!0;return!1},i=[];for(let e of n.listMountPoints())e.kind!==`proc`&&r(e.path)&&i.push({path:e.path,kind:e.kind});return i}function GM(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`slicc-fs`}catch{}}function KM(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},fromDir:e.cwd}}async function qM(e,t){try{let n=await e.readFile(`${t}/package.json`),r=JSON.parse(n);return typeof r.version==`string`?r.version:null}catch{return null}}function JM(e,t){return`installed pyodide ${e} is not the supported version ${t}: run \`ipk uninstall pyodide\` then \`ipk add pyodide@${t}\``}function YM(){return{stdout:`usage: python3 [-c code | script.py] [args...]
1748
- `,stderr:``,exitCode:0}}function XM(){return{stdout:`Python 3.14 (Pyodide)
1749
- `,stderr:``,exitCode:0}}async function ZM(e,t,n){if(t[0]===`-c`){if(!t[1])return{kind:`result`,result:{stdout:``,stderr:`${e}: option requires an argument -- 'c'\n`,exitCode:2}};let n=t[1];return{kind:`ok`,code:n,filename:`-c`,sysArgv:[`-c`,...t.slice(2)],procArgv:[e,`-c`,n,...t.slice(2)]}}if(t.length>0&&!t[0].startsWith(`-`)){let r=t[0],i=n.fs.resolvePath(n.cwd,r);return await n.fs.exists(i)?{kind:`ok`,code:await n.fs.readFile(i),filename:r,sysArgv:[r,...t.slice(1)],procArgv:[e,r,...t.slice(1)]}:{kind:`result`,result:{stdout:``,stderr:`${e}: can't open file '${r}': [Errno 2] No such file or directory\n`,exitCode:2}}}return P(n.stdin).trim().length>0?{kind:`ok`,code:P(n.stdin),filename:`<stdin>`,sysArgv:[`<stdin>`],procArgv:[e]}:t.length>0?{kind:`result`,result:{stdout:``,stderr:`${e}: unsupported option '${t[0]}'\n`,exitCode:2}}:{kind:`result`,result:{stdout:``,stderr:`${e}: no input provided (use -c CODE, script path, or stdin)\n`,exitCode:2}}}async function QM(e){let t=KM(e),n=await Wr(t);if(!n)return{kind:`result`,result:{stdout:``,stderr:`${Ur}\n`,exitCode:1}};let r=await qM(t.reader,n);return r?r===Nr?{kind:`ok`,assetRoot:n}:{kind:`result`,result:{stdout:``,stderr:`${JM(r,Nr)}\n`,exitCode:1}}:{kind:`result`,result:{stdout:``,stderr:`${Ur}\n`,exitCode:1}}}const $M=new Set(`EsSuBIPqObdR`);function eN(e){let t=0;for(;t<e.length&&/^-[A-Za-z]+$/.test(e[t]);){let n=e[t].slice(1);if(n===`W`||n===`X`){t+=2;continue}if(![...n].every(e=>$M.has(e)))break;t++}return t===0?e:e.slice(t)}function tN(e,t={}){return S(e,async(n,r)=>{let i=eN(n),a=i[0];if(a===`--help`||a===`-h`)return YM();if(a===`--version`||a===`-V`)return XM();let o=await ZM(e,i,r);if(o.kind===`result`)return o.result;let{code:s,filename:c,sysArgv:l,procArgv:u}=o,d=await UM(r.fs),f=WM(r.fs,d),p=t.buildProcessConfig?.(r.env),m=p?.processManager??nN(),h=p?.owner??{kind:`system`},g=p?.getParentPid?.(),_=t.realmFactory??Zr(),v=t.pyodideIndexURL??di(),ee=t.pyodideAssetRoot;if(!ee&&v===void 0){let e=await QM(r);if(e.kind===`result`)return e.result;ee=e.assetRoot}let te=c===`<stdin>`?``:P(r.stdin),ne=GM();return m?si({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:Xr()}):iN({realmFactory:_,owner:h,code:s,argv:u,realmArgv:l,env:Object.fromEntries(r.env.entries()),cwd:r.cwd,filename:c,ctx:r,stdin:te,pyodideIndexURL:v,pyodideAssetRoot:ee,pyodideMountDirs:d,opfsMountDbName:ne,mountPoints:f})})}function nN(){let e=globalThis.__slicc_pm;return e&&typeof e==`object`&&typeof e.spawn==`function`&&typeof e.onSignal==`function`?e:null}let rN=null;async function iN(e){if(!rN){let{ProcessManager:e}=await import(`./process-manager-BkhAohXT.js`).then(e=>e.n);rN=new e}return si({pm:rN,realmFactory:e.realmFactory,owner:e.owner,kind:`py`,code:e.code,argv:e.argv,realmArgv:e.realmArgv,env:e.env,cwd:e.cwd,filename:e.filename,ctx:e.ctx,stdin:e.stdin,pyodideIndexURL:e.pyodideIndexURL,pyodideAssetRoot:e.pyodideAssetRoot,pyodideMountDirs:e.pyodideMountDirs,mountPoints:e.mountPoints,opfsMountDbName:e.opfsMountDbName,procKind:`py`,syncFsBridgeEnabled:Xr()})}function aN(){return S(`rg`,async(e,t)=>{let{runRg:n}=await import(`./run-DniTiLYn.js`);return n(e,t)})}function oN(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 sN(){return null}function cN(e){let t={dryRun:!1,delete:!1,verbose:!1},n=[];for(let r of e)if(r===`--dry-run`||r===`-n`)t.dryRun=!0;else if(r===`--delete`)t.delete=!0;else if(r===`--verbose`||r===`-v`)t.verbose=!0;else if(r===`--help`||r===`-h`)return{error:`__help__`};else if(r.startsWith(`-`))return{error:`Unknown flag: ${r}`};else n.push(r);if(n.length!==2)return{error:`Expected exactly 2 arguments: <source> <dest>`};let[r,i]=n,a=lN(r),o=lN(i);return a&&o?{error:`Cannot sync between two remote paths — one side must be local`}:!a&&!o?{error:`One argument must be a remote path (runtime-id:/path)`}:o?{direction:`push`,localPath:r,remotePath:o.path,runtimeId:o.runtimeId,...t}:{direction:`pull`,localPath:i,remotePath:a.path,runtimeId:a.runtimeId,...t}}function lN(e){let t=e.indexOf(`:`);if(t<=0)return null;let n=e.slice(0,t),r=e.slice(t+1);return r.startsWith(`/`)?{runtimeId:n,path:r}:null}function uN(){return{stdout:`rsync — sync files between local VFS and a remote tray runtime
1742
+ `,stderr:``,exitCode:0}}const yM=new Set([`dev`,`proc`,`lib`,`bin`,`usr`,`etc`,`home`,`tmp`]);async function bM(e,t=yM){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 xM(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 SM(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`slicc-fs`}catch{}}function CM(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 wM(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 TM(e,t){return`installed pyodide ${e} is not the supported version ${t}: run \`ipk uninstall pyodide\` then \`ipk add pyodide@${t}\``}function EM(){return{stdout:`usage: python3 [-c code | script.py] [args...]
1743
+ `,stderr:``,exitCode:0}}function DM(){return{stdout:`Python 3.14 (Pyodide)
1744
+ `,stderr:``,exitCode:0}}async function OM(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 kM(e){let t=CM(e),n=await Vr(t);if(!n)return{kind:`result`,result:{stdout:``,stderr:`${Br}\n`,exitCode:1}};let r=await wM(t.reader,n);return r?r===Ar?{kind:`ok`,assetRoot:n}:{kind:`result`,result:{stdout:``,stderr:`${TM(r,Ar)}\n`,exitCode:1}}:{kind:`result`,result:{stdout:``,stderr:`${Br}\n`,exitCode:1}}}const AM=new Set(`EsSuBIPqObdR`);function jM(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=>AM.has(e)))break;t++}return t===0?e:e.slice(t)}function MM(e,t={}){return S(e,async(n,r)=>{let i=jM(n),a=i[0];if(a===`--help`||a===`-h`)return EM();if(a===`--version`||a===`-V`)return DM();let o=await OM(e,i,r);if(o.kind===`result`)return o.result;let{code:s,filename:c,sysArgv:l,procArgv:u}=o,d=await bM(r.fs),f=xM(r.fs,d),p=t.buildProcessConfig?.(r.env),m=p?.processManager??NM(),h=p?.owner??{kind:`system`},g=p?.getParentPid?.(),_=t.realmFactory??Jr(),v=t.pyodideIndexURL??ci(),ee=t.pyodideAssetRoot;if(!ee&&v===void 0){let e=await kM(r);if(e.kind===`result`)return e.result;ee=e.assetRoot}let te=c===`<stdin>`?``:P(r.stdin),ne=SM();return m?ii({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:qr()}):FM({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 NM(){let e=globalThis.__slicc_pm;return e&&typeof e==`object`&&typeof e.spawn==`function`&&typeof e.onSignal==`function`?e:null}let PM=null;async function FM(e){if(!PM){let{ProcessManager:e}=await import(`./process-manager-BkhAohXT.js`).then(e=>e.n);PM=new e}return ii({pm:PM,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:qr()})}function IM(){return S(`rg`,async(e,t)=>{let{runRg:n}=await import(`./run-DniTiLYn.js`);return n(e,t)})}function LM(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 RM(){return null}function zM(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=BM(r),o=BM(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 BM(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 VM(){return{stdout:`rsync — sync files between local VFS and a remote tray runtime
1750
1745
 
1751
1746
  Usage:
1752
1747
  rsync [flags] <local-path> <runtime-id>:<remote-path> # push
@@ -1762,21 +1757,21 @@ Examples:
1762
1757
  rsync /workspace follower-abc123:/workspace
1763
1758
  rsync --delete /shared leader:/shared
1764
1759
  rsync follower-abc123:/workspace/project /workspace/project
1765
- `,stderr:``,exitCode:0}}async function dN(e,t){if(!await e.exists(t))return[];let n=[];for await(let r of e.walk(t)){let i=r.slice(t.length).replace(/^\//,``);if(!i)continue;let a=await e.stat(r);n.push({path:i,size:a.size,mtimeMs:a.mtime})}return n}async function fN(e,t,n){let r=(await e(t,{op:`walk`,path:n}))[0];if(!r.ok){if(r.code===`ENOENT`)return[];throw Error(`Remote walk failed: ${r.error}`)}if(r.data.type!==`paths`)throw Error(`Unexpected walk response type`);let i=r.data.paths,a=[];for(let r of i){let i=r.slice(n.length).replace(/^\//,``);if(!i)continue;let o=(await e(t,{op:`stat`,path:r}))[0];o.ok&&o.data.type===`stat`&&a.push({path:i,size:o.data.stat.size,mtimeMs:o.data.stat.mtime})}return a}async function pN(e,t,n){let r=await e(t,{op:`readFile`,path:n,encoding:`binary`}),i=``;for(let e of r){if(!e.ok)throw Error(`Remote read failed: ${e.error}`);e.data.type===`file`&&(i+=e.data.content)}return i}async function mN(e,t,n){let r=await e(t,{op:`mkdir`,path:n,recursive:!0});if(!r[0].ok)throw Error(`Remote mkdir failed: ${r[0].error}`)}function hN(e){let t=e.lastIndexOf(`/`);return t<=0?`/`:e.slice(0,t)}async function gN(e,n,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=oN(await dN(e,a),await fN(n,s,o),{delete:r.delete});if(c||l){for(let e of u.toAdd)i.push(`+ ${e}`);for(let e of u.toUpdate)i.push(`~ ${e}`);for(let e of u.toDelete)i.push(`- ${e}`);if(c)for(let e of u.toSkip)i.push(` ${e} (up to date)`)}let d=u.toAdd.length+u.toUpdate.length+u.toDelete.length;if(l)return i.push(`\n(dry run) ${d} file(s) would be transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1760
+ `,stderr:``,exitCode:0}}async function HM(e,t){if(!await e.exists(t))return[];let n=[];for await(let r of e.walk(t)){let i=r.slice(t.length).replace(/^\//,``);if(!i)continue;let a=await e.stat(r);n.push({path:i,size:a.size,mtimeMs:a.mtime})}return n}async function UM(e,t,n){let r=(await e(t,{op:`walk`,path:n}))[0];if(!r.ok){if(r.code===`ENOENT`)return[];throw Error(`Remote walk failed: ${r.error}`)}if(r.data.type!==`paths`)throw Error(`Unexpected walk response type`);let i=r.data.paths,a=[];for(let r of i){let i=r.slice(n.length).replace(/^\//,``);if(!i)continue;let o=(await e(t,{op:`stat`,path:r}))[0];o.ok&&o.data.type===`stat`&&a.push({path:i,size:o.data.stat.size,mtimeMs:o.data.stat.mtime})}return a}async function WM(e,t,n){let r=await e(t,{op:`readFile`,path:n,encoding:`binary`}),i=``;for(let e of r){if(!e.ok)throw Error(`Remote read failed: ${e.error}`);e.data.type===`file`&&(i+=e.data.content)}return i}async function GM(e,t,n){let r=await e(t,{op:`mkdir`,path:n,recursive:!0});if(!r[0].ok)throw Error(`Remote mkdir failed: ${r[0].error}`)}function KM(e){let t=e.lastIndexOf(`/`);return t<=0?`/`:e.slice(0,t)}async function qM(e,n,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=LM(await HM(e,a),await UM(n,s,o),{delete:r.delete});if(c||l){for(let e of u.toAdd)i.push(`+ ${e}`);for(let e of u.toUpdate)i.push(`~ ${e}`);for(let e of u.toDelete)i.push(`- ${e}`);if(c)for(let e of u.toSkip)i.push(` ${e} (up to date)`)}let d=u.toAdd.length+u.toUpdate.length+u.toDelete.length;if(l)return i.push(`\n(dry run) ${d} file(s) would be transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1766
1761
  `)+`
1767
- `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let c=a+`/`+r,l=o+`/`+r;await mN(n,s,hN(l));let u=await e.readFile(c,{encoding:`binary`}),d=await n(s,{op:`writeFile`,path:l,content:t(u),encoding:`base64`});if(!d[0].ok)return{stdout:i.join(`
1762
+ `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let c=a+`/`+r,l=o+`/`+r;await GM(n,s,KM(l));let u=await e.readFile(c,{encoding:`binary`}),d=await n(s,{op:`writeFile`,path:l,content:t(u),encoding:`base64`});if(!d[0].ok)return{stdout:i.join(`
1768
1763
  `)+`
1769
1764
  `,stderr:`Error writing ${l}: ${d[0].error}\n`,exitCode:1}}for(let e of u.toDelete){let t=o+`/`+e,r=await n(s,{op:`rm`,path:t});if(!r[0].ok)return{stdout:i.join(`
1770
1765
  `)+`
1771
1766
  `,stderr:`Error deleting ${t}: ${r[0].error}\n`,exitCode:1}}return i.push(`${d} file(s) transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1772
1767
  `)+`
1773
- `,stderr:``,exitCode:0}}async function _N(e,t,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=oN(await fN(t,s,o),await dN(e,a),{delete:r.delete});if(c||l){for(let e of u.toAdd)i.push(`+ ${e}`);for(let e of u.toUpdate)i.push(`~ ${e}`);for(let e of u.toDelete)i.push(`- ${e}`);if(c)for(let e of u.toSkip)i.push(` ${e} (up to date)`)}let d=u.toAdd.length+u.toUpdate.length+u.toDelete.length;if(l)return i.push(`\n(dry run) ${d} file(s) would be transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1768
+ `,stderr:``,exitCode:0}}async function JM(e,t,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=LM(await UM(t,s,o),await HM(e,a),{delete:r.delete});if(c||l){for(let e of u.toAdd)i.push(`+ ${e}`);for(let e of u.toUpdate)i.push(`~ ${e}`);for(let e of u.toDelete)i.push(`- ${e}`);if(c)for(let e of u.toSkip)i.push(` ${e} (up to date)`)}let d=u.toAdd.length+u.toUpdate.length+u.toDelete.length;if(l)return i.push(`\n(dry run) ${d} file(s) would be transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1774
1769
  `)+`
1775
- `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let i=o+`/`+r,c=a+`/`+r,l=hN(c);await e.exists(l)||await e.mkdir(l,{recursive:!0});let u=await pN(t,s,i),d=n(u);await e.writeFile(c,d)}for(let t of u.toDelete){let n=a+`/`+t;await e.rm(n)}return i.push(`${d} file(s) transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1770
+ `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let i=o+`/`+r,c=a+`/`+r,l=KM(c);await e.exists(l)||await e.mkdir(l,{recursive:!0});let u=await WM(t,s,i),d=n(u);await e.writeFile(c,d)}for(let t of u.toDelete){let n=a+`/`+t;await e.rm(n)}return i.push(`${d} file(s) transferred, ${u.toSkip.length} up to date`),{stdout:i.join(`
1776
1771
  `)+`
1777
- `,stderr:``,exitCode:0}}function vN(e={}){let t=e.fs,n=e.getSendFsRequest??sN;return S(`rsync`,async e=>{if(e.includes(`--help`)||e.includes(`-h`)||e.length===0)return uN();if(!t)return{stdout:``,stderr:`rsync: no filesystem available
1772
+ `,stderr:``,exitCode:0}}function YM(e={}){let t=e.fs,n=e.getSendFsRequest??RM;return S(`rsync`,async e=>{if(e.includes(`--help`)||e.includes(`-h`)||e.length===0)return VM();if(!t)return{stdout:``,stderr:`rsync: no filesystem available
1778
1773
  `,exitCode:1};let r=n();if(!r)return{stdout:``,stderr:`rsync: not connected to a tray — rsync requires a tray connection
1779
- `,exitCode:1};let i=cN(e);if(`error`in i)return i.error===`__help__`?uN():{stdout:``,stderr:`rsync: ${i.error}\n`,exitCode:1};try{return i.direction===`push`?await gN(t,r,i):await _N(t,r,i)}catch(e){return{stdout:``,stderr:`rsync: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function yN(){return{stdout:`usage: say [-v voice] [-r rate] [-l lang] [-o file] [--list] <text>
1774
+ `,exitCode:1};let i=zM(e);if(`error`in i)return i.error===`__help__`?VM():{stdout:``,stderr:`rsync: ${i.error}\n`,exitCode:1};try{return i.direction===`push`?await qM(t,r,i):await JM(t,r,i)}catch(e){return{stdout:``,stderr:`rsync: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function XM(){return{stdout:`usage: say [-v voice] [-r rate] [-l lang] [-o file] [--list] <text>
1780
1775
  say --status | --warmup
1781
1776
 
1782
1777
  Speaks the given text. Uses on-device Kokoro voices when the model
@@ -1795,14 +1790,14 @@ Examples:
1795
1790
  [web speech] otherwise); kokoro voices lead when ready
1796
1791
  --status Show the on-device voice state (downloading/ready + ETA)
1797
1792
  --warmup Stage + start the on-device voice download in the background
1798
- `,stderr:``,exitCode:0}}function bN(e){switch(e.state){case`ready`:return`voice engine: ready
1793
+ `,stderr:``,exitCode:0}}function ZM(e){switch(e.state){case`ready`:return`voice engine: ready
1799
1794
  `;case`failed`:return`voice engine: failed (re-run say --warmup to retry)
1800
1795
  `;case`idle`:return`voice engine: not downloaded (run say --warmup)
1801
- `;case`loading`:{let t=e=>(e/1024/1024).toFixed(1);return`voice engine: downloading${e.loaded!=null&&e.total?` ${t(e.loaded)}/${t(e.total)} MB`:``}${e.etaSeconds!=null&&Number.isFinite(e.etaSeconds)?` · ready in ~${Math.max(1,Math.round(e.etaSeconds))}s`:``}\n`}}}function q(e){return{stdout:``,stderr:`say: ${e}\n`,exitCode:1}}function xN(e){return e instanceof Error?e.message:String(e)}let SN=!1,CN=null;function wN(){return SN?Promise.resolve(speechSynthesis.getVoices()):(CN||=new Promise(e=>{let t=speechSynthesis.getVoices();if(t.length>0){SN=!0,e(t);return}let n=()=>{SN=!0,speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,n),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,n),SN=!0,e(speechSynthesis.getVoices())},1e3)}),CN)}const TN={"-v":`a voice name`,"-r":`a rate value`,"-l":`a language tag`,"-o":`an output file path`,"--out":`an output file path`};function EN(e){return e!=null&&(!e.startsWith(`-`)||e===`-`)}function DN(e,t,n){switch(t){case`-v`:return e.voiceName=n,null;case`-l`:return e.lang=n,null;case`-o`:case`--out`:return e.outFile=n,null;case`-r`:{let t=parseFloat(n);return Number.isNaN(t)||t<.1||t>10?`rate must be between 0.1 and 10`:(e.rate=t,null)}default:return`unknown option: ${t}`}}function ON(e){let t={voiceName:null,rate:1,lang:null,outFile:null,text:``},n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i in TN){let n=EN(r+1<e.length?e[r+1]:void 0)?e[++r]:null;if(n==null)return q(`${i} requires ${TN[i]}`);let a=DN(t,i,n);if(a)return q(a)}else if(i.startsWith(`-`)&&i!==`--list`)return q(`unknown option: ${i}`);else i.startsWith(`-`)||n.push(i)}return t.text=n.join(` `),t}function kN(e){let t=e.onDevice?`[kokoro]`:`[web speech]`;return`${e.name} (${e.lang}) ${t}${e.default?` [default]`:``}`}async function AN(e){if(e.local){let{kokoroVoicesIfReady:e}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),t=e().map(e=>kN({name:e.id,lang:e.lang,onDevice:e.onDevice})),n=(await wN()).map(e=>kN({name:e.name,lang:e.lang,onDevice:!1,default:e.default}));return{stdout:[...t,...n].join(`
1796
+ `;case`loading`:{let t=e=>(e/1024/1024).toFixed(1);return`voice engine: downloading${e.loaded!=null&&e.total?` ${t(e.loaded)}/${t(e.total)} MB`:``}${e.etaSeconds!=null&&Number.isFinite(e.etaSeconds)?` · ready in ~${Math.max(1,Math.round(e.etaSeconds))}s`:``}\n`}}}function q(e){return{stdout:``,stderr:`say: ${e}\n`,exitCode:1}}function QM(e){return e instanceof Error?e.message:String(e)}let $M=!1,eN=null;function tN(){return $M?Promise.resolve(speechSynthesis.getVoices()):(eN||=new Promise(e=>{let t=speechSynthesis.getVoices();if(t.length>0){$M=!0,e(t);return}let n=()=>{$M=!0,speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,n),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,n),$M=!0,e(speechSynthesis.getVoices())},1e3)}),eN)}const nN={"-v":`a voice name`,"-r":`a rate value`,"-l":`a language tag`,"-o":`an output file path`,"--out":`an output file path`};function rN(e){return e!=null&&(!e.startsWith(`-`)||e===`-`)}function iN(e,t,n){switch(t){case`-v`:return e.voiceName=n,null;case`-l`:return e.lang=n,null;case`-o`:case`--out`:return e.outFile=n,null;case`-r`:{let t=parseFloat(n);return Number.isNaN(t)||t<.1||t>10?`rate must be between 0.1 and 10`:(e.rate=t,null)}default:return`unknown option: ${t}`}}function aN(e){let t={voiceName:null,rate:1,lang:null,outFile:null,text:``},n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i in nN){let n=rN(r+1<e.length?e[r+1]:void 0)?e[++r]:null;if(n==null)return q(`${i} requires ${nN[i]}`);let a=iN(t,i,n);if(a)return q(a)}else if(i.startsWith(`-`)&&i!==`--list`)return q(`unknown option: ${i}`);else i.startsWith(`-`)||n.push(i)}return t.text=n.join(` `),t}function oN(e){let t=e.onDevice?`[kokoro]`:`[web speech]`;return`${e.name} (${e.lang}) ${t}${e.default?` [default]`:``}`}async function sN(e){if(e.local){let{kokoroVoicesIfReady:e}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),t=e().map(e=>oN({name:e.id,lang:e.lang,onDevice:e.onDevice})),n=(await tN()).map(e=>oN({name:e.name,lang:e.lang,onDevice:!1,default:e.default}));return{stdout:[...t,...n].join(`
1802
1797
  `)+`
1803
- `,stderr:``,exitCode:0}}try{return{stdout:(await e.panelRpc.call(`list-voices`,void 0)).voices.map(e=>kN(e)).join(`
1798
+ `,stderr:``,exitCode:0}}try{return{stdout:(await e.panelRpc.call(`list-voices`,void 0)).voices.map(e=>oN(e)).join(`
1804
1799
  `)+`
1805
- `,stderr:``,exitCode:0}}catch(e){return q(xN(e))}}async function jN(e){if(!e.local)return(await e.panelRpc.call(`list-voices`,void 0)).voices;let{kokoroVoicesIfReady:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),n=t().map(e=>({name:e.id})),r=(await wN()).map(e=>({name:e.name}));return[...n,...r]}async function MN(e,t){let n=(await jN(e)).find(e=>e.name.toLowerCase().includes(t.toLowerCase()));return n?{resolved:n.name}:{error:q(`voice "${t}" not found. Use --list to see available voices.`)}}async function NN(e,t){try{if(e.local){let{kokoroStatus:e,kokoroWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:bN(t?n():e()),stderr:``,exitCode:0}}return{stdout:bN(t?await e.panelRpc.call(`speak-warmup`,void 0):await e.panelRpc.call(`speak-status`,void 0)),stderr:``,exitCode:0}}catch(e){return q(xN(e))}}async function PN(e,t){return t.includes(`--list`)?AN(e):t.includes(`--status`)?NN(e,!1):t.includes(`--warmup`)?NN(e,!0):null}async function FN(e){try{let{speak:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return await t(e),{stdout:``,stderr:``,exitCode:0}}catch(e){return q(`speech synthesis error: ${xN(e)}`)}}async function IN(e,t){try{return await e.panelRpc.call(`speak-text`,t,{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return q(xN(e))}}async function LN(e){let{synthesizeToWav:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);try{return{bytes:await t(e)}}catch(e){return q(xN(e))}}async function RN(e,t){try{let n=await e.panelRpc.call(`synthesize-to-wav`,{text:t.text,lang:t.lang,...t.voice?{voice:t.voice}:{},rate:t.rate},{timeoutMs:3e5});return{bytes:new Uint8Array(n.bytes)}}catch(e){return q(xN(e))}}async function zN(e,t){return e.local?LN(t):RN(e,t)}async function BN(e,t){let n=await zN(e,t);return`exitCode`in n?n:{...Si(n.bytes),stderr:``,exitCode:0}}async function VN(e,t,n,r){let i=await zN(e,r);if(`exitCode`in i)return i;let a=t.fs.resolvePath(t.cwd,n);try{await t.fs.writeFile(a,i.bytes)}catch(e){return q(`failed to write ${n}: ${xN(e)}`)}return{stdout:`wrote ${Math.max(1,Math.round(i.bytes.byteLength/1024))} KB to ${a}\n`,stderr:``,exitCode:0}}async function HN(e,t,n){let r;if(n.voiceName){let{resolved:t,error:i}=await MN(e,n.voiceName);if(i)return i;r=t}let i={text:n.text,lang:n.lang,voice:r,rate:n.rate};return n.outFile===`-`||!n.outFile&&!rr(t)?BN(e,i):n.outFile?VN(e,t,n.outFile,i):e.local?FN(i):IN(e,i)}function UN(){return S(`say`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return yN();let n={local:typeof window<`u`&&typeof speechSynthesis<`u`,panelRpc:y()};if(!n.local&&!n.panelRpc)return q(`Web Speech API unavailable in this environment`);let r=await PN(n,e);if(r)return r;let i=ON(e);return`exitCode`in i?i:i.text?i.lang?HN(n,t,{...i,lang:i.lang}):q(`-l language tag is required`):yN()})}function WN(){return S(`screencapture`,async(e,t)=>{let{runScreencapture:n}=await import(`./screencapture-run-DXkhPPQJ.js`);return n(e,t)})}const GN=[`--domain`],KN=[`--persist`];function qN(){return`secret — manage secrets for the fetch proxy and mount backends
1800
+ `,stderr:``,exitCode:0}}catch(e){return q(QM(e))}}async function cN(e){if(!e.local)return(await e.panelRpc.call(`list-voices`,void 0)).voices;let{kokoroVoicesIfReady:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),n=t().map(e=>({name:e.id})),r=(await tN()).map(e=>({name:e.name}));return[...n,...r]}async function lN(e,t){let n=(await cN(e)).find(e=>e.name.toLowerCase().includes(t.toLowerCase()));return n?{resolved:n.name}:{error:q(`voice "${t}" not found. Use --list to see available voices.`)}}async function uN(e,t){try{if(e.local){let{kokoroStatus:e,kokoroWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:ZM(t?n():e()),stderr:``,exitCode:0}}return{stdout:ZM(t?await e.panelRpc.call(`speak-warmup`,void 0):await e.panelRpc.call(`speak-status`,void 0)),stderr:``,exitCode:0}}catch(e){return q(QM(e))}}async function dN(e,t){return t.includes(`--list`)?sN(e):t.includes(`--status`)?uN(e,!1):t.includes(`--warmup`)?uN(e,!0):null}async function fN(e){try{let{speak:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return await t(e),{stdout:``,stderr:``,exitCode:0}}catch(e){return q(`speech synthesis error: ${QM(e)}`)}}async function pN(e,t){try{return await e.panelRpc.call(`speak-text`,t,{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return q(QM(e))}}async function mN(e){let{synthesizeToWav:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);try{return{bytes:await t(e)}}catch(e){return q(QM(e))}}async function hN(e,t){try{let n=await e.panelRpc.call(`synthesize-to-wav`,{text:t.text,lang:t.lang,...t.voice?{voice:t.voice}:{},rate:t.rate},{timeoutMs:3e5});return{bytes:new Uint8Array(n.bytes)}}catch(e){return q(QM(e))}}async function gN(e,t){return e.local?mN(t):hN(e,t)}async function _N(e,t){let n=await gN(e,t);return`exitCode`in n?n:{...yi(n.bytes),stderr:``,exitCode:0}}async function vN(e,t,n,r){let i=await gN(e,r);if(`exitCode`in i)return i;let a=t.fs.resolvePath(t.cwd,n);try{await t.fs.writeFile(a,i.bytes)}catch(e){return q(`failed to write ${n}: ${QM(e)}`)}return{stdout:`wrote ${Math.max(1,Math.round(i.bytes.byteLength/1024))} KB to ${a}\n`,stderr:``,exitCode:0}}async function yN(e,t,n){let r;if(n.voiceName){let{resolved:t,error:i}=await lN(e,n.voiceName);if(i)return i;r=t}let i={text:n.text,lang:n.lang,voice:r,rate:n.rate};return n.outFile===`-`||!n.outFile&&!er(t)?_N(e,i):n.outFile?vN(e,t,n.outFile,i):e.local?fN(i):pN(e,i)}function bN(){return S(`say`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return XM();let n={local:typeof window<`u`&&typeof speechSynthesis<`u`,panelRpc:y()};if(!n.local&&!n.panelRpc)return q(`Web Speech API unavailable in this environment`);let r=await dN(n,e);if(r)return r;let i=aN(e);return`exitCode`in i?i:i.text?i.lang?yN(n,t,{...i,lang:i.lang}):q(`-l language tag is required`):XM()})}function xN(){return S(`screencapture`,async(e,t)=>{let{runScreencapture:n}=await import(`./screencapture-run-DXkhPPQJ.js`);return n(e,t)})}const SN=[`--domain`],CN=[`--persist`];function wN(){return`secret — manage secrets for the fetch proxy and mount backends
1806
1801
 
1807
1802
  No approval (session-only, in-memory, never persisted):
1808
1803
  secret set <name> <value> --domain <pat> Set a session secret. Free for a
@@ -1844,23 +1839,23 @@ Examples:
1844
1839
  secret peek OPENAI_KEY
1845
1840
  secret set GITHUB_TOKEN ghp_… --domain "api.github.com" --persist # prompts
1846
1841
  secret scope GITHUB_TOKEN --domain "api.github.com,*.github.com" # prompts
1847
- `}function JN(e){if(e===void 0||e.startsWith(`-`))return null;let t=e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return t.length===0?null:t}function YN(e){return{stdout:``,stderr:`secret: ${e}\n`,exitCode:1}}const XN={persist:`persist secret`,scope:`edit secret scope`,value:`change secret value`},ZN=new Set;function QN(e,t){if(e===t)return!0;try{return ht(e).test(t)}catch{return!1}}function $N(e,t){for(let n of e)if(QN(n,t))return!0;return!1}function eP(e){return{stdout:``,stderr:`${gt(`secret`,e)}\n`,exitCode:1}}function tP(e){let t=Oe(),n=e.isExtension??(t===`extension-direct`||t===`extension-delegate`),r=e.backend??ym(t),i=e.grants??ZN,a=e.broker,o=()=>(a??=gs(null),a);return{backend:r,inExtension:n,gate:async(e,t)=>{let n=`secret:${e}:${t}`;if($N(i,n))return`ok`;let r=await o().requestApproval({kind:`secret`,detail:`${XN[e]}: ${t}`,suggestedPattern:n});if(r.decision===`deny`)return r;if(r.decision===`always`){let e=r.pattern?.trim();i.add(e&&QN(e,n)?e:n)}return`ok`},injectMaskedEnv:async t=>{if(e.setEnv&&Nt(t))try{let n=await r.getMasked(t);n&&e.setEnv(t,n.maskedValue)}catch{}},clearMaskedEnv:t=>{e.unsetEnv&&Nt(t)&&e.unsetEnv(t)}}}function nP(e){let t=P(e);if(t.length!==0)return t.endsWith(`\r
1842
+ `}function TN(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 EN(e){return{stdout:``,stderr:`secret: ${e}\n`,exitCode:1}}const DN={persist:`persist secret`,scope:`edit secret scope`,value:`change secret value`},ON=new Set;function kN(e,t){if(e===t)return!0;try{return ft(e).test(t)}catch{return!1}}function AN(e,t){for(let n of e)if(kN(n,t))return!0;return!1}function jN(e){return{stdout:``,stderr:`${pt(`secret`,e)}\n`,exitCode:1}}function MN(e){let t=Oe(),n=e.isExtension??(t===`extension-direct`||t===`extension-delegate`),r=e.backend??gm(t),i=e.grants??ON,a=e.broker,o=()=>(a??=ps(null),a);return{backend:r,inExtension:n,gate:async(e,t)=>{let n=`secret:${e}:${t}`;if(AN(i,n))return`ok`;let r=await o().requestApproval({kind:`secret`,detail:`${DN[e]}: ${t}`,suggestedPattern:n});if(r.decision===`deny`)return r;if(r.decision===`always`){let e=r.pattern?.trim();i.add(e&&kN(e,n)?e:n)}return`ok`},injectMaskedEnv:async t=>{if(e.setEnv&&At(t))try{let n=await r.getMasked(t);n&&e.setEnv(t,n.maskedValue)}catch{}},clearMaskedEnv:t=>{e.unsetEnv&&At(t)&&e.unsetEnv(t)}}}function NN(e){let t=P(e);if(t.length!==0)return t.endsWith(`\r
1848
1843
  `)?t.slice(0,-2):t.endsWith(`
1849
- `)?t.slice(0,-1):t}async function rP(e,t,n,r){let i=await r.gate(`persist`,e);return i===`ok`?(await r.backend.setPersisted(e,t,n),await r.injectMaskedEnv(e),{stdout:`Persisted "${e}" (domains: ${n.join(`, `)})\n`,stderr:``,exitCode:0}):eP(i)}async function iP(e,t,n,r){if(await r.backend.getInfo(e)){let t=await r.gate(`value`,e);if(t!==`ok`)return eP(t)}return await r.backend.setSession(e,t,n),await r.injectMaskedEnv(e),{stdout:`Set session secret "${e}" (domains: ${n.join(`, `)}) — in-memory only, not persisted.\n`,stderr:``,exitCode:0}}async function aP(e,t,n){let r=C(e.slice(1),{value:GN,bool:KN});if(`error`in r)return YN(r.error);let i=r.positionals[0];if(!i||i.startsWith(`-`))return{stdout:``,stderr:`secret: set requires a <name>
1850
- `,exitCode:1};let a=r.positionals[1],o=nP(t.stdin);if(a!==void 0&&o!==void 0)return{stdout:``,stderr:`secret: provide <value> as an argument OR via stdin, not both
1844
+ `)?t.slice(0,-1):t}async function PN(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}):jN(i)}async function FN(e,t,n,r){if(await r.backend.getInfo(e)){let t=await r.gate(`value`,e);if(t!==`ok`)return jN(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 IN(e,t,n){let r=C(e.slice(1),{value:SN,bool:CN});if(`error`in r)return EN(r.error);let i=r.positionals[0];if(!i||i.startsWith(`-`))return{stdout:``,stderr:`secret: set requires a <name>
1845
+ `,exitCode:1};let a=r.positionals[1],o=NN(t.stdin);if(a!==void 0&&o!==void 0)return{stdout:``,stderr:`secret: provide <value> as an argument OR via stdin, not both
1851
1846
  `,exitCode:1};let s=a??o;if(s===void 0)return{stdout:``,stderr:`secret: set requires a <value>: secret set <name> <value> --domain <patterns> [--persist]
1852
1847
  or pipe the value on stdin: echo "$TOKEN" | secret set <name> --domain <patterns>
1853
- `,exitCode:1};let c=JN(r.values.get(`--domain`));return c?r.bools.has(`--persist`)?rP(i,s,c,n):iP(i,s,c,n):{stdout:``,stderr:`secret: set requires --domain <patterns>
1854
- `,exitCode:1}}function oP(e){return`'${e.replaceAll(`'`,`'\\''`)}'`}async function sP(e,t){let[n,...r]=e.slice(1),i=e=>({stdout:e,stderr:``,exitCode:0});if(n===`set`){let e=C(r,{value:GN,bool:KN}),n=`error`in e?void 0:e.positionals[0];if(!n||!Nt(n))return i(``);let a=await t.backend.getMasked(n).catch(()=>null);return i(a?`export ${n}=${oP(a.maskedValue)}\n`:``)}if(n===`delete`||n===`rm`){let e=C(r,{}),t=`error`in e?void 0:e.positionals[0];return i(t&&Nt(t)?`unset ${t}\n`:``)}return i(``)}async function cP(e,t){let n=C(e.slice(1),{});if(`error`in n)return YN(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: get requires a <name>
1855
- `,exitCode:1};let i=await t.backend.getMasked(r);return i?{stdout:`${i.name}=${i.maskedValue}\n domains: ${i.domains.join(`, `)||`(none)`}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`secret: no secret named "${r}"\n`,exitCode:1}}async function lP(e,t){let n=C(e.slice(1),{});if(`error`in n)return YN(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: peek requires a <name>
1856
- `,exitCode:1};let i=await t.backend.peek(r);return i?{stdout:`${i.name}: ${i.preview}\n domains: ${i.domains.join(`, `)||`(none)`}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`secret: no secret named "${r}"\n`,exitCode:1}}async function uP(e,t){let n=C(e.slice(1),{value:GN});if(`error`in n)return YN(n.error);let r=n.positionals[0];if(!r||r.startsWith(`-`))return{stdout:``,stderr:`secret: scope requires a <name>
1857
- `,exitCode:1};let i=JN(n.values.get(`--domain`));if(!i)return{stdout:``,stderr:`secret: scope requires --domain <patterns>
1858
- `,exitCode:1};let a=await t.gate(`scope`,r);return a===`ok`?(await t.backend.setScope(r,i),{stdout:`Updated scope for "${r}" (domains: ${i.join(`, `)})\n`,stderr:``,exitCode:0}):eP(a)}async function dP(e,t){let n=C(e.slice(1),{});if(`error`in n)return YN(n.error);let{entries:r,warnings:i}=await t.backend.list(),a=i.map(e=>`secret: ${e}\n`).join(``),o=+(i.length>0);if(r.length===0)return{stdout:i.length>0?``:`No secrets stored
1859
- `,stderr:a,exitCode:o};let s=Math.max(4,...r.map(e=>e.name.length)),c=`${`NAME`.padEnd(s)} TYPE DOMAINS\n`;for(let e of r){let t=e.persisted?`SAVED`:`SESSION`;c+=`${e.name.padEnd(s)} ${t.padEnd(7)} ${e.domains.join(`, `)}\n`}return{stdout:c,stderr:a,exitCode:o}}async function fP(e,t,n){let r=C(e.slice(1),{});if(`error`in r)return YN(r.error);let i=r.positionals[0];if(!i)return{stdout:``,stderr:`secret: ${t} requires a <name>\n`,exitCode:1};let a=await n.backend.delete(i);return a.removed?(n.clearMaskedEnv(i),{stdout:`Removed ${a.fromSession===!0?`session`:`persisted`} secret "${i}"\n`,stderr:``,exitCode:0}):{stdout:``,stderr:`secret: no secret named "${i}"\n`,exitCode:1}}async function pP(e,t){let n=C(e.slice(1),{});if(`error`in n)return YN(n.error);let r=n.positionals[0],i=n.positionals[1];if(!r||!i)return{stdout:``,stderr:`secret: test requires <name> <url>
1860
- `,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?Oa(c.domains,a)?{stdout:`✓ ${r} is allowed for ${a}\n`,stderr:``,exitCode:0}:{stdout:`✗ ${r} is NOT allowed for ${a}\n Allowed domains: ${c.domains.join(`, `)}\n`,stderr:``,exitCode:1}:{stdout:``,stderr:s.length>0?s.map(e=>`secret: ${e}\n`).join(``):`secret: no secret named "${r}"\n`,exitCode:1}}async function mP(e,t){let n=C(e.slice(1),{});if(`error`in n)return YN(n.error);if(!t.inExtension)return{stdout:`secret: in CLI mode, edit ~/.slicc/secrets.env directly with your text editor.
1848
+ `,exitCode:1};let c=TN(r.values.get(`--domain`));return c?r.bools.has(`--persist`)?PN(i,s,c,n):FN(i,s,c,n):{stdout:``,stderr:`secret: set requires --domain <patterns>
1849
+ `,exitCode:1}}function LN(e){return`'${e.replaceAll(`'`,`'\\''`)}'`}async function RN(e,t){let[n,...r]=e.slice(1),i=e=>({stdout:e,stderr:``,exitCode:0});if(n===`set`){let e=C(r,{value:SN,bool:CN}),n=`error`in e?void 0:e.positionals[0];if(!n||!At(n))return i(``);let a=await t.backend.getMasked(n).catch(()=>null);return i(a?`export ${n}=${LN(a.maskedValue)}\n`:``)}if(n===`delete`||n===`rm`){let e=C(r,{}),t=`error`in e?void 0:e.positionals[0];return i(t&&At(t)?`unset ${t}\n`:``)}return i(``)}async function zN(e,t){let n=C(e.slice(1),{});if(`error`in n)return EN(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: get requires a <name>
1850
+ `,exitCode:1};let i=await t.backend.getMasked(r);return i?{stdout:`${i.name}=${i.maskedValue}\n domains: ${i.domains.join(`, `)||`(none)`}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`secret: no secret named "${r}"\n`,exitCode:1}}async function BN(e,t){let n=C(e.slice(1),{});if(`error`in n)return EN(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: peek requires a <name>
1851
+ `,exitCode:1};let i=await t.backend.peek(r);return i?{stdout:`${i.name}: ${i.preview}\n domains: ${i.domains.join(`, `)||`(none)`}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`secret: no secret named "${r}"\n`,exitCode:1}}async function VN(e,t){let n=C(e.slice(1),{value:SN});if(`error`in n)return EN(n.error);let r=n.positionals[0];if(!r||r.startsWith(`-`))return{stdout:``,stderr:`secret: scope requires a <name>
1852
+ `,exitCode:1};let i=TN(n.values.get(`--domain`));if(!i)return{stdout:``,stderr:`secret: scope requires --domain <patterns>
1853
+ `,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}):jN(a)}async function HN(e,t){let n=C(e.slice(1),{});if(`error`in n)return EN(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
1854
+ `,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 UN(e,t,n){let r=C(e.slice(1),{});if(`error`in r)return EN(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 WN(e,t){let n=C(e.slice(1),{});if(`error`in n)return EN(n.error);let r=n.positionals[0],i=n.positionals[1];if(!r||!i)return{stdout:``,stderr:`secret: test requires <name> <url>
1855
+ `,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?Ta(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 GN(e,t){let n=C(e.slice(1),{});if(`error`in n)return EN(n.error);if(!t.inExtension)return{stdout:`secret: in CLI mode, edit ~/.slicc/secrets.env directly with your text editor.
1861
1856
  (changes are picked up on the next request — no restart needed)
1862
1857
  `,stderr:``,exitCode:0};try{return await chrome.runtime.openOptionsPage(),{stdout:`Opened Mount Secrets options page in a new tab.
1863
- `,stderr:``,exitCode:0}}catch{let e=chrome.runtime.getURL(`secrets.html`);return window.open(e,`_blank`),{stdout:`Opened ${e}\n`,stderr:``,exitCode:0}}}async function hP(e,t,n){let r=e[0];switch(r){case`set`:return aP(e,t,n);case`get`:case`read`:return cP(e,n);case`shell-env`:return sP(e,n);case`peek`:return lP(e,n);case`scope`:return uP(e,n);case`list`:return dP(e,n);case`delete`:case`rm`:return fP(e,r,n);case`test`:return pP(e,n);case`edit`:return mP(e,n);default:return{stdout:``,stderr:`secret: unknown command "${r}"\n`,exitCode:1}}}function gP(e={}){let t=tP(e);return S(`secret`,async(e,n)=>{if(e.length===0||w(e,{valueFlags:GN}))return{stdout:qN(),stderr:``,exitCode:0};try{return await hP(e,n,t)}catch(e){return{stdout:``,stderr:`secret: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function _P(){return null}function vP(){return null}function yP(){return{stdout:`usage: serve [--entry <relative-path>] [--ttl <duration>] [--bridge | --no-bridge] [--max-tabs <n>] [--quiet] [--stop <token>] [--list] <directory>
1858
+ `,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 KN(e,t,n){let r=e[0];switch(r){case`set`:return IN(e,t,n);case`get`:case`read`:return zN(e,n);case`shell-env`:return RN(e,n);case`peek`:return BN(e,n);case`scope`:return VN(e,n);case`list`:return HN(e,n);case`delete`:case`rm`:return UN(e,r,n);case`test`:return WN(e,n);case`edit`:return GN(e,n);default:return{stdout:``,stderr:`secret: unknown command "${r}"\n`,exitCode:1}}}function qN(e={}){let t=MN(e);return S(`secret`,async(e,n)=>{if(e.length===0||w(e,{valueFlags:SN}))return{stdout:wN(),stderr:``,exitCode:0};try{return await KN(e,n,t)}catch(e){return{stdout:``,stderr:`secret: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function JN(){return null}function YN(){return null}function XN(){return{stdout:`usage: serve [--entry <relative-path>] [--ttl <duration>] [--bridge | --no-bridge] [--max-tabs <n>] [--quiet] [--stop <token>] [--list] <directory>
1864
1859
  serve --logs [<token>] [--lines <n>]
1865
1860
  serve --truncate [<token>]
1866
1861
 
@@ -1896,28 +1891,28 @@ Limits and lifetime:
1896
1891
  its TTL. Either can be removed sooner with \`serve --stop\`.
1897
1892
  - <token> is the "Preview token" printed at mint time or the TOKEN column
1898
1893
  of \`serve --list\`; \`--stop\` also accepts the preview URL.
1899
- `,stderr:``,exitCode:0}}function bP(e){return`error`in e}function xP(e,t,n){if(e===`--list`)return n.list=!0,{skip:0};if(e===`--logs`||e===`--truncate`){let r=e===`--logs`?`logs`:`truncate`;return t&&!t.startsWith(`-`)?(n[r]=t,{skip:1}):(n[r]=!0,{skip:0})}if(e.startsWith(`--logs=`)||e.startsWith(`--truncate=`)){let t=e.startsWith(`--logs=`)?`logs`:`truncate`,r=e.slice(e.indexOf(`=`)+1);return r?(n[t]=r,{skip:0}):{error:`serve: missing value for --${t}\n`}}if(e===`--lines`||e.startsWith(`--lines=`)){let r=e===`--lines`?t:e.slice(8),i=r===void 0?NaN:Number(r);return!Number.isSafeInteger(i)||i<=0?{error:`serve: --lines must be a positive integer
1900
- `}:(n.lines=i,{skip:+(e===`--lines`)})}}function SP(e,t,n){if(e!==`--ttl`&&!e.startsWith(`--ttl=`))return;let r=e===`--ttl`?t:e.slice(6);if(!r)return{error:`serve: missing value for --ttl
1894
+ `,stderr:``,exitCode:0}}function ZN(e){return`error`in e}function QN(e,t,n){if(e===`--list`)return n.list=!0,{skip:0};if(e===`--logs`||e===`--truncate`){let r=e===`--logs`?`logs`:`truncate`;return t&&!t.startsWith(`-`)?(n[r]=t,{skip:1}):(n[r]=!0,{skip:0})}if(e.startsWith(`--logs=`)||e.startsWith(`--truncate=`)){let t=e.startsWith(`--logs=`)?`logs`:`truncate`,r=e.slice(e.indexOf(`=`)+1);return r?(n[t]=r,{skip:0}):{error:`serve: missing value for --${t}\n`}}if(e===`--lines`||e.startsWith(`--lines=`)){let r=e===`--lines`?t:e.slice(8),i=r===void 0?NaN:Number(r);return!Number.isSafeInteger(i)||i<=0?{error:`serve: --lines must be a positive integer
1895
+ `}:(n.lines=i,{skip:+(e===`--lines`)})}}function $N(e,t,n){if(e!==`--ttl`&&!e.startsWith(`--ttl=`))return;let r=e===`--ttl`?t:e.slice(6);if(!r)return{error:`serve: missing value for --ttl
1901
1896
  `};let i=/^([1-9][0-9]*)([mhdw])$/.exec(r);if(!i)return{error:`serve: --ttl must be a positive whole duration (m, h, d, or w)
1902
1897
  `};let a=Number(i[1])*{m:6e4,h:36e5,d:864e5,w:6048e5}[i[2]];return Number.isSafeInteger(a)?a>2592e6?{error:`serve: --ttl cannot exceed 30d; longer retention requires a Sliccy Deluxe De-Enshittification plan.
1903
1898
  `}:(n.ttlMs=a,{skip:+(e===`--ttl`)}):{error:`serve: --ttl must be a positive whole duration (m, h, d, or w)
1904
- `}}function CP(e,t){let n={"--bridge":`bridge`,"--no-bridge":`noBridge`,"--project":`project`,"--quiet":`quiet`}[e];if(n)return t[n]=!0,{skip:0}}function wP(e,t,n){let r=SP(e,t,n);if(r)return r;let i=CP(e,n);if(i)return i;if(e===`--entry`)return t?(n.entry=t,{skip:1}):{error:`serve: missing value for --entry
1899
+ `}}function eP(e,t){let n={"--bridge":`bridge`,"--no-bridge":`noBridge`,"--project":`project`,"--quiet":`quiet`}[e];if(n)return t[n]=!0,{skip:0}}function tP(e,t,n){let r=$N(e,t,n);if(r)return r;let i=eP(e,n);if(i)return i;if(e===`--entry`)return t?(n.entry=t,{skip:1}):{error:`serve: missing value for --entry
1905
1900
  `};if(e.startsWith(`--entry=`))return n.entry=e.slice(8),{skip:0};if(e===`--stop`)return t?(n.stop=t,{skip:1}):{error:`serve: missing value for --stop
1906
- `};if(e.startsWith(`--stop=`))return n.stop=e.slice(7),{skip:0};let a=xP(e,t,n);if(a)return a;if(e===`--max-tabs`){if(!t)return{error:`serve: missing value for --max-tabs
1901
+ `};if(e.startsWith(`--stop=`))return n.stop=e.slice(7),{skip:0};let a=QN(e,t,n);if(a)return a;if(e===`--max-tabs`){if(!t)return{error:`serve: missing value for --max-tabs
1907
1902
  `};let e=Number.parseInt(t,10);return!Number.isFinite(e)||e<=0?{error:`serve: --max-tabs must be a positive integer
1908
1903
  `}:(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
1909
1904
  `}:(n.maxTabs=t,{skip:0})}return e.startsWith(`-`)?{error:`serve: unknown option: ${e}\n`}:n.directory?{error:`serve: expected a single directory argument
1910
- `}:(n.directory=e,{skip:0})}function TP(e){let t={entry:`index.html`,bridge:!1,noBridge:!1,project:!1,list:!1,quiet:!1};for(let n=0;n<e.length;n+=1){let r=wP(e[n],e[n+1],t);if(bP(r))return{...t,error:r.error};n+=r.skip}return t}async function EP(e,t,n,r){if(!Cr(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=Ar(i,t),s;try{s=await n.stat(o)}catch{return{stdout:``,stderr:`serve: entry file not found: ${o}\n`,exitCode:1}}return s.isFile?{fullDirectory:i,entryPath:o}:{stdout:``,stderr:`serve: entry is not a file: ${o}\n`,exitCode:1}}function DP(e){return`exitCode`in e}async function OP(e){let t=Ea(e)??e,n,r=vP();if(r)n=await r({type:`stop`,previewToken:t});else{let e=y();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
1911
- `,exitCode:1};if(n.webhookId){let e=await Ay();if(!e)return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but the preview-bridge webhook could not be cleaned up (lick manager unavailable). It is a live endpoint — delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0};try{await e.deleteWebhook(n.webhookId)}catch(e){return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but webhook cleanup failed: ${e instanceof Error?e.message:String(e)}. Delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0}}}return{stdout:`Preview revoked: ${t}\n`,stderr:``,exitCode:0}}async function kP(){let e=vP();if(e){let t=(await e({type:`list`})).previews??[];return t.length===0?{stdout:`No active previews
1912
- `,stderr:``,exitCode:0}:{stdout:jP(t),stderr:``,exitCode:0}}let t=y();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
1913
- `,stderr:``,exitCode:0}:{stdout:jP(n),stderr:``,exitCode:0}}function AP(e){return e.mode===`persistent`?e.state===`pending`?`uploading`:`persistent`:`live`}function jP(e){return`Active previews:\n TOKEN MODE EXPIRES URL ROOT CREATED\n${e.map(e=>` ${e.previewToken} ${AP(e)} ${e.expiresAt??`-`} ${e.url} ${e.servedRoot} ${e.createdAt}\n`).join(``)}`}function MP(e){let t=e.announced?`announced`:`suppressed`,n=e.previewToken??`-`,r=e.lifecycle===`connected`?`origin=${e.origin??`-`} userAgent=${e.userAgent??`-`}`:`reason=${e.reason??`-`}`;return`${e.timestamp} ${e.lifecycle.padEnd(12)} ${t.padEnd(10)} preview=${n} conn=${e.connId} ${r}\n`}async function NP(e){let t,n=vP();if(n)t=(await n({type:`logs`,previewToken:e.previewToken})).lifecycleRecords??[];else{let n=y();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.
1914
- `,stderr:``,exitCode:0}:{stdout:`Preview lifecycle records (oldest to newest):\n${t.map(MP).join(``)}`,stderr:``,exitCode:0}}async function PP(e){let t,n,r=vP();if(r){let i=await r({type:`truncate`,previewToken:e});t=i.cleared??0,n=i.rearmed??0}else{let r=y();if(!r)return{stdout:``,stderr:"serve --truncate: no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.\n",exitCode:1};let i=await r.call(`tray-preview-truncate`,{previewToken:e});t=i.cleared,n=i.rearmed}return{stdout:`Cleared ${t} preview lifecycle record${t===1?``:`s`}; re-armed ${n} preview announcement${n===1?``:`s`}.\n`,stderr:``,exitCode:0}}async function FP(e,t){let n=[],r=0;for await(let i of e.walk(t)){if(n.length>=1e3)throw Error(`persistent preview exceeds 1000 file limit`);let a=await e.readFile(i,{encoding:`binary`}),o=typeof a==`string`?new TextEncoder().encode(a):a,s=i.slice(t===`/`?1:t.length+1);if(o.byteLength>26214400)throw Error(`preview file exceeds 25 MiB limit: ${s}`);if(r+=o.byteLength,r>52428800)throw Error(`persistent preview exceeds 50 MiB total limit`);n.push({path:s,content:o,mime:hr(s)})}return n}function IP(e){return e().catch(e=>({stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}))}async function LP(e){let t=_P();if(t)return t(e);let n=y();if(!n)throw Error("no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.");return e.ttlMs===void 0?n.call(`tray-open-preview`,e):n.call(`tray-open-preview`,e,{timeoutMs:6e5})}async function RP(e,t){if(t)return t.createPage(e);typeof window<`u`&&typeof window.open==`function`&&window.open(e,`_blank`,`noopener,noreferrer`)}async function zP(e,t){if(!e)return{ok:!0};let n=await Ay();if(!n)return{ok:!1,result:{stdout:``,stderr:`${t}serve: --bridge requires an active lick manager\n`,exitCode:1}};try{return{ok:!0,webhookId:(await n.createWebhook(`preview-bridge`)).id}}catch(e){return{ok:!1,result:{stdout:``,stderr:`${t}serve: webhook creation failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}}async function BP(e,t,n,r,i,a,o){let s;try{s=await LP({entryPath:n,servedRoot:t,bridge:e.bridge,noBridge:e.ttlMs!==void 0||e.noBridge,maxTabs:e.maxTabs,quiet:e.quiet,webhookId:r,ttlMs:e.ttlMs,snapshotFiles:a})}catch(e){if(r){let e=await Ay();e&&await e.deleteWebhook(r).catch(()=>{})}return{stdout:``,stderr:`${i}serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let c=await RP(s.url,o),l=`${s.pushed} follower${s.pushed===1?``:`s`}`,u=c?` (targetId: ${c})`:``,d=e.ttlMs===void 0?`expires 5 min after the leader disconnects`:`kept until its --ttl expires; counts toward the 10-snapshot tray quota`,f=s.previewToken?`Preview token: ${s.previewToken} (${d}; revoke sooner with serve --stop)\n`:``;return{stdout:`Preview URL: ${s.url}${u}\n${f}Pushed to ${l}\n`,stderr:i,exitCode:0}}async function VP(e){if(e.stop){let t=e.stop;return IP(()=>OP(t))}if(e.list)return IP(()=>kP());if(e.logs&&e.truncate)return{stdout:``,stderr:`serve: --logs and --truncate are mutually exclusive
1905
+ `}:(n.directory=e,{skip:0})}function nP(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=tP(e[n],e[n+1],t);if(ZN(r))return{...t,error:r.error};n+=r.skip}return t}async function rP(e,t,n,r){if(!br(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=Dr(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 iP(e){return`exitCode`in e}async function aP(e){let t=Ca(e)??e,n,r=YN();if(r)n=await r({type:`stop`,previewToken:t});else{let e=y();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
1906
+ `,exitCode:1};if(n.webhookId){let e=await sy();if(!e)return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but the preview-bridge webhook could not be cleaned up (lick manager unavailable). It is a live endpoint — delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0};try{await e.deleteWebhook(n.webhookId)}catch(e){return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but webhook cleanup failed: ${e instanceof Error?e.message:String(e)}. Delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0}}}return{stdout:`Preview revoked: ${t}\n`,stderr:``,exitCode:0}}async function oP(){let e=YN();if(e){let t=(await e({type:`list`})).previews??[];return t.length===0?{stdout:`No active previews
1907
+ `,stderr:``,exitCode:0}:{stdout:cP(t),stderr:``,exitCode:0}}let t=y();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
1908
+ `,stderr:``,exitCode:0}:{stdout:cP(n),stderr:``,exitCode:0}}function sP(e){return e.mode===`persistent`?e.state===`pending`?`uploading`:`persistent`:`live`}function cP(e){return`Active previews:\n TOKEN MODE EXPIRES URL ROOT CREATED\n${e.map(e=>` ${e.previewToken} ${sP(e)} ${e.expiresAt??`-`} ${e.url} ${e.servedRoot} ${e.createdAt}\n`).join(``)}`}function lP(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 uP(e){let t,n=YN();if(n)t=(await n({type:`logs`,previewToken:e.previewToken})).lifecycleRecords??[];else{let n=y();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.
1909
+ `,stderr:``,exitCode:0}:{stdout:`Preview lifecycle records (oldest to newest):\n${t.map(lP).join(``)}`,stderr:``,exitCode:0}}async function dP(e){let t,n,r=YN();if(r){let i=await r({type:`truncate`,previewToken:e});t=i.cleared??0,n=i.rearmed??0}else{let r=y();if(!r)return{stdout:``,stderr:"serve --truncate: no leader tray available. Enable multi-browser sync via `host enable` or the avatar popover.\n",exitCode:1};let i=await r.call(`tray-preview-truncate`,{previewToken:e});t=i.cleared,n=i.rearmed}return{stdout:`Cleared ${t} preview lifecycle record${t===1?``:`s`}; re-armed ${n} preview announcement${n===1?``:`s`}.\n`,stderr:``,exitCode:0}}async function fP(e,t){let n=[],r=0;for await(let i of e.walk(t)){if(n.length>=1e3)throw Error(`persistent preview exceeds 1000 file limit`);let a=await e.readFile(i,{encoding:`binary`}),o=typeof a==`string`?new TextEncoder().encode(a):a,s=i.slice(t===`/`?1:t.length+1);if(o.byteLength>26214400)throw Error(`preview file exceeds 25 MiB limit: ${s}`);if(r+=o.byteLength,r>52428800)throw Error(`persistent preview exceeds 50 MiB total limit`);n.push({path:s,content:o,mime:fr(s)})}return n}function pP(e){return e().catch(e=>({stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}))}async function mP(e){let t=JN();if(t)return t(e);let n=y();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 hP(e,t){if(t)return t.createPage(e);typeof window<`u`&&typeof window.open==`function`&&window.open(e,`_blank`,`noopener,noreferrer`)}async function gP(e,t){if(!e)return{ok:!0};let n=await sy();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 _P(e,t,n,r,i,a,o){let s;try{s=await mP({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 sy();e&&await e.deleteWebhook(r).catch(()=>{})}return{stdout:``,stderr:`${i}serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let c=await hP(s.url,o),l=`${s.pushed} follower${s.pushed===1?``:`s`}`,u=c?` (targetId: ${c})`:``,d=e.ttlMs===void 0?`expires 5 min after the leader disconnects`:`kept until its --ttl expires; counts toward the 10-snapshot tray quota`,f=s.previewToken?`Preview token: ${s.previewToken} (${d}; revoke sooner with serve --stop)\n`:``;return{stdout:`Preview URL: ${s.url}${u}\n${f}Pushed to ${l}\n`,stderr:i,exitCode:0}}async function vP(e){if(e.stop){let t=e.stop;return pP(()=>aP(t))}if(e.list)return pP(()=>oP());if(e.logs&&e.truncate)return{stdout:``,stderr:`serve: --logs and --truncate are mutually exclusive
1915
1910
  `,exitCode:1};if(e.lines!==void 0&&!e.logs)return{stdout:``,stderr:`serve: --lines requires --logs
1916
- `,exitCode:1};if(e.logs){let t=typeof e.logs==`string`?e.logs:void 0;return IP(()=>NP({previewToken:t,lines:e.lines}))}if(e.truncate){let t=typeof e.truncate==`string`?e.truncate:void 0;return IP(()=>PP(t))}}function HP(e){if(e.ttlMs!==void 0&&e.bridge)return{stdout:``,stderr:`serve: --ttl cannot be combined with --bridge
1911
+ `,exitCode:1};if(e.logs){let t=typeof e.logs==`string`?e.logs:void 0;return pP(()=>uP({previewToken:t,lines:e.lines}))}if(e.truncate){let t=typeof e.truncate==`string`?e.truncate:void 0;return pP(()=>dP(t))}}function yP(e){if(e.ttlMs!==void 0&&e.bridge)return{stdout:``,stderr:`serve: --ttl cannot be combined with --bridge
1917
1912
  `,exitCode:1};if(e.ttlMs!==void 0&&e.maxTabs!==void 0)return{stdout:``,stderr:`serve: --ttl cannot be combined with --max-tabs
1918
- `,exitCode:1}}async function UP(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return FP(t,n)}}async function WP(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return yP();let i=TP(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await VP(i);if(a)return a;if(!i.directory)return yP();let o=HP(i);if(o)return o;let s=await EP(i.directory,i.entry,t.fs,t.cwd);if(DP(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await UP(i,r,c)}catch(e){return{stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let d=i.project?`serve: --project is obsolete; ignored (root-absolute paths work natively under unified preview)
1919
- `:``,f=await zP(!i.noBridge&&i.bridge,d);return f.ok?BP(i,c,l,f.webhookId,d,u,n):f.result}function GP(e,t){return S(`serve`,(n,r)=>WP(n,r,e,t))}const KP=`usage: session export [--id <id>] [--output <path>]
1920
- `;function qP(e){if(e.includes(`\0`))return{ok:!1,reason:`path must not contain NUL bytes`};if(e.includes(`\\`))return{ok:!1,reason:`path must not contain backslashes`};let t=e.split(`/`);for(let e of t)if(e===`..`)return{ok:!1,reason:`path must not contain ".."/traversal segments`};return{ok:!0}}function JP(e){let t=null,n=null,r=e.slice(1);for(let e=0;e<r.length;e++){let i=r[e];if(i===`--id`){if(t!==null)return{ok:!1,stderr:`session export: duplicate flag --id\n${KP}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${KP}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${KP}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${KP}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${KP}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${KP}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function YP(e){let t=[],n=0;for await(let r of e.chunks)t.push(r),n+=r.byteLength;let r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.byteLength;let a=await e.completion;if(a.byteLength!==n||kt(r)!==a.sha256)throw new Na(`transfer-corrupt`);return r}async function XP(e,t){let n=JP(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=qP(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${KP}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await bs().export(a,{}),n=await YP(e),r=i??`/workspace/${e.filename}`;return await t.fs.writeFile(r,n),{stdout:`exported ${r}\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`session export: ${e instanceof Na?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function ZP(){return S(`session`,async(e,t)=>{if(e[0]===`export`&&!w(e))return XP(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-2wvzOG50.js`);return n(e,t,KP)})}function QP(){return S(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-BRFnmkzR.js`);return await n(e,t)})}const $P=`leader`;function eF(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function tF(e){return+!!e.leader+e.followers.length}function nF(){return{stdout:`usage: sprinkle <subcommand> [args]
1913
+ `,exitCode:1}}async function bP(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return fP(t,n)}}async function xP(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return XN();let i=nP(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await vP(i);if(a)return a;if(!i.directory)return XN();let o=yP(i);if(o)return o;let s=await rP(i.directory,i.entry,t.fs,t.cwd);if(iP(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await bP(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)
1914
+ `:``,f=await gP(!i.noBridge&&i.bridge,d);return f.ok?_P(i,c,l,f.webhookId,d,u,n):f.result}function SP(e,t){return S(`serve`,(n,r)=>xP(n,r,e,t))}const CP=`usage: session export [--id <id>] [--output <path>]
1915
+ `;function wP(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 TP(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${CP}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${CP}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${CP}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${CP}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${CP}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${CP}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function EP(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||Et(r)!==a.sha256)throw new Aa(`transfer-corrupt`);return r}async function DP(e,t){let n=TP(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=wP(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${CP}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await _s().export(a,{}),n=await EP(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 Aa?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function OP(){return S(`session`,async(e,t)=>{if(e[0]===`export`&&!w(e))return DP(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-DUB-rTlJ.js`);return n(e,t,CP)})}function kP(){return S(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-BRFnmkzR.js`);return await n(e,t)})}const AP=`leader`;function jP(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function MP(e){return+!!e.leader+e.followers.length}function NP(){return{stdout:`usage: sprinkle <subcommand> [args]
1921
1916
 
1922
1917
  list [--runtime <id>] List sprinkles + an instance line per runtime
1923
1918
  open <name> Open a sprinkle by name
@@ -1935,22 +1930,22 @@ Limits and lifetime:
1935
1930
  chat <html> Show inline HTML in chat (Tool UI)
1936
1931
  Use data-action="name" on buttons for callbacks
1937
1932
  Pipe HTML: echo "<div>...</div>" | sprinkle chat
1938
- `,stderr:``,exitCode:0}}function rF(){return globalThis.__slicc_sprinkleManager??null}function J(e,t){return{stdout:``,stderr:`sprinkle ${e}: ${t}\n`,exitCode:1}}function iF(){return[$P,...re().map(e=>e.runtimeId)]}function aF(e){return`unknown runtime "${e}"\nknown runtimes: ${iF().join(`, `)}\nRun \`host\` to see connected followers.`}async function oF(e,t){let n=e.slice(1).join(` `);if(!n){let e=P(t.stdin);e&&(n=e)}if(!n)return{stdout:``,stderr:`sprinkle chat: HTML content required
1933
+ `,stderr:``,exitCode:0}}function PP(){return globalThis.__slicc_sprinkleManager??null}function J(e,t){return{stdout:``,stderr:`sprinkle ${e}: ${t}\n`,exitCode:1}}function FP(){return[AP,...re().map(e=>e.runtimeId)]}function IP(e){return`unknown runtime "${e}"\nknown runtimes: ${FP().join(`, `)}\nRun \`host\` to see connected followers.`}async function LP(e,t){let n=e.slice(1).join(` `);if(!n){let e=P(t.stdin);e&&(n=e)}if(!n)return{stdout:``,stderr:`sprinkle chat: HTML content required
1939
1934
  `,exitCode:1};let r=await Pe({html:n,onAction:async(e,t)=>({action:e,data:t})});return r===null?{stdout:``,stderr:`sprinkle chat: not in tool execution context
1940
1935
  `,exitCode:1}:{stdout:JSON.stringify(r)+`
1941
- `,stderr:``,exitCode:0}}function sF(e){return e.map(e=>{let t=e.runtime?` (${e.runtime})`:``;return` instance: ${e.runtimeId}${t}`})}function cF(e){return[...e.map(e=>({name:e,runtimeId:$P})),...eF()]}async function lF(e,t){let n=C(t.slice(1),{value:[`--runtime`]});if(`error`in n)return J(`list`,n.error);let r=n.values.get(`--runtime`);if(r!==void 0&&!iF().includes(r))return J(`list`,aF(r));await e.refresh();let i=e.available();if(i.length===0)return{stdout:`No .shtml sprinkles found.
1942
- `,stderr:``,exitCode:0};let a=new Set(e.opened()),o=cF([...a]).filter(e=>r===void 0||e.runtimeId===r),s=[];for(let e of i){let t=o.filter(t=>t.name===e.name);if(r!==void 0&&t.length===0)continue;let n=a.has(e.name)?` [open]`:``;s.push(` ${e.name}${n} ${e.title} (${e.path})`),s.push(...sF(t))}return s.length===0?{stdout:`No sprinkles are open on runtime "${r}".\n`,stderr:``,exitCode:0}:{stdout:s.join(`
1936
+ `,stderr:``,exitCode:0}}function RP(e){return e.map(e=>{let t=e.runtime?` (${e.runtime})`:``;return` instance: ${e.runtimeId}${t}`})}function zP(e){return[...e.map(e=>({name:e,runtimeId:AP})),...jP()]}async function BP(e,t){let n=C(t.slice(1),{value:[`--runtime`]});if(`error`in n)return J(`list`,n.error);let r=n.values.get(`--runtime`);if(r!==void 0&&!FP().includes(r))return J(`list`,IP(r));await e.refresh();let i=e.available();if(i.length===0)return{stdout:`No .shtml sprinkles found.
1937
+ `,stderr:``,exitCode:0};let a=new Set(e.opened()),o=zP([...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(...RP(t))}return s.length===0?{stdout:`No sprinkles are open on runtime "${r}".\n`,stderr:``,exitCode:0}:{stdout:s.join(`
1943
1938
  `)+`
1944
- `,stderr:``,exitCode:0}}function uF(e,t){return!t||Ro(e)?null:(zo(e,t),Ro(e)===t?t:null)}async function dF(e,t,n){let r=C(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=ia(void 0,n),o=uF(i,a);try{a?await e.open(i,void 0,{lickOriginTarget:a}):await e.open(i)}catch(e){return o&&Bo(i),J(`open`,e instanceof Error?e.message:String(e))}return{stdout:`Sprinkle "${i}" opened${o?`; licks route to "${o}"`:``}.\n`,stderr:``,exitCode:0}}function fF(e,t){let n=C(t.slice(1),{});if(`error`in n)return J(`close`,n.error);let r=n.positionals[0];return r?(e.close(r),{stdout:`Sprinkle "${r}" closed.\n`,stderr:``,exitCode:0}):J(`close`,`name required`)}async function pF(e,t){let n=C(t.slice(1),{});if(`error`in n)return J(`reload`,n.error);let r=n.positionals[0];if(!r)return J(`reload`,`name required`);try{return await e.reload(r),{stdout:`Sprinkle "${r}" reloaded.\n`,stderr:``,exitCode:0}}catch(e){return J(`reload`,e instanceof Error?e.message:String(e))}}async function mF(e,t){let n=C(t.slice(1),{});if(`error`in n)return J(`refresh`,n.error);await e.refresh();let r=e.available().length;return{stdout:`Found ${r} sprinkle${r===1?``:`s`}.\n`,stderr:``,exitCode:0}}function hF(e){let t=C(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=Vo(),t=Object.entries(e);return t.length===0?{stdout:`No sprinkle routes configured (all licks go to cone).
1939
+ `,stderr:``,exitCode:0}}function VP(e,t){return!t||Fo(e)?null:(Io(e,t),Fo(e)===t?t:null)}async function HP(e,t,n){let r=C(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=ta(void 0,n),o=VP(i,a);try{a?await e.open(i,void 0,{lickOriginTarget:a}):await e.open(i)}catch(e){return o&&Lo(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 UP(e,t){let n=C(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 WP(e,t){let n=C(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 GP(e,t){let n=C(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 KP(e){let t=C(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=Ro(),t=Object.entries(e);return t.length===0?{stdout:`No sprinkle routes configured (all licks go to cone).
1945
1940
  `,stderr:``,exitCode:0}:{stdout:`Sprinkle routes (applied to every runtime — the leader resolves the
1946
1941
  route for follower-forwarded licks too):
1947
1942
  `+t.map(([e,t])=>` ${e} -> ${t}`).join(`
1948
1943
  `)+`
1949
- `,stderr:``,exitCode:0}}if(t.bools.has(`--clear`))return Bo(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=Ro(n);return e?{stdout:`${n} -> ${e}\n`,stderr:``,exitCode:0}:{stdout:`${n} -> cone (default)\n`,stderr:``,exitCode:0}}return zo(n,r),{stdout:`Sprinkle "${n}" lick events will route to scoop "${r}".\n`,stderr:``,exitCode:0}}function gF(e){let t=[];return e.leader&&t.push($P),t.push(...e.followers),t.join(`, `)}async function _F(e,t){let n=C(t.slice(1),{value:[`--runtime`]});if(`error`in n)return J(`send`,n.error);let r=n.positionals[0];if(!r)return J(`send`,`name required`);let i=n.positionals.slice(1).join(` `);if(!i)return J(`send`,`JSON data required`);let a;try{a=JSON.parse(i)}catch{return J(`send`,`invalid JSON`)}let o=n.values.get(`--runtime`);if(o!==void 0&&!iF().includes(o))return J(`send`,aF(o));let s=await e.sendToSprinkle(r,a,o?{runtime:o}:void 0);if(!s)return J(`send`,`sprinkle manager returned no delivery report — push not confirmed`);if(s.unknownRuntime)return J(`send`,aF(s.unknownRuntime));let c=tF(s);return c===0?J(`send`,o?`"${r}" is not open on runtime "${o}" — nothing was delivered`:`"${r}" is not open on the leader or any connected follower — nothing was delivered`):{stdout:`Data sent to sprinkle "${r}" — ${c} instance${c===1?``:`s`} (${gF(s)}).\n`,stderr:``,exitCode:0}}function vF(){return S(`sprinkle`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return nF();let n=e[0];if(w(e.slice(1),{valueFlags:[`--scoop`,`--runtime`]}))return{stdout:lt(`sprinkle`,n,nF().stdout),stderr:``,exitCode:0};if(n===`chat`)return oF(ct(e),t);let r=rF();if(!r)return{stdout:``,stderr:`sprinkle: sprinkle manager not initialized
1950
- `,exitCode:1};switch(n){case`list`:return lF(r,e);case`open`:return dF(r,e,t.env);case`close`:return fF(r,e);case`reload`:return pF(r,e);case`refresh`:return mF(r,e);case`route`:return hF(e);case`send`:return _F(r,e);default:return{stdout:``,stderr:`sprinkle: unknown subcommand "${n}"\n`,exitCode:1}}})}function yF(){return{stdout:`usage: sqlite3 [database] [sql]
1951
- `,stderr:``,exitCode:0}}function bF(e,t){let n=e.length>0&&!e[0].startsWith(`-`);return{database:n?e[0]:`:memory:`,sql:(n?e.slice(1):e).join(` `).trim()||P(t.stdin).trim()}}function xF(e,t){return e===`:memory:`?e:t.fs.resolvePath(t.cwd,e)}async function SF(e,t,n){return t===`:memory:`||!await n.fs.exists(t)?new e.Database:new e.Database(await n.fs.readFileBuffer(t))}async function CF(e,t,n){t!==`:memory:`&&await n.fs.writeFile(t,e.export())}function wF(e){let t=e.flatMap(e=>e.values.map(e=>e.map(Sr).join(`|`)));return t.length>0?`${t.join(`
1952
- `)}\n`:``}async function TF(e,t,n){let r=await kr(),i=xF(e,n),a=await SF(r,i,n),o=a.exec(t);return await CF(a,i,n),a.close(),wF(o)}function EF(e,t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}function DF(e=`sqlite3`){return S(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return yF();let{database:r,sql:i}=bF(t,n);if(!i)return EF(e,`interactive mode is not supported; provide SQL as argument or stdin`);try{return{stdout:await TF(r,i,n),stderr:``,exitCode:0}}catch(t){return EF(e,t)}})}function OF(e){return{stdout:``,stderr:e.endsWith(`
1953
- `)?e:`${e}\n`,exitCode:1}}function kF(){return{stdout:`ssh - run a command on a connected tray follower
1944
+ `,stderr:``,exitCode:0}}if(t.bools.has(`--clear`))return Lo(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=Fo(n);return e?{stdout:`${n} -> ${e}\n`,stderr:``,exitCode:0}:{stdout:`${n} -> cone (default)\n`,stderr:``,exitCode:0}}return Io(n,r),{stdout:`Sprinkle "${n}" lick events will route to scoop "${r}".\n`,stderr:``,exitCode:0}}function qP(e){let t=[];return e.leader&&t.push(AP),t.push(...e.followers),t.join(`, `)}async function JP(e,t){let n=C(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&&!FP().includes(o))return J(`send`,IP(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`,IP(s.unknownRuntime));let c=MP(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`} (${qP(s)}).\n`,stderr:``,exitCode:0}}function YP(){return S(`sprinkle`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return NP();let n=e[0];if(w(e.slice(1),{valueFlags:[`--scoop`,`--runtime`]}))return{stdout:ot(`sprinkle`,n,NP().stdout),stderr:``,exitCode:0};if(n===`chat`)return LP(at(e),t);let r=PP();if(!r)return{stdout:``,stderr:`sprinkle: sprinkle manager not initialized
1945
+ `,exitCode:1};switch(n){case`list`:return BP(r,e);case`open`:return HP(r,e,t.env);case`close`:return UP(r,e);case`reload`:return WP(r,e);case`refresh`:return GP(r,e);case`route`:return KP(e);case`send`:return JP(r,e);default:return{stdout:``,stderr:`sprinkle: unknown subcommand "${n}"\n`,exitCode:1}}})}function XP(){return{stdout:`usage: sqlite3 [database] [sql]
1946
+ `,stderr:``,exitCode:0}}function ZP(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 QP(e,t){return e===`:memory:`?e:t.fs.resolvePath(t.cwd,e)}async function $P(e,t,n){return t===`:memory:`||!await n.fs.exists(t)?new e.Database:new e.Database(await n.fs.readFileBuffer(t))}async function eF(e,t,n){t!==`:memory:`&&await n.fs.writeFile(t,e.export())}function tF(e){let t=e.flatMap(e=>e.values.map(e=>e.map(yr).join(`|`)));return t.length>0?`${t.join(`
1947
+ `)}\n`:``}async function nF(e,t,n){let r=await Er(),i=QP(e,n),a=await $P(r,i,n),o=a.exec(t);return await eF(a,i,n),a.close(),tF(o)}function rF(e,t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}function iF(e=`sqlite3`){return S(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return XP();let{database:r,sql:i}=ZP(t,n);if(!i)return rF(e,`interactive mode is not supported; provide SQL as argument or stdin`);try{return{stdout:await nF(r,i,n),stderr:``,exitCode:0}}catch(t){return rF(e,t)}})}function aF(e){return{stdout:``,stderr:e.endsWith(`
1948
+ `)?e:`${e}\n`,exitCode:1}}function oF(){return{stdout:`ssh - run a command on a connected tray follower
1954
1949
 
1955
1950
  Usage: ssh [--cwd <dir>] [--timeout <seconds>] <runtime-id> <command...>
1956
1951
  ssh --list
@@ -1973,11 +1968,11 @@ Examples:
1973
1968
  ssh --list
1974
1969
  ssh follower-abc123 "uname -a"
1975
1970
  ssh --cwd /tmp follower-abc123 "ls -la"
1976
- `,stderr:``,exitCode:0}}function AF(e){let t=e.filter(e=>e.exec);if(t.length===0)return`No exec-capable followers connected.
1971
+ `,stderr:``,exitCode:0}}function sF(e){let t=e.filter(e=>e.exec);if(t.length===0)return`No exec-capable followers connected.
1977
1972
  Start one with: slicc <join-url> follow sh -c
1978
1973
  `;let n=[`exec targets:`];for(let e of t){let t=[e.runtimeId];e.runtime&&t.push(`(${e.runtime})`),n.push(` - ${t.join(` `)}`),e.motd&&n.push(` ${e.motd}`),e.computerMotd&&n.push(` ${e.computerMotd}`)}return`${n.join(`
1979
- `)}\n`}function jF(e){if(e.stdin===void 0)return;let n=bi(e.stdin);if(n.length===0)return;let r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e)&255;return t(r)}function MF(e){let t=!1,n,r,i=0;for(;i<e.length;){let a=e[i];if(a===`--help`||a===`-h`)return{help:!0};if(a===`--list`||a===`-l`){t=!0,i+=1;continue}if(a===`--cwd`){let t=e[i+1];if(t===void 0)return{error:`ssh: --cwd requires a directory argument`};n=t,i+=2;continue}if(a===`--timeout`){let t=e[i+1],n=Number(t);if(t===void 0||!Number.isFinite(n)||n<=0)return{error:`ssh: --timeout requires a positive number of seconds`};r=n,i+=2;continue}if(a.startsWith(`-`)&&a!==`-`)return{error:`ssh: unknown flag: ${a}`};break}let a=e[i],o=e.slice(i+1).join(` `);return{list:t,cwd:n,timeoutSec:r,runtimeId:a,command:o}}function NF(){return S(`ssh`,async(e,t)=>{let n=MF(e);if(`help`in n)return kF();if(`error`in n)return OF(n.error);if(n.list||n.runtimeId===void 0)return{stdout:AF(re()),stderr:``,exitCode:0};if(!n.command)return OF(`ssh: missing command
1980
- Usage: ssh <runtime-id> <command...>`);let r=y();if(!r)return OF(`ssh: not available in this environment (needs the standalone app)`);let i=`ssh-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,a=()=>{r.call(`tray-exec-signal`,{execToken:i}).catch(()=>{})};t.signal?.addEventListener(`abort`,a,{once:!0});try{let e=n.timeoutSec?n.timeoutSec*1e3:void 0,a=await r.call(`tray-exec`,{runtimeId:n.runtimeId,command:n.command,cwd:n.cwd,execToken:i,timeoutMs:e,stdin:jF(t)},{timeoutMs:(e??864e5)+5e3});return a.error?{stdout:a.stdout,stderr:`${a.stderr}ssh: ${a.error}\n`,exitCode:a.exitCode||1}:{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode}}catch(e){return OF(`ssh: ${e instanceof Error?e.message:String(e)}`)}finally{t.signal?.removeEventListener(`abort`,a)}})}function PF(e){return{stdout:``,stderr:`${gt(`sudo`,e)}\n`,exitCode:77}}function FF(e={}){let{broker:t,persistGrant:n,suppressNextGate:r}=e;return S(`sudo`,async(e,i)=>{if(e.length===0)return{stdout:``,stderr:`sudo: usage: sudo <command> [args...]
1974
+ `)}\n`}function cF(e){if(e.stdin===void 0)return;let n=_i(e.stdin);if(n.length===0)return;let r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e)&255;return t(r)}function lF(e){let t=!1,n,r,i=0;for(;i<e.length;){let a=e[i];if(a===`--help`||a===`-h`)return{help:!0};if(a===`--list`||a===`-l`){t=!0,i+=1;continue}if(a===`--cwd`){let t=e[i+1];if(t===void 0)return{error:`ssh: --cwd requires a directory argument`};n=t,i+=2;continue}if(a===`--timeout`){let t=e[i+1],n=Number(t);if(t===void 0||!Number.isFinite(n)||n<=0)return{error:`ssh: --timeout requires a positive number of seconds`};r=n,i+=2;continue}if(a.startsWith(`-`)&&a!==`-`)return{error:`ssh: unknown flag: ${a}`};break}let a=e[i],o=e.slice(i+1).join(` `);return{list:t,cwd:n,timeoutSec:r,runtimeId:a,command:o}}function uF(){return S(`ssh`,async(e,t)=>{let n=lF(e);if(`help`in n)return oF();if(`error`in n)return aF(n.error);if(n.list||n.runtimeId===void 0)return{stdout:sF(re()),stderr:``,exitCode:0};if(!n.command)return aF(`ssh: missing command
1975
+ Usage: ssh <runtime-id> <command...>`);let r=y();if(!r)return aF(`ssh: not available in this environment (needs the standalone app)`);let i=`ssh-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,a=()=>{r.call(`tray-exec-signal`,{execToken:i}).catch(()=>{})};t.signal?.addEventListener(`abort`,a,{once:!0});try{let e=n.timeoutSec?n.timeoutSec*1e3:void 0,a=await r.call(`tray-exec`,{runtimeId:n.runtimeId,command:n.command,cwd:n.cwd,execToken:i,timeoutMs:e,stdin:cF(t)},{timeoutMs:(e??864e5)+5e3});return a.error?{stdout:a.stdout,stderr:`${a.stderr}ssh: ${a.error}\n`,exitCode:a.exitCode||1}:{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode}}catch(e){return aF(`ssh: ${e instanceof Error?e.message:String(e)}`)}finally{t.signal?.removeEventListener(`abort`,a)}})}function dF(e){return{stdout:``,stderr:`${pt(`sudo`,e)}\n`,exitCode:77}}function fF(e={}){let{broker:t,persistGrant:n,suppressNextGate:r}=e;return S(`sudo`,async(e,i)=>{if(e.length===0)return{stdout:``,stderr:`sudo: usage: sudo <command> [args...]
1981
1976
  `,exitCode:1};if(e[0]===`--help`||e[0]===`-h`)return{stdout:`usage: sudo <command> [args...]
1982
1977
 
1983
1978
  Request human approval to run <command> with elevation. If approved, the
@@ -1994,14 +1989,14 @@ Options:
1994
1989
  -h, --help Show this help message and exit.
1995
1990
  `,stderr:``,exitCode:0};if(!t)return{stdout:``,stderr:`sudo: command-level approval is not configured
1996
1991
  `,exitCode:1};if(!i.exec)return{stdout:``,stderr:`sudo: cannot dispatch inner command in this context
1997
- `,exitCode:1};let a=nm(e[0],e.slice(1)),o=i.env?.get(am),s=await t.requestApproval({kind:`command`,detail:a,...o?{reason:o}:{}});if(s.decision===`deny`)return PF(s);if(s.decision===`always`){let e=s.pattern?.trim()||a;if(n)try{await n(e)}catch{}}return r&&r(a),i.exec(e[0],{cwd:i.cwd,args:e.slice(1)})})}function IF(e){let t=e instanceof Error?e.message:String(e);return/ENOENT|no such file/i.test(t)?`No such file or directory`:/ENOTEMPTY|not empty/i.test(t)?`Directory not empty`:t.replace(/^\w+:\s*/,``)}async function LF(e,t){return e.fs.lstat?e.fs.lstat(t):e.fs.stat(t)}function RF(e,t){return e.some(e=>/^-[^-]/.test(e)&&e.slice(1).includes(t))}async function zF(e,t,n){let r=e.fs.resolvePath(e.cwd,t);try{let i=await LF(e,r);return i.isDirectory&&!i.isSymbolicLink&&!n.recursive?{stdout:``,stderr:`rm: cannot remove '${t}': Is a directory\n`}:(await e.fs.rm(r,{recursive:n.recursive,force:n.force}),{stdout:n.verbose?`removed '${t}'\n`:``,stderr:``})}catch(e){return{stdout:``,stderr:n.force?``:`rm: cannot remove '${t}': ${IF(e)}\n`}}}function BF(){return S(`rm`,async(e,t)=>{let n={recursive:RF(e,`r`)||RF(e,`R`)||e.includes(`--recursive`),force:RF(e,`f`)||e.includes(`--force`),verbose:RF(e,`v`)||e.includes(`--verbose`)},r=e.filter(e=>!e.startsWith(`-`));if(r.length===0)return n.force?{stdout:``,stderr:``,exitCode:0}:{stdout:``,stderr:`rm: missing operand
1998
- `,exitCode:1};let i=await Promise.all(r.map(e=>zF(t,e,n))),a=i.map(e=>e.stdout).join(``),o=i.map(e=>e.stderr).join(``);return{stdout:a,stderr:o,exitCode:+!!o}})}function VF(e,t,n){let r=n.isSymbolicLink?`symbolic link`:n.isDirectory?`directory`:`regular file`;return e.replace(/%n/g,t).replace(/%N/g,`'${t}'`).replace(/%s/g,String(n.size)).replace(/%F/g,r).replace(/%a/g,n.mode.toString(8))}function HF(e){let t={follow:!1,paths:[]};for(let n=0;n<e.length;n++){let r=e[n];r===`-L`||r===`--dereference`?t.follow=!0:r===`-c`&&e[n+1]?t.format=e[++n]:r.startsWith(`--format=`)?t.format=r.slice(9):r.startsWith(`-`)||t.paths.push(r)}return t}async function UF(e,t,n){try{let r=e.fs.resolvePath(e.cwd,t),i=n.follow?await e.fs.stat(r):await LF(e,r);return{stdout:n.format?`${VF(n.format,t,i)}\n`:` File: ${t}\n Size: ${i.size}\n`,stderr:``}}catch{return{stdout:``,stderr:`stat: cannot stat '${t}': No such file or directory\n`}}}function WF(){return S(`stat`,async(e,t)=>{let n=HF(e);if(n.paths.length===0)return{stdout:``,stderr:`stat: missing operand
1999
- `,exitCode:1};let r=await Promise.all(n.paths.map(e=>UF(t,e,n))),i=r.map(e=>e.stdout).join(``),a=r.map(e=>e.stderr).join(``);return{stdout:i,stderr:a,exitCode:+!!a}})}function GF(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n<=0?`/`:t.slice(0,n)}async function KF(e,t,n,r){let i=e.fs.resolvePath(`/`,t).split(`/`).filter(Boolean),a=e.fs.resolvePath(e.cwd,t),o=``;for(let s=0;s<i.length;s++){try{let t=await LF(e,a);if(!t.isDirectory||t.isSymbolicLink)throw Error(`Not a directory`);await e.fs.rm(a,{recursive:!1,force:!1}),r&&(o+=`rmdir: removing directory, '${a}'\n`)}catch(e){return{stdout:o,stderr:`rmdir: failed to remove '${t}': ${IF(e)}\n`}}if(!n||s===i.length-1)return{stdout:o,stderr:``};a=GF(a)}return{stdout:o,stderr:``}}function qF(){return S(`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
2000
- `,exitCode:1};let a=await Promise.all(i.map(e=>KF(t,e,n,r))),o=a.map(e=>e.stdout).join(``),s=a.map(e=>e.stderr).join(``);return{stdout:o,stderr:s,exitCode:+!!s}})}function JF(){return{stdout:`usage: tar (-c|-x|-t) [-zv] -f <archive> [-C <dir>] [paths...]
2001
- `,stderr:``,exitCode:0}}function YF(e){return{stdout:``,stderr:`tar: ${e}\n`,exitCode:1}}function XF(e,t){if(e.mode)return YF(`exactly one of -c, -x, or -t is required`);e.mode=t}function ZF(e,t,n){if(n)return[n,t];let r=e[t+1];return r===void 0?void 0:[r,t+1]}const QF={c:`create`,x:`extract`,t:`list`};function $F(e,t,n,r,i){let a=QF[e];if(a)return{nextIndex:r,error:XF(i,a)};if(e===`z`)return i.gzip=!0,{nextIndex:r};if(e===`v`)return i.verbose=!0,{nextIndex:r};if(e!==`f`&&e!==`C`)return{nextIndex:r,error:YF(`unsupported option -${e}`)};let o=ZF(n,r,t);return o?(e===`f`?i.archive=o[0]:i.directory=o[0],{nextIndex:o[1],consumedValue:!0}):{nextIndex:r,error:YF(`option -${e} requires an argument`)}}function eI(e,t,n){let r=e[t];for(let i=1;i<r.length;i++){let a=$F(r[i],r.slice(i+1),e,t,n);if(a.error||a.consumedValue)return a}return{nextIndex:t}}const tI=/^[cxtzvfC]+$/;function nI(e){let t=e.length>0&&tI.test(e[0])?[`-${e[0]}`,...e.slice(1)]:e,n={gzip:!1,verbose:!1,directory:`.`,paths:[]};for(let e=0;e<t.length;e++){let r=t[e];if(!r.startsWith(`-`)||r===`-`){n.paths.push(r);continue}if(r.startsWith(`--`))return YF(`unsupported option ${r}`);let i=eI(t,e,n);if(i.error)return i.error;e=i.nextIndex}return n}function rI(e,t){let n=e.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^(?:\.\/)+/,``);return n?n===`.`?`.`:n.replace(/\/+$/,``):xr(t)}function iI(e){let t=e.mtime?.getTime();return t===void 0||Number.isNaN(t)?{}:{mtime:Math.floor(t/1e3)}}async function aI(e,t,n,r){let i=await e.fs.stat(t);if(i.isFile){let a=await e.fs.readFileBuffer(t),o=typeof i.mode==`number`?i.mode&511:void 0;r.push({path:n,bytes:a,...o===void 0?{}:{mode:o},...iI(i)});return}if(!i.isDirectory)throw Error(`unsupported file type: ${t}`);let a=n.endsWith(`/`)?n:`${n}/`,o=typeof i.mode==`number`?i.mode&511:void 0;r.push({path:a,bytes:new Uint8Array,directory:!0,...o===void 0?{}:{mode:o},...iI(i)});for(let n of await e.fs.readdir(t))await aI(e,br(t,n),`${a}${n}`,r)}function oI(e,t){let n=e.length>=2&&e[0]===31&&e[1]===139,r=t||n?pa(e):e;return fa(r,{stripNpmPrefix:!1,includeDirectories:!0,preserveRawPaths:!0})}function sI(e,t,n){let r=n.replace(/\\/g,`/`);if(!r||r.startsWith(`/`)||/^[a-zA-Z]:\//.test(r)||r.split(`/`).includes(`..`))return;let i=e.fs.resolvePath(t,r);return Or(t,i)?i:void 0}async function cI(e){try{await e()}catch(e){let t=e?.code;if(t===`ENOSYS`||t===`ENOTSUP`||t===`EOPNOTSUPP`)return;throw e}}async function lI(e,t,n,r){let i=new Map(t),a=new Map(n),o=[...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 cI(()=>r.updateMetadataBatch(s));return}let c=e.fs;if(typeof c.updateMetadataBatch==`function`){await cI(()=>c.updateMetadataBatch(s));return}for(let[e,n]of t)await cI(()=>c.chmod(e,n));for(let[e,t]of n){let n=new Date(t*1e3);await cI(()=>c.utimes(e,n,n))}}async function uI(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=Tr(t);c!==`/`&&await e.fs.mkdir(c,{recursive:!0}),await e.fs.writeFile(t,n.bytes),s&&i.push([t,n.mode])}async function dI(e,t){if(e.paths.length===0)return YF(`create mode requires at least one input path`);let n=[],r=t.fs.resolvePath(t.cwd,e.directory);for(let i of e.paths){let e=t.fs.resolvePath(r,i);await aI(t,e,rI(i,e),n)}let i=t.fs.resolvePath(t.cwd,e.archive),a=ua(n);return await t.fs.writeFile(i,e.gzip?da(a):a),{stdout:e.verbose?`${n.map(e=>e.path).join(`
2002
- `)}\n`:``,stderr:``,exitCode:0}}function fI(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 pI(e,t,n){if(e.paths.length>0)return YF(`${e.mode} mode does not accept input paths`);let r=t.fs.resolvePath(t.cwd,e.archive),i=oI(await t.fs.readFileBuffer(r),e.gzip);if(e.mode===`list`){let e=i.map(e=>e.path).join(`
2003
- `);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=sI(t,a,e.path);if(!n)return YF(`blocked suspicious path ${e.path}`);await uI(t,n,e,c,s),e.mtime!==void 0&&l.push([n,e.mtime]),o.push(e.path)}return await lI(t,[...fI(s),...fI(c)],fI(l),n),{stdout:e.verbose?`${o.join(`
2004
- `)}\n`:``,stderr:``,exitCode:0}}function mI(e={}){return S(`tar`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return JF();let r=nI(t);return`exitCode`in r?r:r.mode?r.archive?r.mode===`list`&&r.directory!==`.`?YF(`-C is only supported in create or extract mode`):r.mode===`create`?dI(r,n):pI(r,n,e.fs):YF(`option -f requires an archive path`):YF(`exactly one of -c, -x, or -t is required`)})}var hI=`/**
1992
+ `,exitCode:1};let a=$p(e[0],e.slice(1)),o=i.env?.get(nm),s=await t.requestApproval({kind:`command`,detail:a,...o?{reason:o}:{}});if(s.decision===`deny`)return dF(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 pF(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 mF(e,t){return e.fs.lstat?e.fs.lstat(t):e.fs.stat(t)}function hF(e,t){return e.some(e=>/^-[^-]/.test(e)&&e.slice(1).includes(t))}async function gF(e,t,n){let r=e.fs.resolvePath(e.cwd,t);try{let i=await mF(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}': ${pF(e)}\n`}}}function _F(){return S(`rm`,async(e,t)=>{let n={recursive:hF(e,`r`)||hF(e,`R`)||e.includes(`--recursive`),force:hF(e,`f`)||e.includes(`--force`),verbose:hF(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
1993
+ `,exitCode:1};let i=await Promise.all(r.map(e=>gF(t,e,n))),a=i.map(e=>e.stdout).join(``),o=i.map(e=>e.stderr).join(``);return{stdout:a,stderr:o,exitCode:+!!o}})}function vF(e,t,n){let r=n.isSymbolicLink?`symbolic link`:n.isDirectory?`directory`:`regular file`;return e.replace(/%n/g,t).replace(/%N/g,`'${t}'`).replace(/%s/g,String(n.size)).replace(/%F/g,r).replace(/%a/g,n.mode.toString(8))}function yF(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 bF(e,t,n){try{let r=e.fs.resolvePath(e.cwd,t),i=n.follow?await e.fs.stat(r):await mF(e,r);return{stdout:n.format?`${vF(n.format,t,i)}\n`:` File: ${t}\n Size: ${i.size}\n`,stderr:``}}catch{return{stdout:``,stderr:`stat: cannot stat '${t}': No such file or directory\n`}}}function xF(){return S(`stat`,async(e,t)=>{let n=yF(e);if(n.paths.length===0)return{stdout:``,stderr:`stat: missing operand
1994
+ `,exitCode:1};let r=await Promise.all(n.paths.map(e=>bF(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 SF(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n<=0?`/`:t.slice(0,n)}async function CF(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 mF(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}': ${pF(e)}\n`}}if(!n||s===i.length-1)return{stdout:o,stderr:``};a=SF(a)}return{stdout:o,stderr:``}}function wF(){return S(`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
1995
+ `,exitCode:1};let a=await Promise.all(i.map(e=>CF(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 TF(){return{stdout:`usage: tar (-c|-x|-t) [-zv] -f <archive> [-C <dir>] [paths...]
1996
+ `,stderr:``,exitCode:0}}function EF(e){return{stdout:``,stderr:`tar: ${e}\n`,exitCode:1}}function DF(e,t){if(e.mode)return EF(`exactly one of -c, -x, or -t is required`);e.mode=t}function OF(e,t,n){if(n)return[n,t];let r=e[t+1];return r===void 0?void 0:[r,t+1]}const kF={c:`create`,x:`extract`,t:`list`};function AF(e,t,n,r,i){let a=kF[e];if(a)return{nextIndex:r,error:DF(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:EF(`unsupported option -${e}`)};let o=OF(n,r,t);return o?(e===`f`?i.archive=o[0]:i.directory=o[0],{nextIndex:o[1],consumedValue:!0}):{nextIndex:r,error:EF(`option -${e} requires an argument`)}}function jF(e,t,n){let r=e[t];for(let i=1;i<r.length;i++){let a=AF(r[i],r.slice(i+1),e,t,n);if(a.error||a.consumedValue)return a}return{nextIndex:t}}const MF=/^[cxtzvfC]+$/;function NF(e){let t=e.length>0&&MF.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 EF(`unsupported option ${r}`);let i=jF(t,e,n);if(i.error)return i.error;e=i.nextIndex}return n}function PF(e,t){let n=e.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^(?:\.\/)+/,``);return n?n===`.`?`.`:n.replace(/\/+$/,``):vr(t)}function FF(e){let t=e.mtime?.getTime();return t===void 0||Number.isNaN(t)?{}:{mtime:Math.floor(t/1e3)}}async function IF(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},...FF(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},...FF(i)});for(let n of await e.fs.readdir(t))await IF(e,_r(t,n),`${a}${n}`,r)}function LF(e,t){let n=e.length>=2&&e[0]===31&&e[1]===139,r=t||n?ua(e):e;return la(r,{stripNpmPrefix:!1,includeDirectories:!0,preserveRawPaths:!0})}function RF(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 Tr(t,i)?i:void 0}async function zF(e){try{await e()}catch(e){let t=e?.code;if(t===`ENOSYS`||t===`ENOTSUP`||t===`EOPNOTSUPP`)return;throw e}}async function BF(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 zF(()=>r.updateMetadataBatch(s));return}let c=e.fs;if(typeof c.updateMetadataBatch==`function`){await zF(()=>c.updateMetadataBatch(s));return}for(let[e,n]of t)await zF(()=>c.chmod(e,n));for(let[e,t]of n){let n=new Date(t*1e3);await zF(()=>c.utimes(e,n,n))}}async function VF(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=Sr(t);c!==`/`&&await e.fs.mkdir(c,{recursive:!0}),await e.fs.writeFile(t,n.bytes),s&&i.push([t,n.mode])}async function HF(e,t){if(e.paths.length===0)return EF(`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 IF(t,e,PF(i,e),n)}let i=t.fs.resolvePath(t.cwd,e.archive),a=sa(n);return await t.fs.writeFile(i,e.gzip?ca(a):a),{stdout:e.verbose?`${n.map(e=>e.path).join(`
1997
+ `)}\n`:``,stderr:``,exitCode:0}}function UF(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 WF(e,t,n){if(e.paths.length>0)return EF(`${e.mode} mode does not accept input paths`);let r=t.fs.resolvePath(t.cwd,e.archive),i=LF(await t.fs.readFileBuffer(r),e.gzip);if(e.mode===`list`){let e=i.map(e=>e.path).join(`
1998
+ `);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=RF(t,a,e.path);if(!n)return EF(`blocked suspicious path ${e.path}`);await VF(t,n,e,c,s),e.mtime!==void 0&&l.push([n,e.mtime]),o.push(e.path)}return await BF(t,[...UF(s),...UF(c)],UF(l),n),{stdout:e.verbose?`${o.join(`
1999
+ `)}\n`:``,stderr:``,exitCode:0}}function GF(e={}){return S(`tar`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return TF();let r=NF(t);return`exitCode`in r?r:r.mode?r.archive?r.mode===`list`&&r.directory!==`.`?EF(`-C is only supported in create or extract mode`):r.mode===`create`?HF(r,n):WF(r,n,e.fs):EF(`option -f requires an archive path`):EF(`exactly one of -c, -x, or -t is required`)})}var KF=`/**
2005
2000
  * Standalone assertions - no dependency on test runner
2006
2001
  *
2007
2002
  * Each assertion:
@@ -2189,7 +2184,7 @@ function sameMembers(a, b) {
2189
2184
  }
2190
2185
 
2191
2186
  const slice = a => (isPrimitive(a) ? a : a.slice ? a.slice() : Object.assign({}, a))
2192
- `,gI=`/**
2187
+ `,qF=`/**
2193
2188
  * tst - minimal test runner
2194
2189
  *
2195
2190
  * - Standalone assertions (assert.js works anywhere)
@@ -2819,7 +2814,7 @@ function scheduleAutoRun() {
2819
2814
  scheduleAutoRun()
2820
2815
 
2821
2816
  export * from './assert.js'
2822
- `;function _I(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 vI=`tsc - thin wrapper over the ipk-loaded TypeScript 6 package
2817
+ `;function JF(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 YF=`tsc - thin wrapper over the ipk-loaded TypeScript 6 package
2823
2818
 
2824
2819
  Usage:
2825
2820
  tsc [options] [files...]
@@ -2839,32 +2834,32 @@ Notes:
2839
2834
 
2840
2835
  Install:
2841
2836
  Inert until the backing package is installed in node_modules:
2842
- ${Dr}
2837
+ ${wr}
2843
2838
  Then \`tsc --version\` and the transpile commands above. There is no
2844
2839
  bundled binary, no CDN fallback; a missing package exits non-zero
2845
2840
  with a clear \`ipk add\` hint.
2846
- `;function yI(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 bI(e,t){let n=`${xr(e).replace(/\.(ts|tsx|mts|cts)$/i,``)}.js`;return t?`${t.endsWith(`/`)?t.slice(0,-1):t}/${n}`:`${Tr(e)}/${n}`}async function xI(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=Tr(n)}return null}function SI(e){return{target:e.ScriptTarget.ES2022,module:e.ModuleKind.ESNext,moduleResolution:e.ModuleResolutionKind.Bundler,esModuleInterop:!0,allowSyntheticDefaultImports:!0,isolatedModules:!0}}function CI(e){if(typeof e!=`object`||!e)return{};let{compilerOptions:t}=e;return t??{}}async function wI(e,t,n){let r=SI(t),i=await xI(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,...CI(o)}}}function TI(e,t){let n=e.flattenDiagnosticMessageText(t.messageText,`
2847
- `);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 EI(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 DI(e,t,n,r,i){let a=e.transpileModule(t,{compilerOptions:r,fileName:n,reportDiagnostics:i});return{outputText:a.outputText,diagnostics:a.diagnostics??[]}}function OI(e,t,n,r){let{outputText:i,diagnostics:a}=DI(e,r,`<stdin>.ts`,n.compilerOptions,!0),o=a.map(t=>TI(e,t)),s=o.length>0?`${o.join(`
2848
- `)}\n`:``;return{stdout:t.noEmit?``:i,stderr:s,exitCode:+(a.length>0)}}async function kI(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}}EI(e,a);let{outputText:s,diagnostics:c}=DI(e,o,a,i.compilerOptions,!0),l=[];for(let t of c)l.push(`${TI(e,t)}\n`);let u=c.length>0;if(r.noEmit)return{stderr:l.join(``),hadError:u};let d=t.fs.resolvePath(t.cwd,bI(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 AI(e,t){let n;try{n=yI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:vI,stderr:``,exitCode:0}};let r;try{r=await vr(_I(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 jI(){return S(`tsc`,async(e,t)=>{let n=await AI(e,t);if(`done`in n)return n.done;let{parsed:r,ts:i}=n,a=await wI(t.fs,i,t.cwd);if(r.files.length===0){let e=P(t.stdin);return e?OI(i,r,a,e):{stdout:vI,stderr:``,exitCode:0}}let o=[],s=!1;for(let e of r.files){let n=await kI(i,t,e,r,a);n.stderr&&o.push(n.stderr),n.hadError&&(s=!0)}return{stdout:``,stderr:o.join(``),exitCode:+!!s}})}const MI=[`**/*.test.{js,ts}`];function NI(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 PI(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 FI(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=NI(s,e[o+1]);if(c){n=c.reporter,c.consumed===2&&(o+=1);continue}let l=PI(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:[...MI],reporter:n,showHelp:r,coverage:i,coverageDir:a}}function II(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 II(`${r}${e}${i}`))o.push(t);return o}function LI(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 RI(e,t,n){let r=n.flatMap(II).map(LI),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 zI=null;async function BI(e){if(zI)return zI;let t={module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,esModuleInterop:!0,isolatedModules:!1};return zI=`
2841
+ `;function XF(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 ZF(e,t){let n=`${vr(e).replace(/\.(ts|tsx|mts|cts)$/i,``)}.js`;return t?`${t.endsWith(`/`)?t.slice(0,-1):t}/${n}`:`${Sr(e)}/${n}`}async function QF(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=Sr(n)}return null}function $F(e){return{target:e.ScriptTarget.ES2022,module:e.ModuleKind.ESNext,moduleResolution:e.ModuleResolutionKind.Bundler,esModuleInterop:!0,allowSyntheticDefaultImports:!0,isolatedModules:!0}}function eI(e){if(typeof e!=`object`||!e)return{};let{compilerOptions:t}=e;return t??{}}async function tI(e,t,n){let r=$F(t),i=await QF(e,n);if(!i)return{compilerOptions:{...r}};let a;try{a=await e.readFile(i)}catch{return{compilerOptions:{...r}}}let{config:o,error:s}=t.parseConfigFileTextToJson(i,a);return s||!o?{compilerOptions:{...r}}:{compilerOptions:{...r,...eI(o)}}}function nI(e,t){let n=e.flattenDiagnosticMessageText(t.messageText,`
2842
+ `);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 rI(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 iI(e,t,n,r,i){let a=e.transpileModule(t,{compilerOptions:r,fileName:n,reportDiagnostics:i});return{outputText:a.outputText,diagnostics:a.diagnostics??[]}}function aI(e,t,n,r){let{outputText:i,diagnostics:a}=iI(e,r,`<stdin>.ts`,n.compilerOptions,!0),o=a.map(t=>nI(e,t)),s=o.length>0?`${o.join(`
2843
+ `)}\n`:``;return{stdout:t.noEmit?``:i,stderr:s,exitCode:+(a.length>0)}}async function oI(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}}rI(e,a);let{outputText:s,diagnostics:c}=iI(e,o,a,i.compilerOptions,!0),l=[];for(let t of c)l.push(`${nI(e,t)}\n`);let u=c.length>0;if(r.noEmit)return{stderr:l.join(``),hadError:u};let d=t.fs.resolvePath(t.cwd,ZF(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 sI(e,t){let n;try{n=XF(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:YF,stderr:``,exitCode:0}};let r;try{r=await hr(JF(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 cI(){return S(`tsc`,async(e,t)=>{let n=await sI(e,t);if(`done`in n)return n.done;let{parsed:r,ts:i}=n,a=await tI(t.fs,i,t.cwd);if(r.files.length===0){let e=P(t.stdin);return e?aI(i,r,a,e):{stdout:YF,stderr:``,exitCode:0}}let o=[],s=!1;for(let e of r.files){let n=await oI(i,t,e,r,a);n.stderr&&o.push(n.stderr),n.hadError&&(s=!0)}return{stdout:``,stderr:o.join(``),exitCode:+!!s}})}const lI=[`**/*.test.{js,ts}`];function uI(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 dI(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 fI(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=uI(s,e[o+1]);if(c){n=c.reporter,c.consumed===2&&(o+=1);continue}let l=dI(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:[...lI],reporter:n,showHelp:r,coverage:i,coverageDir:a}}function pI(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 pI(`${r}${e}${i}`))o.push(t);return o}function mI(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 hI(e,t,n){let r=n.flatMap(pI).map(mI),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 gI=null;async function _I(e){if(gI)return gI;let t={module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,esModuleInterop:!0,isolatedModules:!1};return gI=`
2849
2844
  if (typeof process !== 'undefined' && !process.versions) {
2850
2845
  try { process.versions = { node: '20.0.0' }; } catch (_) { /* readonly process.versions is fine */ }
2851
2846
  }
2852
2847
  const __tst_assert_exports = (function () {
2853
2848
  const module = { exports: {} };
2854
2849
  const exports = module.exports;
2855
- ${e.transpileModule(hI,{compilerOptions:t,fileName:`assert.js`}).outputText}
2850
+ ${e.transpileModule(KF,{compilerOptions:t,fileName:`assert.js`}).outputText}
2856
2851
  return module.exports;
2857
2852
  })();
2858
2853
  const __tst_module_exports = (function () {
2859
2854
  const module = { exports: {} };
2860
2855
  const exports = module.exports;
2861
- ${e.transpileModule(gI,{compilerOptions:t,fileName:`tst.js`}).outputText.replace(/require\(["']\.\/assert\.js["']\)/g,`__tst_assert_exports`).replace(/\bimport\.meta\b/g,`({url:""})`).replace(/await\s+import\(['"](?:worker_threads|fs|path)['"]\)/g,`await Promise.reject(new Error("tst: fork mode is not supported in the realm"))`)}
2856
+ ${e.transpileModule(qF,{compilerOptions:t,fileName:`tst.js`}).outputText.replace(/require\(["']\.\/assert\.js["']\)/g,`__tst_assert_exports`).replace(/\bimport\.meta\b/g,`({url:""})`).replace(/await\s+import\(['"](?:worker_threads|fs|path)['"]\)/g,`await Promise.reject(new Error("tst: fork mode is not supported in the realm"))`)}
2862
2857
  return module.exports;
2863
2858
  })();
2864
2859
  const __tst = __tst_module_exports.default || __tst_module_exports;
2865
2860
  __tst.manual = true;
2866
- `.trim(),zI}function VI(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 HI(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 UI(e,t,n){let r=b(`${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 WI(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=Tr(n),u=new Map;for(let n of HI(r)){if(!n.startsWith(`./`)&&!n.startsWith(`../`))continue;let r=await UI(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 GI(e,t,n,r,i,a,o=``,s=``){let c=r===`spec`?`pretty`:`tap`,l=[];for(let[e,t]of i.entries()){let n=VI(t,a.get(e)??new Map);l.push(`${JSON.stringify(e)}: function (module, exports, require) {\n${n}\n}`)}let u=`{${l.join(`,
2867
- `)}}`,d=VI(n,a.get(t)??new Map),f=o,p=s;return`"use strict";
2861
+ `.trim(),gI}function vI(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 yI(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 bI(e,t,n){let r=b(`${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 xI(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=Sr(n),u=new Map;for(let n of yI(r)){if(!n.startsWith(`./`)&&!n.startsWith(`../`))continue;let r=await bI(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 SI(e,t,n,r,i,a,o=``,s=``){let c=r===`spec`?`pretty`:`tap`,l=[];for(let[e,t]of i.entries()){let n=vI(t,a.get(e)??new Map);l.push(`${JSON.stringify(e)}: function (module, exports, require) {\n${n}\n}`)}let u=`{${l.join(`,
2862
+ `)}}`,d=vI(n,a.get(t)??new Map),f=o,p=s;return`"use strict";
2868
2863
  ${f}${e}
2869
2864
  const __realmRequire = require;
2870
2865
  const { createRequire: __createRequire } = __realmRequire("module");
@@ -2907,7 +2902,7 @@ await Promise.resolve();
2907
2902
  await new Promise((resolve) => setTimeout(resolve));
2908
2903
  ${p}
2909
2904
  if (__state && __state.failed && __state.failed.length > 0) process.exit(1);
2910
- `}const KI={esModuleInterop:!0,allowJs:!0,isolatedModules:!1};function qI(e){return{module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,...KI}}async function JI(e,t){let n;try{n=FI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:`tst - run *.test.{js,ts} files with the bundled tst runner
2905
+ `}const CI={esModuleInterop:!0,allowJs:!0,isolatedModules:!1};function wI(e){return{module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,...CI}}async function TI(e,t){let n;try{n=fI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:`tst - run *.test.{js,ts} files with the bundled tst runner
2911
2906
 
2912
2907
  Usage:
2913
2908
  tst [options] [glob...]
@@ -2929,7 +2924,7 @@ Notes:
2929
2924
  with statement counters. nyc/c8 cannot wrap this runner: it is not a
2930
2925
  Node child. Istanbul/Babel are not bundled (webapp size-limit); the
2931
2926
  TypeScript AST already in process does the rewrite.
2932
- `,stderr:``,exitCode:0}};let r=await RI(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 vr(_I(t))}catch(e){return{done:{stdout:``,stderr:`tst: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}let a=await BI(i),o=n.coverage?await import(`./coverage-instrument-CjoHgKzK.js`):null;return{parsed:n,files:r,ts:i,harness:a,userOpts:qI(i),coverageMaps:{},coverageCounts:{},coverageMod:o}}function YI(e){return e.includes(`# fail `)||/(^|\n)not ok /.test(e)}async function XI(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 WI(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=GI(a,n,d,s.reporter,f,p,c?`${c.coverageRuntimeSource()}\n`:``,c?`\n${c.coverageDumpSource()}`:``),h=await ci(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||YI(g)}}function ZI(){return S(`tst`,async(e,t)=>{let n=await JI(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 XI(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 QI=[],$I=`usage: theme <subcommand> [args]
2927
+ `,stderr:``,exitCode:0}};let r=await hI(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 hr(JF(t))}catch(e){return{done:{stdout:``,stderr:`tst: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}let a=await _I(i),o=n.coverage?await import(`./coverage-instrument-CjoHgKzK.js`):null;return{parsed:n,files:r,ts:i,harness:a,userOpts:wI(i),coverageMaps:{},coverageCounts:{},coverageMod:o}}function EI(e){return e.includes(`# fail `)||/(^|\n)not ok /.test(e)}async function DI(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 xI(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=SI(a,n,d,s.reporter,f,p,c?`${c.coverageRuntimeSource()}\n`:``,c?`\n${c.coverageDumpSource()}`:``),h=await ai(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||EI(g)}}function OI(){return S(`tst`,async(e,t)=>{let n=await TI(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 DI(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 kI=[],AI=`usage: theme <subcommand> [args]
2933
2928
 
2934
2929
  Subcommands:
2935
2930
  list List available preset and custom themes
@@ -2938,23 +2933,23 @@ Subcommands:
2938
2933
  reset Reset to the default theme
2939
2934
  current Show the currently active theme
2940
2935
  export <id> <path> Export a theme to a VFS path
2941
- `;function eL(e,t){return{stdout:``,stderr:`theme ${e}: ${t}\n`,exitCode:1}}function tL(){return S(`theme`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return{stdout:$I,stderr:``,exitCode:0};let n=e[0];return w(e.slice(1),{valueFlags:QI})?{stdout:lt(`theme`,n,$I),stderr:``,exitCode:0}:n===`list`?nL(e):n===`current`?rL(e):n===`reset`?iL(e):n===`apply`?aL(e.slice(1),t):n===`export`?oL(e.slice(1),t):{stdout:``,stderr:`theme: unknown subcommand "${n}"\n${$I}`,exitCode:1}})}async function nL(e){let t=C(e.slice(1),{value:QI});if(`error`in t)return eL(`list`,t.error);let{PRESETS:n}=await import(`./theme-presets-xiOb9AFN.js`),r=[`Presets:`];for(let e of n)r.push(` ${e.id.padEnd(16)} ${e.name}`);return r.push(``),{stdout:r.join(`
2942
- `),stderr:``,exitCode:0}}async function rL(e){let t=C(e.slice(1),{value:QI});return`error`in t?eL(`current`,t.error):{stdout:`Check the Theme settings dialog for the active theme.
2943
- `,stderr:``,exitCode:0}}async function iL(e){let t=C(e.slice(1),{value:QI});if(`error`in t)return eL(`reset`,t.error);let n=y();return n?(await n.call(`theme-apply`,{action:`reset`}),{stdout:`Theme reset to default.
2936
+ `;function jI(e,t){return{stdout:``,stderr:`theme ${e}: ${t}\n`,exitCode:1}}function MI(){return S(`theme`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return{stdout:AI,stderr:``,exitCode:0};let n=e[0];return w(e.slice(1),{valueFlags:kI})?{stdout:ot(`theme`,n,AI),stderr:``,exitCode:0}:n===`list`?NI(e):n===`current`?PI(e):n===`reset`?FI(e):n===`apply`?II(e.slice(1),t):n===`export`?LI(e.slice(1),t):{stdout:``,stderr:`theme: unknown subcommand "${n}"\n${AI}`,exitCode:1}})}async function NI(e){let t=C(e.slice(1),{value:kI});if(`error`in t)return jI(`list`,t.error);let{PRESETS:n}=await import(`./theme-presets-xiOb9AFN.js`),r=[`Presets:`];for(let e of n)r.push(` ${e.id.padEnd(16)} ${e.name}`);return r.push(``),{stdout:r.join(`
2937
+ `),stderr:``,exitCode:0}}async function PI(e){let t=C(e.slice(1),{value:kI});return`error`in t?jI(`current`,t.error):{stdout:`Check the Theme settings dialog for the active theme.
2938
+ `,stderr:``,exitCode:0}}async function FI(e){let t=C(e.slice(1),{value:kI});if(`error`in t)return jI(`reset`,t.error);let n=y();return n?(await n.call(`theme-apply`,{action:`reset`}),{stdout:`Theme reset to default.
2944
2939
  `,stderr:``,exitCode:0}):{stdout:``,stderr:`theme: no panel-RPC connection available
2945
- `,exitCode:1}}async function aL(e,t){let n=C(e,{value:QI});if(`error`in n)return eL(`apply`,n.error);if(n.positionals.length===0)return{stdout:``,stderr:`theme apply: missing theme id or path
2940
+ `,exitCode:1}}async function II(e,t){let n=C(e,{value:kI});if(`error`in n)return jI(`apply`,n.error);if(n.positionals.length===0)return{stdout:``,stderr:`theme apply: missing theme id or path
2946
2941
  `,exitCode:1};let r=y();if(!r)return{stdout:``,stderr:`theme: no panel-RPC connection available
2947
2942
  `,exitCode:1};let i=n.positionals[0],{PRESETS:a}=await import(`./theme-presets-xiOb9AFN.js`),o=a.find(e=>e.id===i);if(o){let e=JSON.stringify(o);return await r.call(`theme-apply`,{themeJson:e,action:`apply`}),{stdout:`Applied theme: ${o.name}\n`,stderr:``,exitCode:0}}let s=t.fs.resolvePath(t.cwd,i),c;try{c=await t.fs.readFile(s)}catch{return{stdout:``,stderr:`theme apply: "${i}" is not a known preset id and file not found at ${s}\n`,exitCode:1}}try{let e=JSON.parse(c);if(!e.id||!e.name||!e.base||!e.tokens)return{stdout:``,stderr:`theme apply: invalid theme file (missing id, name, base, or tokens)
2948
2943
  `,exitCode:1}}catch{return{stdout:``,stderr:`theme apply: file is not valid JSON
2949
- `,exitCode:1}}return{stdout:`Applied theme: ${(await r.call(`theme-apply`,{themeJson:c,action:`apply`})).applied}\n`,stderr:``,exitCode:0}}async function oL(e,t){let n=C(e,{value:QI});if(`error`in n)return eL(`export`,n.error);if(n.positionals.length<2)return{stdout:``,stderr:`theme export: usage: theme export <id> <path>
2950
- `,exitCode:1};let[r,i]=n.positionals,{PRESETS:a}=await import(`./theme-presets-xiOb9AFN.js`),o=a.find(e=>e.id===r);if(!o)return{stdout:``,stderr:`theme export: unknown preset id "${r}"\n`,exitCode:1};let s=t.fs.resolvePath(t.cwd,i);try{await t.fs.writeFile(s,JSON.stringify(o,null,2))}catch(e){return{stdout:``,stderr:`theme export: write failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return{stdout:`Exported "${o.name}" to ${s}\n`,stderr:``,exitCode:0}}const sL=`unknown`,cL=`usage: uname [-amnorsv]`,lL=[`s`,`n`,`r`,`v`,`m`,`o`];function uL(){return{stdout:[cL,` -s kernel name (SLICC) -n nodename (leader/follower/standalone)`,` -r release (SLICC version) -v build stamp`,` -m machine (realm platform) -o operating system (user agent)`,` -a all of the above, in uname order`,``].join(`
2951
- `),stderr:``,exitCode:0}}function dL(){let{releasedAt:e,buildId:t}=nt();return e?`${t} (${e})`:t}function fL(){let e=globalThis.navigator,t=e?.userAgentData?.platform||e?.platform;return typeof t==`string`&&t.length>0?t:sL}function pL(){let e=globalThis.navigator?.userAgent;return typeof e==`string`&&e.length>0?e:sL}function mL(e){switch(e){case`s`:return`SLICC`;case`n`:return tt();case`r`:return nt().version;case`v`:return dL();case`m`:return fL();case`o`:return pL()}}function hL(e){return{stdout:``,stderr:`uname: ${e}\n${cL}\n`,exitCode:1}}function gL(e){let t=new Set;for(let n of e){if(!n.startsWith(`-`)||n===`-`)return{error:`extra operand '${n}'`};if(n.startsWith(`--`))return{error:`unrecognized option '${n}'`};for(let e of n.slice(1)){if(e===`a`){for(let e of lL)t.add(e);continue}if(!lL.includes(e))return{error:`unrecognized option '-${e}'`};t.add(e)}}return t}function _L(){return S(`uname`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return uL();let t=gL(e);return`error`in t?hL(t.error):{stdout:`${(t.size>0?lL.filter(e=>t.has(e)):[`s`]).map(mL).join(` `)}\n`,stderr:``,exitCode:0}})}function vL(){return S(`unlink`,async(e,t)=>{if(e.includes(`--help`))return{stdout:`Usage: unlink FILE
2944
+ `,exitCode:1}}return{stdout:`Applied theme: ${(await r.call(`theme-apply`,{themeJson:c,action:`apply`})).applied}\n`,stderr:``,exitCode:0}}async function LI(e,t){let n=C(e,{value:kI});if(`error`in n)return jI(`export`,n.error);if(n.positionals.length<2)return{stdout:``,stderr:`theme export: usage: theme export <id> <path>
2945
+ `,exitCode:1};let[r,i]=n.positionals,{PRESETS:a}=await import(`./theme-presets-xiOb9AFN.js`),o=a.find(e=>e.id===r);if(!o)return{stdout:``,stderr:`theme export: unknown preset id "${r}"\n`,exitCode:1};let s=t.fs.resolvePath(t.cwd,i);try{await t.fs.writeFile(s,JSON.stringify(o,null,2))}catch(e){return{stdout:``,stderr:`theme export: write failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return{stdout:`Exported "${o.name}" to ${s}\n`,stderr:``,exitCode:0}}const RI=`unknown`,zI=`usage: uname [-amnorsv]`,BI=[`s`,`n`,`r`,`v`,`m`,`o`];function VI(){return{stdout:[zI,` -s kernel name (SLICC) -n nodename (leader/follower/standalone)`,` -r release (SLICC version) -v build stamp`,` -m machine (realm platform) -o operating system (user agent)`,` -a all of the above, in uname order`,``].join(`
2946
+ `),stderr:``,exitCode:0}}function HI(){let{releasedAt:e,buildId:t}=$e();return e?`${t} (${e})`:t}function UI(){let e=globalThis.navigator,t=e?.userAgentData?.platform||e?.platform;return typeof t==`string`&&t.length>0?t:RI}function WI(){let e=globalThis.navigator?.userAgent;return typeof e==`string`&&e.length>0?e:RI}function GI(e){switch(e){case`s`:return`SLICC`;case`n`:return Qe();case`r`:return $e().version;case`v`:return HI();case`m`:return UI();case`o`:return WI()}}function KI(e){return{stdout:``,stderr:`uname: ${e}\n${zI}\n`,exitCode:1}}function qI(e){let t=new Set;for(let n of e){if(!n.startsWith(`-`)||n===`-`)return{error:`extra operand '${n}'`};if(n.startsWith(`--`))return{error:`unrecognized option '${n}'`};for(let e of n.slice(1)){if(e===`a`){for(let e of BI)t.add(e);continue}if(!BI.includes(e))return{error:`unrecognized option '-${e}'`};t.add(e)}}return t}function JI(){return S(`uname`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return VI();let t=qI(e);return`error`in t?KI(t.error):{stdout:`${(t.size>0?BI.filter(e=>t.has(e)):[`s`]).map(GI).join(` `)}\n`,stderr:``,exitCode:0}})}function YI(){return S(`unlink`,async(e,t)=>{if(e.includes(`--help`))return{stdout:`Usage: unlink FILE
2952
2947
  Remove FILE. Symbolic links are removed without following their target.
2953
2948
  `,stderr:``,exitCode:0};if(e.length!==1||e[0].startsWith(`-`))return{stdout:``,stderr:e.length===0?`unlink: missing operand
2954
2949
  `:`unlink: extra operand
2955
- `,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 yL(){return{stdout:`usage: unzip <archive.zip> [-d <destination>]
2956
- `,stderr:``,exitCode:0}}function bL(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
2957
- `,exitCode:1}}:{kind:`ok`,archive:n[0],destination:t||`.`}}async function xL(e,t,n,r){let i=n.replace(/\\/g,`/`);if(!i||i.endsWith(`/`))return!1;let a=e.fs.resolvePath(t,i);if(!Or(t,a))return{stdout:``,stderr:`unzip: blocked suspicious path ${n}\n`,exitCode:1};let o=Tr(a);return o!==`/`&&await e.fs.mkdir(o,{recursive:!0}),await e.fs.writeFile(a,r),!0}function SL(){return S(`unzip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return yL();let n=bL(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=At(a),s=0;for(let[e,n]of Object.entries(o)){let r=await xL(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 CL=`ai-ecoverse/slicc`,wL=`usage: upgrade status | upgrade apply --from=<version> --to=<version>`,TL=`packages/vfs-root`,EL=3e4,DL=[`${TL}/workspace/skills/`,`${TL}/shared/sprinkles/`,`${TL}/shared/sounds/`,`${TL}/shared/GELATIERE.md`,`${TL}/shared/wiki/WIKI.md`,`${TL}/etc/`],OL=[`auto-applied`,`merged-clean`,`kept-local`,`needs-review`,`unchanged`,`added-new`];function kL(){return Object.fromEntries(OL.map(e=>[e,0]))}function AL(e,t,n,r){let i=kL();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 jL(e){if(e[0]!==`apply`)throw Error(wL);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 ML(e){return e.startsWith(`v`)?e:`v${e}`}function NL(e){if(!DL.some(t=>e.startsWith(t)))return null;let t=e.slice(17);return!t||t.split(`/`).some(e=>e===`.`||e===`..`)||t.startsWith(`/workspace/skills/`)&&he()?null:t}async function PL(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 ${EL}ms`)),EL)})])}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 FL(e,t){let n=await PL(t,`https://api.github.com/repos/${CL}/git/trees/${encodeURIComponent(e)}?recursive=1`),r=be(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=NL(e.path);t&&i.set(t,e.path)}return i}function IL(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`https://raw.githubusercontent.com/${CL}/${encodeURIComponent(e)}/${n}`}function LL(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}function RL(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}async function zL(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 BL(e,t,n,r,i){let a=`${t}.upgrade-${ML(n)}-to-${ML(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 VL(e,t,n,r,i,a,o){let s=await zL(e.fs,t);if(!a)return{path:t,classification:s?`kept-local`:`unchanged`};if(!i)return s?{path:t,classification:LL(s,a)?`unchanged`:`kept-local`}:{path:t,classification:`added-new`,content:a};if(LL(i,a)||LL(s,a))return{path:t,classification:`unchanged`};if(!s)return{path:t,classification:`kept-local`};if(LL(s,i))return{path:t,classification:`auto-applied`,content:a};let[c,l,u]=[s,i,a].map(RL);if(c!==null&&l!==null&&u!==null){let i=ze(c,l,u,{diff3:!0,labels:{current:`local:${t}`,base:`${ML(n)}:${t}`,other:`${ML(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 BL(e.fs,t,n,r,o)}}return{path:t,classification:`needs-review`,content:a,sidecar:await BL(e.fs,t,n,r,o)}}async function HL(e,t){t.content?await e.writeFile(t.path,t.content):await e.exists(t.path)&&await e.rm(t.path)}async function UL(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 zL(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 HL(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 WL(e,t,n){let r=ML(t),i=ML(n),[a,o]=await Promise.all([FL(r,e.fetch),FL(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)?PL(e.fetch,IL(r,a.get(t))).then(e=>Se(e.body)):void 0,o.has(t)?PL(e.fetch,IL(i,o.get(t))).then(e=>Se(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 VL(e,r,t,n,i,a,l));return await UL(e.fs,u),u}async function GL(e){let{version:t,releasedAt:n,buildId:r}=nt(),i=[],a=null,o=e.getLastSeen??rt();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 KL(e){return S(`upgrade`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`${wL}\n`,stderr:``,exitCode:0};if(t[0]===`status`)return t.length>1?{stdout:AL(``,``,[],[`unsupported argument: ${t[1]}`]),stderr:``,exitCode:1}:{stdout:await GL(e),stderr:``,exitCode:0};let n=``,r=``;try{({from:n,to:r}=jL(t));let i=await WL(e,n,r),a=i.some(e=>e.classification===`needs-review`);return{stdout:AL(n,r,i,[]),stderr:``,exitCode:+!!a}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:AL(n,r,[],[t]),stderr:``,exitCode:1}}})}const qL=`usage: uptime [-p|--pretty] [-s|--since]`,JL=`${qL}
2950
+ `,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 XI(){return{stdout:`usage: unzip <archive.zip> [-d <destination>]
2951
+ `,stderr:``,exitCode:0}}function ZI(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
2952
+ `,exitCode:1}}:{kind:`ok`,archive:n[0],destination:t||`.`}}async function QI(e,t,n,r){let i=n.replace(/\\/g,`/`);if(!i||i.endsWith(`/`))return!1;let a=e.fs.resolvePath(t,i);if(!Tr(t,a))return{stdout:``,stderr:`unzip: blocked suspicious path ${n}\n`,exitCode:1};let o=Sr(a);return o!==`/`&&await e.fs.mkdir(o,{recursive:!0}),await e.fs.writeFile(a,r),!0}function $I(){return S(`unzip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return XI();let n=ZI(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=Dt(a),s=0;for(let[e,n]of Object.entries(o)){let r=await QI(t,i,e,n);if(r===!0)s++;else if(r!==!1)return r}return{stdout:`extracted ${s} file(s) to ${i}\n`,stderr:``,exitCode:0}})}const eL=`ai-ecoverse/slicc`,tL=`usage: upgrade status | upgrade apply --from=<version> --to=<version>`,nL=`packages/vfs-root`,rL=3e4,iL=[`${nL}/workspace/skills/`,`${nL}/shared/sprinkles/`,`${nL}/shared/sounds/`,`${nL}/shared/GELATIERE.md`,`${nL}/shared/wiki/WIKI.md`,`${nL}/etc/`],aL=[`auto-applied`,`merged-clean`,`kept-local`,`needs-review`,`unchanged`,`added-new`];function oL(){return Object.fromEntries(aL.map(e=>[e,0]))}function sL(e,t,n,r){let i=oL();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 cL(e){if(e[0]!==`apply`)throw Error(tL);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 lL(e){return e.startsWith(`v`)?e:`v${e}`}function uL(e){if(!iL.some(t=>e.startsWith(t)))return null;let t=e.slice(17);return!t||t.split(`/`).some(e=>e===`.`||e===`..`)||t.startsWith(`/workspace/skills/`)&&he()?null:t}async function dL(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 ${rL}ms`)),rL)})])}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 fL(e,t){let n=await dL(t,`https://api.github.com/repos/${eL}/git/trees/${encodeURIComponent(e)}?recursive=1`),r=be(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=uL(e.path);t&&i.set(t,e.path)}return i}function pL(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`https://raw.githubusercontent.com/${eL}/${encodeURIComponent(e)}/${n}`}function mL(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}function hL(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}async function gL(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 _L(e,t,n,r,i){let a=`${t}.upgrade-${lL(n)}-to-${lL(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 vL(e,t,n,r,i,a,o){let s=await gL(e.fs,t);if(!a)return{path:t,classification:s?`kept-local`:`unchanged`};if(!i)return s?{path:t,classification:mL(s,a)?`unchanged`:`kept-local`}:{path:t,classification:`added-new`,content:a};if(mL(i,a)||mL(s,a))return{path:t,classification:`unchanged`};if(!s)return{path:t,classification:`kept-local`};if(mL(s,i))return{path:t,classification:`auto-applied`,content:a};let[c,l,u]=[s,i,a].map(hL);if(c!==null&&l!==null&&u!==null){let i=ze(c,l,u,{diff3:!0,labels:{current:`local:${t}`,base:`${lL(n)}:${t}`,other:`${lL(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 _L(e.fs,t,n,r,o)}}return{path:t,classification:`needs-review`,content:a,sidecar:await _L(e.fs,t,n,r,o)}}async function yL(e,t){t.content?await e.writeFile(t.path,t.content):await e.exists(t.path)&&await e.rm(t.path)}async function bL(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 gL(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 yL(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 xL(e,t,n){let r=lL(t),i=lL(n),[a,o]=await Promise.all([fL(r,e.fetch),fL(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)?dL(e.fetch,pL(r,a.get(t))).then(e=>Se(e.body)):void 0,o.has(t)?dL(e.fetch,pL(i,o.get(t))).then(e=>Se(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 vL(e,r,t,n,i,a,l));return await bL(e.fs,u),u}async function SL(e){let{version:t,releasedAt:n,buildId:r}=$e(),i=[],a=null,o=e.getLastSeen??et();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 CL(e){return S(`upgrade`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`${tL}\n`,stderr:``,exitCode:0};if(t[0]===`status`)return t.length>1?{stdout:sL(``,``,[],[`unsupported argument: ${t[1]}`]),stderr:``,exitCode:1}:{stdout:await SL(e),stderr:``,exitCode:0};let n=``,r=``;try{({from:n,to:r}=cL(t));let i=await xL(e,n,r),a=i.some(e=>e.classification===`needs-review`);return{stdout:sL(n,r,i,[]),stderr:``,exitCode:+!!a}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:sL(n,r,[],[t]),stderr:``,exitCode:1}}})}const wL=`usage: uptime [-p|--pretty] [-s|--since]`,TL=`${wL}
2958
2953
 
2959
2954
  Print how long this SLICC has been running. The clock starts when the browser
2960
2955
  window was last loaded — a reload is a reboot.
@@ -2970,7 +2965,7 @@ The load average is the average number of live kernel processes over the last
2970
2965
  processes are retained in bounded numbers, so a long burst of short commands
2971
2966
  can under-report the older windows. The user count is always 1: a SLICC
2972
2967
  runtime has one user identity (see \`id\`).
2973
- `,YL=[1,5,15],XL=6e4,ZL=60*XL,QL=24*ZL;function $L(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function eR(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 tR(e){let t=Math.max(0,e),n=Math.floor(t/QL),r=Math.floor(t%QL/ZL),i=Math.floor(t%ZL/XL),a=r>0?`${r}:${String(i).padStart(2,`0`)}`:`${i} min`;return n===0?a:`${n} ${n===1?`day`:`days`}, ${a}`}function nR(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/QL),`day`),r(Math.floor(t%QL/ZL),`hour`),r(Math.floor(t%ZL/XL),`minute`),n.length===0?`up ${Math.floor(t/1e3)} seconds`:`up ${n.join(`, `)}`}function rR(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 iR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function aR(e,t,n){let r=YL.map(r=>eR(e,t,r*XL,n).toFixed(2));return` ${iR(t)} up ${tR(t-n)}, 1 user, load average: ${r.join(`, `)}\n`}function oR(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 sR(e={}){return S(`uptime`,async t=>{let n=oR(t);if(typeof n!=`string`)return{stdout:``,stderr:`uptime: ${n.error}\n${qL}\n`,exitCode:1};if(n===`help`)return{stdout:JL,stderr:``,exitCode:0};if(n===`version`)return{stdout:`uptime (SLICC) ${nt().version}\n`,stderr:``,exitCode:0};let r=e.now?e.now():Date.now(),i=e.bootedAt?e.bootedAt():wa();if(n===`since`)return cR(`${rR(i)}\n`);if(n===`pretty`)return cR(`${nR(r-i)}\n`);let a=e.processManager??$L();return cR(aR(a?a.list():[],r,i))})}function cR(e){return{stdout:e,stderr:``,exitCode:0}}const lR=new Set([`--vid`,`--pid`,`--class`,`--subclass`,`--protocol`,`--serial`,`--request-type`,`--recipient`,`--request`,`--value`,`--index`,`--__resolved`]);function uR(e){return Pn(e,lR)}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 dR(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 fR=new Set([`standard`,`class`,`vendor`]),pR=new Set([`device`,`interface`,`endpoint`,`other`]);function mR(e){let t=e.get(`--request-type`)??`vendor`,n=e.get(`--recipient`)??`device`;if(!fR.has(t))throw Error(`invalid --request-type: '${t}'`);if(!pR.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 hR(e){let t=bi(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function gR(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function _R(e){return`0x${e.toString(16).padStart(4,`0`)}`}function vR(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${_R(e.vendorId)}:${_R(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 yR=`usb - access USB devices via WebUSB
2968
+ `,EL=[1,5,15],DL=6e4,OL=60*DL,kL=24*OL;function AL(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function jL(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 ML(e){let t=Math.max(0,e),n=Math.floor(t/kL),r=Math.floor(t%kL/OL),i=Math.floor(t%OL/DL),a=r>0?`${r}:${String(i).padStart(2,`0`)}`:`${i} min`;return n===0?a:`${n} ${n===1?`day`:`days`}, ${a}`}function NL(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/kL),`day`),r(Math.floor(t%kL/OL),`hour`),r(Math.floor(t%OL/DL),`minute`),n.length===0?`up ${Math.floor(t/1e3)} seconds`:`up ${n.join(`, `)}`}function PL(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 FL(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function IL(e,t,n){let r=EL.map(r=>jL(e,t,r*DL,n).toFixed(2));return` ${FL(t)} up ${ML(t-n)}, 1 user, load average: ${r.join(`, `)}\n`}function LL(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 RL(e={}){return S(`uptime`,async t=>{let n=LL(t);if(typeof n!=`string`)return{stdout:``,stderr:`uptime: ${n.error}\n${wL}\n`,exitCode:1};if(n===`help`)return{stdout:TL,stderr:``,exitCode:0};if(n===`version`)return{stdout:`uptime (SLICC) ${$e().version}\n`,stderr:``,exitCode:0};let r=e.now?e.now():Date.now(),i=e.bootedAt?e.bootedAt():xa();if(n===`since`)return zL(`${PL(i)}\n`);if(n===`pretty`)return zL(`${NL(r-i)}\n`);let a=e.processManager??AL();return zL(IL(a?a.list():[],r,i))})}function zL(e){return{stdout:e,stderr:``,exitCode:0}}const BL=new Set([`--vid`,`--pid`,`--class`,`--subclass`,`--protocol`,`--serial`,`--request-type`,`--recipient`,`--request`,`--value`,`--index`,`--__resolved`]);function VL(e){return jn(e,BL)}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 HL(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 UL=new Set([`standard`,`class`,`vendor`]),WL=new Set([`device`,`interface`,`endpoint`,`other`]);function GL(e){let t=e.get(`--request-type`)??`vendor`,n=e.get(`--recipient`)??`device`;if(!UL.has(t))throw Error(`invalid --request-type: '${t}'`);if(!WL.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 KL(e){let t=_i(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function qL(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function JL(e){return`0x${e.toString(16).padStart(4,`0`)}`}function YL(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${JL(e.vendorId)}:${JL(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 XL=`usb - access USB devices via WebUSB
2974
2969
 
2975
2970
  Usage: usb <subcommand> [options]
2976
2971
 
@@ -3008,12 +3003,12 @@ Options:
3008
3003
  (bridged waits time out after 5 minutes and drop the waiter)
3009
3004
  -h, --help
3010
3005
 
3011
- Transfers are capped at ${yi} bytes (4 MiB).
3012
- `;function bR(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?`${gR(e)}\n`:``)}async function xR(e){let t=await e.list();return t.length===0?X(`no granted USB devices
3013
- `):X(`${t.map(vR).join(`
3014
- `)}\n`)}async function SR(e,t){let n=e.get(`--__resolved`);if(n)return X(`${vR(await t.info(n))}\n`);let r=dR(e),i=je();if(i){let e=await $x(`usb-device`,r,i);if(e.handle)return X(`${vR(await t.info(e.handle))}\n`);let n=e.info,a=_i();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=vi().register(o);return X(`${vR(gi(s,o))}\n`)}return X(`${vR(await t.request(r))}\n`)}async function CR(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 wR(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 TR(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 ER(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 DR(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`):bR((await n.controlIn(i,mR(t),o)).bytes,r)}async function OR(e,t,n,r){let i=e[1];if(!i)return Z(`control-out: handle required`);let a=hR(t);return a.length>4194304?Z(`control-out payload exceeds 4 MiB limit`):X(`${(await r.controlOut(i,mR(n),a)).bytesWritten} bytes written\n`)}async function kR(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`):bR((await n.transferIn(i,Y(a,`endpoint`),s)).bytes,r)}async function AR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`transfer-out: handle and endpoint required`);let o=hR(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 jR(e,t,n){let{positionals:r,flags:i,bools:a}=uR(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return xR(n);case`request`:return SR(i,n);case`open`:case`close`:case`reset`:return CR(o,r,n,a);case`clear-halt`:return wR(r,n);case`select-config`:return TR(r,n);case`claim`:case`release`:return ER(o,r,n,a);case`control-in`:return DR(r,i,n,s);case`control-out`:return OR(r,t,i,n);case`transfer-in`:return kR(r,i,n,s);case`transfer-out`:return AR(r,t,i,n);default:return Z(`unknown subcommand '${o??``}'. Try 'usb --help'.`)}}function MR(){return S(`usb`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return X(yR);let n=Qr(de(),y());if(!n)return Z(`WebUSB is unavailable in this environment`);try{return await jR(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 NR=`/workspace/.v86`,PR=`v86 - run an x86 virtual machine (v86 wasm engine)
3006
+ Transfers are capped at ${gi} bytes (4 MiB).
3007
+ `;function ZL(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?`${qL(e)}\n`:``)}async function QL(e){let t=await e.list();return t.length===0?X(`no granted USB devices
3008
+ `):X(`${t.map(YL).join(`
3009
+ `)}\n`)}async function $L(e,t){let n=e.get(`--__resolved`);if(n)return X(`${YL(await t.info(n))}\n`);let r=HL(e),i=je();if(i){let e=await Ax(`usb-device`,r,i);if(e.handle)return X(`${YL(await t.info(e.handle))}\n`);let n=e.info,a=mi();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=hi().register(o);return X(`${YL(pi(s,o))}\n`)}return X(`${YL(await t.request(r))}\n`)}async function eR(e,t,n,r){let i=t[1];if(!i)return Z(`${e}: handle required`);let a=r.has(`--force`);return e===`open`?await n.open(i):e===`close`?await n.close(i,{force:a}):await n.reset(i,{force:a}),X(``)}async function tR(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 nR(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 rR(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 iR(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`):ZL((await n.controlIn(i,GL(t),o)).bytes,r)}async function aR(e,t,n,r){let i=e[1];if(!i)return Z(`control-out: handle required`);let a=KL(t);return a.length>4194304?Z(`control-out payload exceeds 4 MiB limit`):X(`${(await r.controlOut(i,GL(n),a)).bytesWritten} bytes written\n`)}async function oR(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`):ZL((await n.transferIn(i,Y(a,`endpoint`),s)).bytes,r)}async function sR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`transfer-out: handle and endpoint required`);let o=KL(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 cR(e,t,n){let{positionals:r,flags:i,bools:a}=VL(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return QL(n);case`request`:return $L(i,n);case`open`:case`close`:case`reset`:return eR(o,r,n,a);case`clear-halt`:return tR(r,n);case`select-config`:return nR(r,n);case`claim`:case`release`:return rR(o,r,n,a);case`control-in`:return iR(r,i,n,s);case`control-out`:return aR(r,t,i,n);case`transfer-in`:return oR(r,i,n,s);case`transfer-out`:return sR(r,t,i,n);default:return Z(`unknown subcommand '${o??``}'. Try 'usb --help'.`)}}function lR(){return S(`usb`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return X(XL);let n=Yr(de(),y());if(!n)return Z(`WebUSB is unavailable in this environment`);try{return await cR(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 uR=`/workspace/.v86`,dR=`v86 - run an x86 virtual machine (v86 wasm engine)
3015
3010
 
3016
- Requires: ${N} v86@${zO}
3011
+ Requires: ${N} v86@${gO}
3017
3012
 
3018
3013
  Usage:
3019
3014
  v86 start [boot options] Boot a VM in the background (prints pid)
@@ -3047,7 +3042,7 @@ Boot options (QEMU-flavored):
3047
3042
  proxy — no gateway needed, https upstream via the proxy
3048
3043
  -vga <MiB> SVGA/VBE video memory (default 8, max 64) —
3049
3044
  raise for high-res VESA modes (1080p32 needs ~9)
3050
- -bios <path> -vgabios <path> BIOS blobs (default ${NR}/{seabios,vgabios}.bin)
3045
+ -bios <path> -vgabios <path> BIOS blobs (default ${uR}/{seabios,vgabios}.bin)
3051
3046
  -nographic Serial-only guest (skip VGA)
3052
3047
 
3053
3048
  Notes:
@@ -3055,19 +3050,19 @@ Notes:
3055
3050
  (Alpine, FreeDOS, Buildroot Linux) work best.
3056
3051
  - The copy.sh Arch Linux image boots via -state + -fs9p; see the v86 skill.
3057
3052
  - BIOS blobs are not bundled; download once:
3058
- mkdir -p ${NR}
3059
- curl -o ${NR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3060
- curl -o ${NR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3061
- `,FR=`v86: BIOS images not found. Download them once:
3062
- mkdir -p ${NR}
3063
- curl -o ${NR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3064
- curl -o ${NR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3065
- or pass -bios / -vgabios with explicit VFS paths.`,IR={"-n":LR,"-name":LR,"--name":LR,"-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)=>RR(e,`cdrom`,t),"-hda":(e,t)=>RR(e,`hda`,t),"-fda":(e,t)=>RR(e,`fda`,t),"-kernel":(e,t)=>RR(e,`kernel`,t),"-initrd":(e,t)=>RR(e,`initrd`,t),"-append":(e,t)=>RR(e,`append`,t),"-bios":(e,t)=>RR(e,`bios`,t),"-vgabios":(e,t)=>RR(e,`vgabios`,t),"-state":(e,t)=>RR(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 LR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function RR(e,t,n){return e[t]=n,null}const zR=[...Object.keys(IR),`--fps`,`--tail`,`--send`,`--to`];function BR(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(IR,r)?IR[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 VR(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 HR(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 UR(e){return va(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function WR(e){return`exitCode`in e}async function GR(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 KR={a:801,c:306,d:531};function qR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function JR(e={}){return S(`v86`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`||t[0]===`help`)return $(PR);if(t[0]===`--version`)return YR(n,e);let r=t[0];if(w(t.slice(1),{valueFlags:zR}))return $(lt(`v86`,r,PR,{prefix:`v86`}));let i=ct(t.slice(1));try{switch(r){case`start`:return await tz(i,n,e);case`ls`:return rz();case`type`:return await sz(i,n);case`key`:return await cz(i,n);case`mouse`:return await uz(i,n);case`screenshot`:return await dz(i,n);case`text`:return await fz(i,n);case`serve`:return pz(i);case`serial`:return mz(i);case`state`:return await hz(i,n);case`stop`:return await gz(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function YR(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(VR(e))).version} (qemu-flavored CLI)\n`);let n=await GO(VR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(BO)}async function XR(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await GR(t,e.bios??`${NR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(FR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await GR(t,e.vgabios??`${NR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(FR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function ZR(e,t,n){let r=await XR(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 GR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=KR[e.boot]),e.state){let r=await GR(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 QR=6e4;function $R(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(Error(`engine init timed out after ${QR/1e3}s`)),QR);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function ez(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 tz(e,t,n){let r=BR(e);if(!r.ok)return Q(r.error);let i=r.parsed;if(va(i.name))return Q(`VM '${i.name}' already running — stop it first or pick another -n name`);let a=VR(t),o=n.loadEngine?await n.loadEngine(a):await HO({ipk:a}),s={wasm_fn:qO(o.wasmModule),memory_size:i.memoryMib*1024*1024,vga_memory_size:i.vgaMemoryMib*1024*1024,autostart:!1,disable_speaker:!0,fastboot:!0},c=await ZR(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??qR();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`,()=>{nz(u,d)})}_a(u);try{if(await $R(l),i.netRelay===`fetch`){let e=ez(l,n);if(e)return await nz(u,d),e}ga(u),await l.run()}catch(e){return await nz(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-DKE8ZbX9.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 nz(e,t){ya(e),ha(e.name),import(`./v86-DKE8ZbX9.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 rz(){let e=ma();if(e.length===0)return $(`no VMs running
3053
+ mkdir -p ${uR}
3054
+ curl -o ${uR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3055
+ curl -o ${uR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3056
+ `,fR=`v86: BIOS images not found. Download them once:
3057
+ mkdir -p ${uR}
3058
+ curl -o ${uR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3059
+ curl -o ${uR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3060
+ or pass -bios / -vgabios with explicit VFS paths.`,pR={"-n":mR,"-name":mR,"--name":mR,"-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)=>hR(e,`cdrom`,t),"-hda":(e,t)=>hR(e,`hda`,t),"-fda":(e,t)=>hR(e,`fda`,t),"-kernel":(e,t)=>hR(e,`kernel`,t),"-initrd":(e,t)=>hR(e,`initrd`,t),"-append":(e,t)=>hR(e,`append`,t),"-bios":(e,t)=>hR(e,`bios`,t),"-vgabios":(e,t)=>hR(e,`vgabios`,t),"-state":(e,t)=>hR(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 mR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function hR(e,t,n){return e[t]=n,null}const gR=[...Object.keys(pR),`--fps`,`--tail`,`--send`,`--to`];function _R(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(pR,r)?pR[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 vR(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 yR(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 bR(e){return ha(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function xR(e){return`exitCode`in e}async function SR(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 CR={a:801,c:306,d:531};function wR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function TR(e={}){return S(`v86`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`||t[0]===`help`)return $(dR);if(t[0]===`--version`)return ER(n,e);let r=t[0];if(w(t.slice(1),{valueFlags:gR}))return $(ot(`v86`,r,dR,{prefix:`v86`}));let i=at(t.slice(1));try{switch(r){case`start`:return await MR(i,n,e);case`ls`:return PR();case`type`:return await RR(i,n);case`key`:return await zR(i,n);case`mouse`:return await VR(i,n);case`screenshot`:return await HR(i,n);case`text`:return await UR(i,n);case`serve`:return WR(i);case`serial`:return GR(i);case`state`:return await KR(i,n);case`stop`:return await qR(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function ER(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(vR(e))).version} (qemu-flavored CLI)\n`);let n=await SO(vR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(_O)}async function DR(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await SR(t,e.bios??`${uR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(fR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await SR(t,e.vgabios??`${uR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(fR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function OR(e,t,n){let r=await DR(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 SR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=CR[e.boot]),e.state){let r=await SR(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 kR=6e4;function AR(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(Error(`engine init timed out after ${kR/1e3}s`)),kR);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function jR(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 MR(e,t,n){let r=_R(e);if(!r.ok)return Q(r.error);let i=r.parsed;if(ha(i.name))return Q(`VM '${i.name}' already running — stop it first or pick another -n name`);let a=vR(t),o=n.loadEngine?await n.loadEngine(a):await yO({ipk:a}),s={wasm_fn:wO(o.wasmModule),memory_size:i.memoryMib*1024*1024,vga_memory_size:i.vgaMemoryMib*1024*1024,autostart:!1,disable_speaker:!0,fastboot:!0},c=await OR(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??wR();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`,()=>{NR(u,d)})}ma(u);try{if(await AR(l),i.netRelay===`fetch`){let e=jR(l,n);if(e)return await NR(u,d),e}pa(u),await l.run()}catch(e){return await NR(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-DKE8ZbX9.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 NR(e,t){ga(e),fa(e.name),import(`./v86-DKE8ZbX9.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 PR(){let e=da();if(e.length===0)return $(`no VMs running
3066
3061
  `);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(`
3067
- `)}\n`)}function iz(e,t){return`prefer: computer ${e} -c ${t}\n`}async function az(e,t,n,r){let i=UR(t);if(WR(i))return i;let[{runComputer:a},{getComputerRegistry:o,installComputerRegistry:s},c]=await Promise.all([import(`./run-CnfMQAT6.js`).then(e=>e.t),import(`./registry-DfuJBCKY.js`),import(`./v86-DKE8ZbX9.js`)]),l=c.v86ComputerId(t),u=o()??s(null);return u.get(l)||c.registerV86Computer(i,u),oz(await a([`-c`,l,...n],e,{registry:u}),r,l)}function oz(e,t,n){let r=iz(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 sz(e,t){let{name:n,rest:r}=HR(e);if(r.length===0){let e=UR(n);return WR(e)?e:Q(`type: no text supplied`)}return az(t,n,[`type`,`--`,...r],`type`)}async function cz(e,t){let{name:n,rest:r}=HR(e);if(r.length===0){let e=UR(n);return WR(e)?e:Q(`key: no chord supplied`)}return az(t,n,[`key`,...r],`key`)}const lz=[`left`,`middle`,`right`];async function uz(e,t){let{name:n,rest:r}=HR(e),i=UR(n);if(WR(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?az(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>`):az(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!lz.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),az(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function dz(e,t){let{name:n,rest:r}=HR(e);return az(t,n,[`screenshot`,...r],`screenshot`)}async function fz(e,t){let{name:n}=HR(e);return az(t,n,[`text`],`text`)}function pz(e){let{name:t}=HR(e);return $(`v86 serve is retired.\nUse: computer watch -c v86:${t}\nLive frames go to the overlay, lightbox, and bash rows.\n`)}function mz(e){let{name:t,rest:n}=HR(e),r=UR(t);if(WR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
3062
+ `)}\n`)}function FR(e,t){return`prefer: computer ${e} -c ${t}\n`}async function IR(e,t,n,r){let i=bR(t);if(xR(i))return i;let[{runComputer:a},{getComputerRegistry:o,installComputerRegistry:s},c]=await Promise.all([import(`./run-CnfMQAT6.js`).then(e=>e.t),import(`./registry-DfuJBCKY.js`),import(`./v86-DKE8ZbX9.js`)]),l=c.v86ComputerId(t),u=o()??s(null);return u.get(l)||c.registerV86Computer(i,u),LR(await a([`-c`,l,...n],e,{registry:u}),r,l)}function LR(e,t,n){let r=FR(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 RR(e,t){let{name:n,rest:r}=yR(e);if(r.length===0){let e=bR(n);return xR(e)?e:Q(`type: no text supplied`)}return IR(t,n,[`type`,`--`,...r],`type`)}async function zR(e,t){let{name:n,rest:r}=yR(e);if(r.length===0){let e=bR(n);return xR(e)?e:Q(`key: no chord supplied`)}return IR(t,n,[`key`,...r],`key`)}const BR=[`left`,`middle`,`right`];async function VR(e,t){let{name:n,rest:r}=yR(e),i=bR(n);if(xR(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?IR(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>`):IR(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!BR.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),IR(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function HR(e,t){let{name:n,rest:r}=yR(e);return IR(t,n,[`screenshot`,...r],`screenshot`)}async function UR(e,t){let{name:n}=yR(e);return IR(t,n,[`text`],`text`)}function WR(e){let{name:t}=yR(e);return $(`v86 serve is retired.\nUse: computer watch -c v86:${t}\nLive frames go to the overlay, lightbox, and bash rows.\n`)}function GR(e){let{name:t,rest:n}=yR(e),r=bR(t);if(xR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
3068
3063
  `);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(`
3069
3064
  `).slice(-Math.max(1,e)).join(`
3070
- `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function hz(e,t){let{name:n,rest:r}=HR(e),i=UR(n);if(WR(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 gz(e,t){let{name:n,rest:r}=HR(e),i=UR(n);if(WR(i))return i;let a=t.processManager??qR();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await nz(i,a),$(`VM '${n}' stopped\n`))}function _z(e={}){return S(`wasm`,async(t,n)=>{let{runWasmCommand:r}=await import(`./run-Ccyk_j1M.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}const vz=[`--name`,`--filter`,`--scoop`],yz={state:`inactive`,session:null};function bz(){return{stdout:`usage: webhook <command> [options]
3065
+ `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function KR(e,t){let{name:n,rest:r}=yR(e),i=bR(n);if(xR(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 qR(e,t){let{name:n,rest:r}=yR(e),i=bR(n);if(xR(i))return i;let a=t.processManager??wR();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await NR(i,a),$(`VM '${n}' stopped\n`))}function JR(e={}){return S(`wasm`,async(t,n)=>{let{runWasmCommand:r}=await import(`./run-Ccyk_j1M.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}const YR=[`--name`,`--filter`,`--scoop`],XR={state:`inactive`,session:null};function ZR(){return{stdout:`usage: webhook <command> [options]
3071
3066
 
3072
3067
  Commands:
3073
3068
  create [--scoop <name>] [--name <name>] [--filter <code>] Create a new webhook endpoint
@@ -3087,21 +3082,21 @@ Examples:
3087
3082
  webhook create --scoop slack-relay --name slack --filter "(e) => ({ text: e.body.text, user: e.body.user })"
3088
3083
  webhook list
3089
3084
  webhook delete abc123
3090
- `,stderr:``,exitCode:0}}function xz(e){return e().session?.webhookUrl??null}function Sz(e,t,n){return t?ba(t,e):n()?xa(self.location.href,e):`(URL unavailable — connect a leader tray)`}function Cz(e){return{stdout:``,stderr:`webhook ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}async function wz(e){if(e.length!==1)return{stdout:``,stderr:`webhook rotate: takes no arguments
3085
+ `,stderr:``,exitCode:0}}function QR(e){return e().session?.webhookUrl??null}function $R(e,t,n){return t?_a(t,e):n()?va(self.location.href,e):`(URL unavailable — connect a leader tray)`}function ez(e){return{stdout:``,stderr:`webhook ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}async function tz(e){if(e.length!==1)return{stdout:``,stderr:`webhook rotate: takes no arguments
3091
3086
  `,exitCode:1};let t=y();if(!t)return{stdout:``,stderr:`webhook rotate: no leader panel connected
3092
3087
  `,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.
3093
3088
  `,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`webhook rotate: rotation failed; reconnect the leader and retry
3094
- `,exitCode:1}}}async function Tz(e,t,n){let r=C(e.slice(1),{value:vz});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=ia(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
3095
- `,exitCode:1};let s=Oz(t);if(s)return s;let c=await Ay();if(!c)return Cz(`create`);let l=await My(c,`webhook create`,r.values.get(`--scoop`));if(l)return{stdout:``,stderr:l,exitCode:1};let u=await c.createWebhook(i,o,a),d=kz(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 Ez(e,t){let n=C(e.slice(1),{});if(`error`in n)return{stdout:``,stderr:`webhook list: ${n.error}\n`,exitCode:1};let r=await Ay();if(!r)return Cz(`list`);let i=await r.listWebhooks();if(i.length===0)return{stdout:`No active webhooks
3096
- `,stderr:``,exitCode:0};let{trayUrlBase:a,urlResolutionError:o}=Az(t);return{stdout:jz(i.map(e=>({id:e.id,name:e.name,url:Sz(e.id,a,t.hasLocalNodeServer),createdAt:e.createdAt,filter:e.filter,scoop:e.scoop})),a,o,t.hasLocalNodeServer),stderr:``,exitCode:0}}async function Dz(e,t){let n=C(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
3089
+ `,exitCode:1}}}async function nz(e,t,n){let r=C(e.slice(1),{value:YR});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=ta(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
3090
+ `,exitCode:1};let s=az(t);if(s)return s;let c=await sy();if(!c)return ez(`create`);let l=await ly(c,`webhook create`,r.values.get(`--scoop`));if(l)return{stdout:``,stderr:l,exitCode:1};let u=await c.createWebhook(i,o,a),d=oz(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 rz(e,t){let n=C(e.slice(1),{});if(`error`in n)return{stdout:``,stderr:`webhook list: ${n.error}\n`,exitCode:1};let r=await sy();if(!r)return ez(`list`);let i=await r.listWebhooks();if(i.length===0)return{stdout:`No active webhooks
3091
+ `,stderr:``,exitCode:0};let{trayUrlBase:a,urlResolutionError:o}=sz(t);return{stdout:cz(i.map(e=>({id:e.id,name:e.name,url:$R(e.id,a,t.hasLocalNodeServer),createdAt:e.createdAt,filter:e.filter,scoop:e.scoop})),a,o,t.hasLocalNodeServer),stderr:``,exitCode:0}}async function iz(e,t){let n=C(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
3097
3092
  `,exitCode:1};if(!r)return{stdout:``,stderr:`webhook delete: requires an ID
3098
- `,exitCode:1};let i=await Ay();if(!i)return Cz(`delete`);let a=y();try{if(a){if((await a.call(`tray-webhook-revoke`,{webhookId:r}))?.ok!==!0)throw Error(`revocation not acknowledged`)}else if(t.getLeaderStatus().session?.webhookUrl?.includes(`/wh/`))throw Error(`no leader panel`)}catch{return{stdout:``,stderr:`webhook delete: revocation failed; registration retained, reconnect the leader and retry
3099
- `,exitCode:1}}return await i.deleteWebhook(r)?{stdout:`Deleted webhook "${r}"\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`webhook delete: webhook "${r}" not found\n`,exitCode:1}}function Oz(e){if(e.hasLocalNodeServer())return null;if(!xz(e.getLeaderStatus)){let t=e.getLeaderStatus().state;return{stdout:``,stderr:(t===`leader`?`webhook create: tray session is not connected yet — wait for the leader to attach`:`webhook create: requires extension-leader mode with a tray worker URL configured (current state: "${t}")`)+`
3100
- `,exitCode:1}}return null}function kz(e,t){try{return Sz(e,xz(t.getLeaderStatus),t.hasLocalNodeServer)}catch(e){return`(URL resolution failed: ${e instanceof Error?e.message:String(e)})`}}function Az(e){try{return{trayUrlBase:xz(e.getLeaderStatus),urlResolutionError:null}}catch(e){return{trayUrlBase:null,urlResolutionError:e instanceof Error?e.message:String(e)}}}function jz(e,t,n,r){let i=`Active webhooks:
3093
+ `,exitCode:1};let i=await sy();if(!i)return ez(`delete`);let a=y();try{if(a){if((await a.call(`tray-webhook-revoke`,{webhookId:r}))?.ok!==!0)throw Error(`revocation not acknowledged`)}else if(t.getLeaderStatus().session?.webhookUrl?.includes(`/wh/`))throw Error(`no leader panel`)}catch{return{stdout:``,stderr:`webhook delete: revocation failed; registration retained, reconnect the leader and retry
3094
+ `,exitCode:1}}return await i.deleteWebhook(r)?{stdout:`Deleted webhook "${r}"\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`webhook delete: webhook "${r}" not found\n`,exitCode:1}}function az(e){if(e.hasLocalNodeServer())return null;if(!QR(e.getLeaderStatus)){let t=e.getLeaderStatus().state;return{stdout:``,stderr:(t===`leader`?`webhook create: tray session is not connected yet — wait for the leader to attach`:`webhook create: requires extension-leader mode with a tray worker URL configured (current state: "${t}")`)+`
3095
+ `,exitCode:1}}return null}function oz(e,t){try{return $R(e,QR(t.getLeaderStatus),t.hasLocalNodeServer)}catch(e){return`(URL resolution failed: ${e instanceof Error?e.message:String(e)})`}}function sz(e){try{return{trayUrlBase:QR(e.getLeaderStatus),urlResolutionError:null}}catch(e){return{trayUrlBase:null,urlResolutionError:e instanceof Error?e.message:String(e)}}}function cz(e,t,n,r){let i=`Active webhooks:
3101
3096
  `;for(let t of e)i+=` ${t.id} ${t.name.padEnd(20)} ${t.url}`,t.scoop&&(i+=` -> ${t.scoop}`),t.filter&&(i+=` [filtered]`),i+=`
3102
3097
  `;return n?i+=`\nNote: webhook URL resolution failed (${n}). Try again once the tray is connected.\n`:!r()&&!t&&(i+=`
3103
3098
  Note: webhook URLs require a leader tray. Configure one in Settings to expose POST endpoints.
3104
- `),i}function Mz(e={}){let t={hasLocalNodeServer:e.hasLocalNodeServer??(()=>!0),getLeaderStatus:e.getLeaderStatus??(()=>yz)};return S(`webhook`,async(e,n)=>{if(e.length===0)return bz();let r=e[0];if(w(e,{valueFlags:r===`create`?vz:void 0}))return bz();try{switch(r){case`create`:return await Tz(e,t,n.env);case`list`:return await Ez(e,t);case`delete`:return await Dz(e,t);case`rotate`:return await wz(e);default:return{stdout:``,stderr:`webhook: unknown command "${r}"\n`,exitCode:1}}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`webhook ${r??`?`}: ${t}\n`,exitCode:1}}})}function Nz(){return{text:!0,binary:!1,oneMessage:!1,noClose:!1,exitOnEof:!1,unidirectional:!1,unidirectionalReverse:!1,insecure:!1,quiet:!1,verbose:0,nullTerminated:!1,base64:!1,jsonrpc:!1,jsonrpcOmit:!1,bufferSize:65536,connTimeoutMs:3e4,customHeaders:[],showHelp:!1}}function Pz(){return{stdout:`usage: websocat [FLAGS] [OPTIONS] <ws://URL | wss://URL>
3099
+ `),i}function lz(e={}){let t={hasLocalNodeServer:e.hasLocalNodeServer??(()=>!0),getLeaderStatus:e.getLeaderStatus??(()=>XR)};return S(`webhook`,async(e,n)=>{if(e.length===0)return ZR();let r=e[0];if(w(e,{valueFlags:r===`create`?YR:void 0}))return ZR();try{switch(r){case`create`:return await nz(e,t,n.env);case`list`:return await rz(e,t);case`delete`:return await iz(e,t);case`rotate`:return await tz(e);default:return{stdout:``,stderr:`webhook: unknown command "${r}"\n`,exitCode:1}}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`webhook ${r??`?`}: ${t}\n`,exitCode:1}}})}function uz(){return{text:!0,binary:!1,oneMessage:!1,noClose:!1,exitOnEof:!1,unidirectional:!1,unidirectionalReverse:!1,insecure:!1,quiet:!1,verbose:0,nullTerminated:!1,base64:!1,jsonrpc:!1,jsonrpcOmit:!1,bufferSize:65536,connTimeoutMs:3e4,customHeaders:[],showHelp:!1}}function dz(){return{stdout:`usage: websocat [FLAGS] [OPTIONS] <ws://URL | wss://URL>
3105
3100
 
3106
3101
  Minimal websocat client. Sends stdin lines as WebSocket messages and prints
3107
3102
  received messages to stdout. Server mode and advanced specifiers (exec:, tcp:,
@@ -3143,14 +3138,14 @@ EXAMPLES:
3143
3138
  echo 'Page.navigate {"url":"https://example.com"}' \\
3144
3139
  | websocat -1 --jsonrpc --jsonrpc-omit-jsonrpc \\
3145
3140
  ws://127.0.0.1:9222/devtools/page/<id>
3146
- `,stderr:``,exitCode:0}}const Fz=new Set([`-s`,`--server-mode`,`--oneshot`,`--socks5`,`--basic-auth`,`--basic-auth-file`,`--header-to-env`,`--server-header`,`--exec`,`--ws-c-uri`,`--restrict-uri`,`--unlink`,`--strict`,`-S`]);function Iz(e,t,n,r){let i=e[t].indexOf(`=`);if(i!==-1&&e[t].startsWith(n))return{value:e[t].slice(i+1),next:t};let a=e[t+1];return a===void 0?(r.error=`websocat: missing value for ${n}\n`,null):{value:a,next:t+1}}function Lz(e,t,n,r=`positive integer`){let i=Number(t);return!Number.isFinite(i)||i<=0?(e.error=`websocat: ${n} expects ${r}\n`,null):i}function Rz(e,t){let n=Number(t);return!Number.isFinite(n)||n<1e3||n>4999?(e.error=`websocat: --close-status-code expects 1000..4999, got '${t}'\n`,null):n}function zz(e,t){let n={"-t":()=>{e.text=!0,e.binary=!1},"--text":()=>{e.text=!0,e.binary=!1},"-b":()=>{e.binary=!0,e.text=!1},"--binary":()=>{e.binary=!0,e.text=!1},"-1n":()=>{e.oneMessage=!0,e.noClose=!0},"-n1":()=>{e.oneMessage=!0,e.noClose=!0},"-1":()=>{e.oneMessage=!0},"--one-message":()=>{e.oneMessage=!0},"-n":()=>{e.noClose=!0},"--no-close":()=>{e.noClose=!0},"-E":()=>{e.exitOnEof=!0},"--exit-on-eof":()=>{e.exitOnEof=!0},"-u":()=>{e.unidirectional=!0},"--unidirectional":()=>{e.unidirectional=!0},"-U":()=>{e.unidirectionalReverse=!0},"--unidirectional-reverse":()=>{e.unidirectionalReverse=!0},"-k":()=>{e.insecure=!0},"--insecure":()=>{e.insecure=!0},"-q":()=>{e.quiet=!0},"-0":()=>{e.nullTerminated=!0},"--null-terminated":()=>{e.nullTerminated=!0},"--base64":()=>{e.base64=!0},"--jsonrpc":()=>{e.jsonrpc=!0},"--jsonrpc-omit-jsonrpc":()=>{e.jsonrpcOmit=!0,e.jsonrpc=!0}}[t];return n?(n(),!0):!1}function Bz(e,t){return t===`-v`?(e.verbose+=1,!0):t===`-vv`&&(e.verbose+=2,!0)}function Vz(e,t,n,r,i){let a=Iz(t,n,r,e);return a?(i(a.value),{nextIndex:a.next}):{stop:!0}}function Hz(e,t,n,r,i,a,o){let s=Iz(t,n,r,e);if(!s)return{stop:!0};let c=Lz(e,s.value,i,o);return c===null?{stop:!0}:(a(c),{nextIndex:s.next})}function Uz(e,t){return t.some(t=>e===t||e.startsWith(`${t}=`))}const Wz=[(e,t,n,r)=>{if(!Uz(r,[`--close-status-code`]))return null;let i=Iz(t,n,`--close-status-code`,e);if(!i)return{stop:!0};let a=Rz(e,i.value);return a===null?{stop:!0}:(e.closeStatus=a,{nextIndex:i.next})},(e,t,n,r)=>Uz(r,[`--close-reason`])?Vz(e,t,n,`--close-reason`,t=>{e.closeReason=t}):null,(e,t,n,r)=>Uz(r,[`-B`,`--buffer-size`])?Hz(e,t,n,r===`-B`?`-B`:`--buffer-size`,`--buffer-size`,t=>{e.bufferSize=t}):null,(e,t,n,r)=>Uz(r,[`--max-messages`])?Hz(e,t,n,`--max-messages`,`--max-messages`,t=>{e.maxMessages=t}):null,(e,t,n,r)=>Uz(r,[`--protocol`])?Vz(e,t,n,`--protocol`,t=>{e.protocol=t}):null,(e,t,n,r)=>{if(!Uz(r,[`--ping-interval`]))return null;let i=Iz(t,n,`--ping-interval`,e);return i?(e.pingInterval=Number(i.value),{nextIndex:i.next}):{stop:!0}},(e,t,n,r)=>Uz(r,[`--conn-timeout`])?Hz(e,t,n,`--conn-timeout`,`--conn-timeout`,t=>{e.connTimeoutMs=Math.round(t*1e3)},`positive seconds`):null,(e,t,n,r)=>Uz(r,[`-H`,`--header`])?Vz(e,t,n,r===`-H`?`-H`:`--header`,t=>{e.customHeaders.push(t)}):null];function Gz(e,t,n,r){for(let i of Wz){let a=i(e,t,n,r);if(a)return a}return null}function Kz(e){e.closeReason!==void 0&&e.closeStatus===void 0&&(e.error=`websocat: --close-reason requires --close-status-code (the WebSocket close frame cannot carry a reason without a status code)
3147
- `)}function qz(e){let t=Nz();for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`-h`||r===`--help`)return t.showHelp=!0,t;if(Fz.has(r)||Fz.has(r.split(`=`)[0]))return t.error=`websocat: flag '${r}' is not supported in slicc's minimal client\n`,t;if(zz(t,r)||Bz(t,r))continue;let i=Gz(t,e,n,r);if(i){if(`stop`in i)return t;n=i.nextIndex;continue}if(r.startsWith(`-`))return t.error=`websocat: unknown flag '${r}'\n`,t;if(t.url)return t.error=`websocat: extra positional argument '${r}' — advanced mode is not supported\n`,t;t.url=r}return Kz(t),t}function Jz(e,t){if(!e)return[];let n=t?`\0`:`
3148
- `,r=e.split(n);return r.length>0&&r[r.length-1]===``&&r.pop(),r}function Yz(e,t,n){let r=e.trim();if(!r)return e;let i=r.search(/\s/),a=i===-1?r:r.slice(0,i),o=i===-1?``:r.slice(i+1).trim(),s=[];if(o)try{s=JSON.parse(o)}catch{s=[o]}let c={id:t,method:a,params:s};return n||(c.jsonrpc=`2.0`),JSON.stringify(c)}function Xz(e){try{return new TextDecoder(`utf-8`,{fatal:!1}).decode(e)}catch{return t(e)}}function Zz(e){if(typeof e==`string`)return{bytes:new TextEncoder().encode(e),isBinary:!1};if(e instanceof ArrayBuffer)return{bytes:new Uint8Array(e),isBinary:!0};if(ArrayBuffer.isView(e)){let t=e;return{bytes:new Uint8Array(t.buffer,t.byteOffset,t.byteLength),isBinary:!0}}return{bytes:new TextEncoder().encode(String(e)),isBinary:!1}}const Qz=1e4;function $z(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function eB(){let e=!1,t=$z();return{...t,settle:n=>{e||(e=!0,t.resolve(n))}}}function tB(e,t){return e.length?e.join(t)+t:``}function nB(e){return e.length?e.join(`
3141
+ `,stderr:``,exitCode:0}}const fz=new Set([`-s`,`--server-mode`,`--oneshot`,`--socks5`,`--basic-auth`,`--basic-auth-file`,`--header-to-env`,`--server-header`,`--exec`,`--ws-c-uri`,`--restrict-uri`,`--unlink`,`--strict`,`-S`]);function pz(e,t,n,r){let i=e[t].indexOf(`=`);if(i!==-1&&e[t].startsWith(n))return{value:e[t].slice(i+1),next:t};let a=e[t+1];return a===void 0?(r.error=`websocat: missing value for ${n}\n`,null):{value:a,next:t+1}}function mz(e,t,n,r=`positive integer`){let i=Number(t);return!Number.isFinite(i)||i<=0?(e.error=`websocat: ${n} expects ${r}\n`,null):i}function hz(e,t){let n=Number(t);return!Number.isFinite(n)||n<1e3||n>4999?(e.error=`websocat: --close-status-code expects 1000..4999, got '${t}'\n`,null):n}function gz(e,t){let n={"-t":()=>{e.text=!0,e.binary=!1},"--text":()=>{e.text=!0,e.binary=!1},"-b":()=>{e.binary=!0,e.text=!1},"--binary":()=>{e.binary=!0,e.text=!1},"-1n":()=>{e.oneMessage=!0,e.noClose=!0},"-n1":()=>{e.oneMessage=!0,e.noClose=!0},"-1":()=>{e.oneMessage=!0},"--one-message":()=>{e.oneMessage=!0},"-n":()=>{e.noClose=!0},"--no-close":()=>{e.noClose=!0},"-E":()=>{e.exitOnEof=!0},"--exit-on-eof":()=>{e.exitOnEof=!0},"-u":()=>{e.unidirectional=!0},"--unidirectional":()=>{e.unidirectional=!0},"-U":()=>{e.unidirectionalReverse=!0},"--unidirectional-reverse":()=>{e.unidirectionalReverse=!0},"-k":()=>{e.insecure=!0},"--insecure":()=>{e.insecure=!0},"-q":()=>{e.quiet=!0},"-0":()=>{e.nullTerminated=!0},"--null-terminated":()=>{e.nullTerminated=!0},"--base64":()=>{e.base64=!0},"--jsonrpc":()=>{e.jsonrpc=!0},"--jsonrpc-omit-jsonrpc":()=>{e.jsonrpcOmit=!0,e.jsonrpc=!0}}[t];return n?(n(),!0):!1}function _z(e,t){return t===`-v`?(e.verbose+=1,!0):t===`-vv`&&(e.verbose+=2,!0)}function vz(e,t,n,r,i){let a=pz(t,n,r,e);return a?(i(a.value),{nextIndex:a.next}):{stop:!0}}function yz(e,t,n,r,i,a,o){let s=pz(t,n,r,e);if(!s)return{stop:!0};let c=mz(e,s.value,i,o);return c===null?{stop:!0}:(a(c),{nextIndex:s.next})}function bz(e,t){return t.some(t=>e===t||e.startsWith(`${t}=`))}const xz=[(e,t,n,r)=>{if(!bz(r,[`--close-status-code`]))return null;let i=pz(t,n,`--close-status-code`,e);if(!i)return{stop:!0};let a=hz(e,i.value);return a===null?{stop:!0}:(e.closeStatus=a,{nextIndex:i.next})},(e,t,n,r)=>bz(r,[`--close-reason`])?vz(e,t,n,`--close-reason`,t=>{e.closeReason=t}):null,(e,t,n,r)=>bz(r,[`-B`,`--buffer-size`])?yz(e,t,n,r===`-B`?`-B`:`--buffer-size`,`--buffer-size`,t=>{e.bufferSize=t}):null,(e,t,n,r)=>bz(r,[`--max-messages`])?yz(e,t,n,`--max-messages`,`--max-messages`,t=>{e.maxMessages=t}):null,(e,t,n,r)=>bz(r,[`--protocol`])?vz(e,t,n,`--protocol`,t=>{e.protocol=t}):null,(e,t,n,r)=>{if(!bz(r,[`--ping-interval`]))return null;let i=pz(t,n,`--ping-interval`,e);return i?(e.pingInterval=Number(i.value),{nextIndex:i.next}):{stop:!0}},(e,t,n,r)=>bz(r,[`--conn-timeout`])?yz(e,t,n,`--conn-timeout`,`--conn-timeout`,t=>{e.connTimeoutMs=Math.round(t*1e3)},`positive seconds`):null,(e,t,n,r)=>bz(r,[`-H`,`--header`])?vz(e,t,n,r===`-H`?`-H`:`--header`,t=>{e.customHeaders.push(t)}):null];function Sz(e,t,n,r){for(let i of xz){let a=i(e,t,n,r);if(a)return a}return null}function Cz(e){e.closeReason!==void 0&&e.closeStatus===void 0&&(e.error=`websocat: --close-reason requires --close-status-code (the WebSocket close frame cannot carry a reason without a status code)
3142
+ `)}function wz(e){let t=uz();for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`-h`||r===`--help`)return t.showHelp=!0,t;if(fz.has(r)||fz.has(r.split(`=`)[0]))return t.error=`websocat: flag '${r}' is not supported in slicc's minimal client\n`,t;if(gz(t,r)||_z(t,r))continue;let i=Sz(t,e,n,r);if(i){if(`stop`in i)return t;n=i.nextIndex;continue}if(r.startsWith(`-`))return t.error=`websocat: unknown flag '${r}'\n`,t;if(t.url)return t.error=`websocat: extra positional argument '${r}' — advanced mode is not supported\n`,t;t.url=r}return Cz(t),t}function Tz(e,t){if(!e)return[];let n=t?`\0`:`
3143
+ `,r=e.split(n);return r.length>0&&r[r.length-1]===``&&r.pop(),r}function Ez(e,t,n){let r=e.trim();if(!r)return e;let i=r.search(/\s/),a=i===-1?r:r.slice(0,i),o=i===-1?``:r.slice(i+1).trim(),s=[];if(o)try{s=JSON.parse(o)}catch{s=[o]}let c={id:t,method:a,params:s};return n||(c.jsonrpc=`2.0`),JSON.stringify(c)}function Dz(e){try{return new TextDecoder(`utf-8`,{fatal:!1}).decode(e)}catch{return t(e)}}function Oz(e){if(typeof e==`string`)return{bytes:new TextEncoder().encode(e),isBinary:!1};if(e instanceof ArrayBuffer)return{bytes:new Uint8Array(e),isBinary:!0};if(ArrayBuffer.isView(e)){let t=e;return{bytes:new Uint8Array(t.buffer,t.byteOffset,t.byteLength),isBinary:!0}}return{bytes:new TextEncoder().encode(String(e)),isBinary:!1}}const kz=1e4;function Az(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function jz(){let e=!1,t=Az();return{...t,settle:n=>{e||(e=!0,t.resolve(n))}}}function Mz(e,t){return e.length?e.join(t)+t:``}function Nz(e){return e.length?e.join(`
3149
3144
  `)+`
3150
- `:``}function rB(e,t,n){e.quiet||t.push(`websocat: ${n}`)}function iB(e,t){e.verbose<1||(e.customHeaders.length>0&&rB(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&&rB(e,t,`--ping-interval has no effect in browsers (no ping API exposed)`),e.insecure&&rB(e,t,`-k/--insecure has no effect in browsers`))}function aB(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 oB(e,t,n,r){if(n.outLines.length<Qz){n.outLines.push(r);return}n.droppedForOverflow===0&&rB(e,t,`output buffer reached ${Qz} 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 sB(e,n,r){let{bytes:i,isBinary:a}=Zz(r);return i.length>e.bufferSize&&(rB(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):Xz(i)}function cB(e,t){return e.maxMessages!==void 0&&t>=e.maxMessages||e.oneMessage}function lB(e,t,n){try{n===void 0?e.close(t):e.close(t,n)}catch{}}function uB(e,t){setTimeout(()=>{lB(t,e.closeStatus??1e3,e.closeReason)},0)}function dB(e,t,n){let r=Jz(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=Yz(n,i,t.jsonrpcOmit),i+=1),t.binary?e.send(new TextEncoder().encode(r).buffer):e.send(r),a+=1}return a}function fB(e,t,n){!t.oneMessage&&!t.noClose&&(t.exitOnEof||n===0)&&uB(t,e)}async function pB(e,t,n){let r=[];iB(e,r);let i=e.nullTerminated?`\0`:`
3151
- `,a=aB(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=$z(),u=eB(),d=0,f=!1,p=setTimeout(()=>{f=!0,lB(o,1e3),c||l.reject(Error(`connect timeout`))},e.connTimeoutMs),m=()=>{if(e.noClose){u.settle(d);return}lB(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=sB(e,r,t.data);oB(e,r,s,n)}s.received+=1,cB(e,s.received)&&(s.finishing=!0,m())}},o.onerror=()=>{f||(rB(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&&rB(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:tB(s.outLines,i),stderr:nB(r.concat([`websocat: ${t}`])),exitCode:t===`connect timeout`?124:1}}e.unidirectionalReverse?!e.noClose&&e.exitOnEof&&!e.oneMessage&&uB(e,o):fB(o,e,dB(o,e,t));let h=await u.promise;return s.droppedForOverflow>0&&rB(e,r,`dropped ${s.droppedForOverflow} inbound message(s) due to output buffer cap`),{stdout:tB(s.outLines,i),stderr:nB(r),exitCode:h}}function mB(e){return{stdout:``,stderr:e,exitCode:2}}function hB(e){return e.WebSocketCtor??(typeof WebSocket<`u`?WebSocket:void 0)}async function gB(e,t,n={}){let r=qz(e);if(r.showHelp)return Pz();if(r.error)return mB(r.error);if(!r.url)return mB(`websocat: missing ws:// or wss:// URL (use --help for usage)
3152
- `);if(!/^wss?:\/\//i.test(r.url))return mB(`websocat: URL must start with ws:// or wss://, got '${r.url}'\n`);let i=hB(n);return i?pB(r,t.stdin,i):{stdout:``,stderr:`websocat: no WebSocket implementation available in this runtime
3153
- `,exitCode:1}}function _B(){return S(`websocat`,async(e,t)=>gB(e,{stdin:P(t.stdin)}))}function vB(){return S(`__wf_progress`,async()=>({stdout:``,stderr:``,exitCode:0}))}const yB={commands:new Map,collisions:[]};async function bB(e,t){let n=lr(t);return e.scriptCatalog?e.scriptCatalog.getJshIndex(n):e.fs?fr(e.fs,n):yB}async function xB(e){return e.scriptCatalog?e.scriptCatalog.getWorkflowCommands():e.fs?Ci(e.fs):new Map}async function SB(e){return e.scriptCatalog?e.scriptCatalog.getWasmCommands():new Map}function CB(e,t){let n=e.script?`script`:`wasm`;return`${e.glue} (${n}, ${e.pkg}${t?`, ${t}`:``})`}function wB(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 ${CB(r)})`),t){let e=n?[t,...n.shadowedPaths]:[t];for(let t of e)a.push(` (shadowed ${t})`)}return a}function TB(e,{collision:t,wasm:n,wf:r}){let i=[e];for(let e of t?.shadowedPaths??[])i.push(` (shadowed ${e})`);return n&&i.push(` ${CB(n,`shadowed by .jsh`)}`),r&&i.push(` ${r.path} (workflow, shadowed by .jsh)`),i}function EB(e,t,n,r,i){let{jshPath:a,wasm:o,wf:s}=t;if(n.has(e))return{lines:wB(e,t),found:!0};if(a)return{lines:TB(a,t),found:!0};if(o){let e=[CB(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 DB(e={}){let t=e.scriptCatalog!==void 0||e.fs!==void 0?e:typeof e.walk==`function`&&typeof e.exists==`function`?{fs:e}:{};return S(`which`,async(e,n)=>{if(w(e))return{stdout:`which - locate a command
3145
+ `:``}function Pz(e,t,n){e.quiet||t.push(`websocat: ${n}`)}function Fz(e,t){e.verbose<1||(e.customHeaders.length>0&&Pz(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&&Pz(e,t,`--ping-interval has no effect in browsers (no ping API exposed)`),e.insecure&&Pz(e,t,`-k/--insecure has no effect in browsers`))}function Iz(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 Lz(e,t,n,r){if(n.outLines.length<kz){n.outLines.push(r);return}n.droppedForOverflow===0&&Pz(e,t,`output buffer reached ${kz} 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 Rz(e,n,r){let{bytes:i,isBinary:a}=Oz(r);return i.length>e.bufferSize&&(Pz(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):Dz(i)}function zz(e,t){return e.maxMessages!==void 0&&t>=e.maxMessages||e.oneMessage}function Bz(e,t,n){try{n===void 0?e.close(t):e.close(t,n)}catch{}}function Vz(e,t){setTimeout(()=>{Bz(t,e.closeStatus??1e3,e.closeReason)},0)}function Hz(e,t,n){let r=Tz(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=Ez(n,i,t.jsonrpcOmit),i+=1),t.binary?e.send(new TextEncoder().encode(r).buffer):e.send(r),a+=1}return a}function Uz(e,t,n){!t.oneMessage&&!t.noClose&&(t.exitOnEof||n===0)&&Vz(t,e)}async function Wz(e,t,n){let r=[];Fz(e,r);let i=e.nullTerminated?`\0`:`
3146
+ `,a=Iz(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=Az(),u=jz(),d=0,f=!1,p=setTimeout(()=>{f=!0,Bz(o,1e3),c||l.reject(Error(`connect timeout`))},e.connTimeoutMs),m=()=>{if(e.noClose){u.settle(d);return}Bz(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=Rz(e,r,t.data);Lz(e,r,s,n)}s.received+=1,zz(e,s.received)&&(s.finishing=!0,m())}},o.onerror=()=>{f||(Pz(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&&Pz(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:Mz(s.outLines,i),stderr:Nz(r.concat([`websocat: ${t}`])),exitCode:t===`connect timeout`?124:1}}e.unidirectionalReverse?!e.noClose&&e.exitOnEof&&!e.oneMessage&&Vz(e,o):Uz(o,e,Hz(o,e,t));let h=await u.promise;return s.droppedForOverflow>0&&Pz(e,r,`dropped ${s.droppedForOverflow} inbound message(s) due to output buffer cap`),{stdout:Mz(s.outLines,i),stderr:Nz(r),exitCode:h}}function Gz(e){return{stdout:``,stderr:e,exitCode:2}}function Kz(e){return e.WebSocketCtor??(typeof WebSocket<`u`?WebSocket:void 0)}async function qz(e,t,n={}){let r=wz(e);if(r.showHelp)return dz();if(r.error)return Gz(r.error);if(!r.url)return Gz(`websocat: missing ws:// or wss:// URL (use --help for usage)
3147
+ `);if(!/^wss?:\/\//i.test(r.url))return Gz(`websocat: URL must start with ws:// or wss://, got '${r.url}'\n`);let i=Kz(n);return i?Wz(r,t.stdin,i):{stdout:``,stderr:`websocat: no WebSocket implementation available in this runtime
3148
+ `,exitCode:1}}function Jz(){return S(`websocat`,async(e,t)=>qz(e,{stdin:P(t.stdin)}))}function Yz(){return S(`__wf_progress`,async()=>({stdout:``,stderr:``,exitCode:0}))}const Xz={commands:new Map,collisions:[]};async function Zz(e,t){let n=or(t);return e.scriptCatalog?e.scriptCatalog.getJshIndex(n):e.fs?lr(e.fs,n):Xz}async function Qz(e){return e.scriptCatalog?e.scriptCatalog.getWorkflowCommands():e.fs?bi(e.fs):new Map}async function $z(e){return e.scriptCatalog?e.scriptCatalog.getWasmCommands():new Map}function eB(e,t){let n=e.script?`script`:`wasm`;return`${e.glue} (${n}, ${e.pkg}${t?`, ${t}`:``})`}function tB(e,{jshPath:t,collision:n,wasm:r,wf:i}){let a=[`/usr/bin/${e}`];if((t||r||i)&&a.push(` (shadowed by built-in ${e})`),r&&a.push(` (shadowed ${eB(r)})`),t){let e=n?[t,...n.shadowedPaths]:[t];for(let t of e)a.push(` (shadowed ${t})`)}return a}function nB(e,{collision:t,wasm:n,wf:r}){let i=[e];for(let e of t?.shadowedPaths??[])i.push(` (shadowed ${e})`);return n&&i.push(` ${eB(n,`shadowed by .jsh`)}`),r&&i.push(` ${r.path} (workflow, shadowed by .jsh)`),i}function rB(e,t,n,r,i){let{jshPath:a,wasm:o,wf:s}=t;if(n.has(e))return{lines:tB(e,t),found:!0};if(a)return{lines:nB(a,t),found:!0};if(o){let e=[eB(o)];return s&&e.push(` ${s.path} (workflow, shadowed by wasm)`),{lines:e,found:!0}}return s?{lines:[`${s.path} (workflow)`],found:!0}:r.has(e)&&!i.has(e)?{lines:[`/usr/bin/${e}`],found:!0}:{lines:[],found:!1}}function iB(e={}){let t=e.scriptCatalog!==void 0||e.fs!==void 0?e:typeof e.walk==`function`&&typeof e.exists==`function`?{fs:e}:{};return S(`which`,async(e,n)=>{if(w(e))return{stdout:`which - locate a command
3154
3149
 
3155
3150
  Usage: which <command> [command...]
3156
3151
 
@@ -3162,9 +3157,9 @@ Prints the path of the given command(s).
3162
3157
 
3163
3158
  Exit code 0 if all commands found, 1 if any not found.
3164
3159
  `,stderr:``,exitCode:0};let r=C(e,{});if(`error`in r)return{stdout:``,stderr:`which: ${r.error}\n`,exitCode:1};if(r.positionals.length===0)return{stdout:``,stderr:`which: missing argument
3165
- `,exitCode:1};let i=n.getRegisteredCommands?.()??[],a=new Set(i),o=await bB(t,n.env.get(`PATH`)),s=o.commands,c=new Map(o.collisions.map(e=>[e.name,e])),l=await xB(t),u=await SB(t),d=typeof t.getStaticBuiltins==`function`?new Set(t.getStaticBuiltins()):a,f=new Set(t.getScriptRegisteredNames?.()??[]),p=[],m=!0;for(let e of r.positionals){let t=EB(e,{jshPath:s.get(e),collision:c.get(e),wasm:u.get(e),wf:l.get(e)},d,a,f);p.push(...t.lines),t.found||(m=!1)}return{stdout:p.length>0?p.join(`
3160
+ `,exitCode:1};let i=n.getRegisteredCommands?.()??[],a=new Set(i),o=await Zz(t,n.env.get(`PATH`)),s=o.commands,c=new Map(o.collisions.map(e=>[e.name,e])),l=await Qz(t),u=await $z(t),d=typeof t.getStaticBuiltins==`function`?new Set(t.getStaticBuiltins()):a,f=new Set(t.getScriptRegisteredNames?.()??[]),p=[],m=!0;for(let e of r.positionals){let t=rB(e,{jshPath:s.get(e),collision:c.get(e),wasm:u.get(e),wf:l.get(e)},d,a,f);p.push(...t.lines),t.found||(m=!1)}return{stdout:p.length>0?p.join(`
3166
3161
  `)+`
3167
- `:``,stderr:``,exitCode:+!m}})}const OB=`__slicc_workflows`,kB=String.raw`
3162
+ `:``,stderr:``,exitCode:+!m}})}const aB=`__slicc_workflows`,oB=String.raw`
3168
3163
  class WorkflowError extends Error {}
3169
3164
  class WorkflowDeterminismError extends WorkflowError {}
3170
3165
  class WorkflowAgentCapError extends WorkflowError {}
@@ -3222,6 +3217,12 @@ async function agent(prompt, opts) {
3222
3217
  if (opts.model) flags.push('--model', String(opts.model));
3223
3218
  if (opts.thinking) flags.push('--thinking', String(opts.thinking));
3224
3219
  if (opts.schema) flags.push('--schema-b64', __b64(JSON.stringify(opts.schema)));
3220
+ if (opts.minimal) flags.push('--minimal');
3221
+ if (opts.systemPrompt != null && opts.systemPrompt !== '') flags.push('--system-prompt=' + String(opts.systemPrompt));
3222
+ if (opts.tools) flags.push('--tools', String(opts.tools));
3223
+ if (opts.resume && opts.session) flags.push('--resume', String(opts.session));
3224
+ else if (opts.session) flags.push('--session', String(opts.session));
3225
+ if (opts.usage || opts.session || opts.resume) flags.push('--usage');
3225
3226
  // No --read-only: the flag is pure-replace, so naming '/workspace/' here
3226
3227
  // would override the command's owner-relative default and hand a workflow
3227
3228
  // agent running under an extra cone the primary cone's files (#2271).
@@ -3277,40 +3278,40 @@ function log(message) {
3277
3278
  }
3278
3279
  const budget = { total: (__WF.budget == null ? null : __WF.budget), spent() { return 0; }, remaining() { return this.total == null ? Infinity : Math.max(0, this.total - this.spent()); } };
3279
3280
  function workflow() { throw new WorkflowNestingUnsupportedError('nested workflow() unsupported in SP1'); }
3280
- `;function AB(){return`WF_RESULT_${globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function jB(e){let t=FB(e);return t===null?{name:null,description:null}:{name:IB(t,`name`),description:IB(t,`description`)}}function MB(e){return e.replace(/\bexport\s+(const|let|var|function|async\s+function|class)\b/g,`$1`)}function NB(e){return`const __emit = console.log.bind(console);
3281
+ `;function sB(){return`WF_RESULT_${globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function cB(e){let t=fB(e);return t===null?{name:null,description:null}:{name:pB(t,`name`),description:pB(t,`description`)}}function lB(e){return e.replace(/\bexport\s+(const|let|var|function|async\s+function|class)\b/g,`$1`)}function uB(e){return`const __emit = console.log.bind(console);
3281
3282
  const __stringify = JSON.stringify.bind(JSON);
3282
- const __WF = ${JSON.stringify(e.config)};\n${e.prelude}\nconst __r = await (async () => {\n${MB(e.body)}\n})();\n__emit(${JSON.stringify(e.sentinel)} + __stringify(__r ?? null));\n`}function PB(e,t){let n=e.split(`
3283
+ const __WF = ${JSON.stringify(e.config)};\n${e.prelude}\nconst __r = await (async () => {\n${lB(e.body)}\n})();\n__emit(${JSON.stringify(e.sentinel)} + __stringify(__r ?? null));\n`}function dB(e,t){let n=e.split(`
3283
3284
  `);for(let e=n.length-1;e>=0;e--)if(n[e].startsWith(t)){let r=[...n.slice(0,e),...n.slice(e+1)].join(`
3284
- `).replace(/\n+$/,``);try{return{result:JSON.parse(n[e].slice(t.length)),log:r,hadResult:!0}}catch{return{result:null,log:r,hadResult:!0}}}return{result:null,log:e.replace(/\n+$/,``),hadResult:!1}}function FB(e){let t=/\bmeta\s*=\s*\{/.exec(e);if(!t)return null;let n=t.index+t[0].length-1,r=0;for(let t=n;t<e.length;t++)if(e[t]===`{`)r++;else if(e[t]===`}`&&--r===0)return e.slice(n+1,t);return null}function IB(e,t){let n=RegExp(`\\b${t}\\s*:\\s*(['"\\\`])((?:\\\\.|(?!\\1).)*)\\1`).exec(e);return n?n[2]:null}const LB=e(`workflow-command`),RB=`usage: workflow run <file.js> [--args <json>] [--budget <n>] [--concurrency <n>] [--wait]
3285
+ `).replace(/\n+$/,``);try{return{result:JSON.parse(n[e].slice(t.length)),log:r,hadResult:!0}}catch{return{result:null,log:r,hadResult:!0}}}return{result:null,log:e.replace(/\n+$/,``),hadResult:!1}}function fB(e){let t=/\bmeta\s*=\s*\{/.exec(e);if(!t)return null;let n=t.index+t[0].length-1,r=0;for(let t=n;t<e.length;t++)if(e[t]===`{`)r++;else if(e[t]===`}`&&--r===0)return e.slice(n+1,t);return null}function pB(e,t){let n=RegExp(`\\b${t}\\s*:\\s*(['"\\\`])((?:\\\\.|(?!\\1).)*)\\1`).exec(e);return n?n[2]:null}const mB=e(`workflow-command`),hB=`usage: workflow run <file.js> [--args <json>] [--budget <n>] [--concurrency <n>] [--wait]
3285
3286
  workflow run --script '<inline js>' [...]
3286
3287
  workflow list
3287
3288
  workflow status <runId>
3288
3289
  workflow stop <runId>
3289
3290
  workflow save <runId> <name> [--force]
3290
3291
  Runs a Claude-Code-format dynamic workflow. Default is non-blocking (returns a run id);
3291
- pass --wait to block and print the full result.`,zB=new Set([`list`,`status`,`stop`,`save`]);function BB(){return globalThis[OB]}function VB(){let e=globalThis.navigator?.hardwareConcurrency??8;return Math.min(16,Math.max(8,e*4))}function HB(e,t,n,r){let i=t[n];switch(i){case`-h`:case`--help`:return{i:n,help:!0};case`--script`:return e.script=t[++n],{i:n};case`--wait`:return e.wait=!0,{i:n};case`--args`:try{e.args=JSON.parse(t[++n]??``),e.hasArgs=!0}catch{return{i:n,error:`workflow: --args must be valid JSON`}}return{i:n};case`--budget`:{let r=Number(t[++n]);return Number.isFinite(r)?(e.budget=r,{i:n}):{i:n,error:`workflow: --budget must be a number`}}case`--concurrency`:{let i=Number(t[++n]);return Number.isFinite(i)?(e.cap=Math.min(r,Math.max(1,Math.trunc(i))),{i:n}):{i:n,error:`workflow: --concurrency must be a number`}}default:return i.startsWith(`-`)?{i:n,error:`workflow: unknown flag '${i}'`}:e.file===void 0?(e.file=i,{i:n}):{i:n,error:`workflow: too many arguments`}}}function UB(e){if(e[0]!==`run`)return e.length===0||e.includes(`-h`)||e.includes(`--help`)?{help:!0}:{error:`workflow: unknown subcommand '${e[0]}' (only 'run' in SP1)`};let t=VB(),n={budget:null,cap:Math.min(8,t)};for(let r=1;r<e.length;r++){let i=HB(n,e,r,t);if(i.help)return{help:!0};if(i.error)return{error:i.error};r=i.i}return n.script===void 0&&n.file===void 0?{error:`workflow: a <file.js> or --script is required`}:n}function WB(e={}){return S(`workflow`,async(t,n)=>{if(zB.has(t[0])&&w(t.slice(1)))return{stdout:RB+`
3292
- `,stderr:``,exitCode:0};if(t[0]===`list`||t[0]===`status`||t[0]===`stop`)return XB(t,n);if(t[0]===`save`)return YB(t,n,e);let r=UB(t);if(r.help)return{stdout:RB+`
3292
+ pass --wait to block and print the full result.`,gB=new Set([`list`,`status`,`stop`,`save`]);function _B(){return globalThis[aB]}function vB(){let e=globalThis.navigator?.hardwareConcurrency??8;return Math.min(16,Math.max(8,e*4))}function yB(e,t,n,r){let i=t[n];switch(i){case`-h`:case`--help`:return{i:n,help:!0};case`--script`:return e.script=t[++n],{i:n};case`--wait`:return e.wait=!0,{i:n};case`--args`:try{e.args=JSON.parse(t[++n]??``),e.hasArgs=!0}catch{return{i:n,error:`workflow: --args must be valid JSON`}}return{i:n};case`--budget`:{let r=Number(t[++n]);return Number.isFinite(r)?(e.budget=r,{i:n}):{i:n,error:`workflow: --budget must be a number`}}case`--concurrency`:{let i=Number(t[++n]);return Number.isFinite(i)?(e.cap=Math.min(r,Math.max(1,Math.trunc(i))),{i:n}):{i:n,error:`workflow: --concurrency must be a number`}}default:return i.startsWith(`-`)?{i:n,error:`workflow: unknown flag '${i}'`}:e.file===void 0?(e.file=i,{i:n}):{i:n,error:`workflow: too many arguments`}}}function bB(e){if(e[0]!==`run`)return e.length===0||e.includes(`-h`)||e.includes(`--help`)?{help:!0}:{error:`workflow: unknown subcommand '${e[0]}' (only 'run' in SP1)`};let t=vB(),n={budget:null,cap:Math.min(8,t)};for(let r=1;r<e.length;r++){let i=yB(n,e,r,t);if(i.help)return{help:!0};if(i.error)return{error:i.error};r=i.i}return n.script===void 0&&n.file===void 0?{error:`workflow: a <file.js> or --script is required`}:n}function xB(e={}){return S(`workflow`,async(t,n)=>{if(gB.has(t[0])&&w(t.slice(1)))return{stdout:hB+`
3293
+ `,stderr:``,exitCode:0};if(t[0]===`list`||t[0]===`status`||t[0]===`stop`)return DB(t,n);if(t[0]===`save`)return EB(t,n,e);let r=bB(t);if(r.help)return{stdout:hB+`
3293
3294
  `,stderr:``,exitCode:0};if(r.error)return{stdout:``,stderr:r.error+`
3294
- `,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=jB(i);if(!o.name)return{stdout:``,stderr:`workflow: script must define a meta block with a name (description optional)
3295
- `,exitCode:1};let s=AB().slice(10,22),c=`/shared/workflow-runs/${s}/scratch/`;await n.fs.mkdir(c,{recursive:!0});let l=AB(),u=NB({prelude:kB,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?GB(u,a,l,o,n):KB({code:u,source:i,name:o.name,filename:a,sentinel:l,runId:s,ctx:n,options:e})})}async function GB(e,t,n,r,i){let a;try{a=await ci(e,[`workflow`,t],i,void 0,{filename:t})}catch(e){return LB.error(`workflow run failed`,e),{stdout:``,stderr:`workflow: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return ZB(r,a,n)}async function KB(e){let t=BB();if(!t)return{stdout:``,stderr:`workflow: run manager not available
3296
- `,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 qB=/^[a-z0-9][a-z0-9-]*$/,JB=`/workspace/.workflows`;async function YB(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]
3297
- `,exitCode:1};if(!qB.test(o))return{stdout:``,stderr:`workflow: invalid name '${o}' (use [a-z0-9][a-z0-9-]*)\n`,exitCode:1};let c=BB()?.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=`${JB}/${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(JB,{recursive:!0}),await t.fs.writeFile(l,c.source);try{await n.syncScriptCommands?.()}catch(e){LB.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 XB(e,t){let n=BB();if(e[0]===`list`){if(!n)return{stdout:``,stderr:`workflow: run manager not available
3295
+ `,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=cB(i);if(!o.name)return{stdout:``,stderr:`workflow: script must define a meta block with a name (description optional)
3296
+ `,exitCode:1};let s=sB().slice(10,22),c=`/shared/workflow-runs/${s}/scratch/`;await n.fs.mkdir(c,{recursive:!0});let l=sB(),u=uB({prelude:oB,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?SB(u,a,l,o,n):CB({code:u,source:i,name:o.name,filename:a,sentinel:l,runId:s,ctx:n,options:e})})}async function SB(e,t,n,r,i){let a;try{a=await ai(e,[`workflow`,t],i,void 0,{filename:t})}catch(e){return mB.error(`workflow run failed`,e),{stdout:``,stderr:`workflow: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return OB(r,a,n)}async function CB(e){let t=_B();if(!t)return{stdout:``,stderr:`workflow: run manager not available
3297
+ `,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 wB=/^[a-z0-9][a-z0-9-]*$/,TB=`/workspace/.workflows`;async function EB(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]
3298
+ `,exitCode:1};if(!wB.test(o))return{stdout:``,stderr:`workflow: invalid name '${o}' (use [a-z0-9][a-z0-9-]*)\n`,exitCode:1};let c=_B()?.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=`${TB}/${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(TB,{recursive:!0}),await t.fs.writeFile(l,c.source);try{await n.syncScriptCommands?.()}catch(e){mB.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 DB(e,t){let n=_B();if(e[0]===`list`){if(!n)return{stdout:``,stderr:`workflow: run manager not available
3298
3299
  `,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(`
3299
3300
  `):`(no runs)`)+`
3300
3301
  `,stderr:``,exitCode:0}}let r=e[1],i=n?.getRun(r??``);if(!i)return{stdout:``,stderr:`workflow: no run '${r}'\n`,exitCode:1};if(e[0]===`status`)return{stdout:[`run ${i.id} (${i.name??`unnamed`}) status=${i.status}`,`agents ${i.agentsDone}/${i.agentsStarted} phase=${i.currentPhase??`-`}`,i.resultPath?`result: ${i.resultPath}`:``,i.preview?`preview: ${i.preview}`:``,i.error?`error: ${i.error}`:``].filter(Boolean).join(`
3301
3302
  `)+`
3302
- `,stderr:``,exitCode:0};if(i.pid==null)return{stdout:`workflow: run ${i.id} has not started a realm process yet (nothing to stop)\n`,stderr:``,exitCode:0};if(i.status!==`running`&&i.status!==`paused`)return{stdout:`workflow: run ${i.id} already ${i.status}\n`,stderr:``,exitCode:0};let a=await t.exec?.(`kill`,{cwd:t.cwd,args:[`-KILL`,String(i.pid)]});return a&&a.exitCode!==0?{stdout:``,stderr:a.stderr||`workflow: kill failed (exit ${a.exitCode})\n`,exitCode:a.exitCode}:{stdout:`stopped run ${i.id} (pid ${i.pid})\n`,stderr:``,exitCode:0}}function ZB(e,t,n){let{result:r,log:i,hadResult:a}=PB(t.stdout,n),o=e.name?`workflow: ${e.name}${e.description?` — `+e.description:``}\n`:``,s=i?QB(i)+`
3303
+ `,stderr:``,exitCode:0};if(i.pid==null)return{stdout:`workflow: run ${i.id} has not started a realm process yet (nothing to stop)\n`,stderr:``,exitCode:0};if(i.status!==`running`&&i.status!==`paused`)return{stdout:`workflow: run ${i.id} already ${i.status}\n`,stderr:``,exitCode:0};let a=await t.exec?.(`kill`,{cwd:t.cwd,args:[`-KILL`,String(i.pid)]});return a&&a.exitCode!==0?{stdout:``,stderr:a.stderr||`workflow: kill failed (exit ${a.exitCode})\n`,exitCode:a.exitCode}:{stdout:`stopped run ${i.id} (pid ${i.pid})\n`,stderr:``,exitCode:0}}function OB(e,t,n){let{result:r,log:i,hadResult:a}=dB(t.stdout,n),o=e.name?`workflow: ${e.name}${e.description?` — `+e.description:``}\n`:``,s=i?kB(i)+`
3303
3304
  `:``;return t.exitCode!==0||!a?{stdout:o+s,stderr:t.stderr||(a?``:`workflow: script produced no result
3304
3305
  `),exitCode:t.exitCode||1}:{stdout:o+s+(typeof r==`string`?r:JSON.stringify(r))+`
3305
- `,stderr:t.stderr,exitCode:0}}function QB(e){return e.split(`
3306
+ `,stderr:t.stderr,exitCode:0}}function kB(e){return e.split(`
3306
3307
  `).map(e=>e.replace(/^WFPHASE/,`▸ `).replace(/^WFLOG/,`· `)).join(`
3307
- `)}function $B(e){return{stdout:``,stderr:`xxd: ${e}\n`,exitCode:1}}function eV(e){if(e==null)throw Error(`missing option value`);let t=e.startsWith(`-`),n=t||e.startsWith(`+`)?e.slice(1):e,r;if(/^0x[0-9a-fA-F]+$/.test(n))r=parseInt(n.slice(2),16);else if(/^[0-9]+$/.test(n))r=parseInt(n,10);else throw Error(`invalid number: ${e}`);return t?-r:r}function tV(e,t){let n=e.toString(16).padStart(2,`0`);return t?n.toUpperCase():n}function nV(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function rV(e){return e.replace(/[^0-9a-zA-Z]/g,`_`)}function iV(e,t,n,r,i){let a=[];for(let o=0;o<e.length;o+=t){let s=Math.min(o+t,e.length),c=(i+o).toString(16).padStart(8,`0`),l=``;for(let i=0;i<t;i++)n>0&&i>0&&i%n===0&&(l+=` `),l+=o+i<s?tV(e[o+i],r):` `;let u=``;for(let t=o;t<s;t++)u+=e[t]>=32&&e[t]<=126?String.fromCharCode(e[t]):`.`;a.push(`${c}: ${l} ${u}`)}return a.length?a.join(`
3308
+ `)}function AB(e){return{stdout:``,stderr:`xxd: ${e}\n`,exitCode:1}}function jB(e){if(e==null)throw Error(`missing option value`);let t=e.startsWith(`-`),n=t||e.startsWith(`+`)?e.slice(1):e,r;if(/^0x[0-9a-fA-F]+$/.test(n))r=parseInt(n.slice(2),16);else if(/^[0-9]+$/.test(n))r=parseInt(n,10);else throw Error(`invalid number: ${e}`);return t?-r:r}function MB(e,t){let n=e.toString(16).padStart(2,`0`);return t?n.toUpperCase():n}function NB(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function PB(e){return e.replace(/[^0-9a-zA-Z]/g,`_`)}function FB(e,t,n,r,i){let a=[];for(let o=0;o<e.length;o+=t){let s=Math.min(o+t,e.length),c=(i+o).toString(16).padStart(8,`0`),l=``;for(let i=0;i<t;i++)n>0&&i>0&&i%n===0&&(l+=` `),l+=o+i<s?MB(e[o+i],r):` `;let u=``;for(let t=o;t<s;t++)u+=e[t]>=32&&e[t]<=126?String.fromCharCode(e[t]):`.`;a.push(`${c}: ${l} ${u}`)}return a.length?a.join(`
3308
3309
  `)+`
3309
- `:``}function aV(e,t,n){let r=``;for(let i=0;i<e.length;i+=t){let a=``;for(let r=0;r<t&&i+r<e.length;r++)a+=tV(e[i+r],n);r+=a+`
3310
- `}return r}function oV(e,t,n,r){let i=Array.from(e,e=>`0x${tV(e,n)}`),a=[];for(let e=0;e<i.length;e+=t)a.push(` `+i.slice(e,e+t).join(`, `));let o=a.join(`,
3310
+ `:``}function IB(e,t,n){let r=``;for(let i=0;i<e.length;i+=t){let a=``;for(let r=0;r<t&&i+r<e.length;r++)a+=MB(e[i+r],n);r+=a+`
3311
+ `}return r}function LB(e,t,n,r){let i=Array.from(e,e=>`0x${MB(e,n)}`),a=[];for(let e=0;e<i.length;e+=t)a.push(` `+i.slice(e,e+t).join(`, `));let o=a.join(`,
3311
3312
  `);return r===null?i.length?o+`
3312
- `:``:`unsigned char ${r}[] = {\n${o}\n};\nunsigned int ${r}_len = ${e.length};\n`}function sV(e){let t=e.replace(/[^0-9a-fA-F]/g,``),n=Math.floor(t.length/2),r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=parseInt(t.substr(e*2,2),16);return r}function cV(e){let t=[],n=0;for(let r of e.split(`
3313
- `)){let e=r.replace(/\r$/,``),i=e.indexOf(`:`);if(i<0)continue;let a=parseInt(e.slice(0,i).trim(),16);if(Number.isNaN(a))continue;let o=e.slice(i+1),s=o.indexOf(` `);s>=0&&(o=o.slice(0,s));let c=o.replace(/[^0-9a-fA-F]/g,``),l=[];for(let e=0;e+1<c.length;e+=2)l.push(parseInt(c.substr(e,2),16));l.length&&(t.push({offset:a,bytes:l}),n=Math.max(n,a+l.length))}if(!t.length)return new Uint8Array;let r=new Uint8Array(n);for(let e of t)for(let t=0;t<e.bytes.length;t++)r[e.offset+t]=e.bytes[t];return r}const lV={"-u":`upper`,"-p":`plain`,"-ps":`plain`,"-postscript":`plain`,"-i":`include`,"-include":`include`,"-r":`revert`,"-revert":`revert`},uV=[{key:`cols`,exact:[`-c`,`-cols`],attached:/^-c(0x)?[0-9]/},{key:`group`,exact:[`-g`,`-groupsize`],attached:/^-g(0x)?[0-9]/},{key:`length`,exact:[`-l`,`-len`],attached:/^-l(0x)?[0-9]/},{key:`seek`,exact:[`-s`,`-seek`],attached:/^-s[+-]?(0x)?[0-9]/}];function dV(e){let t={upper:!1,plain:!1,include:!1,revert:!1,positional:[]};for(let n=0;n<e.length;n++){let r=e[n],i=lV[r];if(i){t[i]=!0;continue}let a=uV.find(e=>e.exact.includes(r)||e.attached.test(r));if(a){t[a.key]=eV(a.exact.includes(r)?e[++n]:r.slice(2));continue}if(r!==`-`&&r.startsWith(`-`)&&r.length>1)throw Error(`invalid option ${r}`);t.positional.push(r)}return t}function fV(e){return e.includes(`-h`)||e.includes(`--help`)||e.includes(`-help`)}async function pV(e,t,n){if(!n&&t)return e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t));let r=bi(e.stdin),i=new Uint8Array(r.length);for(let e=0;e<r.length;e++)i[e]=r.charCodeAt(e)&255;return i}function mV(e,t,n,r,i){let a=e.cols&&e.cols>0?e.cols:e.plain?30:e.include?12:16;return e.plain?aV(t,a,e.upper):e.include?oV(t,a,e.upper,i?null:rV(r??``)):iV(t,a,e.group!=null&&e.group>=0?e.group:2,e.upper,n)}function hV(e,t){let n=0,r=t;return e.seek!==void 0&&(n=e.seek<0?Math.max(0,r.length+e.seek):Math.min(e.seek,r.length),r=r.subarray(n)),e.length!==void 0&&(r=r.subarray(0,Math.max(0,e.length))),{data:r,base:n}}function gV(){return S(`xxd`,async(e,t)=>{if(fV(e))return{stdout:`usage: xxd [options] [infile [outfile]]
3313
+ `:``:`unsigned char ${r}[] = {\n${o}\n};\nunsigned int ${r}_len = ${e.length};\n`}function RB(e){let t=e.replace(/[^0-9a-fA-F]/g,``),n=Math.floor(t.length/2),r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=parseInt(t.substr(e*2,2),16);return r}function zB(e){let t=[],n=0;for(let r of e.split(`
3314
+ `)){let e=r.replace(/\r$/,``),i=e.indexOf(`:`);if(i<0)continue;let a=parseInt(e.slice(0,i).trim(),16);if(Number.isNaN(a))continue;let o=e.slice(i+1),s=o.indexOf(` `);s>=0&&(o=o.slice(0,s));let c=o.replace(/[^0-9a-fA-F]/g,``),l=[];for(let e=0;e+1<c.length;e+=2)l.push(parseInt(c.substr(e,2),16));l.length&&(t.push({offset:a,bytes:l}),n=Math.max(n,a+l.length))}if(!t.length)return new Uint8Array;let r=new Uint8Array(n);for(let e of t)for(let t=0;t<e.bytes.length;t++)r[e.offset+t]=e.bytes[t];return r}const BB={"-u":`upper`,"-p":`plain`,"-ps":`plain`,"-postscript":`plain`,"-i":`include`,"-include":`include`,"-r":`revert`,"-revert":`revert`},VB=[{key:`cols`,exact:[`-c`,`-cols`],attached:/^-c(0x)?[0-9]/},{key:`group`,exact:[`-g`,`-groupsize`],attached:/^-g(0x)?[0-9]/},{key:`length`,exact:[`-l`,`-len`],attached:/^-l(0x)?[0-9]/},{key:`seek`,exact:[`-s`,`-seek`],attached:/^-s[+-]?(0x)?[0-9]/}];function HB(e){let t={upper:!1,plain:!1,include:!1,revert:!1,positional:[]};for(let n=0;n<e.length;n++){let r=e[n],i=BB[r];if(i){t[i]=!0;continue}let a=VB.find(e=>e.exact.includes(r)||e.attached.test(r));if(a){t[a.key]=jB(a.exact.includes(r)?e[++n]:r.slice(2));continue}if(r!==`-`&&r.startsWith(`-`)&&r.length>1)throw Error(`invalid option ${r}`);t.positional.push(r)}return t}function UB(e){return e.includes(`-h`)||e.includes(`--help`)||e.includes(`-help`)}async function WB(e,t,n){if(!n&&t)return e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t));let r=_i(e.stdin),i=new Uint8Array(r.length);for(let e=0;e<r.length;e++)i[e]=r.charCodeAt(e)&255;return i}function GB(e,t,n,r,i){let a=e.cols&&e.cols>0?e.cols:e.plain?30:e.include?12:16;return e.plain?IB(t,a,e.upper):e.include?LB(t,a,e.upper,i?null:PB(r??``)):FB(t,a,e.group!=null&&e.group>=0?e.group:2,e.upper,n)}function KB(e,t){let n=0,r=t;return e.seek!==void 0&&(n=e.seek<0?Math.max(0,r.length+e.seek):Math.min(e.seek,r.length),r=r.subarray(n)),e.length!==void 0&&(r=r.subarray(0,Math.max(0,e.length))),{data:r,base:n}}function qB(){return S(`xxd`,async(e,t)=>{if(UB(e))return{stdout:`usage: xxd [options] [infile [outfile]]
3314
3315
  -c cols number of octets per line (default 16; 30 for -p; 12 for -i)
3315
3316
  -g bytes number of octets per group (default 2; 0 disables grouping)
3316
3317
  -l len stop after len octets
@@ -3320,10 +3321,10 @@ pass --wait to block and print the full result.`,zB=new Set([`list`,`status`,`st
3320
3321
  -i output in C include style
3321
3322
  -r reverse: convert a hex dump back to binary (-r -p for plain)
3322
3323
  -h show this help
3323
- `,stderr:``,exitCode:0};let n;try{n=dV(e)}catch(e){return $B(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await pV(t,r,a)}catch{return $B(`${r}: No such file or directory`)}if(n.revert){let e=nV(o),r=n.plain?sV(e):cV(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:nV(r),stderr:``,exitCode:0}}let{data:s,base:c}=hV(n,o),l=mV(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 _V(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=br(t,o),s=n?`${n}/${o}`:o;a+=await _V(e,i,s,r)}return a}function vV(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3324
- `,stderr:``,exitCode:0}}function yV(){return S(`zip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return vV();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
3325
- `,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(/^\.\//,``))||xr(r);if(i.isDirectory&&!n)return{stdout:``,stderr:`zip: ${e} is a directory (use -r)\n`,exitCode:1};s+=await _V(t,r,a,o)}if(s===0)return{stdout:``,stderr:`zip: nothing to do
3326
- `,exitCode:1};let c=jt(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function bV(e){let t;return S(`mcp`,async(n,r)=>{if(!t){let{createMcpCommand:n}=await import(`./mcp-command-CP16m6me.js`);t=n({fs:e.fs,scriptCatalog:e.scriptCatalog,connectionManager:e.mcpConnectionManager})}return t.execute(n,r)})}function xV(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function SV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[MO(`ipk`,r),MO(`npm`,r),MO(`i`,r),xk(`ipx`,{fs:t,fetch:n}),xk(`npx`,{fs:t,fetch:n}),Ob(`di`,{fs:t,fetch:n}),Ob(`uv`,{fs:t,fetch:n}),KL({fs:t,fetch:n})]}function CV(e){let t={buildProcessConfig:e.buildProcessConfig};return[`python3`,`python`,`pyodide`].map(e=>tN(e,t))}function wV(e){let t=e.scriptCatalog;return{buildProcessConfig:e.buildProcessConfig,terminal:e.terminal,gate:e.gateNativeCommand,commands:t&&(()=>t.getWasmCommands()),gitIdentity:e.gitIdentity}}function TV(e={}){let t=[LE({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),ae(),NF(),QP(),GP(e.browserAPI,e.fs),zj(e.browserAPI),Uy(e.browserAPI),HD(e),yV(),SL(),mI(e.fs?{fs:e.fs}:{}),BF(),qF(),WF(),Rv(),_z(wV(e)),lC(wV(e)),gV(),DF(`sqlite3`),DF(`sqllite`),jI(),ZI(),Wx(),bv(),nj({buildProcessConfig:e.buildProcessConfig}),nj({buildProcessConfig:e.buildProcessConfig},`jsh`),...CV(e),...SV(e),...e.fs?[cC({fs:e.fs})]:[],...e.fs?[mA({fs:e.fs})]:[],...e.fetch?[JE({fetch:e.fetch,streamFetch:e.streamFetch})]:[],LS(),RS(),XS(),Mz(e.webhook),_B(),Hy(e.crontask),bV(e),aM({fs:e.fs,fetch:e.fetch}),sC(),vF(),Bj(),Vj(`pdftk`),Vj(`pdf`),xv(`biscotto`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),xv(`biscotti`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),Zj(`pdftoppm`),Zj(`pdftocairo`),Qj(`pdftotext`),Ey(`convert`),Ey(`magick`),DB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),tL(),_L(),RD(),zD(),vL(),hA(),aN(),sA(),hx(),_j(),gj(),iA(),gP(xV(e)),jm(e.gitCredential),vN({fs:e.fs}),WN(),Fv(),Iv(),Lv(`xclip`),Lv(`xsel`),UN(),wC(),Kg(),qg(),HA(e.fs),ut(),sj(),p_({getParentJid:e.getParentJid}),Cx(),DM({processManager:e.processManager}),sR({processManager:e.processManager}),wk({processManager:e.processManager}),Sk({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...g_(),pA(),Xk(),MR(),bD(),TS(),JR({processManager:e.processManager}),Vv({processManager:e.processManager,browser:e.browserAPI,sudoBroker:e.sudoCommand?.broker}),IS(),Ov({registry:e.cherryRuntimeRegistry}),Qy(),ib({fs:e.fs}),ab({fs:e.fs}),FF(e.sudoCommand),WB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),vB(),ZP()];return e.fs&&(eM(),t.push(...Jn.map(t=>PE(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let EV=null;function DV(e){EV=e}function OV(e){EV?.(e)}var kV=Ht();const AV={user:`user`,home:gp},jV=new Set([`root`,`nobody`,`nogroup`]),MV=/^[A-Za-z_][A-Za-z0-9_.-]*$/;function NV(e){return{user:MV.test(e.user)&&!jV.has(e.user)?e.user:AV.user,home:e.home.startsWith(`/`)&&!/[:\n]/.test(e.home)?e.home:AV.home}}function PV(e,t){let{user:n,home:r}=NV(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(`
3324
+ `,stderr:``,exitCode:0};let n;try{n=HB(e)}catch(e){return AB(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await WB(t,r,a)}catch{return AB(`${r}: No such file or directory`)}if(n.revert){let e=NB(o),r=n.plain?RB(e):zB(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:NB(r),stderr:``,exitCode:0}}let{data:s,base:c}=KB(n,o),l=GB(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 JB(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=_r(t,o),s=n?`${n}/${o}`:o;a+=await JB(e,i,s,r)}return a}function YB(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3325
+ `,stderr:``,exitCode:0}}function XB(){return S(`zip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return YB();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
3326
+ `,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(/^\.\//,``))||vr(r);if(i.isDirectory&&!n)return{stdout:``,stderr:`zip: ${e} is a directory (use -r)\n`,exitCode:1};s+=await JB(t,r,a,o)}if(s===0)return{stdout:``,stderr:`zip: nothing to do
3327
+ `,exitCode:1};let c=Ot(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function ZB(e){let t;return S(`mcp`,async(n,r)=>{if(!t){let{createMcpCommand:n}=await import(`./mcp-command-CQkRyZv1.js`);t=n({fs:e.fs,scriptCatalog:e.scriptCatalog,connectionManager:e.mcpConnectionManager})}return t.execute(n,r)})}function QB(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function $B(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[lO(`ipk`,r),lO(`npm`,r),lO(`i`,r),QO(`ipx`,{fs:t,fetch:n}),QO(`npx`,{fs:t,fetch:n}),ab(`di`,{fs:t,fetch:n}),ab(`uv`,{fs:t,fetch:n}),CL({fs:t,fetch:n})]}function eV(e){let t={buildProcessConfig:e.buildProcessConfig};return[`python3`,`python`,`pyodide`].map(e=>MM(e,t))}function tV(e){let t=e.scriptCatalog;return{buildProcessConfig:e.buildProcessConfig,terminal:e.terminal,gate:e.gateNativeCommand,commands:t&&(()=>t.getWasmCommands()),gitIdentity:e.gitIdentity}}function nV(e={}){let t=[mE({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),ae(),uF(),kP(),SP(e.browserAPI,e.fs),gj(e.browserAPI),by(e.browserAPI),yD(e),XB(),$I(),GF(e.fs?{fs:e.fs}:{}),_F(),wF(),xF(),hv(),JR(tV(e)),BS(tV(e)),qB(),iF(`sqlite3`),iF(`sqllite`),cI(),OI(),xx(),Z_(),NA({buildProcessConfig:e.buildProcessConfig}),NA({buildProcessConfig:e.buildProcessConfig},`jsh`),...eV(e),...$B(e),...e.fs?[zS({fs:e.fs})]:[],...e.fs?[Gk({fs:e.fs})]:[],...e.fetch?[TE({fetch:e.fetch,streamFetch:e.streamFetch})]:[],mS(),hS(),DS(),lz(e.webhook),Jz(),yy(e.crontask),ZB(e),Ij({fs:e.fs,fetch:e.fetch}),RS(),YP(),_j(),vj(`pdftk`),vj(`pdf`),Q_(`biscotto`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),Q_(`biscotti`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),Oj(`pdftoppm`),Oj(`pdftocairo`),kj(`pdftotext`),ry(`convert`),ry(`magick`),iB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),MI(),JI(),hD(),gD(),YI(),Kk(),IM(),Rk(),Kb(),JA(),qA(),Fk(),qN(QB(e)),Om(e.gitCredential),YM({fs:e.fs}),xN(),fv(),pv(),mv(`xclip`),mv(`xsel`),bN(),tC(),Ug(),Wg(),yA(e.fs),st(),RA(),Gg({getParentJid:e.getParentJid}),ex(),iM({processManager:e.processManager}),RL({processManager:e.processManager}),tk({processManager:e.processManager}),$O({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...qg(),Wk(),Dk(),lR(),ZE(),nS(),TR({processManager:e.processManager}),vv({processManager:e.processManager,browser:e.browserAPI,sudoBroker:e.sudoCommand?.broker}),pS(),av({registry:e.cherryRuntimeRegistry}),ky(),Fy({fs:e.fs}),Iy({fs:e.fs}),fF(e.sudoCommand),xB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),Yz(),OP()];return e.fs&&(jj(),t.push(...Gn.map(t=>dE(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let rV=null;function iV(e){rV=e}function aV(e){rV?.(e)}var oV=zt();const sV={user:`user`,home:pp},cV=new Set([`root`,`nobody`,`nogroup`]),lV=/^[A-Za-z_][A-Za-z0-9_.-]*$/;function uV(e){return{user:lV.test(e.user)&&!cV.has(e.user)?e.user:sV.user,home:e.home.startsWith(`/`)&&!/[:\n]/.test(e.home)?e.home:sV.home}}function dV(e,t){let{user:n,home:r}=uV(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(`
3327
3328
  `);if(e===`/etc/group`)return[`root:x:0:`,`${n}:x:1000:`,`nogroup:x:65534:`,``].join(`
3328
- `)}function FV(e,t=AV){let n=PV(e,t);return n===void 0?void 0:new TextEncoder().encode(n)}function IV(e){return e===`/etc`?[`group`,`passwd`]:[]}function LV(e){return e?.code===`ENOENT`}const RV=Reflect.get(it,`DefenseInDepthBox`);function zV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function BV(e,t){if(typeof e!=`string`)return e;let n=zV(t);if(n===`binary`||n===`latin1`){let t=ye(e);if(t)return t}return kV.Buffer.from(e,n)}function VV(e){return e===`/bin`?`/usr/bin`:e.startsWith(`/bin/`)?`/usr${e}`:e}function HV(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 UV(e,t){let n=IV(e).filter(e=>!t.includes(e));return n.length?[...t,...n].sort():t}function WV(e,t){let n=IV(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 GV=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=Ue(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 FV(e,this.identityFn?.()??AV)}isVirtualBinCommand(e){return e.length>0&&!e.includes(`/`)&&this.getVirtualBinCommands().includes(e)}getVirtualBinCommands(){return this.registeredCommandsFn?.()??[]}virtualUsrStat(e){let t=VV(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:HV(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=RV?.runTrustedAsync;return t?t(e):Promise.resolve().then(e)}async readFile(e,t){return this.trusted(async()=>{let n=b(e),r=await this.readRaw(n),i=zV(t),a=kV.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(b(e)))}async readRaw(e){let t=VV(e);if(t.startsWith(`/usr/bin/`)&&this.isVirtualBinCommand(t.slice(9)))return HV(t.slice(9));let n;try{n=await this.vfs.readFile(e,{encoding:`binary`})}catch(t){let n=this.identityFile(e);if(n&&LV(t))return n;throw t}return n instanceof Uint8Array?n:new TextEncoder().encode(n)}identityStat(e,t){let n=this.identityFile(e);if(!(!n||!LV(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 kV.Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString(`latin1`)}async getNativeFile(e){return this.trusted(()=>this.vfs.getNativeFile(b(e)))}async readFileRange(e,t,n){return this.trusted(()=>this.vfs.readFileRange(b(e),t,n))}async writeFile(e,t,n){return this.dropListingStats(),this.trusted(async()=>{let r=b(e);await this.vfs.writeFile(r,BV(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(b(e),BV(t,n)))}async exists(e){return this.trusted(async()=>{let t=b(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=b(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=b(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(b(e),t)})}async readdir(e){return this.trusted(async()=>{let t=b(e);if(t===`/usr`)return[`bin`];if(VV(t)===`/usr/bin`)return this.getVirtualBinCommands().slice().sort();let n=this.vfs.readDirSync(t);if(n!==null)return UV(t,n.map(e=>e.name));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),UV(t,r.map(e=>e.name))})}async readdirWithFileTypes(e){return this.trusted(async()=>{let t=b(e);if(t===`/usr`)return[{name:`bin`,isFile:!1,isDirectory:!0,isSymbolicLink:!1}];if(VV(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 WV(t,this.mapFastEntriesToDirents(n));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),WV(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(b(e),t)})}async cp(e,t,n){return this.dropListingStats(),this.trusted(async()=>{let r=b(e),i=b(t),a;try{a=await this.vfs.stat(r)}catch(e){let t=this.identityFile(r);if(!t||!LV(e))throw e;await this.vfs.writeFile(i,t);return}if(a.type===`directory`){if(!n?.recursive)throw new We(`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=x(e,r.name),i=x(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 IV(e)){let i=r.has(n)?void 0:this.identityFile(x(e,n));i&&await this.vfs.writeFile(x(t,n),i)}}async mv(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.rename(b(e),b(t))})}async rename(e,t){return this.mv(e,t)}resolvePath(e,t){return t.startsWith(`/`)?b(t):b(x(e,t))}getAllPaths(){return[]}async chmod(e,t){return this.dropListingStats(),this.trusted(()=>this.vfs.chmod(b(e),t))}async updateMetadataBatch(e){return this.dropListingStats(),this.trusted(()=>this.vfs.updateMetadataBatch(e.map(e=>({...e,path:b(e.path)}))))}async symlinkBatch(e){return this.dropListingStats(),this.trusted(()=>this.vfs.symlinkBatch(e.map(e=>({target:e.target,path:b(e.path)}))))}async symlink(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.symlink(e,b(t))})}async link(e,t){throw Error(`Hard links not supported in VirtualFS`)}async readlink(e){return this.trusted(async()=>this.vfs.readlink(b(e)))}async realpath(e){return this.trusted(async()=>this.vfs.realpath(b(e)))}async utimes(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.utimes(b(e),t,n))}invalidatePaths(e){this.dropListingStats();let t=this.vfs;t.invalidatePaths&&t.invalidatePaths(e)}async forgetSidecarConsistency(){await this.vfs.forgetSidecarConsistency?.()}};function KV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?KV(e.getUnderlyingFS?.()):null}async function qV(e){let t=ve(`github`);if(t){if(e?.force){await t.onSilentRenew?.();return}await t.getValidAccessToken?.()}}function JV(){let e=ve(`github`);if(!e)return Sm;let t=typeof localStorage>`u`?[]:l(localStorage).github;return[...e.oauthTokenDomains??Sm,...t??[]]}const YV=e(`almost-bash-shell`),XV=`__SLICC_RUN_PID`,ZV=`__SLICC_OUTPUT_TEE__`;function QV(e){let t=e?.get(XV);if(t===void 0)return;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:void 0}function $V(e){if(!(XV in e)&&!(ZV in e)&&!(`__SLICC_SUDO_REASON`in e)&&!(`__SLICC_PIPESTATUS`in e)&&!(`__SLICC_PIPESTATUS_EX`in e))return{...e};let{[XV]:t,[ZV]:n,[am]:r,[Pt]:i,[It]:a,...o}=e;return o}function eH(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 tH=class e{options;bash;vfsAdapter;gitCommands;mountCommands;lastEnv;cwd;umask=18;builtinCommandNames;staticBuiltinNames;allowedCommands;scriptCatalog;initialJshSync=null;ownsScriptCatalog;registeredJshCommands=new Map;registeredWorkflowCommands=new Set;registeredWasmCommands=new Set;jshSyncInflight=null;jshSyncDirty=!1;pendingCommandGrants=[];pendingSudoBypasses=new Map;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(QV(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:gp,PATH:ur,USER:`user`,SHELL:`/bin/bash`,TMPDIR:`/tmp`,PWD:t,...e.env}}buildSupplementalCommands(e,t,n){return TV({onMediaPreview:async e=>this.renderMediaPreview(e),getJshCommands:()=>this.getJshCommandNames(),getWorkflowCommands:()=>this.getWorkflowCommandNames(),syncScriptCommands:()=>this.syncJshCommands(),getStaticBuiltins:()=>[...this.staticBuiltinNames],getScriptRegisteredNames:()=>[...this.registeredJshCommands.keys(),...this.registeredWorkflowCommands,...this.registeredWasmCommands],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.pendingCommandGrants.push(e)},suppressNextGate:e=>this.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:JV},gitIdentity:()=>this.gitCommands.identity(),mcpConnectionManager:e.mcpConnectionManager})}constructor(t){this.options=t,this.vfsAdapter=new GV(t.fs),this.progress=new bp({scrubLabel:t.scrubProgressLabel}),this.allowedCommands=e.buildAllowedCommandSet(t);let n=t.cwd??`/`,r=e.buildInitialEnv(t,n);this.gitCommands=new cp({fs:t.fs,authorName:r.GIT_AUTHOR_NAME??`User`,authorEmail:r.GIT_AUTHOR_EMAIL??`user@example.com`,ensureFreshGithubToken:qV}),this.mountCommands=new Fs({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:Im});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=KV(i)??KV(a);this.scriptCatalog=t.scriptCatalog??new Ti({jshFs:i,bshFs:a,watcher:o}),this.ownsScriptCatalog=!t.scriptCatalog,o&&o.watch(`/`,e=>e.endsWith(`.jsh`)||e.endsWith(`.workflow.js`)||cr(e),()=>{this.syncJshCommands().catch(()=>void 0)});let s=this.createGitCustomCommand(),c=g({progress:Tp(this.progress)}),l=_({progress:Tp(this.progress)}),u=this.buildSupplementalCommands(t,c,l),d=[s,this.createMountCustomCommand(),this.createUmountCustomCommand(),Ah(t.fs),Dg(t.fs,c,t.browserAPI),...u].filter(e=>this.isCommandAllowed(e.name)),f=[...ot(),...at()],p=this.allowedCommands?f.filter(e=>this.isCommandAllowed(e)):void 0;if(this.bash=new st({fs:this.vfsAdapter,cwd:n,env:{},fetch:c,commands:p,customCommands:d,sleep:Kp(this.progress,{isAborted:()=>this.activeRunSignal?.aborted??!1}),executionLimitProfile:t.executionLimitProfile,executionLimits:up(t.isScoop?.()??!1,t.executionLimits)}),this.bash.registerTransformPlugin(Wm),this.allowedCommands!==null){let e=this.bash;for(let t of at())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??[...ot(),...at()];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.startInitialJshSync()}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[...(await this.getFilteredJshCommands()).keys()]}async syncJshCommands(){return this.jshSyncInflight===null?(this.jshSyncInflight=this.doSyncJshCommands(),this.jshSyncInflight):(this.jshSyncDirty=!0,this.jshSyncInflight)}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 ai(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`)}currentScanRoots(){return dr(this.lastEnv.PATH)}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 _p(e);this.lastEnv.HOME=t,this.options.env?.USER||(this.lastEnv.USER=vp(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){YV.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(OV(e.trim().split(/\s+/)[0]||`unknown`),v(),await this.waitForInitialJshSync(t),await this.usesGnuBash())return this.runOnGnuBash(e,t,n,r,i,a);let o=sm(e),s={env:{...this.lastEnv,...n===void 0?{}:{[XV]:String(n)},...i===void 0?{}:{[ZV]:i},...o?{[am]:o}:{}},cwd:this.cwd,umask:this.umask,signal:t,...r===``?{}:{stdin:r,stdinKind:`bytes`}},c=this.lastEnv.PATH,l=eH([t,this.commandAbort.signal]);s.signal=l.signal,this.activeRunSignal=l.signal;let u=this.beginScriptRun(e),d;try{d=await this.bash.exec(Lt(e,a),s)}finally{l.release(),this.activeRunSignal===l.signal&&(this.activeRunSignal=void 0),this.endScriptRun(u)}if(await this.flushPendingCommandGrants(),d=Mt(d,a),typeof d.umask==`number`&&(this.umask=d.umask),d.env&&(this.lastEnv=$V(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.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-BISPom3l.js`);return Ft(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()}async usesGnuBash(){return!this.options.gnuBash||this.lastEnv.SLICC_SHELL===`just-bash`||typeof SharedArrayBuffer!=`function`?!1:(await this.scriptCatalog.getWasmCommands()).has(`bash`)}async runOnGnuBash(e,t,n,r,i,a){let{runWasmCommand:o,withoutRealmDefaults:s}=await import(`./run-Ccyk_j1M.js`),c=sm(e),l={...this.lastEnv,...n===void 0?{}:{[XV]:String(n)},...c?{[am]:c}:{}},u=i===void 0?void 0:this.outputTees.get(i),d=await hp(e,{env:l,run:(e,i,a)=>o(e,this.wasmContext(i,t,r),{processConfig:this.buildJshProcessConfig(n),gate:this.gateNativeCommand,onOutput:u,fds:a,commands:()=>this.scriptCatalog.getWasmCommands(),gitIdentity:()=>this.gitCommands.identity()})}),f=this.lastEnv.PATH;return d.state&&(this.cwd=d.state.cwd,this.lastEnv=pp(s(d.state.env,l),[XV,am,ZV])),this.lastEnv.PATH!==f&&await this.syncJshCommands().catch(()=>void 0),await this.flushPendingCommandGrants(),this.applyPendingEnvWrites(),{stdout:d.stdout,stderr:d.stderr,exitCode:d.exitCode,env:{...this.lastEnv},...a&&d.state?{pipeStatus:d.state.pipeStatus}:{}}}wasmContext(e,t,n){return{fs:this.vfsAdapter,cwd:this.cwd,env:new Map(Object.entries(e)),exportedEnv:e,stdin:n,signal:t,exec:(e,t)=>this.bash.exec(e,{...t,umask:this.umask})}}gateNativeCommand=async(e,t,n)=>{if(this.allowedCommands!==null&&!this.isCommandAllowed(e))return{stderr:`bash: ${e}: command not found\n`,exitCode:127};if(!this.isTransparentGatingEnabled()||xm.has(e))return null;let r=await this.gateCommandDispatch(e,t,n[am]);return r?{stderr:r.stderr,exitCode:r.exitCode}:null};isTransparentGatingEnabled(){let e=this.options.sudo;return!!e&&e.transparentGating!==!1}wrapCommandForDispatch(e){let t=this.wrapCommandForSudo(e),n=e.name===`timeout`?Xp(t,this.progress):Qp(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(ZV),s=o?a.get(o):void 0;s&&(t.writeStdout=s);try{let r=await em(()=>n.execute(e,t),t.signal);return i(t.env,r),r}finally{r()}}}}teeCommandOutput(e,t){let n=e?.get(ZV);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=Vp(this.bash.transform(e).ast,this.registryNames)}catch{t={totalSteps:null}}return this.scriptRun=new Up(t,this.progress,Hp(e)),this.scriptRun}endScriptRun(e){this.scriptRunsActive=Math.max(0,this.scriptRunsActive-1),e&&(e.end(),this.scriptRun===e&&(this.scriptRun=null))}wrapCommandForSudo(e){if(!this.isTransparentGatingEnabled()||xm.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(am))||e.execute(n,r)}}}async gateCommandDispatch(e,t,n){let r=this.options.sudo;if(!r)return null;let i=nm(e,t);if(this.consumeSudoBypass(i))return null;let a=r.getPolicy();if(!a)return null;let o=await im(i,{policy:a,broker:r.broker,persistGrant:async e=>{this.pendingCommandGrants.push(e)},defaultDisposition:r.defaultDisposition,...n?{reason:n}:{}});return o.allowed?null:{stdout:``,stderr:`${o.message}\n`,exitCode:o.exitCode??77}}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.sudo?.persistCommandGrant;if(t){await t(e);return}let n=ft(e);if(!n)return;let r=`${mt}/granted`,i=this.options.fs,a=``;try{await i.exists(r)&&(a=await i.readFile(r))}catch(e){if(!(e instanceof We&&e.code===`ENOENT`))throw e}let o=a&&!a.endsWith(`
3329
- `)?`${a}\n`:a;await i.writeFile(r,`${o}NOPASSWD Cmnd ${n}\n`)}isCommandAllowed(e){return this.allowedCommands===null||this.allowedCommands.has(xm.get(e)??e)}async doSyncJshCommands(){try{let e=await this.scriptCatalog.getJshIndex(this.currentScanRoots()),t=e.commands;for(let t of e.collisions)YV.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.scriptCatalog.getWasmCommands();for(let[e,n]of t)this.isCommandAllowed(e)&&(this.builtinCommandNames.has(e)&&!this.registeredJshCommands.has(e)||this.registeredJshCommands.get(e)!==n&&(this.bash.registerCommand(this.wrapCommandForDispatch(this.makeScriptCommand(e))),this.registeredJshCommands.set(e,n),this.builtinCommandNames.add(e)));let i=[...r.keys()].filter(e=>this.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.builtinCommandNames.has(r)||(this.bash.registerCommand(this.wrapCommandForDispatch(this.makeScriptCommand(r))),t.add(r),this.builtinCommandNames.add(r))}}makeScriptCommand(e){let t=this.scriptCatalog,n=this.options.jshDiscoveryFs??this.options.fs,r=e,i=async(e,i)=>{let a=i.exec??((e,t)=>this.bash.exec(e,{env:t?.env??Object.fromEntries(i.env),cwd:t?.cwd??i.cwd,args:t?.args,...t?.env===void 0?{}:{replaceEnv:!0}})),o=(await t.getJshCommands(this.currentScanRoots())).get(r);if(o){let t;try{let e=await n.readFile(o,{encoding:`utf-8`});t=typeof e==`string`?e:new TextDecoder().decode(e)}catch{return{stdout:``,stderr:`jsh: cannot read script '${o}'\n`,exitCode:127}}return ci(t,[`node`,o,...e],{fs:i.fs,cwd:i.cwd,env:i.env,stdin:i.stdin,exec:a},this.buildJshProcessConfig(QV(i.env)))}let s=(await t.getWasmCommands()).get(r);if(s){let{runWasmCommand:n}=await import(`./run-Ccyk_j1M.js`);return n(s.script?[r,...e]:[`--argv0`,s.argv0,`--module`,s.wasm,s.glue,...s.args??[],...e],i,{processConfig:this.buildJshProcessConfig(QV(i.env)),gate:this.gateNativeCommand,defaults:s.env,commands:()=>t.getWasmCommands(),gitIdentity:()=>this.gitCommands.identity()})}let c=(await t.getWorkflowCommands()).get(r);if(c){let t=wi(c.path,e);return a(t[0],{args:t.slice(1),cwd:i.cwd})}return{stdout:``,stderr:`${r}: command no longer exists\n`,exitCode:127}};return{name:e,trusted:!0,async execute(e,t){try{return await i(e,t)}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`${r}: ${t}\n`,exitCode:1}}}}}createGitCustomCommand(){let e=this.gitCommands;return S(`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 S(`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 S(`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 getFilteredJshCommands(){let e=await this.scriptCatalog.getJshCommands(this.currentScanRoots()),t=new Map;for(let[n,r]of e)this.builtinCommandNames.has(n)||this.isCommandAllowed(n)&&t.set(n,r);return t}async getFilteredWorkflowCommands(){let e=await this.scriptCatalog.getWorkflowCommands(),t=new Map;for(let[n,r]of e)this.isCommandAllowed(n)&&t.set(n,r);return t}async getWorkflowCommandNames(){return[...(await this.getFilteredWorkflowCommands()).keys()]}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?yp(a):[],c=this.options.jshDiscoveryFs??this.options.fs,l;try{let e=await c.readFile(o,{encoding:`utf-8`});l=typeof e==`string`?e:new TextDecoder().decode(e)}catch{return{stdout:``,stderr:`jsh: cannot read script '${o}'\n`,exitCode:127,env:this.lastEnv}}let u=[`node`,o,...s],d=await ci(l,u,{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(t));return{stdout:d.stdout,stderr:d.stderr,exitCode:d.exitCode,env:this.lastEnv}}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{Na as _,PB as a,Ca as b,Es as c,hs as d,ps as f,ka as g,Ro as h,AB as i,ys as l,qo as m,GV as n,OB as o,Jo as p,DV as r,gp as s,tH as t,gs as u,Ma as v,Mo as y};
3329
+ `)}function fV(e,t=sV){let n=dV(e,t);return n===void 0?void 0:new TextEncoder().encode(n)}function pV(e){return e===`/etc`?[`group`,`passwd`]:[]}function mV(e){return e?.code===`ENOENT`}const hV=Reflect.get(tt,`DefenseInDepthBox`);function gV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function _V(e,t){if(typeof e!=`string`)return e;let n=gV(t);if(n===`binary`||n===`latin1`){let t=ye(e);if(t)return t}return oV.Buffer.from(e,n)}function vV(e){return e===`/bin`?`/usr/bin`:e.startsWith(`/bin/`)?`/usr${e}`:e}function yV(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 bV(e,t){let n=pV(e).filter(e=>!t.includes(e));return n.length?[...t,...n].sort():t}function xV(e,t){let n=pV(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 SV=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=Be(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 fV(e,this.identityFn?.()??sV)}isVirtualBinCommand(e){return e.length>0&&!e.includes(`/`)&&this.getVirtualBinCommands().includes(e)}getVirtualBinCommands(){return this.registeredCommandsFn?.()??[]}virtualUsrStat(e){let t=vV(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:yV(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=hV?.runTrustedAsync;return t?t(e):Promise.resolve().then(e)}async readFile(e,t){return this.trusted(async()=>{let n=b(e),r=await this.readRaw(n),i=gV(t),a=oV.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(b(e)))}async readRaw(e){let t=vV(e);if(t.startsWith(`/usr/bin/`)&&this.isVirtualBinCommand(t.slice(9)))return yV(t.slice(9));let n;try{n=await this.vfs.readFile(e,{encoding:`binary`})}catch(t){let n=this.identityFile(e);if(n&&mV(t))return n;throw t}return n instanceof Uint8Array?n:new TextEncoder().encode(n)}identityStat(e,t){let n=this.identityFile(e);if(!(!n||!mV(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 oV.Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString(`latin1`)}async getNativeFile(e){return this.trusted(()=>this.vfs.getNativeFile(b(e)))}async readFileRange(e,t,n){return this.trusted(()=>this.vfs.readFileRange(b(e),t,n))}async writeFile(e,t,n){return this.dropListingStats(),this.trusted(async()=>{let r=b(e);await this.vfs.writeFile(r,_V(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(b(e),_V(t,n)))}async exists(e){return this.trusted(async()=>{let t=b(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=b(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=b(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(b(e),t)})}async readdir(e){return this.trusted(async()=>{let t=b(e);if(t===`/usr`)return[`bin`];if(vV(t)===`/usr/bin`)return this.getVirtualBinCommands().slice().sort();let n=this.vfs.readDirSync(t);if(n!==null)return bV(t,n.map(e=>e.name));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),bV(t,r.map(e=>e.name))})}async readdirWithFileTypes(e){return this.trusted(async()=>{let t=b(e);if(t===`/usr`)return[{name:`bin`,isFile:!1,isDirectory:!0,isSymbolicLink:!1}];if(vV(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 xV(t,this.mapFastEntriesToDirents(n));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),xV(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(b(e),t)})}async cp(e,t,n){return this.dropListingStats(),this.trusted(async()=>{let r=b(e),i=b(t),a;try{a=await this.vfs.stat(r)}catch(e){let t=this.identityFile(r);if(!t||!mV(e))throw e;await this.vfs.writeFile(i,t);return}if(a.type===`directory`){if(!n?.recursive)throw new Ve(`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=x(e,r.name),i=x(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 pV(e)){let i=r.has(n)?void 0:this.identityFile(x(e,n));i&&await this.vfs.writeFile(x(t,n),i)}}async mv(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.rename(b(e),b(t))})}async rename(e,t){return this.mv(e,t)}resolvePath(e,t){return t.startsWith(`/`)?b(t):b(x(e,t))}getAllPaths(){return[]}async chmod(e,t){return this.dropListingStats(),this.trusted(()=>this.vfs.chmod(b(e),t))}async updateMetadataBatch(e){return this.dropListingStats(),this.trusted(()=>this.vfs.updateMetadataBatch(e.map(e=>({...e,path:b(e.path)}))))}async symlinkBatch(e){return this.dropListingStats(),this.trusted(()=>this.vfs.symlinkBatch(e.map(e=>({target:e.target,path:b(e.path)}))))}async symlink(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.symlink(e,b(t))})}async link(e,t){throw Error(`Hard links not supported in VirtualFS`)}async readlink(e){return this.trusted(async()=>this.vfs.readlink(b(e)))}async realpath(e){return this.trusted(async()=>this.vfs.realpath(b(e)))}async utimes(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.utimes(b(e),t,n))}invalidatePaths(e){this.dropListingStats();let t=this.vfs;t.invalidatePaths&&t.invalidatePaths(e)}async forgetSidecarConsistency(){await this.vfs.forgetSidecarConsistency?.()}};function CV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?CV(e.getUnderlyingFS?.()):null}async function wV(e){let t=ve(`github`);if(t){if(e?.force){await t.onSilentRenew?.();return}await t.getValidAccessToken?.()}}function TV(){let e=ve(`github`);if(!e)return ym;let t=typeof localStorage>`u`?[]:l(localStorage).github;return[...e.oauthTokenDomains??ym,...t??[]]}const EV=e(`almost-bash-shell`),DV=`__SLICC_RUN_PID`,OV=`__SLICC_OUTPUT_TEE__`;function kV(e){let t=e?.get(DV);if(t===void 0)return;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:void 0}function AV(e){if(!(DV in e)&&!(OV in e)&&!(`__SLICC_SUDO_REASON`in e)&&!(`__SLICC_PIPESTATUS`in e)&&!(`__SLICC_PIPESTATUS_EX`in e))return{...e};let{[DV]:t,[OV]:n,[nm]:r,[jt]:i,[Nt]:a,...o}=e;return o}function jV(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 MV=class e{options;bash;vfsAdapter;gitCommands;mountCommands;lastEnv;cwd;umask=18;builtinCommandNames;staticBuiltinNames;allowedCommands;scriptCatalog;initialJshSync=null;ownsScriptCatalog;registeredJshCommands=new Map;registeredWorkflowCommands=new Set;registeredWasmCommands=new Set;jshSyncInflight=null;jshSyncDirty=!1;pendingCommandGrants=[];pendingSudoBypasses=new Map;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(kV(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:pp,PATH:sr,USER:`user`,SHELL:`/bin/bash`,TMPDIR:`/tmp`,PWD:t,...e.env}}buildSupplementalCommands(e,t,n){return nV({onMediaPreview:async e=>this.renderMediaPreview(e),getJshCommands:()=>this.getJshCommandNames(),getWorkflowCommands:()=>this.getWorkflowCommandNames(),syncScriptCommands:()=>this.syncJshCommands(),getStaticBuiltins:()=>[...this.staticBuiltinNames],getScriptRegisteredNames:()=>[...this.registeredJshCommands.keys(),...this.registeredWorkflowCommands,...this.registeredWasmCommands],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.pendingCommandGrants.push(e)},suppressNextGate:e=>this.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:TV},gitIdentity:()=>this.gitCommands.identity(),mcpConnectionManager:e.mcpConnectionManager})}constructor(t){this.options=t,this.vfsAdapter=new SV(t.fs),this.progress=new _p({scrubLabel:t.scrubProgressLabel}),this.allowedCommands=e.buildAllowedCommandSet(t);let n=t.cwd??`/`,r=e.buildInitialEnv(t,n);this.gitCommands=new ap({fs:t.fs,authorName:r.GIT_AUTHOR_NAME??`User`,authorEmail:r.GIT_AUTHOR_EMAIL??`user@example.com`,ensureFreshGithubToken:wV}),this.mountCommands=new Ms({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:Nm});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=CV(i)??CV(a);this.scriptCatalog=t.scriptCatalog??new Si({jshFs:i,bshFs:a,watcher:o}),this.ownsScriptCatalog=!t.scriptCatalog,o&&o.watch(`/`,e=>e.endsWith(`.jsh`)||e.endsWith(`.workflow.js`)||ar(e),()=>{this.syncJshCommands().catch(()=>void 0)});let s=this.createGitCustomCommand(),c=g({progress:Sp(this.progress)}),l=_({progress:Sp(this.progress)}),u=this.buildSupplementalCommands(t,c,l),d=[s,this.createMountCustomCommand(),this.createUmountCustomCommand(),Dh(t.fs),wg(t.fs,c,t.browserAPI),...u].filter(e=>this.isCommandAllowed(e.name)),f=[...rt(),...nt()],p=this.allowedCommands?f.filter(e=>this.isCommandAllowed(e)):void 0;if(this.bash=new it({fs:this.vfsAdapter,cwd:n,env:{},fetch:c,commands:p,customCommands:d,sleep:Up(this.progress,{isAborted:()=>this.activeRunSignal?.aborted??!1}),executionLimitProfile:t.executionLimitProfile,executionLimits:sp(t.isScoop?.()??!1,t.executionLimits)}),this.bash.registerTransformPlugin(Vm),this.allowedCommands!==null){let e=this.bash;for(let t of nt())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??[...rt(),...nt()];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.startInitialJshSync()}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[...(await this.getFilteredJshCommands()).keys()]}async syncJshCommands(){return this.jshSyncInflight===null?(this.jshSyncInflight=this.doSyncJshCommands(),this.jshSyncInflight):(this.jshSyncDirty=!0,this.jshSyncInflight)}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 ni(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`)}currentScanRoots(){return cr(this.lastEnv.PATH)}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 mp(e);this.lastEnv.HOME=t,this.options.env?.USER||(this.lastEnv.USER=hp(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){EV.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(aV(e.trim().split(/\s+/)[0]||`unknown`),v(),await this.waitForInitialJshSync(t),await this.usesGnuBash())return this.runOnGnuBash(e,t,n,r,i,a);let o=im(e),s={env:{...this.lastEnv,...n===void 0?{}:{[DV]:String(n)},...i===void 0?{}:{[OV]:i},...o?{[nm]:o}:{}},cwd:this.cwd,umask:this.umask,signal:t,...r===``?{}:{stdin:r,stdinKind:`bytes`}},c=this.lastEnv.PATH,l=jV([t,this.commandAbort.signal]);s.signal=l.signal,this.activeRunSignal=l.signal;let u=this.beginScriptRun(e),d;try{d=await this.bash.exec(Pt(e,a),s)}finally{l.release(),this.activeRunSignal===l.signal&&(this.activeRunSignal=void 0),this.endScriptRun(u)}if(await this.flushPendingCommandGrants(),d=kt(d,a),typeof d.umask==`number`&&(this.umask=d.umask),d.env&&(this.lastEnv=AV(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.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-BISPom3l.js`);return Mt(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()}async usesGnuBash(){return!this.options.gnuBash||this.lastEnv.SLICC_SHELL===`just-bash`||typeof SharedArrayBuffer!=`function`?!1:(await this.scriptCatalog.getWasmCommands()).has(`bash`)}async runOnGnuBash(e,t,n,r,i,a){let{runWasmCommand:o,withoutRealmDefaults:s}=await import(`./run-Ccyk_j1M.js`),c=im(e),l={...this.lastEnv,...n===void 0?{}:{[DV]:String(n)},...c?{[nm]:c}:{}},u=i===void 0?void 0:this.outputTees.get(i),d=await fp(e,{env:l,run:(e,i,a)=>o(e,this.wasmContext(i,t,r),{processConfig:this.buildJshProcessConfig(n),gate:this.gateNativeCommand,onOutput:u,fds:a,commands:()=>this.scriptCatalog.getWasmCommands(),gitIdentity:()=>this.gitCommands.identity()})}),f=this.lastEnv.PATH;return d.state&&(this.cwd=d.state.cwd,this.lastEnv=up(s(d.state.env,l),[DV,nm,OV])),this.lastEnv.PATH!==f&&await this.syncJshCommands().catch(()=>void 0),await this.flushPendingCommandGrants(),this.applyPendingEnvWrites(),{stdout:d.stdout,stderr:d.stderr,exitCode:d.exitCode,env:{...this.lastEnv},...a&&d.state?{pipeStatus:d.state.pipeStatus}:{}}}wasmContext(e,t,n){return{fs:this.vfsAdapter,cwd:this.cwd,env:new Map(Object.entries(e)),exportedEnv:e,stdin:n,signal:t,exec:(e,t)=>this.bash.exec(e,{...t,umask:this.umask})}}gateNativeCommand=async(e,t,n)=>{if(this.allowedCommands!==null&&!this.isCommandAllowed(e))return{stderr:`bash: ${e}: command not found\n`,exitCode:127};if(!this.isTransparentGatingEnabled()||vm.has(e))return null;let r=await this.gateCommandDispatch(e,t,n[nm]);return r?{stderr:r.stderr,exitCode:r.exitCode}:null};isTransparentGatingEnabled(){let e=this.options.sudo;return!!e&&e.transparentGating!==!1}wrapCommandForDispatch(e){let t=this.wrapCommandForSudo(e),n=e.name===`timeout`?qp(t,this.progress):Yp(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(OV),s=o?a.get(o):void 0;s&&(t.writeStdout=s);try{let r=await Zp(()=>n.execute(e,t),t.signal);return i(t.env,r),r}finally{r()}}}}teeCommandOutput(e,t){let n=e?.get(OV);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=Rp(this.bash.transform(e).ast,this.registryNames)}catch{t={totalSteps:null}}return this.scriptRun=new Bp(t,this.progress,zp(e)),this.scriptRun}endScriptRun(e){this.scriptRunsActive=Math.max(0,this.scriptRunsActive-1),e&&(e.end(),this.scriptRun===e&&(this.scriptRun=null))}wrapCommandForSudo(e){if(!this.isTransparentGatingEnabled()||vm.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(nm))||e.execute(n,r)}}}async gateCommandDispatch(e,t,n){let r=this.options.sudo;if(!r)return null;let i=$p(e,t);if(this.consumeSudoBypass(i))return null;let a=r.getPolicy();if(!a)return null;let o=await tm(i,{policy:a,broker:r.broker,persistGrant:async e=>{this.pendingCommandGrants.push(e)},defaultDisposition:r.defaultDisposition,...n?{reason:n}:{}});return o.allowed?null:{stdout:``,stderr:`${o.message}\n`,exitCode:o.exitCode??77}}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.sudo?.persistCommandGrant;if(t){await t(e);return}let n=lt(e);if(!n)return;let r=`${dt}/granted`,i=this.options.fs,a=``;try{await i.exists(r)&&(a=await i.readFile(r))}catch(e){if(!(e instanceof Ve&&e.code===`ENOENT`))throw e}let o=a&&!a.endsWith(`
3330
+ `)?`${a}\n`:a;await i.writeFile(r,`${o}NOPASSWD Cmnd ${n}\n`)}isCommandAllowed(e){return this.allowedCommands===null||this.allowedCommands.has(vm.get(e)??e)}async doSyncJshCommands(){try{let e=await this.scriptCatalog.getJshIndex(this.currentScanRoots()),t=e.commands;for(let t of e.collisions)EV.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.scriptCatalog.getWasmCommands();for(let[e,n]of t)this.isCommandAllowed(e)&&(this.builtinCommandNames.has(e)&&!this.registeredJshCommands.has(e)||this.registeredJshCommands.get(e)!==n&&(this.bash.registerCommand(this.wrapCommandForDispatch(this.makeScriptCommand(e))),this.registeredJshCommands.set(e,n),this.builtinCommandNames.add(e)));let i=[...r.keys()].filter(e=>this.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.builtinCommandNames.has(r)||(this.bash.registerCommand(this.wrapCommandForDispatch(this.makeScriptCommand(r))),t.add(r),this.builtinCommandNames.add(r))}}makeScriptCommand(e){let t=this.scriptCatalog,n=this.options.jshDiscoveryFs??this.options.fs,r=e,i=async(e,i)=>{let a=i.exec??((e,t)=>this.bash.exec(e,{env:t?.env??Object.fromEntries(i.env),cwd:t?.cwd??i.cwd,args:t?.args,...t?.env===void 0?{}:{replaceEnv:!0}})),o=(await t.getJshCommands(this.currentScanRoots())).get(r);if(o){let t;try{let e=await n.readFile(o,{encoding:`utf-8`});t=typeof e==`string`?e:new TextDecoder().decode(e)}catch{return{stdout:``,stderr:`jsh: cannot read script '${o}'\n`,exitCode:127}}return ai(t,[`node`,o,...e],{fs:i.fs,cwd:i.cwd,env:i.env,stdin:i.stdin,exec:a},this.buildJshProcessConfig(kV(i.env)))}let s=(await t.getWasmCommands()).get(r);if(s){let{runWasmCommand:n}=await import(`./run-Ccyk_j1M.js`);return n(s.script?[r,...e]:[`--argv0`,s.argv0,`--module`,s.wasm,s.glue,...s.args??[],...e],i,{processConfig:this.buildJshProcessConfig(kV(i.env)),gate:this.gateNativeCommand,defaults:s.env,commands:()=>t.getWasmCommands(),gitIdentity:()=>this.gitCommands.identity()})}let c=(await t.getWorkflowCommands()).get(r);if(c){let t=xi(c.path,e);return a(t[0],{args:t.slice(1),cwd:i.cwd})}return{stdout:``,stderr:`${r}: command no longer exists\n`,exitCode:127}};return{name:e,trusted:!0,async execute(e,t){try{return await i(e,t)}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`${r}: ${t}\n`,exitCode:1}}}}}createGitCustomCommand(){let e=this.gitCommands;return S(`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 S(`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 S(`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 getFilteredJshCommands(){let e=await this.scriptCatalog.getJshCommands(this.currentScanRoots()),t=new Map;for(let[n,r]of e)this.builtinCommandNames.has(n)||this.isCommandAllowed(n)&&t.set(n,r);return t}async getFilteredWorkflowCommands(){let e=await this.scriptCatalog.getWorkflowCommands(),t=new Map;for(let[n,r]of e)this.isCommandAllowed(n)&&t.set(n,r);return t}async getWorkflowCommandNames(){return[...(await this.getFilteredWorkflowCommands()).keys()]}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?gp(a):[],c=this.options.jshDiscoveryFs??this.options.fs,l;try{let e=await c.readFile(o,{encoding:`utf-8`});l=typeof e==`string`?e:new TextDecoder().decode(e)}catch{return{stdout:``,stderr:`jsh: cannot read script '${o}'\n`,exitCode:127,env:this.lastEnv}}let u=[`node`,o,...s],d=await ai(l,u,{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(t));return{stdout:d.stdout,stderr:d.stderr,exitCode:d.exitCode,env:this.lastEnv}}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{Aa as _,dB as a,ba as b,Cs as c,fs as d,us as f,Ea as g,Fo as h,sB as i,gs as l,Wo as m,SV as n,aB as o,Go as p,iV as r,pp as s,MV as t,ps as u,ka as v,ko as y};