sliccy 6.183.0 → 6.184.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dist/ui/.vite/manifest.json +187 -187
  2. package/dist/ui/assets/{account-store-D0ciUU3U.js → account-store-C4KjAHlX.js} +1 -1
  3. package/dist/ui/assets/{account-store-Ce44FdYj.js → account-store-DTV6kIpp.js} +1 -1
  4. package/dist/ui/assets/{adobe-j1r9Po8o.js → adobe-8BwYMBH1.js} +1 -1
  5. package/dist/ui/assets/{adobe-FgsPWBjV.js → adobe-D1va8rcF.js} +1 -1
  6. package/dist/ui/assets/{agent-panels-DcVWQZVh.js → agent-panels-C9crA88R.js} +1 -1
  7. package/dist/ui/assets/{almost-bash-shell-headless-CsDQjWSX.js → almost-bash-shell-headless-CRQ9G9pP.js} +358 -349
  8. package/dist/ui/assets/{apply-layout-6-QTVrMq.js → apply-layout-CdtS0gND.js} +1 -1
  9. package/dist/ui/assets/{apps-C20mWJ8w.js → apps-BwvRAJ2z.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-CTmHX_BT.js → azure-openai-BaUEpmbx.js} +1 -1
  11. package/dist/ui/assets/{azure-openai-CotI4RBJ.js → azure-openai-CnDYLFFc.js} +1 -1
  12. package/dist/ui/assets/{backend-hostfs-D46_hViH.js → backend-hostfs-C5cEq45W.js} +1 -1
  13. package/dist/ui/assets/bash-job-journal-DEe5YuRn.js +1 -0
  14. package/dist/ui/assets/{cdp-BvPARz8i.js → cdp-C3amJu-z.js} +1 -1
  15. package/dist/ui/assets/{cerebras-CGndqdHt.js → cerebras-Cf4ghg_0.js} +1 -1
  16. package/dist/ui/assets/{cerebras-DG7lHBt1.js → cerebras-DKRiYfUX.js} +1 -1
  17. package/dist/ui/assets/{client-CmfvXtLV.js → client-CwxmlQM-.js} +1 -1
  18. package/dist/ui/assets/{composer-speech-C2InwNBM.js → composer-speech-ZtlTCagR.js} +1 -1
  19. package/dist/ui/assets/{connect-surface-EWOA61l_.js → connect-surface-C-rLJwMl.js} +1 -1
  20. package/dist/ui/assets/{core-D-Fp1HL2.js → core-BfCKeVcE.js} +1 -1
  21. package/dist/ui/assets/{directed-approval-6QIzcmF_.js → directed-approval-D7Z1VVLl.js} +1 -1
  22. package/dist/ui/assets/{dist-b828m-Si.js → dist-HBVgABmW.js} +3 -3
  23. package/dist/ui/assets/{dist-TdFroLO3.js → dist-SZE428w3.js} +4 -4
  24. package/dist/ui/assets/{emscripten-vfs-hook-B9KkLncp.js → emscripten-vfs-hook-BkdzWGeW.js} +1 -1
  25. package/dist/ui/assets/ensure-speech-assets-DGWfCcXo.js +1 -0
  26. package/dist/ui/assets/{extension-ops-DTRUyGkx.js → extension-ops-CF2mLDRW.js} +1 -1
  27. package/dist/ui/assets/{frozen-archive-writer-DMShgEqJ.js → frozen-archive-writer-PHki-LPb.js} +1 -1
  28. package/dist/ui/assets/{fs-TVcPtHbB.js → fs-BA8JNn5I.js} +1 -1
  29. package/dist/ui/assets/{fs-JF56Nord.js → fs-Dh7DECCG.js} +2 -2
  30. package/dist/ui/assets/{gelatiere-store-BnAzlDHe.js → gelatiere-store-D2KdbqxE.js} +1 -1
  31. package/dist/ui/assets/{gelatiere-unit-5cS02rOR.js → gelatiere-unit-CKNGUuBk.js} +1 -1
  32. package/dist/ui/assets/{github-BJKcZ0cU.js → github-BMBhorfe.js} +2 -2
  33. package/dist/ui/assets/{github-DsvjkXr7.js → github-DUDljkmR.js} +1 -1
  34. package/dist/ui/assets/{github-auth-Crm1hubQ.js → github-auth-xb90bdu_.js} +1 -1
  35. package/dist/ui/assets/{github-copilot-BWhNAowY.js → github-copilot-1g6MUBHE.js} +1 -1
  36. package/dist/ui/assets/{github-copilot-ngj7NQ16.js → github-copilot-DFUFwFmi.js} +1 -1
  37. package/dist/ui/assets/{github-install-DB3-4PDg.js → github-install-DO2t0FaF.js} +1 -1
  38. package/dist/ui/assets/{github-zip-CfS9P2dH.js → github-zip-COiiefUG.js} +1 -1
  39. package/dist/ui/assets/{guest-tool-gate-B2z1ggE_.js → guest-tool-gate-XJ21QL4L.js} +1 -1
  40. package/dist/ui/assets/{hear-akPMJ6kC.js → hear-CzG_wrqQ.js} +1 -1
  41. package/dist/ui/assets/{help-CNHuyT-F.js → help-BZT7vAmw.js} +1 -1
  42. package/dist/ui/assets/hf-defaults-BwJdGLgk.js +1 -0
  43. package/dist/ui/assets/hf-download-CNg2vD63.js +1 -0
  44. package/dist/ui/assets/installer-Cg-SnEpR.js +4 -0
  45. package/dist/ui/assets/{interrupted-work-recovery-r9fITX8G.js → interrupted-work-recovery-DvvxB451.js} +1 -1
  46. package/dist/ui/assets/{js-realm-worker-EkjzOn2Q.js → js-realm-worker-Cr1K6JkT.js} +2 -2
  47. package/dist/ui/assets/{jsh-executor-C849KexO.js → jsh-executor-CHdJJlPA.js} +2 -2
  48. package/dist/ui/assets/{kernel-worker-B69_4v-D.js → kernel-worker-wFbHLDtK.js} +57 -57
  49. package/dist/ui/assets/{lick-ws-bridge-BygSyyxa.js → lick-ws-bridge-2mJqZJW3.js} +1 -1
  50. package/dist/ui/assets/{lick-ws-bridge-DDMdP2AB.js → lick-ws-bridge-DGr37oN3.js} +1 -1
  51. package/dist/ui/assets/{live-session-curation-BfplChNV.js → live-session-curation-DpvRtKub.js} +1 -1
  52. package/dist/ui/assets/{live-session-snapshot-BQQH-IkA.js → live-session-snapshot-sOg3VW0I.js} +1 -1
  53. package/dist/ui/assets/{local-llm-BSMA7cC5.js → local-llm-B7jLsaQd.js} +1 -1
  54. package/dist/ui/assets/{local-llm-CNznNtp9.js → local-llm-C0FwzlKu.js} +1 -1
  55. package/dist/ui/assets/{main-BsG-jtvC.js → main-Cq6ajFQ0.js} +3 -3
  56. package/dist/ui/assets/{main-cherry-7eVbk29W.js → main-cherry-CAeEGFTA.js} +1 -1
  57. package/dist/ui/assets/{memory-curation-seam-z19QoOG6.js → memory-curation-seam-fU176zhT.js} +1 -1
  58. package/dist/ui/assets/{memory-health-CL5kYVAr.js → memory-health-C_d-3lw8.js} +1 -1
  59. package/dist/ui/assets/{memory-write-execute-C_oehZl_.js → memory-write-execute-Da9YnOVT.js} +1 -1
  60. package/dist/ui/assets/{mount-BvxmwqOG.js → mount-BYVgiLXs.js} +3 -3
  61. package/dist/ui/assets/{mount-JNIgSYT5.js → mount-CPCf8pdr.js} +1 -1
  62. package/dist/ui/assets/{mount-bridge-client-DRVFK3mJ.js → mount-bridge-client-Dz_UHbPE.js} +1 -1
  63. package/dist/ui/assets/{new-session-qNCtGIiI.js → new-session-Dhye3x2f.js} +2 -2
  64. package/dist/ui/assets/{oauth-bootstrap-F0HvaeYA.js → oauth-bootstrap-CZjiKc_8.js} +2 -2
  65. package/dist/ui/assets/{oauth-service-Dn_Xz1FZ.js → oauth-service-DP3Rx6V_.js} +1 -1
  66. package/dist/ui/assets/{onboarding-orchestrator-OKDMP2X_.js → onboarding-orchestrator-C81eNQoO.js} +1 -1
  67. package/dist/ui/assets/{openai-codex-BbYHsYuO.js → openai-codex-D9iX7Gou.js} +1 -1
  68. package/dist/ui/assets/{openai-codex-6hCaJG3N.js → openai-codex-DpUh1JB4.js} +1 -1
  69. package/dist/ui/assets/{openrouter-BPYQjzK5.js → openrouter-CY5ikibo.js} +1 -1
  70. package/dist/ui/assets/{openrouter-free-B1qsiSWg.js → openrouter-free-CGZjzCiS.js} +1 -1
  71. package/dist/ui/assets/{openrouter-free-DMavbTS5.js → openrouter-free-DO_EvZTI.js} +1 -1
  72. package/dist/ui/assets/{openrouter-oauth-DrKARZLe.js → openrouter-oauth-CuSqjiRE.js} +1 -1
  73. package/dist/ui/assets/{openrouter-oauth-CYZRlFsL.js → openrouter-oauth-z_B0oYPw.js} +1 -1
  74. package/dist/ui/assets/{openrouter-BstowyUr.js → openrouter-vPRbLck_.js} +1 -1
  75. package/dist/ui/assets/{opfs-mount-D3x0tHeU.js → opfs-mount-DVFLcOol.js} +2 -2
  76. package/dist/ui/assets/{opfs-mount-DF49ioKQ.js → opfs-mount-DbDiMdyl.js} +2 -2
  77. package/dist/ui/assets/{panel-rpc-handlers-CiSSOSEo.js → panel-rpc-handlers-bBORskGx.js} +2 -2
  78. package/dist/ui/assets/{panelize-shell-CILi0yPu.js → panelize-shell-QHkAQUAL.js} +1 -1
  79. package/dist/ui/assets/{pi-edit-execution-CEUeI3PX.js → pi-edit-execution-BEKHKcZE.js} +1 -1
  80. package/dist/ui/assets/{port-bridge-client-BvO-1Rao.js → port-bridge-client-B-l7cQTC.js} +1 -1
  81. package/dist/ui/assets/{provider-Dv9W3IvY.js → provider-CSJRicyp.js} +1 -1
  82. package/dist/ui/assets/{provider-CPes-oeu.js → provider-CxYe2Bcc.js} +2 -2
  83. package/dist/ui/assets/{provider-settings-CDcPLuoa.js → provider-settings-BUmZjOyP.js} +1 -1
  84. package/dist/ui/assets/provider-store-access-BsDIn0zt.js +1 -0
  85. package/dist/ui/assets/provider-store-access-BxH2Cpzw.js +1 -0
  86. package/dist/ui/assets/{providers-COWrD21n.js → providers-CTbtB5-6.js} +2 -2
  87. package/dist/ui/assets/{providers-DLk_1jra.js → providers-D8v7SVor.js} +1 -1
  88. package/dist/ui/assets/proxied-fetch-DXaTHROw.js +1 -0
  89. package/dist/ui/assets/{quick-llm-ByDw79ph.js → quick-llm-By_T6uv9.js} +1 -1
  90. package/dist/ui/assets/{realm-inprocess-BLSq-cQS.js → realm-inprocess-DelzYQ1q.js} +1 -1
  91. package/dist/ui/assets/{recovery-screen-CldB31e2.js → recovery-screen-CTf7DhK7.js} +1 -1
  92. package/dist/ui/assets/{redirect-uri-DlOE4xJ4.js → redirect-uri-CBCnYKsl.js} +1 -1
  93. package/dist/ui/assets/{remote-terminal-view-BpHAWWeD.js → remote-terminal-view-Cc_QsZbo.js} +1 -1
  94. package/dist/ui/assets/rest-ops-CLliBy-9.js +1 -0
  95. package/dist/ui/assets/{restore-CaWVAwJN.js → restore-Bpbazm4c.js} +1 -1
  96. package/dist/ui/assets/{run-CW0-cog1.js → run-BUYahz7i.js} +1 -1
  97. package/dist/ui/assets/{run-Dl4OQ_Yd.js → run-BXEd2AF_.js} +1 -1
  98. package/dist/ui/assets/{run-2oVsdzZj.js → run-BbnI9SSJ.js} +2 -2
  99. package/dist/ui/assets/{run-CHKo3g64.js → run-BcULqcmA.js} +1 -1
  100. package/dist/ui/assets/{run-CH8M889A.js → run-C4WiYwhE.js} +3 -3
  101. package/dist/ui/assets/{run-BA94mtBB.js → run-Dcy1n9LT.js} +1 -1
  102. package/dist/ui/assets/{run-BVlVC7jS.js → run-Dn5A9ksD.js} +1 -1
  103. package/dist/ui/assets/{secrets-bridge-client-CUClOhLJ.js → secrets-bridge-client-BiJrSKN9.js} +1 -1
  104. package/dist/ui/assets/{session-command-memory-mbpebhz_.js → session-command-memory-DS6mmefG.js} +2 -2
  105. package/dist/ui/assets/{session-jsonl-BIxfXb7u.js → session-jsonl-D3SltEra.js} +1 -1
  106. package/dist/ui/assets/{session-jsonl-v8KN4g_6.js → session-jsonl-DmBnJzGO.js} +1 -1
  107. package/dist/ui/assets/{session-search-index-CDR-vSNN.js → session-search-index-V_MAcPGe.js} +1 -1
  108. package/dist/ui/assets/{setup-feature-flags-remote-zauTrEL6.js → setup-feature-flags-remote-CF6L0f_F.js} +1 -1
  109. package/dist/ui/assets/{setup-model-catalog-CC8KX0LB.js → setup-model-catalog-CT5B_SHB.js} +1 -1
  110. package/dist/ui/assets/{signed-fetch-D3crNsSs.js → signed-fetch-0nzqVGFF.js} +1 -1
  111. package/dist/ui/assets/{silent-renew-backoff-Bw_c5Dy9.js → silent-renew-backoff-DY212Gxg.js} +1 -1
  112. package/dist/ui/assets/slicc-version-ByY3PCi6.js +1 -0
  113. package/dist/ui/assets/{snapshot-CISX8Ybx.js → snapshot-DXi1cxon.js} +1 -1
  114. package/dist/ui/assets/{snapshot-features-NmqWLNc6.js → snapshot-features-DQElXDdA.js} +1 -1
  115. package/dist/ui/assets/{soundscape-Cmr7xPXZ.js → soundscape-D-iho7ed.js} +1 -1
  116. package/dist/ui/assets/{speak-D1JF7Loc.js → speak-DxaZAW05.js} +1 -1
  117. package/dist/ui/assets/{sprinkle-manager-DYhvCg3m.js → sprinkle-manager-3fH6Vs7w.js} +1 -1
  118. package/dist/ui/assets/{sprinkle-renderer-B5O28doL.js → sprinkle-renderer-Bgykf5M4.js} +1 -1
  119. package/dist/ui/assets/{ssh-DPyBpV4Z.js → ssh-DAZWgyKg.js} +1 -1
  120. package/dist/ui/assets/{state-CcrU6NJk.js → state-Za_SB5d2.js} +1 -1
  121. package/dist/ui/assets/{store-D9HgQRdy.js → store-DWCTEbG_.js} +1 -1
  122. package/dist/ui/assets/{store-DYTzgtEI.js → store-KNXWdOK2.js} +1 -1
  123. package/dist/ui/assets/{sudo-BMKHhJ-G.js → sudo-CIAPGN7B.js} +1 -1
  124. package/dist/ui/assets/{supervisor-DVWawJTM.js → supervisor-B66x-Vkc.js} +1 -1
  125. package/dist/ui/assets/{sync-dialog-a3YQ7KdL.js → sync-dialog-Djc_a0VZ.js} +1 -1
  126. package/dist/ui/assets/{transformers-env-BFCBqwlr.js → transformers-env-D6TF-IDr.js} +1 -1
  127. package/dist/ui/assets/{tray-leader-zKkaFxIk.js → tray-leader-CIZme1Uv.js} +1 -1
  128. package/dist/ui/assets/{tray-leave-runtime-CNc8g3tP.js → tray-leave-runtime-BlJcEsjZ.js} +1 -1
  129. package/dist/ui/assets/{tray-runtime-config-DmcF9Q2r.js → tray-runtime-config-CTm013-K.js} +1 -1
  130. package/dist/ui/assets/{tray-sidecar-DqV3sh8H.js → tray-sidecar-CQbopRA0.js} +1 -1
  131. package/dist/ui/assets/{turn-journal-Z3e-huge.js → turn-journal-C3RmT-4t.js} +1 -1
  132. package/dist/ui/assets/{upgrade-detection-Bsvrq_lt.js → upgrade-detection-CI961Db5.js} +1 -1
  133. package/dist/ui/assets/{upskill-lick-skip-BQvJXwS8.js → upskill-lick-skip-Pgkrnlsn.js} +1 -1
  134. package/dist/ui/assets/{voice-reply-B_BXV7A4.js → voice-reply-CGAEvYeb.js} +1 -1
  135. package/dist/ui/assets/{wc-attach-CEkWqpLf.js → wc-attach-EFdZZ8Vf.js} +2 -2
  136. package/dist/ui/assets/{wc-browser-DWwB9l3P.js → wc-browser-BxHcWLQS.js} +1 -1
  137. package/dist/ui/assets/{wc-computers-DuGnds2T.js → wc-computers-DpyoOipa.js} +1 -1
  138. package/dist/ui/assets/{wc-detached-Bc462J4O.js → wc-detached-BI-nRqR6.js} +1 -1
  139. package/dist/ui/assets/{wc-extension-DZmTjBxS.js → wc-extension-BwfH_VzP.js} +2 -2
  140. package/dist/ui/assets/{wc-follower-C0olroj0.js → wc-follower-DKR4OPcZ.js} +3 -3
  141. package/dist/ui/assets/{wc-follower-oauth-BTOd3V8J.js → wc-follower-oauth-CfA7UWC5.js} +1 -1
  142. package/dist/ui/assets/{wc-gelatiere-3BBfbusI.js → wc-gelatiere-BE0uAWbT.js} +1 -1
  143. package/dist/ui/assets/{wc-live-Cc8h6ZH1.js → wc-live-CdmabddW.js} +5 -5
  144. package/dist/ui/assets/{wc-nav-6f53F2ez.js → wc-nav-CCmScWJ4.js} +2 -2
  145. package/dist/ui/assets/{wc-onboarding-D548eykf.js → wc-onboarding-D0e3dPYO.js} +2 -2
  146. package/dist/ui/assets/{wc-permissions-B3SJSMf9.js → wc-permissions-B7OY43ZG.js} +2 -2
  147. package/dist/ui/assets/{wc-placeholder-BS4TqwFw.js → wc-placeholder-DPUUdjRi.js} +3 -3
  148. package/dist/ui/assets/{wc-secret-request-DoSFP6An.js → wc-secret-request-SUzW9YEh.js} +1 -1
  149. package/dist/ui/assets/{wc-settings-B7zv9hl_.js → wc-settings-DSvaQncZ.js} +3 -3
  150. package/dist/ui/assets/{wc-shell-pTQjFXvS.js → wc-shell-BPciXnLq.js} +3 -3
  151. package/dist/ui/assets/{wc-shortcut-config-87PqTsLw.js → wc-shortcut-config-DAN7j36V.js} +1 -1
  152. package/dist/ui/assets/{wc-sprinkles-BMoFsMix.js → wc-sprinkles-CcVI4OqK.js} +2 -2
  153. package/dist/ui/assets/{wc-transcript-export-CP5fUab6.js → wc-transcript-export-5f3QJNR1.js} +2 -2
  154. package/dist/ui/assets/{wc-tray-DW-miPAR.js → wc-tray-ChZZuPhq.js} +4 -4
  155. package/dist/ui/assets/welcome-detection-BRrkHhll.js +1 -0
  156. package/dist/ui/assets/{whisper-session-C90nWMGE.js → whisper-session-3j3ZGwmD.js} +2 -2
  157. package/dist/ui/assets/{xai-grok-U-6wly9W.js → xai-grok-B0n0zO7A.js} +1 -1
  158. package/dist/ui/assets/{xai-grok-D0yrS3by.js → xai-grok-s0UdCHw_.js} +1 -1
  159. package/dist/ui/index.html +3 -3
  160. package/dist/ui/packages/webapp/index.html +3 -3
  161. package/package.json +1 -1
  162. package/dist/ui/assets/ensure-speech-assets-C3v1Nu2n.js +0 -1
  163. package/dist/ui/assets/installer-CzQ_lEMz.js +0 -4
  164. package/dist/ui/assets/provider-store-access-B7yFT4hY.js +0 -1
  165. package/dist/ui/assets/provider-store-access-D2Rj0Y-3.js +0 -1
  166. package/dist/ui/assets/proxied-fetch-J19bK2dG.js +0 -1
  167. package/dist/ui/assets/rest-ops-CPEMTyP-.js +0 -1
  168. package/dist/ui/assets/slicc-version-BiZFSvt-.js +0 -1
  169. package/dist/ui/assets/welcome-detection-F6VKt_Ix.js +0 -1
@@ -1,7 +1,7 @@
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{d as l,f as u,i as d,u as f}from"./account-store-D0ciUU3U.js";import{a as p,l as m,n as h,o as g}from"./proxied-fetch-J19bK2dG.js";import{t as _}from"./runtime-env-DadgceZk.js";import{t as v}from"./slugify-BYJ6QVAt.js";import{n as ee,t as te}from"./host-command-PUA7nfMk.js";import{a as ne,i as re,n as ie,r as ae,t as oe}from"./snapshot-CISX8Ybx.js";import{i as se,r as y}from"./panel-rpc-DW7W4w6_.js";import{t as ce}from"./providers-DLk_1jra.js";import{r as le}from"./binary-cache-bSOhqXB1.js";import{i as ue,n as de,r as fe}from"./fetch-body-CuwTaJC_.js";import{s as pe,t as me}from"./api-endpoint-D8lUKmPu.js";import{t as he}from"./compat-uEPf6-XW.js";import{a as ge,i as _e}from"./core-D-Fp1HL2.js";import{n as ve,t as ye}from"./mime-types-D7IV6i7k.js";import{t as be}from"./secrets-bridge-client-CUClOhLJ.js";import{a as xe,i as Se,n as Ce,r as we}from"./tool-ui-DRnUkp2g.js";import{a as Te,i as Ee,n as b,t as x}from"./path-utils-DNJG-zQf.js";import{n as De,r as Oe,t as ke}from"./merge-file-core-VJlzucJY.js";import{r as Ae}from"./workspace-mode-D0kUKBVS.js";import{n as je,t as Me}from"./thinking-level-5x0UAu9N.js";import{n as Ne,t as Pe}from"./types-D8gIX-W-.js";import{i as Fe}from"./mount-index-CQfmUPuZ.js";import{a as Ie,i as Le,n as Re,o as ze,s as Be,t as Ve}from"./signed-fetch-D3crNsSs.js";import{o as He}from"./mount-table-store-DrF_Ifaz.js";import{t as Ue}from"./remote-cache-BE5T1-53.js";import{n as We}from"./fs-TVcPtHbB.js";import{a as Ge}from"./tray-leader-status-CpkFr6n7.js";import{n as Ke,t as qe}from"./slicc-version-BiZFSvt-.js";import{a as Je,i as Ye,o as Xe,r as S,t as Ze}from"./browser-BM_DFzrh.js";import{t as C}from"./subcommand-flags-BZi7j78Q.js";import{n as Qe,r as $e,t as w}from"./subcommand-help-CgO7wRS5.js";import{n as et}from"./cost-command-CitGzr6C.js";import{d as tt,g as nt,i as rt,n as it,o as at}from"./sudoers-BdBYQPUn.js";import{n as ot,r as st,t as ct}from"./approval-timeout-BQ29Z0gf.js";import{a as lt,c as ut,i as dt,l as ft,n as pt,o as mt,r as ht,t as gt}from"./types-BfwydWt7.js";import{n as T,t as _t}from"./boundary-Cp9c_bPu.js";import"./rest-paths-Dia19u9P.js";import{t as vt}from"./html-B_Hg2WOy.js";import{n as yt}from"./llm-session-id-BZyXP_j2.js";import{t as bt}from"./buffer-polyfill-BccMjOKj.js";import{i as xt,o as St}from"./browser-DuyhpHbR.js";import{i as Ct,r as wt,t as Tt}from"./mount-picker-popup-BMils9JY.js";import{t as Et}from"./buffer-B5d1xHaH.js";import{A as Dt,B as E,C as Ot,D,E as kt,F as At,G as jt,H as O,I as k,J as Mt,K as Nt,L as Pt,M as Ft,N as It,O as Lt,P as Rt,R as zt,S as Bt,T as Vt,U as Ht,V as Ut,W as Wt,Y as Gt,_ as Kt,a as qt,b as Jt,c as Yt,d as Xt,f as Zt,g as Qt,h as $t,i as en,j as tn,k as nn,l as rn,m as an,n as on,o as sn,p as A,q as cn,r as ln,s as un,t as dn,u as fn,v as pn,w as mn,x as hn,y as gn,z as _n}from"./isomorphic-git-r9mnHMnp.js";import"./global-db-DJXlpNui.js";import{S as vn,_ as yn,a as bn,b as xn,c as Sn,d as Cn,f as wn,g as Tn,h as En,i as Dn,l as On,n as kn,o as An,p as jn,r as Mn,s as Nn,t as Pn,u as Fn,v as j,x as M,y as In}from"./state-CcrU6NJk.js";import{a as Ln,i as Rn,r as zn,t as Bn}from"./git-config-Bdgu8kD2.js";import{a as Vn,n as Hn,o as Un,r as Wn,s as Gn}from"./jsh-discovery-CnvNKojr.js";import{A as Kn,C as qn,a as Jn,b as Yn,c as Xn,d as Zn,f as Qn,h as $n,i as er,j as tr,l as nr,m as rr,n as ir,o as ar,p as or,r as sr,s as cr,t as N,u as lr,v as ur,y as dr}from"./shared-DfMXB1pm.js";import{_ as fr,a as pr,b as mr,d as hr,f as gr,g as _r,h as vr,i as yr,l as br,m as xr,p as Sr,r as Cr,s as wr,u as Tr,v as Er,x as Dr,y as Or}from"./require-guards-DPf5QETL.js";import{_ as kr,a as Ar,b as jr,c as Mr,d as Nr,f as Pr,g as Fr,h as Ir,l as Lr,m as Rr,n as zr,p as Br,s as Vr,t as Hr,u as Ur,v as Wr,x as Gr,y as Kr}from"./jsh-executor-C849KexO.js";import{n as qr,t as Jr}from"./esbuild-wasm-CeZYVyQ9.js";import{n as Yr}from"./wasm-compiler-Ct7QZURL.js";import{a as Xr,o as Zr,s as Qr,t as $r}from"./usb-device-registry-DFzxaOky.js";import{a as P,i as ei,r as ti,t as ni}from"./just-bash-compat-B-SPHuh_.js";import{i as ri,r as ii,t as ai}from"./script-catalog-DZtOMxvi.js";import{a as oi,c as si,o as ci,s as li,t as ui}from"./types-Dzr0qYl3.js";import{a as di,c as fi,d as pi,f as mi,n as hi,r as gi,u as _i}from"./github-zip-CfS9P2dH.js";import{i as vi,t as yi}from"./github-auth-Crm1hubQ.js";import{a as bi,i as xi,o as Si,r as Ci,t as wi}from"./provenance-DdmsQ3Nr.js";import{a as Ti,c as Ei,i as Di,n as Oi,o as ki,r as Ai,s as ji}from"./github-install-DB3-4PDg.js";import{n as Mi,t as Ni}from"./magick-wasm-KFp97Nzb.js";import{i as Pi,n as Fi,r as Ii,t as Li}from"./pdf-raster-BWk6ezTX.js";import{n as Ri}from"./lick-target-env-8JxfVcIV.js";import{t as zi}from"./tmpdir-env-ate4iNcK.js";import{a as Bi,c as Vi,d as Hi,f as Ui,i as Wi,l as Gi,n as Ki,o as qi,p as Ji,r as Yi,s as Xi,t as Zi,u as Qi}from"./installer-CzQ_lEMz.js";import{t as $i}from"./ffmpeg-wasm-CV1BmGNS.js";import{t as ea}from"./local-llm-BSMA7cC5.js";import{t as ta}from"./client-CmfvXtLV.js";import{t as na}from"./redirect-uri-DlOE4xJ4.js";import{a as ra,c as ia,i as aa,o as oa,r as sa,s as ca}from"./v86-vm-DCm7zA2r.js";import{n as la,r as ua}from"./lick-urls-CgPiVwD-.js";let da=null;function fa(e){da=e!==null&&Number.isFinite(e)&&e>0?e:null}function pa(){if(da!==null)return da;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const ma=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function ha(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=ma.exec(t.split(`.`)[0]??``);if(!n||!t.includes(`.`))return null;let r=n[1].toLowerCase();return`${[r.slice(0,8),r.slice(8,12),r.slice(12,16),r.slice(16,20),r.slice(20)].join(`-`)}.${n[2].toLowerCase()}`}[`ghp_`,`gho_`,`ghu_`,`ghs_`,`ghr_`,`github_pat_`,`sk-`,`pk-`,`xoxb-`,`xoxp-`,`xoxa-`,`xoxs-`,`AKIA`,`ABIA`,`ACCA`,`ASIA`,`sk-ant-`,`Bearer `].sort((e,t)=>t.length-e.length);function ga(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 _a(e,t){return e.some(e=>ga(e,t))}const va=`slicc-transcript`,ya=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],ba=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 xa(e){return ba.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Sa=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const Ca=new Set(ya),wa=/^[0-9a-fA-F]{64}$/,Ta=/^\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 Ea(e){return typeof e==`string`&&wa.test(e)}function Da(e){return Ta.test(e)&&Number.isFinite(Date.parse(e))}function Oa(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 ka(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Oa(n,t)}:{ok:!0}}function Aa(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 ja(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 Ma(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=ka(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?ja(e,t):n}function Na(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 Pa(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 Fa(e,t){let n=Na(e,t);if(!n.ok)return n;let r=e.cost;return F(r)?Pa(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function Ia(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`?Da(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 La(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 Ra(e,t){let n=e.usage;return n===void 0?{ok:!0}:F(n)?Fa(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function za(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=ka(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=La(e,t);if(!n.ok)return n}let r=Ia(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=Aa(i,Ma,`${t}.content`);return a.ok?Ra(e,t):a}function Ba(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=ka(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Aa(r,za,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function Va(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 Ha(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`}:Ea(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 Ua=[`attachment-file-missing`,`attachment-association-unavailable`];function Wa(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?ka(e.missingReason,Ua,`${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 Ga(e,t){return e.present?Ha(e,t):Wa(e,t)}function Ka(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Va(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=ka(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?Ga(e,t):r}function qa(e,t){let n=ka(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 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.category!=`string`)return{ok:!1,error:`${t}.category must be a string`};let n=ka(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return F(r)?qa(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function Ya(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 Xa(e,t){return typeof e!=`string`||!Ca.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function Za(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 Qa(e){if(!F(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=ka(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Aa(e.missing,Xa,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function $a(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=ka(e.state,[`active`,`frozen`],`session.state`);return t.ok?Qa(e.completeness):t}function eo(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)?Aa(n,Ja,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function to(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Aa(t,Ba,`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=Aa(r,Ya,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Aa(a,Ka,`attachments`):{ok:!1,error:`attachments must be an array`}}function no(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 ro(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 io(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 ao(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 io(e))t.add(n)}return t}function oo(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 so(e){return oo(e,ao(e))}function co(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 lo(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=co(e,t);if(!r.ok)return r}}return{ok:!0}}function uo(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return lo(e,n)}function fo(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 po(e,t){let n=fo(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 mo(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(io(e)))}return t}function ho(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 go(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return ho(e,n,mo(t))}function _o(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 vo(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=_o(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function yo(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=no(t);if(!o.ok)return o;let s=ro(t);if(!s.ok)return s;let c=so(t);if(!c.ok)return c;let l=uo(t,n);if(!l.ok)return l;let u=po(n,t);if(!u.ok)return u;let d=go(r,t);return d.ok?vo(a,n):d}function bo(e){let t=to(e);return t.ok?yo(e):t}function xo(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=Za(e.export);if(!t.ok)return t;let n=$a(e.session);if(!n.ok)return n;let r=eo(e.privacy);return r.ok?bo(e):r}async function So(e,t,n){let r=await n({method:`GET`,path:`/${e}/sites/${t}/config.json`,origin:ze});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:Co(a),sourceUrl:a}}function Co(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const wo=`slicc-sprinkle-routes`;function To(){try{let e=localStorage.getItem(wo);return e?JSON.parse(e):{}}catch{return{}}}function Eo(e){try{localStorage.setItem(wo,JSON.stringify(e))}catch{}}function Do(e){return To()[e]}function Oo(e,t){let n=To();n[e]=t,Eo(n)}function ko(e){let t=To();delete t[e],Eo(t)}function Ao(){return To()}function jo(e,t,n){return ut(t,n,`${e} adapter does not implement ${t}.${n}`)}function Mo(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(jo(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function No(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:Mo(t,`browser`,pt,e.browser),network:Mo(t,`network`,lt,e.network),secrets:Mo(t,`secrets`,mt,e.secrets),devices:Mo(t,`devices`,ht,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:Mo(t,`mounts`,dt,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:Mo(t,`approvals`,gt,e.approvals)}}function Po(e={}){return No({adapter:`connect`,pageGestures:e.pageGestures})}function Fo(e){let t=_t(()=>import(`./extension-ops-DTRUyGkx.js`).then(t=>t.createExtensionOps(e)));return No({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 Io(e={}){let t=_t(()=>import(`./rest-ops-CPEMTyP-.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return No({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 Lo(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return Io({pageGestures:n});case`extension-direct`:case`extension-delegate`:return Fo({adapter:e,pageGestures:n});case`connect`:return Po({pageGestures:n})}}const Ro=e(`quick-llm`);async function zo(e){let t=d();if(!t)return Ro.debug(`No API key for active provider — skipping`),null;let n=u(),r=l(),i;if(i=e.modelId?Uo(n,e.modelId)??Uo(n,r):Bo(n,r),!i)return Ro.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`]=Wo());try{let n=(await he(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 Ro.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function Bo(e,t){let n=f(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=Ho(r.id),a=n.filter(e=>Vo(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function Vo(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 Ho(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 Uo(e,t){return f(e).find(e=>e.id===t)}function Wo(){return yt(`ui-quick-llm`)}const Go=e(`sudo-suggest`),Ko=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
1
+ import{t as e}from"./logger-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{d as l,f as u,i as d,u as f}from"./account-store-C4KjAHlX.js";import{n as p,o as m,r as h,s as g,u as _}from"./proxied-fetch-DXaTHROw.js";import{t as v}from"./runtime-env-DadgceZk.js";import{t as ee}from"./slugify-BYJ6QVAt.js";import{n as te,t as ne}from"./host-command-PUA7nfMk.js";import{a as re,i as ie,n as ae,r as oe,t as se}from"./snapshot-DXi1cxon.js";import{i as ce,r as y}from"./panel-rpc-DW7W4w6_.js";import{t as le}from"./providers-D8v7SVor.js";import{r as ue}from"./binary-cache-bSOhqXB1.js";import{i as de,n as fe,r as pe}from"./fetch-body-CuwTaJC_.js";import{s as me,t as he}from"./api-endpoint-D8lUKmPu.js";import{t as ge}from"./compat-uEPf6-XW.js";import{a as _e,i as ve}from"./core-BfCKeVcE.js";import{n as ye,t as be}from"./mime-types-D7IV6i7k.js";import{t as xe}from"./secrets-bridge-client-BiJrSKN9.js";import{a as Se,i as Ce,n as we,r as Te}from"./tool-ui-DRnUkp2g.js";import{a as Ee,i as De,n as b,t as x}from"./path-utils-DNJG-zQf.js";import{n as Oe,r as ke,t as Ae}from"./merge-file-core-VJlzucJY.js";import{r as je}from"./workspace-mode-D0kUKBVS.js";import{n as Me,t as Ne}from"./thinking-level-5x0UAu9N.js";import{n as Pe,t as Fe}from"./types-D8gIX-W-.js";import{i as Ie}from"./mount-index-CQfmUPuZ.js";import{a as Le,i as Re,n as ze,o as Be,s as Ve,t as He}from"./signed-fetch-0nzqVGFF.js";import{o as Ue}from"./mount-table-store-DrF_Ifaz.js";import{t as We}from"./remote-cache-BE5T1-53.js";import{n as Ge}from"./fs-BA8JNn5I.js";import{a as Ke}from"./tray-leader-status-CpkFr6n7.js";import{n as qe,t as Je}from"./slicc-version-ByY3PCi6.js";import{a as Ye,i as Xe,o as Ze,r as S,t as Qe}from"./browser-BM_DFzrh.js";import{t as C}from"./subcommand-flags-BZi7j78Q.js";import{n as $e,r as et,t as w}from"./subcommand-help-CgO7wRS5.js";import{n as tt}from"./cost-command-CitGzr6C.js";import{d as nt,g as rt,i as it,n as at,o as ot}from"./sudoers-BdBYQPUn.js";import{n as st,r as ct,t as lt}from"./approval-timeout-BQ29Z0gf.js";import{a as ut,c as dt,i as ft,l as pt,n as mt,o as ht,r as gt,t as _t}from"./types-BfwydWt7.js";import{n as T,t as vt}from"./boundary-Cp9c_bPu.js";import"./rest-paths-Dia19u9P.js";import{t as yt}from"./html-B_Hg2WOy.js";import{n as bt}from"./llm-session-id-BZyXP_j2.js";import{t as xt}from"./buffer-polyfill-BccMjOKj.js";import{i as St,o as Ct}from"./browser-DuyhpHbR.js";import{i as wt,r as Tt,t as Et}from"./mount-picker-popup-BMils9JY.js";import{t as Dt}from"./buffer-B5d1xHaH.js";import{A as Ot,B as E,C as kt,D,E as At,F as jt,G as Mt,H as O,I as k,J as Nt,K as Pt,L as Ft,M as It,N as Lt,O as Rt,P as zt,R as Bt,S as Vt,T as Ht,U as Ut,V as Wt,W as Gt,Y as Kt,_ as qt,a as Jt,b as Yt,c as Xt,d as Zt,f as Qt,g as $t,h as en,i as tn,j as nn,k as rn,l as an,m as on,n as sn,o as cn,p as A,q as ln,r as un,s as dn,t as fn,u as pn,v as mn,w as hn,x as gn,y as _n,z as vn}from"./isomorphic-git-r9mnHMnp.js";import"./global-db-DJXlpNui.js";import{S as yn,_ as bn,a as xn,b as Sn,c as Cn,d as wn,f as Tn,g as En,h as Dn,i as On,l as kn,n as An,o as jn,p as Mn,r as Nn,s as Pn,t as Fn,u as In,v as j,x as M,y as Ln}from"./state-Za_SB5d2.js";import{a as Rn,i as zn,r as Bn,t as Vn}from"./git-config-Bdgu8kD2.js";import{a as Hn,n as Un,o as Wn,r as Gn,s as Kn}from"./jsh-discovery-CnvNKojr.js";import{A as qn,C as Jn,a as Yn,b as Xn,c as Zn,d as Qn,f as $n,h as er,i as tr,j as nr,l as rr,m as ir,n as ar,o as or,p as sr,r as cr,s as lr,t as N,u as ur,v as dr,y as fr}from"./shared-DfMXB1pm.js";import{_ as pr,a as mr,b as hr,d as gr,f as _r,g as vr,h as yr,i as br,l as xr,m as Sr,p as Cr,r as wr,s as Tr,u as Er,v as Dr,x as Or,y as kr}from"./require-guards-DPf5QETL.js";import{_ as Ar,a as jr,b as Mr,c as Nr,d as Pr,f as Fr,g as Ir,h as Lr,l as Rr,m as zr,n as Br,p as Vr,s as Hr,t as Ur,u as Wr,v as Gr,x as Kr,y as qr}from"./jsh-executor-CHdJJlPA.js";import{n as Jr,t as Yr}from"./esbuild-wasm-CeZYVyQ9.js";import{n as Xr}from"./wasm-compiler-Ct7QZURL.js";import{a as Zr,o as Qr,s as $r,t as ei}from"./usb-device-registry-DFzxaOky.js";import{a as P,i as ti,r as ni,t as ri}from"./just-bash-compat-B-SPHuh_.js";import{i as ii,r as ai,t as oi}from"./script-catalog-DZtOMxvi.js";import{a as si,c as ci,o as li,s as ui,t as di}from"./types-Dzr0qYl3.js";import{a as fi,c as pi,d as mi,f as hi,n as gi,r as _i,u as vi}from"./github-zip-COiiefUG.js";import{i as yi,t as bi}from"./github-auth-xb90bdu_.js";import{a as xi,i as Si,o as Ci,r as wi,t as Ti}from"./provenance-DdmsQ3Nr.js";import{a as Ei,c as Di,i as Oi,n as ki,o as Ai,r as ji,s as Mi}from"./github-install-DO2t0FaF.js";import{n as Ni,t as Pi}from"./magick-wasm-KFp97Nzb.js";import{i as Fi,n as Ii,r as Li,t as Ri}from"./pdf-raster-BWk6ezTX.js";import{n as zi}from"./lick-target-env-8JxfVcIV.js";import{t as Bi}from"./tmpdir-env-ate4iNcK.js";import{n as Vi,t as Hi}from"./hf-defaults-BwJdGLgk.js";import{a as Ui,c as Wi,i as Gi,l as Ki,n as qi,o as Ji,r as Yi,s as Xi,t as Zi,u as Qi}from"./installer-Cg-SnEpR.js";import{t as $i}from"./ffmpeg-wasm-CV1BmGNS.js";import{t as ea}from"./local-llm-B7jLsaQd.js";import{t as ta}from"./client-CwxmlQM-.js";import{t as na}from"./redirect-uri-CBCnYKsl.js";import{a as ra,c as ia,i as aa,o as oa,r as sa,s as ca}from"./v86-vm-DCm7zA2r.js";import{n as la,r as ua}from"./lick-urls-CgPiVwD-.js";let da=null;function fa(e){da=e!==null&&Number.isFinite(e)&&e>0?e:null}function pa(){if(da!==null)return da;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const ma=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function ha(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=ma.exec(t.split(`.`)[0]??``);if(!n||!t.includes(`.`))return null;let r=n[1].toLowerCase();return`${[r.slice(0,8),r.slice(8,12),r.slice(12,16),r.slice(16,20),r.slice(20)].join(`-`)}.${n[2].toLowerCase()}`}[`ghp_`,`gho_`,`ghu_`,`ghs_`,`ghr_`,`github_pat_`,`sk-`,`pk-`,`xoxb-`,`xoxp-`,`xoxa-`,`xoxs-`,`AKIA`,`ABIA`,`ACCA`,`ASIA`,`sk-ant-`,`Bearer `].sort((e,t)=>t.length-e.length);function ga(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 _a(e,t){return e.some(e=>ga(e,t))}const va=`slicc-transcript`,ya=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],ba=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 xa(e){return ba.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Sa=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const Ca=new Set(ya),wa=/^[0-9a-fA-F]{64}$/,Ta=/^\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 Ea(e){return typeof e==`string`&&wa.test(e)}function Da(e){return Ta.test(e)&&Number.isFinite(Date.parse(e))}function Oa(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 ka(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Oa(n,t)}:{ok:!0}}function Aa(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 ja(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 Ma(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=ka(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?ja(e,t):n}function Na(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 Pa(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 Fa(e,t){let n=Na(e,t);if(!n.ok)return n;let r=e.cost;return F(r)?Pa(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function Ia(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`?Da(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 La(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 Ra(e,t){let n=e.usage;return n===void 0?{ok:!0}:F(n)?Fa(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function za(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=ka(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=La(e,t);if(!n.ok)return n}let r=Ia(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=Aa(i,Ma,`${t}.content`);return a.ok?Ra(e,t):a}function Ba(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=ka(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Aa(r,za,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function Va(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 Ha(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`}:Ea(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 Ua=[`attachment-file-missing`,`attachment-association-unavailable`];function Wa(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?ka(e.missingReason,Ua,`${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 Ga(e,t){return e.present?Ha(e,t):Wa(e,t)}function Ka(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Va(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=ka(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?Ga(e,t):r}function qa(e,t){let n=ka(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 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.category!=`string`)return{ok:!1,error:`${t}.category must be a string`};let n=ka(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return F(r)?qa(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function Ya(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 Xa(e,t){return typeof e!=`string`||!Ca.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function Za(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 Qa(e){if(!F(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=ka(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Aa(e.missing,Xa,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function $a(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=ka(e.state,[`active`,`frozen`],`session.state`);return t.ok?Qa(e.completeness):t}function eo(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)?Aa(n,Ja,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function to(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Aa(t,Ba,`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=Aa(r,Ya,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Aa(a,Ka,`attachments`):{ok:!1,error:`attachments must be an array`}}function no(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 ro(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 io(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 ao(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 io(e))t.add(n)}return t}function oo(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 so(e){return oo(e,ao(e))}function co(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 lo(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=co(e,t);if(!r.ok)return r}}return{ok:!0}}function uo(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return lo(e,n)}function fo(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 po(e,t){let n=fo(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 mo(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(io(e)))}return t}function ho(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 go(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return ho(e,n,mo(t))}function _o(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 vo(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=_o(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function yo(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=no(t);if(!o.ok)return o;let s=ro(t);if(!s.ok)return s;let c=so(t);if(!c.ok)return c;let l=uo(t,n);if(!l.ok)return l;let u=po(n,t);if(!u.ok)return u;let d=go(r,t);return d.ok?vo(a,n):d}function bo(e){let t=to(e);return t.ok?yo(e):t}function xo(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=Za(e.export);if(!t.ok)return t;let n=$a(e.session);if(!n.ok)return n;let r=eo(e.privacy);return r.ok?bo(e):r}async function So(e,t,n){let r=await n({method:`GET`,path:`/${e}/sites/${t}/config.json`,origin:Be});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:Co(a),sourceUrl:a}}function Co(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const wo=`slicc-sprinkle-routes`;function To(){try{let e=localStorage.getItem(wo);return e?JSON.parse(e):{}}catch{return{}}}function Eo(e){try{localStorage.setItem(wo,JSON.stringify(e))}catch{}}function Do(e){return To()[e]}function Oo(e,t){let n=To();n[e]=t,Eo(n)}function ko(e){let t=To();delete t[e],Eo(t)}function Ao(){return To()}function jo(e,t,n){return dt(t,n,`${e} adapter does not implement ${t}.${n}`)}function Mo(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(jo(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function No(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:Mo(t,`browser`,mt,e.browser),network:Mo(t,`network`,ut,e.network),secrets:Mo(t,`secrets`,ht,e.secrets),devices:Mo(t,`devices`,gt,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:Mo(t,`mounts`,ft,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:Mo(t,`approvals`,_t,e.approvals)}}function Po(e={}){return No({adapter:`connect`,pageGestures:e.pageGestures})}function Fo(e){let t=vt(()=>import(`./extension-ops-CF2mLDRW.js`).then(t=>t.createExtensionOps(e)));return No({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 Io(e={}){let t=vt(()=>import(`./rest-ops-CLliBy-9.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return No({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 Lo(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return Io({pageGestures:n});case`extension-direct`:case`extension-delegate`:return Fo({adapter:e,pageGestures:n});case`connect`:return Po({pageGestures:n})}}const Ro=e(`quick-llm`);async function zo(e){let t=d();if(!t)return Ro.debug(`No API key for active provider — skipping`),null;let n=u(),r=l(),i;if(i=e.modelId?Uo(n,e.modelId)??Uo(n,r):Bo(n,r),!i)return Ro.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`]=Wo());try{let n=(await ge(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 Ro.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function Bo(e,t){let n=f(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=Ho(r.id),a=n.filter(e=>Vo(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function Vo(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 Ho(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 Uo(e,t){return f(e).find(e=>e.id===t)}function Wo(){return bt(`ui-quick-llm`)}const Go=e(`sudo-suggest`),Ko=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
2
2
  `),qo=[`You generalize a single filesystem path into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the meaningful directory prefix and replace the volatile`,`leaf (and below) with "**". Examples:`,` /workspace/.git/config -> /workspace/.git/**`,` /shared/secrets/openai.key -> /shared/secrets/**`,` /workspace/src/app/main.ts -> /workspace/src/**`].join(`
3
3
  `);async function Jo(e,t){if(e.suggestedPattern&&e.suggestedPattern.trim().length>0)return e.suggestedPattern.trim();let n=e.detail.trim(),r=e.kind===`command`?Ko:qo,i=null;try{i=await zo({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){Go.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return Yo(i)||n}function Yo(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 Xo=e(`sudo:capability-gesture`);function Zo(e,t={}){let n=t.suggest??Jo;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 Xo.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),{decision:`deny`};if(!e)return Xo.warn(`no CapabilityBroker injected for the sudo gesture hop — denying (composition bug, never a guessed transport)`,{detail:t.detail}),{decision:`deny`};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?ft(o.value,a):(Xo.warn(`capability broker approvals.request failed — denying`,{message:o.message}),{decision:`deny`})}}}const Qo=e(`sudo:tray-first`);function $o(e,t={}){let n=t.suggest??Jo,r=t.timeoutMs??6e5,i=t.getClient??(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-DW7W4w6_.js`).then(e=>e.a);return e()});return{async requestApproval(t,a){if(a?.signal?.aborted)return{decision:`deny`};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){Qo.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 es(e?.decision,o)}catch(e){Qo.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return e.requestApproval(s,a)}}}function es(e,t){if(!e||typeof e!=`object`)return{decision:`deny`};let n=e,r=n.attestation===`biometric`||n.attestation===`passcode`||n.attestation===`none`?n.attestation:void 0;return n.decision===`allow`?{decision:`allow`,...r?{attestation:r}:{}}:n.decision===`always`?{decision:`always`,pattern:typeof n.pattern==`string`&&n.pattern.trim().length>0?n.pattern.trim():t,...r?{attestation:r}:{}}:{decision:`deny`}}function ts(e,t){return{requestApproval(n){return t.enqueueSudoRequest(e,n)}}}function ns(){return`lick-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}var rs=class{pending=new Map;timeoutMs;newId;setTimer;clearTimer;onAutoSettle;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.newId=e.newId??ns,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(ot(`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`}),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`}),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 is(e){return st(as(e))}function as(e){let t=Zo(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:$o(t)}let os=null;function ss(e){return os=e,()=>{os===e&&(os=null)}}function cs(){if(!os)throw new Sa(`session-not-found`);return os}const ls=`focus`,us={type:`leaf`,surfaceId:`chat`};function ds(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 fs={focus:{name:`focus`,tree:ds({left:us},{left:3,middle:1})}};function ps(e){return fs[e]??null}const ms=`progress`;function hs(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}async function gs(){try{let e=await wt();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 Tt(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);return await Ct(t),t}throw Error(`mount: unexpected popup result`)}catch(e){throw Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}async function _s(){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)}`)}}function vs(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 ys(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 bs=new Set([`--source`,`--profile`,`--backend`,`--max-body-mb`]);function xs(e){for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`)return!1;if(n===`--help`||n===`-h`)return!0;bs.has(n)&&t++}return!1}function Ss(e){return`aem://${e.org}/${e.name}${e.path?`/${e.path}`:``}`}var Cs=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=vs(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=xe();if(!n){let n=await ws(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;if(n){let t=this.options.acquireLocalMountViaToolUI;if(!t)throw Error(`mount: tool UI not available in this runtime`);r=await t(n,e)}else r=_()?await gs():await _s();let i=Fe.fromHandle(r,{mountId:He()});return await this.options.fs.mount(e,i,{env:t}),{stdout:`Mounted '${i.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=He(),i=new Ue({mountId:r,ttlMs:3e4}),a=new Le({source:t.source,profile:n,cache:i,maxBodyBytes:t.maxBodyMb?t.maxBodyMb*1024*1024:void 0,mountId:r,signedFetch:this.signedFetchS3??Re(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??Ve(),i=ys(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 So(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=He(),c=new Ue({mountId:s,ttlMs:3e4}),l={source:a===`aem`?Ss(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 Be(l):new Ie(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(xs(e))return n===`umount`?this.umountHelp():this.help();let r=vs(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-BE5T1-53.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
4
+ `,1)[0]?.trim()??``).replace(/^`+/,``).replace(/`+$/,``).replace(/^["']/,``).replace(/["']$/,``).trim();return t.length===0?null:t}const Xo=e(`sudo:capability-gesture`);function Zo(e,t={}){let n=t.suggest??Jo;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 Xo.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),{decision:`deny`};if(!e)return Xo.warn(`no CapabilityBroker injected for the sudo gesture hop — denying (composition bug, never a guessed transport)`,{detail:t.detail}),{decision:`deny`};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?pt(o.value,a):(Xo.warn(`capability broker approvals.request failed — denying`,{message:o.message}),{decision:`deny`})}}}const Qo=e(`sudo:tray-first`);function $o(e,t={}){let n=t.suggest??Jo,r=t.timeoutMs??6e5,i=t.getClient??(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-DW7W4w6_.js`).then(e=>e.a);return e()});return{async requestApproval(t,a){if(a?.signal?.aborted)return{decision:`deny`};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){Qo.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 es(e?.decision,o)}catch(e){Qo.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return e.requestApproval(s,a)}}}function es(e,t){if(!e||typeof e!=`object`)return{decision:`deny`};let n=e,r=n.attestation===`biometric`||n.attestation===`passcode`||n.attestation===`none`?n.attestation:void 0;return n.decision===`allow`?{decision:`allow`,...r?{attestation:r}:{}}:n.decision===`always`?{decision:`always`,pattern:typeof n.pattern==`string`&&n.pattern.trim().length>0?n.pattern.trim():t,...r?{attestation:r}:{}}:{decision:`deny`}}function ts(e,t){return{requestApproval(n){return t.enqueueSudoRequest(e,n)}}}function ns(){return`lick-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}var rs=class{pending=new Map;timeoutMs;newId;setTimer;clearTimer;onAutoSettle;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.newId=e.newId??ns,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(st(`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`}),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`}),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 is(e){return ct(as(e))}function as(e){let t=Zo(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:$o(t)}let os=null;function ss(e){return os=e,()=>{os===e&&(os=null)}}function cs(){if(!os)throw new Sa(`session-not-found`);return os}const ls=`focus`,us={type:`leaf`,surfaceId:`chat`};function ds(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 fs={focus:{name:`focus`,tree:ds({left:us},{left:3,middle:1})}};function ps(e){return fs[e]??null}const ms=`progress`;function hs(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}async function gs(){try{let e=await Tt();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 Et(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);return await wt(t),t}throw Error(`mount: unexpected popup result`)}catch(e){throw Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}async function _s(){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)}`)}}function vs(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 ys(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 bs=new Set([`--source`,`--profile`,`--backend`,`--max-body-mb`]);function xs(e){for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`)return!1;if(n===`--help`||n===`-h`)return!0;bs.has(n)&&t++}return!1}function Ss(e){return`aem://${e.org}/${e.name}${e.path?`/${e.path}`:``}`}var Cs=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=vs(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=Se();if(!n){let n=await ws(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;if(n){let t=this.options.acquireLocalMountViaToolUI;if(!t)throw Error(`mount: tool UI not available in this runtime`);r=await t(n,e)}else r=v()?await gs():await _s();let i=Ie.fromHandle(r,{mountId:Ue()});return await this.options.fs.mount(e,i,{env:t}),{stdout:`Mounted '${i.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=Ue(),i=new We({mountId:r,ttlMs:3e4}),a=new Re({source:t.source,profile:n,cache:i,maxBodyBytes:t.maxBodyMb?t.maxBodyMb*1024*1024:void 0,mountId:r,signedFetch:this.signedFetchS3??ze(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??He(),i=ys(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 So(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=Ue(),c=new We({mountId:s,ttlMs:3e4}),l={source:a===`aem`?Ss(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 Ve(l):new Le(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(xs(e))return n===`umount`?this.umountHelp():this.help();let r=vs(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-BE5T1-53.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
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(xs(e))return this.help();let n=vs(e);if(n.positional.length===0)return{stdout:``,stderr:`mount info: path required
@@ -10,85 +10,85 @@ import{t as e}from"./logger-LESFN7Hj.js";import{r as t,t as n}from"./base64-BPBW
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 ws(e){let t=`pendingMount:term:${e}`,n;try{n=await Tt(t)}catch{return null}if(!n)return null;try{await Ct(n)}catch{return null}return Fe.fromHandle(n,{mountId:He()})}async function Ts(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 Es(e,t,a);else if(o.includes(`.`))await Ds(e,t,a);else if(i)await Os(e,t,a);else for(let n of o)await qt({fs:e.lfs,cache:e.cache,dir:t,filepath:n,force:a});return{stdout:``,stderr:``,exitCode:0}}async function Es(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 zt({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await qt({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}async function Ds(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,force:n})}async function Os(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 zt({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await qt({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}const ks={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:ks,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`}}},As=/^(--?)([^=]+)(=.*)?$/;function js(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 Ms(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 Ns(){let e=new Set([`c`,`C`,`git-dir`,`work-tree`]);for(let t of Object.values(I))for(let n of Ms(t))e.add(n);return e}function Ps(e,t,n){for(let r of e){if(!t.has(r))return r;if(n.has(r))return}}function Fs(e,t){let n=js(t),r=Ms(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=As.exec(t);if(!i)continue;let o=i[2];if(i[1]===`-`&&o.length>1&&!i[3]&&!n.has(o)){let e=Ps(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 Is(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function Ls(e,t){if(!t)return;let n=Fs(e,t);return n?Is(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 Rs(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 Vs(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 Vs(Rs(e.message)??e.message,t)}function Bs(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 Vs(e,t){if(!/\b401\b|Unauthorized/i.test(e))return e;if(t!==void 0){if(!Bs(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 Hs={refresh:!1},Us=new Set([`never`,`false`,`0`,`off`,`no`]),Ws=new Set([`always`,`true`,`1`,`on`,`yes`]),Gs=/^(--?)([^=]+)(=.*)?$/,Ks=Ns();function qs(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 Js(e){let t,n=e.indexOf(`--`),r=n===-1?e:e.slice(0,n);for(let e=0;e<r.length;e++){if(Xs(r,e))continue;let n=r[e];if(n===`--no-color`){t=`never`;continue}if(n===`--color`){t=`always`;continue}n.startsWith(`--color=`)&&(t=qs(n.slice(8))??t)}return t}function Ys(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(Xs(e,r,t)){n.push(i);continue}if(i.startsWith(`--color=`)){let e=Zs(i.slice(8));e&&n.push(e);continue}n.push(i)}return n}function Xs(e,t,n=-1){if(t===0||n!==-1&&t-1>=n)return!1;let r=e[t-1],i=Gs.exec(r);return!i||i[3]?!1:Ks.has(i[2])}function Zs(e){let t=e.toLowerCase();if(Us.has(t))return`--no-color`;if(Ws.has(t))return`--color`}function Qs(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(qs(e.colorUi));return i===void 0?!e.noColorEnv&&t:i}function $s(e,t,n){return e?`\x1b[${t}m${n}\x1b[0m`:n}async function ec(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 an({fs:e.lfs,dir:t,ref:a}),{stdout:`Deleted branch ${a}\n`,stderr:``,exitCode:0};if(a&&!r)return await Yt({fs:e.lfs,dir:t,ref:a}),{stdout:``,stderr:``,exitCode:0};let o=await kt({fs:e.lfs,dir:t}),s=await A({fs:e.lfs,dir:t}),c=``;for(let t of o)c+=t===s?`* ${$s(e.useColor,`32`,t)}\n`:` ${t}\n`;if(i)try{let n=await kt({fs:e.lfs,dir:t,remote:`origin`});for(let t of n)c+=` ${$s(e.useColor,`31`,`remotes/origin/${t}`)}\n`}catch{}return{stdout:c,stderr:``,exitCode:0}}async function tc(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
13
+ `,stderr:``,exitCode:0}}};async function ws(e){let t=`pendingMount:term:${e}`,n;try{n=await Et(t)}catch{return null}if(!n)return null;try{await wt(n)}catch{return null}return Ie.fromHandle(n,{mountId:Ue()})}async function Ts(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 Es(e,t,a);else if(o.includes(`.`))await Ds(e,t,a);else if(i)await Os(e,t,a);else for(let n of o)await Jt({fs:e.lfs,cache:e.cache,dir:t,filepath:n,force:a});return{stdout:``,stderr:``,exitCode:0}}async function Es(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 Bt({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await Jt({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}async function Ds(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 Jt({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n})}async function Os(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 Bt({fs:e.lfs,cache:e.cache,dir:t,filepath:i}):await Jt({fs:e.lfs,cache:e.cache,dir:t,filepath:i,force:n}))}const ks={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:ks,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`}}},As=/^(--?)([^=]+)(=.*)?$/;function js(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 Ms(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 Ns(){let e=new Set([`c`,`C`,`git-dir`,`work-tree`]);for(let t of Object.values(I))for(let n of Ms(t))e.add(n);return e}function Ps(e,t,n){for(let r of e){if(!t.has(r))return r;if(n.has(r))return}}function Fs(e,t){let n=js(t),r=Ms(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=As.exec(t);if(!i)continue;let o=i[2];if(i[1]===`-`&&o.length>1&&!i[3]&&!n.has(o)){let e=Ps(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 Is(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function Ls(e,t){if(!t)return;let n=Fs(e,t);return n?Is(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 Rs(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 Vs(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 Vs(Rs(e.message)??e.message,t)}function Bs(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 Vs(e,t){if(!/\b401\b|Unauthorized/i.test(e))return e;if(t!==void 0){if(!Bs(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 Hs={refresh:!1},Us=new Set([`never`,`false`,`0`,`off`,`no`]),Ws=new Set([`always`,`true`,`1`,`on`,`yes`]),Gs=/^(--?)([^=]+)(=.*)?$/,Ks=Ns();function qs(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 Js(e){let t,n=e.indexOf(`--`),r=n===-1?e:e.slice(0,n);for(let e=0;e<r.length;e++){if(Xs(r,e))continue;let n=r[e];if(n===`--no-color`){t=`never`;continue}if(n===`--color`){t=`always`;continue}n.startsWith(`--color=`)&&(t=qs(n.slice(8))??t)}return t}function Ys(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(Xs(e,r,t)){n.push(i);continue}if(i.startsWith(`--color=`)){let e=Zs(i.slice(8));e&&n.push(e);continue}n.push(i)}return n}function Xs(e,t,n=-1){if(t===0||n!==-1&&t-1>=n)return!1;let r=e[t-1],i=Gs.exec(r);return!i||i[3]?!1:Ks.has(i[2])}function Zs(e){let t=e.toLowerCase();if(Us.has(t))return`--no-color`;if(Ws.has(t))return`--color`}function Qs(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(qs(e.colorUi));return i===void 0?!e.noColorEnv&&t:i}function $s(e,t,n){return e?`\x1b[${t}m${n}\x1b[0m`:n}async function ec(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 on({fs:e.lfs,dir:t,ref:a}),{stdout:`Deleted branch ${a}\n`,stderr:``,exitCode:0};if(a&&!r)return await Xt({fs:e.lfs,dir:t,ref:a}),{stdout:``,stderr:``,exitCode:0};let o=await At({fs:e.lfs,dir:t}),s=await A({fs:e.lfs,dir:t}),c=``;for(let t of o)c+=t===s?`* ${$s(e.useColor,`32`,t)}\n`:` ${t}\n`;if(i)try{let n=await At({fs:e.lfs,dir:t,remote:`origin`});for(let t of n)c+=` ${$s(e.useColor,`31`,`remotes/origin/${t}`)}\n`}catch{}return{stdout:c,stderr:``,exitCode:0}}async function tc(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
16
  `,exitCode:1};let i=n.slice(0,a).filter(e=>!e.startsWith(`-`))[0];return oc(e,t,r,i)}let o=n.find(e=>!e.startsWith(`-`));if(!o)return{stdout:``,stderr:`error: you must specify path(s) or a branch to checkout
17
- `,exitCode:1};if(r){let r=n.indexOf(`-b`),a=n.slice(r+1).filter(e=>!e.startsWith(`-`)),s=a.length>1?a[1]:void 0;try{await Yt({fs:e.lfs,dir:t,ref:o,object:s,checkout:!1,force:i})}catch(e){return ac(e,o)}try{await nc(e,t,o,i)}catch(n){if(!i)try{await an({fs:e.lfs,dir:t,ref:o})}catch{}return ac(n,o)}return await e.fs.flush(),{stdout:`Switched to a new branch '${o}'\n`,stderr:``,exitCode:0}}try{await nc(e,t,o,i)}catch(e){return ac(e,o)}return await e.fs.flush(),{stdout:`Switched to branch '${o}'\n`,stderr:``,exitCode:0}}async function nc(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 rn({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 rc(e,t,a,s),!(!r&&i===o)&&await ic(e,t,o,a,s)}async function rc(e,t,n,r){for(let i of n)if(!r.has(i)){try{await zt({fs:e.lfs,cache:e.cache,dir:t,filepath:i})}catch{}try{await e.fs.rm(`${t}/${i}`)}catch{}}}async function ic(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 At({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 _n({fs:e.lfs,cache:e.cache,dir:t,filepath:a,ref:n})}}function ac(e,t){if(e instanceof Error&&e.name===`MultipleGitError`)return{stdout:``,stderr:`error: unable to checkout '${t}':\n${zs(e).split(`
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 Xt({fs:e.lfs,dir:t,ref:o,object:s,checkout:!1,force:i})}catch(e){return ac(e,o)}try{await nc(e,t,o,i)}catch(n){if(!i)try{await on({fs:e.lfs,dir:t,ref:o})}catch{}return ac(n,o)}return await e.fs.flush(),{stdout:`Switched to a new branch '${o}'\n`,stderr:``,exitCode:0}}try{await nc(e,t,o,i)}catch(e){return ac(e,o)}return await e.fs.flush(),{stdout:`Switched to branch '${o}'\n`,stderr:``,exitCode:0}}async function nc(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 an({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 rc(e,t,a,s),!(!r&&i===o)&&await ic(e,t,o,a,s)}async function rc(e,t,n,r){for(let i of n)if(!r.has(i)){try{await Bt({fs:e.lfs,cache:e.cache,dir:t,filepath:i})}catch{}try{await e.fs.rm(`${t}/${i}`)}catch{}}}async function ic(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 jt({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 vn({fs:e.lfs,cache:e.cache,dir:t,filepath:a,ref:n})}}function ac(e,t){if(e instanceof Error&&e.name===`MultipleGitError`)return{stdout:``,stderr:`error: unable to checkout '${t}':\n${zs(e).split(`
18
18
  `).map(e=>` ${e}`).join(`
19
- `)}\n`,exitCode:1};throw e}async function oc(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 At({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 qt({fs:e.lfs,cache:e.cache,dir:t,filepath:r})}return await e.fs.flush(),{stdout:``,stderr:``,exitCode:0}}function sc(e={}){let{favor:t,diff3:n,labels:r}=e;return({contents:e,branches:i})=>{let[a,o,s]=e,c=ke(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 cc(e,t,n){let r=lc(n),i=await fc(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 mc(e,t,i,1);else i=await mc(e,t,i,n.count);return i}function lc(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 uc(e,t,n){try{return await cc(e,t,n)}catch{return}}const dc=/^[0-9a-f]{4,40}$/i;async function fc(e,t,n){if(n===`FETCH_HEAD`)return await pc(e,t);try{return await E({fs:e.lfs,dir:t,ref:n})}catch(e){if(!dc.test(n))throw e}return await pn({fs:e.lfs,cache:e.cache,dir:t,oid:n})}async function pc(e,t){let n=await hn({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(`
19
+ `)}\n`,exitCode:1};throw e}async function oc(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 jt({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 Jt({fs:e.lfs,cache:e.cache,dir:t,filepath:r})}return await e.fs.flush(),{stdout:``,stderr:``,exitCode:0}}function sc(e={}){let{favor:t,diff3:n,labels:r}=e;return({contents:e,branches:i})=>{let[a,o,s]=e,c=Ae(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 cc(e,t,n){let r=lc(n),i=await fc(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 mc(e,t,i,1);else i=await mc(e,t,i,n.count);return i}function lc(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 uc(e,t,n){try{return await cc(e,t,n)}catch{return}}const dc=/^[0-9a-f]{4,40}$/i;async function fc(e,t,n){if(n===`FETCH_HEAD`)return await pc(e,t);try{return await E({fs:e.lfs,dir:t,ref:n})}catch(e){if(!dc.test(n))throw e}return await mn({fs:e.lfs,cache:e.cache,dir:t,oid:n})}async function pc(e,t){let n=await gn({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
20
  `).find(e=>e.trim().length>0)?.split(/[\t ]/)[0];if(!i||!dc.test(i)||i.length!==40)throw Error(`Could not find FETCH_HEAD.`);return i.toLowerCase()}async function mc(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 hc(e){return e.replace(/^\.\//,``).replace(/\/+$/,``)}function gc(e,t){return t.length===0||t.some(t=>{let n=hc(t);return n===``||e===n||e.startsWith(`${n}/`)})}function _c(e,t){return t.length===0||t.some(t=>{let n=hc(t);return n===``||e===n||e.startsWith(`${n}/`)||n.startsWith(`${e}/`)})}async function vc(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 uc(e,t,s);if(c===void 0)return{stdout:``,stderr:`fatal: bad revision '${s}'\n`,exitCode:128};try{let n=await fn({fs:e.lfs,cache:e.cache,dir:t,oid:c,abortOnConflict:!1,noUpdateBranch:a,committer:await e.resolveAuthor(t),mergeDriver:sc()});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 Zt({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(`
21
+ `,exitCode:128};let c=await uc(e,t,s);if(c===void 0)return{stdout:``,stderr:`fatal: bad revision '${s}'\n`,exitCode:128};try{let n=await pn({fs:e.lfs,cache:e.cache,dir:t,oid:c,abortOnConflict:!1,noUpdateBranch:a,committer:await e.resolveAuthor(t),mergeDriver:sc()});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 Qt({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
22
  `)[0];return{stdout:`[${s??`HEAD`} ${r.slice(0,7)}] ${l}\n`,stderr:``,exitCode:0}}catch(e){return yc(e,c)}}function yc(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
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 bc(e,t,n){let r=M(n,ks),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,...Hs}),f=xc(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,...Hs})).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=>Cc(e,t))));let h=new Set,g=new Set;for(let e of m){let t=Sc(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 xc(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 Sc(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 Cc(e,t){let n=t.endsWith(`/`)?t.slice(0,-1):t;return e===n||e.startsWith(`${n}/`)}let wc=null;function Tc(){return wc||=h(),wc}async function*Ec(e,t,n){t&&t({phase:`Receiving`,loaded:e.length,total:n??e.length}),yield e}function Dc(){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 Tc()(t,{method:n,headers:r,body:o}),c=parseInt(s.headers[`content-length`]??`0`,10)||void 0,l=Ec(s.body,a,c);return{url:s.url,method:n,headers:s.headers,body:l,statusCode:s.status,statusMessage:s.statusText}}}}const Oc=Dc();async function kc(e,t,n){let r=Ls(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=Ac(c,t);if(h)return jc(e,h,u,c,l,m,f,s);try{await Xt({fs:e.lfs,cache:e.cache,http:Oc,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 Nc(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 Ac(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 jc(e,t,n,r,i,a,o,s=!1){if(n===t||n.startsWith(`${t}/`))return Nc(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 Nc(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 Mc(e,`${t}/.git`,`${n}/.git`),c&&await rn({fs:e.lfs,cache:e.cache,dir:n,ref:c,force:!0}),await sn({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 Nc(e,n,r)}}async function Mc(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 Mc(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 Nc(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 Pc=[`MERGE_HEAD`,`MERGE_MSG`,`MERGE_MODE`,`AUTO_MERGE`];async function Fc(e,t){return`${await hn({fs:e.lfs,filepath:t})}/.git`}async function Ic(e,t){try{return(await e.fs.readTextFile(t)).trim()}catch{return}}async function Lc(e,t){try{await e.fs.rm(t)}catch{}}async function Rc(e,t){try{return await Ic(e,`${await Fc(e,t)}/MERGE_HEAD`)}catch{return}}async function zc(e,t){return await Rc(e,t)!==void 0}async function Bc(e,t){try{return await Ic(e,`${await Fc(e,t)}/MERGE_MSG`)}catch{return}}async function Vc(e,t,n){let r=await Fc(e,t);await e.fs.writeFile(`${r}/ORIG_HEAD`,`${n}\n`)}async function Hc(e,t,n,r){let i=await Fc(e,t);await e.fs.writeFile(`${i}/MERGE_HEAD`,`${n}\n`),await e.fs.writeFile(`${i}/MERGE_MSG`,r.endsWith(`
25
+ `,exitCode:128};let d=await O({fs:e.lfs,cache:e.cache,dir:t,...Hs}),f=xc(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,...Hs})).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=>Cc(e,t))));let h=new Set,g=new Set;for(let e of m){let t=Sc(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 xc(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 Sc(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 Cc(e,t){let n=t.endsWith(`/`)?t.slice(0,-1):t;return e===n||e.startsWith(`${n}/`)}let wc=null;function Tc(){return wc||=p(),wc}async function*Ec(e,t,n){t&&t({phase:`Receiving`,loaded:e.length,total:n??e.length}),yield e}function Dc(){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 Tc()(t,{method:n,headers:r,body:o}),c=parseInt(s.headers[`content-length`]??`0`,10)||void 0,l=Ec(s.body,a,c);return{url:s.url,method:n,headers:s.headers,body:l,statusCode:s.status,statusMessage:s.statusText}}}}const Oc=Dc();async function kc(e,t,n){let r=Ls(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=Ac(c,t);if(h)return jc(e,h,u,c,l,m,f,s);try{await Zt({fs:e.lfs,cache:e.cache,http:Oc,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 Nc(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 Ac(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 jc(e,t,n,r,i,a,o,s=!1){if(n===t||n.startsWith(`${t}/`))return Nc(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 Nc(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 Mc(e,`${t}/.git`,`${n}/.git`),c&&await an({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 Nc(e,n,r)}}async function Mc(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 Mc(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 Nc(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 Pc=[`MERGE_HEAD`,`MERGE_MSG`,`MERGE_MODE`,`AUTO_MERGE`];async function Fc(e,t){return`${await gn({fs:e.lfs,filepath:t})}/.git`}async function Ic(e,t){try{return(await e.fs.readTextFile(t)).trim()}catch{return}}async function Lc(e,t){try{await e.fs.rm(t)}catch{}}async function Rc(e,t){try{return await Ic(e,`${await Fc(e,t)}/MERGE_HEAD`)}catch{return}}async function zc(e,t){return await Rc(e,t)!==void 0}async function Bc(e,t){try{return await Ic(e,`${await Fc(e,t)}/MERGE_MSG`)}catch{return}}async function Vc(e,t,n){let r=await Fc(e,t);await e.fs.writeFile(`${r}/ORIG_HEAD`,`${n}\n`)}async function Hc(e,t,n,r){let i=await Fc(e,t);await e.fs.writeFile(`${i}/MERGE_HEAD`,`${n}\n`),await e.fs.writeFile(`${i}/MERGE_MSG`,r.endsWith(`
27
27
  `)?r:`${r}\n`)}async function Uc(e,t){let n;try{n=await Fc(e,t)}catch{return}await Promise.all(Pc.map(t=>Lc(e,`${n}/${t}`)))}async function Wc(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 Gc=new Set([`message`,`author`,`date`,`file`,`cleanup`,`amend`,`all`,`allow-empty`,`m`,`a`,`F`]);async function Kc(e,t,n){let r=il(n),i=M(r,I.commit).flags,a=await Rc(e,t),o=await nl(e,t,i);if(typeof o!=`string`){if(a){let n=await Bc(e,t);if(n)return await qc(e,t,i,n,a)}return o}return await qc(e,t,i,o,a)}async function qc(e,t,n,r,i){let a=n.amend===!0,o=n.all===!0,s=n[`allow-empty`]===!0;if(o&&await rl(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 Zt({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 Uc(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 Jc(e,t){let n=e[t];if(n!==void 0&&n!==!0&&n!==!1)return L(e,t)}function Yc(e){return Object.keys(e).find(e=>!Gc.has(e))}function Xc(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function Zc(e){return{stdout:``,stderr:`error: switch \`${e}\` requires a value\n`,exitCode:1}}function Qc(e){let t=Yc(e);return t?Xc(t):`message`in e||`m`in e?Zc(`m`):`file`in e||`F`in e?Zc(`F`):{stdout:``,stderr:"error: option `-m' or `-F' is required\n",exitCode:1}}function $c(){return{stdout:``,stderr:`Aborting commit due to empty commit message.
29
- `,exitCode:1}}function el(e){return{stdout:``,stderr:`error: could not read log file '${e}': No such file or directory\n`,exitCode:128}}async function tl(e,t,n){if(n===`-`)return e.stdin;let r=n.startsWith(`/`)?n:`${t}/${n}`;try{return await e.fs.readTextFile(r)}catch{return el(n)}}async function nl(e,t,n){let r=Jc(n,`message`);if(r!==void 0)return r;let i=Jc(n,`file`);if(i!==void 0){let n=await tl(e,t,i);return typeof n==`string`&&n===``?$c():n}return Qc(n)}async function rl(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 zt({fs:e.lfs,cache:e.cache,dir:t,filepath:r}):await qt({fs:e.lfs,cache:e.cache,dir:t,filepath:r}))}function il(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 al(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 ll(e,t,a);if(i)return ol(e,t,o,a);if(!o)return{stdout:``,stderr:`usage: git config [--global] [--list] [--unset] <key> [<value>]
28
+ `,exitCode:1};let c=await Qt({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 Uc(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 Jc(e,t){let n=e[t];if(n!==void 0&&n!==!0&&n!==!1)return L(e,t)}function Yc(e){return Object.keys(e).find(e=>!Gc.has(e))}function Xc(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function Zc(e){return{stdout:``,stderr:`error: switch \`${e}\` requires a value\n`,exitCode:1}}function Qc(e){let t=Yc(e);return t?Xc(t):`message`in e||`m`in e?Zc(`m`):`file`in e||`F`in e?Zc(`F`):{stdout:``,stderr:"error: option `-m' or `-F' is required\n",exitCode:1}}function $c(){return{stdout:``,stderr:`Aborting commit due to empty commit message.
29
+ `,exitCode:1}}function el(e){return{stdout:``,stderr:`error: could not read log file '${e}': No such file or directory\n`,exitCode:128}}async function tl(e,t,n){if(n===`-`)return e.stdin;let r=n.startsWith(`/`)?n:`${t}/${n}`;try{return await e.fs.readTextFile(r)}catch{return el(n)}}async function nl(e,t,n){let r=Jc(n,`message`);if(r!==void 0)return r;let i=Jc(n,`file`);if(i!==void 0){let n=await tl(e,t,i);return typeof n==`string`&&n===``?$c():n}return Qc(n)}async function rl(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 Bt({fs:e.lfs,cache:e.cache,dir:t,filepath:r}):await Jt({fs:e.lfs,cache:e.cache,dir:t,filepath:r}))}function il(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 al(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 ll(e,t,a);if(i)return ol(e,t,o,a);if(!o)return{stdout:``,stderr:`usage: git config [--global] [--list] [--unset] <key> [<value>]
30
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?cl(e,t,o,a):sl(e,t,o,c,a)}async function ol(e,t,n,r){if(!n)return{stdout:``,stderr:`error: key required for --unset
31
- `,exitCode:1};if(n===`credential.token`||n===`github.token`)return await e.setGithubToken(``),{stdout:``,stderr:``,exitCode:0};if(r){let t=await e.getGlobalFs();try{let e=await t.readTextFile(Bn),r=Rn(e,n);await t.writeFile(Bn,r)}catch{}}else try{let r=`${t}/.git/config`,i=await e.fs.readTextFile(r),a=Rn(i,n);await e.fs.writeFile(r,a)}catch{}return{stdout:``,stderr:``,exitCode:0}}async function sl(e,t,n,r,i){return n===`credential.token`||n===`github.token`?(await e.setGithubToken(r),{stdout:``,stderr:``,exitCode:0}):(i?await Ln(await e.getGlobalFs(),n,r):await Ut({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 cl(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 zn(await e.getGlobalFs(),n):(i=await Bt({fs:e.lfs,dir:t,path:n}),i||=await zn(await e.getGlobalFs(),n)),{stdout:i?`${i}\n`:``,stderr:``,exitCode:+!i}}async function ll(e,t,n){let r=``;if(!n)try{let n=`${t}/.git/config`,i=await e.fs.readTextFile(n);r+=ul(i)}catch{}try{let t=await(await e.getGlobalFs()).readTextFile(Bn);r+=ul(t)}catch{}return{stdout:r,stderr:``,exitCode:0}}function ul(e){let t=``,n=``,r=``;for(let i of e.split(`
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(Vn),r=zn(e,n);await t.writeFile(Vn,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 sl(e,t,n,r,i){return n===`credential.token`||n===`github.token`?(await e.setGithubToken(r),{stdout:``,stderr:``,exitCode:0}):(i?await Rn(await e.getGlobalFs(),n,r):await Wt({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 cl(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 Bn(await e.getGlobalFs(),n):(i=await Vt({fs:e.lfs,dir:t,path:n}),i||=await Bn(await e.getGlobalFs(),n)),{stdout:i?`${i}\n`:``,stderr:``,exitCode:+!i}}async function ll(e,t,n){let r=``;if(!n)try{let n=`${t}/.git/config`,i=await e.fs.readTextFile(n);r+=ul(i)}catch{}try{let t=await(await e.getGlobalFs()).readTextFile(Vn);r+=ul(t)}catch{}return{stdout:r,stderr:``,exitCode:0}}function ul(e){let t=``,n=``,r=``;for(let i of e.split(`
32
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 dl=`/dev/null`,fl={bytes:new Uint8Array,text:``,binary:!1};async function pl(e,t,n,r){if(n.length!==2)return{stdout:``,stderr:`usage: git diff --no-index [<options>] <path> <path>
33
33
  `,exitCode:129};let[i,a]=await Promise.all([yl(e,t,n[0]),yl(e,t,n[1])]);[i,a]=await bl(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 wl(e,i,a):[await Sl(e,i,a)]).filter(e=>!ml(e.oldBlob.bytes,e.newBlob.bytes));return s.length===0?{stdout:``,stderr:``,exitCode:0}:{stdout:hl(s,r,e.useColor),stderr:``,exitCode:1}}function ml(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 hl(e,t,n){if(t.nameOnly)return`${e.map(e=>e.absent===`new`?dl:e.newName).join(`
34
- `)}\n`;if(t.stat)return De(e.map(_l),{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 ${gl(i,`old`)} and ${gl(i,`new`)} differ\n`;continue}r+=Oe({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 gl(e,t){return e.absent===t?dl:t===`old`?`a/${e.oldName}`:`b/${e.newName}`}function _l(e){return{name:vl(e.absent===`old`?dl:e.oldName,e.absent===`new`?dl: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 vl(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 yl(e,t,n){if(n===dl)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 bl(e,t,n,r){return n.kind===`dir`&&(r.kind===`file`||r.kind===`null`)?[await yl(e,t,`${n.given}/${xl(r.given)}`),r]:r.kind===`dir`&&(n.kind===`file`||n.kind===`null`)?[n,await yl(e,t,`${r.given}/${xl(n.given)}`)]:[n,r]}function xl(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}async function Sl(e,t,n){let[r,i]=await Promise.all([Cl(e,t),Cl(e,n)]),a=t.kind===`null`?`old`:n.kind===`null`?`new`:void 0,o=Dl(t.kind===`null`?n.given:t.given);return{oldName:a?o:Dl(t.given),newName:a?o:Dl(n.given),absent:a,oldBlob:r,newBlob:i}}function Cl(e,t){return t.kind===`file`?El(e,t.abs):Promise.resolve(fl)}async function wl(e,t,n){let[r,i]=await Promise.all([Tl(e,t.abs),Tl(e,n.abs)]),a=[...new Set([...r,...i])].sort(),o=[];for(let s of a){let a=Dl(`${t.given}/${s}`),c=Dl(`${n.given}/${s}`);i.has(s)?r.has(s)?o.push({oldName:a,newName:c,oldBlob:await El(e,`${t.abs}/${s}`),newBlob:await El(e,`${n.abs}/${s}`)}):o.push({oldName:c,newName:c,absent:`old`,oldBlob:fl,newBlob:await El(e,`${n.abs}/${s}`)}):o.push({oldName:a,newName:a,absent:`new`,oldBlob:await El(e,`${t.abs}/${s}`),newBlob:fl})}return o}async function Tl(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 El(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 Dl(e){return e.replace(/^\/+/,``)}function Ol(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 kl(e,t,n){let r=Ul(n),i=Ls(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:Wl(a.unified)};if(a[`no-index`]===!0||a.index===!1)return pl(e,t,o,u);if(o.length>=2)return Fl(e,t,o[0],o[1],u);if(o.length===1){let n=Gl(o[0]);if(n)return Il(e,t,n[0],n[1],u);let r=Kl(o[0]);return r?Fl(e,t,r[0],r[1],u):c?jl(e,t,o[0],u):Rl(e,t,o[0],u)}return Hl(e,c?await Al(e,t,u.pathspecs):await Ml(e,t,u.pathspecs),u)}async function Al(e,t,n=[],r=`HEAD`){let i=[];return await jt({fs:e.lfs,cache:e.cache,dir:t,trees:[on({ref:r}),dn()],iterate:Ol(e=>_c(e,n)),map:async(r,[a,o])=>{if(r===`.`||r===`.git`||r.startsWith(`.git/`)||!gc(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 Pl(e,t,l),f=await Pl(e,t,u);i.push({filepath:r,oldContent:d,newContent:f,oldPresent:!!l,newPresent:!!u})}}),i}async function jl(e,t,n,r){let i;try{i=await cc(e,t,n)}catch{return Jl(n)}return Hl(e,await Al(e,t,r.pathspecs,i),r)}async function Ml(e,t,n=[]){let r=[];return await jt({fs:e.lfs,cache:e.cache,dir:t,trees:[dn(),ln(Hs)],iterate:Ol((e,[t])=>t===!0&&_c(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`||!gc(i,n))return null;let c=await a.oid(),l=await Nl(o);if(l&&c&&(await Ot({object:l})).oid===c)return null;let u=await Pl(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 Nl(e){if(e)try{return await e.type()===`blob`?await e.content()??void 0:void 0}catch{return}}async function Pl(e,t,n){if(!n)return``;try{let{blob:r}=await At({fs:e.lfs,dir:t,oid:n,cache:e.cache});return new TextDecoder().decode(r)}catch{return``}}async function Fl(e,t,n,r,i){try{return await Ll(e,t,await cc(e,t,n),await cc(e,t,r),i)}catch{return Jl(await ql(e,t,[n,r])??n)}}async function Il(e,t,n,r,i){let a=n||`HEAD`,o=r||`HEAD`;try{let n=await cc(e,t,a),r=await cc(e,t,o),s=await Jt({fs:e.lfs,cache:e.cache,dir:t,oids:[n,r]});return s[0]?await Ll(e,t,s[0],r,i):{stdout:``,stderr:`fatal: '${a}...${o}' has no merge base\n`,exitCode:128}}catch{return Jl(await ql(e,t,[a,o])??a)}}async function Ll(e,t,n,r,i){let a=[];return await jt({fs:e.lfs,cache:e.cache,dir:t,trees:[on({ref:n}),on({ref:r})],iterate:Ol(e=>_c(e,i.pathspecs??[])),map:async(e,[t,n])=>{if(await Bl(t,n))return null;let r=await Vl(e,t,n,i.pathspecs??[]);r&&a.push(r)}}),Hl(e,a,i)}async function Rl(e,t,n,r){let i;try{i=await cc(e,t,n)}catch{return Jl(n)}let a=new Set(await D({fs:e.lfs,dir:t,cache:e.cache})),o=zl(a),s=[];return await jt({fs:e.lfs,cache:e.cache,dir:t,trees:[on({ref:i}),ln(Hs)],iterate:Ol((e,[t])=>(t===!0||a.has(e)||o.has(e))&&_c(e,r.pathspecs??[])),map:async(e,[t,n])=>{if(!t&&!a.has(e)&&!o.has(e))return null;let i=await Vl(e,t,n,r.pathspecs??[]);i&&s.push(i)}}),Hl(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 Bl(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 Vl(e,t,n,r){if(e===`.`||!gc(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 Hl(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(`
34
+ `)}\n`;if(t.stat)return Oe(e.map(_l),{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 ${gl(i,`old`)} and ${gl(i,`new`)} differ\n`;continue}r+=ke({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 gl(e,t){return e.absent===t?dl:t===`old`?`a/${e.oldName}`:`b/${e.newName}`}function _l(e){return{name:vl(e.absent===`old`?dl:e.oldName,e.absent===`new`?dl: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 vl(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 yl(e,t,n){if(n===dl)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 bl(e,t,n,r){return n.kind===`dir`&&(r.kind===`file`||r.kind===`null`)?[await yl(e,t,`${n.given}/${xl(r.given)}`),r]:r.kind===`dir`&&(n.kind===`file`||n.kind===`null`)?[n,await yl(e,t,`${r.given}/${xl(n.given)}`)]:[n,r]}function xl(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}async function Sl(e,t,n){let[r,i]=await Promise.all([Cl(e,t),Cl(e,n)]),a=t.kind===`null`?`old`:n.kind===`null`?`new`:void 0,o=Dl(t.kind===`null`?n.given:t.given);return{oldName:a?o:Dl(t.given),newName:a?o:Dl(n.given),absent:a,oldBlob:r,newBlob:i}}function Cl(e,t){return t.kind===`file`?El(e,t.abs):Promise.resolve(fl)}async function wl(e,t,n){let[r,i]=await Promise.all([Tl(e,t.abs),Tl(e,n.abs)]),a=[...new Set([...r,...i])].sort(),o=[];for(let s of a){let a=Dl(`${t.given}/${s}`),c=Dl(`${n.given}/${s}`);i.has(s)?r.has(s)?o.push({oldName:a,newName:c,oldBlob:await El(e,`${t.abs}/${s}`),newBlob:await El(e,`${n.abs}/${s}`)}):o.push({oldName:c,newName:c,absent:`old`,oldBlob:fl,newBlob:await El(e,`${n.abs}/${s}`)}):o.push({oldName:a,newName:a,absent:`new`,oldBlob:await El(e,`${t.abs}/${s}`),newBlob:fl})}return o}async function Tl(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 El(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 Dl(e){return e.replace(/^\/+/,``)}function Ol(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 kl(e,t,n){let r=Ul(n),i=Ls(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:Wl(a.unified)};if(a[`no-index`]===!0||a.index===!1)return pl(e,t,o,u);if(o.length>=2)return Fl(e,t,o[0],o[1],u);if(o.length===1){let n=Gl(o[0]);if(n)return Il(e,t,n[0],n[1],u);let r=Kl(o[0]);return r?Fl(e,t,r[0],r[1],u):c?jl(e,t,o[0],u):Rl(e,t,o[0],u)}return Hl(e,c?await Al(e,t,u.pathspecs):await Ml(e,t,u.pathspecs),u)}async function Al(e,t,n=[],r=`HEAD`){let i=[];return await Mt({fs:e.lfs,cache:e.cache,dir:t,trees:[sn({ref:r}),fn()],iterate:Ol(e=>_c(e,n)),map:async(r,[a,o])=>{if(r===`.`||r===`.git`||r.startsWith(`.git/`)||!gc(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 Pl(e,t,l),f=await Pl(e,t,u);i.push({filepath:r,oldContent:d,newContent:f,oldPresent:!!l,newPresent:!!u})}}),i}async function jl(e,t,n,r){let i;try{i=await cc(e,t,n)}catch{return Jl(n)}return Hl(e,await Al(e,t,r.pathspecs,i),r)}async function Ml(e,t,n=[]){let r=[];return await Mt({fs:e.lfs,cache:e.cache,dir:t,trees:[fn(),un(Hs)],iterate:Ol((e,[t])=>t===!0&&_c(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`||!gc(i,n))return null;let c=await a.oid(),l=await Nl(o);if(l&&c&&(await kt({object:l})).oid===c)return null;let u=await Pl(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 Nl(e){if(e)try{return await e.type()===`blob`?await e.content()??void 0:void 0}catch{return}}async function Pl(e,t,n){if(!n)return``;try{let{blob:r}=await jt({fs:e.lfs,dir:t,oid:n,cache:e.cache});return new TextDecoder().decode(r)}catch{return``}}async function Fl(e,t,n,r,i){try{return await Ll(e,t,await cc(e,t,n),await cc(e,t,r),i)}catch{return Jl(await ql(e,t,[n,r])??n)}}async function Il(e,t,n,r,i){let a=n||`HEAD`,o=r||`HEAD`;try{let n=await cc(e,t,a),r=await cc(e,t,o),s=await Yt({fs:e.lfs,cache:e.cache,dir:t,oids:[n,r]});return s[0]?await Ll(e,t,s[0],r,i):{stdout:``,stderr:`fatal: '${a}...${o}' has no merge base\n`,exitCode:128}}catch{return Jl(await ql(e,t,[a,o])??a)}}async function Ll(e,t,n,r,i){let a=[];return await Mt({fs:e.lfs,cache:e.cache,dir:t,trees:[sn({ref:n}),sn({ref:r})],iterate:Ol(e=>_c(e,i.pathspecs??[])),map:async(e,[t,n])=>{if(await Bl(t,n))return null;let r=await Vl(e,t,n,i.pathspecs??[]);r&&a.push(r)}}),Hl(e,a,i)}async function Rl(e,t,n,r){let i;try{i=await cc(e,t,n)}catch{return Jl(n)}let a=new Set(await D({fs:e.lfs,dir:t,cache:e.cache})),o=zl(a),s=[];return await Mt({fs:e.lfs,cache:e.cache,dir:t,trees:[sn({ref:i}),un(Hs)],iterate:Ol((e,[t])=>(t===!0||a.has(e)||o.has(e))&&_c(e,r.pathspecs??[])),map:async(e,[t,n])=>{if(!t&&!a.has(e)&&!o.has(e))return null;let i=await Vl(e,t,n,r.pathspecs??[]);i&&s.push(i)}}),Hl(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 Bl(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 Vl(e,t,n,r){if(e===`.`||!gc(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 Hl(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?Yl(t,e.useColor):{stdout:t.map(t=>Oe({oldContent:t.oldContent,newContent:t.newContent,oldName:t.filepath,newName:t.filepath,context:n.context,color:e.useColor})).join(``),stderr:``,exitCode:0}}function Ul(e){let t=e.indexOf(`--`);return e.map((e,n)=>(t===-1||n<t)&&/^-U\d+$/.test(e)?`--unified=${e.slice(2)}`:e)}function Wl(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 Gl(e){let t=e.indexOf(`...`);return t===-1?null:[e.slice(0,t),e.slice(t+3)]}function Kl(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 ql(e,t,n){for(let r of n)try{await cc(e,t,r)}catch{return r}return null}function Jl(e){return{stdout:``,stderr:`fatal: ambiguous argument '${e}'\n`,exitCode:128}}function Yl(e,t=!1){return{stdout:De(e.map(e=>({name:e.filepath,oldContent:e.oldContent,newContent:e.newContent})),{color:t}),stderr:``,exitCode:0}}async function Xl(e,t,n,r){let i=[];if(await jt({fs:e.lfs,cache:e.cache,dir:t,trees:[on({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 Yl(i.map(e=>({filepath:e.filepath,oldContent:``,newContent:e.content})),e.useColor).stdout;let a=``;for(let t of i)a+=Oe({oldContent:``,newContent:t.content,oldName:t.filepath,newName:t.filepath,color:e.useColor});return a}async function Zl(e,t,n){let r=Ls(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 gn({fs:e.lfs,cache:e.cache,http:Oc,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 Ql(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 Ql(e,t,n,r){let i=await hn({fs:e.lfs,filepath:t}),a=r??``;await e.fs.writeFile(`${i}/.git/FETCH_HEAD`,`${n}\t\t${a}\n`)}async function $l(e,t,n){let r=M(n,I.init).flags,i=L(r,`initial-branch`)??e.getConfigOverrides()?.get(`init.defaultbranch`)??`main`;return await mn({fs:e.lfs,dir:t,defaultBranch:i}),{stdout:`Initialized empty Git repository in ${t}/.git/\n`,stderr:``,exitCode:0}}function eu(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 tu=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(!eu(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&&eu(this.heap[t],this.heap[n])&&(n=t),t+1<this.heap.length&&eu(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 nu(e,t,n){try{return await E({fs:e.lfs,dir:t,ref:n})}catch{return}}async function ru(e,t,n,r){try{return await k({fs:e.lfs,dir:t,oid:n,cache:r})}catch{return}}async function iu(e,t,n,r,i){let a=await kt({fs:e.lfs,dir:t});for(let[o,s]of a.entries()){let a=await nu(e,t,s);if(a===void 0||r.has(a))continue;r.add(a);let c=await ru(e,t,a,i);c&&n.push(c,o)}}async function*au(e,t,n){let r=new Set,i=new tu;for(await iu(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 ru(e,t,o,n.cache);s&&i.push(s,a.tipRank)}}}async function ou(e,t,n){let r=[];if(n.limit<=0)return r;for await(let i of au(e,t,{cache:n.cache}))if(r.push(i),r.length>=n.limit)break;return r}async function su(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 cu(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 _u(e,t,g,{format:f,oneline:c,showStat:l}),stderr:``,exitCode:0}}async function cu(e,t,n){let r=n.revision?xu(n.revision):null,i=r?.[1]??n.revision,a=Su(e.cache),o=n.maxCount??10;if(n.pathspecs.length>0&&!n.all&&!r&&!n.followFile)return await mu(e,t,{ref:i,pathspecs:n.pathspecs,limit:o,caches:a});if(n.all&&n.pathspecs.length>0)return await du(e,t,{pathspecs:n.pathspecs,limit:o,caches:a,exclude:r?await uu(e,t,r[0],a):void 0});let s=n.all?await ou(e,t,{limit:n.maxCount??lu,cache:a.git}):await tn({fs:e.lfs,dir:t,cache:a.git,...i?{ref:i}:{},...!r&&n.pathspecs.length===0?{depth:n.maxCount??10}:{},...n.followFile?{filepath:n.followFile,follow:!0}:{}});if(r){let n=await uu(e,t,r[0],a);s=s.filter(e=>!n.has(e.oid))}return n.pathspecs.length>0?await gu(e,t,s,n.pathspecs,o,a):r?s.slice(0,o):s}const lu=50;async function uu(e,t,n,r){let i=await tn({fs:e.lfs,dir:t,cache:r.git,ref:n});return new Set(i.map(e=>e.oid))}async function du(e,t,n){let r=[],i=[],a=async()=>{if(i.length>0){let a=n.limit-r.length;r.push(...await gu(e,t,i,n.pathspecs,a,n.caches)),i=[]}return r.length>=n.limit};for await(let o of au(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 fu(e){let t=e.replace(/^\.\//,``).replace(/\/+$/,``);return t===`.`?``:t}function pu(e){let t=[...new Set(e.map(fu))];return t.some(e=>e===``)?null:t}async function mu(e,t,n){let r=n.ref?{ref:n.ref}:{},i=pu(n.pathspecs);return i===null?await tn({fs:e.lfs,dir:t,cache:n.caches.git,...r,depth:n.limit}):i.length===1?(await tn({fs:e.lfs,dir:t,cache:n.caches.git,...r,filepath:i[0],depth:n.limit,force:!0})).slice(0,n.limit):await hu(e,t,{refArg:r,specs:i,limit:n.limit,caches:n.caches})}async function hu(e,t,n){let r=[],i=0,a=Math.max(n.limit*4,32);for(;;){let o=await tn({fs:e.lfs,dir:t,cache:n.caches.git,...n.refArg,depth:a});for(let e of o)n.caches.commitTrees.set(e.oid,e.commit.tree);for(let a of o.slice(i))if(await Eu(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 gu(e,t,n,r,i,a){let o=pu(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 Eu(e,t,r,o,a)&&s.push(r),s.length>=i)break;return s}async function _u(e,t,n,r){let i=``;for(let a of n){let{commit:n,oid:o}=a;r.format?i+=`${vu(o,n,r.format)}\n`:r.oneline?i+=`${$s(e.useColor,`33`,o.slice(0,7))} ${n.message.split(`
36
+ `)}\n`,stderr:``,exitCode:0}:n.stat?Yl(t,e.useColor):{stdout:t.map(t=>ke({oldContent:t.oldContent,newContent:t.newContent,oldName:t.filepath,newName:t.filepath,context:n.context,color:e.useColor})).join(``),stderr:``,exitCode:0}}function Ul(e){let t=e.indexOf(`--`);return e.map((e,n)=>(t===-1||n<t)&&/^-U\d+$/.test(e)?`--unified=${e.slice(2)}`:e)}function Wl(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 Gl(e){let t=e.indexOf(`...`);return t===-1?null:[e.slice(0,t),e.slice(t+3)]}function Kl(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 ql(e,t,n){for(let r of n)try{await cc(e,t,r)}catch{return r}return null}function Jl(e){return{stdout:``,stderr:`fatal: ambiguous argument '${e}'\n`,exitCode:128}}function Yl(e,t=!1){return{stdout:Oe(e.map(e=>({name:e.filepath,oldContent:e.oldContent,newContent:e.newContent})),{color:t}),stderr:``,exitCode:0}}async function Xl(e,t,n,r){let i=[];if(await Mt({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 Yl(i.map(e=>({filepath:e.filepath,oldContent:``,newContent:e.content})),e.useColor).stdout;let a=``;for(let t of i)a+=ke({oldContent:``,newContent:t.content,oldName:t.filepath,newName:t.filepath,color:e.useColor});return a}async function Zl(e,t,n){let r=Ls(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 _n({fs:e.lfs,cache:e.cache,http:Oc,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 Ql(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 Ql(e,t,n,r){let i=await gn({fs:e.lfs,filepath:t}),a=r??``;await e.fs.writeFile(`${i}/.git/FETCH_HEAD`,`${n}\t\t${a}\n`)}async function $l(e,t,n){let r=M(n,I.init).flags,i=L(r,`initial-branch`)??e.getConfigOverrides()?.get(`init.defaultbranch`)??`main`;return await hn({fs:e.lfs,dir:t,defaultBranch:i}),{stdout:`Initialized empty Git repository in ${t}/.git/\n`,stderr:``,exitCode:0}}function eu(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 tu=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(!eu(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&&eu(this.heap[t],this.heap[n])&&(n=t),t+1<this.heap.length&&eu(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 nu(e,t,n){try{return await E({fs:e.lfs,dir:t,ref:n})}catch{return}}async function ru(e,t,n,r){try{return await k({fs:e.lfs,dir:t,oid:n,cache:r})}catch{return}}async function iu(e,t,n,r,i){let a=await At({fs:e.lfs,dir:t});for(let[o,s]of a.entries()){let a=await nu(e,t,s);if(a===void 0||r.has(a))continue;r.add(a);let c=await ru(e,t,a,i);c&&n.push(c,o)}}async function*au(e,t,n){let r=new Set,i=new tu;for(await iu(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 ru(e,t,o,n.cache);s&&i.push(s,a.tipRank)}}}async function ou(e,t,n){let r=[];if(n.limit<=0)return r;for await(let i of au(e,t,{cache:n.cache}))if(r.push(i),r.length>=n.limit)break;return r}async function su(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 cu(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 _u(e,t,g,{format:f,oneline:c,showStat:l}),stderr:``,exitCode:0}}async function cu(e,t,n){let r=n.revision?xu(n.revision):null,i=r?.[1]??n.revision,a=Su(e.cache),o=n.maxCount??10;if(n.pathspecs.length>0&&!n.all&&!r&&!n.followFile)return await mu(e,t,{ref:i,pathspecs:n.pathspecs,limit:o,caches:a});if(n.all&&n.pathspecs.length>0)return await du(e,t,{pathspecs:n.pathspecs,limit:o,caches:a,exclude:r?await uu(e,t,r[0],a):void 0});let s=n.all?await ou(e,t,{limit:n.maxCount??lu,cache:a.git}):await nn({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 uu(e,t,r[0],a);s=s.filter(e=>!n.has(e.oid))}return n.pathspecs.length>0?await gu(e,t,s,n.pathspecs,o,a):r?s.slice(0,o):s}const lu=50;async function uu(e,t,n,r){let i=await nn({fs:e.lfs,dir:t,cache:r.git,ref:n});return new Set(i.map(e=>e.oid))}async function du(e,t,n){let r=[],i=[],a=async()=>{if(i.length>0){let a=n.limit-r.length;r.push(...await gu(e,t,i,n.pathspecs,a,n.caches)),i=[]}return r.length>=n.limit};for await(let o of au(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 fu(e){let t=e.replace(/^\.\//,``).replace(/\/+$/,``);return t===`.`?``:t}function pu(e){let t=[...new Set(e.map(fu))];return t.some(e=>e===``)?null:t}async function mu(e,t,n){let r=n.ref?{ref:n.ref}:{},i=pu(n.pathspecs);return i===null?await nn({fs:e.lfs,dir:t,cache:n.caches.git,...r,depth:n.limit}):i.length===1?(await nn({fs:e.lfs,dir:t,cache:n.caches.git,...r,filepath:i[0],depth:n.limit,force:!0})).slice(0,n.limit):await hu(e,t,{refArg:r,specs:i,limit:n.limit,caches:n.caches})}async function hu(e,t,n){let r=[],i=0,a=Math.max(n.limit*4,32);for(;;){let o=await nn({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 Eu(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 gu(e,t,n,r,i,a){let o=pu(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 Eu(e,t,r,o,a)&&s.push(r),s.length>=i)break;return s}async function _u(e,t,n,r){let i=``;for(let a of n){let{commit:n,oid:o}=a;r.format?i+=`${vu(o,n,r.format)}\n`:r.oneline?i+=`${$s(e.useColor,`33`,o.slice(0,7))} ${n.message.split(`
37
37
  `)[0]}\n`:(i+=`${$s(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
38
  `)}\n\n`),r.showStat&&(i+=await bu(e,t,a))}return i}function vu(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,yu(r))}function yu(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 bu(e,t,n){let{commit:r,oid:i}=n,a=r.parent.length>0?r.parent[0]:void 0;return a?(await Fl(e,t,a,i,{nameOnly:!1,stat:!0})).stdout:await Xl(e,t,i,!0)}function xu(e){let t=/^(.+)\.\.([^.]*)$/.exec(e);return t?.[2]?[t[1],t[2]]:null}function Su(e){return{git:e,commitTrees:new Map,trees:new Map,entries:new Map}}async function Cu(e,t,n,r){let i=r.trees.get(n);if(i)return i;let{tree:a}=await Pt({fs:e.lfs,dir:t,oid:n,cache:r.git});return r.trees.set(n,a),a}async function wu(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 Tu(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 Cu(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 Eu(e,t,n,r,i){let a=n.commit.parent[0],o=a?await wu(e,t,a,i):void 0;for(let a of r)if(await Tu(e,t,n.commit.tree,a,i)!==(o===void 0?void 0:await Tu(e,t,o,a,i)))return!0;return!1}async function Du(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,...Hs}),c=[],l=i?`others`:r?`modified`:a?`deleted`:`cached`;for(let[e,t,n,r]of s)ku(l,t,n,r)&&(o.length>0&&!Ou(e,o)||c.push(e));return c.sort(),{stdout:c.map(e=>`${e}\n`).join(``),stderr:``,exitCode:0}}function Ou(e,t){for(let n of t)if(e===n||e.startsWith(n+`/`))return!0;return!1}function ku(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 Au(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 Lt({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 nn({http:Oc,url:l,corsProxy:e.corsProxy,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),prefix:t,symrefs:a,peelTags:i})).filter(e=>ju(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: ${Vs(e instanceof Error?e.message:String(e),l)}\n`,exitCode:128}}}function ju(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 Mu(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=Nu(i.slice(1));if(!c)return{stdout:``,stderr:`usage: git ls-tree [<options>] <tree-ish> [<path>...]
40
- `,exitCode:129};let u=await uc(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 Pt({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 Pu(e,t,d,``,l,a,o,s,f),{stdout:f.join(``),stderr:``,exitCode:0}}function Nu(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 Pu(e,t,n,r,i,a,o,s,c){for(let l of n){let n=r?`${r}/${l.path}`:l.path,u=Fu(n,i);if(u!==`no`){if(l.type===`tree`){let r=u===`exact`&&(o||!a),d=u===`parent`||a;if(r&&c.push(Iu(l,n,s)),d){let{tree:r}=await Pt({fs:e.lfs,cache:e.cache,dir:t,oid:l.oid});await Pu(e,t,r,n,i,a,o,s,c)}}else u!==`parent`&&!o&&c.push(Iu(l,n,s))}}}function Fu(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 Iu(e,t,n){return n?`${t}\n`:`${e.mode.padStart(6,`0`)} ${e.type} ${e.oid}\t${t}\n`}function Lu(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function Ru(e,t){let n,r=!1;for(let t of Lu(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=Ls(n,I.merge);if(r)return r;let i=M(n,I.merge);if(i.flags.abort===!0)return Bu(e,t);let a=i.positionals[0];if(!a)return{stdout:``,stderr:`fatal: No branch specified to merge.
39
+ `)[0]).replace(/%an/g,t.author.name).replace(/%ae/g,t.author.email).replace(/%ad/g,r.toLocaleString()).replace(/%ar/g,yu(r))}function yu(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 bu(e,t,n){let{commit:r,oid:i}=n,a=r.parent.length>0?r.parent[0]:void 0;return a?(await Fl(e,t,a,i,{nameOnly:!1,stat:!0})).stdout:await Xl(e,t,i,!0)}function xu(e){let t=/^(.+)\.\.([^.]*)$/.exec(e);return t?.[2]?[t[1],t[2]]:null}function Su(e){return{git:e,commitTrees:new Map,trees:new Map,entries:new Map}}async function Cu(e,t,n,r){let i=r.trees.get(n);if(i)return i;let{tree:a}=await Ft({fs:e.lfs,dir:t,oid:n,cache:r.git});return r.trees.set(n,a),a}async function wu(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 Tu(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 Cu(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 Eu(e,t,n,r,i){let a=n.commit.parent[0],o=a?await wu(e,t,a,i):void 0;for(let a of r)if(await Tu(e,t,n.commit.tree,a,i)!==(o===void 0?void 0:await Tu(e,t,o,a,i)))return!0;return!1}async function Du(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,...Hs}),c=[],l=i?`others`:r?`modified`:a?`deleted`:`cached`;for(let[e,t,n,r]of s)ku(l,t,n,r)&&(o.length>0&&!Ou(e,o)||c.push(e));return c.sort(),{stdout:c.map(e=>`${e}\n`).join(``),stderr:``,exitCode:0}}function Ou(e,t){for(let n of t)if(e===n||e.startsWith(n+`/`))return!0;return!1}function ku(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 Au(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 Rt({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 rn({http:Oc,url:l,corsProxy:e.corsProxy,onAuth:e.getOnAuth(),onAuthFailure:e.getOnAuthFailure(),prefix:t,symrefs:a,peelTags:i})).filter(e=>ju(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: ${Vs(e instanceof Error?e.message:String(e),l)}\n`,exitCode:128}}}function ju(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 Mu(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=Nu(i.slice(1));if(!c)return{stdout:``,stderr:`usage: git ls-tree [<options>] <tree-ish> [<path>...]
40
+ `,exitCode:129};let u=await uc(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 Ft({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 Pu(e,t,d,``,l,a,o,s,f),{stdout:f.join(``),stderr:``,exitCode:0}}function Nu(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 Pu(e,t,n,r,i,a,o,s,c){for(let l of n){let n=r?`${r}/${l.path}`:l.path,u=Fu(n,i);if(u!==`no`){if(l.type===`tree`){let r=u===`exact`&&(o||!a),d=u===`parent`||a;if(r&&c.push(Iu(l,n,s)),d){let{tree:r}=await Ft({fs:e.lfs,cache:e.cache,dir:t,oid:l.oid});await Pu(e,t,r,n,i,a,o,s,c)}}else u!==`parent`&&!o&&c.push(Iu(l,n,s))}}}function Fu(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 Iu(e,t,n){return n?`${t}\n`:`${e.mode.padStart(6,`0`)} ${e.type} ${e.oid}\t${t}\n`}function Lu(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function Ru(e,t){let n,r=!1;for(let t of Lu(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=Ls(n,I.merge);if(r)return r;let i=M(n,I.merge);if(i.flags.abort===!0)return Bu(e,t);let a=i.positionals[0];if(!a)return{stdout:``,stderr:`fatal: No branch specified to merge.
41
41
  `,exitCode:128};if(await zc(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 uc(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}=Ru(i,n);try{await Vc(e,t,await E({fs:e.lfs,dir:t,ref:`HEAD`}));let n=await Ft({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:sc({favor:l,diff3:u})});return n.alreadyMerged?{stdout:`Already up to date.
44
- `,stderr:``,exitCode:0}:n.fastForward?(await rn({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 rn({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 uc(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}=Ru(i,n);try{await Vc(e,t,await E({fs:e.lfs,dir:t,ref:`HEAD`}));let n=await It({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:sc({favor:l,diff3:u})});return n.alreadyMerged?{stdout:`Already up to date.
44
+ `,stderr:``,exitCode:0}:n.fastForward?(await an({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 an({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
46
  `,stderr:``,exitCode:0}}catch(n){return n instanceof Error&&n.name===`MergeConflictError`&&await Hc(e,t,o,`Merge branch '${a}' into ${await A({fs:e.lfs,dir:t})??`HEAD`}`),Vu(n)}}async function Bu(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 en({fs:e.lfs,cache:e.cache,dir:t,commit:`HEAD`})}catch{}return await rn({fs:e.lfs,cache:e.cache,dir:t,ref:await A({fs:e.lfs,dir:t})??`HEAD`,force:!0}),await Uc(e,t),{stdout:``,stderr:``,exitCode:0}}function Vu(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.
47
+ `,exitCode:128};try{await tn({fs:e.lfs,cache:e.cache,dir:t,commit:`HEAD`})}catch{}return await an({fs:e.lfs,cache:e.cache,dir:t,ref:await A({fs:e.lfs,dir:t})??`HEAD`,force:!0}),await Uc(e,t),{stdout:``,stderr:``,exitCode:0}}function Vu(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
50
  `,exitCode:128};throw e}async function Hu(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=>cc(e,t,n)));if(r)return n[0]===n[1]?{stdout:``,stderr:``,exitCode:0}:{stdout:``,stderr:``,exitCode:+!await Vt({fs:e.lfs,cache:e.cache,dir:t,oid:n[1],ancestor:n[0],depth:-1})};let a=await Jt({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
51
+ `,exitCode:129};try{let n=await Promise.all(i.slice(0,2).map(n=>cc(e,t,n)));if(r)return n[0]===n[1]?{stdout:``,stderr:``,exitCode:0}:{stdout:``,stderr:``,exitCode:+!await Ht({fs:e.lfs,cache:e.cache,dir:t,oid:n[1],ancestor:n[0],depth:-1})};let a=await Yt({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
52
  `,exitCode:128}}}function Uu(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}async function Wu(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
53
  `,exitCode:255};let a=Uu(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=ke(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 Gu(e,t,n){let r=Ls(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 It({fs:e.lfs,cache:e.cache,http:Oc,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 Ku(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 Rt({fs:e.lfs,cache:e.cache,http:Oc,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 Ut({fs:e.lfs,dir:t,path:`branch.${l}.remote`,value:c}),await Ut({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 Lt({fs:e.lfs,dir:t}).catch(()=>[])).find(e=>e.remote===c)?.url;return{stdout:``,stderr:`error: failed to push to '${c}': ${Vs(String(d.error),n)}\n`,exitCode:1}}return{stdout:u,stderr:``,exitCode:0}}function qu(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}const Ju=`.git/rebase-merge`;async function Yu(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 $u(e,t):r.continue?await Zu(e,t):r.skip?await Qu(e,t):await Xu(e,t,i[0],r)}catch(e){return{stdout:``,stderr:`fatal: ${zs(e)}\n`,exitCode:128}}}async function Xu(e,t,n,r){if(!n)return{stdout:``,stderr:`fatal: No upstream specified.
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=Ae(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 Gu(e,t,n){let r=Ls(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 Lt({fs:e.lfs,cache:e.cache,http:Oc,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 Ku(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:Oc,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 Wt({fs:e.lfs,dir:t,path:`branch.${l}.remote`,value:c}),await Wt({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 Rt({fs:e.lfs,dir:t}).catch(()=>[])).find(e=>e.remote===c)?.url;return{stdout:``,stderr:`error: failed to push to '${c}': ${Vs(String(d.error),n)}\n`,exitCode:1}}return{stdout:u,stderr:``,exitCode:0}}function qu(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}const Ju=`.git/rebase-merge`;async function Yu(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 $u(e,t):r.continue?await Zu(e,t):r.skip?await Qu(e,t):await Xu(e,t,i[0],r)}catch(e){return{stdout:``,stderr:`fatal: ${zs(e)}\n`,exitCode:128}}}async function Xu(e,t,n,r){if(!n)return{stdout:``,stderr:`fatal: No upstream specified.
57
57
  `,exitCode:128};if(await sd(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 rd(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 ad(e,t);if(s)return s;let[c]=await Jt({fs:e.lfs,cache:e.cache,dir:t,oids:[o,a]});if(c===o)return await od(e,t,i,a),{stdout:`Fast-forwarded ${i} to ${n}.\n`,stderr:``,exitCode:0};if(c===a)return{stdout:`Current branch ${i} is up to date.\n`,stderr:``,exitCode:0};let l=await id(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 qu(r[`strategy-option`]))e===`ours`||e===`theirs`||e===`union`?d=e:e===`diff3`&&(f=!0);return await od(e,t,i,a),ed(e,t,{onto:a,origHead:o,headName:`refs/heads/${i}`,branch:i,todo:l.map(e=>e.oid),favor:d,diff3:f})}async function Zu(e,t){let n=await ld(e,t);if(!n)return nd();if(n.current){let{commit:r}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n.current});await Zt({fs:e.lfs,cache:e.cache,dir:t,message:r.message,author:r.author,committer:await e.resolveAuthor(t)}),n.current=void 0}return ed(e,t,n)}async function Qu(e,t){let n=await ld(e,t);return n?(await rn({fs:e.lfs,cache:e.cache,dir:t,ref:n.branch,force:!0}),n.current=void 0,ed(e,t,n)):nd()}async function $u(e,t){let n=await ld(e,t);return n?(await od(e,t,n.branch,n.origHead),await dd(e,t),{stdout:``,stderr:``,exitCode:0}):nd()}async function ed(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 fn({fs:e.lfs,cache:e.cache,dir:t,oid:r,abortOnConflict:!1,committer:await e.resolveAuthor(t),mergeDriver:sc({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 ud(e,t,n),td(r,a,o)}throw i}n.todo=n.todo.slice(1)}return await dd(e,t),{stdout:`Successfully rebased and updated ${n.headName}.\n`,stderr:``,exitCode:0}}function td(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 rd(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 ad(e,t);if(s)return s;let[c]=await Yt({fs:e.lfs,cache:e.cache,dir:t,oids:[o,a]});if(c===o)return await od(e,t,i,a),{stdout:`Fast-forwarded ${i} to ${n}.\n`,stderr:``,exitCode:0};if(c===a)return{stdout:`Current branch ${i} is up to date.\n`,stderr:``,exitCode:0};let l=await id(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 qu(r[`strategy-option`]))e===`ours`||e===`theirs`||e===`union`?d=e:e===`diff3`&&(f=!0);return await od(e,t,i,a),ed(e,t,{onto:a,origHead:o,headName:`refs/heads/${i}`,branch:i,todo:l.map(e=>e.oid),favor:d,diff3:f})}async function Zu(e,t){let n=await ld(e,t);if(!n)return nd();if(n.current){let{commit:r}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n.current});await Qt({fs:e.lfs,cache:e.cache,dir:t,message:r.message,author:r.author,committer:await e.resolveAuthor(t)}),n.current=void 0}return ed(e,t,n)}async function Qu(e,t){let n=await ld(e,t);return n?(await an({fs:e.lfs,cache:e.cache,dir:t,ref:n.branch,force:!0}),n.current=void 0,ed(e,t,n)):nd()}async function $u(e,t){let n=await ld(e,t);return n?(await od(e,t,n.branch,n.origHead),await dd(e,t),{stdout:``,stderr:``,exitCode:0}):nd()}async function ed(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 pn({fs:e.lfs,cache:e.cache,dir:t,oid:r,abortOnConflict:!1,committer:await e.resolveAuthor(t),mergeDriver:sc({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 ud(e,t,n),td(r,a,o)}throw i}n.todo=n.todo.slice(1)}return await dd(e,t),{stdout:`Successfully rebased and updated ${n.headName}.\n`,stderr:``,exitCode:0}}function td(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
65
  `,{stdout:``,stderr:i,exitCode:1}}function nd(){return{stdout:``,stderr:`fatal: No rebase in progress?
66
- `,exitCode:128}}async function rd(e,t,n){return await uc(e,t,n)}async function id(e,t,n,r){let i=await tn({fs:e.lfs,cache:e.cache,dir:t,ref:n}),a=[];for(let e of i){if(e.oid===r)break;a.push({oid:e.oid,parents:e.commit.parent.length})}return a.reverse()}async function ad(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.
66
+ `,exitCode:128}}async function rd(e,t,n){return await uc(e,t,n)}async function id(e,t,n,r){let i=await nn({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 ad(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 od(e,t,n,r){await Mt({fs:e.lfs,dir:t,ref:`refs/heads/${n}`,value:r,force:!0}),await rn({fs:e.lfs,cache:e.cache,dir:t,ref:n,force:!0})}async function sd(e,t){return e.fs.exists(`${t}/${Ju}/onto`)}async function cd(e,t,n){try{return(await e.fs.readTextFile(`${t}/${Ju}/${n}`)).trim()}catch{return}}async function ld(e,t){let n=await cd(e,t,`onto`),r=await cd(e,t,`orig-head`),i=await cd(e,t,`head-name`);if(!n||!r||!i)return;let a=(await cd(e,t,`git-rebase-todo`)??``).split(`
70
+ `,exitCode:128}}async function od(e,t,n,r){await Nt({fs:e.lfs,dir:t,ref:`refs/heads/${n}`,value:r,force:!0}),await an({fs:e.lfs,cache:e.cache,dir:t,ref:n,force:!0})}async function sd(e,t){return e.fs.exists(`${t}/${Ju}/onto`)}async function cd(e,t,n){try{return(await e.fs.readTextFile(`${t}/${Ju}/${n}`)).trim()}catch{return}}async function ld(e,t){let n=await cd(e,t,`onto`),r=await cd(e,t,`orig-head`),i=await cd(e,t,`head-name`);if(!n||!r||!i)return;let a=(await cd(e,t,`git-rebase-todo`)??``).split(`
71
71
  `).map(e=>e.replace(/^pick\s+/,``).trim()).filter(e=>e.length>0),o=await cd(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 cd(e,t,`stopped-sha`),todo:a,favor:s,diff3:c}}async function ud(e,t,n){let r=`${t}/${Ju}`;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 fd(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 fd(e,`${r}/strategy-opts`)}async function dd(e,t){try{await e.fs.rm(`${t}/${Ju}`,{recursive:!0})}catch{}}async function fd(e,t){try{await e.fs.rm(t)}catch{}}async function pd(e,t,n){let[r,...i]=n;if(r===`add`&&i.length>=2){let[n,r]=i;return await sn({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 Qt({fs:e.lfs,dir:t,remote:n}),{stdout:``,stderr:``,exitCode:0}}let a=n.includes(`-v`)||n.includes(`--verbose`),o=await Lt({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 md(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 _n({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 _n({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}for(let r of n)await _n({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 Mt({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 zt({fs:e.lfs,cache:e.cache,dir:t,filepath:n});return await gd(e,t,l),i?(await vd(e,t,l,d),await hd(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 hd(e,t,n){try{await en({fs:e.lfs,cache:e.cache,dir:t,commit:n})}catch{}await Uc(e,t)}async function gd(e,t,n){let{tree:r}=await Pt({fs:e.lfs,cache:e.cache,dir:t,oid:n});await _d(e,t,n,r,``)}async function _d(e,t,n,r,i){for(let a of r){let r=i?`${i}/${a.path}`:a.path;if(a.type===`blob`)await _n({fs:e.lfs,cache:e.cache,dir:t,filepath:r,ref:n});else if(a.type===`tree`){let{tree:i}=await Pt({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await _d(e,t,n,i,r)}}}async function vd(e,t,n,r){let i=new Set,{tree:a}=await Pt({fs:e.lfs,cache:e.cache,dir:t,oid:n});await yd(e,t,a,``,i);for(let r of i){let{blob:i}=await At({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 yd(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 Pt({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await yd(e,t,r,n,i)}}}async function bd(e,t,n){if(n.includes(`--show-toplevel`))try{return{stdout:`${await hn({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 hn({fs:e.lfs,filepath:t}),{stdout:`true
72
+ `)}\n`),n.current?await e.fs.writeFile(`${r}/stopped-sha`,`${n.current}\n`):await fd(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 fd(e,`${r}/strategy-opts`)}async function dd(e,t){try{await e.fs.rm(`${t}/${Ju}`,{recursive:!0})}catch{}}async function fd(e,t){try{await e.fs.rm(t)}catch{}}async function pd(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 $t({fs:e.lfs,dir:t,remote:n}),{stdout:``,stderr:``,exitCode:0}}let a=n.includes(`-v`)||n.includes(`--verbose`),o=await Rt({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 md(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 vn({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 vn({fs:e.lfs,cache:e.cache,dir:t,filepath:r});return{stdout:``,stderr:``,exitCode:0}}for(let r of n)await vn({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 Nt({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 Bt({fs:e.lfs,cache:e.cache,dir:t,filepath:n});return await gd(e,t,l),i?(await vd(e,t,l,d),await hd(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 hd(e,t,n){try{await tn({fs:e.lfs,cache:e.cache,dir:t,commit:n})}catch{}await Uc(e,t)}async function gd(e,t,n){let{tree:r}=await Ft({fs:e.lfs,cache:e.cache,dir:t,oid:n});await _d(e,t,n,r,``)}async function _d(e,t,n,r,i){for(let a of r){let r=i?`${i}/${a.path}`:a.path;if(a.type===`blob`)await vn({fs:e.lfs,cache:e.cache,dir:t,filepath:r,ref:n});else if(a.type===`tree`){let{tree:i}=await Ft({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await _d(e,t,n,i,r)}}}async function vd(e,t,n,r){let i=new Set,{tree:a}=await Ft({fs:e.lfs,cache:e.cache,dir:t,oid:n});await yd(e,t,a,``,i);for(let r of i){let{blob:i}=await jt({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 yd(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 Ft({fs:e.lfs,cache:e.cache,dir:t,oid:a.oid});await yd(e,t,r,n,i)}}}async function bd(e,t,n){if(n.includes(`--show-toplevel`))try{return{stdout:`${await gn({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 gn({fs:e.lfs,filepath:t}),{stdout:`true
75
75
  `,stderr:``,exitCode:0}}catch{return{stdout:`false
76
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 cc(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 xd(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
77
  `,exitCode:128};let s=await uc(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
79
  `)[0],f=s.slice(0,7),p=await A({fs:e.lfs,dir:t})??`HEAD`;try{let n=await Sd(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 Zt({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 Sd(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 Cd(e,t,r,o),c=await Cd(e,t,i,o);if(s===c)continue;let l=await Cd(e,t,n,o)??``,f,p=!1;if(l===(s??``))f=c??``;else{let e=ke(l,s??``,c??``,{labels:a});f=e.content,p=e.conflicts>0}if(!p&&c===void 0&&f===``){await wd(e,t,o);continue}await e.fs.writeFile(`${t}/${o}`,u.encode(f)),p?d.push(o):await qt({fs:e.lfs,cache:e.cache,dir:t,filepath:o})}return d}async function Cd(e,t,n,r){try{let{blob:i}=await At({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return new TextDecoder().decode(i)}catch{return}}async function wd(e,t,n){try{await e.fs.rm(`${t}/${n}`)}catch{}try{await zt({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}catch{}}async function Td(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 Ed(e,t,n,r,i);if(a)return a}return{stdout:``,stderr:``,exitCode:0}}async function Ed(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 zt({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(`${t}/${n}`)}catch{}}else if(await zt({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(a)}catch{}return null}async function Dd(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 Od(e,t,c);let l=c??`HEAD`,u=await uc(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=kd(u,d,s,e.useColor),p=d.parent.length>0?d.parent[0]:void 0;if(p){let n=await Fl(e,t,p,u,{nameOnly:!1,stat:o});f+=n.stdout}else{let n=await Xl(e,t,u,o);f+=n}return{stdout:f,stderr:``,exitCode:0}}async function Od(e,t,n){let r=n.indexOf(`:`),i=n.slice(0,r)||`HEAD`,a=n.slice(r+1),o=await uc(e,t,i);if(o===void 0)return{stdout:``,stderr:`fatal: bad object ${i}\n`,exitCode:128};let s=await At({fs:e.lfs,cache:e.cache,dir:t,oid:o,filepath:a});return{stdout:new TextDecoder().decode(s.blob),stderr:``,exitCode:0}}function kd(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 Qt({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 Sd(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 Cd(e,t,r,o),c=await Cd(e,t,i,o);if(s===c)continue;let l=await Cd(e,t,n,o)??``,f,p=!1;if(l===(s??``))f=c??``;else{let e=Ae(l,s??``,c??``,{labels:a});f=e.content,p=e.conflicts>0}if(!p&&c===void 0&&f===``){await wd(e,t,o);continue}await e.fs.writeFile(`${t}/${o}`,u.encode(f)),p?d.push(o):await Jt({fs:e.lfs,cache:e.cache,dir:t,filepath:o})}return d}async function Cd(e,t,n,r){try{let{blob:i}=await jt({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return new TextDecoder().decode(i)}catch{return}}async function wd(e,t,n){try{await e.fs.rm(`${t}/${n}`)}catch{}try{await Bt({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}catch{}}async function Td(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 Ed(e,t,n,r,i);if(a)return a}return{stdout:``,stderr:``,exitCode:0}}async function Ed(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 Bt({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(`${t}/${n}`)}catch{}}else if(await Bt({fs:e.lfs,cache:e.cache,dir:t,filepath:n}),!r)try{await e.fs.rm(a)}catch{}return null}async function Dd(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 Od(e,t,c);let l=c??`HEAD`,u=await uc(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=kd(u,d,s,e.useColor),p=d.parent.length>0?d.parent[0]:void 0;if(p){let n=await Fl(e,t,p,u,{nameOnly:!1,stat:o});f+=n.stdout}else{let n=await Xl(e,t,u,o);f+=n}return{stdout:f,stderr:``,exitCode:0}}async function Od(e,t,n){let r=n.indexOf(`:`),i=n.slice(0,r)||`HEAD`,a=n.slice(r+1),o=await uc(e,t,i);if(o===void 0)return{stdout:``,stderr:`fatal: bad object ${i}\n`,exitCode:128};let s=await jt({fs:e.lfs,cache:e.cache,dir:t,oid:o,filepath:a});return{stdout:new TextDecoder().decode(s.blob),stderr:``,exitCode:0}}function kd(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
84
  `;let i=`${$s(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 Ad(e,t,n){let r=n.includes(`--heads`),i=n.includes(`--tags`),a=n.find(e=>!e.startsWith(`-`)),o=``;if(!i){let n=await kt({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 Dt({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 jd=new Uint8Array;async function Md(e,t){return await e.fs.readFile(t,{encoding:`binary`})}function Nd(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 Pd(e){if(!e.includes(0))try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return}}async function Fd(e,t,n){let r=n[0];if(!r||r.startsWith(`-`))return Id(e,t,n);switch(r){case`push`:case`save`:return Id(e,t,n.slice(1));case`pop`:return Bd(e,t);case`apply`:return Vd(e,t);case`list`:return Kd(e,t);case`drop`:return qd(e,t,n.slice(1));case`show`:return Jd(e,t);default:return{stdout:``,stderr:`error: unknown subcommand: ${r}\n`,exitCode:1}}}async function Id(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
85
+ `)}\n\n`,i}async function Ad(e,t,n){let r=n.includes(`--heads`),i=n.includes(`--tags`),a=n.find(e=>!e.startsWith(`-`)),o=``;if(!i){let n=await At({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 Ot({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 jd=new Uint8Array;async function Md(e,t){return await e.fs.readFile(t,{encoding:`binary`})}function Nd(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 Pd(e){if(!e.includes(0))try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return}}async function Fd(e,t,n){let r=n[0];if(!r||r.startsWith(`-`))return Id(e,t,n);switch(r){case`push`:case`save`:return Id(e,t,n.slice(1));case`pop`:return Bd(e,t);case`apply`:return Vd(e,t);case`list`:return Kd(e,t);case`drop`:return qd(e,t,n.slice(1));case`show`:return Jd(e,t);default:return{stdout:``,stderr:`error: unknown subcommand: ${r}\n`,exitCode:1}}}async function Id(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
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 Ld(e,t,i,s,a);if(l.length===0)return{stdout:``,stderr:`No local changes to save
87
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 cn({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 Mt({fs:e.lfs,dir:t,ref:`refs/stash`,value:_,force:!0}),await Rd(e,t,i,l),{stdout:`Saved working directory and index state ${m}\n`,stderr:``,exitCode:0}}async function Ld(e,t,n,r,i){let a=[],o=[];for(let s of r){let r=i.includes(s),c;try{c=await Md(e,`${t}/${s}`)}catch{}if(r){let{blob:r}=await At({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(Nd(c,r)){let n=await Nt({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 Nt({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 Nt({fs:e.lfs,dir:t,blob:c});o.push({filepath:s,oid:n})}}return{dirtyFiles:a,indexEntries:o}}async function Rd(e,t,n,r){for(let i of r)if(i.inHead){let{blob:r}=await At({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:i.file});await e.fs.writeFile(`${t}/${i.file}`,r),await _n({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 zt({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 Gt({fs:e.lfs,dir:t,tree:r})};return i(r)}async function Bd(e,t){return Hd(e,t,!0)}async function Vd(e,t){return Hd(e,t,!1)}async function Hd(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.
88
+ `)[0]}`,h=await e.resolveAuthor(t),g=Math.floor(Date.now()/1e3),_=await ln({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 Nt({fs:e.lfs,dir:t,ref:`refs/stash`,value:_,force:!0}),await Rd(e,t,i,l),{stdout:`Saved working directory and index state ${m}\n`,stderr:``,exitCode:0}}async function Ld(e,t,n,r,i){let a=[],o=[];for(let s of r){let r=i.includes(s),c;try{c=await Md(e,`${t}/${s}`)}catch{}if(r){let{blob:r}=await jt({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(Nd(c,r)){let n=await Pt({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 Pt({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 Pt({fs:e.lfs,dir:t,blob:c});o.push({filepath:s,oid:n})}}return{dirtyFiles:a,indexEntries:o}}async function Rd(e,t,n,r){for(let i of r)if(i.inHead){let{blob:r}=await jt({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:i.file});await e.fs.writeFile(`${t}/${i.file}`,r),await vn({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 Bt({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 Kt({fs:e.lfs,dir:t,tree:r})};return i(r)}async function Bd(e,t){return Hd(e,t,!0)}async function Vd(e,t){return Hd(e,t,!1)}async function Hd(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
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 Ud(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 Mt({fs:e.lfs,dir:t,ref:`refs/stash`,value:i.parent[1],force:!0}):await Yd(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{0} (${r.slice(0,7)})\n`,stderr:``,exitCode:0}):{stdout:``,stderr:``,exitCode:0}}async function Ud(e,t,n,r){let i=new Map,a=async(n,r)=>{let{tree:o}=await Pt({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 At({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 Gd(e,t,r,n):jd,l;try{l=await Md(e,`${t}/${n}`)}catch{}let{merged:u,conflicted:d,binary:f}=Wd(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):Nd(u,i)||await qt({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 zt({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}return{conflicts:s,warnings:c}}function Wd(e,t,n){if(e===void 0||Nd(e,n)||Nd(e,t))return{merged:n,conflicted:!1,binary:!1};if(Nd(n,t))return{merged:e,conflicted:!1,binary:!1};let r=Pd(e),i=Pd(t),a=Pd(n);if(r===void 0||i===void 0||a===void 0)return{merged:e,conflicted:!0,binary:!0};let o=ke(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 Gd(e,t,n,r){try{let{blob:i}=await At({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return i}catch{return jd}}async function Kd(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 qd(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 Mt({fs:e.lfs,dir:t,ref:`refs/stash`,value:n.parent[1],force:!0}):await Yd(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 cn({fs:e.lfs,dir:t,commit:{...r.commit,parent:i}})}return u?await Mt({fs:e.lfs,dir:t,ref:`refs/stash`,value:u,force:!0}):await Yd(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{${r}} (${c.slice(0,7)})\n`,stderr:``,exitCode:0}}async function Jd(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.
90
+ `:``;return{stdout:e,stderr:c.join(``)+t,exitCode:1}}return n?(i.parent.length>1?await Nt({fs:e.lfs,dir:t,ref:`refs/stash`,value:i.parent[1],force:!0}):await Yd(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{0} (${r.slice(0,7)})\n`,stderr:``,exitCode:0}):{stdout:``,stderr:``,exitCode:0}}async function Ud(e,t,n,r){let i=new Map,a=async(n,r)=>{let{tree:o}=await Ft({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 jt({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 Gd(e,t,r,n):jd,l;try{l=await Md(e,`${t}/${n}`)}catch{}let{merged:u,conflicted:d,binary:f}=Wd(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):Nd(u,i)||await Jt({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 Bt({fs:e.lfs,cache:e.cache,dir:t,filepath:n})}return{conflicts:s,warnings:c}}function Wd(e,t,n){if(e===void 0||Nd(e,n)||Nd(e,t))return{merged:n,conflicted:!1,binary:!1};if(Nd(n,t))return{merged:e,conflicted:!1,binary:!1};let r=Pd(e),i=Pd(t),a=Pd(n);if(r===void 0||i===void 0||a===void 0)return{merged:e,conflicted:!0,binary:!0};let o=Ae(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 Gd(e,t,n,r){try{let{blob:i}=await jt({fs:e.lfs,cache:e.cache,dir:t,oid:n,filepath:r});return i}catch{return jd}}async function Kd(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 qd(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 Nt({fs:e.lfs,dir:t,ref:`refs/stash`,value:n.parent[1],force:!0}):await Yd(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 ln({fs:e.lfs,dir:t,commit:{...r.commit,parent:i}})}return u?await Nt({fs:e.lfs,dir:t,ref:`refs/stash`,value:u,force:!0}):await Yd(e,t,`refs/stash`),{stdout:`Dropped refs/stash@{${r}} (${c.slice(0,7)})\n`,stderr:``,exitCode:0}}async function Jd(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
92
  `,exitCode:1}}let{commit:r}=await k({fs:e.lfs,cache:e.cache,dir:t,oid:n}),i=r.parent[0];return Fl(e,t,i,n,{nameOnly:!1,stat:!0})}async function Yd(e,t,n){try{await e.lfs.unlink(`${t}/.git/${n}`)}catch{}}async function Xd(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 $d(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
93
  `}let c=await zc(e,t);c?(await Wc(e,t)).length>0?(s+=`You have unmerged paths.
94
94
  `,s+=` (fix conflicts and run "git commit")
@@ -115,8 +115,8 @@ error: Please commit or stash them.
115
115
  or: git symbolic-ref <name> <ref>
116
116
  or: git symbolic-ref (-d | --delete) <name>`;function nf(e){let t=Array.isArray(e)?e[e.length-1]:e;return typeof t==`boolean`?t:void 0}function rf(e){let t={};typeof e.m==`string`&&(t.m=e.m);let n=nf(e.delete);n!==void 0&&(t.delete=n);let r=nf(e.d);r!==void 0&&(t.d=r);let i=nf(e.quiet);i!==void 0&&(t.quiet=i);let a=nf(e.q);a!==void 0&&(t.q=a);let o=nf(e.short);o!==void 0&&(t.short=o);let s=nf(e.recurse);return s!==void 0&&(t.recurse=s),t}function af(){return{stdout:``,stderr:`${tf}\n`,exitCode:129}}function of(e){return!e.startsWith(`refs/`)||e.length===5||e.includes(`..`)||e.includes(`@{`)||e.split(`/`).some(e=>!e||e.startsWith(`.`)||e.endsWith(`.`)||e.endsWith(`.lock`))?!1:![...e].some(e=>{let t=e.charCodeAt(0);return t<=32||t===127||`~^:?*[\\`.includes(e)})}async function sf(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 cf(e,t,n,r){let i=await sf(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 sf(e,t,o);if(r.kind!==`symbolic`)return o;o=r.target}}function lf(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 uf(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${tf}\n`,exitCode:129};if(e.m!==void 0)return{stdout:``,stderr:`fatal: option '-m' is not supported because reflogs are not persisted
117
117
  `,exitCode:128};if(e.delete===!1||t&&(e.short!==void 0||e.recurse!==void 0))return af()}async function df(e,t,n,r){if(n===`HEAD`)return{stdout:``,stderr:`fatal: deleting 'HEAD' is not allowed
118
- `,exitCode:128};let i=await sf(e,t,n);return i.kind===`symbolic`?(await $t({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 ff(e,t,n,r){return of(r)?(await Mt({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 pf(e,t,n,r){let i=await cf(e,t,n,r.recurse!==!1);return typeof i==`string`?{stdout:`${r.short?lf(i):i}\n`,stderr:``,exitCode:0}:r.quiet&&i.exitCode===1?{...i,stderr:``}:i}async function mf(e,t,n){let{flags:r,positionals:i}=M(n,I[`symbolic-ref`]),a=r.delete===!0,o=uf(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?df(e,t,i[0],!!r.quiet):af():i.length===2?s?af():ff(e,t,i[0],i[1]):i.length===1?pf(e,t,i[0],rf(r)):af()}async function hf(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 Kt({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 Dt({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 un({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 Ht({fs:e.lfs,dir:t,ref:d,object:f,force:u});return{stdout:``,stderr:``,exitCode:0}}function gf(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 _f(e,t){let n=t.mtimeMs??0;return{type:e,mode:gf(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 vf(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 yf(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 bf(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 xf=`/objects/pack`,Sf=/^(.*\/objects)\/([0-9a-f]{2})\/[0-9a-f]{38,}$/,Cf=/\/objects\/[0-9a-f]{2}$/;function wf(e){return e.endsWith(xf)||Cf.test(e)}function Tf(e){let t=Ne(e);return e.type===`directory`?t?{type:`dir`,stats:t}:{type:`dir`}:t?{type:`file`,stats:t}:void 0}function Ef(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=Tf(e);n?t.set(`${a}${e.name}`,n):t.delete(`${a}${e.name}`)}},get(e){let n=t.get(b(e));if(n)return _f(n.type,n.stats?vf(n.stats):{})},drop(e){t.delete(b(e))},clear(){t.clear()},size(){return t.size}}}function Df(e,t={}){let n=t.objectCache?{packDirs:new Map,fanouts:new Map}:void 0,r=Ef(Math.max(0,t.statCacheMax??1e5)),i=async t=>{let n=await e.readDir(t,wf(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)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=Sf.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 Pe(`ENOENT`,`no such file or directory`,t);let r=bf(n);return r?await e.readFileRange(t,r.start,r.end):await e.readFile(t,yf(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(xf))return await i(e);let t=n.packDirs.get(e);if(t)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 _f(i.type===`directory`?`dir`:`file`,vf(i))},async lstat(t){let n=r.get(t);if(n)return n;let i=await e.lstat(t);return _f(i.type===`directory`?`dir`:i.type===`symlink`?`symlink`:`file`,vf(i))},async readlink(t){if(e.isPathUnderMount(t))throw new Pe(`EINVAL`,`symlinks not supported on mounted filesystems`,t);return e.readlink(t)},async symlink(t,n){if(e.isPathUnderMount(n))throw new Pe(`EINVAL`,`symlinks not supported on mounted filesystems`,n);await c(n,()=>e.symlink(t,n))}},clearStatCache(){r.clear()},statCacheSize(){return r.size()}}}const Of={maxEntries:5e4,maxFileBytes:1048576,maxTotalBytes:8388608},kf=new Set([`ENOENT`,`ENOTDIR`,`EISDIR`]);function Af(e){return e.endsWith(`.pack`)||e.endsWith(`.idx`)}function jf(e){let t=e.replace(/\/{2,}/g,`/`);return t.length>1&&t.endsWith(`/`)?t.slice(0,-1):t}function Mf(e){let t=e.lastIndexOf(`/`);return t<0?`.`:t===0?`/`:e.slice(0,t)}function Nf(e){let t=e?.code;return typeof t==`string`?t:void 0}function Pf(e){return typeof e==`string`?e.length*2:e.byteLength}function Ff(e,t){return`${t?`u`:`b`} ${e}`}var If=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=Pf(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[Ff(e,!0),Ff(e,!1)])this.files.delete(t),this.dropFile(t)}invalidatePath(e){let t=jf(e);this.forgetSelf(t);let n=Mf(t);this.dirs.delete(n),this.stats.delete(n),this.lstats.delete(n)}invalidateSubtree(e){let t=jf(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 Lf(e,t,n,r){let i=e.get(t);if(i)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=>{kf.has(Nf(e)??``)||o()}),a}function Rf(e,t={}){let n=new If({...Of,...t}),r=()=>n.hasRoom(),i=async t=>(await Lf(n.dirs,jf(t),()=>e.readdir(t),{admit:r})).slice(),a=async(t,i)=>{if(Af(t))return e.readFile(t,i);let a=Ff(jf(t),yf(i)),o=await Lf(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=>Lf(e,jf(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 Bf(e){for(let t of Object.getOwnPropertySymbols(e)){if(t.description!==`PackfileCache`)continue;let n=e[t];if(n instanceof Map)return n}}function Vf(e){return`${e.replace(/\/+$/,``)}/.git`}var Hf=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=Vf(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=Vf(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=Bf(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=Bf(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=`${Vf(e)}/objects/pack/`,n=Bf(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=Bf(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 Uf=e(`git-commands`),Wf=new Set([`clone`,`fetch`,`pull`,`push`,`ls-remote`]),Gf=new Set([`clone`,`fetch`,`pull`]),Kf=new Set([`add`,`branch`,`commit`,`diff`,`init`,`log`,`ls-files`,`ls-tree`,`merge-base`,`rev-parse`,`show`,`show-ref`,`status`,`symbolic-ref`,`tag`]),qf={string:[`c`,`C`,`git-dir`,`work-tree`],boolean:[`help`,`version`,`no-pager`,`paginate`,`no-replace-objects`,`color`],alias:{h:`help`},stopEarly:!0};function Jf(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function Yf(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 Xf=class e{options;static globalFsByDbName=new Map;lfs;corsProxy;authorName;authorEmail;globalDbName;githubToken;currentEnv;currentConfigOverrides;currentStdin=``;cacheManager;constructor(e){this.options=e,this.lfs=Df(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 Hf(this.lfs,{...e.maxResidentPacks===void 0?{}:{maxResidentPacks:e.maxResidentPacks}})}contextFor(e,t){let n=Df(this.options.fs,{objectCache:!0}),r=Kf.has(e)?Rf(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){Uf.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(){if(this.githubToken)return this.githubToken;let e=this.currentEnv;if(!e)return;let t=Yf(e,`GH_TOKEN`);if(t)return t;let n=Yf(e,`GITHUB_TOKEN`);if(n)return n}getGlobalFs(){let t=e.globalFsByDbName.get(this.globalDbName);if(t)return t;let n=We.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){Uf.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 Bt({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 zn(i,`user.name`)??this.authorName,email:r?.get(`user.email`)??await n(`user.email`)??await zn(i,`user.email`)??this.authorEmail}}async execute(e,t,n,r,i){if(e.length===0)return this.help();let a=this.stripGlobalFlags(Ys(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),Wf.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:Gf.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 $l(t,n,r);case`clone`:return await kc(t,n,r);case`add`:return await Ts(t,n,r);case`status`:return await Xd(t,n,r);case`commit`:return await Kc(t,n,r);case`log`:return await su(t,n,r);case`ls-remote`:return await Au(t,n,r);case`branch`:return await ec(t,n,r);case`checkout`:return await tc(t,n,r);case`clean`:return await bc(t,n,r);case`diff`:return await kl(t,n,r);case`show`:return await Dd(t,n,r);case`remote`:return await pd(t,n,r);case`fetch`:return await Zl(t,n,r);case`pull`:return await Gu(t,n,r);case`push`:return await Ku(t,n,r);case`merge`:return await zu(t,n,r);case`merge-base`:return await Hu(t,n,r);case`cherry-pick`:return await vc(t,n,r);case`rebase`:return await Yu(t,n,r);case`revert`:return await xd(t,n,r);case`merge-file`:return await Wu(t,n,r);case`reset`:return await md(t,n,r);case`config`:return await al(t,n,r);case`tag`:return await hf(t,n,r);case`ls-files`:return await Du(t,n,r);case`ls-tree`:return await Mu(t,n,r);case`show-ref`:return await Ad(t,n,r);case`symbolic-ref`:return await mf(t,n,r);case`stash`:return await Fd(t,n,r);case`rm`:return await Td(t,n,r);case`mv`:{let{mv:e}=await import(`./mv-ohCkaQgo.js`);return await e(t,n,r)}case`rev-parse`:return await bd(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 Qs({cliWhen:Js(e),colorUi:n?.get(`color.ui`),noColorEnv:!!(t&&Yf(t,`NO_COLOR`)),stdoutIsTTY:r?.stdoutIsTTY===!0,term:t?Yf(t,`TERM`):void 0})}shouldVerifyPackfiles(){let e=this.currentEnv,t=e?Yf(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,qf),r=t;for(let e of Jf(n.flags.C))e!==``&&(r=e.startsWith(`/`)?e:`${r}/${e}`);let i=new Map;for(let e of Jf(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 ${Wt()})\n`,stderr:``,exitCode:0}}help(){return{stdout:`usage: git <command> [<args>]
118
+ `,exitCode:128};let i=await sf(e,t,n);return i.kind===`symbolic`?(await en({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 ff(e,t,n,r){return of(r)?(await Nt({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 pf(e,t,n,r){let i=await cf(e,t,n,r.recurse!==!1);return typeof i==`string`?{stdout:`${r.short?lf(i):i}\n`,stderr:``,exitCode:0}:r.quiet&&i.exitCode===1?{...i,stderr:``}:i}async function mf(e,t,n){let{flags:r,positionals:i}=M(n,I[`symbolic-ref`]),a=r.delete===!0,o=uf(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?df(e,t,i[0],!!r.quiet):af():i.length===2?s?af():ff(e,t,i[0],i[1]):i.length===1?pf(e,t,i[0],rf(r)):af()}async function hf(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 qt({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 Ot({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 dn({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 Ut({fs:e.lfs,dir:t,ref:d,object:f,force:u});return{stdout:``,stderr:``,exitCode:0}}function gf(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 _f(e,t){let n=t.mtimeMs??0;return{type:e,mode:gf(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 vf(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 yf(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 bf(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 xf=`/objects/pack`,Sf=/^(.*\/objects)\/([0-9a-f]{2})\/[0-9a-f]{38,}$/,Cf=/\/objects\/[0-9a-f]{2}$/;function wf(e){return e.endsWith(xf)||Cf.test(e)}function Tf(e){let t=Pe(e);return e.type===`directory`?t?{type:`dir`,stats:t}:{type:`dir`}:t?{type:`file`,stats:t}:void 0}function Ef(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=Tf(e);n?t.set(`${a}${e.name}`,n):t.delete(`${a}${e.name}`)}},get(e){let n=t.get(b(e));if(n)return _f(n.type,n.stats?vf(n.stats):{})},drop(e){t.delete(b(e))},clear(){t.clear()},size(){return t.size}}}function Df(e,t={}){let n=t.objectCache?{packDirs:new Map,fanouts:new Map}:void 0,r=Ef(Math.max(0,t.statCacheMax??1e5)),i=async t=>{let n=await e.readDir(t,wf(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)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=Sf.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 Fe(`ENOENT`,`no such file or directory`,t);let r=bf(n);return r?await e.readFileRange(t,r.start,r.end):await e.readFile(t,yf(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(xf))return await i(e);let t=n.packDirs.get(e);if(t)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 _f(i.type===`directory`?`dir`:`file`,vf(i))},async lstat(t){let n=r.get(t);if(n)return n;let i=await e.lstat(t);return _f(i.type===`directory`?`dir`:i.type===`symlink`?`symlink`:`file`,vf(i))},async readlink(t){if(e.isPathUnderMount(t))throw new Fe(`EINVAL`,`symlinks not supported on mounted filesystems`,t);return e.readlink(t)},async symlink(t,n){if(e.isPathUnderMount(n))throw new Fe(`EINVAL`,`symlinks not supported on mounted filesystems`,n);await c(n,()=>e.symlink(t,n))}},clearStatCache(){r.clear()},statCacheSize(){return r.size()}}}const Of={maxEntries:5e4,maxFileBytes:1048576,maxTotalBytes:8388608},kf=new Set([`ENOENT`,`ENOTDIR`,`EISDIR`]);function Af(e){return e.endsWith(`.pack`)||e.endsWith(`.idx`)}function jf(e){let t=e.replace(/\/{2,}/g,`/`);return t.length>1&&t.endsWith(`/`)?t.slice(0,-1):t}function Mf(e){let t=e.lastIndexOf(`/`);return t<0?`.`:t===0?`/`:e.slice(0,t)}function Nf(e){let t=e?.code;return typeof t==`string`?t:void 0}function Pf(e){return typeof e==`string`?e.length*2:e.byteLength}function Ff(e,t){return`${t?`u`:`b`} ${e}`}var If=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=Pf(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[Ff(e,!0),Ff(e,!1)])this.files.delete(t),this.dropFile(t)}invalidatePath(e){let t=jf(e);this.forgetSelf(t);let n=Mf(t);this.dirs.delete(n),this.stats.delete(n),this.lstats.delete(n)}invalidateSubtree(e){let t=jf(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 Lf(e,t,n,r){let i=e.get(t);if(i)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=>{kf.has(Nf(e)??``)||o()}),a}function Rf(e,t={}){let n=new If({...Of,...t}),r=()=>n.hasRoom(),i=async t=>(await Lf(n.dirs,jf(t),()=>e.readdir(t),{admit:r})).slice(),a=async(t,i)=>{if(Af(t))return e.readFile(t,i);let a=Ff(jf(t),yf(i)),o=await Lf(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=>Lf(e,jf(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 Bf(e){for(let t of Object.getOwnPropertySymbols(e)){if(t.description!==`PackfileCache`)continue;let n=e[t];if(n instanceof Map)return n}}function Vf(e){return`${e.replace(/\/+$/,``)}/.git`}var Hf=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=Vf(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=Vf(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=Bf(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=Bf(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=`${Vf(e)}/objects/pack/`,n=Bf(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=Bf(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 Uf=e(`git-commands`),Wf=new Set([`clone`,`fetch`,`pull`,`push`,`ls-remote`]),Gf=new Set([`clone`,`fetch`,`pull`]),Kf=new Set([`add`,`branch`,`commit`,`diff`,`init`,`log`,`ls-files`,`ls-tree`,`merge-base`,`rev-parse`,`show`,`show-ref`,`status`,`symbolic-ref`,`tag`]),qf={string:[`c`,`C`,`git-dir`,`work-tree`],boolean:[`help`,`version`,`no-pager`,`paginate`,`no-replace-objects`,`color`],alias:{h:`help`},stopEarly:!0};function Jf(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).map(e=>String(e))}function Yf(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 Xf=class e{options;static globalFsByDbName=new Map;lfs;corsProxy;authorName;authorEmail;globalDbName;githubToken;currentEnv;currentConfigOverrides;currentStdin=``;cacheManager;constructor(e){this.options=e,this.lfs=Df(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 Hf(this.lfs,{...e.maxResidentPacks===void 0?{}:{maxResidentPacks:e.maxResidentPacks}})}contextFor(e,t){let n=Df(this.options.fs,{objectCache:!0}),r=Kf.has(e)?Rf(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){Uf.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(){if(this.githubToken)return this.githubToken;let e=this.currentEnv;if(!e)return;let t=Yf(e,`GH_TOKEN`);if(t)return t;let n=Yf(e,`GITHUB_TOKEN`);if(n)return n}getGlobalFs(){let t=e.globalFsByDbName.get(this.globalDbName);if(t)return t;let n=Ge.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){Uf.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 Vt({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 Bn(i,`user.name`)??this.authorName,email:r?.get(`user.email`)??await n(`user.email`)??await Bn(i,`user.email`)??this.authorEmail}}async execute(e,t,n,r,i){if(e.length===0)return this.help();let a=this.stripGlobalFlags(Ys(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),Wf.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:Gf.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 $l(t,n,r);case`clone`:return await kc(t,n,r);case`add`:return await Ts(t,n,r);case`status`:return await Xd(t,n,r);case`commit`:return await Kc(t,n,r);case`log`:return await su(t,n,r);case`ls-remote`:return await Au(t,n,r);case`branch`:return await ec(t,n,r);case`checkout`:return await tc(t,n,r);case`clean`:return await bc(t,n,r);case`diff`:return await kl(t,n,r);case`show`:return await Dd(t,n,r);case`remote`:return await pd(t,n,r);case`fetch`:return await Zl(t,n,r);case`pull`:return await Gu(t,n,r);case`push`:return await Ku(t,n,r);case`merge`:return await zu(t,n,r);case`merge-base`:return await Hu(t,n,r);case`cherry-pick`:return await vc(t,n,r);case`rebase`:return await Yu(t,n,r);case`revert`:return await xd(t,n,r);case`merge-file`:return await Wu(t,n,r);case`reset`:return await md(t,n,r);case`config`:return await al(t,n,r);case`tag`:return await hf(t,n,r);case`ls-files`:return await Du(t,n,r);case`ls-tree`:return await Mu(t,n,r);case`show-ref`:return await Ad(t,n,r);case`symbolic-ref`:return await mf(t,n,r);case`stash`:return await Fd(t,n,r);case`rm`:return await Td(t,n,r);case`mv`:{let{mv:e}=await import(`./mv-ohCkaQgo.js`);return await e(t,n,r)}case`rev-parse`:return await bd(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 Qs({cliWhen:Js(e),colorUi:n?.get(`color.ui`),noColorEnv:!!(t&&Yf(t,`NO_COLOR`)),stdoutIsTTY:r?.stdoutIsTTY===!0,term:t?Yf(t,`TERM`):void 0})}shouldVerifyPackfiles(){let e=this.currentEnv,t=e?Yf(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,qf),r=t;for(let e of Jf(n.flags.C))e!==``&&(r=e.startsWith(`/`)?e:`${r}/${e}`);let i=new Map;for(let e of Jf(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 ${Gt()})\n`,stderr:``,exitCode:0}}help(){return{stdout:`usage: git <command> [<args>]
120
120
 
121
121
  Available commands:
122
122
  init Initialize a new repository
@@ -155,9 +155,9 @@ Available commands:
155
155
  ${t}
156
156
  }
157
157
  ${ip}=$? ${rp}="\${PIPESTATUS[*]}"`:e}function sp(e){let t=0;for(let n=e.length-1;n>=0&&e[n]===`\\`;n--)t+=1;return t%2==0?e:`${e}\\`}function cp(e){if(!e)return[];let t=e.trim().split(/\s+/).filter(Boolean);if(t.length===0)return[];let n=[];for(let e of t){if(!ap.test(e))return[];let t=Number(e);if(t>255)return[];n.push(t)}return n}function lp(e,t){return t?op(e):e}function up(e,t){if(!t||!e.env)return e;let n=fp(e.env),r=n.exitCode===void 0?e:{...e,exitCode:n.exitCode};return n.pipeStatus.length===0?r:{...r,pipeStatus:n.pipeStatus}}function dp(e,t){return t===void 0?e:{...e,pipeStatus:t}}function fp(e){let t=e[rp],n=e[ip];delete e[rp],delete e[ip];let r;if(n!==void 0&&ap.test(n)){let e=Number(n);e<=255&&(r=e)}return{pipeStatus:cp(t),exitCode:r}}function pp(e){return e.length<2||e.every(e=>e===0)||!e.every(e=>Number.isInteger(e)&&e>=0&&e<=255)?null:`pipeline: ${e.join(` `)}`}function mp(e,t){let n=t?pp(t):null;return n?e?e.endsWith(`
158
- `)?`${e}${n}`:`${e}\n${n}`:n:e}var hp=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=xe();if(!e)return null;let t=e.onUpdate;return e=>{t({content:[{type:ms,progress:e}]})}}scrubbed(e){return this.scrubLabel?gp(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=_p(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:_p(i)})})}};async function gp(e,t){if(!t)return t;try{return await e(t)}catch{return`[label withheld: secret scrub unavailable]`}}function _p(e,t=80){return e.length>t?`${e.slice(0,t-1)}…`:e}function vp(e,t){return t.length?`${e} ${t.join(` `)}`:e}function yp(e){try{let t=new URL(e);return`↓ ${t.host}${t.pathname===`/`?``:t.pathname}`}catch{return`↓ ${e}`}}function bp(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:yp(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 xp={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}},Sp=new Set([`xargs`,`watch`,`parallel`,`bash`,`sh`,`eval`,`source`,`.`]);function Cp(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 wp(e,t){switch(e.type){case`CommandSubstitution`:return Fp(e.body,t);case`DoubleQuoted`:{let n=0;for(let r of e.parts){let e=wp(r,t);if(e===null)return null;n+=e}return n}case`ProcessSubstitution`:return null;default:return 0}}function Tp(e,t){let n=0;for(let r of e.parts){let e=wp(r,t);if(e===null)return null;n+=e}return n}function Ep(e,t){let n=0;for(let r of e.assignments){if(!r.value)continue;let e=Tp(r.value,t);if(e===null)return null;n+=e}for(let r of e.args){let e=Tp(r,t);if(e===null)return null;n+=e}if(!e.name)return n;let r=Cp(e.name);if(r===null||Sp.has(r))return null;if(!t.has(r))return n;n+=1;let i=xp[r];if(i){let r=e.args.map(Cp);if(r.some(e=>e===null))return null;let a=r[i(r)];if(a===void 0)return n;if(Sp.has(a))return null;t.has(a)&&(n+=1)}return n}function Dp(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 Op(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||Cp(r.name)!==`seq`)return null;let i=r.args.map(e=>{let t=Cp(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 kp(e){let t=0;for(let n of e){let e=n.type===`Word`?Ap(n.word):Dp(n);if(e===null)return null;t+=e}return t}function Ap(e){let t=Op(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=kp(t.items);if(e===null)return null;n*=e;break}default:return null}return n}function jp(e){let t=0;for(let n of e){let e=Ap(n);if(e===null)return null;t+=e}return t}function Mp(e,t){let n=0;for(let r of e){let e=Pp(r,t);if(e===null)return null;n+=e}return n}function Np(e,t){switch(e.type){case`SimpleCommand`:return Ep(e,t);case`For`:{if(!e.words)return null;let n=jp(e.words),r=Mp(e.body,t);return n===null||r===null?null:e.words.filter(e=>Op(e)!==null&&t.has(`seq`)).length+n*r}case`Subshell`:case`Group`:return Mp(e.body,t);case`FunctionDef`:return 0;default:return null}}function Pp(e,t){let n=0;for(let r of e.pipelines)for(let e of r.commands){let r=Np(e,t);if(r===null)return null;n+=r}return n}function Fp(e,t){return Mp(e.statements,t)}function Ip(e,t){let n=Fp(e,t);return{totalSteps:n!==null&&n>0?n:null}}function Lp(e){return e.split(`
159
- `).map(e=>e.trim()).find(e=>e.length>0&&!e.startsWith(`#`))||`bash`}var Rp=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 zp=globalThis.setTimeout.bind(globalThis);function Bp(e){let t=e/1e3;return`sleep ${Number.isInteger(t)?t:t.toFixed(1)}`}function Vp(e,t={}){let n=t.now??Date.now,r=t.setTimeout??zp,i=t.isAborted??(()=>!1),a=t.label??Bp,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 Hp=globalThis.setTimeout.bind(globalThis);function Up(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 Wp(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 Gp(e,t,n={}){let r=n.now??Date.now,i=n.setTimeout??Hp;return{...e,async execute(n,a){let o=Wp(n),s=o>=0?Up(n[o]):null;if(!t.hasSink()||s===null||s<=0)return e.execute(n,a);let c=t.allocateId(`timeout`),l=vp(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 Kp=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??Kp).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=vp(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 Jp=new Map([[`jsh`,`node`]]);function Yp(e,t){return`${Jp.get(e)??e} ${t.join(` `)}`.trim()}function Xp(e){return ct(`sudo`,e)}async function Zp(e,t){let n=e.trim();if(!n||rt(tt(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:Xp(r)};if(r.decision===`always`){let e=r.pattern?.trim()||n;await t.persistGrant(e)}return{allowed:!0}}function Qp(e){let t=e.replace(/\s+/g,` `).trim();if(t.length<=300)return t;let n=Array.from(t);return n.length<=300?t:`${n.slice(0,299).join(``).trimEnd()}…`}const $p=`__SLICC_SUDO_REASON`,em=/^#!/;function tm(e){let t=[];for(let n of e.split(`
160
- `)){let e=n.trim();if(e.length===0){if(t.length>0)break;continue}if(!e.startsWith(`#`))break;if(em.test(e))continue;let r=e.replace(/^#+/,``).trim();r&&t.push(r)}return Qp(t.join(` `))}const nm={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 rm(e,t=[],n){let r=nm[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: ${vt(n)}</div>`:``;return`
158
+ `)?`${e}${n}`:`${e}\n${n}`:n:e}var hp=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=Se();if(!e)return null;let t=e.onUpdate;return e=>{t({content:[{type:ms,progress:e}]})}}scrubbed(e){return this.scrubLabel?gp(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=_p(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:_p(i)})})}};async function gp(e,t){if(!t)return t;try{return await e(t)}catch{return`[label withheld: secret scrub unavailable]`}}function _p(e,t=80){return e.length>t?`${e.slice(0,t-1)}…`:e}function vp(e,t){return t.length?`${e} ${t.join(` `)}`:e}function yp(e){try{let t=new URL(e);return`↓ ${t.host}${t.pathname===`/`?``:t.pathname}`}catch{return`↓ ${e}`}}function bp(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:yp(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 xp={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}},Sp=new Set([`xargs`,`watch`,`parallel`,`bash`,`sh`,`eval`,`source`,`.`]);function Cp(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 wp(e,t){switch(e.type){case`CommandSubstitution`:return Fp(e.body,t);case`DoubleQuoted`:{let n=0;for(let r of e.parts){let e=wp(r,t);if(e===null)return null;n+=e}return n}case`ProcessSubstitution`:return null;default:return 0}}function Tp(e,t){let n=0;for(let r of e.parts){let e=wp(r,t);if(e===null)return null;n+=e}return n}function Ep(e,t){let n=0;for(let r of e.assignments){if(!r.value)continue;let e=Tp(r.value,t);if(e===null)return null;n+=e}for(let r of e.args){let e=Tp(r,t);if(e===null)return null;n+=e}if(!e.name)return n;let r=Cp(e.name);if(r===null||Sp.has(r))return null;if(!t.has(r))return n;n+=1;let i=xp[r];if(i){let r=e.args.map(Cp);if(r.some(e=>e===null))return null;let a=r[i(r)];if(a===void 0)return n;if(Sp.has(a))return null;t.has(a)&&(n+=1)}return n}function Dp(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 Op(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||Cp(r.name)!==`seq`)return null;let i=r.args.map(e=>{let t=Cp(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 kp(e){let t=0;for(let n of e){let e=n.type===`Word`?Ap(n.word):Dp(n);if(e===null)return null;t+=e}return t}function Ap(e){let t=Op(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=kp(t.items);if(e===null)return null;n*=e;break}default:return null}return n}function jp(e){let t=0;for(let n of e){let e=Ap(n);if(e===null)return null;t+=e}return t}function Mp(e,t){let n=0;for(let r of e){let e=Pp(r,t);if(e===null)return null;n+=e}return n}function Np(e,t){switch(e.type){case`SimpleCommand`:return Ep(e,t);case`For`:{if(!e.words)return null;let n=jp(e.words),r=Mp(e.body,t);return n===null||r===null?null:e.words.filter(e=>Op(e)!==null&&t.has(`seq`)).length+n*r}case`Subshell`:case`Group`:return Mp(e.body,t);case`FunctionDef`:return 0;default:return null}}function Pp(e,t){let n=0;for(let r of e.pipelines)for(let e of r.commands){let r=Np(e,t);if(r===null)return null;n+=r}return n}function Fp(e,t){return Mp(e.statements,t)}function Ip(e,t){let n=Fp(e,t);return{totalSteps:n!==null&&n>0?n:null}}function Lp(e){return e.split(`
159
+ `).map(e=>e.trim()).find(e=>e.length>0&&!e.startsWith(`#`))||`bash`}var Rp=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 zp=globalThis.setTimeout.bind(globalThis);function Bp(e){let t=e/1e3;return`sleep ${Number.isInteger(t)?t:t.toFixed(1)}`}function Vp(e,t={}){let n=t.now??Date.now,r=t.setTimeout??zp,i=t.isAborted??(()=>!1),a=t.label??Bp,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 Hp=globalThis.setTimeout.bind(globalThis);function Up(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 Wp(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 Gp(e,t,n={}){let r=n.now??Date.now,i=n.setTimeout??Hp;return{...e,async execute(n,a){let o=Wp(n),s=o>=0?Up(n[o]):null;if(!t.hasSink()||s===null||s<=0)return e.execute(n,a);let c=t.allocateId(`timeout`),l=vp(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 Kp=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??Kp).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=vp(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 Jp=new Map([[`jsh`,`node`]]);function Yp(e,t){return`${Jp.get(e)??e} ${t.join(` `)}`.trim()}function Xp(e){return lt(`sudo`,e)}async function Zp(e,t){let n=e.trim();if(!n||it(nt(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:Xp(r)};if(r.decision===`always`){let e=r.pattern?.trim()||n;await t.persistGrant(e)}return{allowed:!0}}function Qp(e){let t=e.replace(/\s+/g,` `).trim();if(t.length<=300)return t;let n=Array.from(t);return n.length<=300?t:`${n.slice(0,299).join(``).trimEnd()}…`}const $p=`__SLICC_SUDO_REASON`,em=/^#!/;function tm(e){let t=[];for(let n of e.split(`
160
+ `)){let e=n.trim();if(e.length===0){if(t.length>0)break;continue}if(!e.startsWith(`#`))break;if(em.test(e))continue;let r=e.replace(/^#+/,``).trim();r&&t.push(r)}return Qp(t.join(` `))}const nm={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 rm(e,t=[],n){let r=nm[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: ${yt(n)}</div>`:``;return`
161
161
  <div class="sprinkle-action-card">
162
162
  <div class="sprinkle-action-card__header">
163
163
  <div class="sprinkle-action-card__title-group">${r.title}${a}</div>
@@ -168,10 +168,10 @@ ${ip}=$? ${rp}="\${PIPESTATUS[*]}"`:e}function sp(e){let t=0;for(let n=e.length-
168
168
  <button class="sprinkle-btn sprinkle-btn--primary" data-action="approve" data-picker="${e}"${i}>${r.approve}</button>
169
169
  </div>
170
170
  </div>
171
- `}const im=Symbol(`mount:timeout`),am=Symbol(`mount:no-panel`);async function om(e,t){let n=Se.generateId(),r=!1,i=!1,a=Ce({id:n,html:rm(`directory`,[],t),onAction:(e,t)=>sm(e,t)},e.onUpdate).catch(e=>{if(r)return im;if(i)return am;throw e}),o,s=new Promise(e=>{o=setTimeout(()=>{r=!0,Se.cancel(n,`mount: timed out`),e(im)},3e5)}),c=new Promise(e=>{Se.waitForMount(n,5e3).then(()=>{},()=>{r||(i=!0,Se.cancel(n,`mount: panel did not render the approval card`),e(am))})}),l=await Promise.race([a,s,c]);if(o&&clearTimeout(o),l===im)throw Error(`mount: timed out after 5 minute(s) waiting for user approval`);if(l===am)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 sm(e,t){if(e!==`approve`)return{denied:!0};let n=t;if(n?.handleInIdb&&typeof n.idbKey==`string`)try{let e=await Tt(n.idbKey);return e?(await Ct(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 cm(e){let t=e?.parts;return t?.length!==1||t[0]?.type!==`Literal`?null:t[0].value??null}function lm(e){return{type:`Word`,parts:[{type:`Literal`,value:e}]}}function um(e){for(let t of e.args){let e=cm(t);if(e===`-o`||e===`--out`)return!0}return!1}function dm(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 fm(e){cm(e.name)!==`say`||um(e)||(e.args=[lm(`-o`),lm(`-`),...e.args])}function pm(e,t){if(Array.isArray(e)){for(let n of e)pm(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`&&dm(r);r?.type===`SimpleCommand`&&a&&fm(r),pm(r,a)}return}if(n.type===`CommandSubstitution`||n.type===`ProcessSubstitution`){pm(n.body,!0);return}for(let e of Object.values(n))pm(e,t)}const mm={name:`say-stdio`,transform(e){return pm(e.ast,!1),{ast:e.ast}}};function hm(e){if(e?.trim())return e.split(`,`).map(e=>e.trim()).filter(Boolean)}function gm(e){if(!e)return!1;let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`yes`}function _m(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:gm(e.installAll)},affinity:{apps:hm(e.apps),tasks:hm(e.tasks),role:hm(e.role),purpose:hm(e.purpose)},priority:n}})}const vm={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*vm.apps,r.push(`apps(${i.join(`, `)})`));let a=(e.affinity.tasks??[]).filter(e=>t.tasks.includes(e));return a.length&&(n+=a.length*vm.tasks,r.push(`tasks(${a.join(`, `)})`)),(e.affinity.role??[]).includes(t.role)&&(n+=vm.role,r.push(`role(${t.role})`)),(e.affinity.purpose??[]).includes(t.purpose)&&(n+=vm.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 bm(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 xm(e){let t=new Set;try{let n=await e.readDir(oi);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 Sm(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 Cm(e){return typeof e!=`string`||!e?null:v(e)||null}function wm(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 Tm(e,t){try{let n=Cm(t);if(!n)return[];let r=await e(`${ci}${n}.json`,{headers:{Accept:`application/json`}});return r.status===200?_m(ue(r.body).data):[]}catch{return[]}}async function Em(e){let t;try{t=await e(li,{headers:{Accept:`application/json`}})}catch(e){throw Error(vi(e,li))}if(t.status!==200)throw Error(`HTTP ${t.status}`);return _m(ue(t.body).data)}function Dm(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 Om(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 km(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 Ai(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 Oi(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 Am(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 Om(d,e,n,c,o,s,r.count,i,a);l.push(...t.results),u+=t.line;continue}let f=Dm(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 jm(e,t,n,r,i,a,o,s,c,l){let u=await yi(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 km(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 Oi(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 Mm(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 Nm(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=Sm(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=Sm(JSON.parse(t));break}catch{}}catch{}if(!a)return i(`no-profile`);let o,s;try{let[n,r,i]=await Promise.all([Em(t),Tm(t,a.company),xm(e)]);o=wm(n,r),s=i}catch(e){return i(`catalog-fetch`,[`upskill: failed to fetch skill catalog from ${li}: ${e instanceof Error?e.message:String(e)}`])}let c=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=Mm(await Promise.allSettled(Array.from(l.entries()).map(async([n,i])=>{let[a,o]=n.split(`/`),c=await gi(a,o,t);return c.status===`error`?jm(n,i,a,o,d,u,r,s,t,e):Am(n,i,di(c.files),d,u,r,s,e)})),f,p);let h=(Date.now()-r)/1e3;return p.length>0&&(await Ei(),m+=`\nInstalled ${p.length} recommended skill(s) in ${h.toFixed(1)}s\n`),{installedNames:p,errors:f,skipped:null,log:m,elapsedSeconds:h}}function Pm(e){let t=e.toLowerCase();return t.startsWith(`www.`)?t.slice(4):t}let Fm,Im;async function Lm(e){if(Fm)return Fm;if(Im!==void 0)return Im;Im=(async()=>{let t;try{t=await e(ui,{headers:{Accept:`application/json`}})}catch(e){throw Error(vi(e,ui))}if(t.status!==200)throw Error(`browse.sh returned HTTP ${t.status}`);let n=ue(t.body),r=Array.isArray(n)?n:n.skills??[];return Fm=r,r})();try{return await Im}catch(e){throw Im=void 0,e}}async function Rm(e,t){let n=await Lm(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 zm=/^[A-Za-z0-9._-]+$/;function Bm(e){return!e||e===`.`||e===`..`?!1:zm.test(e)}function Vm(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(`/`)||!Bm(r)||!Bm(i))return null;let a=Pm(r);return Bm(a)?{hostname:a,task:i}:null}function Hm(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 Um(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(`
171
+ `}const im=Symbol(`mount:timeout`),am=Symbol(`mount:no-panel`);async function om(e,t){let n=Ce.generateId(),r=!1,i=!1,a=we({id:n,html:rm(`directory`,[],t),onAction:(e,t)=>sm(e,t)},e.onUpdate).catch(e=>{if(r)return im;if(i)return am;throw e}),o,s=new Promise(e=>{o=setTimeout(()=>{r=!0,Ce.cancel(n,`mount: timed out`),e(im)},3e5)}),c=new Promise(e=>{Ce.waitForMount(n,5e3).then(()=>{},()=>{r||(i=!0,Ce.cancel(n,`mount: panel did not render the approval card`),e(am))})}),l=await Promise.race([a,s,c]);if(o&&clearTimeout(o),l===im)throw Error(`mount: timed out after 5 minute(s) waiting for user approval`);if(l===am)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 sm(e,t){if(e!==`approve`)return{denied:!0};let n=t;if(n?.handleInIdb&&typeof n.idbKey==`string`)try{let e=await Et(n.idbKey);return e?(await wt(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 cm(e){let t=e?.parts;return t?.length!==1||t[0]?.type!==`Literal`?null:t[0].value??null}function lm(e){return{type:`Word`,parts:[{type:`Literal`,value:e}]}}function um(e){for(let t of e.args){let e=cm(t);if(e===`-o`||e===`--out`)return!0}return!1}function dm(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 fm(e){cm(e.name)!==`say`||um(e)||(e.args=[lm(`-o`),lm(`-`),...e.args])}function pm(e,t){if(Array.isArray(e)){for(let n of e)pm(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`&&dm(r);r?.type===`SimpleCommand`&&a&&fm(r),pm(r,a)}return}if(n.type===`CommandSubstitution`||n.type===`ProcessSubstitution`){pm(n.body,!0);return}for(let e of Object.values(n))pm(e,t)}const mm={name:`say-stdio`,transform(e){return pm(e.ast,!1),{ast:e.ast}}};function hm(e){if(e?.trim())return e.split(`,`).map(e=>e.trim()).filter(Boolean)}function gm(e){if(!e)return!1;let t=e.trim().toLowerCase();return t===`true`||t===`1`||t===`yes`}function _m(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:gm(e.installAll)},affinity:{apps:hm(e.apps),tasks:hm(e.tasks),role:hm(e.role),purpose:hm(e.purpose)},priority:n}})}const vm={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*vm.apps,r.push(`apps(${i.join(`, `)})`));let a=(e.affinity.tasks??[]).filter(e=>t.tasks.includes(e));return a.length&&(n+=a.length*vm.tasks,r.push(`tasks(${a.join(`, `)})`)),(e.affinity.role??[]).includes(t.role)&&(n+=vm.role,r.push(`role(${t.role})`)),(e.affinity.purpose??[]).includes(t.purpose)&&(n+=vm.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 bm(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 xm(e){let t=new Set;try{let n=await e.readDir(si);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 Sm(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 Cm(e){return typeof e!=`string`||!e?null:ee(e)||null}function wm(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 Tm(e,t){try{let n=Cm(t);if(!n)return[];let r=await e(`${li}${n}.json`,{headers:{Accept:`application/json`}});return r.status===200?_m(de(r.body).data):[]}catch{return[]}}async function Em(e){let t;try{t=await e(ui,{headers:{Accept:`application/json`}})}catch(e){throw Error(yi(e,ui))}if(t.status!==200)throw Error(`HTTP ${t.status}`);return _m(de(t.body).data)}function Dm(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 Om(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 Ai(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 km(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 ji(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 ki(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 Am(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 Om(d,e,n,c,o,s,r.count,i,a);l.push(...t.results),u+=t.line;continue}let f=Dm(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 Ai(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 jm(e,t,n,r,i,a,o,s,c,l){let u=await bi(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 km(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 ki(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 Mm(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 Nm(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=Sm(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=Sm(JSON.parse(t));break}catch{}}catch{}if(!a)return i(`no-profile`);let o,s;try{let[n,r,i]=await Promise.all([Em(t),Tm(t,a.company),xm(e)]);o=wm(n,r),s=i}catch(e){return i(`catalog-fetch`,[`upskill: failed to fetch skill catalog from ${ui}: ${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=Mm(await Promise.allSettled(Array.from(l.entries()).map(async([n,i])=>{let[a,o]=n.split(`/`),c=await _i(a,o,t);return c.status===`error`?jm(n,i,a,o,d,u,r,s,t,e):Am(n,i,fi(c.files),d,u,r,s,e)})),f,p);let h=(Date.now()-r)/1e3;return p.length>0&&(await Di(),m+=`\nInstalled ${p.length} recommended skill(s) in ${h.toFixed(1)}s\n`),{installedNames:p,errors:f,skipped:null,log:m,elapsedSeconds:h}}function Pm(e){let t=e.toLowerCase();return t.startsWith(`www.`)?t.slice(4):t}let Fm,Im;async function Lm(e){if(Fm)return Fm;if(Im!==void 0)return Im;Im=(async()=>{let t;try{t=await e(di,{headers:{Accept:`application/json`}})}catch(e){throw Error(yi(e,di))}if(t.status!==200)throw Error(`browse.sh returned HTTP ${t.status}`);let n=de(t.body),r=Array.isArray(n)?n:n.skills??[];return Fm=r,r})();try{return await Im}catch(e){throw Im=void 0,e}}async function Rm(e,t){let n=await Lm(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 zm=/^[A-Za-z0-9._-]+$/;function Bm(e){return!e||e===`.`||e===`..`?!1:zm.test(e)}function Vm(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(`/`)||!Bm(r)||!Bm(i))return null;let a=Pm(r);return Bm(a)?{hostname:a,task:i}:null}function Hm(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 Um(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(`
172
172
  `)}function Wm(e){return e.replace(/(?:^|\n)> \[!NOTE\] \*\*Imported from browse\.sh\*\*[\s\S]*?(?:\n\n|$)/,`
173
173
  `)}function Gm(e,t){let n=e.match(/^(---\r?\n[\s\S]*?\r?\n---)(\r?\n|$)/);return n?`${n[1]}${n[2]||`
174
- `}\n${t}\n\n${e.slice(n[0].length)}`:`${t}\n\n${e}`}async function Km(e,t,n){let r=`${e}/${t}`,i=`${ui}/${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=ue(e.body)}catch(e){return{ok:!1,error:`failed to fetch browse.sh skill "${r}": ${vi(e,i)}`}}let o;if(a.skillMdUrl)try{let e=await n(a.skillMdUrl,{headers:{Accept:`text/plain`}});e.status===200&&(o=de(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=Hm(o,`name`),c=t.replace(/-[A-Za-z0-9]{4,8}$/,``),l=s||c||t;if(!Bm(l)||l.length>64)return{ok:!1,error:`refusing to install browse.sh skill with unsafe name "${l}"`};if(!Bm(e))return{ok:!1,error:`refusing to install browse.sh skill with unsafe hostname "${e}"`};let u=Um(a,r);return{ok:!0,dirName:`browse-${e}-${l}`,slug:r,content:Gm(o,u)}}async function qm(e,t,n,r,i=!1){let a=await Km(e,t,r);if(!a.ok)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let{dirName:o,slug:s,content:c}=a,l=`${oi}/${o}`;try{if(await n.stat(l),!i)return{stdout:``,stderr:`upskill: skill "${o}" already exists (use --force to overwrite)\n`,exitCode:1};await _i(n,l,await ji(n,o))}catch{}return await n.mkdir(l,{recursive:!0}),await n.writeFile(`${l}/SKILL.md`,c),await Si(n,o,{kind:`browse.sh`,source:s,skill:o,files:[`SKILL.md`]}),await Ei(),{stdout:`Installed skill "${o}" from browse.sh (${s})\n`,stderr:``,exitCode:0}}function Jm(){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 Ym(e){switch(e){case`native`:return`native`;case`agents`:return`.agents`;case`claude`:return`.claude`;case`marketplace`:return`marketplace`;case`plugin`:return`plugin`}}function Xm(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)} ${Ym(t.source).padEnd(11)} ${i}\n`}return o+=`\n${Jm()}`,o}function Zm(e){let t=`Skill: ${e.name}\n`;if(t+=`Description: ${e.description||`(none)`}\n`,t+=`Source: ${Ym(e.source)}\n`,t+=`Source root: ${e.sourceRoot}\n`,e.skillFilePath&&(t+=`Instructions: ${e.skillFilePath}\n`),e.shadowedPaths?.length){t+=`Shadowed paths:
174
+ `}\n${t}\n\n${e.slice(n[0].length)}`:`${t}\n\n${e}`}async function Km(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=de(e.body)}catch(e){return{ok:!1,error:`failed to fetch browse.sh skill "${r}": ${yi(e,i)}`}}let o;if(a.skillMdUrl)try{let e=await n(a.skillMdUrl,{headers:{Accept:`text/plain`}});e.status===200&&(o=fe(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=Hm(o,`name`),c=t.replace(/-[A-Za-z0-9]{4,8}$/,``),l=s||c||t;if(!Bm(l)||l.length>64)return{ok:!1,error:`refusing to install browse.sh skill with unsafe name "${l}"`};if(!Bm(e))return{ok:!1,error:`refusing to install browse.sh skill with unsafe hostname "${e}"`};let u=Um(a,r);return{ok:!0,dirName:`browse-${e}-${l}`,slug:r,content:Gm(o,u)}}async function qm(e,t,n,r,i=!1){let a=await Km(e,t,r);if(!a.ok)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let{dirName:o,slug:s,content:c}=a,l=`${si}/${o}`;try{if(await n.stat(l),!i)return{stdout:``,stderr:`upskill: skill "${o}" already exists (use --force to overwrite)\n`,exitCode:1};await vi(n,l,await Mi(n,o))}catch{}return await n.mkdir(l,{recursive:!0}),await n.writeFile(`${l}/SKILL.md`,c),await Ci(n,o,{kind:`browse.sh`,source:s,skill:o,files:[`SKILL.md`]}),await Di(),{stdout:`Installed skill "${o}" from browse.sh (${s})\n`,stderr:``,exitCode:0}}function Jm(){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 Ym(e){switch(e){case`native`:return`native`;case`agents`:return`.agents`;case`claude`:return`.claude`;case`marketplace`:return`marketplace`;case`plugin`:return`plugin`}}function Xm(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)} ${Ym(t.source).padEnd(11)} ${i}\n`}return o+=`\n${Jm()}`,o}function Zm(e){let t=`Skill: ${e.name}\n`;if(t+=`Description: ${e.description||`(none)`}\n`,t+=`Source: ${Ym(e.source)}\n`,t+=`Source root: ${e.sourceRoot}\n`,e.skillFilePath&&(t+=`Instructions: ${e.skillFilePath}\n`),e.shadowedPaths?.length){t+=`Shadowed paths:
175
175
  `;for(let n of e.shadowedPaths)t+=` - ${n}\n`}return t}function Qm(){return{stdout:`usage: upskill <command> [options]
176
176
 
177
177
  Install skills from GitHub repositories, the Tessl registry, or browse.sh.
@@ -260,7 +260,7 @@ Examples:
260
260
  upskill browse:weather.gov/get-forecast-1uezib
261
261
  upskill list --outdated
262
262
  upskill update --dry-run
263
- `,stderr:``,exitCode:0}}async function $m(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${Jm()}Install skills with: upskill owner/repo --all\n`,stderr:``,exitCode:0};let{collisions:o}=await Wn(t,Vn(r));return{...Gn(`skill`,Xm(a,`Discoverable skills`),o,{builtinNames:new Set(Xe())}),exitCode:0}}function eh(e){return S(`skill`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return{stdout:`usage: skill <command> [options]
263
+ `,stderr:``,exitCode:0}}async function $m(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${Jm()}Install skills with: upskill owner/repo --all\n`,stderr:``,exitCode:0};let{collisions:o}=await Gn(t,Hn(r));return{...Kn(`skill`,Xm(a,`Discoverable skills`),o,{builtinNames:new Set(Ze())}),exitCode:0}}function eh(e){return S(`skill`,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return{stdout:`usage: skill <command> [options]
264
264
 
265
265
  Commands:
266
266
  list List discoverable skills
@@ -279,18 +279,18 @@ Examples:
279
279
  skill list
280
280
  skill info bluebubbles
281
281
  skill read bluebubbles
282
- `,stderr:``,exitCode:0};let r=t[0],i=await import(`./kernel-worker-B69_4v-D.js`).then(e=>e.n);try{switch(r){case`list`:return $m(t,e,i,n.env.get(`PATH`));case`info`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: info requires a skill name
282
+ `,stderr:``,exitCode:0};let r=t[0],i=await import(`./kernel-worker-wFbHLDtK.js`).then(e=>e.n);try{switch(r){case`list`:return $m(t,e,i,n.env.get(`PATH`));case`info`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: info requires a skill name
283
283
  `,exitCode:1};let r=await i.getSkillInfo(e,n);return r?{stdout:Zm(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
284
284
  `,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+`
285
- `,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 th=[{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=>Di(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 nh(e){let t={skills:[],dryRun:!1,json:!1};for(let n=0;n<e.length;n++){let r=e[n],i=th.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 rh(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}async function ih(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 ah(e,t,n,r){let i=await ih(e,t);return pi(n)?i?{status:`kept-local`,write:!1}:{status:`added`,write:!0}:i?rh(i,r)?{status:`unchanged`,write:!1}:{status:`updated`,write:!0}:{status:`added`,write:!0}}async function oh(e,t,n,r){let i={changes:[],writes:[],removals:[]};for(let[r,a]of n){let n=`${t}/${r}`,{status:o,write:s}=await ah(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 mi(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 sh(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 yi(t),d=await xi(s,c,o.ref,u,!0,l||void 0);if(d&&r.sha===d&&await ch(e,n,r))return{...o,to:d,outcome:`current`,changes:[]};let f=await lh(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 oh(e,`${oi}/${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 mh(e,{changes:h,writes:g,removals:_}),await Si(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 ch(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 lh(e,t,n,r,i,a,o){let s=await gi(e,t,a,i??`main`);if(s.status===`ok`){let i=di(s.files),a=n||uh(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:ph(i,a),path:a}}try{return{files:fh(dh(await hi(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 uh(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 dh(e){return new Map([...e].filter(([e])=>fi(e)))}function fh(e){return new Map([...e].sort(([e],[t])=>e.localeCompare(t)))}function ph(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);fi(e)&&r.set(e,i)}return fh(r)}async function mh(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 Km(o,s,t);if(!c.ok)return{...a,outcome:`error`,error:c.error};let l=`${oi}/${n}/SKILL.md`,u=await ih(e,l),d=new TextEncoder().encode(c.content),f=u!==void 0&&Wm(new TextDecoder().decode(u))===Wm(c.content);if(rh(u,d)||f)return{...a,changes:[{path:`SKILL.md`,status:`unchanged`}]};let p=u?`updated`:`added`;return i||(await e.mkdir(`${oi}/${n}`,{recursive:!0}),await e.writeFile(l,d),await Si(e,n,{...r,files:[`SKILL.md`]})),{...a,outcome:`updated`,changes:[{path:`SKILL.md`,status:p}]}}function gh(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 _h(e,t,n,r){let i=Di(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 vh(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 Ci(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?_h(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\`
285
+ `,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 th=[{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=>Oi(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 nh(e){let t={skills:[],dryRun:!1,json:!1};for(let n=0;n<e.length;n++){let r=e[n],i=th.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 rh(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}async function ih(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 ah(e,t,n,r){let i=await ih(e,t);return mi(n)?i?{status:`kept-local`,write:!1}:{status:`added`,write:!0}:i?rh(i,r)?{status:`unchanged`,write:!1}:{status:`updated`,write:!0}:{status:`added`,write:!0}}async function oh(e,t,n,r){let i={changes:[],writes:[],removals:[]};for(let[r,a]of n){let n=`${t}/${r}`,{status:o,write:s}=await ah(e,n,r,a);i.changes.push({path:r,status:o}),s&&i.writes.push({path:n,content:a})}let a=new Set(r.files??[]);for(let r of await hi(e,t)){if(n.has(r))continue;let e=a.has(r);i.changes.push({path:r,status:e?`removed`:`kept-local`}),e&&i.removals.push(`${t}/${r}`)}return i.changes.sort((e,t)=>e.path.localeCompare(t.path)),i}async function sh(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 bi(t),d=await Si(s,c,o.ref,u,!0,l||void 0);if(d&&r.sha===d&&await ch(e,n,r))return{...o,to:d,outcome:`current`,changes:[]};let f=await lh(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 oh(e,`${si}/${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 mh(e,{changes:h,writes:g,removals:_}),await Ci(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 ch(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 lh(e,t,n,r,i,a,o){let s=await _i(e,t,a,i??`main`);if(s.status===`ok`){let i=fi(s.files),a=n||uh(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:ph(i,a),path:a}}try{return{files:fh(dh(await gi(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 uh(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 dh(e){return new Map([...e].filter(([e])=>pi(e)))}function fh(e){return new Map([...e].sort(([e],[t])=>e.localeCompare(t)))}function ph(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);pi(e)&&r.set(e,i)}return fh(r)}async function mh(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 Km(o,s,t);if(!c.ok)return{...a,outcome:`error`,error:c.error};let l=`${si}/${n}/SKILL.md`,u=await ih(e,l),d=new TextEncoder().encode(c.content),f=u!==void 0&&Wm(new TextDecoder().decode(u))===Wm(c.content);if(rh(u,d)||f)return{...a,changes:[{path:`SKILL.md`,status:`unchanged`}]};let p=u?`updated`:`added`;return i||(await e.mkdir(`${si}/${n}`,{recursive:!0}),await e.writeFile(l,d),await Ci(e,n,{...r,files:[`SKILL.md`]})),{...a,outcome:`updated`,changes:[{path:`SKILL.md`,status:p}]}}function gh(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 _h(e,t,n,r){let i=Oi(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 vh(e,t,n){if(t.length===0){let t=await xi(e);return{targets:t.provenanced,missing:[],skipped:t.unattributed}}let r=[],i=[];for(let a of t){let t=await wi(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?_h(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\`
286
286
  `:`upskill: no install provenance for "${e.name}" — re-run with --from <owner>/<repo> (optionally --path <dir>) to record its source, or reinstall it once
287
287
  `}function bh(e,t){return`${e} ${t}${e===1?``:`s`}`}function xh(e){return`\nSkipped ${bh(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.
288
288
  For the rest, record a source once with \`upskill update <skill> --from <owner>/<repo> --dry-run\`,
289
289
  after which a bare \`upskill update\` sweeps them too.
290
290
  `}function Sh(e,t,n,r,i){let a=t?`Skill update (dry run — nothing written):
291
291
  `:`Skill update:
292
- `;for(let n of e)a+=gh(n,t);if(i.length>0&&(a+=xh(i)),!n&&r&&e.length>0){let n=i.length>0?`all ${bh(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 Ch(e,t,n){let{targets:r,missing:i,skipped:a}=await vh(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 sh(e,t,i.name,i.provenance,n.branch,n.dryRun));return{results:o,skipped:a,missing:i}}async function wh(e,t,n){let r=nh(e);if(r.error)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{results:i,missing:a,skipped:o}=await Ch(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`:Sh([],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 Ei();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:Sh(i,r.dryRun,c,u,o),stderr:l,exitCode:+!u}}function Th(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 Eh(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 Dh(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}${Eh(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(`
293
- `)}\n`}async function Oh(e,t,n){let r=await(await import(`./kernel-worker-B69_4v-D.js`).then(e=>e.n)).discoverSkills(e),{collisions:i}=await Wn(e,Vn(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${Jm()}`,stderr:``,exitCode:0}:{...Gn(`upskill`,Xm(r,`Discoverable local skills`),i,{builtinNames:new Set(Xe())}),exitCode:0}}async function kh(e,t,n){let{results:r,skipped:i}=await Ch(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:Dh(r,i),stderr:c,exitCode:+!s}}async function Ah(e,t,n,r){let i=Th(e);return i.error?{stdout:``,stderr:`${i.error}\n`,exitCode:1}:i.outdated?kh(t,n,i.json):Oh(t,i.json,r)}async function jh(e,t){let n=`${si}/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(vi(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=ue(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=Ti(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 Mh(e,t){let n=`${si}/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: ${vi(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=ue(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=Ti(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 Nh=[{label:`Tessl`,host:new URL(si).host,fetch:jh},{label:`browse.sh`,host:new URL(ui).host,fetch:Rm}];function Ph(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 Fh(e,t,n=1){let r=await Promise.allSettled(Nh.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=Ph(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=Nh[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+=`
292
+ `;for(let n of e)a+=gh(n,t);if(i.length>0&&(a+=xh(i)),!n&&r&&e.length>0){let n=i.length>0?`all ${bh(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 Ch(e,t,n){let{targets:r,missing:i,skipped:a}=await vh(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 sh(e,t,i.name,i.provenance,n.branch,n.dryRun));return{results:o,skipped:a,missing:i}}async function wh(e,t,n){let r=nh(e);if(r.error)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{results:i,missing:a,skipped:o}=await Ch(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`:Sh([],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 Di();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:Sh(i,r.dryRun,c,u,o),stderr:l,exitCode:+!u}}function Th(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 Eh(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 Dh(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}${Eh(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(`
293
+ `)}\n`}async function Oh(e,t,n){let r=await(await import(`./kernel-worker-wFbHLDtK.js`).then(e=>e.n)).discoverSkills(e),{collisions:i}=await Gn(e,Hn(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${Jm()}`,stderr:``,exitCode:0}:{...Kn(`upskill`,Xm(r,`Discoverable local skills`),i,{builtinNames:new Set(Ze())}),exitCode:0}}async function kh(e,t,n){let{results:r,skipped:i}=await Ch(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:Dh(r,i),stderr:c,exitCode:+!s}}async function Ah(e,t,n,r){let i=Th(e);return i.error?{stdout:``,stderr:`${i.error}\n`,exitCode:1}:i.outdated?kh(t,n,i.json):Oh(t,i.json,r)}async function jh(e,t){let n=`${ci}/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(yi(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=de(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=Ei(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 Mh(e,t){let n=`${ci}/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: ${yi(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=de(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=Ei(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 Nh=[{label:`Tessl`,host:new URL(ci).host,fetch:jh},{label:`browse.sh`,host:new URL(di).host,fetch:Rm}];function Ph(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 Fh(e,t,n=1){let r=await Promise.allSettled(Nh.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=Ph(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=Nh[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+=`
294
294
  `}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:
295
295
  `,p+=` From Tessl: upskill <owner/repo> --skill <name>
296
296
  `,p+=` From browse.sh: upskill browse:<hostname>/<task>
@@ -306,25 +306,25 @@ Examples:
306
306
  `,stderr:o,exitCode:0};let l=``;for(let e of c)l+=zh(e);return{stdout:l,stderr:o,exitCode:0}}async function Vh(e,t,n){if(n){let n=await Nm(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.
307
307
  `,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.
308
308
  `,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.
309
- `,exitCode:1};let i,a;try{let[n,o,s]=await Promise.all([(async()=>{let e=await t(li,{headers:{Accept:`application/json`}});if(e.status!==200)throw Error(`HTTP ${e.status}`);return _m(ue(e.body).data)})(),Tm(t,r.company),xm(e)]);i=wm(n,o),a=s}catch(e){return{stdout:``,stderr:`upskill: failed to fetch skill catalog from ${li}: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let o=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.
309
+ `,exitCode:1};let i,a;try{let[n,o,s]=await Promise.all([(async()=>{let e=await t(ui,{headers:{Accept:`application/json`}});if(e.status!==200)throw Error(`HTTP ${e.status}`);return _m(de(e.body).data)})(),Tm(t,r.company),xm(e)]);i=wm(n,o),a=s}catch(e){return{stdout:``,stderr:`upskill: failed to fetch skill catalog from ${ui}: ${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.
310
310
  `,stderr:``,exitCode:0};let s=`Recommended skills for you:
311
311
 
312
312
  `,c=0;for(let e of o){c++;let t=bm(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
313
313
  `,{stdout:s,stderr:``,exitCode:0}}function Hh(e){return!e||e.startsWith(`-`)?{stdout:``,stderr:`upskill: --branch requires a value
314
314
  `,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
315
315
  `,exitCode:1}}function Uh(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
316
- `,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=Hh(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 Wh(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./kernel-worker-B69_4v-D.js`).then(e=>e.n);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 Ci(n,t),a=i?wi(i):"Installed from: (no provenance recorded — reinstall to enable `upskill update`)\n";return{stdout:Zm(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+`
317
- `,stderr:``,exitCode:0}}async function Gh(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 Kh(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 Oi(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 qh(e,t,n,r,i,a,o,s){let c=``,l=``,u=0;for(let d of e){let e=await Oi(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 Jh(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 Yh(e,t,n,r){let{owner:i,repo:a}=e,o=t.branch??e.branch,s=t.subPath??e.path,c=await yi(r),l=await Ai(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:Jh(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:Jh(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 gi(i,a,r,o);if(e.status===`ok`){let r=await xi(i,a,o,c,!0,s),l=await Gh(u,i,a,di(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 Kh(u,i,a,c,n,t.force,o,f);({output:p,errors:m,successCount:h}=e)}}else({output:p,errors:m,successCount:h}=await qh(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 Ei()),{stdout:p,stderr:m,exitCode:+!!m}}async function Xh(e,t,n,r,i){switch(e[0]){case`tabs`:return Bh(t,n,r,e.includes(`--json`));case`recommendations`:return Vh(t,n,e.includes(`--install`));case`update`:case`upgrade`:return wh(e.slice(1),t,n);case`list`:return Ah(e.slice(1),t,n,i);case`info`:case`read`:return Wh(e[0],e[1],t);case`search`:return Qh(e,n);default:return null}}function Zh(e,t,n){return S(`upskill`,async(r,i)=>{if(r.length===0||r.includes(`--help`)||r.includes(`-h`))return Qm();let a=await Xh(r,e,t,n,i.env.get(`PATH`));if(a)return a;let o=Uh(r);if(o.earlyReturn)return o.earlyReturn;if(!o.sourceRef)return Qm();if(o.sourceRef.startsWith(`tessl:`))return $h(o.sourceRef,o.force,e,t);let s=Vm(o.sourceRef);if(s)return qm(s.hostname,s.task,e,t,o.force);let c=Di(o.sourceRef);return c?Yh(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 Qh(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?Fh(a,t,i):Qm()}async function $h(e,t,n,r){let i=e.slice(6);if(!i)return{stdout:``,stderr:`upskill: tessl: requires a skill name
318
- `,exitCode:1};let a=await Mh(i,r);if(`error`in a)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let o=await yi(r);return Oi(a.owner,a.repo,a.skillPath,a.skillName,n,o,t,r)}function eg(){return{stdout:`usage: afplay [-v volume] [-r rate] <file>
316
+ `,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=Hh(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 Wh(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./kernel-worker-wFbHLDtK.js`).then(e=>e.n);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 wi(n,t),a=i?Ti(i):"Installed from: (no provenance recorded — reinstall to enable `upskill update`)\n";return{stdout:Zm(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+`
317
+ `,stderr:``,exitCode:0}}async function Gh(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 Ai(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 Kh(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(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 qh(e,t,n,r,i,a,o,s){let c=``,l=``,u=0;for(let d of e){let e=await ki(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 Jh(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 Yh(e,t,n,r){let{owner:i,repo:a}=e,o=t.branch??e.branch,s=t.subPath??e.path,c=await bi(r),l=await ji(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:Jh(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:Jh(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 _i(i,a,r,o);if(e.status===`ok`){let r=await Si(i,a,o,c,!0,s),l=await Gh(u,i,a,fi(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 Kh(u,i,a,c,n,t.force,o,f);({output:p,errors:m,successCount:h}=e)}}else({output:p,errors:m,successCount:h}=await qh(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 Di()),{stdout:p,stderr:m,exitCode:+!!m}}async function Xh(e,t,n,r,i){switch(e[0]){case`tabs`:return Bh(t,n,r,e.includes(`--json`));case`recommendations`:return Vh(t,n,e.includes(`--install`));case`update`:case`upgrade`:return wh(e.slice(1),t,n);case`list`:return Ah(e.slice(1),t,n,i);case`info`:case`read`:return Wh(e[0],e[1],t);case`search`:return Qh(e,n);default:return null}}function Zh(e,t,n){return S(`upskill`,async(r,i)=>{if(r.length===0||r.includes(`--help`)||r.includes(`-h`))return Qm();let a=await Xh(r,e,t,n,i.env.get(`PATH`));if(a)return a;let o=Uh(r);if(o.earlyReturn)return o.earlyReturn;if(!o.sourceRef)return Qm();if(o.sourceRef.startsWith(`tessl:`))return $h(o.sourceRef,o.force,e,t);let s=Vm(o.sourceRef);if(s)return qm(s.hostname,s.task,e,t,o.force);let c=Oi(o.sourceRef);return c?Yh(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 Qh(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?Fh(a,t,i):Qm()}async function $h(e,t,n,r){let i=e.slice(6);if(!i)return{stdout:``,stderr:`upskill: tessl: requires a skill name
318
+ `,exitCode:1};let a=await Mh(i,r);if(`error`in a)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let o=await bi(r);return ki(a.owner,a.repo,a.skillPath,a.skillName,n,o,t,r)}function eg(){return{stdout:`usage: afplay [-v volume] [-r rate] <file>
319
319
 
320
320
  Plays an audio file using the Web Audio API.
321
321
  -v volume Volume level (0 to 1, default 1)
322
322
  -r rate Playback rate (0.25 to 4, default 1)
323
- `,stderr:``,exitCode:0}}function tg(e){return{stdout:``,stderr:`afplay: ${e}\n`,exitCode:1}}function ng(e){return e instanceof Error?e.message:String(e)}const rg={"-v":`a volume value`,"-r":`a rate value`};function ig(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<0||t>1?`volume must be between 0 and 1`:null}function ag(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<.25||t>4?`rate must be between 0.25 and 4`:null}function og(e,t,n){switch(t){case`-v`:return ig(n)||(e.volume=Number.parseFloat(n),null);case`-r`:return ag(n)||(e.rate=Number.parseFloat(n),null);default:return`unknown option: ${t}`}}function sg(e){let t={volume:1,rate:1,filePath:null};for(let n=0;n<e.length;n++){let r=e[n];if(Object.hasOwn(rg,r)){let i=n+1<e.length&&!e[n+1].startsWith(`-`)?e[++n]:null;if(i==null)return tg(`${r} requires ${rg[r]}`);let a=og(t,r,i);if(a)return tg(a);continue}if(r.startsWith(`-`))return tg(`unknown option: ${r}`);if(t.filePath!==null)return tg(`only one file can be specified`);t.filePath=r}return t}let cg=null;function lg(){return(!cg||cg.state===`closed`)&&(cg=new AudioContext),cg}function ug(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function dg(e,t){let n=t.fs.resolvePath(t.cwd,e);try{return{bytes:new Uint8Array(await t.fs.readFileBuffer(n)),fullPath:n}}catch{return tg(`cannot open ${e}: No such file`)}}function fg(e,t){return Jn(e).startsWith(`audio/`)?null:tg(`${t} is not an audio file`)}async function pg(e,t,n,r,i){try{let n=Jn(t);return await i.call(`play-audio`,{bytes:ug(e),mimeType:n,volume:r},{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return tg(`failed to play ${n}: ${ng(e)}`)}}async function mg(e,t,n,r){try{let t=lg();t.state===`suspended`&&await t.resume();let i=await t.decodeAudioData(ug(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 tg(`failed to play ${t}: ${ng(e)}`)}}async function hg(e,t,n,r){let i=se()&&typeof AudioContext<`u`,a=y();if(!i&&!a)return tg(`Web Audio API unavailable in this environment`);let o=await dg(e,r);return`exitCode`in o?o:fg(o.fullPath,e)||(i?mg(o.bytes,e,t,n):pg(o.bytes,o.fullPath,e,t,a))}function gg(){return S(`afplay`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return eg();let n=sg(e);return`exitCode`in n?n:n.filePath?hg(n.filePath,n.volume,n.rate,t):eg()})}function _g(){return S(`chime`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?{stdout:`usage: chime
323
+ `,stderr:``,exitCode:0}}function tg(e){return{stdout:``,stderr:`afplay: ${e}\n`,exitCode:1}}function ng(e){return e instanceof Error?e.message:String(e)}const rg={"-v":`a volume value`,"-r":`a rate value`};function ig(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<0||t>1?`volume must be between 0 and 1`:null}function ag(e){let t=Number.parseFloat(e);return Number.isNaN(t)||t<.25||t>4?`rate must be between 0.25 and 4`:null}function og(e,t,n){switch(t){case`-v`:return ig(n)||(e.volume=Number.parseFloat(n),null);case`-r`:return ag(n)||(e.rate=Number.parseFloat(n),null);default:return`unknown option: ${t}`}}function sg(e){let t={volume:1,rate:1,filePath:null};for(let n=0;n<e.length;n++){let r=e[n];if(Object.hasOwn(rg,r)){let i=n+1<e.length&&!e[n+1].startsWith(`-`)?e[++n]:null;if(i==null)return tg(`${r} requires ${rg[r]}`);let a=og(t,r,i);if(a)return tg(a);continue}if(r.startsWith(`-`))return tg(`unknown option: ${r}`);if(t.filePath!==null)return tg(`only one file can be specified`);t.filePath=r}return t}let cg=null;function lg(){return(!cg||cg.state===`closed`)&&(cg=new AudioContext),cg}function ug(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function dg(e,t){let n=t.fs.resolvePath(t.cwd,e);try{return{bytes:new Uint8Array(await t.fs.readFileBuffer(n)),fullPath:n}}catch{return tg(`cannot open ${e}: No such file`)}}function fg(e,t){return Yn(e).startsWith(`audio/`)?null:tg(`${t} is not an audio file`)}async function pg(e,t,n,r,i){try{let n=Yn(t);return await i.call(`play-audio`,{bytes:ug(e),mimeType:n,volume:r},{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return tg(`failed to play ${n}: ${ng(e)}`)}}async function mg(e,t,n,r){try{let t=lg();t.state===`suspended`&&await t.resume();let i=await t.decodeAudioData(ug(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 tg(`failed to play ${t}: ${ng(e)}`)}}async function hg(e,t,n,r){let i=ce()&&typeof AudioContext<`u`,a=y();if(!i&&!a)return tg(`Web Audio API unavailable in this environment`);let o=await dg(e,r);return`exitCode`in o?o:fg(o.fullPath,e)||(i?mg(o.bytes,e,t,n):pg(o.bytes,o.fullPath,e,t,a))}function gg(){return S(`afplay`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return eg();let n=sg(e);return`exitCode`in n?n:n.filePath?hg(n.filePath,n.volume,n.rate,t):eg()})}function _g(){return S(`chime`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?{stdout:`usage: chime
324
324
 
325
325
  Plays a notification chime sound.
326
326
  Alias for: afplay /shared/sounds/chime.mp3
327
- `,stderr:``,exitCode:0}:hg(`/shared/sounds/chime.mp3`,1,1,t))}const vg=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 bg(e,t,n){let r=yg(e,t,n);return`error`in r?{error:r.error,consumed:0}:je(r.value)?{value:r.value,consumed:r.consumed}:{error:`agent: ${e} must be one of: ${Me.join(`, `)}`,consumed:0}}function xg(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 Sg(e,t){let n=yg(`--read-only`,e,t);if(`error`in n)return{error:n.error,consumed:0};let r=Og(n.value);return r.length===0?{error:`agent: --read-only requires a non-empty value`,consumed:0}:{value:r,consumed:n.consumed}}function Cg(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 wg={"-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=bg(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=bg(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=xg(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=Ae(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=Sg(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=Cg(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})};function Tg(e,t,n,r){if(r.positionals.length===2)return r.positionals.push(e),{consumed:1};if(e.length>0&&e.startsWith(`-`)){let i=wg[e];return i?i(e,t,n,r):{error:`agent: unknown flag '${e}'`,consumed:0}}return r.positionals.push(e),{consumed:1}}function Eg(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 Dg(e){let t={positionals:[],help:!1},n=0;for(;n<e.length;){let r=Tg(e[n],e,n,t);if(r.error)return{help:!1,error:r.error};n+=r.consumed}let r=Eg(t);if(`help`in r)return{help:!0};if(`error`in r)return{help:!1,error:r.error};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}}function Og(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function kg(e,t){if(e.startsWith(`/`))return b(e);let n=t.length>0?t:`/`;return b(`${n}/${e}`)}function Ag(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function jg(e){return e==null?`
327
+ `,stderr:``,exitCode:0}:hg(`/shared/sounds/chime.mp3`,1,1,t))}const vg=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 bg(e,t,n){let r=yg(e,t,n);return`error`in r?{error:r.error,consumed:0}:Me(r.value)?{value:r.value,consumed:r.consumed}:{error:`agent: ${e} must be one of: ${Ne.join(`, `)}`,consumed:0}}function xg(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 Sg(e,t){let n=yg(`--read-only`,e,t);if(`error`in n)return{error:n.error,consumed:0};let r=Og(n.value);return r.length===0?{error:`agent: --read-only requires a non-empty value`,consumed:0}:{value:r,consumed:n.consumed}}function Cg(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 wg={"-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=bg(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=bg(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=xg(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=je(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=Sg(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=Cg(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})};function Tg(e,t,n,r){if(r.positionals.length===2)return r.positionals.push(e),{consumed:1};if(e.length>0&&e.startsWith(`-`)){let i=wg[e];return i?i(e,t,n,r):{error:`agent: unknown flag '${e}'`,consumed:0}}return r.positionals.push(e),{consumed:1}}function Eg(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 Dg(e){let t={positionals:[],help:!1},n=0;for(;n<e.length;){let r=Tg(e[n],e,n,t);if(r.error)return{help:!1,error:r.error};n+=r.consumed}let r=Eg(t);if(`help`in r)return{help:!0};if(`error`in r)return{help:!1,error:r.error};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}}function Og(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function kg(e,t){if(e.startsWith(`/`))return b(e);let n=t.length>0?t:`/`;return b(`${n}/${e}`)}function Ag(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function jg(e){return e==null?`
328
328
  `:e.replace(/\n+$/,``)+`
329
329
  `}function Mg(e){return e==null||e===``?``:e.replace(/\n+$/,``)+`
330
330
  `}function Ng(){let e=globalThis.__slicc_agent;if(!(!e||typeof e.spawn!=`function`))return e}function Pg(e,t,n){return t?`agent: cwd not found: ${n}\n`:e&&!e.isDirectory?`agent: cwd not a directory: ${n}\n`:null}function Fg(e,t,n){let r=e;return typeof r.canWrite==`function`&&!r.canWrite(t)?`agent: cwd not writable: ${n}\n`:null}function Ig(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),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 Lg(e={}){let{getParentJid:t}=e;return S(`agent`,async(e,n)=>{let r=Dg(e);if(r.help)return{stdout:`usage: agent <cwd> <allowed-commands> <prompt>
@@ -417,7 +417,7 @@ Examples:
417
417
  `,exitCode:1};let a=kg(i,n.cwd),o=Ag(r.allowedCommandsRaw??``),s=r.prompt??``,c=null,l=!1;try{c=await n.fs.stat(a)}catch{l=!0}let u=Pg(c,l,i);if(u)return{stdout:``,stderr:u,exitCode:1};let d=Fg(n.fs,a,i);if(d)return{stdout:``,stderr:d,exitCode:1};let f=Ng();return f?Rg(f,Ig(r,a,o,s,n,t)):{stdout:``,stderr:`agent: orchestrator bridge not available
418
418
  `,exitCode:1}})}async function Rg(e,t){try{let n=await e.spawn(t),r=typeof n?.exitCode==`number`?n.exitCode:0,i=n?.finalText;return r===0?{stdout:jg(i),stderr:``,exitCode:0}:{stdout:``,stderr:Mg(i),exitCode:r}}catch(e){let t=e instanceof Error?e.message:String(e);return vg.error(`agent bridge threw`,e),{stdout:``,stderr:`${t}\n`,exitCode:1}}}const zg=[`bg`,`caller`,`disown`,`enable`,`fc`,`fg`,`jobs`,`logout`,`suspend`,`times`,`trap`,`ulimit`,`umask`];function Bg(){return zg.map(e=>S(e,async(t,n)=>{let{runBashBuiltin:r}=await import(`./run-BP0Pyqp1.js`);return r(e,t,n)}))}function Vg(e,t){e.escaped?e.escaped=!1:t===`\\`?e.escaped=!0:t===`"`&&(e.inString=!1)}function Hg(e,t){let n=t+2;for(;n<e.length&&e[n]!==`
419
419
  `&&e[n]!==`\r`;)n++;return{text:` `.repeat(n-t),end:n-1}}function Ug(e,t){let n=` `,r=t+2;for(;r<e.length&&(e[r]!==`*`||e[r+1]!==`/`);)n+=e[r]===`
420
- `||e[r]===`\r`?e[r]:` `,r++;return r<e.length&&(n+=` `,r++),{text:n,end:r}}function Wg(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,Vg(n,i);continue}if(i===`"`){n.inString=!0,t+=i;continue}if(i===`/`&&a===`/`){let n=Hg(e,r);t+=n.text,r=n.end;continue}if(i===`/`&&a===`*`){let n=Ug(e,r);t+=n.text,r=n.end;continue}t+=i}return t}function Gg(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 Kg(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qg(e){let t=e.charCodeAt(0)===65279?e.slice(1):e,n=JSON.parse(Gg(Wg(t)));if(!Kg(n))throw Error(`configuration must contain a JSON object`);return n}function Jg(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 Yg(e){let t=e.plugins;if(!Array.isArray(t))return null;for(let e of t){let t=Jg(e);if(t!==null)return t}return null}async function Xg(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=Te(n).dir}}async function Zg(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=qg(r),i=Yg(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 Qg(e,t,n,r){if(r!==null){let n=b(e.resolvePath(t,r));return await e.exists(n)?Zg(e,n,2):{ok:!1,error:`biome: configuration file not found: ${n}`,exitCode:2}}let i=await Xg(e,n);return i===null?{ok:!0,resolved:null}:Zg(e,i,1)}const $g=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(`.`)),e_={amp:`&`,apos:`'`,gt:`>`,lt:`<`,nbsp:` `,quot:`"`};function t_(e){let t=e.slice(1,-1);if(!t.startsWith(`#`))return e_[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 n_(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+=`
420
+ `||e[r]===`\r`?e[r]:` `,r++;return r<e.length&&(n+=` `,r++),{text:n,end:r}}function Wg(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,Vg(n,i);continue}if(i===`"`){n.inString=!0,t+=i;continue}if(i===`/`&&a===`/`){let n=Hg(e,r);t+=n.text,r=n.end;continue}if(i===`/`&&a===`*`){let n=Ug(e,r);t+=n.text,r=n.end;continue}t+=i}return t}function Gg(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 Kg(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qg(e){let t=e.charCodeAt(0)===65279?e.slice(1):e,n=JSON.parse(Gg(Wg(t)));if(!Kg(n))throw Error(`configuration must contain a JSON object`);return n}function Jg(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 Yg(e){let t=e.plugins;if(!Array.isArray(t))return null;for(let e of t){let t=Jg(e);if(t!==null)return t}return null}async function Xg(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=Ee(n).dir}}async function Zg(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=qg(r),i=Yg(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 Qg(e,t,n,r){if(r!==null){let n=b(e.resolvePath(t,r));return await e.exists(n)?Zg(e,n,2):{ok:!1,error:`biome: configuration file not found: ${n}`,exitCode:2}}let i=await Xg(e,n);return i===null?{ok:!0,resolved:null}:Zg(e,i,1)}const $g=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(`.`)),e_={amp:`&`,apos:`'`,gt:`>`,lt:`<`,nbsp:` `,quot:`"`};function t_(e){let t=e.slice(1,-1);if(!t.startsWith(`#`))return e_[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 n_(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+=`
421
421
  `,r=!1):s&&$g.has(s)&&t.length>0&&!t.endsWith(`
422
422
  `)&&(t+=`
423
423
  `,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,t_)}const r_=new Set([`js`,`mjs`,`cjs`,`jsx`,`ts`,`mts`,`cts`,`tsx`,`json`,`jsonc`,`css`,`graphql`,`gql`,`html`,`svelte`,`vue`,`astro`,`jsh`,`bsh`]);function i_(e){let t=e.lastIndexOf(`.`);return t<0?!1:r_.has(e.slice(t+1).toLowerCase())}function a_(e){return e.endsWith(`.jsh`)||e.endsWith(`.bsh`)?`${e.slice(0,-4)}.js`:e}const o_=`async function __slicc() {
@@ -427,7 +427,7 @@ Examples:
427
427
  `)+`
428
428
  `}function d_(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 f_=new Set([`check`,`lint`,`format`]);function p_(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===`
429
429
  `&&l++;let u=c.lastIndexOf(`
430
- `),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 m_=`2.5.14`,h_=`6.0.0`,g_=Jr,__=`@biomejs/wasm-web@${m_} @biomejs/js-api@${h_} esbuild-wasm@${g_}`,v_={"@biomejs/wasm-web":`@biomejs/wasm-web@${m_}`,"@biomejs/js-api":`@biomejs/js-api@${h_}`,"esbuild-wasm":`esbuild-wasm@${g_}`},y_=`run: ${N} ${__} (no network fallback)`,b_=`biome - thin wrapper over the ipk-loaded @biomejs/wasm-web
430
+ `),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 m_=`2.5.14`,h_=`6.0.0`,g_=Yr,__=`@biomejs/wasm-web@${m_} @biomejs/js-api@${h_} esbuild-wasm@${g_}`,v_={"@biomejs/wasm-web":`@biomejs/wasm-web@${m_}`,"@biomejs/js-api":`@biomejs/js-api@${h_}`,"esbuild-wasm":`esbuild-wasm@${g_}`},y_=`run: ${N} ${__} (no network fallback)`,b_=`biome - thin wrapper over the ipk-loaded @biomejs/wasm-web
431
431
 
432
432
  Usage:
433
433
  biome <subcommand> [options] [files...]
@@ -474,7 +474,7 @@ Install:
474
474
  lint/format to run (loading the wasm-web ESM glue also needs the
475
475
  esbuild-wasm transpiler). There is no bundled binary, no CDN
476
476
  fallback; a missing package exits non-zero with a clear \`ipk add\` hint.
477
- `;function x_(e,t,n){let r=e[t+1];if(typeof r!=`string`||r.startsWith(`-`))throw Error(`biome: ${n} requires a value`);return r}function S_(e){if(!e)throw Error(`biome: --reporter requires a value`);if(e!==`plain`&&e!==`json`)throw Error(`biome: unknown reporter: ${e}`);return e}function C_(e){return e.some((t,n)=>t===`--json`||t===`--reporter=json`||t===`--reporter`&&e[n+1]===`json`)}function w_(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=x_(t,n,r),n+1;case`--config-path`:return e.configPath=x_(t,n,r),n+1;case`--reporter`:return e.reporter=S_(x_(t,n,r)),n+1}return r.startsWith(`--stdin-file-path=`)?(e.stdinFilePath=T_(r,`--stdin-file-path`),n):r.startsWith(`--config-path=`)?(e.configPath=T_(r,`--config-path`),n):r.startsWith(`--reporter=`)?(e.reporter=S_(r.slice(11)),n):null}function T_(e,t){let n=e.slice(t.length+1);if(!n)throw Error(`biome: ${t} requires a value`);return n}function E_(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=w_(t,e,n);if(i!==null){n=i;continue}if(t.subcommand===null&&f_.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 D_(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 O_(e,n,r):i_(n)&&r.push(n)}return{files:r,missing:i}}async function O_(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 O_(e,r,n):i_(r)&&n.push(r)}}async function k_(e){let t;try{t=await qn(`@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 A_(e){let t;try{t=await qn(`@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 qn(`@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 qn(`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:Te(t.path).dir}}function j_(e,t){let n=a_(b(e));if(t===null)return n;let r=Ee(t),i=Ee(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 M_=`
477
+ `;function x_(e,t,n){let r=e[t+1];if(typeof r!=`string`||r.startsWith(`-`))throw Error(`biome: ${n} requires a value`);return r}function S_(e){if(!e)throw Error(`biome: --reporter requires a value`);if(e!==`plain`&&e!==`json`)throw Error(`biome: unknown reporter: ${e}`);return e}function C_(e){return e.some((t,n)=>t===`--json`||t===`--reporter=json`||t===`--reporter`&&e[n+1]===`json`)}function w_(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=x_(t,n,r),n+1;case`--config-path`:return e.configPath=x_(t,n,r),n+1;case`--reporter`:return e.reporter=S_(x_(t,n,r)),n+1}return r.startsWith(`--stdin-file-path=`)?(e.stdinFilePath=T_(r,`--stdin-file-path`),n):r.startsWith(`--config-path=`)?(e.configPath=T_(r,`--config-path`),n):r.startsWith(`--reporter=`)?(e.reporter=S_(r.slice(11)),n):null}function T_(e,t){let n=e.slice(t.length+1);if(!n)throw Error(`biome: ${t} requires a value`);return n}function E_(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=w_(t,e,n);if(i!==null){n=i;continue}if(t.subcommand===null&&f_.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 D_(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 O_(e,n,r):i_(n)&&r.push(n)}return{files:r,missing:i}}async function O_(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 O_(e,r,n):i_(r)&&n.push(r)}}async function k_(e){let t;try{t=await Jn(`@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 A_(e){let t;try{t=await Jn(`@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 Jn(`@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 Jn(`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:Ee(t.path).dir}}function j_(e,t){let n=a_(b(e));if(t===null)return n;let r=De(t),i=De(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 M_=`
478
478
  const fs = require('fs');
479
479
  const JSH_WRAP_PREFIX = ${JSON.stringify(o_)};
480
480
  const JSH_WRAP_SUFFIX = ${JSON.stringify(`
@@ -606,10 +606,10 @@ async function main() {
606
606
  process.stdout.write(JSON.stringify(results));
607
607
  }
608
608
  main().catch((err) => { process.stderr.write(String(err && err.message || err) + '\\n'); process.exit(1); });
609
- `;function N_(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} ${v_[n]??n}); ${y_}\n`}async function P_(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:j_(e.path,a),source:e.source,wrap:c_(e.path)}))},u=[`node`,`[biome-helper]`,JSON.stringify(l),c];return F_(await Hr(M_,u,e,void 0,{filename:`[biome-helper]`}))}function F_(e){if(e.exitCode!==0)return{results:[],stderr:N_(e.stderr)??e.stderr,exitCode:e.exitCode};if(e.stdout.trim()===``){let t=N_(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)
609
+ `;function N_(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} ${v_[n]??n}); ${y_}\n`}async function P_(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:j_(e.path,a),source:e.source,wrap:c_(e.path)}))},u=[`node`,`[biome-helper]`,JSON.stringify(l),c];return F_(await Ur(M_,u,e,void 0,{filename:`[biome-helper]`}))}function F_(e){if(e.exitCode!==0)return{results:[],stderr:N_(e.stderr)??e.stderr,exitCode:e.exitCode};if(e.stdout.trim()===``){let t=N_(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)
610
610
  `,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 I_(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 L_(e,t){let n=await A_(t);if(!n.ok)return{stdout:``,stderr:`biome: ${n.missing} is not installed (run: ${N} ${v_[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} ${v_[`@biomejs/wasm-web`]})\n`,exitCode:1}}async function R_(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
611
611
  `,exitCode:2};let n=await D_(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 z_(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(n_(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 B_(e){let t=await k_(e);return t?{stdout:`${t}\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`biome: @biomejs/wasm-web is not installed (run: ${N} @biomejs/wasm-web@${m_}); ${y_}\n`,exitCode:1}}async function V_(e,t){return e.showHelp?I_(e.reporter,{stdout:b_,stderr:``,exitCode:0},`usage`):e.showVersion?I_(e.reporter,await B_(t),`runtime`):null}function H_(e,t){let n=e.paths[0];if(!n)return``;try{return t.fs.resolvePath(t.cwd,n)}catch{return``}}async function U_(e,t){let n=d_(t),r=await V_(e,n);if(r)return r;if(e.subcommand===null)return I_(e.reporter,{stdout:``,stderr:`biome: missing subcommand (expected check, lint, or format)
612
- `,exitCode:2},`usage`);let i=await R_(t,e);if(`exitCode`in i)return I_(e.reporter,i,`io`);let a=e.paths.length===0&&t.stdin?t.cwd:Te(i.inputs[0].path).dir,o=await Qg(t.fs,t.cwd,a,e.configPath);if(!o.ok)return I_(e.reporter,{stdout:``,stderr:`${o.error}\n`,exitCode:o.exitCode},`configuration`,i.inputs[0].path);let s=await L_(t,n);if(`exitCode`in s)return I_(e.reporter,s,`runtime`,i.inputs[0].path);let c=await P_(t,e.subcommand,e.write,e.check,o.resolved?.configuration??null,o.resolved===null?null:Te(o.resolved.path).dir,e.reporter,i.inputs,s.wasmPath);return c.exitCode===0?z_(t,e,i.inputs,c,i.missingErrText):I_(e.reporter,{stdout:``,stderr:i.missingErrText+c.stderr,exitCode:c.exitCode},`runtime`,i.inputs[0].path)}function W_(){return S(`biome`,async(e,t)=>{let n;try{n=E_(e)}catch(t){return I_(C_(e)?`json`:`plain`,{stdout:``,stderr:`${t instanceof Error?t.message:String(t)}\n`,exitCode:2},`usage`)}try{return await U_(n,t)}catch(e){if(n.reporter===`plain`)throw e;return I_(`json`,{stdout:``,stderr:`biome: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1},`runtime`,H_(n,t))}})}function G_(e=`biscotto`){return S(e,async(t,n)=>{let{runBiscotto:r}=await import(`./run-bsSiDp2z.js`);return r(e,t,n)})}function K_(e={}){let t=e.getFollowers??ee,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 q_=[`--detail`,`--runtime`];function J_(e){return{stdout:``,stderr:`cherry-emit: ${e}\n`,exitCode:1}}function Y_(e){let t=C(e,{value:q_});return`error`in t?J_(t.error):{positionals:t.positionals,detailJson:t.values.get(`--detail`),runtime:t.values.get(`--runtime`)}}function X_(e,t){return e.length===0?J_(`no cherry follower runtime is connected`):t?e.includes(t)?t:J_(`runtime '${t}' not connected. Available: ${e.join(`, `)}`):e.length>1?J_(`multiple runtimes connected, pass --runtime <id>. Available: ${e.join(`, `)}`):e[0]}function Z_(e){if(e===void 0)return{detail:void 0};try{return{detail:JSON.parse(e)}}catch{return J_(`--detail must be valid JSON`)}}function Q_(e={}){let t=e.registry??K_();return S(`cherry-emit`,async e=>{if(w(e,{valueFlags:q_}))return{stdout:`cherry-emit - push a slicc.event to a cherry host page through a follower runtime
612
+ `,exitCode:2},`usage`);let i=await R_(t,e);if(`exitCode`in i)return I_(e.reporter,i,`io`);let a=e.paths.length===0&&t.stdin?t.cwd:Ee(i.inputs[0].path).dir,o=await Qg(t.fs,t.cwd,a,e.configPath);if(!o.ok)return I_(e.reporter,{stdout:``,stderr:`${o.error}\n`,exitCode:o.exitCode},`configuration`,i.inputs[0].path);let s=await L_(t,n);if(`exitCode`in s)return I_(e.reporter,s,`runtime`,i.inputs[0].path);let c=await P_(t,e.subcommand,e.write,e.check,o.resolved?.configuration??null,o.resolved===null?null:Ee(o.resolved.path).dir,e.reporter,i.inputs,s.wasmPath);return c.exitCode===0?z_(t,e,i.inputs,c,i.missingErrText):I_(e.reporter,{stdout:``,stderr:i.missingErrText+c.stderr,exitCode:c.exitCode},`runtime`,i.inputs[0].path)}function W_(){return S(`biome`,async(e,t)=>{let n;try{n=E_(e)}catch(t){return I_(C_(e)?`json`:`plain`,{stdout:``,stderr:`${t instanceof Error?t.message:String(t)}\n`,exitCode:2},`usage`)}try{return await U_(n,t)}catch(e){if(n.reporter===`plain`)throw e;return I_(`json`,{stdout:``,stderr:`biome: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1},`runtime`,H_(n,t))}})}function G_(e=`biscotto`){return S(e,async(t,n)=>{let{runBiscotto:r}=await import(`./run-bsSiDp2z.js`);return r(e,t,n)})}function K_(e={}){let t=e.getFollowers??te,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 q_=[`--detail`,`--runtime`];function J_(e){return{stdout:``,stderr:`cherry-emit: ${e}\n`,exitCode:1}}function Y_(e){let t=C(e,{value:q_});return`error`in t?J_(t.error):{positionals:t.positionals,detailJson:t.values.get(`--detail`),runtime:t.values.get(`--runtime`)}}function X_(e,t){return e.length===0?J_(`no cherry follower runtime is connected`):t?e.includes(t)?t:J_(`runtime '${t}' not connected. Available: ${e.join(`, `)}`):e.length>1?J_(`multiple runtimes connected, pass --runtime <id>. Available: ${e.join(`, `)}`):e[0]}function Z_(e){if(e===void 0)return{detail:void 0};try{return{detail:JSON.parse(e)}}catch{return J_(`--detail must be valid JSON`)}}function Q_(e={}){let t=e.registry??K_();return S(`cherry-emit`,async e=>{if(w(e,{valueFlags:q_}))return{stdout:`cherry-emit - push a slicc.event to a cherry host page through a follower runtime
613
613
 
614
614
  Usage: cherry-emit <name> [--detail <json>] [--runtime <id>]
615
615
 
@@ -627,7 +627,7 @@ Usage: cherry-emit <name> [--detail <json>] [--runtime <id>]
627
627
  -o Force paste mode (write to stdout)
628
628
  (default) Auto-detect: stdin present = copy, no stdin = paste
629
629
  Example: echo hello | ${e}\n Example: ${e} -o > file.txt\n`,stderr:``,exitCode:0}}async function rv(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: ${$_(e)}\n`,exitCode:1}}}async function iv(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: ${$_(t)}\n`,exitCode:1}}}function av(){return S(`pbcopy`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?ev():rv(P(t.stdin),`pbcopy`))}function ov(){return S(`pbpaste`,async e=>e.includes(`--help`)||e.includes(`-h`)?tv():iv(`pbpaste`))}function sv(e){return S(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return nv(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 iv(e);let a=P(n.stdin);return r||a.length>0?rv(a,e):iv(e)})}function cv(){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
630
- `,exitCode:2};let i=await lv(t,r[0]);if(`error`in i)return n?{...i.error,stderr:``}:i.error;let a=await lv(t,r[1]);if(`error`in a)return n?{...a.error,stderr:``}:a.error;let o=uv(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 lv(e,t){if(t===`-`){let t=ei(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 uv(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 dv(e={}){return S(`computer`,async(t,n)=>{let{runComputer:r}=await import(`./run-BVlVC7jS.js`).then(e=>e.t);return r(t,n,e)})}var fv=`/assets/AdobeClean-Regular-CVsq5gF7.otf`;function pv(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 mv(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 hv=`AdobeClean-Regular.otf`,gv=new WeakSet;let _v=null;function vv(){return{stdout:`usage: convert [input ...] [operations...] [output]
630
+ `,exitCode:2};let i=await lv(t,r[0]);if(`error`in i)return n?{...i.error,stderr:``}:i.error;let a=await lv(t,r[1]);if(`error`in a)return n?{...a.error,stderr:``}:a.error;let o=uv(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 lv(e,t){if(t===`-`){let t=ti(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 uv(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 dv(e={}){return S(`computer`,async(t,n)=>{let{runComputer:r}=await import(`./run-Dn5A9ksD.js`).then(e=>e.t);return r(t,n,e)})}var fv=`/assets/AdobeClean-Regular-CVsq5gF7.otf`;function pv(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 mv(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 hv=`AdobeClean-Regular.otf`,gv=new WeakSet;let _v=null;function vv(){return{stdout:`usage: convert [input ...] [operations...] [output]
631
631
 
632
632
  Operations:
633
633
  -resize GEOMETRY resize; supports %, !, ^, >, and < modifiers
@@ -668,7 +668,7 @@ suffix (0-based, as ImageMagick does); page 0 is used when none is given:
668
668
  convert -density 150 doc.pdf page0.png
669
669
  convert doc.pdf[2] -resize 800x page3.png
670
670
  Use pdftoppm to rasterize a whole document in one pass.
671
- `,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 bv=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:xv(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=>wv(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=Cv(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 xv(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 Sv(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(wv(t))throw Error(`expected an output file`);return{expression:new bv(e.slice(0,-1)).parse(),outputPath:t}}function Cv(e){let t=Number(e.split(`x`)[0]);if(!Number.isFinite(t)||t<=0)throw Error(`Invalid density: ${e}`);return t}function wv(e){return e===`(`||e===`)`||e===`+append`||e===`-append`||yv.has(e)}const Tv=/^(?:\d+(?:x\d*)?|x\d+)(?:[%!^<>@])?$/,Ev=/^\d+x\d+(?:[+-]\d+[+-]\d+)?$/;function Dv(e,t,n){if(!(n===`resize`||n===`thumbnail`?Tv:Ev).test(t))throw Error(`Invalid ${n} geometry: ${t}`);return new e.MagickGeometry(t)}function Ov(e,t,n){t.resize(Dv(e,n,`resize`))}function kv(e,t){let n=parseFloat(t);if(isNaN(n))throw Error(`Invalid rotation degrees: ${t}`);e.rotate(n)}function Av(e,t,n,r){let i=Dv(e,n,`crop`);r===void 0?t.crop(i):t.crop(i,r)}function jv(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 Mv={northwest:`Northwest`,north:`North`,northeast:`Northeast`,west:`West`,center:`Center`,east:`East`,southwest:`Southwest`,south:`South`,southeast:`Southeast`};function Nv(e,t){let n=Mv[t.toLowerCase()],r=n?e.Gravity[n]:void 0;if(r===void 0)throw Error(`Invalid gravity: ${t}`);return r}const Pv={"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 Fv(e){return e.toLowerCase().replaceAll(/[-_ ]/g,``)}function Iv(e,t,n){let r=Fv(t),i=Object.entries(e).find(([e])=>Fv(e)===r);if(!i)throw Error(`Invalid ${n}: ${t}`);return i[1]}function Lv(e,t,n,r){let i=Dv(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 Rv(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 zv(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(hv),r.pointsize!==void 0&&a.fontPointSize(r.pointsize),a.text(Number(i[1]),Number(i[2]),n.text??``).draw(t)}async function Bv(e){if(gv.has(e.Magick))return;let t=_v??=fetch(fv).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(hv,await t),gv.add(e.Magick)}catch(e){throw _v===t&&(_v=null),e}}function Vv(e){return e.operations.some(e=>e.type===`annotate`)?!0:e.kind===`append`&&e.children.some(Vv)}function Hv(e,t,n,r){let i=Pv[n.type];if(i){i(t);return}switch(n.type){case`density`:return;case`resize`:Ov(e,t,n.value);return;case`thumbnail`:t.thumbnail(Dv(e,n.value,`thumbnail`));return;case`rotate`:kv(t,n.value);return;case`crop`:Av(e,t,n.value,r.gravity);return;case`quality`:jv(t,n.value);return;case`background`:r.background=n.value,t.backgroundColor=new e.MagickColor(n.value);return;case`extent`:Lv(e,t,n.value,r);return;case`alpha`:t.alpha(Iv(e.AlphaAction,n.value,`alpha mode`));return;case`colorspace`:t.colorSpace=Iv(e.ColorSpace,n.value,`colorspace`);return;case`transparent`:t.transparent(new e.MagickColor(n.value));return;case`blur`:t.blur(...Rv(n.value,`blur`));return;case`sharpen`:t.sharpen(...Rv(n.value,`sharpen`));return;case`gravity`:r.gravity=Nv(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`:zv(e,t,n,r);return}}function Uv(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:Nv(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 Wv(e,t,n){let r={};for(let i of n)Hv(e,t,i,r)}function Gv(e,t){let n=null,r=mv(t);return e.write(r,e=>{n=new Uint8Array(e)}),n}async function Kv(e,t,n,r,i=[],a=0){if(a===t.children.length)return r(i);await qv(e,t.children[a],n,async o=>{i.push(o),await Kv(e,t,n,r,i,a+1),i.pop()})}async function qv(e,t,n,r){if(t.kind===`input`){await e.ImageMagick.read(n.get(t),async n=>{Wv(e,n,t.operations),await r(n)});return}await Kv(e,t,n,async n=>{Uv(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=>{Wv(e,n,t.operations),await r(n)})}finally{i.length=0,i.dispose()}})}function Jv(e){let t=e.match(/^(.*)\[(\d+)\]$/);return t?{path:t[1],scene:Number(t[2])}:{path:e}}async function Yv(e,t,n=new Map,r=new Map){if(e.kind===`input`){let{path:i,scene:a}=Jv(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)),Fi(s)){let t=await Ii(s,(a??0)+1,{scale:Li(e.density),format:`png`});return n.set(e,t.bytes),n}return n.set(e,s),n}for(let i of e.children)await Yv(i,t,n,r);return n}function Xv(e=`convert`){return S(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return vv();let r;try{r=Sv(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let e=await Yv(r.expression,n),t=await Mi({ipk:pv(n)});Vv(r.expression)&&await Bv(t);let i=null;if(await qv(t,r.expression,e,async e=>{i=Gv(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 Zv(){return globalThis.__slicc_lickManager??null}let Qv=null;async function $v(){if(Qv)return Qv;let{createLickManagerProxy:e}=await import(`./lick-manager-proxy-DMaLHm_t.js`);return Qv=e(),Qv}async function ey(){let e=Zv();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(_e())return null;let t=await $v(),{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 ty(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 ny(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 (${ty(r.candidates)})\n`:null}function ry(e){return{stdout:``,stderr:`crontask ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}function iy(){return{stdout:`usage: crontask <command> [options]
671
+ `,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 bv=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:xv(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=>wv(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=Cv(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 xv(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 Sv(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(wv(t))throw Error(`expected an output file`);return{expression:new bv(e.slice(0,-1)).parse(),outputPath:t}}function Cv(e){let t=Number(e.split(`x`)[0]);if(!Number.isFinite(t)||t<=0)throw Error(`Invalid density: ${e}`);return t}function wv(e){return e===`(`||e===`)`||e===`+append`||e===`-append`||yv.has(e)}const Tv=/^(?:\d+(?:x\d*)?|x\d+)(?:[%!^<>@])?$/,Ev=/^\d+x\d+(?:[+-]\d+[+-]\d+)?$/;function Dv(e,t,n){if(!(n===`resize`||n===`thumbnail`?Tv:Ev).test(t))throw Error(`Invalid ${n} geometry: ${t}`);return new e.MagickGeometry(t)}function Ov(e,t,n){t.resize(Dv(e,n,`resize`))}function kv(e,t){let n=parseFloat(t);if(isNaN(n))throw Error(`Invalid rotation degrees: ${t}`);e.rotate(n)}function Av(e,t,n,r){let i=Dv(e,n,`crop`);r===void 0?t.crop(i):t.crop(i,r)}function jv(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 Mv={northwest:`Northwest`,north:`North`,northeast:`Northeast`,west:`West`,center:`Center`,east:`East`,southwest:`Southwest`,south:`South`,southeast:`Southeast`};function Nv(e,t){let n=Mv[t.toLowerCase()],r=n?e.Gravity[n]:void 0;if(r===void 0)throw Error(`Invalid gravity: ${t}`);return r}const Pv={"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 Fv(e){return e.toLowerCase().replaceAll(/[-_ ]/g,``)}function Iv(e,t,n){let r=Fv(t),i=Object.entries(e).find(([e])=>Fv(e)===r);if(!i)throw Error(`Invalid ${n}: ${t}`);return i[1]}function Lv(e,t,n,r){let i=Dv(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 Rv(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 zv(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(hv),r.pointsize!==void 0&&a.fontPointSize(r.pointsize),a.text(Number(i[1]),Number(i[2]),n.text??``).draw(t)}async function Bv(e){if(gv.has(e.Magick))return;let t=_v??=fetch(fv).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(hv,await t),gv.add(e.Magick)}catch(e){throw _v===t&&(_v=null),e}}function Vv(e){return e.operations.some(e=>e.type===`annotate`)?!0:e.kind===`append`&&e.children.some(Vv)}function Hv(e,t,n,r){let i=Pv[n.type];if(i){i(t);return}switch(n.type){case`density`:return;case`resize`:Ov(e,t,n.value);return;case`thumbnail`:t.thumbnail(Dv(e,n.value,`thumbnail`));return;case`rotate`:kv(t,n.value);return;case`crop`:Av(e,t,n.value,r.gravity);return;case`quality`:jv(t,n.value);return;case`background`:r.background=n.value,t.backgroundColor=new e.MagickColor(n.value);return;case`extent`:Lv(e,t,n.value,r);return;case`alpha`:t.alpha(Iv(e.AlphaAction,n.value,`alpha mode`));return;case`colorspace`:t.colorSpace=Iv(e.ColorSpace,n.value,`colorspace`);return;case`transparent`:t.transparent(new e.MagickColor(n.value));return;case`blur`:t.blur(...Rv(n.value,`blur`));return;case`sharpen`:t.sharpen(...Rv(n.value,`sharpen`));return;case`gravity`:r.gravity=Nv(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`:zv(e,t,n,r);return}}function Uv(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:Nv(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 Wv(e,t,n){let r={};for(let i of n)Hv(e,t,i,r)}function Gv(e,t){let n=null,r=mv(t);return e.write(r,e=>{n=new Uint8Array(e)}),n}async function Kv(e,t,n,r,i=[],a=0){if(a===t.children.length)return r(i);await qv(e,t.children[a],n,async o=>{i.push(o),await Kv(e,t,n,r,i,a+1),i.pop()})}async function qv(e,t,n,r){if(t.kind===`input`){await e.ImageMagick.read(n.get(t),async n=>{Wv(e,n,t.operations),await r(n)});return}await Kv(e,t,n,async n=>{Uv(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=>{Wv(e,n,t.operations),await r(n)})}finally{i.length=0,i.dispose()}})}function Jv(e){let t=e.match(/^(.*)\[(\d+)\]$/);return t?{path:t[1],scene:Number(t[2])}:{path:e}}async function Yv(e,t,n=new Map,r=new Map){if(e.kind===`input`){let{path:i,scene:a}=Jv(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)),Ii(s)){let t=await Li(s,(a??0)+1,{scale:Ri(e.density),format:`png`});return n.set(e,t.bytes),n}return n.set(e,s),n}for(let i of e.children)await Yv(i,t,n,r);return n}function Xv(e=`convert`){return S(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return vv();let r;try{r=Sv(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let e=await Yv(r.expression,n),t=await Ni({ipk:pv(n)});Vv(r.expression)&&await Bv(t);let i=null;if(await qv(t,r.expression,e,async e=>{i=Gv(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 Zv(){return globalThis.__slicc_lickManager??null}let Qv=null;async function $v(){if(Qv)return Qv;let{createLickManagerProxy:e}=await import(`./lick-manager-proxy-DMaLHm_t.js`);return Qv=e(),Qv}async function ey(){let e=Zv();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(ve())return null;let t=await $v(),{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 ty(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 ny(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 (${ty(r.candidates)})\n`:null}function ry(e){return{stdout:``,stderr:`crontask ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}function iy(){return{stdout:`usage: crontask <command> [options]
672
672
 
673
673
  Commands:
674
674
  create [options] Create a new cron task
@@ -700,14 +700,14 @@ Examples:
700
700
  crontask create --name every-5min --scoop poller --cron "*/5 * * * *" --filter "() => ({ time: Date.now() })"
701
701
  crontask list
702
702
  crontask delete abc123
703
- `,stderr:``,exitCode:0}}async function ay(e,t,n){let r={method:e,headers:me({"Content-Type":`application/json`})};n&&(r.body=JSON.stringify(n));let i=await fetch(pe(`/api/crontasks${t}`),r),a=await i.json().catch(()=>({}));return{ok:i.ok,status:i.status,data:a}}const oy=[`--name`,`--cron`,`--filter`,`--scoop`];function sy(e){return{stdout:``,stderr:`crontask: ${e}\n`,exitCode:1}}async function cy(e,t,n){let r=C(e.slice(1),{value:oy});if(`error`in r)return sy(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=Ri(s,t),!i)return{stdout:``,stderr:`crontask: --name is required
703
+ `,stderr:``,exitCode:0}}async function ay(e,t,n){let r={method:e,headers:he({"Content-Type":`application/json`})};n&&(r.body=JSON.stringify(n));let i=await fetch(me(`/api/crontasks${t}`),r),a=await i.json().catch(()=>({}));return{ok:i.ok,status:i.status,data:a}}const oy=[`--name`,`--cron`,`--filter`,`--scoop`];function sy(e){return{stdout:``,stderr:`crontask: ${e}\n`,exitCode:1}}async function cy(e,t,n){let r=C(e.slice(1),{value:oy});if(`error`in r)return sy(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=zi(s,t),!i)return{stdout:``,stderr:`crontask: --name is required
704
704
  `,exitCode:1};if(!a)return{stdout:``,stderr:`crontask: --cron is required
705
705
  `,exitCode:1};let c=await ny(await ey(),`crontask create`,r.values.get(`--scoop`));if(c)return{stdout:``,stderr:c,exitCode:1};if(!n()){if(o)return{stdout:``,stderr:`crontask: --filter is not supported in extension mode (CSP restriction)
706
706
  `,exitCode:1};let e=await ey();if(!e)return ry(`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 ay(`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 ly(e){let t=`Active cron tasks:
707
707
  `;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+=`
708
708
  `;return t}async function uy(e,t){let n=C(e.slice(1),{});if(`error`in n)return sy(n.error);if(!t()){let e=await ey();if(!e)return ry(`list`);let t=await e.listCronTasks();return t.length===0?{stdout:`No active cron tasks
709
709
  `,stderr:``,exitCode:0}:{stdout:ly(t),stderr:``,exitCode:0}}let{ok:r,data:i}=await ay(`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
710
- `,stderr:``,exitCode:0}:{stdout:ly(a),stderr:``,exitCode:0}}async function dy(e,t){let n=e[0],r=C(e.slice(1),{});if(`error`in r)return sy(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 ey();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}:ry(`delete`)}let{ok:a,status:o,data:s}=await ay(`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 fy(e={}){let t=e.hasLocalNodeServer??(()=>!1);return S(`crontask`,async(e,n)=>{let r=e[0];if(!r||w(e,{valueFlags:oy}))return iy();try{switch(r){case`create`:return await cy(e,n.env,t);case`list`:return await uy(e,t);case`delete`:case`kill`:return await dy(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 py(e){return S(`curlwright`,async(t,n)=>{let{runCurlwright:r}=await import(`./run-CHKo3g64.js`);return r(e,t,n)})}const my=`slicc-fs`;async function hy(){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===my)}catch{return!0}}async function gy(){let e=globalThis.indexedDB;return e?new Promise(t=>{let n;try{n=e.deleteDatabase(my)}catch{t(`error`);return}n.onsuccess=()=>t(`deleted`),n.onerror=()=>t(`error`),n.onblocked=()=>t(`blocked`)}):`error`}async function _y(){if(!await hy())return{kind:`absent`,message:`legacy slicc-fs IDB not present — nothing to clean`};let e=await gy();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 vy(){return`slicc-fs-cleanup — delete the legacy slicc-fs IndexedDB
710
+ `,stderr:``,exitCode:0}:{stdout:ly(a),stderr:``,exitCode:0}}async function dy(e,t){let n=e[0],r=C(e.slice(1),{});if(`error`in r)return sy(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 ey();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}:ry(`delete`)}let{ok:a,status:o,data:s}=await ay(`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 fy(e={}){let t=e.hasLocalNodeServer??(()=>!1);return S(`crontask`,async(e,n)=>{let r=e[0];if(!r||w(e,{valueFlags:oy}))return iy();try{switch(r){case`create`:return await cy(e,n.env,t);case`list`:return await uy(e,t);case`delete`:case`kill`:return await dy(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 py(e){return S(`curlwright`,async(t,n)=>{let{runCurlwright:r}=await import(`./run-BcULqcmA.js`);return r(e,t,n)})}const my=`slicc-fs`;async function hy(){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===my)}catch{return!0}}async function gy(){let e=globalThis.indexedDB;return e?new Promise(t=>{let n;try{n=e.deleteDatabase(my)}catch{t(`error`);return}n.onsuccess=()=>t(`deleted`),n.onerror=()=>t(`error`),n.onblocked=()=>t(`blocked`)}):`error`}async function _y(){if(!await hy())return{kind:`absent`,message:`legacy slicc-fs IDB not present — nothing to clean`};let e=await gy();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 vy(){return`slicc-fs-cleanup — delete the legacy slicc-fs IndexedDB
711
711
 
712
712
  Usage:
713
713
  slicc-fs-cleanup Delete the legacy slicc-fs IDB.
@@ -733,7 +733,7 @@ Usage:
733
733
  Read-only. See 'df --help' for the underlying command.
734
734
  `}function Cy(e){if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`,`PB`],n=e/1024,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n>=100?n.toFixed(0):n>=10?n.toFixed(1):n.toFixed(2)} ${t[r]}`}function wy(e,t){return e===null?`unavailable`:t?Cy(e):`${e}`}async function Ty(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??hy;try{o=await s()}catch{o=null}return{backend:t,usage:n,quota:r,persisted:i,legacyIdbPresent:o}}function Ey(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: ${wy(e.usage,t)}`,`Quota: ${wy(e.quota,t)}`,`Used: ${n}`,`Persisted: ${r}`,`Legacy IDB: ${i}`].join(`
735
735
  `)}\n`}function Dy(e={}){return S(`df`,async t=>{if(t.includes(`--help`))return{stdout:xy(`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:Ey(await Ty(e),i),stderr:``,exitCode:0}})}function Oy(e={}){return S(`diskutil`,async t=>{if(t.includes(`--help`))return{stdout:Sy(),stderr:``,exitCode:0};let n=t[0];return n===`info`?{stdout:Ey(await Ty(e),!0),stderr:``,exitCode:0}:{stdout:``,stderr:n?`diskutil: unsupported subcommand: ${n} (try 'diskutil info')\n`:`diskutil: missing subcommand (try 'diskutil info')
736
- `,exitCode:1}})}const ky=e(`di`),Ay=new WeakMap;async function jy(e,t){let n=Ay.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 ky.error(`failed to read pyodide-lock.json`,e),null}else{let e=`${yr}pyodide-lock.json`,n;try{n=await t(e,{method:`GET`,headers:{Accept:`application/json`},timeoutMs:3e4})}catch(e){return ky.error(`failed to fetch pyodide-lock.json from CDN`,e),null}if(n.status<200||n.status>=300)return ky.error(`pyodide-lock.json CDN fetch returned HTTP ${n.status}`),null;r=de(n.body)}let i;try{i=JSON.parse(r)}catch(e){return ky.error(`pyodide-lock.json was not valid JSON`,e),null}let a=new Map;for(let[e,t]of Object.entries(i.packages??{}))!t||typeof t.file_name!=`string`||a.set(gr(t.name??e),t);return Ay.set(e,a),a}async function My(e,t,n,r){let i=await jy(e,t);if(!i)return null;let a=i.get(gr(n));if(!a?.file_name||!a.version||!a.sha256)return null;if(r&&r!==a.version)throw Error(`di: ${n}==${r} requested but the Pyodide lockfile pins ${a.name??n}==${a.version} (the Pyodide CDN serves only the locked version — omit the version, or use real uv locally)`);return{name:a.name??n,version:a.version,source:`pyodide-cdn`,fileName:a.file_name,sha256:a.sha256,url:`${yr}${a.file_name}`}}function Ny(e,t){let n=`https://pypi.org/pypi/${encodeURIComponent(e)}`;return t?`${n}/${encodeURIComponent(t)}/json`:`${n}/json`}function Py(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 Fy(e,t,n){let r=`di: PyPI lookup for ${t}${n?`==${n}`:``}`,i=Ny(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(de(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=>Py(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 Iy=`/workspace/python_wheels`,Ly=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function Ry(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(),!Ly.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 zy(e){return e instanceof Error?e:Error(String(e))}async function By(e,t,n){return await My(e,t,n.name,n.version)||Fy(t,n.name,n.version)}async function Vy(e,t,n){let r=await By(e,t,n),i=await Or(t,{url:r.url,sha256:r.sha256,label:`di: download ${r.name}==${r.version}`});await e.mkdir(Iy,{recursive:!0});let a=x(Iy,r.fileName),o=!0;if(await e.exists(a)){let t=await e.readFile(a,{encoding:`binary`}),n=await mr(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 Hy(e,t,n,r){let i=await Sr(e,n),a=[],o=[];for(let n of r){let r;try{r=Ry(n)}catch(e){o.push({spec:n,error:zy(e)});continue}try{a.push(await Vy(e,t,r))}catch(e){o.push({spec:n,error:zy(e)})}}if(a.length>0){let t=await Tr(e,i),n=t.dependencies,r=await hr(e,i);for(let e of a)n=fr(n,e.name,e.version),r=Er(r,{name:e.name,version:e.version,source:e.source,fileName:e.fileName,sha256:e.sha256});await xr(e,i,{...t,dependencies:n}),await vr(e,i,r)}return{results:a,errors:o,manifestDir:i}}async function Uy(e,t){let n=await br(e,t);if(!n)return null;let r=await Tr(e,n),i=await hr(e,n),a=new Map(i.map(e=>[gr(e.name),e]));return r.dependencies.map(e=>{let{name:t,version:n}=_r(e),r=a.get(gr(t));return{name:t,version:n||r?.version||`?`,source:r?.source??`unknown`}})}const Wy=[];function Gy(e){return`${e} - minimal Python package manager (pure-Python + Pyodide wheels)
736
+ `,exitCode:1}})}const ky=e(`di`),Ay=new WeakMap;async function jy(e,t){let n=Ay.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 ky.error(`failed to read pyodide-lock.json`,e),null}else{let e=`${br}pyodide-lock.json`,n;try{n=await t(e,{method:`GET`,headers:{Accept:`application/json`},timeoutMs:3e4})}catch(e){return ky.error(`failed to fetch pyodide-lock.json from CDN`,e),null}if(n.status<200||n.status>=300)return ky.error(`pyodide-lock.json CDN fetch returned HTTP ${n.status}`),null;r=fe(n.body)}let i;try{i=JSON.parse(r)}catch(e){return ky.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(_r(t.name??e),t);return Ay.set(e,a),a}async function My(e,t,n,r){let i=await jy(e,t);if(!i)return null;let a=i.get(_r(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:`${br}${a.file_name}`}}function Ny(e,t){let n=`https://pypi.org/pypi/${encodeURIComponent(e)}`;return t?`${n}/${encodeURIComponent(t)}/json`:`${n}/json`}function Py(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 Fy(e,t,n){let r=`di: PyPI lookup for ${t}${n?`==${n}`:``}`,i=Ny(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(fe(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=>Py(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 Iy=`/workspace/python_wheels`,Ly=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function Ry(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(),!Ly.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 zy(e){return e instanceof Error?e:Error(String(e))}async function By(e,t,n){return await My(e,t,n.name,n.version)||Fy(t,n.name,n.version)}async function Vy(e,t,n){let r=await By(e,t,n),i=await kr(t,{url:r.url,sha256:r.sha256,label:`di: download ${r.name}==${r.version}`});await e.mkdir(Iy,{recursive:!0});let a=x(Iy,r.fileName),o=!0;if(await e.exists(a)){let t=await e.readFile(a,{encoding:`binary`}),n=await hr(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 Hy(e,t,n,r){let i=await Cr(e,n),a=[],o=[];for(let n of r){let r;try{r=Ry(n)}catch(e){o.push({spec:n,error:zy(e)});continue}try{a.push(await Vy(e,t,r))}catch(e){o.push({spec:n,error:zy(e)})}}if(a.length>0){let t=await Er(e,i),n=t.dependencies,r=await gr(e,i);for(let e of a)n=pr(n,e.name,e.version),r=Dr(r,{name:e.name,version:e.version,source:e.source,fileName:e.fileName,sha256:e.sha256});await Sr(e,i,{...t,dependencies:n}),await yr(e,i,r)}return{results:a,errors:o,manifestDir:i}}async function Uy(e,t){let n=await xr(e,t);if(!n)return null;let r=await Er(e,n),i=await gr(e,n),a=new Map(i.map(e=>[_r(e.name),e]));return r.dependencies.map(e=>{let{name:t,version:n}=vr(e),r=a.get(_r(t));return{name:t,version:n||r?.version||`?`,source:r?.source??`unknown`}})}const Wy=[];function Gy(e){return`${e} - minimal Python package manager (pure-Python + Pyodide wheels)
737
737
 
738
738
  Usage:
739
739
  ${e} add <pkg>[@<version>] [<pkg> ...] resolve, stage, and record wheels
@@ -773,7 +773,7 @@ Flags:
773
773
  `,stderr:n,exitCode:0}:a?{stdout:`${o.map(e=>e.data).join(`
774
774
  `)}\n`,stderr:n,exitCode:0}:{stdout:`${o.map(e=>`${e.name}\t${e.TTL??0}\tIN\t${Fb(e.type)}\t${e.data}`).join(`
775
775
  `)}\n`,stderr:n,exitCode:0}}async function Lb(e,t){let n=fb(e);if(n.kind===`version`)return{stdout:`DiG 9.20.0-slicc (DNS-over-HTTPS)
776
- `,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===$y,c,l;try{c=s?yb(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 Ib(s?jb(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 Rb(){let e=h();return S(`dig`,async t=>t.includes(`--help`)||t.includes(`-h`)?Pb():Lb(t,e))}const zb=[`api-catalog`,`service-desc`,`service-meta`,`status`,`https://llmstxt.org/rel/llms-txt`];async function Bb(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)zb.includes(e)&&(o.has(e)||(o.add(e),a.push(Vb(n,s.href,r,t.signal).then(t=>Hb(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 Vb(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 Hb(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 Ub=[`--follow`];function Wb(e){return async(t,n)=>{let r=typeof t==`string`?t:t instanceof URL?t.toString():t.url,i=m(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 Gb(){return`discover — fetch a URL and parse RFC 8288 Link headers
776
+ `,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===$y,c,l;try{c=s?yb(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 Ib(s?jb(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 Rb(){let e=p();return S(`dig`,async t=>t.includes(`--help`)||t.includes(`-h`)?Pb():Lb(t,e))}const zb=[`api-catalog`,`service-desc`,`service-meta`,`status`,`https://llmstxt.org/rel/llms-txt`];async function Bb(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)zb.includes(e)&&(o.has(e)||(o.add(e),a.push(Vb(n,s.href,r,t.signal).then(t=>Hb(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 Vb(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 Hb(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 Ub=[`--follow`];function Wb(e){return async(t,n)=>{let r=typeof t==`string`?t:t instanceof URL?t.toString():t.url,i=_(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 Gb(){return`discover — fetch a URL and parse RFC 8288 Link headers
777
777
 
778
778
  Usage:
779
779
  discover <url> Print parsed links (and any SLICC handoff match)
@@ -788,7 +788,7 @@ Examples:
788
788
  discover ${r}/handoff?handoff=demo
789
789
  discover --follow ${r}/llms.txt
790
790
  `}function Kb(){return S(`discover`,async e=>{if(e.length===0||w(e))return{stdout:Gb(),stderr:``,exitCode:0};let t=C(e,{bool:Ub});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
791
- `,exitCode:2};let r=t.positionals[0],i=h(),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 Bb(l,{fetchImpl:Wb(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)+`
791
+ `,exitCode:2};let r=t.positionals[0],i=p(),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 Bb(l,{fetchImpl:Wb(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)+`
792
792
  `,stderr:``,exitCode:0}})}function qb(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 Jb=`esbuild - thin wrapper over the ipk-loaded esbuild-wasm
793
793
 
794
794
  Usage:
@@ -827,12 +827,12 @@ Module resolution:
827
827
 
828
828
  Install:
829
829
  Inert until the backing package is installed:
830
- ${N} esbuild-wasm@${Jr}
830
+ ${N} esbuild-wasm@${Yr}
831
831
  Then \`esbuild --version\` and the bundle/transform commands above.
832
- `,Yb=new Set([`iife`,`cjs`,`esm`]),Xb=new Set([`browser`,`node`,`neutral`]),Zb=new Set([`linked`,`inline`,`external`,`both`]),Qb={"-h":`showHelp`,"--help":`showHelp`,"-v":`showVersion`,"--version":`showVersion`,"--bundle":`bundle`,"--transform":`transform`,"--minify":`minify`};function $b(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 ex(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 tx(e,t,n,r){if(t.inlineValue!==null){if(!Zb.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`&&Zb.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}=ex(t,n,r);return e.outfile=i,a}if(t.key===`--format`){let{value:i,advance:a}=ex(t,n,r);if(!Yb.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}=ex(t,n,r);if(!Xb.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}=ex(t,n,r);return e.target=i.split(`,`).map(e=>e.trim()).filter(Boolean),a}if(t.key===`--loader`){let{value:i,advance:a}=ex(t,n,r);return e.loader=i,a}return-1}function rx(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 ix(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=Qb[r];if(i){t[i]=!0;continue}if(r.startsWith(`--external:`)){t.external.push(r.slice(11));continue}if(rx(r,`--define:`,t.define)||rx(r,`--banner:`,t.banner)||rx(r,`--footer:`,t.footer))continue;let a=$b(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+=tx(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 ax(e,t,n,r,i){return{name:`slicc-vfs`,setup(a){a.onResolve({filter:/.*/},async a=>{if(a.kind!==`entry-point`&&ox(a.path,r)||/^[a-z]+:/.test(a.path)&&!a.path.startsWith(`file:`))return{path:a.path,external:!0};if(cx(a.path)){let n=a.importer?.startsWith(`/`)?ar(a.importer):t;return{path:await dx(e,e.resolvePath(n,a.path))}}return lx(a.path,a.importer,n,sx(i,a.kind))}),a.onLoad({filter:/.*/},async t=>t.namespace&&t.namespace!==`file`?null:{contents:await e.readFile(t.path),loader:ux(t.path),resolveDir:ar(t.path)})}}}function ox(e,t){return t.some(t=>{if(e===t)return!0;if(!t.includes(`*`))return!cx(t)&&e.startsWith(`${t}/`);let n=t.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(`*`,`.*`);return RegExp(`^${n}$`).test(e)})}function sx(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 cx(e){return e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`/`)}async function lx(e,t,n,r){let i=t?.startsWith(`/`)?ar(t):n.fromDir;try{let t=await qn(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 ux(e){let t=er(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 dx(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=$n(t,`index${r}`);if(await e.exists(n))return n}return t}async function fx(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 px(){return S(`esbuild`,async(e,t)=>{let n;try{n=ix(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:Jb,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)
833
- `,exitCode:2};let r;try{r=await qr({ipk:qb(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?mx(n,t,r):hx(n,t,r)})}async function mx(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:Jb,stderr:``,exitCode:0};let a={loader:e.loader??ux(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 fx(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 fx(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function hx(e,t,n){if(e.entries.length===0)return{stdout:``,stderr:`esbuild: --bundle requires at least one entry point
832
+ `,Yb=new Set([`iife`,`cjs`,`esm`]),Xb=new Set([`browser`,`node`,`neutral`]),Zb=new Set([`linked`,`inline`,`external`,`both`]),Qb={"-h":`showHelp`,"--help":`showHelp`,"-v":`showVersion`,"--version":`showVersion`,"--bundle":`bundle`,"--transform":`transform`,"--minify":`minify`};function $b(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 ex(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 tx(e,t,n,r){if(t.inlineValue!==null){if(!Zb.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`&&Zb.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}=ex(t,n,r);return e.outfile=i,a}if(t.key===`--format`){let{value:i,advance:a}=ex(t,n,r);if(!Yb.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}=ex(t,n,r);if(!Xb.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}=ex(t,n,r);return e.target=i.split(`,`).map(e=>e.trim()).filter(Boolean),a}if(t.key===`--loader`){let{value:i,advance:a}=ex(t,n,r);return e.loader=i,a}return-1}function rx(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 ix(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=Qb[r];if(i){t[i]=!0;continue}if(r.startsWith(`--external:`)){t.external.push(r.slice(11));continue}if(rx(r,`--define:`,t.define)||rx(r,`--banner:`,t.banner)||rx(r,`--footer:`,t.footer))continue;let a=$b(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+=tx(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 ax(e,t,n,r,i){return{name:`slicc-vfs`,setup(a){a.onResolve({filter:/.*/},async a=>{if(a.kind!==`entry-point`&&ox(a.path,r)||/^[a-z]+:/.test(a.path)&&!a.path.startsWith(`file:`))return{path:a.path,external:!0};if(cx(a.path)){let n=a.importer?.startsWith(`/`)?or(a.importer):t;return{path:await dx(e,e.resolvePath(n,a.path))}}return lx(a.path,a.importer,n,sx(i,a.kind))}),a.onLoad({filter:/.*/},async t=>t.namespace&&t.namespace!==`file`?null:{contents:await e.readFile(t.path),loader:ux(t.path),resolveDir:or(t.path)})}}}function ox(e,t){return t.some(t=>{if(e===t)return!0;if(!t.includes(`*`))return!cx(t)&&e.startsWith(`${t}/`);let n=t.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(`*`,`.*`);return RegExp(`^${n}$`).test(e)})}function sx(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 cx(e){return e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`/`)}async function lx(e,t,n,r){let i=t?.startsWith(`/`)?or(t):n.fromDir;try{let t=await Jn(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 ux(e){let t=tr(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 dx(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=er(t,`index${r}`);if(await e.exists(n))return n}return t}async function fx(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 px(){return S(`esbuild`,async(e,t)=>{let n;try{n=ix(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:Jb,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)
833
+ `,exitCode:2};let r;try{r=await Jr({ipk:qb(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?mx(n,t,r):hx(n,t,r)})}async function mx(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:Jb,stderr:``,exitCode:0};let a={loader:e.loader??ux(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 fx(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 fx(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function hx(e,t,n){if(e.entries.length===0)return{stdout:``,stderr:`esbuild: --bundle requires at least one entry point
834
834
  `,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:[ax(t.fs,t.cwd,qb(t),e.external,e.platform)],format:e.format??`esm`,...gx(e)};try{let r=await n.build(i),a=await fx(n.formatMessages,r.errors,r.warnings),o=r.outputFiles??[];if(e.outfile){if(o.length===0)return{stdout:``,stderr:`esbuild: build produced no output
835
- `,exitCode:1};let n=t.fs.resolvePath(t.cwd,e.outfile);await t.fs.writeFile(n,o[0].text);let r=ar(n);for(let e=1;e<o.length;e++){let n=o[e],i=$n(r,er(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 fx(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function gx(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 _x(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}var vx=class{ops(){return import(`./esptool-operations-h8-8jVn_.js`)}registry(){if(!Pr())throw Error(`Web Serial is unavailable in this browser`);return Br()}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)}},yx=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:_x(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 bx(e,t){return e&&Pr()?new vx:t?new yx(t):null}const xx=Symbol(`picker-approval-timeout`);async function Sx(e,t,n){let r=Se.generateId(),i=!1,a=Ce({id:r,html:rm(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 xx;throw e}),o,s=new Promise(t=>{o=setTimeout(()=>{i=!0,Se.cancel(r,`${e}: timed out`),t(xx)},12e4)}),c=await Promise.race([a,s]);if(o&&clearTimeout(o),c===xx)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 Cx=new Set([`--vid`,`--pid`,`--baud`,`--data-bits`,`--stop-bits`,`--parity`,`--flow-control`,`--buffer-size`,`--bytes`,`--until`,`--timeout-ms`,`--dtr`,`--rts`,`--break`,`--__resolved`]);function wx(e){return vn(e,Cx)}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 Tx(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 Ex(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 Dx=new Set([`none`,`even`,`odd`]),Ox=new Set([`none`,`hardware`]);function kx(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(!Dx.has(n))throw Error(`invalid --parity: '${n}'`);t.parity=n}if(e.has(`--flow-control`)){let n=e.get(`--flow-control`);if(!Ox.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 Ax(e){let t={};return e.has(`--bytes`)&&(t.maxBytes=z(e.get(`--bytes`),`bytes`)),e.has(`--until`)&&(t.until=Tx(e.get(`--until`))),e.has(`--timeout-ms`)&&(t.timeoutMs=z(e.get(`--timeout-ms`),`timeout-ms`)),t}function jx(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 Mx(e){let t={};return e.has(`--dtr`)&&(t.dataTerminalReady=jx(e.get(`--dtr`),`dtr`)),e.has(`--rts`)&&(t.requestToSend=jx(e.get(`--rts`),`rts`)),e.has(`--break`)&&(t.break=jx(e.get(`--break`),`break`)),t}function Nx(e){let t=ei(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function Px(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function Fx(e){return`0x${e.toString(16).padStart(4,`0`)}`}function Ix(e){let t=e.usbVendorId!==void 0||e.usbProductId!==void 0?`${Fx(e.usbVendorId??0)}:${Fx(e.usbProductId??0)}`:`(native serial)`,n=e.opened?` [open]`:``;return`${e.handle}\t${t}${n}`}function Lx(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 Rx=`serial - access serial ports via Web Serial
835
+ `,exitCode:1};let n=t.fs.resolvePath(t.cwd,e.outfile);await t.fs.writeFile(n,o[0].text);let r=or(n);for(let e=1;e<o.length;e++){let n=o[e],i=er(r,tr(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 fx(n.formatMessages,t.errors,t.warnings??[]),exitCode:1}:{stdout:``,stderr:`esbuild: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function gx(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 _x(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}var vx=class{ops(){return import(`./esptool-operations-h8-8jVn_.js`)}registry(){if(!Fr())throw Error(`Web Serial is unavailable in this browser`);return Vr()}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)}},yx=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:_x(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 bx(e,t){return e&&Fr()?new vx:t?new yx(t):null}const xx=Symbol(`picker-approval-timeout`);async function Sx(e,t,n){let r=Ce.generateId(),i=!1,a=we({id:r,html:rm(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 xx;throw e}),o,s=new Promise(t=>{o=setTimeout(()=>{i=!0,Ce.cancel(r,`${e}: timed out`),t(xx)},12e4)}),c=await Promise.race([a,s]);if(o&&clearTimeout(o),c===xx)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 Cx=new Set([`--vid`,`--pid`,`--baud`,`--data-bits`,`--stop-bits`,`--parity`,`--flow-control`,`--buffer-size`,`--bytes`,`--until`,`--timeout-ms`,`--dtr`,`--rts`,`--break`,`--__resolved`]);function wx(e){return yn(e,Cx)}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 Tx(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 Ex(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 Dx=new Set([`none`,`even`,`odd`]),Ox=new Set([`none`,`hardware`]);function kx(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(!Dx.has(n))throw Error(`invalid --parity: '${n}'`);t.parity=n}if(e.has(`--flow-control`)){let n=e.get(`--flow-control`);if(!Ox.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 Ax(e){let t={};return e.has(`--bytes`)&&(t.maxBytes=z(e.get(`--bytes`),`bytes`)),e.has(`--until`)&&(t.until=Tx(e.get(`--until`))),e.has(`--timeout-ms`)&&(t.timeoutMs=z(e.get(`--timeout-ms`),`timeout-ms`)),t}function jx(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 Mx(e){let t={};return e.has(`--dtr`)&&(t.dataTerminalReady=jx(e.get(`--dtr`),`dtr`)),e.has(`--rts`)&&(t.requestToSend=jx(e.get(`--rts`),`rts`)),e.has(`--break`)&&(t.break=jx(e.get(`--break`),`break`)),t}function Nx(e){let t=ti(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function Px(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function Fx(e){return`0x${e.toString(16).padStart(4,`0`)}`}function Ix(e){let t=e.usbVendorId!==void 0||e.usbProductId!==void 0?`${Fx(e.usbVendorId??0)}:${Fx(e.usbProductId??0)}`:`(native serial)`,n=e.opened?` [open]`:``;return`${e.handle}\t${t}${n}`}function Lx(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 Rx=`serial - access serial ports via Web Serial
836
836
 
837
837
  Usage: serial <subcommand> [options]
838
838
 
@@ -851,7 +851,7 @@ Open flags:
851
851
  --parity none|even|odd --flow-control none|hardware --buffer-size N
852
852
 
853
853
  Read flags:
854
- --bytes N Stop after N bytes (default: ${Ur} cap)
854
+ --bytes N Stop after N bytes (default: ${Wr} cap)
855
855
  --until <hex> Stop once this byte sequence is seen
856
856
  --timeout-ms N Stop after N ms (default 1000)
857
857
  --hex Hex-dump the bytes instead of emitting raw
@@ -862,10 +862,10 @@ Signal flags (set):
862
862
  Options:
863
863
  -h, --help
864
864
 
865
- Reads/writes are capped at ${Ur} bytes (4 MiB).
865
+ Reads/writes are capped at ${Wr} bytes (4 MiB).
866
866
  `;function zx(e,t){if(t)return B(e.length?`${Px(e)}\n`:``);let n=``;for(let t=0;t<e.length;t++)n+=String.fromCharCode(e[t]);return B(n)}async function Bx(e){let t=await e.list();return t.length===0?B(`no granted serial ports
867
867
  `):B(`${t.map(Ix).join(`
868
- `)}\n`)}async function Vx(e,t){let n=e.get(`--__resolved`);if(n)return B(`${Ix(await t.info(n))}\n`);let r=Ex(e),i=xe();if(i){let e=await Sx(`serial-port`,r,i);if(e.handle)return B(`${Ix(await t.info(e.handle))}\n`);let n=e.info,a=Pr();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=Br(),c=s.register(o),l=s.get(c);return l?B(`${Ix(Nr(c,l))}\n`):V(`request: failed to register granted port`)}return B(`${Ix(await t.request(r))}\n`)}async function Hx(e,t,n){let r=e[1];return r?(await n.open(r,kx(t)),B(``)):V(`open: handle required`)}async function Ux(e,t){let n=e[1];return n?(await t.close(n),B(``)):V(`close: handle required`)}async function Wx(e,t,n,r){let i=e[1];if(!i)return V(`read: handle required`);let a=Ax(t);return a.maxBytes!==void 0&&a.maxBytes>4194304?V(`read --bytes exceeds 4 MiB limit`):zx(await r.read(i,a),n.has(`--hex`))}async function Gx(e,t,n){let r=e[1];if(!r)return V(`write: handle required`);let i=Nx(t);return i.length>4194304?V(`write payload exceeds 4 MiB limit`):B(`${await n.write(r,i)} bytes written\n`)}async function Kx(e,t,n){let[,r,i]=e;return!r||!i?V(`signals: handle and get|set required`):i===`get`?B(Lx(await n.getSignals(r))):i===`set`?(await n.setSignals(r,Mx(t)),B(``)):V(`signals: unknown action '${i}' (use get|set)`)}async function qx(e,t,n){let{positionals:r,flags:i,bools:a}=wx(e),o=r[0];switch(o){case`list`:return Bx(n);case`request`:return Vx(i,n);case`open`:return Hx(r,i,n);case`close`:return Ux(r,n);case`read`:return Wx(r,i,a,n);case`write`:return Gx(r,t,n);case`signals`:return Kx(r,i,n);default:return V(`unknown subcommand '${o??``}'. Try 'serial --help'.`)}}function Jx(){return S(`serial`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return B(Rx);let n=Lr(se(),y());if(!n)return V(`Web Serial is unavailable in this environment`);try{return await qx(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 Yx=new Set([`--port`,`--baud`,`--vid`,`--pid`]),Xx=115200;function Zx(e){return vn(e,Yx)}function Qx(e){let t=e.replace(/-/g,`_`);return t===`chip_info`||t===`id`?`chip_id`:t}function $x(e){return{stdout:e,stderr:``,exitCode:0}}function eS(e){return{stdout:``,stderr:`esptool: ${e}\n`,exitCode:1}}const tS=`esptool - flash ESP32 / ESP8266 chips via esptool-js
868
+ `)}\n`)}async function Vx(e,t){let n=e.get(`--__resolved`);if(n)return B(`${Ix(await t.info(n))}\n`);let r=Ex(e),i=Se();if(i){let e=await Sx(`serial-port`,r,i);if(e.handle)return B(`${Ix(await t.info(e.handle))}\n`);let n=e.info,a=Fr();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=Vr(),c=s.register(o),l=s.get(c);return l?B(`${Ix(Pr(c,l))}\n`):V(`request: failed to register granted port`)}return B(`${Ix(await t.request(r))}\n`)}async function Hx(e,t,n){let r=e[1];return r?(await n.open(r,kx(t)),B(``)):V(`open: handle required`)}async function Ux(e,t){let n=e[1];return n?(await t.close(n),B(``)):V(`close: handle required`)}async function Wx(e,t,n,r){let i=e[1];if(!i)return V(`read: handle required`);let a=Ax(t);return a.maxBytes!==void 0&&a.maxBytes>4194304?V(`read --bytes exceeds 4 MiB limit`):zx(await r.read(i,a),n.has(`--hex`))}async function Gx(e,t,n){let r=e[1];if(!r)return V(`write: handle required`);let i=Nx(t);return i.length>4194304?V(`write payload exceeds 4 MiB limit`):B(`${await n.write(r,i)} bytes written\n`)}async function Kx(e,t,n){let[,r,i]=e;return!r||!i?V(`signals: handle and get|set required`):i===`get`?B(Lx(await n.getSignals(r))):i===`set`?(await n.setSignals(r,Mx(t)),B(``)):V(`signals: unknown action '${i}' (use get|set)`)}async function qx(e,t,n){let{positionals:r,flags:i,bools:a}=wx(e),o=r[0];switch(o){case`list`:return Bx(n);case`request`:return Vx(i,n);case`open`:return Hx(r,i,n);case`close`:return Ux(r,n);case`read`:return Wx(r,i,a,n);case`write`:return Gx(r,t,n);case`signals`:return Kx(r,i,n);default:return V(`unknown subcommand '${o??``}'. Try 'serial --help'.`)}}function Jx(){return S(`serial`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return B(Rx);let n=Rr(ce(),y());if(!n)return V(`Web Serial is unavailable in this environment`);try{return await qx(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 Yx=new Set([`--port`,`--baud`,`--vid`,`--pid`]),Xx=115200;function Zx(e){return yn(e,Yx)}function Qx(e){let t=e.replace(/-/g,`_`);return t===`chip_info`||t===`id`?`chip_id`:t}function $x(e){return{stdout:e,stderr:``,exitCode:0}}function eS(e){return{stdout:``,stderr:`esptool: ${e}\n`,exitCode:1}}const tS=`esptool - flash ESP32 / ESP8266 chips via esptool-js
869
869
 
870
870
  Usage: esptool [--port H] [--baud N] <subcommand> [args]
871
871
 
@@ -902,8 +902,8 @@ Without --port, the Web Serial picker opens (needs a user gesture).
902
902
  `)}\n`:`region erased
903
903
  `)}case`run`:{let e=await nS(a,r);return await n.run(e,c,u),$x(l.length?`${l.join(`
904
904
  `)}\n`:`running app
905
- `)}default:return eS(`unknown subcommand '${i[0]??``}'. Try 'esptool --help'.`)}}function aS(){return S(`esptool`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return $x(tS);let n=se(),r=y(),i=bx(n,r),a=Lr(n,r);if(!i||!a)return eS(`Web Serial is unavailable in this environment`);try{return await iS(e,t,i,a)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?eS(`user cancelled or no port selected`):eS(t)}})}function oS(){return S(`ffmpeg`,async(e,t)=>{let{runFfmpeg:n}=await import(`./run-C1e4W7pJ.js`);return n(e,t)})}function sS(){return S(`ffprobe`,async(e,t)=>{let{runFfprobe:n}=await import(`./run-BOMvKGOX.js`);return n(e,t)})}const cS=new Map;let lS=0;const uS=e=>({stdout:e,stderr:``,exitCode:0}),dS=e=>({stdout:``,stderr:`fswatch: ${e}\n`,exitCode:1}),fS=[`--path`,`--pattern`,`--scoop`,`--name`];function pS(e){let t=C(e.slice(1),{});if(`error`in t)return dS(t.error);if(cS.size===0)return uS(`No active file watchers.
906
- `);let n=``;for(let[,e]of cS)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 uS(n)}function mS(e){let t=C(e.slice(1),{});if(`error`in t)return dS(t.error);let n=t.positionals[0];if(!n)return dS(`delete requires an ID`);let r=cS.get(n);return r?(r.unsubscribe(),cS.delete(n),uS(`Deleted watcher "${r.name}" (${n})\n`)):dS(`watcher not found: ${n}`)}function hS(e){let t=C(e.slice(1),{value:fS});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 gS(e){let t=RegExp(`^`+e.replace(/\./g,`\\.`).replace(/\*/g,`.*`)+`$`);return e=>t.test(e.split(`/`).pop()??``)}async function _S(e,t){let n=hS(e);if(`error`in n)return dS(n.error);let r=n,i=r.scoop||void 0;if(r.scoop=Ri(r.scoop,t)??``,!r.basePath||!r.pattern)return dS(`--path and --pattern are required`);let a=await ny(await ey(),`fswatch create`,i);if(a)return{stdout:``,stderr:a,exitCode:1};let o=globalThis,s=o.__slicc_fs_watcher;if(!s)return dS(`file system watcher not available`);let c=`fsw-${++lS}`,l=r.name||`${r.pattern} in ${r.basePath}`,u=o.__slicc_lick_handler,d=s.watch(r.basePath,gS(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}})});cS.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`),uS(f)}function vS(){return S(`fswatch`,async(e,t)=>{let n=e[0];if(!n||w(e,{valueFlags:fS}))return uS(`usage: fswatch <command> [options]
905
+ `)}default:return eS(`unknown subcommand '${i[0]??``}'. Try 'esptool --help'.`)}}function aS(){return S(`esptool`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return $x(tS);let n=ce(),r=y(),i=bx(n,r),a=Rr(n,r);if(!i||!a)return eS(`Web Serial is unavailable in this environment`);try{return await iS(e,t,i,a)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?eS(`user cancelled or no port selected`):eS(t)}})}function oS(){return S(`ffmpeg`,async(e,t)=>{let{runFfmpeg:n}=await import(`./run-C1e4W7pJ.js`);return n(e,t)})}function sS(){return S(`ffprobe`,async(e,t)=>{let{runFfprobe:n}=await import(`./run-BOMvKGOX.js`);return n(e,t)})}const cS=new Map;let lS=0;const uS=e=>({stdout:e,stderr:``,exitCode:0}),dS=e=>({stdout:``,stderr:`fswatch: ${e}\n`,exitCode:1}),fS=[`--path`,`--pattern`,`--scoop`,`--name`];function pS(e){let t=C(e.slice(1),{});if(`error`in t)return dS(t.error);if(cS.size===0)return uS(`No active file watchers.
906
+ `);let n=``;for(let[,e]of cS)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 uS(n)}function mS(e){let t=C(e.slice(1),{});if(`error`in t)return dS(t.error);let n=t.positionals[0];if(!n)return dS(`delete requires an ID`);let r=cS.get(n);return r?(r.unsubscribe(),cS.delete(n),uS(`Deleted watcher "${r.name}" (${n})\n`)):dS(`watcher not found: ${n}`)}function hS(e){let t=C(e.slice(1),{value:fS});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 gS(e){let t=RegExp(`^`+e.replace(/\./g,`\\.`).replace(/\*/g,`.*`)+`$`);return e=>t.test(e.split(`/`).pop()??``)}async function _S(e,t){let n=hS(e);if(`error`in n)return dS(n.error);let r=n,i=r.scoop||void 0;if(r.scoop=zi(r.scoop,t)??``,!r.basePath||!r.pattern)return dS(`--path and --pattern are required`);let a=await ny(await ey(),`fswatch create`,i);if(a)return{stdout:``,stderr:a,exitCode:1};let o=globalThis,s=o.__slicc_fs_watcher;if(!s)return dS(`file system watcher not available`);let c=`fsw-${++lS}`,l=r.name||`${r.pattern} in ${r.basePath}`,u=o.__slicc_lick_handler,d=s.watch(r.basePath,gS(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}})});cS.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`),uS(f)}function vS(){return S(`fswatch`,async(e,t)=>{let n=e[0];if(!n||w(e,{valueFlags:fS}))return uS(`usage: fswatch <command> [options]
907
907
 
908
908
  Commands:
909
909
  create --path <path> --pattern <glob> [--scoop <name>] [--name <name>] Watch for file changes
@@ -915,7 +915,7 @@ Options:
915
915
  --pattern <glob> File pattern to match, e.g. "*.md", "*.bsh" (required)
916
916
  --scoop <target> Scoop name, cone name, or folder. Omit for your own cone.
917
917
  --name <name> Human-readable name for the watcher
918
- `);switch(n){case`list`:return pS(e);case`delete`:return mS(e);case`create`:return await _S(e,t.env);default:return dS(`unknown command: ${n}`)}})}function yS(e){return S(`gelatiere`,async(t,n)=>{let{runGelatiere:r}=await import(`./run-BA94mtBB.js`);return r(t,n,e)})}function bS(e){return typeof e.stdoutIsTTY!=`boolean`||e.stdoutIsTTY}function xS(e,t){return typeof e.stdinIsTTY==`boolean`?e.stdinIsTTY:t===void 0?ei(e.stdin).length===0:t===0}function SS(){return{stdout:`usage: hear [-i file] [-l lang] [-T seconds] [-d deviceId] [--engine name]
918
+ `);switch(n){case`list`:return pS(e);case`delete`:return mS(e);case`create`:return await _S(e,t.env);default:return dS(`unknown command: ${n}`)}})}function yS(e){return S(`gelatiere`,async(t,n)=>{let{runGelatiere:r}=await import(`./run-Dcy1n9LT.js`);return r(t,n,e)})}function bS(e){return typeof e.stdoutIsTTY!=`boolean`||e.stdoutIsTTY}function xS(e,t){return typeof e.stdinIsTTY==`boolean`?e.stdinIsTTY:t===void 0?ti(e.stdin).length===0:t===0}function SS(){return{stdout:`usage: hear [-i file] [-l lang] [-T seconds] [-d deviceId] [--engine name]
919
919
  hear --devices | --status | --warmup
920
920
 
921
921
  Speech recognition: listens on the microphone until you pause, then
@@ -940,9 +940,9 @@ Options:
940
940
  `;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 OS(e){return{stdout:``,stderr:`hear: ${e}\n`,exitCode:1}}function kS(e){return e instanceof Error?e.message:String(e)}function AS(e){let t=e.map((e,t)=>`${e.deviceId}\t${e.label||`Microphone ${t+1}`}`);return t.join(`
941
941
  `)+(t.length?`
942
942
  `:``)}async function jS(e){try{return e.local?navigator.mediaDevices?.enumerateDevices?{stdout:AS((await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`)),stderr:``,exitCode:0}:OS(`device enumeration unavailable`):{stdout:AS((await e.panelRpc.call(`enumerate-media-devices`,void 0)).audioinputs),stderr:``,exitCode:0}}catch(e){return OS(kS(e))}}async function MS(e,t){try{if(e.local){let{hearStatus:e,hearWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:DS(t?n():e()),stderr:``,exitCode:0}}return{stdout:DS(t?await e.panelRpc.call(`hear-warmup`,void 0):await e.panelRpc.call(`hear-status`,void 0)),stderr:``,exitCode:0}}catch(e){return OS(kS(e))}}function NS(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function PS(e,t,n,r){if(n.byteLength===0)return OS(`no audio on ${r}`);let i=NS(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+`
943
- `,stderr:``,exitCode:0}}catch(e){return OS(`transcription failed: ${kS(e)}`)}}async function FS(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 OS(`cannot open ${r}: No such file`)}let o=Jn(i);return!o.startsWith(`audio/`)&&!o.startsWith(`video/`)?OS(`${r} is not an audio file`):PS(e,t,a,r)}async function IS(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+`
943
+ `,stderr:``,exitCode:0}}catch(e){return OS(`transcription failed: ${kS(e)}`)}}async function FS(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 OS(`cannot open ${r}: No such file`)}let o=Yn(i);return!o.startsWith(`audio/`)&&!o.startsWith(`video/`)?OS(`${r} is not an audio file`):PS(e,t,a,r)}async function IS(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+`
944
944
  `,stderr:``,exitCode:0}:{stdout:``,stderr:`hear: no speech detected
945
- `,exitCode:1}}catch(e){return OS(kS(e))}}function LS(){return S(`hear`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return SS();let n=ES(e);if(`exitCode`in n)return n;let r={local:se(),panelRpc:y()};if(!r.local&&!r.panelRpc)return OS(`speech recognition unavailable in this environment`);if(n.devices)return jS(r);if(n.status||n.warmup)return MS(r,n.warmup);if(n.inputFile&&n.inputFile!==`-`)return FS(r,n,t);let i=ti(t.stdin);return n.inputFile===`-`||n.deviceId==null&&!xS(t,i.byteLength)?PS(r,n,i,`stdin`):IS(r,n)})}function RS(e,t,n){return typeof e.onSessionReplaced==`function`?e.onSessionReplaced(t,n):()=>void 0}function zS(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=RS(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 BS=[`debug`,`log`,`info`,`warning`,`error`],VS=1e3,HS={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 US(e,t,n,r,i){if(t.consoleCleanup.has(r))return;t.consoleMessages.set(r,[]);let a=zS({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=HS[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>VS&&c.splice(0,c.length-VS))}]],enable:(e,t)=>e.send(`Runtime.enable`,{},t)});t.consoleCleanup.set(r,()=>a.stop())}const WS=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=BS.indexOf(o);if(c===-1)return{stdout:``,stderr:`Invalid level "${o}". Valid: ${BS.join(`, `)}\n`,exitCode:1};t.consoleCleanup.has(a.targetId)||await i(a.targetId,async({sessionId:n,transport:r})=>{await r.send(`Runtime.enable`,{},n),US(e,t,r,a.targetId,n)});let l=(t.consoleMessages.get(a.targetId)??[]).filter(e=>BS.indexOf(e.level)>=c);return s&&t.consoleMessages.set(a.targetId,[]),l.length===0?{stdout:`No console messages
945
+ `,exitCode:1}}catch(e){return OS(kS(e))}}function LS(){return S(`hear`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return SS();let n=ES(e);if(`exitCode`in n)return n;let r={local:ce(),panelRpc:y()};if(!r.local&&!r.panelRpc)return OS(`speech recognition unavailable in this environment`);if(n.devices)return jS(r);if(n.status||n.warmup)return MS(r,n.warmup);if(n.inputFile&&n.inputFile!==`-`)return FS(r,n,t);let i=ni(t.stdin);return n.inputFile===`-`||n.deviceId==null&&!xS(t,i.byteLength)?PS(r,n,i,`stdin`):IS(r,n)})}function RS(e,t,n){return typeof e.onSessionReplaced==`function`?e.onSessionReplaced(t,n):()=>void 0}function zS(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=RS(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 BS=[`debug`,`log`,`info`,`warning`,`error`],VS=1e3,HS={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 US(e,t,n,r,i){if(t.consoleCleanup.has(r))return;t.consoleMessages.set(r,[]);let a=zS({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=HS[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>VS&&c.splice(0,c.length-VS))}]],enable:(e,t)=>e.send(`Runtime.enable`,{},t)});t.consoleCleanup.set(r,()=>a.stop())}const WS=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=BS.indexOf(o);if(c===-1)return{stdout:``,stderr:`Invalid level "${o}". Valid: ${BS.join(`, `)}\n`,exitCode:1};t.consoleCleanup.has(a.targetId)||await i(a.targetId,async({sessionId:n,transport:r})=>{await r.send(`Runtime.enable`,{},n),US(e,t,r,a.targetId,n)});let l=(t.consoleMessages.get(a.targetId)??[]).filter(e=>BS.indexOf(e.level)>=c);return s&&t.consoleMessages.set(a.targetId,[]),l.length===0?{stdout:`No console messages
946
946
  `,stderr:``,exitCode:0}:{stdout:l.map(e=>`[${e.level}] ${e.text}`).join(`
947
947
  `)+`
948
948
  `,stderr:``,exitCode:0}};function GS(e){return e.cookies??[]}function KS(e){return`${e.name}=${e.value}\tDomain=${e.domain}\tPath=${e.path}\tSecure=${e.secure}\tHttpOnly=${e.httpOnly}\tExpires=${e.expires}`}function qS(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 JS(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 YS=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=GS(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(KS).join(`
@@ -951,8 +951,8 @@ Options:
951
951
  `,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=GS(await e.send(`Network.getCookies`)).filter(e=>e.name===a);if(t.length===0)throw Error(`Cookie "${a}" not found`);return t.map(KS).join(`
952
952
  `)})+`
953
953
  `,stderr:``,exitCode:0}},ZS=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length<2)return{stdout:``,stderr:`cookie-set requires <name> <value>
954
- `,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 Fn(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`,qS(i))}),{stdout:`Cookie "${t[0]}" set\n`,stderr:``,exitCode:0})},QS=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`cookie-delete requires a cookie name
955
- `,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 Fn(e)).href),await e.send(`Network.deleteCookies`,JS(r))}),{stdout:`Cookie "${t[0]}" deleted\n`,stderr:``,exitCode:0})},$S=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
954
+ `,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 In(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`,qS(i))}),{stdout:`Cookie "${t[0]}" set\n`,stderr:``,exitCode:0})},QS=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`cookie-delete requires a cookie name
955
+ `,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 In(e)).href),await e.send(`Network.deleteCookies`,JS(r))}),{stdout:`Cookie "${t[0]}" deleted\n`,stderr:``,exitCode:0})},$S=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
956
956
  `,stderr:``,exitCode:0})},eC=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)
957
957
  `,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.
958
958
  `,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() {
@@ -995,25 +995,25 @@ Options:
995
995
  }
996
996
  })()`;await t.send(`Runtime.evaluate`,{expression:r,returnByValue:!0},e)}}),{stdout:o?`Highlight removed from ${c}\n`:`Highlighted ${c}\n`,stderr:``,exitCode:0}},nC=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}},rC=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
997
997
  `,stderr:``,exitCode:0})};function iC(e){let t=e instanceof Error?e.message:String(e);return/SyntaxError/.test(t)}function aC(e){return/\bawait\b/.test(e)||/\breturn\b/.test(e)}async function oC(e,t){try{return await e(t)}catch(n){if(!iC(n)||!aC(t))throw n;try{return await e(`(async () => (\n${t}\n))()`)}catch(r){if(!iC(r))throw r;try{return await e(`(async () => {\n${t}\n})()`)}catch(e){throw iC(e)?n:e}}}}function sC(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 cC=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`eval requires an expression
998
- `,exitCode:1};let a=sC(`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 In(e,r),n=await oC(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`)+`
998
+ `,exitCode:1};let a=sC(`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 Ln(e,r),n=await oC(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`)+`
999
999
  `,stderr:``,exitCode:0}},lC=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`eval-file requires a file path
1000
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=sC(`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 In(e,r),n=await oC(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`)+`
1001
- `,stderr:``,exitCode:0}};function uC(e){return async(t,n)=>{let r=typeof t==`string`?t:t instanceof URL?t.toString():t.url,i=m(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 dC(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 fC(e,t,n){let r=``;try{r=new URL(e).hostname}catch{return{}}let i=r?Pm(r):``;if(!i)return{};let a;try{a=await Lm(n)}catch(e){return{warning:`playwright-cli: warning: browse.sh catalog unavailable: ${e instanceof Error?e.message:String(e)}`}}let o=await dC(t),s=[];for(let e of a){if(!e.hostname||Pm(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 pC(e,t={}){let n=t.fetchImpl??h(),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 Bb(o,{fetchImpl:uC(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 fC(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
1000
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=sC(`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 Ln(e,r),n=await oC(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`)+`
1001
+ `,stderr:``,exitCode:0}};function uC(e){return async(t,n)=>{let r=typeof t==`string`?t:t instanceof URL?t.toString():t.url,i=_(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 dC(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 fC(e,t,n){let r=``;try{r=new URL(e).hostname}catch{return{}}let i=r?Pm(r):``;if(!i)return{};let a;try{a=await Lm(n)}catch(e){return{warning:`playwright-cli: warning: browse.sh catalog unavailable: ${e instanceof Error?e.message:String(e)}`}}let o=await dC(t),s=[];for(let e of a){if(!e.hostname||Pm(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 pC(e,t={}){let n=t.fetchImpl??p(),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 Bb(o,{fetchImpl:uC(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 fC(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
1002
1002
  `,exitCode:1};let r=t[0],{browseShWarning:i,...a}=await pC(r,{discover:n.discover===`true`,method:n.method??`GET`,fs:e});return{stdout:JSON.stringify(a,null,2)+`
1003
- `,stderr:i?`${i}\n`:``,exitCode:+!!a.error}};function hC(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 gC(e){await e.send(`Input.dispatchKeyEvent`,{type:`keyDown`,key:`Enter`}),await e.send(`Input.dispatchKeyEvent`,{type:`keyUp`,key:`Enter`})}async function _C(e,t,n){((await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:An,returnByValue:!0})).result?.value??``)!==n&&await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:bn,arguments:[{value:n}],returnByValue:!0})}async function vC(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:kn,returnByValue:!0}),await e.insertText(n),r?.objectId&&await _C(e,r.objectId,n)}async function yC(e,t,n){await e.click(t),await e.evaluate(`(function() {
1003
+ `,stderr:i?`${i}\n`:``,exitCode:+!!a.error}};function hC(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 gC(e){await e.send(`Input.dispatchKeyEvent`,{type:`keyDown`,key:`Enter`}),await e.send(`Input.dispatchKeyEvent`,{type:`keyUp`,key:`Enter`})}async function _C(e,t,n){((await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:jn,returnByValue:!0})).result?.value??``)!==n&&await e.send(`Runtime.callFunctionOn`,{objectId:t,functionDeclaration:xn,arguments:[{value:n}],returnByValue:!0})}async function vC(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:An,returnByValue:!0}),await e.insertText(n),r?.objectId&&await _C(e,r.objectId,n)}async function yC(e,t,n){await e.click(t),await e.evaluate(`(function() {
1004
1004
  const el = document.querySelector(${JSON.stringify(t)});
1005
- if (el) { return (${kn}).call(el); }
1005
+ if (el) { return (${An}).call(el); }
1006
1006
  return false;
1007
1007
  })()`),await e.insertText(n);let r=t.split(`,`)[0].trim();await e.evaluate(`(function() {
1008
1008
  const el = document.querySelector(${JSON.stringify(r)});
1009
1009
  if (!el) return '';
1010
- return (${An}).call(el);
1010
+ return (${jn}).call(el);
1011
1011
  })()`)!==n&&await e.evaluate(`(function() {
1012
1012
  const el = document.querySelector(${JSON.stringify(r)});
1013
1013
  if (!el) return;
1014
- (${bn}).call(el, ${JSON.stringify(n)});
1014
+ (${xn}).call(el, ${JSON.stringify(n)});
1015
1015
  })()`)}const bC=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)
1016
- `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=hC(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}=yn(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() {
1016
+ `,exitCode:1};let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=n[0],s=hC(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}=bn(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() {
1017
1017
  var el = document.querySelector(${JSON.stringify(s)});
1018
1018
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
1019
1019
  el.scrollIntoView({ block: 'center' });
@@ -1021,7 +1021,7 @@ Options:
1021
1021
  })()`),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}`})+`
1022
1022
  `,stderr:``,exitCode:0}},xC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`type requires text
1023
1023
  `,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 gC(e)}),{stdout:`Typed: ${a}\n`,stderr:``,exitCode:0}},SC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`fill requires <ref> <text>
1024
- `,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}=yn(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() {
1024
+ `,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}=bn(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() {
1025
1025
  var el = document.querySelector(${JSON.stringify(l)});
1026
1026
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
1027
1027
  el.scrollIntoView({ block: 'center' });
@@ -1035,28 +1035,28 @@ Options:
1035
1035
  `,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}},wC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`keydown requires a key name
1036
1036
  `,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}},TC=async({browser:e,positional:t,flags:n,onTab:r})=>{if(t.length===0)return{stdout:``,stderr:`keyup requires a key name
1037
1037
  `,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}},EC=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)
1038
- `,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=hC(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}=yn(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() {
1038
+ `,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=hC(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}=bn(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() {
1039
1039
  var el = document.querySelector(${JSON.stringify(s)});
1040
1040
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
1041
1041
  el.scrollIntoView({ block: 'center' });
1042
1042
  el.dispatchEvent(new MouseEvent('dblclick', { bubbles: true }));
1043
1043
  })()`),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}`})+`
1044
1044
  `,stderr:``,exitCode:0}},DC=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)
1045
- `,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}=yn(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() {
1045
+ `,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}=bn(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() {
1046
1046
  var el = document.querySelector(${JSON.stringify(r)});
1047
1047
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
1048
1048
  el.scrollIntoView({ block: 'center' });
1049
1049
  el.dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
1050
1050
  })()`),`Hovered ${o} (in iframe)`}let s=n.refToBackendNodeId.get(o);if(!s)throw Error(`Unknown ref "${o}"`);return await e.hoverByBackendNodeId(s),`Hovered ${o}`})+`
1051
1051
  `,stderr:``,exitCode:0}},OC=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`select requires <ref> <value>
1052
- `,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}=yn(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() {
1052
+ `,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}=bn(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() {
1053
1053
  var el = document.querySelector(${JSON.stringify(c)});
1054
1054
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
1055
1055
  el.value = ${JSON.stringify(s)};
1056
1056
  el.dispatchEvent(new Event('change', { bubbles: true }));
1057
1057
  })()`),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}`})+`
1058
1058
  `,stderr:``,exitCode:0}},kC=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)
1059
- `,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}=yn(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() {
1059
+ `,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}=bn(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() {
1060
1060
  var el = document.querySelector(${JSON.stringify(s)});
1061
1061
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
1062
1062
  if (!el.checked) {
@@ -1066,7 +1066,7 @@ Options:
1066
1066
  }
1067
1067
  })()`),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}`})+`
1068
1068
  `,stderr:``,exitCode:0}},AC=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)
1069
- `,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}=yn(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() {
1069
+ `,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}=bn(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() {
1070
1070
  var el = document.querySelector(${JSON.stringify(s)});
1071
1071
  if (!el) throw new Error('Element not found in iframe for ref ${o}');
1072
1072
  if (el.checked) {
@@ -1097,7 +1097,7 @@ Options:
1097
1097
  this.dispatchEvent(new DragEvent('dragover', { bubbles: true, cancelable: true, dataTransfer: dt }));
1098
1098
  this.dispatchEvent(new DragEvent('drop', { bubbles: true, cancelable: true, dataTransfer: dt }));
1099
1099
  return this.tagName;
1100
- }`,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}=yn(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() {
1100
+ }`,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}=bn(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() {
1101
1101
  var el = document.querySelector(${JSON.stringify(l)});
1102
1102
  if (!el) throw new Error('Element not found for ref ${c}: ' + ${JSON.stringify(l)});
1103
1103
  var dt = new DataTransfer();
@@ -1191,16 +1191,16 @@ Options:
1191
1191
  `,u=r.filename;return u?(await i.writeFile(u,l),{stdout:`Saved to ${u}\n`,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}},Lw=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),Ow(e,t,r,o.targetId,n)});let s=n[0]??``,c=jw(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)
1192
1192
  `,stderr:``,exitCode:0};let l=r.filename,u=Aw(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)+`
1193
1193
  ... (truncated)`:d)+`
1194
- `,stderr:``,exitCode:0}},Rw=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 re(e,n),xn(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}},zw=async({state:e,positional:t})=>{if(t.length===0)return{stdout:``,stderr:`stop-recording requires a recordingId
1194
+ `,stderr:``,exitCode:0}},Rw=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 ie(e,n),Sn(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}},zw=async({state:e,positional:t})=>{if(t.length===0)return{stdout:``,stderr:`stop-recording requires a recordingId
1195
1195
  `,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}},Bw=e(`playwright-route`),Vw=[{urlPattern:`*`,requestStage:`Request`}];function Hw(e){let t=e.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(/\*\*/g,`@@`).replace(/\*/g,`[^/]*`).replace(/@@/g,`.*`);return RegExp(`^${t}$`)}async function Uw(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=>{Bw.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=>{Bw.warn(`Fetch.fulfillRequest failed`,{requestId:o,url:s.url,err:e})})}async function Ww(e,t,n,r){await t(r,async({sessionId:t,transport:i})=>{await i.send(`Fetch.enable`,{patterns:Vw},t);let a,o=e=>{a&&Uw(a.transport,a.sessionId,n,r,e)};try{a=zS({browser:e,targetId:r,transport:i,sessionId:t,listeners:[[`Fetch.requestPaused`,o]],enable:(e,t)=>e.send(`Fetch.enable`,{patterns:Vw},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 Gw=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`route requires a URL pattern
1196
1196
  `,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:Hw(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(`,`)&&Bw.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 Ww(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}},Kw=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
1197
1197
  `,stderr:``,exitCode:0}:{stdout:r.map((e,t)=>`${t+1}. ${e.pattern} → ${e.status} ${e.contentType}`).join(`
1198
1198
  `)+`
1199
1199
  `,stderr:``,exitCode:0}},qw=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
1200
- `,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}},Jw=`/.playwright`;function Yw(e,t){return e?`${t.replace(/\/+$/,``)}${Jw}`:Jw}async function Xw(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(!wn(e))throw e}t.sessionDirsCreated.add(n)}}async function Zw(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 oe(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(`
1201
- `),p=`${i}/snapshots/page-${Sn(new Date)}.yml`;return await t.writeFile(p,f),p})}catch{return null}}async function Qw(e,t,n,r){await Xw(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(`
1200
+ `,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}},Jw=`/.playwright`;function Yw(e,t){return e?`${t.replace(/\/+$/,``)}${Jw}`:Jw}async function Xw(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(!Tn(e))throw e}t.sessionDirsCreated.add(n)}}async function Zw(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 se(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(`
1201
+ `),p=`${i}/snapshots/page-${Cn(new Date)}.yml`;return await t.writeFile(p,f),p})}catch{return null}}async function Qw(e,t,n,r){await Xw(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(`
1202
1202
  `)+`
1203
- `,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 $w(){return import(`./snapshot-features-NmqWLNc6.js`)}async function eT(e,t,n,r){let i=await e.getAccessibilityTreeForFrame(r.frameId),a=new Map,o=new Map,s=new Map,c=ae(i,a,o,{value:0},``,`f1`);for(let e of a.keys())s.set(e,r.frameId);let l=c.join(`
1203
+ `,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 $w(){return import(`./snapshot-features-DQElXDdA.js`)}async function eT(e,t,n,r){let i=await e.getAccessibilityTreeForFrame(r.frameId),a=new Map,o=new Map,s=new Map,c=oe(i,a,o,{value:0},``,`f1`);for(let e of a.keys())s.set(e,r.frameId);let l=c.join(`
1204
1204
  `);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 tT(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() {
1205
1205
  this.scrollIntoView({ block: 'center' });
1206
1206
  const r = this.getBoundingClientRect();
@@ -1211,13 +1211,13 @@ Options:
1211
1211
  el.scrollIntoView({ block: 'center' });
1212
1212
  const r = el.getBoundingClientRect();
1213
1213
  return JSON.stringify({ x: r.x + window.scrollX, y: r.y + window.scrollY, width: r.width, height: r.height });
1214
- })()`);return n?Tn(n,`element clip rect`):void 0}async function rT(e,t,n){let r=t.refToBackendNodeId.get(n);if(r)return tT(e,r);let i=t.refToSelector.get(n);if(!i)throw Error(`Unknown ref "${n}"`);return nT(e,i)}const iT=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)
1215
- `,exitCode:1};let u=await i(a.targetId,async e=>{let t=await In(e,r);if(t)return eT(e,n,a.targetId,t);let{snapshot:i,output:s}=await ne(e,n,a.targetId,{noIframes:o});if(!l)return s;let{annotateBoxes:c}=await $w();return c(e,i.refToBackendNodeId,s)});if(c!==void 0){let{limitSnapshotDepth:e}=await $w();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+`
1214
+ })()`);return n?En(n,`element clip rect`):void 0}async function rT(e,t,n){let r=t.refToBackendNodeId.get(n);if(r)return tT(e,r);let i=t.refToSelector.get(n);if(!i)throw Error(`Unknown ref "${n}"`);return nT(e,i)}const iT=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)
1215
+ `,exitCode:1};let u=await i(a.targetId,async e=>{let t=await Ln(e,r);if(t)return eT(e,n,a.targetId,t);let{snapshot:i,output:s}=await re(e,n,a.targetId,{noIframes:o});if(!l)return s;let{annotateBoxes:c}=await $w();return c(e,i.refToBackendNodeId,s)});if(c!==void 0){let{limitSnapshotDepth:e}=await $w();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+`
1216
1216
  `,stderr:``,exitCode:0}},aT=async e=>{let{findHandlerImpl:t}=await $w();return t(e)},oT=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(`
1217
1217
  `)}`)+`
1218
- `,stderr:``,exitCode:0}},sT=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-${Sn(new Date)}.pdf`;try{await i(a.targetId,async({sessionId:e,transport:n})=>{let r=(await n.send(`Page.printToPDF`,{},e)).data,i=Nn(r);await t.writeFile(o,i)})}catch(e){let t=e instanceof Error?e.message:String(e);return _()?{stdout:``,stderr:`pdf: not available in extension mode — use screenshot --full-page
1218
+ `,stderr:``,exitCode:0}},sT=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-${Cn(new Date)}.pdf`;try{await i(a.targetId,async({sessionId:e,transport:n})=>{let r=(await n.send(`Page.printToPDF`,{},e)).data,i=Pn(r);await t.writeFile(o,i)})}catch(e){let t=e instanceof Error?e.message:String(e);return v()?{stdout:``,stderr:`pdf: not available in extension mode — use screenshot --full-page
1219
1219
  `,exitCode:1}:{stdout:``,stderr:`pdf: ${t}\n`,exitCode:1}}return{stdout:`Saved PDF to ${o}\n`,stderr:``,exitCode:0}};async function cT(e,t,n,r){let i=t.snapshots.get(n);if(!i)throw Error(`No snapshot available. Run "snapshot" first.`);let a=await rT(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 lT=new Set([`png`,`jpeg`,`webp`]);function uT(e){let t=e.type;if(t&&lT.has(t))return t;let n=e.filename??``;return/\.jpe?g$/i.test(n)?`jpeg`:/\.webp$/i.test(n)?`webp`:`png`}const dT=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&&!lT.has(i.type))return{stdout:``,stderr:`screenshot: --type must be png, jpeg, or webp, got "${i.type}"\n`,exitCode:1};if(i[`max-width`]&&uT(i)!==`png`)return{stdout:``,stderr:`screenshot: --max-width requires png output (the downscale pass measures PNG headers); drop --type/--filename extension or --max-width
1220
- `,exitCode:1};let l=await s(c.targetId,async e=>{let s;if(r[0]?.startsWith(`e`)){let t=await cT(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 $w();s=await t(e,s,l)}let u=i[`max-width`]?parseInt(i[`max-width`],10):void 0,d=uT(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=Nn(f);await t.writeFile(m,h);try{await Xw(t,n,o);let e=`${o}/screenshots/screenshot-${Sn(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+`
1220
+ `,exitCode:1};let l=await s(c.targetId,async e=>{let s;if(r[0]?.startsWith(`e`)){let t=await cT(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 $w();s=await t(e,s,l)}let u=i[`max-width`]?parseInt(i[`max-width`],10):void 0,d=uT(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=Pn(f);await t.writeFile(m,h);try{await Xw(t,n,o);let e=`${o}/screenshots/screenshot-${Cn(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+`
1221
1221
  `,stderr:``,exitCode:0}},fT=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}},pT=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`state-load requires a filename
1222
1222
  `,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() {
1223
1223
  var items = ${JSON.stringify(e)};
@@ -1227,14 +1227,14 @@ Options:
1227
1227
  })()`;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 mT(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(`
1228
1228
  `)})+`
1229
1229
  `,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})+`
1230
- `,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 hT=mT(`localstorage`,`localStorage`),gT=mT(`sessionstorage`,`sessionStorage`),_T=e(`playwright`),vT={width:412,height:915,deviceScaleFactor:2.625};function yT(e,t,n,r,i){let a=n[`teleport-start`],o=n[`teleport-return`];if(!a||!o)return null;_T.info(`Arming teleport via open/tab-new flags`),_T.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&&(dw(u),t.teleportWatchers.delete(i)),fw(e,t,s,c,l*1e3,n[`teleport-runtime`],r,i),null}const bT=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 re(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(vT.width,vT.height,{deviceScaleFactor:vT.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){_T.debug(`open/tab-new --foreground bringToFront failed`,{targetId:u,error:e instanceof Error?e.message:String(e)})}let d=yT(e,n,i,o,u);if(d)return d;if(i.discover===`true`){let{browseShWarning:e,...n}=await pC(o,{discover:!0,fs:t}),r={action:`open`,targetId:u,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(r,null,2)+`
1231
- `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Opened ${o} in new tab [targetId: ${u}]\n`,stderr:``,exitCode:0}},xT=async({browser:e,state:t})=>{let n=await ie(e,t);return n.length===0?{stdout:`No tabs open
1230
+ `,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 hT=mT(`localstorage`,`localStorage`),gT=mT(`sessionstorage`,`sessionStorage`),_T=e(`playwright`),vT={width:412,height:915,deviceScaleFactor:2.625};function yT(e,t,n,r,i){let a=n[`teleport-start`],o=n[`teleport-return`];if(!a||!o)return null;_T.info(`Arming teleport via open/tab-new flags`),_T.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&&(dw(u),t.teleportWatchers.delete(i)),fw(e,t,s,c,l*1e3,n[`teleport-runtime`],r,i),null}const bT=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 ie(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(vT.width,vT.height,{deviceScaleFactor:vT.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){_T.debug(`open/tab-new --foreground bringToFront failed`,{targetId:u,error:e instanceof Error?e.message:String(e)})}let d=yT(e,n,i,o,u);if(d)return d;if(i.discover===`true`){let{browseShWarning:e,...n}=await pC(o,{discover:!0,fs:t}),r={action:`open`,targetId:u,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(r,null,2)+`
1231
+ `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Opened ${o} in new tab [targetId: ${u}]\n`,stderr:``,exitCode:0}},xT=async({browser:e,state:t})=>{let n=await ae(e,t);return n.length===0?{stdout:`No tabs open
1232
1232
  `,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(`
1233
1233
  `)+`
1234
1234
  `,stderr:``,exitCode:0}},ST=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}},CT=async({browser:e,state:t,positional:n,onTab:r})=>{if(n.length===0)return{stdout:``,stderr:`tab-select requires a tab index
1235
1235
  `,exitCode:1};let i=n[0];if(!/^[0-9]+$/.test(i))return{stdout:``,stderr:`tab-select index must be a positive integer
1236
1236
  `,exitCode:1};let a=parseInt(i,10);if(a<1)return{stdout:``,stderr:`tab-select index must be a positive integer
1237
- `,exitCode:1};let o=await ie(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}},wT=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`resize requires <width> <height>
1237
+ `,exitCode:1};let o=await ae(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}},wT=async({browser:e,state:t,positional:n,flags:r,onTab:i})=>{if(n.length<2)return{stdout:``,stderr:`resize requires <width> <height>
1238
1238
  `,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
1239
1239
  `,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})},TT=e(`playwright-teleport`);function ET(){TT.info(`Listing available follower runtimes`);let e=lw();if(!e)return{stdout:``,stderr:`teleport: not connected to a tray
1240
1240
  `,exitCode:1};let t=e();if(t.length===0)return{stdout:`No followers connected to the tray.
@@ -1243,8 +1243,8 @@ Options:
1243
1243
  `,stderr:``,exitCode:0}}function DT({state:e,flags:t}){let n=j(t);if(`error`in n)return{stdout:``,stderr:n.error,exitCode:1};TT.info(`Disarming teleport watcher via --off`,{targetId:n.targetId});let r=e.teleportWatchers.get(n.targetId);return r&&(dw(r),e.teleportWatchers.delete(n.targetId)),{stdout:`Teleport watcher disarmed
1244
1244
  `,stderr:``,exitCode:0}}function OT(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 kT(e){return(lw()?.()??[]).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 AT({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>
1245
1245
  `,exitCode:1};let c=OT(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
1246
- `,exitCode:1};let u=n.runtime;if(u){let e=kT(u);if(e)return{stdout:``,stderr:e,exitCode:1}}let d=t.teleportWatchers.get(a.targetId);d&&(TT.info(`Disarming existing teleport watcher before re-arming`,{targetId:a.targetId}),dw(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 TT.info(`Arming teleport via explicit subcommand`,{targetId:a.targetId,timeoutSec:l,runtimeSelection:u?`explicit`:`auto`}),TT.debug(`Arming teleport via explicit subcommand details`,{targetId:a.targetId,startPattern:o,returnPattern:s,timeoutSec:l,runtimeId:u??`auto`,leaderUrl:f}),xn(i,`about to arm a teleport watcher on tab ${a.targetId}`),fw(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 jT=async e=>e.flags.list===`true`?ET():e.flags.off===`true`?DT(e):AT(e),MT={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 NT(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return MT[t]??`application/octet-stream`}function PT(e,t){if(e.length===0)return{error:`upload requires at least one file path
1247
- `};if(!jn(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
1246
+ `,exitCode:1};let u=n.runtime;if(u){let e=kT(u);if(e)return{stdout:``,stderr:e,exitCode:1}}let d=t.teleportWatchers.get(a.targetId);d&&(TT.info(`Disarming existing teleport watcher before re-arming`,{targetId:a.targetId}),dw(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 TT.info(`Arming teleport via explicit subcommand`,{targetId:a.targetId,timeoutSec:l,runtimeSelection:u?`explicit`:`auto`}),TT.debug(`Arming teleport via explicit subcommand details`,{targetId:a.targetId,startPattern:o,returnPattern:s,timeoutSec:l,runtimeId:u??`auto`,leaderUrl:f}),Sn(i,`about to arm a teleport watcher on tab ${a.targetId}`),fw(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 jT=async e=>e.flags.list===`true`?ET():e.flags.off===`true`?DT(e):AT(e),MT={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 NT(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return MT[t]??`application/octet-stream`}function PT(e,t){if(e.length===0)return{error:`upload requires at least one file path
1247
+ `};if(!Mn(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
1248
1248
  `}:{targetRef:n,filePaths:r}:{error:`Unknown ref "${n}"\n`}:{error:`No snapshot available. Run "snapshot" first.
1249
1249
  `}}const FT=new Map([[`teleport`,jT],[`open`,bT],[`tab-new`,bT],[`fetch`,mC],[`goto`,xw],[`navigate`,xw],[`snapshot`,iT],[`find`,aT],[`frames`,oT],[`screenshot`,dT],[`click`,bC],[`type`,xC],[`fill`,SC],[`eval`,cC],[`eval-file`,lC],[`press`,CC],[`keydown`,wC],[`keyup`,TC],[`go-back`,Sw],[`go-forward`,Cw],[`reload`,ww],[`tab-list`,xT],[`tab-close`,ST],[`close`,ST],[`dblclick`,EC],[`hover`,DC],[`select`,OC],[`check`,kC],[`uncheck`,AC],[`drag`,jC],[`resize`,wT],[`dialog-accept`,nC],[`dialog-dismiss`,rC],[`cookie-list`,YS],[`cookie-get`,XS],[`cookie-set`,ZS],[`cookie-delete`,QS],[`cookie-clear`,$S],[`localstorage-list`,hT.list],[`localstorage-get`,hT.get],[`localstorage-set`,hT.set],[`localstorage-delete`,hT.del],[`localstorage-clear`,hT.clear],[`sessionstorage-list`,gT.list],[`sessionstorage-get`,gT.get],[`sessionstorage-set`,gT.set],[`sessionstorage-delete`,gT.del],[`sessionstorage-clear`,gT.clear],[`record`,Rw],[`stop-recording`,zw],[`tab-select`,CT],[`pdf`,sT],[`network-state-set`,Tw],[`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=PT(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 MC(n,e),i=e.split(`/`).pop()??e;f.push({name:i,type:NT(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) {
1250
1250
  const el = this;
@@ -1277,9 +1277,9 @@ Options:
1277
1277
  el.dispatchEvent(new Event('change', { bubbles: true }));
1278
1278
  el.dispatchEvent(new Event('input', { bubbles: true }));
1279
1279
  return el.files.length;
1280
- })()`,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`,fT],[`state-load`,pT],[`console`,WS],[`requests`,Mw],[`request`,Nw],[`request-headers`,Pw],[`request-body`,Fw],[`response-headers`,Iw],[`response-body`,Lw],[`mousemove`,IC],[`mousedown`,LC],[`mouseup`,RC],[`mousewheel`,zC],[`drop`,BC],[`route`,Gw],[`route-list`,Kw],[`unroute`,qw],[`generate-locator`,eC],[`highlight`,tC]]);function IT(){let e=(Dn.string??[]).map(e=>`--${e}`),t=new Set(Dn.boolean??[]);for(let[e,n]of Object.entries(Dn.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 LT(e){return e.map(e=>e===`--no-iframes`||e.startsWith(`--no-iframes=`)?e.replace(`--no-iframes`,`--_noiframes`):e)}function RT(e){return{...e,bool:[...e.bool??[],`--_noiframes`],value:[...e.value??[],`--_noiframes`]}}const zT=2e3;function BT(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 VT(e,t,n,r){if(!t||typeof e.getTabLockStats!=`function`)return r;let i=e.getTabLockStats(),a=i.totalWaitMs-t.totalWaitMs;if(a<zT)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>=zT?`${(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.
1281
- `;return{...r,stderr:r.stderr+c}}async function HT(e,t,n){let r=n instanceof Error?n.message:String(n);return{stdout:``,stderr:`Error: ${(t.tab?await On(e,t.tab,n):null)??r}\n`,exitCode:1}}function UT(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 WT(e,t,n){let r=FT.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?UT(e,t,void 0):a}catch(r){return i?.aborted?UT(e,t,r):await HT(n.browser,n.flags,r)}}async function GT(e,t,n,r){let i=C(LT(n),RT(r));if(`error`in i)return{answer:{stdout:``,stderr:`${e} ${t}: ${i.error}\n`,exitCode:1}};let a;try{({flags:a}=En(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-CNHuyT-F.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 KT(e,t,n,r={}){let i=t?Cn(t,n):null,a=IT();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-CNHuyT-F.js`);return{stdout:t(e)+`
1282
- `,stderr:``,exitCode:0}}let c=o[0],l=o.slice(1),u=await GT(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=BT(t,p),h=zi(s.env),g=Yw(r.isScoop?.()??!1,h),_=await WT(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;Pn.has(c)&&_.exitCode===0&&v&&(ee=await Zw(t,n,v,i,g));try{await Qw(n,i,g,{command:c,args:l,result:_,snapshotPath:ee,targetId:v})}catch{}return VT(t,m,p,_)})}const qT=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`,`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`,...Mn,`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)`,[...zg]]]);function JT(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:
1280
+ })()`,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`,fT],[`state-load`,pT],[`console`,WS],[`requests`,Mw],[`request`,Nw],[`request-headers`,Pw],[`request-body`,Fw],[`response-headers`,Iw],[`response-body`,Lw],[`mousemove`,IC],[`mousedown`,LC],[`mouseup`,RC],[`mousewheel`,zC],[`drop`,BC],[`route`,Gw],[`route-list`,Kw],[`unroute`,qw],[`generate-locator`,eC],[`highlight`,tC]]);function IT(){let e=(On.string??[]).map(e=>`--${e}`),t=new Set(On.boolean??[]);for(let[e,n]of Object.entries(On.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 LT(e){return e.map(e=>e===`--no-iframes`||e.startsWith(`--no-iframes=`)?e.replace(`--no-iframes`,`--_noiframes`):e)}function RT(e){return{...e,bool:[...e.bool??[],`--_noiframes`],value:[...e.value??[],`--_noiframes`]}}const zT=2e3;function BT(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 VT(e,t,n,r){if(!t||typeof e.getTabLockStats!=`function`)return r;let i=e.getTabLockStats(),a=i.totalWaitMs-t.totalWaitMs;if(a<zT)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>=zT?`${(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.
1281
+ `;return{...r,stderr:r.stderr+c}}async function HT(e,t,n){let r=n instanceof Error?n.message:String(n);return{stdout:``,stderr:`Error: ${(t.tab?await kn(e,t.tab,n):null)??r}\n`,exitCode:1}}function UT(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 WT(e,t,n){let r=FT.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?UT(e,t,void 0):a}catch(r){return i?.aborted?UT(e,t,r):await HT(n.browser,n.flags,r)}}async function GT(e,t,n,r){let i=C(LT(n),RT(r));if(`error`in i)return{answer:{stdout:``,stderr:`${e} ${t}: ${i.error}\n`,exitCode:1}};let a;try{({flags:a}=Dn(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-BZT7vAmw.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 KT(e,t,n,r={}){let i=t?wn(t,n):null,a=IT();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-BZT7vAmw.js`);return{stdout:t(e)+`
1282
+ `,stderr:``,exitCode:0}}let c=o[0],l=o.slice(1),u=await GT(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=BT(t,p),h=Bi(s.env),g=Yw(r.isScoop?.()??!1,h),_=await WT(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;Fn.has(c)&&_.exitCode===0&&v&&(ee=await Zw(t,n,v,i,g));try{await Qw(n,i,g,{command:c,args:l,result:_,snapshotPath:ee,targetId:v})}catch{}return VT(t,m,p,_)})}const qT=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`,`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`,...Nn,`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)`,[...zg]]]);function JT(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:
1283
1283
  `);let a=[];for(let[e,t]of qT){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(`
1284
1284
  `)+`
1285
1285
  `}function YT(e={}){return S(`commands`,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`commands - display available commands
@@ -1297,26 +1297,35 @@ Note: This is an enhanced version of 'help' that shows all custom commands.
1297
1297
 
1298
1298
  Usage:
1299
1299
  hf download <repo> [files...] [--to <dir>] [--revision <rev>] [--force]
1300
+ [--concurrency <n>] [--max-in-flight-mb <n>]
1300
1301
 
1301
1302
  Examples:
1302
1303
  hf download onnx-community/whisper-tiny
1303
1304
  hf download onnx-community/whisper-tiny --to /workspace/models/onnx-community/whisper-tiny
1304
1305
  hf download onnx-community/Kokoro-82M-v1.0-ONNX
1305
1306
  hf download Xenova/all-MiniLM-L6-v2 config.json tokenizer.json
1307
+ hf download owner/sharded-model --concurrency 8 --max-in-flight-mb 256
1306
1308
 
1307
1309
  Defaults:
1308
- --to /workspace/models/<repo>/
1309
- --revision main
1310
+ --to /workspace/models/<repo>/
1311
+ --revision main
1312
+ --concurrency, -j 4 files at once
1313
+ --max-in-flight-mb ${Hi/1048576} MB of downloads in flight at once
1310
1314
 
1311
1315
  Notes:
1312
1316
  - <repo> is the standard <owner>/<name> form.
1313
1317
  - With no [files...], every file in the repo tree is downloaded.
1314
1318
  - Existing files at the destination with a matching byte length are skipped
1315
1319
  unless --force is passed.
1320
+ - A file starts only while the ones in flight fit --max-in-flight-mb. Where
1321
+ bodies stream to disk (CLI), each file counts as one 8 MiB write piece;
1322
+ where they are buffered whole, larger or unsized files run alone.
1323
+ - The first failed file stops the rest.
1324
+ - Background-job logs get a progress line every few seconds.
1316
1325
  - Weights are read by the speech engines via the preview SW from the
1317
1326
  target directory; transformers expects <localModelPath>/<repo>/.
1318
- `,stderr:``,exitCode:e}}function ZT(e){return{stdout:``,stderr:`hf: ${e}\n`,exitCode:1}}const QT=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;function $T(e){let t=null,n=`main`,r=!1,i=[],a=0;for(;a<e.length;){let o=e[a];if(o===`--to`){let n=e[a+1];if(typeof n!=`string`)return{error:`--to requires a value`};t=n,a+=2;continue}if(o===`--revision`||o===`--rev`){let t=e[a+1];if(typeof t!=`string`)return{error:`${o} requires a value`};n=t,a+=2;continue}if(o===`--force`||o===`-f`){r=!0,a+=1;continue}if(o.startsWith(`--`))return{error:`unknown option: ${o}`};i.push(o),a+=1}if(i.length===0)return{error:`download requires <repo>`};let o=i[0];return QT.test(o)?{repo:o,files:i.slice(1),to:t,revision:n,force:r}:{error:`invalid repo '${o}' — expected <owner>/<name>`}}function eE(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}async function tE(e,t,n){let r=$T(e);if(`error`in r)return ZT(r.error);let i=Ji(r.repo,r.to,t.cwd),a=``;try{let e=await Ui({fetch:n,fs:t.fs,repo:r.repo,targetDir:i,files:r.files,revision:r.revision,force:r.force,endpoint:t.env.get(`HF_ENDPOINT`),progress:{onListed:({files:e})=>{a+=`hf: ${e.length} file(s) listed in ${r.repo}@${r.revision}\n`},onFile:e=>{a+=e.status===`downloaded`?`hf: downloaded ${e.file} (${eE(e.bytes)})\n`:`hf: skipped ${e.file} (already at ${i})\n`}}}),o=`hf: ${e.downloaded} downloaded, ${e.skipped} skipped, ${eE(e.totalBytes)} total into ${i}\n`;return{stdout:``,stderr:a+o,exitCode:0}}catch(e){return e instanceof Hi?(a+=`hf: failed ${e.file}: ${e.message}\n`,{stdout:``,stderr:a,exitCode:1}):ZT(e instanceof Error?e.message:String(e))}}function nE(e){return{name:`hf`,async execute(t,n){if(t.length===0||w(t,{valueFlags:[`--to`,`--revision`,`--rev`]}))return XT(+(t.length===0));let r=t[0];return r===`download`?tE(t.slice(1),n,e.fetch):ZT(`unknown subcommand: ${r}`)}}}const rE=new Set([`--vid`,`--pid`,`--usage-page`,`--usage`,`--__resolved`,`--timeout`]);function iE(e){return vn(e,rE)}function aE(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 oE(e){let t={};return e.has(`--vid`)&&(t.vendorId=aE(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=aE(e.get(`--pid`),`pid`)),e.has(`--usage-page`)&&(t.usagePage=aE(e.get(`--usage-page`),`usage-page`)),e.has(`--usage`)&&(t.usage=aE(e.get(`--usage`),`usage`)),Object.keys(t).length>0?[t]:[]}function sE(e){let t=ei(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function cE(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function lE(e){return e.toString(16).padStart(2,`0`)}function uE(e){return`0x${e.toString(16).padStart(4,`0`)}`}function dE(e){let t=e.productName||`(unknown)`,n=e.opened?` [open]`:``,r=e.usagePage===void 0?``:`\t${uE(e.usagePage)}:${uE(e.usage??0)}`;return`${e.handle}\t${uE(e.vendorId)}:${uE(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 pE(e){return`${e.map(dE).join(`
1319
- `)}\n`}function mE(e){return`${lE(e.reportId)} ${cE(e.bytes)}`.trimEnd()}function hE(e){return{stdout:e,stderr:``,exitCode:0}}function U(e){return{stdout:``,stderr:`hid: ${e}\n`,exitCode:1}}const gE=`hid - access HID devices via WebHID
1327
+ `,stderr:``,exitCode:e}}function ZT(e){return{stdout:``,stderr:`hf: ${e}\n`,exitCode:1}}const QT=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;function $T(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 eE(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=$T(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 QT.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 tE(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:e<1073741824?`${(e/1048576).toFixed(1)} MB`:`${(e/1073741824).toFixed(2)} GB`}function nE(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 rE=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=tE(this.bytesDone),r=``;if(this.bytesTotal!==void 0){n+=` of ${tE(this.bytesTotal)}`;let e=this.bytesTotal-this.bytesDone;t>0&&e>0&&(r=`, ~${nE(e/t*1e3)} left`)}return`hf: ${this.filesDone}/${this.filesTotal} files, ${n}, ${tE(t)}/s${r}\n`}};function iE(e){let t=e;return typeof t.writeStdout==`function`?t.writeStdout.bind(t):void 0}async function aE(e,t,n,r){let i=eE(e);if(`error`in i)return ZT(i.error);let a=Vi(i.repo,i.to,t.cwd),{downloadHfRepo:o,HfFileDownloadError:s}=await import(`./hf-download-CNg2vD63.js`),c=iE(t),l=new rE(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} (${tE(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 ${nE(l.elapsedMs())} (${tE(l.rate())}/s)`:``,s=`hf: ${e.downloaded} downloaded, ${e.skipped} skipped, ${tE(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}):ZT(e instanceof Error?e.message:String(e))}}const oE=[`--to`,`--revision`,`--rev`,`--concurrency`,`-j`,`--max-in-flight-mb`];function sE(e){let t=e.now??Date.now;return{name:`hf`,async execute(n,r){if(n.length===0||w(n,{valueFlags:oE}))return XT(+(n.length===0));let i=n[0];return i===`download`?aE(n.slice(1),r,e,t):ZT(`unknown subcommand: ${i}`)}}}const cE=new Set([`--vid`,`--pid`,`--usage-page`,`--usage`,`--__resolved`,`--timeout`]);function lE(e){return yn(e,cE)}function uE(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 dE(e){let t={};return e.has(`--vid`)&&(t.vendorId=uE(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=uE(e.get(`--pid`),`pid`)),e.has(`--usage-page`)&&(t.usagePage=uE(e.get(`--usage-page`),`usage-page`)),e.has(`--usage`)&&(t.usage=uE(e.get(`--usage`),`usage`)),Object.keys(t).length>0?[t]:[]}function fE(e){let t=ti(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function pE(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function mE(e){return e.toString(16).padStart(2,`0`)}function hE(e){return`0x${e.toString(16).padStart(4,`0`)}`}function gE(e){let t=e.productName||`(unknown)`,n=e.opened?` [open]`:``,r=e.usagePage===void 0?``:`\t${hE(e.usagePage)}:${hE(e.usage??0)}`;return`${e.handle}\t${hE(e.vendorId)}:${hE(e.productId)}${r}\t${t}${n}`}function _E(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 vE(e){return`${e.map(gE).join(`
1328
+ `)}\n`}function yE(e){return`${mE(e.reportId)} ${pE(e.bytes)}`.trimEnd()}function bE(e){return{stdout:e,stderr:``,exitCode:0}}function U(e){return{stdout:``,stderr:`hid: ${e}\n`,exitCode:1}}const xE=`hid - access HID devices via WebHID
1320
1329
 
1321
1330
  Usage: hid <subcommand> [options]
1322
1331
 
@@ -1339,11 +1348,11 @@ Options:
1339
1348
  --timeout <ms> query: wait this long for an input report (default 1000)
1340
1349
  -h, --help
1341
1350
 
1342
- Report payloads are capped at ${Ir} bytes (4 MiB).
1343
- `;function _E(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return hE(t)}return hE(e.length?`${cE(e)}\n`:``)}function vE(e){return!e||e.aborted?Promise.resolve():new Promise(t=>{e.addEventListener(`abort`,()=>t(),{once:!0})})}async function yE(e){let t=await e.list();return t.length===0?hE(`no granted HID devices
1344
- `):hE(`${t.map(dE).join(`
1345
- `)}\n`)}async function bE(e,t){let n=e.get(`--__resolved`),r=oE(e),i=r[0];if(n){let e=n.split(`,`).filter(e=>e.length>0);return e.length===0?U(`request: missing resolved handle`):hE(pE(fE(await Promise.all(e.map(e=>t.info(e))),i)))}let a=xe();return a?xE(r,i,a,t):hE(pE(fE(await t.request(r),i)))}async function xE(e,t,n,r){let i=await Sx(`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=Fr();if(!t)return U(`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 U(`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?U(`request: granted device could not be re-acquired`):hE(pE(c))}async function SE(e,t,n){let r=t[1];return r?(e===`open`?await n.open(r):await n.close(r),hE(``)):U(`${e}: handle required`)}async function CE(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return U(`${e}: handle and report-id required`);let o=aE(a,`report-id`),s=sE(n);return s.length>4194304?U(`${e} payload exceeds 4 MiB limit`):(e===`send`?await r.sendReport(i,o,s):await r.sendFeatureReport(i,o,s),hE(``))}async function wE(e,t,n){let[,r,i]=e;return!r||i===void 0?U(`feature-get: handle and report-id required`):_E((await t.receiveFeatureReport(r,aE(i,`report-id`))).bytes,n)}async function TE(e,t,n){let r=e[1];if(!r)return U(`watch: handle required`);let i=[],a=await n.subscribeInputReports(r,e=>{i.push(mE(e))});try{await vE(t.signal)}finally{await a()}return hE(i.length?`${i.join(`
1346
- `)}\n`:``)}async function EE(e,t,n,r,i){let[,a,o]=e;if(!a||o===void 0)return U(`query: handle and report-id required`);let s=aE(o,`report-id`),c=sE(t);if(c.length>4194304)return U(`query payload exceeds 4 MiB limit`);let l=n.has(`--timeout`)?aE(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`?U(`query: no input report within ${l}ms`):i?_E(t.bytes,!0):hE(`${mE(t)}\n`)}finally{p!==void 0&&clearTimeout(p),await f()}}async function DE(e,t,n){let{positionals:r,flags:i,bools:a}=iE(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return yE(n);case`request`:return bE(i,n);case`open`:case`close`:return SE(o,r,n);case`send`:case`feature-send`:return CE(o,r,t,n);case`feature-get`:return wE(r,n,s);case`watch`:return TE(r,t,n);case`query`:return EE(r,t,i,n,s);default:return U(`unknown subcommand '${o??``}'. Try 'hid --help'.`)}}function OE(){return S(`hid`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return hE(gE);let n=Rr(se(),y());if(!n)return U(`WebHID is unavailable in this environment`);try{return await DE(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No device selected/i.test(t)?U(`user cancelled or no device selected`):U(t)}})}const kE=1e3,AE=`usage: id [-u|-g|-G] [-n] [-r] [USER]`,jE=`${AE}
1351
+ Report payloads are capped at ${Lr} bytes (4 MiB).
1352
+ `;function SE(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return bE(t)}return bE(e.length?`${pE(e)}\n`:``)}function CE(e){return!e||e.aborted?Promise.resolve():new Promise(t=>{e.addEventListener(`abort`,()=>t(),{once:!0})})}async function wE(e){let t=await e.list();return t.length===0?bE(`no granted HID devices
1353
+ `):bE(`${t.map(gE).join(`
1354
+ `)}\n`)}async function TE(e,t){let n=e.get(`--__resolved`),r=dE(e),i=r[0];if(n){let e=n.split(`,`).filter(e=>e.length>0);return e.length===0?U(`request: missing resolved handle`):bE(vE(_E(await Promise.all(e.map(e=>t.info(e))),i)))}let a=Se();return a?EE(r,i,a,t):bE(vE(_E(await t.request(r),i)))}async function EE(e,t,n,r){let i=await Sx(`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=Ir();if(!t)return U(`request: WebHID unavailable for device re-acquire`);let n=await t.getDevices(),r=Ar(),s=n.filter(t=>t.vendorId===e.vendorId&&t.productId===e.productId);if(s.length===0)return U(`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=_E(s.length>0?s:[],t);return c.length===0?U(`request: granted device could not be re-acquired`):bE(vE(c))}async function DE(e,t,n){let r=t[1];return r?(e===`open`?await n.open(r):await n.close(r),bE(``)):U(`${e}: handle required`)}async function OE(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return U(`${e}: handle and report-id required`);let o=uE(a,`report-id`),s=fE(n);return s.length>4194304?U(`${e} payload exceeds 4 MiB limit`):(e===`send`?await r.sendReport(i,o,s):await r.sendFeatureReport(i,o,s),bE(``))}async function kE(e,t,n){let[,r,i]=e;return!r||i===void 0?U(`feature-get: handle and report-id required`):SE((await t.receiveFeatureReport(r,uE(i,`report-id`))).bytes,n)}async function AE(e,t,n){let r=e[1];if(!r)return U(`watch: handle required`);let i=[],a=await n.subscribeInputReports(r,e=>{i.push(yE(e))});try{await CE(t.signal)}finally{await a()}return bE(i.length?`${i.join(`
1355
+ `)}\n`:``)}async function jE(e,t,n,r,i){let[,a,o]=e;if(!a||o===void 0)return U(`query: handle and report-id required`);let s=uE(o,`report-id`),c=fE(t);if(c.length>4194304)return U(`query payload exceeds 4 MiB limit`);let l=n.has(`--timeout`)?uE(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`?U(`query: no input report within ${l}ms`):i?SE(t.bytes,!0):bE(`${yE(t)}\n`)}finally{p!==void 0&&clearTimeout(p),await f()}}async function ME(e,t,n){let{positionals:r,flags:i,bools:a}=lE(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return wE(n);case`request`:return TE(i,n);case`open`:case`close`:return DE(o,r,n);case`send`:case`feature-send`:return OE(o,r,t,n);case`feature-get`:return kE(r,n,s);case`watch`:return AE(r,t,n);case`query`:return jE(r,t,i,n,s);default:return U(`unknown subcommand '${o??``}'. Try 'hid --help'.`)}}function NE(){return S(`hid`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return bE(xE);let n=zr(ce(),y());if(!n)return U(`WebHID is unavailable in this environment`);try{return await ME(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No device selected/i.test(t)?U(`user cancelled or no device selected`):U(t)}})}const PE=1e3,FE=`usage: id [-u|-g|-G] [-n] [-r] [USER]`,IE=`${FE}
1347
1356
 
1348
1357
  Print the user and group identity of this SLICC runtime.
1349
1358
 
@@ -1358,23 +1367,23 @@ Options:
1358
1367
  --version Print the SLICC build.
1359
1368
 
1360
1369
  Identity comes from the home directory, which is where the rest of the shell
1361
- gets it too. A cone is the human user (uid ${kE}, one per runtime, since every
1370
+ gets it too. A cone is the human user (uid ${PE}, one per runtime, since every
1362
1371
  cone shares one home); a scoop is a service identity whose uid is derived from
1363
1372
  its folder name, so it is stable across reloads and distinct per scoop.
1364
1373
  Every user is in a user-private group of the same name, plus the role group
1365
1374
  \`cone\` (10) or \`scoop\` (20).
1366
- `,ME=`/scoops/`;function NE(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 PE(e,t){return{name:e,uid:t===`cone`?kE:NE(e),role:t}}function FE(e){return[{gid:e.uid,name:e.name},e.role===`cone`?{gid:10,name:`cone`}:{gid:20,name:`scoop`}]}function IE(e,t){return`${e}(${t})`}function LE(e){let t=FE(e),n=t[0];return`uid=${IE(e.uid,e.name)} gid=${IE(n.gid,n.name)} groups=${t.map(e=>IE(e.gid,e.name)).join(`,`)}\n`}async function RE(e){let t=e.env.get(`HOME`)??``,n=t.startsWith(ME)?`scoop`:`cone`,r=e.env.get(`USER`)||zE(t,n);return r?PE(r,n):PE(tp(await ep(BE(e.fs))),`cone`)}function zE(e,t){return e===``?``:t===`cone`?tp(e):e.slice(8).split(`/`)[0]??``}function BE(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 VE(e,t){return await e.fs.exists(`/home/${t}`).catch(()=>!1)?PE(t,`cone`):await e.fs.exists(`${ME}${t}`).catch(()=>!1)?PE(t,`scoop`):null}function HE(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=WE[r];if(e){e(t);continue}if(r.length>1&&r.startsWith(`-`)){for(let e of r.slice(1)){let n=UE[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 UE={u:e=>{e.select=`user`},g:e=>{e.select=`group`},G:e=>{e.select=`groups`},n:e=>{e.names=!0},r:()=>void 0},WE={"--user":UE.u,"--group":UE.g,"--groups":UE.G,"--name":UE.n,"--real":UE.r};function GE(e,t){let n=FE(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 LE(e)}}function KE(){return S(`id`,async(e,t)=>{let n=HE(e);if(`error`in n)return{stdout:``,stderr:`id: ${n.error}\n${AE}\n`,exitCode:1};if(n.mode===`help`)return JE(jE);if(n.mode===`version`)return JE(`id (SLICC) ${Ke().version}\n`);let r=n.operand===void 0?await RE(t):await VE(t,n.operand);return r?JE(GE(r,n)):{stdout:``,stderr:`id: '${n.operand}': no such user\n`,exitCode:1}})}function qE(){return S(`whoami`,async(e,t)=>JE(`${(await RE(t)).name}\n`))}function JE(e){return{stdout:e,stderr:``,exitCode:0}}function YE(){return{stdout:`imgcat - preview image and video files in the preview tab
1375
+ `,LE=`/scoops/`;function RE(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 zE(e,t){return{name:e,uid:t===`cone`?PE:RE(e),role:t}}function BE(e){return[{gid:e.uid,name:e.name},e.role===`cone`?{gid:10,name:`cone`}:{gid:20,name:`scoop`}]}function VE(e,t){return`${e}(${t})`}function HE(e){let t=BE(e),n=t[0];return`uid=${VE(e.uid,e.name)} gid=${VE(n.gid,n.name)} groups=${t.map(e=>VE(e.gid,e.name)).join(`,`)}\n`}async function UE(e){let t=e.env.get(`HOME`)??``,n=t.startsWith(LE)?`scoop`:`cone`,r=e.env.get(`USER`)||WE(t,n);return r?zE(r,n):zE(tp(await ep(GE(e.fs))),`cone`)}function WE(e,t){return e===``?``:t===`cone`?tp(e):e.slice(8).split(`/`)[0]??``}function GE(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 KE(e,t){return await e.fs.exists(`/home/${t}`).catch(()=>!1)?zE(t,`cone`):await e.fs.exists(`${LE}${t}`).catch(()=>!1)?zE(t,`scoop`):null}function qE(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=YE[r];if(e){e(t);continue}if(r.length>1&&r.startsWith(`-`)){for(let e of r.slice(1)){let n=JE[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 JE={u:e=>{e.select=`user`},g:e=>{e.select=`group`},G:e=>{e.select=`groups`},n:e=>{e.names=!0},r:()=>void 0},YE={"--user":JE.u,"--group":JE.g,"--groups":JE.G,"--name":JE.n,"--real":JE.r};function XE(e,t){let n=BE(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 HE(e)}}function ZE(){return S(`id`,async(e,t)=>{let n=qE(e);if(`error`in n)return{stdout:``,stderr:`id: ${n.error}\n${FE}\n`,exitCode:1};if(n.mode===`help`)return $E(IE);if(n.mode===`version`)return $E(`id (SLICC) ${qe().version}\n`);let r=n.operand===void 0?await UE(t):await KE(t,n.operand);return r?$E(XE(r,n)):{stdout:``,stderr:`id: '${n.operand}': no such user\n`,exitCode:1}})}function QE(){return S(`whoami`,async(e,t)=>$E(`${(await UE(t)).name}\n`))}function $E(e){return{stdout:e,stderr:``,exitCode:0}}function eD(){return{stdout:`imgcat - preview image and video files in the preview tab
1367
1376
 
1368
1377
  Usage: imgcat <path> [path...]
1369
1378
 
1370
1379
  Options:
1371
1380
  -h, --help Show this help message
1372
- `,stderr:``,exitCode:0}}function XE(e={}){return S(`imgcat`,async(t,n)=>{if(t.length===0||w(t))return YE();let r=C(t);if(`error`in r)return{stdout:``,stderr:`imgcat: ${r.error}\n`,exitCode:1};if(r.positionals.length===0)return YE();if(typeof window>`u`||typeof document>`u`)return{stdout:``,stderr:`imgcat: browser APIs are unavailable in this environment
1381
+ `,stderr:``,exitCode:0}}function tD(e={}){return S(`imgcat`,async(t,n)=>{if(t.length===0||w(t))return eD();let r=C(t);if(`error`in r)return{stdout:``,stderr:`imgcat: ${r.error}\n`,exitCode:1};if(r.positionals.length===0)return eD();if(typeof window>`u`||typeof document>`u`)return{stdout:``,stderr:`imgcat: browser APIs are unavailable in this environment
1373
1382
  `,exitCode:1};if(!e.onMediaPreview)return{stdout:``,stderr:`imgcat: terminal preview is unavailable
1374
- `,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=ye(t);if(!ve(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 ZE=new Set([`run`,`run-script`]),QE=new Set([`test`,`start`,`stop`,`restart`]),$E=new Set([` `,` `,`
1375
- `,`;`,`|`,`&`,`(`,`)`,`{`,`}`,`<`,`>`]),eD=new Set([`;`,`|`,`&`,`(`,`)`,`{`,`
1376
- `]),tD=/^[A-Za-z_][A-Za-z0-9_]*=/,nD=/^[@A-Za-z0-9._-]+$/,rD=new Set([`if`,`then`,`else`,`elif`,`fi`,`for`,`while`,`until`,`do`,`done`,`case`,`in`,`esac`,`function`,`time`,`!`]),iD=new Set([`if`,`then`,`else`,`elif`,`while`,`until`,`do`,`time`,`!`]),aD=new Set([`ipx`,`npx`]);function oD(e){return`'${e.replace(/'/g,`'\\''`)}'`}async function sD(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}function*cD(e){let t=b(e);for(;yield t,t!==`/`;)t=Te(t).dir}function lD(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 uD(e){return typeof e==`string`?e:void 0}async function dD(e,t){for(let n of cD(t)){let t=x(n,`package.json`);if(!await e.exists(t))continue;let r;try{r=JSON.parse(await sD(e,t))}catch(e){throw Error(`${t} is not valid JSON: ${e instanceof Error?e.message:String(e)}`)}return{dir:n,name:uD(r.name),version:uD(r.version),scripts:lD(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($E.has(t))break;n++}return{start:t,end:n,text:e.slice(t,n)}}function pD(e){let t=[],n=0,r=!0;for(;n<e.length;){let i=e[n];if(i===` `||i===` `){n++;continue}if(eD.has(i)){r=!0,n++;continue}let a=fD(e,n);if(a.end===a.start){n++;continue}if(r&&!tD.test(a.text)){if(iD.has(a.text)){n=a.end;continue}t.push(a),r=!1}n=a.end}return t}function mD(e,t){return!nD.test(e)||rD.has(e)||aD.has(e)?!1:!t.isRegistered(e)}async function hD(e,t){let n=pD(e).filter(e=>mD(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 gD(e){let t=[];for(let n of cD(e))t.push(x(n,`node_modules`,`.bin`));return t}function _D(e,t,n,r){let i=r.env.get(`PATH`)??``,a={PATH:[...gD(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 yD(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(`
1377
- `)}\n`}function bD(e,t){return t===`--silent`||t===`-s`?(e.silent=!0,!0):t===`--if-present`&&(e.ifPresent=!0,!0)}function xD(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}bD(t,a)||(r===void 0?r=a:n.push(a))}return{flags:t,script:r,extraArgs:n}}function SD(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}function CD(e,t,n,r){let i=r.length>0?` ${r.map(oD).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 wD(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 TD(e,t,n){let r=new Set(n.getRegisteredCommands?.()??[]);return{isRegistered:e=>r.has(e),hasLocalBin:async n=>{for(let r of gD(t.dir))if(await e.exists(x(r,n)))return!0;return!1}}}async function ED(e,t,n,r,i,a){let o=i.exec;if(!o)return SD(e,`run requires shell exec support, which this context does not provide`);let s=TD(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 hD(a.body,s),{cwd:t.dir,env:_D(t,a.event,a.body,i),stdin:ei(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 DD(e,t,n,r){let i;try{i=await dD(r.fs,n.cwd)}catch(t){return SD(e,t instanceof Error?t.message:String(t))}if(!i)return SD(e,`no package.json found in ${n.cwd} or any parent directory — nothing to run`);let{flags:a,script:o,extraArgs:s}=xD(t);if(o===void 0)return{stdout:yD(e,i),stderr:``,exitCode:0};let c=i.scripts[o]??await wD(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 SD(e,`missing script: ${o}${t.length>0?` (available: ${t.join(`, `)})`:` (${x(i.dir,`package.json`)} defines no scripts)`}`)}return ED(e,i,CD(i,o,c,s),a,n,r)}const OD=new Set([`install`,`i`,`add`]),kD=new Set([`uninstall`,`remove`,`rm`,`un`]),AD=new Set([`list`,`ls`]),jD=new Set([`-g`,`--global`,`--location=global`]),MD=[`-g`,`--global`,`-D`,`--save-dev`];function ND(e){return`${e} - install packages from the npm registry into node_modules
1383
+ `,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=be(t);if(!ye(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 nD=new Set([`run`,`run-script`]),rD=new Set([`test`,`start`,`stop`,`restart`]),iD=new Set([` `,` `,`
1384
+ `,`;`,`|`,`&`,`(`,`)`,`{`,`}`,`<`,`>`]),aD=new Set([`;`,`|`,`&`,`(`,`)`,`{`,`
1385
+ `]),oD=/^[A-Za-z_][A-Za-z0-9_]*=/,sD=/^[@A-Za-z0-9._-]+$/,cD=new Set([`if`,`then`,`else`,`elif`,`fi`,`for`,`while`,`until`,`do`,`done`,`case`,`in`,`esac`,`function`,`time`,`!`]),lD=new Set([`if`,`then`,`else`,`elif`,`while`,`until`,`do`,`time`,`!`]),uD=new Set([`ipx`,`npx`]);function dD(e){return`'${e.replace(/'/g,`'\\''`)}'`}async function fD(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}function*pD(e){let t=b(e);for(;yield t,t!==`/`;)t=Ee(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 hD(e){return typeof e==`string`?e:void 0}async function gD(e,t){for(let n of pD(t)){let t=x(n,`package.json`);if(!await e.exists(t))continue;let r;try{r=JSON.parse(await fD(e,t))}catch(e){throw Error(`${t} is not valid JSON: ${e instanceof Error?e.message:String(e)}`)}return{dir:n,name:hD(r.name),version:hD(r.version),scripts:mD(r.scripts)}}return null}function _D(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(iD.has(t))break;n++}return{start:t,end:n,text:e.slice(t,n)}}function vD(e){let t=[],n=0,r=!0;for(;n<e.length;){let i=e[n];if(i===` `||i===` `){n++;continue}if(aD.has(i)){r=!0,n++;continue}let a=_D(e,n);if(a.end===a.start){n++;continue}if(r&&!oD.test(a.text)){if(lD.has(a.text)){n=a.end;continue}t.push(a),r=!1}n=a.end}return t}function yD(e,t){return!sD.test(e)||cD.has(e)||uD.has(e)?!1:!t.isRegistered(e)}async function bD(e,t){let n=vD(e).filter(e=>yD(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 xD(e){let t=[];for(let n of pD(e))t.push(x(n,`node_modules`,`.bin`));return t}function SD(e,t,n,r){let i=r.env.get(`PATH`)??``,a={PATH:[...xD(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 CD(e){return e.name===void 0?e.dir:e.version===void 0?e.name:`${e.name}@${e.version}`}function wD(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 ${CD(t)} via \`${e} run\`:`];for(let[e,t]of n)r.push(` ${e}`),r.push(` ${t}`);return`${r.join(`
1386
+ `)}\n`}function TD(e,t){return t===`--silent`||t===`-s`?(e.silent=!0,!0):t===`--if-present`&&(e.ifPresent=!0,!0)}function ED(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}TD(t,a)||(r===void 0?r=a:n.push(a))}return{flags:t,script:r,extraArgs:n}}function DD(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}function OD(e,t,n,r){let i=r.length>0?` ${r.map(dD).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 kD(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 AD(e,t,n){let r=new Set(n.getRegisteredCommands?.()??[]);return{isRegistered:e=>r.has(e),hasLocalBin:async n=>{for(let r of xD(t.dir))if(await e.exists(x(r,n)))return!0;return!1}}}async function jD(e,t,n,r,i,a){let o=i.exec;if(!o)return DD(e,`run requires shell exec support, which this context does not provide`);let s=AD(a.fs,t,i),c=CD(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 bD(a.body,s),{cwd:t.dir,env:SD(t,a.event,a.body,i),stdin:ti(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 MD(e,t,n,r){let i;try{i=await gD(r.fs,n.cwd)}catch(t){return DD(e,t instanceof Error?t.message:String(t))}if(!i)return DD(e,`no package.json found in ${n.cwd} or any parent directory — nothing to run`);let{flags:a,script:o,extraArgs:s}=ED(t);if(o===void 0)return{stdout:wD(e,i),stderr:``,exitCode:0};let c=i.scripts[o]??await kD(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 DD(e,`missing script: ${o}${t.length>0?` (available: ${t.join(`, `)})`:` (${x(i.dir,`package.json`)} defines no scripts)`}`)}return jD(e,i,OD(i,o,c,s),a,n,r)}const ND=new Set([`install`,`i`,`add`]),PD=new Set([`uninstall`,`remove`,`rm`,`un`]),FD=new Set([`list`,`ls`]),ID=new Set([`-g`,`--global`,`--location=global`]),LD=[`-g`,`--global`,`-D`,`--save-dev`];function RD(e){return`${e} - install packages from the npm registry into node_modules
1378
1387
  and run package.json scripts
1379
1388
 
1380
1389
  Usage:
@@ -1441,15 +1450,15 @@ manifest without rewriting it. With -g, packages go to /shared/lib/node_modules
1441
1450
  and deps are recorded in /shared/lib/package.json. Existing fields are
1442
1451
  preserved. Idempotent: re-installing an already-satisfied package is a clean
1443
1452
  no-op.
1444
- `}function PD(e){let t=C(e,{bool:MD,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 FD(e){let t=!1,n=[];for(let r of e){if(jD.has(r)){t=!0;continue}r.startsWith(`-`)||n.push(r)}return{global:t,specs:n}}function ID(e){let t=e.indexOf(`--`),n=t===-1?e:e.slice(0,t);return n.includes(`--help`)||n.includes(`-h`)}function LD(e){return e instanceof Error?e.message:String(e)}async function RD(e){e.scriptCatalog?.invalidateJsh(),await e.syncScriptCommands?.()}async function zD(e,t,n){let r;try{r=await Ki({fs:n.fs,fetch:n.fetch,cwd:t.cwd})}catch(t){return t instanceof Zi?{stdout:``,stderr:`${e}: ${t.message}\n`,exitCode:1}:{stdout:``,stderr:`${e}: install failed: ${LD(t)}\n`,exitCode:1}}if(r.empty&&r.errors.length===0)return{stdout:`${e}: nothing to install (package.json declares no dependencies)\n`,stderr:``,exitCode:0};let i=r.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),a=r.errors.map(t=>`${e}: failed to install ${t.spec}: ${LD(t.error)}`);return{stdout:i.length>0?`${i.join(`
1453
+ `}function zD(e){let t=C(e,{bool:LD,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 BD(e){let t=!1,n=[];for(let r of e){if(ID.has(r)){t=!0;continue}r.startsWith(`-`)||n.push(r)}return{global:t,specs:n}}function VD(e){let t=e.indexOf(`--`),n=t===-1?e:e.slice(0,t);return n.includes(`--help`)||n.includes(`-h`)}function HD(e){return e instanceof Error?e.message:String(e)}async function UD(e){e.scriptCatalog?.invalidateJsh(),await e.syncScriptCommands?.()}async function WD(e,t,n){let r;try{r=await qi({fs:n.fs,fetch:n.fetch,cwd:t.cwd})}catch(t){return t instanceof Zi?{stdout:``,stderr:`${e}: ${t.message}\n`,exitCode:1}:{stdout:``,stderr:`${e}: install failed: ${HD(t)}\n`,exitCode:1}}if(r.empty&&r.errors.length===0)return{stdout:`${e}: nothing to install (package.json declares no dependencies)\n`,stderr:``,exitCode:0};let i=r.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),a=r.errors.map(t=>`${e}: failed to install ${t.spec}: ${HD(t.error)}`);return{stdout:i.length>0?`${i.join(`
1445
1454
  `)}\n`:``,stderr:a.length>0?`${a.join(`
1446
- `)}\n`:``,exitCode:r.errors.length===0?0:1}}async function BD(e,t,n,r){let i=PD(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 zD(e,n,r);let c;try{c=await Yi(s,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:a,saveDev:o})}catch(t){return{stdout:``,stderr:`${e}: install failed: ${LD(t)}\n`,exitCode:1}}let l=c.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),u=c.errors.map(t=>`${e}: failed to install ${t.spec}: ${LD(t.error)}`);return a&&c.results.length>0&&await RD(r),{stdout:l.length>0?`${l.join(`
1455
+ `)}\n`:``,exitCode:r.errors.length===0?0:1}}async function GD(e,t,n,r){let i=zD(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 WD(e,n,r);let c;try{c=await Yi(s,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:a,saveDev:o})}catch(t){return{stdout:``,stderr:`${e}: install failed: ${HD(t)}\n`,exitCode:1}}let l=c.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),u=c.errors.map(t=>`${e}: failed to install ${t.spec}: ${HD(t.error)}`);return a&&c.results.length>0&&await UD(r),{stdout:l.length>0?`${l.join(`
1447
1456
  `)}\n`:``,stderr:u.length>0?`${u.join(`
1448
- `)}\n`:``,exitCode:c.errors.length===0?0:1}}function VD(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(`
1449
- `)}\n`}async function HD(e,t,n,r){let{global:i,specs:a}=FD(t);if(a.length===0)return{stdout:``,stderr:`${e}: uninstall requires at least one package name\n`,exitCode:1};let o;try{o=await qi(a,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:i})}catch(t){return{stdout:``,stderr:`${e}: uninstall failed: ${LD(t)}\n`,exitCode:1}}let s=o.results.filter(e=>e.removed).map(t=>`${e}: removed ${t.name}`),c=o.results.filter(e=>!e.removed).map(e=>e.name),l=o.errors.map(t=>`${e}: failed to uninstall ${t.spec}: ${LD(t.error)}`);c.length>0&&l.push(`${e}: ${c.join(`, `)} not installed${i?` globally`:``}`);let u=o.errors.length>0;return i&&await RD(r),{stdout:s.length>0?`${s.join(`
1457
+ `)}\n`:``,exitCode:c.errors.length===0?0:1}}function KD(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(`
1458
+ `)}\n`}async function qD(e,t,n,r){let{global:i,specs:a}=BD(t);if(a.length===0)return{stdout:``,stderr:`${e}: uninstall requires at least one package name\n`,exitCode:1};let o;try{o=await Ji(a,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:i})}catch(t){return{stdout:``,stderr:`${e}: uninstall failed: ${HD(t)}\n`,exitCode:1}}let s=o.results.filter(e=>e.removed).map(t=>`${e}: removed ${t.name}`),c=o.results.filter(e=>!e.removed).map(e=>e.name),l=o.errors.map(t=>`${e}: failed to uninstall ${t.spec}: ${HD(t.error)}`);c.length>0&&l.push(`${e}: ${c.join(`, `)} not installed${i?` globally`:``}`);let u=o.errors.length>0;return i&&await UD(r),{stdout:s.length>0?`${s.join(`
1450
1459
  `)}\n`:``,stderr:l.length>0?`${l.join(`
1451
- `)}\n`:``,exitCode:+!!u}}async function UD(e,t,n,r){let{global:i}=FD(t);try{let e=i?await Wi(r.fs):await Bi(r.fs,n.cwd);return{stdout:VD(i?tr:n.cwd,e),stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: list failed: ${LD(t)}\n`,exitCode:1}}}async function WD(e,t,n,r){let{global:i}=FD(t);return{stdout:`${i?Kn:`${n.cwd.replace(/\/$/,``)}/node_modules`}\n`,stderr:``,exitCode:0}}function GD(e,t){let n=e===`i`;return S(e,async(r,i)=>{if(ID(r))return{stdout:ND(e),stderr:``,exitCode:0};if(n)return BD(e,r,i,t);if(r.length===0)return{stdout:ND(e),stderr:`${e}: missing subcommand\n`,exitCode:1};let a=r[0],o=r.slice(1);return OD.has(a)?BD(e,o,i,t):kD.has(a)?HD(e,o,i,t):AD.has(a)?UD(e,o,i,t):a===`root`?WD(e,o,i,t):ZE.has(a)?DD(e,o,i,{fs:t.fs}):QE.has(a)?DD(e,r,i,{fs:t.fs}):{stdout:``,stderr:`${e}: unknown subcommand '${a}' (supported: install, uninstall, list, root, run)\n`,exitCode:1}})}const KD=`0.5.461`,qD=`v86 is not installed in node_modules: run \`${N} v86@${KD}\` (no network fallback)`;let JD=null;async function YD(e={}){return JD||=$D(e.ipk).catch(e=>{throw JD=null,e}),JD}const XD=[{js:`build/libv86.mjs`,wasm:`build/v86.wasm`}];async function ZD(e,t){for(let{js:n,wasm:r}of XD){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 QD(e){let t;try{t=await qn(`v86/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;let n=await ZD(Te(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.461`);return{jsSource:await e.reader.readFile(n.jsPath),wasmBytes:await e.readBytes(n.wasmPath),version:i}}catch{return null}}async function $D(e){if(or())throw Error(`v86 is not available in Node runtime`);if(!e)throw Error(qD);let t=await QD(e);if(!t)throw Error(qD);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 Yr(t.wasmBytes),version:t.version}}function eO(e){return async t=>(await WebAssembly.instantiate(e,t)).exports}const tO={command:`biome`,example:`biome check foo.js`,bootstrap:`${N} ${__}`},nO={command:`playwright-cli`,example:`playwright-cli open https://example.com`},rO={command:`puppeteer`,example:`puppeteer open https://example.com`},iO={command:`convert`,example:`convert input.png output.jpg`,bootstrap:`${N} @imagemagick/magick-wasm@${Ni}`},aO={...iO,command:`magick`,example:`magick input.png output.jpg`},oO={command:`pdftoppm`,example:`pdftoppm -png -r 150 doc.pdf page`},sO={"@biomejs/biome":tO,biome:tO,esbuild:{command:`esbuild`,example:`esbuild --bundle src/index.js --outfile=dist/bundle.js`,bootstrap:`${N} esbuild-wasm@${Jr}`},playwright:nO,"@playwright/test":nO,"playwright-core":nO,puppeteer:rO,"puppeteer-core":rO,typescript:{command:`tsc`,example:`tsc --noEmit`,bootstrap:sr},"pdf-poppler":oO,"pdf-to-img":oO,pdf2pic:oO,"pdf-img-convert":oO,poppler:oO,"poppler-utils":oO,imagemagick:iO,"imagemagick-cli":iO,"imagemagick-convert":iO,"magick-cli":aO,"@imagemagick/magick-wasm":aO,ffmpeg:{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${N} @ffmpeg/core@${$i}`},"@ffmpeg/ffmpeg":{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${N} @ffmpeg/core@${$i}`},ffprobe:{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${N} @ffmpeg/core@${$i}`},"@ffprobe-installer/ffprobe":{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${N} @ffmpeg/core@${$i}`},sqlite3:{command:`sqlite3`,example:`sqlite3 database.db "SELECT 1"`},v86:{command:`v86`,example:`v86 start -cdrom alpine.iso`,bootstrap:`${N} v86@${KD}`}};function cO(e){return Object.hasOwn(sO,e)?sO[e]:void 0}function lO(e){return/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function uO(e,t,n,r){let i=n.length?[r.command,...n].map(lO).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(lO).join(` `)}`),`${a.join(`
1452
- `)}\n`}const dO=/require\(\s*["']([^"']+)["']\s*\)/;function fO(e){return`${e} - run an installed package's executable bin
1460
+ `)}\n`:``,exitCode:+!!u}}async function JD(e,t,n,r){let{global:i}=BD(t);try{let e=i?await Gi(r.fs):await Ui(r.fs,n.cwd);return{stdout:KD(i?nr:n.cwd,e),stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: list failed: ${HD(t)}\n`,exitCode:1}}}async function YD(e,t,n,r){let{global:i}=BD(t);return{stdout:`${i?qn:`${n.cwd.replace(/\/$/,``)}/node_modules`}\n`,stderr:``,exitCode:0}}function XD(e,t){let n=e===`i`;return S(e,async(r,i)=>{if(VD(r))return{stdout:RD(e),stderr:``,exitCode:0};if(n)return GD(e,r,i,t);if(r.length===0)return{stdout:RD(e),stderr:`${e}: missing subcommand\n`,exitCode:1};let a=r[0],o=r.slice(1);return ND.has(a)?GD(e,o,i,t):PD.has(a)?qD(e,o,i,t):FD.has(a)?JD(e,o,i,t):a===`root`?YD(e,o,i,t):nD.has(a)?MD(e,o,i,{fs:t.fs}):rD.has(a)?MD(e,r,i,{fs:t.fs}):{stdout:``,stderr:`${e}: unknown subcommand '${a}' (supported: install, uninstall, list, root, run)\n`,exitCode:1}})}const ZD=`0.5.461`,QD=`v86 is not installed in node_modules: run \`${N} v86@${ZD}\` (no network fallback)`;let $D=null;async function eO(e={}){return $D||=iO(e.ipk).catch(e=>{throw $D=null,e}),$D}const tO=[{js:`build/libv86.mjs`,wasm:`build/v86.wasm`}];async function nO(e,t){for(let{js:n,wasm:r}of tO){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 rO(e){let t;try{t=await Jn(`v86/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;let n=await nO(Ee(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.461`);return{jsSource:await e.reader.readFile(n.jsPath),wasmBytes:await e.readBytes(n.wasmPath),version:i}}catch{return null}}async function iO(e){if(sr())throw Error(`v86 is not available in Node runtime`);if(!e)throw Error(QD);let t=await rO(e);if(!t)throw Error(QD);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 Xr(t.wasmBytes),version:t.version}}function aO(e){return async t=>(await WebAssembly.instantiate(e,t)).exports}const oO={command:`biome`,example:`biome check foo.js`,bootstrap:`${N} ${__}`},sO={command:`playwright-cli`,example:`playwright-cli open https://example.com`},cO={command:`puppeteer`,example:`puppeteer open https://example.com`},lO={command:`convert`,example:`convert input.png output.jpg`,bootstrap:`${N} @imagemagick/magick-wasm@${Pi}`},uO={...lO,command:`magick`,example:`magick input.png output.jpg`},dO={command:`pdftoppm`,example:`pdftoppm -png -r 150 doc.pdf page`},fO={"@biomejs/biome":oO,biome:oO,esbuild:{command:`esbuild`,example:`esbuild --bundle src/index.js --outfile=dist/bundle.js`,bootstrap:`${N} esbuild-wasm@${Yr}`},playwright:sO,"@playwright/test":sO,"playwright-core":sO,puppeteer:cO,"puppeteer-core":cO,typescript:{command:`tsc`,example:`tsc --noEmit`,bootstrap:cr},"pdf-poppler":dO,"pdf-to-img":dO,pdf2pic:dO,"pdf-img-convert":dO,poppler:dO,"poppler-utils":dO,imagemagick:lO,"imagemagick-cli":lO,"imagemagick-convert":lO,"magick-cli":uO,"@imagemagick/magick-wasm":uO,ffmpeg:{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${N} @ffmpeg/core@${$i}`},"@ffmpeg/ffmpeg":{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${N} @ffmpeg/core@${$i}`},ffprobe:{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${N} @ffmpeg/core@${$i}`},"@ffprobe-installer/ffprobe":{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${N} @ffmpeg/core@${$i}`},sqlite3:{command:`sqlite3`,example:`sqlite3 database.db "SELECT 1"`},v86:{command:`v86`,example:`v86 start -cdrom alpine.iso`,bootstrap:`${N} v86@${ZD}`}};function pO(e){return Object.hasOwn(fO,e)?fO[e]:void 0}function mO(e){return/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function hO(e,t,n,r){let i=n.length?[r.command,...n].map(mO).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(mO).join(` `)}`),`${a.join(`
1461
+ `)}\n`}const gO=/require\(\s*["']([^"']+)["']\s*\)/;function _O(e){return`${e} - run an installed package's executable bin
1453
1462
 
1454
1463
  Usage:
1455
1464
  ${e} [--force] [--global] <pkg-or-bin> [args...]
@@ -1462,12 +1471,12 @@ Options:
1462
1471
  --force Install a package even when a SLICC built-in shadows it
1463
1472
  --global Resolve only from the shared global prefix (/shared/lib/node_modules)
1464
1473
  -h, --help Show this help message
1465
- `}async function pO(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function mO(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function hO(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*gO(e,t=!1){if(t){yield Kn;return}let n=b(e);for(;yield x(n,`node_modules`),n!==`/`;)n=Te(n).dir;yield Kn}async function _O(e,t,n,r=!1){for(let i of gO(t,r)){let t=x(i,`.bin`,n);if(!await mO(e,t))continue;let r=await pO(e,t),a=dO.exec(r),o=Te(t).dir;return{binFilePath:a?x(o,a[1]):t,argvName:t}}return null}function vO(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function yO(e,t){if(typeof e==`string`)return{binName:vO(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,vO(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 bO(e,t,n,r=!1){for(let i of gO(t,r)){let t=x(i,n),r=x(t,`package.json`);if(!await mO(e,r))continue;let a;try{a=JSON.parse(await pO(e,r))}catch{return null}let o=yO(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 xO(e,t,n,r=!1){return await _O(e,t,n,r)??await bO(e,t,n,r)}async function SO(e,t,n){for(let r of gO(t))if(await mO(e,x(r,n,`package.json`)))return!0;return!1}function CO(e){return e instanceof Error?e.message:String(e)}function wO(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function TO(e,t,n,r){try{let i=await Yi([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(i.errors.length>0)return{error:wO(e,`failed to install '${t}': ${CO(i.errors[0].error)}`)};let a=i.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:a.length>0?`${a.join(`
1466
- `)}\n`:``}}catch(n){return{error:wO(e,`failed to install '${t}': ${CO(n)}`)}}}async function EO(e,t,n,r){return await mO(r,n)?null:await hO(r,n)?wO(e,`bin target '${n}' is a directory, not a file`):wO(e,`bin file '${n}' for '${t}' does not exist`)}async function DO(e,t,n,r,i,a){if(await SO(a.fs,i.cwd,t))return{error:wO(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:cO(t);if(o)return{error:{stdout:``,stderr:uO(e,t,n,o),exitCode:1}};let s=await TO(e,t,i,a);if(`error`in s)return s;let c=await xO(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:wO(e,`package '${t}' was installed but does not expose an executable bin`)}}function OO(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:fO(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:fO(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await xO(t.fs,r.cwd,c,o)}catch(t){return wO(e,CO(t))}let d=``;if(!u){if(o)return wO(e,`no global bin '${c}' found in ${Kn}`);let n=await DO(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await EO(e,c,u.binFilePath,t.fs);if(f)return f;let p=Wr(await pO(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await Hr(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function kO(e={}){return S(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-2oVsdzZj.js`);return r(t,n,e)})}const AO=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function jO(e={}){return S(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return LO();let n=e.processManager??MO();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1467
- `,exitCode:1};let r=NO(t);if(!r.ok)return{stdout:``,stderr:r.stderr,exitCode:r.exitCode};let{allDelivered:i,errors:a}=PO(n,r.pids,r.signal);return{stdout:``,stderr:a.length?`${a.join(`
1468
- `)}\n`:``,exitCode:+!i}})}function MO(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function NO(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
1469
- `,exitCode:2};let i=FO(n);if(i instanceof Error)return{ok:!1,stderr:`kill: ${i.message}\n`,exitCode:2};t=i;continue}if(i.startsWith(`-`)){let e=IO(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
1470
- `,exitCode:2}:AO.has(t)?{ok:!0,signal:t,pids:n}:{ok:!1,stderr:`kill: signal ${t} not supported\n`,exitCode:2}}function PO(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 FO(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 IO(e){return e===`-9`?`SIGKILL`:FO(e.slice(1))}function LO(){return{stdout:`Usage: kill [-s SIGNAL | -INT | -TERM | -KILL | -STOP | -CONT | -9] PID [PID …]
1474
+ `}async function vO(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function yO(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function bO(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*xO(e,t=!1){if(t){yield qn;return}let n=b(e);for(;yield x(n,`node_modules`),n!==`/`;)n=Ee(n).dir;yield qn}async function SO(e,t,n,r=!1){for(let i of xO(t,r)){let t=x(i,`.bin`,n);if(!await yO(e,t))continue;let r=await vO(e,t),a=gO.exec(r),o=Ee(t).dir;return{binFilePath:a?x(o,a[1]):t,argvName:t}}return null}function CO(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function wO(e,t){if(typeof e==`string`)return{binName:CO(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,CO(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 TO(e,t,n,r=!1){for(let i of xO(t,r)){let t=x(i,n),r=x(t,`package.json`);if(!await yO(e,r))continue;let a;try{a=JSON.parse(await vO(e,r))}catch{return null}let o=wO(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 EO(e,t,n,r=!1){return await SO(e,t,n,r)??await TO(e,t,n,r)}async function DO(e,t,n){for(let r of xO(t))if(await yO(e,x(r,n,`package.json`)))return!0;return!1}function OO(e){return e instanceof Error?e.message:String(e)}function kO(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function AO(e,t,n,r){try{let i=await Yi([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(i.errors.length>0)return{error:kO(e,`failed to install '${t}': ${OO(i.errors[0].error)}`)};let a=i.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:a.length>0?`${a.join(`
1475
+ `)}\n`:``}}catch(n){return{error:kO(e,`failed to install '${t}': ${OO(n)}`)}}}async function jO(e,t,n,r){return await yO(r,n)?null:await bO(r,n)?kO(e,`bin target '${n}' is a directory, not a file`):kO(e,`bin file '${n}' for '${t}' does not exist`)}async function MO(e,t,n,r,i,a){if(await DO(a.fs,i.cwd,t))return{error:kO(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:pO(t);if(o)return{error:{stdout:``,stderr:hO(e,t,n,o),exitCode:1}};let s=await AO(e,t,i,a);if(`error`in s)return s;let c=await EO(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:kO(e,`package '${t}' was installed but does not expose an executable bin`)}}function NO(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:_O(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:_O(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await EO(t.fs,r.cwd,c,o)}catch(t){return kO(e,OO(t))}let d=``;if(!u){if(o)return kO(e,`no global bin '${c}' found in ${qn}`);let n=await MO(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await jO(e,c,u.binFilePath,t.fs);if(f)return f;let p=Gr(await vO(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await Ur(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function PO(e={}){return S(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-BbnI9SSJ.js`);return r(t,n,e)})}const FO=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function IO(e={}){return S(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return HO();let n=e.processManager??LO();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1476
+ `,exitCode:1};let r=RO(t);if(!r.ok)return{stdout:``,stderr:r.stderr,exitCode:r.exitCode};let{allDelivered:i,errors:a}=zO(n,r.pids,r.signal);return{stdout:``,stderr:a.length?`${a.join(`
1477
+ `)}\n`:``,exitCode:+!i}})}function LO(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function RO(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
1478
+ `,exitCode:2};let i=BO(n);if(i instanceof Error)return{ok:!1,stderr:`kill: ${i.message}\n`,exitCode:2};t=i;continue}if(i.startsWith(`-`)){let e=VO(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
1479
+ `,exitCode:2}:FO.has(t)?{ok:!0,signal:t,pids:n}:{ok:!1,stderr:`kill: signal ${t} not supported\n`,exitCode:2}}function zO(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 BO(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 VO(e){return e===`-9`?`SIGKILL`:BO(e.slice(1))}function HO(){return{stdout:`Usage: kill [-s SIGNAL | -INT | -TERM | -KILL | -STOP | -CONT | -9] PID [PID …]
1471
1480
 
1472
1481
  Send a signal to one or more processes tracked by the kernel.
1473
1482
 
@@ -1489,7 +1498,7 @@ Examples:
1489
1498
  kill -INT 1024 1025 SIGINT both
1490
1499
  kill -STOP 1024 pause; \`kill -CONT 1024\` resumes
1491
1500
  kill -s SIGKILL 1024 explicit signal name
1492
- `,stderr:``,exitCode:0}}const RO=[`top`,`left`,`middle`,`right`,`bottom`],zO=`usage: layout <verb> [args]
1501
+ `,stderr:``,exitCode:0}}const UO=[`top`,`left`,`middle`,`right`,`bottom`],WO=`usage: layout <verb> [args]
1493
1502
 
1494
1503
  list List the built-in presets
1495
1504
  set <preset> Switch to a built-in preset
@@ -1509,9 +1518,9 @@ Examples:
1509
1518
  docs Describe the layout surfaces
1510
1519
  panels List the registered panel ids
1511
1520
 
1512
- Zones: ${RO.join(`, `)}
1513
- `,BO=new Set([`files`,`term`,`memory`,`monitor`]),VO=`sprinkle:`;function HO(e){return e===`chat`||BO.has(e)||e.startsWith(VO)?e:`${VO}${e}`}function UO(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 WO=`usage: layout size <surfaceId> [--width <px|percent>] [--height <px|percent>]`;function GO(e){let t=e[0],n=t?ps(t):null;return n?{kind:`set`,tree:n.tree}:{error:`unknown layout: ${t??`(none)`}`}}function KO(e){let t=e[0];return RO.includes(t)?{kind:`chat`,zone:t}:{error:`usage: layout chat <${RO.join(`|`)}>`}}function qO(e){let[t,n]=e;return!t||!RO.includes(n)?{error:`usage: layout open <surfaceId> <${RO.join(`|`)}>`}:{kind:`open`,surfaceId:HO(t),zone:n}}function JO(e){let t=e[0];return t?{kind:`close`,surfaceId:HO(t)}:{error:`usage: layout close <surfaceId>`}}function YO(e){let[t,n]=e;return!t||!RO.includes(n)?{error:`usage: layout move <surfaceId> <${RO.join(`|`)}>`}:{kind:`move`,surfaceId:HO(t),zone:n}}function XO(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=UO(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 ZO(e){let t=e[0];if(!t)return{error:WO};let n={};for(let t=1;t<e.length;t+=2){let r=XO(n,e[t],e[t+1]);if(r)return r}return n.widthPx==null&&n.widthPercent==null&&n.heightPx==null&&n.heightPercent==null?{error:WO}:{kind:`size`,surfaceId:HO(t),size:n}}function QO(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 $O(e,t){let n=t[0];return n?e===`load`?{kind:`load`,name:n}:{kind:`delete`,name:n}:{error:`usage: layout ${e} <name>`}}function ek(e,t){let n=t[0];return n?e===`show`?{kind:`show`,panelId:HO(n)}:{kind:`hide`,panelId:HO(n)}:{error:`usage: layout ${e} <panelId>`}}function tk(){let e=ps(ls);return e?{kind:`set`,tree:e.tree}:{error:`default layout unavailable`}}function nk(e){let[t,...n]=e;switch(t){case`set`:return GO(n);case`chat`:return KO(n);case`open`:return qO(n);case`close`:return JO(n);case`move`:return YO(n);case`size`:return ZO(n);case`reset`:return{kind:`reset`};case`edit`:return tk();case`load`:return $O(`load`,n);case`save`:return QO(n);case`delete`:return $O(`delete`,n);case`docs`:return{kind:`docs`};case`panels`:return{kind:`panels`};case`show`:return ek(`show`,n);case`hide`:return ek(`hide`,n);default:return{error:`usage: layout <set|edit|chat|open|close|move|size|show|hide|load|save|delete|docs|panels|list|reset>`}}}function rk(){return S(`layout`,async e=>{if(w(e))return{stdout:e[0]?.startsWith(`-`)?zO:$e(`layout`,e[0],zO),stderr:``,exitCode:0};if(e[0]===`list`||e.length===0)return{stdout:`layouts: ${Object.keys(fs).join(`, `)}\ndefault: ${ls}\n`,stderr:``,exitCode:0};let t=nk(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
1514
- `,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 ik=ea.id;function ak(){return`local-llm — inspect and configure the Local LLM provider
1521
+ Zones: ${UO.join(`, `)}
1522
+ `,GO=new Set([`files`,`term`,`memory`,`monitor`]),KO=`sprinkle:`;function qO(e){return e===`chat`||GO.has(e)||e.startsWith(KO)?e:`${KO}${e}`}function JO(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 YO=`usage: layout size <surfaceId> [--width <px|percent>] [--height <px|percent>]`;function XO(e){let t=e[0],n=t?ps(t):null;return n?{kind:`set`,tree:n.tree}:{error:`unknown layout: ${t??`(none)`}`}}function ZO(e){let t=e[0];return UO.includes(t)?{kind:`chat`,zone:t}:{error:`usage: layout chat <${UO.join(`|`)}>`}}function QO(e){let[t,n]=e;return!t||!UO.includes(n)?{error:`usage: layout open <surfaceId> <${UO.join(`|`)}>`}:{kind:`open`,surfaceId:qO(t),zone:n}}function $O(e){let t=e[0];return t?{kind:`close`,surfaceId:qO(t)}:{error:`usage: layout close <surfaceId>`}}function ek(e){let[t,n]=e;return!t||!UO.includes(n)?{error:`usage: layout move <surfaceId> <${UO.join(`|`)}>`}:{kind:`move`,surfaceId:qO(t),zone:n}}function tk(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=JO(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 nk(e){let t=e[0];if(!t)return{error:YO};let n={};for(let t=1;t<e.length;t+=2){let r=tk(n,e[t],e[t+1]);if(r)return r}return n.widthPx==null&&n.widthPercent==null&&n.heightPx==null&&n.heightPercent==null?{error:YO}:{kind:`size`,surfaceId:qO(t),size:n}}function rk(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 ik(e,t){let n=t[0];return n?e===`load`?{kind:`load`,name:n}:{kind:`delete`,name:n}:{error:`usage: layout ${e} <name>`}}function ak(e,t){let n=t[0];return n?e===`show`?{kind:`show`,panelId:qO(n)}:{kind:`hide`,panelId:qO(n)}:{error:`usage: layout ${e} <panelId>`}}function ok(){let e=ps(ls);return e?{kind:`set`,tree:e.tree}:{error:`default layout unavailable`}}function sk(e){let[t,...n]=e;switch(t){case`set`:return XO(n);case`chat`:return ZO(n);case`open`:return QO(n);case`close`:return $O(n);case`move`:return ek(n);case`size`:return nk(n);case`reset`:return{kind:`reset`};case`edit`:return ok();case`load`:return ik(`load`,n);case`save`:return rk(n);case`delete`:return ik(`delete`,n);case`docs`:return{kind:`docs`};case`panels`:return{kind:`panels`};case`show`:return ak(`show`,n);case`hide`:return ak(`hide`,n);default:return{error:`usage: layout <set|edit|chat|open|close|move|size|show|hide|load|save|delete|docs|panels|list|reset>`}}}function ck(){return S(`layout`,async e=>{if(w(e))return{stdout:e[0]?.startsWith(`-`)?WO:et(`layout`,e[0],WO),stderr:``,exitCode:0};if(e[0]===`list`||e.length===0)return{stdout:`layouts: ${Object.keys(fs).join(`, `)}\ndefault: ${ls}\n`,stderr:``,exitCode:0};let t=sk(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
1523
+ `,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 lk=ea.id;function uk(){return`local-llm — inspect and configure the Local LLM provider
1515
1524
 
1516
1525
  Usage:
1517
1526
  local-llm Show current config + verify connection
@@ -1530,20 +1539,20 @@ Common base URLs:
1530
1539
  llama.cpp http://localhost:8080/v1
1531
1540
  vLLM http://localhost:8000/v1
1532
1541
  Jan http://localhost:1337/v1
1533
- `}function ok(e,t){return e.version?t?`${e.kind} (${e.version})`:`${e.kind} ${e.version}`:e.kind}function sk(e){return e.map(e=>` • ${e}`)}function ck(e,t){let n=[`✗ Could not reach ${e}`,` runtime: ${ok(t.runtime,!0)}`,` error: ${t.error?.message??`unknown`}`];return t.error?.hint&&n.push(` hint: ${t.error.hint}`),{stdout:``,stderr:n.join(`
1542
+ `}function dk(e,t){return e.version?t?`${e.kind} (${e.version})`:`${e.kind} ${e.version}`:e.kind}function fk(e){return e.map(e=>` • ${e}`)}function pk(e,t){let n=[`✗ Could not reach ${e}`,` runtime: ${dk(t.runtime,!0)}`,` error: ${t.error?.message??`unknown`}`];return t.error?.hint&&n.push(` hint: ${t.error.hint}`),{stdout:``,stderr:n.join(`
1534
1543
  `)+`
1535
- `,exitCode:1}}function lk(e,t){return{stdout:[`✓ ${e}`,` runtime: ${ok(t.runtime,!0)}`,` models: ${t.models.length}`,...sk(t.models)].join(`
1544
+ `,exitCode:1}}function mk(e,t){return{stdout:[`✓ ${e}`,` runtime: ${dk(t.runtime,!0)}`,` models: ${t.models.length}`,...fk(t.models)].join(`
1536
1545
  `)+`
1537
- `,stderr:``,exitCode:0}}function uk(e,t){let n=t.models.length;return{stdout:[`✓ ${e} (${ok(t.runtime,!1)})`,` Saved ${n} model${n===1?``:`s`} to Settings:`,...sk(t.models)].join(`
1546
+ `,stderr:``,exitCode:0}}function hk(e,t){let n=t.models.length;return{stdout:[`✓ ${e} (${dk(t.runtime,!1)})`,` Saved ${n} model${n===1?``:`s`} to Settings:`,...fk(t.models)].join(`
1538
1547
  `)+`
1539
- `,stderr:``,exitCode:0}}function dk(){return S(ik,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:ak(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-D0ciUU3U.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-BSMA7cC5.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(ik);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1540
- `,exitCode:1};let c=await a(s,t(ik)??void 0);if(!c.ok)return ck(s,c);if(o===`discover`){let e=n(ik)??``;return i(ik,e,s,c.models.join(`, `)),uk(s,c)}return lk(s,c)})}function fk(){return{stdout:`usage: man <topic>
1548
+ `,stderr:``,exitCode:0}}function gk(){return S(lk,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:uk(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-C4KjAHlX.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-B7jLsaQd.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(lk);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1549
+ `,exitCode:1};let c=await a(s,t(lk)??void 0);if(!c.ok)return pk(s,c);if(o===`discover`){let e=n(lk)??``;return i(lk,e,s,c.models.join(`, `)),hk(s,c)}return mk(s,c)})}function _k(){return{stdout:`usage: man <topic>
1541
1550
 
1542
1551
  Fetches documentation for a given topic from sliccy.com.
1543
- `,stderr:``,exitCode:0}}function pk(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 mk(){let e=h();return S(`man`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return fk();if(t.length===0)return{stdout:``,stderr:`What manual page do you want?
1552
+ `,stderr:``,exitCode:0}}function vk(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 yk(){let e=p();return S(`man`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return _k();if(t.length===0)return{stdout:``,stderr:`What manual page do you want?
1544
1553
  For example, try 'man commands'.
1545
- `,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:pk(new TextDecoder(`utf-8`).decode(t.body))+`
1546
- `,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`man: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}const hk=[`--silent`,`-s`,`--interactive`,`-i`],gk=e(`mcp-command`),_k=`/workspace/.mcp/aliases`;function W(e){return{stdout:e,stderr:``,exitCode:0}}function G(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function vk(e){return G(`mcp: ${e}`)}function yk(){return`usage: mcp <command> [args]
1554
+ `,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:vk(new TextDecoder(`utf-8`).decode(t.body))+`
1555
+ `,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`man: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}const bk=[`--silent`,`-s`,`--interactive`,`-i`],xk=e(`mcp-command`),Sk=`/workspace/.mcp/aliases`;function W(e){return{stdout:e,stderr:``,exitCode:0}}function G(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function Ck(e){return G(`mcp: ${e}`)}function wk(){return`usage: mcp <command> [args]
1547
1556
 
1548
1557
  Commands:
1549
1558
  add <url> <name> Register an MCP server. Runs OAuth if required.
@@ -1565,7 +1574,7 @@ Examples:
1565
1574
  mcp search forecast
1566
1575
  mcp auth weather
1567
1576
  mcp delete weather
1568
- `}function bk(e={}){return S(`mcp`,async t=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return W(yk());let n=t[0],r=t.slice(1);try{switch(n){case`add`:return await xk(r,e);case`list`:case`ls`:return await Ck(r,e);case`delete`:case`rm`:return await Dk(r,e);case`invoke`:return await Ok(r,e);case`search`:return await Tk(r,e);case`refresh`:return await Jk(r,e);case`auth`:return await Yk(r,e);default:return G(`mcp: unknown subcommand "${n}" (try \`mcp --help\`)`)}}catch(e){let t=e instanceof Error?e.message:String(e);return gk.error(`mcp subcommand failed`,{sub:n,error:t}),e instanceof ta?G(`mcp ${n}: ${t}`,124):G(`mcp ${n}: ${t}`)}})}async function xk(e,t){if(w(e))return W(`usage: mcp add <url> <name>
1577
+ `}function Tk(e={}){return S(`mcp`,async t=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return W(wk());let n=t[0],r=t.slice(1);try{switch(n){case`add`:return await Ek(r,e);case`list`:case`ls`:return await Ok(r,e);case`delete`:case`rm`:return await Mk(r,e);case`invoke`:return await Nk(r,e);case`search`:return await Ak(r,e);case`refresh`:return await $k(r,e);case`auth`:return await eA(r,e);default:return G(`mcp: unknown subcommand "${n}" (try \`mcp --help\`)`)}}catch(e){let t=e instanceof Error?e.message:String(e);return xk.error(`mcp subcommand failed`,{sub:n,error:t}),e instanceof ta?G(`mcp ${n}: ${t}`,124):G(`mcp ${n}: ${t}`)}})}async function Ek(e,t){if(w(e))return W(`usage: mcp add <url> <name>
1569
1578
 
1570
1579
  Probes <url> with an unauthenticated MCP \`initialize\`. If the server
1571
1580
  returns 401, runs OAuth discovery → dynamic client registration → PKCE
@@ -1574,20 +1583,20 @@ authorization-code flow, stores the access token, and retries.
1574
1583
  On success, the server is persisted to /workspace/.mcp/servers.json and
1575
1584
  an alias shim is written to /workspace/.mcp/aliases/<name>.jsh so the
1576
1585
  short name resolves on the PATH.
1577
- `);let n=C(e,{});if(`error`in n)return vk(n.error);if(n.positionals.length<2)return G(`mcp add: expected <url> <name>`);let[r,i]=n.positionals;if(!/^https?:\/\//i.test(r))return G(`mcp add: invalid URL "${r}" (must start with http:// or https://)`);if(!/^[A-Za-z][A-Za-z0-9_-]*$/.test(i))return G(`mcp add: invalid name "${i}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:a,setServer:o}=await import(`./store-DYTzgtEI.js`).then(e=>e.r);if(await a(i,t.fs))return G(`mcp add: a server named "${i}" already exists`);let{McpClient:s,McpAuthRequiredError:c}=await import(`./client-CmfvXtLV.js`).then(e=>e.n),l=new s({url:r,fetchImpl:t.fetchImpl}),u;try{await l.initialize()}catch(e){if(!(e instanceof c))throw e;u=await Sk(r,i,e.resourceMetadataUrl,t),l=new s({url:r,fetchImpl:t.fetchImpl,getAuthHeader:()=>Zk(i)}),await l.initialize()}let d=await l.toolsList(),f=await l.appsList(),p=new Date().toISOString();await o(i,{url:r,protocolVersion:l.getNegotiatedProtocolVersion(),tools:d,apps:f,addedAt:p,lastRefreshedAt:p,...u?{auth:u}:{}},t.fs),await nA(i,t);let m=await aA(i,f,t);if(u){let{registerMcpProvider:e}=await import(`./provider-Dv9W3IvY.js`);e({name:i,serverUrl:r,auth:u})}return W([`Added MCP server "${i}" → ${r}`,` tools: ${d.length}, apps: ${f.length} (${m} sprinkle${m===1?``:`s`})`,` alias: ${_k}/${i}.jsh`,u?` auth: oauth (provider mcp:${i})`:` auth: none`].join(`
1586
+ `);let n=C(e,{});if(`error`in n)return Ck(n.error);if(n.positionals.length<2)return G(`mcp add: expected <url> <name>`);let[r,i]=n.positionals;if(!/^https?:\/\//i.test(r))return G(`mcp add: invalid URL "${r}" (must start with http:// or https://)`);if(!/^[A-Za-z][A-Za-z0-9_-]*$/.test(i))return G(`mcp add: invalid name "${i}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:a,setServer:o}=await import(`./store-KNXWdOK2.js`).then(e=>e.r);if(await a(i,t.fs))return G(`mcp add: a server named "${i}" already exists`);let{McpClient:s,McpAuthRequiredError:c}=await import(`./client-CwxmlQM-.js`).then(e=>e.n),l=new s({url:r,fetchImpl:t.fetchImpl}),u;try{await l.initialize()}catch(e){if(!(e instanceof c))throw e;u=await Dk(r,i,e.resourceMetadataUrl,t),l=new s({url:r,fetchImpl:t.fetchImpl,getAuthHeader:()=>nA(i)}),await l.initialize()}let d=await l.toolsList(),f=await l.appsList(),p=new Date().toISOString();await o(i,{url:r,protocolVersion:l.getNegotiatedProtocolVersion(),tools:d,apps:f,addedAt:p,lastRefreshedAt:p,...u?{auth:u}:{}},t.fs),await sA(i,t);let m=await uA(i,f,t);if(u){let{registerMcpProvider:e}=await import(`./provider-CSJRicyp.js`);e({name:i,serverUrl:r,auth:u})}return W([`Added MCP server "${i}" → ${r}`,` tools: ${d.length}, apps: ${f.length} (${m} sprinkle${m===1?``:`s`})`,` alias: ${Sk}/${i}.jsh`,u?` auth: oauth (provider mcp:${i})`:` auth: none`].join(`
1578
1587
  `)+`
1579
- `)}async function Sk(e,t,n,r){let{discoverAuth:i,dynamicRegister:a,runAuthFlow:o}=await import(`./oauth-D20BEoY6.js`),{saveOAuthAccount:s}=await import(`./account-store-D0ciUU3U.js`).then(e=>e.t),c=await $k(r.oauthFetchImpl),l=r.oauthLauncher??await Qk(),u=await i(e,n,c);gk.debug(`MCP OAuth discovery succeeded`,{name:t,serverUrl:e,discoveryPath:u.discoveryPath,issuer:u.issuer});let d=await na(ge()),f=await a(u,d,c),p=u.supportedScopes&&u.supportedScopes.length>0?u.supportedScopes.join(` `):void 0,m=await o({asMetadata:u,clientId:f.clientId,scope:p,redirectUri:d,launcher:l,fetchImpl:c}),h=`mcp:${t}`;return await s({providerId:h,accessToken:m.accessToken,refreshToken:m.refreshToken,tokenExpiresAt:m.expiresAt,scopes:m.scope}),{providerId:h,authorizationServer:u.issuer,clientId:f.clientId,redirectUri:d,scope:m.scope??p,registrationClientUri:f.registrationClientUri}}async function Ck(e,t){if(w(e))return W(`usage: mcp list
1580
- `);let n=C(e,{});if(`error`in n)return vk(n.error);let{ensureAllMcpProvidersRegistered:r}=await import(`./provider-Dv9W3IvY.js`);await r();let{listServers:i}=await import(`./store-DYTzgtEI.js`).then(e=>e.r),a=await i(t.fs),o=Object.keys(a).sort();if(o.length===0)return W("No MCP servers configured. Use `mcp add <url> <name>`.\n");let s=[[`NAME`,`URL`,`AUTH`,`TOOLS`,`APPS`,`ADDED`]];for(let e of o){let t=a[e];s.push([e,t.url,t.auth?`yes`:`no`,String(t.tools?.length??0),String(t.apps?.length??0),t.addedAt?t.addedAt.slice(0,10):`-`])}return W(wk(s))}function wk(e){let t=e[0].map((t,n)=>e.reduce((e,t)=>Math.max(e,(t[n]??``).length),0));return e.map(e=>e.map((e,n)=>e.padEnd(t[n])).join(` `).trimEnd()).join(`
1588
+ `)}async function Dk(e,t,n,r){let{discoverAuth:i,dynamicRegister:a,runAuthFlow:o}=await import(`./oauth-D20BEoY6.js`),{saveOAuthAccount:s}=await import(`./account-store-C4KjAHlX.js`).then(e=>e.t),c=await iA(r.oauthFetchImpl),l=r.oauthLauncher??await rA(),u=await i(e,n,c);xk.debug(`MCP OAuth discovery succeeded`,{name:t,serverUrl:e,discoveryPath:u.discoveryPath,issuer:u.issuer});let d=await na(_e()),f=await a(u,d,c),p=u.supportedScopes&&u.supportedScopes.length>0?u.supportedScopes.join(` `):void 0,m=await o({asMetadata:u,clientId:f.clientId,scope:p,redirectUri:d,launcher:l,fetchImpl:c}),h=`mcp:${t}`;return await s({providerId:h,accessToken:m.accessToken,refreshToken:m.refreshToken,tokenExpiresAt:m.expiresAt,scopes:m.scope}),{providerId:h,authorizationServer:u.issuer,clientId:f.clientId,redirectUri:d,scope:m.scope??p,registrationClientUri:f.registrationClientUri}}async function Ok(e,t){if(w(e))return W(`usage: mcp list
1589
+ `);let n=C(e,{});if(`error`in n)return Ck(n.error);let{ensureAllMcpProvidersRegistered:r}=await import(`./provider-CSJRicyp.js`);await r();let{listServers:i}=await import(`./store-KNXWdOK2.js`).then(e=>e.r),a=await i(t.fs),o=Object.keys(a).sort();if(o.length===0)return W("No MCP servers configured. Use `mcp add <url> <name>`.\n");let s=[[`NAME`,`URL`,`AUTH`,`TOOLS`,`APPS`,`ADDED`]];for(let e of o){let t=a[e];s.push([e,t.url,t.auth?`yes`:`no`,String(t.tools?.length??0),String(t.apps?.length??0),t.addedAt?t.addedAt.slice(0,10):`-`])}return W(kk(s))}function kk(e){let t=e[0].map((t,n)=>e.reduce((e,t)=>Math.max(e,(t[n]??``).length),0));return e.map(e=>e.map((e,n)=>e.padEnd(t[n])).join(` `).trimEnd()).join(`
1581
1590
  `)+`
1582
- `}async function Tk(e,t){if(w(e))return W(`usage: mcp search <query>
1591
+ `}async function Ak(e,t){if(w(e))return W(`usage: mcp search <query>
1583
1592
 
1584
1593
  Case-insensitive substring search across the cached tools of every
1585
1594
  registered MCP server. Matches tool name OR description and prints a
1586
1595
  table of (server, tool, description, match-field) rows.
1587
- `);let n=C(e,{});if(`error`in n)return vk(n.error);if(n.positionals.length===0)return G(`mcp search: expected <query>`);let r=n.positionals[0],i=r.toLowerCase(),{ensureAllMcpProvidersRegistered:a}=await import(`./provider-Dv9W3IvY.js`);await a();let{listServers:o}=await import(`./store-DYTzgtEI.js`).then(e=>e.r),s=await o(t.fs),c=Object.keys(s).sort();if(c.length===0)return W("No MCP servers configured. Use `mcp add <url> <name>`.\n");let l=[];for(let e of c){let t=s[e].tools??[];for(let n of t){let t=n.description??``,r=n.name.toLowerCase().includes(i),a=t.toLowerCase().includes(i);if(!r&&!a)continue;let o=r&&a?`name+description`:r?`name`:`description`;l.push({server:e,tool:n.name,description:t,match:o})}}if(l.length===0)return W(`No tools matched "${r}".\n`);l.sort((e,t)=>e.server===t.server?e.tool.localeCompare(t.tool):e.server.localeCompare(t.server));let u=[[`SERVER`,`TOOL`,`DESCRIPTION`,`MATCH`]];for(let e of l)u.push([e.server,e.tool,Ek(e.description),e.match]);return W(wk(u))}function Ek(e){if(!e)return``;let t=e.replace(/\s+/g,` `).trim();return t.length<=60?t:t.slice(0,59)+`…`}async function Dk(e,t){if(e.length===0||w(e))return e.length===0?G(`mcp delete: expected <name>`):W(`usage: mcp delete <name>
1588
- `);let n=C(e,{});if(`error`in n)return vk(n.error);let r=n.positionals[0];if(!r)return G(`mcp delete: expected <name>`);let{ensureMcpProviderRegistered:i,removeMcpProvider:a}=await import(`./provider-Dv9W3IvY.js`);await i(r);let{deleteServer:o}=await import(`./store-DYTzgtEI.js`).then(e=>e.r),s=await o(r,t.fs);await rA(r,t),await iA(r,t);let c=`mcp:${r}`,l=!1;try{let{removeAccount:e,getAccounts:t}=await import(`./account-store-D0ciUU3U.js`).then(e=>e.t);t().some(e=>e.providerId===c)&&(await e(c),l=!0)}catch(e){gk.warn(`mcp delete: OAuth removal failed`,{providerId:c,error:e instanceof Error?e.message:String(e)})}let u=a(r);return!s&&!l&&!u?G(`mcp delete: no server, alias, or account found for "${r}"`):W([`Removed MCP server "${r}"`,` servers.json: ${s?`removed`:`not present`}`,` alias: cleaned`,` sprinkles: cleaned`,` oauth: ${l?`removed`:`not present`}`,` provider: ${u?`unregistered`:`not registered`}`].join(`
1596
+ `);let n=C(e,{});if(`error`in n)return Ck(n.error);if(n.positionals.length===0)return G(`mcp search: expected <query>`);let r=n.positionals[0],i=r.toLowerCase(),{ensureAllMcpProvidersRegistered:a}=await import(`./provider-CSJRicyp.js`);await a();let{listServers:o}=await import(`./store-KNXWdOK2.js`).then(e=>e.r),s=await o(t.fs),c=Object.keys(s).sort();if(c.length===0)return W("No MCP servers configured. Use `mcp add <url> <name>`.\n");let l=[];for(let e of c){let t=s[e].tools??[];for(let n of t){let t=n.description??``,r=n.name.toLowerCase().includes(i),a=t.toLowerCase().includes(i);if(!r&&!a)continue;let o=r&&a?`name+description`:r?`name`:`description`;l.push({server:e,tool:n.name,description:t,match:o})}}if(l.length===0)return W(`No tools matched "${r}".\n`);l.sort((e,t)=>e.server===t.server?e.tool.localeCompare(t.tool):e.server.localeCompare(t.server));let u=[[`SERVER`,`TOOL`,`DESCRIPTION`,`MATCH`]];for(let e of l)u.push([e.server,e.tool,jk(e.description),e.match]);return W(kk(u))}function jk(e){if(!e)return``;let t=e.replace(/\s+/g,` `).trim();return t.length<=60?t:t.slice(0,59)+`…`}async function Mk(e,t){if(e.length===0||w(e))return e.length===0?G(`mcp delete: expected <name>`):W(`usage: mcp delete <name>
1597
+ `);let n=C(e,{});if(`error`in n)return Ck(n.error);let r=n.positionals[0];if(!r)return G(`mcp delete: expected <name>`);let{ensureMcpProviderRegistered:i,removeMcpProvider:a}=await import(`./provider-CSJRicyp.js`);await i(r);let{deleteServer:o}=await import(`./store-KNXWdOK2.js`).then(e=>e.r),s=await o(r,t.fs);await cA(r,t),await lA(r,t);let c=`mcp:${r}`,l=!1;try{let{removeAccount:e,getAccounts:t}=await import(`./account-store-C4KjAHlX.js`).then(e=>e.t);t().some(e=>e.providerId===c)&&(await e(c),l=!0)}catch(e){xk.warn(`mcp delete: OAuth removal failed`,{providerId:c,error:e instanceof Error?e.message:String(e)})}let u=a(r);return!s&&!l&&!u?G(`mcp delete: no server, alias, or account found for "${r}"`):W([`Removed MCP server "${r}"`,` servers.json: ${s?`removed`:`not present`}`,` alias: cleaned`,` sprinkles: cleaned`,` oauth: ${l?`removed`:`not present`}`,` provider: ${u?`unregistered`:`not registered`}`].join(`
1589
1598
  `)+`
1590
- `)}async function Ok(e,t){if(e.length===0)return G(`mcp invoke: expected <name>`);if(w(e.slice(0,1)))return W(jk());let n=C([e[0]],{});if(`error`in n)return vk(n.error);let r=n.positionals[0];if(!r)return G(`mcp invoke: expected <name>`);let i=e.slice(1),{ensureMcpProviderRegistered:a}=await import(`./provider-Dv9W3IvY.js`);await a(r);let{getServer:o}=await import(`./store-DYTzgtEI.js`).then(e=>e.r),s=await o(r,t.fs);if(!s)return G(`mcp invoke: unknown server "${r}" (run \`mcp add <url> ${r}\` first)`);let c=s.tools??[];if(i.length===0||w(i.slice(0,1)))return W(Mk(r,s,c));let l=C([i[0]],{});if(`error`in l)return vk(l.error);let u=l.positionals[0];if(!u)return G(`mcp invoke: expected <tool>`);let d=c.find(e=>e.name===u);if(!d)return G(`mcp invoke: unknown tool "${u}" on "${r}" (run \`${r}\` to list tools)`);let{timeoutMs:f,remaining:p,warnings:m}=kk(i.slice(1));if(w(p))return W(Pk(r,d));let h=Fk(p,d.inputSchema);if(!h.ok)return G(`mcp invoke: ${h.error}`);let{McpClient:g}=await import(`./client-CmfvXtLV.js`).then(e=>e.n),_=new g({url:s.url,fetchImpl:t.fetchImpl,headers:s.headers,getAuthHeader:s.auth?()=>Zk(r):void 0,...f===void 0?{}:{timeoutMs:f}});await _.initialize();let v=qk(await _.toolsCall(u,h.value));return m.length>0&&(v.stderr=m.map(e=>`${e}\n`).join(``)+v.stderr),v}function kk(e){let t=[],n=[],r,i=0;for(;i<e.length;){let a=e[i];if(a.startsWith(`--timeout=`)){let e=Ak(a.slice(10));e.ok?r=e.value:n.push(e.error),i+=1;continue}if(a===`--timeout`){let t=e[i+1];if(t===void 0||t.startsWith(`--`)){n.push(`mcp invoke: --timeout requires a value (got ${t===void 0?`nothing`:`"${t}"`}); using default.`),i+=1;continue}let a=Ak(t);a.ok?r=a.value:n.push(a.error),i+=2;continue}t.push(a),i+=1}return{timeoutMs:r,remaining:t,warnings:n}}function Ak(e){if(!/^-?\d+$/.test(e))return{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (expected positive integer seconds); using default.`};let t=Number(e);return!Number.isFinite(t)||t<1?{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (must be >= 1 second); using default.`}:{ok:!0,value:t*1e3}}function jk(){return`usage: mcp invoke <name> [tool] [--timeout <seconds>] [--flag value …]
1599
+ `)}async function Nk(e,t){if(e.length===0)return G(`mcp invoke: expected <name>`);if(w(e.slice(0,1)))return W(Ik());let n=C([e[0]],{});if(`error`in n)return Ck(n.error);let r=n.positionals[0];if(!r)return G(`mcp invoke: expected <name>`);let i=e.slice(1),{ensureMcpProviderRegistered:a}=await import(`./provider-CSJRicyp.js`);await a(r);let{getServer:o}=await import(`./store-KNXWdOK2.js`).then(e=>e.r),s=await o(r,t.fs);if(!s)return G(`mcp invoke: unknown server "${r}" (run \`mcp add <url> ${r}\` first)`);let c=s.tools??[];if(i.length===0||w(i.slice(0,1)))return W(Lk(r,s,c));let l=C([i[0]],{});if(`error`in l)return Ck(l.error);let u=l.positionals[0];if(!u)return G(`mcp invoke: expected <tool>`);let d=c.find(e=>e.name===u);if(!d)return G(`mcp invoke: unknown tool "${u}" on "${r}" (run \`${r}\` to list tools)`);let{timeoutMs:f,remaining:p,warnings:m}=Pk(i.slice(1));if(w(p))return W(zk(r,d));let h=Bk(p,d.inputSchema);if(!h.ok)return G(`mcp invoke: ${h.error}`);let{McpClient:g}=await import(`./client-CwxmlQM-.js`).then(e=>e.n),_=new g({url:s.url,fetchImpl:t.fetchImpl,headers:s.headers,getAuthHeader:s.auth?()=>nA(r):void 0,...f===void 0?{}:{timeoutMs:f}});await _.initialize();let v=Qk(await _.toolsCall(u,h.value));return m.length>0&&(v.stderr=m.map(e=>`${e}\n`).join(``)+v.stderr),v}function Pk(e){let t=[],n=[],r,i=0;for(;i<e.length;){let a=e[i];if(a.startsWith(`--timeout=`)){let e=Fk(a.slice(10));e.ok?r=e.value:n.push(e.error),i+=1;continue}if(a===`--timeout`){let t=e[i+1];if(t===void 0||t.startsWith(`--`)){n.push(`mcp invoke: --timeout requires a value (got ${t===void 0?`nothing`:`"${t}"`}); using default.`),i+=1;continue}let a=Fk(t);a.ok?r=a.value:n.push(a.error),i+=2;continue}t.push(a),i+=1}return{timeoutMs:r,remaining:t,warnings:n}}function Fk(e){if(!/^-?\d+$/.test(e))return{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (expected positive integer seconds); using default.`};let t=Number(e);return!Number.isFinite(t)||t<1?{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (must be >= 1 second); using default.`}:{ok:!0,value:t*1e3}}function Ik(){return`usage: mcp invoke <name> [tool] [--timeout <seconds>] [--flag value …]
1591
1600
 
1592
1601
  mcp invoke <name> List tools on <name>.
1593
1602
  mcp invoke <name> <tool> --help Show flags for <tool>.
@@ -1607,20 +1616,20 @@ Arguments are coerced according to the tool's JSON Schema:
1607
1616
  array of objects) is parsed as JSON, e.g. \`--params '{"url":"…"}'\`.
1608
1617
  Nested fields can be set with dotted flags (\`--params.url …\`).
1609
1618
  Unknown \`--flags\` exit non-zero instead of being dropped.
1610
- `}function Mk(e,t,n){let r=[];if(r.push(`MCP server "${e}" → ${t.url}`),n.length===0)r.push(" (no tools cached — run `mcp refresh "+e+"`)");else{r.push(``),r.push(`Tools:`);let t=n.reduce((e,t)=>Math.max(e,t.name.length),0);for(let e of n)r.push(` ${e.name.padEnd(t)} ${e.description??``}`.trimEnd());r.push(``),r.push(`Run \`${e} <tool> --help\` for tool-specific flags.`)}return r.join(`
1619
+ `}function Lk(e,t,n){let r=[];if(r.push(`MCP server "${e}" → ${t.url}`),n.length===0)r.push(" (no tools cached — run `mcp refresh "+e+"`)");else{r.push(``),r.push(`Tools:`);let t=n.reduce((e,t)=>Math.max(e,t.name.length),0);for(let e of n)r.push(` ${e.name.padEnd(t)} ${e.description??``}`.trimEnd());r.push(``),r.push(`Run \`${e} <tool> --help\` for tool-specific flags.`)}return r.join(`
1611
1620
  `)+`
1612
- `}function Nk(e){return e??{}}function Pk(e,t){let n=Nk(t.inputSchema),r=n.properties??{},i=new Set(Array.isArray(n.required)?n.required:[]),a=[];a.push(`usage: ${e} ${t.name} [flags]`),t.description&&(a.push(``),a.push(t.description));let o=Object.keys(r);if(o.length===0)return a.push(``),a.push(`(no flags declared)`),a.join(`
1621
+ `}function Rk(e){return e??{}}function zk(e,t){let n=Rk(t.inputSchema),r=n.properties??{},i=new Set(Array.isArray(n.required)?n.required:[]),a=[];a.push(`usage: ${e} ${t.name} [flags]`),t.description&&(a.push(``),a.push(t.description));let o=Object.keys(r);if(o.length===0)return a.push(``),a.push(`(no flags declared)`),a.join(`
1613
1622
  `)+`
1614
1623
  `;a.push(``),a.push(`Flags:`);let s=o.map(e=>` --${e} <${r[e]?.type??`string`}>`),c=s.reduce((e,t)=>Math.max(e,t.length),0);for(let e=0;e<o.length;e++){let t=o[e],n=r[t]?.description??``,l=i.has(t)?` (required)`:``;a.push(`${s[e].padEnd(c)} ${n}${l}`.trimEnd())}return a.join(`
1615
1624
  `)+`
1616
- `}function Fk(e,t){let n=Nk(t),r=n.properties??{},i=new Set(Array.isArray(n.required)?n.required:[]),a=Vk(),o=0;for(;o<e.length;){let t=Ik(e,o,r,a);if(!t.ok)return t;o=t.nextIndex}for(let e of i)if(!Object.hasOwn(a,e))return{ok:!1,error:`missing required flag --${e}`};return{ok:!0,value:a}}function Ik(e,t,n,r){let i=e[t];if(!i.startsWith(`--`))return{ok:!1,error:`unexpected positional argument "${i}"`};let{key:a,inlineValue:o}=Wk(i),s=Lk(a,n);if(!s.ok)return s;let{rootKey:c,dottedPath:l,meta:u}=s,d=u.type,f=d??`string`,p=f===`array`,m=(p?u.items?.type:void 0)??`string`;if(l&&d!==void 0&&d!==`object`)return{ok:!1,error:`unknown flag: --${a}`};let h=Rk(e,t,a,o,f,l);if(!h.ok)return h;if(h.bareBoolean)return r[c]=!0,{ok:!0,nextIndex:h.nextIndex};let g=l?`string`:p?m:f,_=Gk(h.raw,g);if(!_.ok)return{ok:!1,error:`--${a}: ${_.error}`};let v=zk(r,c,l,_.value,p);return v.ok?{ok:!0,nextIndex:h.nextIndex}:v}function Lk(e,t){if(Object.hasOwn(t,e))return{ok:!0,rootKey:e,dottedPath:null,meta:t[e]??{}};let n=e.indexOf(`.`);if(n<=0)return{ok:!1,error:`unknown flag: --${e}`};let r=e.slice(0,n),i=e.slice(n+1);if(!Object.hasOwn(t,r)||i.length===0)return{ok:!1,error:`unknown flag: --${e}`};let a=i.split(`.`);return Hk(r)||a.some(e=>e.length===0||Hk(e))?{ok:!1,error:`unknown flag: --${e}`}:{ok:!0,rootKey:r,dottedPath:a,meta:t[r]??{}}}function Rk(e,t,n,r,i,a){if(r!==void 0)return{ok:!0,raw:r,nextIndex:t+1,bareBoolean:!1};let o=e[t+1];return!a&&i===`boolean`&&(o===void 0||o.startsWith(`--`))?{ok:!0,raw:``,nextIndex:t+1,bareBoolean:!0}:o===void 0?{ok:!1,error:`flag --${n} requires a value`}:{ok:!0,raw:o,nextIndex:t+2,bareBoolean:!1}}function zk(e,t,n,r,i){if(n)return Bk(e,t,n,r);if(i){let n=e[t];return Array.isArray(n)?n.push(r):e[t]=[r],{ok:!0}}let a=e[t];return Uk(a)&&Uk(r)?(Object.assign(a,r),{ok:!0}):(e[t]=r,{ok:!0})}function Bk(e,t,n,r){if(Hk(t)||n.some(e=>e.length===0||Hk(e)))return{ok:!1,error:`unknown flag: --${t}.${n.join(`.`)}`};let i=Object.hasOwn(e,t)?e[t]:void 0;if(i===void 0)e[t]=Vk();else if(!Uk(i))return{ok:!1,error:`--${t}: cannot nest into a ${typeof i} value`};let a=e[t];for(let e=0;e<n.length-1;e++){let r=n[e],i=Object.hasOwn(a,r)?a[r]:void 0;if(i===void 0)a[r]=Vk();else if(!Uk(i))return{ok:!1,error:`--${t}.${n.slice(0,e+1).join(`.`)}: cannot nest into a ${typeof i} value`};a=a[r]}return a[n[n.length-1]]=r,{ok:!0}}function Vk(){return Object.create(null)}function Hk(e){return e===`__proto__`||e===`prototype`||e===`constructor`}function Uk(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&e!==Object.prototype}function Wk(e){let t=e.indexOf(`=`);return t>2?{key:e.slice(2,t),inlineValue:e.slice(t+1)}:{key:e.slice(2),inlineValue:void 0}}function Gk(e,t){switch(t){case`integer`:return/^-?\d+$/.test(e)?{ok:!0,value:Number(e)}:{ok:!1,error:`expected integer, got "${e}"`};case`number`:{let t=Number(e);return Number.isFinite(t)?{ok:!0,value:t}:{ok:!1,error:`expected number, got "${e}"`}}case`boolean`:return e===`true`||e===`1`||e===`yes`?{ok:!0,value:!0}:e===`false`||e===`0`||e===`no`?{ok:!0,value:!1}:{ok:!1,error:`expected boolean, got "${e}"`};case`object`:return Kk(e);default:return{ok:!0,value:e}}}function Kk(e){let t;try{t=JSON.parse(e)}catch{return{ok:!1,error:`expected object JSON, got "${e}"`}}return Uk(t)?{ok:!0,value:t}:{ok:!1,error:`expected object JSON, got "${e}"`}}function qk(e){let t=e??{},n=Array.isArray(t.content)?t.content:[],r=[];for(let e of n)if(!(!e||typeof e!=`object`))switch(e.type){case`text`:typeof e.text==`string`&&r.push(e.text);break;case`image`:r.push(`[image: ${e.mimeType??`unknown mime`}]`);break;case`resource`:{let t=e.resource?.uri??e.uri??`unknown uri`;r.push(`[resource: ${t}]`);break}default:r.push(`[${e.type??`unknown`}]`)}let i=r.join(`
1625
+ `}function Bk(e,t){let n=Rk(t),r=n.properties??{},i=new Set(Array.isArray(n.required)?n.required:[]),a=Kk(),o=0;for(;o<e.length;){let t=Vk(e,o,r,a);if(!t.ok)return t;o=t.nextIndex}for(let e of i)if(!Object.hasOwn(a,e))return{ok:!1,error:`missing required flag --${e}`};return{ok:!0,value:a}}function Vk(e,t,n,r){let i=e[t];if(!i.startsWith(`--`))return{ok:!1,error:`unexpected positional argument "${i}"`};let{key:a,inlineValue:o}=Yk(i),s=Hk(a,n);if(!s.ok)return s;let{rootKey:c,dottedPath:l,meta:u}=s,d=u.type,f=d??`string`,p=f===`array`,m=(p?u.items?.type:void 0)??`string`;if(l&&d!==void 0&&d!==`object`)return{ok:!1,error:`unknown flag: --${a}`};let h=Uk(e,t,a,o,f,l);if(!h.ok)return h;if(h.bareBoolean)return r[c]=!0,{ok:!0,nextIndex:h.nextIndex};let g=l?`string`:p?m:f,_=Xk(h.raw,g);if(!_.ok)return{ok:!1,error:`--${a}: ${_.error}`};let v=Wk(r,c,l,_.value,p);return v.ok?{ok:!0,nextIndex:h.nextIndex}:v}function Hk(e,t){if(Object.hasOwn(t,e))return{ok:!0,rootKey:e,dottedPath:null,meta:t[e]??{}};let n=e.indexOf(`.`);if(n<=0)return{ok:!1,error:`unknown flag: --${e}`};let r=e.slice(0,n),i=e.slice(n+1);if(!Object.hasOwn(t,r)||i.length===0)return{ok:!1,error:`unknown flag: --${e}`};let a=i.split(`.`);return qk(r)||a.some(e=>e.length===0||qk(e))?{ok:!1,error:`unknown flag: --${e}`}:{ok:!0,rootKey:r,dottedPath:a,meta:t[r]??{}}}function Uk(e,t,n,r,i,a){if(r!==void 0)return{ok:!0,raw:r,nextIndex:t+1,bareBoolean:!1};let o=e[t+1];return!a&&i===`boolean`&&(o===void 0||o.startsWith(`--`))?{ok:!0,raw:``,nextIndex:t+1,bareBoolean:!0}:o===void 0?{ok:!1,error:`flag --${n} requires a value`}:{ok:!0,raw:o,nextIndex:t+2,bareBoolean:!1}}function Wk(e,t,n,r,i){if(n)return Gk(e,t,n,r);if(i){let n=e[t];return Array.isArray(n)?n.push(r):e[t]=[r],{ok:!0}}let a=e[t];return Jk(a)&&Jk(r)?(Object.assign(a,r),{ok:!0}):(e[t]=r,{ok:!0})}function Gk(e,t,n,r){if(qk(t)||n.some(e=>e.length===0||qk(e)))return{ok:!1,error:`unknown flag: --${t}.${n.join(`.`)}`};let i=Object.hasOwn(e,t)?e[t]:void 0;if(i===void 0)e[t]=Kk();else if(!Jk(i))return{ok:!1,error:`--${t}: cannot nest into a ${typeof i} value`};let a=e[t];for(let e=0;e<n.length-1;e++){let r=n[e],i=Object.hasOwn(a,r)?a[r]:void 0;if(i===void 0)a[r]=Kk();else if(!Jk(i))return{ok:!1,error:`--${t}.${n.slice(0,e+1).join(`.`)}: cannot nest into a ${typeof i} value`};a=a[r]}return a[n[n.length-1]]=r,{ok:!0}}function Kk(){return Object.create(null)}function qk(e){return e===`__proto__`||e===`prototype`||e===`constructor`}function Jk(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&e!==Object.prototype}function Yk(e){let t=e.indexOf(`=`);return t>2?{key:e.slice(2,t),inlineValue:e.slice(t+1)}:{key:e.slice(2),inlineValue:void 0}}function Xk(e,t){switch(t){case`integer`:return/^-?\d+$/.test(e)?{ok:!0,value:Number(e)}:{ok:!1,error:`expected integer, got "${e}"`};case`number`:{let t=Number(e);return Number.isFinite(t)?{ok:!0,value:t}:{ok:!1,error:`expected number, got "${e}"`}}case`boolean`:return e===`true`||e===`1`||e===`yes`?{ok:!0,value:!0}:e===`false`||e===`0`||e===`no`?{ok:!0,value:!1}:{ok:!1,error:`expected boolean, got "${e}"`};case`object`:return Zk(e);default:return{ok:!0,value:e}}}function Zk(e){let t;try{t=JSON.parse(e)}catch{return{ok:!1,error:`expected object JSON, got "${e}"`}}return Jk(t)?{ok:!0,value:t}:{ok:!1,error:`expected object JSON, got "${e}"`}}function Qk(e){let t=e??{},n=Array.isArray(t.content)?t.content:[],r=[];for(let e of n)if(!(!e||typeof e!=`object`))switch(e.type){case`text`:typeof e.text==`string`&&r.push(e.text);break;case`image`:r.push(`[image: ${e.mimeType??`unknown mime`}]`);break;case`resource`:{let t=e.resource?.uri??e.uri??`unknown uri`;r.push(`[resource: ${t}]`);break}default:r.push(`[${e.type??`unknown`}]`)}let i=r.join(`
1617
1626
  `),a=i.endsWith(`
1618
1627
  `)?``:`
1619
- `;return t.isError?{stdout:``,stderr:(i||`(tool reported error)`)+a,exitCode:1}:{stdout:i+(i?a:``),stderr:``,exitCode:0}}async function Jk(e,t){if(e.length===0||w(e))return e.length===0?G(`mcp refresh: expected <name>`):W(`usage: mcp refresh <name>
1628
+ `;return t.isError?{stdout:``,stderr:(i||`(tool reported error)`)+a,exitCode:1}:{stdout:i+(i?a:``),stderr:``,exitCode:0}}async function $k(e,t){if(e.length===0||w(e))return e.length===0?G(`mcp refresh: expected <name>`):W(`usage: mcp refresh <name>
1620
1629
 
1621
1630
  Re-fetches the tool catalog and \`apps/list\` for <name>. Does NOT refresh
1622
1631
  OAuth tokens — for OAuth token refresh use \`mcp auth <name>\`.
1623
- `);let n=C(e,{});if(`error`in n)return vk(n.error);let r=n.positionals[0];if(!r)return G(`mcp refresh: expected <name>`);let{ensureMcpProviderRegistered:i}=await import(`./provider-Dv9W3IvY.js`);await i(r);let{getServer:a,setServer:o}=await import(`./store-DYTzgtEI.js`).then(e=>e.r),s=await a(r,t.fs);if(!s)return G(`mcp refresh: unknown server "${r}"`);let{McpClient:c,McpAuthRequiredError:l}=await import(`./client-CmfvXtLV.js`).then(e=>e.n),u=new c({url:s.url,fetchImpl:t.fetchImpl,headers:s.headers,getAuthHeader:s.auth?()=>Zk(r):void 0});try{await u.initialize()}catch(e){if(e instanceof l)return G(`mcp refresh: server "${r}" returned 401 — token may have expired. Run \`mcp auth ${r}\` to re-authenticate.`);throw e}let d=await u.toolsList(),f=await u.appsList();await o(r,{...s,protocolVersion:u.getNegotiatedProtocolVersion(),tools:d,apps:f,lastRefreshedAt:new Date().toISOString()},t.fs);let p=await aA(r,f,t);return W(`Refreshed "${r}" — tools: ${d.length}, apps: ${f.length} (${p} sprinkle${p===1?``:`s`})\n`)}async function Yk(e,t){if(w(e))return W(`usage: mcp auth <name> [--silent | --interactive]
1632
+ `);let n=C(e,{});if(`error`in n)return Ck(n.error);let r=n.positionals[0];if(!r)return G(`mcp refresh: expected <name>`);let{ensureMcpProviderRegistered:i}=await import(`./provider-CSJRicyp.js`);await i(r);let{getServer:a,setServer:o}=await import(`./store-KNXWdOK2.js`).then(e=>e.r),s=await a(r,t.fs);if(!s)return G(`mcp refresh: unknown server "${r}"`);let{McpClient:c,McpAuthRequiredError:l}=await import(`./client-CwxmlQM-.js`).then(e=>e.n),u=new c({url:s.url,fetchImpl:t.fetchImpl,headers:s.headers,getAuthHeader:s.auth?()=>nA(r):void 0});try{await u.initialize()}catch(e){if(e instanceof l)return G(`mcp refresh: server "${r}" returned 401 — token may have expired. Run \`mcp auth ${r}\` to re-authenticate.`);throw e}let d=await u.toolsList(),f=await u.appsList();await o(r,{...s,protocolVersion:u.getNegotiatedProtocolVersion(),tools:d,apps:f,lastRefreshedAt:new Date().toISOString()},t.fs);let p=await uA(r,f,t);return W(`Refreshed "${r}" — tools: ${d.length}, apps: ${f.length} (${p} sprinkle${p===1?``:`s`})\n`)}async function eA(e,t){if(w(e))return W(`usage: mcp auth <name> [--silent | --interactive]
1624
1633
 
1625
1634
  Re-authenticate an existing MCP server. By default, attempts a silent
1626
1635
  token renewal using the persisted refresh_token; if that returns no
@@ -1632,7 +1641,7 @@ Options:
1632
1641
  -i, --interactive Skip silent renewal and open the OAuth popup
1633
1642
  directly. Use after revoking a refresh token or
1634
1643
  when the AS no longer accepts the cached one.
1635
- `);let n=C(e,{bool:hk});if(`error`in n)return vk(n.error);let r=n.positionals[0];if(!r)return G(`mcp auth: expected <name>`);let i=n.bools.has(`--silent`)||n.bools.has(`-s`),a=n.bools.has(`--interactive`)||n.bools.has(`-i`);if(i&&a)return G(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:o}=await import(`./provider-Dv9W3IvY.js`),s=await o(r,{fetchImpl:t.oauthFetchImpl,launcher:t.oauthLauncher}),{getServer:c}=await import(`./store-DYTzgtEI.js`).then(e=>e.r),l=await c(r,t.fs);if(!l)return G(`mcp auth: unknown server "${r}" (run \`mcp list\` to see configured servers)`);if(!l.auth)return G(`mcp auth: server "${r}" does not use OAuth`);if(!s)return G(`mcp auth: failed to register provider for "${r}"`);let u=`mcp:${r}`,{getRegisteredProviderConfig:d}=await import(`./providers-DLk_1jra.js`).then(e=>e.r),f=d(u);if(!f)return G(`mcp auth: provider "${u}" is not registered`);if(a)return await Xk(r,f,t);if(!f.onSilentRenew)return i?G(`mcp auth: provider "${u}" does not support silent renewal; retry without --silent`):await Xk(r,f,t);let p=null;try{p=await f.onSilentRenew()}catch(e){let t=e instanceof Error?e.message:String(e);if(i)return G(`mcp auth: silent renewal for "${r}" failed (${t}); retry without --silent to run the interactive flow`);gk.debug(`mcp auth: silent renewal threw, falling back to interactive`,{name:r,error:t})}return p?W(`Re-authenticated "${r}" via silent renewal (provider ${u})\n`):i?G(`mcp auth: silent renewal for "${r}" returned no token; retry without --silent to run the interactive flow`):await Xk(r,f,t)}async function Xk(e,t,n){if(!t.onOAuthLogin)return G(`mcp auth: provider "${t.id}" does not support interactive OAuth login`);let r=n.oauthLauncher??await Qk(),i=!1;return await t.onOAuthLogin(r,()=>{i=!0}),i?W(`Re-authenticated "${e}" via interactive login (provider ${t.id})\n`):G(`mcp auth: interactive login for "${e}" did not complete`)}async function Zk(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await import(`./account-store-D0ciUU3U.js`).then(e=>e.t),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-DLk_1jra.js`).then(e=>e.r),n=await e(t)?.onSilentRenew?.();if(n)return`Bearer ${n}`}catch(e){gk.debug(`silent renewal threw`,{providerId:t,error:e instanceof Error?e.message:String(e)})}return null}return`Bearer ${r.token}`}async function Qk(){let{createOAuthLauncher:e}=await import(`./oauth-service-Dn_Xz1FZ.js`);return e()}async function $k(e){if(e)return e;let{createProxiedFetch:t}=await import(`./proxied-fetch-J19bK2dG.js`).then(e=>e.i),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function eA(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-TVcPtHbB.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DJXlpNui.js`).then(e=>e.n);return await t.create({dbName:n})}function tA(e){return`// MCP alias for "${e}" — forwards args to \`mcp invoke ${e}\`.
1644
+ `);let n=C(e,{bool:bk});if(`error`in n)return Ck(n.error);let r=n.positionals[0];if(!r)return G(`mcp auth: expected <name>`);let i=n.bools.has(`--silent`)||n.bools.has(`-s`),a=n.bools.has(`--interactive`)||n.bools.has(`-i`);if(i&&a)return G(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:o}=await import(`./provider-CSJRicyp.js`),s=await o(r,{fetchImpl:t.oauthFetchImpl,launcher:t.oauthLauncher}),{getServer:c}=await import(`./store-KNXWdOK2.js`).then(e=>e.r),l=await c(r,t.fs);if(!l)return G(`mcp auth: unknown server "${r}" (run \`mcp list\` to see configured servers)`);if(!l.auth)return G(`mcp auth: server "${r}" does not use OAuth`);if(!s)return G(`mcp auth: failed to register provider for "${r}"`);let u=`mcp:${r}`,{getRegisteredProviderConfig:d}=await import(`./providers-D8v7SVor.js`).then(e=>e.r),f=d(u);if(!f)return G(`mcp auth: provider "${u}" is not registered`);if(a)return await tA(r,f,t);if(!f.onSilentRenew)return i?G(`mcp auth: provider "${u}" does not support silent renewal; retry without --silent`):await tA(r,f,t);let p=null;try{p=await f.onSilentRenew()}catch(e){let t=e instanceof Error?e.message:String(e);if(i)return G(`mcp auth: silent renewal for "${r}" failed (${t}); retry without --silent to run the interactive flow`);xk.debug(`mcp auth: silent renewal threw, falling back to interactive`,{name:r,error:t})}return p?W(`Re-authenticated "${r}" via silent renewal (provider ${u})\n`):i?G(`mcp auth: silent renewal for "${r}" returned no token; retry without --silent to run the interactive flow`):await tA(r,f,t)}async function tA(e,t,n){if(!t.onOAuthLogin)return G(`mcp auth: provider "${t.id}" does not support interactive OAuth login`);let r=n.oauthLauncher??await rA(),i=!1;return await t.onOAuthLogin(r,()=>{i=!0}),i?W(`Re-authenticated "${e}" via interactive login (provider ${t.id})\n`):G(`mcp auth: interactive login for "${e}" did not complete`)}async function nA(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await import(`./account-store-C4KjAHlX.js`).then(e=>e.t),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-D8v7SVor.js`).then(e=>e.r),n=await e(t)?.onSilentRenew?.();if(n)return`Bearer ${n}`}catch(e){xk.debug(`silent renewal threw`,{providerId:t,error:e instanceof Error?e.message:String(e)})}return null}return`Bearer ${r.token}`}async function rA(){let{createOAuthLauncher:e}=await import(`./oauth-service-DP3Rx6V_.js`);return e()}async function iA(e){if(e)return e;let{createProxiedFetch:t}=await import(`./proxied-fetch-DXaTHROw.js`).then(e=>e.a),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function aA(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-BA8JNn5I.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DJXlpNui.js`).then(e=>e.n);return await t.create({dbName:n})}function oA(e){return`// MCP alias for "${e}" — forwards args to \`mcp invoke ${e}\`.
1636
1645
  // Auto-generated by \`mcp add ${e}\`; do not edit by hand.
1637
1646
  const { promisify } = require('util');
1638
1647
  const { exec } = require('child_process');
@@ -1661,8 +1670,8 @@ try {
1661
1670
  if (stdout) process.stdout.write(stdout);
1662
1671
  if (stderr) process.stderr.write(stderr);
1663
1672
  process.exit(exitCode);
1664
- `}async function nA(e,t){let n=await eA(t.fs);await n.mkdir(_k,{recursive:!0}),await n.writeFile(`${_k}/${e}.jsh`,tA(e)),t.scriptCatalog?.invalidateJsh()}async function rA(e,t){let n=await eA(t.fs),r=`${_k}/${e}.jsh`;try{await n.exists(r)&&await n.rm(r)}catch(e){gk.debug(`alias removal failed`,{path:r,error:e instanceof Error?e.message:String(e)})}t.scriptCatalog?.invalidateJsh()}async function iA(e,t){let{removeAppSprinkles:n}=await import(`./apps-C20mWJ8w.js`);await n(e,t.fs)}async function aA(e,t,n){try{let{materializeAppSprinkles:r}=await import(`./apps-C20mWJ8w.js`);return(await r(e,t,n.fs)).length}catch(t){return gk.warn(`mcp: failed to materialize app sprinkles`,{name:e,error:t instanceof Error?t.message:String(t)}),0}}function oA(e){return{stdout:``,stderr:`meminfo: ${e}\n`,exitCode:1}}function sA(e){if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`],n=e,r=`B`;for(let e of t){if(n<1024)break;n/=1024,r=e}return`${n.toFixed(1)} ${r}`}function cA(e){return e.attribution.length===0?`(shared)`:e.attribution.map(e=>{let t=e.container?.src??e.container?.id??e.url??`?`;return e.scope?`${e.scope} ${t}`:t}).join(`, `)}function lA(){let e=globalThis.performance,t=e?.measureUserAgentSpecificMemory;return t?t.bind(e):null}function uA(e){if(e[0]===`--help`||e[0]===`-h`||e[0]===`help`)return{help:!0};let t=!1;for(let n of e){if(n!==`--json`)return{error:`unknown option '${n}' — see \`meminfo --help\``};t=!0}return{help:!1,json:t}}function dA(e){let t=[`total: ${sA(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(`${sA(e.bytes).padEnd(10)} ${e.types.join(`,`).padEnd(20)} ${cA(e)}`)}return`${t.join(`
1665
- `)}\n`}function fA(e={}){return S(`meminfo`,async t=>{let n=uA(t);if(`error`in n)return oA(n.error);if(n.help)return{stdout:`meminfo - agent-cluster memory diagnostics
1673
+ `}async function sA(e,t){let n=await aA(t.fs);await n.mkdir(Sk,{recursive:!0}),await n.writeFile(`${Sk}/${e}.jsh`,oA(e)),t.scriptCatalog?.invalidateJsh()}async function cA(e,t){let n=await aA(t.fs),r=`${Sk}/${e}.jsh`;try{await n.exists(r)&&await n.rm(r)}catch(e){xk.debug(`alias removal failed`,{path:r,error:e instanceof Error?e.message:String(e)})}t.scriptCatalog?.invalidateJsh()}async function lA(e,t){let{removeAppSprinkles:n}=await import(`./apps-BwvRAJ2z.js`);await n(e,t.fs)}async function uA(e,t,n){try{let{materializeAppSprinkles:r}=await import(`./apps-BwvRAJ2z.js`);return(await r(e,t,n.fs)).length}catch(t){return xk.warn(`mcp: failed to materialize app sprinkles`,{name:e,error:t instanceof Error?t.message:String(t)}),0}}function dA(e){return{stdout:``,stderr:`meminfo: ${e}\n`,exitCode:1}}function fA(e){if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`],n=e,r=`B`;for(let e of t){if(n<1024)break;n/=1024,r=e}return`${n.toFixed(1)} ${r}`}function pA(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 mA(){let e=globalThis.performance,t=e?.measureUserAgentSpecificMemory;return t?t.bind(e):null}function hA(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 gA(e){let t=[`total: ${fA(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(`${fA(e.bytes).padEnd(10)} ${e.types.join(`,`).padEnd(20)} ${pA(e)}`)}return`${t.join(`
1674
+ `)}\n`}function _A(e={}){return S(`meminfo`,async t=>{let n=hA(t);if(`error`in n)return dA(n.error);if(n.help)return{stdout:`meminfo - agent-cluster memory diagnostics
1666
1675
 
1667
1676
  Usage:
1668
1677
  meminfo Human-readable breakdown (bytes, scope, types, url)
@@ -1673,8 +1682,8 @@ Notes:
1673
1682
  Document-Isolation-Policy). Embedded floats cannot be isolated and
1674
1683
  report why instead.
1675
1684
  - The browser randomizes measurement timing — expect a short delay.
1676
- `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??lA();if(!r&&!e.measure)return oA(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return oA(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return oA(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:dA(a),stderr:``,exitCode:0}})}function pA(e){return S(`memory`,async t=>{let{runMemory:n}=await import(`./run-Dl4OQ_Yd.js`);return n(t,e)})}function mA(){return S(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const hA=`/.cache/artificial-analysis.json`,gA=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],_A=[`--provider`];function vA(e){return{stdout:``,stderr:e.endsWith(`
1677
- `)?e:`${e}\n`,exitCode:1}}async function yA(e){try{let t=await e.readFile(hA),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}return null}function bA(){try{return localStorage.getItem(`aa_api_key`)}catch{return null}}function xA(e){return e.map(e=>{let t=e;return{slug:t.slug??``,name:t.name??``,creator_slug:t.model_creator?.slug??``,intelligence_index:t.evaluations?.artificial_analysis_intelligence_index??null,coding_index:t.evaluations?.artificial_analysis_coding_index??null,speed_tps:t.median_output_tokens_per_second??null}})}async function SA(e,t){let n={fetchedAt:Date.now(),models:t};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(hA,JSON.stringify(n))}catch{}}async function CA(e,t=!1){if(e&&!t){let t=await yA(e);if(t)return t}let n={Accept:`application/json`},r=bA();r&&(n[`x-api-key`]=r);let i=h(),a;try{a=await i(`https://artificialanalysis.ai/api/v2/data/llms/models`,{method:`GET`,headers:n})}catch{return[]}if(a.status===401||a.status<200||a.status>=300)return[];let o;try{o=JSON.parse(new TextDecoder().decode(a.body))}catch{return[]}if(typeof o!=`object`||!o)return[];let s=o,c=xA(Array.isArray(s)?s:s.data??s.models??[]);return e&&c.length>0&&await SA(e,c),c}function wA(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function TA(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=wA(e),a=t.find(e=>wA(e.slug)===i);if(a)return a;let o=t.filter(e=>n.includes(e.slug)||e.slug.includes(n));if(o.length!==0)return o.sort((e,t)=>t.slug.length-e.slug.length),o[0]}function EA(){return`models - list available LLM models
1685
+ `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??mA();if(!r&&!e.measure)return dA(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return dA(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return dA(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:gA(a),stderr:``,exitCode:0}})}function vA(e){return S(`memory`,async t=>{let{runMemory:n}=await import(`./run-BXEd2AF_.js`);return n(t,e)})}function yA(){return S(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const bA=`/.cache/artificial-analysis.json`,xA=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],SA=[`--provider`];function CA(e){return{stdout:``,stderr:e.endsWith(`
1686
+ `)?e:`${e}\n`,exitCode:1}}async function wA(e){try{let t=await e.readFile(bA),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}return null}function TA(){try{return localStorage.getItem(`aa_api_key`)}catch{return null}}function EA(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 DA(e,t){let n={fetchedAt:Date.now(),models:t};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(bA,JSON.stringify(n))}catch{}}async function OA(e,t=!1){if(e&&!t){let t=await wA(e);if(t)return t}let n={Accept:`application/json`},r=TA();r&&(n[`x-api-key`]=r);let i=p(),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=EA(Array.isArray(s)?s:s.data??s.models??[]);return e&&c.length>0&&await DA(e,c),c}function kA(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function AA(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=kA(e),a=t.find(e=>kA(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 jA(){return`models - list available LLM models
1678
1687
 
1679
1688
  Usage: models [options]
1680
1689
 
@@ -1686,14 +1695,14 @@ Options:
1686
1695
  --refresh Force re-fetch benchmark data from Artificial Analysis
1687
1696
  --no-benchmarks Skip benchmark data enrichment (faster, works offline)
1688
1697
  -h, --help Show this help message
1689
- `}function DA(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function OA(e){return`$${e.toFixed(2)}`}const kA=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function AA(e){let t=`${e.id} ${e.name??``}`;return!kA.test(t)}function jA(e){let t=e.match(/^(claude-(?:opus|sonnet|haiku))/);if(t)return t[1];let n=e.match(/^(gpt-\d+)(?:\.\d+)?(-[a-z][-a-z]*)?$/);if(n)return n[1]+(n[2]??``);let r=e.match(/^gemini-[\d.]+-(.+)$/);if(r)return`gemini-${r[1]}`;let i=e.match(/^gemini-(\d+)-(.+)$/);if(i)return`gemini-${i[2]}`;let a=e.match(/^grok-[\d.]+-([\w-]+)$/);if(a)return`grok-${a[1]}`;if(e.match(/^(grok)-[\d.]+$/))return`grok`;let o=e.match(/^(o\d+(?:-[a-z]+)?)(?:-\d.*)?$/);if(o)return o[1]}function MA(e){let t=e.toLowerCase();return t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``),jA(t)??t.replace(/-[\d.]+$/,``)}function NA(e){let t=new Map;for(let n of e){let e=MA(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function PA(e,t,n,r,i){let a=i?TA(e.id,i):void 0,o={id:e.id,name:e.name,provider:t,cost:e.cost??{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:e.contextWindow??0,maxTokens:e.maxTokens??0,reasoning:!!e.reasoning,input:e.input??[`text`],selected:e.id===n&&t===r};return a?.intelligence_index!=null&&(o.intelligence=a.intelligence_index),a?.coding_index!=null&&(o.codingScore=a.coding_index),a?.speed_tps!=null&&(o.speed=a.speed_tps),o}function FA(e,t,n,r){let i=[];i.push(`Models for "${e}" (${t}):\n`);for(let e of n){let t=e.selected?` ► `:` `,n=e.id.padEnd(30),r=`${OA(e.cost.input)} / ${OA(e.cost.output)}`,a=`${DA(e.contextWindow)} ctx`,o=e.intelligence==null?``:`IQ:${e.intelligence}`,s=e.speed==null?``:`${Math.round(e.speed)} t/s`,c=e.reasoning?`reasoning`:``,l=o||s?`${o.padEnd(6)} ${s.padEnd(8)}`:``;i.push(`${t}${n} ${r.padEnd(16)} ${a.padEnd(10)} ${l} ${c}`)}return i.push(`\n ${n.length} model${n.length===1?``:`s`} available.`),r&&i.push(` Intelligence data: artificialanalysis.ai`),i.join(`
1698
+ `}function MA(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function NA(e){return`$${e.toFixed(2)}`}const PA=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function FA(e){let t=`${e.id} ${e.name??``}`;return!PA.test(t)}function IA(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 LA(e){let t=e.toLowerCase();return t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``),IA(t)??t.replace(/-[\d.]+$/,``)}function RA(e){let t=new Map;for(let n of e){let e=LA(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function zA(e,t,n,r,i){let a=i?AA(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 BA(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=`${NA(e.cost.input)} / ${NA(e.cost.output)}`,a=`${MA(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(`
1690
1699
  `)+`
1691
- `}function IA(e){let t=C(e,{bool:gA,value:_A});return`error`in t?t:{jsonMode:t.bools.has(`--json`),allMode:t.bools.has(`--all`),allVersions:t.bools.has(`--all-versions`),forceRefresh:t.bools.has(`--refresh`),noBenchmarks:t.bools.has(`--no-benchmarks`),explicitProvider:t.values.get(`--provider`)}}function LA(e,t,n){if(t.explicitProvider){let n=e.getAvailableProviders();return n.includes(t.explicitProvider)?[t.explicitProvider]:{error:`Unknown provider: ${t.explicitProvider}. Available: ${n.join(`, `)}\n`}}return t.allMode?[...new Set(e.getAccounts().map(e=>e.providerId))]:[n]}function RA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(AA);if(o.length===0)return[];let s=o.map(e=>PA(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=NA(s)),s}function zA(e,t,n,r){let i=`${e}:${t}`,a=`${n}:${r}`;return i===a?`Currently using: ${i}\n`:`Currently using: ${i} (selected ${a} — resolved to a different model)\n`}async function BA(e,t){if(w(e,{valueFlags:_A}))return{stdout:EA(),stderr:``,exitCode:0};let n=IA(e);if(`error`in n)return vA(`models: ${n.error}`);let r=await import(`./account-store-D0ciUU3U.js`).then(e=>e.t);if(r.getAccounts().length===0)return vA(`No provider accounts configured. Run the provider settings to add one.
1692
- `);let i=r.resolveCurrentModel(),a=i.id,o=i.provider,s=r.getSelectedProvider(),c=r.getSelectedModelId(),l;if(!n.noBenchmarks){let e=await CA(t,n.forceRefresh);e.length>0&&(l=e)}let u=LA(r,n,s);if(`error`in u)return vA(u.error);let d=[],f=[];for(let e of u){let t=RA(r,e,a,o,l,n.allVersions);if(t.length===0){if(!n.allMode)return vA(`No models available for provider ${e}.\n`);continue}if(d.push(...t),!n.jsonMode){let n=r.getProviderConfig(e);f.push(FA(n.name,e,t,!!l))}}return n.jsonMode?{stdout:JSON.stringify(d,null,2)+`
1700
+ `}function VA(e){let t=C(e,{bool:xA,value:SA});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 UA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(FA);if(o.length===0)return[];let s=o.map(e=>zA(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=RA(s)),s}function WA(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 GA(e,t){if(w(e,{valueFlags:SA}))return{stdout:jA(),stderr:``,exitCode:0};let n=VA(e);if(`error`in n)return CA(`models: ${n.error}`);let r=await import(`./account-store-C4KjAHlX.js`).then(e=>e.t);if(r.getAccounts().length===0)return CA(`No provider accounts configured. Run the provider settings to add one.
1701
+ `);let i=r.resolveCurrentModel(),a=i.id,o=i.provider,s=r.getSelectedProvider(),c=r.getSelectedModelId(),l;if(!n.noBenchmarks){let e=await OA(t,n.forceRefresh);e.length>0&&(l=e)}let u=HA(r,n,s);if(`error`in u)return CA(u.error);let d=[],f=[];for(let e of u){let t=UA(r,e,a,o,l,n.allVersions);if(t.length===0){if(!n.allMode)return CA(`No models available for provider ${e}.\n`);continue}if(d.push(...t),!n.jsonMode){let n=r.getProviderConfig(e);f.push(BA(n.name,e,t,!!l))}}return n.jsonMode?{stdout:JSON.stringify(d,null,2)+`
1693
1702
  `,stderr:``,exitCode:0}:(n.allVersions||f.push(`Showing latest versions only. Use --all-versions to see all.
1694
- `),f.push(zA(o,a,s,c)),{stdout:f.join(`
1695
- `),stderr:``,exitCode:0})}function VA(e){return S(`models`,async t=>BA(t,e))}const HA=new Set([`-`,`/dev/stdin`,`/dev/fd/0`,`/proc/self/fd/0`]);function UA(e){return e===`-e`||e===`--eval`||HA.has(e)||!e.startsWith(`-`)}function WA(e){return{stdout:``,stderr:`node: ${e} is not a valid value for --input-type. Valid values are: 'commonjs' or 'module'.\n`,exitCode:9}}function GA(e,t,n){let r=e.startsWith(`--input-type=`),i=r?e.slice(13):t,a=r?n+1:n+2;return i===void 0?{nextIndex:n+1,error:{stdout:``,stderr:`node: option --input-type requires an argument
1696
- `,exitCode:9}}:i!==`module`&&i!==`commonjs`?{nextIndex:a,error:WA(i)}:{inputType:i,nextIndex:a}}function KA(e){let t=!1,n=!1,r=!1,i,a=0;for(;a<e.length;){let o=e[a];if(UA(o))break;if(o===`-h`||o===`--help`){t=!0,a+=1;continue}if(o===`-v`||o===`--version`){n=!0,a+=1;continue}if(o===`-c`||o===`--check`){r=!0,a+=1;continue}if(o===`--input-type`||o.startsWith(`--input-type=`)){let s=GA(o,e[a+1],a);if(s.error)return{help:t,version:n,check:r,inputType:i,sourceIndex:s.nextIndex,error:s.error};i=s.inputType,a=s.nextIndex;continue}return{help:t,version:n,check:r,inputType:i,sourceIndex:a,error:{stdout:``,stderr:`node: unsupported option '${o}'\n`,exitCode:9}}}return{help:t,version:n,check:r,inputType:i,sourceIndex:a}}function qA(){return{stdout:`usage: node [options] [script.js] [args...]
1703
+ `),f.push(WA(o,a,s,c)),{stdout:f.join(`
1704
+ `),stderr:``,exitCode:0})}function KA(e){return S(`models`,async t=>GA(t,e))}const qA=new Set([`-`,`/dev/stdin`,`/dev/fd/0`,`/proc/self/fd/0`]);function JA(e){return e===`-e`||e===`--eval`||qA.has(e)||!e.startsWith(`-`)}function YA(e){return{stdout:``,stderr:`node: ${e} is not a valid value for --input-type. Valid values are: 'commonjs' or 'module'.\n`,exitCode:9}}function XA(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
1705
+ `,exitCode:9}}:i!==`module`&&i!==`commonjs`?{nextIndex:a,error:YA(i)}:{inputType:i,nextIndex:a}}function ZA(e){let t=!1,n=!1,r=!1,i,a=0;for(;a<e.length;){let o=e[a];if(JA(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=XA(o,e[a+1],a);if(s.error)return{help:t,version:n,check:r,inputType:i,sourceIndex:s.nextIndex,error:s.error};i=s.inputType,a=s.nextIndex;continue}return{help:t,version:n,check:r,inputType:i,sourceIndex:a,error:{stdout:``,stderr:`node: unsupported option '${o}'\n`,exitCode:9}}}return{help:t,version:n,check:r,inputType:i,sourceIndex:a}}function QA(){return{stdout:`usage: node [options] [script.js] [args...]
1697
1706
  node [options] -e <code> [args...]
1698
1707
 
1699
1708
  Options:
@@ -1702,20 +1711,20 @@ Options:
1702
1711
  --input-type=TYPE module or commonjs (stdin / -e / .js)
1703
1712
  -h, --help print this help
1704
1713
  -v, --version print Node shim version
1705
- `,stderr:``,exitCode:0}}function JA(){return{stdout:`${ir}\n`,stderr:``,exitCode:0}}function YA(e,t){if(t){if(e.endsWith(`.mjs`)&&t===`commonjs`)return{stdout:``,stderr:`node: cannot set --input-type=commonjs for a .mjs file
1714
+ `,stderr:``,exitCode:0}}function $A(){return{stdout:`${ar}\n`,stderr:``,exitCode:0}}function ej(e,t){if(t){if(e.endsWith(`.mjs`)&&t===`commonjs`)return{stdout:``,stderr:`node: cannot set --input-type=commonjs for a .mjs file
1706
1715
  `,exitCode:9};if(e.endsWith(`.cjs`)&&t===`module`)return{stdout:``,stderr:`node: cannot set --input-type=module for a .cjs file
1707
- `,exitCode:9}}}function XA(e,t){if(!e.startsWith(`/`))return t;let n=e.lastIndexOf(`/`);return n<=0?`/`:e.slice(0,n)}function ZA(e){return e instanceof Error?e.stack??e.message:String(e)}async function QA(e,t,n){if(!(Yn(e)||dr(e)||t.endsWith(`.mjs`)))return e;try{return(await(await qr()).transform(e,{loader:`js`,format:`cjs`,sourcefile:`${t.replace(/\.[^./]+$/,``)}.js`,supported:{"dynamic-import":!1}})).code}catch(r){if(!/top-level await/i.test(ZA(r)))throw r;return Kr()({source:e,filename:t,fromDir:XA(t,n)})}}async function $A(e,t,n){let r=e;try{r=await QA(e,t,n)}catch(e){return{stdout:``,stderr:`${ZA(e)}\n`,exitCode:1}}try{let e=Object.getPrototypeOf(async function(){}).constructor;return new e(r),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`${ZA(e)}\n`,exitCode:1}}}async function ej(e,t){if(e.length>0&&(e[0]===`-e`||e[0]===`--eval`))return e[1]?{kind:`ok`,code:e[1],filename:`[eval]`,argv:[`node`,...e.slice(2)],innerCtx:t}:{kind:`result`,result:{stdout:``,stderr:`node: option requires an argument -- eval
1708
- `,exitCode:9}};if(e.length>0&&HA.has(e[0]))return{kind:`ok`,code:P(t.stdin),filename:`<stdin>`,argv:[`node`,e[0],...e.slice(1)],innerCtx:{...t,stdin:``}};if(e.length>0&&!e[0].startsWith(`-`)){let n=e[0],r=t.fs.resolvePath(t.cwd,n);return await t.fs.exists(r)?{kind:`ok`,code:await t.fs.readFile(r),filename:r,argv:[`node`,r,...e.slice(1)],innerCtx:t}:{kind:`result`,result:{stdout:``,stderr:`node: cannot find module '${n}'\n`,exitCode:1}}}return P(t.stdin).trim().length>0?{kind:`ok`,code:P(t.stdin),filename:`<stdin>`,argv:[`node`],innerCtx:{...t,stdin:``}}:e.length>0?{kind:`result`,result:{stdout:``,stderr:`node: unsupported option '${e[0]}'\n`,exitCode:9}}:{kind:`result`,result:{stdout:``,stderr:`node: REPL mode is not supported in this environment; use node -e "code"
1709
- `,exitCode:9}}}function tj(e={},t=`node`){return{name:t,trusted:!0,async execute(t,n){let r=KA(t);if(r.error)return r.error;if(r.help)return qA();if(r.version)return JA();let i=await ej(t.slice(r.sourceIndex),n);if(i.kind===`result`)return r.check&&i.result.exitCode===9&&t.slice(r.sourceIndex).length===0?{stdout:``,stderr:`node: -c/--check requires a filename or -e CODE
1710
- `,exitCode:9}:i.result;let{code:a,filename:o,argv:s,innerCtx:c}=i,l=YA(o,r.inputType);if(l)return l;let u=Wr(a);return r.check?$A(u,o,n.cwd):Hr(u,s,c,e.buildProcessConfig?.(n.env),{filename:o})}}}const nj=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];async function rj(){try{let e=await navigator.serviceWorker?.getRegistrations?.();e&&await Promise.all(e.map(e=>e.unregister().catch(()=>!1)))}catch{}try{let e=await indexedDB.databases();await Promise.all(e.filter(e=>!!e.name).map(e=>new Promise(t=>{let n=indexedDB.deleteDatabase(e.name);n.onsuccess=()=>t(),n.onerror=()=>t(),n.onblocked=()=>t()})))}catch{}try{let e=navigator.storage;if(typeof e?.getDirectory==`function`){let t=await e.getDirectory(),n=[];for await(let e of t.keys())n.push(e);await Promise.all(n.map(e=>t.removeEntry(e,{recursive:!0}).catch(()=>{})))}}catch{}}const ij=[],aj=[`--yes`];function oj(){return S(`nuke`,async e=>{if(w(e,{valueFlags:ij}))return{stdout:`Usage: nuke <launch-code>
1716
+ `,exitCode:9}}}function tj(e,t){if(!e.startsWith(`/`))return t;let n=e.lastIndexOf(`/`);return n<=0?`/`:e.slice(0,n)}function nj(e){return e instanceof Error?e.stack??e.message:String(e)}async function rj(e,t,n){if(!(Xn(e)||fr(e)||t.endsWith(`.mjs`)))return e;try{return(await(await Jr()).transform(e,{loader:`js`,format:`cjs`,sourcefile:`${t.replace(/\.[^./]+$/,``)}.js`,supported:{"dynamic-import":!1}})).code}catch(r){if(!/top-level await/i.test(nj(r)))throw r;return qr()({source:e,filename:t,fromDir:tj(t,n)})}}async function ij(e,t,n){let r=e;try{r=await rj(e,t,n)}catch(e){return{stdout:``,stderr:`${nj(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:`${nj(e)}\n`,exitCode:1}}}async function aj(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
1717
+ `,exitCode:9}};if(e.length>0&&qA.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"
1718
+ `,exitCode:9}}}function oj(e={},t=`node`){return{name:t,trusted:!0,async execute(t,n){let r=ZA(t);if(r.error)return r.error;if(r.help)return QA();if(r.version)return $A();let i=await aj(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
1719
+ `,exitCode:9}:i.result;let{code:a,filename:o,argv:s,innerCtx:c}=i,l=ej(o,r.inputType);if(l)return l;let u=Gr(a);return r.check?ij(u,o,n.cwd):Ur(u,s,c,e.buildProcessConfig?.(n.env),{filename:o})}}}const sj=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];async function cj(){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 lj=[],uj=[`--yes`];function dj(){return S(`nuke`,async e=>{if(w(e,{valueFlags:lj}))return{stdout:`Usage: nuke <launch-code>
1711
1720
 
1712
1721
  Completely reset the environment by deleting all local data and reloading.
1713
1722
  Destroys the file system, chat history, and scoops database.
1714
1723
  Requires the secret launch code to proceed.
1715
- `,stderr:``,exitCode:0};let t=C(e,{value:ij,bool:aj});return`error`in t?{stdout:``,stderr:`nuke: ${t.error}\n`,exitCode:1}:t.positionals.join(``).includes(`1234`)?((async()=>{await rj(),sj(nj)})(),{stdout:`Nuking everything…
1724
+ `,stderr:``,exitCode:0};let t=C(e,{value:lj,bool:uj});return`error`in t?{stdout:``,stderr:`nuke: ${t.error}\n`,exitCode:1}:t.positionals.join(``).includes(`1234`)?((async()=>{await cj(),fj(sj)})(),{stdout:`Nuking everything…
1716
1725
  `,stderr:``,exitCode:0}):{stdout:``,stderr:`⚠️ WARNING: this will reset the entire environment, file system, chats, and scoops.
1717
1726
  Run nuke again with the secret launch code to proceed.
1718
- `,exitCode:1}})}function sj(e=[]){let t=[...e];try{if(typeof BroadcastChannel==`function`){let e=new BroadcastChannel(`slicc-nuke-control`);e.postMessage({type:`nuke-reload`,keysToRemove:t}),setTimeout(()=>e.close(),100)}}catch{}for(let e of t)try{globalThis.localStorage?.removeItem(e)}catch{}try{globalThis.location?.reload?.()}catch{}}function cj(){return`oauth-domain — manage extra allowed domains for OAuth-issued tokens
1727
+ `,exitCode:1}})}function fj(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 pj(){return`oauth-domain — manage extra allowed domains for OAuth-issued tokens
1719
1728
 
1720
1729
  Usage:
1721
1730
  oauth-domain list List extra domains for every provider
@@ -1740,13 +1749,13 @@ Examples:
1740
1749
  oauth-domain add adobe '*.da.live'
1741
1750
  oauth-domain list adobe
1742
1751
  oauth-domain remove adobe admin.da.live
1743
- `}function lj(e){return{stdout:``,stderr:`oauth-domain: ${e}\n`,exitCode:1}}function uj(e,t){if(t){let n=e.getExtraOAuthDomains(t);return n.length===0?{stdout:`(no extra domains configured for ${t})\n`,stderr:``,exitCode:0}:{stdout:`${n.join(`
1752
+ `}function mj(e){return{stdout:``,stderr:`oauth-domain: ${e}\n`,exitCode:1}}function hj(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(`
1744
1753
  `)}\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)
1745
1754
  `,stderr:``,exitCode:0}:{stdout:`${n.map(([e,t])=>`${e}: ${t.join(`, `)}`).join(`
1746
- `)}\n`,stderr:``,exitCode:0}}async function dj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain add: requires <providerId> and <domain>
1747
- `,exitCode:1};let r=e.getExtraOAuthDomains(t),i=n.toLowerCase();return r.some(e=>e.toLowerCase()===i)?{stdout:`(${n} already in ${t} extras)\n`,stderr:``,exitCode:0}:(await e.setExtraOAuthDomainsAsync(t,[...r,n]),{stdout:`Added ${n} to ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0})}async function fj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain remove: requires <providerId> and <domain>
1748
- `,exitCode:1};let r=e.getExtraOAuthDomains(t),i=n.toLowerCase(),a=r.filter(e=>e.toLowerCase()!==i);return a.length===r.length?{stdout:`(${n} not found in ${t} extras)\n`,stderr:``,exitCode:0}:(await e.setExtraOAuthDomainsAsync(t,a),{stdout:`Removed ${n} from ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0})}async function pj(e,t){return t?(await e.setExtraOAuthDomainsAsync(t,[]),{stdout:`Cleared extra domains for ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0}):{stdout:``,stderr:`oauth-domain clear: requires <providerId>
1749
- `,exitCode:1}}async function mj(e,t,n,r){switch(t){case`list`:return uj(e,n);case`add`:return dj(e,n,r);case`remove`:return fj(e,n,r);case`clear`:return pj(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${cj()}`,exitCode:1}}}function hj(){return S(`oauth-domain`,async e=>{if(e.length===0||w(e))return{stdout:cj(),stderr:``,exitCode:0};let t=C(e);if(`error`in t)return lj(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-D0ciUU3U.js`).then(e=>e.t);try{return await mj(a,n,r,i)}catch(e){return lj(e instanceof Error?e.message:String(e))}})}function gj(){return S(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-CH8M889A.js`);return n(e,t)})}const _j=[`--download`,`-d`,`--view`,`-v`],vj=[`--size`],yj={low:256,medium:768,high:1536};function bj(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1755
+ `)}\n`,stderr:``,exitCode:0}}async function gj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain add: requires <providerId> and <domain>
1756
+ `,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 _j(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain remove: requires <providerId> and <domain>
1757
+ `,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 vj(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>
1758
+ `,exitCode:1}}async function yj(e,t,n,r){switch(t){case`list`:return hj(e,n);case`add`:return gj(e,n,r);case`remove`:return _j(e,n,r);case`clear`:return vj(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${pj()}`,exitCode:1}}}function bj(){return S(`oauth-domain`,async e=>{if(e.length===0||w(e))return{stdout:pj(),stderr:``,exitCode:0};let t=C(e);if(`error`in t)return mj(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-C4KjAHlX.js`).then(e=>e.t);try{return await yj(a,n,r,i)}catch(e){return mj(e instanceof Error?e.message:String(e))}})}function xj(){return S(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-C4WiYwhE.js`);return n(e,t)})}const Sj=[`--download`,`-d`,`--view`,`-v`],Cj=[`--size`],wj={low:256,medium:768,high:1536};function Tj(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1750
1759
 
1751
1760
  VFS paths are served in a new browser tab via the preview service worker.
1752
1761
  URLs (http/https/etc.) are opened directly in a new tab.
@@ -1760,19 +1769,19 @@ Examples:
1760
1769
  medium (768x768), high (1536x1536), or a custom WxH
1761
1770
  box like 512x512. The image is fit inside the box
1762
1771
  with aspect ratio preserved and is never upscaled.
1763
- `,stderr:``,exitCode:0}}function xj(e){if(e in yj){let t=yj[e];return{maxW:t,maxH:t}}let t=/^(\d+)x(\d+)$/.exec(e);if(t){let e=parseInt(t[1],10),n=parseInt(t[2],10);if(e>0&&n>0)return{maxW:e,maxH:n}}return null}function Sj(e,t){if(t===`image/png`||t===`image/apng`){if(e.length<26)return!1;let t=e[25];return t===4||t===6}if(t===`image/webp`){if(e.length<16)return!1;let t=String.fromCharCode(e[12],e[13],e[14],e[15]);return t===`VP8L`?!0:t===`VP8X`?e.length<21?!1:!!(e[20]&16):!1}return!1}function Cj(){return`open --view requires --size to bound the inlined image. Use one of:
1772
+ `,stderr:``,exitCode:0}}function Ej(e){if(e in wj){let t=wj[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 Dj(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 Oj(){return`open --view requires --size to bound the inlined image. Use one of:
1764
1773
  --size low (256x256)
1765
1774
  --size medium (768x768)
1766
1775
  --size high (1536x1536)
1767
1776
  --size WxH (custom box, e.g. 512x512)
1768
- `}const wj=new Set([`image/png`,`image/webp`]);function Tj(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}async function Ej(e,t){let n=Tj(e),r=new Blob([n],{type:t}),i=await createImageBitmap(r);try{return{width:i.width,height:i.height}}finally{i.close?.()}}async function Dj(e,t,n,r){let i=Tj(e),a=new Blob([i],{type:t}),o=await createImageBitmap(a);try{let i=o.width,a=o.height,s=Math.min(n/i,r/a,1),c=Math.max(1,Math.round(i*s)),l=Math.max(1,Math.round(a*s)),u=new OffscreenCanvas(c,l),d=u.getContext(`2d`);if(!d)throw Error(`failed to acquire 2d context for resize`);d.drawImage(o,0,0,c,l);let f=Sj(e,t)?wj.has(t)?t:`image/png`:`image/jpeg`,p=await u.convertToBlob(f===`image/jpeg`?{type:`image/jpeg`,quality:.85}:{type:f});return{bytes:new Uint8Array(await p.arrayBuffer()),mime:f,width:c,height:l,nativeWidth:i,nativeHeight:a}}finally{o.close?.()}}function Oj(e){let t=C(e,{bool:_j,value:vj});if(`error`in t)return{error:`open: ${t.error}`};let n=t.values.get(`--size`);return n?.startsWith(`-`)&&n!==`-`?{error:`open: unknown flag: ${n}`}:{download:t.bools.has(`--download`)||t.bools.has(`-d`),view:t.bools.has(`--view`)||t.bools.has(`-v`),sizeSpec:n,targets:t.positionals}}function kj(e){return{ok:!0,message:e}}function K(e){return{ok:!1,result:{stdout:``,stderr:e,exitCode:1}}}function Aj(e){return e?` (targetId: ${e})`:``}function jj(e,t,n){return async r=>{if(e)return e.createPage(r);if(t){window.open(r,`_blank`,`noopener,noreferrer`);return}try{await n.call(`window-open`,{url:r,target:`_blank`,features:`noopener,noreferrer`})}catch(e){throw Error(`open: ${e instanceof Error?e.message:String(e)}`)}}}async function Mj(e,t,n,r,i){let a=t.fs.resolvePath(t.cwd,e);if(n){let e=(a.split(`/`).pop()??``).replace(/\.shtml$/,``);try{return await n.open(e),kj(`opened sprinkle ${e} from ${a}`)}catch(e){return K(`open: ${e instanceof Error?e.message:String(e)}\n`)}}if(r){let e=await Xn(t.fs,ar(a)),n=Dr(a,e),r;try{r=await i(n)}catch(e){return K(`${e instanceof Error?e.message:String(e)}\n`)}return kj(`opened ${a} → ${n}${Aj(r)}`)}return K(`open: sprinkle manager not initialized
1769
- `)}async function Nj(e,t,n){if(!t)return K(`open: browser APIs are unavailable in this environment
1770
- `);let r;try{r=await n(e)}catch(e){return K(`${e instanceof Error?e.message:String(e)}\n`)}return kj(`opened ${e}${Aj(r)}`)}async function Pj(e,n,r,i){let a;try{a=await r.fs.stat(n)}catch{return K(`open: no such file: ${e}\n`)}if(!a.isFile)return K(`open: not a file: ${e}\n`);let o;try{o=await r.fs.readFileBuffer(n)}catch{return K(`open: failed to read: ${e}\n`)}let s=Jn(n),c=new Uint8Array(o),l=null;if(i!==void 0&&(l=xj(i),!l))return K(`open: invalid --size spec '${i}' (expected low|medium|high or WxH such as 512x512)\n`);if(!l){let t;try{t=await Ej(c,s)}catch(t){return K(`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 K(`open --view: ${n} is ${t.width}x${t.height} (${r} KB, ${s})\n`+Cj())}let u;try{u=await Dj(c,s,l.maxW,l.maxH)}catch(t){return K(`open: not an image or failed to decode: ${e} (${t instanceof Error?t.message:String(t)})\n`)}let d=t(u.bytes),f=Math.round(u.bytes.byteLength/1024);return kj(`${n} (${u.nativeWidth}x${u.nativeHeight} → ${u.width}x${u.height}, ${f} KB, ${u.mime})\n<img:data:${u.mime};base64,${d}>`)}async function Fj(e,t,n,r){if(!r)return K(`open: --download requires the in-panel terminal (DOM-only)
1771
- `);let i;try{i=await n.fs.stat(t)}catch{return K(`open: no such file: ${e}\n`)}if(!i.isFile)return K(`open: not a file: ${e}\n`);let a;try{a=await n.fs.readFileBuffer(t)}catch{return K(`open: failed to read: ${e}\n`)}let o=new Uint8Array(a.byteLength);o.set(a);let s=new Blob([o.buffer],{type:Jn(t)}),c=URL.createObjectURL(s),l=document.createElement(`a`);return l.href=c,l.download=er(t)||`download`,l.style.display=`none`,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(c),0),kj(`downloaded ${t}`)}async function Ij(e,t,n,r){if(!n)return K(`open: browser APIs are unavailable in this environment
1772
- `);let i=!1;try{i=(await t.fs.stat(e)).isDirectory}catch{}let a=await Xn(t.fs,i?e:ar(e)),o=Dr(e,a),s;try{s=await r(o)}catch(e){return K(`${e instanceof Error?e.message:String(e)}\n`)}return kj(`opened ${e} → ${o}${Aj(s)}`)}async function Lj(e,t,n,r){if(!Qn(e)&&e.endsWith(`.shtml`)&&t.fs)return Mj(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return K(`open: browser APIs are unavailable in this environment
1773
- `);if(Qn(e))return Nj(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?Pj(e,i,t,n.sizeSpec):n.download?Fj(e,i,t,r.hasDom):Ij(i,t,r.canOpenWindow,r.openExternal)}function Rj(e){return S(`open`,async(t,n)=>{if(t.length===0||w(t,{valueFlags:vj}))return bj();let r=Oj(t);if(`error`in r)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{download:i,view:a,sizeSpec:o,targets:s}=r;if(s.length===0)return bj();let c=globalThis.__slicc_sprinkleManager,l=typeof window<`u`&&typeof document<`u`,u=l?null:y(),d={canOpenWindow:!!e||l||!!u,hasDom:l,sprinkleManager:c,openExternal:jj(e,l,u)},f=[];for(let e of s){let t=await Lj(e,n,{view:a,download:i,sizeSpec:o},d);if(!t.ok)return t.result;f.push(t.message)}return{stdout:f.join(`
1777
+ `}const kj=new Set([`image/png`,`image/webp`]);function Aj(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}async function jj(e,t){let n=Aj(e),r=new Blob([n],{type:t}),i=await createImageBitmap(r);try{return{width:i.width,height:i.height}}finally{i.close?.()}}async function Mj(e,t,n,r){let i=Aj(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=Dj(e,t)?kj.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 Nj(e){let t=C(e,{bool:Sj,value:Cj});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 Pj(e){return{ok:!0,message:e}}function K(e){return{ok:!1,result:{stdout:``,stderr:e,exitCode:1}}}function Fj(e){return e?` (targetId: ${e})`:``}function Ij(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 Lj(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),Pj(`opened sprinkle ${e} from ${a}`)}catch(e){return K(`open: ${e instanceof Error?e.message:String(e)}\n`)}}if(r){let e=await Zn(t.fs,or(a)),n=Or(a,e),r;try{r=await i(n)}catch(e){return K(`${e instanceof Error?e.message:String(e)}\n`)}return Pj(`opened ${a} → ${n}${Fj(r)}`)}return K(`open: sprinkle manager not initialized
1778
+ `)}async function Rj(e,t,n){if(!t)return K(`open: browser APIs are unavailable in this environment
1779
+ `);let r;try{r=await n(e)}catch(e){return K(`${e instanceof Error?e.message:String(e)}\n`)}return Pj(`opened ${e}${Fj(r)}`)}async function zj(e,n,r,i){let a;try{a=await r.fs.stat(n)}catch{return K(`open: no such file: ${e}\n`)}if(!a.isFile)return K(`open: not a file: ${e}\n`);let o;try{o=await r.fs.readFileBuffer(n)}catch{return K(`open: failed to read: ${e}\n`)}let s=Yn(n),c=new Uint8Array(o),l=null;if(i!==void 0&&(l=Ej(i),!l))return K(`open: invalid --size spec '${i}' (expected low|medium|high or WxH such as 512x512)\n`);if(!l){let t;try{t=await jj(c,s)}catch(t){return K(`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 K(`open --view: ${n} is ${t.width}x${t.height} (${r} KB, ${s})\n`+Oj())}let u;try{u=await Mj(c,s,l.maxW,l.maxH)}catch(t){return K(`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 Pj(`${n} (${u.nativeWidth}x${u.nativeHeight} → ${u.width}x${u.height}, ${f} KB, ${u.mime})\n<img:data:${u.mime};base64,${d}>`)}async function Bj(e,t,n,r){if(!r)return K(`open: --download requires the in-panel terminal (DOM-only)
1780
+ `);let i;try{i=await n.fs.stat(t)}catch{return K(`open: no such file: ${e}\n`)}if(!i.isFile)return K(`open: not a file: ${e}\n`);let a;try{a=await n.fs.readFileBuffer(t)}catch{return K(`open: failed to read: ${e}\n`)}let o=new Uint8Array(a.byteLength);o.set(a);let s=new Blob([o.buffer],{type:Yn(t)}),c=URL.createObjectURL(s),l=document.createElement(`a`);return l.href=c,l.download=tr(t)||`download`,l.style.display=`none`,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(c),0),Pj(`downloaded ${t}`)}async function Vj(e,t,n,r){if(!n)return K(`open: browser APIs are unavailable in this environment
1781
+ `);let i=!1;try{i=(await t.fs.stat(e)).isDirectory}catch{}let a=await Zn(t.fs,i?e:or(e)),o=Or(e,a),s;try{s=await r(o)}catch(e){return K(`${e instanceof Error?e.message:String(e)}\n`)}return Pj(`opened ${e} → ${o}${Fj(s)}`)}async function Hj(e,t,n,r){if(!$n(e)&&e.endsWith(`.shtml`)&&t.fs)return Lj(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return K(`open: browser APIs are unavailable in this environment
1782
+ `);if($n(e))return Rj(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?zj(e,i,t,n.sizeSpec):n.download?Bj(e,i,t,r.hasDom):Vj(i,t,r.canOpenWindow,r.openExternal)}function Uj(e){return S(`open`,async(t,n)=>{if(t.length===0||w(t,{valueFlags:Cj}))return Tj();let r=Nj(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 Tj();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:Ij(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(`
1774
1783
  `)+`
1775
- `,stderr:``,exitCode:0}})}function zj(){return S(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-CW0-cog1.js`);return n(e,t)})}function Bj(e=`pdftk`){return S(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function Vj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1784
+ `,stderr:``,exitCode:0}})}function Wj(){return S(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-BUYahz7i.js`);return n(e,t)})}function Gj(e=`pdftk`){return S(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function Kj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1776
1785
 
1777
1786
  Rasterize PDF pages to images. Writes <prefix>-<n>.<ext> per page, where <n>
1778
1787
  is zero-padded to the digit width of the last page (out-1.png for a 9-page
@@ -1799,8 +1808,8 @@ Examples:
1799
1808
  pdftoppm -png -r 150 doc.pdf page
1800
1809
  pdftoppm -jpeg -jpegopt quality=80 -f 1 -l 3 doc.pdf out
1801
1810
  pdftoppm -png -singlefile -scale-to 1024 doc.pdf cover
1802
- `,stderr:``,exitCode:0}}function Hj(e,t){if(e===void 0)throw Error(`missing argument for ${t}`);let n=Number(e);if(!Number.isFinite(n)||!Number.isInteger(n)||n<=0)throw Error(`invalid ${t} value: ${e}`);return n}function Uj(e){if(e===void 0)throw Error(`missing argument for -jpegopt`);for(let t of e.split(`,`)){let[e,n]=t.split(`=`);if(e?.trim()!==`quality`)continue;let r=Number(n);if(!Number.isFinite(r)||r<0||r>100)throw Error(`invalid -jpegopt quality: ${n}`);return r}throw Error(`unsupported -jpegopt: ${e}`)}function Wj(e){let t=`png`,n=150,r,i,a,o,s,c,l=!1,u=[];for(let d=0;d<e.length;d++){let f=e[d];switch(f){case`-png`:t=`png`;break;case`-jpeg`:t=`jpeg`;break;case`-jpegopt`:c=Uj(e[++d]),t=`jpeg`;break;case`-r`:n=Hj(e[++d],`-r`);break;case`-f`:r=Hj(e[++d],`-f`);break;case`-l`:i=Hj(e[++d],`-l`);break;case`-scale-to`:a=Hj(e[++d],`-scale-to`);break;case`-scale-to-x`:o=Hj(e[++d],`-scale-to-x`);break;case`-scale-to-y`:s=Hj(e[++d],`-scale-to-y`);break;case`-singlefile`:l=!0;break;default:if(f.startsWith(`-`))throw Error(`unsupported option ${f}`);u.push(f)}}if(u.length===0)throw Error(`expected an input PDF`);if(u.length>2)throw Error(`expected at most one input PDF and one output prefix`);if(r!==void 0&&i!==void 0&&r>i)throw Error(`invalid page range: ${r}-${i}`);return{inputPath:u[0],outputRoot:u[1],format:t,dpi:n,firstPage:r,lastPage:i,scaleTo:a,scaleToX:o,scaleToY:s,quality:c,singleFile:l}}function Gj(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function Kj(e,t,n,r){let i=String(n).length;return`${e}-${String(t).padStart(i,`0`)}.${r}`}function qj(e){return e===`jpeg`?`jpg`:`png`}function Jj(e){return e.scaleToX===void 0?e.scaleToY===void 0?e.scaleTo===void 0?{scale:Li(e.dpi)}:{longEdge:e.scaleTo}:{height:e.scaleToY}:{width:e.scaleToX}}async function Yj(e,t){let n=e.fs.resolvePath(e.cwd,t),r=await e.fs.readFileBuffer(n);if(!Fi(r))throw Error(`${t}: not a PDF file`);return r}function Xj(e=`pdftoppm`){return S(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Vj();let r;try{r=Wj(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let t=await Yj(n,r.inputPath),i=qj(r.format),a=r.outputRoot??Gj(er(r.inputPath)),o=[];return await Pi(t,{firstPage:r.firstPage,lastPage:r.singleFile?r.firstPage??1:r.lastPage,format:r.format,quality:r.quality,...Jj(r)},async(e,t)=>{let s=r.singleFile?`${a}.${i}`:Kj(a,e.pageNumber,t.lastPage,i);await n.fs.writeFile(n.fs.resolvePath(n.cwd,s),e.bytes),o.push(s)}),o.length===0?{stdout:``,stderr:`${e}: no pages to render\n`,exitCode:1}:{stdout:`${o.join(`
1803
- `)}\n`,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}})}function Zj(e=`pdftotext`){return S(e,async(t,n)=>{let{runPdftotext:r}=await import(`./run-BVzzZSqz.js`);return r(e,t,n)})}function Qj(e){let t=e.filter(e=>e.teleportEligible===!0&&e.bootstrapId&&e.floatType);if(t.length===0)return null;let n=t.filter(e=>e.floatType===`standalone`),r=n.length>0?n:t;r.sort((e,t)=>(t.lastActivity??0)-(e.lastActivity??0));let i=r[0];return{runtimeId:i.runtimeId,bootstrapId:i.bootstrapId,floatType:i.floatType}}function $j(){cw(()=>()=>ee()),sw(()=>()=>Qj(ee()))}const eM=`/workspace/.plugins/sources`;function tM(e){return{stdout:e,stderr:``,exitCode:0}}function q(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function nM(e,t){let n=C(t,{});return`error`in n?q(`plugin ${e}: ${n.error}`):{ok:!0,positionals:n.positionals}}function rM(){return`usage: plugin <command> [args]
1811
+ `,stderr:``,exitCode:0}}function qj(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 Jj(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 Yj(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=Jj(e[++d]),t=`jpeg`;break;case`-r`:n=qj(e[++d],`-r`);break;case`-f`:r=qj(e[++d],`-f`);break;case`-l`:i=qj(e[++d],`-l`);break;case`-scale-to`:a=qj(e[++d],`-scale-to`);break;case`-scale-to-x`:o=qj(e[++d],`-scale-to-x`);break;case`-scale-to-y`:s=qj(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 Xj(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function Zj(e,t,n,r){let i=String(n).length;return`${e}-${String(t).padStart(i,`0`)}.${r}`}function Qj(e){return e===`jpeg`?`jpg`:`png`}function $j(e){return e.scaleToX===void 0?e.scaleToY===void 0?e.scaleTo===void 0?{scale:Ri(e.dpi)}:{longEdge:e.scaleTo}:{height:e.scaleToY}:{width:e.scaleToX}}async function eM(e,t){let n=e.fs.resolvePath(e.cwd,t),r=await e.fs.readFileBuffer(n);if(!Ii(r))throw Error(`${t}: not a PDF file`);return r}function tM(e=`pdftoppm`){return S(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return Kj();let r;try{r=Yj(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let t=await eM(n,r.inputPath),i=Qj(r.format),a=r.outputRoot??Xj(tr(r.inputPath)),o=[];return await Fi(t,{firstPage:r.firstPage,lastPage:r.singleFile?r.firstPage??1:r.lastPage,format:r.format,quality:r.quality,...$j(r)},async(e,t)=>{let s=r.singleFile?`${a}.${i}`:Zj(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(`
1812
+ `)}\n`,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}})}function nM(e=`pdftotext`){return S(e,async(t,n)=>{let{runPdftotext:r}=await import(`./run-BVzzZSqz.js`);return r(e,t,n)})}function rM(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 iM(){cw(()=>()=>te()),sw(()=>()=>rM(te()))}const aM=`/workspace/.plugins/sources`;function oM(e){return{stdout:e,stderr:``,exitCode:0}}function q(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function sM(e,t){let n=C(t,{});return`error`in n?q(`plugin ${e}: ${n.error}`):{ok:!0,positionals:n.positionals}}function cM(){return`usage: plugin <command> [args]
1804
1813
 
1805
1814
  Load Agent Plugins packages (agent-plugins.org spec v1.0.0): portable
1806
1815
  directories bundling Agent Skills (skills/*/SKILL.md) and MCP servers
@@ -1810,7 +1819,7 @@ Commands:
1810
1819
  install <path|repo> Validate the plugin and register it. <repo> is a
1811
1820
  GitHub reference (owner/repo, owner/repo@branch, or
1812
1821
  https://github.com/owner/repo[/tree/branch[/dir]]),
1813
- downloaded into ${eM}/.
1822
+ downloaded into ${aM}/.
1814
1823
  Skills surface through the standard skills discovery;
1815
1824
  streamable-http MCP servers are added to the MCP
1816
1825
  store as "<plugin>:<server>".
@@ -1832,36 +1841,36 @@ Examples:
1832
1841
  plugin list
1833
1842
  plugin info my-plugin
1834
1843
  plugin remove my-plugin
1835
- `}function iM(e={}){return S(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return tM(rM());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await dM(i,a,e);case`list`:case`ls`:return await hM(i,e);case`info`:return await gM(i,e);case`validate`:return await _M(i,a,e,zi(n?.env));case`remove`:case`rm`:case`delete`:return await vM(i,e);default:return q(`plugin: unknown subcommand "${r}" (try \`plugin --help\`)`)}}catch(e){return q(`plugin ${r}: ${e instanceof Error?e.message:String(e)}`)}})}async function aM(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-TVcPtHbB.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 oM(e,t,n){let r=yM(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-DB3-4PDg.js`).then(e=>e.t),a=i(e);if(a){let e=`${a.owner}/${a.repo}${a.branch?`@${a.branch}`:``}${a.path?`/${a.path}`:``}`;return{kind:`github`,ref:{...a,display:e}}}return{kind:`error`,message:`${r} does not exist and "${e}" is not a GitHub reference (owner/repo[@branch] or https://github.com/owner/repo[/tree/branch[/dir]])`}}function sM(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function cM(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${eM}/${t.map(sM).join(`--`)}`}async function lM(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-CfS9P2dH.js`).then(e=>e.i),s=await i(e.owner,e.repo,r,e.branch);if(s.status===`error`)return`failed to download ${e.display}: ${s.message}`;let c=a(s.files),l=e.path?e.path.replace(/^\/|\/$/g,``)+`/`:``;if(!c[`${l}plugin.json`])return`no plugin.json found at ${e.display} — not an Agent Plugins package`;try{await n.rm(t,{recursive:!0})}catch{}return await n.mkdir(t,{recursive:!0}),(await o(c,l,t,n,!1)).length===0?`no files found at ${e.display}`:null}async function uM(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function dM(e,t,n){if(w(e))return tM(`usage: plugin install <path|repo>
1844
+ `}function lM(e={}){return S(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return oM(cM());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await gM(i,a,e);case`list`:case`ls`:return await bM(i,e);case`info`:return await xM(i,e);case`validate`:return await SM(i,a,e,Bi(n?.env));case`remove`:case`rm`:case`delete`:return await CM(i,e);default:return q(`plugin: unknown subcommand "${r}" (try \`plugin --help\`)`)}}catch(e){return q(`plugin ${r}: ${e instanceof Error?e.message:String(e)}`)}})}async function uM(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-BA8JNn5I.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 dM(e,t,n){let r=wM(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-DO2t0FaF.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 fM(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function pM(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${aM}/${t.map(fM).join(`--`)}`}async function mM(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-COiiefUG.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 hM(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function gM(e,t,n){if(w(e))return oM(`usage: plugin install <path|repo>
1836
1845
 
1837
1846
  Loads the Agent Plugins package at <path>, or downloads it from a GitHub
1838
1847
  reference (owner/repo, owner/repo@branch, or
1839
1848
  https://github.com/owner/repo[/tree/branch[/dir]]) into
1840
- ${eM}/ first. Validates plugin.json (closed
1849
+ ${aM}/ first. Validates plugin.json (closed
1841
1850
  schema, name constraints), discovers skills/*/SKILL.md, and validates
1842
1851
  mcp.json. On success the plugin is recorded in
1843
1852
  /workspace/.plugins/plugins.json — its skills then surface through the
1844
1853
  standard skills discovery, and each supported streamable-http MCP server
1845
1854
  is registered in the MCP store as "<plugin>:<server>".
1846
- `);let r=nM(`install`,e);if(!(`ok`in r))return r;if(r.positionals.length<1)return q(`plugin install: expected <path|repo>`);let i=await aM(n),a=await oM(r.positionals[0],t,i);if(a.kind===`error`)return q(`plugin install: ${a.message}`);let o,s;if(a.kind===`github`){if(!n.fetch)return q(`plugin install: GitHub installs are unavailable (no network fetch configured)`);o=cM(a.ref),s=a.ref.display;let e=await lM(a.ref,o,i,n.fetch);if(e)return q(`plugin install: ${e}`)}else o=a.root;let{loadPluginFromDirectory:c}=await import(`./loader-Dw-TPPKt.js`),l=await c(i,o);if(!l.ok)return a.kind===`github`&&await uM(i,o),q(`plugin install: plugin at ${s??o} was rejected:\n${bM(l.diagnostics)}`);let{plugin:u}=l,d=u.manifest.name,{getInstalledPlugin:f,setInstalledPlugin:p}=await import(`./store-D9HgQRdy.js`),m=await f(d,n.fs);if(m&&m.root!==o)return a.kind===`github`&&await uM(i,o),q(`plugin install: a plugin named "${d}" is already installed from ${m.root} (remove it first)`);let h=await mM(u,n),g=await pM(d,m?.mcpServerNames,h.registered,n);return await p(d,{root:o,version:u.manifest.version,description:u.manifest.description,installedAt:new Date().toISOString(),mcpServerNames:h.registered,...s?{source:s}:{}},n.fs),tM(fM(u,h,g,s??o,l.diagnostics))}function fM(e,t,n,r,i){let a=e.manifest.name,o=t.registered,s=e.mcp.servers.filter(e=>e.status!==`supported`),c=[`Installed agent plugin "${a}"${e.manifest.version?` v${e.manifest.version}`:``} from ${r}`,` skills: ${e.skills.length}${e.skills.length>0?` (${e.skills.map(e=>e.name).join(`, `)})`:``}`,` mcp: ${o.length} registered${o.length>0?` (${o.join(`, `)})`:``}${s.length>0?`, ${s.length} skipped`:``}${n>0?`, ${n} removed from previous install`:``}`];return t.conflicts.length>0&&c.push(` warning: not bridged — MCP server name(s) already in use and not owned by this plugin: ${t.conflicts.join(`, `)} (remove them with \`mcp remove\` first)`),i.length>0&&c.push(`Diagnostics:`,bM(i)),c.join(`
1855
+ `);let r=sM(`install`,e);if(!(`ok`in r))return r;if(r.positionals.length<1)return q(`plugin install: expected <path|repo>`);let i=await uM(n),a=await dM(r.positionals[0],t,i);if(a.kind===`error`)return q(`plugin install: ${a.message}`);let o,s;if(a.kind===`github`){if(!n.fetch)return q(`plugin install: GitHub installs are unavailable (no network fetch configured)`);o=pM(a.ref),s=a.ref.display;let e=await mM(a.ref,o,i,n.fetch);if(e)return q(`plugin install: ${e}`)}else o=a.root;let{loadPluginFromDirectory:c}=await import(`./loader-Dw-TPPKt.js`),l=await c(i,o);if(!l.ok)return a.kind===`github`&&await hM(i,o),q(`plugin install: plugin at ${s??o} was rejected:\n${TM(l.diagnostics)}`);let{plugin:u}=l,d=u.manifest.name,{getInstalledPlugin:f,setInstalledPlugin:p}=await import(`./store-DWCTEbG_.js`),m=await f(d,n.fs);if(m&&m.root!==o)return a.kind===`github`&&await hM(i,o),q(`plugin install: a plugin named "${d}" is already installed from ${m.root} (remove it first)`);let h=await yM(u,n),g=await vM(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),oM(_M(u,h,g,s??o,l.diagnostics))}function _M(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:`,TM(i)),c.join(`
1847
1856
  `)+`
1848
- `}async function pM(e,t,n,r){let i=(t??[]).filter(e=>!n.includes(e));if(i.length===0)return 0;let{deleteServer:a,getServer:o}=await import(`./store-DYTzgtEI.js`).then(e=>e.r),s=0;for(let t of i)(await o(t,r.fs))?.pluginOrigin===e&&await a(t,r.fs)&&(s+=1);return s}async function mM(e,t){let n=e.mcp.servers.filter(e=>e.status===`supported`);if(n.length===0)return{registered:[],conflicts:[]};let{getServer:r,setServer:i}=await import(`./store-DYTzgtEI.js`).then(e=>e.r),{McpClient:a}=await import(`./client-CmfvXtLV.js`).then(e=>e.n),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 hM(e,t){if(w(e))return tM(`usage: plugin list
1849
- `);let n=nM(`list`,e);if(!(`ok`in n))return n;let{listInstalledPlugins:r}=await import(`./store-D9HgQRdy.js`),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return tM("No agent plugins installed. Use `plugin install <path>`.\n");let o=[[`NAME`,`VERSION`,`ROOT`,`MCP`]];for(let e of a){let t=i[e];o.push([e,t.version??`-`,t.root,String(t.mcpServerNames?.length??0)])}let s=o[0].map((e,t)=>Math.max(...o.map(e=>e[t].length)));return tM(o.map(e=>e.map((e,t)=>e.padEnd(s[t])).join(` `)).join(`
1857
+ `}async function vM(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-KNXWdOK2.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 yM(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-KNXWdOK2.js`).then(e=>e.r),{McpClient:a}=await import(`./client-CwxmlQM-.js`).then(e=>e.n),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 bM(e,t){if(w(e))return oM(`usage: plugin list
1858
+ `);let n=sM(`list`,e);if(!(`ok`in n))return n;let{listInstalledPlugins:r}=await import(`./store-DWCTEbG_.js`),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return oM("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 oM(o.map(e=>e.map((e,t)=>e.padEnd(s[t])).join(` `)).join(`
1850
1859
  `)+`
1851
- `)}async function gM(e,t){if(w(e))return tM(`usage: plugin info <name>
1852
- `);let n=nM(`info`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return q(`plugin info: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i}=await import(`./store-D9HgQRdy.js`),a=await i(r,t.fs);if(!a)return q(`plugin info: no installed plugin named "${r}"`);let o=await aM(t),{loadPluginFromDirectory:s}=await import(`./loader-Dw-TPPKt.js`),c=await s(o,a.root);if(!c.ok)return q(`plugin info: plugin at ${a.root} no longer loads:\n${bM(c.diagnostics)}`);let{plugin:l}=c,u=l.manifest,d=[`${u.name}${u.version?` v${u.version}`:``}`,...u.description?[` ${u.description}`]:[],` root: ${l.root}`,...u.license?[` license: ${u.license}`]:[],...u.homepage?[` home: ${u.homepage}`]:[],``,`Skills (${l.skills.length}):`,...l.skills.map(e=>` ${e.name} ${e.description}`),``,`MCP servers (${l.mcp.servers.length}):`,...l.mcp.servers.map(e=>e.status===`supported`?` ${e.name} ${e.config.type} ${e.config.url}`:` ${e.name} [skipped: ${e.reason}]`)];return c.diagnostics.length>0&&d.push(``,`Diagnostics:`,bM(c.diagnostics)),tM(d.join(`
1860
+ `)}async function xM(e,t){if(w(e))return oM(`usage: plugin info <name>
1861
+ `);let n=sM(`info`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return q(`plugin info: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i}=await import(`./store-DWCTEbG_.js`),a=await i(r,t.fs);if(!a)return q(`plugin info: no installed plugin named "${r}"`);let o=await uM(t),{loadPluginFromDirectory:s}=await import(`./loader-Dw-TPPKt.js`),c=await s(o,a.root);if(!c.ok)return q(`plugin info: plugin at ${a.root} no longer loads:\n${TM(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:`,TM(c.diagnostics)),oM(d.join(`
1853
1862
  `)+`
1854
- `)}async function _M(e,t,n,r){if(w(e))return tM(`usage: plugin validate <path|repo>
1855
- `);let i=nM(`validate`,e);if(!(`ok`in i))return i;if(i.positionals.length<1)return q(`plugin validate: expected <path|repo>`);let a=await aM(n),o=await oM(i.positionals[0],t,a);if(o.kind===`error`)return q(`plugin validate: ${o.message}`);let s,c=null;if(o.kind===`github`){if(!n.fetch)return q(`plugin validate: GitHub sources are unavailable (no network fetch configured)`);c=`${r}/.plugin-validate/${cM(o.ref).split(`/`).pop()}`;let e=await lM(o.ref,c,a,n.fetch);if(e)return q(`plugin validate: ${e}`);s=c}else s=o.root;let{loadPluginFromDirectory:l}=await import(`./loader-Dw-TPPKt.js`),u;try{u=await l(a,s)}finally{c&&await uM(a,c)}if(!u.ok)return{stdout:``,stderr:`plugin validate: REJECTED\n${bM(u.diagnostics)}\n`,exitCode:1};let{plugin:d}=u,f=d.mcp.servers.filter(e=>e.status===`supported`).length,p=[`plugin validate: OK — "${d.manifest.name}"${d.manifest.version?` v${d.manifest.version}`:``}`,` skills: ${d.skills.length}`,` mcp servers: ${f} supported, ${d.mcp.servers.length-f} skipped (mcp.json ${d.mcp.status})`];return u.diagnostics.length>0&&p.push(`Diagnostics:`,bM(u.diagnostics)),tM(p.join(`
1863
+ `)}async function SM(e,t,n,r){if(w(e))return oM(`usage: plugin validate <path|repo>
1864
+ `);let i=sM(`validate`,e);if(!(`ok`in i))return i;if(i.positionals.length<1)return q(`plugin validate: expected <path|repo>`);let a=await uM(n),o=await dM(i.positionals[0],t,a);if(o.kind===`error`)return q(`plugin validate: ${o.message}`);let s,c=null;if(o.kind===`github`){if(!n.fetch)return q(`plugin validate: GitHub sources are unavailable (no network fetch configured)`);c=`${r}/.plugin-validate/${pM(o.ref).split(`/`).pop()}`;let e=await mM(o.ref,c,a,n.fetch);if(e)return q(`plugin validate: ${e}`);s=c}else s=o.root;let{loadPluginFromDirectory:l}=await import(`./loader-Dw-TPPKt.js`),u;try{u=await l(a,s)}finally{c&&await hM(a,c)}if(!u.ok)return{stdout:``,stderr:`plugin validate: REJECTED\n${TM(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:`,TM(u.diagnostics)),oM(p.join(`
1856
1865
  `)+`
1857
- `)}async function vM(e,t){if(w(e))return tM(`usage: plugin remove <name>
1858
- `);let n=nM(`remove`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return q(`plugin remove: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i,deleteInstalledPlugin:a}=await import(`./store-D9HgQRdy.js`),o=await i(r,t.fs);if(!o)return q(`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-DYTzgtEI.js`).then(e=>e.r);for(let i of o.mcpServerNames)(await n(i,t.fs))?.pluginOrigin===r&&await e(i,t.fs)&&(s+=1)}await a(r,t.fs);let c=o.root.startsWith(`${eM}/`);return c&&await uM(await aM(t),o.root),tM([`Removed agent plugin "${r}"`,` registry: removed`,` mcp servers: ${s} removed`,c?` files: removed (${o.root})`:` files: left in place (${o.root})`].join(`
1866
+ `)}async function CM(e,t){if(w(e))return oM(`usage: plugin remove <name>
1867
+ `);let n=sM(`remove`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return q(`plugin remove: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i,deleteInstalledPlugin:a}=await import(`./store-DWCTEbG_.js`),o=await i(r,t.fs);if(!o)return q(`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-KNXWdOK2.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(`${aM}/`);return c&&await hM(await uM(t),o.root),oM([`Removed agent plugin "${r}"`,` registry: removed`,` mcp servers: ${s} removed`,c?` files: removed (${o.root})`:` files: left in place (${o.root})`].join(`
1859
1868
  `)+`
1860
- `)}function yM(e,t){let n=t.startsWith(`/`)?t:`${e.replace(/\/$/,``)}/${t}`,r=[];for(let e of n.split(`/`))e!==``&&e!==`.`&&(e===`..`?r.pop():r.push(e));return`/${r.join(`/`)}`}function bM(e){return e.map(e=>` ${e.level===`error`?`error`:`warn `} [${e.component}] ${e.message}`).join(`
1861
- `)}const xM=[`pid`,`ppid`,`kind`,`stat`,`start`,`scoop`,`command`],SM=[`pid`,`ppid`,`stat`,`start`,`scoop`,`command`],CM={running:`R`,pending:`S`,exited:`Z`,killed:`K`},wM=[`-a`,`-A`,`-e`,`--all`,`-T`,`--tree`],TM=[`-o`,`--columns`];function EM(e={}){return S(`ps`,async t=>{if(w(t,{valueFlags:TM}))return BM();let n=e.processManager??DM();if(!n)return{stdout:``,stderr:`ps: no process manager available in this runtime
1862
- `,exitCode:1};let r=C(t,{bool:wM,value:TM});if(`error`in r)return{stdout:``,stderr:`ps: ${r.error}\n`,exitCode:r.error.startsWith(`unknown flag:`)?1:2};if(r.positionals.length>0)return{stdout:``,stderr:`ps: unrecognized argument '${r.positionals[0]}'\n`,exitCode:2};let i=SM,a=r.bools.has(`-T`)||r.bools.has(`--tree`),o=r.bools.has(`-a`)||r.bools.has(`-A`)||r.bools.has(`-e`)||r.bools.has(`--all`),s=r.values.get(`-o`)??r.values.get(`--columns`);if(s!==void 0){let e=OM(s);if(e instanceof Error)return{stdout:``,stderr:`ps: ${e.message}\n`,exitCode:2};i=e}let c=n.list().sort((e,t)=>e.pid-t.pid),l=o?c:c.filter(e=>e.status===`running`||e.status===`pending`),u=a?zM(l):l.map(e=>({proc:e,depth:0})),d=kM(i,u.map(({proc:e})=>e),s!==void 0),f=u.map(({proc:e,depth:t})=>MM(e,i,t,a,d));return{stdout:[AM(i,d),...f].join(`
1869
+ `)}function wM(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 TM(e){return e.map(e=>` ${e.level===`error`?`error`:`warn `} [${e.component}] ${e.message}`).join(`
1870
+ `)}const EM=[`pid`,`ppid`,`kind`,`stat`,`start`,`scoop`,`command`],DM=[`pid`,`ppid`,`stat`,`start`,`scoop`,`command`],OM={running:`R`,pending:`S`,exited:`Z`,killed:`K`},kM=[`-a`,`-A`,`-e`,`--all`,`-T`,`--tree`],AM=[`-o`,`--columns`];function jM(e={}){return S(`ps`,async t=>{if(w(t,{valueFlags:AM}))return GM();let n=e.processManager??MM();if(!n)return{stdout:``,stderr:`ps: no process manager available in this runtime
1871
+ `,exitCode:1};let r=C(t,{bool:kM,value:AM});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=DM,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=NM(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?WM(l):l.map(e=>({proc:e,depth:0})),d=PM(i,u.map(({proc:e})=>e),s!==void 0),f=u.map(({proc:e,depth:t})=>LM(e,i,t,a,d));return{stdout:[FM(i,d),...f].join(`
1863
1872
  `)+`
1864
- `,stderr:``,exitCode:0}})}function DM(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function OM(e){let t=e.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);if(t.length===0)return Error(`-o requires at least one column`);let n=[];for(let e of t){if(!xM.includes(e))return Error(`unknown column '${e}'; supported: ${xM.join(`, `)}`);n.push(e)}return n}function kM(e,t,n){if(!(n&&e.includes(`scoop`)))return{full:!1,width:10};let r=5;for(let e of t)r=Math.max(r,FM(e).length);return{full:!0,width:r}}function AM(e,t){return e.map(e=>jM(e,t)).join(` `)}function jM(e,t){switch(e){case`pid`:return`PID`.padStart(5);case`ppid`:return`PPID`.padStart(5);case`kind`:return`KIND`.padEnd(10);case`stat`:return`STAT`;case`start`:return`START`;case`scoop`:return`SCOOP`.padEnd(t.width);case`command`:return`COMMAND`}}function MM(e,t,n,r,i){return t.map(t=>NM(e,t,n,r,i)).join(` `)}function NM(e,t,n,r,i){switch(t){case`pid`:return String(e.pid).padStart(5);case`ppid`:return String(e.ppid).padStart(5);case`kind`:return e.kind.padEnd(10);case`stat`:return CM[e.status];case`start`:return PM(e.startedAt);case`scoop`:return IM(e,i);case`command`:return LM(e,n,r)}}function PM(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}function FM(e){return e.owner.kind===`cone`?`cone`:e.owner.kind===`system`?`system`:e.owner.kind===`jshd`?`jshd`:e.owner.scoopJid??`scoop`}function IM(e,t){let n=FM(e);return(t.full?n:n.slice(0,t.width)).padEnd(t.width)}function LM(e,t,n){let r=n&&t>0?` `.repeat(t-1)+`└─ `:``,i=e.argv.length===0?`[${e.kind}]`:e.argv.map(RM).join(` `);return r+(i.length>80?i.slice(0,79)+`…`:i)}function RM(e){return e===``?`''`:/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:e.includes(`"`)&&!e.includes(`'`)?`'${e}'`:`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`}function zM(e){let t=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 BM(){return{stdout:`Usage: ps [-a] [-T] [-o col[,col…]]
1873
+ `,stderr:``,exitCode:0}})}function MM(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function NM(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(!EM.includes(e))return Error(`unknown column '${e}'; supported: ${EM.join(`, `)}`);n.push(e)}return n}function PM(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,BM(e).length);return{full:!0,width:r}}function FM(e,t){return e.map(e=>IM(e,t)).join(` `)}function IM(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 LM(e,t,n,r,i){return t.map(t=>RM(e,t,n,r,i)).join(` `)}function RM(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 OM[e.status];case`start`:return zM(e.startedAt);case`scoop`:return VM(e,i);case`command`:return HM(e,n,r)}}function zM(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 BM(e){return e.owner.kind===`cone`?`cone`:e.owner.kind===`system`?`system`:e.owner.kind===`jshd`?`jshd`:e.owner.scoopJid??`scoop`}function VM(e,t){let n=BM(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(UM).join(` `);return r+(i.length>80?i.slice(0,79)+`…`:i)}function UM(e){return e===``?`''`:/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:e.includes(`"`)&&!e.includes(`'`)?`'${e}'`:`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`}function WM(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 GM(){return{stdout:`Usage: ps [-a] [-T] [-o col[,col…]]
1865
1874
 
1866
1875
  List processes tracked by the kernel.
1867
1876
 
@@ -1894,9 +1903,9 @@ Examples:
1894
1903
  ps -a -T full tree
1895
1904
  ps -o pid,kind,stat just three columns
1896
1905
  ps -o scoop,stat,pid full scoop jid, with STAT and PID
1897
- `,stderr:``,exitCode:0}}const VM=new Set([`dev`,`proc`,`lib`,`bin`,`usr`,`etc`,`home`,`tmp`]);async function HM(e,t=VM){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 UM(e,t){let n=e;if(typeof n.listMountPoints!=`function`)return[];let r=e=>{for(let n of t)if(e===n||e.startsWith(n===`/`?`/`:n+`/`)||n.startsWith(e+`/`))return!0;return!1},i=[];for(let e of n.listMountPoints())e.kind!==`proc`&&r(e.path)&&i.push({path:e.path,kind:e.kind});return i}function WM(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`slicc-fs`}catch{}}function GM(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},fromDir:e.cwd}}async function KM(e,t){try{let n=await e.readFile(`${t}/package.json`),r=JSON.parse(n);return typeof r.version==`string`?r.version:null}catch{return null}}function qM(e,t){return`installed pyodide ${e} is not the supported version ${t}: run \`ipk uninstall pyodide\` then \`ipk add pyodide@${t}\``}function JM(){return{stdout:`usage: python3 [-c code | script.py] [args...]
1898
- `,stderr:``,exitCode:0}}function YM(){return{stdout:`Python 3.14 (Pyodide)
1899
- `,stderr:``,exitCode:0}}async function XM(e,t,n){if(t[0]===`-c`){if(!t[1])return{kind:`result`,result:{stdout:``,stderr:`${e}: option requires an argument -- 'c'\n`,exitCode:2}};let n=t[1];return{kind:`ok`,code:n,filename:`-c`,sysArgv:[`-c`,...t.slice(2)],procArgv:[e,`-c`,n,...t.slice(2)]}}if(t.length>0&&!t[0].startsWith(`-`)){let r=t[0],i=n.fs.resolvePath(n.cwd,r);return await n.fs.exists(i)?{kind:`ok`,code:await n.fs.readFile(i),filename:r,sysArgv:[r,...t.slice(1)],procArgv:[e,r,...t.slice(1)]}:{kind:`result`,result:{stdout:``,stderr:`${e}: can't open file '${r}': [Errno 2] No such file or directory\n`,exitCode:2}}}return P(n.stdin).trim().length>0?{kind:`ok`,code:P(n.stdin),filename:`<stdin>`,sysArgv:[`<stdin>`],procArgv:[e]}:t.length>0?{kind:`result`,result:{stdout:``,stderr:`${e}: unsupported option '${t[0]}'\n`,exitCode:2}}:{kind:`result`,result:{stdout:``,stderr:`${e}: no input provided (use -c CODE, script path, or stdin)\n`,exitCode:2}}}async function ZM(e){let t=GM(e),n=await wr(t);if(!n)return{kind:`result`,result:{stdout:``,stderr:`${Cr}\n`,exitCode:1}};let r=await KM(t.reader,n);return r?r===pr?{kind:`ok`,assetRoot:n}:{kind:`result`,result:{stdout:``,stderr:`${qM(r,pr)}\n`,exitCode:1}}:{kind:`result`,result:{stdout:``,stderr:`${Cr}\n`,exitCode:1}}}function QM(e,t={}){return S(e,async(n,r)=>{let i=n[0];if(i===`--help`||i===`-h`)return JM();if(i===`--version`||i===`-V`)return YM();let a=await XM(e,n,r);if(a.kind===`result`)return a.result;let{code:o,filename:s,sysArgv:c,procArgv:l}=a,u=await HM(r.fs),d=UM(r.fs,u),f=t.buildProcessConfig?.(r.env),p=f?.processManager??$M(),m=f?.owner??{kind:`system`},h=f?.getParentPid?.(),g=t.realmFactory??jr(),_=t.pyodideIndexURL??Gr(),v=t.pyodideAssetRoot;if(!v&&_===void 0){let e=await ZM(r);if(e.kind===`result`)return e.result;v=e.assetRoot}let ee=s===`<stdin>`?``:P(r.stdin),te=WM();return p?Vr({pm:p,realmFactory:g,owner:m,kind:`py`,code:o,argv:l,realmArgv:c,env:Object.fromEntries(r.env.entries()),cwd:r.cwd,filename:s,ctx:r,stdin:ee,pyodideIndexURL:_,pyodideAssetRoot:v,pyodideMountDirs:u,opfsMountDbName:te,mountPoints:d,procKind:`py`,ppid:h,syncFsBridgeEnabled:Ar()}):tN({realmFactory:g,owner:m,code:o,argv:l,realmArgv:c,env:Object.fromEntries(r.env.entries()),cwd:r.cwd,filename:s,ctx:r,stdin:ee,pyodideIndexURL:_,pyodideAssetRoot:v,pyodideMountDirs:u,opfsMountDbName:te,mountPoints:d})})}function $M(){let e=globalThis.__slicc_pm;return e&&typeof e==`object`&&typeof e.spawn==`function`&&typeof e.onSignal==`function`?e:null}let eN=null;async function tN(e){if(!eN){let{ProcessManager:e}=await import(`./process-manager-BkhAohXT.js`).then(e=>e.n);eN=new e}return Vr({pm:eN,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:Ar()})}function nN(){return S(`rg`,async(e,t)=>{let{runRg:n}=await import(`./run-DniTiLYn.js`);return n(e,t)})}function rN(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 iN(){return null}function aN(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=oN(r),o=oN(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 oN(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 sN(){return{stdout:`rsync — sync files between local VFS and a remote tray runtime
1906
+ `,stderr:``,exitCode:0}}const KM=new Set([`dev`,`proc`,`lib`,`bin`,`usr`,`etc`,`home`,`tmp`]);async function qM(e,t=KM){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 JM(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 YM(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`slicc-fs`}catch{}}function XM(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 ZM(e,t){try{let n=await e.readFile(`${t}/package.json`),r=JSON.parse(n);return typeof r.version==`string`?r.version:null}catch{return null}}function QM(e,t){return`installed pyodide ${e} is not the supported version ${t}: run \`ipk uninstall pyodide\` then \`ipk add pyodide@${t}\``}function $M(){return{stdout:`usage: python3 [-c code | script.py] [args...]
1907
+ `,stderr:``,exitCode:0}}function eN(){return{stdout:`Python 3.14 (Pyodide)
1908
+ `,stderr:``,exitCode:0}}async function tN(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 nN(e){let t=XM(e),n=await Tr(t);if(!n)return{kind:`result`,result:{stdout:``,stderr:`${wr}\n`,exitCode:1}};let r=await ZM(t.reader,n);return r?r===mr?{kind:`ok`,assetRoot:n}:{kind:`result`,result:{stdout:``,stderr:`${QM(r,mr)}\n`,exitCode:1}}:{kind:`result`,result:{stdout:``,stderr:`${wr}\n`,exitCode:1}}}function rN(e,t={}){return S(e,async(n,r)=>{let i=n[0];if(i===`--help`||i===`-h`)return $M();if(i===`--version`||i===`-V`)return eN();let a=await tN(e,n,r);if(a.kind===`result`)return a.result;let{code:o,filename:s,sysArgv:c,procArgv:l}=a,u=await qM(r.fs),d=JM(r.fs,u),f=t.buildProcessConfig?.(r.env),p=f?.processManager??iN(),m=f?.owner??{kind:`system`},h=f?.getParentPid?.(),g=t.realmFactory??Mr(),_=t.pyodideIndexURL??Kr(),v=t.pyodideAssetRoot;if(!v&&_===void 0){let e=await nN(r);if(e.kind===`result`)return e.result;v=e.assetRoot}let ee=s===`<stdin>`?``:P(r.stdin),te=YM();return p?Hr({pm:p,realmFactory:g,owner:m,kind:`py`,code:o,argv:l,realmArgv:c,env:Object.fromEntries(r.env.entries()),cwd:r.cwd,filename:s,ctx:r,stdin:ee,pyodideIndexURL:_,pyodideAssetRoot:v,pyodideMountDirs:u,opfsMountDbName:te,mountPoints:d,procKind:`py`,ppid:h,syncFsBridgeEnabled:jr()}):oN({realmFactory:g,owner:m,code:o,argv:l,realmArgv:c,env:Object.fromEntries(r.env.entries()),cwd:r.cwd,filename:s,ctx:r,stdin:ee,pyodideIndexURL:_,pyodideAssetRoot:v,pyodideMountDirs:u,opfsMountDbName:te,mountPoints:d})})}function iN(){let e=globalThis.__slicc_pm;return e&&typeof e==`object`&&typeof e.spawn==`function`&&typeof e.onSignal==`function`?e:null}let aN=null;async function oN(e){if(!aN){let{ProcessManager:e}=await import(`./process-manager-BkhAohXT.js`).then(e=>e.n);aN=new e}return Hr({pm:aN,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:jr()})}function sN(){return S(`rg`,async(e,t)=>{let{runRg:n}=await import(`./run-DniTiLYn.js`);return n(e,t)})}function cN(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 lN(){return null}function uN(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=dN(r),o=dN(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 dN(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 fN(){return{stdout:`rsync — sync files between local VFS and a remote tray runtime
1900
1909
 
1901
1910
  Usage:
1902
1911
  rsync [flags] <local-path> <runtime-id>:<remote-path> # push
@@ -1912,21 +1921,21 @@ Examples:
1912
1921
  rsync /workspace follower-abc123:/workspace
1913
1922
  rsync --delete /shared leader:/shared
1914
1923
  rsync follower-abc123:/workspace/project /workspace/project
1915
- `,stderr:``,exitCode:0}}async function cN(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 lN(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 uN(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 dN(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 fN(e){let t=e.lastIndexOf(`/`);return t<=0?`/`:e.slice(0,t)}async function pN(e,n,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=rN(await cN(e,a),await lN(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(`
1924
+ `,stderr:``,exitCode:0}}async function pN(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 mN(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 hN(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 gN(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 _N(e){let t=e.lastIndexOf(`/`);return t<=0?`/`:e.slice(0,t)}async function vN(e,n,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=cN(await pN(e,a),await mN(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(`
1916
1925
  `)+`
1917
- `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let c=a+`/`+r,l=o+`/`+r;await dN(n,s,fN(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(`
1926
+ `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let c=a+`/`+r,l=o+`/`+r;await gN(n,s,_N(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(`
1918
1927
  `)+`
1919
1928
  `,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(`
1920
1929
  `)+`
1921
1930
  `,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(`
1922
1931
  `)+`
1923
- `,stderr:``,exitCode:0}}async function mN(e,t,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=rN(await lN(t,s,o),await cN(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(`
1932
+ `,stderr:``,exitCode:0}}async function yN(e,t,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=cN(await mN(t,s,o),await pN(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(`
1924
1933
  `)+`
1925
- `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let i=o+`/`+r,c=a+`/`+r,l=fN(c);await e.exists(l)||await e.mkdir(l,{recursive:!0});let u=await uN(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(`
1934
+ `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let i=o+`/`+r,c=a+`/`+r,l=_N(c);await e.exists(l)||await e.mkdir(l,{recursive:!0});let u=await hN(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(`
1926
1935
  `)+`
1927
- `,stderr:``,exitCode:0}}function hN(e={}){let t=e.fs,n=e.getSendFsRequest??iN;return S(`rsync`,async e=>{if(e.includes(`--help`)||e.includes(`-h`)||e.length===0)return sN();if(!t)return{stdout:``,stderr:`rsync: no filesystem available
1936
+ `,stderr:``,exitCode:0}}function bN(e={}){let t=e.fs,n=e.getSendFsRequest??lN;return S(`rsync`,async e=>{if(e.includes(`--help`)||e.includes(`-h`)||e.length===0)return fN();if(!t)return{stdout:``,stderr:`rsync: no filesystem available
1928
1937
  `,exitCode:1};let r=n();if(!r)return{stdout:``,stderr:`rsync: not connected to a tray — rsync requires a tray connection
1929
- `,exitCode:1};let i=aN(e);if(`error`in i)return i.error===`__help__`?sN():{stdout:``,stderr:`rsync: ${i.error}\n`,exitCode:1};try{return i.direction===`push`?await pN(t,r,i):await mN(t,r,i)}catch(e){return{stdout:``,stderr:`rsync: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function gN(){return{stdout:`usage: say [-v voice] [-r rate] [-l lang] [-o file] [--list] <text>
1938
+ `,exitCode:1};let i=uN(e);if(`error`in i)return i.error===`__help__`?fN():{stdout:``,stderr:`rsync: ${i.error}\n`,exitCode:1};try{return i.direction===`push`?await vN(t,r,i):await yN(t,r,i)}catch(e){return{stdout:``,stderr:`rsync: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function xN(){return{stdout:`usage: say [-v voice] [-r rate] [-l lang] [-o file] [--list] <text>
1930
1939
  say --status | --warmup
1931
1940
 
1932
1941
  Speaks the given text. Uses on-device Kokoro voices when the model
@@ -1945,14 +1954,14 @@ Examples:
1945
1954
  [web speech] otherwise); kokoro voices lead when ready
1946
1955
  --status Show the on-device voice state (downloading/ready + ETA)
1947
1956
  --warmup Stage + start the on-device voice download in the background
1948
- `,stderr:``,exitCode:0}}function _N(e){switch(e.state){case`ready`:return`voice engine: ready
1957
+ `,stderr:``,exitCode:0}}function SN(e){switch(e.state){case`ready`:return`voice engine: ready
1949
1958
  `;case`failed`:return`voice engine: failed (re-run say --warmup to retry)
1950
1959
  `;case`idle`:return`voice engine: not downloaded (run say --warmup)
1951
- `;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 vN(e){return{stdout:``,stderr:`say: ${e}\n`,exitCode:1}}function yN(e){return e instanceof Error?e.message:String(e)}let bN=!1,xN=null;function SN(){return bN?Promise.resolve(speechSynthesis.getVoices()):(xN||=new Promise(e=>{let t=speechSynthesis.getVoices();if(t.length>0){bN=!0,e(t);return}let n=()=>{bN=!0,speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,n),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,n),bN=!0,e(speechSynthesis.getVoices())},1e3)}),xN)}const CN={"-v":`a voice name`,"-r":`a rate value`,"-l":`a language tag`,"-o":`an output file path`,"--out":`an output file path`};function wN(e){return e!=null&&(!e.startsWith(`-`)||e===`-`)}function TN(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 EN(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 CN){let n=wN(r+1<e.length?e[r+1]:void 0)?e[++r]:null;if(n==null)return vN(`${i} requires ${CN[i]}`);let a=TN(t,i,n);if(a)return vN(a)}else if(i.startsWith(`-`)&&i!==`--list`)return vN(`unknown option: ${i}`);else i.startsWith(`-`)||n.push(i)}return t.text=n.join(` `),t}function DN(e){let t=e.onDevice?`[kokoro]`:`[web speech]`;return`${e.name} (${e.lang}) ${t}${e.default?` [default]`:``}`}async function ON(e){if(e.local){let{kokoroVoicesIfReady:e}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),t=e().map(e=>DN({name:e.id,lang:e.lang,onDevice:e.onDevice})),n=(await SN()).map(e=>DN({name:e.name,lang:e.lang,onDevice:!1,default:e.default}));return{stdout:[...t,...n].join(`
1960
+ `;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 CN(e){return{stdout:``,stderr:`say: ${e}\n`,exitCode:1}}function wN(e){return e instanceof Error?e.message:String(e)}let TN=!1,EN=null;function DN(){return TN?Promise.resolve(speechSynthesis.getVoices()):(EN||=new Promise(e=>{let t=speechSynthesis.getVoices();if(t.length>0){TN=!0,e(t);return}let n=()=>{TN=!0,speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,n),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,n),TN=!0,e(speechSynthesis.getVoices())},1e3)}),EN)}const ON={"-v":`a voice name`,"-r":`a rate value`,"-l":`a language tag`,"-o":`an output file path`,"--out":`an output file path`};function kN(e){return e!=null&&(!e.startsWith(`-`)||e===`-`)}function AN(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 jN(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 ON){let n=kN(r+1<e.length?e[r+1]:void 0)?e[++r]:null;if(n==null)return CN(`${i} requires ${ON[i]}`);let a=AN(t,i,n);if(a)return CN(a)}else if(i.startsWith(`-`)&&i!==`--list`)return CN(`unknown option: ${i}`);else i.startsWith(`-`)||n.push(i)}return t.text=n.join(` `),t}function MN(e){let t=e.onDevice?`[kokoro]`:`[web speech]`;return`${e.name} (${e.lang}) ${t}${e.default?` [default]`:``}`}async function NN(e){if(e.local){let{kokoroVoicesIfReady:e}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),t=e().map(e=>MN({name:e.id,lang:e.lang,onDevice:e.onDevice})),n=(await DN()).map(e=>MN({name:e.name,lang:e.lang,onDevice:!1,default:e.default}));return{stdout:[...t,...n].join(`
1952
1961
  `)+`
1953
- `,stderr:``,exitCode:0}}try{return{stdout:(await e.panelRpc.call(`list-voices`,void 0)).voices.map(e=>DN(e)).join(`
1962
+ `,stderr:``,exitCode:0}}try{return{stdout:(await e.panelRpc.call(`list-voices`,void 0)).voices.map(e=>MN(e)).join(`
1954
1963
  `)+`
1955
- `,stderr:``,exitCode:0}}catch(e){return vN(yN(e))}}async function kN(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 SN()).map(e=>({name:e.name}));return[...n,...r]}async function AN(e,t){let n=(await kN(e)).find(e=>e.name.toLowerCase().includes(t.toLowerCase()));return n?{resolved:n.name}:{error:vN(`voice "${t}" not found. Use --list to see available voices.`)}}async function jN(e,t){try{if(e.local){let{kokoroStatus:e,kokoroWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:_N(t?n():e()),stderr:``,exitCode:0}}return{stdout:_N(t?await e.panelRpc.call(`speak-warmup`,void 0):await e.panelRpc.call(`speak-status`,void 0)),stderr:``,exitCode:0}}catch(e){return vN(yN(e))}}async function MN(e,t){return t.includes(`--list`)?ON(e):t.includes(`--status`)?jN(e,!1):t.includes(`--warmup`)?jN(e,!0):null}async function NN(e){try{let{speak:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return await t(e),{stdout:``,stderr:``,exitCode:0}}catch(e){return vN(`speech synthesis error: ${yN(e)}`)}}async function PN(e,t){try{return await e.panelRpc.call(`speak-text`,t,{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return vN(yN(e))}}async function FN(e){let{synthesizeToWav:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);try{return{bytes:await t(e)}}catch(e){return vN(yN(e))}}async function IN(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 vN(yN(e))}}async function LN(e,t){return e.local?FN(t):IN(e,t)}async function RN(e,t){let n=await LN(e,t);return`exitCode`in n?n:{...ni(n.bytes),stderr:``,exitCode:0}}async function zN(e,t,n,r){let i=await LN(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 vN(`failed to write ${n}: ${yN(e)}`)}return{stdout:`wrote ${Math.max(1,Math.round(i.bytes.byteLength/1024))} KB to ${a}\n`,stderr:``,exitCode:0}}async function BN(e,t,n){let r;if(n.voiceName){let{resolved:t,error:i}=await AN(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&&!bS(t)?RN(e,i):n.outFile?zN(e,t,n.outFile,i):e.local?NN(i):PN(e,i)}function VN(){return S(`say`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return gN();let n={local:typeof window<`u`&&typeof speechSynthesis<`u`,panelRpc:y()};if(!n.local&&!n.panelRpc)return vN(`Web Speech API unavailable in this environment`);let r=await MN(n,e);if(r)return r;let i=EN(e);return`exitCode`in i?i:i.text?i.lang?BN(n,t,{...i,lang:i.lang}):vN(`-l language tag is required`):gN()})}function HN(){return S(`screencapture`,async(e,t)=>{let{runScreencapture:n}=await import(`./screencapture-run-Dt7lEfIp.js`);return n(e,t)})}function UN(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 WN=1e4;async function GN(e,t,n){let r={method:e,headers:me({"Content-Type":`application/json`}),signal:AbortSignal.timeout(WN)};n&&(r.body=JSON.stringify(n));try{let e=await fetch(pe(`/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:KN(e)}}}}function KN(e){let t=e instanceof Error?e.name:``;return t===`TimeoutError`||t===`AbortError`?`no response from the secret store within ${WN/1e3}s`:`secret store unreachable: ${e instanceof Error?e.message:String(e)}`}function qN(e,t){return`could not read ${e} secrets — ${t??`the bridge gave no reason`}`}function JN(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 YN(){return{async list(){let[e,t]=await Promise.all([GN(`GET`,``),GN(`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(qN(`saved`,$N(e.data)));if(t.ok)for(let e of t.data)n.push({name:e.name,domains:e.domains,persisted:!1});else r.push(qN(`session`,$N(t.data)));return{entries:n,warnings:r}},async getInfo(e){return JN(await this.list(),e)},async getMasked(e){let{ok:t,data:n}=await GN(`GET`,`/masked`);return t?n.find(t=>t.name===e)??null:null},async peek(e){let{ok:t,data:n}=await GN(`GET`,`/peek?name=${encodeURIComponent(e)}`);return t?n:null},async setSession(e,t,n){let{ok:r,data:i}=await GN(`POST`,`/session`,{name:e,value:t,domains:n});if(!r)throw Error($N(i)??`failed to set session secret`)},async setPersisted(e,t,n){let{ok:r,data:i}=await GN(`POST`,``,{name:e,value:t,domains:n});if(!r)throw Error($N(i)??`failed to persist secret`)},async setScope(e,t){let{ok:n,data:r}=await GN(`POST`,`/scope`,{name:e,domains:t});if(!n)throw Error($N(r)??`failed to update scope`)},async delete(e){let{ok:t,status:n,data:r}=await GN(`DELETE`,`/${encodeURIComponent(e)}`);if(n===404)return{removed:!1};if(!t)throw Error($N(r)??`failed to delete secret`);return{removed:!0,fromSession:r&&typeof r==`object`&&`fromSession`in r?!!r.fromSession:void 0}}}}function XN(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(qN(`saved`,e?.error)),n?.entries||i.push(qN(`session`,n?.error)),{entries:r,warnings:i}},async getInfo(e){return JN(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 ZN(){return XN(e=>UN(e))}function QN(){return XN(e=>{let{type:t,...n}=e;return be(t,n)})}function $N(e){if(e&&typeof e==`object`&&`error`in e){let t=e.error;if(typeof t==`string`)return t}}function eP(e){switch(e){case`extension-direct`:return ZN();case`extension-delegate`:return QN();default:return YN()}}const tP=[`--domain`],nP=[`--persist`];function rP(){return`secret — manage secrets for the fetch proxy and mount backends
1964
+ `,stderr:``,exitCode:0}}catch(e){return CN(wN(e))}}async function PN(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 DN()).map(e=>({name:e.name}));return[...n,...r]}async function FN(e,t){let n=(await PN(e)).find(e=>e.name.toLowerCase().includes(t.toLowerCase()));return n?{resolved:n.name}:{error:CN(`voice "${t}" not found. Use --list to see available voices.`)}}async function IN(e,t){try{if(e.local){let{kokoroStatus:e,kokoroWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:SN(t?n():e()),stderr:``,exitCode:0}}return{stdout:SN(t?await e.panelRpc.call(`speak-warmup`,void 0):await e.panelRpc.call(`speak-status`,void 0)),stderr:``,exitCode:0}}catch(e){return CN(wN(e))}}async function LN(e,t){return t.includes(`--list`)?NN(e):t.includes(`--status`)?IN(e,!1):t.includes(`--warmup`)?IN(e,!0):null}async function RN(e){try{let{speak:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return await t(e),{stdout:``,stderr:``,exitCode:0}}catch(e){return CN(`speech synthesis error: ${wN(e)}`)}}async function zN(e,t){try{return await e.panelRpc.call(`speak-text`,t,{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return CN(wN(e))}}async function BN(e){let{synthesizeToWav:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);try{return{bytes:await t(e)}}catch(e){return CN(wN(e))}}async function VN(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 CN(wN(e))}}async function HN(e,t){return e.local?BN(t):VN(e,t)}async function UN(e,t){let n=await HN(e,t);return`exitCode`in n?n:{...ri(n.bytes),stderr:``,exitCode:0}}async function WN(e,t,n,r){let i=await HN(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 CN(`failed to write ${n}: ${wN(e)}`)}return{stdout:`wrote ${Math.max(1,Math.round(i.bytes.byteLength/1024))} KB to ${a}\n`,stderr:``,exitCode:0}}async function GN(e,t,n){let r;if(n.voiceName){let{resolved:t,error:i}=await FN(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&&!bS(t)?UN(e,i):n.outFile?WN(e,t,n.outFile,i):e.local?RN(i):zN(e,i)}function KN(){return S(`say`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return xN();let n={local:typeof window<`u`&&typeof speechSynthesis<`u`,panelRpc:y()};if(!n.local&&!n.panelRpc)return CN(`Web Speech API unavailable in this environment`);let r=await LN(n,e);if(r)return r;let i=jN(e);return`exitCode`in i?i:i.text?i.lang?GN(n,t,{...i,lang:i.lang}):CN(`-l language tag is required`):xN()})}function qN(){return S(`screencapture`,async(e,t)=>{let{runScreencapture:n}=await import(`./screencapture-run-Dt7lEfIp.js`);return n(e,t)})}function JN(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 YN=1e4;async function XN(e,t,n){let r={method:e,headers:he({"Content-Type":`application/json`}),signal:AbortSignal.timeout(YN)};n&&(r.body=JSON.stringify(n));try{let e=await fetch(me(`/api/secrets${t}`),r),n=await e.json().catch(()=>({}));return{ok:e.ok,status:e.status,data:n}}catch(e){return{ok:!1,status:0,data:{error:ZN(e)}}}}function ZN(e){let t=e instanceof Error?e.name:``;return t===`TimeoutError`||t===`AbortError`?`no response from the secret store within ${YN/1e3}s`:`secret store unreachable: ${e instanceof Error?e.message:String(e)}`}function QN(e,t){return`could not read ${e} secrets — ${t??`the bridge gave no reason`}`}function $N(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 eP(){return{async list(){let[e,t]=await Promise.all([XN(`GET`,``),XN(`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(QN(`saved`,iP(e.data)));if(t.ok)for(let e of t.data)n.push({name:e.name,domains:e.domains,persisted:!1});else r.push(QN(`session`,iP(t.data)));return{entries:n,warnings:r}},async getInfo(e){return $N(await this.list(),e)},async getMasked(e){let{ok:t,data:n}=await XN(`GET`,`/masked`);return t?n.find(t=>t.name===e)??null:null},async peek(e){let{ok:t,data:n}=await XN(`GET`,`/peek?name=${encodeURIComponent(e)}`);return t?n:null},async setSession(e,t,n){let{ok:r,data:i}=await XN(`POST`,`/session`,{name:e,value:t,domains:n});if(!r)throw Error(iP(i)??`failed to set session secret`)},async setPersisted(e,t,n){let{ok:r,data:i}=await XN(`POST`,``,{name:e,value:t,domains:n});if(!r)throw Error(iP(i)??`failed to persist secret`)},async setScope(e,t){let{ok:n,data:r}=await XN(`POST`,`/scope`,{name:e,domains:t});if(!n)throw Error(iP(r)??`failed to update scope`)},async delete(e){let{ok:t,status:n,data:r}=await XN(`DELETE`,`/${encodeURIComponent(e)}`);if(n===404)return{removed:!1};if(!t)throw Error(iP(r)??`failed to delete secret`);return{removed:!0,fromSession:r&&typeof r==`object`&&`fromSession`in r?!!r.fromSession:void 0}}}}function tP(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(QN(`saved`,e?.error)),n?.entries||i.push(QN(`session`,n?.error)),{entries:r,warnings:i}},async getInfo(e){return $N(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 nP(){return tP(e=>JN(e))}function rP(){return tP(e=>{let{type:t,...n}=e;return xe(t,n)})}function iP(e){if(e&&typeof e==`object`&&`error`in e){let t=e.error;if(typeof t==`string`)return t}}function aP(e){switch(e){case`extension-direct`:return nP();case`extension-delegate`:return rP();default:return eP()}}const oP=[`--domain`],sP=[`--persist`];function cP(){return`secret — manage secrets for the fetch proxy and mount backends
1956
1965
 
1957
1966
  No approval (session-only, in-memory, never persisted):
1958
1967
  secret set <name> <value> --domain <pat> Set a session secret. Free for a
@@ -1989,23 +1998,23 @@ Examples:
1989
1998
  secret peek OPENAI_KEY
1990
1999
  secret set GITHUB_TOKEN ghp_… --domain "api.github.com" --persist # prompts
1991
2000
  secret scope GITHUB_TOKEN --domain "api.github.com,*.github.com" # prompts
1992
- `}function iP(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 aP(e){return{stdout:``,stderr:`secret: ${e}\n`,exitCode:1}}const oP={persist:`persist secret`,scope:`edit secret scope`,value:`change secret value`},sP=new Set;function cP(e,t){if(e===t)return!0;try{return at(e).test(t)}catch{return!1}}function lP(e,t){for(let n of e)if(cP(n,t))return!0;return!1}function uP(e){return{stdout:``,stderr:`${ct(`secret`,e)}\n`,exitCode:1}}function dP(e){let t=ge(),n=e.isExtension??(t===`extension-direct`||t===`extension-delegate`),r=e.backend??eP(t),i=e.grants??sP,a=e.broker,o=()=>(a??=is(null),a);return{backend:r,inExtension:n,gate:async(e,t)=>{let n=`secret:${e}:${t}`;if(lP(i,n))return`ok`;let r=await o().requestApproval({kind:`secret`,detail:`${oP[e]}: ${t}`,suggestedPattern:n});if(r.decision===`deny`)return r;if(r.decision===`always`){let e=r.pattern?.trim();i.add(e&&cP(e,n)?e:n)}return`ok`},injectMaskedEnv:async t=>{if(e.setEnv&&hs(t))try{let n=await r.getMasked(t);n&&e.setEnv(t,n.maskedValue)}catch{}},clearMaskedEnv:t=>{e.unsetEnv&&hs(t)&&e.unsetEnv(t)}}}function fP(e){let t=P(e);if(t.length!==0)return t.endsWith(`\r
2001
+ `}function lP(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 uP(e){return{stdout:``,stderr:`secret: ${e}\n`,exitCode:1}}const dP={persist:`persist secret`,scope:`edit secret scope`,value:`change secret value`},fP=new Set;function pP(e,t){if(e===t)return!0;try{return ot(e).test(t)}catch{return!1}}function mP(e,t){for(let n of e)if(pP(n,t))return!0;return!1}function hP(e){return{stdout:``,stderr:`${lt(`secret`,e)}\n`,exitCode:1}}function gP(e){let t=_e(),n=e.isExtension??(t===`extension-direct`||t===`extension-delegate`),r=e.backend??aP(t),i=e.grants??fP,a=e.broker,o=()=>(a??=is(null),a);return{backend:r,inExtension:n,gate:async(e,t)=>{let n=`secret:${e}:${t}`;if(mP(i,n))return`ok`;let r=await o().requestApproval({kind:`secret`,detail:`${dP[e]}: ${t}`,suggestedPattern:n});if(r.decision===`deny`)return r;if(r.decision===`always`){let e=r.pattern?.trim();i.add(e&&pP(e,n)?e:n)}return`ok`},injectMaskedEnv:async t=>{if(e.setEnv&&hs(t))try{let n=await r.getMasked(t);n&&e.setEnv(t,n.maskedValue)}catch{}},clearMaskedEnv:t=>{e.unsetEnv&&hs(t)&&e.unsetEnv(t)}}}function _P(e){let t=P(e);if(t.length!==0)return t.endsWith(`\r
1993
2002
  `)?t.slice(0,-2):t.endsWith(`
1994
- `)?t.slice(0,-1):t}async function pP(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}):uP(i)}async function mP(e,t,n,r){if(await r.backend.getInfo(e)){let t=await r.gate(`value`,e);if(t!==`ok`)return uP(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 hP(e,t,n){let r=C(e.slice(1),{value:tP,bool:nP});if(`error`in r)return aP(r.error);let i=r.positionals[0];if(!i||i.startsWith(`-`))return{stdout:``,stderr:`secret: set requires a <name>
1995
- `,exitCode:1};let a=r.positionals[1],o=fP(t.stdin);if(a!==void 0&&o!==void 0)return{stdout:``,stderr:`secret: provide <value> as an argument OR via stdin, not both
2003
+ `)?t.slice(0,-1):t}async function vP(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}):hP(i)}async function yP(e,t,n,r){if(await r.backend.getInfo(e)){let t=await r.gate(`value`,e);if(t!==`ok`)return hP(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 bP(e,t,n){let r=C(e.slice(1),{value:oP,bool:sP});if(`error`in r)return uP(r.error);let i=r.positionals[0];if(!i||i.startsWith(`-`))return{stdout:``,stderr:`secret: set requires a <name>
2004
+ `,exitCode:1};let a=r.positionals[1],o=_P(t.stdin);if(a!==void 0&&o!==void 0)return{stdout:``,stderr:`secret: provide <value> as an argument OR via stdin, not both
1996
2005
  `,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]
1997
2006
  or pipe the value on stdin: echo "$TOKEN" | secret set <name> --domain <patterns>
1998
- `,exitCode:1};let c=iP(r.values.get(`--domain`));return c?r.bools.has(`--persist`)?pP(i,s,c,n):mP(i,s,c,n):{stdout:``,stderr:`secret: set requires --domain <patterns>
1999
- `,exitCode:1}}async function gP(e,t){let n=C(e.slice(1),{});if(`error`in n)return aP(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: get requires a <name>
2000
- `,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 _P(e,t){let n=C(e.slice(1),{});if(`error`in n)return aP(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: peek requires a <name>
2001
- `,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 vP(e,t){let n=C(e.slice(1),{value:tP});if(`error`in n)return aP(n.error);let r=n.positionals[0];if(!r||r.startsWith(`-`))return{stdout:``,stderr:`secret: scope requires a <name>
2002
- `,exitCode:1};let i=iP(n.values.get(`--domain`));if(!i)return{stdout:``,stderr:`secret: scope requires --domain <patterns>
2003
- `,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}):uP(a)}async function yP(e,t){let n=C(e.slice(1),{});if(`error`in n)return aP(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
2004
- `,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 bP(e,t,n){let r=C(e.slice(1),{});if(`error`in r)return aP(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 xP(e,t){let n=C(e.slice(1),{});if(`error`in n)return aP(n.error);let r=n.positionals[0],i=n.positionals[1];if(!r||!i)return{stdout:``,stderr:`secret: test requires <name> <url>
2005
- `,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?_a(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 SP(e,t){let n=C(e.slice(1),{});if(`error`in n)return aP(n.error);if(!t.inExtension)return{stdout:`secret: in CLI mode, edit ~/.slicc/secrets.env directly with your text editor.
2007
+ `,exitCode:1};let c=lP(r.values.get(`--domain`));return c?r.bools.has(`--persist`)?vP(i,s,c,n):yP(i,s,c,n):{stdout:``,stderr:`secret: set requires --domain <patterns>
2008
+ `,exitCode:1}}async function xP(e,t){let n=C(e.slice(1),{});if(`error`in n)return uP(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: get requires a <name>
2009
+ `,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 SP(e,t){let n=C(e.slice(1),{});if(`error`in n)return uP(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: peek requires a <name>
2010
+ `,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 CP(e,t){let n=C(e.slice(1),{value:oP});if(`error`in n)return uP(n.error);let r=n.positionals[0];if(!r||r.startsWith(`-`))return{stdout:``,stderr:`secret: scope requires a <name>
2011
+ `,exitCode:1};let i=lP(n.values.get(`--domain`));if(!i)return{stdout:``,stderr:`secret: scope requires --domain <patterns>
2012
+ `,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}):hP(a)}async function wP(e,t){let n=C(e.slice(1),{});if(`error`in n)return uP(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
2013
+ `,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 TP(e,t,n){let r=C(e.slice(1),{});if(`error`in r)return uP(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 EP(e,t){let n=C(e.slice(1),{});if(`error`in n)return uP(n.error);let r=n.positionals[0],i=n.positionals[1];if(!r||!i)return{stdout:``,stderr:`secret: test requires <name> <url>
2014
+ `,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?_a(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 DP(e,t){let n=C(e.slice(1),{});if(`error`in n)return uP(n.error);if(!t.inExtension)return{stdout:`secret: in CLI mode, edit ~/.slicc/secrets.env directly with your text editor.
2006
2015
  (changes are picked up on the next request — no restart needed)
2007
2016
  `,stderr:``,exitCode:0};try{return await chrome.runtime.openOptionsPage(),{stdout:`Opened Mount Secrets options page in a new tab.
2008
- `,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 CP(e,t,n){let r=e[0];switch(r){case`set`:return hP(e,t,n);case`get`:case`read`:return gP(e,n);case`peek`:return _P(e,n);case`scope`:return vP(e,n);case`list`:return yP(e,n);case`delete`:case`rm`:return bP(e,r,n);case`test`:return xP(e,n);case`edit`:return SP(e,n);default:return{stdout:``,stderr:`secret: unknown command "${r}"\n`,exitCode:1}}}function wP(e={}){let t=dP(e);return S(`secret`,async(e,n)=>{if(e.length===0||w(e,{valueFlags:tP}))return{stdout:rP(),stderr:``,exitCode:0};try{return await CP(e,n,t)}catch(e){return{stdout:``,stderr:`secret: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function TP(){return null}function EP(){return null}function DP(){return{stdout:`usage: serve [--entry <relative-path>] [--ttl <duration>] [--bridge | --no-bridge] [--max-tabs <n>] [--quiet] [--stop <token>] [--list] <directory>
2017
+ `,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 OP(e,t,n){let r=e[0];switch(r){case`set`:return bP(e,t,n);case`get`:case`read`:return xP(e,n);case`peek`:return SP(e,n);case`scope`:return CP(e,n);case`list`:return wP(e,n);case`delete`:case`rm`:return TP(e,r,n);case`test`:return EP(e,n);case`edit`:return DP(e,n);default:return{stdout:``,stderr:`secret: unknown command "${r}"\n`,exitCode:1}}}function kP(e={}){let t=gP(e);return S(`secret`,async(e,n)=>{if(e.length===0||w(e,{valueFlags:oP}))return{stdout:cP(),stderr:``,exitCode:0};try{return await OP(e,n,t)}catch(e){return{stdout:``,stderr:`secret: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function AP(){return null}function jP(){return null}function MP(){return{stdout:`usage: serve [--entry <relative-path>] [--ttl <duration>] [--bridge | --no-bridge] [--max-tabs <n>] [--quiet] [--stop <token>] [--list] <directory>
2009
2018
  serve --logs [<token>] [--lines <n>]
2010
2019
  serve --truncate [<token>]
2011
2020
 
@@ -2041,28 +2050,28 @@ Limits and lifetime:
2041
2050
  its TTL. Either can be removed sooner with \`serve --stop\`.
2042
2051
  - <token> is the "Preview token" printed at mint time or the TOKEN column
2043
2052
  of \`serve --list\`; \`--stop\` also accepts the preview URL.
2044
- `,stderr:``,exitCode:0}}function OP(e){return`error`in e}function kP(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
2045
- `}:(n.lines=i,{skip:+(e===`--lines`)})}}function AP(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
2053
+ `,stderr:``,exitCode:0}}function NP(e){return`error`in e}function PP(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
2054
+ `}:(n.lines=i,{skip:+(e===`--lines`)})}}function FP(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
2046
2055
  `};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)
2047
2056
  `};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.
2048
2057
  `}:(n.ttlMs=a,{skip:+(e===`--ttl`)}):{error:`serve: --ttl must be a positive whole duration (m, h, d, or w)
2049
- `}}function jP(e,t){let n={"--bridge":`bridge`,"--no-bridge":`noBridge`,"--project":`project`,"--quiet":`quiet`}[e];if(n)return t[n]=!0,{skip:0}}function MP(e,t,n){let r=AP(e,t,n);if(r)return r;let i=jP(e,n);if(i)return i;if(e===`--entry`)return t?(n.entry=t,{skip:1}):{error:`serve: missing value for --entry
2058
+ `}}function IP(e,t){let n={"--bridge":`bridge`,"--no-bridge":`noBridge`,"--project":`project`,"--quiet":`quiet`}[e];if(n)return t[n]=!0,{skip:0}}function LP(e,t,n){let r=FP(e,t,n);if(r)return r;let i=IP(e,n);if(i)return i;if(e===`--entry`)return t?(n.entry=t,{skip:1}):{error:`serve: missing value for --entry
2050
2059
  `};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
2051
- `};if(e.startsWith(`--stop=`))return n.stop=e.slice(7),{skip:0};let a=kP(e,t,n);if(a)return a;if(e===`--max-tabs`){if(!t)return{error:`serve: missing value for --max-tabs
2060
+ `};if(e.startsWith(`--stop=`))return n.stop=e.slice(7),{skip:0};let a=PP(e,t,n);if(a)return a;if(e===`--max-tabs`){if(!t)return{error:`serve: missing value for --max-tabs
2052
2061
  `};let e=Number.parseInt(t,10);return!Number.isFinite(e)||e<=0?{error:`serve: --max-tabs must be a positive integer
2053
2062
  `}:(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
2054
2063
  `}:(n.maxTabs=t,{skip:0})}return e.startsWith(`-`)?{error:`serve: unknown option: ${e}\n`}:n.directory?{error:`serve: expected a single directory argument
2055
- `}:(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=MP(e[n],e[n+1],t);if(OP(r))return{...t,error:r.error};n+=r.skip}return t}async function PP(e,t,n,r){if(!rr(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=ur(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 FP(e){return`exitCode`in e}async function IP(e){let t=ha(e)??e,n,r=EP();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
2056
- `,exitCode:1};if(n.webhookId){let e=await ey();if(!e)return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but the preview-bridge webhook could not be cleaned up (lick manager unavailable). It is a live endpoint — delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0};try{await e.deleteWebhook(n.webhookId)}catch(e){return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but webhook cleanup failed: ${e instanceof Error?e.message:String(e)}. Delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0}}}return{stdout:`Preview revoked: ${t}\n`,stderr:``,exitCode:0}}async function LP(){let e=EP();if(e){let t=(await e({type:`list`})).previews??[];return t.length===0?{stdout:`No active previews
2057
- `,stderr:``,exitCode:0}:{stdout:zP(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
2058
- `,stderr:``,exitCode:0}:{stdout:zP(n),stderr:``,exitCode:0}}function RP(e){return e.mode===`persistent`?e.state===`pending`?`uploading`:`persistent`:`live`}function zP(e){return`Active previews:\n TOKEN MODE EXPIRES URL ROOT CREATED\n${e.map(e=>` ${e.previewToken} ${RP(e)} ${e.expiresAt??`-`} ${e.url} ${e.servedRoot} ${e.createdAt}\n`).join(``)}`}function BP(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 VP(e){let t,n=EP();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.
2059
- `,stderr:``,exitCode:0}:{stdout:`Preview lifecycle records (oldest to newest):\n${t.map(BP).join(``)}`,stderr:``,exitCode:0}}async function HP(e){let t,n,r=EP();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 UP(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:Jn(s)})}return n}function WP(e){return e().catch(e=>({stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}))}async function GP(e){let t=TP();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 KP(e,t){if(t)return t.createPage(e);typeof window<`u`&&typeof window.open==`function`&&window.open(e,`_blank`,`noopener,noreferrer`)}async function qP(e,t){if(!e)return{ok:!0};let n=await ey();if(!n)return{ok:!1,result:{stdout:``,stderr:`${t}serve: --bridge requires an active lick manager\n`,exitCode:1}};try{return{ok:!0,webhookId:(await n.createWebhook(`preview-bridge`)).id}}catch(e){return{ok:!1,result:{stdout:``,stderr:`${t}serve: webhook creation failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}}async function JP(e,t,n,r,i,a,o){let s;try{s=await GP({entryPath:n,servedRoot:t,bridge:e.bridge,noBridge:e.ttlMs!==void 0||e.noBridge,maxTabs:e.maxTabs,quiet:e.quiet,webhookId:r,ttlMs:e.ttlMs,snapshotFiles:a})}catch(e){if(r){let e=await ey();e&&await e.deleteWebhook(r).catch(()=>{})}return{stdout:``,stderr:`${i}serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let c=await KP(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 YP(e){if(e.stop){let t=e.stop;return WP(()=>IP(t))}if(e.list)return WP(()=>LP());if(e.logs&&e.truncate)return{stdout:``,stderr:`serve: --logs and --truncate are mutually exclusive
2064
+ `}:(n.directory=e,{skip:0})}function RP(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=LP(e[n],e[n+1],t);if(NP(r))return{...t,error:r.error};n+=r.skip}return t}async function zP(e,t,n,r){if(!ir(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 BP(e){return`exitCode`in e}async function VP(e){let t=ha(e)??e,n,r=jP();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
2065
+ `,exitCode:1};if(n.webhookId){let e=await ey();if(!e)return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but the preview-bridge webhook could not be cleaned up (lick manager unavailable). It is a live endpoint — delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0};try{await e.deleteWebhook(n.webhookId)}catch(e){return{stdout:`Preview revoked: ${t}\n`,stderr:`serve: preview revoked, but webhook cleanup failed: ${e instanceof Error?e.message:String(e)}. Delete it with \`webhook delete ${n.webhookId}\`.\n`,exitCode:0}}}return{stdout:`Preview revoked: ${t}\n`,stderr:``,exitCode:0}}async function HP(){let e=jP();if(e){let t=(await e({type:`list`})).previews??[];return t.length===0?{stdout:`No active previews
2066
+ `,stderr:``,exitCode:0}:{stdout:WP(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
2067
+ `,stderr:``,exitCode:0}:{stdout:WP(n),stderr:``,exitCode:0}}function UP(e){return e.mode===`persistent`?e.state===`pending`?`uploading`:`persistent`:`live`}function WP(e){return`Active previews:\n TOKEN MODE EXPIRES URL ROOT CREATED\n${e.map(e=>` ${e.previewToken} ${UP(e)} ${e.expiresAt??`-`} ${e.url} ${e.servedRoot} ${e.createdAt}\n`).join(``)}`}function GP(e){let t=e.announced?`announced`:`suppressed`,n=e.previewToken??`-`,r=e.lifecycle===`connected`?`origin=${e.origin??`-`} userAgent=${e.userAgent??`-`}`:`reason=${e.reason??`-`}`;return`${e.timestamp} ${e.lifecycle.padEnd(12)} ${t.padEnd(10)} preview=${n} conn=${e.connId} ${r}\n`}async function KP(e){let t,n=jP();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.
2068
+ `,stderr:``,exitCode:0}:{stdout:`Preview lifecycle records (oldest to newest):\n${t.map(GP).join(``)}`,stderr:``,exitCode:0}}async function qP(e){let t,n,r=jP();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 JP(e,t){let n=[],r=0;for await(let i of e.walk(t)){if(n.length>=1e3)throw Error(`persistent preview exceeds 1000 file limit`);let a=await e.readFile(i,{encoding:`binary`}),o=typeof a==`string`?new TextEncoder().encode(a):a,s=i.slice(t===`/`?1:t.length+1);if(o.byteLength>26214400)throw Error(`preview file exceeds 25 MiB limit: ${s}`);if(r+=o.byteLength,r>52428800)throw Error(`persistent preview exceeds 50 MiB total limit`);n.push({path:s,content:o,mime:Yn(s)})}return n}function YP(e){return e().catch(e=>({stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}))}async function XP(e){let t=AP();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 ZP(e,t){if(t)return t.createPage(e);typeof window<`u`&&typeof window.open==`function`&&window.open(e,`_blank`,`noopener,noreferrer`)}async function QP(e,t){if(!e)return{ok:!0};let n=await ey();if(!n)return{ok:!1,result:{stdout:``,stderr:`${t}serve: --bridge requires an active lick manager\n`,exitCode:1}};try{return{ok:!0,webhookId:(await n.createWebhook(`preview-bridge`)).id}}catch(e){return{ok:!1,result:{stdout:``,stderr:`${t}serve: webhook creation failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}}async function $P(e,t,n,r,i,a,o){let s;try{s=await XP({entryPath:n,servedRoot:t,bridge:e.bridge,noBridge:e.ttlMs!==void 0||e.noBridge,maxTabs:e.maxTabs,quiet:e.quiet,webhookId:r,ttlMs:e.ttlMs,snapshotFiles:a})}catch(e){if(r){let e=await ey();e&&await e.deleteWebhook(r).catch(()=>{})}return{stdout:``,stderr:`${i}serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let c=await ZP(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 eF(e){if(e.stop){let t=e.stop;return YP(()=>VP(t))}if(e.list)return YP(()=>HP());if(e.logs&&e.truncate)return{stdout:``,stderr:`serve: --logs and --truncate are mutually exclusive
2060
2069
  `,exitCode:1};if(e.lines!==void 0&&!e.logs)return{stdout:``,stderr:`serve: --lines requires --logs
2061
- `,exitCode:1};if(e.logs){let t=typeof e.logs==`string`?e.logs:void 0;return WP(()=>VP({previewToken:t,lines:e.lines}))}if(e.truncate){let t=typeof e.truncate==`string`?e.truncate:void 0;return WP(()=>HP(t))}}function XP(e){if(e.ttlMs!==void 0&&e.bridge)return{stdout:``,stderr:`serve: --ttl cannot be combined with --bridge
2070
+ `,exitCode:1};if(e.logs){let t=typeof e.logs==`string`?e.logs:void 0;return YP(()=>KP({previewToken:t,lines:e.lines}))}if(e.truncate){let t=typeof e.truncate==`string`?e.truncate:void 0;return YP(()=>qP(t))}}function tF(e){if(e.ttlMs!==void 0&&e.bridge)return{stdout:``,stderr:`serve: --ttl cannot be combined with --bridge
2062
2071
  `,exitCode:1};if(e.ttlMs!==void 0&&e.maxTabs!==void 0)return{stdout:``,stderr:`serve: --ttl cannot be combined with --max-tabs
2063
- `,exitCode:1}}async function ZP(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return UP(t,n)}}async function QP(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return DP();let i=NP(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await YP(i);if(a)return a;if(!i.directory)return DP();let o=XP(i);if(o)return o;let s=await PP(i.directory,i.entry,t.fs,t.cwd);if(FP(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await ZP(i,r,c)}catch(e){return{stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let d=i.project?`serve: --project is obsolete; ignored (root-absolute paths work natively under unified preview)
2064
- `:``,f=await qP(!i.noBridge&&i.bridge,d);return f.ok?JP(i,c,l,f.webhookId,d,u,n):f.result}function $P(e,t){return S(`serve`,(n,r)=>QP(n,r,e,t))}const eF=`usage: session export [--id <id>] [--output <path>]
2065
- `;function tF(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 nF(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${eF}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${eF}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${eF}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${eF}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${eF}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${eF}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function rF(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||bt(r)!==a.sha256)throw new Sa(`transfer-corrupt`);return r}async function iF(e,t){let n=nF(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=tF(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${eF}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await cs().export(a,{}),n=await rF(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 Sa?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function aF(){return S(`session`,async(e,t)=>{if(e[0]===`export`&&!w(e))return iF(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-mbpebhz_.js`);return n(e,t,eF)})}function oF(){return S(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-cvQKad0O.js`);return await n(e,t)})}const sF=`leader`;function cF(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function lF(e){return+!!e.leader+e.followers.length}function uF(){return{stdout:`usage: sprinkle <subcommand> [args]
2072
+ `,exitCode:1}}async function nF(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return JP(t,n)}}async function rF(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return MP();let i=RP(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await eF(i);if(a)return a;if(!i.directory)return MP();let o=tF(i);if(o)return o;let s=await zP(i.directory,i.entry,t.fs,t.cwd);if(BP(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await nF(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)
2073
+ `:``,f=await QP(!i.noBridge&&i.bridge,d);return f.ok?$P(i,c,l,f.webhookId,d,u,n):f.result}function iF(e,t){return S(`serve`,(n,r)=>rF(n,r,e,t))}const aF=`usage: session export [--id <id>] [--output <path>]
2074
+ `;function oF(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 sF(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${aF}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${aF}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${aF}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${aF}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${aF}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${aF}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function cF(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||xt(r)!==a.sha256)throw new Sa(`transfer-corrupt`);return r}async function lF(e,t){let n=sF(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=oF(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${aF}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await cs().export(a,{}),n=await cF(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 Sa?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function uF(){return S(`session`,async(e,t)=>{if(e[0]===`export`&&!w(e))return lF(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-DS6mmefG.js`);return n(e,t,aF)})}function dF(){return S(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-cvQKad0O.js`);return await n(e,t)})}const fF=`leader`;function pF(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function mF(e){return+!!e.leader+e.followers.length}function hF(){return{stdout:`usage: sprinkle <subcommand> [args]
2066
2075
 
2067
2076
  list [--runtime <id>] List sprinkles + an instance line per runtime
2068
2077
  open <name> Open a sprinkle by name
@@ -2080,22 +2089,22 @@ Limits and lifetime:
2080
2089
  chat <html> Show inline HTML in chat (Tool UI)
2081
2090
  Use data-action="name" on buttons for callbacks
2082
2091
  Pipe HTML: echo "<div>...</div>" | sprinkle chat
2083
- `,stderr:``,exitCode:0}}function dF(){return globalThis.__slicc_sprinkleManager??null}function J(e,t){return{stdout:``,stderr:`sprinkle ${e}: ${t}\n`,exitCode:1}}function fF(){return[sF,...ee().map(e=>e.runtimeId)]}function pF(e){return`unknown runtime "${e}"\nknown runtimes: ${fF().join(`, `)}\nRun \`host\` to see connected followers.`}async function mF(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
2084
- `,exitCode:1};let r=await we({html:n,onAction:async(e,t)=>({action:e,data:t})});return r===null?{stdout:``,stderr:`sprinkle chat: not in tool execution context
2092
+ `,stderr:``,exitCode:0}}function gF(){return globalThis.__slicc_sprinkleManager??null}function J(e,t){return{stdout:``,stderr:`sprinkle ${e}: ${t}\n`,exitCode:1}}function _F(){return[fF,...te().map(e=>e.runtimeId)]}function vF(e){return`unknown runtime "${e}"\nknown runtimes: ${_F().join(`, `)}\nRun \`host\` to see connected followers.`}async function yF(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
2093
+ `,exitCode:1};let r=await Te({html:n,onAction:async(e,t)=>({action:e,data:t})});return r===null?{stdout:``,stderr:`sprinkle chat: not in tool execution context
2085
2094
  `,exitCode:1}:{stdout:JSON.stringify(r)+`
2086
- `,stderr:``,exitCode:0}}function hF(e){return e.map(e=>{let t=e.runtime?` (${e.runtime})`:``;return` instance: ${e.runtimeId}${t}`})}function gF(e){return[...e.map(e=>({name:e,runtimeId:sF})),...cF()]}async function _F(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&&!fF().includes(r))return J(`list`,pF(r));await e.refresh();let i=e.available();if(i.length===0)return{stdout:`No .shtml sprinkles found.
2087
- `,stderr:``,exitCode:0};let a=new Set(e.opened()),o=gF([...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(...hF(t))}return s.length===0?{stdout:`No sprinkles are open on runtime "${r}".\n`,stderr:``,exitCode:0}:{stdout:s.join(`
2095
+ `,stderr:``,exitCode:0}}function bF(e){return e.map(e=>{let t=e.runtime?` (${e.runtime})`:``;return` instance: ${e.runtimeId}${t}`})}function xF(e){return[...e.map(e=>({name:e,runtimeId:fF})),...pF()]}async function SF(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&&!_F().includes(r))return J(`list`,vF(r));await e.refresh();let i=e.available();if(i.length===0)return{stdout:`No .shtml sprinkles found.
2096
+ `,stderr:``,exitCode:0};let a=new Set(e.opened()),o=xF([...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(...bF(t))}return s.length===0?{stdout:`No sprinkles are open on runtime "${r}".\n`,stderr:``,exitCode:0}:{stdout:s.join(`
2088
2097
  `)+`
2089
- `,stderr:``,exitCode:0}}function vF(e,t){return!t||Do(e)?null:(Oo(e,t),Do(e)===t?t:null)}async function yF(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=Ri(void 0,n),o=vF(i,a);try{a?await e.open(i,void 0,{lickOriginTarget:a}):await e.open(i)}catch(e){return o&&ko(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 bF(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 xF(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 SF(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 CF(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=Ao(),t=Object.entries(e);return t.length===0?{stdout:`No sprinkle routes configured (all licks go to cone).
2098
+ `,stderr:``,exitCode:0}}function CF(e,t){return!t||Do(e)?null:(Oo(e,t),Do(e)===t?t:null)}async function wF(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=zi(void 0,n),o=CF(i,a);try{a?await e.open(i,void 0,{lickOriginTarget:a}):await e.open(i)}catch(e){return o&&ko(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 TF(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 EF(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 DF(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 OF(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=Ao(),t=Object.entries(e);return t.length===0?{stdout:`No sprinkle routes configured (all licks go to cone).
2090
2099
  `,stderr:``,exitCode:0}:{stdout:`Sprinkle routes (applied to every runtime — the leader resolves the
2091
2100
  route for follower-forwarded licks too):
2092
2101
  `+t.map(([e,t])=>` ${e} -> ${t}`).join(`
2093
2102
  `)+`
2094
- `,stderr:``,exitCode:0}}if(t.bools.has(`--clear`))return ko(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=Do(n);return e?{stdout:`${n} -> ${e}\n`,stderr:``,exitCode:0}:{stdout:`${n} -> cone (default)\n`,stderr:``,exitCode:0}}return Oo(n,r),{stdout:`Sprinkle "${n}" lick events will route to scoop "${r}".\n`,stderr:``,exitCode:0}}function wF(e){let t=[];return e.leader&&t.push(sF),t.push(...e.followers),t.join(`, `)}async function TF(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&&!fF().includes(o))return J(`send`,pF(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`,pF(s.unknownRuntime));let c=lF(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`} (${wF(s)}).\n`,stderr:``,exitCode:0}}function EF(){return S(`sprinkle`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return uF();let n=e[0];if(w(e.slice(1),{valueFlags:[`--scoop`,`--runtime`]}))return{stdout:$e(`sprinkle`,n,uF().stdout),stderr:``,exitCode:0};if(n===`chat`)return mF(Qe(e),t);let r=dF();if(!r)return{stdout:``,stderr:`sprinkle: sprinkle manager not initialized
2095
- `,exitCode:1};switch(n){case`list`:return _F(r,e);case`open`:return yF(r,e,t.env);case`close`:return bF(r,e);case`reload`:return xF(r,e);case`refresh`:return SF(r,e);case`route`:return CF(e);case`send`:return TF(r,e);default:return{stdout:``,stderr:`sprinkle: unknown subcommand "${n}"\n`,exitCode:1}}})}function DF(){return{stdout:`usage: sqlite3 [database] [sql]
2096
- `,stderr:``,exitCode:0}}function OF(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 kF(e,t){return e===`:memory:`?e:t.fs.resolvePath(t.cwd,e)}async function AF(e,t,n){return t===`:memory:`||!await n.fs.exists(t)?new e.Database:new e.Database(await n.fs.readFileBuffer(t))}async function jF(e,t,n){t!==`:memory:`&&await n.fs.writeFile(t,e.export())}function MF(e){let t=e.flatMap(e=>e.values.map(e=>e.map(nr).join(`|`)));return t.length>0?`${t.join(`
2097
- `)}\n`:``}async function NF(e,t,n){let r=await lr(),i=kF(e,n),a=await AF(r,i,n),o=a.exec(t);return await jF(a,i,n),a.close(),MF(o)}function PF(e,t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}function FF(e=`sqlite3`){return S(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return DF();let{database:r,sql:i}=OF(t,n);if(!i)return PF(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 PF(e,t)}})}function IF(e){return{stdout:``,stderr:e.endsWith(`
2098
- `)?e:`${e}\n`,exitCode:1}}function LF(){return{stdout:`ssh - run a command on a connected tray follower
2103
+ `,stderr:``,exitCode:0}}if(t.bools.has(`--clear`))return ko(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=Do(n);return e?{stdout:`${n} -> ${e}\n`,stderr:``,exitCode:0}:{stdout:`${n} -> cone (default)\n`,stderr:``,exitCode:0}}return Oo(n,r),{stdout:`Sprinkle "${n}" lick events will route to scoop "${r}".\n`,stderr:``,exitCode:0}}function kF(e){let t=[];return e.leader&&t.push(fF),t.push(...e.followers),t.join(`, `)}async function AF(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&&!_F().includes(o))return J(`send`,vF(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`,vF(s.unknownRuntime));let c=mF(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`} (${kF(s)}).\n`,stderr:``,exitCode:0}}function jF(){return S(`sprinkle`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return hF();let n=e[0];if(w(e.slice(1),{valueFlags:[`--scoop`,`--runtime`]}))return{stdout:et(`sprinkle`,n,hF().stdout),stderr:``,exitCode:0};if(n===`chat`)return yF($e(e),t);let r=gF();if(!r)return{stdout:``,stderr:`sprinkle: sprinkle manager not initialized
2104
+ `,exitCode:1};switch(n){case`list`:return SF(r,e);case`open`:return wF(r,e,t.env);case`close`:return TF(r,e);case`reload`:return EF(r,e);case`refresh`:return DF(r,e);case`route`:return OF(e);case`send`:return AF(r,e);default:return{stdout:``,stderr:`sprinkle: unknown subcommand "${n}"\n`,exitCode:1}}})}function MF(){return{stdout:`usage: sqlite3 [database] [sql]
2105
+ `,stderr:``,exitCode:0}}function NF(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 PF(e,t){return e===`:memory:`?e:t.fs.resolvePath(t.cwd,e)}async function FF(e,t,n){return t===`:memory:`||!await n.fs.exists(t)?new e.Database:new e.Database(await n.fs.readFileBuffer(t))}async function IF(e,t,n){t!==`:memory:`&&await n.fs.writeFile(t,e.export())}function LF(e){let t=e.flatMap(e=>e.values.map(e=>e.map(rr).join(`|`)));return t.length>0?`${t.join(`
2106
+ `)}\n`:``}async function RF(e,t,n){let r=await ur(),i=PF(e,n),a=await FF(r,i,n),o=a.exec(t);return await IF(a,i,n),a.close(),LF(o)}function zF(e,t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}function BF(e=`sqlite3`){return S(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return MF();let{database:r,sql:i}=NF(t,n);if(!i)return zF(e,`interactive mode is not supported; provide SQL as argument or stdin`);try{return{stdout:await RF(r,i,n),stderr:``,exitCode:0}}catch(t){return zF(e,t)}})}function VF(e){return{stdout:``,stderr:e.endsWith(`
2107
+ `)?e:`${e}\n`,exitCode:1}}function HF(){return{stdout:`ssh - run a command on a connected tray follower
2099
2108
 
2100
2109
  Usage: ssh [--cwd <dir>] [--timeout <seconds>] <runtime-id> <command...>
2101
2110
  ssh --list
@@ -2118,11 +2127,11 @@ Examples:
2118
2127
  ssh --list
2119
2128
  ssh follower-abc123 "uname -a"
2120
2129
  ssh --cwd /tmp follower-abc123 "ls -la"
2121
- `,stderr:``,exitCode:0}}function RF(e){let t=e.filter(e=>e.exec);if(t.length===0)return`No exec-capable followers connected.
2130
+ `,stderr:``,exitCode:0}}function UF(e){let t=e.filter(e=>e.exec);if(t.length===0)return`No exec-capable followers connected.
2122
2131
  Start one with: slicc <join-url> follow sh -c
2123
2132
  `;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(`
2124
- `)}\n`}function zF(e){if(e.stdin===void 0)return;let n=ei(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 BF(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 VF(){return S(`ssh`,async(e,t)=>{let n=BF(e);if(`help`in n)return LF();if(`error`in n)return IF(n.error);if(n.list||n.runtimeId===void 0)return{stdout:RF(ee()),stderr:``,exitCode:0};if(!n.command)return IF(`ssh: missing command
2125
- Usage: ssh <runtime-id> <command...>`);let r=y();if(!r)return IF(`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:zF(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 IF(`ssh: ${e instanceof Error?e.message:String(e)}`)}finally{t.signal?.removeEventListener(`abort`,a)}})}function HF(e){return{stdout:``,stderr:`${ct(`sudo`,e)}\n`,exitCode:1}}function UF(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...]
2133
+ `)}\n`}function WF(e){if(e.stdin===void 0)return;let n=ti(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 GF(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 KF(){return S(`ssh`,async(e,t)=>{let n=GF(e);if(`help`in n)return HF();if(`error`in n)return VF(n.error);if(n.list||n.runtimeId===void 0)return{stdout:UF(te()),stderr:``,exitCode:0};if(!n.command)return VF(`ssh: missing command
2134
+ Usage: ssh <runtime-id> <command...>`);let r=y();if(!r)return VF(`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:WF(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 VF(`ssh: ${e instanceof Error?e.message:String(e)}`)}finally{t.signal?.removeEventListener(`abort`,a)}})}function qF(e){return{stdout:``,stderr:`${lt(`sudo`,e)}\n`,exitCode:1}}function JF(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...]
2126
2135
  `,exitCode:1};if(e[0]===`--help`||e[0]===`-h`)return{stdout:`usage: sudo <command> [args...]
2127
2136
 
2128
2137
  Request human approval to run <command> with elevation. If approved, the
@@ -2136,14 +2145,14 @@ Options:
2136
2145
  -h, --help Show this help message and exit.
2137
2146
  `,stderr:``,exitCode:0};if(!t)return{stdout:``,stderr:`sudo: command-level approval is not configured
2138
2147
  `,exitCode:1};if(!i.exec)return{stdout:``,stderr:`sudo: cannot dispatch inner command in this context
2139
- `,exitCode:1};let a=Yp(e[0],e.slice(1)),o=i.env?.get($p),s=await t.requestApproval({kind:`command`,detail:a,...o?{reason:o}:{}});if(s.decision===`deny`)return HF(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 WF(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 GF(e,t){return e.fs.lstat?e.fs.lstat(t):e.fs.stat(t)}function KF(e,t){return e.some(e=>/^-[^-]/.test(e)&&e.slice(1).includes(t))}async function qF(e,t,n){let r=e.fs.resolvePath(e.cwd,t);try{let i=await GF(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}': ${WF(e)}\n`}}}function JF(){return S(`rm`,async(e,t)=>{let n={recursive:KF(e,`r`)||KF(e,`R`)||e.includes(`--recursive`),force:KF(e,`f`)||e.includes(`--force`),verbose:KF(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
2140
- `,exitCode:1};let i=await Promise.all(r.map(e=>qF(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 YF(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 XF(e){let t={follow:!1,paths:[]};for(let n=0;n<e.length;n++){let r=e[n];r===`-L`||r===`--dereference`?t.follow=!0:r===`-c`&&e[n+1]?t.format=e[++n]:r.startsWith(`--format=`)?t.format=r.slice(9):r.startsWith(`-`)||t.paths.push(r)}return t}async function ZF(e,t,n){try{let r=e.fs.resolvePath(e.cwd,t),i=n.follow?await e.fs.stat(r):await GF(e,r);return{stdout:n.format?`${YF(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 QF(){return S(`stat`,async(e,t)=>{let n=XF(e);if(n.paths.length===0)return{stdout:``,stderr:`stat: missing operand
2141
- `,exitCode:1};let r=await Promise.all(n.paths.map(e=>ZF(t,e,n))),i=r.map(e=>e.stdout).join(``),a=r.map(e=>e.stderr).join(``);return{stdout:i,stderr:a,exitCode:+!!a}})}function $F(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n<=0?`/`:t.slice(0,n)}async function eI(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 GF(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}': ${WF(e)}\n`}}if(!n||s===i.length-1)return{stdout:o,stderr:``};a=$F(a)}return{stdout:o,stderr:``}}function tI(){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
2142
- `,exitCode:1};let a=await Promise.all(i.map(e=>eI(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 nI(){return{stdout:`usage: tar (-c|-x|-t) [-zv] -f <archive> [-C <dir>] [paths...]
2143
- `,stderr:``,exitCode:0}}function rI(e){return{stdout:``,stderr:`tar: ${e}\n`,exitCode:1}}function iI(e,t){if(e.mode)return rI(`exactly one of -c, -x, or -t is required`);e.mode=t}function aI(e,t,n){if(n)return[n,t];let r=e[t+1];return r===void 0?void 0:[r,t+1]}const oI={c:`create`,x:`extract`,t:`list`};function sI(e,t,n,r,i){let a=oI[e];if(a)return{nextIndex:r,error:iI(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:rI(`unsupported option -${e}`)};let o=aI(n,r,t);return o?(e===`f`?i.archive=o[0]:i.directory=o[0],{nextIndex:o[1],consumedValue:!0}):{nextIndex:r,error:rI(`option -${e} requires an argument`)}}function cI(e,t,n){let r=e[t];for(let i=1;i<r.length;i++){let a=sI(r[i],r.slice(i+1),e,t,n);if(a.error||a.consumedValue)return a}return{nextIndex:t}}function lI(e){let t={gzip:!1,verbose:!1,directory:`.`,paths:[]};for(let n=0;n<e.length;n++){let r=e[n];if(!r.startsWith(`-`)||r===`-`){t.paths.push(r);continue}if(r.startsWith(`--`))return rI(`unsupported option ${r}`);let i=cI(e,n,t);if(i.error)return i.error;n=i.nextIndex}return t}function uI(e,t){let n=e.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^(?:\.\/)+/,``);return n?n===`.`?`.`:n.replace(/\/+$/,``):er(t)}async function dI(e,t,n,r){let i=await e.fs.stat(t);if(i.isFile){r.push({path:n,bytes:await e.fs.readFileBuffer(t)});return}if(!i.isDirectory)throw Error(`unsupported file type: ${t}`);let a=n.endsWith(`/`)?n:`${n}/`;r.push({path:a,bytes:new Uint8Array,directory:!0});for(let n of await e.fs.readdir(t))await dI(e,$n(t,n),`${a}${n}`,r)}function fI(e,t){let n=e.length>=2&&e[0]===31&&e[1]===139,r=t||n?Xi(e):e;return Gi(r,{stripNpmPrefix:!1,includeDirectories:!0,preserveRawPaths:!0})}function pI(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 cr(t,i)?i:void 0}async function mI(e,t){if(e.paths.length===0)return rI(`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 dI(t,e,uI(i,e),n)}let i=t.fs.resolvePath(t.cwd,e.archive),a=Qi(n);return await t.fs.writeFile(i,e.gzip?Vi(a):a),{stdout:e.verbose?`${n.map(e=>e.path).join(`
2144
- `)}\n`:``,stderr:``,exitCode:0}}async function hI(e,t){if(e.paths.length>0)return rI(`${e.mode} mode does not accept input paths`);let n=t.fs.resolvePath(t.cwd,e.archive),r=fI(await t.fs.readFileBuffer(n),e.gzip);if(e.mode===`list`){let e=r.map(e=>e.path).join(`
2145
- `);return{stdout:e?`${e}\n`:``,stderr:``,exitCode:0}}let i=t.fs.resolvePath(t.cwd,e.directory);await t.fs.mkdir(i,{recursive:!0});let a=[];for(let e of r){let n=pI(t,i,e.path);if(!n)return rI(`blocked suspicious path ${e.path}`);if(e.directory)await t.fs.mkdir(n,{recursive:!0});else{let r=ar(n);r!==`/`&&await t.fs.mkdir(r,{recursive:!0}),await t.fs.writeFile(n,e.bytes)}a.push(e.path)}return{stdout:e.verbose?`${a.join(`
2146
- `)}\n`:``,stderr:``,exitCode:0}}function gI(){return S(`tar`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return nI();let n=lI(e);return`exitCode`in n?n:n.mode?n.archive?n.mode===`list`&&n.directory!==`.`?rI(`-C is only supported in create or extract mode`):n.mode===`create`?mI(n,t):hI(n,t):rI(`option -f requires an archive path`):rI(`exactly one of -c, -x, or -t is required`)})}var _I=`/**
2148
+ `,exitCode:1};let a=Yp(e[0],e.slice(1)),o=i.env?.get($p),s=await t.requestApproval({kind:`command`,detail:a,...o?{reason:o}:{}});if(s.decision===`deny`)return qF(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 YF(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 XF(e,t){return e.fs.lstat?e.fs.lstat(t):e.fs.stat(t)}function ZF(e,t){return e.some(e=>/^-[^-]/.test(e)&&e.slice(1).includes(t))}async function QF(e,t,n){let r=e.fs.resolvePath(e.cwd,t);try{let i=await XF(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}': ${YF(e)}\n`}}}function $F(){return S(`rm`,async(e,t)=>{let n={recursive:ZF(e,`r`)||ZF(e,`R`)||e.includes(`--recursive`),force:ZF(e,`f`)||e.includes(`--force`),verbose:ZF(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
2149
+ `,exitCode:1};let i=await Promise.all(r.map(e=>QF(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 eI(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 tI(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 nI(e,t,n){try{let r=e.fs.resolvePath(e.cwd,t),i=n.follow?await e.fs.stat(r):await XF(e,r);return{stdout:n.format?`${eI(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 rI(){return S(`stat`,async(e,t)=>{let n=tI(e);if(n.paths.length===0)return{stdout:``,stderr:`stat: missing operand
2150
+ `,exitCode:1};let r=await Promise.all(n.paths.map(e=>nI(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 iI(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n<=0?`/`:t.slice(0,n)}async function aI(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 XF(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}': ${YF(e)}\n`}}if(!n||s===i.length-1)return{stdout:o,stderr:``};a=iI(a)}return{stdout:o,stderr:``}}function oI(){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
2151
+ `,exitCode:1};let a=await Promise.all(i.map(e=>aI(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 sI(){return{stdout:`usage: tar (-c|-x|-t) [-zv] -f <archive> [-C <dir>] [paths...]
2152
+ `,stderr:``,exitCode:0}}function cI(e){return{stdout:``,stderr:`tar: ${e}\n`,exitCode:1}}function lI(e,t){if(e.mode)return cI(`exactly one of -c, -x, or -t is required`);e.mode=t}function uI(e,t,n){if(n)return[n,t];let r=e[t+1];return r===void 0?void 0:[r,t+1]}const dI={c:`create`,x:`extract`,t:`list`};function fI(e,t,n,r,i){let a=dI[e];if(a)return{nextIndex:r,error:lI(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:cI(`unsupported option -${e}`)};let o=uI(n,r,t);return o?(e===`f`?i.archive=o[0]:i.directory=o[0],{nextIndex:o[1],consumedValue:!0}):{nextIndex:r,error:cI(`option -${e} requires an argument`)}}function pI(e,t,n){let r=e[t];for(let i=1;i<r.length;i++){let a=fI(r[i],r.slice(i+1),e,t,n);if(a.error||a.consumedValue)return a}return{nextIndex:t}}function mI(e){let t={gzip:!1,verbose:!1,directory:`.`,paths:[]};for(let n=0;n<e.length;n++){let r=e[n];if(!r.startsWith(`-`)||r===`-`){t.paths.push(r);continue}if(r.startsWith(`--`))return cI(`unsupported option ${r}`);let i=pI(e,n,t);if(i.error)return i.error;n=i.nextIndex}return t}function hI(e,t){let n=e.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^(?:\.\/)+/,``);return n?n===`.`?`.`:n.replace(/\/+$/,``):tr(t)}async function gI(e,t,n,r){let i=await e.fs.stat(t);if(i.isFile){r.push({path:n,bytes:await e.fs.readFileBuffer(t)});return}if(!i.isDirectory)throw Error(`unsupported file type: ${t}`);let a=n.endsWith(`/`)?n:`${n}/`;r.push({path:a,bytes:new Uint8Array,directory:!0});for(let n of await e.fs.readdir(t))await gI(e,er(t,n),`${a}${n}`,r)}function _I(e,t){let n=e.length>=2&&e[0]===31&&e[1]===139,r=t||n?Xi(e):e;return Ki(r,{stripNpmPrefix:!1,includeDirectories:!0,preserveRawPaths:!0})}function vI(e,t,n){let r=n.replace(/\\/g,`/`);if(!r||r.startsWith(`/`)||/^[a-zA-Z]:\//.test(r)||r.split(`/`).includes(`..`))return;let i=e.fs.resolvePath(t,r);return lr(t,i)?i:void 0}async function yI(e,t){if(e.paths.length===0)return cI(`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 gI(t,e,hI(i,e),n)}let i=t.fs.resolvePath(t.cwd,e.archive),a=Qi(n);return await t.fs.writeFile(i,e.gzip?Wi(a):a),{stdout:e.verbose?`${n.map(e=>e.path).join(`
2153
+ `)}\n`:``,stderr:``,exitCode:0}}async function bI(e,t){if(e.paths.length>0)return cI(`${e.mode} mode does not accept input paths`);let n=t.fs.resolvePath(t.cwd,e.archive),r=_I(await t.fs.readFileBuffer(n),e.gzip);if(e.mode===`list`){let e=r.map(e=>e.path).join(`
2154
+ `);return{stdout:e?`${e}\n`:``,stderr:``,exitCode:0}}let i=t.fs.resolvePath(t.cwd,e.directory);await t.fs.mkdir(i,{recursive:!0});let a=[];for(let e of r){let n=vI(t,i,e.path);if(!n)return cI(`blocked suspicious path ${e.path}`);if(e.directory)await t.fs.mkdir(n,{recursive:!0});else{let r=or(n);r!==`/`&&await t.fs.mkdir(r,{recursive:!0}),await t.fs.writeFile(n,e.bytes)}a.push(e.path)}return{stdout:e.verbose?`${a.join(`
2155
+ `)}\n`:``,stderr:``,exitCode:0}}function xI(){return S(`tar`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return sI();let n=mI(e);return`exitCode`in n?n:n.mode?n.archive?n.mode===`list`&&n.directory!==`.`?cI(`-C is only supported in create or extract mode`):n.mode===`create`?yI(n,t):bI(n,t):cI(`option -f requires an archive path`):cI(`exactly one of -c, -x, or -t is required`)})}var SI=`/**
2147
2156
  * Standalone assertions - no dependency on test runner
2148
2157
  *
2149
2158
  * Each assertion:
@@ -2331,7 +2340,7 @@ function sameMembers(a, b) {
2331
2340
  }
2332
2341
 
2333
2342
  const slice = a => (isPrimitive(a) ? a : a.slice ? a.slice() : Object.assign({}, a))
2334
- `,vI=`/**
2343
+ `,CI=`/**
2335
2344
  * tst - minimal test runner
2336
2345
  *
2337
2346
  * - Standalone assertions (assert.js works anywhere)
@@ -2961,7 +2970,7 @@ function scheduleAutoRun() {
2961
2970
  scheduleAutoRun()
2962
2971
 
2963
2972
  export * from './assert.js'
2964
- `;function yI(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}const bI=`tsc - thin wrapper over the ipk-loaded TypeScript 6 package
2973
+ `;function wI(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 TI=`tsc - thin wrapper over the ipk-loaded TypeScript 6 package
2965
2974
 
2966
2975
  Usage:
2967
2976
  tsc [options] [files...]
@@ -2981,32 +2990,32 @@ Notes:
2981
2990
 
2982
2991
  Install:
2983
2992
  Inert until the backing package is installed in node_modules:
2984
- ${sr}
2993
+ ${cr}
2985
2994
  Then \`tsc --version\` and the transpile commands above. There is no
2986
2995
  bundled binary, no CDN fallback; a missing package exits non-zero
2987
2996
  with a clear \`ipk add\` hint.
2988
- `;function xI(e){let t=[],n=!1,r=null,i=!1,a=!1;for(let o=0;o<e.length;o++){let s=e[o];if(s===`-h`||s===`--help`){i=!0;continue}if(s===`-v`||s===`--version`){a=!0;continue}if(s===`--noEmit`){n=!0;continue}if(s===`--outDir`){let t=e[o+1];if(typeof t!=`string`||t.startsWith(`-`))throw Error(`tsc: --outDir requires a value`);r=t,o+=1;continue}if(s.startsWith(`--outDir=`)){r=s.slice(9);continue}if(s.startsWith(`-`))throw Error(`tsc: unknown option: ${s}`);t.push(s)}return{files:t,noEmit:n,outDir:r,showHelp:i,showVersion:a}}function SI(e,t){let n=`${er(e).replace(/\.(ts|tsx|mts|cts)$/i,``)}.js`;return t?`${t.endsWith(`/`)?t.slice(0,-1):t}/${n}`:`${ar(e)}/${n}`}async function CI(e,t){let n=t||`/`,r=``;for(;n&&n!==r;){let t=n===`/`?`/tsconfig.json`:`${n}/tsconfig.json`;if(await e.exists(t))return t;r=n,n=ar(n)}return null}function wI(e){return{target:e.ScriptTarget.ES2022,module:e.ModuleKind.ESNext,moduleResolution:e.ModuleResolutionKind.Bundler,esModuleInterop:!0,allowSyntheticDefaultImports:!0,isolatedModules:!0}}function TI(e){if(typeof e!=`object`||!e)return{};let{compilerOptions:t}=e;return t??{}}async function EI(e,t,n){let r=wI(t),i=await CI(e,n);if(!i)return{compilerOptions:{...r}};let a;try{a=await e.readFile(i)}catch{return{compilerOptions:{...r}}}let{config:o,error:s}=t.parseConfigFileTextToJson(i,a);return s||!o?{compilerOptions:{...r}}:{compilerOptions:{...r,...TI(o)}}}function DI(e,t){let n=e.flattenDiagnosticMessageText(t.messageText,`
2989
- `);if(t.file&&typeof t.start==`number`){let{line:e,character:r}=t.file.getLineAndCharacterOfPosition(t.start);return`${t.file.fileName}(${e+1},${r+1}): error TS${t.code}: ${n}`}return`error TS${t.code}: ${n}`}function OI(e,t){let n=t.toLowerCase();return n.endsWith(`.tsx`)?e.ScriptKind.TSX:n.endsWith(`.jsx`)?e.ScriptKind.JSX:n.endsWith(`.js`)||n.endsWith(`.mjs`)||n.endsWith(`.cjs`)?e.ScriptKind.JS:e.ScriptKind.TS}function kI(e,t,n,r,i){let a=e.transpileModule(t,{compilerOptions:r,fileName:n,reportDiagnostics:i});return{outputText:a.outputText,diagnostics:a.diagnostics??[]}}function AI(e,t,n,r){let{outputText:i,diagnostics:a}=kI(e,r,`<stdin>.ts`,n.compilerOptions,!0),o=a.map(t=>DI(e,t)),s=o.length>0?`${o.join(`
2990
- `)}\n`:``;return{stdout:t.noEmit?``:i,stderr:s,exitCode:+(a.length>0)}}async function jI(e,t,n,r,i){let a=t.fs.resolvePath(t.cwd,n);if(!await t.fs.exists(a))return{stderr:`tsc: ${n}: no such file\n`,hadError:!0};let o;try{o=await t.fs.readFile(a)}catch(e){return{stderr:`tsc: ${n}: ${e instanceof Error?e.message:String(e)}\n`,hadError:!0}}OI(e,a);let{outputText:s,diagnostics:c}=kI(e,o,a,i.compilerOptions,!0),l=[];for(let t of c)l.push(`${DI(e,t)}\n`);let u=c.length>0;if(r.noEmit)return{stderr:l.join(``),hadError:u};let d=t.fs.resolvePath(t.cwd,SI(a,r.outDir));try{await t.fs.writeFile(d,s)}catch(e){l.push(`tsc: ${d}: ${e instanceof Error?e.message:String(e)}\n`),u=!0}return{stderr:l.join(``),hadError:u}}async function MI(e,t){let n;try{n=xI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:bI,stderr:``,exitCode:0}};let r;try{r=await Zn(yI(t))}catch(e){return{done:{stdout:``,stderr:`tsc: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}return n.showVersion?{done:{stdout:`Version ${r.version}\n`,stderr:``,exitCode:0}}:{parsed:n,ts:r}}function NI(){return S(`tsc`,async(e,t)=>{let n=await MI(e,t);if(`done`in n)return n.done;let{parsed:r,ts:i}=n,a=await EI(t.fs,i,t.cwd);if(r.files.length===0){let e=P(t.stdin);return e?AI(i,r,a,e):{stdout:bI,stderr:``,exitCode:0}}let o=[],s=!1;for(let e of r.files){let n=await jI(i,t,e,r,a);n.stderr&&o.push(n.stderr),n.hadError&&(s=!0)}return{stdout:``,stderr:o.join(``),exitCode:+!!s}})}const PI=[`**/*.test.{js,ts}`];function FI(e,t){let n,r=1;if(e===`--reporter`)n=t,r=2;else if(e.startsWith(`--reporter=`))n=e.slice(11);else return null;if(n!==`tap`&&n!==`spec`)throw Error(`tst: --reporter must be tap or spec`);return{reporter:n,consumed:r}}function II(e,t){return e===`--coverage`?{consumed:1}:e===`--coverage-dir`&&t!==void 0?{coverageDir:t,consumed:2}:e.startsWith(`--coverage-dir=`)?{coverageDir:e.slice(15),consumed:1}:null}function LI(e){let t=[],n=`tap`,r=!1,i=!1,a=``;for(let o=0;o<e.length;o++){let s=e[o];if(s===`-h`||s===`--help`){r=!0;continue}let c=FI(s,e[o+1]);if(c){n=c.reporter,c.consumed===2&&(o+=1);continue}let l=II(s,e[o+1]);if(l){i=!0,l.coverageDir!==void 0&&(a=l.coverageDir),l.consumed===2&&(o+=1);continue}if(s.startsWith(`-`))throw Error(`tst: unknown option: ${s}`);t.push(s)}return{globs:t.length>0?t:[...PI],reporter:n,showHelp:r,coverage:i,coverageDir:a}}function RI(e){let t=e.indexOf(`{`);if(t===-1)return[e];let n=e.indexOf(`}`,t);if(n===-1)return[e];let r=e.slice(0,t),i=e.slice(n+1),a=e.slice(t+1,n).split(`,`),o=[];for(let e of a)for(let t of RI(`${r}${e}${i}`))o.push(t);return o}function zI(e){let t=``,n=0;for(;n<e.length;){let r=e[n];r===`*`&&e[n+1]===`*`?(t+=`(?:.*/)?`,n+=2,e[n]===`/`&&(n+=1)):r===`*`?(t+=`[^/]*`,n+=1):r===`?`?(t+=`[^/]`,n+=1):`.+^$()[]|\\`.includes(r)?(t+=`\\${r}`,n+=1):(t+=r,n+=1)}return RegExp(`^${t}$`)}async function BI(e,t,n){let r=n.flatMap(RI).map(zI),i=new Set,a=t===`/`?``:t;async function o(t){let n;try{n=await e.readdir(t)}catch{return}for(let s of n){if(s===`node_modules`||s.startsWith(`.`))continue;let n=t===`/`?`/${s}`:`${t}/${s}`,c=!1;try{c=(await e.stat(n)).isDirectory}catch{continue}if(c){await o(n);continue}let l=n.startsWith(`${a}/`)?n.slice(a.length+1):n;r.some(e=>e.test(l))&&i.add(n)}}return await o(t),[...i].sort()}let VI=null;async function HI(e){if(VI)return VI;let t={module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,esModuleInterop:!0,isolatedModules:!1};return VI=`
2997
+ `;function EI(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 DI(e,t){let n=`${tr(e).replace(/\.(ts|tsx|mts|cts)$/i,``)}.js`;return t?`${t.endsWith(`/`)?t.slice(0,-1):t}/${n}`:`${or(e)}/${n}`}async function OI(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=or(n)}return null}function kI(e){return{target:e.ScriptTarget.ES2022,module:e.ModuleKind.ESNext,moduleResolution:e.ModuleResolutionKind.Bundler,esModuleInterop:!0,allowSyntheticDefaultImports:!0,isolatedModules:!0}}function AI(e){if(typeof e!=`object`||!e)return{};let{compilerOptions:t}=e;return t??{}}async function jI(e,t,n){let r=kI(t),i=await OI(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,...AI(o)}}}function MI(e,t){let n=e.flattenDiagnosticMessageText(t.messageText,`
2998
+ `);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 NI(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 PI(e,t,n,r,i){let a=e.transpileModule(t,{compilerOptions:r,fileName:n,reportDiagnostics:i});return{outputText:a.outputText,diagnostics:a.diagnostics??[]}}function FI(e,t,n,r){let{outputText:i,diagnostics:a}=PI(e,r,`<stdin>.ts`,n.compilerOptions,!0),o=a.map(t=>MI(e,t)),s=o.length>0?`${o.join(`
2999
+ `)}\n`:``;return{stdout:t.noEmit?``:i,stderr:s,exitCode:+(a.length>0)}}async function II(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}}NI(e,a);let{outputText:s,diagnostics:c}=PI(e,o,a,i.compilerOptions,!0),l=[];for(let t of c)l.push(`${MI(e,t)}\n`);let u=c.length>0;if(r.noEmit)return{stderr:l.join(``),hadError:u};let d=t.fs.resolvePath(t.cwd,DI(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 LI(e,t){let n;try{n=EI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:TI,stderr:``,exitCode:0}};let r;try{r=await Qn(wI(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 RI(){return S(`tsc`,async(e,t)=>{let n=await LI(e,t);if(`done`in n)return n.done;let{parsed:r,ts:i}=n,a=await jI(t.fs,i,t.cwd);if(r.files.length===0){let e=P(t.stdin);return e?FI(i,r,a,e):{stdout:TI,stderr:``,exitCode:0}}let o=[],s=!1;for(let e of r.files){let n=await II(i,t,e,r,a);n.stderr&&o.push(n.stderr),n.hadError&&(s=!0)}return{stdout:``,stderr:o.join(``),exitCode:+!!s}})}const zI=[`**/*.test.{js,ts}`];function BI(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 VI(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 HI(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=BI(s,e[o+1]);if(c){n=c.reporter,c.consumed===2&&(o+=1);continue}let l=VI(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:[...zI],reporter:n,showHelp:r,coverage:i,coverageDir:a}}function UI(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 UI(`${r}${e}${i}`))o.push(t);return o}function WI(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 GI(e,t,n){let r=n.flatMap(UI).map(WI),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 KI=null;async function qI(e){if(KI)return KI;let t={module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,esModuleInterop:!0,isolatedModules:!1};return KI=`
2991
3000
  if (typeof process !== 'undefined' && !process.versions) {
2992
3001
  try { process.versions = { node: '20.0.0' }; } catch (_) { /* readonly process.versions is fine */ }
2993
3002
  }
2994
3003
  const __tst_assert_exports = (function () {
2995
3004
  const module = { exports: {} };
2996
3005
  const exports = module.exports;
2997
- ${e.transpileModule(_I,{compilerOptions:t,fileName:`assert.js`}).outputText}
3006
+ ${e.transpileModule(SI,{compilerOptions:t,fileName:`assert.js`}).outputText}
2998
3007
  return module.exports;
2999
3008
  })();
3000
3009
  const __tst_module_exports = (function () {
3001
3010
  const module = { exports: {} };
3002
3011
  const exports = module.exports;
3003
- ${e.transpileModule(vI,{compilerOptions:t,fileName:`tst.js`}).outputText.replace(/require\(["']\.\/assert\.js["']\)/g,`__tst_assert_exports`).replace(/\bimport\.meta\b/g,`({url:""})`).replace(/await\s+import\(['"](?:worker_threads|fs|path)['"]\)/g,`await Promise.reject(new Error("tst: fork mode is not supported in the realm"))`)}
3012
+ ${e.transpileModule(CI,{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"))`)}
3004
3013
  return module.exports;
3005
3014
  })();
3006
3015
  const __tst = __tst_module_exports.default || __tst_module_exports;
3007
3016
  __tst.manual = true;
3008
- `.trim(),VI}function UI(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 WI(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 GI(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 KI(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=ar(n),u=new Map;for(let n of WI(r)){if(!n.startsWith(`./`)&&!n.startsWith(`../`))continue;let r=await GI(e,l,n);if(!r||(u.set(n,r),o.has(r)))continue;let s=await e.readFile(r);a&&(s=a(s,r));let d=t.transpileModule(s,{compilerOptions:i,fileName:r}).outputText;o.set(r,d),c.push({path:r,cjs:d})}s.set(n,u)}return{modules:o,edgeRewrites:s}}function qI(e,t,n,r,i,a,o=``,s=``){let c=r===`spec`?`pretty`:`tap`,l=[];for(let[e,t]of i.entries()){let n=UI(t,a.get(e)??new Map);l.push(`${JSON.stringify(e)}: function (module, exports, require) {\n${n}\n}`)}let u=`{${l.join(`,
3009
- `)}}`,d=UI(n,a.get(t)??new Map),f=o,p=s;return`"use strict";
3017
+ `.trim(),KI}function JI(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 XI(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 ZI(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=or(n),u=new Map;for(let n of YI(r)){if(!n.startsWith(`./`)&&!n.startsWith(`../`))continue;let r=await XI(e,l,n);if(!r||(u.set(n,r),o.has(r)))continue;let s=await e.readFile(r);a&&(s=a(s,r));let d=t.transpileModule(s,{compilerOptions:i,fileName:r}).outputText;o.set(r,d),c.push({path:r,cjs:d})}s.set(n,u)}return{modules:o,edgeRewrites:s}}function QI(e,t,n,r,i,a,o=``,s=``){let c=r===`spec`?`pretty`:`tap`,l=[];for(let[e,t]of i.entries()){let n=JI(t,a.get(e)??new Map);l.push(`${JSON.stringify(e)}: function (module, exports, require) {\n${n}\n}`)}let u=`{${l.join(`,
3018
+ `)}}`,d=JI(n,a.get(t)??new Map),f=o,p=s;return`"use strict";
3010
3019
  ${f}${e}
3011
3020
  const __realmRequire = require;
3012
3021
  const { createRequire: __createRequire } = __realmRequire("module");
@@ -3049,7 +3058,7 @@ await Promise.resolve();
3049
3058
  await new Promise((resolve) => setTimeout(resolve));
3050
3059
  ${p}
3051
3060
  if (__state && __state.failed && __state.failed.length > 0) process.exit(1);
3052
- `}const JI={esModuleInterop:!0,allowJs:!0,isolatedModules:!1};function YI(e){return{module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,...JI}}async function XI(e,t){let n;try{n=LI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:`tst - run *.test.{js,ts} files with the bundled tst runner
3061
+ `}const $I={esModuleInterop:!0,allowJs:!0,isolatedModules:!1};function eL(e){return{module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,...$I}}async function tL(e,t){let n;try{n=HI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:`tst - run *.test.{js,ts} files with the bundled tst runner
3053
3062
 
3054
3063
  Usage:
3055
3064
  tst [options] [glob...]
@@ -3071,7 +3080,7 @@ Notes:
3071
3080
  with statement counters. nyc/c8 cannot wrap this runner: it is not a
3072
3081
  Node child. Istanbul/Babel are not bundled (webapp size-limit); the
3073
3082
  TypeScript AST already in process does the rewrite.
3074
- `,stderr:``,exitCode:0}};let r=await BI(t.fs,t.cwd,n.globs);if(r.length===0)return{done:{stdout:``,stderr:`tst: no test files matched ${n.globs.join(` `)}\n`,exitCode:1}};let i;try{i=await Zn(yI(t))}catch(e){return{done:{stdout:``,stderr:`tst: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}let a=await HI(i),o=n.coverage?await import(`./coverage-instrument-CjoHgKzK.js`):null;return{parsed:n,files:r,ts:i,harness:a,userOpts:YI(i),coverageMaps:{},coverageCounts:{},coverageMod:o}}function ZI(e){return e.includes(`# fail `)||/(^|\n)not ok /.test(e)}async function QI(e,t,n,r){let{ts:i,harness:a,userOpts:o,parsed:s}=t,c=t.coverageMod,l=c?(e,n)=>{let{source:r,map:a}=c.instrumentSource(i,e,n);return t.coverageMaps[n]=a,r}:void 0,u;try{u=await e.fs.readFile(n)}catch(e){return{stdout:``,stderr:`tst: ${n}: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}l&&(u=l(u,n));let d;try{d=i.transpileModule(u,{compilerOptions:o,fileName:n}).outputText}catch(e){return{stdout:``,stderr:`tst: ${n}: transpile error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let f,p;try{({modules:f,edgeRewrites:p}=await KI(e.fs,i,n,d,o,l))}catch(e){return{stdout:``,stderr:`tst: ${n}: local-require resolve error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let m=qI(a,n,d,s.reporter,f,p,c?`${c.coverageRuntimeSource()}\n`:``,c?`\n${c.coverageDumpSource()}`:``),h=await Hr(m,[`node`,n],e,void 0,{filename:n}),g=h.stdout;if(c){let e=c.extractCoverageCounts(g);g=e.stdout,c.mergeCounts(t.coverageCounts,e.counts)}return{stdout:r?`# ${n}\n${g}`:g,stderr:h.stderr,failed:h.exitCode!==0||ZI(g)}}function $I(){return S(`tst`,async(e,t)=>{let n=await XI(e,t);if(`done`in n)return n.done;let r=n.files.length>1,i=``,a=``,o=!1;for(let e of n.files){let s=await QI(t,n,e,r);i+=s.stdout,a+=s.stderr,s.failed&&(o=!0)}if(n.coverageMod){let e=n.coverageMod.resolveCoverageDir(t.cwd,n.parsed.coverageDir,(e,n)=>t.fs.resolvePath(e,n)),r=JSON.stringify({counts:n.coverageCounts,maps:n.coverageMaps},null,2),s=n.coverageMod.toLcov(n.coverageCounts,n.coverageMaps),c=n.coverageMod.coverageSummary(n.coverageCounts,n.coverageMaps);try{await t.fs.writeFile(`${e}/coverage.json`,r),await t.fs.writeFile(`${e}/coverage.lcov`,s)}catch(t){a+=`tst: writing coverage to ${e}: ${t instanceof Error?t.message:String(t)}\n`,o=!0}i+=`\n${c}`}return{stdout:i,stderr:a,exitCode:+!!o}})}const eL=[],tL=`usage: theme <subcommand> [args]
3083
+ `,stderr:``,exitCode:0}};let r=await GI(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 Qn(wI(t))}catch(e){return{done:{stdout:``,stderr:`tst: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}let a=await qI(i),o=n.coverage?await import(`./coverage-instrument-CjoHgKzK.js`):null;return{parsed:n,files:r,ts:i,harness:a,userOpts:eL(i),coverageMaps:{},coverageCounts:{},coverageMod:o}}function nL(e){return e.includes(`# fail `)||/(^|\n)not ok /.test(e)}async function rL(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 ZI(e.fs,i,n,d,o,l))}catch(e){return{stdout:``,stderr:`tst: ${n}: local-require resolve error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let m=QI(a,n,d,s.reporter,f,p,c?`${c.coverageRuntimeSource()}\n`:``,c?`\n${c.coverageDumpSource()}`:``),h=await Ur(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||nL(g)}}function iL(){return S(`tst`,async(e,t)=>{let n=await tL(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 rL(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 aL=[],oL=`usage: theme <subcommand> [args]
3075
3084
 
3076
3085
  Subcommands:
3077
3086
  list List available preset and custom themes
@@ -3080,23 +3089,23 @@ Subcommands:
3080
3089
  reset Reset to the default theme
3081
3090
  current Show the currently active theme
3082
3091
  export <id> <path> Export a theme to a VFS path
3083
- `;function nL(e,t){return{stdout:``,stderr:`theme ${e}: ${t}\n`,exitCode:1}}function rL(){return S(`theme`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return{stdout:tL,stderr:``,exitCode:0};let n=e[0];return w(e.slice(1),{valueFlags:eL})?{stdout:$e(`theme`,n,tL),stderr:``,exitCode:0}:n===`list`?iL(e):n===`current`?aL(e):n===`reset`?oL(e):n===`apply`?sL(e.slice(1),t):n===`export`?cL(e.slice(1),t):{stdout:``,stderr:`theme: unknown subcommand "${n}"\n${tL}`,exitCode:1}})}async function iL(e){let t=C(e.slice(1),{value:eL});if(`error`in t)return nL(`list`,t.error);let{PRESETS:n}=await import(`./theme-presets-xiOb9AFN.js`),r=[`Presets:`];for(let e of n)r.push(` ${e.id.padEnd(16)} ${e.name}`);return r.push(``),{stdout:r.join(`
3084
- `),stderr:``,exitCode:0}}async function aL(e){let t=C(e.slice(1),{value:eL});return`error`in t?nL(`current`,t.error):{stdout:`Check the Theme settings dialog for the active theme.
3085
- `,stderr:``,exitCode:0}}async function oL(e){let t=C(e.slice(1),{value:eL});if(`error`in t)return nL(`reset`,t.error);let n=y();return n?(await n.call(`theme-apply`,{action:`reset`}),{stdout:`Theme reset to default.
3092
+ `;function sL(e,t){return{stdout:``,stderr:`theme ${e}: ${t}\n`,exitCode:1}}function cL(){return S(`theme`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return{stdout:oL,stderr:``,exitCode:0};let n=e[0];return w(e.slice(1),{valueFlags:aL})?{stdout:et(`theme`,n,oL),stderr:``,exitCode:0}:n===`list`?lL(e):n===`current`?uL(e):n===`reset`?dL(e):n===`apply`?fL(e.slice(1),t):n===`export`?pL(e.slice(1),t):{stdout:``,stderr:`theme: unknown subcommand "${n}"\n${oL}`,exitCode:1}})}async function lL(e){let t=C(e.slice(1),{value:aL});if(`error`in t)return sL(`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(`
3093
+ `),stderr:``,exitCode:0}}async function uL(e){let t=C(e.slice(1),{value:aL});return`error`in t?sL(`current`,t.error):{stdout:`Check the Theme settings dialog for the active theme.
3094
+ `,stderr:``,exitCode:0}}async function dL(e){let t=C(e.slice(1),{value:aL});if(`error`in t)return sL(`reset`,t.error);let n=y();return n?(await n.call(`theme-apply`,{action:`reset`}),{stdout:`Theme reset to default.
3086
3095
  `,stderr:``,exitCode:0}):{stdout:``,stderr:`theme: no panel-RPC connection available
3087
- `,exitCode:1}}async function sL(e,t){let n=C(e,{value:eL});if(`error`in n)return nL(`apply`,n.error);if(n.positionals.length===0)return{stdout:``,stderr:`theme apply: missing theme id or path
3096
+ `,exitCode:1}}async function fL(e,t){let n=C(e,{value:aL});if(`error`in n)return sL(`apply`,n.error);if(n.positionals.length===0)return{stdout:``,stderr:`theme apply: missing theme id or path
3088
3097
  `,exitCode:1};let r=y();if(!r)return{stdout:``,stderr:`theme: no panel-RPC connection available
3089
3098
  `,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)
3090
3099
  `,exitCode:1}}catch{return{stdout:``,stderr:`theme apply: file is not valid JSON
3091
- `,exitCode:1}}return{stdout:`Applied theme: ${(await r.call(`theme-apply`,{themeJson:c,action:`apply`})).applied}\n`,stderr:``,exitCode:0}}async function cL(e,t){let n=C(e,{value:eL});if(`error`in n)return nL(`export`,n.error);if(n.positionals.length<2)return{stdout:``,stderr:`theme export: usage: theme export <id> <path>
3092
- `,exitCode:1};let[r,i]=n.positionals,{PRESETS:a}=await import(`./theme-presets-xiOb9AFN.js`),o=a.find(e=>e.id===r);if(!o)return{stdout:``,stderr:`theme export: unknown preset id "${r}"\n`,exitCode:1};let s=t.fs.resolvePath(t.cwd,i);try{await t.fs.writeFile(s,JSON.stringify(o,null,2))}catch(e){return{stdout:``,stderr:`theme export: write failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return{stdout:`Exported "${o.name}" to ${s}\n`,stderr:``,exitCode:0}}const lL=`unknown`,uL=`usage: uname [-amnorsv]`,dL=[`s`,`n`,`r`,`v`,`m`,`o`];function fL(){return{stdout:[uL,` -s kernel name (SLICC) -n nodename (leader/follower/standalone)`,` -r release (SLICC version) -v build stamp`,` -m machine (realm platform) -o operating system (user agent)`,` -a all of the above, in uname order`,``].join(`
3093
- `),stderr:``,exitCode:0}}function pL(){let{releasedAt:e,buildId:t}=Ke();return e?`${t} (${e})`:t}function mL(){let e=globalThis.navigator,t=e?.userAgentData?.platform||e?.platform;return typeof t==`string`&&t.length>0?t:lL}function hL(){let e=globalThis.navigator?.userAgent;return typeof e==`string`&&e.length>0?e:lL}function gL(e){switch(e){case`s`:return`SLICC`;case`n`:return Ge();case`r`:return Ke().version;case`v`:return pL();case`m`:return mL();case`o`:return hL()}}function _L(e){return{stdout:``,stderr:`uname: ${e}\n${uL}\n`,exitCode:1}}function vL(e){let t=new Set;for(let n of e){if(!n.startsWith(`-`)||n===`-`)return{error:`extra operand '${n}'`};if(n.startsWith(`--`))return{error:`unrecognized option '${n}'`};for(let e of n.slice(1)){if(e===`a`){for(let e of dL)t.add(e);continue}if(!dL.includes(e))return{error:`unrecognized option '-${e}'`};t.add(e)}}return t}function yL(){return S(`uname`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return fL();let t=vL(e);return`error`in t?_L(t.error):{stdout:`${(t.size>0?dL.filter(e=>t.has(e)):[`s`]).map(gL).join(` `)}\n`,stderr:``,exitCode:0}})}function bL(){return S(`unlink`,async(e,t)=>{if(e.includes(`--help`))return{stdout:`Usage: unlink FILE
3100
+ `,exitCode:1}}return{stdout:`Applied theme: ${(await r.call(`theme-apply`,{themeJson:c,action:`apply`})).applied}\n`,stderr:``,exitCode:0}}async function pL(e,t){let n=C(e,{value:aL});if(`error`in n)return sL(`export`,n.error);if(n.positionals.length<2)return{stdout:``,stderr:`theme export: usage: theme export <id> <path>
3101
+ `,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 mL=`unknown`,hL=`usage: uname [-amnorsv]`,gL=[`s`,`n`,`r`,`v`,`m`,`o`];function _L(){return{stdout:[hL,` -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(`
3102
+ `),stderr:``,exitCode:0}}function vL(){let{releasedAt:e,buildId:t}=qe();return e?`${t} (${e})`:t}function yL(){let e=globalThis.navigator,t=e?.userAgentData?.platform||e?.platform;return typeof t==`string`&&t.length>0?t:mL}function bL(){let e=globalThis.navigator?.userAgent;return typeof e==`string`&&e.length>0?e:mL}function xL(e){switch(e){case`s`:return`SLICC`;case`n`:return Ke();case`r`:return qe().version;case`v`:return vL();case`m`:return yL();case`o`:return bL()}}function SL(e){return{stdout:``,stderr:`uname: ${e}\n${hL}\n`,exitCode:1}}function CL(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 gL)t.add(e);continue}if(!gL.includes(e))return{error:`unrecognized option '-${e}'`};t.add(e)}}return t}function wL(){return S(`uname`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return _L();let t=CL(e);return`error`in t?SL(t.error):{stdout:`${(t.size>0?gL.filter(e=>t.has(e)):[`s`]).map(xL).join(` `)}\n`,stderr:``,exitCode:0}})}function TL(){return S(`unlink`,async(e,t)=>{if(e.includes(`--help`))return{stdout:`Usage: unlink FILE
3094
3103
  Remove FILE. Symbolic links are removed without following their target.
3095
3104
  `,stderr:``,exitCode:0};if(e.length!==1||e[0].startsWith(`-`))return{stdout:``,stderr:e.length===0?`unlink: missing operand
3096
3105
  `:`unlink: extra operand
3097
- `,exitCode:1};let n=t.fs.resolvePath(t.cwd,e[0]);try{let r=t.fs.lstat?await t.fs.lstat(n):await t.fs.stat(n);return r.isDirectory&&!r.isSymbolicLink?{stdout:``,stderr:`unlink: cannot unlink '${e[0]}': Is a directory\n`,exitCode:1}:(await t.fs.rm(n,{recursive:!1,force:!1}),{stdout:``,stderr:``,exitCode:0})}catch(t){let n=t instanceof Error?t.message:String(t);return{stdout:``,stderr:`unlink: cannot unlink '${e[0]}': ${n}\n`,exitCode:1}}})}function xL(){return{stdout:`usage: unzip <archive.zip> [-d <destination>]
3098
- `,stderr:``,exitCode:0}}function SL(e){let t=`.`,n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i===`-d`){t=e[r+1]??``,r++;continue}if(i.startsWith(`-`))return{kind:`error`,result:{stdout:``,stderr:`unzip: unsupported option ${i}\n`,exitCode:1}};n.push(i)}return n.length<1?{kind:`error`,result:{stdout:``,stderr:`unzip: expected archive path
3099
- `,exitCode:1}}:{kind:`ok`,archive:n[0],destination:t||`.`}}async function CL(e,t,n,r){let i=n.replace(/\\/g,`/`);if(!i||i.endsWith(`/`))return!1;let a=e.fs.resolvePath(t,i);if(!cr(t,a))return{stdout:``,stderr:`unzip: blocked suspicious path ${n}\n`,exitCode:1};let o=ar(a);return o!==`/`&&await e.fs.mkdir(o,{recursive:!0}),await e.fs.writeFile(a,r),!0}function wL(){return S(`unzip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return xL();let n=SL(e);if(n.kind===`error`)return n.result;let r=t.fs.resolvePath(t.cwd,n.archive),i=t.fs.resolvePath(t.cwd,n.destination);await t.fs.mkdir(i,{recursive:!0});let a=await t.fs.readFileBuffer(r),o=xt(a),s=0;for(let[e,n]of Object.entries(o)){let r=await CL(t,i,e,n);if(r===!0)s++;else if(r!==!1)return r}return{stdout:`extracted ${s} file(s) to ${i}\n`,stderr:``,exitCode:0}})}const TL=`ai-ecoverse/slicc`,EL=`usage: upgrade status | upgrade apply --from=<version> --to=<version>`,DL=`packages/vfs-root`,OL=3e4,kL=[`${DL}/workspace/skills/`,`${DL}/shared/sprinkles/`,`${DL}/shared/sounds/`,`${DL}/shared/GELATIERE.md`,`${DL}/shared/wiki/WIKI.md`,`${DL}/etc/`],AL=[`auto-applied`,`merged-clean`,`kept-local`,`needs-review`,`unchanged`,`added-new`];function jL(){return Object.fromEntries(AL.map(e=>[e,0]))}function ML(e,t,n,r){let i=jL();for(let e of n)i[e.classification]+=1;return`${JSON.stringify({ok:r.length===0&&i[`needs-review`]===0,from:e,to:t,results:n.map(({path:e,classification:t,sidecar:n})=>({path:e,status:t,...n?{sidecar:n}:{}})),summary:i,errors:r})}\n`}function NL(e){if(e[0]!==`apply`)throw Error(EL);let t=new Map;for(let n of e.slice(1)){let e=n.match(/^--(from|to)=(.+)$/);if(!e)throw Error(`unsupported argument: ${n}`);t.set(e[1],e[2])}let n=t.get(`from`)??``,r=t.get(`to`)??``,i=/^v?[0-9][0-9A-Za-z.+_-]*$/;if(!i.test(n)||!i.test(r))throw Error(`both --from and --to must be release versions`);return{from:n,to:r}}function PL(e){return e.startsWith(`v`)?e:`v${e}`}function FL(e){if(!kL.some(t=>e.startsWith(t)))return null;let t=e.slice(17);return!t||t.split(`/`).some(e=>e===`.`||e===`..`)?null:t}async function IL(e,t){let n,r;try{n=await Promise.race([e(t,{method:`GET`,headers:{Accept:`application/json`}}),new Promise((e,t)=>{r=setTimeout(()=>t(Error(`request timed out after ${OL}ms`)),OL)})])}catch(e){let n=e instanceof Error?e.message:String(e);throw Error(`fetch failed for ${t}: ${n}`)}finally{r!==void 0&&clearTimeout(r)}if(n.status<200||n.status>=300)throw Error(`fetch failed for ${t}: HTTP ${n.status} ${n.statusText}`);return n}async function LL(e,t){let n=await IL(t,`https://api.github.com/repos/${TL}/git/trees/${encodeURIComponent(e)}?recursive=1`),r=ue(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=FL(e.path);t&&i.set(t,e.path)}return i}function RL(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`https://raw.githubusercontent.com/${TL}/${encodeURIComponent(e)}/${n}`}function zL(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}function BL(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}async function VL(e,t){if(!await e.exists(t))return;let n=await e.readFile(t,{encoding:`binary`});return n instanceof Uint8Array?n:new TextEncoder().encode(n)}async function HL(e,t,n,r,i){let a=`${t}.upgrade-${PL(n)}-to-${PL(r)}.conflict`;if(!i.has(a)&&!await e.exists(a))return i.add(a),a;for(let t=1;;t+=1){let n=`${a}.${t}`;if(!i.has(n)&&!await e.exists(n))return i.add(n),n}}async function UL(e,t,n,r,i,a,o){let s=await VL(e.fs,t);if(!a)return{path:t,classification:s?`kept-local`:`unchanged`};if(!i)return s?{path:t,classification:zL(s,a)?`unchanged`:`kept-local`}:{path:t,classification:`added-new`,content:a};if(zL(i,a)||zL(s,a))return{path:t,classification:`unchanged`};if(!s)return{path:t,classification:`kept-local`};if(zL(s,i))return{path:t,classification:`auto-applied`,content:a};let[c,l,u]=[s,i,a].map(BL);if(c!==null&&l!==null&&u!==null){let i=ke(c,l,u,{diff3:!0,labels:{current:`local:${t}`,base:`${PL(n)}:${t}`,other:`${PL(r)}:${t}`}}),a=new TextEncoder().encode(i.content);return i.conflicts===0?{path:t,classification:`merged-clean`,content:a}:{path:t,classification:`needs-review`,content:a,sidecar:await HL(e.fs,t,n,r,o)}}return{path:t,classification:`needs-review`,content:a,sidecar:await HL(e.fs,t,n,r,o)}}async function WL(e,t){t.content?await e.writeFile(t.path,t.content):await e.exists(t.path)&&await e.rm(t.path)}async function GL(e,t){let n=t.filter(e=>e.content!==void 0),r=await Promise.all(n.map(async t=>{let n=t.sidecar??t.path;return{path:n,content:await VL(e,n)}})),i=[];for(let t=0;t<n.length;t+=1){let a=n[t],o=r[t];try{await e.writeFile(o.path,a.content),i.push(o)}catch(t){let n=[];for(let t of[o,...i.slice().reverse()])try{await WL(e,t)}catch(e){n.push(`${t.path}: ${e instanceof Error?e.message:String(e)}`)}let r=t instanceof Error?t.message:String(t),a=n.length===0?`all writes rolled back`:`rollback failed (${n.join(`; `)})`;throw Error(`apply failed for ${o.path}: ${r}; ${a}`)}}}async function KL(e,t,n){let r=PL(t),i=PL(n),[a,o]=await Promise.all([LL(r,e.fetch),LL(i,e.fetch)]),s=[...new Set([...a.keys(),...o.keys()])].sort(),c=await Promise.all(s.map(async t=>{let[n,s]=await Promise.all([a.has(t)?IL(e.fetch,RL(r,a.get(t))).then(e=>fe(e.body)):void 0,o.has(t)?IL(e.fetch,RL(i,o.get(t))).then(e=>fe(e.body)):void 0]);return{path:t,base:n,theirs:s}})),l=new Set(s),u=[];for(let{path:r,base:i,theirs:a}of c)u.push(await UL(e,r,t,n,i,a,l));return await GL(e.fs,u),u}async function qL(e){let{version:t,releasedAt:n,buildId:r}=Ke(),i=[],a=null,o=e.getLastSeen??qe();if(!o)i.push(`last-seen version unavailable: no reader registered in this runtime`);else try{a=await o()}catch(e){i.push(`last-seen version unavailable: ${e instanceof Error?e.message:String(e)}`)}let s=a!==null&&a!==t;return`${JSON.stringify({ok:i.length===0,version:t,releasedAt:n,build:r,lastSeen:a,mergePending:s,...s?{apply:`upgrade apply --from=${a} --to=${t}`}:{},errors:i})}\n`}function JL(e){return S(`upgrade`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`${EL}\n`,stderr:``,exitCode:0};if(t[0]===`status`)return t.length>1?{stdout:ML(``,``,[],[`unsupported argument: ${t[1]}`]),stderr:``,exitCode:1}:{stdout:await qL(e),stderr:``,exitCode:0};let n=``,r=``;try{({from:n,to:r}=NL(t));let i=await KL(e,n,r),a=i.some(e=>e.classification===`needs-review`);return{stdout:ML(n,r,i,[]),stderr:``,exitCode:+!!a}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:ML(n,r,[],[t]),stderr:``,exitCode:1}}})}const YL=`usage: uptime [-p|--pretty] [-s|--since]`,XL=`${YL}
3106
+ `,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 EL(){return{stdout:`usage: unzip <archive.zip> [-d <destination>]
3107
+ `,stderr:``,exitCode:0}}function DL(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
3108
+ `,exitCode:1}}:{kind:`ok`,archive:n[0],destination:t||`.`}}async function OL(e,t,n,r){let i=n.replace(/\\/g,`/`);if(!i||i.endsWith(`/`))return!1;let a=e.fs.resolvePath(t,i);if(!lr(t,a))return{stdout:``,stderr:`unzip: blocked suspicious path ${n}\n`,exitCode:1};let o=or(a);return o!==`/`&&await e.fs.mkdir(o,{recursive:!0}),await e.fs.writeFile(a,r),!0}function kL(){return S(`unzip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return EL();let n=DL(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=St(a),s=0;for(let[e,n]of Object.entries(o)){let r=await OL(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 AL=`ai-ecoverse/slicc`,jL=`usage: upgrade status | upgrade apply --from=<version> --to=<version>`,ML=`packages/vfs-root`,NL=3e4,PL=[`${ML}/workspace/skills/`,`${ML}/shared/sprinkles/`,`${ML}/shared/sounds/`,`${ML}/shared/GELATIERE.md`,`${ML}/shared/wiki/WIKI.md`,`${ML}/etc/`],FL=[`auto-applied`,`merged-clean`,`kept-local`,`needs-review`,`unchanged`,`added-new`];function IL(){return Object.fromEntries(FL.map(e=>[e,0]))}function LL(e,t,n,r){let i=IL();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 RL(e){if(e[0]!==`apply`)throw Error(jL);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 zL(e){return e.startsWith(`v`)?e:`v${e}`}function BL(e){if(!PL.some(t=>e.startsWith(t)))return null;let t=e.slice(17);return!t||t.split(`/`).some(e=>e===`.`||e===`..`)?null:t}async function VL(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 ${NL}ms`)),NL)})])}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 HL(e,t){let n=await VL(t,`https://api.github.com/repos/${AL}/git/trees/${encodeURIComponent(e)}?recursive=1`),r=de(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=BL(e.path);t&&i.set(t,e.path)}return i}function UL(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`https://raw.githubusercontent.com/${AL}/${encodeURIComponent(e)}/${n}`}function WL(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}function GL(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}async function KL(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 qL(e,t,n,r,i){let a=`${t}.upgrade-${zL(n)}-to-${zL(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 JL(e,t,n,r,i,a,o){let s=await KL(e.fs,t);if(!a)return{path:t,classification:s?`kept-local`:`unchanged`};if(!i)return s?{path:t,classification:WL(s,a)?`unchanged`:`kept-local`}:{path:t,classification:`added-new`,content:a};if(WL(i,a)||WL(s,a))return{path:t,classification:`unchanged`};if(!s)return{path:t,classification:`kept-local`};if(WL(s,i))return{path:t,classification:`auto-applied`,content:a};let[c,l,u]=[s,i,a].map(GL);if(c!==null&&l!==null&&u!==null){let i=Ae(c,l,u,{diff3:!0,labels:{current:`local:${t}`,base:`${zL(n)}:${t}`,other:`${zL(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 qL(e.fs,t,n,r,o)}}return{path:t,classification:`needs-review`,content:a,sidecar:await qL(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 XL(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 KL(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 ZL(e,t,n){let r=zL(t),i=zL(n),[a,o]=await Promise.all([HL(r,e.fetch),HL(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)?VL(e.fetch,UL(r,a.get(t))).then(e=>pe(e.body)):void 0,o.has(t)?VL(e.fetch,UL(i,o.get(t))).then(e=>pe(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 JL(e,r,t,n,i,a,l));return await XL(e.fs,u),u}async function QL(e){let{version:t,releasedAt:n,buildId:r}=qe(),i=[],a=null,o=e.getLastSeen??Je();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 $L(e){return S(`upgrade`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`${jL}\n`,stderr:``,exitCode:0};if(t[0]===`status`)return t.length>1?{stdout:LL(``,``,[],[`unsupported argument: ${t[1]}`]),stderr:``,exitCode:1}:{stdout:await QL(e),stderr:``,exitCode:0};let n=``,r=``;try{({from:n,to:r}=RL(t));let i=await ZL(e,n,r),a=i.some(e=>e.classification===`needs-review`);return{stdout:LL(n,r,i,[]),stderr:``,exitCode:+!!a}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:LL(n,r,[],[t]),stderr:``,exitCode:1}}})}const eR=`usage: uptime [-p|--pretty] [-s|--since]`,tR=`${eR}
3100
3109
 
3101
3110
  Print how long this SLICC has been running. The clock starts when the browser
3102
3111
  window was last loaded — a reload is a reboot.
@@ -3112,7 +3121,7 @@ The load average is the average number of live kernel processes over the last
3112
3121
  processes are retained in bounded numbers, so a long burst of short commands
3113
3122
  can under-report the older windows. The user count is always 1: a SLICC
3114
3123
  runtime has one user identity (see \`id\`).
3115
- `,ZL=[1,5,15],QL=6e4,$L=60*QL,eR=24*$L;function tR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function nR(e,t,n,r){let i=Math.min(n,Math.max(1,t-r)),a=t-i,o=0;for(let n of e){let e=Math.min(n.finishedAt??t,t);o+=Math.max(0,e-Math.max(n.startedAt,a))}return o/i}function rR(e){let t=Math.max(0,e),n=Math.floor(t/eR),r=Math.floor(t%eR/$L),i=Math.floor(t%$L/QL),a=r>0?`${r}:${String(i).padStart(2,`0`)}`:`${i} min`;return n===0?a:`${n} ${n===1?`day`:`days`}, ${a}`}function iR(e){let t=Math.max(0,e),n=[],r=(e,t)=>{e>0&&n.push(`${e} ${t}${e===1?``:`s`}`)};return r(Math.floor(t/eR),`day`),r(Math.floor(t%eR/$L),`hour`),r(Math.floor(t%$L/QL),`minute`),n.length===0?`up ${Math.floor(t/1e3)} seconds`:`up ${n.join(`, `)}`}function aR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function oR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function sR(e,t,n){let r=ZL.map(r=>nR(e,t,r*QL,n).toFixed(2));return` ${oR(t)} up ${rR(t-n)}, 1 user, load average: ${r.join(`, `)}\n`}function cR(e){let t=`default`;for(let n of e)switch(n){case`-p`:case`--pretty`:t=`pretty`;break;case`-s`:case`--since`:t=`since`;break;case`-h`:case`--help`:return`help`;case`--version`:return`version`;default:return{error:`unrecognized option '${n}'`}}return t}function lR(e={}){return S(`uptime`,async t=>{let n=cR(t);if(typeof n!=`string`)return{stdout:``,stderr:`uptime: ${n.error}\n${YL}\n`,exitCode:1};if(n===`help`)return{stdout:XL,stderr:``,exitCode:0};if(n===`version`)return{stdout:`uptime (SLICC) ${Ke().version}\n`,stderr:``,exitCode:0};let r=e.now?e.now():Date.now(),i=e.bootedAt?e.bootedAt():pa();if(n===`since`)return uR(`${aR(i)}\n`);if(n===`pretty`)return uR(`${iR(r-i)}\n`);let a=e.processManager??tR();return uR(sR(a?a.list():[],r,i))})}function uR(e){return{stdout:e,stderr:``,exitCode:0}}const dR=new Set([`--vid`,`--pid`,`--class`,`--subclass`,`--protocol`,`--serial`,`--request-type`,`--recipient`,`--request`,`--value`,`--index`,`--__resolved`]);function fR(e){return vn(e,dR)}function Y(e,t){let n=/^0x/i.test(e)?parseInt(e,16):parseInt(e,10);if(!Number.isFinite(n)||Number.isNaN(n))throw Error(`invalid ${t}: '${e}'`);return n}function pR(e){let t={};return e.has(`--vid`)&&(t.vendorId=Y(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=Y(e.get(`--pid`),`pid`)),e.has(`--class`)&&(t.classCode=Y(e.get(`--class`),`class`)),e.has(`--subclass`)&&(t.subclassCode=Y(e.get(`--subclass`),`subclass`)),e.has(`--protocol`)&&(t.protocolCode=Y(e.get(`--protocol`),`protocol`)),e.has(`--serial`)&&(t.serialNumber=e.get(`--serial`)),Object.keys(t).length>0?[t]:[]}const mR=new Set([`standard`,`class`,`vendor`]),hR=new Set([`device`,`interface`,`endpoint`,`other`]);function gR(e){let t=e.get(`--request-type`)??`vendor`,n=e.get(`--recipient`)??`device`;if(!mR.has(t))throw Error(`invalid --request-type: '${t}'`);if(!hR.has(n))throw Error(`invalid --recipient: '${n}'`);return{requestType:t,recipient:n,request:Y(e.get(`--request`)??`0`,`request`),value:Y(e.get(`--value`)??`0`,`value`),index:Y(e.get(`--index`)??`0`,`index`)}}function _R(e){let t=ei(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function vR(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function yR(e){return`0x${e.toString(16).padStart(4,`0`)}`}function bR(e){let t=[e.manufacturerName,e.productName].filter(Boolean).join(` `)||`(unknown)`,n=e.serialNumber?` serial=${e.serialNumber}`:``,r=e.opened?` [open]`:``;return`${e.handle}\t${yR(e.vendorId)}:${yR(e.productId)}\t${t}${n}${r}`}function X(e){return{stdout:e,stderr:``,exitCode:0}}function Z(e){return{stdout:``,stderr:`usb: ${e}\n`,exitCode:1}}const xR=`usb - access USB devices via WebUSB
3124
+ `,nR=[1,5,15],rR=6e4,iR=60*rR,aR=24*iR;function oR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function sR(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 cR(e){let t=Math.max(0,e),n=Math.floor(t/aR),r=Math.floor(t%aR/iR),i=Math.floor(t%iR/rR),a=r>0?`${r}:${String(i).padStart(2,`0`)}`:`${i} min`;return n===0?a:`${n} ${n===1?`day`:`days`}, ${a}`}function lR(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/aR),`day`),r(Math.floor(t%aR/iR),`hour`),r(Math.floor(t%iR/rR),`minute`),n.length===0?`up ${Math.floor(t/1e3)} seconds`:`up ${n.join(`, `)}`}function uR(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 dR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function fR(e,t,n){let r=nR.map(r=>sR(e,t,r*rR,n).toFixed(2));return` ${dR(t)} up ${cR(t-n)}, 1 user, load average: ${r.join(`, `)}\n`}function pR(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 mR(e={}){return S(`uptime`,async t=>{let n=pR(t);if(typeof n!=`string`)return{stdout:``,stderr:`uptime: ${n.error}\n${eR}\n`,exitCode:1};if(n===`help`)return{stdout:tR,stderr:``,exitCode:0};if(n===`version`)return{stdout:`uptime (SLICC) ${qe().version}\n`,stderr:``,exitCode:0};let r=e.now?e.now():Date.now(),i=e.bootedAt?e.bootedAt():pa();if(n===`since`)return hR(`${uR(i)}\n`);if(n===`pretty`)return hR(`${lR(r-i)}\n`);let a=e.processManager??oR();return hR(fR(a?a.list():[],r,i))})}function hR(e){return{stdout:e,stderr:``,exitCode:0}}const gR=new Set([`--vid`,`--pid`,`--class`,`--subclass`,`--protocol`,`--serial`,`--request-type`,`--recipient`,`--request`,`--value`,`--index`,`--__resolved`]);function _R(e){return yn(e,gR)}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 vR(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 yR=new Set([`standard`,`class`,`vendor`]),bR=new Set([`device`,`interface`,`endpoint`,`other`]);function xR(e){let t=e.get(`--request-type`)??`vendor`,n=e.get(`--recipient`)??`device`;if(!yR.has(t))throw Error(`invalid --request-type: '${t}'`);if(!bR.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 SR(e){let t=ti(e.stdin),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e)&255;return n}function CR(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function wR(e){return`0x${e.toString(16).padStart(4,`0`)}`}function TR(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${wR(e.vendorId)}:${wR(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 ER=`usb - access USB devices via WebUSB
3116
3125
 
3117
3126
  Usage: usb <subcommand> [options]
3118
3127
 
@@ -3150,12 +3159,12 @@ Options:
3150
3159
  (bridged waits time out after 5 minutes and drop the waiter)
3151
3160
  -h, --help
3152
3161
 
3153
- Transfers are capped at ${$r} bytes (4 MiB).
3154
- `;function SR(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return X(t)}return X(e.length?`${vR(e)}\n`:``)}async function CR(e){let t=await e.list();return t.length===0?X(`no granted USB devices
3155
- `):X(`${t.map(bR).join(`
3156
- `)}\n`)}async function wR(e,t){let n=e.get(`--__resolved`);if(n)return X(`${bR(await t.info(n))}\n`);let r=pR(e),i=xe();if(i){let e=await Sx(`usb-device`,r,i);if(e.handle)return X(`${bR(await t.info(e.handle))}\n`);let n=e.info,a=Zr();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=Qr().register(o);return X(`${bR(Xr(s,o))}\n`)}return X(`${bR(await t.request(r))}\n`)}async function TR(e,t,n,r){let i=t[1];if(!i)return Z(`${e}: handle required`);let a=r.has(`--force`);return e===`open`?await n.open(i):e===`close`?await n.close(i,{force:a}):await n.reset(i,{force:a}),X(``)}async function ER(e,t){let[,n,r,i]=e;return!n||r===void 0||i===void 0?Z(`clear-halt: handle, direction and endpoint required`):r!==`in`&&r!==`out`?Z(`clear-halt: direction must be 'in' or 'out', got '${r}'`):(await t.clearHalt(n,r,Y(i,`endpoint`)),X(``))}async function DR(e,t){let[,n,r]=e;return!n||r===void 0?Z(`select-config: handle and value required`):(await t.selectConfig(n,Y(r,`configuration`)),X(``))}async function OR(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return Z(`${e}: handle and interface required`);let o=Y(a,`interface`);return e===`claim`?await n.claim(i,o,{wait:r.has(`--wait`)}):await n.release(i,o),X(``)}async function kR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`control-in: handle and length required`);let o=Y(a,`length`);return o>4194304?Z(`control-in length exceeds 4 MiB limit`):SR((await n.controlIn(i,gR(t),o)).bytes,r)}async function AR(e,t,n,r){let i=e[1];if(!i)return Z(`control-out: handle required`);let a=_R(t);return a.length>4194304?Z(`control-out payload exceeds 4 MiB limit`):X(`${(await r.controlOut(i,gR(n),a)).bytesWritten} bytes written\n`)}async function jR(e,t,n,r){let[,i,a,o]=e;if(!i||a===void 0||o===void 0)return Z(`transfer-in: handle, endpoint and length required`);let s=Y(o,`length`);return s>4194304?Z(`transfer-in length exceeds 4 MiB limit`):SR((await n.transferIn(i,Y(a,`endpoint`),s)).bytes,r)}async function MR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`transfer-out: handle and endpoint required`);let o=_R(t);return o.length>4194304?Z(`transfer-out payload exceeds 4 MiB limit`):X(`${(await r.transferOut(i,Y(a,`endpoint`),o)).bytesWritten} bytes written\n`)}async function NR(e,t,n){let{positionals:r,flags:i,bools:a}=fR(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return CR(n);case`request`:return wR(i,n);case`open`:case`close`:case`reset`:return TR(o,r,n,a);case`clear-halt`:return ER(r,n);case`select-config`:return DR(r,n);case`claim`:case`release`:return OR(o,r,n,a);case`control-in`:return kR(r,i,n,s);case`control-out`:return AR(r,t,i,n);case`transfer-in`:return jR(r,i,n,s);case`transfer-out`:return MR(r,t,i,n);default:return Z(`unknown subcommand '${o??``}'. Try 'usb --help'.`)}}function PR(){return S(`usb`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return X(xR);let n=Mr(se(),y());if(!n)return Z(`WebUSB is unavailable in this environment`);try{return await NR(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No device selected/i.test(t)?Z(`user cancelled or no device selected`):Z(t)}})}const FR=`/workspace/.v86`,IR=`v86 - run an x86 virtual machine (v86 wasm engine)
3162
+ Transfers are capped at ${ei} bytes (4 MiB).
3163
+ `;function DR(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?`${CR(e)}\n`:``)}async function OR(e){let t=await e.list();return t.length===0?X(`no granted USB devices
3164
+ `):X(`${t.map(TR).join(`
3165
+ `)}\n`)}async function kR(e,t){let n=e.get(`--__resolved`);if(n)return X(`${TR(await t.info(n))}\n`);let r=vR(e),i=Se();if(i){let e=await Sx(`usb-device`,r,i);if(e.handle)return X(`${TR(await t.info(e.handle))}\n`);let n=e.info,a=Qr();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=$r().register(o);return X(`${TR(Zr(s,o))}\n`)}return X(`${TR(await t.request(r))}\n`)}async function AR(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 jR(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 MR(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 NR(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 PR(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`):DR((await n.controlIn(i,xR(t),o)).bytes,r)}async function FR(e,t,n,r){let i=e[1];if(!i)return Z(`control-out: handle required`);let a=SR(t);return a.length>4194304?Z(`control-out payload exceeds 4 MiB limit`):X(`${(await r.controlOut(i,xR(n),a)).bytesWritten} bytes written\n`)}async function IR(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`):DR((await n.transferIn(i,Y(a,`endpoint`),s)).bytes,r)}async function LR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`transfer-out: handle and endpoint required`);let o=SR(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 RR(e,t,n){let{positionals:r,flags:i,bools:a}=_R(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return OR(n);case`request`:return kR(i,n);case`open`:case`close`:case`reset`:return AR(o,r,n,a);case`clear-halt`:return jR(r,n);case`select-config`:return MR(r,n);case`claim`:case`release`:return NR(o,r,n,a);case`control-in`:return PR(r,i,n,s);case`control-out`:return FR(r,t,i,n);case`transfer-in`:return IR(r,i,n,s);case`transfer-out`:return LR(r,t,i,n);default:return Z(`unknown subcommand '${o??``}'. Try 'usb --help'.`)}}function zR(){return S(`usb`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return X(ER);let n=Nr(ce(),y());if(!n)return Z(`WebUSB is unavailable in this environment`);try{return await RR(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 BR=`/workspace/.v86`,VR=`v86 - run an x86 virtual machine (v86 wasm engine)
3157
3166
 
3158
- Requires: ${N} v86@${KD}
3167
+ Requires: ${N} v86@${ZD}
3159
3168
 
3160
3169
  Usage:
3161
3170
  v86 start [boot options] Boot a VM in the background (prints pid)
@@ -3189,7 +3198,7 @@ Boot options (QEMU-flavored):
3189
3198
  proxy — no gateway needed, https upstream via the proxy
3190
3199
  -vga <MiB> SVGA/VBE video memory (default 8, max 64) —
3191
3200
  raise for high-res VESA modes (1080p32 needs ~9)
3192
- -bios <path> -vgabios <path> BIOS blobs (default ${FR}/{seabios,vgabios}.bin)
3201
+ -bios <path> -vgabios <path> BIOS blobs (default ${BR}/{seabios,vgabios}.bin)
3193
3202
  -nographic Serial-only guest (skip VGA)
3194
3203
 
3195
3204
  Notes:
@@ -3197,19 +3206,19 @@ Notes:
3197
3206
  (Alpine, FreeDOS, Buildroot Linux) work best.
3198
3207
  - The copy.sh Arch Linux image boots via -state + -fs9p; see the v86 skill.
3199
3208
  - BIOS blobs are not bundled; download once:
3200
- mkdir -p ${FR}
3201
- curl -o ${FR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3202
- curl -o ${FR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3203
- `,LR=`v86: BIOS images not found. Download them once:
3204
- mkdir -p ${FR}
3205
- curl -o ${FR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3206
- curl -o ${FR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3207
- or pass -bios / -vgabios with explicit VFS paths.`,RR={"-n":zR,"-name":zR,"--name":zR,"-m":(e,t)=>{let n=Number.parseInt(t,10);return!Number.isFinite(n)||n<=0?`-m requires a positive MiB value`:n>512?`-m ${n} exceeds the 512 MiB cap`:(e.memoryMib=n,null)},"-vga":(e,t)=>{let n=Number.parseInt(t,10);return!Number.isFinite(n)||n<=0?`-vga requires a positive MiB value`:n>64?`-vga ${n} exceeds the 64 MiB cap`:(e.vgaMemoryMib=n,null)},"-cdrom":(e,t)=>BR(e,`cdrom`,t),"-hda":(e,t)=>BR(e,`hda`,t),"-fda":(e,t)=>BR(e,`fda`,t),"-kernel":(e,t)=>BR(e,`kernel`,t),"-initrd":(e,t)=>BR(e,`initrd`,t),"-append":(e,t)=>BR(e,`append`,t),"-bios":(e,t)=>BR(e,`bios`,t),"-vgabios":(e,t)=>BR(e,`vgabios`,t),"-state":(e,t)=>BR(e,`state`,t),"-fs9p":(e,t)=>/^https?:\/\//u.test(t)?(e.fs9p=t,null):`-fs9p requires an http(s) base URL`,"-net":(e,t)=>{let[n,...r]=t.split(`,`);if(n!==`ne2k`&&n!==`virtio`)return`-net requires ne2k or virtio`;for(let t of r){if(t!==`relay=fetch`)return`-net: unknown option '${t}' (only relay=fetch)`;e.netRelay=`fetch`}return e.net=n,null},"-boot":(e,t)=>t!==`a`&&t!==`c`&&t!==`d`?`-boot requires a, c, or d`:(e.boot=t,null)};function zR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function BR(e,t,n){return e[t]=n,null}const VR=[...Object.keys(RR),`--fps`,`--tail`,`--send`,`--to`];function HR(e){let t={name:`vm0`,memoryMib:128,vgaMemoryMib:8,nographic:!1};for(let n=0;n<e.length;n++){let r=e[n];if(r===`-nographic`){t.nographic=!0;continue}let i=Object.hasOwn(RR,r)?RR[r]:void 0;if(!i)return{ok:!1,error:`unknown option '${r}'`};let a=n+1<e.length?e[n+1]:null;if(a===null)return{ok:!1,error:`${r} requires a value`};let o=i(t,a);if(o)return{ok:!1,error:o};n++}return!t.cdrom&&!t.hda&&!t.fda&&!t.kernel&&!t.state?{ok:!1,error:`no bootable media (-cdrom, -hda, -fda, -kernel, or -state required)`}:{ok:!0,parsed:t}}function UR(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}function Q(e){return{stdout:``,stderr:`v86: ${e}\n`,exitCode:1}}function $(e=``){return{stdout:e,stderr:``,exitCode:0}}function WR(e){let t=[],n=`vm0`;for(let r=0;r<e.length;r++){if(e[r]===`-n`||e[r]===`-name`||e[r]===`--name`){let t=e[r+1];if(t){n=t,r++;continue}}t.push(e[r])}return{name:n,rest:t}}function GR(e){return sa(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function KR(e){return`exitCode`in e}async function qR(e,t,n){let r=e.fs.resolvePath(e.cwd,t);if(!await e.fs.exists(r))return Q(`${n}: no such file: ${t}`);let i=await e.fs.readFileBuffer(r),a=new ArrayBuffer(i.byteLength);return new Uint8Array(a).set(i),{buffer:a}}const JR={a:801,c:306,d:531};function YR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function XR(e={}){return S(`v86`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`||t[0]===`help`)return $(IR);if(t[0]===`--version`)return ZR(n,e);let r=t[0];if(w(t.slice(1),{valueFlags:VR}))return $($e(`v86`,r,IR,{prefix:`v86`}));let i=Qe(t.slice(1));try{switch(r){case`start`:return await rz(i,n,e);case`ls`:return az();case`type`:return await lz(i,n);case`key`:return await uz(i,n);case`mouse`:return await fz(i,n);case`screenshot`:return await pz(i,n);case`text`:return await mz(i,n);case`serve`:return hz(i);case`serial`:return gz(i);case`state`:return await _z(i,n);case`stop`:return await vz(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function ZR(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(UR(e))).version} (qemu-flavored CLI)\n`);let n=await QD(UR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(qD)}async function QR(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await qR(t,e.bios??`${FR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(LR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await qR(t,e.vgabios??`${FR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(LR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function $R(e,t,n){let r=await QR(e,t,n);if(r)return r;for(let[r,i]of[[`cdrom`,`cdrom`],[`hda`,`hda`],[`fda`,`fda`],[`kernel`,`bzimage`],[`initrd`,`initrd`]]){let a=e[r];if(!a)continue;let o=await qR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=JR[e.boot]),e.state){let r=await qR(t,e.state,`-state`);if(`exitCode`in r)return r;n.initial_state=r}return e.fs9p&&(n.filesystem={baseurl:e.fs9p}),e.net&&(n.net_device=e.netRelay===`fetch`?{type:e.net,relay_url:`fetch`}:{type:e.net}),null}const ez=6e4;function tz(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(Error(`engine init timed out after ${ez/1e3}s`)),ez);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function nz(e,t){let n=e.network_adapter;if(!n||typeof n.fetch!=`function`)return Q(`relay=fetch: engine exposed no fetch-relay network adapter`);let r=t.proxiedFetch??h();return n.fetch=async(e,t)=>{let n=e.replace(/^http:\/\/(?!localhost[:/]|127\.0\.0\.1[:/])/u,`https://`),i={};t?.headers?.forEach((e,t)=>{i[t]=e});let a;if(t?.body){let e=``;for(let n of t.body)e+=String.fromCharCode(n);a=e}let o=await r(n,{method:t?.method,headers:i,body:a}),s=o.body,c=s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength);return{status:o.status,statusText:o.statusText,headers:new Headers(o.headers),redirected:!1,url:o.url,arrayBuffer:async()=>c}},null}async function rz(e,t,n){let r=HR(e);if(!r.ok)return Q(r.error);let i=r.parsed;if(sa(i.name))return Q(`VM '${i.name}' already running — stop it first or pick another -n name`);let a=UR(t),o=n.loadEngine?await n.loadEngine(a):await YD({ipk:a}),s={wasm_fn:eO(o.wasmModule),memory_size:i.memoryMib*1024*1024,vga_memory_size:i.vgaMemoryMib*1024*1024,autostart:!1,disable_speaker:!0,fastboot:!0},c=await $R(i,t,s);if(c)return c;let l=new o.V86(s),u={name:i.name,emulator:l,engineVersion:o.version,pid:null,startedAt:Date.now(),bootArgv:[`v86`,`start`,...e],serial:{buffer:``},screen:{mode:`text`,width:0,height:0,frame:null},serve:null},d=n.processManager??YR();if(d){let e=d.spawn({kind:`net`,argv:u.bootArgv,cwd:t.cwd,owner:{kind:`system`}});u.pid=e.pid,e.abort.signal.addEventListener(`abort`,()=>{iz(u,d)})}oa(u);try{if(await tz(l),i.netRelay===`fetch`){let e=nz(l,n);if(e)return await iz(u,d),e}aa(u),await l.run()}catch(e){return await iz(u,d),Q(`boot failed: ${e instanceof Error?e.message:String(e)}`)}u.onScreenChange=()=>{import(`./registry-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 iz(e,t){ca(e),ia(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 az(){let e=ra();if(e.length===0)return $(`no VMs running
3209
+ mkdir -p ${BR}
3210
+ curl -o ${BR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3211
+ curl -o ${BR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3212
+ `,HR=`v86: BIOS images not found. Download them once:
3213
+ mkdir -p ${BR}
3214
+ curl -o ${BR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3215
+ curl -o ${BR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3216
+ or pass -bios / -vgabios with explicit VFS paths.`,UR={"-n":WR,"-name":WR,"--name":WR,"-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)=>GR(e,`cdrom`,t),"-hda":(e,t)=>GR(e,`hda`,t),"-fda":(e,t)=>GR(e,`fda`,t),"-kernel":(e,t)=>GR(e,`kernel`,t),"-initrd":(e,t)=>GR(e,`initrd`,t),"-append":(e,t)=>GR(e,`append`,t),"-bios":(e,t)=>GR(e,`bios`,t),"-vgabios":(e,t)=>GR(e,`vgabios`,t),"-state":(e,t)=>GR(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 WR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function GR(e,t,n){return e[t]=n,null}const KR=[...Object.keys(UR),`--fps`,`--tail`,`--send`,`--to`];function qR(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(UR,r)?UR[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 JR(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 XR(e){return sa(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function ZR(e){return`exitCode`in e}async function QR(e,t,n){let r=e.fs.resolvePath(e.cwd,t);if(!await e.fs.exists(r))return Q(`${n}: no such file: ${t}`);let i=await e.fs.readFileBuffer(r),a=new ArrayBuffer(i.byteLength);return new Uint8Array(a).set(i),{buffer:a}}const $R={a:801,c:306,d:531};function ez(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function tz(e={}){return S(`v86`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`||t[0]===`help`)return $(VR);if(t[0]===`--version`)return nz(n,e);let r=t[0];if(w(t.slice(1),{valueFlags:KR}))return $(et(`v86`,r,VR,{prefix:`v86`}));let i=$e(t.slice(1));try{switch(r){case`start`:return await cz(i,n,e);case`ls`:return uz();case`type`:return await mz(i,n);case`key`:return await hz(i,n);case`mouse`:return await _z(i,n);case`screenshot`:return await vz(i,n);case`text`:return await yz(i,n);case`serve`:return bz(i);case`serial`:return xz(i);case`state`:return await Sz(i,n);case`stop`:return await Cz(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function nz(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(JR(e))).version} (qemu-flavored CLI)\n`);let n=await rO(JR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(QD)}async function rz(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await QR(t,e.bios??`${BR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(HR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await QR(t,e.vgabios??`${BR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(HR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function iz(e,t,n){let r=await rz(e,t,n);if(r)return r;for(let[r,i]of[[`cdrom`,`cdrom`],[`hda`,`hda`],[`fda`,`fda`],[`kernel`,`bzimage`],[`initrd`,`initrd`]]){let a=e[r];if(!a)continue;let o=await QR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=$R[e.boot]),e.state){let r=await QR(t,e.state,`-state`);if(`exitCode`in r)return r;n.initial_state=r}return e.fs9p&&(n.filesystem={baseurl:e.fs9p}),e.net&&(n.net_device=e.netRelay===`fetch`?{type:e.net,relay_url:`fetch`}:{type:e.net}),null}const az=6e4;function oz(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(Error(`engine init timed out after ${az/1e3}s`)),az);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function sz(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??p();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 cz(e,t,n){let r=qR(e);if(!r.ok)return Q(r.error);let i=r.parsed;if(sa(i.name))return Q(`VM '${i.name}' already running — stop it first or pick another -n name`);let a=JR(t),o=n.loadEngine?await n.loadEngine(a):await eO({ipk:a}),s={wasm_fn:aO(o.wasmModule),memory_size:i.memoryMib*1024*1024,vga_memory_size:i.vgaMemoryMib*1024*1024,autostart:!1,disable_speaker:!0,fastboot:!0},c=await iz(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??ez();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`,()=>{lz(u,d)})}oa(u);try{if(await oz(l),i.netRelay===`fetch`){let e=sz(l,n);if(e)return await lz(u,d),e}aa(u),await l.run()}catch(e){return await lz(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 lz(e,t){ca(e),ia(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 uz(){let e=ra();if(e.length===0)return $(`no VMs running
3208
3217
  `);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(`
3209
- `)}\n`)}function oz(e,t){return`prefer: computer ${e} -c ${t}\n`}async function sz(e,t,n,r){let i=GR(t);if(KR(i))return i;let[{runComputer:a},{getComputerRegistry:o,installComputerRegistry:s},c]=await Promise.all([import(`./run-BVlVC7jS.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),cz(await a([`-c`,l,...n],e,{registry:u}),r,l)}function cz(e,t,n){let r=oz(t,n);return e.exitCode===0?$(`${e.stdout}${r}`):e.stderr.includes(`screenshot failed after input`)?$(`${e.stderr}${r}`):{stdout:e.stdout,stderr:e.stderr.replace(/^computer: /u,`v86: `),exitCode:e.exitCode}}async function lz(e,t){let{name:n,rest:r}=WR(e);if(r.length===0){let e=GR(n);return KR(e)?e:Q(`type: no text supplied`)}return sz(t,n,[`type`,`--`,...r],`type`)}async function uz(e,t){let{name:n,rest:r}=WR(e);if(r.length===0){let e=GR(n);return KR(e)?e:Q(`key: no chord supplied`)}return sz(t,n,[`key`,...r],`key`)}const dz=[`left`,`middle`,`right`];async function fz(e,t){let{name:n,rest:r}=WR(e),i=GR(n);if(KR(i))return i;let a=r.indexOf(`--to`);if(a!==-1){let e=r[a+1],i=e?/^(\d+),(\d+)$/u.exec(e):null;return i?sz(t,n,[`--native`,`mousemove`,i[1],i[2]],`mousemove`):Q(`mouse: --to requires <x>,<y>`)}let o=r[0];if(o===`move`){let e=r[1],i=r[2];return e===void 0||i===void 0||!Number.isFinite(Number(e))||!Number.isFinite(Number(i))?Q(`mouse: move requires <dx> <dy>`):sz(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!dz.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),sz(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function pz(e,t){let{name:n,rest:r}=WR(e);return sz(t,n,[`screenshot`,...r],`screenshot`)}async function mz(e,t){let{name:n}=WR(e);return sz(t,n,[`text`],`text`)}function hz(e){let{name:t}=WR(e);return $(`v86 serve is retired.\nUse: computer watch -c v86:${t}\nLive frames go to the overlay, lightbox, and bash rows.\n`)}function gz(e){let{name:t,rest:n}=WR(e),r=GR(t);if(KR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
3218
+ `)}\n`)}function dz(e,t){return`prefer: computer ${e} -c ${t}\n`}async function fz(e,t,n,r){let i=XR(t);if(ZR(i))return i;let[{runComputer:a},{getComputerRegistry:o,installComputerRegistry:s},c]=await Promise.all([import(`./run-Dn5A9ksD.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),pz(await a([`-c`,l,...n],e,{registry:u}),r,l)}function pz(e,t,n){let r=dz(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 mz(e,t){let{name:n,rest:r}=YR(e);if(r.length===0){let e=XR(n);return ZR(e)?e:Q(`type: no text supplied`)}return fz(t,n,[`type`,`--`,...r],`type`)}async function hz(e,t){let{name:n,rest:r}=YR(e);if(r.length===0){let e=XR(n);return ZR(e)?e:Q(`key: no chord supplied`)}return fz(t,n,[`key`,...r],`key`)}const gz=[`left`,`middle`,`right`];async function _z(e,t){let{name:n,rest:r}=YR(e),i=XR(n);if(ZR(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?fz(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>`):fz(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!gz.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),fz(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function vz(e,t){let{name:n,rest:r}=YR(e);return fz(t,n,[`screenshot`,...r],`screenshot`)}async function yz(e,t){let{name:n}=YR(e);return fz(t,n,[`text`],`text`)}function bz(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 xz(e){let{name:t,rest:n}=YR(e),r=XR(t);if(ZR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
3210
3219
  `);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(`
3211
3220
  `).slice(-Math.max(1,e)).join(`
3212
- `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function _z(e,t){let{name:n,rest:r}=WR(e),i=GR(n);if(KR(i))return i;let[a,o]=r;if(a!==`save`&&a!==`load`||!o)return Q(`state: expected save|load <file>`);let s=t.fs.resolvePath(t.cwd,o);if(a===`save`){let e=await i.emulator.save_state();return await t.fs.writeFile(s,new Uint8Array(e)),$(`${s} (${e.byteLength} bytes)\n`)}if(!await t.fs.exists(s))return Q(`state: no such file: ${o}`);let c=await t.fs.readFileBuffer(s),l=new ArrayBuffer(c.byteLength);return new Uint8Array(l).set(c),await i.emulator.restore_state(l),$()}async function vz(e,t){let{name:n,rest:r}=WR(e),i=GR(n);if(KR(i))return i;let a=t.processManager??YR();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await iz(i,a),$(`VM '${n}' stopped\n`))}const yz=[`--name`,`--filter`,`--scoop`],bz={state:`inactive`,session:null};function xz(){return{stdout:`usage: webhook <command> [options]
3221
+ `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function Sz(e,t){let{name:n,rest:r}=YR(e),i=XR(n);if(ZR(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 Cz(e,t){let{name:n,rest:r}=YR(e),i=XR(n);if(ZR(i))return i;let a=t.processManager??ez();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await lz(i,a),$(`VM '${n}' stopped\n`))}const wz=[`--name`,`--filter`,`--scoop`],Tz={state:`inactive`,session:null};function Ez(){return{stdout:`usage: webhook <command> [options]
3213
3222
 
3214
3223
  Commands:
3215
3224
  create [--scoop <name>] [--name <name>] [--filter <code>] Create a new webhook endpoint
@@ -3229,21 +3238,21 @@ Examples:
3229
3238
  webhook create --scoop slack-relay --name slack --filter "(e) => ({ text: e.body.text, user: e.body.user })"
3230
3239
  webhook list
3231
3240
  webhook delete abc123
3232
- `,stderr:``,exitCode:0}}function Sz(e){return e().session?.webhookUrl??null}function Cz(e,t,n){return t?la(t,e):n()?ua(self.location.href,e):`(URL unavailable — connect a leader tray)`}function wz(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
3241
+ `,stderr:``,exitCode:0}}function Dz(e){return e().session?.webhookUrl??null}function Oz(e,t,n){return t?la(t,e):n()?ua(self.location.href,e):`(URL unavailable — connect a leader tray)`}function kz(e){return{stdout:``,stderr:`webhook ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}async function Az(e){if(e.length!==1)return{stdout:``,stderr:`webhook rotate: takes no arguments
3233
3242
  `,exitCode:1};let t=y();if(!t)return{stdout:``,stderr:`webhook rotate: no leader panel connected
3234
3243
  `,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.
3235
3244
  `,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`webhook rotate: rotation failed; reconnect the leader and retry
3236
- `,exitCode:1}}}async function Ez(e,t,n){let r=C(e.slice(1),{value:yz});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=Ri(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
3237
- `,exitCode:1};let s=kz(t);if(s)return s;let c=await ey();if(!c)return wz(`create`);let l=await ny(c,`webhook create`,r.values.get(`--scoop`));if(l)return{stdout:``,stderr:l,exitCode:1};let u=await c.createWebhook(i,o,a),d=Az(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 Dz(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 ey();if(!r)return wz(`list`);let i=await r.listWebhooks();if(i.length===0)return{stdout:`No active webhooks
3238
- `,stderr:``,exitCode:0};let{trayUrlBase:a,urlResolutionError:o}=jz(t);return{stdout:Mz(i.map(e=>({id:e.id,name:e.name,url:Cz(e.id,a,t.hasLocalNodeServer),createdAt:e.createdAt,filter:e.filter,scoop:e.scoop})),a,o,t.hasLocalNodeServer),stderr:``,exitCode:0}}async function Oz(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
3245
+ `,exitCode:1}}}async function jz(e,t,n){let r=C(e.slice(1),{value:wz});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=zi(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
3246
+ `,exitCode:1};let s=Pz(t);if(s)return s;let c=await ey();if(!c)return kz(`create`);let l=await ny(c,`webhook create`,r.values.get(`--scoop`));if(l)return{stdout:``,stderr:l,exitCode:1};let u=await c.createWebhook(i,o,a),d=Fz(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 Mz(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 ey();if(!r)return kz(`list`);let i=await r.listWebhooks();if(i.length===0)return{stdout:`No active webhooks
3247
+ `,stderr:``,exitCode:0};let{trayUrlBase:a,urlResolutionError:o}=Iz(t);return{stdout:Lz(i.map(e=>({id:e.id,name:e.name,url:Oz(e.id,a,t.hasLocalNodeServer),createdAt:e.createdAt,filter:e.filter,scoop:e.scoop})),a,o,t.hasLocalNodeServer),stderr:``,exitCode:0}}async function Nz(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
3239
3248
  `,exitCode:1};if(!r)return{stdout:``,stderr:`webhook delete: requires an ID
3240
- `,exitCode:1};let i=await ey();if(!i)return wz(`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
3241
- `,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 kz(e){if(e.hasLocalNodeServer())return null;if(!Sz(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}")`)+`
3242
- `,exitCode:1}}return null}function Az(e,t){try{return Cz(e,Sz(t.getLeaderStatus),t.hasLocalNodeServer)}catch(e){return`(URL resolution failed: ${e instanceof Error?e.message:String(e)})`}}function jz(e){try{return{trayUrlBase:Sz(e.getLeaderStatus),urlResolutionError:null}}catch(e){return{trayUrlBase:null,urlResolutionError:e instanceof Error?e.message:String(e)}}}function Mz(e,t,n,r){let i=`Active webhooks:
3249
+ `,exitCode:1};let i=await ey();if(!i)return kz(`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
3250
+ `,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 Pz(e){if(e.hasLocalNodeServer())return null;if(!Dz(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}")`)+`
3251
+ `,exitCode:1}}return null}function Fz(e,t){try{return Oz(e,Dz(t.getLeaderStatus),t.hasLocalNodeServer)}catch(e){return`(URL resolution failed: ${e instanceof Error?e.message:String(e)})`}}function Iz(e){try{return{trayUrlBase:Dz(e.getLeaderStatus),urlResolutionError:null}}catch(e){return{trayUrlBase:null,urlResolutionError:e instanceof Error?e.message:String(e)}}}function Lz(e,t,n,r){let i=`Active webhooks:
3243
3252
  `;for(let t of e)i+=` ${t.id} ${t.name.padEnd(20)} ${t.url}`,t.scoop&&(i+=` -> ${t.scoop}`),t.filter&&(i+=` [filtered]`),i+=`
3244
3253
  `;return n?i+=`\nNote: webhook URL resolution failed (${n}). Try again once the tray is connected.\n`:!r()&&!t&&(i+=`
3245
3254
  Note: webhook URLs require a leader tray. Configure one in Settings to expose POST endpoints.
3246
- `),i}function Nz(e={}){let t={hasLocalNodeServer:e.hasLocalNodeServer??(()=>!0),getLeaderStatus:e.getLeaderStatus??(()=>bz)};return S(`webhook`,async(e,n)=>{if(e.length===0)return xz();let r=e[0];if(w(e,{valueFlags:r===`create`?yz:void 0}))return xz();try{switch(r){case`create`:return await Ez(e,t,n.env);case`list`:return await Dz(e,t);case`delete`:return await Oz(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 Pz(){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 Fz(){return{stdout:`usage: websocat [FLAGS] [OPTIONS] <ws://URL | wss://URL>
3255
+ `),i}function Rz(e={}){let t={hasLocalNodeServer:e.hasLocalNodeServer??(()=>!0),getLeaderStatus:e.getLeaderStatus??(()=>Tz)};return S(`webhook`,async(e,n)=>{if(e.length===0)return Ez();let r=e[0];if(w(e,{valueFlags:r===`create`?wz:void 0}))return Ez();try{switch(r){case`create`:return await jz(e,t,n.env);case`list`:return await Mz(e,t);case`delete`:return await Nz(e,t);case`rotate`:return await Az(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 zz(){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 Bz(){return{stdout:`usage: websocat [FLAGS] [OPTIONS] <ws://URL | wss://URL>
3247
3256
 
3248
3257
  Minimal websocat client. Sends stdin lines as WebSocket messages and prints
3249
3258
  received messages to stdout. Server mode and advanced specifiers (exec:, tcp:,
@@ -3285,14 +3294,14 @@ EXAMPLES:
3285
3294
  echo 'Page.navigate {"url":"https://example.com"}' \\
3286
3295
  | websocat -1 --jsonrpc --jsonrpc-omit-jsonrpc \\
3287
3296
  ws://127.0.0.1:9222/devtools/page/<id>
3288
- `,stderr:``,exitCode:0}}const Iz=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 Lz(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 Rz(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 zz(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 Bz(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 Vz(e,t){return t===`-v`?(e.verbose+=1,!0):t===`-vv`&&(e.verbose+=2,!0)}function Hz(e,t,n,r,i){let a=Lz(t,n,r,e);return a?(i(a.value),{nextIndex:a.next}):{stop:!0}}function Uz(e,t,n,r,i,a,o){let s=Lz(t,n,r,e);if(!s)return{stop:!0};let c=Rz(e,s.value,i,o);return c===null?{stop:!0}:(a(c),{nextIndex:s.next})}function Wz(e,t){return t.some(t=>e===t||e.startsWith(`${t}=`))}const Gz=[(e,t,n,r)=>{if(!Wz(r,[`--close-status-code`]))return null;let i=Lz(t,n,`--close-status-code`,e);if(!i)return{stop:!0};let a=zz(e,i.value);return a===null?{stop:!0}:(e.closeStatus=a,{nextIndex:i.next})},(e,t,n,r)=>Wz(r,[`--close-reason`])?Hz(e,t,n,`--close-reason`,t=>{e.closeReason=t}):null,(e,t,n,r)=>Wz(r,[`-B`,`--buffer-size`])?Uz(e,t,n,r===`-B`?`-B`:`--buffer-size`,`--buffer-size`,t=>{e.bufferSize=t}):null,(e,t,n,r)=>Wz(r,[`--max-messages`])?Uz(e,t,n,`--max-messages`,`--max-messages`,t=>{e.maxMessages=t}):null,(e,t,n,r)=>Wz(r,[`--protocol`])?Hz(e,t,n,`--protocol`,t=>{e.protocol=t}):null,(e,t,n,r)=>{if(!Wz(r,[`--ping-interval`]))return null;let i=Lz(t,n,`--ping-interval`,e);return i?(e.pingInterval=Number(i.value),{nextIndex:i.next}):{stop:!0}},(e,t,n,r)=>Wz(r,[`--conn-timeout`])?Uz(e,t,n,`--conn-timeout`,`--conn-timeout`,t=>{e.connTimeoutMs=Math.round(t*1e3)},`positive seconds`):null,(e,t,n,r)=>Wz(r,[`-H`,`--header`])?Hz(e,t,n,r===`-H`?`-H`:`--header`,t=>{e.customHeaders.push(t)}):null];function Kz(e,t,n,r){for(let i of Gz){let a=i(e,t,n,r);if(a)return a}return null}function qz(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)
3289
- `)}function Jz(e){let t=Pz();for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`-h`||r===`--help`)return t.showHelp=!0,t;if(Iz.has(r)||Iz.has(r.split(`=`)[0]))return t.error=`websocat: flag '${r}' is not supported in slicc's minimal client\n`,t;if(Bz(t,r)||Vz(t,r))continue;let i=Kz(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 qz(t),t}function Yz(e,t){if(!e)return[];let n=t?`\0`:`
3290
- `,r=e.split(n);return r.length>0&&r[r.length-1]===``&&r.pop(),r}function Xz(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 Zz(e){try{return new TextDecoder(`utf-8`,{fatal:!1}).decode(e)}catch{return t(e)}}function Qz(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 $z=1e4;function eB(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function tB(){let e=!1,t=eB();return{...t,settle:n=>{e||(e=!0,t.resolve(n))}}}function nB(e,t){return e.length?e.join(t)+t:``}function rB(e){return e.length?e.join(`
3297
+ `,stderr:``,exitCode:0}}const Vz=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 Hz(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 Uz(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 Wz(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 Kz(e,t){return t===`-v`?(e.verbose+=1,!0):t===`-vv`&&(e.verbose+=2,!0)}function qz(e,t,n,r,i){let a=Hz(t,n,r,e);return a?(i(a.value),{nextIndex:a.next}):{stop:!0}}function Jz(e,t,n,r,i,a,o){let s=Hz(t,n,r,e);if(!s)return{stop:!0};let c=Uz(e,s.value,i,o);return c===null?{stop:!0}:(a(c),{nextIndex:s.next})}function Yz(e,t){return t.some(t=>e===t||e.startsWith(`${t}=`))}const Xz=[(e,t,n,r)=>{if(!Yz(r,[`--close-status-code`]))return null;let i=Hz(t,n,`--close-status-code`,e);if(!i)return{stop:!0};let a=Wz(e,i.value);return a===null?{stop:!0}:(e.closeStatus=a,{nextIndex:i.next})},(e,t,n,r)=>Yz(r,[`--close-reason`])?qz(e,t,n,`--close-reason`,t=>{e.closeReason=t}):null,(e,t,n,r)=>Yz(r,[`-B`,`--buffer-size`])?Jz(e,t,n,r===`-B`?`-B`:`--buffer-size`,`--buffer-size`,t=>{e.bufferSize=t}):null,(e,t,n,r)=>Yz(r,[`--max-messages`])?Jz(e,t,n,`--max-messages`,`--max-messages`,t=>{e.maxMessages=t}):null,(e,t,n,r)=>Yz(r,[`--protocol`])?qz(e,t,n,`--protocol`,t=>{e.protocol=t}):null,(e,t,n,r)=>{if(!Yz(r,[`--ping-interval`]))return null;let i=Hz(t,n,`--ping-interval`,e);return i?(e.pingInterval=Number(i.value),{nextIndex:i.next}):{stop:!0}},(e,t,n,r)=>Yz(r,[`--conn-timeout`])?Jz(e,t,n,`--conn-timeout`,`--conn-timeout`,t=>{e.connTimeoutMs=Math.round(t*1e3)},`positive seconds`):null,(e,t,n,r)=>Yz(r,[`-H`,`--header`])?qz(e,t,n,r===`-H`?`-H`:`--header`,t=>{e.customHeaders.push(t)}):null];function Zz(e,t,n,r){for(let i of Xz){let a=i(e,t,n,r);if(a)return a}return null}function Qz(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)
3298
+ `)}function $z(e){let t=zz();for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`-h`||r===`--help`)return t.showHelp=!0,t;if(Vz.has(r)||Vz.has(r.split(`=`)[0]))return t.error=`websocat: flag '${r}' is not supported in slicc's minimal client\n`,t;if(Gz(t,r)||Kz(t,r))continue;let i=Zz(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 Qz(t),t}function eB(e,t){if(!e)return[];let n=t?`\0`:`
3299
+ `,r=e.split(n);return r.length>0&&r[r.length-1]===``&&r.pop(),r}function tB(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 nB(e){try{return new TextDecoder(`utf-8`,{fatal:!1}).decode(e)}catch{return t(e)}}function rB(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 iB=1e4;function aB(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function oB(){let e=!1,t=aB();return{...t,settle:n=>{e||(e=!0,t.resolve(n))}}}function sB(e,t){return e.length?e.join(t)+t:``}function cB(e){return e.length?e.join(`
3291
3300
  `)+`
3292
- `:``}function iB(e,t,n){e.quiet||t.push(`websocat: ${n}`)}function aB(e,t){e.verbose<1||(e.customHeaders.length>0&&iB(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&&iB(e,t,`--ping-interval has no effect in browsers (no ping API exposed)`),e.insecure&&iB(e,t,`-k/--insecure has no effect in browsers`))}function oB(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 sB(e,t,n,r){if(n.outLines.length<$z){n.outLines.push(r);return}n.droppedForOverflow===0&&iB(e,t,`output buffer reached ${$z} 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 cB(e,n,r){let{bytes:i,isBinary:a}=Qz(r);return i.length>e.bufferSize&&(iB(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):Zz(i)}function lB(e,t){return e.maxMessages!==void 0&&t>=e.maxMessages||e.oneMessage}function uB(e,t,n){try{n===void 0?e.close(t):e.close(t,n)}catch{}}function dB(e,t){setTimeout(()=>{uB(t,e.closeStatus??1e3,e.closeReason)},0)}function fB(e,t,n){let r=Yz(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=Xz(n,i,t.jsonrpcOmit),i+=1),t.binary?e.send(new TextEncoder().encode(r).buffer):e.send(r),a+=1}return a}function pB(e,t,n){!t.oneMessage&&!t.noClose&&(t.exitOnEof||n===0)&&dB(t,e)}async function mB(e,t,n){let r=[];aB(e,r);let i=e.nullTerminated?`\0`:`
3293
- `,a=oB(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=eB(),u=tB(),d=0,f=!1,p=setTimeout(()=>{f=!0,uB(o,1e3),c||l.reject(Error(`connect timeout`))},e.connTimeoutMs),m=()=>{if(e.noClose){u.settle(d);return}uB(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=cB(e,r,t.data);sB(e,r,s,n)}s.received+=1,lB(e,s.received)&&(s.finishing=!0,m())}},o.onerror=()=>{f||(iB(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&&iB(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:nB(s.outLines,i),stderr:rB(r.concat([`websocat: ${t}`])),exitCode:t===`connect timeout`?124:1}}e.unidirectionalReverse?!e.noClose&&e.exitOnEof&&!e.oneMessage&&dB(e,o):pB(o,e,fB(o,e,t));let h=await u.promise;return s.droppedForOverflow>0&&iB(e,r,`dropped ${s.droppedForOverflow} inbound message(s) due to output buffer cap`),{stdout:nB(s.outLines,i),stderr:rB(r),exitCode:h}}function hB(e){return{stdout:``,stderr:e,exitCode:2}}function gB(e){return e.WebSocketCtor??(typeof WebSocket<`u`?WebSocket:void 0)}async function _B(e,t,n={}){let r=Jz(e);if(r.showHelp)return Fz();if(r.error)return hB(r.error);if(!r.url)return hB(`websocat: missing ws:// or wss:// URL (use --help for usage)
3294
- `);if(!/^wss?:\/\//i.test(r.url))return hB(`websocat: URL must start with ws:// or wss://, got '${r.url}'\n`);let i=gB(n);return i?mB(r,t.stdin,i):{stdout:``,stderr:`websocat: no WebSocket implementation available in this runtime
3295
- `,exitCode:1}}function vB(){return S(`websocat`,async(e,t)=>_B(e,{stdin:P(t.stdin)}))}function yB(){return S(`__wf_progress`,async()=>({stdout:``,stderr:``,exitCode:0}))}const bB={commands:new Map,collisions:[]};async function xB(e,t){let n=Vn(t);return e.scriptCatalog?e.scriptCatalog.getJshIndex(n):e.fs?Wn(e.fs,n):bB}async function SB(e){return e.scriptCatalog?e.scriptCatalog.getWorkflowCommands():e.fs?ri(e.fs):new Map}function CB(e,t,n,r,i,a,o){if(i.has(e)){let i=[`/usr/bin/${e}`];if((t||r)&&i.push(` (shadowed by built-in ${e})`),t){let e=n?[t,...n.shadowedPaths]:[t];for(let t of e)i.push(` (shadowed ${t})`)}return{lines:i,found:!0}}if(t){let e=[t];if(n)for(let t of n.shadowedPaths)e.push(` (shadowed ${t})`);return r&&e.push(` ${r.path} (workflow, shadowed by .jsh)`),{lines:e,found:!0}}return r?{lines:[`${r.path} (workflow)`],found:!0}:a.has(e)&&!o.has(e)?{lines:[`/usr/bin/${e}`],found:!0}:{lines:[],found:!1}}function wB(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
3301
+ `:``}function lB(e,t,n){e.quiet||t.push(`websocat: ${n}`)}function uB(e,t){e.verbose<1||(e.customHeaders.length>0&&lB(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&&lB(e,t,`--ping-interval has no effect in browsers (no ping API exposed)`),e.insecure&&lB(e,t,`-k/--insecure has no effect in browsers`))}function dB(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 fB(e,t,n,r){if(n.outLines.length<iB){n.outLines.push(r);return}n.droppedForOverflow===0&&lB(e,t,`output buffer reached ${iB} 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 pB(e,n,r){let{bytes:i,isBinary:a}=rB(r);return i.length>e.bufferSize&&(lB(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):nB(i)}function mB(e,t){return e.maxMessages!==void 0&&t>=e.maxMessages||e.oneMessage}function hB(e,t,n){try{n===void 0?e.close(t):e.close(t,n)}catch{}}function gB(e,t){setTimeout(()=>{hB(t,e.closeStatus??1e3,e.closeReason)},0)}function _B(e,t,n){let r=eB(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=tB(n,i,t.jsonrpcOmit),i+=1),t.binary?e.send(new TextEncoder().encode(r).buffer):e.send(r),a+=1}return a}function vB(e,t,n){!t.oneMessage&&!t.noClose&&(t.exitOnEof||n===0)&&gB(t,e)}async function yB(e,t,n){let r=[];uB(e,r);let i=e.nullTerminated?`\0`:`
3302
+ `,a=dB(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=aB(),u=oB(),d=0,f=!1,p=setTimeout(()=>{f=!0,hB(o,1e3),c||l.reject(Error(`connect timeout`))},e.connTimeoutMs),m=()=>{if(e.noClose){u.settle(d);return}hB(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=pB(e,r,t.data);fB(e,r,s,n)}s.received+=1,mB(e,s.received)&&(s.finishing=!0,m())}},o.onerror=()=>{f||(lB(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&&lB(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:sB(s.outLines,i),stderr:cB(r.concat([`websocat: ${t}`])),exitCode:t===`connect timeout`?124:1}}e.unidirectionalReverse?!e.noClose&&e.exitOnEof&&!e.oneMessage&&gB(e,o):vB(o,e,_B(o,e,t));let h=await u.promise;return s.droppedForOverflow>0&&lB(e,r,`dropped ${s.droppedForOverflow} inbound message(s) due to output buffer cap`),{stdout:sB(s.outLines,i),stderr:cB(r),exitCode:h}}function bB(e){return{stdout:``,stderr:e,exitCode:2}}function xB(e){return e.WebSocketCtor??(typeof WebSocket<`u`?WebSocket:void 0)}async function SB(e,t,n={}){let r=$z(e);if(r.showHelp)return Bz();if(r.error)return bB(r.error);if(!r.url)return bB(`websocat: missing ws:// or wss:// URL (use --help for usage)
3303
+ `);if(!/^wss?:\/\//i.test(r.url))return bB(`websocat: URL must start with ws:// or wss://, got '${r.url}'\n`);let i=xB(n);return i?yB(r,t.stdin,i):{stdout:``,stderr:`websocat: no WebSocket implementation available in this runtime
3304
+ `,exitCode:1}}function CB(){return S(`websocat`,async(e,t)=>SB(e,{stdin:P(t.stdin)}))}function wB(){return S(`__wf_progress`,async()=>({stdout:``,stderr:``,exitCode:0}))}const TB={commands:new Map,collisions:[]};async function EB(e,t){let n=Hn(t);return e.scriptCatalog?e.scriptCatalog.getJshIndex(n):e.fs?Gn(e.fs,n):TB}async function DB(e){return e.scriptCatalog?e.scriptCatalog.getWorkflowCommands():e.fs?ii(e.fs):new Map}function OB(e,t,n,r,i,a,o){if(i.has(e)){let i=[`/usr/bin/${e}`];if((t||r)&&i.push(` (shadowed by built-in ${e})`),t){let e=n?[t,...n.shadowedPaths]:[t];for(let t of e)i.push(` (shadowed ${t})`)}return{lines:i,found:!0}}if(t){let e=[t];if(n)for(let t of n.shadowedPaths)e.push(` (shadowed ${t})`);return r&&e.push(` ${r.path} (workflow, shadowed by .jsh)`),{lines:e,found:!0}}return r?{lines:[`${r.path} (workflow)`],found:!0}:a.has(e)&&!o.has(e)?{lines:[`/usr/bin/${e}`],found:!0}:{lines:[],found:!1}}function kB(e={}){let t=e.scriptCatalog!==void 0||e.fs!==void 0?e:typeof e.walk==`function`&&typeof e.exists==`function`?{fs:e}:{};return S(`which`,async(e,n)=>{if(w(e))return{stdout:`which - locate a command
3296
3305
 
3297
3306
  Usage: which <command> [command...]
3298
3307
 
@@ -3303,9 +3312,9 @@ Prints the path of the given command(s).
3303
3312
 
3304
3313
  Exit code 0 if all commands found, 1 if any not found.
3305
3314
  `,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
3306
- `,exitCode:1};let i=n.getRegisteredCommands?.()??[],a=new Set(i),o=await xB(t,n.env.get(`PATH`)),s=o.commands,c=new Map(o.collisions.map(e=>[e.name,e])),l=await SB(t),u=typeof t.getStaticBuiltins==`function`?new Set(t.getStaticBuiltins()):a,d=new Set(t.getScriptRegisteredNames?.()??[]),f=[],p=!0;for(let e of r.positionals){let t=s.get(e),n=l.get(e),r=CB(e,t,c.get(e),n,u,a,d);f.push(...r.lines),r.found||(p=!1)}return{stdout:f.length>0?f.join(`
3315
+ `,exitCode:1};let i=n.getRegisteredCommands?.()??[],a=new Set(i),o=await EB(t,n.env.get(`PATH`)),s=o.commands,c=new Map(o.collisions.map(e=>[e.name,e])),l=await DB(t),u=typeof t.getStaticBuiltins==`function`?new Set(t.getStaticBuiltins()):a,d=new Set(t.getScriptRegisteredNames?.()??[]),f=[],p=!0;for(let e of r.positionals){let t=s.get(e),n=l.get(e),r=OB(e,t,c.get(e),n,u,a,d);f.push(...r.lines),r.found||(p=!1)}return{stdout:f.length>0?f.join(`
3307
3316
  `)+`
3308
- `:``,stderr:``,exitCode:+!p}})}const TB=`__slicc_workflows`,EB=String.raw`
3317
+ `:``,stderr:``,exitCode:+!p}})}const AB=`__slicc_workflows`,jB=String.raw`
3309
3318
  class WorkflowError extends Error {}
3310
3319
  class WorkflowDeterminismError extends WorkflowError {}
3311
3320
  class WorkflowAgentCapError extends WorkflowError {}
@@ -3418,40 +3427,40 @@ function log(message) {
3418
3427
  }
3419
3428
  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()); } };
3420
3429
  function workflow() { throw new WorkflowNestingUnsupportedError('nested workflow() unsupported in SP1'); }
3421
- `;function DB(){return`WF_RESULT_${globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function OB(e){let t=MB(e);return t===null?{name:null,description:null}:{name:NB(t,`name`),description:NB(t,`description`)}}function kB(e){return e.replace(/\bexport\s+(const|let|var|function|async\s+function|class)\b/g,`$1`)}function AB(e){return`const __emit = console.log.bind(console);
3430
+ `;function MB(){return`WF_RESULT_${globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function NB(e){let t=LB(e);return t===null?{name:null,description:null}:{name:RB(t,`name`),description:RB(t,`description`)}}function PB(e){return e.replace(/\bexport\s+(const|let|var|function|async\s+function|class)\b/g,`$1`)}function FB(e){return`const __emit = console.log.bind(console);
3422
3431
  const __stringify = JSON.stringify.bind(JSON);
3423
- const __WF = ${JSON.stringify(e.config)};\n${e.prelude}\nconst __r = await (async () => {\n${kB(e.body)}\n})();\n__emit(${JSON.stringify(e.sentinel)} + __stringify(__r ?? null));\n`}function jB(e,t){let n=e.split(`
3432
+ const __WF = ${JSON.stringify(e.config)};\n${e.prelude}\nconst __r = await (async () => {\n${PB(e.body)}\n})();\n__emit(${JSON.stringify(e.sentinel)} + __stringify(__r ?? null));\n`}function IB(e,t){let n=e.split(`
3424
3433
  `);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(`
3425
- `).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 MB(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 NB(e,t){let n=RegExp(`\\b${t}\\s*:\\s*(['"\\\`])((?:\\\\.|(?!\\1).)*)\\1`).exec(e);return n?n[2]:null}const PB=e(`workflow-command`),FB=`usage: workflow run <file.js> [--args <json>] [--budget <n>] [--concurrency <n>] [--wait]
3434
+ `).replace(/\n+$/,``);try{return{result:JSON.parse(n[e].slice(t.length)),log:r,hadResult:!0}}catch{return{result:null,log:r,hadResult:!0}}}return{result:null,log:e.replace(/\n+$/,``),hadResult:!1}}function LB(e){let t=/\bmeta\s*=\s*\{/.exec(e);if(!t)return null;let n=t.index+t[0].length-1,r=0;for(let t=n;t<e.length;t++)if(e[t]===`{`)r++;else if(e[t]===`}`&&--r===0)return e.slice(n+1,t);return null}function RB(e,t){let n=RegExp(`\\b${t}\\s*:\\s*(['"\\\`])((?:\\\\.|(?!\\1).)*)\\1`).exec(e);return n?n[2]:null}const zB=e(`workflow-command`),BB=`usage: workflow run <file.js> [--args <json>] [--budget <n>] [--concurrency <n>] [--wait]
3426
3435
  workflow run --script '<inline js>' [...]
3427
3436
  workflow list
3428
3437
  workflow status <runId>
3429
3438
  workflow stop <runId>
3430
3439
  workflow save <runId> <name> [--force]
3431
3440
  Runs a Claude-Code-format dynamic workflow. Default is non-blocking (returns a run id);
3432
- pass --wait to block and print the full result.`,IB=new Set([`list`,`status`,`stop`,`save`]);function LB(){return globalThis[TB]}function RB(){let e=globalThis.navigator?.hardwareConcurrency??8;return Math.min(16,Math.max(8,e*4))}function zB(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=RB(),n={budget:null,cap:Math.min(8,t)};for(let r=1;r<e.length;r++){let i=zB(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 VB(e={}){return S(`workflow`,async(t,n)=>{if(IB.has(t[0])&&w(t.slice(1)))return{stdout:FB+`
3433
- `,stderr:``,exitCode:0};if(t[0]===`list`||t[0]===`status`||t[0]===`stop`)return qB(t,n);if(t[0]===`save`)return KB(t,n,e);let r=BB(t);if(r.help)return{stdout:FB+`
3441
+ pass --wait to block and print the full result.`,VB=new Set([`list`,`status`,`stop`,`save`]);function HB(){return globalThis[AB]}function UB(){let e=globalThis.navigator?.hardwareConcurrency??8;return Math.min(16,Math.max(8,e*4))}function WB(e,t,n,r){let i=t[n];switch(i){case`-h`:case`--help`:return{i:n,help:!0};case`--script`:return e.script=t[++n],{i:n};case`--wait`:return e.wait=!0,{i:n};case`--args`:try{e.args=JSON.parse(t[++n]??``),e.hasArgs=!0}catch{return{i:n,error:`workflow: --args must be valid JSON`}}return{i:n};case`--budget`:{let r=Number(t[++n]);return Number.isFinite(r)?(e.budget=r,{i:n}):{i:n,error:`workflow: --budget must be a number`}}case`--concurrency`:{let i=Number(t[++n]);return Number.isFinite(i)?(e.cap=Math.min(r,Math.max(1,Math.trunc(i))),{i:n}):{i:n,error:`workflow: --concurrency must be a number`}}default:return i.startsWith(`-`)?{i:n,error:`workflow: unknown flag '${i}'`}:e.file===void 0?(e.file=i,{i:n}):{i:n,error:`workflow: too many arguments`}}}function GB(e){if(e[0]!==`run`)return e.length===0||e.includes(`-h`)||e.includes(`--help`)?{help:!0}:{error:`workflow: unknown subcommand '${e[0]}' (only 'run' in SP1)`};let t=UB(),n={budget:null,cap:Math.min(8,t)};for(let r=1;r<e.length;r++){let i=WB(n,e,r,t);if(i.help)return{help:!0};if(i.error)return{error:i.error};r=i.i}return n.script===void 0&&n.file===void 0?{error:`workflow: a <file.js> or --script is required`}:n}function KB(e={}){return S(`workflow`,async(t,n)=>{if(VB.has(t[0])&&w(t.slice(1)))return{stdout:BB+`
3442
+ `,stderr:``,exitCode:0};if(t[0]===`list`||t[0]===`status`||t[0]===`stop`)return QB(t,n);if(t[0]===`save`)return ZB(t,n,e);let r=GB(t);if(r.help)return{stdout:BB+`
3434
3443
  `,stderr:``,exitCode:0};if(r.error)return{stdout:``,stderr:r.error+`
3435
- `,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=OB(i);if(!o.name)return{stdout:``,stderr:`workflow: script must define a meta block with a name (description optional)
3436
- `,exitCode:1};let s=DB().slice(10,22),c=`/shared/workflow-runs/${s}/scratch/`;await n.fs.mkdir(c,{recursive:!0});let l=DB(),u=AB({prelude:EB,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?HB(u,a,l,o,n):UB({code:u,source:i,name:o.name,filename:a,sentinel:l,runId:s,ctx:n,options:e})})}async function HB(e,t,n,r,i){let a;try{a=await Hr(e,[`workflow`,t],i,void 0,{filename:t})}catch(e){return PB.error(`workflow run failed`,e),{stdout:``,stderr:`workflow: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return JB(r,a,n)}async function UB(e){let t=LB();if(!t)return{stdout:``,stderr:`workflow: run manager not available
3437
- `,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-]*$/,GB=`/workspace/.workflows`;async function KB(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]
3438
- `,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=LB()?.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=`${GB}/${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(GB,{recursive:!0}),await t.fs.writeFile(l,c.source);try{await n.syncScriptCommands?.()}catch(e){PB.warn(`workflow save: command re-sync failed; workflow saved, will register on next sync`,{name:o,error:e instanceof Error?e.message:String(e)})}return{stdout:`saved workflow '${o}' → ${l}\nrun it as '${o}' (or 'workflow run ${l}' if a built-in/.jsh shadows the name)\n`,stderr:``,exitCode:0}}async function qB(e,t){let n=LB();if(e[0]===`list`){if(!n)return{stdout:``,stderr:`workflow: run manager not available
3444
+ `,exitCode:1};let i,a;if(r.script!==void 0)i=r.script,a=`<workflow>`;else{let e=n.fs.resolvePath(n.cwd,r.file);if(!await n.fs.exists(e))return{stdout:``,stderr:`workflow: file not found: ${r.file}\n`,exitCode:1};i=await n.fs.readFile(e),a=r.file}let o=NB(i);if(!o.name)return{stdout:``,stderr:`workflow: script must define a meta block with a name (description optional)
3445
+ `,exitCode:1};let s=MB().slice(10,22),c=`/shared/workflow-runs/${s}/scratch/`;await n.fs.mkdir(c,{recursive:!0});let l=MB(),u=FB({prelude:jB,config:{...r.hasArgs?{args:r.args}:{},cap:r.cap??8,budget:r.budget??null,cwd:n.cwd,agentCwd:c},body:i,sentinel:l});return r.wait?qB(u,a,l,o,n):JB({code:u,source:i,name:o.name,filename:a,sentinel:l,runId:s,ctx:n,options:e})})}async function qB(e,t,n,r,i){let a;try{a=await Ur(e,[`workflow`,t],i,void 0,{filename:t})}catch(e){return zB.error(`workflow run failed`,e),{stdout:``,stderr:`workflow: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return $B(r,a,n)}async function JB(e){let t=HB();if(!t)return{stdout:``,stderr:`workflow: run manager not available
3446
+ `,exitCode:1};let n=e.options.getParentJid?.(),{runId:r}=await t.start({code:e.code,source:e.source,name:e.name,filename:e.filename,parentJid:n,ctx:e.ctx,sentinel:e.sentinel,runId:e.runId});return{stdout:`▶ workflow '${e.name}' started (run ${r}). Watch: workflow status ${r}\n`,stderr:``,exitCode:0}}const YB=/^[a-z0-9][a-z0-9-]*$/,XB=`/workspace/.workflows`;async function ZB(e,t,n){let r=!1,i=[];for(let t of e.slice(1))t===`--force`?r=!0:i.push(t);let[a,o,...s]=i;if(!a||!o||s.length>0)return{stdout:``,stderr:`usage: workflow save <runId> <name> [--force]
3447
+ `,exitCode:1};if(!YB.test(o))return{stdout:``,stderr:`workflow: invalid name '${o}' (use [a-z0-9][a-z0-9-]*)\n`,exitCode:1};let c=HB()?.getRun(a);if(!c)return{stdout:``,stderr:`workflow: no run '${a}' (only backgrounded runs are saveable; --wait runs are not)\n`,exitCode:1};if(!c.source)return{stdout:``,stderr:`workflow: run '${a}' has no source to save\n`,exitCode:1};let l=`${XB}/${o}.workflow.js`;if(await t.fs.exists(l)){if(!r)return{stdout:``,stderr:`workflow: ${l} already exists (pass --force to overwrite)\n`,exitCode:1}}else if(new Set(t.getRegisteredCommands?.()??[]).has(o))return{stdout:``,stderr:`workflow: '${o}' is already a command — choose another name\n`,exitCode:1};await t.fs.mkdir(XB,{recursive:!0}),await t.fs.writeFile(l,c.source);try{await n.syncScriptCommands?.()}catch(e){zB.warn(`workflow save: command re-sync failed; workflow saved, will register on next sync`,{name:o,error:e instanceof Error?e.message:String(e)})}return{stdout:`saved workflow '${o}' → ${l}\nrun it as '${o}' (or 'workflow run ${l}' if a built-in/.jsh shadows the name)\n`,stderr:``,exitCode:0}}async function QB(e,t){let n=HB();if(e[0]===`list`){if(!n)return{stdout:``,stderr:`workflow: run manager not available
3439
3448
  `,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(`
3440
3449
  `):`(no runs)`)+`
3441
3450
  `,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(`
3442
3451
  `)+`
3443
- `,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 JB(e,t,n){let{result:r,log:i,hadResult:a}=jB(t.stdout,n),o=e.name?`workflow: ${e.name}${e.description?` — `+e.description:``}\n`:``,s=i?YB(i)+`
3452
+ `,stderr:``,exitCode:0};if(i.pid==null)return{stdout:`workflow: run ${i.id} has not started a realm process yet (nothing to stop)\n`,stderr:``,exitCode:0};if(i.status!==`running`&&i.status!==`paused`)return{stdout:`workflow: run ${i.id} already ${i.status}\n`,stderr:``,exitCode:0};let a=await t.exec?.(`kill`,{cwd:t.cwd,args:[`-KILL`,String(i.pid)]});return a&&a.exitCode!==0?{stdout:``,stderr:a.stderr||`workflow: kill failed (exit ${a.exitCode})\n`,exitCode:a.exitCode}:{stdout:`stopped run ${i.id} (pid ${i.pid})\n`,stderr:``,exitCode:0}}function $B(e,t,n){let{result:r,log:i,hadResult:a}=IB(t.stdout,n),o=e.name?`workflow: ${e.name}${e.description?` — `+e.description:``}\n`:``,s=i?eV(i)+`
3444
3453
  `:``;return t.exitCode!==0||!a?{stdout:o+s,stderr:t.stderr||(a?``:`workflow: script produced no result
3445
3454
  `),exitCode:t.exitCode||1}:{stdout:o+s+(typeof r==`string`?r:JSON.stringify(r))+`
3446
- `,stderr:t.stderr,exitCode:0}}function YB(e){return e.split(`
3455
+ `,stderr:t.stderr,exitCode:0}}function eV(e){return e.split(`
3447
3456
  `).map(e=>e.replace(/^WFPHASE/,`▸ `).replace(/^WFLOG/,`· `)).join(`
3448
- `)}function XB(e){return{stdout:``,stderr:`xxd: ${e}\n`,exitCode:1}}function ZB(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 QB(e,t){let n=e.toString(16).padStart(2,`0`);return t?n.toUpperCase():n}function $B(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function eV(e){return e.replace(/[^0-9a-zA-Z]/g,`_`)}function tV(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?QB(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(`
3457
+ `)}function tV(e){return{stdout:``,stderr:`xxd: ${e}\n`,exitCode:1}}function nV(e){if(e==null)throw Error(`missing option value`);let t=e.startsWith(`-`),n=t||e.startsWith(`+`)?e.slice(1):e,r;if(/^0x[0-9a-fA-F]+$/.test(n))r=parseInt(n.slice(2),16);else if(/^[0-9]+$/.test(n))r=parseInt(n,10);else throw Error(`invalid number: ${e}`);return t?-r:r}function rV(e,t){let n=e.toString(16).padStart(2,`0`);return t?n.toUpperCase():n}function iV(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function aV(e){return e.replace(/[^0-9a-zA-Z]/g,`_`)}function oV(e,t,n,r,i){let a=[];for(let o=0;o<e.length;o+=t){let s=Math.min(o+t,e.length),c=(i+o).toString(16).padStart(8,`0`),l=``;for(let i=0;i<t;i++)n>0&&i>0&&i%n===0&&(l+=` `),l+=o+i<s?rV(e[o+i],r):` `;let u=``;for(let t=o;t<s;t++)u+=e[t]>=32&&e[t]<=126?String.fromCharCode(e[t]):`.`;a.push(`${c}: ${l} ${u}`)}return a.length?a.join(`
3449
3458
  `)+`
3450
- `:``}function nV(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+=QB(e[i+r],n);r+=a+`
3451
- `}return r}function rV(e,t,n,r){let i=Array.from(e,e=>`0x${QB(e,n)}`),a=[];for(let e=0;e<i.length;e+=t)a.push(` `+i.slice(e,e+t).join(`, `));let o=a.join(`,
3459
+ `:``}function sV(e,t,n){let r=``;for(let i=0;i<e.length;i+=t){let a=``;for(let r=0;r<t&&i+r<e.length;r++)a+=rV(e[i+r],n);r+=a+`
3460
+ `}return r}function cV(e,t,n,r){let i=Array.from(e,e=>`0x${rV(e,n)}`),a=[];for(let e=0;e<i.length;e+=t)a.push(` `+i.slice(e,e+t).join(`, `));let o=a.join(`,
3452
3461
  `);return r===null?i.length?o+`
3453
- `:``:`unsigned char ${r}[] = {\n${o}\n};\nunsigned int ${r}_len = ${e.length};\n`}function iV(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 aV(e){let t=[],n=0;for(let r of e.split(`
3454
- `)){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 oV={"-u":`upper`,"-p":`plain`,"-ps":`plain`,"-postscript":`plain`,"-i":`include`,"-include":`include`,"-r":`revert`,"-revert":`revert`},sV=[{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 cV(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=oV[r];if(i){t[i]=!0;continue}let a=sV.find(e=>e.exact.includes(r)||e.attached.test(r));if(a){t[a.key]=ZB(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 lV(e){return e.includes(`-h`)||e.includes(`--help`)||e.includes(`-help`)}async function uV(e,t,n){if(!n&&t)return e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t));let r=ei(e.stdin),i=new Uint8Array(r.length);for(let e=0;e<r.length;e++)i[e]=r.charCodeAt(e)&255;return i}function dV(e,t,n,r,i){let a=e.cols&&e.cols>0?e.cols:e.plain?30:e.include?12:16;return e.plain?nV(t,a,e.upper):e.include?rV(t,a,e.upper,i?null:eV(r??``)):tV(t,a,e.group!=null&&e.group>=0?e.group:2,e.upper,n)}function fV(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 pV(){return S(`xxd`,async(e,t)=>{if(lV(e))return{stdout:`usage: xxd [options] [infile [outfile]]
3462
+ `:``:`unsigned char ${r}[] = {\n${o}\n};\nunsigned int ${r}_len = ${e.length};\n`}function lV(e){let t=e.replace(/[^0-9a-fA-F]/g,``),n=Math.floor(t.length/2),r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=parseInt(t.substr(e*2,2),16);return r}function uV(e){let t=[],n=0;for(let r of e.split(`
3463
+ `)){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 dV={"-u":`upper`,"-p":`plain`,"-ps":`plain`,"-postscript":`plain`,"-i":`include`,"-include":`include`,"-r":`revert`,"-revert":`revert`},fV=[{key:`cols`,exact:[`-c`,`-cols`],attached:/^-c(0x)?[0-9]/},{key:`group`,exact:[`-g`,`-groupsize`],attached:/^-g(0x)?[0-9]/},{key:`length`,exact:[`-l`,`-len`],attached:/^-l(0x)?[0-9]/},{key:`seek`,exact:[`-s`,`-seek`],attached:/^-s[+-]?(0x)?[0-9]/}];function pV(e){let t={upper:!1,plain:!1,include:!1,revert:!1,positional:[]};for(let n=0;n<e.length;n++){let r=e[n],i=dV[r];if(i){t[i]=!0;continue}let a=fV.find(e=>e.exact.includes(r)||e.attached.test(r));if(a){t[a.key]=nV(a.exact.includes(r)?e[++n]:r.slice(2));continue}if(r!==`-`&&r.startsWith(`-`)&&r.length>1)throw Error(`invalid option ${r}`);t.positional.push(r)}return t}function mV(e){return e.includes(`-h`)||e.includes(`--help`)||e.includes(`-help`)}async function hV(e,t,n){if(!n&&t)return e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t));let r=ti(e.stdin),i=new Uint8Array(r.length);for(let e=0;e<r.length;e++)i[e]=r.charCodeAt(e)&255;return i}function gV(e,t,n,r,i){let a=e.cols&&e.cols>0?e.cols:e.plain?30:e.include?12:16;return e.plain?sV(t,a,e.upper):e.include?cV(t,a,e.upper,i?null:aV(r??``)):oV(t,a,e.group!=null&&e.group>=0?e.group:2,e.upper,n)}function _V(e,t){let n=0,r=t;return e.seek!==void 0&&(n=e.seek<0?Math.max(0,r.length+e.seek):Math.min(e.seek,r.length),r=r.subarray(n)),e.length!==void 0&&(r=r.subarray(0,Math.max(0,e.length))),{data:r,base:n}}function vV(){return S(`xxd`,async(e,t)=>{if(mV(e))return{stdout:`usage: xxd [options] [infile [outfile]]
3455
3464
  -c cols number of octets per line (default 16; 30 for -p; 12 for -i)
3456
3465
  -g bytes number of octets per group (default 2; 0 disables grouping)
3457
3466
  -l len stop after len octets
@@ -3461,8 +3470,8 @@ pass --wait to block and print the full result.`,IB=new Set([`list`,`status`,`st
3461
3470
  -i output in C include style
3462
3471
  -r reverse: convert a hex dump back to binary (-r -p for plain)
3463
3472
  -h show this help
3464
- `,stderr:``,exitCode:0};let n;try{n=cV(e)}catch(e){return XB(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await uV(t,r,a)}catch{return XB(`${r}: No such file or directory`)}if(n.revert){let e=$B(o),r=n.plain?iV(e):aV(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:$B(r),stderr:``,exitCode:0}}let{data:s,base:c}=fV(n,o),l=dV(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 mV(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=$n(t,o),s=n?`${n}/${o}`:o;a+=await mV(e,i,s,r)}return a}function hV(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3465
- `,stderr:``,exitCode:0}}function gV(){return S(`zip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return hV();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
3466
- `,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(/^\.\//,``))||er(r);if(i.isDirectory&&!n)return{stdout:``,stderr:`zip: ${e} is a directory (use -r)\n`,exitCode:1};s+=await mV(t,r,a,o)}if(s===0)return{stdout:``,stderr:`zip: nothing to do
3467
- `,exitCode:1};let c=St(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function _V(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function vV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[GD(`ipk`,r),GD(`npm`,r),GD(`i`,r),OO(`ipx`,{fs:t,fetch:n}),OO(`npx`,{fs:t,fetch:n}),Zy(`di`,{fs:t,fetch:n}),Zy(`uv`,{fs:t,fetch:n}),JL({fs:t,fetch:n})]}function yV(e={}){let t=[YT({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),te(),VF(),oF(),$P(e.browserAPI,e.fs),Rj(e.browserAPI),py(e.browserAPI),XE(e),gV(),wL(),gI(),JF(),tI(),QF(),cv(),pV(),FF(`sqlite3`),FF(`sqllite`),NI(),$I(),px(),W_(),tj({buildProcessConfig:e.buildProcessConfig}),tj({buildProcessConfig:e.buildProcessConfig},`jsh`),QM(`python3`,{buildProcessConfig:e.buildProcessConfig}),QM(`python`,{buildProcessConfig:e.buildProcessConfig}),...vV(e),...e.fs?[yS({fs:e.fs})]:[],...e.fs?[pA({fs:e.fs})]:[],...e.fetch?[nE({fetch:e.fetch})]:[],oS(),sS(),Nz(e.webhook),vB(),fy(e.crontask),bk({fs:e.fs,scriptCatalog:e.scriptCatalog}),iM({fs:e.fs,fetch:e.fetch}),vS(),EF(),zj(),Bj(`pdftk`),Bj(`pdf`),G_(`biscotto`),G_(`biscotti`),Xj(`pdftoppm`),Xj(`pdftocairo`),Zj(`pdftotext`),Xv(`convert`),Xv(`magick`),wB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),rL(),yL(),KE(),qE(),bL(),mA(),nN(),mk(),Rb(),gj(),hj(),dk(),wP(_V(e)),hN({fs:e.fs}),HN(),av(),ov(),sv(`xclip`),sv(`xsel`),VN(),LS(),gg(),_g(),VA(e.fs),et(),oj(),Lg({getParentJid:e.getParentJid}),Kb(),EM({processManager:e.processManager}),lR({processManager:e.processManager}),jO({processManager:e.processManager}),kO({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...Bg(),fA(),rk(),PR(),OE(),Jx(),XR({processManager:e.processManager}),dv({processManager:e.processManager,browser:e.browserAPI,sudoBroker:e.sudoCommand?.broker}),aS(),Q_({registry:e.cherryRuntimeRegistry}),by(),Dy({fs:e.fs}),Oy({fs:e.fs}),UF(e.sudoCommand),VB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),yB(),aF()];return e.fs&&($j(),t.push(...Mn.map(t=>KT(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let bV=null;function xV(e){bV=e}function SV(e){bV?.(e)}var CV=Et();const wV=Reflect.get(Je,`DefenseInDepthBox`);function TV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function EV(e,t){if(typeof e!=`string`)return e;let n=TV(t);if(n===`binary`||n===`latin1`){let t=le(e);if(t)return t}return CV.Buffer.from(e,n)}var DV=class{vfs;registeredCommandsFn=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}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=Ne(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}getVirtualBinCommands(){return this.registeredCommandsFn?.()??[]}virtualUsrStat(e){if(e===`/usr`||e===`/usr/bin`)return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date(0)};if(e.startsWith(`/usr/bin/`)){let t=e.slice(9);if(t.length>0&&!t.includes(`/`)&&this.getVirtualBinCommands().includes(t))return{isFile:!0,isDirectory:!1,isSymbolicLink:!1,mode:493,size:0,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=wV?.runTrustedAsync;return t?t(e):Promise.resolve().then(e)}async readFile(e,t){return this.trusted(async()=>{let n=b(e),r=await this.vfs.readFile(n,{encoding:`binary`}),i=r instanceof Uint8Array?r:new TextEncoder().encode(r),a=TV(t),o=CV.Buffer.from(i.buffer,i.byteOffset,i.byteLength).toString(a);return a!==`hex`&&a!==`base64`&&g(o,i),o})}async readFileBuffer(e){return this.trusted(async()=>{let t=b(e),n=await this.vfs.readFile(t,{encoding:`binary`});return n instanceof Uint8Array?n:new TextEncoder().encode(n)})}async readFileBytes(e){let t=await this.readFileBuffer(e);return CV.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,EV(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(b(e),EV(t,n)))}async exists(e){return this.trusted(async()=>{let t=b(e);return this.virtualUsrStat(t)?!0:this.vfs.exists(t)})}async stat(e){return this.trusted(async()=>{let t=b(e),n=this.virtualUsrStat(t);if(n)return n;let r=this.vfs.statSync(t);if(r)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};let i=this.primedStats(t)??await this.vfs.stat(t);return{isFile:i.type===`file`,isDirectory:i.type===`directory`,isSymbolicLink:!!i.isSymlink,mode:i.mode??(i.type===`directory`?493:420),size:i.size,mtime:new Date(i.mtime),identity:i.identity,dev:i.dev,ino:i.identity===void 0?void 0:i.ino}})}async lstat(e){return this.trusted(async()=>{let t=b(e),n=this.virtualUsrStat(t);if(n)return n;let r=this.vfs.lstatSync(t);if(r)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};let i=this.primedStats(t)??await this.vfs.lstat(t);return{isFile:i.type===`file`,isDirectory:i.type===`directory`,isSymbolicLink:i.type===`symlink`,mode:i.mode??(i.type===`directory`?493:i.type===`symlink`?511:420),size:i.size,mtime:new Date(i.mtime),identity:i.identity,dev:i.dev,ino:i.identity===void 0?void 0:i.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(t===`/usr/bin`)return this.getVirtualBinCommands().slice().sort();let n=this.vfs.readDirSync(t);if(n!==null)return n.map(e=>e.name);let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),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(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 this.mapFastEntriesToDirents(n);let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),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);if((await this.vfs.stat(r)).type===`directory`){if(!n?.recursive)throw new Pe(`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)}}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 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 OV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?OV(e.getUnderlyingFS?.()):null}async function kV(e){let t=ce(`github`);if(t){if(e?.force){await t.onSilentRenew?.();return}await t.getValidAccessToken?.()}}const AV=e(`almost-bash-shell`),jV=`__SLICC_RUN_PID`,MV=`__SLICC_OUTPUT_TEE__`;function NV(e){let t=e?.get(jV);if(t===void 0)return;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:void 0}function PV(e){if(!(jV in e)&&!(MV in e)&&!(`__SLICC_SUDO_REASON`in e)&&!(`__SLICC_PIPESTATUS`in e)&&!(`__SLICC_PIPESTATUS_EX`in e))return{...e};let{[jV]:t,[MV]:n,[$p]:r,[rp]:i,[ip]:a,...o}=e;return o}var FV=class e{options;bash;vfsAdapter;gitCommands;mountCommands;lastEnv;cwd;builtinCommandNames;staticBuiltinNames;allowedCommands;scriptCatalog;initialJshSync=null;ownsScriptCatalog;registeredJshCommands=new Map;registeredWorkflowCommands=new Set;jshSyncInflight=null;jshSyncDirty=!1;pendingCommandGrants=[];pendingSudoBypasses=new Map;pendingEnvWrites=new Map;activeShellPid;progress;activeRunSignal;scriptRun=null;scriptRunsActive=0;registryNames=new Set;outputTees=new Map;nextOutputTeeId=0;resolveJshProcessConfig=e=>this.buildJshProcessConfig(NV(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:$f,PATH:Hn,USER:`user`,SHELL:`/bin/bash`,TMPDIR:`/tmp`,PWD:t,...e.env}}buildSupplementalCommands(e,t){return yV({onMediaPreview:async e=>this.renderMediaPreview(e),getJshCommands:()=>this.getJshCommandNames(),getWorkflowCommands:()=>this.getWorkflowCommandNames(),syncScriptCommands:()=>this.syncJshCommands(),getStaticBuiltins:()=>[...this.staticBuiltinNames],getScriptRegisteredNames:()=>[...this.registeredJshCommands.keys(),...this.registeredWorkflowCommands],fs:e.fs,fetch:t,scriptCatalog:this.scriptCatalog,browserAPI:e.browserAPI,webhook:e.webhook,crontask:e.crontask,getParentJid:e.getParentJid,isScoop:e.isScoop,buildProcessConfig:this.resolveJshProcessConfig,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]}})}constructor(t){this.options=t,this.vfsAdapter=new DV(t.fs),this.progress=new hp({scrubLabel:t.scrubProgressLabel}),this.allowedCommands=e.buildAllowedCommandSet(t);let n=t.cwd??`/`,r=e.buildInitialEnv(t,n);this.gitCommands=new Xf({fs:t.fs,authorName:r.GIT_AUTHOR_NAME??`User`,authorEmail:r.GIT_AUTHOR_EMAIL??`user@example.com`,ensureFreshGithubToken:kV}),this.mountCommands=new Cs({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:om});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=OV(i)??OV(a);this.scriptCatalog=t.scriptCatalog??new ai({jshFs:i,bshFs:a,watcher:o}),this.ownsScriptCatalog=!t.scriptCatalog,o&&o.watch(`/`,e=>e.endsWith(`.jsh`)||e.endsWith(`.workflow.js`),()=>{this.syncJshCommands().catch(()=>void 0)});let s=this.createGitCustomCommand(),c=h({progress:bp(this.progress)}),l=this.buildSupplementalCommands(t,c),u=[s,this.createMountCustomCommand(),this.createUmountCustomCommand(),eh(t.fs),Zh(t.fs,c,t.browserAPI),...l].filter(e=>this.isCommandAllowed(e.name)),d=[...Xe(),...Ye()],f=this.allowedCommands?d.filter(e=>this.isCommandAllowed(e)):void 0;if(this.bash=new Ze({fs:this.vfsAdapter,cwd:n,env:{},fetch:c,commands:f,customCommands:u,sleep:Vp(this.progress,{isAborted:()=>this.activeRunSignal?.aborted??!1}),executionLimitProfile:t.executionLimitProfile,executionLimits:Qf(t.isScoop?.()??!1,t.executionLimits)}),this.bash.registerTransformPlugin(mm),this.allowedCommands!==null){let e=this.bash;for(let t of Ye())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 p=u.map(e=>e.name),m=f??[...Xe(),...Ye()];this.builtinCommandNames=new Set([...m,...p]),this.staticBuiltinNames=new Set(this.builtinCommandNames),this.vfsAdapter.setRegisteredCommandsFn(()=>[...this.builtinCommandNames]),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)}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 zr(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,...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 Un(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 ep(e);this.lastEnv.HOME=t,this.options.env?.USER||(this.lastEnv.USER=tp(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});if(r.env){let{PWD:e,...t}=r.env;this.lastEnv={...t,PWD:this.lastEnv.PWD??this.cwd}}}catch(e){AV.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){SV(e.trim().split(/\s+/)[0]||`unknown`),p(),await this.waitForInitialJshSync(t);let o=tm(e),s={env:{...this.lastEnv,...n===void 0?{}:{[jV]:String(n)},...i===void 0?{}:{[MV]:i},...o?{[$p]:o}:{}},cwd:this.cwd,signal:t,...r===``?{}:{stdin:r,stdinKind:`bytes`}},c=this.lastEnv.PATH;this.activeRunSignal=t;let l=this.beginScriptRun(e),u;try{u=await this.bash.exec(lp(e,a),s)}finally{this.activeRunSignal===t&&(this.activeRunSignal=void 0),this.endScriptRun(l)}if(await this.flushPendingCommandGrants(),u=up(u,a),u.env&&(this.lastEnv=PV(u.env)),u.env&&this.lastEnv.PATH!==c&&await this.syncJshCommands().catch(()=>void 0),this.pendingEnvWrites.size>0){for(let[e,t]of this.pendingEnvWrites)t===null?delete this.lastEnv[e]:this.lastEnv[e]=t;this.pendingEnvWrites.clear()}if(u.env?.PWD&&(this.cwd=u.env.PWD),u.exitCode===127){let t=await this.tryJshFallback(e,n);if(t)return this.syncJshCommands().catch(()=>void 0),t}if(u.exitCode!==0&&u.stderr.includes(`Permission denied`)){let{withShebangExecHint:e}=await import(`./shebang-exec-hint-BISPom3l.js`);return dp(await e(u,this.cwd,this.vfsAdapter),u.pipeStatus)}return u}isTransparentGatingEnabled(){let e=this.options.sudo;return!!e&&e.transparentGating!==!1}wrapCommandForDispatch(e){let t=this.wrapCommandForSudo(e),n=e.name===`timeout`?Gp(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(MV),s=o?a.get(o):void 0;s&&(t.writeStdout=s);try{let r=await n.execute(e,t);return i(t.env,r),r}finally{r()}}}}teeCommandOutput(e,t){let n=e?.get(MV);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=Ip(this.bash.transform(e).ast,this.registryNames)}catch{t={totalSteps:null}}return this.scriptRun=new Rp(t,this.progress,Lp(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())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($p))||e.execute(n,r)}}}async gateCommandDispatch(e,t,n){let r=this.options.sudo;if(!r)return null;let i=Yp(e,t);if(this.consumeSudoBypass(i))return null;let a=r.getPolicy();if(!a)return null;let o=await Zp(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:1}}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=nt(e);if(!n)return;let r=`${it}/granted`,i=this.options.fs,a=``;try{await i.exists(r)&&(a=await i.readFile(r))}catch(e){if(!(e instanceof Pe&&e.code===`ENOENT`))throw e}let o=a&&!a.endsWith(`
3468
- `)?`${a}\n`:a;await i.writeFile(r,`${o}NOPASSWD Cmnd ${n}\n`)}isCommandAllowed(e){return this.allowedCommands===null||this.allowedCommands.has(e)}async doSyncJshCommands(){try{let e=await this.scriptCatalog.getJshIndex(this.currentScanRoots()),t=e.commands;for(let t of e.collisions)AV.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();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)));for(let e of n.keys())if(!this.registeredWorkflowCommands.has(e)){if(this.registeredJshCommands.has(e)){this.registeredWorkflowCommands.add(e);continue}this.builtinCommandNames.has(e)||(this.bash.registerCommand(this.wrapCommandForDispatch(this.makeScriptCommand(e))),this.registeredWorkflowCommands.add(e),this.builtinCommandNames.add(e))}}finally{this.jshSyncInflight=null,this.jshSyncDirty&&(this.jshSyncDirty=!1,this.syncJshCommands().catch(()=>void 0))}}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 Hr(t,[`node`,o,...e],{fs:i.fs,cwd:i.cwd,env:i.env,stdin:i.stdin,exec:a},this.buildJshProcessConfig(NV(i.env)))}let s=(await t.getWorkflowCommands()).get(r);if(s){let t=ii(s.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?np(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 Hr(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,...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{fa as C,xo as S,Io as _,jB as a,Sa as b,mp as c,ms as d,ss as f,Lo as g,ts as h,DB as i,$f as l,rs as m,DV as n,TB as o,is as p,xV as r,Qp as s,FV as t,hs as u,Do as v,xa as x,va as y};
3473
+ `,stderr:``,exitCode:0};let n;try{n=pV(e)}catch(e){return tV(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await hV(t,r,a)}catch{return tV(`${r}: No such file or directory`)}if(n.revert){let e=iV(o),r=n.plain?lV(e):uV(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:iV(r),stderr:``,exitCode:0}}let{data:s,base:c}=_V(n,o),l=gV(n,s,c,r,a);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),l),{stdout:``,stderr:``,exitCode:0}):{stdout:l,stderr:``,exitCode:0}})}async function yV(e,t,n,r){if((await e.fs.stat(t)).isFile)return r[n]=await e.fs.readFileBuffer(t),1;let i=await e.fs.readdir(t),a=0;for(let o of i){let i=er(t,o),s=n?`${n}/${o}`:o;a+=await yV(e,i,s,r)}return a}function bV(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3474
+ `,stderr:``,exitCode:0}}function xV(){return S(`zip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return bV();let n=!1,r=[];for(let t of e){if(t===`-r`){n=!0;continue}if(t.startsWith(`-`))return{stdout:``,stderr:`zip: unsupported option ${t}\n`,exitCode:1};r.push(t)}if(r.length<2)return{stdout:``,stderr:`zip: expected archive path and at least one input path
3475
+ `,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(/^\.\//,``))||tr(r);if(i.isDirectory&&!n)return{stdout:``,stderr:`zip: ${e} is a directory (use -r)\n`,exitCode:1};s+=await yV(t,r,a,o)}if(s===0)return{stdout:``,stderr:`zip: nothing to do
3476
+ `,exitCode:1};let c=Ct(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function SV(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function CV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[XD(`ipk`,r),XD(`npm`,r),XD(`i`,r),NO(`ipx`,{fs:t,fetch:n}),NO(`npx`,{fs:t,fetch:n}),Zy(`di`,{fs:t,fetch:n}),Zy(`uv`,{fs:t,fetch:n}),$L({fs:t,fetch:n})]}function wV(e={}){let t=[YT({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),ne(),KF(),dF(),iF(e.browserAPI,e.fs),Uj(e.browserAPI),py(e.browserAPI),tD(e),xV(),kL(),xI(),$F(),oI(),rI(),cv(),vV(),BF(`sqlite3`),BF(`sqllite`),RI(),iL(),px(),W_(),oj({buildProcessConfig:e.buildProcessConfig}),oj({buildProcessConfig:e.buildProcessConfig},`jsh`),rN(`python3`,{buildProcessConfig:e.buildProcessConfig}),rN(`python`,{buildProcessConfig:e.buildProcessConfig}),...CV(e),...e.fs?[yS({fs:e.fs})]:[],...e.fs?[vA({fs:e.fs})]:[],...e.fetch?[sE({fetch:e.fetch,streamFetch:e.streamFetch})]:[],oS(),sS(),Rz(e.webhook),CB(),fy(e.crontask),Tk({fs:e.fs,scriptCatalog:e.scriptCatalog}),lM({fs:e.fs,fetch:e.fetch}),vS(),jF(),Wj(),Gj(`pdftk`),Gj(`pdf`),G_(`biscotto`),G_(`biscotti`),tM(`pdftoppm`),tM(`pdftocairo`),nM(`pdftotext`),Xv(`convert`),Xv(`magick`),kB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),cL(),wL(),ZE(),QE(),TL(),yA(),sN(),yk(),Rb(),xj(),bj(),gk(),kP(SV(e)),bN({fs:e.fs}),qN(),av(),ov(),sv(`xclip`),sv(`xsel`),KN(),LS(),gg(),_g(),KA(e.fs),tt(),dj(),Lg({getParentJid:e.getParentJid}),Kb(),jM({processManager:e.processManager}),mR({processManager:e.processManager}),IO({processManager:e.processManager}),PO({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...Bg(),_A(),ck(),zR(),NE(),Jx(),tz({processManager:e.processManager}),dv({processManager:e.processManager,browser:e.browserAPI,sudoBroker:e.sudoCommand?.broker}),aS(),Q_({registry:e.cherryRuntimeRegistry}),by(),Dy({fs:e.fs}),Oy({fs:e.fs}),JF(e.sudoCommand),KB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),wB(),uF()];return e.fs&&(iM(),t.push(...Nn.map(t=>KT(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let TV=null;function EV(e){TV=e}function DV(e){TV?.(e)}var OV=Dt();const kV=Reflect.get(Ye,`DefenseInDepthBox`);function AV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function jV(e,t){if(typeof e!=`string`)return e;let n=AV(t);if(n===`binary`||n===`latin1`){let t=ue(e);if(t)return t}return OV.Buffer.from(e,n)}var MV=class{vfs;registeredCommandsFn=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}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=Pe(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}getVirtualBinCommands(){return this.registeredCommandsFn?.()??[]}virtualUsrStat(e){if(e===`/usr`||e===`/usr/bin`)return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date(0)};if(e.startsWith(`/usr/bin/`)){let t=e.slice(9);if(t.length>0&&!t.includes(`/`)&&this.getVirtualBinCommands().includes(t))return{isFile:!0,isDirectory:!1,isSymbolicLink:!1,mode:493,size:0,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=kV?.runTrustedAsync;return t?t(e):Promise.resolve().then(e)}async readFile(e,t){return this.trusted(async()=>{let n=b(e),r=await this.vfs.readFile(n,{encoding:`binary`}),i=r instanceof Uint8Array?r:new TextEncoder().encode(r),a=AV(t),o=OV.Buffer.from(i.buffer,i.byteOffset,i.byteLength).toString(a);return a!==`hex`&&a!==`base64`&&g(o,i),o})}async readFileBuffer(e){return this.trusted(async()=>{let t=b(e),n=await this.vfs.readFile(t,{encoding:`binary`});return n instanceof Uint8Array?n:new TextEncoder().encode(n)})}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,jV(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(b(e),jV(t,n)))}async exists(e){return this.trusted(async()=>{let t=b(e);return this.virtualUsrStat(t)?!0:this.vfs.exists(t)})}async stat(e){return this.trusted(async()=>{let t=b(e),n=this.virtualUsrStat(t);if(n)return n;let r=this.vfs.statSync(t);if(r)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};let i=this.primedStats(t)??await this.vfs.stat(t);return{isFile:i.type===`file`,isDirectory:i.type===`directory`,isSymbolicLink:!!i.isSymlink,mode:i.mode??(i.type===`directory`?493:420),size:i.size,mtime:new Date(i.mtime),identity:i.identity,dev:i.dev,ino:i.identity===void 0?void 0:i.ino}})}async lstat(e){return this.trusted(async()=>{let t=b(e),n=this.virtualUsrStat(t);if(n)return n;let r=this.vfs.lstatSync(t);if(r)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};let i=this.primedStats(t)??await this.vfs.lstat(t);return{isFile:i.type===`file`,isDirectory:i.type===`directory`,isSymbolicLink:i.type===`symlink`,mode:i.mode??(i.type===`directory`?493:i.type===`symlink`?511:420),size:i.size,mtime:new Date(i.mtime),identity:i.identity,dev:i.dev,ino:i.identity===void 0?void 0:i.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(t===`/usr/bin`)return this.getVirtualBinCommands().slice().sort();let n=this.vfs.readDirSync(t);if(n!==null)return n.map(e=>e.name);let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),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(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 this.mapFastEntriesToDirents(n);let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),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);if((await this.vfs.stat(r)).type===`directory`){if(!n?.recursive)throw new Fe(`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)}}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 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 NV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?NV(e.getUnderlyingFS?.()):null}async function PV(e){let t=le(`github`);if(t){if(e?.force){await t.onSilentRenew?.();return}await t.getValidAccessToken?.()}}const FV=e(`almost-bash-shell`),IV=`__SLICC_RUN_PID`,LV=`__SLICC_OUTPUT_TEE__`;function RV(e){let t=e?.get(IV);if(t===void 0)return;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:void 0}function zV(e){if(!(IV in e)&&!(LV in e)&&!(`__SLICC_SUDO_REASON`in e)&&!(`__SLICC_PIPESTATUS`in e)&&!(`__SLICC_PIPESTATUS_EX`in e))return{...e};let{[IV]:t,[LV]:n,[$p]:r,[rp]:i,[ip]:a,...o}=e;return o}var BV=class e{options;bash;vfsAdapter;gitCommands;mountCommands;lastEnv;cwd;builtinCommandNames;staticBuiltinNames;allowedCommands;scriptCatalog;initialJshSync=null;ownsScriptCatalog;registeredJshCommands=new Map;registeredWorkflowCommands=new Set;jshSyncInflight=null;jshSyncDirty=!1;pendingCommandGrants=[];pendingSudoBypasses=new Map;pendingEnvWrites=new Map;activeShellPid;progress;activeRunSignal;scriptRun=null;scriptRunsActive=0;registryNames=new Set;outputTees=new Map;nextOutputTeeId=0;resolveJshProcessConfig=e=>this.buildJshProcessConfig(RV(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:$f,PATH:Un,USER:`user`,SHELL:`/bin/bash`,TMPDIR:`/tmp`,PWD:t,...e.env}}buildSupplementalCommands(e,t,n){return wV({onMediaPreview:async e=>this.renderMediaPreview(e),getJshCommands:()=>this.getJshCommandNames(),getWorkflowCommands:()=>this.getWorkflowCommandNames(),syncScriptCommands:()=>this.syncJshCommands(),getStaticBuiltins:()=>[...this.staticBuiltinNames],getScriptRegisteredNames:()=>[...this.registeredJshCommands.keys(),...this.registeredWorkflowCommands],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,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]}})}constructor(t){this.options=t,this.vfsAdapter=new MV(t.fs),this.progress=new hp({scrubLabel:t.scrubProgressLabel}),this.allowedCommands=e.buildAllowedCommandSet(t);let n=t.cwd??`/`,r=e.buildInitialEnv(t,n);this.gitCommands=new Xf({fs:t.fs,authorName:r.GIT_AUTHOR_NAME??`User`,authorEmail:r.GIT_AUTHOR_EMAIL??`user@example.com`,ensureFreshGithubToken:PV}),this.mountCommands=new Cs({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:om});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=NV(i)??NV(a);this.scriptCatalog=t.scriptCatalog??new oi({jshFs:i,bshFs:a,watcher:o}),this.ownsScriptCatalog=!t.scriptCatalog,o&&o.watch(`/`,e=>e.endsWith(`.jsh`)||e.endsWith(`.workflow.js`),()=>{this.syncJshCommands().catch(()=>void 0)});let s=this.createGitCustomCommand(),c=p({progress:bp(this.progress)}),l=h({progress:bp(this.progress)}),u=this.buildSupplementalCommands(t,c,l),d=[s,this.createMountCustomCommand(),this.createUmountCustomCommand(),eh(t.fs),Zh(t.fs,c,t.browserAPI),...u].filter(e=>this.isCommandAllowed(e.name)),f=[...Ze(),...Xe()],m=this.allowedCommands?f.filter(e=>this.isCommandAllowed(e)):void 0;if(this.bash=new Qe({fs:this.vfsAdapter,cwd:n,env:{},fetch:c,commands:m,customCommands:d,sleep:Vp(this.progress,{isAborted:()=>this.activeRunSignal?.aborted??!1}),executionLimitProfile:t.executionLimitProfile,executionLimits:Qf(t.isScoop?.()??!1,t.executionLimits)}),this.bash.registerTransformPlugin(mm),this.allowedCommands!==null){let e=this.bash;for(let t of Xe())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 g=d.map(e=>e.name),_=m??[...Ze(),...Xe()];this.builtinCommandNames=new Set([..._,...g]),this.staticBuiltinNames=new Set(this.builtinCommandNames),this.vfsAdapter.setRegisteredCommandsFn(()=>[...this.builtinCommandNames]),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)}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 Br(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,...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 Wn(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 ep(e);this.lastEnv.HOME=t,this.options.env?.USER||(this.lastEnv.USER=tp(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});if(r.env){let{PWD:e,...t}=r.env;this.lastEnv={...t,PWD:this.lastEnv.PWD??this.cwd}}}catch(e){FV.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){DV(e.trim().split(/\s+/)[0]||`unknown`),m(),await this.waitForInitialJshSync(t);let o=tm(e),s={env:{...this.lastEnv,...n===void 0?{}:{[IV]:String(n)},...i===void 0?{}:{[LV]:i},...o?{[$p]:o}:{}},cwd:this.cwd,signal:t,...r===``?{}:{stdin:r,stdinKind:`bytes`}},c=this.lastEnv.PATH;this.activeRunSignal=t;let l=this.beginScriptRun(e),u;try{u=await this.bash.exec(lp(e,a),s)}finally{this.activeRunSignal===t&&(this.activeRunSignal=void 0),this.endScriptRun(l)}if(await this.flushPendingCommandGrants(),u=up(u,a),u.env&&(this.lastEnv=zV(u.env)),u.env&&this.lastEnv.PATH!==c&&await this.syncJshCommands().catch(()=>void 0),this.pendingEnvWrites.size>0){for(let[e,t]of this.pendingEnvWrites)t===null?delete this.lastEnv[e]:this.lastEnv[e]=t;this.pendingEnvWrites.clear()}if(u.env?.PWD&&(this.cwd=u.env.PWD),u.exitCode===127){let t=await this.tryJshFallback(e,n);if(t)return this.syncJshCommands().catch(()=>void 0),t}if(u.exitCode!==0&&u.stderr.includes(`Permission denied`)){let{withShebangExecHint:e}=await import(`./shebang-exec-hint-BISPom3l.js`);return dp(await e(u,this.cwd,this.vfsAdapter),u.pipeStatus)}return u}isTransparentGatingEnabled(){let e=this.options.sudo;return!!e&&e.transparentGating!==!1}wrapCommandForDispatch(e){let t=this.wrapCommandForSudo(e),n=e.name===`timeout`?Gp(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(LV),s=o?a.get(o):void 0;s&&(t.writeStdout=s);try{let r=await n.execute(e,t);return i(t.env,r),r}finally{r()}}}}teeCommandOutput(e,t){let n=e?.get(LV);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=Ip(this.bash.transform(e).ast,this.registryNames)}catch{t={totalSteps:null}}return this.scriptRun=new Rp(t,this.progress,Lp(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())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($p))||e.execute(n,r)}}}async gateCommandDispatch(e,t,n){let r=this.options.sudo;if(!r)return null;let i=Yp(e,t);if(this.consumeSudoBypass(i))return null;let a=r.getPolicy();if(!a)return null;let o=await Zp(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:1}}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=rt(e);if(!n)return;let r=`${at}/granted`,i=this.options.fs,a=``;try{await i.exists(r)&&(a=await i.readFile(r))}catch(e){if(!(e instanceof Fe&&e.code===`ENOENT`))throw e}let o=a&&!a.endsWith(`
3477
+ `)?`${a}\n`:a;await i.writeFile(r,`${o}NOPASSWD Cmnd ${n}\n`)}isCommandAllowed(e){return this.allowedCommands===null||this.allowedCommands.has(e)}async doSyncJshCommands(){try{let e=await this.scriptCatalog.getJshIndex(this.currentScanRoots()),t=e.commands;for(let t of e.collisions)FV.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();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)));for(let e of n.keys())if(!this.registeredWorkflowCommands.has(e)){if(this.registeredJshCommands.has(e)){this.registeredWorkflowCommands.add(e);continue}this.builtinCommandNames.has(e)||(this.bash.registerCommand(this.wrapCommandForDispatch(this.makeScriptCommand(e))),this.registeredWorkflowCommands.add(e),this.builtinCommandNames.add(e))}}finally{this.jshSyncInflight=null,this.jshSyncDirty&&(this.jshSyncDirty=!1,this.syncJshCommands().catch(()=>void 0))}}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 Ur(t,[`node`,o,...e],{fs:i.fs,cwd:i.cwd,env:i.env,stdin:i.stdin,exec:a},this.buildJshProcessConfig(RV(i.env)))}let s=(await t.getWorkflowCommands()).get(r);if(s){let t=ai(s.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?np(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 Ur(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,...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{fa as C,xo as S,Io as _,IB as a,Sa as b,mp as c,ms as d,ss as f,Lo as g,ts as h,MB as i,$f as l,rs as m,MV as n,AB as o,is as p,EV as r,Qp as s,BV as t,hs as u,Do as v,xa as x,va as y};