sliccy 6.182.0 → 6.184.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/dist/ui/.vite/manifest.json +264 -256
  2. package/dist/ui/assets/SKILL-B4YYagrM.js +1 -0
  3. package/dist/ui/assets/{SKILL-BpMlcVho.js → SKILL-BbKu0tAh.js} +1 -1
  4. package/dist/ui/assets/{SKILL-DGelbGt_.js → SKILL-CG7Xvjv7.js} +1 -1
  5. package/dist/ui/assets/{account-store-BxB3138q.js → account-store-CBy3uUkr.js} +2 -2
  6. package/dist/ui/assets/{account-store-UA_3Tz4g.js → account-store-D48vh7jd.js} +1 -1
  7. package/dist/ui/assets/{adobe-C5iQ4vVx.js → adobe-Cnqngn3V.js} +2 -2
  8. package/dist/ui/assets/{adobe-CGl3cGPR.js → adobe-DN9SWzx5.js} +1 -1
  9. package/dist/ui/assets/{agent-panels-DfmjvBS2.js → agent-panels-Dj7wt72x.js} +1 -1
  10. package/dist/ui/assets/{almost-bash-shell-headless-l1xuiFhc.js → almost-bash-shell-headless-DbncEJ15.js} +309 -301
  11. package/dist/ui/assets/{apply-layout-Bq6bvrT2.js → apply-layout-CKWlNy_m.js} +1 -1
  12. package/dist/ui/assets/{apps-BX-IbYH9.js → apps-DEhr6ase.js} +1 -1
  13. package/dist/ui/assets/{azure-openai-BXvWNypo.js → azure-openai-BljHi43t.js} +1 -1
  14. package/dist/ui/assets/{azure-openai-C2dDMpxW.js → azure-openai-DNeqfy5S.js} +1 -1
  15. package/dist/ui/assets/{backend-hostfs-DV8kfBUj.js → backend-hostfs-BHTSdKW0.js} +1 -1
  16. package/dist/ui/assets/{capability-C8I_18AN.js → capability-BgC-ru0t.js} +2 -2
  17. package/dist/ui/assets/{cdp-B0aSo4ch.js → cdp-Bqv3wfRF.js} +1 -1
  18. package/dist/ui/assets/{cerebras-D29ytBVb.js → cerebras-CaiKjK1C.js} +1 -1
  19. package/dist/ui/assets/{cerebras-B2SDJ5pX.js → cerebras-CsNFOxy7.js} +1 -1
  20. package/dist/ui/assets/{client-Sb_wIqH2.js → client-CmfvXtLV.js} +1 -1
  21. package/dist/ui/assets/{composer-speech-Dt-gM11M.js → composer-speech-DO_1ARO_.js} +1 -1
  22. package/dist/ui/assets/{connect-surface-Cb3XqWWR.js → connect-surface-CFDyhjfM.js} +1 -1
  23. package/dist/ui/assets/{core-B3ULTK7V.js → core-Be1yHH6v.js} +1 -1
  24. package/dist/ui/assets/{core-CDo7qjEn.js → core-D-Fp1HL2.js} +1 -1
  25. package/dist/ui/assets/{directed-approval-BEel8QYA.js → directed-approval-BrvnnHDl.js} +1 -1
  26. package/dist/ui/assets/{discovery-preference-C7kFEKRM.js → discovery-preference-MWZVi-PZ.js} +1 -1
  27. package/dist/ui/assets/dist-C8ZpEU8V.js +3 -0
  28. package/dist/ui/assets/{emscripten-vfs-hook-bNKkM3Zb.js → emscripten-vfs-hook-DsODtDYP.js} +1 -1
  29. package/dist/ui/assets/ensure-speech-assets-C-TN5__M.js +1 -0
  30. package/dist/ui/assets/{extension-ops-CmuqbGmo.js → extension-ops-DTRUyGkx.js} +1 -1
  31. package/dist/ui/assets/{float-topology-BvkgNLoi.js → float-topology-B0_dG7En.js} +1 -1
  32. package/dist/ui/assets/{follower-navigate-watcher-B8Kk1WcF.js → follower-navigate-watcher-DVWQWTGU.js} +1 -1
  33. package/dist/ui/assets/{frozen-archive-writer-DWckLPIx.js → frozen-archive-writer-C1GtGgkF.js} +1 -1
  34. package/dist/ui/assets/{fs-Bvj_6WV6.js → fs-Gd3zHsod.js} +1 -1
  35. package/dist/ui/assets/{fs-Bl1dGTw7.js → fs-WGmHjFqB.js} +2 -2
  36. package/dist/ui/assets/{gelatiere-store-CslswlOn.js → gelatiere-store-B2plOkO0.js} +1 -1
  37. package/dist/ui/assets/{gelatiere-unit-DOffAKPD.js → gelatiere-unit-1wIxueza.js} +1 -1
  38. package/dist/ui/assets/{github-DVquHzS1.js → github-C9vbtD0b.js} +1 -1
  39. package/dist/ui/assets/{github-DRuWNJ0x.js → github-W7PF4o3P.js} +2 -2
  40. package/dist/ui/assets/{github-auth-C5UPE82y.js → github-auth-DrNumx5i.js} +1 -1
  41. package/dist/ui/assets/{github-copilot-DXbnFsoC.js → github-copilot-BQhi7UOk.js} +1 -1
  42. package/dist/ui/assets/{github-copilot-ha5V9jKJ.js → github-copilot-DpLzu-mE.js} +1 -1
  43. package/dist/ui/assets/{github-install-z8nzKR56.js → github-install-COa6G7Bf.js} +1 -1
  44. package/dist/ui/assets/{github-zip-YeBT3Ny7.js → github-zip-Cr9Lysol.js} +1 -1
  45. package/dist/ui/assets/{guest-tool-gate-Dn4Cs-oT.js → guest-tool-gate-B2z1ggE_.js} +1 -1
  46. package/dist/ui/assets/{hear-ClByyjXy.js → hear-BJgsPPcn.js} +1 -1
  47. package/dist/ui/assets/{help-p6vq-7bY.js → help-BFAT_5tA.js} +1 -1
  48. package/dist/ui/assets/hf-defaults-BwJdGLgk.js +1 -0
  49. package/dist/ui/assets/hf-download-TLCxnVIL.js +1 -0
  50. package/dist/ui/assets/installer-C0LqqeMg.js +4 -0
  51. package/dist/ui/assets/{interrupted-work-recovery-C3eyzaf0.js → interrupted-work-recovery-r9fITX8G.js} +1 -1
  52. package/dist/ui/assets/{js-realm-worker-C8L3DYxo.js → js-realm-worker-Vb3TOeXV.js} +2 -2
  53. package/dist/ui/assets/{jsh-executor-BRw7B4H0.js → jsh-executor-Bq_H_UIv.js} +2 -2
  54. package/dist/ui/assets/{kernel-worker-DJ8FZwqE.js → kernel-worker-B_U-F-B8.js} +10 -10
  55. package/dist/ui/assets/{lick-ws-bridge-DjxKrqtY.js → lick-ws-bridge-5rjWJX_C.js} +1 -1
  56. package/dist/ui/assets/{lick-ws-bridge-AHYpxmrH.js → lick-ws-bridge-D9K41aBr.js} +1 -1
  57. package/dist/ui/assets/{live-session-curation-ChbHqCg_.js → live-session-curation-G-k3QTeJ.js} +1 -1
  58. package/dist/ui/assets/{live-session-snapshot-CEM9afjE.js → live-session-snapshot-bmMahgEk.js} +1 -1
  59. package/dist/ui/assets/{local-llm-3Pq3W9JZ.js → local-llm-DXIS7Y11.js} +1 -1
  60. package/dist/ui/assets/{local-llm-DSfR5Yt1.js → local-llm-GJ4RcMJS.js} +1 -1
  61. package/dist/ui/assets/{main-DtPQfxOa.js → main-B_JNHrJJ.js} +3 -3
  62. package/dist/ui/assets/{main-cherry-GQeDS2ns.js → main-cherry-Dj6QX2bL.js} +1 -1
  63. package/dist/ui/assets/{memory-curation-seam-COOFWWtR.js → memory-curation-seam-DmVivNPt.js} +1 -1
  64. package/dist/ui/assets/{memory-health-DxPjxnOp.js → memory-health-BLYwkoRF.js} +1 -1
  65. package/dist/ui/assets/{memory-write-execute-CRxpEM2X.js → memory-write-execute-Bn0Cfxgi.js} +1 -1
  66. package/dist/ui/assets/{mount-9N6h5nwh.js → mount-DFtXqz7u.js} +3 -3
  67. package/dist/ui/assets/{mount-bridge-client-C4Ti1B85.js → mount-bridge-client-CaHZ1pkb.js} +1 -1
  68. package/dist/ui/assets/{mount-bridge-client-BMkDfg_K.js → mount-bridge-client-DRVFK3mJ.js} +1 -1
  69. package/dist/ui/assets/{mount-Dkwa5rwA.js → mount-mfdOcxjc.js} +1 -1
  70. package/dist/ui/assets/{new-session-C2Unp_ay.js → new-session-DGf5pu_W.js} +2 -2
  71. package/dist/ui/assets/{oauth-bootstrap-3r1LKeNV.js → oauth-bootstrap-BnFtxXMH.js} +2 -2
  72. package/dist/ui/assets/{oauth-service-CxXBA9rC.js → oauth-service-Dn_Xz1FZ.js} +1 -1
  73. package/dist/ui/assets/{oauth-service-B8mWc7rY.js → oauth-service-_PUd0RqU.js} +1 -1
  74. package/dist/ui/assets/{onboarding-orchestrator-DagKmKCB.js → onboarding-orchestrator-CM9wBVXY.js} +1 -1
  75. package/dist/ui/assets/{openai-codex-CJC7uwBp.js → openai-codex-Bw6V8Exo.js} +1 -1
  76. package/dist/ui/assets/{openai-codex--tiTbtXj.js → openai-codex-CVUojBOm.js} +1 -1
  77. package/dist/ui/assets/{openrouter-mBY_6dIp.js → openrouter-BC7G4X9j.js} +1 -1
  78. package/dist/ui/assets/{openrouter-aXBsdtFI.js → openrouter-D4gIK_6x.js} +1 -1
  79. package/dist/ui/assets/{openrouter-free-BeCg7Ecw.js → openrouter-free-BiR1F8YY.js} +1 -1
  80. package/dist/ui/assets/{openrouter-free-DqFFRvst.js → openrouter-free-DeIBFCD_.js} +1 -1
  81. package/dist/ui/assets/{openrouter-oauth-DQIC6b5R.js → openrouter-oauth-S0Wxlisj.js} +1 -1
  82. package/dist/ui/assets/{openrouter-oauth-C7CZ9fp_.js → openrouter-oauth-yeqiYiPV.js} +1 -1
  83. package/dist/ui/assets/{opfs-mount-tiZR34GY.js → opfs-mount-XUJ5ILwS.js} +1 -1
  84. package/dist/ui/assets/{page-approval-service-CYpStEUs.js → page-approval-service-DRZEjhrX.js} +1 -1
  85. package/dist/ui/assets/{panel-rpc-handlers-D8NOrxvf.js → panel-rpc-handlers-ChwH_sLY.js} +2 -2
  86. package/dist/ui/assets/{panelize-shell-C_Xs3rhf.js → panelize-shell-CK2wV8d-.js} +4 -4
  87. package/dist/ui/assets/{pi-edit-execution-kItlGFSm.js → pi-edit-execution-3uSKWHZb.js} +1 -1
  88. package/dist/ui/assets/{port-bridge-client-CrZ9vnOK.js → port-bridge-client-BiWcfZSc.js} +1 -1
  89. package/dist/ui/assets/{port-bridge-client-BHH6FPBY.js → port-bridge-client-BvO-1Rao.js} +1 -1
  90. package/dist/ui/assets/{provider-BtTOwLci.js → provider-B2DAvZVz.js} +2 -2
  91. package/dist/ui/assets/{provider-settings-PedRbxpK.js → provider-settings-CxXUm2a-.js} +1 -1
  92. package/dist/ui/assets/provider-store-access-BgECN49p.js +1 -0
  93. package/dist/ui/assets/provider-store-access-DBb5FZCA.js +1 -0
  94. package/dist/ui/assets/{provider-DuCd6_sr.js → provider-www4_y-t.js} +1 -1
  95. package/dist/ui/assets/{providers-BkwBVwkB.js → providers-CCn9vkBK.js} +2 -2
  96. package/dist/ui/assets/{providers-CWFcdblf.js → providers-CMHhoML-.js} +1 -1
  97. package/dist/ui/assets/proxied-fetch-DiXk_XGs.js +2 -0
  98. package/dist/ui/assets/proxied-fetch-J19bK2dG.js +1 -0
  99. package/dist/ui/assets/{quick-llm-DKsocfis.js → quick-llm-BMe87PgQ.js} +1 -1
  100. package/dist/ui/assets/{realm-inprocess-CI_Msk8I.js → realm-inprocess-BEYqu95M.js} +1 -1
  101. package/dist/ui/assets/{recovery-screen-HGByYfVb.js → recovery-screen-SL_yCteM.js} +1 -1
  102. package/dist/ui/assets/{redirect-uri-Dnc7Ae7l.js → redirect-uri-DlOE4xJ4.js} +1 -1
  103. package/dist/ui/assets/{remote-terminal-view-C6Ao0U4O.js → remote-terminal-view-B_u_89Rj.js} +1 -1
  104. package/dist/ui/assets/{rest-ops-vPHUnWou.js → rest-ops-CPEMTyP-.js} +1 -1
  105. package/dist/ui/assets/{rest-ops-DABw6D2a.js → rest-ops-DKsDUOxE.js} +1 -1
  106. package/dist/ui/assets/{restore-BsViTTTd.js → restore-BpcmnyLB.js} +1 -1
  107. package/dist/ui/assets/{run-BLi5_vwK.js → run-BRuN-148.js} +1 -1
  108. package/dist/ui/assets/{run-CKdymE5z.js → run-BVlVC7jS.js} +9 -9
  109. package/dist/ui/assets/{run-C0CADtt5.js → run-BulfRDHQ.js} +1 -1
  110. package/dist/ui/assets/{run-CKI507uv.js → run-DJZs27IU.js} +1 -1
  111. package/dist/ui/assets/{run-BEHokdPX.js → run-DOQXsmJ-.js} +1 -1
  112. package/dist/ui/assets/{run-DEBWO_VC.js → run-tjPSuwX3.js} +3 -3
  113. package/dist/ui/assets/{run-DgblerTV.js → run-ywyYbXgZ.js} +2 -2
  114. package/dist/ui/assets/{secret-env-Cazzr31P.js → secret-env-iwcdxjpw.js} +1 -1
  115. package/dist/ui/assets/secret-topology-CZv6A9HW.js +1 -0
  116. package/dist/ui/assets/{secrets-bridge-client-CiA-2ZIU.js → secrets-bridge-client-B_CG-HIg.js} +1 -1
  117. package/dist/ui/assets/{secrets-bridge-client-kWWipUuL.js → secrets-bridge-client-CUClOhLJ.js} +1 -1
  118. package/dist/ui/assets/{session-command-memory-D-p81a7P.js → session-command-memory-CV0M_waq.js} +2 -2
  119. package/dist/ui/assets/{session-jsonl-CXY4TQ4Y.js → session-jsonl-B8mDQIgn.js} +1 -1
  120. package/dist/ui/assets/{session-jsonl-C-BZSOHy.js → session-jsonl-C55fQ06x.js} +1 -1
  121. package/dist/ui/assets/{session-search-index-nhvgyuxV.js → session-search-index-C1J9u4eR.js} +1 -1
  122. package/dist/ui/assets/{setup-feature-flags-remote-CpzgUHLB.js → setup-feature-flags-remote-BxOb4YCM.js} +1 -1
  123. package/dist/ui/assets/{setup-model-catalog-BGx3XYFY.js → setup-model-catalog-BmCYvwCH.js} +1 -1
  124. package/dist/ui/assets/{signed-fetch-t5uBcIk_.js → signed-fetch-BgvaSXVe.js} +1 -1
  125. package/dist/ui/assets/{silent-renew-backoff-Q1A_jbQH.js → silent-renew-backoff-BOu1oK6b.js} +1 -1
  126. package/dist/ui/assets/slicc-version-DkDWlaqT.js +1 -0
  127. package/dist/ui/assets/{snapshot-Bb3mZrhI.js → snapshot-BGAhMToN.js} +1 -1
  128. package/dist/ui/assets/{snapshot-features-D44t7iA7.js → snapshot-features-Dzfoquou.js} +1 -1
  129. package/dist/ui/assets/soundscape-DuO1N_6R.js +1 -0
  130. package/dist/ui/assets/{speak-B-rF7cd2.js → speak-D9CaCxIW.js} +1 -1
  131. package/dist/ui/assets/{sprinkle-manager-BWdoEwv2.js → sprinkle-manager-QrCEkwte.js} +1 -1
  132. package/dist/ui/assets/{sprinkle-renderer-B-1HSkrF.js → sprinkle-renderer-DSjbduX4.js} +1 -1
  133. package/dist/ui/assets/{ssh-DGBxesfZ.js → ssh-DPyBpV4Z.js} +1 -1
  134. package/dist/ui/assets/{state-B7Ano9ql.js → state-CjMg-jSn.js} +1 -1
  135. package/dist/ui/assets/{store-B3uS3nQU.js → store-BuIUG1zU.js} +1 -1
  136. package/dist/ui/assets/{store-DTMATE-h.js → store-Cy7u1gHP.js} +1 -1
  137. package/dist/ui/assets/{sudo-D8OGZd6t.js → sudo-DPqnJHCC.js} +1 -1
  138. package/dist/ui/assets/{supervisor-Ck1Ryx2i.js → supervisor-Bz7bCJTe.js} +1 -1
  139. package/dist/ui/assets/{sync-dialog-C2TF9Y3h.js → sync-dialog-NksAsxfv.js} +1 -1
  140. package/dist/ui/assets/{transformers-env-h8uZoLwJ.js → transformers-env-DuLhc5Yf.js} +1 -1
  141. package/dist/ui/assets/{tray-leader-BHyMCdCH.js → tray-leader-DrAT1uER.js} +1 -1
  142. package/dist/ui/assets/{tray-leave-runtime-DR6t2Cuo.js → tray-leave-runtime-D1UiUa57.js} +1 -1
  143. package/dist/ui/assets/{tray-runtime-config-DBapPARd.js → tray-runtime-config-DmcF9Q2r.js} +1 -1
  144. package/dist/ui/assets/{tray-sidecar-BdEGdpUe.js → tray-sidecar-DbDXqX-O.js} +1 -1
  145. package/dist/ui/assets/{turn-journal-B4vV4fDV.js → turn-journal-Z3e-huge.js} +1 -1
  146. package/dist/ui/assets/{upgrade-detection-BXyDgjYd.js → upgrade-detection-IwRKooPo.js} +1 -1
  147. package/dist/ui/assets/{upskill-lick-skip-8Ozx8QGg.js → upskill-lick-skip-Rw_UGQE-.js} +1 -1
  148. package/dist/ui/assets/voice-reply-DgLON2RB.js +1 -0
  149. package/dist/ui/assets/{wc-attach-BN8rykoa.js → wc-attach-uXbc45oE.js} +2 -2
  150. package/dist/ui/assets/{wc-browser-z1N3wGuK.js → wc-browser-CE-PUbku.js} +1 -1
  151. package/dist/ui/assets/{wc-computers-C1g9iCUj.js → wc-computers-NdNdvSkt.js} +1 -1
  152. package/dist/ui/assets/{wc-detached-DHD--8Tf.js → wc-detached-ofCqJVys.js} +1 -1
  153. package/dist/ui/assets/{wc-extension-qof5b3tN.js → wc-extension-D5xZgJSA.js} +2 -2
  154. package/dist/ui/assets/{wc-follower-sKXDjyv-.js → wc-follower-ChlC4as7.js} +3 -3
  155. package/dist/ui/assets/{wc-follower-oauth-Bsskcjc7.js → wc-follower-oauth-qsf5anxR.js} +1 -1
  156. package/dist/ui/assets/{wc-gelatiere-D_uq7S-T.js → wc-gelatiere-CNuHyZeR.js} +1 -1
  157. package/dist/ui/assets/wc-live-BS1qBXN5.js +428 -0
  158. package/dist/ui/assets/{wc-nav-DqIdooNV.js → wc-nav-DHvzol8R.js} +2 -2
  159. package/dist/ui/assets/{wc-onboarding-38WwDwrA.js → wc-onboarding-BbdXkaej.js} +2 -2
  160. package/dist/ui/assets/{wc-permissions-o70pdgUK.js → wc-permissions-DlaZuLb9.js} +2 -2
  161. package/dist/ui/assets/{wc-placeholder-DMKTZY8P.js → wc-placeholder-C-OmhEk5.js} +3 -3
  162. package/dist/ui/assets/{wc-secret-request-CmpDh1Bs.js → wc-secret-request-Ct2mo_Xp.js} +1 -1
  163. package/dist/ui/assets/{wc-settings-7DxLA_ig.js → wc-settings-Bxt-10hf.js} +3 -3
  164. package/dist/ui/assets/{wc-shell-DFszC8_0.js → wc-shell-B58cMj3K.js} +362 -199
  165. package/dist/ui/assets/{wc-shortcut-config-Co6ONiUg.js → wc-shortcut-config-CS_pYZvv.js} +2 -2
  166. package/dist/ui/assets/{wc-sprinkles-zxKMU9ju.js → wc-sprinkles-CGF297sg.js} +2 -2
  167. package/dist/ui/assets/{wc-transcript-export-BnOv-hzh.js → wc-transcript-export-BsI6uqmc.js} +2 -2
  168. package/dist/ui/assets/{wc-tray-B2w3dtCQ.js → wc-tray-Q50Ws_2J.js} +4 -4
  169. package/dist/ui/assets/welcome-detection-C-ikGXmO.js +1 -0
  170. package/dist/ui/assets/{whisper-session-BB92W1rY.js → whisper-session-Cz5kwnWR.js} +2 -2
  171. package/dist/ui/assets/{xai-grok-DsDg76ef.js → xai-grok-DjVaOahu.js} +1 -1
  172. package/dist/ui/assets/{xai-grok-Btqu459a.js → xai-grok-VlWRZvOP.js} +1 -1
  173. package/dist/ui/index.html +9 -9
  174. package/dist/ui/packages/webapp/index.html +9 -9
  175. package/package.json +1 -1
  176. package/dist/ui/assets/SKILL-CWxUIsrD.js +0 -1
  177. package/dist/ui/assets/ensure-speech-assets-DnCun_bM.js +0 -1
  178. package/dist/ui/assets/installer-hyWN7t-8.js +0 -4
  179. package/dist/ui/assets/provider-store-access-BbD8NSzf.js +0 -1
  180. package/dist/ui/assets/provider-store-access-BvzkUnma.js +0 -1
  181. package/dist/ui/assets/proxied-fetch-BlIpeDaL.js +0 -2
  182. package/dist/ui/assets/proxied-fetch-CNe6icTW.js +0 -1
  183. package/dist/ui/assets/secret-topology-DpJD8DzV.js +0 -1
  184. package/dist/ui/assets/slicc-version-YnqCI9lq.js +0 -1
  185. package/dist/ui/assets/soundscape-CUzGNWGR.js +0 -1
  186. package/dist/ui/assets/voice-reply-ChDAb3Rf.js +0 -1
  187. package/dist/ui/assets/wc-live-DWEUEDdK.js +0 -428
  188. package/dist/ui/assets/welcome-detection-Cik05qcd.js +0 -1
@@ -1,18 +1,18 @@
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-UA_3Tz4g.js";import{a as p,l as m,n as h,o as g}from"./proxied-fetch-CNe6icTW.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-Bb3mZrhI.js";import{i as se,r as y}from"./panel-rpc-DW7W4w6_.js";import{t as ce}from"./providers-CWFcdblf.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-CDo7qjEn.js";import{n as ve,t as ye}from"./mime-types-D7IV6i7k.js";import{t as be}from"./secrets-bridge-client-kWWipUuL.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-t5uBcIk_.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-Bvj_6WV6.js";import{a as Ge}from"./tray-leader-status-CpkFr6n7.js";import{n as Ke,t as qe}from"./slicc-version-YnqCI9lq.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-B7Ano9ql.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-BRw7B4H0.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-YeBT3Ny7.js";import{i as vi,t as yi}from"./github-auth-C5UPE82y.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-z8nzKR56.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-hyWN7t-8.js";import{t as $i}from"./ffmpeg-wasm-CV1BmGNS.js";import{t as ea}from"./local-llm-3Pq3W9JZ.js";import{t as ta}from"./client-Sb_wIqH2.js";import{t as na}from"./redirect-uri-Dnc7Ae7l.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-CmuqbGmo.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-vPHUnWou.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(`
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
- `);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
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-D48vh7jd.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-BGAhMToN.js";import{i as se,r as y}from"./panel-rpc-DW7W4w6_.js";import{t as ce}from"./providers-CMHhoML-.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-BgvaSXVe.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-Gd3zHsod.js";import{a as Ge}from"./tray-leader-status-CpkFr6n7.js";import{n as Ke,t as qe}from"./slicc-version-DkDWlaqT.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-CjMg-jSn.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-Bq_H_UIv.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-Cr9Lysol.js";import{i as vi,t as yi}from"./github-auth-DrNumx5i.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-COa6G7Bf.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{n as Bi,t as Vi}from"./hf-defaults-BwJdGLgk.js";import{a as Hi,c as Ui,i as Wi,l as Gi,n as Ki,o as qi,r as Ji,s as Yi,t as Xi,u as Zi}from"./installer-C0LqqeMg.js";import{t as Qi}from"./ffmpeg-wasm-CV1BmGNS.js";import{t as $i}from"./local-llm-DXIS7Y11.js";import{t as ea}from"./client-CmfvXtLV.js";import{t as ta}from"./redirect-uri-DlOE4xJ4.js";import{a as na,c as ra,i as ia,o as aa,r as oa,s as sa}from"./v86-vm-DCm7zA2r.js";import{n as ca,r as la}from"./lick-urls-CgPiVwD-.js";let ua=null;function da(e){ua=e!==null&&Number.isFinite(e)&&e>0?e:null}function fa(){if(ua!==null)return ua;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const pa=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function ma(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=pa.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 ha(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 ga(e,t){return e.some(e=>ha(e,t))}const _a=`slicc-transcript`,va=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],ya=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 ba(e){return ya.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var xa=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const Sa=new Set(va),Ca=/^[0-9a-fA-F]{64}$/,wa=/^\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 Ta(e){return typeof e==`string`&&Ca.test(e)}function Ea(e){return wa.test(e)&&Number.isFinite(Date.parse(e))}function Da(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 Oa(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Da(n,t)}:{ok:!0}}function ka(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 Aa(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 ja(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Oa(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?Aa(e,t):n}function Ma(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 Na(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 Pa(e,t){let n=Ma(e,t);if(!n.ok)return n;let r=e.cost;return F(r)?Na(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function Fa(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`?Ea(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 Ia(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 La(e,t){let n=e.usage;return n===void 0?{ok:!0}:F(n)?Pa(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function Ra(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Oa(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=Ia(e,t);if(!n.ok)return n}let r=Fa(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=ka(i,ja,`${t}.content`);return a.ok?La(e,t):a}function za(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};if(typeof e.id!=`string`)return{ok:!1,error:`${t}.id must be a string`};if(typeof e.name!=`string`)return{ok:!1,error:`${t}.name must be a string`};let n=Oa(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?ka(r,Ra,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function Ba(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 Va(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`}:Ta(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 Ha=[`attachment-file-missing`,`attachment-association-unavailable`];function Ua(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?Oa(e.missingReason,Ha,`${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 Wa(e,t){return e.present?Va(e,t):Ua(e,t)}function Ga(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Ba(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=Oa(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?Wa(e,t):r}function Ka(e,t){let n=Oa(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 qa(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=Oa(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return F(r)?Ka(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function Ja(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 Ya(e,t){return typeof e!=`string`||!Sa.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function Xa(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 Za(e){if(!F(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=Oa(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?ka(e.missing,Ya,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function Qa(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=Oa(e.state,[`active`,`frozen`],`session.state`);return t.ok?Za(e.completeness):t}function $a(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)?ka(n,qa,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function eo(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=ka(t,za,`conversations`);if(!n.ok)return n;let r=e.delegations;if(!Array.isArray(r))return{ok:!1,error:`delegations must be an array`};let i=ka(r,Ja,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?ka(a,Ga,`attachments`):{ok:!1,error:`attachments must be an array`}}function to(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 no(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 ro(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 io(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 ro(e))t.add(n)}return t}function ao(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 oo(e){return ao(e,io(e))}function so(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 co(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=so(e,t);if(!r.ok)return r}}return{ok:!0}}function lo(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return co(e,n)}function uo(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 fo(e,t){let n=uo(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 po(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(ro(e)))}return t}function mo(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 ho(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return mo(e,n,po(t))}function go(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 _o(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=go(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function vo(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=to(t);if(!o.ok)return o;let s=no(t);if(!s.ok)return s;let c=oo(t);if(!c.ok)return c;let l=lo(t,n);if(!l.ok)return l;let u=fo(n,t);if(!u.ok)return u;let d=ho(r,t);return d.ok?_o(a,n):d}function yo(e){let t=eo(e);return t.ok?vo(e):t}function bo(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=Xa(e.export);if(!t.ok)return t;let n=Qa(e.session);if(!n.ok)return n;let r=$a(e.privacy);return r.ok?yo(e):r}async function xo(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:So(a),sourceUrl:a}}function So(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const Co=`slicc-sprinkle-routes`;function wo(){try{let e=localStorage.getItem(Co);return e?JSON.parse(e):{}}catch{return{}}}function To(e){try{localStorage.setItem(Co,JSON.stringify(e))}catch{}}function Eo(e){return wo()[e]}function Do(e,t){let n=wo();n[e]=t,To(n)}function Oo(e){let t=wo();delete t[e],To(t)}function ko(){return wo()}function Ao(e,t,n){return ut(t,n,`${e} adapter does not implement ${t}.${n}`)}function jo(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(Ao(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function Mo(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:jo(t,`browser`,pt,e.browser),network:jo(t,`network`,lt,e.network),secrets:jo(t,`secrets`,mt,e.secrets),devices:jo(t,`devices`,ht,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:jo(t,`mounts`,dt,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:jo(t,`approvals`,gt,e.approvals)}}function No(e={}){return Mo({adapter:`connect`,pageGestures:e.pageGestures})}function Po(e){let t=_t(()=>import(`./extension-ops-DTRUyGkx.js`).then(t=>t.createExtensionOps(e)));return Mo({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 Fo(e={}){let t=_t(()=>import(`./rest-ops-CPEMTyP-.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return Mo({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 Io(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return Fo({pageGestures:n});case`extension-direct`:case`extension-delegate`:return Po({adapter:e,pageGestures:n});case`connect`:return No({pageGestures:n})}}const Lo=e(`quick-llm`);async function Ro(e){let t=d();if(!t)return Lo.debug(`No API key for active provider — skipping`),null;let n=u(),r=l(),i;if(i=e.modelId?Ho(n,e.modelId)??Ho(n,r):zo(n,r),!i)return Lo.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`]=Uo());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 Lo.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function zo(e,t){let n=f(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=Vo(r.id),a=n.filter(e=>Bo(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function Bo(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 Vo(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 Ho(e,t){return f(e).find(e=>e.id===t)}function Uo(){return yt(`ui-quick-llm`)}const Wo=e(`sudo-suggest`),Go=[`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
+ `),Ko=[`You generalize a single filesystem path into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the meaningful directory prefix and replace the volatile`,`leaf (and below) with "**". Examples:`,` /workspace/.git/config -> /workspace/.git/**`,` /shared/secrets/openai.key -> /shared/secrets/**`,` /workspace/src/app/main.ts -> /workspace/src/**`].join(`
3
+ `);async function qo(e,t){if(e.suggestedPattern&&e.suggestedPattern.trim().length>0)return e.suggestedPattern.trim();let n=e.detail.trim(),r=e.kind===`command`?Go:Ko,i=null;try{i=await Ro({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){Wo.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return Jo(i)||n}function Jo(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 Yo=e(`sudo:capability-gesture`);function Xo(e,t={}){let n=t.suggest??qo;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 Yo.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),{decision:`deny`};if(!e)return Yo.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):(Yo.warn(`capability broker approvals.request failed — denying`,{message:o.message}),{decision:`deny`})}}}const Zo=e(`sudo:tray-first`);function Qo(e,t={}){let n=t.suggest??qo,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){Zo.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 $o(e?.decision,o)}catch(e){Zo.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return e.requestApproval(s,a)}}}function $o(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 es(e,t){return{requestApproval(n){return t.enqueueSudoRequest(e,n)}}}function ts(){return`lick-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}var ns=class{pending=new Map;timeoutMs;newId;setTimer;clearTimer;onAutoSettle;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.newId=e.newId??ts,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 rs(e){return st(is(e))}function is(e){let t=Xo(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:Qo(t)}let as=null;function os(e){return as=e,()=>{as===e&&(as=null)}}function ss(){if(!as)throw new xa(`session-not-found`);return as}const cs=`focus`,ls={type:`leaf`,surfaceId:`chat`};function us(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 ds={focus:{name:`focus`,tree:us({left:ls},{left:3,middle:1})}};function fs(e){return ds[e]??null}const ps=`progress`;function ms(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}async function hs(){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 gs(){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 _s(e){let t={positional:[],noProbe:!1,clearCache:!1,bodies:!1,json:!1};for(let n=0;n<e.length;n++){let r=e[n];if(r===`--source`)t.source=e[++n];else if(r===`--profile`)t.profile=e[++n];else if(r===`--backend`){let r=e[++n];r===`da`||r===`aem`?t.backend=r:t.backendError=r}else r===`--no-probe`?t.noProbe=!0:r===`--max-body-mb`?t.maxBodyMb=Number(e[++n]):r===`--clear-cache`?t.clearCache=!0:r===`--bodies`?t.bodies=!0:r===`--json`?t.json=!0:t.positional.push(r)}return t}function vs(e){let t=e.match(/^(da|aem):\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);return t?{scheme:t[1],org:t[2],name:t[3],path:(t[4]??``).replace(/^\/+/,``).replace(/\/+$/,``)}:null}const ys=new Set([`--source`,`--profile`,`--backend`,`--max-body-mb`]);function bs(e){for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`)return!1;if(n===`--help`||n===`-h`)return!0;ys.has(n)&&t++}return!1}function xs(e){return`aem://${e.org}/${e.name}${e.path?`/${e.path}`:``}`}var Ss=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=_s(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 Cs(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 hs():await gs();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=vs(t.source);if(!i)return this.usageError(`mount: invalid source '${t.source}' — expected da://org/repo or aem://org/site`);let a=i.scheme===`aem`?`aem`:`da`,o=``;if(t.backend)a=t.backend;else if(i.scheme===`da`)try{a=(await xo(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`?xs(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(bs(e))return n===`umount`?this.umountHelp():this.help();let r=_s(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
- `,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
8
- `,exitCode:1};let r=this.resolvePath(n.positional[0],t);try{let{formatMountInfo:e,probeMountInfo:t}=await import(`./probe-info-Cfr3jYru.js`),i=await t(this.options.fs,r);return{stdout:n.json?`${JSON.stringify(i,null,2)}\n`:e(i),stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`mount info: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async handleRefresh(e,t,n){let r=vs(e);if(r.positional.length===0)return{stdout:``,stderr:`mount refresh: path required
7
+ `,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`mount list: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async handleInfo(e,t){if(bs(e))return this.help();let n=_s(e);if(n.positional.length===0)return{stdout:``,stderr:`mount info: path required
8
+ `,exitCode:1};let r=this.resolvePath(n.positional[0],t);try{let{formatMountInfo:e,probeMountInfo:t}=await import(`./probe-info-Cfr3jYru.js`),i=await t(this.options.fs,r);return{stdout:n.json?`${JSON.stringify(i,null,2)}\n`:e(i),stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`mount info: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async handleRefresh(e,t,n){let r=_s(e);if(r.positional.length===0)return{stdout:``,stderr:`mount refresh: path required
9
9
  `,exitCode:1};let i=this.resolvePath(r.positional[0],t);try{let e=await this.options.fs.refreshMount(i,{bodies:r.bodies,env:n});return{stdout:`Refreshed ${i}: +${e.added.length} -${e.removed.length} ~${e.changed.length} (${e.unchanged} unchanged, ${e.errors.length} errors)\n`,stderr:e.errors.map(e=>` ${e.path}: ${e.message}\n`).join(``),exitCode:+(e.errors.length>0)}}catch(e){return{stdout:``,stderr:`mount refresh: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}resolvePath(e,t){let n;return n=e.startsWith(`/`)?e:`${t.replace(/\/$/,``)}/${e}`,n.length>1&&(n=n.replace(/\/+$/,``)),n}usageError(e){return{stdout:``,stderr:`${e}\n`,exitCode:1}}umountHelp(){return{stdout:[`Usage: umount [--clear-cache] <path>`,``,"Unmount a mount point. `umount <path>` is an alias for","`mount unmount <path>` — same behaviour, shorter to type.",``,`Options:`,` --clear-cache Also drop cached listings and bodies for a remote mount`,``,`Examples:`,` umount /mnt/myapp`,` umount --clear-cache /mnt/s3`,``,`See also: mount --help, mount list`].join(`
10
10
  `)+`
11
11
  `,stderr:``,exitCode:0}}help(){return{stdout:[`Usage: mount [OPTIONS] <target-path>`,` mount unmount [--clear-cache] <path>`,` mount list`,` mount --list`,` mount refresh [--bodies] <path>`,` mount info [--json] <path>`,``,`Mount a local directory, S3 bucket, or AEM authoring source into the`,`virtual filesystem.`,``,`Without --source, opens a directory picker (local mount). With --source, mounts`,`a remote source (S3-compatible, da.live, or the Helix 6 Source Bus).`,``,`A da:// source is checked against the site config first: sites upgraded to`,`Helix 6 are re-routed to the Source Bus, because admin.da.live no longer`,`holds their content. Use --backend to force either endpoint.`,``,`Options:`,` --source <url> Remote source: s3://bucket[/prefix], da://org/repo,`,` or aem://org/site`,` --profile <name> Profile name (default: "default")`,` --backend <da|aem> Force the Adobe backend instead of probing the site config`,` --no-probe Skip the root-level probe on mount`,` --max-body-mb <n> Override body size limit (MB)`,``,`Sub-commands:`," unmount [--clear-cache] <path> Remove a mount point (also spelled `umount <path>`)",` list, --list, -l Show active mount points`,` refresh [--bodies] <path> Re-index or revalidate a mount`,` info [--json] <path> Probe volume semantics (case, Unicode, exec bit)`,``,`Examples:`,` mount /mnt/myapp`,` mount --source s3://my-bucket --profile default /mnt/s3`,` mount --source da://my-org/my-repo /mnt/da`,` mount --source aem://my-org/my-site /mnt/aem`,` mount list`,` mount info /tmp`,` mount info --json /mnt/kb`,` mount refresh /mnt/myapp`,` mount unmount /mnt/myapp`,` umount /mnt/myapp`].join(`
12
12
  `)+`
13
- `,stderr:``,exitCode:0}}};async function 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 Cs(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 ws(e,t,n){let r=n.includes(`-A`)||n.includes(`--all`),i=n.includes(`-u`)||n.includes(`--update`),a=n.includes(`-f`)||n.includes(`--force`),o=n.filter(e=>!e.startsWith(`-`));if(!r&&!i&&o.length===0)return{stdout:``,stderr:`Nothing specified, nothing added.
14
+ `,exitCode:0};if(r)await Ts(e,t,a);else if(o.includes(`.`))await Es(e,t,a);else if(i)await Ds(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 Ts(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 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 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,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 Os={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:Os,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`}}},ks=/^(--?)([^=]+)(=.*)?$/;function As(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 js(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 Ms(){let e=new Set([`c`,`C`,`git-dir`,`work-tree`]);for(let t of Object.values(I))for(let n of js(t))e.add(n);return e}function Ns(e,t,n){for(let r of e){if(!t.has(r))return r;if(n.has(r))return}}function Ps(e,t){let n=As(t),r=js(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=ks.exec(t);if(!i)continue;let o=i[2];if(i[1]===`-`&&o.length>1&&!i[3]&&!n.has(o)){let e=Ns(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 Fs(e){return{stdout:``,stderr:`error: unknown ${e.length===1?`switch`:`option`} \`${e}\`\n`,exitCode:129}}function Is(e,t){if(!t)return;let n=Ps(e,t);return n?Fs(n):void 0}function Ls(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=Ms();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
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
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(`
18
18
  `).map(e=>` ${e}`).join(`
@@ -21,23 +21,23 @@ import{t as e}from"./logger-LESFN7Hj.js";import{r as t,t as n}from"./base64-BPBW
21
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(`
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
- `,{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(`
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,Os),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=Is(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=Ls(o,`depth`),f=Ls(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(`
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.
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 Ls(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
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>]
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
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(`
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 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=Is(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(`
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=>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=Is(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=Ls(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=Ls(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=Ls(o,`max-count`),c=o.oneline===!0,l=o.stat===!0,u=o.reverse===!0,d=o.all===!0,f=Ls(o,`format`),p=Ls(o,`author`),m=Ls(o,`grep`),h=Ls(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(`
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
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.
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=Is(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
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.
@@ -52,7 +52,7 @@ Please, commit your changes before you merge.
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.
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=Is(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
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.
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.
@@ -79,7 +79,7 @@ error: Please commit or stash them.
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
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(`
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=Ls(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(`
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
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
@@ -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 $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=Ls(a,`list`),c=a.annotate===!0,l=Ls(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 ws(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>]
120
120
 
121
121
  Available commands:
122
122
  init Initialize a new repository
@@ -155,7 +155,7 @@ 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(`
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:ps,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
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
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`
161
161
  <div class="sprinkle-action-card">
@@ -279,7 +279,7 @@ 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-DJ8FZwqE.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-B_U-F-B8.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
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\`
@@ -290,7 +290,7 @@ Examples:
290
290
  `}function Sh(e,t,n,r,i){let a=t?`Skill update (dry run — nothing written):
291
291
  `:`Skill update:
292
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-DJ8FZwqE.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+=`
293
+ `)}\n`}async function Oh(e,t,n){let r=await(await import(`./kernel-worker-B_U-F-B8.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+=`
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>
@@ -313,7 +313,7 @@ Examples:
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-DJ8FZwqE.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+`
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-B_U-F-B8.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
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
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>
319
319
 
@@ -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-CKdymE5z.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=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]
631
631
 
632
632
  Operations:
633
633
  -resize GEOMETRY resize; supports %, !, ^, >, and < modifiers
@@ -707,7 +707,7 @@ Examples:
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-BEHokdPX.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-DOQXsmJ-.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.
@@ -753,7 +753,7 @@ Anything else is not implemented in SLICC's ${e} subset; use real uv locally.
753
753
  `}};let i=ab(r);return i?n.name?{error:ob(r)}:(n.name=i,n.type=`PTR`,{nextIndex:t+1}):{error:{kind:`error`,message:`dig: '${r}' is not a valid IP address for -x\n`}}}function cb(e,t,n){return n.server?{error:{kind:`error`,message:`dig: multiple @server arguments
754
754
  `}}:(n.server=e.slice(1).trim(),n.server?{nextIndex:t}:{error:{kind:`error`,message:`dig: empty @server argument
755
755
  `}})}function lb(e,t,n){let r=e.trim(),i=r.toUpperCase(),a=n.name?.toUpperCase();if(tb.includes(i)&&!n.type&&n.name)n.type=i;else if(!n.name)n.name=r;else if(a&&tb.includes(a)&&!n.type)n.name=r,n.type=a;else return{error:ob(r)};return{nextIndex:t}}function ub(e,t,n){let r=e[t];return r.startsWith(`+`)?(r===`+short`&&(n.short=!0),{nextIndex:t}):r===`--json`?(n.json=!0,{nextIndex:t}):r===`-x`?sb(e,t,n):r.startsWith(`@`)?cb(r,t,n):r.startsWith(`-`)?{error:{kind:`error`,message:`dig: unknown option: ${r}\n`}}:lb(r,t,n)}function db(e){if(e.short&&e.json)return{kind:`error`,message:`dig: +short and --json are mutually exclusive
756
- `};if(!e.name)return{kind:`error`,message:`dig: missing domain name\n${eb}\n`};let t=e.server?.toLowerCase(),n=t?nb[t]:void 0,r=e.server&&!n?`dig: note: @${e.server} not supported over DoH; using cloudflare-dns.com\n`:``;return{kind:`query`,name:e.name,type:e.type??`A`,short:e.short,json:e.json,resolverUrl:n??`https://cloudflare-dns.com/dns-query`,fallbackNote:r}}function fb(e){if(e.includes(`-v`)||e.includes(`--version`))return{kind:`version`};let t={short:!1,json:!1};for(let n=0;n<e.length;n+=1){let r=ub(e,n,t);if(`error`in r)return r.error;n=r.nextIndex}return db(t)}const pb={A:1,NS:2,CNAME:5,SOA:6,PTR:12,MX:15,TXT:16,AAAA:28,SRV:33,CAA:257},mb=new Set(`#/:<>?@[\\]^|`);function hb(e){return Array.from(e).some(e=>{let t=e.codePointAt(0)??0;return t<=127&&(t<33||t===127||mb.has(e))})}function gb(e){if(hb(e))throw Error(`invalid hostname`);if(/^[\x21-\x7e]+$/.test(e))return e;let t=`.invalid`,n=new URL(`https://${e}${t}`);if(n.username||n.password||n.port||n.pathname!==`/`||n.search||n.hash||!n.hostname.endsWith(t)||n.hostname.includes(`:`))throw Error(`invalid hostname`);let r=n.hostname.slice(0,-8);if(!r||r.includes(`.`)||!/^[\x21-\x7e]+$/.test(r))throw Error(`invalid hostname`);return r}function _b(e){if(e===`.`)return``;let t=e.endsWith(`.`)?e.slice(0,-1):e,n=t.split(`.`);if(!t||n.some(e=>e.length===0))throw Error(`invalid DNS name: ${e}`);try{return n.map(gb).join(`.`)}catch{throw Error(`invalid DNS name: ${e}`)}}function vb(e,t){let n=_b(e).split(`.`).filter(e=>e.length>0).map(e=>new TextEncoder().encode(e));if(n.some(e=>e.length>63))throw Error(`invalid DNS name: ${e}`);let r=n.reduce((e,t)=>e+t.length+1,1);if(r>255)throw Error(`invalid DNS name: ${e}`);let i=pb[t];if(!i)throw Error(`unsupported record type: ${t}`);let a=new Uint8Array(12+r+4),o=new DataView(a.buffer);o.setUint16(2,256),o.setUint16(4,1);let s=12;for(let e of n)a[s]=e.length,a.set(e,s+1),s+=e.length+1;return s+=1,o.setUint16(s,i),o.setUint16(s+2,1),a}function yb(e,n,r){return`${e}?dns=${t(vb(n,r)).replaceAll(`+`,`-`).replaceAll(`/`,`_`).replace(/=+$/,``)}`}function bb(e,t,n){if(t<0||n<0||t+n>e.length)throw Error(`truncated DNS message`)}function xb(e,t){let n=[],r=new Set,i=t,a=t,o=!1,s=1;for(let t=0;t<=e.length;t+=1){bb(e,i,1);let t=e[i];if(t===0)return o||(a=i+1),{name:n.length>0?`${n.join(`.`)}.`:`.`,labels:n,nextOffset:a};if((t&192)==192){bb(e,i,2);let n=(t&63)<<8|e[i+1];if(n>=i)throw Error(`invalid DNS compression pointer`);if(r.has(n))throw Error(`DNS compression pointer loop`);r.add(n),o||(a=i+2),o=!0,i=n;continue}if(t&192||t>63)throw Error(`invalid DNS label`);if(bb(e,i+1,t),s+=t+1,s>255)throw Error(`DNS name too long`);n.push(new TextDecoder().decode(e.subarray(i+1,i+1+t))),i+=t+1}throw Error(`invalid DNS name`)}function R(e,t){return bb(e,t,2),new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(t)}function Sb(e,t){return bb(e,t,4),new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(t)}function Cb(e,t){let n=Array.from({length:8},(n,r)=>R(e,t+r*2)),r=-1,i=0;for(let e=0;e<n.length;){if(n[e]!==0){e+=1;continue}let t=e;for(;t<n.length&&n[t]===0;)t+=1;t-e>i&&([r,i]=[e,t-e]),e=t}let a=n.map(e=>e.toString(16));return i<2?a.join(`:`):`${a.slice(0,r).join(`:`)}::${a.slice(r+i).join(`:`)}`}function wb(e,t,n){return`"${Array.from(e.subarray(t,n),e=>e===34?`\\"`:e===92?`\\\\`:e>=32&&e<=126?String.fromCharCode(e):`\\${String(e).padStart(3,`0`)}`).join(``)}"`}function Tb(e,t,n){let r=t,i=[];for(;r<n;){let t=e[r];if(bb(e,r+1,t),r+t+1>n)throw Error(`invalid TXT record`);i.push(wb(e,r+1,r+1+t)),r+=t+1}return i.join(` `)}function Eb(e,t,n){if(n-t<2)throw Error(`invalid CAA record`);let r=e[t+1];if(t+2+r>n)throw Error(`invalid CAA record`);let i=new TextDecoder,a=i.decode(e.subarray(t+2,t+2+r)),o=i.decode(e.subarray(t+2+r,n));return`${e[t]} ${a} ${JSON.stringify(o)}`}function Db(e,t,n,r){if(t===1){if(r-n!==4)throw Error(`invalid A record`);return Array.from(e.subarray(n,r)).join(`.`)}if(t===28){if(r-n!==16)throw Error(`invalid AAAA record`);return Cb(e,n)}if([2,5,12].includes(t)){let t=xb(e,n);if(t.nextOffset!==r)throw Error(`invalid DNS name record`);return t.name}if(t===15){if(r-n<3)throw Error(`invalid MX record`);let t=xb(e,n+2);if(t.nextOffset!==r)throw Error(`invalid MX record`);return`${R(e,n)} ${t.name}`}if(t===16)return Tb(e,n,r);if(t===6){let t=xb(e,n),i=xb(e,t.nextOffset);if(i.nextOffset+20!==r)throw Error(`invalid SOA record`);let a=Array.from({length:5},(t,n)=>Sb(e,i.nextOffset+n*4));return`${t.name} ${i.name} ${a.join(` `)}`}if(t===33){if(r-n<7)throw Error(`invalid SRV record`);let t=xb(e,n+6);if(t.nextOffset!==r)throw Error(`invalid SRV record`);return`${R(e,n)} ${R(e,n+2)} ${R(e,n+4)} ${t.name}`}if(t===257)return Eb(e,n,r);let i=Array.from(e.subarray(n,r),e=>e.toString(16).padStart(2,`0`));return`\\# ${r-n} ${i.join(``)}`}function Ob(e,t,n,r){let i=[],a=t;for(let t=0;t<n;t+=1){let t=xb(e,a);a=t.nextOffset,bb(e,a,10);let n=R(e,a),o=R(e,a+2),s=Sb(e,a+4),c=R(e,a+8),l=a+10,u=l+c;bb(e,l,c);let d=Db(e,n,l,u);r&&o===1&&i.push({name:t.name,type:n,TTL:s,data:d}),a=u}return{answers:i,nextOffset:a}}function kb(e){return e.replace(/[A-Z]/g,e=>e.toLowerCase())}function Ab(e,t,n,r,i){let a=_b(r).split(`.`).filter(Boolean);if(!(e.labels.length===a.length&&e.labels.every((e,t)=>kb(e)===kb(a[t])))||t!==pb[i]||n!==1)throw Error(`unexpected DNS response question`)}function jb(e,t,n){bb(e,0,12);let r=R(e,2);if(R(e,0)!==0||!(r&32768))throw Error(`invalid DNS response`);if(r&512)throw Error(`truncated DNS response`);let i=R(e,4),a=R(e,6),o=R(e,8),s=R(e,10);if(i!==1)throw Error(`invalid DNS question count`);let c=12,l=xb(e,c);c=l.nextOffset,bb(e,c,4),Ab(l,R(e,c),R(e,c+2),t,n),c+=4;let u=Ob(e,c,a,!0);if(Ob(e,Ob(e,u.nextOffset,o,!1).nextOffset,s,!1).nextOffset!==e.length)throw Error(`trailing DNS message data`);return{Status:r&15,Answer:u.answers}}const Mb={1:`A`,2:`NS`,5:`CNAME`,6:`SOA`,12:`PTR`,15:`MX`,16:`TXT`,28:`AAAA`,33:`SRV`,257:`CAA`},Nb={0:`NOERROR`,1:`FORMERR`,2:`SERVFAIL`,3:`NXDOMAIN`,4:`NOTIMP`,5:`REFUSED`};function Pb(){return{stdout:`usage: dig <name> [type] [@server] [+opts] [--json]
756
+ `};if(!e.name)return{kind:`error`,message:`dig: missing domain name\n${eb}\n`};let t=e.server?.toLowerCase(),n=t?nb[t]:void 0,r=e.server&&!n?`dig: note: @${e.server} not supported over DoH; using cloudflare-dns.com\n`:``;return{kind:`query`,name:e.name,type:e.type??`A`,short:e.short,json:e.json,resolverUrl:n??`https://cloudflare-dns.com/dns-query`,fallbackNote:r}}function fb(e){if(e.includes(`-v`)||e.includes(`--version`))return{kind:`version`};let t={short:!1,json:!1};for(let n=0;n<e.length;n+=1){let r=ub(e,n,t);if(`error`in r)return r.error;n=r.nextIndex}return db(t)}const pb={A:1,NS:2,CNAME:5,SOA:6,PTR:12,MX:15,TXT:16,AAAA:28,SRV:33,CAA:257},mb=new Set(`#/:<>?@[\\]^|`);function hb(e){return Array.from(e).some(e=>{let t=e.codePointAt(0)??0;return t<=127&&(t<33||t===127||mb.has(e))})}function gb(e){if(hb(e))throw Error(`invalid hostname`);if(/^[\x21-\x7e]+$/.test(e))return e;let t=`.invalid`,n=new URL(`https://${e}${t}`);if(n.username||n.password||n.port||n.pathname!==`/`||n.search||n.hash||!n.hostname.endsWith(t)||n.hostname.includes(`:`))throw Error(`invalid hostname`);let r=n.hostname.slice(0,-8);if(!r||r.includes(`.`)||!/^[\x21-\x7e]+$/.test(r))throw Error(`invalid hostname`);return r}function _b(e){if(e===`.`)return``;let t=e.endsWith(`.`)?e.slice(0,-1):e,n=t.split(`.`);if(!t||n.some(e=>e.length===0))throw Error(`invalid DNS name: ${e}`);try{return n.map(gb).join(`.`)}catch{throw Error(`invalid DNS name: ${e}`)}}function vb(e,t){let n=_b(e).split(`.`).filter(e=>e.length>0).map(e=>new TextEncoder().encode(e));if(n.some(e=>e.length>63))throw Error(`invalid DNS name: ${e}`);let r=n.reduce((e,t)=>e+t.length+1,1);if(r>255)throw Error(`invalid DNS name: ${e}`);let i=pb[t];if(!i)throw Error(`unsupported record type: ${t}`);let a=new Uint8Array(12+r+4),o=new DataView(a.buffer);o.setUint16(2,256),o.setUint16(4,1);let s=12;for(let e of n)a[s]=e.length,a.set(e,s+1),s+=e.length+1;return s+=1,o.setUint16(s,i),o.setUint16(s+2,1),a}function yb(e,n,r){return`${e}?dns=${t(vb(n,r)).replaceAll(`+`,`-`).replaceAll(`/`,`_`).replace(/=+$/,``)}`}function bb(e,t,n){if(t<0||n<0||t+n>e.length)throw Error(`truncated DNS message`)}function xb(e,t){let n=[],r=new Set,i=t,a=t,o=!1,s=1;for(let t=0;t<=e.length;t+=1){bb(e,i,1);let t=e[i];if(t===0)return o||(a=i+1),{name:n.length>0?`${n.join(`.`)}.`:`.`,labels:n,nextOffset:a};if((t&192)==192){bb(e,i,2);let n=(t&63)<<8|e[i+1];if(n>=i)throw Error(`invalid DNS compression pointer`);if(r.has(n))throw Error(`DNS compression pointer loop`);r.add(n),o||(a=i+2),o=!0,i=n;continue}if(t&192||t>63)throw Error(`invalid DNS label`);if(bb(e,i+1,t),s+=t+1,s>255)throw Error(`DNS name too long`);n.push(new TextDecoder().decode(e.subarray(i+1,i+1+t))),i+=t+1}throw Error(`invalid DNS name`)}function L(e,t){return bb(e,t,2),new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(t)}function Sb(e,t){return bb(e,t,4),new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(t)}function Cb(e,t){let n=Array.from({length:8},(n,r)=>L(e,t+r*2)),r=-1,i=0;for(let e=0;e<n.length;){if(n[e]!==0){e+=1;continue}let t=e;for(;t<n.length&&n[t]===0;)t+=1;t-e>i&&([r,i]=[e,t-e]),e=t}let a=n.map(e=>e.toString(16));return i<2?a.join(`:`):`${a.slice(0,r).join(`:`)}::${a.slice(r+i).join(`:`)}`}function wb(e,t,n){return`"${Array.from(e.subarray(t,n),e=>e===34?`\\"`:e===92?`\\\\`:e>=32&&e<=126?String.fromCharCode(e):`\\${String(e).padStart(3,`0`)}`).join(``)}"`}function Tb(e,t,n){let r=t,i=[];for(;r<n;){let t=e[r];if(bb(e,r+1,t),r+t+1>n)throw Error(`invalid TXT record`);i.push(wb(e,r+1,r+1+t)),r+=t+1}return i.join(` `)}function Eb(e,t,n){if(n-t<2)throw Error(`invalid CAA record`);let r=e[t+1];if(t+2+r>n)throw Error(`invalid CAA record`);let i=new TextDecoder,a=i.decode(e.subarray(t+2,t+2+r)),o=i.decode(e.subarray(t+2+r,n));return`${e[t]} ${a} ${JSON.stringify(o)}`}function Db(e,t,n,r){if(t===1){if(r-n!==4)throw Error(`invalid A record`);return Array.from(e.subarray(n,r)).join(`.`)}if(t===28){if(r-n!==16)throw Error(`invalid AAAA record`);return Cb(e,n)}if([2,5,12].includes(t)){let t=xb(e,n);if(t.nextOffset!==r)throw Error(`invalid DNS name record`);return t.name}if(t===15){if(r-n<3)throw Error(`invalid MX record`);let t=xb(e,n+2);if(t.nextOffset!==r)throw Error(`invalid MX record`);return`${L(e,n)} ${t.name}`}if(t===16)return Tb(e,n,r);if(t===6){let t=xb(e,n),i=xb(e,t.nextOffset);if(i.nextOffset+20!==r)throw Error(`invalid SOA record`);let a=Array.from({length:5},(t,n)=>Sb(e,i.nextOffset+n*4));return`${t.name} ${i.name} ${a.join(` `)}`}if(t===33){if(r-n<7)throw Error(`invalid SRV record`);let t=xb(e,n+6);if(t.nextOffset!==r)throw Error(`invalid SRV record`);return`${L(e,n)} ${L(e,n+2)} ${L(e,n+4)} ${t.name}`}if(t===257)return Eb(e,n,r);let i=Array.from(e.subarray(n,r),e=>e.toString(16).padStart(2,`0`));return`\\# ${r-n} ${i.join(``)}`}function Ob(e,t,n,r){let i=[],a=t;for(let t=0;t<n;t+=1){let t=xb(e,a);a=t.nextOffset,bb(e,a,10);let n=L(e,a),o=L(e,a+2),s=Sb(e,a+4),c=L(e,a+8),l=a+10,u=l+c;bb(e,l,c);let d=Db(e,n,l,u);r&&o===1&&i.push({name:t.name,type:n,TTL:s,data:d}),a=u}return{answers:i,nextOffset:a}}function kb(e){return e.replace(/[A-Z]/g,e=>e.toLowerCase())}function Ab(e,t,n,r,i){let a=_b(r).split(`.`).filter(Boolean);if(!(e.labels.length===a.length&&e.labels.every((e,t)=>kb(e)===kb(a[t])))||t!==pb[i]||n!==1)throw Error(`unexpected DNS response question`)}function jb(e,t,n){bb(e,0,12);let r=L(e,2);if(L(e,0)!==0||!(r&32768))throw Error(`invalid DNS response`);if(r&512)throw Error(`truncated DNS response`);let i=L(e,4),a=L(e,6),o=L(e,8),s=L(e,10);if(i!==1)throw Error(`invalid DNS question count`);let c=12,l=xb(e,c);c=l.nextOffset,bb(e,c,4),Ab(l,L(e,c),L(e,c+2),t,n),c+=4;let u=Ob(e,c,a,!0);if(Ob(e,Ob(e,u.nextOffset,o,!1).nextOffset,s,!1).nextOffset!==e.length)throw Error(`trailing DNS message data`);return{Status:r&15,Answer:u.answers}}const Mb={1:`A`,2:`NS`,5:`CNAME`,6:`SOA`,12:`PTR`,15:`MX`,16:`TXT`,28:`AAAA`,33:`SRV`,257:`CAA`},Nb={0:`NOERROR`,1:`FORMERR`,2:`SERVFAIL`,3:`NXDOMAIN`,4:`NOTIMP`,5:`REFUSED`};function Pb(){return{stdout:`usage: dig <name> [type] [@server] [+opts] [--json]
757
757
  dig -x <address> [@server] [+opts] [--json]
758
758
  dig -v | --version
759
759
 
@@ -832,7 +832,7 @@ Install:
832
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
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
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=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 R(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=R(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.usbProductId=R(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`)?R(e.get(`--baud`),`baud`):9600};if(e.has(`--data-bits`)&&(t.dataBits=R(e.get(`--data-bits`),`data-bits`)),e.has(`--stop-bits`)&&(t.stopBits=R(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=R(e.get(`--buffer-size`),`buffer-size`)),t}function Ax(e){let t={};return e.has(`--bytes`)&&(t.maxBytes=R(e.get(`--bytes`),`bytes`)),e.has(`--until`)&&(t.until=Tx(e.get(`--until`))),e.has(`--timeout-ms`)&&(t.timeoutMs=R(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 z(e){return{stdout:e,stderr:``,exitCode:0}}function B(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
 
@@ -863,9 +863,9 @@ Options:
863
863
  -h, --help
864
864
 
865
865
  Reads/writes are capped at ${Ur} bytes (4 MiB).
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
- `):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
866
+ `;function zx(e,t){if(t)return z(e.length?`${Px(e)}\n`:``);let n=``;for(let t=0;t<e.length;t++)n+=String.fromCharCode(e[t]);return z(n)}async function Bx(e){let t=await e.list();return t.length===0?z(`no granted serial ports
867
+ `):z(`${t.map(Ix).join(`
868
+ `)}\n`)}async function Vx(e,t){let n=e.get(`--__resolved`);if(n)return z(`${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 z(`${Ix(await t.info(e.handle))}\n`);let n=e.info,a=Pr();if(!a)return B(`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 B(`request: granted port could not be re-acquired`);let s=Br(),c=s.register(o),l=s.get(c);return l?z(`${Ix(Nr(c,l))}\n`):B(`request: failed to register granted port`)}return z(`${Ix(await t.request(r))}\n`)}async function Hx(e,t,n){let r=e[1];return r?(await n.open(r,kx(t)),z(``)):B(`open: handle required`)}async function Ux(e,t){let n=e[1];return n?(await t.close(n),z(``)):B(`close: handle required`)}async function Wx(e,t,n,r){let i=e[1];if(!i)return B(`read: handle required`);let a=Ax(t);return a.maxBytes!==void 0&&a.maxBytes>4194304?B(`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 B(`write: handle required`);let i=Nx(t);return i.length>4194304?B(`write payload exceeds 4 MiB limit`):z(`${await n.write(r,i)} bytes written\n`)}async function Kx(e,t,n){let[,r,i]=e;return!r||!i?B(`signals: handle and get|set required`):i===`get`?z(Lx(await n.getSignals(r))):i===`set`?(await n.setSignals(r,Mx(t)),z(``)):B(`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 B(`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 z(Rx);let n=Lr(se(),y());if(!n)return B(`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)?B(`user cancelled or no port selected`):B(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
869
869
 
870
870
  Usage: esptool [--port H] [--baud N] <subcommand> [args]
871
871
 
@@ -889,16 +889,16 @@ Options:
889
889
  -h, --help
890
890
 
891
891
  Without --port, the Web Serial picker opens (needs a user gesture).
892
- `;async function nS(e,t){return e.get(`--port`)||(await t.request(Ex(e))).handle}async function rS(e,t){let n=e.slice(1);if(n.length===0||n.length%2!=0)throw Error(`write_flash expects <addr> <file> pairs`);let r=[];for(let e=0;e<n.length;e+=2){let i=z(n[e],`address`),a=t.fs.resolvePath(t.cwd,n[e+1]),o=await t.fs.readFileBuffer(a);r.push({address:i,data:o})}return r}async function iS(e,t,n,r){let{positionals:i,flags:a,bools:o}=Zx(e),s=Qx(i[0]??``),c=a.has(`--baud`)?z(a.get(`--baud`),`baud`):Xx,l=[],u=e=>l.push(e);switch(s){case`chip_id`:{let e=await nS(a,r),t=await n.chipInfo(e,c,u);return l.push(`Chip type: ${t.chip}`),l.push(`Chip description: ${t.description}`),l.push(`Features: ${t.features.join(`, `)}`),l.push(`Crystal: ${t.crystalMHz}MHz`),l.push(`MAC: ${t.mac}`),$x(`${l.join(`
892
+ `;async function nS(e,t){return e.get(`--port`)||(await t.request(Ex(e))).handle}async function rS(e,t){let n=e.slice(1);if(n.length===0||n.length%2!=0)throw Error(`write_flash expects <addr> <file> pairs`);let r=[];for(let e=0;e<n.length;e+=2){let i=R(n[e],`address`),a=t.fs.resolvePath(t.cwd,n[e+1]),o=await t.fs.readFileBuffer(a);r.push({address:i,data:o})}return r}async function iS(e,t,n,r){let{positionals:i,flags:a,bools:o}=Zx(e),s=Qx(i[0]??``),c=a.has(`--baud`)?R(a.get(`--baud`),`baud`):Xx,l=[],u=e=>l.push(e);switch(s){case`chip_id`:{let e=await nS(a,r),t=await n.chipInfo(e,c,u);return l.push(`Chip type: ${t.chip}`),l.push(`Chip description: ${t.description}`),l.push(`Features: ${t.features.join(`, `)}`),l.push(`Crystal: ${t.crystalMHz}MHz`),l.push(`MAC: ${t.mac}`),$x(`${l.join(`
893
893
  `)}\n`)}case`read_mac`:{let e=await nS(a,r),{mac:t}=await n.readMac(e,c,u);return l.push(`MAC: ${t}`),$x(`${l.join(`
894
894
  `)}\n`)}case`erase_flash`:{let e=await nS(a,r);return await n.eraseFlash(e,c,u),$x(l.length?`${l.join(`
895
895
  `)}\n`:`flash erased
896
896
  `)}case`write_flash`:{let e=await rS(i,t),s=await nS(a,r);return await n.flash(s,c,o.has(`--erase`),e,u),$x(l.length?`${l.join(`
897
897
  `)}\n`:`flash written
898
- `)}case`read_flash`:{if(i.length<4)return eS(`read_flash expects <addr> <size> <outfile>`);let e=z(i[1],`address`),o=z(i[2],`size`),s=t.fs.resolvePath(t.cwd,i[3]),d=await nS(a,r),f=await n.readFlash(d,c,e,o,u);return await t.fs.writeFile(s,f),l.push(`Wrote ${f.byteLength} bytes to ${s}`),$x(`${l.join(`
899
- `)}\n`)}case`read_reg`:{if(i.length<2)return eS(`read_reg expects <addr>`);let e=z(i[1],`address`),t=await nS(a,r),{value:o}=await n.readReg(t,c,e,u);return l.push(`0x${e.toString(16)} = 0x${(o>>>0).toString(16).padStart(8,`0`)}`),$x(`${l.join(`
898
+ `)}case`read_flash`:{if(i.length<4)return eS(`read_flash expects <addr> <size> <outfile>`);let e=R(i[1],`address`),o=R(i[2],`size`),s=t.fs.resolvePath(t.cwd,i[3]),d=await nS(a,r),f=await n.readFlash(d,c,e,o,u);return await t.fs.writeFile(s,f),l.push(`Wrote ${f.byteLength} bytes to ${s}`),$x(`${l.join(`
899
+ `)}\n`)}case`read_reg`:{if(i.length<2)return eS(`read_reg expects <addr>`);let e=R(i[1],`address`),t=await nS(a,r),{value:o}=await n.readReg(t,c,e,u);return l.push(`0x${e.toString(16)} = 0x${(o>>>0).toString(16).padStart(8,`0`)}`),$x(`${l.join(`
900
900
  `)}\n`)}case`flash_id`:{let e=await nS(a,r),t=await n.flashId(e,c,u);return l.push(`Manufacturer: 0x${t.manufacturer.toString(16).padStart(2,`0`)}`),l.push(`Device: 0x${t.device.toString(16).padStart(4,`0`)}`),l.push(`Detected flash size: ${t.flashSize??`unknown`}`),$x(`${l.join(`
901
- `)}\n`)}case`erase_region`:{if(i.length<3)return eS(`erase_region expects <addr> <size>`);let e=z(i[1],`address`),t=z(i[2],`size`),o=await nS(a,r);return await n.eraseRegion(o,c,e,t,u),$x(l.length?`${l.join(`
901
+ `)}\n`)}case`erase_region`:{if(i.length<3)return eS(`erase_region expects <addr> <size>`);let e=R(i[1],`address`),t=R(i[2],`size`),o=await nS(a,r);return await n.eraseRegion(o,c,e,t,u),$x(l.length?`${l.join(`
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
@@ -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-BLi5_vwK.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-BRuN-148.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]
919
919
  hear --devices | --status | --warmup
920
920
 
921
921
  Speech recognition: listens on the microphone until you pause, then
@@ -1169,7 +1169,7 @@ Options:
1169
1169
  url: window.location.href,
1170
1170
  title: document.title || '',
1171
1171
  bodySnippet: document.body?.innerText?.replace(/\\s+/g, ' ').trim().slice(0, 500) || '(empty)',
1172
- }))()`);if(typeof t!=`string`||t.length===0)return{url:``,title:``,bodySnippet:`(unavailable)`};try{let e=JSON.parse(t);return{url:typeof e.url==`string`?e.url:``,title:typeof e.title==`string`?e.title:``,bodySnippet:typeof e.bodySnippet==`string`&&e.bodySnippet.length>0?e.bodySnippet:`(empty)`}}catch{return{url:``,title:``,bodySnippet:`(unparseable)`}}}function tw(e){return/callback|authorize\/resume|error/i.test(e)}async function nw(e,t,n){try{let r=await ew(e),i=`${n}:${r.url}:${r.title}`;if(t.lastFollowerDiagnosticKey===i)return;t.lastFollowerDiagnosticKey=i,VC.debug(`Teleport follower diagnostics`,{reason:n,url:r.url,title:r.title,bodySnippet:r.bodySnippet})}catch(e){VC.warn(`Could not capture teleport follower diagnostics`,{reason:n,error:String(e)})}}async function rw(e,t,n){let r=t.followerStorageScript;if(r){t.followerStorageScript=null;try{await e.withTab(r.targetId,e=>$C(e,r,`follower`)),VC.info(`Removed follower teleport storage init script`,{reason:n})}catch(e){VC.warn(`Failed to remove follower teleport storage init script`,{reason:n,error:String(e)})}}}function iw(e){return Array.isArray(e)?e:[]}const H=e(`playwright-teleport`);let aw=null,ow=null;function sw(e){aw=e}function cw(e){ow=e}function lw(){return ow?.()??null}async function uw(e,t){if(H.warn(`Teleport timed out`,{timeoutMs:t.timeoutMs,phase:t.phase}),H.debug(`Teleport timeout details`,{timeoutMs:t.timeoutMs,phase:t.phase,followerTargetId:t.followerTargetId}),t.phase=`timedOut`,t.followerTargetId){try{await e.withTab(t.followerTargetId,e=>nw(e,t,`timeout`))}catch(e){H.warn(`Could not attach to follower for timeout diagnostics`,{error:String(e)})}await rw(e,t,`timeout`)}if(dw(t),t.followerTargetId)try{await e.closePage(t.followerTargetId)}catch(e){H.warn(`Failed to close follower tab after timeout`,{error:String(e)})}t.rejectBlock?.(Error(`Teleport timed out after ${Math.round(t.timeoutMs/1e3)}s — human did not complete auth`))}function dw(e){H.info(`Cleaning up teleport watcher`,{phase:e.phase,hadPoll:!!e.pollInterval,hadTimeout:!!e.timeoutTimer,hadListener:!!e.cleanupListener}),e.pollInterval&&=(clearInterval(e.pollInterval),void 0),e.timeoutTimer&&=(clearTimeout(e.timeoutTimer),void 0),e.cleanupListener&&=(e.cleanupListener(),void 0)}function fw(e,t,n,r,i,a,o,s){if(a===`preview`)throw Error(`cannot teleport to a preview target (no Network.*)`);H.info(`Arming teleport watcher`,{timeoutMs:i,runtimeSelection:a?`explicit`:`auto`}),H.debug(`Arming teleport watcher details`,{startPattern:n.source,returnPattern:r.source,timeoutMs:i,runtimeId:a??`auto`,originalUrl:o});let c={startPattern:n,returnPattern:r,timeoutMs:i,runtimeId:a,phase:`armed`,leaderTargetId:s,originalLeaderUrl:o};return c.completionPromise=new Promise((e,t)=>{c.resolveBlock=e,c.rejectBlock=t}),c.completionPromise.catch(()=>{}),c.pollInterval=setInterval(()=>{(async()=>{if(c.phase!==`armed`)return;let r=c.leaderTargetId;if(r)try{let i=await e.withTab(r,e=>e.evaluate(`window.location.href`)),a=typeof i==`string`?i:String(i);H.debug(`Polling leader tab URL`,{targetId:r,href:a,startPattern:n.source}),n.test(a)&&(H.info(`Teleport start pattern matched on leader`),H.debug(`Teleport start pattern matched on leader details`,{targetId:r,href:a,startPattern:n.source}),mw(e,t,c,a).catch(e=>{H.error(`Unhandled teleport trigger error`,{error:String(e)})}))}catch(e){H.warn(`Error polling leader tab URL`,{targetId:r,error:String(e)})}})().catch(e=>{H.warn(`Leader teleport poll failed`,{error:String(e)})})},1e3),s&&t.teleportWatchers.set(s,c),c}async function pw(e,t,n,r,i){if(n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)try{let a=await e.withTab(r,e=>e.evaluate(`window.location.href`)),o=typeof a==`string`?a:String(a);if(!o)return;if(n.lastFollowerUrl!==o&&(n.lastFollowerUrl=o,H.debug(`Follower teleport navigation`,{href:o,phase:n.phase})),n.phase===`waitingForAuth`){n.startPattern.test(o)?(n.phase=`waitingForReturn`,H.info(`Follower reached auth provider; waiting for return pattern`),H.debug(`Follower reached auth provider details`,{href:o,startPattern:n.startPattern.source})):H.debug(`Waiting for auth redirect on follower`,{href:o,startPattern:n.startPattern.source});return}H.debug(`Polling follower tab URL for return`,{href:o,returnPattern:n.returnPattern.source}),tw(o)&&await e.withTab(r,e=>nw(e,n,`waiting-for-return`)),n.returnPattern.test(o)&&(H.info(`Follower return pattern matched after auth`),H.debug(`Follower return pattern matched after auth details`,{href:o,returnPattern:n.returnPattern.source}),yw(e,t,n,i).catch(e=>{H.error(`Unhandled teleport capture error`,{error:String(e)})}))}catch(e){H.warn(`Error polling follower tab URL`,{error:String(e)})}}async function mw(e,t,n,r){if(n.phase===`armed`){n.phase=`teleporting`,H.info(`Teleport triggered`),H.debug(`Teleport trigger details`,{triggerUrl:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0);try{let i=n.leaderTargetId;if(!i)throw Error(`teleport has no leader tab to capture from`);let a=[],o=HC;try{a=iw((await e.withTab(i,e=>e.send(`Network.getCookies`,{}))).cookies),H.info(`Captured leader cookies for follower`,{count:a.length})}catch(e){H.warn(`Could not capture leader cookies`,{error:String(e)})}try{o=await e.withTab(i,e=>JC(e,`leader`)),H.info(`Captured leader storage for follower`,{totalEntries:WC(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),H.debug(`Captured leader storage for follower details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){H.warn(`Could not capture leader storage`,{error:String(e)})}let s=n.runtimeId;if(!s){let e=aw?.();if(!e)throw Error(`No follower selection available — not connected to a tray`);let t=e();if(!t)throw Error(`No followers connected to teleport to`);s=t.runtimeId}H.info(`Selected follower for teleport`),H.debug(`Selected follower for teleport details`,{runtimeId:s});let c=await e.createRemotePage(s,`about:blank`),l=c.includes(`:`)?c:`${s}:${c}`;n.followerTargetId=l,H.info(`Opened follower tab for teleport`),H.debug(`Opened follower tab for teleport details`,{followerTargetId:l});let u=r;await e.withTab(l,async e=>{if(await e.send(`Page.enable`),a.length>0)try{await e.send(`Network.setCookies`,{cookies:a}),H.info(`Injected leader cookies into follower`,{count:a.length})}catch(e){H.warn(`Could not inject leader cookies into follower`,{error:String(e)})}n.followerStorageScript=await QC(e,o,`follower`),H.info(`Navigating follower to intercepted auth URL`),H.debug(`Navigating follower to intercepted auth URL details`,{url:u,originalLeaderUrl:n.originalLeaderUrl,triggerUrl:r,storageOrigin:o.origin||`(unknown)`}),await e.send(`Page.navigate`,{url:u})}),H.info(`Starting teleport timeout timer`,{timeoutMs:n.timeoutMs}),n.timeoutTimer=setTimeout(()=>{(n.phase===`teleporting`||n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)&&uw(e,n).catch(e=>{H.error(`Teleport timeout handler failed`,{error:String(e)})})},n.timeoutMs),n.phase=`waitingForAuth`,H.info(`Teleport waiting for follower auth redirect`),H.debug(`Teleport waiting for follower auth redirect details`,{startPattern:n.startPattern.source}),n.pollInterval=setInterval(()=>{pw(e,t,n,l,s).catch(e=>{H.warn(`Follower teleport poll failed`,{error:String(e)})})},1e3)}catch(t){H.error(`Teleport trigger failed`,{error:String(t)}),await rw(e,n,`trigger-error`),n.phase=`done`,dw(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}async function hw(e,t){H.info(`Waiting for redirect chain to settle (2s)`),await new Promise(e=>setTimeout(e,2e3));let n=t.followerTargetId,r=t.followerStorageScript??null;t.followerStorageScript=null;let{cookies:i,followerStorage:a,finalUrl:o}=await e.withTab(n,async e=>{let n;try{let t=await e.evaluate(`window.location.href`);n=typeof t==`string`?t:String(t),H.debug(`Captured final URL from follower`,{finalUrl:n})}catch(e){H.warn(`Could not read follower URL (may be mid-navigation)`,{error:String(e)})}try{let t=await e.evaluate(`document.body?.innerText?.substring(0, 500) || "(empty)"`);H.debug(`Follower page content at capture time`,{bodyText:t})}catch(e){H.warn(`Could not read follower page content`,{error:String(e)})}let i=iw((await e.send(`Network.getCookies`)).cookies),a=i.length>0?UC(i):`none`;H.info(`Captured cookies from follower`,{count:i.length}),H.debug(`Captured cookies from follower details`,{count:i.length,domains:a});let o=HC;try{o=await JC(e,`follower`),H.info(`Captured follower storage for leader`,{totalEntries:WC(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),H.debug(`Captured follower storage for leader details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){H.warn(`Could not capture follower storage`,{error:String(e)})}return await nw(e,t,`capture`),await $C(e,r,`follower`),{cookies:i,followerStorage:o,finalUrl:n}});try{await e.closePage(t.followerTargetId),H.info(`Closed follower tab after teleport`),H.debug(`Closed follower tab after teleport details`,{followerTargetId:t.followerTargetId})}catch(e){H.warn(`Failed to close follower tab`,{error:String(e)})}return{cookies:i,followerStorage:a,finalUrl:o}}async function gw(e,t,n,r){try{await e.navigate(n),await ZC(e,t,`leader`),r&&r!==n&&await e.navigate(r)}catch(i){H.warn(`Direct leader origin hydration failed, falling back to init-script replay`,{error:String(i)}),H.debug(`Direct leader origin hydration fallback details`,{hydrationUrl:n,landingUrl:r,error:String(i)});let a=await QC(e,t,`leader`);try{r&&await e.navigate(r)}finally{await $C(e,a,`leader`)}}}async function _w(e,t,n,r,i){let a=e.targetId,o=await QC(e,n,`leader`);try{r&&(H.info(`Navigating leader after auth-state injection`,{hasLandingUrl:!0,storageEntries:WC(n)}),H.debug(`Navigating leader after auth-state injection details`,{landingUrl:r,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:n.origin||`(unknown)`,storageEntries:WC(n)}),await e.navigate(r))}finally{await $C(e,o,`leader`)}}async function vw(e,t,n,r,i){let a=t.leaderTargetId,o=r.origin||``,s=qC(o,t.originalLeaderUrl,i),c=GC(t.originalLeaderUrl),l=!!o&&c!==o,u=l?KC(o):null;return a?(await e.withTab(a,async e=>{n.length>0&&(await e.send(`Network.setCookies`,{cookies:n}),H.info(`Injected cookies into leader tab`,{count:n.length}),H.debug(`Injected cookies into leader tab details`,{count:n.length,leaderTargetId:a})),l&&u?(H.info(`Hydrating leader storage origin before landing`,{storageEntries:WC(r)}),H.debug(`Hydrating leader storage origin before landing details`,{hydrationUrl:u,landingUrl:s,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:o,storageEntries:WC(r)}),await gw(e,r,u,s)):await _w(e,t,r,s,i)}),s):(H.warn(`No leader tab available for auth-state injection`),s)}async function yw(e,t,n,r){if(n.phase===`teleporting`||n.phase===`waitingForReturn`){n.phase=`capturing`,H.info(`Capturing auth state from follower`),H.debug(`Capturing auth state from follower details`,{followerTargetId:n.followerTargetId,runtimeId:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0),n.timeoutTimer&&=(clearTimeout(n.timeoutTimer),void 0);try{let{cookies:t,followerStorage:i,finalUrl:a}=await hw(e,n),o=WC(i),s=await vw(e,n,t,i,a);n.phase=`done`,dw(n);let c=t.length>0?` (${UC(t)})`:``,l=o>0?` + ${o} storage entr${o===1?`y`:`ies`}`:``,u=s?` (navigated to ${s})`:``,d=`Teleported ${t.length} cookie(s)${c}${l} from ${r}${u}`;H.info(`Teleport completed successfully`,{cookieCount:t.length,storageEntries:o,landed:!!s}),H.debug(`Teleport completed successfully details`,{result:d}),n.resolveBlock?.(d)}catch(t){H.error(`Teleport auth-state capture failed`,{error:String(t)}),await rw(e,n,`capture-error`),n.phase=`done`,dw(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}const bw=e(`playwright`),xw=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`goto requires a URL
1172
+ }))()`);if(typeof t!=`string`||t.length===0)return{url:``,title:``,bodySnippet:`(unavailable)`};try{let e=JSON.parse(t);return{url:typeof e.url==`string`?e.url:``,title:typeof e.title==`string`?e.title:``,bodySnippet:typeof e.bodySnippet==`string`&&e.bodySnippet.length>0?e.bodySnippet:`(empty)`}}catch{return{url:``,title:``,bodySnippet:`(unparseable)`}}}function tw(e){return/callback|authorize\/resume|error/i.test(e)}async function nw(e,t,n){try{let r=await ew(e),i=`${n}:${r.url}:${r.title}`;if(t.lastFollowerDiagnosticKey===i)return;t.lastFollowerDiagnosticKey=i,VC.debug(`Teleport follower diagnostics`,{reason:n,url:r.url,title:r.title,bodySnippet:r.bodySnippet})}catch(e){VC.warn(`Could not capture teleport follower diagnostics`,{reason:n,error:String(e)})}}async function rw(e,t,n){let r=t.followerStorageScript;if(r){t.followerStorageScript=null;try{await e.withTab(r.targetId,e=>$C(e,r,`follower`)),VC.info(`Removed follower teleport storage init script`,{reason:n})}catch(e){VC.warn(`Failed to remove follower teleport storage init script`,{reason:n,error:String(e)})}}}function iw(e){return Array.isArray(e)?e:[]}const V=e(`playwright-teleport`);let aw=null,ow=null;function sw(e){aw=e}function cw(e){ow=e}function lw(){return ow?.()??null}async function uw(e,t){if(V.warn(`Teleport timed out`,{timeoutMs:t.timeoutMs,phase:t.phase}),V.debug(`Teleport timeout details`,{timeoutMs:t.timeoutMs,phase:t.phase,followerTargetId:t.followerTargetId}),t.phase=`timedOut`,t.followerTargetId){try{await e.withTab(t.followerTargetId,e=>nw(e,t,`timeout`))}catch(e){V.warn(`Could not attach to follower for timeout diagnostics`,{error:String(e)})}await rw(e,t,`timeout`)}if(dw(t),t.followerTargetId)try{await e.closePage(t.followerTargetId)}catch(e){V.warn(`Failed to close follower tab after timeout`,{error:String(e)})}t.rejectBlock?.(Error(`Teleport timed out after ${Math.round(t.timeoutMs/1e3)}s — human did not complete auth`))}function dw(e){V.info(`Cleaning up teleport watcher`,{phase:e.phase,hadPoll:!!e.pollInterval,hadTimeout:!!e.timeoutTimer,hadListener:!!e.cleanupListener}),e.pollInterval&&=(clearInterval(e.pollInterval),void 0),e.timeoutTimer&&=(clearTimeout(e.timeoutTimer),void 0),e.cleanupListener&&=(e.cleanupListener(),void 0)}function fw(e,t,n,r,i,a,o,s){if(a===`preview`)throw Error(`cannot teleport to a preview target (no Network.*)`);V.info(`Arming teleport watcher`,{timeoutMs:i,runtimeSelection:a?`explicit`:`auto`}),V.debug(`Arming teleport watcher details`,{startPattern:n.source,returnPattern:r.source,timeoutMs:i,runtimeId:a??`auto`,originalUrl:o});let c={startPattern:n,returnPattern:r,timeoutMs:i,runtimeId:a,phase:`armed`,leaderTargetId:s,originalLeaderUrl:o};return c.completionPromise=new Promise((e,t)=>{c.resolveBlock=e,c.rejectBlock=t}),c.completionPromise.catch(()=>{}),c.pollInterval=setInterval(()=>{(async()=>{if(c.phase!==`armed`)return;let r=c.leaderTargetId;if(r)try{let i=await e.withTab(r,e=>e.evaluate(`window.location.href`)),a=typeof i==`string`?i:String(i);V.debug(`Polling leader tab URL`,{targetId:r,href:a,startPattern:n.source}),n.test(a)&&(V.info(`Teleport start pattern matched on leader`),V.debug(`Teleport start pattern matched on leader details`,{targetId:r,href:a,startPattern:n.source}),mw(e,t,c,a).catch(e=>{V.error(`Unhandled teleport trigger error`,{error:String(e)})}))}catch(e){V.warn(`Error polling leader tab URL`,{targetId:r,error:String(e)})}})().catch(e=>{V.warn(`Leader teleport poll failed`,{error:String(e)})})},1e3),s&&t.teleportWatchers.set(s,c),c}async function pw(e,t,n,r,i){if(n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)try{let a=await e.withTab(r,e=>e.evaluate(`window.location.href`)),o=typeof a==`string`?a:String(a);if(!o)return;if(n.lastFollowerUrl!==o&&(n.lastFollowerUrl=o,V.debug(`Follower teleport navigation`,{href:o,phase:n.phase})),n.phase===`waitingForAuth`){n.startPattern.test(o)?(n.phase=`waitingForReturn`,V.info(`Follower reached auth provider; waiting for return pattern`),V.debug(`Follower reached auth provider details`,{href:o,startPattern:n.startPattern.source})):V.debug(`Waiting for auth redirect on follower`,{href:o,startPattern:n.startPattern.source});return}V.debug(`Polling follower tab URL for return`,{href:o,returnPattern:n.returnPattern.source}),tw(o)&&await e.withTab(r,e=>nw(e,n,`waiting-for-return`)),n.returnPattern.test(o)&&(V.info(`Follower return pattern matched after auth`),V.debug(`Follower return pattern matched after auth details`,{href:o,returnPattern:n.returnPattern.source}),yw(e,t,n,i).catch(e=>{V.error(`Unhandled teleport capture error`,{error:String(e)})}))}catch(e){V.warn(`Error polling follower tab URL`,{error:String(e)})}}async function mw(e,t,n,r){if(n.phase===`armed`){n.phase=`teleporting`,V.info(`Teleport triggered`),V.debug(`Teleport trigger details`,{triggerUrl:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0);try{let i=n.leaderTargetId;if(!i)throw Error(`teleport has no leader tab to capture from`);let a=[],o=HC;try{a=iw((await e.withTab(i,e=>e.send(`Network.getCookies`,{}))).cookies),V.info(`Captured leader cookies for follower`,{count:a.length})}catch(e){V.warn(`Could not capture leader cookies`,{error:String(e)})}try{o=await e.withTab(i,e=>JC(e,`leader`)),V.info(`Captured leader storage for follower`,{totalEntries:WC(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),V.debug(`Captured leader storage for follower details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){V.warn(`Could not capture leader storage`,{error:String(e)})}let s=n.runtimeId;if(!s){let e=aw?.();if(!e)throw Error(`No follower selection available — not connected to a tray`);let t=e();if(!t)throw Error(`No followers connected to teleport to`);s=t.runtimeId}V.info(`Selected follower for teleport`),V.debug(`Selected follower for teleport details`,{runtimeId:s});let c=await e.createRemotePage(s,`about:blank`),l=c.includes(`:`)?c:`${s}:${c}`;n.followerTargetId=l,V.info(`Opened follower tab for teleport`),V.debug(`Opened follower tab for teleport details`,{followerTargetId:l});let u=r;await e.withTab(l,async e=>{if(await e.send(`Page.enable`),a.length>0)try{await e.send(`Network.setCookies`,{cookies:a}),V.info(`Injected leader cookies into follower`,{count:a.length})}catch(e){V.warn(`Could not inject leader cookies into follower`,{error:String(e)})}n.followerStorageScript=await QC(e,o,`follower`),V.info(`Navigating follower to intercepted auth URL`),V.debug(`Navigating follower to intercepted auth URL details`,{url:u,originalLeaderUrl:n.originalLeaderUrl,triggerUrl:r,storageOrigin:o.origin||`(unknown)`}),await e.send(`Page.navigate`,{url:u})}),V.info(`Starting teleport timeout timer`,{timeoutMs:n.timeoutMs}),n.timeoutTimer=setTimeout(()=>{(n.phase===`teleporting`||n.phase===`waitingForAuth`||n.phase===`waitingForReturn`)&&uw(e,n).catch(e=>{V.error(`Teleport timeout handler failed`,{error:String(e)})})},n.timeoutMs),n.phase=`waitingForAuth`,V.info(`Teleport waiting for follower auth redirect`),V.debug(`Teleport waiting for follower auth redirect details`,{startPattern:n.startPattern.source}),n.pollInterval=setInterval(()=>{pw(e,t,n,l,s).catch(e=>{V.warn(`Follower teleport poll failed`,{error:String(e)})})},1e3)}catch(t){V.error(`Teleport trigger failed`,{error:String(t)}),await rw(e,n,`trigger-error`),n.phase=`done`,dw(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}async function hw(e,t){V.info(`Waiting for redirect chain to settle (2s)`),await new Promise(e=>setTimeout(e,2e3));let n=t.followerTargetId,r=t.followerStorageScript??null;t.followerStorageScript=null;let{cookies:i,followerStorage:a,finalUrl:o}=await e.withTab(n,async e=>{let n;try{let t=await e.evaluate(`window.location.href`);n=typeof t==`string`?t:String(t),V.debug(`Captured final URL from follower`,{finalUrl:n})}catch(e){V.warn(`Could not read follower URL (may be mid-navigation)`,{error:String(e)})}try{let t=await e.evaluate(`document.body?.innerText?.substring(0, 500) || "(empty)"`);V.debug(`Follower page content at capture time`,{bodyText:t})}catch(e){V.warn(`Could not read follower page content`,{error:String(e)})}let i=iw((await e.send(`Network.getCookies`)).cookies),a=i.length>0?UC(i):`none`;V.info(`Captured cookies from follower`,{count:i.length}),V.debug(`Captured cookies from follower details`,{count:i.length,domains:a});let o=HC;try{o=await JC(e,`follower`),V.info(`Captured follower storage for leader`,{totalEntries:WC(o),localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length}),V.debug(`Captured follower storage for leader details`,{origin:o.origin||`(unknown)`,localStorageCount:Object.keys(o.localStorage).length,sessionStorageCount:Object.keys(o.sessionStorage).length})}catch(e){V.warn(`Could not capture follower storage`,{error:String(e)})}return await nw(e,t,`capture`),await $C(e,r,`follower`),{cookies:i,followerStorage:o,finalUrl:n}});try{await e.closePage(t.followerTargetId),V.info(`Closed follower tab after teleport`),V.debug(`Closed follower tab after teleport details`,{followerTargetId:t.followerTargetId})}catch(e){V.warn(`Failed to close follower tab`,{error:String(e)})}return{cookies:i,followerStorage:a,finalUrl:o}}async function gw(e,t,n,r){try{await e.navigate(n),await ZC(e,t,`leader`),r&&r!==n&&await e.navigate(r)}catch(i){V.warn(`Direct leader origin hydration failed, falling back to init-script replay`,{error:String(i)}),V.debug(`Direct leader origin hydration fallback details`,{hydrationUrl:n,landingUrl:r,error:String(i)});let a=await QC(e,t,`leader`);try{r&&await e.navigate(r)}finally{await $C(e,a,`leader`)}}}async function _w(e,t,n,r,i){let a=e.targetId,o=await QC(e,n,`leader`);try{r&&(V.info(`Navigating leader after auth-state injection`,{hasLandingUrl:!0,storageEntries:WC(n)}),V.debug(`Navigating leader after auth-state injection details`,{landingUrl:r,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:n.origin||`(unknown)`,storageEntries:WC(n)}),await e.navigate(r))}finally{await $C(e,o,`leader`)}}async function vw(e,t,n,r,i){let a=t.leaderTargetId,o=r.origin||``,s=qC(o,t.originalLeaderUrl,i),c=GC(t.originalLeaderUrl),l=!!o&&c!==o,u=l?KC(o):null;return a?(await e.withTab(a,async e=>{n.length>0&&(await e.send(`Network.setCookies`,{cookies:n}),V.info(`Injected cookies into leader tab`,{count:n.length}),V.debug(`Injected cookies into leader tab details`,{count:n.length,leaderTargetId:a})),l&&u?(V.info(`Hydrating leader storage origin before landing`,{storageEntries:WC(r)}),V.debug(`Hydrating leader storage origin before landing details`,{hydrationUrl:u,landingUrl:s,originalLeaderUrl:t.originalLeaderUrl,finalUrl:i,leaderTargetId:a,storageOrigin:o,storageEntries:WC(r)}),await gw(e,r,u,s)):await _w(e,t,r,s,i)}),s):(V.warn(`No leader tab available for auth-state injection`),s)}async function yw(e,t,n,r){if(n.phase===`teleporting`||n.phase===`waitingForReturn`){n.phase=`capturing`,V.info(`Capturing auth state from follower`),V.debug(`Capturing auth state from follower details`,{followerTargetId:n.followerTargetId,runtimeId:r}),n.pollInterval&&=(clearInterval(n.pollInterval),void 0),n.timeoutTimer&&=(clearTimeout(n.timeoutTimer),void 0);try{let{cookies:t,followerStorage:i,finalUrl:a}=await hw(e,n),o=WC(i),s=await vw(e,n,t,i,a);n.phase=`done`,dw(n);let c=t.length>0?` (${UC(t)})`:``,l=o>0?` + ${o} storage entr${o===1?`y`:`ies`}`:``,u=s?` (navigated to ${s})`:``,d=`Teleported ${t.length} cookie(s)${c}${l} from ${r}${u}`;V.info(`Teleport completed successfully`,{cookieCount:t.length,storageEntries:o,landed:!!s}),V.debug(`Teleport completed successfully details`,{result:d}),n.resolveBlock?.(d)}catch(t){V.error(`Teleport auth-state capture failed`,{error:String(t)}),await rw(e,n,`capture-error`),n.phase=`done`,dw(n),n.rejectBlock?.(t instanceof Error?t:Error(String(t)))}}}const bw=e(`playwright`),xw=async({browser:e,fs:t,state:n,positional:r,flags:i,onTab:a})=>{if(r.length===0)return{stdout:``,stderr:`goto requires a URL
1173
1173
  `,exitCode:1};let o=j(i);if(`error`in o)return{stdout:``,stderr:o.error,exitCode:1};await a(o.targetId,e=>e.navigate(r[0])),n.snapshots.delete(o.targetId);let s=i[`teleport-start`],c=i[`teleport-return`];if(s&&c){bw.info(`Arming teleport via goto/navigate flags`),bw.debug(`Arming teleport via goto/navigate flags details`,{targetId:o.targetId,startPattern:s,returnPattern:c});let t,a;try{t=new RegExp(s)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-start: ${s}\n`,exitCode:1}}try{a=new RegExp(c)}catch{return{stdout:``,stderr:`Invalid regex for --teleport-return: ${c}\n`,exitCode:1}}let l=i.timeout?parseInt(i.timeout,10):300,u=n.teleportWatchers.get(o.targetId);u&&(dw(u),n.teleportWatchers.delete(o.targetId)),fw(e,n,t,a,l*1e3,i[`teleport-runtime`],r[0],o.targetId)}if(i.discover===`true`){let{browseShWarning:e,...n}=await pC(r[0],{discover:!0,fs:t}),i={action:`navigate`,targetId:o.targetId,source:`auxiliary-fetch`,...n};return{stdout:JSON.stringify(i,null,2)+`
1174
1174
  `,stderr:e?`${e}\n`:``,exitCode:0}}return{stdout:`Navigated to ${r[0]}\n`,stderr:``,exitCode:0}},Sw=async({browser:e,state:t,flags:n,onTab:r})=>{let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`history.back()`)}),t.snapshots.delete(i.targetId),{stdout:`Navigated back
1175
1175
  `,stderr:``,exitCode:0})},Cw=async({browser:e,state:t,flags:n,onTab:r})=>{let i=j(n);return`error`in i?{stdout:``,stderr:i.error,exitCode:1}:(await r(i.targetId,async e=>{await e.evaluate(`history.forward()`)}),t.snapshots.delete(i.targetId),{stdout:`Navigated forward
@@ -1197,56 +1197,56 @@ Options:
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}};async function Jw(e,t){if(!t.sessionDirsCreated){for(let t of[`/.playwright`,`/.playwright/snapshots`,`/.playwright/screenshots`])try{await e.mkdir(t,{recursive:!0})}catch(e){if(!wn(e))throw e}t.sessionDirsCreated=!0}}async function Yw(e,t,n,r){try{return await e.withTab(n,async e=>{let{url:i,title:a,text:o,refToSelector:s,refToBackendNodeId:c,refToFrameId:l}=await oe(e),u={url:i,title:a,refToSelector:s,refToBackendNodeId:c,refToFrameId:l,content:o,timestamp:Date.now()};r.snapshots.set(n,u);let d=[`Page URL: ${i}`,`Page Title: ${a}`,``,o].join(`
1201
- `),f=`/.playwright/snapshots/page-${Sn(new Date)}.yml`;return await t.writeFile(f,d),f})}catch{return null}}async function Xw(e,t,n){await Jw(e,t);let r=new Date().toISOString(),i=`playwright-cli ${n.command}${n.args.length?` `+n.args.join(` `):``}`,a=n.result.exitCode===0?n.result.stdout.trim()||`OK`:`Error: ${n.result.stderr.trim()}`,o=[`### ${i}`,`- **Time**: ${r}`];if(n.tabUrl||n.targetId){let e=n.tabUrl?`${n.tabUrl}${n.targetId?` (targetId: ${n.targetId})`:``}`:`targetId: ${n.targetId}`;o.push(`- **Tab**: ${e}`)}o.push(`- **Result**: ${a}`),n.snapshotPath&&o.push(``,`[Snapshot](${n.snapshotPath})`),o.push(`---`,``);let s=o.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(!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(`
1202
1202
  `)+`
1203
- `,c=`/.playwright/session.md`,l=``;try{let t=await e.readFile(c);l=typeof t==`string`?t:new TextDecoder().decode(t)}catch{}await e.writeFile(c,l+s)}function Zw(){return import(`./snapshot-features-D44t7iA7.js`)}async function Qw(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(`
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 $w(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() {
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-Dzfoquou.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(`
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();
1207
1207
  return { x: r.x + window.scrollX, y: r.y + window.scrollY, width: r.width, height: r.height };
1208
- }`,returnByValue:!0})).result?.value}async function eT(e,t){let n=await e.evaluate(`(function() {
1208
+ }`,returnByValue:!0})).result?.value}async function nT(e,t){let n=await e.evaluate(`(function() {
1209
1209
  const el = document.querySelector(${JSON.stringify(t.split(`,`)[0].trim())});
1210
1210
  if (!el) return null;
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 tT(e,t,n){let r=t.refToBackendNodeId.get(n);if(r)return $w(e,r);let i=t.refToSelector.get(n);if(!i)throw Error(`Unknown ref "${n}"`);return eT(e,i)}const nT=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 Qw(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 Zw();return c(e,i.refToBackendNodeId,s)});if(c!==void 0){let{limitSnapshotDepth:e}=await Zw();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
- `,stderr:``,exitCode:0}},rT=async e=>{let{findHandlerImpl:t}=await Zw();return t(e)},iT=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(`
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+`
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}},aT=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
1219
- `,exitCode:1}:{stdout:``,stderr:`pdf: ${t}\n`,exitCode:1}}return{stdout:`Saved PDF to ${o}\n`,stderr:``,exitCode:0}};async function oT(e,t,n,r){let i=t.snapshots.get(n);if(!i)throw Error(`No snapshot available. Run "snapshot" first.`);let a=await tT(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 sT=new Set([`png`,`jpeg`,`webp`]);function cT(e){let t=e.type;if(t&&sT.has(t))return t;let n=e.filename??``;return/\.jpe?g$/i.test(n)?`jpeg`:/\.webp$/i.test(n)?`webp`:`png`}const lT=async({browser:e,fs:t,state:n,positional:r,flags:i,scratchDir:a,onTab:o})=>{let s=j(i);if(`error`in s)return{stdout:``,stderr:s.error,exitCode:1};if(i.type&&!sT.has(i.type))return{stdout:``,stderr:`screenshot: --type must be png, jpeg, or webp, got "${i.type}"\n`,exitCode:1};if(i[`max-width`]&&cT(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 c=await o(s.targetId,async e=>{let o;if(r[0]?.startsWith(`e`)){let t=await oT(e,n,s.targetId,r[0]);if(`error`in t)return t;o=t.clip}let c=i.fullPage===`true`||i[`full-page`]===`true`;if(i.hires===`true`){let{hiresClip:t}=await Zw();o=await t(e,o,c)}let l=i[`max-width`]?parseInt(i[`max-width`],10):void 0,u=cT(i),d=await e.screenshot({format:u,fullPage:c,...o?{clip:o}:{},...l?{maxWidth:l}:{}}),f=u===`jpeg`?`jpg`:u,p=i.filename||`${a}/screenshot-${Date.now()}.${f}`,m=Nn(d);await t.writeFile(p,m);try{await Jw(t,n);let e=`/.playwright/screenshots/screenshot-${Sn(new Date)}.${f}`;await t.writeFile(e,m)}catch{}return{message:`Screenshot saved to ${p} (${Math.round(m.length/1024)} KB)`}});return`error`in c?{stdout:``,stderr:`screenshot: ${c.error}\n`,exitCode:1}:{stdout:c.message+`
1221
- `,stderr:``,exitCode:0}},uT=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{let a=j(r);if(`error`in a)return{stdout:``,stderr:a.error,exitCode:1};let o=r.filename??n[0]??`/.playwright/storage-state.json`,s=[],c=[],l=``;await i(a.targetId,async e=>{s=(await e.send(`Network.getCookies`)).cookies??[];let{sessionId:t,transport:n}=e;l=(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??`[]`;c=JSON.parse(r)});let u=JSON.stringify({cookies:s,origins:l?[{origin:l,localStorage:c}]:[]},null,2);return await t.writeFile(o,u),{stdout:`Saved storage state to ${o}\n`,stderr:``,exitCode:0}},dT=async({browser:e,fs:t,positional:n,flags:r,onTab:i})=>{if(n.length===0)return{stdout:``,stderr:`state-load requires a filename
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
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+`
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)};
1224
1224
  for (var i = 0; i < items.length; i++) {
1225
1225
  localStorage.setItem(items[i].name, items[i].value);
1226
1226
  }
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 fT(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(`
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 pT=fT(`localstorage`,`localStorage`),mT=fT(`sessionstorage`,`sessionStorage`),hT=e(`playwright`),gT={width:412,height:915,deviceScaleFactor:2.625};function _T(e,t,n,r,i){let a=n[`teleport-start`],o=n[`teleport-return`];if(!a||!o)return null;hT.info(`Arming teleport via open/tab-new flags`),hT.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 vT=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(gT.width,gT.height,{deviceScaleFactor:gT.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){hT.debug(`open/tab-new --foreground bringToFront failed`,{targetId:u,error:e instanceof Error?e.message:String(e)})}let d=_T(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}},yT=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 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
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
- `,stderr:``,exitCode:0}},bT=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}},xT=async({browser:e,state:t,positional:n,onTab:r})=>{if(n.length===0)return{stdout:``,stderr:`tab-select requires a tab index
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}},ST=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 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>
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
- `,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})},CT=e(`playwright-teleport`);function wT(){CT.info(`Listing available follower runtimes`);let e=lw();if(!e)return{stdout:``,stderr:`teleport: not connected to a tray
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.
1241
1241
  `,stderr:``,exitCode:0};let n=[`Available runtimes for teleport:`];for(let e of t){let t=[e.runtimeId];if(e.floatType&&t.push(`[${e.floatType}]`),e.runtime&&t.push(`(${e.runtime})`),e.lastActivity){let n=Math.round((Date.now()-e.lastActivity)/1e3);t.push(`active ${n}s ago`)}n.push(` ${t.join(` `)}`)}return{stdout:n.join(`
1242
1242
  `)+`
1243
- `,stderr:``,exitCode:0}}function TT({state:e,flags:t}){let n=j(t);if(`error`in n)return{stdout:``,stderr:n.error,exitCode:1};CT.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
- `,stderr:``,exitCode:0}}function ET(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 DT(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 OT({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
- `,exitCode:1};let c=ET(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=DT(u);if(e)return{stdout:``,stderr:e,exitCode:1}}let d=t.teleportWatchers.get(a.targetId);d&&(CT.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 CT.info(`Arming teleport via explicit subcommand`,{targetId:a.targetId,timeoutSec:l,runtimeSelection:u?`explicit`:`auto`}),CT.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 kT=async e=>e.flags.list===`true`?wT():e.flags.off===`true`?TT(e):OT(e),AT={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 jT(e){let t=e.split(`.`).pop()?.toLowerCase()??``;return AT[t]??`application/octet-stream`}function MT(e,t){if(e.length===0)return{error:`upload requires at least one file path
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
+ `,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
+ `,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
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
1248
1248
  `}:{targetRef:n,filePaths:r}:{error:`Unknown ref "${n}"\n`}:{error:`No snapshot available. Run "snapshot" first.
1249
- `}}const NT=new Map([[`teleport`,kT],[`open`,vT],[`tab-new`,vT],[`fetch`,mC],[`goto`,xw],[`navigate`,xw],[`snapshot`,nT],[`find`,rT],[`frames`,iT],[`screenshot`,lT],[`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`,yT],[`tab-close`,bT],[`close`,bT],[`dblclick`,EC],[`hover`,DC],[`select`,OC],[`check`,kC],[`uncheck`,AC],[`drag`,jC],[`resize`,ST],[`dialog-accept`,nC],[`dialog-dismiss`,rC],[`cookie-list`,YS],[`cookie-get`,XS],[`cookie-set`,ZS],[`cookie-delete`,QS],[`cookie-clear`,$S],[`localstorage-list`,pT.list],[`localstorage-get`,pT.get],[`localstorage-set`,pT.set],[`localstorage-delete`,pT.del],[`localstorage-clear`,pT.clear],[`sessionstorage-list`,mT.list],[`sessionstorage-get`,mT.get],[`sessionstorage-set`,mT.set],[`sessionstorage-delete`,mT.del],[`sessionstorage-clear`,mT.clear],[`record`,Rw],[`stop-recording`,zw],[`tab-select`,xT],[`pdf`,aT],[`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=MT(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:jT(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) {
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;
1251
1251
  if (el.tagName !== 'INPUT' || el.type !== 'file') {
1252
1252
  throw new Error('Element ' + el.tagName + ' is not a file input');
@@ -1277,12 +1277,12 @@ 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`,uT],[`state-load`,dT],[`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 PT(){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 FT(e){return e.map(e=>e===`--no-iframes`||e.startsWith(`--no-iframes=`)?e.replace(`--no-iframes`,`--_noiframes`):e)}function IT(e){return{...e,bool:[...e.bool??[],`--_noiframes`],value:[...e.value??[],`--_noiframes`]}}const LT=2e3;function RT(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 zT(e,t,n,r){if(!t||typeof e.getTabLockStats!=`function`)return r;let i=e.getTabLockStats(),a=i.totalWaitMs-t.totalWaitMs;if(a<LT)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>=LT?`${(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 BT(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 VT(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 HT(e,t,n){let r=NT.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?VT(e,t,void 0):a}catch(r){return i?.aborted?VT(e,t,r):await BT(n.browser,n.flags,r)}}async function UT(e,t,n,r){let i=C(FT(n),IT(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-p6vq-7bY.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 WT(e,t,n){let r=t?Cn(t,n):null,i=PT();return S(e,async(a,o)=>{if(a.length===0||a[0]===`help`||a[0]===`--help`||a[0]===`-h`){let{formatHelp:t}=await import(`./help-p6vq-7bY.js`);return{stdout:t(e)+`
1282
- `,stderr:``,exitCode:0}}let s=a[0],c=a.slice(1),l=await UT(e,s,c,i);if(`answer`in l)return l.answer;let{positional:u,flags:d}=l;if(!t||!r)return{stdout:``,stderr:`${e}: browser APIs are unavailable in this environment\n`,exitCode:1};let f=d.tab??null,p=RT(t,f),m=await HT(e,s,{browser:t,fs:n,state:r,positional:u,flags:d,scratchDir:zi(o.env),onTab:(e,n)=>t.withTab(e,n,{signal:o.signal}),signal:o.signal}),h=d.tab??null,g=null;Pn.has(s)&&m.exitCode===0&&h&&(g=await Yw(t,n,h,r));try{await Xw(n,r,{command:s,args:c,result:m,snapshotPath:g,targetId:h})}catch{}return zT(t,p,f,m)})}const GT=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 KT(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
- `);let a=[];for(let[e,t]of GT){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(`
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-BFAT_5tA.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-BFAT_5tA.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:
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
- `}function qT(e={}){return S(`commands`,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`commands - display available commands
1285
+ `}function YT(e={}){return S(`commands`,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`commands - display available commands
1286
1286
 
1287
1287
  Usage: commands [command]
1288
1288
 
@@ -1293,30 +1293,38 @@ If a command name is provided, shows help for that command.
1293
1293
  Otherwise, lists all available commands.
1294
1294
 
1295
1295
  Note: This is an enhanced version of 'help' that shows all custom commands.
1296
- `,stderr:``,exitCode:0};if(t.length>0&&n.exec){let e=t[0];return n.exec(`${e} --help`,{cwd:n.cwd})}return{stdout:KT(n.getRegisteredCommands?.()??[],await e.getJshCommands?.()??[],await e.getWorkflowCommands?.()??[]),stderr:``,exitCode:0}})}function JT(e){return{stdout:`hf - download model repos from the Hugging Face Hub into the VFS
1296
+ `,stderr:``,exitCode:0};if(t.length>0&&n.exec){let e=t[0];return n.exec(`${e} --help`,{cwd:n.cwd})}return{stdout:JT(n.getRegisteredCommands?.()??[],await e.getJshCommands?.()??[],await e.getWorkflowCommands?.()??[]),stderr:``,exitCode:0}})}function XT(e){return{stdout:`hf - download model repos from the Hugging Face Hub into the VFS
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 ${Vi/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
+ - Downloads are held in memory until written: a file starts only while the
1321
+ ones in flight fit --max-in-flight-mb (larger or unsized files run alone).
1322
+ - The first failed file stops the rest.
1323
+ - Background-job logs get a progress line every few seconds.
1316
1324
  - Weights are read by the speech engines via the preview SW from the
1317
1325
  target directory; transformers expects <localModelPath>/<repo>/.
1318
- `,stderr:``,exitCode:e}}function YT(e){return{stdout:``,stderr:`hf: ${e}\n`,exitCode:1}}const XT=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;function ZT(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 XT.test(o)?{repo:o,files:i.slice(1),to:t,revision:n,force:r}:{error:`invalid repo '${o}' — expected <owner>/<name>`}}function QT(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}async function $T(e,t,n){let r=ZT(e);if(`error`in r)return YT(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} (${QT(e.bytes)})\n`:`hf: skipped ${e.file} (already at ${i})\n`}}}),o=`hf: ${e.downloaded} downloaded, ${e.skipped} skipped, ${QT(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}):YT(e instanceof Error?e.message:String(e))}}function eE(e){return{name:`hf`,async execute(t,n){if(t.length===0||w(t,{valueFlags:[`--to`,`--revision`,`--rev`]}))return JT(+(t.length===0));let r=t[0];return r===`download`?$T(t.slice(1),n,e.fetch):YT(`unknown subcommand: ${r}`)}}}const tE=new Set([`--vid`,`--pid`,`--usage-page`,`--usage`,`--__resolved`,`--timeout`]);function nE(e){return vn(e,tE)}function rE(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 iE(e){let t={};return e.has(`--vid`)&&(t.vendorId=rE(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=rE(e.get(`--pid`),`pid`)),e.has(`--usage-page`)&&(t.usagePage=rE(e.get(`--usage-page`),`usage-page`)),e.has(`--usage`)&&(t.usage=rE(e.get(`--usage`),`usage`)),Object.keys(t).length>0?[t]:[]}function aE(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 oE(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function sE(e){return e.toString(16).padStart(2,`0`)}function cE(e){return`0x${e.toString(16).padStart(4,`0`)}`}function lE(e){let t=e.productName||`(unknown)`,n=e.opened?` [open]`:``,r=e.usagePage===void 0?``:`\t${cE(e.usagePage)}:${cE(e.usage??0)}`;return`${e.handle}\t${cE(e.vendorId)}:${cE(e.productId)}${r}\t${t}${n}`}function uE(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 dE(e){return`${e.map(lE).join(`
1319
- `)}\n`}function fE(e){return`${sE(e.reportId)} ${oE(e.bytes)}`.trimEnd()}function pE(e){return{stdout:e,stderr:``,exitCode:0}}function U(e){return{stdout:``,stderr:`hid: ${e}\n`,exitCode:1}}const mE=`hid - access HID devices via WebHID
1326
+ `,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=Bi(i.repo,i.to,t.cwd),{downloadHfRepo:o,HfFileDownloadError:s}=await import(`./hf-download-TLCxnVIL.js`),c=iE(t),l=new rE(i.files.length,void 0,r),u=``;try{let e=await o({fetch:n,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.fetch,t):ZT(`unknown subcommand: ${i}`)}}}const cE=new Set([`--vid`,`--pid`,`--usage-page`,`--usage`,`--__resolved`,`--timeout`]);function lE(e){return vn(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=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 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(`
1327
+ `)}\n`}function yE(e){return`${mE(e.reportId)} ${pE(e.bytes)}`.trimEnd()}function bE(e){return{stdout:e,stderr:``,exitCode:0}}function H(e){return{stdout:``,stderr:`hid: ${e}\n`,exitCode:1}}const xE=`hid - access HID devices via WebHID
1320
1328
 
1321
1329
  Usage: hid <subcommand> [options]
1322
1330
 
@@ -1340,10 +1348,10 @@ Options:
1340
1348
  -h, --help
1341
1349
 
1342
1350
  Report payloads are capped at ${Ir} bytes (4 MiB).
1343
- `;function hE(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return pE(t)}return pE(e.length?`${oE(e)}\n`:``)}function gE(e){return!e||e.aborted?Promise.resolve():new Promise(t=>{e.addEventListener(`abort`,()=>t(),{once:!0})})}async function _E(e){let t=await e.list();return t.length===0?pE(`no granted HID devices
1344
- `):pE(`${t.map(lE).join(`
1345
- `)}\n`)}async function vE(e,t){let n=e.get(`--__resolved`),r=iE(e),i=r[0];if(n){let e=n.split(`,`).filter(e=>e.length>0);return e.length===0?U(`request: missing resolved handle`):pE(dE(uE(await Promise.all(e.map(e=>t.info(e))),i)))}let a=xe();return a?yE(r,i,a,t):pE(dE(uE(await t.request(r),i)))}async function yE(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=uE(s.length>0?s:[],t);return c.length===0?U(`request: granted device could not be re-acquired`):pE(dE(c))}async function bE(e,t,n){let r=t[1];return r?(e===`open`?await n.open(r):await n.close(r),pE(``)):U(`${e}: handle required`)}async function xE(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return U(`${e}: handle and report-id required`);let o=rE(a,`report-id`),s=aE(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),pE(``))}async function SE(e,t,n){let[,r,i]=e;return!r||i===void 0?U(`feature-get: handle and report-id required`):hE((await t.receiveFeatureReport(r,rE(i,`report-id`))).bytes,n)}async function CE(e,t,n){let r=e[1];if(!r)return U(`watch: handle required`);let i=[],a=await n.subscribeInputReports(r,e=>{i.push(fE(e))});try{await gE(t.signal)}finally{await a()}return pE(i.length?`${i.join(`
1346
- `)}\n`:``)}async function wE(e,t,n,r,i){let[,a,o]=e;if(!a||o===void 0)return U(`query: handle and report-id required`);let s=rE(o,`report-id`),c=aE(t);if(c.length>4194304)return U(`query payload exceeds 4 MiB limit`);let l=n.has(`--timeout`)?rE(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?hE(t.bytes,!0):pE(`${fE(t)}\n`)}finally{p!==void 0&&clearTimeout(p),await f()}}async function TE(e,t,n){let{positionals:r,flags:i,bools:a}=nE(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return _E(n);case`request`:return vE(i,n);case`open`:case`close`:return bE(o,r,n);case`send`:case`feature-send`:return xE(o,r,t,n);case`feature-get`:return SE(r,n,s);case`watch`:return CE(r,t,n);case`query`:return wE(r,t,i,n,s);default:return U(`unknown subcommand '${o??``}'. Try 'hid --help'.`)}}function EE(){return S(`hid`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return pE(mE);let n=Rr(se(),y());if(!n)return U(`WebHID is unavailable in this environment`);try{return await TE(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 DE=1e3,OE=`usage: id [-u|-g|-G] [-n] [-r] [USER]`,kE=`${OE}
1351
+ `;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
1352
+ `):bE(`${t.map(gE).join(`
1353
+ `)}\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?H(`request: missing resolved handle`):bE(vE(_E(await Promise.all(e.map(e=>t.info(e))),i)))}let a=xe();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=Fr();if(!t)return H(`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 H(`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?H(`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(``)):H(`${e}: handle required`)}async function OE(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return H(`${e}: handle and report-id required`);let o=uE(a,`report-id`),s=fE(n);return s.length>4194304?H(`${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?H(`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 H(`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(`
1354
+ `)}\n`:``)}async function jE(e,t,n,r,i){let[,a,o]=e;if(!a||o===void 0)return H(`query: handle and report-id required`);let s=uE(o,`report-id`),c=fE(t);if(c.length>4194304)return H(`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`?H(`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 H(`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=Rr(se(),y());if(!n)return H(`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)?H(`user cancelled or no device selected`):H(t)}})}const PE=1e3,FE=`usage: id [-u|-g|-G] [-n] [-r] [USER]`,IE=`${FE}
1347
1355
 
1348
1356
  Print the user and group identity of this SLICC runtime.
1349
1357
 
@@ -1358,23 +1366,23 @@ Options:
1358
1366
  --version Print the SLICC build.
1359
1367
 
1360
1368
  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 ${DE}, one per runtime, since every
1369
+ gets it too. A cone is the human user (uid ${PE}, one per runtime, since every
1362
1370
  cone shares one home); a scoop is a service identity whose uid is derived from
1363
1371
  its folder name, so it is stable across reloads and distinct per scoop.
1364
1372
  Every user is in a user-private group of the same name, plus the role group
1365
1373
  \`cone\` (10) or \`scoop\` (20).
1366
- `,AE=`/scoops/`;function jE(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 ME(e,t){return{name:e,uid:t===`cone`?DE:jE(e),role:t}}function NE(e){return[{gid:e.uid,name:e.name},e.role===`cone`?{gid:10,name:`cone`}:{gid:20,name:`scoop`}]}function PE(e,t){return`${e}(${t})`}function FE(e){let t=NE(e),n=t[0];return`uid=${PE(e.uid,e.name)} gid=${PE(n.gid,n.name)} groups=${t.map(e=>PE(e.gid,e.name)).join(`,`)}\n`}async function IE(e){let t=e.env.get(`HOME`)??``,n=t.startsWith(AE)?`scoop`:`cone`,r=e.env.get(`USER`)||LE(t,n);return r?ME(r,n):ME(tp(await ep(RE(e.fs))),`cone`)}function LE(e,t){return e===``?``:t===`cone`?tp(e):e.slice(8).split(`/`)[0]??``}function RE(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 zE(e,t){return await e.fs.exists(`/home/${t}`).catch(()=>!1)?ME(t,`cone`):await e.fs.exists(`${AE}${t}`).catch(()=>!1)?ME(t,`scoop`):null}function BE(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=HE[r];if(e){e(t);continue}if(r.length>1&&r.startsWith(`-`)){for(let e of r.slice(1)){let n=VE[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 VE={u:e=>{e.select=`user`},g:e=>{e.select=`group`},G:e=>{e.select=`groups`},n:e=>{e.names=!0},r:()=>void 0},HE={"--user":VE.u,"--group":VE.g,"--groups":VE.G,"--name":VE.n,"--real":VE.r};function UE(e,t){let n=NE(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 FE(e)}}function WE(){return S(`id`,async(e,t)=>{let n=BE(e);if(`error`in n)return{stdout:``,stderr:`id: ${n.error}\n${OE}\n`,exitCode:1};if(n.mode===`help`)return KE(kE);if(n.mode===`version`)return KE(`id (SLICC) ${Ke().version}\n`);let r=n.operand===void 0?await IE(t):await zE(t,n.operand);return r?KE(UE(r,n)):{stdout:``,stderr:`id: '${n.operand}': no such user\n`,exitCode:1}})}function GE(){return S(`whoami`,async(e,t)=>KE(`${(await IE(t)).name}\n`))}function KE(e){return{stdout:e,stderr:``,exitCode:0}}function qE(){return{stdout:`imgcat - preview image and video files in the preview tab
1374
+ `,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) ${Ke().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
1375
 
1368
1376
  Usage: imgcat <path> [path...]
1369
1377
 
1370
1378
  Options:
1371
1379
  -h, --help Show this help message
1372
- `,stderr:``,exitCode:0}}function JE(e={}){return S(`imgcat`,async(t,n)=>{if(t.length===0||w(t))return qE();let r=C(t);if(`error`in r)return{stdout:``,stderr:`imgcat: ${r.error}\n`,exitCode:1};if(r.positionals.length===0)return qE();if(typeof window>`u`||typeof document>`u`)return{stdout:``,stderr:`imgcat: browser APIs are unavailable in this environment
1380
+ `,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
1381
  `,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 YE=new Set([`run`,`run-script`]),XE=new Set([`test`,`start`,`stop`,`restart`]),ZE=new Set([` `,` `,`
1375
- `,`;`,`|`,`&`,`(`,`)`,`{`,`}`,`<`,`>`]),QE=new Set([`;`,`|`,`&`,`(`,`)`,`{`,`
1376
- `]),$E=/^[A-Za-z_][A-Za-z0-9_]*=/,eD=/^[@A-Za-z0-9._-]+$/,tD=new Set([`if`,`then`,`else`,`elif`,`fi`,`for`,`while`,`until`,`do`,`done`,`case`,`in`,`esac`,`function`,`time`,`!`]),nD=new Set([`if`,`then`,`else`,`elif`,`while`,`until`,`do`,`time`,`!`]),rD=new Set([`ipx`,`npx`]);function iD(e){return`'${e.replace(/'/g,`'\\''`)}'`}async function aD(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}function*oD(e){let t=b(e);for(;yield t,t!==`/`;)t=Te(t).dir}function sD(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 cD(e){return typeof e==`string`?e:void 0}async function lD(e,t){for(let n of oD(t)){let t=x(n,`package.json`);if(!await e.exists(t))continue;let r;try{r=JSON.parse(await aD(e,t))}catch(e){throw Error(`${t} is not valid JSON: ${e instanceof Error?e.message:String(e)}`)}return{dir:n,name:cD(r.name),version:cD(r.version),scripts:sD(r.scripts)}}return null}function uD(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(ZE.has(t))break;n++}return{start:t,end:n,text:e.slice(t,n)}}function dD(e){let t=[],n=0,r=!0;for(;n<e.length;){let i=e[n];if(i===` `||i===` `){n++;continue}if(QE.has(i)){r=!0,n++;continue}let a=uD(e,n);if(a.end===a.start){n++;continue}if(r&&!$E.test(a.text)){if(nD.has(a.text)){n=a.end;continue}t.push(a),r=!1}n=a.end}return t}function fD(e,t){return!eD.test(e)||tD.has(e)||rD.has(e)?!1:!t.isRegistered(e)}async function pD(e,t){let n=dD(e).filter(e=>fD(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 mD(e){let t=[];for(let n of oD(e))t.push(x(n,`node_modules`,`.bin`));return t}function hD(e,t,n,r){let i=r.env.get(`PATH`)??``,a={PATH:[...mD(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 gD(e){return e.name===void 0?e.dir:e.version===void 0?e.name:`${e.name}@${e.version}`}function _D(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 ${gD(t)} via \`${e} run\`:`];for(let[e,t]of n)r.push(` ${e}`),r.push(` ${t}`);return`${r.join(`
1377
- `)}\n`}function vD(e,t){return t===`--silent`||t===`-s`?(e.silent=!0,!0):t===`--if-present`&&(e.ifPresent=!0,!0)}function yD(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}vD(t,a)||(r===void 0?r=a:n.push(a))}return{flags:t,script:r,extraArgs:n}}function bD(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}function xD(e,t,n,r){let i=r.length>0?` ${r.map(iD).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 SD(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 CD(e,t,n){let r=new Set(n.getRegisteredCommands?.()??[]);return{isRegistered:e=>r.has(e),hasLocalBin:async n=>{for(let r of mD(t.dir))if(await e.exists(x(r,n)))return!0;return!1}}}async function wD(e,t,n,r,i,a){let o=i.exec;if(!o)return bD(e,`run requires shell exec support, which this context does not provide`);let s=CD(a.fs,t,i),c=gD(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 pD(a.body,s),{cwd:t.dir,env:hD(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 TD(e,t,n,r){let i;try{i=await lD(r.fs,n.cwd)}catch(t){return bD(e,t instanceof Error?t.message:String(t))}if(!i)return bD(e,`no package.json found in ${n.cwd} or any parent directory — nothing to run`);let{flags:a,script:o,extraArgs:s}=yD(t);if(o===void 0)return{stdout:_D(e,i),stderr:``,exitCode:0};let c=i.scripts[o]??await SD(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 bD(e,`missing script: ${o}${t.length>0?` (available: ${t.join(`, `)})`:` (${x(i.dir,`package.json`)} defines no scripts)`}`)}return wD(e,i,xD(i,o,c,s),a,n,r)}const ED=new Set([`install`,`i`,`add`]),DD=new Set([`uninstall`,`remove`,`rm`,`un`]),OD=new Set([`list`,`ls`]),kD=new Set([`-g`,`--global`,`--location=global`]),AD=[`-g`,`--global`,`-D`,`--save-dev`];function jD(e){return`${e} - install packages from the npm registry into node_modules
1382
+ `,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 nD=new Set([`run`,`run-script`]),rD=new Set([`test`,`start`,`stop`,`restart`]),iD=new Set([` `,` `,`
1383
+ `,`;`,`|`,`&`,`(`,`)`,`{`,`}`,`<`,`>`]),aD=new Set([`;`,`|`,`&`,`(`,`)`,`{`,`
1384
+ `]),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=Te(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(`
1385
+ `)}\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: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 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
1386
  and run package.json scripts
1379
1387
 
1380
1388
  Usage:
@@ -1441,15 +1449,15 @@ manifest without rewriting it. With -g, packages go to /shared/lib/node_modules
1441
1449
  and deps are recorded in /shared/lib/package.json. Existing fields are
1442
1450
  preserved. Idempotent: re-installing an already-satisfied package is a clean
1443
1451
  no-op.
1444
- `}function MD(e){let t=C(e,{bool:AD,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 ND(e){let t=!1,n=[];for(let r of e){if(kD.has(r)){t=!0;continue}r.startsWith(`-`)||n.push(r)}return{global:t,specs:n}}function PD(e){let t=e.indexOf(`--`),n=t===-1?e:e.slice(0,t);return n.includes(`--help`)||n.includes(`-h`)}function FD(e){return e instanceof Error?e.message:String(e)}async function ID(e){e.scriptCatalog?.invalidateJsh(),await e.syncScriptCommands?.()}async function LD(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: ${FD(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}: ${FD(t.error)}`);return{stdout:i.length>0?`${i.join(`
1452
+ `}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 Ki({fs:n.fs,fetch:n.fetch,cwd:t.cwd})}catch(t){return t instanceof Xi?{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
1453
  `)}\n`:``,stderr:a.length>0?`${a.join(`
1446
- `)}\n`:``,exitCode:r.errors.length===0?0:1}}async function RD(e,t,n,r){let i=MD(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 LD(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: ${FD(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}: ${FD(t.error)}`);return a&&c.results.length>0&&await ID(r),{stdout:l.length>0?`${l.join(`
1454
+ `)}\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 Ji(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
1455
  `)}\n`:``,stderr:u.length>0?`${u.join(`
1448
- `)}\n`:``,exitCode:c.errors.length===0?0:1}}function zD(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 BD(e,t,n,r){let{global:i,specs:a}=ND(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: ${FD(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}: ${FD(t.error)}`);c.length>0&&l.push(`${e}: ${c.join(`, `)} not installed${i?` globally`:``}`);let u=o.errors.length>0;return i&&await ID(r),{stdout:s.length>0?`${s.join(`
1456
+ `)}\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(`
1457
+ `)}\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 qi(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
1458
  `)}\n`:``,stderr:l.length>0?`${l.join(`
1451
- `)}\n`:``,exitCode:+!!u}}async function VD(e,t,n,r){let{global:i}=ND(t);try{let e=i?await Wi(r.fs):await Bi(r.fs,n.cwd);return{stdout:zD(i?tr:n.cwd,e),stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: list failed: ${FD(t)}\n`,exitCode:1}}}async function HD(e,t,n,r){let{global:i}=ND(t);return{stdout:`${i?Kn:`${n.cwd.replace(/\/$/,``)}/node_modules`}\n`,stderr:``,exitCode:0}}function UD(e,t){let n=e===`i`;return S(e,async(r,i)=>{if(PD(r))return{stdout:jD(e),stderr:``,exitCode:0};if(n)return RD(e,r,i,t);if(r.length===0)return{stdout:jD(e),stderr:`${e}: missing subcommand\n`,exitCode:1};let a=r[0],o=r.slice(1);return ED.has(a)?RD(e,o,i,t):DD.has(a)?BD(e,o,i,t):OD.has(a)?VD(e,o,i,t):a===`root`?HD(e,o,i,t):YE.has(a)?TD(e,o,i,{fs:t.fs}):XE.has(a)?TD(e,r,i,{fs:t.fs}):{stdout:``,stderr:`${e}: unknown subcommand '${a}' (supported: install, uninstall, list, root, run)\n`,exitCode:1}})}const WD=`0.5.461`,GD=`v86 is not installed in node_modules: run \`${N} v86@${WD}\` (no network fallback)`;let KD=null;async function qD(e={}){return KD||=ZD(e.ipk).catch(e=>{throw KD=null,e}),KD}const JD=[{js:`build/libv86.mjs`,wasm:`build/v86.wasm`}];async function YD(e,t){for(let{js:n,wasm:r}of JD){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 XD(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 YD(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 ZD(e){if(or())throw Error(`v86 is not available in Node runtime`);if(!e)throw Error(GD);let t=await XD(e);if(!t)throw Error(GD);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 QD(e){return async t=>(await WebAssembly.instantiate(e,t)).exports}const $D={command:`biome`,example:`biome check foo.js`,bootstrap:`${N} ${__}`},eO={command:`playwright-cli`,example:`playwright-cli open https://example.com`},tO={command:`puppeteer`,example:`puppeteer open https://example.com`},nO={command:`convert`,example:`convert input.png output.jpg`,bootstrap:`${N} @imagemagick/magick-wasm@${Ni}`},rO={...nO,command:`magick`,example:`magick input.png output.jpg`},iO={command:`pdftoppm`,example:`pdftoppm -png -r 150 doc.pdf page`},aO={"@biomejs/biome":$D,biome:$D,esbuild:{command:`esbuild`,example:`esbuild --bundle src/index.js --outfile=dist/bundle.js`,bootstrap:`${N} esbuild-wasm@${Jr}`},playwright:eO,"@playwright/test":eO,"playwright-core":eO,puppeteer:tO,"puppeteer-core":tO,typescript:{command:`tsc`,example:`tsc --noEmit`,bootstrap:sr},"pdf-poppler":iO,"pdf-to-img":iO,pdf2pic:iO,"pdf-img-convert":iO,poppler:iO,"poppler-utils":iO,imagemagick:nO,"imagemagick-cli":nO,"imagemagick-convert":nO,"magick-cli":rO,"@imagemagick/magick-wasm":rO,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@${WD}`}};function oO(e){return Object.hasOwn(aO,e)?aO[e]:void 0}function sO(e){return/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function cO(e,t,n,r){let i=n.length?[r.command,...n].map(sO).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(sO).join(` `)}`),`${a.join(`
1452
- `)}\n`}const lO=/require\(\s*["']([^"']+)["']\s*\)/;function uO(e){return`${e} - run an installed package's executable bin
1459
+ `)}\n`:``,exitCode:+!!u}}async function JD(e,t,n,r){let{global:i}=BD(t);try{let e=i?await Wi(r.fs):await Hi(r.fs,n.cwd);return{stdout:KD(i?tr: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?Kn:`${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 qn(`v86/package.json`,e.fromDir,e.reader)}catch{return null}if(t.type!==`file`)return null;let n=await nO(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 iO(e){if(or())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 Yr(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@${Ni}`},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@${Jr}`},playwright:sO,"@playwright/test":sO,"playwright-core":sO,puppeteer:cO,"puppeteer-core":cO,typescript:{command:`tsc`,example:`tsc --noEmit`,bootstrap:sr},"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@${Qi}`},"@ffmpeg/ffmpeg":{command:`ffmpeg`,example:`ffmpeg -i input.mp4 output.webm`,bootstrap:`${N} @ffmpeg/core@${Qi}`},ffprobe:{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${N} @ffmpeg/core@${Qi}`},"@ffprobe-installer/ffprobe":{command:`ffprobe`,example:`ffprobe -v error -show_format -of json input.mp4`,bootstrap:`${N} @ffmpeg/core@${Qi}`},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(`
1460
+ `)}\n`}const gO=/require\(\s*["']([^"']+)["']\s*\)/;function _O(e){return`${e} - run an installed package's executable bin
1453
1461
 
1454
1462
  Usage:
1455
1463
  ${e} [--force] [--global] <pkg-or-bin> [args...]
@@ -1462,12 +1470,12 @@ Options:
1462
1470
  --force Install a package even when a SLICC built-in shadows it
1463
1471
  --global Resolve only from the shared global prefix (/shared/lib/node_modules)
1464
1472
  -h, --help Show this help message
1465
- `}async function dO(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function fO(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function pO(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*mO(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 hO(e,t,n,r=!1){for(let i of mO(t,r)){let t=x(i,`.bin`,n);if(!await fO(e,t))continue;let r=await dO(e,t),a=lO.exec(r),o=Te(t).dir;return{binFilePath:a?x(o,a[1]):t,argvName:t}}return null}function gO(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function _O(e,t){if(typeof e==`string`)return{binName:gO(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,gO(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 vO(e,t,n,r=!1){for(let i of mO(t,r)){let t=x(i,n),r=x(t,`package.json`);if(!await fO(e,r))continue;let a;try{a=JSON.parse(await dO(e,r))}catch{return null}let o=_O(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 yO(e,t,n,r=!1){return await hO(e,t,n,r)??await vO(e,t,n,r)}async function bO(e,t,n){for(let r of mO(t))if(await fO(e,x(r,n,`package.json`)))return!0;return!1}function xO(e){return e instanceof Error?e.message:String(e)}function SO(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function CO(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:SO(e,`failed to install '${t}': ${xO(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:SO(e,`failed to install '${t}': ${xO(n)}`)}}}async function wO(e,t,n,r){return await fO(r,n)?null:await pO(r,n)?SO(e,`bin target '${n}' is a directory, not a file`):SO(e,`bin file '${n}' for '${t}' does not exist`)}async function TO(e,t,n,r,i,a){if(await bO(a.fs,i.cwd,t))return{error:SO(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:oO(t);if(o)return{error:{stdout:``,stderr:cO(e,t,n,o),exitCode:1}};let s=await CO(e,t,i,a);if(`error`in s)return s;let c=await yO(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:SO(e,`package '${t}' was installed but does not expose an executable bin`)}}function EO(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:uO(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:uO(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await yO(t.fs,r.cwd,c,o)}catch(t){return SO(e,xO(t))}let d=``;if(!u){if(o)return SO(e,`no global bin '${c}' found in ${Kn}`);let n=await TO(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await wO(e,c,u.binFilePath,t.fs);if(f)return f;let p=Wr(await dO(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 DO(e={}){return S(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-DgblerTV.js`);return r(t,n,e)})}const OO=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function kO(e={}){return S(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return FO();let n=e.processManager??AO();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1467
- `,exitCode:1};let r=jO(t);if(!r.ok)return{stdout:``,stderr:r.stderr,exitCode:r.exitCode};let{allDelivered:i,errors:a}=MO(n,r.pids,r.signal);return{stdout:``,stderr:a.length?`${a.join(`
1468
- `)}\n`:``,exitCode:+!i}})}function AO(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function jO(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=NO(n);if(i instanceof Error)return{ok:!1,stderr:`kill: ${i.message}\n`,exitCode:2};t=i;continue}if(i.startsWith(`-`)){let e=PO(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}:OO.has(t)?{ok:!0,signal:t,pids:n}:{ok:!1,stderr:`kill: signal ${t} not supported\n`,exitCode:2}}function MO(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 NO(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 PO(e){return e===`-9`?`SIGKILL`:NO(e.slice(1))}function FO(){return{stdout:`Usage: kill [-s SIGNAL | -INT | -TERM | -KILL | -STOP | -CONT | -9] PID [PID …]
1473
+ `}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 Kn;return}let n=b(e);for(;yield x(n,`node_modules`),n!==`/`;)n=Te(n).dir;yield Kn}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=Te(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 Ji([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(`
1474
+ `)}\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 ${Kn}`);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=Wr(await vO(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 PO(e={}){return S(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-ywyYbXgZ.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
1475
+ `,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(`
1476
+ `)}\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
1477
+ `,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
1478
+ `,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
1479
 
1472
1480
  Send a signal to one or more processes tracked by the kernel.
1473
1481
 
@@ -1489,7 +1497,7 @@ Examples:
1489
1497
  kill -INT 1024 1025 SIGINT both
1490
1498
  kill -STOP 1024 pause; \`kill -CONT 1024\` resumes
1491
1499
  kill -s SIGKILL 1024 explicit signal name
1492
- `,stderr:``,exitCode:0}}const IO=[`top`,`left`,`middle`,`right`,`bottom`],LO=`usage: layout <verb> [args]
1500
+ `,stderr:``,exitCode:0}}const UO=[`top`,`left`,`middle`,`right`,`bottom`],WO=`usage: layout <verb> [args]
1493
1501
 
1494
1502
  list List the built-in presets
1495
1503
  set <preset> Switch to a built-in preset
@@ -1505,13 +1513,13 @@ Examples:
1505
1513
  load <name> Restore a saved arrangement
1506
1514
  delete <name> Delete a saved arrangement
1507
1515
  reset Restore the default arrangement
1508
- edit Alias for \`layout set ${ls}\` (there is no edit mode)
1516
+ edit Alias for \`layout set ${cs}\` (there is no edit mode)
1509
1517
  docs Describe the layout surfaces
1510
1518
  panels List the registered panel ids
1511
1519
 
1512
- Zones: ${IO.join(`, `)}
1513
- `,RO=new Set([`files`,`term`,`memory`,`monitor`]),zO=`sprinkle:`;function BO(e){return e===`chat`||RO.has(e)||e.startsWith(zO)?e:`${zO}${e}`}function VO(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 HO=`usage: layout size <surfaceId> [--width <px|percent>] [--height <px|percent>]`;function UO(e){let t=e[0],n=t?ps(t):null;return n?{kind:`set`,tree:n.tree}:{error:`unknown layout: ${t??`(none)`}`}}function WO(e){let t=e[0];return IO.includes(t)?{kind:`chat`,zone:t}:{error:`usage: layout chat <${IO.join(`|`)}>`}}function GO(e){let[t,n]=e;return!t||!IO.includes(n)?{error:`usage: layout open <surfaceId> <${IO.join(`|`)}>`}:{kind:`open`,surfaceId:BO(t),zone:n}}function KO(e){let t=e[0];return t?{kind:`close`,surfaceId:BO(t)}:{error:`usage: layout close <surfaceId>`}}function qO(e){let[t,n]=e;return!t||!IO.includes(n)?{error:`usage: layout move <surfaceId> <${IO.join(`|`)}>`}:{kind:`move`,surfaceId:BO(t),zone:n}}function JO(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=VO(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 YO(e){let t=e[0];if(!t)return{error:HO};let n={};for(let t=1;t<e.length;t+=2){let r=JO(n,e[t],e[t+1]);if(r)return r}return n.widthPx==null&&n.widthPercent==null&&n.heightPx==null&&n.heightPercent==null?{error:HO}:{kind:`size`,surfaceId:BO(t),size:n}}function XO(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 ZO(e,t){let n=t[0];return n?e===`load`?{kind:`load`,name:n}:{kind:`delete`,name:n}:{error:`usage: layout ${e} <name>`}}function QO(e,t){let n=t[0];return n?e===`show`?{kind:`show`,panelId:BO(n)}:{kind:`hide`,panelId:BO(n)}:{error:`usage: layout ${e} <panelId>`}}function $O(){let e=ps(ls);return e?{kind:`set`,tree:e.tree}:{error:`default layout unavailable`}}function ek(e){let[t,...n]=e;switch(t){case`set`:return UO(n);case`chat`:return WO(n);case`open`:return GO(n);case`close`:return KO(n);case`move`:return qO(n);case`size`:return YO(n);case`reset`:return{kind:`reset`};case`edit`:return $O();case`load`:return ZO(`load`,n);case`save`:return XO(n);case`delete`:return ZO(`delete`,n);case`docs`:return{kind:`docs`};case`panels`:return{kind:`panels`};case`show`:return QO(`show`,n);case`hide`:return QO(`hide`,n);default:return{error:`usage: layout <set|edit|chat|open|close|move|size|show|hide|load|save|delete|docs|panels|list|reset>`}}}function tk(){return S(`layout`,async e=>{if(w(e))return{stdout:e[0]?.startsWith(`-`)?LO:$e(`layout`,e[0],LO),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=ek(e);if(`error`in t)return{stdout:``,stderr:`layout: ${t.error}\n`,exitCode:1};let n=y();if(!n)return{stdout:``,stderr:`layout: UI is unavailable in this environment
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 nk=ea.id;function rk(){return`local-llm — inspect and configure the Local LLM provider
1520
+ Zones: ${UO.join(`, `)}
1521
+ `,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?fs(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=fs(cs);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:$e(`layout`,e[0],WO),stderr:``,exitCode:0};if(e[0]===`list`||e.length===0)return{stdout:`layouts: ${Object.keys(ds).join(`, `)}\ndefault: ${cs}\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
1522
+ `,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=$i.id;function uk(){return`local-llm — inspect and configure the Local LLM provider
1515
1523
 
1516
1524
  Usage:
1517
1525
  local-llm Show current config + verify connection
@@ -1530,20 +1538,20 @@ Common base URLs:
1530
1538
  llama.cpp http://localhost:8080/v1
1531
1539
  vLLM http://localhost:8000/v1
1532
1540
  Jan http://localhost:1337/v1
1533
- `}function ik(e,t){return e.version?t?`${e.kind} (${e.version})`:`${e.kind} ${e.version}`:e.kind}function ak(e){return e.map(e=>` • ${e}`)}function ok(e,t){let n=[`✗ Could not reach ${e}`,` runtime: ${ik(t.runtime,!0)}`,` error: ${t.error?.message??`unknown`}`];return t.error?.hint&&n.push(` hint: ${t.error.hint}`),{stdout:``,stderr:n.join(`
1541
+ `}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
1542
  `)+`
1535
- `,exitCode:1}}function sk(e,t){return{stdout:[`✓ ${e}`,` runtime: ${ik(t.runtime,!0)}`,` models: ${t.models.length}`,...ak(t.models)].join(`
1543
+ `,exitCode:1}}function mk(e,t){return{stdout:[`✓ ${e}`,` runtime: ${dk(t.runtime,!0)}`,` models: ${t.models.length}`,...fk(t.models)].join(`
1536
1544
  `)+`
1537
- `,stderr:``,exitCode:0}}function ck(e,t){let n=t.models.length;return{stdout:[`✓ ${e} (${ik(t.runtime,!1)})`,` Saved ${n} model${n===1?``:`s`} to Settings:`,...ak(t.models)].join(`
1545
+ `,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
1546
  `)+`
1539
- `,stderr:``,exitCode:0}}function lk(){return S(nk,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:rk(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-UA_3Tz4g.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-3Pq3W9JZ.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(nk);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(nk)??void 0);if(!c.ok)return ok(s,c);if(o===`discover`){let e=n(nk)??``;return i(nk,e,s,c.models.join(`, `)),ck(s,c)}return sk(s,c)})}function uk(){return{stdout:`usage: man <topic>
1547
+ `,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-D48vh7jd.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-DXIS7Y11.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.
1548
+ `,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
1549
 
1542
1550
  Fetches documentation for a given topic from sliccy.com.
1543
- `,stderr:``,exitCode:0}}function dk(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 fk(){let e=h();return S(`man`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return uk();if(t.length===0)return{stdout:``,stderr:`What manual page do you want?
1551
+ `,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=h();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
1552
  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:dk(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 pk=[`--silent`,`-s`,`--interactive`,`-i`],mk=e(`mcp-command`),hk=`/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 gk(e){return G(`mcp: ${e}`)}function _k(){return`usage: mcp <command> [args]
1553
+ `,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))+`
1554
+ `,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 U(e){return{stdout:e,stderr:``,exitCode:0}}function W(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function Ck(e){return W(`mcp: ${e}`)}function wk(){return`usage: mcp <command> [args]
1547
1555
 
1548
1556
  Commands:
1549
1557
  add <url> <name> Register an MCP server. Runs OAuth if required.
@@ -1565,7 +1573,7 @@ Examples:
1565
1573
  mcp search forecast
1566
1574
  mcp auth weather
1567
1575
  mcp delete weather
1568
- `}function vk(e={}){return S(`mcp`,async t=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return W(_k());let n=t[0],r=t.slice(1);try{switch(n){case`add`:return await yk(r,e);case`list`:case`ls`:return await xk(r,e);case`delete`:case`rm`:return await Tk(r,e);case`invoke`:return await Ek(r,e);case`search`:return await Ck(r,e);case`refresh`:return await Kk(r,e);case`auth`:return await qk(r,e);default:return G(`mcp: unknown subcommand "${n}" (try \`mcp --help\`)`)}}catch(e){let t=e instanceof Error?e.message:String(e);return mk.error(`mcp subcommand failed`,{sub:n,error:t}),e instanceof ta?G(`mcp ${n}: ${t}`,124):G(`mcp ${n}: ${t}`)}})}async function yk(e,t){if(w(e))return W(`usage: mcp add <url> <name>
1576
+ `}function Tk(e={}){return S(`mcp`,async t=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return U(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 W(`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 ea?W(`mcp ${n}: ${t}`,124):W(`mcp ${n}: ${t}`)}})}async function Ek(e,t){if(w(e))return U(`usage: mcp add <url> <name>
1569
1577
 
1570
1578
  Probes <url> with an unauthenticated MCP \`initialize\`. If the server
1571
1579
  returns 401, runs OAuth discovery → dynamic client registration → PKCE
@@ -1574,20 +1582,20 @@ authorization-code flow, stores the access token, and retries.
1574
1582
  On success, the server is persisted to /workspace/.mcp/servers.json and
1575
1583
  an alias shim is written to /workspace/.mcp/aliases/<name>.jsh so the
1576
1584
  short name resolves on the PATH.
1577
- `);let n=C(e,{});if(`error`in n)return gk(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-B3uS3nQU.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-Sb_wIqH2.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 bk(r,i,e.resourceMetadataUrl,t),l=new s({url:r,fetchImpl:t.fetchImpl,getAuthHeader:()=>Yk(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 eA(i,t);let m=await rA(i,f,t);if(u){let{registerMcpProvider:e}=await import(`./provider-DuCd6_sr.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: ${hk}/${i}.jsh`,u?` auth: oauth (provider mcp:${i})`:` auth: none`].join(`
1585
+ `);let n=C(e,{});if(`error`in n)return Ck(n.error);if(n.positionals.length<2)return W(`mcp add: expected <url> <name>`);let[r,i]=n.positionals;if(!/^https?:\/\//i.test(r))return W(`mcp add: invalid URL "${r}" (must start with http:// or https://)`);if(!/^[A-Za-z][A-Za-z0-9_-]*$/.test(i))return W(`mcp add: invalid name "${i}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:a,setServer:o}=await import(`./store-BuIUG1zU.js`).then(e=>e.r);if(await a(i,t.fs))return W(`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 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-www4_y-t.js`);e({name:i,serverUrl:r,auth:u})}return U([`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
1586
  `)+`
1579
- `)}async function bk(e,t,n,r){let{discoverAuth:i,dynamicRegister:a,runAuthFlow:o}=await import(`./oauth-D20BEoY6.js`),{saveOAuthAccount:s}=await import(`./account-store-UA_3Tz4g.js`).then(e=>e.t),c=await Zk(r.oauthFetchImpl),l=r.oauthLauncher??await Xk(),u=await i(e,n,c);mk.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 xk(e,t){if(w(e))return W(`usage: mcp list
1580
- `);let n=C(e,{});if(`error`in n)return gk(n.error);let{ensureAllMcpProvidersRegistered:r}=await import(`./provider-DuCd6_sr.js`);await r();let{listServers:i}=await import(`./store-B3uS3nQU.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(Sk(s))}function Sk(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(`
1587
+ `)}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-D48vh7jd.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 ta(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 Ok(e,t){if(w(e))return U(`usage: mcp list
1588
+ `);let n=C(e,{});if(`error`in n)return Ck(n.error);let{ensureAllMcpProvidersRegistered:r}=await import(`./provider-www4_y-t.js`);await r();let{listServers:i}=await import(`./store-BuIUG1zU.js`).then(e=>e.r),a=await i(t.fs),o=Object.keys(a).sort();if(o.length===0)return U("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 U(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
1589
  `)+`
1582
- `}async function Ck(e,t){if(w(e))return W(`usage: mcp search <query>
1590
+ `}async function Ak(e,t){if(w(e))return U(`usage: mcp search <query>
1583
1591
 
1584
1592
  Case-insensitive substring search across the cached tools of every
1585
1593
  registered MCP server. Matches tool name OR description and prints a
1586
1594
  table of (server, tool, description, match-field) rows.
1587
- `);let n=C(e,{});if(`error`in n)return gk(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-DuCd6_sr.js`);await a();let{listServers:o}=await import(`./store-B3uS3nQU.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,wk(e.description),e.match]);return W(Sk(u))}function wk(e){if(!e)return``;let t=e.replace(/\s+/g,` `).trim();return t.length<=60?t:t.slice(0,59)+`…`}async function Tk(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 gk(n.error);let r=n.positionals[0];if(!r)return G(`mcp delete: expected <name>`);let{ensureMcpProviderRegistered:i,removeMcpProvider:a}=await import(`./provider-DuCd6_sr.js`);await i(r);let{deleteServer:o}=await import(`./store-B3uS3nQU.js`).then(e=>e.r),s=await o(r,t.fs);await tA(r,t),await nA(r,t);let c=`mcp:${r}`,l=!1;try{let{removeAccount:e,getAccounts:t}=await import(`./account-store-UA_3Tz4g.js`).then(e=>e.t);t().some(e=>e.providerId===c)&&(await e(c),l=!0)}catch(e){mk.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(`
1595
+ `);let n=C(e,{});if(`error`in n)return Ck(n.error);if(n.positionals.length===0)return W(`mcp search: expected <query>`);let r=n.positionals[0],i=r.toLowerCase(),{ensureAllMcpProvidersRegistered:a}=await import(`./provider-www4_y-t.js`);await a();let{listServers:o}=await import(`./store-BuIUG1zU.js`).then(e=>e.r),s=await o(t.fs),c=Object.keys(s).sort();if(c.length===0)return U("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 U(`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 U(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?W(`mcp delete: expected <name>`):U(`usage: mcp delete <name>
1596
+ `);let n=C(e,{});if(`error`in n)return Ck(n.error);let r=n.positionals[0];if(!r)return W(`mcp delete: expected <name>`);let{ensureMcpProviderRegistered:i,removeMcpProvider:a}=await import(`./provider-www4_y-t.js`);await i(r);let{deleteServer:o}=await import(`./store-BuIUG1zU.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-D48vh7jd.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?W(`mcp delete: no server, alias, or account found for "${r}"`):U([`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
1597
  `)+`
1590
- `)}async function Ek(e,t){if(e.length===0)return G(`mcp invoke: expected <name>`);if(w(e.slice(0,1)))return W(kk());let n=C([e[0]],{});if(`error`in n)return gk(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-DuCd6_sr.js`);await a(r);let{getServer:o}=await import(`./store-B3uS3nQU.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(Ak(r,s,c));let l=C([i[0]],{});if(`error`in l)return gk(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}=Dk(i.slice(1));if(w(p))return W(Mk(r,d));let h=Nk(p,d.inputSchema);if(!h.ok)return G(`mcp invoke: ${h.error}`);let{McpClient:g}=await import(`./client-Sb_wIqH2.js`).then(e=>e.n),_=new g({url:s.url,fetchImpl:t.fetchImpl,headers:s.headers,getAuthHeader:s.auth?()=>Yk(r):void 0,...f===void 0?{}:{timeoutMs:f}});await _.initialize();let v=Gk(await _.toolsCall(u,h.value));return m.length>0&&(v.stderr=m.map(e=>`${e}\n`).join(``)+v.stderr),v}function Dk(e){let t=[],n=[],r,i=0;for(;i<e.length;){let a=e[i];if(a.startsWith(`--timeout=`)){let e=Ok(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=Ok(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 Ok(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 kk(){return`usage: mcp invoke <name> [tool] [--timeout <seconds>] [--flag value …]
1598
+ `)}async function Nk(e,t){if(e.length===0)return W(`mcp invoke: expected <name>`);if(w(e.slice(0,1)))return U(Ik());let n=C([e[0]],{});if(`error`in n)return Ck(n.error);let r=n.positionals[0];if(!r)return W(`mcp invoke: expected <name>`);let i=e.slice(1),{ensureMcpProviderRegistered:a}=await import(`./provider-www4_y-t.js`);await a(r);let{getServer:o}=await import(`./store-BuIUG1zU.js`).then(e=>e.r),s=await o(r,t.fs);if(!s)return W(`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 U(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 W(`mcp invoke: expected <tool>`);let d=c.find(e=>e.name===u);if(!d)return W(`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 U(zk(r,d));let h=Bk(p,d.inputSchema);if(!h.ok)return W(`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?()=>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
1599
 
1592
1600
  mcp invoke <name> List tools on <name>.
1593
1601
  mcp invoke <name> <tool> --help Show flags for <tool>.
@@ -1607,20 +1615,20 @@ Arguments are coerced according to the tool's JSON Schema:
1607
1615
  array of objects) is parsed as JSON, e.g. \`--params '{"url":"…"}'\`.
1608
1616
  Nested fields can be set with dotted flags (\`--params.url …\`).
1609
1617
  Unknown \`--flags\` exit non-zero instead of being dropped.
1610
- `}function Ak(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(`
1618
+ `}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
1619
  `)+`
1612
- `}function jk(e){return e??{}}function Mk(e,t){let n=jk(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(`
1620
+ `}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
1621
  `)+`
1614
1622
  `;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
1623
  `)+`
1616
- `}function Nk(e,t){let n=jk(t),r=n.properties??{},i=new Set(Array.isArray(n.required)?n.required:[]),a=zk(),o=0;for(;o<e.length;){let t=Pk(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 Pk(e,t,n,r){let i=e[t];if(!i.startsWith(`--`))return{ok:!1,error:`unexpected positional argument "${i}"`};let{key:a,inlineValue:o}=Hk(i),s=Fk(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=Ik(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,_=Uk(h.raw,g);if(!_.ok)return{ok:!1,error:`--${a}: ${_.error}`};let v=Lk(r,c,l,_.value,p);return v.ok?{ok:!0,nextIndex:h.nextIndex}:v}function Fk(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 Bk(r)||a.some(e=>e.length===0||Bk(e))?{ok:!1,error:`unknown flag: --${e}`}:{ok:!0,rootKey:r,dottedPath:a,meta:t[r]??{}}}function Ik(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 Lk(e,t,n,r,i){if(n)return Rk(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 Vk(a)&&Vk(r)?(Object.assign(a,r),{ok:!0}):(e[t]=r,{ok:!0})}function Rk(e,t,n,r){if(Bk(t)||n.some(e=>e.length===0||Bk(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]=zk();else if(!Vk(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]=zk();else if(!Vk(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 zk(){return Object.create(null)}function Bk(e){return e===`__proto__`||e===`prototype`||e===`constructor`}function Vk(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&e!==Object.prototype}function Hk(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 Uk(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 Wk(e);default:return{ok:!0,value:e}}}function Wk(e){let t;try{t=JSON.parse(e)}catch{return{ok:!1,error:`expected object JSON, got "${e}"`}}return Vk(t)?{ok:!0,value:t}:{ok:!1,error:`expected object JSON, got "${e}"`}}function Gk(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(`
1624
+ `}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
1625
  `),a=i.endsWith(`
1618
1626
  `)?``:`
1619
- `;return t.isError?{stdout:``,stderr:(i||`(tool reported error)`)+a,exitCode:1}:{stdout:i+(i?a:``),stderr:``,exitCode:0}}async function Kk(e,t){if(e.length===0||w(e))return e.length===0?G(`mcp refresh: expected <name>`):W(`usage: mcp refresh <name>
1627
+ `;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?W(`mcp refresh: expected <name>`):U(`usage: mcp refresh <name>
1620
1628
 
1621
1629
  Re-fetches the tool catalog and \`apps/list\` for <name>. Does NOT refresh
1622
1630
  OAuth tokens — for OAuth token refresh use \`mcp auth <name>\`.
1623
- `);let n=C(e,{});if(`error`in n)return gk(n.error);let r=n.positionals[0];if(!r)return G(`mcp refresh: expected <name>`);let{ensureMcpProviderRegistered:i}=await import(`./provider-DuCd6_sr.js`);await i(r);let{getServer:a,setServer:o}=await import(`./store-B3uS3nQU.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-Sb_wIqH2.js`).then(e=>e.n),u=new c({url:s.url,fetchImpl:t.fetchImpl,headers:s.headers,getAuthHeader:s.auth?()=>Yk(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 rA(r,f,t);return W(`Refreshed "${r}" — tools: ${d.length}, apps: ${f.length} (${p} sprinkle${p===1?``:`s`})\n`)}async function qk(e,t){if(w(e))return W(`usage: mcp auth <name> [--silent | --interactive]
1631
+ `);let n=C(e,{});if(`error`in n)return Ck(n.error);let r=n.positionals[0];if(!r)return W(`mcp refresh: expected <name>`);let{ensureMcpProviderRegistered:i}=await import(`./provider-www4_y-t.js`);await i(r);let{getServer:a,setServer:o}=await import(`./store-BuIUG1zU.js`).then(e=>e.r),s=await a(r,t.fs);if(!s)return W(`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?()=>nA(r):void 0});try{await u.initialize()}catch(e){if(e instanceof l)return W(`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 U(`Refreshed "${r}" — tools: ${d.length}, apps: ${f.length} (${p} sprinkle${p===1?``:`s`})\n`)}async function eA(e,t){if(w(e))return U(`usage: mcp auth <name> [--silent | --interactive]
1624
1632
 
1625
1633
  Re-authenticate an existing MCP server. By default, attempts a silent
1626
1634
  token renewal using the persisted refresh_token; if that returns no
@@ -1632,7 +1640,7 @@ Options:
1632
1640
  -i, --interactive Skip silent renewal and open the OAuth popup
1633
1641
  directly. Use after revoking a refresh token or
1634
1642
  when the AS no longer accepts the cached one.
1635
- `);let n=C(e,{bool:pk});if(`error`in n)return gk(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-DuCd6_sr.js`),s=await o(r,{fetchImpl:t.oauthFetchImpl,launcher:t.oauthLauncher}),{getServer:c}=await import(`./store-B3uS3nQU.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-CWFcdblf.js`).then(e=>e.r),f=d(u);if(!f)return G(`mcp auth: provider "${u}" is not registered`);if(a)return await Jk(r,f,t);if(!f.onSilentRenew)return i?G(`mcp auth: provider "${u}" does not support silent renewal; retry without --silent`):await Jk(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`);mk.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 Jk(r,f,t)}async function Jk(e,t,n){if(!t.onOAuthLogin)return G(`mcp auth: provider "${t.id}" does not support interactive OAuth login`);let r=n.oauthLauncher??await Xk(),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 Yk(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await import(`./account-store-UA_3Tz4g.js`).then(e=>e.t),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-CWFcdblf.js`).then(e=>e.r),n=await e(t)?.onSilentRenew?.();if(n)return`Bearer ${n}`}catch(e){mk.debug(`silent renewal threw`,{providerId:t,error:e instanceof Error?e.message:String(e)})}return null}return`Bearer ${r.token}`}async function Xk(){let{createOAuthLauncher:e}=await import(`./oauth-service-CxXBA9rC.js`);return e()}async function Zk(e){if(e)return e;let{createProxiedFetch:t}=await import(`./proxied-fetch-CNe6icTW.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 Qk(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-Bvj_6WV6.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 $k(e){return`// MCP alias for "${e}" — forwards args to \`mcp invoke ${e}\`.
1643
+ `);let n=C(e,{bool:bk});if(`error`in n)return Ck(n.error);let r=n.positionals[0];if(!r)return W(`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 W(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:o}=await import(`./provider-www4_y-t.js`),s=await o(r,{fetchImpl:t.oauthFetchImpl,launcher:t.oauthLauncher}),{getServer:c}=await import(`./store-BuIUG1zU.js`).then(e=>e.r),l=await c(r,t.fs);if(!l)return W(`mcp auth: unknown server "${r}" (run \`mcp list\` to see configured servers)`);if(!l.auth)return W(`mcp auth: server "${r}" does not use OAuth`);if(!s)return W(`mcp auth: failed to register provider for "${r}"`);let u=`mcp:${r}`,{getRegisteredProviderConfig:d}=await import(`./providers-CMHhoML-.js`).then(e=>e.r),f=d(u);if(!f)return W(`mcp auth: provider "${u}" is not registered`);if(a)return await tA(r,f,t);if(!f.onSilentRenew)return i?W(`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 W(`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?U(`Re-authenticated "${r}" via silent renewal (provider ${u})\n`):i?W(`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 W(`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?U(`Re-authenticated "${e}" via interactive login (provider ${t.id})\n`):W(`mcp auth: interactive login for "${e}" did not complete`)}async function nA(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await import(`./account-store-D48vh7jd.js`).then(e=>e.t),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-CMHhoML-.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-Dn_Xz1FZ.js`);return e()}async function iA(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 aA(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-Gd3zHsod.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
1644
  // Auto-generated by \`mcp add ${e}\`; do not edit by hand.
1637
1645
  const { promisify } = require('util');
1638
1646
  const { exec } = require('child_process');
@@ -1661,8 +1669,8 @@ try {
1661
1669
  if (stdout) process.stdout.write(stdout);
1662
1670
  if (stderr) process.stderr.write(stderr);
1663
1671
  process.exit(exitCode);
1664
- `}async function eA(e,t){let n=await Qk(t.fs);await n.mkdir(hk,{recursive:!0}),await n.writeFile(`${hk}/${e}.jsh`,$k(e)),t.scriptCatalog?.invalidateJsh()}async function tA(e,t){let n=await Qk(t.fs),r=`${hk}/${e}.jsh`;try{await n.exists(r)&&await n.rm(r)}catch(e){mk.debug(`alias removal failed`,{path:r,error:e instanceof Error?e.message:String(e)})}t.scriptCatalog?.invalidateJsh()}async function nA(e,t){let{removeAppSprinkles:n}=await import(`./apps-BX-IbYH9.js`);await n(e,t.fs)}async function rA(e,t,n){try{let{materializeAppSprinkles:r}=await import(`./apps-BX-IbYH9.js`);return(await r(e,t,n.fs)).length}catch(t){return mk.warn(`mcp: failed to materialize app sprinkles`,{name:e,error:t instanceof Error?t.message:String(t)}),0}}function iA(e){return{stdout:``,stderr:`meminfo: ${e}\n`,exitCode:1}}function aA(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 oA(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 sA(){let e=globalThis.performance,t=e?.measureUserAgentSpecificMemory;return t?t.bind(e):null}function cA(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 lA(e){let t=[`total: ${aA(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(`${aA(e.bytes).padEnd(10)} ${e.types.join(`,`).padEnd(20)} ${oA(e)}`)}return`${t.join(`
1665
- `)}\n`}function uA(e={}){return S(`meminfo`,async t=>{let n=cA(t);if(`error`in n)return iA(n.error);if(n.help)return{stdout:`meminfo - agent-cluster memory diagnostics
1672
+ `}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-DEhr6ase.js`);await n(e,t.fs)}async function uA(e,t,n){try{let{materializeAppSprinkles:r}=await import(`./apps-DEhr6ase.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(`
1673
+ `)}\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
1674
 
1667
1675
  Usage:
1668
1676
  meminfo Human-readable breakdown (bytes, scope, types, url)
@@ -1673,8 +1681,8 @@ Notes:
1673
1681
  Document-Isolation-Policy). Embedded floats cannot be isolated and
1674
1682
  report why instead.
1675
1683
  - 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??sA();if(!r&&!e.measure)return iA(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return iA(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return iA(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:lA(a),stderr:``,exitCode:0}})}function dA(e){return S(`memory`,async t=>{let{runMemory:n}=await import(`./run-C0CADtt5.js`);return n(t,e)})}function fA(){return S(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const pA=`/.cache/artificial-analysis.json`,mA=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],hA=[`--provider`];function gA(e){return{stdout:``,stderr:e.endsWith(`
1677
- `)?e:`${e}\n`,exitCode:1}}async function _A(e){try{let t=await e.readFile(pA),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}return null}function vA(){try{return localStorage.getItem(`aa_api_key`)}catch{return null}}function yA(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 bA(e,t){let n={fetchedAt:Date.now(),models:t};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(pA,JSON.stringify(n))}catch{}}async function xA(e,t=!1){if(e&&!t){let t=await _A(e);if(t)return t}let n={Accept:`application/json`},r=vA();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=yA(Array.isArray(s)?s:s.data??s.models??[]);return e&&c.length>0&&await bA(e,c),c}function SA(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function CA(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=SA(e),a=t.find(e=>SA(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 wA(){return`models - list available LLM models
1684
+ `,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-BulfRDHQ.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(`
1685
+ `)?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=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=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
1686
 
1679
1687
  Usage: models [options]
1680
1688
 
@@ -1686,14 +1694,14 @@ Options:
1686
1694
  --refresh Force re-fetch benchmark data from Artificial Analysis
1687
1695
  --no-benchmarks Skip benchmark data enrichment (faster, works offline)
1688
1696
  -h, --help Show this help message
1689
- `}function TA(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function EA(e){return`$${e.toFixed(2)}`}const DA=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function OA(e){let t=`${e.id} ${e.name??``}`;return!DA.test(t)}function kA(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 AA(e){let t=e.toLowerCase();return t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``),kA(t)??t.replace(/-[\d.]+$/,``)}function jA(e){let t=new Map;for(let n of e){let e=AA(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function MA(e,t,n,r,i){let a=i?CA(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 NA(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=`${EA(e.cost.input)} / ${EA(e.cost.output)}`,a=`${TA(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(`
1697
+ `}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
1698
  `)+`
1691
- `}function PA(e){let t=C(e,{bool:mA,value:hA});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 FA(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 IA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(OA);if(o.length===0)return[];let s=o.map(e=>MA(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=jA(s)),s}function LA(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 RA(e,t){if(w(e,{valueFlags:hA}))return{stdout:wA(),stderr:``,exitCode:0};let n=PA(e);if(`error`in n)return gA(`models: ${n.error}`);let r=await import(`./account-store-UA_3Tz4g.js`).then(e=>e.t);if(r.getAccounts().length===0)return gA(`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 xA(t,n.forceRefresh);e.length>0&&(l=e)}let u=FA(r,n,s);if(`error`in u)return gA(u.error);let d=[],f=[];for(let e of u){let t=IA(r,e,a,o,l,n.allVersions);if(t.length===0){if(!n.allMode)return gA(`No models available for provider ${e}.\n`);continue}if(d.push(...t),!n.jsonMode){let n=r.getProviderConfig(e);f.push(NA(n.name,e,t,!!l))}}return n.jsonMode?{stdout:JSON.stringify(d,null,2)+`
1699
+ `}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-D48vh7jd.js`).then(e=>e.t);if(r.getAccounts().length===0)return CA(`No provider accounts configured. Run the provider settings to add one.
1700
+ `);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
1701
  `,stderr:``,exitCode:0}:(n.allVersions||f.push(`Showing latest versions only. Use --all-versions to see all.
1694
- `),f.push(LA(o,a,s,c)),{stdout:f.join(`
1695
- `),stderr:``,exitCode:0})}function zA(e){return S(`models`,async t=>RA(t,e))}const BA=new Set([`-`,`/dev/stdin`,`/dev/fd/0`,`/proc/self/fd/0`]);function VA(e){return e===`-e`||e===`--eval`||BA.has(e)||!e.startsWith(`-`)}function HA(e){return{stdout:``,stderr:`node: ${e} is not a valid value for --input-type. Valid values are: 'commonjs' or 'module'.\n`,exitCode:9}}function UA(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:HA(i)}:{inputType:i,nextIndex:a}}function WA(e){let t=!1,n=!1,r=!1,i,a=0;for(;a<e.length;){let o=e[a];if(VA(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=UA(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 GA(){return{stdout:`usage: node [options] [script.js] [args...]
1702
+ `),f.push(WA(o,a,s,c)),{stdout:f.join(`
1703
+ `),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
1704
+ `,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
1705
  node [options] -e <code> [args...]
1698
1706
 
1699
1707
  Options:
@@ -1702,20 +1710,20 @@ Options:
1702
1710
  --input-type=TYPE module or commonjs (stdin / -e / .js)
1703
1711
  -h, --help print this help
1704
1712
  -v, --version print Node shim version
1705
- `,stderr:``,exitCode:0}}function KA(){return{stdout:`${ir}\n`,stderr:``,exitCode:0}}function qA(e,t){if(t){if(e.endsWith(`.mjs`)&&t===`commonjs`)return{stdout:``,stderr:`node: cannot set --input-type=commonjs for a .mjs file
1713
+ `,stderr:``,exitCode:0}}function $A(){return{stdout:`${ir}\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
1714
  `,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 JA(e,t){if(!e.startsWith(`/`))return t;let n=e.lastIndexOf(`/`);return n<=0?`/`:e.slice(0,n)}function YA(e){return e instanceof Error?e.stack??e.message:String(e)}async function XA(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(YA(r)))throw r;return Kr()({source:e,filename:t,fromDir:JA(t,n)})}}async function ZA(e,t,n){let r=e;try{r=await XA(e,t,n)}catch(e){return{stdout:``,stderr:`${YA(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:`${YA(e)}\n`,exitCode:1}}}async function QA(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&&BA.has(e[0]))return{kind:`ok`,code:P(t.stdin),filename:`<stdin>`,argv:[`node`,e[0],...e.slice(1)],innerCtx:{...t,stdin:``}};if(e.length>0&&!e[0].startsWith(`-`)){let n=e[0],r=t.fs.resolvePath(t.cwd,n);return await t.fs.exists(r)?{kind:`ok`,code:await t.fs.readFile(r),filename:r,argv:[`node`,r,...e.slice(1)],innerCtx:t}:{kind:`result`,result:{stdout:``,stderr:`node: cannot find module '${n}'\n`,exitCode:1}}}return P(t.stdin).trim().length>0?{kind:`ok`,code:P(t.stdin),filename:`<stdin>`,argv:[`node`],innerCtx:{...t,stdin:``}}:e.length>0?{kind:`result`,result:{stdout:``,stderr:`node: unsupported option '${e[0]}'\n`,exitCode:9}}:{kind:`result`,result:{stdout:``,stderr:`node: REPL mode is not supported in this environment; use node -e "code"
1709
- `,exitCode:9}}}function $A(e={},t=`node`){return{name:t,trusted:!0,async execute(t,n){let r=WA(t);if(r.error)return r.error;if(r.help)return GA();if(r.version)return KA();let i=await QA(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=qA(o,r.inputType);if(l)return l;let u=Wr(a);return r.check?ZA(u,o,n.cwd):Hr(u,s,c,e.buildProcessConfig?.(n.env),{filename:o})}}}const ej=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];async function tj(){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 nj=[],rj=[`--yes`];function ij(){return S(`nuke`,async e=>{if(w(e,{valueFlags:nj}))return{stdout:`Usage: nuke <launch-code>
1715
+ `,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(!(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(nj(r)))throw r;return Kr()({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
1716
+ `,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"
1717
+ `,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
1718
+ `,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=Wr(a);return r.check?ij(u,o,n.cwd):Hr(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
1719
 
1712
1720
  Completely reset the environment by deleting all local data and reloading.
1713
1721
  Destroys the file system, chat history, and scoops database.
1714
1722
  Requires the secret launch code to proceed.
1715
- `,stderr:``,exitCode:0};let t=C(e,{value:nj,bool:rj});return`error`in t?{stdout:``,stderr:`nuke: ${t.error}\n`,exitCode:1}:t.positionals.join(``).includes(`1234`)?((async()=>{await tj(),aj(ej)})(),{stdout:`Nuking everything…
1723
+ `,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
1724
  `,stderr:``,exitCode:0}):{stdout:``,stderr:`⚠️ WARNING: this will reset the entire environment, file system, chats, and scoops.
1717
1725
  Run nuke again with the secret launch code to proceed.
1718
- `,exitCode:1}})}function aj(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 oj(){return`oauth-domain — manage extra allowed domains for OAuth-issued tokens
1726
+ `,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
1727
 
1720
1728
  Usage:
1721
1729
  oauth-domain list List extra domains for every provider
@@ -1740,13 +1748,13 @@ Examples:
1740
1748
  oauth-domain add adobe '*.da.live'
1741
1749
  oauth-domain list adobe
1742
1750
  oauth-domain remove adobe admin.da.live
1743
- `}function sj(e){return{stdout:``,stderr:`oauth-domain: ${e}\n`,exitCode:1}}function cj(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(`
1751
+ `}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
1752
  `)}\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
1753
  `,stderr:``,exitCode:0}:{stdout:`${n.map(([e,t])=>`${e}: ${t.join(`, `)}`).join(`
1746
- `)}\n`,stderr:``,exitCode:0}}async function lj(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 uj(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 dj(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 fj(e,t,n,r){switch(t){case`list`:return cj(e,n);case`add`:return lj(e,n,r);case`remove`:return uj(e,n,r);case`clear`:return dj(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${oj()}`,exitCode:1}}}function pj(){return S(`oauth-domain`,async e=>{if(e.length===0||w(e))return{stdout:oj(),stderr:``,exitCode:0};let t=C(e);if(`error`in t)return sj(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-UA_3Tz4g.js`).then(e=>e.t);try{return await fj(a,n,r,i)}catch(e){return sj(e instanceof Error?e.message:String(e))}})}function mj(){return S(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-DEBWO_VC.js`);return n(e,t)})}const hj=[`--download`,`-d`,`--view`,`-v`],gj=[`--size`],_j={low:256,medium:768,high:1536};function vj(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1754
+ `)}\n`,stderr:``,exitCode:0}}async function gj(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain add: requires <providerId> and <domain>
1755
+ `,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>
1756
+ `,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>
1757
+ `,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-D48vh7jd.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-tjPSuwX3.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
1758
 
1751
1759
  VFS paths are served in a new browser tab via the preview service worker.
1752
1760
  URLs (http/https/etc.) are opened directly in a new tab.
@@ -1760,19 +1768,19 @@ Examples:
1760
1768
  medium (768x768), high (1536x1536), or a custom WxH
1761
1769
  box like 512x512. The image is fit inside the box
1762
1770
  with aspect ratio preserved and is never upscaled.
1763
- `,stderr:``,exitCode:0}}function yj(e){if(e in _j){let t=_j[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 bj(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 xj(){return`open --view requires --size to bound the inlined image. Use one of:
1771
+ `,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
1772
  --size low (256x256)
1765
1773
  --size medium (768x768)
1766
1774
  --size high (1536x1536)
1767
1775
  --size WxH (custom box, e.g. 512x512)
1768
- `}const Sj=new Set([`image/png`,`image/webp`]);function Cj(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}async function wj(e,t){let n=Cj(e),r=new Blob([n],{type:t}),i=await createImageBitmap(r);try{return{width:i.width,height:i.height}}finally{i.close?.()}}async function Tj(e,t,n,r){let i=Cj(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=bj(e,t)?Sj.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 Ej(e){let t=C(e,{bool:hj,value:gj});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 Dj(e){return{ok:!0,message:e}}function K(e){return{ok:!1,result:{stdout:``,stderr:e,exitCode:1}}}function Oj(e){return e?` (targetId: ${e})`:``}function kj(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 Aj(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),Dj(`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 Dj(`opened ${a} → ${n}${Oj(r)}`)}return K(`open: sprinkle manager not initialized
1769
- `)}async function jj(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 Dj(`opened ${e}${Oj(r)}`)}async function Mj(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=yj(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 wj(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`+xj())}let u;try{u=await Tj(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 Dj(`${n} (${u.nativeWidth}x${u.nativeHeight} → ${u.width}x${u.height}, ${f} KB, ${u.mime})\n<img:data:${u.mime};base64,${d}>`)}async function Nj(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),Dj(`downloaded ${t}`)}async function Pj(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 Dj(`opened ${e} → ${o}${Oj(s)}`)}async function Fj(e,t,n,r){if(!Qn(e)&&e.endsWith(`.shtml`)&&t.fs)return Aj(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 jj(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?Mj(e,i,t,n.sizeSpec):n.download?Nj(e,i,t,r.hasDom):Pj(i,t,r.canOpenWindow,r.openExternal)}function Ij(e){return S(`open`,async(t,n)=>{if(t.length===0||w(t,{valueFlags:gj}))return vj();let r=Ej(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 vj();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:kj(e,l,u)},f=[];for(let e of s){let t=await Fj(e,n,{view:a,download:i,sizeSpec:o},d);if(!t.ok)return t.result;f.push(t.message)}return{stdout:f.join(`
1776
+ `}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 G(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 G(`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 G(`${e instanceof Error?e.message:String(e)}\n`)}return Pj(`opened ${a} → ${n}${Fj(r)}`)}return G(`open: sprinkle manager not initialized
1777
+ `)}async function Rj(e,t,n){if(!t)return G(`open: browser APIs are unavailable in this environment
1778
+ `);let r;try{r=await n(e)}catch(e){return G(`${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 G(`open: no such file: ${e}\n`)}if(!a.isFile)return G(`open: not a file: ${e}\n`);let o;try{o=await r.fs.readFileBuffer(n)}catch{return G(`open: failed to read: ${e}\n`)}let s=Jn(n),c=new Uint8Array(o),l=null;if(i!==void 0&&(l=Ej(i),!l))return G(`open: invalid --size spec '${i}' (expected low|medium|high or WxH such as 512x512)\n`);if(!l){let t;try{t=await jj(c,s)}catch(t){return G(`open: not an image or failed to decode: ${e} (${t instanceof Error?t.message:String(t)})\n`)}let r=Math.round(c.byteLength/1024);return G(`open --view: ${n} is ${t.width}x${t.height} (${r} KB, ${s})\n`+Oj())}let u;try{u=await Mj(c,s,l.maxW,l.maxH)}catch(t){return G(`open: not an image or failed to decode: ${e} (${t instanceof Error?t.message:String(t)})\n`)}let d=t(u.bytes),f=Math.round(u.bytes.byteLength/1024);return 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 G(`open: --download requires the in-panel terminal (DOM-only)
1779
+ `);let i;try{i=await n.fs.stat(t)}catch{return G(`open: no such file: ${e}\n`)}if(!i.isFile)return G(`open: not a file: ${e}\n`);let a;try{a=await n.fs.readFileBuffer(t)}catch{return G(`open: failed to read: ${e}\n`)}let o=new Uint8Array(a.byteLength);o.set(a);let s=new Blob([o.buffer],{type: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),Pj(`downloaded ${t}`)}async function Vj(e,t,n,r){if(!n)return G(`open: browser APIs are unavailable in this environment
1780
+ `);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 G(`${e instanceof Error?e.message:String(e)}\n`)}return Pj(`opened ${e} → ${o}${Fj(s)}`)}async function Hj(e,t,n,r){if(!Qn(e)&&e.endsWith(`.shtml`)&&t.fs)return Lj(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return G(`open: browser APIs are unavailable in this environment
1781
+ `);if(Qn(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
1782
  `)+`
1775
- `,stderr:``,exitCode:0}})}function Lj(){return S(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-CKI507uv.js`);return n(e,t)})}function Rj(e=`pdftk`){return S(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function zj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1783
+ `,stderr:``,exitCode:0}})}function Wj(){return S(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-DJZs27IU.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
1784
 
1777
1785
  Rasterize PDF pages to images. Writes <prefix>-<n>.<ext> per page, where <n>
1778
1786
  is zero-padded to the digit width of the last page (out-1.png for a 9-page
@@ -1799,8 +1807,8 @@ Examples:
1799
1807
  pdftoppm -png -r 150 doc.pdf page
1800
1808
  pdftoppm -jpeg -jpegopt quality=80 -f 1 -l 3 doc.pdf out
1801
1809
  pdftoppm -png -singlefile -scale-to 1024 doc.pdf cover
1802
- `,stderr:``,exitCode:0}}function Bj(e,t){if(e===void 0)throw Error(`missing argument for ${t}`);let n=Number(e);if(!Number.isFinite(n)||!Number.isInteger(n)||n<=0)throw Error(`invalid ${t} value: ${e}`);return n}function Vj(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 Hj(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=Vj(e[++d]),t=`jpeg`;break;case`-r`:n=Bj(e[++d],`-r`);break;case`-f`:r=Bj(e[++d],`-f`);break;case`-l`:i=Bj(e[++d],`-l`);break;case`-scale-to`:a=Bj(e[++d],`-scale-to`);break;case`-scale-to-x`:o=Bj(e[++d],`-scale-to-x`);break;case`-scale-to-y`:s=Bj(e[++d],`-scale-to-y`);break;case`-singlefile`:l=!0;break;default:if(f.startsWith(`-`))throw Error(`unsupported option ${f}`);u.push(f)}}if(u.length===0)throw Error(`expected an input PDF`);if(u.length>2)throw Error(`expected at most one input PDF and one output prefix`);if(r!==void 0&&i!==void 0&&r>i)throw Error(`invalid page range: ${r}-${i}`);return{inputPath:u[0],outputRoot:u[1],format:t,dpi:n,firstPage:r,lastPage:i,scaleTo:a,scaleToX:o,scaleToY:s,quality:c,singleFile:l}}function Uj(e){let t=e.lastIndexOf(`.`);return t>0?e.slice(0,t):e}function Wj(e,t,n,r){let i=String(n).length;return`${e}-${String(t).padStart(i,`0`)}.${r}`}function Gj(e){return e===`jpeg`?`jpg`:`png`}function Kj(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 qj(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 Jj(e=`pdftoppm`){return S(e,async(t,n)=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return zj();let r;try{r=Hj(t)}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}try{let t=await qj(n,r.inputPath),i=Gj(r.format),a=r.outputRoot??Uj(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,...Kj(r)},async(e,t)=>{let s=r.singleFile?`${a}.${i}`:Wj(a,e.pageNumber,t.lastPage,i);await n.fs.writeFile(n.fs.resolvePath(n.cwd,s),e.bytes),o.push(s)}),o.length===0?{stdout:``,stderr:`${e}: no pages to render\n`,exitCode:1}:{stdout:`${o.join(`
1803
- `)}\n`,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}})}function Yj(e=`pdftotext`){return S(e,async(t,n)=>{let{runPdftotext:r}=await import(`./run-BVzzZSqz.js`);return r(e,t,n)})}function Xj(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 Zj(){cw(()=>()=>ee()),sw(()=>()=>Xj(ee()))}const Qj=`/workspace/.plugins/sources`;function $j(e){return{stdout:e,stderr:``,exitCode:0}}function q(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function eM(e,t){let n=C(t,{});return`error`in n?q(`plugin ${e}: ${n.error}`):{ok:!0,positionals:n.positionals}}function tM(){return`usage: plugin <command> [args]
1810
+ `,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:Li(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(!Fi(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(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,...$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(`
1811
+ `)}\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(()=>()=>ee()),sw(()=>()=>rM(ee()))}const aM=`/workspace/.plugins/sources`;function oM(e){return{stdout:e,stderr:``,exitCode:0}}function K(e,t=1){return{stdout:``,stderr:`${e}\n`,exitCode:t}}function sM(e,t){let n=C(t,{});return`error`in n?K(`plugin ${e}: ${n.error}`):{ok:!0,positionals:n.positionals}}function cM(){return`usage: plugin <command> [args]
1804
1812
 
1805
1813
  Load Agent Plugins packages (agent-plugins.org spec v1.0.0): portable
1806
1814
  directories bundling Agent Skills (skills/*/SKILL.md) and MCP servers
@@ -1810,7 +1818,7 @@ Commands:
1810
1818
  install <path|repo> Validate the plugin and register it. <repo> is a
1811
1819
  GitHub reference (owner/repo, owner/repo@branch, or
1812
1820
  https://github.com/owner/repo[/tree/branch[/dir]]),
1813
- downloaded into ${Qj}/.
1821
+ downloaded into ${aM}/.
1814
1822
  Skills surface through the standard skills discovery;
1815
1823
  streamable-http MCP servers are added to the MCP
1816
1824
  store as "<plugin>:<server>".
@@ -1832,36 +1840,36 @@ Examples:
1832
1840
  plugin list
1833
1841
  plugin info my-plugin
1834
1842
  plugin remove my-plugin
1835
- `}function nM(e={}){return S(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return $j(tM());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await lM(i,a,e);case`list`:case`ls`:return await pM(i,e);case`info`:return await mM(i,e);case`validate`:return await hM(i,a,e,zi(n?.env));case`remove`:case`rm`:case`delete`:return await gM(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 rM(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-Bvj_6WV6.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 iM(e,t,n){let r=_M(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-z8nzKR56.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 aM(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function oM(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${Qj}/${t.map(aM).join(`--`)}`}async function sM(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-YeBT3Ny7.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 cM(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function lM(e,t,n){if(w(e))return $j(`usage: plugin install <path|repo>
1843
+ `}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,zi(n?.env));case`remove`:case`rm`:case`delete`:return await CM(i,e);default:return K(`plugin: unknown subcommand "${r}" (try \`plugin --help\`)`)}}catch(e){return K(`plugin ${r}: ${e instanceof Error?e.message:String(e)}`)}})}async function uM(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-Gd3zHsod.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-COa6G7Bf.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-Cr9Lysol.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
1844
 
1837
1845
  Loads the Agent Plugins package at <path>, or downloads it from a GitHub
1838
1846
  reference (owner/repo, owner/repo@branch, or
1839
1847
  https://github.com/owner/repo[/tree/branch[/dir]]) into
1840
- ${Qj}/ first. Validates plugin.json (closed
1848
+ ${aM}/ first. Validates plugin.json (closed
1841
1849
  schema, name constraints), discovers skills/*/SKILL.md, and validates
1842
1850
  mcp.json. On success the plugin is recorded in
1843
1851
  /workspace/.plugins/plugins.json — its skills then surface through the
1844
1852
  standard skills discovery, and each supported streamable-http MCP server
1845
1853
  is registered in the MCP store as "<plugin>:<server>".
1846
- `);let r=eM(`install`,e);if(!(`ok`in r))return r;if(r.positionals.length<1)return q(`plugin install: expected <path|repo>`);let i=await rM(n),a=await iM(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=oM(a.ref),s=a.ref.display;let e=await sM(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 cM(i,o),q(`plugin install: plugin at ${s??o} was rejected:\n${vM(l.diagnostics)}`);let{plugin:u}=l,d=u.manifest.name,{getInstalledPlugin:f,setInstalledPlugin:p}=await import(`./store-DTMATE-h.js`),m=await f(d,n.fs);if(m&&m.root!==o)return a.kind===`github`&&await cM(i,o),q(`plugin install: a plugin named "${d}" is already installed from ${m.root} (remove it first)`);let h=await fM(u,n),g=await dM(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),$j(uM(u,h,g,s??o,l.diagnostics))}function uM(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:`,vM(i)),c.join(`
1854
+ `);let r=sM(`install`,e);if(!(`ok`in r))return r;if(r.positionals.length<1)return K(`plugin install: expected <path|repo>`);let i=await uM(n),a=await dM(r.positionals[0],t,i);if(a.kind===`error`)return K(`plugin install: ${a.message}`);let o,s;if(a.kind===`github`){if(!n.fetch)return K(`plugin install: GitHub installs are unavailable (no network fetch configured)`);o=pM(a.ref),s=a.ref.display;let e=await mM(a.ref,o,i,n.fetch);if(e)return K(`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),K(`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-Cy7u1gHP.js`),m=await f(d,n.fs);if(m&&m.root!==o)return a.kind===`github`&&await hM(i,o),K(`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
1855
  `)+`
1848
- `}async function dM(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-B3uS3nQU.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 fM(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-B3uS3nQU.js`).then(e=>e.r),{McpClient:a}=await import(`./client-Sb_wIqH2.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 pM(e,t){if(w(e))return $j(`usage: plugin list
1849
- `);let n=eM(`list`,e);if(!(`ok`in n))return n;let{listInstalledPlugins:r}=await import(`./store-DTMATE-h.js`),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return $j("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 $j(o.map(e=>e.map((e,t)=>e.padEnd(s[t])).join(` `)).join(`
1856
+ `}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-BuIUG1zU.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-BuIUG1zU.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 bM(e,t){if(w(e))return oM(`usage: plugin list
1857
+ `);let n=sM(`list`,e);if(!(`ok`in n))return n;let{listInstalledPlugins:r}=await import(`./store-Cy7u1gHP.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
1858
  `)+`
1851
- `)}async function mM(e,t){if(w(e))return $j(`usage: plugin info <name>
1852
- `);let n=eM(`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-DTMATE-h.js`),a=await i(r,t.fs);if(!a)return q(`plugin info: no installed plugin named "${r}"`);let o=await rM(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${vM(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:`,vM(c.diagnostics)),$j(d.join(`
1859
+ `)}async function xM(e,t){if(w(e))return oM(`usage: plugin info <name>
1860
+ `);let n=sM(`info`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return K(`plugin info: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i}=await import(`./store-Cy7u1gHP.js`),a=await i(r,t.fs);if(!a)return K(`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 K(`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
1861
  `)+`
1854
- `)}async function hM(e,t,n,r){if(w(e))return $j(`usage: plugin validate <path|repo>
1855
- `);let i=eM(`validate`,e);if(!(`ok`in i))return i;if(i.positionals.length<1)return q(`plugin validate: expected <path|repo>`);let a=await rM(n),o=await iM(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/${oM(o.ref).split(`/`).pop()}`;let e=await sM(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 cM(a,c)}if(!u.ok)return{stdout:``,stderr:`plugin validate: REJECTED\n${vM(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:`,vM(u.diagnostics)),$j(p.join(`
1862
+ `)}async function SM(e,t,n,r){if(w(e))return oM(`usage: plugin validate <path|repo>
1863
+ `);let i=sM(`validate`,e);if(!(`ok`in i))return i;if(i.positionals.length<1)return K(`plugin validate: expected <path|repo>`);let a=await uM(n),o=await dM(i.positionals[0],t,a);if(o.kind===`error`)return K(`plugin validate: ${o.message}`);let s,c=null;if(o.kind===`github`){if(!n.fetch)return K(`plugin validate: GitHub sources are unavailable (no network fetch configured)`);c=`${r}/.plugin-validate/${pM(o.ref).split(`/`).pop()}`;let e=await mM(o.ref,c,a,n.fetch);if(e)return K(`plugin validate: ${e}`);s=c}else s=o.root;let{loadPluginFromDirectory:l}=await import(`./loader-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
1864
  `)+`
1857
- `)}async function gM(e,t){if(w(e))return $j(`usage: plugin remove <name>
1858
- `);let n=eM(`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-DTMATE-h.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-B3uS3nQU.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(`${Qj}/`);return c&&await cM(await rM(t),o.root),$j([`Removed agent plugin "${r}"`,` registry: removed`,` mcp servers: ${s} removed`,c?` files: removed (${o.root})`:` files: left in place (${o.root})`].join(`
1865
+ `)}async function CM(e,t){if(w(e))return oM(`usage: plugin remove <name>
1866
+ `);let n=sM(`remove`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return K(`plugin remove: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i,deleteInstalledPlugin:a}=await import(`./store-Cy7u1gHP.js`),o=await i(r,t.fs);if(!o)return K(`plugin remove: no installed plugin named "${r}"`);let s=0;if(o.mcpServerNames&&o.mcpServerNames.length>0){let{deleteServer:e,getServer:n}=await import(`./store-BuIUG1zU.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
1867
  `)+`
1860
- `)}function _M(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 vM(e){return e.map(e=>` ${e.level===`error`?`error`:`warn `} [${e.component}] ${e.message}`).join(`
1861
- `)}const yM=[`pid`,`ppid`,`kind`,`stat`,`start`,`scoop`,`command`],bM=[`pid`,`ppid`,`stat`,`start`,`scoop`,`command`],xM={running:`R`,pending:`S`,exited:`Z`,killed:`K`},SM=[`-a`,`-A`,`-e`,`--all`,`-T`,`--tree`],CM=[`-o`,`--columns`];function wM(e={}){return S(`ps`,async t=>{if(w(t,{valueFlags:CM}))return RM();let n=e.processManager??TM();if(!n)return{stdout:``,stderr:`ps: no process manager available in this runtime
1862
- `,exitCode:1};let r=C(t,{bool:SM,value:CM});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=bM,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=EM(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?LM(l):l.map(e=>({proc:e,depth:0})),d=DM(i,u.map(({proc:e})=>e),s!==void 0),f=u.map(({proc:e,depth:t})=>AM(e,i,t,a,d));return{stdout:[OM(i,d),...f].join(`
1868
+ `)}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(`
1869
+ `)}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
1870
+ `,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
1871
  `)+`
1864
- `,stderr:``,exitCode:0}})}function TM(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function EM(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(!yM.includes(e))return Error(`unknown column '${e}'; supported: ${yM.join(`, `)}`);n.push(e)}return n}function DM(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,NM(e).length);return{full:!0,width:r}}function OM(e,t){return e.map(e=>kM(e,t)).join(` `)}function kM(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 AM(e,t,n,r,i){return t.map(t=>jM(e,t,n,r,i)).join(` `)}function jM(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 xM[e.status];case`start`:return MM(e.startedAt);case`scoop`:return PM(e,i);case`command`:return FM(e,n,r)}}function MM(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 NM(e){return e.owner.kind===`cone`?`cone`:e.owner.kind===`system`?`system`:e.owner.kind===`jshd`?`jshd`:e.owner.scoopJid??`scoop`}function PM(e,t){let n=NM(e);return(t.full?n:n.slice(0,t.width)).padEnd(t.width)}function FM(e,t,n){let r=n&&t>0?` `.repeat(t-1)+`└─ `:``,i=e.argv.length===0?`[${e.kind}]`:e.argv.map(IM).join(` `);return r+(i.length>80?i.slice(0,79)+`…`:i)}function IM(e){return e===``?`''`:/^[A-Za-z0-9_./:=@%+-]+$/.test(e)?e:e.includes(`"`)&&!e.includes(`'`)?`'${e}'`:`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"`}function LM(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 RM(){return{stdout:`Usage: ps [-a] [-T] [-o col[,col…]]
1872
+ `,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
1873
 
1866
1874
  List processes tracked by the kernel.
1867
1875
 
@@ -1894,9 +1902,9 @@ Examples:
1894
1902
  ps -a -T full tree
1895
1903
  ps -o pid,kind,stat just three columns
1896
1904
  ps -o scoop,stat,pid full scoop jid, with STAT and PID
1897
- `,stderr:``,exitCode:0}}const zM=new Set([`dev`,`proc`,`lib`,`bin`,`usr`,`etc`,`home`,`tmp`]);async function BM(e,t=zM){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 VM(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 HM(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`slicc-fs`}catch{}}function UM(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},fromDir:e.cwd}}async function WM(e,t){try{let n=await e.readFile(`${t}/package.json`),r=JSON.parse(n);return typeof r.version==`string`?r.version:null}catch{return null}}function GM(e,t){return`installed pyodide ${e} is not the supported version ${t}: run \`ipk uninstall pyodide\` then \`ipk add pyodide@${t}\``}function KM(){return{stdout:`usage: python3 [-c code | script.py] [args...]
1898
- `,stderr:``,exitCode:0}}function qM(){return{stdout:`Python 3.14 (Pyodide)
1899
- `,stderr:``,exitCode:0}}async function JM(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 YM(e){let t=UM(e),n=await wr(t);if(!n)return{kind:`result`,result:{stdout:``,stderr:`${Cr}\n`,exitCode:1}};let r=await WM(t.reader,n);return r?r===pr?{kind:`ok`,assetRoot:n}:{kind:`result`,result:{stdout:``,stderr:`${GM(r,pr)}\n`,exitCode:1}}:{kind:`result`,result:{stdout:``,stderr:`${Cr}\n`,exitCode:1}}}function XM(e,t={}){return S(e,async(n,r)=>{let i=n[0];if(i===`--help`||i===`-h`)return KM();if(i===`--version`||i===`-V`)return qM();let a=await JM(e,n,r);if(a.kind===`result`)return a.result;let{code:o,filename:s,sysArgv:c,procArgv:l}=a,u=await BM(r.fs),d=VM(r.fs,u),f=t.buildProcessConfig?.(r.env),p=f?.processManager??ZM(),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 YM(r);if(e.kind===`result`)return e.result;v=e.assetRoot}let ee=s===`<stdin>`?``:P(r.stdin),te=HM();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()}):$M({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 ZM(){let e=globalThis.__slicc_pm;return e&&typeof e==`object`&&typeof e.spawn==`function`&&typeof e.onSignal==`function`?e:null}let QM=null;async function $M(e){if(!QM){let{ProcessManager:e}=await import(`./process-manager-BkhAohXT.js`).then(e=>e.n);QM=new e}return Vr({pm:QM,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 eN(){return S(`rg`,async(e,t)=>{let{runRg:n}=await import(`./run-DniTiLYn.js`);return n(e,t)})}function tN(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 nN(){return null}function rN(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=iN(r),o=iN(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 iN(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 aN(){return{stdout:`rsync — sync files between local VFS and a remote tray runtime
1905
+ `,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...]
1906
+ `,stderr:``,exitCode:0}}function eN(){return{stdout:`Python 3.14 (Pyodide)
1907
+ `,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 wr(t);if(!n)return{kind:`result`,result:{stdout:``,stderr:`${Cr}\n`,exitCode:1}};let r=await ZM(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 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??jr(),_=t.pyodideIndexURL??Gr(),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?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()}):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 Vr({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:Ar()})}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
1908
 
1901
1909
  Usage:
1902
1910
  rsync [flags] <local-path> <runtime-id>:<remote-path> # push
@@ -1912,21 +1920,21 @@ Examples:
1912
1920
  rsync /workspace follower-abc123:/workspace
1913
1921
  rsync --delete /shared leader:/shared
1914
1922
  rsync follower-abc123:/workspace/project /workspace/project
1915
- `,stderr:``,exitCode:0}}async function oN(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 sN(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 cN(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 lN(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 uN(e){let t=e.lastIndexOf(`/`);return t<=0?`/`:e.slice(0,t)}async function dN(e,n,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=tN(await oN(e,a),await sN(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(`
1923
+ `,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
1924
  `)+`
1917
- `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let c=a+`/`+r,l=o+`/`+r;await lN(n,s,uN(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(`
1925
+ `,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
1926
  `)+`
1919
1927
  `,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
1928
  `)+`
1921
1929
  `,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
1930
  `)+`
1923
- `,stderr:``,exitCode:0}}async function fN(e,t,r){let i=[],{localPath:a,remotePath:o,runtimeId:s,verbose:c,dryRun:l}=r,u=tN(await sN(t,s,o),await oN(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(`
1931
+ `,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
1932
  `)+`
1925
- `,stderr:``,exitCode:0};for(let r of[...u.toAdd,...u.toUpdate]){let i=o+`/`+r,c=a+`/`+r,l=uN(c);await e.exists(l)||await e.mkdir(l,{recursive:!0});let u=await cN(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(`
1933
+ `,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
1934
  `)+`
1927
- `,stderr:``,exitCode:0}}function pN(e={}){let t=e.fs,n=e.getSendFsRequest??nN;return S(`rsync`,async e=>{if(e.includes(`--help`)||e.includes(`-h`)||e.length===0)return aN();if(!t)return{stdout:``,stderr:`rsync: no filesystem available
1935
+ `,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
1936
  `,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=rN(e);if(`error`in i)return i.error===`__help__`?aN():{stdout:``,stderr:`rsync: ${i.error}\n`,exitCode:1};try{return i.direction===`push`?await dN(t,r,i):await fN(t,r,i)}catch(e){return{stdout:``,stderr:`rsync: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function mN(){return{stdout:`usage: say [-v voice] [-r rate] [-l lang] [-o file] [--list] <text>
1937
+ `,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
1938
  say --status | --warmup
1931
1939
 
1932
1940
  Speaks the given text. Uses on-device Kokoro voices when the model
@@ -1945,14 +1953,14 @@ Examples:
1945
1953
  [web speech] otherwise); kokoro voices lead when ready
1946
1954
  --status Show the on-device voice state (downloading/ready + ETA)
1947
1955
  --warmup Stage + start the on-device voice download in the background
1948
- `,stderr:``,exitCode:0}}function hN(e){switch(e.state){case`ready`:return`voice engine: ready
1956
+ `,stderr:``,exitCode:0}}function SN(e){switch(e.state){case`ready`:return`voice engine: ready
1949
1957
  `;case`failed`:return`voice engine: failed (re-run say --warmup to retry)
1950
1958
  `;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 gN(e){return{stdout:``,stderr:`say: ${e}\n`,exitCode:1}}function _N(e){return e instanceof Error?e.message:String(e)}let vN=!1,yN=null;function bN(){return vN?Promise.resolve(speechSynthesis.getVoices()):(yN||=new Promise(e=>{let t=speechSynthesis.getVoices();if(t.length>0){vN=!0,e(t);return}let n=()=>{vN=!0,speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,n),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,n),vN=!0,e(speechSynthesis.getVoices())},1e3)}),yN)}const xN={"-v":`a voice name`,"-r":`a rate value`,"-l":`a language tag`,"-o":`an output file path`,"--out":`an output file path`};function SN(e){return e!=null&&(!e.startsWith(`-`)||e===`-`)}function CN(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 wN(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 xN){let n=SN(r+1<e.length?e[r+1]:void 0)?e[++r]:null;if(n==null)return gN(`${i} requires ${xN[i]}`);let a=CN(t,i,n);if(a)return gN(a)}else if(i.startsWith(`-`)&&i!==`--list`)return gN(`unknown option: ${i}`);else i.startsWith(`-`)||n.push(i)}return t.text=n.join(` `),t}function TN(e){let t=e.onDevice?`[kokoro]`:`[web speech]`;return`${e.name} (${e.lang}) ${t}${e.default?` [default]`:``}`}async function EN(e){if(e.local){let{kokoroVoicesIfReady:e}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),t=e().map(e=>TN({name:e.id,lang:e.lang,onDevice:e.onDevice})),n=(await bN()).map(e=>TN({name:e.name,lang:e.lang,onDevice:!1,default:e.default}));return{stdout:[...t,...n].join(`
1959
+ `;case`loading`:{let t=e=>(e/1024/1024).toFixed(1);return`voice engine: downloading${e.loaded!=null&&e.total?` ${t(e.loaded)}/${t(e.total)} MB`:``}${e.etaSeconds!=null&&Number.isFinite(e.etaSeconds)?` · ready in ~${Math.max(1,Math.round(e.etaSeconds))}s`:``}\n`}}}function q(e){return{stdout:``,stderr:`say: ${e}\n`,exitCode:1}}function CN(e){return e instanceof Error?e.message:String(e)}let wN=!1,TN=null;function EN(){return wN?Promise.resolve(speechSynthesis.getVoices()):(TN||=new Promise(e=>{let t=speechSynthesis.getVoices();if(t.length>0){wN=!0,e(t);return}let n=()=>{wN=!0,speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,n),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,n),wN=!0,e(speechSynthesis.getVoices())},1e3)}),TN)}const DN={"-v":`a voice name`,"-r":`a rate value`,"-l":`a language tag`,"-o":`an output file path`,"--out":`an output file path`};function ON(e){return e!=null&&(!e.startsWith(`-`)||e===`-`)}function kN(e,t,n){switch(t){case`-v`:return e.voiceName=n,null;case`-l`:return e.lang=n,null;case`-o`:case`--out`:return e.outFile=n,null;case`-r`:{let t=parseFloat(n);return Number.isNaN(t)||t<.1||t>10?`rate must be between 0.1 and 10`:(e.rate=t,null)}default:return`unknown option: ${t}`}}function AN(e){let t={voiceName:null,rate:1,lang:null,outFile:null,text:``},n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i in DN){let n=ON(r+1<e.length?e[r+1]:void 0)?e[++r]:null;if(n==null)return q(`${i} requires ${DN[i]}`);let a=kN(t,i,n);if(a)return q(a)}else if(i.startsWith(`-`)&&i!==`--list`)return q(`unknown option: ${i}`);else i.startsWith(`-`)||n.push(i)}return t.text=n.join(` `),t}function jN(e){let t=e.onDevice?`[kokoro]`:`[web speech]`;return`${e.name} (${e.lang}) ${t}${e.default?` [default]`:``}`}async function MN(e){if(e.local){let{kokoroVoicesIfReady:e}=await import(`./speech-page-realm-stub-C7EPKrHd.js`),t=e().map(e=>jN({name:e.id,lang:e.lang,onDevice:e.onDevice})),n=(await EN()).map(e=>jN({name:e.name,lang:e.lang,onDevice:!1,default:e.default}));return{stdout:[...t,...n].join(`
1952
1960
  `)+`
1953
- `,stderr:``,exitCode:0}}try{return{stdout:(await e.panelRpc.call(`list-voices`,void 0)).voices.map(e=>TN(e)).join(`
1961
+ `,stderr:``,exitCode:0}}try{return{stdout:(await e.panelRpc.call(`list-voices`,void 0)).voices.map(e=>jN(e)).join(`
1954
1962
  `)+`
1955
- `,stderr:``,exitCode:0}}catch(e){return gN(_N(e))}}async function DN(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 bN()).map(e=>({name:e.name}));return[...n,...r]}async function ON(e,t){let n=(await DN(e)).find(e=>e.name.toLowerCase().includes(t.toLowerCase()));return n?{resolved:n.name}:{error:gN(`voice "${t}" not found. Use --list to see available voices.`)}}async function kN(e,t){try{if(e.local){let{kokoroStatus:e,kokoroWarmup:n}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return{stdout:hN(t?n():e()),stderr:``,exitCode:0}}return{stdout:hN(t?await e.panelRpc.call(`speak-warmup`,void 0):await e.panelRpc.call(`speak-status`,void 0)),stderr:``,exitCode:0}}catch(e){return gN(_N(e))}}async function AN(e,t){return t.includes(`--list`)?EN(e):t.includes(`--status`)?kN(e,!1):t.includes(`--warmup`)?kN(e,!0):null}async function jN(e){try{let{speak:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return await t(e),{stdout:``,stderr:``,exitCode:0}}catch(e){return gN(`speech synthesis error: ${_N(e)}`)}}async function MN(e,t){try{return await e.panelRpc.call(`speak-text`,t,{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return gN(_N(e))}}async function NN(e){let{synthesizeToWav:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);try{return{bytes:await t(e)}}catch(e){return gN(_N(e))}}async function PN(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 gN(_N(e))}}async function FN(e,t){return e.local?NN(t):PN(e,t)}async function IN(e,t){let n=await FN(e,t);return`exitCode`in n?n:{...ni(n.bytes),stderr:``,exitCode:0}}async function LN(e,t,n,r){let i=await FN(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 gN(`failed to write ${n}: ${_N(e)}`)}return{stdout:`wrote ${Math.max(1,Math.round(i.bytes.byteLength/1024))} KB to ${a}\n`,stderr:``,exitCode:0}}async function RN(e,t,n){let r;if(n.voiceName){let{resolved:t,error:i}=await ON(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)?IN(e,i):n.outFile?LN(e,t,n.outFile,i):e.local?jN(i):MN(e,i)}function zN(){return S(`say`,async(e,t)=>{if(e.includes(`--help`)||e.includes(`-h`))return mN();let n={local:typeof window<`u`&&typeof speechSynthesis<`u`,panelRpc:y()};if(!n.local&&!n.panelRpc)return gN(`Web Speech API unavailable in this environment`);let r=await AN(n,e);if(r)return r;let i=wN(e);return`exitCode`in i?i:i.text?i.lang?RN(n,t,{...i,lang:i.lang}):gN(`-l language tag is required`):mN()})}function BN(){return S(`screencapture`,async(e,t)=>{let{runScreencapture:n}=await import(`./screencapture-run-Dt7lEfIp.js`);return n(e,t)})}function VN(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 HN=1e4;async function UN(e,t,n){let r={method:e,headers:me({"Content-Type":`application/json`}),signal:AbortSignal.timeout(HN)};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:WN(e)}}}}function WN(e){let t=e instanceof Error?e.name:``;return t===`TimeoutError`||t===`AbortError`?`no response from the secret store within ${HN/1e3}s`:`secret store unreachable: ${e instanceof Error?e.message:String(e)}`}function GN(e,t){return`could not read ${e} secrets — ${t??`the bridge gave no reason`}`}function KN(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 qN(){return{async list(){let[e,t]=await Promise.all([UN(`GET`,``),UN(`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(GN(`saved`,ZN(e.data)));if(t.ok)for(let e of t.data)n.push({name:e.name,domains:e.domains,persisted:!1});else r.push(GN(`session`,ZN(t.data)));return{entries:n,warnings:r}},async getInfo(e){return KN(await this.list(),e)},async getMasked(e){let{ok:t,data:n}=await UN(`GET`,`/masked`);return t?n.find(t=>t.name===e)??null:null},async peek(e){let{ok:t,data:n}=await UN(`GET`,`/peek?name=${encodeURIComponent(e)}`);return t?n:null},async setSession(e,t,n){let{ok:r,data:i}=await UN(`POST`,`/session`,{name:e,value:t,domains:n});if(!r)throw Error(ZN(i)??`failed to set session secret`)},async setPersisted(e,t,n){let{ok:r,data:i}=await UN(`POST`,``,{name:e,value:t,domains:n});if(!r)throw Error(ZN(i)??`failed to persist secret`)},async setScope(e,t){let{ok:n,data:r}=await UN(`POST`,`/scope`,{name:e,domains:t});if(!n)throw Error(ZN(r)??`failed to update scope`)},async delete(e){let{ok:t,status:n,data:r}=await UN(`DELETE`,`/${encodeURIComponent(e)}`);if(n===404)return{removed:!1};if(!t)throw Error(ZN(r)??`failed to delete secret`);return{removed:!0,fromSession:r&&typeof r==`object`&&`fromSession`in r?!!r.fromSession:void 0}}}}function JN(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(GN(`saved`,e?.error)),n?.entries||i.push(GN(`session`,n?.error)),{entries:r,warnings:i}},async getInfo(e){return KN(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 YN(){return JN(e=>VN(e))}function XN(){return JN(e=>{let{type:t,...n}=e;return be(t,n)})}function ZN(e){if(e&&typeof e==`object`&&`error`in e){let t=e.error;if(typeof t==`string`)return t}}function QN(e){switch(e){case`extension-direct`:return YN();case`extension-delegate`:return XN();default:return qN()}}const $N=[`--domain`],eP=[`--persist`];function tP(){return`secret — manage secrets for the fetch proxy and mount backends
1963
+ `,stderr:``,exitCode:0}}catch(e){return q(CN(e))}}async function NN(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 EN()).map(e=>({name:e.name}));return[...n,...r]}async function PN(e,t){let n=(await NN(e)).find(e=>e.name.toLowerCase().includes(t.toLowerCase()));return n?{resolved:n.name}:{error:q(`voice "${t}" not found. Use --list to see available voices.`)}}async function FN(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 q(CN(e))}}async function IN(e,t){return t.includes(`--list`)?MN(e):t.includes(`--status`)?FN(e,!1):t.includes(`--warmup`)?FN(e,!0):null}async function LN(e){try{let{speak:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);return await t(e),{stdout:``,stderr:``,exitCode:0}}catch(e){return q(`speech synthesis error: ${CN(e)}`)}}async function RN(e,t){try{return await e.panelRpc.call(`speak-text`,t,{timeoutMs:3e5}),{stdout:``,stderr:``,exitCode:0}}catch(e){return q(CN(e))}}async function zN(e){let{synthesizeToWav:t}=await import(`./speech-page-realm-stub-C7EPKrHd.js`);try{return{bytes:await t(e)}}catch(e){return q(CN(e))}}async function BN(e,t){try{let n=await e.panelRpc.call(`synthesize-to-wav`,{text:t.text,lang:t.lang,...t.voice?{voice:t.voice}:{},rate:t.rate},{timeoutMs:3e5});return{bytes:new Uint8Array(n.bytes)}}catch(e){return q(CN(e))}}async function VN(e,t){return e.local?zN(t):BN(e,t)}async function HN(e,t){let n=await VN(e,t);return`exitCode`in n?n:{...ni(n.bytes),stderr:``,exitCode:0}}async function UN(e,t,n,r){let i=await VN(e,r);if(`exitCode`in i)return i;let a=t.fs.resolvePath(t.cwd,n);try{await t.fs.writeFile(a,i.bytes)}catch(e){return q(`failed to write ${n}: ${CN(e)}`)}return{stdout:`wrote ${Math.max(1,Math.round(i.bytes.byteLength/1024))} KB to ${a}\n`,stderr:``,exitCode:0}}async function WN(e,t,n){let r;if(n.voiceName){let{resolved:t,error:i}=await PN(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)?HN(e,i):n.outFile?UN(e,t,n.outFile,i):e.local?LN(i):RN(e,i)}function GN(){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 q(`Web Speech API unavailable in this environment`);let r=await IN(n,e);if(r)return r;let i=AN(e);return`exitCode`in i?i:i.text?i.lang?WN(n,t,{...i,lang:i.lang}):q(`-l language tag is required`):xN()})}function KN(){return S(`screencapture`,async(e,t)=>{let{runScreencapture:n}=await import(`./screencapture-run-Dt7lEfIp.js`);return n(e,t)})}function qN(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 JN=1e4;async function YN(e,t,n){let r={method:e,headers:me({"Content-Type":`application/json`}),signal:AbortSignal.timeout(JN)};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:XN(e)}}}}function XN(e){let t=e instanceof Error?e.name:``;return t===`TimeoutError`||t===`AbortError`?`no response from the secret store within ${JN/1e3}s`:`secret store unreachable: ${e instanceof Error?e.message:String(e)}`}function ZN(e,t){return`could not read ${e} secrets — ${t??`the bridge gave no reason`}`}function QN(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 $N(){return{async list(){let[e,t]=await Promise.all([YN(`GET`,``),YN(`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(ZN(`saved`,rP(e.data)));if(t.ok)for(let e of t.data)n.push({name:e.name,domains:e.domains,persisted:!1});else r.push(ZN(`session`,rP(t.data)));return{entries:n,warnings:r}},async getInfo(e){return QN(await this.list(),e)},async getMasked(e){let{ok:t,data:n}=await YN(`GET`,`/masked`);return t?n.find(t=>t.name===e)??null:null},async peek(e){let{ok:t,data:n}=await YN(`GET`,`/peek?name=${encodeURIComponent(e)}`);return t?n:null},async setSession(e,t,n){let{ok:r,data:i}=await YN(`POST`,`/session`,{name:e,value:t,domains:n});if(!r)throw Error(rP(i)??`failed to set session secret`)},async setPersisted(e,t,n){let{ok:r,data:i}=await YN(`POST`,``,{name:e,value:t,domains:n});if(!r)throw Error(rP(i)??`failed to persist secret`)},async setScope(e,t){let{ok:n,data:r}=await YN(`POST`,`/scope`,{name:e,domains:t});if(!n)throw Error(rP(r)??`failed to update scope`)},async delete(e){let{ok:t,status:n,data:r}=await YN(`DELETE`,`/${encodeURIComponent(e)}`);if(n===404)return{removed:!1};if(!t)throw Error(rP(r)??`failed to delete secret`);return{removed:!0,fromSession:r&&typeof r==`object`&&`fromSession`in r?!!r.fromSession:void 0}}}}function eP(e){let t=t=>e(t);return{async list(){let[e,n]=await Promise.all([t({type:`secrets.list`}),t({type:`secrets.session.list`})]),r=[],i=[];for(let t of e?.entries??[])r.push({name:t.name,domains:t.domains,persisted:!0});for(let e of n?.entries??[])r.push({name:e.name,domains:e.domains,persisted:!1});return e?.entries||i.push(ZN(`saved`,e?.error)),n?.entries||i.push(ZN(`session`,n?.error)),{entries:r,warnings:i}},async getInfo(e){return QN(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 tP(){return eP(e=>qN(e))}function nP(){return eP(e=>{let{type:t,...n}=e;return be(t,n)})}function rP(e){if(e&&typeof e==`object`&&`error`in e){let t=e.error;if(typeof t==`string`)return t}}function iP(e){switch(e){case`extension-direct`:return tP();case`extension-delegate`:return nP();default:return $N()}}const aP=[`--domain`],oP=[`--persist`];function sP(){return`secret — manage secrets for the fetch proxy and mount backends
1956
1964
 
1957
1965
  No approval (session-only, in-memory, never persisted):
1958
1966
  secret set <name> <value> --domain <pat> Set a session secret. Free for a
@@ -1989,23 +1997,23 @@ Examples:
1989
1997
  secret peek OPENAI_KEY
1990
1998
  secret set GITHUB_TOKEN ghp_… --domain "api.github.com" --persist # prompts
1991
1999
  secret scope GITHUB_TOKEN --domain "api.github.com,*.github.com" # prompts
1992
- `}function nP(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 rP(e){return{stdout:``,stderr:`secret: ${e}\n`,exitCode:1}}const iP={persist:`persist secret`,scope:`edit secret scope`,value:`change secret value`},aP=new Set;function oP(e,t){if(e===t)return!0;try{return at(e).test(t)}catch{return!1}}function sP(e,t){for(let n of e)if(oP(n,t))return!0;return!1}function cP(e){return{stdout:``,stderr:`${ct(`secret`,e)}\n`,exitCode:1}}function lP(e){let t=ge(),n=e.isExtension??(t===`extension-direct`||t===`extension-delegate`),r=e.backend??QN(t),i=e.grants??aP,a=e.broker,o=()=>(a??=is(null),a);return{backend:r,inExtension:n,gate:async(e,t)=>{let n=`secret:${e}:${t}`;if(sP(i,n))return`ok`;let r=await o().requestApproval({kind:`secret`,detail:`${iP[e]}: ${t}`,suggestedPattern:n});if(r.decision===`deny`)return r;if(r.decision===`always`){let e=r.pattern?.trim();i.add(e&&oP(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 uP(e){let t=P(e);if(t.length!==0)return t.endsWith(`\r
2000
+ `}function cP(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 lP(e){return{stdout:``,stderr:`secret: ${e}\n`,exitCode:1}}const uP={persist:`persist secret`,scope:`edit secret scope`,value:`change secret value`},dP=new Set;function fP(e,t){if(e===t)return!0;try{return at(e).test(t)}catch{return!1}}function pP(e,t){for(let n of e)if(fP(n,t))return!0;return!1}function mP(e){return{stdout:``,stderr:`${ct(`secret`,e)}\n`,exitCode:1}}function hP(e){let t=ge(),n=e.isExtension??(t===`extension-direct`||t===`extension-delegate`),r=e.backend??iP(t),i=e.grants??dP,a=e.broker,o=()=>(a??=rs(null),a);return{backend:r,inExtension:n,gate:async(e,t)=>{let n=`secret:${e}:${t}`;if(pP(i,n))return`ok`;let r=await o().requestApproval({kind:`secret`,detail:`${uP[e]}: ${t}`,suggestedPattern:n});if(r.decision===`deny`)return r;if(r.decision===`always`){let e=r.pattern?.trim();i.add(e&&fP(e,n)?e:n)}return`ok`},injectMaskedEnv:async t=>{if(e.setEnv&&ms(t))try{let n=await r.getMasked(t);n&&e.setEnv(t,n.maskedValue)}catch{}},clearMaskedEnv:t=>{e.unsetEnv&&ms(t)&&e.unsetEnv(t)}}}function gP(e){let t=P(e);if(t.length!==0)return t.endsWith(`\r
1993
2001
  `)?t.slice(0,-2):t.endsWith(`
1994
- `)?t.slice(0,-1):t}async function dP(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}):cP(i)}async function fP(e,t,n,r){if(await r.backend.getInfo(e)){let t=await r.gate(`value`,e);if(t!==`ok`)return cP(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 pP(e,t,n){let r=C(e.slice(1),{value:$N,bool:eP});if(`error`in r)return rP(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=uP(t.stdin);if(a!==void 0&&o!==void 0)return{stdout:``,stderr:`secret: provide <value> as an argument OR via stdin, not both
2002
+ `)?t.slice(0,-1):t}async function _P(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}):mP(i)}async function vP(e,t,n,r){if(await r.backend.getInfo(e)){let t=await r.gate(`value`,e);if(t!==`ok`)return mP(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 yP(e,t,n){let r=C(e.slice(1),{value:aP,bool:oP});if(`error`in r)return lP(r.error);let i=r.positionals[0];if(!i||i.startsWith(`-`))return{stdout:``,stderr:`secret: set requires a <name>
2003
+ `,exitCode:1};let a=r.positionals[1],o=gP(t.stdin);if(a!==void 0&&o!==void 0)return{stdout:``,stderr:`secret: provide <value> as an argument OR via stdin, not both
1996
2004
  `,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
2005
  or pipe the value on stdin: echo "$TOKEN" | secret set <name> --domain <patterns>
1998
- `,exitCode:1};let c=nP(r.values.get(`--domain`));return c?r.bools.has(`--persist`)?dP(i,s,c,n):fP(i,s,c,n):{stdout:``,stderr:`secret: set requires --domain <patterns>
1999
- `,exitCode:1}}async function mP(e,t){let n=C(e.slice(1),{});if(`error`in n)return rP(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 hP(e,t){let n=C(e.slice(1),{});if(`error`in n)return rP(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 gP(e,t){let n=C(e.slice(1),{value:$N});if(`error`in n)return rP(n.error);let r=n.positionals[0];if(!r||r.startsWith(`-`))return{stdout:``,stderr:`secret: scope requires a <name>
2002
- `,exitCode:1};let i=nP(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}):cP(a)}async function _P(e,t){let n=C(e.slice(1),{});if(`error`in n)return rP(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 vP(e,t,n){let r=C(e.slice(1),{});if(`error`in r)return rP(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 yP(e,t){let n=C(e.slice(1),{});if(`error`in n)return rP(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 bP(e,t){let n=C(e.slice(1),{});if(`error`in n)return rP(n.error);if(!t.inExtension)return{stdout:`secret: in CLI mode, edit ~/.slicc/secrets.env directly with your text editor.
2006
+ `,exitCode:1};let c=cP(r.values.get(`--domain`));return c?r.bools.has(`--persist`)?_P(i,s,c,n):vP(i,s,c,n):{stdout:``,stderr:`secret: set requires --domain <patterns>
2007
+ `,exitCode:1}}async function bP(e,t){let n=C(e.slice(1),{});if(`error`in n)return lP(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: get requires a <name>
2008
+ `,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 xP(e,t){let n=C(e.slice(1),{});if(`error`in n)return lP(n.error);let r=n.positionals[0];if(!r)return{stdout:``,stderr:`secret: peek requires a <name>
2009
+ `,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 SP(e,t){let n=C(e.slice(1),{value:aP});if(`error`in n)return lP(n.error);let r=n.positionals[0];if(!r||r.startsWith(`-`))return{stdout:``,stderr:`secret: scope requires a <name>
2010
+ `,exitCode:1};let i=cP(n.values.get(`--domain`));if(!i)return{stdout:``,stderr:`secret: scope requires --domain <patterns>
2011
+ `,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}):mP(a)}async function CP(e,t){let n=C(e.slice(1),{});if(`error`in n)return lP(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
2012
+ `,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 wP(e,t,n){let r=C(e.slice(1),{});if(`error`in r)return lP(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 TP(e,t){let n=C(e.slice(1),{});if(`error`in n)return lP(n.error);let r=n.positionals[0],i=n.positionals[1];if(!r||!i)return{stdout:``,stderr:`secret: test requires <name> <url>
2013
+ `,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?ga(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 EP(e,t){let n=C(e.slice(1),{});if(`error`in n)return lP(n.error);if(!t.inExtension)return{stdout:`secret: in CLI mode, edit ~/.slicc/secrets.env directly with your text editor.
2006
2014
  (changes are picked up on the next request — no restart needed)
2007
2015
  `,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 xP(e,t,n){let r=e[0];switch(r){case`set`:return pP(e,t,n);case`get`:case`read`:return mP(e,n);case`peek`:return hP(e,n);case`scope`:return gP(e,n);case`list`:return _P(e,n);case`delete`:case`rm`:return vP(e,r,n);case`test`:return yP(e,n);case`edit`:return bP(e,n);default:return{stdout:``,stderr:`secret: unknown command "${r}"\n`,exitCode:1}}}function SP(e={}){let t=lP(e);return S(`secret`,async(e,n)=>{if(e.length===0||w(e,{valueFlags:$N}))return{stdout:tP(),stderr:``,exitCode:0};try{return await xP(e,n,t)}catch(e){return{stdout:``,stderr:`secret: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function CP(){return null}function wP(){return null}function TP(){return{stdout:`usage: serve [--entry <relative-path>] [--ttl <duration>] [--bridge | --no-bridge] [--max-tabs <n>] [--quiet] [--stop <token>] [--list] <directory>
2016
+ `,stderr:``,exitCode:0}}catch{let e=chrome.runtime.getURL(`secrets.html`);return window.open(e,`_blank`),{stdout:`Opened ${e}\n`,stderr:``,exitCode:0}}}async function DP(e,t,n){let r=e[0];switch(r){case`set`:return yP(e,t,n);case`get`:case`read`:return bP(e,n);case`peek`:return xP(e,n);case`scope`:return SP(e,n);case`list`:return CP(e,n);case`delete`:case`rm`:return wP(e,r,n);case`test`:return TP(e,n);case`edit`:return EP(e,n);default:return{stdout:``,stderr:`secret: unknown command "${r}"\n`,exitCode:1}}}function OP(e={}){let t=hP(e);return S(`secret`,async(e,n)=>{if(e.length===0||w(e,{valueFlags:aP}))return{stdout:sP(),stderr:``,exitCode:0};try{return await DP(e,n,t)}catch(e){return{stdout:``,stderr:`secret: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function kP(){return null}function AP(){return null}function jP(){return{stdout:`usage: serve [--entry <relative-path>] [--ttl <duration>] [--bridge | --no-bridge] [--max-tabs <n>] [--quiet] [--stop <token>] [--list] <directory>
2009
2017
  serve --logs [<token>] [--lines <n>]
2010
2018
  serve --truncate [<token>]
2011
2019
 
@@ -2041,28 +2049,28 @@ Limits and lifetime:
2041
2049
  its TTL. Either can be removed sooner with \`serve --stop\`.
2042
2050
  - <token> is the "Preview token" printed at mint time or the TOKEN column
2043
2051
  of \`serve --list\`; \`--stop\` also accepts the preview URL.
2044
- `,stderr:``,exitCode:0}}function EP(e){return`error`in e}function DP(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 OP(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
2052
+ `,stderr:``,exitCode:0}}function MP(e){return`error`in e}function NP(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
2053
+ `}:(n.lines=i,{skip:+(e===`--lines`)})}}function PP(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
2054
  `};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
2055
  `};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
2056
  `}:(n.ttlMs=a,{skip:+(e===`--ttl`)}):{error:`serve: --ttl must be a positive whole duration (m, h, d, or w)
2049
- `}}function kP(e,t){let n={"--bridge":`bridge`,"--no-bridge":`noBridge`,"--project":`project`,"--quiet":`quiet`}[e];if(n)return t[n]=!0,{skip:0}}function AP(e,t,n){let r=OP(e,t,n);if(r)return r;let i=kP(e,n);if(i)return i;if(e===`--entry`)return t?(n.entry=t,{skip:1}):{error:`serve: missing value for --entry
2057
+ `}}function FP(e,t){let n={"--bridge":`bridge`,"--no-bridge":`noBridge`,"--project":`project`,"--quiet":`quiet`}[e];if(n)return t[n]=!0,{skip:0}}function IP(e,t,n){let r=PP(e,t,n);if(r)return r;let i=FP(e,n);if(i)return i;if(e===`--entry`)return t?(n.entry=t,{skip:1}):{error:`serve: missing value for --entry
2050
2058
  `};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=DP(e,t,n);if(a)return a;if(e===`--max-tabs`){if(!t)return{error:`serve: missing value for --max-tabs
2059
+ `};if(e.startsWith(`--stop=`))return n.stop=e.slice(7),{skip:0};let a=NP(e,t,n);if(a)return a;if(e===`--max-tabs`){if(!t)return{error:`serve: missing value for --max-tabs
2052
2060
  `};let e=Number.parseInt(t,10);return!Number.isFinite(e)||e<=0?{error:`serve: --max-tabs must be a positive integer
2053
2061
  `}:(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
2062
  `}:(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 jP(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=AP(e[n],e[n+1],t);if(EP(r))return{...t,error:r.error};n+=r.skip}return t}async function MP(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 NP(e){return`exitCode`in e}async function PP(e){let t=ha(e)??e,n,r=wP();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 FP(){let e=wP();if(e){let t=(await e({type:`list`})).previews??[];return t.length===0?{stdout:`No active previews
2057
- `,stderr:``,exitCode:0}:{stdout:LP(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:LP(n),stderr:``,exitCode:0}}function IP(e){return e.mode===`persistent`?e.state===`pending`?`uploading`:`persistent`:`live`}function LP(e){return`Active previews:\n TOKEN MODE EXPIRES URL ROOT CREATED\n${e.map(e=>` ${e.previewToken} ${IP(e)} ${e.expiresAt??`-`} ${e.url} ${e.servedRoot} ${e.createdAt}\n`).join(``)}`}function RP(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 zP(e){let t,n=wP();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(RP).join(``)}`,stderr:``,exitCode:0}}async function BP(e){let t,n,r=wP();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 VP(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 HP(e){return e().catch(e=>({stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}))}async function UP(e){let t=CP();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 WP(e,t){if(t)return t.createPage(e);typeof window<`u`&&typeof window.open==`function`&&window.open(e,`_blank`,`noopener,noreferrer`)}async function GP(e,t){if(!e)return{ok:!0};let n=await 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 KP(e,t,n,r,i,a,o){let s;try{s=await UP({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 WP(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 qP(e){if(e.stop){let t=e.stop;return HP(()=>PP(t))}if(e.list)return HP(()=>FP());if(e.logs&&e.truncate)return{stdout:``,stderr:`serve: --logs and --truncate are mutually exclusive
2063
+ `}:(n.directory=e,{skip:0})}function LP(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=IP(e[n],e[n+1],t);if(MP(r))return{...t,error:r.error};n+=r.skip}return t}async function RP(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 zP(e){return`exitCode`in e}async function BP(e){let t=ma(e)??e,n,r=AP();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
2064
+ `,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 VP(){let e=AP();if(e){let t=(await e({type:`list`})).previews??[];return t.length===0?{stdout:`No active previews
2065
+ `,stderr:``,exitCode:0}:{stdout:UP(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
2066
+ `,stderr:``,exitCode:0}:{stdout:UP(n),stderr:``,exitCode:0}}function HP(e){return e.mode===`persistent`?e.state===`pending`?`uploading`:`persistent`:`live`}function UP(e){return`Active previews:\n TOKEN MODE EXPIRES URL ROOT CREATED\n${e.map(e=>` ${e.previewToken} ${HP(e)} ${e.expiresAt??`-`} ${e.url} ${e.servedRoot} ${e.createdAt}\n`).join(``)}`}function WP(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 GP(e){let t,n=AP();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.
2067
+ `,stderr:``,exitCode:0}:{stdout:`Preview lifecycle records (oldest to newest):\n${t.map(WP).join(``)}`,stderr:``,exitCode:0}}async function KP(e){let t,n,r=AP();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 qP(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 JP(e){return e().catch(e=>({stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}))}async function YP(e){let t=kP();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 XP(e,t){if(t)return t.createPage(e);typeof window<`u`&&typeof window.open==`function`&&window.open(e,`_blank`,`noopener,noreferrer`)}async function ZP(e,t){if(!e)return{ok:!0};let n=await ey();if(!n)return{ok:!1,result:{stdout:``,stderr:`${t}serve: --bridge requires an active lick manager\n`,exitCode:1}};try{return{ok:!0,webhookId:(await n.createWebhook(`preview-bridge`)).id}}catch(e){return{ok:!1,result:{stdout:``,stderr:`${t}serve: webhook creation failed: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}}async function QP(e,t,n,r,i,a,o){let s;try{s=await YP({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 XP(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 $P(e){if(e.stop){let t=e.stop;return JP(()=>BP(t))}if(e.list)return JP(()=>VP());if(e.logs&&e.truncate)return{stdout:``,stderr:`serve: --logs and --truncate are mutually exclusive
2060
2068
  `,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 HP(()=>zP({previewToken:t,lines:e.lines}))}if(e.truncate){let t=typeof e.truncate==`string`?e.truncate:void 0;return HP(()=>BP(t))}}function JP(e){if(e.ttlMs!==void 0&&e.bridge)return{stdout:``,stderr:`serve: --ttl cannot be combined with --bridge
2069
+ `,exitCode:1};if(e.logs){let t=typeof e.logs==`string`?e.logs:void 0;return JP(()=>GP({previewToken:t,lines:e.lines}))}if(e.truncate){let t=typeof e.truncate==`string`?e.truncate:void 0;return JP(()=>KP(t))}}function eF(e){if(e.ttlMs!==void 0&&e.bridge)return{stdout:``,stderr:`serve: --ttl cannot be combined with --bridge
2062
2070
  `,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 YP(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return VP(t,n)}}async function XP(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return TP();let i=jP(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await qP(i);if(a)return a;if(!i.directory)return TP();let o=JP(i);if(o)return o;let s=await MP(i.directory,i.entry,t.fs,t.cwd);if(NP(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await YP(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 GP(!i.noBridge&&i.bridge,d);return f.ok?KP(i,c,l,f.webhookId,d,u,n):f.result}function ZP(e,t){return S(`serve`,(n,r)=>XP(n,r,e,t))}const QP=`usage: session export [--id <id>] [--output <path>]
2065
- `;function $P(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 eF(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${QP}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${QP}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${QP}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${QP}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${QP}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${QP}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function tF(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 nF(e,t){let n=eF(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=$P(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${QP}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await cs().export(a,{}),n=await tF(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 rF(){return S(`session`,async(e,t)=>{if(e[0]===`export`&&!w(e))return nF(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-D-p81a7P.js`);return n(e,t,QP)})}function iF(){return S(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-cvQKad0O.js`);return await n(e,t)})}const aF=`leader`;function oF(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function sF(e){return+!!e.leader+e.followers.length}function cF(){return{stdout:`usage: sprinkle <subcommand> [args]
2071
+ `,exitCode:1}}async function tF(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return qP(t,n)}}async function nF(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return jP();let i=LP(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await $P(i);if(a)return a;if(!i.directory)return jP();let o=eF(i);if(o)return o;let s=await RP(i.directory,i.entry,t.fs,t.cwd);if(zP(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await tF(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)
2072
+ `:``,f=await ZP(!i.noBridge&&i.bridge,d);return f.ok?QP(i,c,l,f.webhookId,d,u,n):f.result}function rF(e,t){return S(`serve`,(n,r)=>nF(n,r,e,t))}const iF=`usage: session export [--id <id>] [--output <path>]
2073
+ `;function aF(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 oF(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${iF}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${iF}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${iF}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${iF}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${iF}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${iF}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function sF(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 xa(`transfer-corrupt`);return r}async function cF(e,t){let n=oF(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=aF(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${iF}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await ss().export(a,{}),n=await sF(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 xa?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function lF(){return S(`session`,async(e,t)=>{if(e[0]===`export`&&!w(e))return cF(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-CV0M_waq.js`);return n(e,t,iF)})}function uF(){return S(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-cvQKad0O.js`);return await n(e,t)})}const dF=`leader`;function fF(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function pF(e){return+!!e.leader+e.followers.length}function mF(){return{stdout:`usage: sprinkle <subcommand> [args]
2066
2074
 
2067
2075
  list [--runtime <id>] List sprinkles + an instance line per runtime
2068
2076
  open <name> Open a sprinkle by name
@@ -2080,22 +2088,22 @@ Limits and lifetime:
2080
2088
  chat <html> Show inline HTML in chat (Tool UI)
2081
2089
  Use data-action="name" on buttons for callbacks
2082
2090
  Pipe HTML: echo "<div>...</div>" | sprinkle chat
2083
- `,stderr:``,exitCode:0}}function lF(){return globalThis.__slicc_sprinkleManager??null}function J(e,t){return{stdout:``,stderr:`sprinkle ${e}: ${t}\n`,exitCode:1}}function uF(){return[aF,...ee().map(e=>e.runtimeId)]}function dF(e){return`unknown runtime "${e}"\nknown runtimes: ${uF().join(`, `)}\nRun \`host\` to see connected followers.`}async function fF(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
2091
+ `,stderr:``,exitCode:0}}function hF(){return globalThis.__slicc_sprinkleManager??null}function J(e,t){return{stdout:``,stderr:`sprinkle ${e}: ${t}\n`,exitCode:1}}function gF(){return[dF,...ee().map(e=>e.runtimeId)]}function _F(e){return`unknown runtime "${e}"\nknown runtimes: ${gF().join(`, `)}\nRun \`host\` to see connected followers.`}async function vF(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
2092
  `,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
2085
2093
  `,exitCode:1}:{stdout:JSON.stringify(r)+`
2086
- `,stderr:``,exitCode:0}}function pF(e){return e.map(e=>{let t=e.runtime?` (${e.runtime})`:``;return` instance: ${e.runtimeId}${t}`})}function mF(e){return[...e.map(e=>({name:e,runtimeId:aF})),...oF()]}async function hF(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&&!uF().includes(r))return J(`list`,dF(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=mF([...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(...pF(t))}return s.length===0?{stdout:`No sprinkles are open on runtime "${r}".\n`,stderr:``,exitCode:0}:{stdout:s.join(`
2094
+ `,stderr:``,exitCode:0}}function yF(e){return e.map(e=>{let t=e.runtime?` (${e.runtime})`:``;return` instance: ${e.runtimeId}${t}`})}function bF(e){return[...e.map(e=>({name:e,runtimeId:dF})),...fF()]}async function xF(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&&!gF().includes(r))return J(`list`,_F(r));await e.refresh();let i=e.available();if(i.length===0)return{stdout:`No .shtml sprinkles found.
2095
+ `,stderr:``,exitCode:0};let a=new Set(e.opened()),o=bF([...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(...yF(t))}return s.length===0?{stdout:`No sprinkles are open on runtime "${r}".\n`,stderr:``,exitCode:0}:{stdout:s.join(`
2088
2096
  `)+`
2089
- `,stderr:``,exitCode:0}}function gF(e,t){return!t||Do(e)?null:(Oo(e,t),Do(e)===t?t:null)}async function _F(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=gF(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 vF(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 yF(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 bF(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 xF(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).
2097
+ `,stderr:``,exitCode:0}}function SF(e,t){return!t||Eo(e)?null:(Do(e,t),Eo(e)===t?t:null)}async function CF(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=SF(i,a);try{a?await e.open(i,void 0,{lickOriginTarget:a}):await e.open(i)}catch(e){return o&&Oo(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 wF(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 TF(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 EF(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 DF(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=ko(),t=Object.entries(e);return t.length===0?{stdout:`No sprinkle routes configured (all licks go to cone).
2090
2098
  `,stderr:``,exitCode:0}:{stdout:`Sprinkle routes (applied to every runtime — the leader resolves the
2091
2099
  route for follower-forwarded licks too):
2092
2100
  `+t.map(([e,t])=>` ${e} -> ${t}`).join(`
2093
2101
  `)+`
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 SF(e){let t=[];return e.leader&&t.push(aF),t.push(...e.followers),t.join(`, `)}async function CF(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&&!uF().includes(o))return J(`send`,dF(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`,dF(s.unknownRuntime));let c=sF(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`} (${SF(s)}).\n`,stderr:``,exitCode:0}}function wF(){return S(`sprinkle`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return cF();let n=e[0];if(w(e.slice(1),{valueFlags:[`--scoop`,`--runtime`]}))return{stdout:$e(`sprinkle`,n,cF().stdout),stderr:``,exitCode:0};if(n===`chat`)return fF(Qe(e),t);let r=lF();if(!r)return{stdout:``,stderr:`sprinkle: sprinkle manager not initialized
2095
- `,exitCode:1};switch(n){case`list`:return hF(r,e);case`open`:return _F(r,e,t.env);case`close`:return vF(r,e);case`reload`:return yF(r,e);case`refresh`:return bF(r,e);case`route`:return xF(e);case`send`:return CF(r,e);default:return{stdout:``,stderr:`sprinkle: unknown subcommand "${n}"\n`,exitCode:1}}})}function TF(){return{stdout:`usage: sqlite3 [database] [sql]
2096
- `,stderr:``,exitCode:0}}function EF(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 DF(e,t){return e===`:memory:`?e:t.fs.resolvePath(t.cwd,e)}async function OF(e,t,n){return t===`:memory:`||!await n.fs.exists(t)?new e.Database:new e.Database(await n.fs.readFileBuffer(t))}async function kF(e,t,n){t!==`:memory:`&&await n.fs.writeFile(t,e.export())}function AF(e){let t=e.flatMap(e=>e.values.map(e=>e.map(nr).join(`|`)));return t.length>0?`${t.join(`
2097
- `)}\n`:``}async function jF(e,t,n){let r=await lr(),i=DF(e,n),a=await OF(r,i,n),o=a.exec(t);return await kF(a,i,n),a.close(),AF(o)}function MF(e,t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}function NF(e=`sqlite3`){return S(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return TF();let{database:r,sql:i}=EF(t,n);if(!i)return MF(e,`interactive mode is not supported; provide SQL as argument or stdin`);try{return{stdout:await jF(r,i,n),stderr:``,exitCode:0}}catch(t){return MF(e,t)}})}function PF(e){return{stdout:``,stderr:e.endsWith(`
2098
- `)?e:`${e}\n`,exitCode:1}}function FF(){return{stdout:`ssh - run a command on a connected tray follower
2102
+ `,stderr:``,exitCode:0}}if(t.bools.has(`--clear`))return Oo(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=Eo(n);return e?{stdout:`${n} -> ${e}\n`,stderr:``,exitCode:0}:{stdout:`${n} -> cone (default)\n`,stderr:``,exitCode:0}}return Do(n,r),{stdout:`Sprinkle "${n}" lick events will route to scoop "${r}".\n`,stderr:``,exitCode:0}}function OF(e){let t=[];return e.leader&&t.push(dF),t.push(...e.followers),t.join(`, `)}async function kF(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&&!gF().includes(o))return J(`send`,_F(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`,_F(s.unknownRuntime));let c=pF(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`} (${OF(s)}).\n`,stderr:``,exitCode:0}}function AF(){return S(`sprinkle`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return mF();let n=e[0];if(w(e.slice(1),{valueFlags:[`--scoop`,`--runtime`]}))return{stdout:$e(`sprinkle`,n,mF().stdout),stderr:``,exitCode:0};if(n===`chat`)return vF(Qe(e),t);let r=hF();if(!r)return{stdout:``,stderr:`sprinkle: sprinkle manager not initialized
2103
+ `,exitCode:1};switch(n){case`list`:return xF(r,e);case`open`:return CF(r,e,t.env);case`close`:return wF(r,e);case`reload`:return TF(r,e);case`refresh`:return EF(r,e);case`route`:return DF(e);case`send`:return kF(r,e);default:return{stdout:``,stderr:`sprinkle: unknown subcommand "${n}"\n`,exitCode:1}}})}function jF(){return{stdout:`usage: sqlite3 [database] [sql]
2104
+ `,stderr:``,exitCode:0}}function MF(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 NF(e,t){return e===`:memory:`?e:t.fs.resolvePath(t.cwd,e)}async function PF(e,t,n){return t===`:memory:`||!await n.fs.exists(t)?new e.Database:new e.Database(await n.fs.readFileBuffer(t))}async function FF(e,t,n){t!==`:memory:`&&await n.fs.writeFile(t,e.export())}function IF(e){let t=e.flatMap(e=>e.values.map(e=>e.map(nr).join(`|`)));return t.length>0?`${t.join(`
2105
+ `)}\n`:``}async function LF(e,t,n){let r=await lr(),i=NF(e,n),a=await PF(r,i,n),o=a.exec(t);return await FF(a,i,n),a.close(),IF(o)}function RF(e,t){return{stdout:``,stderr:`${e}: ${t instanceof Error?t.message:String(t)}\n`,exitCode:1}}function zF(e=`sqlite3`){return S(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return jF();let{database:r,sql:i}=MF(t,n);if(!i)return RF(e,`interactive mode is not supported; provide SQL as argument or stdin`);try{return{stdout:await LF(r,i,n),stderr:``,exitCode:0}}catch(t){return RF(e,t)}})}function BF(e){return{stdout:``,stderr:e.endsWith(`
2106
+ `)?e:`${e}\n`,exitCode:1}}function VF(){return{stdout:`ssh - run a command on a connected tray follower
2099
2107
 
2100
2108
  Usage: ssh [--cwd <dir>] [--timeout <seconds>] <runtime-id> <command...>
2101
2109
  ssh --list
@@ -2118,11 +2126,11 @@ Examples:
2118
2126
  ssh --list
2119
2127
  ssh follower-abc123 "uname -a"
2120
2128
  ssh --cwd /tmp follower-abc123 "ls -la"
2121
- `,stderr:``,exitCode:0}}function IF(e){let t=e.filter(e=>e.exec);if(t.length===0)return`No exec-capable followers connected.
2129
+ `,stderr:``,exitCode:0}}function HF(e){let t=e.filter(e=>e.exec);if(t.length===0)return`No exec-capable followers connected.
2122
2130
  Start one with: slicc <join-url> follow sh -c
2123
2131
  `;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 LF(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 RF(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 zF(){return S(`ssh`,async(e,t)=>{let n=RF(e);if(`help`in n)return FF();if(`error`in n)return PF(n.error);if(n.list||n.runtimeId===void 0)return{stdout:IF(ee()),stderr:``,exitCode:0};if(!n.command)return PF(`ssh: missing command
2125
- Usage: ssh <runtime-id> <command...>`);let r=y();if(!r)return PF(`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:LF(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 PF(`ssh: ${e instanceof Error?e.message:String(e)}`)}finally{t.signal?.removeEventListener(`abort`,a)}})}function BF(e){return{stdout:``,stderr:`${ct(`sudo`,e)}\n`,exitCode:1}}function VF(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...]
2132
+ `)}\n`}function UF(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 WF(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 GF(){return S(`ssh`,async(e,t)=>{let n=WF(e);if(`help`in n)return VF();if(`error`in n)return BF(n.error);if(n.list||n.runtimeId===void 0)return{stdout:HF(ee()),stderr:``,exitCode:0};if(!n.command)return BF(`ssh: missing command
2133
+ Usage: ssh <runtime-id> <command...>`);let r=y();if(!r)return BF(`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:UF(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 BF(`ssh: ${e instanceof Error?e.message:String(e)}`)}finally{t.signal?.removeEventListener(`abort`,a)}})}function KF(e){return{stdout:``,stderr:`${ct(`sudo`,e)}\n`,exitCode:1}}function qF(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
2134
  `,exitCode:1};if(e[0]===`--help`||e[0]===`-h`)return{stdout:`usage: sudo <command> [args...]
2127
2135
 
2128
2136
  Request human approval to run <command> with elevation. If approved, the
@@ -2136,14 +2144,14 @@ Options:
2136
2144
  -h, --help Show this help message and exit.
2137
2145
  `,stderr:``,exitCode:0};if(!t)return{stdout:``,stderr:`sudo: command-level approval is not configured
2138
2146
  `,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 BF(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 HF(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 UF(e,t){return e.fs.lstat?e.fs.lstat(t):e.fs.stat(t)}function WF(e,t){return e.some(e=>/^-[^-]/.test(e)&&e.slice(1).includes(t))}async function GF(e,t,n){let r=e.fs.resolvePath(e.cwd,t);try{let i=await UF(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}': ${HF(e)}\n`}}}function KF(){return S(`rm`,async(e,t)=>{let n={recursive:WF(e,`r`)||WF(e,`R`)||e.includes(`--recursive`),force:WF(e,`f`)||e.includes(`--force`),verbose:WF(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=>GF(t,e,n))),a=i.map(e=>e.stdout).join(``),o=i.map(e=>e.stderr).join(``);return{stdout:a,stderr:o,exitCode:+!!o}})}function qF(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 JF(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 YF(e,t,n){try{let r=e.fs.resolvePath(e.cwd,t),i=n.follow?await e.fs.stat(r):await UF(e,r);return{stdout:n.format?`${qF(n.format,t,i)}\n`:` File: ${t}\n Size: ${i.size}\n`,stderr:``}}catch{return{stdout:``,stderr:`stat: cannot stat '${t}': No such file or directory\n`}}}function XF(){return S(`stat`,async(e,t)=>{let n=JF(e);if(n.paths.length===0)return{stdout:``,stderr:`stat: missing operand
2141
- `,exitCode:1};let r=await Promise.all(n.paths.map(e=>YF(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 ZF(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n<=0?`/`:t.slice(0,n)}async function QF(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 UF(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}': ${HF(e)}\n`}}if(!n||s===i.length-1)return{stdout:o,stderr:``};a=ZF(a)}return{stdout:o,stderr:``}}function $F(){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=>QF(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 eI(){return{stdout:`usage: tar (-c|-x|-t) [-zv] -f <archive> [-C <dir>] [paths...]
2143
- `,stderr:``,exitCode:0}}function tI(e){return{stdout:``,stderr:`tar: ${e}\n`,exitCode:1}}function nI(e,t){if(e.mode)return tI(`exactly one of -c, -x, or -t is required`);e.mode=t}function rI(e,t,n){if(n)return[n,t];let r=e[t+1];return r===void 0?void 0:[r,t+1]}const iI={c:`create`,x:`extract`,t:`list`};function aI(e,t,n,r,i){let a=iI[e];if(a)return{nextIndex:r,error:nI(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:tI(`unsupported option -${e}`)};let o=rI(n,r,t);return o?(e===`f`?i.archive=o[0]:i.directory=o[0],{nextIndex:o[1],consumedValue:!0}):{nextIndex:r,error:tI(`option -${e} requires an argument`)}}function oI(e,t,n){let r=e[t];for(let i=1;i<r.length;i++){let a=aI(r[i],r.slice(i+1),e,t,n);if(a.error||a.consumedValue)return a}return{nextIndex:t}}function sI(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 tI(`unsupported option ${r}`);let i=oI(e,n,t);if(i.error)return i.error;n=i.nextIndex}return t}function cI(e,t){let n=e.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^(?:\.\/)+/,``);return n?n===`.`?`.`:n.replace(/\/+$/,``):er(t)}async function lI(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 lI(e,$n(t,n),`${a}${n}`,r)}function uI(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 dI(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 fI(e,t){if(e.paths.length===0)return tI(`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 lI(t,e,cI(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 pI(e,t){if(e.paths.length>0)return tI(`${e.mode} mode does not accept input paths`);let n=t.fs.resolvePath(t.cwd,e.archive),r=uI(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=dI(t,i,e.path);if(!n)return tI(`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 mI(){return S(`tar`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return eI();let n=sI(e);return`exitCode`in n?n:n.mode?n.archive?n.mode===`list`&&n.directory!==`.`?tI(`-C is only supported in create or extract mode`):n.mode===`create`?fI(n,t):pI(n,t):tI(`option -f requires an archive path`):tI(`exactly one of -c, -x, or -t is required`)})}var hI=`/**
2147
+ `,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 KF(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 JF(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 YF(e,t){return e.fs.lstat?e.fs.lstat(t):e.fs.stat(t)}function XF(e,t){return e.some(e=>/^-[^-]/.test(e)&&e.slice(1).includes(t))}async function ZF(e,t,n){let r=e.fs.resolvePath(e.cwd,t);try{let i=await YF(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}': ${JF(e)}\n`}}}function QF(){return S(`rm`,async(e,t)=>{let n={recursive:XF(e,`r`)||XF(e,`R`)||e.includes(`--recursive`),force:XF(e,`f`)||e.includes(`--force`),verbose:XF(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
2148
+ `,exitCode:1};let i=await Promise.all(r.map(e=>ZF(t,e,n))),a=i.map(e=>e.stdout).join(``),o=i.map(e=>e.stderr).join(``);return{stdout:a,stderr:o,exitCode:+!!o}})}function $F(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 eI(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 tI(e,t,n){try{let r=e.fs.resolvePath(e.cwd,t),i=n.follow?await e.fs.stat(r):await YF(e,r);return{stdout:n.format?`${$F(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 nI(){return S(`stat`,async(e,t)=>{let n=eI(e);if(n.paths.length===0)return{stdout:``,stderr:`stat: missing operand
2149
+ `,exitCode:1};let r=await Promise.all(n.paths.map(e=>tI(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 rI(e){let t=e.replace(/\/+$/,``),n=t.lastIndexOf(`/`);return n<=0?`/`:t.slice(0,n)}async function iI(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 YF(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}': ${JF(e)}\n`}}if(!n||s===i.length-1)return{stdout:o,stderr:``};a=rI(a)}return{stdout:o,stderr:``}}function aI(){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
2150
+ `,exitCode:1};let a=await Promise.all(i.map(e=>iI(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 oI(){return{stdout:`usage: tar (-c|-x|-t) [-zv] -f <archive> [-C <dir>] [paths...]
2151
+ `,stderr:``,exitCode:0}}function sI(e){return{stdout:``,stderr:`tar: ${e}\n`,exitCode:1}}function cI(e,t){if(e.mode)return sI(`exactly one of -c, -x, or -t is required`);e.mode=t}function lI(e,t,n){if(n)return[n,t];let r=e[t+1];return r===void 0?void 0:[r,t+1]}const uI={c:`create`,x:`extract`,t:`list`};function dI(e,t,n,r,i){let a=uI[e];if(a)return{nextIndex:r,error:cI(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:sI(`unsupported option -${e}`)};let o=lI(n,r,t);return o?(e===`f`?i.archive=o[0]:i.directory=o[0],{nextIndex:o[1],consumedValue:!0}):{nextIndex:r,error:sI(`option -${e} requires an argument`)}}function fI(e,t,n){let r=e[t];for(let i=1;i<r.length;i++){let a=dI(r[i],r.slice(i+1),e,t,n);if(a.error||a.consumedValue)return a}return{nextIndex:t}}function pI(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 sI(`unsupported option ${r}`);let i=fI(e,n,t);if(i.error)return i.error;n=i.nextIndex}return t}function mI(e,t){let n=e.replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^(?:\.\/)+/,``);return n?n===`.`?`.`:n.replace(/\/+$/,``):er(t)}async function hI(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 hI(e,$n(t,n),`${a}${n}`,r)}function gI(e,t){let n=e.length>=2&&e[0]===31&&e[1]===139,r=t||n?Yi(e):e;return Gi(r,{stripNpmPrefix:!1,includeDirectories:!0,preserveRawPaths:!0})}function _I(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 vI(e,t){if(e.paths.length===0)return sI(`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 hI(t,e,mI(i,e),n)}let i=t.fs.resolvePath(t.cwd,e.archive),a=Zi(n);return await t.fs.writeFile(i,e.gzip?Ui(a):a),{stdout:e.verbose?`${n.map(e=>e.path).join(`
2152
+ `)}\n`:``,stderr:``,exitCode:0}}async function yI(e,t){if(e.paths.length>0)return sI(`${e.mode} mode does not accept input paths`);let n=t.fs.resolvePath(t.cwd,e.archive),r=gI(await t.fs.readFileBuffer(n),e.gzip);if(e.mode===`list`){let e=r.map(e=>e.path).join(`
2153
+ `);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=_I(t,i,e.path);if(!n)return sI(`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(`
2154
+ `)}\n`:``,stderr:``,exitCode:0}}function bI(){return S(`tar`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return oI();let n=pI(e);return`exitCode`in n?n:n.mode?n.archive?n.mode===`list`&&n.directory!==`.`?sI(`-C is only supported in create or extract mode`):n.mode===`create`?vI(n,t):yI(n,t):sI(`option -f requires an archive path`):sI(`exactly one of -c, -x, or -t is required`)})}var xI=`/**
2147
2155
  * Standalone assertions - no dependency on test runner
2148
2156
  *
2149
2157
  * Each assertion:
@@ -2331,7 +2339,7 @@ function sameMembers(a, b) {
2331
2339
  }
2332
2340
 
2333
2341
  const slice = a => (isPrimitive(a) ? a : a.slice ? a.slice() : Object.assign({}, a))
2334
- `,gI=`/**
2342
+ `,SI=`/**
2335
2343
  * tst - minimal test runner
2336
2344
  *
2337
2345
  * - Standalone assertions (assert.js works anywhere)
@@ -2961,7 +2969,7 @@ function scheduleAutoRun() {
2961
2969
  scheduleAutoRun()
2962
2970
 
2963
2971
  export * from './assert.js'
2964
- `;function _I(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}const vI=`tsc - thin wrapper over the ipk-loaded TypeScript 6 package
2972
+ `;function CI(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 wI=`tsc - thin wrapper over the ipk-loaded TypeScript 6 package
2965
2973
 
2966
2974
  Usage:
2967
2975
  tsc [options] [files...]
@@ -2985,28 +2993,28 @@ Install:
2985
2993
  Then \`tsc --version\` and the transpile commands above. There is no
2986
2994
  bundled binary, no CDN fallback; a missing package exits non-zero
2987
2995
  with a clear \`ipk add\` hint.
2988
- `;function yI(e){let t=[],n=!1,r=null,i=!1,a=!1;for(let o=0;o<e.length;o++){let s=e[o];if(s===`-h`||s===`--help`){i=!0;continue}if(s===`-v`||s===`--version`){a=!0;continue}if(s===`--noEmit`){n=!0;continue}if(s===`--outDir`){let t=e[o+1];if(typeof t!=`string`||t.startsWith(`-`))throw Error(`tsc: --outDir requires a value`);r=t,o+=1;continue}if(s.startsWith(`--outDir=`)){r=s.slice(9);continue}if(s.startsWith(`-`))throw Error(`tsc: unknown option: ${s}`);t.push(s)}return{files:t,noEmit:n,outDir:r,showHelp:i,showVersion:a}}function bI(e,t){let n=`${er(e).replace(/\.(ts|tsx|mts|cts)$/i,``)}.js`;return t?`${t.endsWith(`/`)?t.slice(0,-1):t}/${n}`:`${ar(e)}/${n}`}async function xI(e,t){let n=t||`/`,r=``;for(;n&&n!==r;){let t=n===`/`?`/tsconfig.json`:`${n}/tsconfig.json`;if(await e.exists(t))return t;r=n,n=ar(n)}return null}function SI(e){return{target:e.ScriptTarget.ES2022,module:e.ModuleKind.ESNext,moduleResolution:e.ModuleResolutionKind.Bundler,esModuleInterop:!0,allowSyntheticDefaultImports:!0,isolatedModules:!0}}function CI(e){if(typeof e!=`object`||!e)return{};let{compilerOptions:t}=e;return t??{}}async function wI(e,t,n){let r=SI(t),i=await xI(e,n);if(!i)return{compilerOptions:{...r}};let a;try{a=await e.readFile(i)}catch{return{compilerOptions:{...r}}}let{config:o,error:s}=t.parseConfigFileTextToJson(i,a);return s||!o?{compilerOptions:{...r}}:{compilerOptions:{...r,...CI(o)}}}function TI(e,t){let n=e.flattenDiagnosticMessageText(t.messageText,`
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 EI(e,t){let n=t.toLowerCase();return n.endsWith(`.tsx`)?e.ScriptKind.TSX:n.endsWith(`.jsx`)?e.ScriptKind.JSX:n.endsWith(`.js`)||n.endsWith(`.mjs`)||n.endsWith(`.cjs`)?e.ScriptKind.JS:e.ScriptKind.TS}function DI(e,t,n,r,i){let a=e.transpileModule(t,{compilerOptions:r,fileName:n,reportDiagnostics:i});return{outputText:a.outputText,diagnostics:a.diagnostics??[]}}function OI(e,t,n,r){let{outputText:i,diagnostics:a}=DI(e,r,`<stdin>.ts`,n.compilerOptions,!0),o=a.map(t=>TI(e,t)),s=o.length>0?`${o.join(`
2990
- `)}\n`:``;return{stdout:t.noEmit?``:i,stderr:s,exitCode:+(a.length>0)}}async function kI(e,t,n,r,i){let a=t.fs.resolvePath(t.cwd,n);if(!await t.fs.exists(a))return{stderr:`tsc: ${n}: no such file\n`,hadError:!0};let o;try{o=await t.fs.readFile(a)}catch(e){return{stderr:`tsc: ${n}: ${e instanceof Error?e.message:String(e)}\n`,hadError:!0}}EI(e,a);let{outputText:s,diagnostics:c}=DI(e,o,a,i.compilerOptions,!0),l=[];for(let t of c)l.push(`${TI(e,t)}\n`);let u=c.length>0;if(r.noEmit)return{stderr:l.join(``),hadError:u};let d=t.fs.resolvePath(t.cwd,bI(a,r.outDir));try{await t.fs.writeFile(d,s)}catch(e){l.push(`tsc: ${d}: ${e instanceof Error?e.message:String(e)}\n`),u=!0}return{stderr:l.join(``),hadError:u}}async function AI(e,t){let n;try{n=yI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:vI,stderr:``,exitCode:0}};let r;try{r=await Zn(_I(t))}catch(e){return{done:{stdout:``,stderr:`tsc: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}return n.showVersion?{done:{stdout:`Version ${r.version}\n`,stderr:``,exitCode:0}}:{parsed:n,ts:r}}function jI(){return S(`tsc`,async(e,t)=>{let n=await AI(e,t);if(`done`in n)return n.done;let{parsed:r,ts:i}=n,a=await wI(t.fs,i,t.cwd);if(r.files.length===0){let e=P(t.stdin);return e?OI(i,r,a,e):{stdout:vI,stderr:``,exitCode:0}}let o=[],s=!1;for(let e of r.files){let n=await kI(i,t,e,r,a);n.stderr&&o.push(n.stderr),n.hadError&&(s=!0)}return{stdout:``,stderr:o.join(``),exitCode:+!!s}})}const MI=[`**/*.test.{js,ts}`];function NI(e,t){let n,r=1;if(e===`--reporter`)n=t,r=2;else if(e.startsWith(`--reporter=`))n=e.slice(11);else return null;if(n!==`tap`&&n!==`spec`)throw Error(`tst: --reporter must be tap or spec`);return{reporter:n,consumed:r}}function PI(e,t){return e===`--coverage`?{consumed:1}:e===`--coverage-dir`&&t!==void 0?{coverageDir:t,consumed:2}:e.startsWith(`--coverage-dir=`)?{coverageDir:e.slice(15),consumed:1}:null}function FI(e){let t=[],n=`tap`,r=!1,i=!1,a=``;for(let o=0;o<e.length;o++){let s=e[o];if(s===`-h`||s===`--help`){r=!0;continue}let c=NI(s,e[o+1]);if(c){n=c.reporter,c.consumed===2&&(o+=1);continue}let l=PI(s,e[o+1]);if(l){i=!0,l.coverageDir!==void 0&&(a=l.coverageDir),l.consumed===2&&(o+=1);continue}if(s.startsWith(`-`))throw Error(`tst: unknown option: ${s}`);t.push(s)}return{globs:t.length>0?t:[...MI],reporter:n,showHelp:r,coverage:i,coverageDir:a}}function II(e){let t=e.indexOf(`{`);if(t===-1)return[e];let n=e.indexOf(`}`,t);if(n===-1)return[e];let r=e.slice(0,t),i=e.slice(n+1),a=e.slice(t+1,n).split(`,`),o=[];for(let e of a)for(let t of II(`${r}${e}${i}`))o.push(t);return o}function LI(e){let t=``,n=0;for(;n<e.length;){let r=e[n];r===`*`&&e[n+1]===`*`?(t+=`(?:.*/)?`,n+=2,e[n]===`/`&&(n+=1)):r===`*`?(t+=`[^/]*`,n+=1):r===`?`?(t+=`[^/]`,n+=1):`.+^$()[]|\\`.includes(r)?(t+=`\\${r}`,n+=1):(t+=r,n+=1)}return RegExp(`^${t}$`)}async function RI(e,t,n){let r=n.flatMap(II).map(LI),i=new Set,a=t===`/`?``:t;async function o(t){let n;try{n=await e.readdir(t)}catch{return}for(let s of n){if(s===`node_modules`||s.startsWith(`.`))continue;let n=t===`/`?`/${s}`:`${t}/${s}`,c=!1;try{c=(await e.stat(n)).isDirectory}catch{continue}if(c){await o(n);continue}let l=n.startsWith(`${a}/`)?n.slice(a.length+1):n;r.some(e=>e.test(l))&&i.add(n)}}return await o(t),[...i].sort()}let zI=null;async function BI(e){if(zI)return zI;let t={module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,esModuleInterop:!0,isolatedModules:!1};return zI=`
2996
+ `;function TI(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 EI(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 DI(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 OI(e){return{target:e.ScriptTarget.ES2022,module:e.ModuleKind.ESNext,moduleResolution:e.ModuleResolutionKind.Bundler,esModuleInterop:!0,allowSyntheticDefaultImports:!0,isolatedModules:!0}}function kI(e){if(typeof e!=`object`||!e)return{};let{compilerOptions:t}=e;return t??{}}async function AI(e,t,n){let r=OI(t),i=await DI(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,...kI(o)}}}function jI(e,t){let n=e.flattenDiagnosticMessageText(t.messageText,`
2997
+ `);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 MI(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 NI(e,t,n,r,i){let a=e.transpileModule(t,{compilerOptions:r,fileName:n,reportDiagnostics:i});return{outputText:a.outputText,diagnostics:a.diagnostics??[]}}function PI(e,t,n,r){let{outputText:i,diagnostics:a}=NI(e,r,`<stdin>.ts`,n.compilerOptions,!0),o=a.map(t=>jI(e,t)),s=o.length>0?`${o.join(`
2998
+ `)}\n`:``;return{stdout:t.noEmit?``:i,stderr:s,exitCode:+(a.length>0)}}async function FI(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}}MI(e,a);let{outputText:s,diagnostics:c}=NI(e,o,a,i.compilerOptions,!0),l=[];for(let t of c)l.push(`${jI(e,t)}\n`);let u=c.length>0;if(r.noEmit)return{stderr:l.join(``),hadError:u};let d=t.fs.resolvePath(t.cwd,EI(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 II(e,t){let n;try{n=TI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:wI,stderr:``,exitCode:0}};let r;try{r=await Zn(CI(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 LI(){return S(`tsc`,async(e,t)=>{let n=await II(e,t);if(`done`in n)return n.done;let{parsed:r,ts:i}=n,a=await AI(t.fs,i,t.cwd);if(r.files.length===0){let e=P(t.stdin);return e?PI(i,r,a,e):{stdout:wI,stderr:``,exitCode:0}}let o=[],s=!1;for(let e of r.files){let n=await FI(i,t,e,r,a);n.stderr&&o.push(n.stderr),n.hadError&&(s=!0)}return{stdout:``,stderr:o.join(``),exitCode:+!!s}})}const RI=[`**/*.test.{js,ts}`];function zI(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 BI(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 VI(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=zI(s,e[o+1]);if(c){n=c.reporter,c.consumed===2&&(o+=1);continue}let l=BI(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:[...RI],reporter:n,showHelp:r,coverage:i,coverageDir:a}}function HI(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 HI(`${r}${e}${i}`))o.push(t);return o}function UI(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 WI(e,t,n){let r=n.flatMap(HI).map(UI),i=new Set,a=t===`/`?``:t;async function o(t){let n;try{n=await e.readdir(t)}catch{return}for(let s of n){if(s===`node_modules`||s.startsWith(`.`))continue;let n=t===`/`?`/${s}`:`${t}/${s}`,c=!1;try{c=(await e.stat(n)).isDirectory}catch{continue}if(c){await o(n);continue}let l=n.startsWith(`${a}/`)?n.slice(a.length+1):n;r.some(e=>e.test(l))&&i.add(n)}}return await o(t),[...i].sort()}let GI=null;async function KI(e){if(GI)return GI;let t={module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,esModuleInterop:!0,isolatedModules:!1};return GI=`
2991
2999
  if (typeof process !== 'undefined' && !process.versions) {
2992
3000
  try { process.versions = { node: '20.0.0' }; } catch (_) { /* readonly process.versions is fine */ }
2993
3001
  }
2994
3002
  const __tst_assert_exports = (function () {
2995
3003
  const module = { exports: {} };
2996
3004
  const exports = module.exports;
2997
- ${e.transpileModule(hI,{compilerOptions:t,fileName:`assert.js`}).outputText}
3005
+ ${e.transpileModule(xI,{compilerOptions:t,fileName:`assert.js`}).outputText}
2998
3006
  return module.exports;
2999
3007
  })();
3000
3008
  const __tst_module_exports = (function () {
3001
3009
  const module = { exports: {} };
3002
3010
  const exports = module.exports;
3003
- ${e.transpileModule(gI,{compilerOptions:t,fileName:`tst.js`}).outputText.replace(/require\(["']\.\/assert\.js["']\)/g,`__tst_assert_exports`).replace(/\bimport\.meta\b/g,`({url:""})`).replace(/await\s+import\(['"](?:worker_threads|fs|path)['"]\)/g,`await Promise.reject(new Error("tst: fork mode is not supported in the realm"))`)}
3011
+ ${e.transpileModule(SI,{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
3012
  return module.exports;
3005
3013
  })();
3006
3014
  const __tst = __tst_module_exports.default || __tst_module_exports;
3007
3015
  __tst.manual = true;
3008
- `.trim(),zI}function VI(e,t=new Map){return e.replace(/(^|[^\w$.])require\(\s*(["'`])([^"'`]+)\2\s*\)/g,(e,n,r,i)=>i===`tst`||i===`tst/tst.js`?`${n}__tstReq("tst")`:i===`tst/assert`||i===`tst/assert.js`?`${n}__tstReq("tst/assert")`:t.has(i)?`${n}__localReq(${JSON.stringify(t.get(i))})`:e)}function HI(e){let t=new Set,n=/(?:^|[^\w$.])require\(\s*(["'`])([^"'`]+)\1\s*\)/g,r;for(;(r=n.exec(e))!==null;)t.add(r[2]);return[...t]}async function UI(e,t,n){let r=b(`${t}/${n}`),i=[r];r.endsWith(`.js`)&&i.push(`${r.slice(0,-3)}.ts`),/\.[a-zA-Z0-9]+$/.test(r)||i.push(`${r}.ts`,`${r}.js`);for(let t of i)if(await e.exists(t))return t;return null}async function WI(e,t,n,r,i,a){let o=new Map,s=new Map,c=[{path:n,cjs:r}];for(;c.length>0;){let{path:n,cjs:r}=c.shift(),l=ar(n),u=new Map;for(let n of HI(r)){if(!n.startsWith(`./`)&&!n.startsWith(`../`))continue;let r=await UI(e,l,n);if(!r||(u.set(n,r),o.has(r)))continue;let s=await e.readFile(r);a&&(s=a(s,r));let d=t.transpileModule(s,{compilerOptions:i,fileName:r}).outputText;o.set(r,d),c.push({path:r,cjs:d})}s.set(n,u)}return{modules:o,edgeRewrites:s}}function GI(e,t,n,r,i,a,o=``,s=``){let c=r===`spec`?`pretty`:`tap`,l=[];for(let[e,t]of i.entries()){let n=VI(t,a.get(e)??new Map);l.push(`${JSON.stringify(e)}: function (module, exports, require) {\n${n}\n}`)}let u=`{${l.join(`,
3009
- `)}}`,d=VI(n,a.get(t)??new Map),f=o,p=s;return`"use strict";
3016
+ `.trim(),GI}function qI(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 JI(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 YI(e,t,n){let r=b(`${t}/${n}`),i=[r];r.endsWith(`.js`)&&i.push(`${r.slice(0,-3)}.ts`),/\.[a-zA-Z0-9]+$/.test(r)||i.push(`${r}.ts`,`${r}.js`);for(let t of i)if(await e.exists(t))return t;return null}async function XI(e,t,n,r,i,a){let o=new Map,s=new Map,c=[{path:n,cjs:r}];for(;c.length>0;){let{path:n,cjs:r}=c.shift(),l=ar(n),u=new Map;for(let n of JI(r)){if(!n.startsWith(`./`)&&!n.startsWith(`../`))continue;let r=await YI(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 ZI(e,t,n,r,i,a,o=``,s=``){let c=r===`spec`?`pretty`:`tap`,l=[];for(let[e,t]of i.entries()){let n=qI(t,a.get(e)??new Map);l.push(`${JSON.stringify(e)}: function (module, exports, require) {\n${n}\n}`)}let u=`{${l.join(`,
3017
+ `)}}`,d=qI(n,a.get(t)??new Map),f=o,p=s;return`"use strict";
3010
3018
  ${f}${e}
3011
3019
  const __realmRequire = require;
3012
3020
  const { createRequire: __createRequire } = __realmRequire("module");
@@ -3049,7 +3057,7 @@ await Promise.resolve();
3049
3057
  await new Promise((resolve) => setTimeout(resolve));
3050
3058
  ${p}
3051
3059
  if (__state && __state.failed && __state.failed.length > 0) process.exit(1);
3052
- `}const KI={esModuleInterop:!0,allowJs:!0,isolatedModules:!1};function qI(e){return{module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,...KI}}async function JI(e,t){let n;try{n=FI(e)}catch(e){return{done:{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:2}}}if(n.showHelp)return{done:{stdout:`tst - run *.test.{js,ts} files with the bundled tst runner
3060
+ `}const QI={esModuleInterop:!0,allowJs:!0,isolatedModules:!1};function $I(e){return{module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2022,...QI}}async function eL(e,t){let n;try{n=VI(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
3061
 
3054
3062
  Usage:
3055
3063
  tst [options] [glob...]
@@ -3071,7 +3079,7 @@ Notes:
3071
3079
  with statement counters. nyc/c8 cannot wrap this runner: it is not a
3072
3080
  Node child. Istanbul/Babel are not bundled (webapp size-limit); the
3073
3081
  TypeScript AST already in process does the rewrite.
3074
- `,stderr:``,exitCode:0}};let r=await RI(t.fs,t.cwd,n.globs);if(r.length===0)return{done:{stdout:``,stderr:`tst: no test files matched ${n.globs.join(` `)}\n`,exitCode:1}};let i;try{i=await Zn(_I(t))}catch(e){return{done:{stdout:``,stderr:`tst: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}let a=await BI(i),o=n.coverage?await import(`./coverage-instrument-CjoHgKzK.js`):null;return{parsed:n,files:r,ts:i,harness:a,userOpts:qI(i),coverageMaps:{},coverageCounts:{},coverageMod:o}}function YI(e){return e.includes(`# fail `)||/(^|\n)not ok /.test(e)}async function XI(e,t,n,r){let{ts:i,harness:a,userOpts:o,parsed:s}=t,c=t.coverageMod,l=c?(e,n)=>{let{source:r,map:a}=c.instrumentSource(i,e,n);return t.coverageMaps[n]=a,r}:void 0,u;try{u=await e.fs.readFile(n)}catch(e){return{stdout:``,stderr:`tst: ${n}: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}l&&(u=l(u,n));let d;try{d=i.transpileModule(u,{compilerOptions:o,fileName:n}).outputText}catch(e){return{stdout:``,stderr:`tst: ${n}: transpile error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let f,p;try{({modules:f,edgeRewrites:p}=await WI(e.fs,i,n,d,o,l))}catch(e){return{stdout:``,stderr:`tst: ${n}: local-require resolve error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let m=GI(a,n,d,s.reporter,f,p,c?`${c.coverageRuntimeSource()}\n`:``,c?`\n${c.coverageDumpSource()}`:``),h=await 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||YI(g)}}function ZI(){return S(`tst`,async(e,t)=>{let n=await JI(e,t);if(`done`in n)return n.done;let r=n.files.length>1,i=``,a=``,o=!1;for(let e of n.files){let s=await XI(t,n,e,r);i+=s.stdout,a+=s.stderr,s.failed&&(o=!0)}if(n.coverageMod){let e=n.coverageMod.resolveCoverageDir(t.cwd,n.parsed.coverageDir,(e,n)=>t.fs.resolvePath(e,n)),r=JSON.stringify({counts:n.coverageCounts,maps:n.coverageMaps},null,2),s=n.coverageMod.toLcov(n.coverageCounts,n.coverageMaps),c=n.coverageMod.coverageSummary(n.coverageCounts,n.coverageMaps);try{await t.fs.writeFile(`${e}/coverage.json`,r),await t.fs.writeFile(`${e}/coverage.lcov`,s)}catch(t){a+=`tst: writing coverage to ${e}: ${t instanceof Error?t.message:String(t)}\n`,o=!0}i+=`\n${c}`}return{stdout:i,stderr:a,exitCode:+!!o}})}const QI=[],$I=`usage: theme <subcommand> [args]
3082
+ `,stderr:``,exitCode:0}};let r=await WI(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(CI(t))}catch(e){return{done:{stdout:``,stderr:`tst: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}let a=await KI(i),o=n.coverage?await import(`./coverage-instrument-CjoHgKzK.js`):null;return{parsed:n,files:r,ts:i,harness:a,userOpts:$I(i),coverageMaps:{},coverageCounts:{},coverageMod:o}}function tL(e){return e.includes(`# fail `)||/(^|\n)not ok /.test(e)}async function nL(e,t,n,r){let{ts:i,harness:a,userOpts:o,parsed:s}=t,c=t.coverageMod,l=c?(e,n)=>{let{source:r,map:a}=c.instrumentSource(i,e,n);return t.coverageMaps[n]=a,r}:void 0,u;try{u=await e.fs.readFile(n)}catch(e){return{stdout:``,stderr:`tst: ${n}: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}l&&(u=l(u,n));let d;try{d=i.transpileModule(u,{compilerOptions:o,fileName:n}).outputText}catch(e){return{stdout:``,stderr:`tst: ${n}: transpile error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let f,p;try{({modules:f,edgeRewrites:p}=await XI(e.fs,i,n,d,o,l))}catch(e){return{stdout:``,stderr:`tst: ${n}: local-require resolve error: ${e instanceof Error?e.message:String(e)}\n`,failed:!0}}let m=ZI(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||tL(g)}}function rL(){return S(`tst`,async(e,t)=>{let n=await eL(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 nL(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 iL=[],aL=`usage: theme <subcommand> [args]
3075
3083
 
3076
3084
  Subcommands:
3077
3085
  list List available preset and custom themes
@@ -3080,23 +3088,23 @@ Subcommands:
3080
3088
  reset Reset to the default theme
3081
3089
  current Show the currently active theme
3082
3090
  export <id> <path> Export a theme to a VFS path
3083
- `;function eL(e,t){return{stdout:``,stderr:`theme ${e}: ${t}\n`,exitCode:1}}function tL(){return S(`theme`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return{stdout:$I,stderr:``,exitCode:0};let n=e[0];return w(e.slice(1),{valueFlags:QI})?{stdout:$e(`theme`,n,$I),stderr:``,exitCode:0}:n===`list`?nL(e):n===`current`?rL(e):n===`reset`?iL(e):n===`apply`?aL(e.slice(1),t):n===`export`?oL(e.slice(1),t):{stdout:``,stderr:`theme: unknown subcommand "${n}"\n${$I}`,exitCode:1}})}async function nL(e){let t=C(e.slice(1),{value:QI});if(`error`in t)return eL(`list`,t.error);let{PRESETS:n}=await import(`./theme-presets-xiOb9AFN.js`),r=[`Presets:`];for(let e of n)r.push(` ${e.id.padEnd(16)} ${e.name}`);return r.push(``),{stdout:r.join(`
3084
- `),stderr:``,exitCode:0}}async function rL(e){let t=C(e.slice(1),{value:QI});return`error`in t?eL(`current`,t.error):{stdout:`Check the Theme settings dialog for the active theme.
3085
- `,stderr:``,exitCode:0}}async function iL(e){let t=C(e.slice(1),{value:QI});if(`error`in t)return eL(`reset`,t.error);let n=y();return n?(await n.call(`theme-apply`,{action:`reset`}),{stdout:`Theme reset to default.
3091
+ `;function oL(e,t){return{stdout:``,stderr:`theme ${e}: ${t}\n`,exitCode:1}}function sL(){return S(`theme`,async(e,t)=>{if(e.length===0||e[0]===`--help`||e[0]===`-h`)return{stdout:aL,stderr:``,exitCode:0};let n=e[0];return w(e.slice(1),{valueFlags:iL})?{stdout:$e(`theme`,n,aL),stderr:``,exitCode:0}:n===`list`?cL(e):n===`current`?lL(e):n===`reset`?uL(e):n===`apply`?dL(e.slice(1),t):n===`export`?fL(e.slice(1),t):{stdout:``,stderr:`theme: unknown subcommand "${n}"\n${aL}`,exitCode:1}})}async function cL(e){let t=C(e.slice(1),{value:iL});if(`error`in t)return oL(`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(`
3092
+ `),stderr:``,exitCode:0}}async function lL(e){let t=C(e.slice(1),{value:iL});return`error`in t?oL(`current`,t.error):{stdout:`Check the Theme settings dialog for the active theme.
3093
+ `,stderr:``,exitCode:0}}async function uL(e){let t=C(e.slice(1),{value:iL});if(`error`in t)return oL(`reset`,t.error);let n=y();return n?(await n.call(`theme-apply`,{action:`reset`}),{stdout:`Theme reset to default.
3086
3094
  `,stderr:``,exitCode:0}):{stdout:``,stderr:`theme: no panel-RPC connection available
3087
- `,exitCode:1}}async function aL(e,t){let n=C(e,{value:QI});if(`error`in n)return eL(`apply`,n.error);if(n.positionals.length===0)return{stdout:``,stderr:`theme apply: missing theme id or path
3095
+ `,exitCode:1}}async function dL(e,t){let n=C(e,{value:iL});if(`error`in n)return oL(`apply`,n.error);if(n.positionals.length===0)return{stdout:``,stderr:`theme apply: missing theme id or path
3088
3096
  `,exitCode:1};let r=y();if(!r)return{stdout:``,stderr:`theme: no panel-RPC connection available
3089
3097
  `,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
3098
  `,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 oL(e,t){let n=C(e,{value:QI});if(`error`in n)return eL(`export`,n.error);if(n.positionals.length<2)return{stdout:``,stderr:`theme export: usage: theme export <id> <path>
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 sL=`unknown`,cL=`usage: uname [-amnorsv]`,lL=[`s`,`n`,`r`,`v`,`m`,`o`];function uL(){return{stdout:[cL,` -s kernel name (SLICC) -n nodename (leader/follower/standalone)`,` -r release (SLICC version) -v build stamp`,` -m machine (realm platform) -o operating system (user agent)`,` -a all of the above, in uname order`,``].join(`
3093
- `),stderr:``,exitCode:0}}function dL(){let{releasedAt:e,buildId:t}=Ke();return e?`${t} (${e})`:t}function fL(){let e=globalThis.navigator,t=e?.userAgentData?.platform||e?.platform;return typeof t==`string`&&t.length>0?t:sL}function pL(){let e=globalThis.navigator?.userAgent;return typeof e==`string`&&e.length>0?e:sL}function mL(e){switch(e){case`s`:return`SLICC`;case`n`:return Ge();case`r`:return Ke().version;case`v`:return dL();case`m`:return fL();case`o`:return pL()}}function hL(e){return{stdout:``,stderr:`uname: ${e}\n${cL}\n`,exitCode:1}}function gL(e){let t=new Set;for(let n of e){if(!n.startsWith(`-`)||n===`-`)return{error:`extra operand '${n}'`};if(n.startsWith(`--`))return{error:`unrecognized option '${n}'`};for(let e of n.slice(1)){if(e===`a`){for(let e of lL)t.add(e);continue}if(!lL.includes(e))return{error:`unrecognized option '-${e}'`};t.add(e)}}return t}function _L(){return S(`uname`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return uL();let t=gL(e);return`error`in t?hL(t.error):{stdout:`${(t.size>0?lL.filter(e=>t.has(e)):[`s`]).map(mL).join(` `)}\n`,stderr:``,exitCode:0}})}function vL(){return S(`unlink`,async(e,t)=>{if(e.includes(`--help`))return{stdout:`Usage: unlink FILE
3099
+ `,exitCode:1}}return{stdout:`Applied theme: ${(await r.call(`theme-apply`,{themeJson:c,action:`apply`})).applied}\n`,stderr:``,exitCode:0}}async function fL(e,t){let n=C(e,{value:iL});if(`error`in n)return oL(`export`,n.error);if(n.positionals.length<2)return{stdout:``,stderr:`theme export: usage: theme export <id> <path>
3100
+ `,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 pL=`unknown`,mL=`usage: uname [-amnorsv]`,hL=[`s`,`n`,`r`,`v`,`m`,`o`];function gL(){return{stdout:[mL,` -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(`
3101
+ `),stderr:``,exitCode:0}}function _L(){let{releasedAt:e,buildId:t}=Ke();return e?`${t} (${e})`:t}function vL(){let e=globalThis.navigator,t=e?.userAgentData?.platform||e?.platform;return typeof t==`string`&&t.length>0?t:pL}function yL(){let e=globalThis.navigator?.userAgent;return typeof e==`string`&&e.length>0?e:pL}function bL(e){switch(e){case`s`:return`SLICC`;case`n`:return Ge();case`r`:return Ke().version;case`v`:return _L();case`m`:return vL();case`o`:return yL()}}function xL(e){return{stdout:``,stderr:`uname: ${e}\n${mL}\n`,exitCode:1}}function SL(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 hL)t.add(e);continue}if(!hL.includes(e))return{error:`unrecognized option '-${e}'`};t.add(e)}}return t}function CL(){return S(`uname`,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return gL();let t=SL(e);return`error`in t?xL(t.error):{stdout:`${(t.size>0?hL.filter(e=>t.has(e)):[`s`]).map(bL).join(` `)}\n`,stderr:``,exitCode:0}})}function wL(){return S(`unlink`,async(e,t)=>{if(e.includes(`--help`))return{stdout:`Usage: unlink FILE
3094
3102
  Remove FILE. Symbolic links are removed without following their target.
3095
3103
  `,stderr:``,exitCode:0};if(e.length!==1||e[0].startsWith(`-`))return{stdout:``,stderr:e.length===0?`unlink: missing operand
3096
3104
  `:`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 yL(){return{stdout:`usage: unzip <archive.zip> [-d <destination>]
3098
- `,stderr:``,exitCode:0}}function bL(e){let t=`.`,n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i===`-d`){t=e[r+1]??``,r++;continue}if(i.startsWith(`-`))return{kind:`error`,result:{stdout:``,stderr:`unzip: unsupported option ${i}\n`,exitCode:1}};n.push(i)}return n.length<1?{kind:`error`,result:{stdout:``,stderr:`unzip: expected archive path
3099
- `,exitCode:1}}:{kind:`ok`,archive:n[0],destination:t||`.`}}async function xL(e,t,n,r){let i=n.replace(/\\/g,`/`);if(!i||i.endsWith(`/`))return!1;let a=e.fs.resolvePath(t,i);if(!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 SL(){return S(`unzip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return yL();let n=bL(e);if(n.kind===`error`)return n.result;let r=t.fs.resolvePath(t.cwd,n.archive),i=t.fs.resolvePath(t.cwd,n.destination);await t.fs.mkdir(i,{recursive:!0});let a=await t.fs.readFileBuffer(r),o=xt(a),s=0;for(let[e,n]of Object.entries(o)){let r=await xL(t,i,e,n);if(r===!0)s++;else if(r!==!1)return r}return{stdout:`extracted ${s} file(s) to ${i}\n`,stderr:``,exitCode:0}})}const CL=`ai-ecoverse/slicc`,wL=`usage: upgrade status | upgrade apply --from=<version> --to=<version>`,TL=`packages/vfs-root`,EL=3e4,DL=[`${TL}/workspace/skills/`,`${TL}/shared/sprinkles/`,`${TL}/shared/sounds/`,`${TL}/shared/GELATIERE.md`,`${TL}/shared/wiki/WIKI.md`,`${TL}/etc/`],OL=[`auto-applied`,`merged-clean`,`kept-local`,`needs-review`,`unchanged`,`added-new`];function kL(){return Object.fromEntries(OL.map(e=>[e,0]))}function AL(e,t,n,r){let i=kL();for(let e of n)i[e.classification]+=1;return`${JSON.stringify({ok:r.length===0&&i[`needs-review`]===0,from:e,to:t,results:n.map(({path:e,classification:t,sidecar:n})=>({path:e,status:t,...n?{sidecar:n}:{}})),summary:i,errors:r})}\n`}function jL(e){if(e[0]!==`apply`)throw Error(wL);let t=new Map;for(let n of e.slice(1)){let e=n.match(/^--(from|to)=(.+)$/);if(!e)throw Error(`unsupported argument: ${n}`);t.set(e[1],e[2])}let n=t.get(`from`)??``,r=t.get(`to`)??``,i=/^v?[0-9][0-9A-Za-z.+_-]*$/;if(!i.test(n)||!i.test(r))throw Error(`both --from and --to must be release versions`);return{from:n,to:r}}function ML(e){return e.startsWith(`v`)?e:`v${e}`}function NL(e){if(!DL.some(t=>e.startsWith(t)))return null;let t=e.slice(17);return!t||t.split(`/`).some(e=>e===`.`||e===`..`)?null:t}async function PL(e,t){let n,r;try{n=await Promise.race([e(t,{method:`GET`,headers:{Accept:`application/json`}}),new Promise((e,t)=>{r=setTimeout(()=>t(Error(`request timed out after ${EL}ms`)),EL)})])}catch(e){let n=e instanceof Error?e.message:String(e);throw Error(`fetch failed for ${t}: ${n}`)}finally{r!==void 0&&clearTimeout(r)}if(n.status<200||n.status>=300)throw Error(`fetch failed for ${t}: HTTP ${n.status} ${n.statusText}`);return n}async function FL(e,t){let n=await PL(t,`https://api.github.com/repos/${CL}/git/trees/${encodeURIComponent(e)}?recursive=1`),r=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=NL(e.path);t&&i.set(t,e.path)}return i}function IL(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`https://raw.githubusercontent.com/${CL}/${encodeURIComponent(e)}/${n}`}function LL(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}function RL(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}async function zL(e,t){if(!await e.exists(t))return;let n=await e.readFile(t,{encoding:`binary`});return n instanceof Uint8Array?n:new TextEncoder().encode(n)}async function BL(e,t,n,r,i){let a=`${t}.upgrade-${ML(n)}-to-${ML(r)}.conflict`;if(!i.has(a)&&!await e.exists(a))return i.add(a),a;for(let t=1;;t+=1){let n=`${a}.${t}`;if(!i.has(n)&&!await e.exists(n))return i.add(n),n}}async function VL(e,t,n,r,i,a,o){let s=await zL(e.fs,t);if(!a)return{path:t,classification:s?`kept-local`:`unchanged`};if(!i)return s?{path:t,classification:LL(s,a)?`unchanged`:`kept-local`}:{path:t,classification:`added-new`,content:a};if(LL(i,a)||LL(s,a))return{path:t,classification:`unchanged`};if(!s)return{path:t,classification:`kept-local`};if(LL(s,i))return{path:t,classification:`auto-applied`,content:a};let[c,l,u]=[s,i,a].map(RL);if(c!==null&&l!==null&&u!==null){let i=ke(c,l,u,{diff3:!0,labels:{current:`local:${t}`,base:`${ML(n)}:${t}`,other:`${ML(r)}:${t}`}}),a=new TextEncoder().encode(i.content);return i.conflicts===0?{path:t,classification:`merged-clean`,content:a}:{path:t,classification:`needs-review`,content:a,sidecar:await BL(e.fs,t,n,r,o)}}return{path:t,classification:`needs-review`,content:a,sidecar:await BL(e.fs,t,n,r,o)}}async function HL(e,t){t.content?await e.writeFile(t.path,t.content):await e.exists(t.path)&&await e.rm(t.path)}async function UL(e,t){let n=t.filter(e=>e.content!==void 0),r=await Promise.all(n.map(async t=>{let n=t.sidecar??t.path;return{path:n,content:await zL(e,n)}})),i=[];for(let t=0;t<n.length;t+=1){let a=n[t],o=r[t];try{await e.writeFile(o.path,a.content),i.push(o)}catch(t){let n=[];for(let t of[o,...i.slice().reverse()])try{await HL(e,t)}catch(e){n.push(`${t.path}: ${e instanceof Error?e.message:String(e)}`)}let r=t instanceof Error?t.message:String(t),a=n.length===0?`all writes rolled back`:`rollback failed (${n.join(`; `)})`;throw Error(`apply failed for ${o.path}: ${r}; ${a}`)}}}async function WL(e,t,n){let r=ML(t),i=ML(n),[a,o]=await Promise.all([FL(r,e.fetch),FL(i,e.fetch)]),s=[...new Set([...a.keys(),...o.keys()])].sort(),c=await Promise.all(s.map(async t=>{let[n,s]=await Promise.all([a.has(t)?PL(e.fetch,IL(r,a.get(t))).then(e=>fe(e.body)):void 0,o.has(t)?PL(e.fetch,IL(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 VL(e,r,t,n,i,a,l));return await UL(e.fs,u),u}async function GL(e){let{version:t,releasedAt:n,buildId:r}=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 KL(e){return S(`upgrade`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`${wL}\n`,stderr:``,exitCode:0};if(t[0]===`status`)return t.length>1?{stdout:AL(``,``,[],[`unsupported argument: ${t[1]}`]),stderr:``,exitCode:1}:{stdout:await GL(e),stderr:``,exitCode:0};let n=``,r=``;try{({from:n,to:r}=jL(t));let i=await WL(e,n,r),a=i.some(e=>e.classification===`needs-review`);return{stdout:AL(n,r,i,[]),stderr:``,exitCode:+!!a}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:AL(n,r,[],[t]),stderr:``,exitCode:1}}})}const qL=`usage: uptime [-p|--pretty] [-s|--since]`,JL=`${qL}
3105
+ `,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 TL(){return{stdout:`usage: unzip <archive.zip> [-d <destination>]
3106
+ `,stderr:``,exitCode:0}}function EL(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
3107
+ `,exitCode:1}}:{kind:`ok`,archive:n[0],destination:t||`.`}}async function DL(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 OL(){return S(`unzip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return TL();let n=EL(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 DL(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 kL=`ai-ecoverse/slicc`,AL=`usage: upgrade status | upgrade apply --from=<version> --to=<version>`,jL=`packages/vfs-root`,ML=3e4,NL=[`${jL}/workspace/skills/`,`${jL}/shared/sprinkles/`,`${jL}/shared/sounds/`,`${jL}/shared/GELATIERE.md`,`${jL}/shared/wiki/WIKI.md`,`${jL}/etc/`],PL=[`auto-applied`,`merged-clean`,`kept-local`,`needs-review`,`unchanged`,`added-new`];function FL(){return Object.fromEntries(PL.map(e=>[e,0]))}function IL(e,t,n,r){let i=FL();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 LL(e){if(e[0]!==`apply`)throw Error(AL);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 RL(e){return e.startsWith(`v`)?e:`v${e}`}function zL(e){if(!NL.some(t=>e.startsWith(t)))return null;let t=e.slice(17);return!t||t.split(`/`).some(e=>e===`.`||e===`..`)?null:t}async function BL(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 ${ML}ms`)),ML)})])}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 VL(e,t){let n=await BL(t,`https://api.github.com/repos/${kL}/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=zL(e.path);t&&i.set(t,e.path)}return i}function HL(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`https://raw.githubusercontent.com/${kL}/${encodeURIComponent(e)}/${n}`}function UL(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}function WL(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}async function GL(e,t){if(!await e.exists(t))return;let n=await e.readFile(t,{encoding:`binary`});return n instanceof Uint8Array?n:new TextEncoder().encode(n)}async function KL(e,t,n,r,i){let a=`${t}.upgrade-${RL(n)}-to-${RL(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 qL(e,t,n,r,i,a,o){let s=await GL(e.fs,t);if(!a)return{path:t,classification:s?`kept-local`:`unchanged`};if(!i)return s?{path:t,classification:UL(s,a)?`unchanged`:`kept-local`}:{path:t,classification:`added-new`,content:a};if(UL(i,a)||UL(s,a))return{path:t,classification:`unchanged`};if(!s)return{path:t,classification:`kept-local`};if(UL(s,i))return{path:t,classification:`auto-applied`,content:a};let[c,l,u]=[s,i,a].map(WL);if(c!==null&&l!==null&&u!==null){let i=ke(c,l,u,{diff3:!0,labels:{current:`local:${t}`,base:`${RL(n)}:${t}`,other:`${RL(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 KL(e.fs,t,n,r,o)}}return{path:t,classification:`needs-review`,content:a,sidecar:await KL(e.fs,t,n,r,o)}}async function JL(e,t){t.content?await e.writeFile(t.path,t.content):await e.exists(t.path)&&await e.rm(t.path)}async function YL(e,t){let n=t.filter(e=>e.content!==void 0),r=await Promise.all(n.map(async t=>{let n=t.sidecar??t.path;return{path:n,content:await GL(e,n)}})),i=[];for(let t=0;t<n.length;t+=1){let a=n[t],o=r[t];try{await e.writeFile(o.path,a.content),i.push(o)}catch(t){let n=[];for(let t of[o,...i.slice().reverse()])try{await JL(e,t)}catch(e){n.push(`${t.path}: ${e instanceof Error?e.message:String(e)}`)}let r=t instanceof Error?t.message:String(t),a=n.length===0?`all writes rolled back`:`rollback failed (${n.join(`; `)})`;throw Error(`apply failed for ${o.path}: ${r}; ${a}`)}}}async function XL(e,t,n){let r=RL(t),i=RL(n),[a,o]=await Promise.all([VL(r,e.fetch),VL(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)?BL(e.fetch,HL(r,a.get(t))).then(e=>fe(e.body)):void 0,o.has(t)?BL(e.fetch,HL(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 qL(e,r,t,n,i,a,l));return await YL(e.fs,u),u}async function ZL(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 QL(e){return S(`upgrade`,async t=>{if(t.includes(`--help`)||t.includes(`-h`))return{stdout:`${AL}\n`,stderr:``,exitCode:0};if(t[0]===`status`)return t.length>1?{stdout:IL(``,``,[],[`unsupported argument: ${t[1]}`]),stderr:``,exitCode:1}:{stdout:await ZL(e),stderr:``,exitCode:0};let n=``,r=``;try{({from:n,to:r}=LL(t));let i=await XL(e,n,r),a=i.some(e=>e.classification===`needs-review`);return{stdout:IL(n,r,i,[]),stderr:``,exitCode:+!!a}}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:IL(n,r,[],[t]),stderr:``,exitCode:1}}})}const $L=`usage: uptime [-p|--pretty] [-s|--since]`,eR=`${$L}
3100
3108
 
3101
3109
  Print how long this SLICC has been running. The clock starts when the browser
3102
3110
  window was last loaded — a reload is a reboot.
@@ -3112,7 +3120,7 @@ The load average is the average number of live kernel processes over the last
3112
3120
  processes are retained in bounded numbers, so a long burst of short commands
3113
3121
  can under-report the older windows. The user count is always 1: a SLICC
3114
3122
  runtime has one user identity (see \`id\`).
3115
- `,YL=[1,5,15],XL=6e4,ZL=60*XL,QL=24*ZL;function $L(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function eR(e,t,n,r){let i=Math.min(n,Math.max(1,t-r)),a=t-i,o=0;for(let n of e){let e=Math.min(n.finishedAt??t,t);o+=Math.max(0,e-Math.max(n.startedAt,a))}return o/i}function tR(e){let t=Math.max(0,e),n=Math.floor(t/QL),r=Math.floor(t%QL/ZL),i=Math.floor(t%ZL/XL),a=r>0?`${r}:${String(i).padStart(2,`0`)}`:`${i} min`;return n===0?a:`${n} ${n===1?`day`:`days`}, ${a}`}function nR(e){let t=Math.max(0,e),n=[],r=(e,t)=>{e>0&&n.push(`${e} ${t}${e===1?``:`s`}`)};return r(Math.floor(t/QL),`day`),r(Math.floor(t%QL/ZL),`hour`),r(Math.floor(t%ZL/XL),`minute`),n.length===0?`up ${Math.floor(t/1e3)} seconds`:`up ${n.join(`, `)}`}function rR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function iR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function aR(e,t,n){let r=YL.map(r=>eR(e,t,r*XL,n).toFixed(2));return` ${iR(t)} up ${tR(t-n)}, 1 user, load average: ${r.join(`, `)}\n`}function oR(e){let t=`default`;for(let n of e)switch(n){case`-p`:case`--pretty`:t=`pretty`;break;case`-s`:case`--since`:t=`since`;break;case`-h`:case`--help`:return`help`;case`--version`:return`version`;default:return{error:`unrecognized option '${n}'`}}return t}function sR(e={}){return S(`uptime`,async t=>{let n=oR(t);if(typeof n!=`string`)return{stdout:``,stderr:`uptime: ${n.error}\n${qL}\n`,exitCode:1};if(n===`help`)return{stdout:JL,stderr:``,exitCode:0};if(n===`version`)return{stdout:`uptime (SLICC) ${Ke().version}\n`,stderr:``,exitCode:0};let r=e.now?e.now():Date.now(),i=e.bootedAt?e.bootedAt():pa();if(n===`since`)return cR(`${rR(i)}\n`);if(n===`pretty`)return cR(`${nR(r-i)}\n`);let a=e.processManager??$L();return cR(aR(a?a.list():[],r,i))})}function cR(e){return{stdout:e,stderr:``,exitCode:0}}const lR=new Set([`--vid`,`--pid`,`--class`,`--subclass`,`--protocol`,`--serial`,`--request-type`,`--recipient`,`--request`,`--value`,`--index`,`--__resolved`]);function uR(e){return vn(e,lR)}function Y(e,t){let n=/^0x/i.test(e)?parseInt(e,16):parseInt(e,10);if(!Number.isFinite(n)||Number.isNaN(n))throw Error(`invalid ${t}: '${e}'`);return n}function dR(e){let t={};return e.has(`--vid`)&&(t.vendorId=Y(e.get(`--vid`),`vid`)),e.has(`--pid`)&&(t.productId=Y(e.get(`--pid`),`pid`)),e.has(`--class`)&&(t.classCode=Y(e.get(`--class`),`class`)),e.has(`--subclass`)&&(t.subclassCode=Y(e.get(`--subclass`),`subclass`)),e.has(`--protocol`)&&(t.protocolCode=Y(e.get(`--protocol`),`protocol`)),e.has(`--serial`)&&(t.serialNumber=e.get(`--serial`)),Object.keys(t).length>0?[t]:[]}const fR=new Set([`standard`,`class`,`vendor`]),pR=new Set([`device`,`interface`,`endpoint`,`other`]);function mR(e){let t=e.get(`--request-type`)??`vendor`,n=e.get(`--recipient`)??`device`;if(!fR.has(t))throw Error(`invalid --request-type: '${t}'`);if(!pR.has(n))throw Error(`invalid --recipient: '${n}'`);return{requestType:t,recipient:n,request:Y(e.get(`--request`)??`0`,`request`),value:Y(e.get(`--value`)??`0`,`value`),index:Y(e.get(`--index`)??`0`,`index`)}}function hR(e){let t=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 gR(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function _R(e){return`0x${e.toString(16).padStart(4,`0`)}`}function vR(e){let t=[e.manufacturerName,e.productName].filter(Boolean).join(` `)||`(unknown)`,n=e.serialNumber?` serial=${e.serialNumber}`:``,r=e.opened?` [open]`:``;return`${e.handle}\t${_R(e.vendorId)}:${_R(e.productId)}\t${t}${n}${r}`}function X(e){return{stdout:e,stderr:``,exitCode:0}}function Z(e){return{stdout:``,stderr:`usb: ${e}\n`,exitCode:1}}const yR=`usb - access USB devices via WebUSB
3123
+ `,tR=[1,5,15],nR=6e4,rR=60*nR,iR=24*rR;function aR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.list==`function`?e:null}function oR(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 sR(e){let t=Math.max(0,e),n=Math.floor(t/iR),r=Math.floor(t%iR/rR),i=Math.floor(t%rR/nR),a=r>0?`${r}:${String(i).padStart(2,`0`)}`:`${i} min`;return n===0?a:`${n} ${n===1?`day`:`days`}, ${a}`}function cR(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/iR),`day`),r(Math.floor(t%iR/rR),`hour`),r(Math.floor(t%rR/nR),`minute`),n.length===0?`up ${Math.floor(t/1e3)} seconds`:`up ${n.join(`, `)}`}function lR(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 uR(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function dR(e,t,n){let r=tR.map(r=>oR(e,t,r*nR,n).toFixed(2));return` ${uR(t)} up ${sR(t-n)}, 1 user, load average: ${r.join(`, `)}\n`}function fR(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 pR(e={}){return S(`uptime`,async t=>{let n=fR(t);if(typeof n!=`string`)return{stdout:``,stderr:`uptime: ${n.error}\n${$L}\n`,exitCode:1};if(n===`help`)return{stdout:eR,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():fa();if(n===`since`)return mR(`${lR(i)}\n`);if(n===`pretty`)return mR(`${cR(r-i)}\n`);let a=e.processManager??aR();return mR(dR(a?a.list():[],r,i))})}function mR(e){return{stdout:e,stderr:``,exitCode:0}}const hR=new Set([`--vid`,`--pid`,`--class`,`--subclass`,`--protocol`,`--serial`,`--request-type`,`--recipient`,`--request`,`--value`,`--index`,`--__resolved`]);function gR(e){return vn(e,hR)}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 _R(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 vR=new Set([`standard`,`class`,`vendor`]),yR=new Set([`device`,`interface`,`endpoint`,`other`]);function bR(e){let t=e.get(`--request-type`)??`vendor`,n=e.get(`--recipient`)??`device`;if(!vR.has(t))throw Error(`invalid --request-type: '${t}'`);if(!yR.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 xR(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 SR(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(` `)}function CR(e){return`0x${e.toString(16).padStart(4,`0`)}`}function wR(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${CR(e.vendorId)}:${CR(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 TR=`usb - access USB devices via WebUSB
3116
3124
 
3117
3125
  Usage: usb <subcommand> [options]
3118
3126
 
@@ -3151,11 +3159,11 @@ Options:
3151
3159
  -h, --help
3152
3160
 
3153
3161
  Transfers are capped at ${$r} bytes (4 MiB).
3154
- `;function bR(e,t){if(t){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return X(t)}return X(e.length?`${gR(e)}\n`:``)}async function xR(e){let t=await e.list();return t.length===0?X(`no granted USB devices
3155
- `):X(`${t.map(vR).join(`
3156
- `)}\n`)}async function SR(e,t){let n=e.get(`--__resolved`);if(n)return X(`${vR(await t.info(n))}\n`);let r=dR(e),i=xe();if(i){let e=await Sx(`usb-device`,r,i);if(e.handle)return X(`${vR(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(`${vR(Xr(s,o))}\n`)}return X(`${vR(await t.request(r))}\n`)}async function CR(e,t,n,r){let i=t[1];if(!i)return Z(`${e}: handle required`);let a=r.has(`--force`);return e===`open`?await n.open(i):e===`close`?await n.close(i,{force:a}):await n.reset(i,{force:a}),X(``)}async function wR(e,t){let[,n,r,i]=e;return!n||r===void 0||i===void 0?Z(`clear-halt: handle, direction and endpoint required`):r!==`in`&&r!==`out`?Z(`clear-halt: direction must be 'in' or 'out', got '${r}'`):(await t.clearHalt(n,r,Y(i,`endpoint`)),X(``))}async function TR(e,t){let[,n,r]=e;return!n||r===void 0?Z(`select-config: handle and value required`):(await t.selectConfig(n,Y(r,`configuration`)),X(``))}async function ER(e,t,n,r){let[,i,a]=t;if(!i||a===void 0)return Z(`${e}: handle and interface required`);let o=Y(a,`interface`);return e===`claim`?await n.claim(i,o,{wait:r.has(`--wait`)}):await n.release(i,o),X(``)}async function DR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`control-in: handle and length required`);let o=Y(a,`length`);return o>4194304?Z(`control-in length exceeds 4 MiB limit`):bR((await n.controlIn(i,mR(t),o)).bytes,r)}async function OR(e,t,n,r){let i=e[1];if(!i)return Z(`control-out: handle required`);let a=hR(t);return a.length>4194304?Z(`control-out payload exceeds 4 MiB limit`):X(`${(await r.controlOut(i,mR(n),a)).bytesWritten} bytes written\n`)}async function kR(e,t,n,r){let[,i,a,o]=e;if(!i||a===void 0||o===void 0)return Z(`transfer-in: handle, endpoint and length required`);let s=Y(o,`length`);return s>4194304?Z(`transfer-in length exceeds 4 MiB limit`):bR((await n.transferIn(i,Y(a,`endpoint`),s)).bytes,r)}async function AR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`transfer-out: handle and endpoint required`);let o=hR(t);return o.length>4194304?Z(`transfer-out payload exceeds 4 MiB limit`):X(`${(await r.transferOut(i,Y(a,`endpoint`),o)).bytesWritten} bytes written\n`)}async function jR(e,t,n){let{positionals:r,flags:i,bools:a}=uR(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return xR(n);case`request`:return SR(i,n);case`open`:case`close`:case`reset`:return CR(o,r,n,a);case`clear-halt`:return wR(r,n);case`select-config`:return TR(r,n);case`claim`:case`release`:return ER(o,r,n,a);case`control-in`:return DR(r,i,n,s);case`control-out`:return OR(r,t,i,n);case`transfer-in`:return kR(r,i,n,s);case`transfer-out`:return AR(r,t,i,n);default:return Z(`unknown subcommand '${o??``}'. Try 'usb --help'.`)}}function MR(){return S(`usb`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return X(yR);let n=Mr(se(),y());if(!n)return Z(`WebUSB is unavailable in this environment`);try{return await jR(e,t,n)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No device selected/i.test(t)?Z(`user cancelled or no device selected`):Z(t)}})}const NR=`/workspace/.v86`,PR=`v86 - run an x86 virtual machine (v86 wasm engine)
3162
+ `;function ER(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?`${SR(e)}\n`:``)}async function DR(e){let t=await e.list();return t.length===0?X(`no granted USB devices
3163
+ `):X(`${t.map(wR).join(`
3164
+ `)}\n`)}async function OR(e,t){let n=e.get(`--__resolved`);if(n)return X(`${wR(await t.info(n))}\n`);let r=_R(e),i=xe();if(i){let e=await Sx(`usb-device`,r,i);if(e.handle)return X(`${wR(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(`${wR(Xr(s,o))}\n`)}return X(`${wR(await t.request(r))}\n`)}async function kR(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 AR(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 jR(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 MR(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 NR(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`):ER((await n.controlIn(i,bR(t),o)).bytes,r)}async function PR(e,t,n,r){let i=e[1];if(!i)return Z(`control-out: handle required`);let a=xR(t);return a.length>4194304?Z(`control-out payload exceeds 4 MiB limit`):X(`${(await r.controlOut(i,bR(n),a)).bytesWritten} bytes written\n`)}async function FR(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`):ER((await n.transferIn(i,Y(a,`endpoint`),s)).bytes,r)}async function IR(e,t,n,r){let[,i,a]=e;if(!i||a===void 0)return Z(`transfer-out: handle and endpoint required`);let o=xR(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 LR(e,t,n){let{positionals:r,flags:i,bools:a}=gR(e),o=r[0],s=a.has(`--raw`);switch(o){case`list`:return DR(n);case`request`:return OR(i,n);case`open`:case`close`:case`reset`:return kR(o,r,n,a);case`clear-halt`:return AR(r,n);case`select-config`:return jR(r,n);case`claim`:case`release`:return MR(o,r,n,a);case`control-in`:return NR(r,i,n,s);case`control-out`:return PR(r,t,i,n);case`transfer-in`:return FR(r,i,n,s);case`transfer-out`:return IR(r,t,i,n);default:return Z(`unknown subcommand '${o??``}'. Try 'usb --help'.`)}}function RR(){return S(`usb`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return X(TR);let n=Mr(se(),y());if(!n)return Z(`WebUSB is unavailable in this environment`);try{return await LR(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 zR=`/workspace/.v86`,BR=`v86 - run an x86 virtual machine (v86 wasm engine)
3157
3165
 
3158
- Requires: ${N} v86@${WD}
3166
+ Requires: ${N} v86@${ZD}
3159
3167
 
3160
3168
  Usage:
3161
3169
  v86 start [boot options] Boot a VM in the background (prints pid)
@@ -3189,7 +3197,7 @@ Boot options (QEMU-flavored):
3189
3197
  proxy — no gateway needed, https upstream via the proxy
3190
3198
  -vga <MiB> SVGA/VBE video memory (default 8, max 64) —
3191
3199
  raise for high-res VESA modes (1080p32 needs ~9)
3192
- -bios <path> -vgabios <path> BIOS blobs (default ${NR}/{seabios,vgabios}.bin)
3200
+ -bios <path> -vgabios <path> BIOS blobs (default ${zR}/{seabios,vgabios}.bin)
3193
3201
  -nographic Serial-only guest (skip VGA)
3194
3202
 
3195
3203
  Notes:
@@ -3197,19 +3205,19 @@ Notes:
3197
3205
  (Alpine, FreeDOS, Buildroot Linux) work best.
3198
3206
  - The copy.sh Arch Linux image boots via -state + -fs9p; see the v86 skill.
3199
3207
  - BIOS blobs are not bundled; download once:
3200
- mkdir -p ${NR}
3201
- curl -o ${NR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3202
- curl -o ${NR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3203
- `,FR=`v86: BIOS images not found. Download them once:
3204
- mkdir -p ${NR}
3205
- curl -o ${NR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3206
- curl -o ${NR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3207
- or pass -bios / -vgabios with explicit VFS paths.`,IR={"-n":LR,"-name":LR,"--name":LR,"-m":(e,t)=>{let n=Number.parseInt(t,10);return!Number.isFinite(n)||n<=0?`-m requires a positive MiB value`:n>512?`-m ${n} exceeds the 512 MiB cap`:(e.memoryMib=n,null)},"-vga":(e,t)=>{let n=Number.parseInt(t,10);return!Number.isFinite(n)||n<=0?`-vga requires a positive MiB value`:n>64?`-vga ${n} exceeds the 64 MiB cap`:(e.vgaMemoryMib=n,null)},"-cdrom":(e,t)=>RR(e,`cdrom`,t),"-hda":(e,t)=>RR(e,`hda`,t),"-fda":(e,t)=>RR(e,`fda`,t),"-kernel":(e,t)=>RR(e,`kernel`,t),"-initrd":(e,t)=>RR(e,`initrd`,t),"-append":(e,t)=>RR(e,`append`,t),"-bios":(e,t)=>RR(e,`bios`,t),"-vgabios":(e,t)=>RR(e,`vgabios`,t),"-state":(e,t)=>RR(e,`state`,t),"-fs9p":(e,t)=>/^https?:\/\//u.test(t)?(e.fs9p=t,null):`-fs9p requires an http(s) base URL`,"-net":(e,t)=>{let[n,...r]=t.split(`,`);if(n!==`ne2k`&&n!==`virtio`)return`-net requires ne2k or virtio`;for(let t of r){if(t!==`relay=fetch`)return`-net: unknown option '${t}' (only relay=fetch)`;e.netRelay=`fetch`}return e.net=n,null},"-boot":(e,t)=>t!==`a`&&t!==`c`&&t!==`d`?`-boot requires a, c, or d`:(e.boot=t,null)};function LR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function RR(e,t,n){return e[t]=n,null}const zR=[...Object.keys(IR),`--fps`,`--tail`,`--send`,`--to`];function BR(e){let t={name:`vm0`,memoryMib:128,vgaMemoryMib:8,nographic:!1};for(let n=0;n<e.length;n++){let r=e[n];if(r===`-nographic`){t.nographic=!0;continue}let i=Object.hasOwn(IR,r)?IR[r]:void 0;if(!i)return{ok:!1,error:`unknown option '${r}'`};let a=n+1<e.length?e[n+1]:null;if(a===null)return{ok:!1,error:`${r} requires a value`};let o=i(t,a);if(o)return{ok:!1,error:o};n++}return!t.cdrom&&!t.hda&&!t.fda&&!t.kernel&&!t.state?{ok:!1,error:`no bootable media (-cdrom, -hda, -fda, -kernel, or -state required)`}:{ok:!0,parsed:t}}function VR(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}function Q(e){return{stdout:``,stderr:`v86: ${e}\n`,exitCode:1}}function $(e=``){return{stdout:e,stderr:``,exitCode:0}}function HR(e){let t=[],n=`vm0`;for(let r=0;r<e.length;r++){if(e[r]===`-n`||e[r]===`-name`||e[r]===`--name`){let t=e[r+1];if(t){n=t,r++;continue}}t.push(e[r])}return{name:n,rest:t}}function UR(e){return sa(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function WR(e){return`exitCode`in e}async function GR(e,t,n){let r=e.fs.resolvePath(e.cwd,t);if(!await e.fs.exists(r))return Q(`${n}: no such file: ${t}`);let i=await e.fs.readFileBuffer(r),a=new ArrayBuffer(i.byteLength);return new Uint8Array(a).set(i),{buffer:a}}const KR={a:801,c:306,d:531};function qR(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function JR(e={}){return S(`v86`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`||t[0]===`help`)return $(PR);if(t[0]===`--version`)return YR(n,e);let r=t[0];if(w(t.slice(1),{valueFlags:zR}))return $($e(`v86`,r,PR,{prefix:`v86`}));let i=Qe(t.slice(1));try{switch(r){case`start`:return await tz(i,n,e);case`ls`:return rz();case`type`:return await sz(i,n);case`key`:return await cz(i,n);case`mouse`:return await uz(i,n);case`screenshot`:return await dz(i,n);case`text`:return await fz(i,n);case`serve`:return pz(i);case`serial`:return mz(i);case`state`:return await hz(i,n);case`stop`:return await gz(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function YR(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(VR(e))).version} (qemu-flavored CLI)\n`);let n=await XD(VR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(GD)}async function XR(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await GR(t,e.bios??`${NR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(FR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await GR(t,e.vgabios??`${NR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(FR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function ZR(e,t,n){let r=await XR(e,t,n);if(r)return r;for(let[r,i]of[[`cdrom`,`cdrom`],[`hda`,`hda`],[`fda`,`fda`],[`kernel`,`bzimage`],[`initrd`,`initrd`]]){let a=e[r];if(!a)continue;let o=await GR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=KR[e.boot]),e.state){let r=await GR(t,e.state,`-state`);if(`exitCode`in r)return r;n.initial_state=r}return e.fs9p&&(n.filesystem={baseurl:e.fs9p}),e.net&&(n.net_device=e.netRelay===`fetch`?{type:e.net,relay_url:`fetch`}:{type:e.net}),null}const QR=6e4;function $R(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(Error(`engine init timed out after ${QR/1e3}s`)),QR);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function ez(e,t){let n=e.network_adapter;if(!n||typeof n.fetch!=`function`)return Q(`relay=fetch: engine exposed no fetch-relay network adapter`);let r=t.proxiedFetch??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 tz(e,t,n){let r=BR(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=VR(t),o=n.loadEngine?await n.loadEngine(a):await qD({ipk:a}),s={wasm_fn:QD(o.wasmModule),memory_size:i.memoryMib*1024*1024,vga_memory_size:i.vgaMemoryMib*1024*1024,autostart:!1,disable_speaker:!0,fastboot:!0},c=await ZR(i,t,s);if(c)return c;let l=new o.V86(s),u={name:i.name,emulator:l,engineVersion:o.version,pid:null,startedAt:Date.now(),bootArgv:[`v86`,`start`,...e],serial:{buffer:``},screen:{mode:`text`,width:0,height:0,frame:null},serve:null},d=n.processManager??qR();if(d){let e=d.spawn({kind:`net`,argv:u.bootArgv,cwd:t.cwd,owner:{kind:`system`}});u.pid=e.pid,e.abort.signal.addEventListener(`abort`,()=>{nz(u,d)})}oa(u);try{if(await $R(l),i.netRelay===`fetch`){let e=ez(l,n);if(e)return await nz(u,d),e}aa(u),await l.run()}catch(e){return await nz(u,d),Q(`boot failed: ${e instanceof Error?e.message:String(e)}`)}u.onScreenChange=()=>{import(`./registry-DfuJBCKY.js`).then(({getComputerRegistry:e})=>{e()?.refresh(`v86:${u.name}`)})},import(`./v86-DKE8ZbX9.js`).then(({registerV86Computer:e})=>e(u)).catch(()=>{});let f=u.pid===null?``:` (pid ${u.pid})`;return $(`VM '${i.name}' booting in the background${f}.\nDrive it with: v86 text -n ${i.name} | v86 screenshot -n ${i.name} | v86 type -n ${i.name} "..."\n`)}async function nz(e,t){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 rz(){let e=ra();if(e.length===0)return $(`no VMs running
3208
+ mkdir -p ${zR}
3209
+ curl -o ${zR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3210
+ curl -o ${zR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3211
+ `,VR=`v86: BIOS images not found. Download them once:
3212
+ mkdir -p ${zR}
3213
+ curl -o ${zR}/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
3214
+ curl -o ${zR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3215
+ or pass -bios / -vgabios with explicit VFS paths.`,HR={"-n":UR,"-name":UR,"--name":UR,"-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)=>WR(e,`cdrom`,t),"-hda":(e,t)=>WR(e,`hda`,t),"-fda":(e,t)=>WR(e,`fda`,t),"-kernel":(e,t)=>WR(e,`kernel`,t),"-initrd":(e,t)=>WR(e,`initrd`,t),"-append":(e,t)=>WR(e,`append`,t),"-bios":(e,t)=>WR(e,`bios`,t),"-vgabios":(e,t)=>WR(e,`vgabios`,t),"-state":(e,t)=>WR(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 UR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function WR(e,t,n){return e[t]=n,null}const GR=[...Object.keys(HR),`--fps`,`--tail`,`--send`,`--to`];function KR(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(HR,r)?HR[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 qR(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 JR(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 YR(e){return oa(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function XR(e){return`exitCode`in e}async function ZR(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 QR={a:801,c:306,d:531};function $R(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function ez(e={}){return S(`v86`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`||t[0]===`help`)return $(BR);if(t[0]===`--version`)return tz(n,e);let r=t[0];if(w(t.slice(1),{valueFlags:GR}))return $($e(`v86`,r,BR,{prefix:`v86`}));let i=Qe(t.slice(1));try{switch(r){case`start`:return await sz(i,n,e);case`ls`:return lz();case`type`:return await pz(i,n);case`key`:return await mz(i,n);case`mouse`:return await gz(i,n);case`screenshot`:return await _z(i,n);case`text`:return await vz(i,n);case`serve`:return yz(i);case`serial`:return bz(i);case`state`:return await xz(i,n);case`stop`:return await Sz(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function tz(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(qR(e))).version} (qemu-flavored CLI)\n`);let n=await rO(qR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(QD)}async function nz(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await ZR(t,e.bios??`${zR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(VR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await ZR(t,e.vgabios??`${zR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(VR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function rz(e,t,n){let r=await nz(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 ZR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=QR[e.boot]),e.state){let r=await ZR(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 iz=6e4;function az(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(Error(`engine init timed out after ${iz/1e3}s`)),iz);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function oz(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 sz(e,t,n){let r=KR(e);if(!r.ok)return Q(r.error);let i=r.parsed;if(oa(i.name))return Q(`VM '${i.name}' already running — stop it first or pick another -n name`);let a=qR(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 rz(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??$R();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`,()=>{cz(u,d)})}aa(u);try{if(await az(l),i.netRelay===`fetch`){let e=oz(l,n);if(e)return await cz(u,d),e}ia(u),await l.run()}catch(e){return await cz(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 cz(e,t){sa(e),ra(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 lz(){let e=na();if(e.length===0)return $(`no VMs running
3208
3216
  `);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 iz(e,t){return`prefer: computer ${e} -c ${t}\n`}async function az(e,t,n,r){let i=UR(t);if(WR(i))return i;let[{runComputer:a},{getComputerRegistry:o,installComputerRegistry:s},c]=await Promise.all([import(`./run-CKdymE5z.js`).then(e=>e.t),import(`./registry-DfuJBCKY.js`),import(`./v86-DKE8ZbX9.js`)]),l=c.v86ComputerId(t),u=o()??s(null);return u.get(l)||c.registerV86Computer(i,u),oz(await a([`-c`,l,...n],e,{registry:u}),r,l)}function oz(e,t,n){let r=iz(t,n);return e.exitCode===0?$(`${e.stdout}${r}`):e.stderr.includes(`screenshot failed after input`)?$(`${e.stderr}${r}`):{stdout:e.stdout,stderr:e.stderr.replace(/^computer: /u,`v86: `),exitCode:e.exitCode}}async function sz(e,t){let{name:n,rest:r}=HR(e);if(r.length===0){let e=UR(n);return WR(e)?e:Q(`type: no text supplied`)}return az(t,n,[`type`,`--`,...r],`type`)}async function cz(e,t){let{name:n,rest:r}=HR(e);if(r.length===0){let e=UR(n);return WR(e)?e:Q(`key: no chord supplied`)}return az(t,n,[`key`,...r],`key`)}const lz=[`left`,`middle`,`right`];async function uz(e,t){let{name:n,rest:r}=HR(e),i=UR(n);if(WR(i))return i;let a=r.indexOf(`--to`);if(a!==-1){let e=r[a+1],i=e?/^(\d+),(\d+)$/u.exec(e):null;return i?az(t,n,[`--native`,`mousemove`,i[1],i[2]],`mousemove`):Q(`mouse: --to requires <x>,<y>`)}let o=r[0];if(o===`move`){let e=r[1],i=r[2];return e===void 0||i===void 0||!Number.isFinite(Number(e))||!Number.isFinite(Number(i))?Q(`mouse: move requires <dx> <dy>`):az(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!lz.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),az(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function dz(e,t){let{name:n,rest:r}=HR(e);return az(t,n,[`screenshot`,...r],`screenshot`)}async function fz(e,t){let{name:n}=HR(e);return az(t,n,[`text`],`text`)}function pz(e){let{name:t}=HR(e);return $(`v86 serve is retired.\nUse: computer watch -c v86:${t}\nLive frames go to the overlay, lightbox, and bash rows.\n`)}function mz(e){let{name:t,rest:n}=HR(e),r=UR(t);if(WR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
3217
+ `)}\n`)}function uz(e,t){return`prefer: computer ${e} -c ${t}\n`}async function dz(e,t,n,r){let i=YR(t);if(XR(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),fz(await a([`-c`,l,...n],e,{registry:u}),r,l)}function fz(e,t,n){let r=uz(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 pz(e,t){let{name:n,rest:r}=JR(e);if(r.length===0){let e=YR(n);return XR(e)?e:Q(`type: no text supplied`)}return dz(t,n,[`type`,`--`,...r],`type`)}async function mz(e,t){let{name:n,rest:r}=JR(e);if(r.length===0){let e=YR(n);return XR(e)?e:Q(`key: no chord supplied`)}return dz(t,n,[`key`,...r],`key`)}const hz=[`left`,`middle`,`right`];async function gz(e,t){let{name:n,rest:r}=JR(e),i=YR(n);if(XR(i))return i;let a=r.indexOf(`--to`);if(a!==-1){let e=r[a+1],i=e?/^(\d+),(\d+)$/u.exec(e):null;return i?dz(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>`):dz(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!hz.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),dz(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function _z(e,t){let{name:n,rest:r}=JR(e);return dz(t,n,[`screenshot`,...r],`screenshot`)}async function vz(e,t){let{name:n}=JR(e);return dz(t,n,[`text`],`text`)}function yz(e){let{name:t}=JR(e);return $(`v86 serve is retired.\nUse: computer watch -c v86:${t}\nLive frames go to the overlay, lightbox, and bash rows.\n`)}function bz(e){let{name:t,rest:n}=JR(e),r=YR(t);if(XR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
3210
3218
  `);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
3219
  `).slice(-Math.max(1,e)).join(`
3212
- `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function hz(e,t){let{name:n,rest:r}=HR(e),i=UR(n);if(WR(i))return i;let[a,o]=r;if(a!==`save`&&a!==`load`||!o)return Q(`state: expected save|load <file>`);let s=t.fs.resolvePath(t.cwd,o);if(a===`save`){let e=await i.emulator.save_state();return await t.fs.writeFile(s,new Uint8Array(e)),$(`${s} (${e.byteLength} bytes)\n`)}if(!await t.fs.exists(s))return Q(`state: no such file: ${o}`);let c=await t.fs.readFileBuffer(s),l=new ArrayBuffer(c.byteLength);return new Uint8Array(l).set(c),await i.emulator.restore_state(l),$()}async function gz(e,t){let{name:n,rest:r}=HR(e),i=UR(n);if(WR(i))return i;let a=t.processManager??qR();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await nz(i,a),$(`VM '${n}' stopped\n`))}const _z=[`--name`,`--filter`,`--scoop`],vz={state:`inactive`,session:null};function yz(){return{stdout:`usage: webhook <command> [options]
3220
+ `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function xz(e,t){let{name:n,rest:r}=JR(e),i=YR(n);if(XR(i))return i;let[a,o]=r;if(a!==`save`&&a!==`load`||!o)return Q(`state: expected save|load <file>`);let s=t.fs.resolvePath(t.cwd,o);if(a===`save`){let e=await i.emulator.save_state();return await t.fs.writeFile(s,new Uint8Array(e)),$(`${s} (${e.byteLength} bytes)\n`)}if(!await t.fs.exists(s))return Q(`state: no such file: ${o}`);let c=await t.fs.readFileBuffer(s),l=new ArrayBuffer(c.byteLength);return new Uint8Array(l).set(c),await i.emulator.restore_state(l),$()}async function Sz(e,t){let{name:n,rest:r}=JR(e),i=YR(n);if(XR(i))return i;let a=t.processManager??$R();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await cz(i,a),$(`VM '${n}' stopped\n`))}const Cz=[`--name`,`--filter`,`--scoop`],wz={state:`inactive`,session:null};function Tz(){return{stdout:`usage: webhook <command> [options]
3213
3221
 
3214
3222
  Commands:
3215
3223
  create [--scoop <name>] [--name <name>] [--filter <code>] Create a new webhook endpoint
@@ -3229,21 +3237,21 @@ Examples:
3229
3237
  webhook create --scoop slack-relay --name slack --filter "(e) => ({ text: e.body.text, user: e.body.user })"
3230
3238
  webhook list
3231
3239
  webhook delete abc123
3232
- `,stderr:``,exitCode:0}}function bz(e){return e().session?.webhookUrl??null}function xz(e,t,n){return t?la(t,e):n()?ua(self.location.href,e):`(URL unavailable — connect a leader tray)`}function Sz(e){return{stdout:``,stderr:`webhook ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}async function Cz(e){if(e.length!==1)return{stdout:``,stderr:`webhook rotate: takes no arguments
3240
+ `,stderr:``,exitCode:0}}function Ez(e){return e().session?.webhookUrl??null}function Dz(e,t,n){return t?ca(t,e):n()?la(self.location.href,e):`(URL unavailable — connect a leader tray)`}function Oz(e){return{stdout:``,stderr:`webhook ${e}: kernel host has not booted yet — try again in a moment\n`,exitCode:1}}async function kz(e){if(e.length!==1)return{stdout:``,stderr:`webhook rotate: takes no arguments
3233
3241
  `,exitCode:1};let t=y();if(!t)return{stdout:``,stderr:`webhook rotate: no leader panel connected
3234
3242
  `,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
3243
  `,stderr:``,exitCode:0}}catch{return{stdout:``,stderr:`webhook rotate: rotation failed; reconnect the leader and retry
3236
- `,exitCode:1}}}async function wz(e,t,n){let r=C(e.slice(1),{value:_z});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=Dz(t);if(s)return s;let c=await ey();if(!c)return Sz(`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=Oz(u.id,t),f=`Created webhook "${u.name}"\nID: ${u.id}\nURL: ${d}\n`;return u.scoop&&(f+=`Scoop: ${u.scoop}\n`),u.filter&&(f+=`Filter: ${u.filter}\n`),{stdout:f,stderr:``,exitCode:0}}async function Tz(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 Sz(`list`);let i=await r.listWebhooks();if(i.length===0)return{stdout:`No active webhooks
3238
- `,stderr:``,exitCode:0};let{trayUrlBase:a,urlResolutionError:o}=kz(t);return{stdout:Az(i.map(e=>({id:e.id,name:e.name,url:xz(e.id,a,t.hasLocalNodeServer),createdAt:e.createdAt,filter:e.filter,scoop:e.scoop})),a,o,t.hasLocalNodeServer),stderr:``,exitCode:0}}async function Ez(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
3244
+ `,exitCode:1}}}async function Az(e,t,n){let r=C(e.slice(1),{value:Cz});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
3245
+ `,exitCode:1};let s=Nz(t);if(s)return s;let c=await ey();if(!c)return Oz(`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=Pz(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 jz(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 Oz(`list`);let i=await r.listWebhooks();if(i.length===0)return{stdout:`No active webhooks
3246
+ `,stderr:``,exitCode:0};let{trayUrlBase:a,urlResolutionError:o}=Fz(t);return{stdout:Iz(i.map(e=>({id:e.id,name:e.name,url:Dz(e.id,a,t.hasLocalNodeServer),createdAt:e.createdAt,filter:e.filter,scoop:e.scoop})),a,o,t.hasLocalNodeServer),stderr:``,exitCode:0}}async function Mz(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
3247
  `,exitCode:1};if(!r)return{stdout:``,stderr:`webhook delete: requires an ID
3240
- `,exitCode:1};let i=await ey();if(!i)return Sz(`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 Dz(e){if(e.hasLocalNodeServer())return null;if(!bz(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 Oz(e,t){try{return xz(e,bz(t.getLeaderStatus),t.hasLocalNodeServer)}catch(e){return`(URL resolution failed: ${e instanceof Error?e.message:String(e)})`}}function kz(e){try{return{trayUrlBase:bz(e.getLeaderStatus),urlResolutionError:null}}catch(e){return{trayUrlBase:null,urlResolutionError:e instanceof Error?e.message:String(e)}}}function Az(e,t,n,r){let i=`Active webhooks:
3248
+ `,exitCode:1};let i=await ey();if(!i)return Oz(`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
3249
+ `,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 Nz(e){if(e.hasLocalNodeServer())return null;if(!Ez(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}")`)+`
3250
+ `,exitCode:1}}return null}function Pz(e,t){try{return Dz(e,Ez(t.getLeaderStatus),t.hasLocalNodeServer)}catch(e){return`(URL resolution failed: ${e instanceof Error?e.message:String(e)})`}}function Fz(e){try{return{trayUrlBase:Ez(e.getLeaderStatus),urlResolutionError:null}}catch(e){return{trayUrlBase:null,urlResolutionError:e instanceof Error?e.message:String(e)}}}function Iz(e,t,n,r){let i=`Active webhooks:
3243
3251
  `;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
3252
  `;return n?i+=`\nNote: webhook URL resolution failed (${n}). Try again once the tray is connected.\n`:!r()&&!t&&(i+=`
3245
3253
  Note: webhook URLs require a leader tray. Configure one in Settings to expose POST endpoints.
3246
- `),i}function jz(e={}){let t={hasLocalNodeServer:e.hasLocalNodeServer??(()=>!0),getLeaderStatus:e.getLeaderStatus??(()=>vz)};return S(`webhook`,async(e,n)=>{if(e.length===0)return yz();let r=e[0];if(w(e,{valueFlags:r===`create`?_z:void 0}))return yz();try{switch(r){case`create`:return await wz(e,t,n.env);case`list`:return await Tz(e,t);case`delete`:return await Ez(e,t);case`rotate`:return await Cz(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 Mz(){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 Nz(){return{stdout:`usage: websocat [FLAGS] [OPTIONS] <ws://URL | wss://URL>
3254
+ `),i}function Lz(e={}){let t={hasLocalNodeServer:e.hasLocalNodeServer??(()=>!0),getLeaderStatus:e.getLeaderStatus??(()=>wz)};return S(`webhook`,async(e,n)=>{if(e.length===0)return Tz();let r=e[0];if(w(e,{valueFlags:r===`create`?Cz:void 0}))return Tz();try{switch(r){case`create`:return await Az(e,t,n.env);case`list`:return await jz(e,t);case`delete`:return await Mz(e,t);case`rotate`:return await kz(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 Rz(){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 zz(){return{stdout:`usage: websocat [FLAGS] [OPTIONS] <ws://URL | wss://URL>
3247
3255
 
3248
3256
  Minimal websocat client. Sends stdin lines as WebSocket messages and prints
3249
3257
  received messages to stdout. Server mode and advanced specifiers (exec:, tcp:,
@@ -3285,14 +3293,14 @@ EXAMPLES:
3285
3293
  echo 'Page.navigate {"url":"https://example.com"}' \\
3286
3294
  | websocat -1 --jsonrpc --jsonrpc-omit-jsonrpc \\
3287
3295
  ws://127.0.0.1:9222/devtools/page/<id>
3288
- `,stderr:``,exitCode:0}}const Pz=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 Fz(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 Iz(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 Lz(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 Rz(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 zz(e,t){return t===`-v`?(e.verbose+=1,!0):t===`-vv`&&(e.verbose+=2,!0)}function Bz(e,t,n,r,i){let a=Fz(t,n,r,e);return a?(i(a.value),{nextIndex:a.next}):{stop:!0}}function Vz(e,t,n,r,i,a,o){let s=Fz(t,n,r,e);if(!s)return{stop:!0};let c=Iz(e,s.value,i,o);return c===null?{stop:!0}:(a(c),{nextIndex:s.next})}function Hz(e,t){return t.some(t=>e===t||e.startsWith(`${t}=`))}const Uz=[(e,t,n,r)=>{if(!Hz(r,[`--close-status-code`]))return null;let i=Fz(t,n,`--close-status-code`,e);if(!i)return{stop:!0};let a=Lz(e,i.value);return a===null?{stop:!0}:(e.closeStatus=a,{nextIndex:i.next})},(e,t,n,r)=>Hz(r,[`--close-reason`])?Bz(e,t,n,`--close-reason`,t=>{e.closeReason=t}):null,(e,t,n,r)=>Hz(r,[`-B`,`--buffer-size`])?Vz(e,t,n,r===`-B`?`-B`:`--buffer-size`,`--buffer-size`,t=>{e.bufferSize=t}):null,(e,t,n,r)=>Hz(r,[`--max-messages`])?Vz(e,t,n,`--max-messages`,`--max-messages`,t=>{e.maxMessages=t}):null,(e,t,n,r)=>Hz(r,[`--protocol`])?Bz(e,t,n,`--protocol`,t=>{e.protocol=t}):null,(e,t,n,r)=>{if(!Hz(r,[`--ping-interval`]))return null;let i=Fz(t,n,`--ping-interval`,e);return i?(e.pingInterval=Number(i.value),{nextIndex:i.next}):{stop:!0}},(e,t,n,r)=>Hz(r,[`--conn-timeout`])?Vz(e,t,n,`--conn-timeout`,`--conn-timeout`,t=>{e.connTimeoutMs=Math.round(t*1e3)},`positive seconds`):null,(e,t,n,r)=>Hz(r,[`-H`,`--header`])?Bz(e,t,n,r===`-H`?`-H`:`--header`,t=>{e.customHeaders.push(t)}):null];function Wz(e,t,n,r){for(let i of Uz){let a=i(e,t,n,r);if(a)return a}return null}function Gz(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 Kz(e){let t=Mz();for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`-h`||r===`--help`)return t.showHelp=!0,t;if(Pz.has(r)||Pz.has(r.split(`=`)[0]))return t.error=`websocat: flag '${r}' is not supported in slicc's minimal client\n`,t;if(Rz(t,r)||zz(t,r))continue;let i=Wz(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 Gz(t),t}function qz(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 Jz(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 Yz(e){try{return new TextDecoder(`utf-8`,{fatal:!1}).decode(e)}catch{return t(e)}}function Xz(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 Zz=1e4;function Qz(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function $z(){let e=!1,t=Qz();return{...t,settle:n=>{e||(e=!0,t.resolve(n))}}}function eB(e,t){return e.length?e.join(t)+t:``}function tB(e){return e.length?e.join(`
3296
+ `,stderr:``,exitCode:0}}const Bz=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 Vz(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 Hz(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 Uz(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 Wz(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 Gz(e,t){return t===`-v`?(e.verbose+=1,!0):t===`-vv`&&(e.verbose+=2,!0)}function Kz(e,t,n,r,i){let a=Vz(t,n,r,e);return a?(i(a.value),{nextIndex:a.next}):{stop:!0}}function qz(e,t,n,r,i,a,o){let s=Vz(t,n,r,e);if(!s)return{stop:!0};let c=Hz(e,s.value,i,o);return c===null?{stop:!0}:(a(c),{nextIndex:s.next})}function Jz(e,t){return t.some(t=>e===t||e.startsWith(`${t}=`))}const Yz=[(e,t,n,r)=>{if(!Jz(r,[`--close-status-code`]))return null;let i=Vz(t,n,`--close-status-code`,e);if(!i)return{stop:!0};let a=Uz(e,i.value);return a===null?{stop:!0}:(e.closeStatus=a,{nextIndex:i.next})},(e,t,n,r)=>Jz(r,[`--close-reason`])?Kz(e,t,n,`--close-reason`,t=>{e.closeReason=t}):null,(e,t,n,r)=>Jz(r,[`-B`,`--buffer-size`])?qz(e,t,n,r===`-B`?`-B`:`--buffer-size`,`--buffer-size`,t=>{e.bufferSize=t}):null,(e,t,n,r)=>Jz(r,[`--max-messages`])?qz(e,t,n,`--max-messages`,`--max-messages`,t=>{e.maxMessages=t}):null,(e,t,n,r)=>Jz(r,[`--protocol`])?Kz(e,t,n,`--protocol`,t=>{e.protocol=t}):null,(e,t,n,r)=>{if(!Jz(r,[`--ping-interval`]))return null;let i=Vz(t,n,`--ping-interval`,e);return i?(e.pingInterval=Number(i.value),{nextIndex:i.next}):{stop:!0}},(e,t,n,r)=>Jz(r,[`--conn-timeout`])?qz(e,t,n,`--conn-timeout`,`--conn-timeout`,t=>{e.connTimeoutMs=Math.round(t*1e3)},`positive seconds`):null,(e,t,n,r)=>Jz(r,[`-H`,`--header`])?Kz(e,t,n,r===`-H`?`-H`:`--header`,t=>{e.customHeaders.push(t)}):null];function Xz(e,t,n,r){for(let i of Yz){let a=i(e,t,n,r);if(a)return a}return null}function Zz(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)
3297
+ `)}function Qz(e){let t=Rz();for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`-h`||r===`--help`)return t.showHelp=!0,t;if(Bz.has(r)||Bz.has(r.split(`=`)[0]))return t.error=`websocat: flag '${r}' is not supported in slicc's minimal client\n`,t;if(Wz(t,r)||Gz(t,r))continue;let i=Xz(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 Zz(t),t}function $z(e,t){if(!e)return[];let n=t?`\0`:`
3298
+ `,r=e.split(n);return r.length>0&&r[r.length-1]===``&&r.pop(),r}function eB(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 tB(e){try{return new TextDecoder(`utf-8`,{fatal:!1}).decode(e)}catch{return t(e)}}function nB(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 rB=1e4;function iB(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function aB(){let e=!1,t=iB();return{...t,settle:n=>{e||(e=!0,t.resolve(n))}}}function oB(e,t){return e.length?e.join(t)+t:``}function sB(e){return e.length?e.join(`
3291
3299
  `)+`
3292
- `:``}function nB(e,t,n){e.quiet||t.push(`websocat: ${n}`)}function rB(e,t){e.verbose<1||(e.customHeaders.length>0&&nB(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&&nB(e,t,`--ping-interval has no effect in browsers (no ping API exposed)`),e.insecure&&nB(e,t,`-k/--insecure has no effect in browsers`))}function iB(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 aB(e,t,n,r){if(n.outLines.length<Zz){n.outLines.push(r);return}n.droppedForOverflow===0&&nB(e,t,`output buffer reached ${Zz} 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 oB(e,n,r){let{bytes:i,isBinary:a}=Xz(r);return i.length>e.bufferSize&&(nB(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):Yz(i)}function sB(e,t){return e.maxMessages!==void 0&&t>=e.maxMessages||e.oneMessage}function cB(e,t,n){try{n===void 0?e.close(t):e.close(t,n)}catch{}}function lB(e,t){setTimeout(()=>{cB(t,e.closeStatus??1e3,e.closeReason)},0)}function uB(e,t,n){let r=qz(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=Jz(n,i,t.jsonrpcOmit),i+=1),t.binary?e.send(new TextEncoder().encode(r).buffer):e.send(r),a+=1}return a}function dB(e,t,n){!t.oneMessage&&!t.noClose&&(t.exitOnEof||n===0)&&lB(t,e)}async function fB(e,t,n){let r=[];rB(e,r);let i=e.nullTerminated?`\0`:`
3293
- `,a=iB(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=Qz(),u=$z(),d=0,f=!1,p=setTimeout(()=>{f=!0,cB(o,1e3),c||l.reject(Error(`connect timeout`))},e.connTimeoutMs),m=()=>{if(e.noClose){u.settle(d);return}cB(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=oB(e,r,t.data);aB(e,r,s,n)}s.received+=1,sB(e,s.received)&&(s.finishing=!0,m())}},o.onerror=()=>{f||(nB(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&&nB(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:eB(s.outLines,i),stderr:tB(r.concat([`websocat: ${t}`])),exitCode:t===`connect timeout`?124:1}}e.unidirectionalReverse?!e.noClose&&e.exitOnEof&&!e.oneMessage&&lB(e,o):dB(o,e,uB(o,e,t));let h=await u.promise;return s.droppedForOverflow>0&&nB(e,r,`dropped ${s.droppedForOverflow} inbound message(s) due to output buffer cap`),{stdout:eB(s.outLines,i),stderr:tB(r),exitCode:h}}function pB(e){return{stdout:``,stderr:e,exitCode:2}}function mB(e){return e.WebSocketCtor??(typeof WebSocket<`u`?WebSocket:void 0)}async function hB(e,t,n={}){let r=Kz(e);if(r.showHelp)return Nz();if(r.error)return pB(r.error);if(!r.url)return pB(`websocat: missing ws:// or wss:// URL (use --help for usage)
3294
- `);if(!/^wss?:\/\//i.test(r.url))return pB(`websocat: URL must start with ws:// or wss://, got '${r.url}'\n`);let i=mB(n);return i?fB(r,t.stdin,i):{stdout:``,stderr:`websocat: no WebSocket implementation available in this runtime
3295
- `,exitCode:1}}function gB(){return S(`websocat`,async(e,t)=>hB(e,{stdin:P(t.stdin)}))}function _B(){return S(`__wf_progress`,async()=>({stdout:``,stderr:``,exitCode:0}))}const vB={commands:new Map,collisions:[]};async function yB(e,t){let n=Vn(t);return e.scriptCatalog?e.scriptCatalog.getJshIndex(n):e.fs?Wn(e.fs,n):vB}async function bB(e){return e.scriptCatalog?e.scriptCatalog.getWorkflowCommands():e.fs?ri(e.fs):new Map}function xB(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 SB(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
3300
+ `:``}function cB(e,t,n){e.quiet||t.push(`websocat: ${n}`)}function lB(e,t){e.verbose<1||(e.customHeaders.length>0&&cB(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&&cB(e,t,`--ping-interval has no effect in browsers (no ping API exposed)`),e.insecure&&cB(e,t,`-k/--insecure has no effect in browsers`))}function uB(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 dB(e,t,n,r){if(n.outLines.length<rB){n.outLines.push(r);return}n.droppedForOverflow===0&&cB(e,t,`output buffer reached ${rB} 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 fB(e,n,r){let{bytes:i,isBinary:a}=nB(r);return i.length>e.bufferSize&&(cB(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):tB(i)}function pB(e,t){return e.maxMessages!==void 0&&t>=e.maxMessages||e.oneMessage}function mB(e,t,n){try{n===void 0?e.close(t):e.close(t,n)}catch{}}function hB(e,t){setTimeout(()=>{mB(t,e.closeStatus??1e3,e.closeReason)},0)}function gB(e,t,n){let r=$z(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=eB(n,i,t.jsonrpcOmit),i+=1),t.binary?e.send(new TextEncoder().encode(r).buffer):e.send(r),a+=1}return a}function _B(e,t,n){!t.oneMessage&&!t.noClose&&(t.exitOnEof||n===0)&&hB(t,e)}async function vB(e,t,n){let r=[];lB(e,r);let i=e.nullTerminated?`\0`:`
3301
+ `,a=uB(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=iB(),u=aB(),d=0,f=!1,p=setTimeout(()=>{f=!0,mB(o,1e3),c||l.reject(Error(`connect timeout`))},e.connTimeoutMs),m=()=>{if(e.noClose){u.settle(d);return}mB(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=fB(e,r,t.data);dB(e,r,s,n)}s.received+=1,pB(e,s.received)&&(s.finishing=!0,m())}},o.onerror=()=>{f||(cB(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&&cB(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:oB(s.outLines,i),stderr:sB(r.concat([`websocat: ${t}`])),exitCode:t===`connect timeout`?124:1}}e.unidirectionalReverse?!e.noClose&&e.exitOnEof&&!e.oneMessage&&hB(e,o):_B(o,e,gB(o,e,t));let h=await u.promise;return s.droppedForOverflow>0&&cB(e,r,`dropped ${s.droppedForOverflow} inbound message(s) due to output buffer cap`),{stdout:oB(s.outLines,i),stderr:sB(r),exitCode:h}}function yB(e){return{stdout:``,stderr:e,exitCode:2}}function bB(e){return e.WebSocketCtor??(typeof WebSocket<`u`?WebSocket:void 0)}async function xB(e,t,n={}){let r=Qz(e);if(r.showHelp)return zz();if(r.error)return yB(r.error);if(!r.url)return yB(`websocat: missing ws:// or wss:// URL (use --help for usage)
3302
+ `);if(!/^wss?:\/\//i.test(r.url))return yB(`websocat: URL must start with ws:// or wss://, got '${r.url}'\n`);let i=bB(n);return i?vB(r,t.stdin,i):{stdout:``,stderr:`websocat: no WebSocket implementation available in this runtime
3303
+ `,exitCode:1}}function SB(){return S(`websocat`,async(e,t)=>xB(e,{stdin:P(t.stdin)}))}function CB(){return S(`__wf_progress`,async()=>({stdout:``,stderr:``,exitCode:0}))}const wB={commands:new Map,collisions:[]};async function TB(e,t){let n=Vn(t);return e.scriptCatalog?e.scriptCatalog.getJshIndex(n):e.fs?Wn(e.fs,n):wB}async function EB(e){return e.scriptCatalog?e.scriptCatalog.getWorkflowCommands():e.fs?ri(e.fs):new Map}function DB(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 OB(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
3304
 
3297
3305
  Usage: which <command> [command...]
3298
3306
 
@@ -3303,9 +3311,9 @@ Prints the path of the given command(s).
3303
3311
 
3304
3312
  Exit code 0 if all commands found, 1 if any not found.
3305
3313
  `,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 yB(t,n.env.get(`PATH`)),s=o.commands,c=new Map(o.collisions.map(e=>[e.name,e])),l=await bB(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=xB(e,t,c.get(e),n,u,a,d);f.push(...r.lines),r.found||(p=!1)}return{stdout:f.length>0?f.join(`
3314
+ `,exitCode:1};let i=n.getRegisteredCommands?.()??[],a=new Set(i),o=await TB(t,n.env.get(`PATH`)),s=o.commands,c=new Map(o.collisions.map(e=>[e.name,e])),l=await EB(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=DB(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
3315
  `)+`
3308
- `:``,stderr:``,exitCode:+!p}})}const CB=`__slicc_workflows`,wB=String.raw`
3316
+ `:``,stderr:``,exitCode:+!p}})}const kB=`__slicc_workflows`,AB=String.raw`
3309
3317
  class WorkflowError extends Error {}
3310
3318
  class WorkflowDeterminismError extends WorkflowError {}
3311
3319
  class WorkflowAgentCapError extends WorkflowError {}
@@ -3418,40 +3426,40 @@ function log(message) {
3418
3426
  }
3419
3427
  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
3428
  function workflow() { throw new WorkflowNestingUnsupportedError('nested workflow() unsupported in SP1'); }
3421
- `;function TB(){return`WF_RESULT_${globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function EB(e){let t=AB(e);return t===null?{name:null,description:null}:{name:jB(t,`name`),description:jB(t,`description`)}}function DB(e){return e.replace(/\bexport\s+(const|let|var|function|async\s+function|class)\b/g,`$1`)}function OB(e){return`const __emit = console.log.bind(console);
3429
+ `;function jB(){return`WF_RESULT_${globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function MB(e){let t=IB(e);return t===null?{name:null,description:null}:{name:LB(t,`name`),description:LB(t,`description`)}}function NB(e){return e.replace(/\bexport\s+(const|let|var|function|async\s+function|class)\b/g,`$1`)}function PB(e){return`const __emit = console.log.bind(console);
3422
3430
  const __stringify = JSON.stringify.bind(JSON);
3423
- const __WF = ${JSON.stringify(e.config)};\n${e.prelude}\nconst __r = await (async () => {\n${DB(e.body)}\n})();\n__emit(${JSON.stringify(e.sentinel)} + __stringify(__r ?? null));\n`}function kB(e,t){let n=e.split(`
3431
+ const __WF = ${JSON.stringify(e.config)};\n${e.prelude}\nconst __r = await (async () => {\n${NB(e.body)}\n})();\n__emit(${JSON.stringify(e.sentinel)} + __stringify(__r ?? null));\n`}function FB(e,t){let n=e.split(`
3424
3432
  `);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 AB(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 jB(e,t){let n=RegExp(`\\b${t}\\s*:\\s*(['"\\\`])((?:\\\\.|(?!\\1).)*)\\1`).exec(e);return n?n[2]:null}const MB=e(`workflow-command`),NB=`usage: workflow run <file.js> [--args <json>] [--budget <n>] [--concurrency <n>] [--wait]
3433
+ `).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 IB(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 LB(e,t){let n=RegExp(`\\b${t}\\s*:\\s*(['"\\\`])((?:\\\\.|(?!\\1).)*)\\1`).exec(e);return n?n[2]:null}const RB=e(`workflow-command`),zB=`usage: workflow run <file.js> [--args <json>] [--budget <n>] [--concurrency <n>] [--wait]
3426
3434
  workflow run --script '<inline js>' [...]
3427
3435
  workflow list
3428
3436
  workflow status <runId>
3429
3437
  workflow stop <runId>
3430
3438
  workflow save <runId> <name> [--force]
3431
3439
  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.`,PB=new Set([`list`,`status`,`stop`,`save`]);function FB(){return globalThis[CB]}function IB(){let e=globalThis.navigator?.hardwareConcurrency??8;return Math.min(16,Math.max(8,e*4))}function LB(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 RB(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=IB(),n={budget:null,cap:Math.min(8,t)};for(let r=1;r<e.length;r++){let i=LB(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 zB(e={}){return S(`workflow`,async(t,n)=>{if(PB.has(t[0])&&w(t.slice(1)))return{stdout:NB+`
3433
- `,stderr:``,exitCode:0};if(t[0]===`list`||t[0]===`status`||t[0]===`stop`)return GB(t,n);if(t[0]===`save`)return WB(t,n,e);let r=RB(t);if(r.help)return{stdout:NB+`
3440
+ pass --wait to block and print the full result.`,BB=new Set([`list`,`status`,`stop`,`save`]);function VB(){return globalThis[kB]}function HB(){let e=globalThis.navigator?.hardwareConcurrency??8;return Math.min(16,Math.max(8,e*4))}function UB(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 WB(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=HB(),n={budget:null,cap:Math.min(8,t)};for(let r=1;r<e.length;r++){let i=UB(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 GB(e={}){return S(`workflow`,async(t,n)=>{if(BB.has(t[0])&&w(t.slice(1)))return{stdout:zB+`
3441
+ `,stderr:``,exitCode:0};if(t[0]===`list`||t[0]===`status`||t[0]===`stop`)return ZB(t,n);if(t[0]===`save`)return XB(t,n,e);let r=WB(t);if(r.help)return{stdout:zB+`
3434
3442
  `,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=EB(i);if(!o.name)return{stdout:``,stderr:`workflow: script must define a meta block with a name (description optional)
3436
- `,exitCode:1};let s=TB().slice(10,22),c=`/shared/workflow-runs/${s}/scratch/`;await n.fs.mkdir(c,{recursive:!0});let l=TB(),u=OB({prelude:wB,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?BB(u,a,l,o,n):VB({code:u,source:i,name:o.name,filename:a,sentinel:l,runId:s,ctx:n,options:e})})}async function BB(e,t,n,r,i){let a;try{a=await Hr(e,[`workflow`,t],i,void 0,{filename:t})}catch(e){return MB.error(`workflow run failed`,e),{stdout:``,stderr:`workflow: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return KB(r,a,n)}async function VB(e){let t=FB();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 HB=/^[a-z0-9][a-z0-9-]*$/,UB=`/workspace/.workflows`;async function WB(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(!HB.test(o))return{stdout:``,stderr:`workflow: invalid name '${o}' (use [a-z0-9][a-z0-9-]*)\n`,exitCode:1};let c=FB()?.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=`${UB}/${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(UB,{recursive:!0}),await t.fs.writeFile(l,c.source);try{await n.syncScriptCommands?.()}catch(e){MB.warn(`workflow save: command re-sync failed; workflow saved, will register on next sync`,{name:o,error:e instanceof Error?e.message:String(e)})}return{stdout:`saved workflow '${o}' → ${l}\nrun it as '${o}' (or 'workflow run ${l}' if a built-in/.jsh shadows the name)\n`,stderr:``,exitCode:0}}async function GB(e,t){let n=FB();if(e[0]===`list`){if(!n)return{stdout:``,stderr:`workflow: run manager not available
3443
+ `,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=MB(i);if(!o.name)return{stdout:``,stderr:`workflow: script must define a meta block with a name (description optional)
3444
+ `,exitCode:1};let s=jB().slice(10,22),c=`/shared/workflow-runs/${s}/scratch/`;await n.fs.mkdir(c,{recursive:!0});let l=jB(),u=PB({prelude:AB,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?KB(u,a,l,o,n):qB({code:u,source:i,name:o.name,filename:a,sentinel:l,runId:s,ctx:n,options:e})})}async function KB(e,t,n,r,i){let a;try{a=await Hr(e,[`workflow`,t],i,void 0,{filename:t})}catch(e){return RB.error(`workflow run failed`,e),{stdout:``,stderr:`workflow: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return QB(r,a,n)}async function qB(e){let t=VB();if(!t)return{stdout:``,stderr:`workflow: run manager not available
3445
+ `,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 JB=/^[a-z0-9][a-z0-9-]*$/,YB=`/workspace/.workflows`;async function XB(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]
3446
+ `,exitCode:1};if(!JB.test(o))return{stdout:``,stderr:`workflow: invalid name '${o}' (use [a-z0-9][a-z0-9-]*)\n`,exitCode:1};let c=VB()?.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=`${YB}/${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(YB,{recursive:!0}),await t.fs.writeFile(l,c.source);try{await n.syncScriptCommands?.()}catch(e){RB.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 ZB(e,t){let n=VB();if(e[0]===`list`){if(!n)return{stdout:``,stderr:`workflow: run manager not available
3439
3447
  `,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
3448
  `):`(no runs)`)+`
3441
3449
  `,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
3450
  `)+`
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 KB(e,t,n){let{result:r,log:i,hadResult:a}=kB(t.stdout,n),o=e.name?`workflow: ${e.name}${e.description?` — `+e.description:``}\n`:``,s=i?qB(i)+`
3451
+ `,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 QB(e,t,n){let{result:r,log:i,hadResult:a}=FB(t.stdout,n),o=e.name?`workflow: ${e.name}${e.description?` — `+e.description:``}\n`:``,s=i?$B(i)+`
3444
3452
  `:``;return t.exitCode!==0||!a?{stdout:o+s,stderr:t.stderr||(a?``:`workflow: script produced no result
3445
3453
  `),exitCode:t.exitCode||1}:{stdout:o+s+(typeof r==`string`?r:JSON.stringify(r))+`
3446
- `,stderr:t.stderr,exitCode:0}}function qB(e){return e.split(`
3454
+ `,stderr:t.stderr,exitCode:0}}function $B(e){return e.split(`
3447
3455
  `).map(e=>e.replace(/^WFPHASE/,`▸ `).replace(/^WFLOG/,`· `)).join(`
3448
- `)}function JB(e){return{stdout:``,stderr:`xxd: ${e}\n`,exitCode:1}}function YB(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 XB(e,t){let n=e.toString(16).padStart(2,`0`);return t?n.toUpperCase():n}function ZB(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function QB(e){return e.replace(/[^0-9a-zA-Z]/g,`_`)}function $B(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?XB(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(`
3456
+ `)}function eV(e){return{stdout:``,stderr:`xxd: ${e}\n`,exitCode:1}}function tV(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 nV(e,t){let n=e.toString(16).padStart(2,`0`);return t?n.toUpperCase():n}function rV(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function iV(e){return e.replace(/[^0-9a-zA-Z]/g,`_`)}function aV(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?nV(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
3457
  `)+`
3450
- `:``}function eV(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+=XB(e[i+r],n);r+=a+`
3451
- `}return r}function tV(e,t,n,r){let i=Array.from(e,e=>`0x${XB(e,n)}`),a=[];for(let e=0;e<i.length;e+=t)a.push(` `+i.slice(e,e+t).join(`, `));let o=a.join(`,
3458
+ `:``}function oV(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+=nV(e[i+r],n);r+=a+`
3459
+ `}return r}function sV(e,t,n,r){let i=Array.from(e,e=>`0x${nV(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
3460
  `);return r===null?i.length?o+`
3453
- `:``:`unsigned char ${r}[] = {\n${o}\n};\nunsigned int ${r}_len = ${e.length};\n`}function nV(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 rV(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 iV={"-u":`upper`,"-p":`plain`,"-ps":`plain`,"-postscript":`plain`,"-i":`include`,"-include":`include`,"-r":`revert`,"-revert":`revert`},aV=[{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 oV(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=iV[r];if(i){t[i]=!0;continue}let a=aV.find(e=>e.exact.includes(r)||e.attached.test(r));if(a){t[a.key]=YB(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 sV(e){return e.includes(`-h`)||e.includes(`--help`)||e.includes(`-help`)}async function cV(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 lV(e,t,n,r,i){let a=e.cols&&e.cols>0?e.cols:e.plain?30:e.include?12:16;return e.plain?eV(t,a,e.upper):e.include?tV(t,a,e.upper,i?null:QB(r??``)):$B(t,a,e.group!=null&&e.group>=0?e.group:2,e.upper,n)}function uV(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 dV(){return S(`xxd`,async(e,t)=>{if(sV(e))return{stdout:`usage: xxd [options] [infile [outfile]]
3461
+ `:``:`unsigned char ${r}[] = {\n${o}\n};\nunsigned int ${r}_len = ${e.length};\n`}function cV(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 lV(e){let t=[],n=0;for(let r of e.split(`
3462
+ `)){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 uV={"-u":`upper`,"-p":`plain`,"-ps":`plain`,"-postscript":`plain`,"-i":`include`,"-include":`include`,"-r":`revert`,"-revert":`revert`},dV=[{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 fV(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=uV[r];if(i){t[i]=!0;continue}let a=dV.find(e=>e.exact.includes(r)||e.attached.test(r));if(a){t[a.key]=tV(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 pV(e){return e.includes(`-h`)||e.includes(`--help`)||e.includes(`-help`)}async function mV(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 hV(e,t,n,r,i){let a=e.cols&&e.cols>0?e.cols:e.plain?30:e.include?12:16;return e.plain?oV(t,a,e.upper):e.include?sV(t,a,e.upper,i?null:iV(r??``)):aV(t,a,e.group!=null&&e.group>=0?e.group:2,e.upper,n)}function gV(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 _V(){return S(`xxd`,async(e,t)=>{if(pV(e))return{stdout:`usage: xxd [options] [infile [outfile]]
3455
3463
  -c cols number of octets per line (default 16; 30 for -p; 12 for -i)
3456
3464
  -g bytes number of octets per group (default 2; 0 disables grouping)
3457
3465
  -l len stop after len octets
@@ -3461,8 +3469,8 @@ pass --wait to block and print the full result.`,PB=new Set([`list`,`status`,`st
3461
3469
  -i output in C include style
3462
3470
  -r reverse: convert a hex dump back to binary (-r -p for plain)
3463
3471
  -h show this help
3464
- `,stderr:``,exitCode:0};let n;try{n=oV(e)}catch(e){return JB(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await cV(t,r,a)}catch{return JB(`${r}: No such file or directory`)}if(n.revert){let e=ZB(o),r=n.plain?nV(e):rV(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:ZB(r),stderr:``,exitCode:0}}let{data:s,base:c}=uV(n,o),l=lV(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 fV(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 fV(e,i,s,r)}return a}function pV(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3465
- `,stderr:``,exitCode:0}}function mV(){return S(`zip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return pV();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 fV(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 hV(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function gV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[UD(`ipk`,r),UD(`npm`,r),UD(`i`,r),EO(`ipx`,{fs:t,fetch:n}),EO(`npx`,{fs:t,fetch:n}),Zy(`di`,{fs:t,fetch:n}),Zy(`uv`,{fs:t,fetch:n}),KL({fs:t,fetch:n})]}function _V(e={}){let t=[qT({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),te(),zF(),iF(),ZP(e.browserAPI,e.fs),Ij(e.browserAPI),py(e.browserAPI),JE(e),mV(),SL(),mI(),KF(),$F(),XF(),cv(),dV(),NF(`sqlite3`),NF(`sqllite`),jI(),ZI(),px(),W_(),$A({buildProcessConfig:e.buildProcessConfig}),$A({buildProcessConfig:e.buildProcessConfig},`jsh`),XM(`python3`,{buildProcessConfig:e.buildProcessConfig}),XM(`python`,{buildProcessConfig:e.buildProcessConfig}),...gV(e),...e.fs?[yS({fs:e.fs})]:[],...e.fs?[dA({fs:e.fs})]:[],...e.fetch?[eE({fetch:e.fetch})]:[],oS(),sS(),jz(e.webhook),gB(),fy(e.crontask),vk({fs:e.fs,scriptCatalog:e.scriptCatalog}),nM({fs:e.fs,fetch:e.fetch}),vS(),wF(),Lj(),Rj(`pdftk`),Rj(`pdf`),G_(`biscotto`),G_(`biscotti`),Jj(`pdftoppm`),Jj(`pdftocairo`),Yj(`pdftotext`),Xv(`convert`),Xv(`magick`),SB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),tL(),_L(),WE(),GE(),vL(),fA(),eN(),fk(),Rb(),mj(),pj(),lk(),SP(hV(e)),pN({fs:e.fs}),BN(),av(),ov(),sv(`xclip`),sv(`xsel`),zN(),LS(),gg(),_g(),zA(e.fs),et(),ij(),Lg({getParentJid:e.getParentJid}),Kb(),wM({processManager:e.processManager}),sR({processManager:e.processManager}),kO({processManager:e.processManager}),DO({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...Bg(),uA(),tk(),MR(),EE(),Jx(),JR({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}),VF(e.sudoCommand),zB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),_B(),rF()];return e.fs&&(Zj(),t.push(...Mn.map(t=>WT(t,e.browserAPI,e.fs)))),t}let vV=null;function yV(e){vV=e}function bV(e){vV?.(e)}var xV=Et();const SV=Reflect.get(Je,`DefenseInDepthBox`);function CV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function wV(e,t){if(typeof e!=`string`)return e;let n=CV(t);if(n===`binary`||n===`latin1`){let t=le(e);if(t)return t}return xV.Buffer.from(e,n)}var TV=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=SV?.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=CV(t),o=xV.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 xV.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,wV(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(b(e),wV(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 EV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?EV(e.getUnderlyingFS?.()):null}async function DV(e){let t=ce(`github`);if(t){if(e?.force){await t.onSilentRenew?.();return}await t.getValidAccessToken?.()}}const OV=e(`almost-bash-shell`),kV=`__SLICC_RUN_PID`,AV=`__SLICC_OUTPUT_TEE__`;function jV(e){let t=e?.get(kV);if(t===void 0)return;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:void 0}function MV(e){if(!(kV in e)&&!(AV in e)&&!(`__SLICC_SUDO_REASON`in e)&&!(`__SLICC_PIPESTATUS`in e)&&!(`__SLICC_PIPESTATUS_EX`in e))return{...e};let{[kV]:t,[AV]:n,[$p]:r,[rp]:i,[ip]:a,...o}=e;return o}var NV=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(jV(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 _V({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,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 TV(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:DV}),this.mountCommands=new Cs({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:om});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=EV(i)??EV(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){OV.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){bV(e.trim().split(/\s+/)[0]||`unknown`),p(),await this.waitForInitialJshSync(t);let o=tm(e),s={env:{...this.lastEnv,...n===void 0?{}:{[kV]:String(n)},...i===void 0?{}:{[AV]: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=MV(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(AV),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(AV);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)OV.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(jV(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 _,kB as a,Sa as b,mp as c,ms as d,ss as f,Lo as g,ts as h,TB as i,$f as l,rs as m,TV as n,CB as o,is as p,yV as r,Qp as s,NV as t,hs as u,Do as v,xa as x,va as y};
3472
+ `,stderr:``,exitCode:0};let n;try{n=fV(e)}catch(e){return eV(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await mV(t,r,a)}catch{return eV(`${r}: No such file or directory`)}if(n.revert){let e=rV(o),r=n.plain?cV(e):lV(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:rV(r),stderr:``,exitCode:0}}let{data:s,base:c}=gV(n,o),l=hV(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 vV(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 vV(e,i,s,r)}return a}function yV(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3473
+ `,stderr:``,exitCode:0}}function bV(){return S(`zip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return yV();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
3474
+ `,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 vV(t,r,a,o)}if(s===0)return{stdout:``,stderr:`zip: nothing to do
3475
+ `,exitCode:1};let c=St(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function xV(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function SV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[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}),QL({fs:t,fetch:n})]}function CV(e={}){let t=[YT({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),te(),GF(),uF(),rF(e.browserAPI,e.fs),Uj(e.browserAPI),py(e.browserAPI),tD(e),bV(),OL(),bI(),QF(),aI(),nI(),cv(),_V(),zF(`sqlite3`),zF(`sqllite`),LI(),rL(),px(),W_(),oj({buildProcessConfig:e.buildProcessConfig}),oj({buildProcessConfig:e.buildProcessConfig},`jsh`),rN(`python3`,{buildProcessConfig:e.buildProcessConfig}),rN(`python`,{buildProcessConfig:e.buildProcessConfig}),...SV(e),...e.fs?[yS({fs:e.fs})]:[],...e.fs?[vA({fs:e.fs})]:[],...e.fetch?[sE({fetch:e.fetch})]:[],oS(),sS(),Lz(e.webhook),SB(),fy(e.crontask),Tk({fs:e.fs,scriptCatalog:e.scriptCatalog}),lM({fs:e.fs,fetch:e.fetch}),vS(),AF(),Wj(),Gj(`pdftk`),Gj(`pdf`),G_(`biscotto`),G_(`biscotti`),tM(`pdftoppm`),tM(`pdftocairo`),nM(`pdftotext`),Xv(`convert`),Xv(`magick`),OB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),sL(),CL(),ZE(),QE(),wL(),yA(),sN(),yk(),Rb(),xj(),bj(),gk(),OP(xV(e)),bN({fs:e.fs}),KN(),av(),ov(),sv(`xclip`),sv(`xsel`),GN(),LS(),gg(),_g(),KA(e.fs),et(),dj(),Lg({getParentJid:e.getParentJid}),Kb(),jM({processManager:e.processManager}),pR({processManager:e.processManager}),IO({processManager:e.processManager}),PO({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...Bg(),_A(),ck(),RR(),NE(),Jx(),ez({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}),qF(e.sudoCommand),GB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),CB(),lF()];return e.fs&&(iM(),t.push(...Mn.map(t=>KT(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let wV=null;function TV(e){wV=e}function EV(e){wV?.(e)}var DV=Et();const OV=Reflect.get(Je,`DefenseInDepthBox`);function kV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function AV(e,t){if(typeof e!=`string`)return e;let n=kV(t);if(n===`binary`||n===`latin1`){let t=le(e);if(t)return t}return DV.Buffer.from(e,n)}var jV=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=OV?.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=kV(t),o=DV.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 DV.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,AV(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(b(e),AV(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 MV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?MV(e.getUnderlyingFS?.()):null}async function NV(e){let t=ce(`github`);if(t){if(e?.force){await t.onSilentRenew?.();return}await t.getValidAccessToken?.()}}const PV=e(`almost-bash-shell`),FV=`__SLICC_RUN_PID`,IV=`__SLICC_OUTPUT_TEE__`;function LV(e){let t=e?.get(FV);if(t===void 0)return;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:void 0}function RV(e){if(!(FV in e)&&!(IV in e)&&!(`__SLICC_SUDO_REASON`in e)&&!(`__SLICC_PIPESTATUS`in e)&&!(`__SLICC_PIPESTATUS_EX`in e))return{...e};let{[FV]:t,[IV]:n,[$p]:r,[rp]:i,[ip]:a,...o}=e;return o}var zV=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(LV(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 CV({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 jV(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:NV}),this.mountCommands=new Ss({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:om});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=MV(i)??MV(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){PV.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){EV(e.trim().split(/\s+/)[0]||`unknown`),p(),await this.waitForInitialJshSync(t);let o=tm(e),s={env:{...this.lastEnv,...n===void 0?{}:{[FV]:String(n)},...i===void 0?{}:{[IV]: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=RV(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(IV),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(IV);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(`
3476
+ `)?`${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)PV.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(LV(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{da as C,bo as S,Fo as _,FB as a,xa as b,mp as c,ps as d,os as f,Io as g,es as h,jB as i,$f as l,ns as m,jV as n,kB as o,rs as p,TV as r,Qp as s,zV as t,ms as u,Eo as v,ba as x,_a as y};