sliccy 6.237.0 → 6.237.2

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 (131) hide show
  1. package/dist/ui/.vite/manifest.json +177 -177
  2. package/dist/ui/assets/{account-store-BVwBfCUF.js → account-store-CivERjco.js} +1 -1
  3. package/dist/ui/assets/{account-store-2UVDIBSo.js → account-store-nItMZcAJ.js} +1 -1
  4. package/dist/ui/assets/{adobe-Cd7p8Rl3.js → adobe-4eesEDU-.js} +1 -1
  5. package/dist/ui/assets/{adobe-DBxbMuMR.js → adobe-MMPVnSgh.js} +1 -1
  6. package/dist/ui/assets/{agent-panels-Cjsw_Fvr.js → agent-panels-DXzQhcvZ.js} +1 -1
  7. package/dist/ui/assets/{almost-bash-shell-headless-B6uQofdG.js → almost-bash-shell-headless-CuCsoGqg.js} +16 -16
  8. package/dist/ui/assets/{apply-layout-BYwQLa-T.js → apply-layout-B2b7IUja.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-Dhru9VhQ.js → azure-openai-C4mbMK4r.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-BSj98Qp3.js → azure-openai-Cr3qJeUH.js} +1 -1
  11. package/dist/ui/assets/{browser-Jlk38XAj.js → browser-CGX7MbCQ.js} +2 -2
  12. package/dist/ui/assets/{cdp-B6Cqo_2K.js → cdp-B22XS335.js} +1 -1
  13. package/dist/ui/assets/{cerebras-BtbSM0bC.js → cerebras-BaMBQf_X.js} +1 -1
  14. package/dist/ui/assets/{cerebras-DWt0TI5p.js → cerebras-BuYH9IiU.js} +1 -1
  15. package/dist/ui/assets/{composer-speech-BkSmONRt.js → composer-speech-DzH0Bd4f.js} +1 -1
  16. package/dist/ui/assets/{connect-surface-B0R5pIdS.js → connect-surface-CyrhmG_X.js} +1 -1
  17. package/dist/ui/assets/{cost-command-05RLVzlt.js → cost-command-TMcbUPyN.js} +1 -1
  18. package/dist/ui/assets/{directed-approval-BHNGh7CZ.js → directed-approval-Y33yS_Sc.js} +1 -1
  19. package/dist/ui/assets/{emscripten-vfs-hook-DOa5PsLX.js → emscripten-vfs-hook-CZ1HwPSC.js} +1 -1
  20. package/dist/ui/assets/{frozen-archive-writer-CG04M9bz.js → frozen-archive-writer-D0G3o1-H.js} +1 -1
  21. package/dist/ui/assets/{gelatiere-unit-DxxhvcUE.js → gelatiere-unit-CHmUVRvm.js} +1 -1
  22. package/dist/ui/assets/{github-CxdR_A3t.js → github-C4Vhddvl.js} +1 -1
  23. package/dist/ui/assets/{github-Dizt1aUf.js → github-DlK6mA37.js} +1 -1
  24. package/dist/ui/assets/{github-copilot-Bv3EiAPF.js → github-copilot-DekLIFTd.js} +1 -1
  25. package/dist/ui/assets/{github-copilot-CY4yzEhJ.js → github-copilot-lAZ4OZ2r.js} +1 -1
  26. package/dist/ui/assets/{hear-ivfdcWsG.js → hear-C4ca410z.js} +1 -1
  27. package/dist/ui/assets/{host-command-CwRNpVLr.js → host-command-CvUauhDf.js} +1 -1
  28. package/dist/ui/assets/{js-realm-worker-DimjxFC7.js → js-realm-worker-DJD5ZrxD.js} +2 -2
  29. package/dist/ui/assets/{jsh-executor-BMHOP8Ee.js → jsh-executor-C2__rSFU.js} +2 -2
  30. package/dist/ui/assets/{kernel-worker-Mlna6Sz7.js → kernel-worker-CjZd9XRW.js} +9 -9
  31. package/dist/ui/assets/{lick-ws-bridge-Beo63Ltx.js → lick-ws-bridge-CRI7ClW9.js} +1 -1
  32. package/dist/ui/assets/{lick-ws-bridge-BNLrMRTs.js → lick-ws-bridge-DGKfgSKw.js} +1 -1
  33. package/dist/ui/assets/{live-session-curation-Cdmv-uvz.js → live-session-curation-Cazg45Op.js} +1 -1
  34. package/dist/ui/assets/{live-session-snapshot-yYv-8eKf.js → live-session-snapshot-Ctqy459R.js} +1 -1
  35. package/dist/ui/assets/{local-llm-DG8UVKCb.js → local-llm-D0ojMz3e.js} +1 -1
  36. package/dist/ui/assets/{local-llm-p6guz-en.js → local-llm-yQTqA0rT.js} +1 -1
  37. package/dist/ui/assets/{main-BesYar_x.js → main-CwuzK63d.js} +3 -3
  38. package/dist/ui/assets/{main-cherry-B7IGmeHM.js → main-cherry-D-nAkYws.js} +1 -1
  39. package/dist/ui/assets/{mcp-command-C67i3Bq4.js → mcp-command-DvN8ZhAS.js} +10 -10
  40. package/dist/ui/assets/{memory-curation-seam-DCPs8MCB.js → memory-curation-seam-CDJkbUen.js} +1 -1
  41. package/dist/ui/assets/{memory-health-CmGXCTzg.js → memory-health-CbJmcfg5.js} +1 -1
  42. package/dist/ui/assets/{memory-write-execute-CoWCnJZH.js → memory-write-execute-BgP8zbbw.js} +1 -1
  43. package/dist/ui/assets/{merge-folded-cost-into-frozen-BLELC06M.js → merge-folded-cost-into-frozen-1G2R8HHx.js} +1 -1
  44. package/dist/ui/assets/{new-session-YZnRMY3V.js → new-session-BR0chPjF.js} +2 -2
  45. package/dist/ui/assets/{oauth-bootstrap-DuerLpNJ.js → oauth-bootstrap-vp6UbI-4.js} +2 -2
  46. package/dist/ui/assets/{onboarding-orchestrator-DHhcKVSK.js → onboarding-orchestrator-CzvMpmV1.js} +1 -1
  47. package/dist/ui/assets/{openai-codex-05bw65vX.js → openai-codex-C6lioSUA.js} +1 -1
  48. package/dist/ui/assets/{openai-codex-BHjAE-QF.js → openai-codex-O8d_rNUe.js} +1 -1
  49. package/dist/ui/assets/{openrouter-bU9SC5kT.js → openrouter-COsS8Xpw.js} +1 -1
  50. package/dist/ui/assets/{openrouter-free-CG1UlPPk.js → openrouter-free-ByMT7WZ1.js} +1 -1
  51. package/dist/ui/assets/{openrouter-free-C7JoW_FN.js → openrouter-free-P1MfNqEl.js} +1 -1
  52. package/dist/ui/assets/{openrouter-oauth-Bjfhpgeh.js → openrouter-oauth-CPxQhdjy.js} +1 -1
  53. package/dist/ui/assets/{openrouter-oauth-CEw4BTDd.js → openrouter-oauth-SYD1905j.js} +1 -1
  54. package/dist/ui/assets/{openrouter-HuaITE5Y.js → openrouter-zonVO2eI.js} +1 -1
  55. package/dist/ui/assets/{panel-rpc-handlers-DfVIrhEp.js → panel-rpc-handlers-Bqn2L52U.js} +2 -2
  56. package/dist/ui/assets/{panelize-shell-B6vAQ_hA.js → panelize-shell-LwoDOAMg.js} +1 -1
  57. package/dist/ui/assets/{pi-edit-execution-DB88fLjV.js → pi-edit-execution-Ck6QElbD.js} +1 -1
  58. package/dist/ui/assets/{provider-S-xW5DLs.js → provider-B6Br6Gyv.js} +1 -1
  59. package/dist/ui/assets/{provider-DP3hMFiy.js → provider-CU3KQBgV.js} +1 -1
  60. package/dist/ui/assets/{provider-settings-omv4Ivbb.js → provider-settings-D9qJh-F0.js} +1 -1
  61. package/dist/ui/assets/provider-store-access-10_vLR43.js +1 -0
  62. package/dist/ui/assets/provider-store-access-DcsCov37.js +1 -0
  63. package/dist/ui/assets/{providers-B3dtMxCv.js → providers-C8yJv_dr.js} +1 -1
  64. package/dist/ui/assets/{providers-DiR5ma25.js → providers-CIG9-dLB.js} +2 -2
  65. package/dist/ui/assets/{quick-llm-BZAC-NHj.js → quick-llm-BrUsz6_e.js} +1 -1
  66. package/dist/ui/assets/{realm-inprocess-BD0RlZtc.js → realm-inprocess-DA-IpJz_.js} +2 -2
  67. package/dist/ui/assets/{realm-unhandled-rejections-BcwlkQ6H.js → realm-unhandled-rejections-BlU0laaY.js} +1 -1
  68. package/dist/ui/assets/{realm-unhandled-rejections-DzcCrOm0.js → realm-unhandled-rejections-CEC2iGJJ.js} +1 -1
  69. package/dist/ui/assets/{recovery-screen-CVVjARtJ.js → recovery-screen-CJLHjEMb.js} +1 -1
  70. package/dist/ui/assets/{remote-terminal-view-xkuj-v1h.js → remote-terminal-view-X8J5vWDE.js} +2 -2
  71. package/dist/ui/assets/{restore-CqPcyEtY.js → restore-Cvb2_Tys.js} +1 -1
  72. package/dist/ui/assets/{run-DyWK2CEh.js → run-B7Gxq2hA.js} +1 -1
  73. package/dist/ui/assets/{run-BteWzSfI.js → run-C1H8fJIP.js} +2 -2
  74. package/dist/ui/assets/{run-yplzwsG-.js → run-Cf6ZRThe.js} +1 -1
  75. package/dist/ui/assets/{run-Zu9QCbOT.js → run-Cxla4Ky-.js} +2 -2
  76. package/dist/ui/assets/{run-B39tlo9Y.js → run-DnxVNWPE.js} +1 -1
  77. package/dist/ui/assets/{run-DH2tb90L.js → run-XzRUhomo.js} +1 -1
  78. package/dist/ui/assets/{run-M6VkslbE.js → run-_s42Xqna.js} +2 -2
  79. package/dist/ui/assets/{session-command-memory-CL_-Hk6R.js → session-command-memory-B9VZUetL.js} +2 -2
  80. package/dist/ui/assets/{session-jsonl-CEMeUkr7.js → session-jsonl-C7YjxaqI.js} +1 -1
  81. package/dist/ui/assets/{session-jsonl-DzgRmgiq.js → session-jsonl-Cy6mSJro.js} +1 -1
  82. package/dist/ui/assets/{session-search-index-CJnH7G_r.js → session-search-index-k_YYabTx.js} +1 -1
  83. package/dist/ui/assets/{setup-feature-flags-remote-Gv4-U-Uf.js → setup-feature-flags-remote-BFeC2dQJ.js} +1 -1
  84. package/dist/ui/assets/{setup-model-catalog-B549G9aq.js → setup-model-catalog-Chd_-juK.js} +1 -1
  85. package/dist/ui/assets/{silent-renew-backoff-vlgeY0T8.js → silent-renew-backoff-D1G-RWqE.js} +1 -1
  86. package/dist/ui/assets/slicc-version-B_Uar9hQ.js +1 -0
  87. package/dist/ui/assets/{soundscape-DeT_Vcex.js → soundscape-Ct3AH8QQ.js} +1 -1
  88. package/dist/ui/assets/{speak-CsD8CmXK.js → speak-DJXj5PvG.js} +1 -1
  89. package/dist/ui/assets/{sprinkle-manager-Dp_-sQyw.js → sprinkle-manager-LjJrtRZH.js} +1 -1
  90. package/dist/ui/assets/{sprinkle-renderer-B7nhUy5q.js → sprinkle-renderer-HUCbAhU7.js} +1 -1
  91. package/dist/ui/assets/{ssh-B2--kdSm.js → ssh-BNRWir5e.js} +1 -1
  92. package/dist/ui/assets/{sudo-CKTbiKG6.js → sudo-BXJunwqL.js} +1 -1
  93. package/dist/ui/assets/{supervisor-DKAMZ-7_.js → supervisor-U9qlUctV.js} +1 -1
  94. package/dist/ui/assets/{sync-dialog-BHQ36Uhb.js → sync-dialog-LspjDHlq.js} +1 -1
  95. package/dist/ui/assets/{transformers-env-tDj2E1Cj.js → transformers-env-BMp3dDDM.js} +1 -1
  96. package/dist/ui/assets/{tray-leader-BPXlPVis.js → tray-leader-a3iXhi2A.js} +1 -1
  97. package/dist/ui/assets/{tray-leave-runtime-BhYhYqTx.js → tray-leave-runtime-BHizYKM6.js} +1 -1
  98. package/dist/ui/assets/{tray-sidecar-rzjumylt.js → tray-sidecar-C8Q4XNtE.js} +1 -1
  99. package/dist/ui/assets/{upgrade-detection-DzuwGI0G.js → upgrade-detection-eU9c4eEh.js} +1 -1
  100. package/dist/ui/assets/{voice-reply-BScrVmTs.js → voice-reply-DeHGblbd.js} +1 -1
  101. package/dist/ui/assets/{wc-attach-DcrX7N4I.js → wc-attach-DLREOCz-.js} +2 -2
  102. package/dist/ui/assets/{wc-browser-CuHR0YpG.js → wc-browser-BtZeD7Zc.js} +1 -1
  103. package/dist/ui/assets/{wc-computers-JrkJe-Qp.js → wc-computers-TX6BQM57.js} +1 -1
  104. package/dist/ui/assets/{wc-detached-Byi9jayM.js → wc-detached-BxT0et3z.js} +1 -1
  105. package/dist/ui/assets/{wc-extension-B1ywPlqG.js → wc-extension-BWo9_LqW.js} +2 -2
  106. package/dist/ui/assets/{wc-follower-D8DJWYud.js → wc-follower-BAmWu-u0.js} +3 -3
  107. package/dist/ui/assets/{wc-follower-oauth-CC2XoCbn.js → wc-follower-oauth-C3mtX0jD.js} +1 -1
  108. package/dist/ui/assets/{wc-gelatiere-BxmeJ2RC.js → wc-gelatiere-XfyqMi6T.js} +1 -1
  109. package/dist/ui/assets/{wc-live-RAXJvlvd.js → wc-live-CaTybw3B.js} +5 -5
  110. package/dist/ui/assets/{wc-nav-hmRVPTJ6.js → wc-nav-TlytGNMB.js} +2 -2
  111. package/dist/ui/assets/{wc-onboarding-Bx05hW7I.js → wc-onboarding-DA2R9grP.js} +2 -2
  112. package/dist/ui/assets/{wc-permissions-Bc-RgpF8.js → wc-permissions-BK6nOWSB.js} +2 -2
  113. package/dist/ui/assets/{wc-placeholder-d_De45b0.js → wc-placeholder-Cj1kmDRN.js} +3 -3
  114. package/dist/ui/assets/{wc-secret-request-CfPjtpzU.js → wc-secret-request-DkCIXIYZ.js} +1 -1
  115. package/dist/ui/assets/{wc-settings--Q9n8sFE.js → wc-settings-Cf_nJ6JU.js} +3 -3
  116. package/dist/ui/assets/{wc-shell-CPR3A5tm.js → wc-shell-DOvfO-Op.js} +3 -3
  117. package/dist/ui/assets/{wc-shortcut-config-CgkUhhck.js → wc-shortcut-config-CBtz7DgT.js} +1 -1
  118. package/dist/ui/assets/{wc-sprinkles-AJYh-VqI.js → wc-sprinkles-C_IFSUWu.js} +2 -2
  119. package/dist/ui/assets/{wc-transcript-export-DOj9tIDF.js → wc-transcript-export-C_w4FeXX.js} +2 -2
  120. package/dist/ui/assets/{wc-tray-BgX2m9DN.js → wc-tray-zSpr15Y0.js} +4 -4
  121. package/dist/ui/assets/welcome-detection-C5wmcpXs.js +1 -0
  122. package/dist/ui/assets/{whisper-session-1RRsXUnr.js → whisper-session-B4ufzVy8.js} +2 -2
  123. package/dist/ui/assets/{xai-grok-CJ0o1N6R.js → xai-grok-1aO0rfQw.js} +1 -1
  124. package/dist/ui/assets/{xai-grok-BL8fGhRt.js → xai-grok-COKdRcaD.js} +1 -1
  125. package/dist/ui/index.html +3 -3
  126. package/dist/ui/packages/webapp/index.html +3 -3
  127. package/package.json +1 -1
  128. package/dist/ui/assets/provider-store-access-0t4BfpD4.js +0 -1
  129. package/dist/ui/assets/provider-store-access-BchYV7oE.js +0 -1
  130. package/dist/ui/assets/slicc-version-Bjp3c69r.js +0 -1
  131. package/dist/ui/assets/welcome-detection-Bl527FK6.js +0 -1
@@ -1,4 +1,4 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import{r as t,t as n}from"./base64-BPBW1Gzr.js";import{n as r}from"./bridge-protocol-31SWTdS5.js";import{a as i,n as a,o,s,t as c}from"./handoff-link-B3It6xQY.js";import{C as l,d as u,f as d,i as f,u as p}from"./account-store-BVwBfCUF.js";import{c as m,d as h,n as g,r as _,s as v}from"./proxied-fetch-F-dCBEfh.js";import{t as ee}from"./sha256-DynDhwRL.js";import{t as te}from"./runtime-env-DadgceZk.js";import{t as ne}from"./slugify-BYJ6QVAt.js";import{i as re,n as ie,r as ae,t as oe}from"./host-command-CwRNpVLr.js";import{a as se,i as ce,n as le,r as ue,t as de}from"./snapshot-YDNf2VnW.js";import{n as fe,t as y}from"./panel-rpc-accessor-B4BfPLSo.js";import{a as pe,c as me,n as he,o as ge,s as _e,t as ve}from"./feature-flags-QlgHaQc1.js";import{t as ye}from"./providers-B3dtMxCv.js";import{r as be}from"./binary-cache-bSOhqXB1.js";import{i as xe,n as Se,r as Ce}from"./fetch-body-CuwTaJC_.js";import{s as we,t as Te}from"./api-endpoint-D8lUKmPu.js";import{t as Ee}from"./compat-nGhSz-U1.js";import"./core-C1m4D34S.js";import{n as De,t as Oe}from"./mime-types-D7IV6i7k.js";import{n as ke,t as Ae}from"./float-topology-COIC4j_U.js";import{t as je}from"./secrets-bridge-client-GOCzDscb.js";import{a as Me,i as Ne,n as Pe,r as Fe}from"./tool-ui-DRnUkp2g.js";import{a as Ie,i as Le,n as b,t as x}from"./path-utils-DNJG-zQf.js";import{n as Re,r as ze,t as Be}from"./merge-file-core-VJlzucJY.js";import{n as Ve,t as He}from"./types-D8gIX-W-.js";import{i as Ue}from"./mount-index-CQfmUPuZ.js";import{a as We,i as Ge,n as Ke,o as qe,s as Je,t as Ye}from"./signed-fetch-DeDG40wV.js";import{o as Xe}from"./mount-table-store-DrF_Ifaz.js";import{t as Ze}from"./remote-cache-UwMD8EkX.js";import{n as Qe}from"./fs-D_cFUSir.js";import{a as $e}from"./tray-leader-status-CpkFr6n7.js";import{n as et,t as tt}from"./slicc-version-Bjp3c69r.js";import{a as nt,i as rt,o as it,r as S,t as at}from"./browser-Jlk38XAj.js";import{t as C}from"./subcommand-flags-BZi7j78Q.js";import{n as ot,r as st,t as w}from"./subcommand-help-CgO7wRS5.js";import{n as ct}from"./cost-command-05RLVzlt.js";import{d as lt,g as ut,i as dt,n as ft,o as pt}from"./sudoers-BdBYQPUn.js";import{t as mt}from"./sudo-refusal-DVwTXFRE.js";import{n as ht}from"./types-Dj5TU-Qg.js";import{a as gt,c as _t,i as vt,l as yt,n as bt,o as xt,r as St,t as Ct}from"./types-JfhqX7lD.js";import{n as T,t as wt}from"./boundary-DjgipyWT.js";import"./rest-paths-Dia19u9P.js";import{t as Tt}from"./html-B_Hg2WOy.js";import{n as Et}from"./llm-session-id-CKpY5F_-.js";import{t as Dt}from"./src-CUSndb9K.js";import{i as Ot,o as kt}from"./browser-DuyhpHbR.js";import{a as At,c as jt,n as Mt,o as Nt,r as Pt,s as Ft,t as It}from"./reason-l_1I9RdR.js";import{i as Lt,r as Rt,t as zt}from"./mount-picker-popup-BMils9JY.js";import{t as Bt}from"./buffer-B5d1xHaH.js";import"./buffer-polyfill-BwLbCySD.js";import{A as Vt,B as E,C as Ht,D,E as Ut,F as Wt,G as Gt,H as O,I as k,J as Kt,K as qt,L as Jt,M as Yt,N as Xt,O as Zt,P as Qt,R as $t,S as en,T as tn,U as nn,V as rn,W as an,Y as on,_ as sn,a as cn,b as ln,c as un,d as dn,f as fn,g as pn,h as mn,i as hn,j as gn,k as _n,l as vn,m as yn,n as bn,o as xn,p as A,q as Sn,r as Cn,s as wn,t as Tn,u as En,v as Dn,w as On,x as kn,y as An,z as jn}from"./isomorphic-git-r9mnHMnp.js";import"./global-db-DJXlpNui.js";import{S as Mn,_ as Nn,a as Pn,b as Fn,c as In,d as Ln,f as Rn,g as zn,h as Bn,i as Vn,l as Hn,n as Un,o as Wn,p as Gn,r as Kn,s as qn,t as Jn,u as Yn,v as j,x as M,y as Xn}from"./state-BOigwV2f.js";import{a as Zn,i as Qn,r as $n,t as er}from"./git-config-Bdgu8kD2.js";import{h as tr,i as nr,r as rr}from"./stdio-tty-CipJs8Mm.js";import{i as ir,r as ar}from"./global-prefix-DqCuANmV.js";import{t as or}from"./wasm-programs-Bd5YaoqY.js";import{a as sr,n as cr,o as lr,r as ur,s as dr}from"./jsh-discovery-CnvNKojr.js";import{C as fr,a as pr,b as mr,c as hr,d as gr,f as _r,h as vr,i as yr,l as br,m as xr,n as Sr,o as Cr,p as wr,r as Tr,s as Er,t as N,u as Dr,v as Or,y as kr}from"./shared-D-ZRFYou.js";import{_ as Ar,a as jr,b as Mr,d as Nr,f as Pr,g as Fr,h as Ir,i as Lr,l as Rr,m as zr,p as Br,r as Vr,s as Hr,u as Ur,v as Wr,y as Gr}from"./require-guards-dUdxJmkR.js";import{_ as Kr,a as qr,b as Jr,c as Yr,d as Xr,f as Zr,g as Qr,h as $r,l as ei,m as ti,n as ni,p as ri,s as ii,t as ai,u as oi,v as si,x as ci,y as li}from"./jsh-executor-BMHOP8Ee.js";import{n as ui,t as di}from"./esbuild-wasm-DeTghvWH.js";import{n as fi}from"./wasm-compiler-Ct7QZURL.js";import{a as pi,o as mi,s as hi,t as gi}from"./usb-device-registry-DFzxaOky.js";import{a as P,i as _i,r as vi,t as yi}from"./just-bash-compat-B-SPHuh_.js";import{i as bi,r as xi,t as Si}from"./script-catalog-WaCMvXY3.js";import{a as Ci,c as wi,o as Ti,s as Ei,t as Di}from"./types-Dzr0qYl3.js";import{a as Oi,c as ki,d as Ai,f as ji,n as Mi,r as Ni,u as Pi}from"./github-zip-CMSbKC3q.js";import{i as Fi,t as Ii}from"./github-auth-D-_-pCrt.js";import{a as Li,i as Ri,o as zi,r as Bi,t as Vi}from"./provenance-DdmsQ3Nr.js";import{a as Hi,c as Ui,i as Wi,n as Gi,o as Ki,r as qi,s as Ji}from"./github-install-NHKpL-_w.js";import{n as Yi,t as Xi}from"./magick-wasm-BbnwhVj1.js";import{i as Zi,n as Qi,r as $i,t as ea}from"./pdf-raster-BWk6ezTX.js";import{n as ta}from"./lick-target-env-8JxfVcIV.js";import{t as na}from"./tmpdir-env-ate4iNcK.js";import{n as ra,t as ia}from"./keyboard-TcuVIW9F.js";import{n as aa,t as oa}from"./hf-defaults-BwJdGLgk.js";import{t as sa}from"./ffmpeg-wasm-sx-3yVAE.js";import{t as ca}from"./local-llm-p6guz-en.js";import{i as la,n as ua,r as da,t as fa}from"./tar-BWIPCxI2.js";import{a as pa,c as ma,i as ha,o as ga,r as _a,s as va}from"./v86-vm-DCm7zA2r.js";import{n as ya,r as ba}from"./lick-urls-CgPiVwD-.js";let xa=null;function Sa(e){xa=e!==null&&Number.isFinite(e)&&e>0?e:null}function Ca(){if(xa!==null)return xa;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const wa=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function Ta(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=wa.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 Ea(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 Da(e,t){return e.some(e=>Ea(e,t))}const Oa=`slicc-transcript`,ka=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],Aa=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 ja(e){return Aa.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Ma=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const Na=new Set(ka),Pa=/^[0-9a-fA-F]{64}$/,Fa=/^\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 Ia(e){return typeof e==`string`&&Pa.test(e)}function La(e){return Fa.test(e)&&Number.isFinite(Date.parse(e))}function Ra(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 za(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Ra(n,t)}:{ok:!0}}function Ba(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 Va(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 Ha(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=za(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?Va(e,t):n}function Ua(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 Wa(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 Ga(e,t){let n=Ua(e,t);if(!n.ok)return n;let r=e.cost;return F(r)?Wa(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function Ka(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`?La(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 qa(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 Ja(e,t){let n=e.usage;return n===void 0?{ok:!0}:F(n)?Ga(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function Ya(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=za(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=qa(e,t);if(!n.ok)return n}let r=Ka(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=Ba(i,Ha,`${t}.content`);return a.ok?Ja(e,t):a}function Xa(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=za(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Ba(r,Ya,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function Za(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 Qa(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`}:Ia(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 $a=[`attachment-file-missing`,`attachment-association-unavailable`];function eo(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?za(e.missingReason,$a,`${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 to(e,t){return e.present?Qa(e,t):eo(e,t)}function no(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Za(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=za(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?to(e,t):r}function ro(e,t){let n=za(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 io(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=za(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return F(r)?ro(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function ao(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 oo(e,t){return typeof e!=`string`||!Na.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function so(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 co(e){if(!F(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=za(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Ba(e.missing,oo,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function lo(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=za(e.state,[`active`,`frozen`],`session.state`);return t.ok?co(e.completeness):t}function uo(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)?Ba(n,io,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function fo(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Ba(t,Xa,`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=Ba(r,ao,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Ba(a,no,`attachments`):{ok:!1,error:`attachments must be an array`}}function po(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 mo(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 ho(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 go(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 ho(e))t.add(n)}return t}function _o(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 vo(e){return _o(e,go(e))}function yo(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 bo(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=yo(e,t);if(!r.ok)return r}}return{ok:!0}}function xo(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return bo(e,n)}function So(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 Co(e,t){let n=So(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 wo(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(ho(e)))}return t}function To(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 Eo(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return To(e,n,wo(t))}function Do(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 Oo(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=Do(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function ko(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=po(t);if(!o.ok)return o;let s=mo(t);if(!s.ok)return s;let c=vo(t);if(!c.ok)return c;let l=xo(t,n);if(!l.ok)return l;let u=Co(n,t);if(!u.ok)return u;let d=Eo(r,t);return d.ok?Oo(a,n):d}function Ao(e){let t=fo(e);return t.ok?ko(e):t}function jo(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=so(e.export);if(!t.ok)return t;let n=lo(e.session);if(!n.ok)return n;let r=uo(e.privacy);return r.ok?Ao(e):r}async function Mo(e,t,n){let r=await n({method:`GET`,path:`/${e}/sites/${t}/config.json`,origin:qe});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:No(a),sourceUrl:a}}function No(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const Po=`slicc-sprinkle-routes`;function Fo(){try{let e=localStorage.getItem(Po);return e?JSON.parse(e):{}}catch{return{}}}function Io(e){try{localStorage.setItem(Po,JSON.stringify(e))}catch{}}function Lo(e){return Fo()[e]}function Ro(e,t){let n=Fo();n[e]=t,Io(n)}function zo(e){let t=Fo();delete t[e],Io(t)}function Bo(){return Fo()}function Vo(e,t,n){return _t(t,n,`${e} adapter does not implement ${t}.${n}`)}function Ho(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(Vo(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function Uo(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:Ho(t,`browser`,bt,e.browser),network:Ho(t,`network`,gt,e.network),secrets:Ho(t,`secrets`,xt,e.secrets),devices:Ho(t,`devices`,St,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:Ho(t,`mounts`,vt,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:Ho(t,`approvals`,Ct,e.approvals)}}function Wo(e={}){return Uo({adapter:`connect`,pageGestures:e.pageGestures})}function Go(e){let t=wt(()=>import(`./extension-ops-OtrqWANJ.js`).then(t=>t.createExtensionOps(e)));return Uo({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 Ko(e={}){let t=wt(()=>import(`./rest-ops-j0P6ql7f.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return Uo({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 qo(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return Ko({pageGestures:n});case`extension-direct`:case`extension-delegate`:return Go({adapter:e,pageGestures:n});case`connect`:return Wo({pageGestures:n})}}const Jo=e(`quick-llm`);async function Yo(e){let t=f();if(!t)return Jo.debug(`No API key for active provider — skipping`),null;let n=d(),r=u(),i;if(i=e.modelId?$o(n,e.modelId)??$o(n,r):Xo(n,r),!i)return Jo.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`]=es());try{let n=(await Ee(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 Jo.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function Xo(e,t){let n=p(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=Qo(r.id),a=n.filter(e=>Zo(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function Zo(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 Qo(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 $o(e,t){return p(e).find(e=>e.id===t)}function es(){return Et(`ui-quick-llm`)}const ts=e(`sudo-suggest`),ns=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
1
+ import{t as e}from"./logger-LESFN7Hj.js";import{r as t,t as n}from"./base64-BPBW1Gzr.js";import{n as r}from"./bridge-protocol-31SWTdS5.js";import{a as i,n as a,o,s,t as c}from"./handoff-link-B3It6xQY.js";import{C as l,d as u,f as d,i as f,u as p}from"./account-store-CivERjco.js";import{c as m,d as h,n as g,r as _,s as v}from"./proxied-fetch-F-dCBEfh.js";import{t as ee}from"./sha256-DynDhwRL.js";import{t as te}from"./runtime-env-DadgceZk.js";import{t as ne}from"./slugify-BYJ6QVAt.js";import{i as re,n as ie,r as ae,t as oe}from"./host-command-CvUauhDf.js";import{a as se,i as ce,n as le,r as ue,t as de}from"./snapshot-YDNf2VnW.js";import{n as fe,t as y}from"./panel-rpc-accessor-B4BfPLSo.js";import{a as pe,c as me,n as he,o as ge,s as _e,t as ve}from"./feature-flags-QlgHaQc1.js";import{t as ye}from"./providers-C8yJv_dr.js";import{r as be}from"./binary-cache-bSOhqXB1.js";import{i as xe,n as Se,r as Ce}from"./fetch-body-CuwTaJC_.js";import{s as we,t as Te}from"./api-endpoint-D8lUKmPu.js";import{t as Ee}from"./compat-nGhSz-U1.js";import"./core-C1m4D34S.js";import{n as De,t as Oe}from"./mime-types-D7IV6i7k.js";import{n as ke,t as Ae}from"./float-topology-COIC4j_U.js";import{t as je}from"./secrets-bridge-client-GOCzDscb.js";import{a as Me,i as Ne,n as Pe,r as Fe}from"./tool-ui-DRnUkp2g.js";import{a as Ie,i as Le,n as b,t as x}from"./path-utils-DNJG-zQf.js";import{n as Re,r as ze,t as Be}from"./merge-file-core-VJlzucJY.js";import{n as Ve,t as He}from"./types-D8gIX-W-.js";import{i as Ue}from"./mount-index-CQfmUPuZ.js";import{a as We,i as Ge,n as Ke,o as qe,s as Je,t as Ye}from"./signed-fetch-DeDG40wV.js";import{o as Xe}from"./mount-table-store-DrF_Ifaz.js";import{t as Ze}from"./remote-cache-UwMD8EkX.js";import{n as Qe}from"./fs-D_cFUSir.js";import{a as $e}from"./tray-leader-status-CpkFr6n7.js";import{n as et,t as tt}from"./slicc-version-B_Uar9hQ.js";import{a as nt,i as rt,o as it,r as S,t as at}from"./browser-CGX7MbCQ.js";import{t as C}from"./subcommand-flags-BZi7j78Q.js";import{n as ot,r as st,t as w}from"./subcommand-help-CgO7wRS5.js";import{n as ct}from"./cost-command-TMcbUPyN.js";import{d as lt,g as ut,i as dt,n as ft,o as pt}from"./sudoers-BdBYQPUn.js";import{t as mt}from"./sudo-refusal-DVwTXFRE.js";import{n as ht}from"./types-Dj5TU-Qg.js";import{a as gt,c as _t,i as vt,l as yt,n as bt,o as xt,r as St,t as Ct}from"./types-JfhqX7lD.js";import{n as T,t as wt}from"./boundary-DjgipyWT.js";import"./rest-paths-Dia19u9P.js";import{t as Tt}from"./html-B_Hg2WOy.js";import{n as Et}from"./llm-session-id-CKpY5F_-.js";import{t as Dt}from"./src-CUSndb9K.js";import{i as Ot,o as kt}from"./browser-DuyhpHbR.js";import{a as At,c as jt,n as Mt,o as Nt,r as Pt,s as Ft,t as It}from"./reason-l_1I9RdR.js";import{i as Lt,r as Rt,t as zt}from"./mount-picker-popup-BMils9JY.js";import{t as Bt}from"./buffer-B5d1xHaH.js";import"./buffer-polyfill-BwLbCySD.js";import{A as Vt,B as E,C as Ht,D,E as Ut,F as Wt,G as Gt,H as O,I as k,J as Kt,K as qt,L as Jt,M as Yt,N as Xt,O as Zt,P as Qt,R as $t,S as en,T as tn,U as nn,V as rn,W as an,Y as on,_ as sn,a as cn,b as ln,c as un,d as dn,f as fn,g as pn,h as mn,i as hn,j as gn,k as _n,l as vn,m as yn,n as bn,o as xn,p as A,q as Sn,r as Cn,s as wn,t as Tn,u as En,v as Dn,w as On,x as kn,y as An,z as jn}from"./isomorphic-git-r9mnHMnp.js";import"./global-db-DJXlpNui.js";import{S as Mn,_ as Nn,a as Pn,b as Fn,c as In,d as Ln,f as Rn,g as zn,h as Bn,i as Vn,l as Hn,n as Un,o as Wn,p as Gn,r as Kn,s as qn,t as Jn,u as Yn,v as j,x as M,y as Xn}from"./state-BOigwV2f.js";import{a as Zn,i as Qn,r as $n,t as er}from"./git-config-Bdgu8kD2.js";import{h as tr,i as nr,r as rr}from"./stdio-tty-CipJs8Mm.js";import{i as ir,r as ar}from"./global-prefix-DqCuANmV.js";import{t as or}from"./wasm-programs-Bd5YaoqY.js";import{a as sr,n as cr,o as lr,r as ur,s as dr}from"./jsh-discovery-CnvNKojr.js";import{C as fr,a as pr,b as mr,c as hr,d as gr,f as _r,h as vr,i as yr,l as br,m as xr,n as Sr,o as Cr,p as wr,r as Tr,s as Er,t as N,u as Dr,v as Or,y as kr}from"./shared-D-ZRFYou.js";import{_ as Ar,a as jr,b as Mr,d as Nr,f as Pr,g as Fr,h as Ir,i as Lr,l as Rr,m as zr,p as Br,r as Vr,s as Hr,u as Ur,v as Wr,y as Gr}from"./require-guards-dUdxJmkR.js";import{_ as Kr,a as qr,b as Jr,c as Yr,d as Xr,f as Zr,g as Qr,h as $r,l as ei,m as ti,n as ni,p as ri,s as ii,t as ai,u as oi,v as si,x as ci,y as li}from"./jsh-executor-C2__rSFU.js";import{n as ui,t as di}from"./esbuild-wasm-DeTghvWH.js";import{n as fi}from"./wasm-compiler-Ct7QZURL.js";import{a as pi,o as mi,s as hi,t as gi}from"./usb-device-registry-DFzxaOky.js";import{a as P,i as _i,r as vi,t as yi}from"./just-bash-compat-B-SPHuh_.js";import{i as bi,r as xi,t as Si}from"./script-catalog-WaCMvXY3.js";import{a as Ci,c as wi,o as Ti,s as Ei,t as Di}from"./types-Dzr0qYl3.js";import{a as Oi,c as ki,d as Ai,f as ji,n as Mi,r as Ni,u as Pi}from"./github-zip-CMSbKC3q.js";import{i as Fi,t as Ii}from"./github-auth-D-_-pCrt.js";import{a as Li,i as Ri,o as zi,r as Bi,t as Vi}from"./provenance-DdmsQ3Nr.js";import{a as Hi,c as Ui,i as Wi,n as Gi,o as Ki,r as qi,s as Ji}from"./github-install-NHKpL-_w.js";import{n as Yi,t as Xi}from"./magick-wasm-BbnwhVj1.js";import{i as Zi,n as Qi,r as $i,t as ea}from"./pdf-raster-BWk6ezTX.js";import{n as ta}from"./lick-target-env-8JxfVcIV.js";import{t as na}from"./tmpdir-env-ate4iNcK.js";import{n as ra,t as ia}from"./keyboard-TcuVIW9F.js";import{n as aa,t as oa}from"./hf-defaults-BwJdGLgk.js";import{t as sa}from"./ffmpeg-wasm-sx-3yVAE.js";import{t as ca}from"./local-llm-yQTqA0rT.js";import{i as la,n as ua,r as da,t as fa}from"./tar-BWIPCxI2.js";import{a as pa,c as ma,i as ha,o as ga,r as _a,s as va}from"./v86-vm-DCm7zA2r.js";import{n as ya,r as ba}from"./lick-urls-CgPiVwD-.js";let xa=null;function Sa(e){xa=e!==null&&Number.isFinite(e)&&e>0?e:null}function Ca(){if(xa!==null)return xa;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const wa=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function Ta(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=wa.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 Ea(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 Da(e,t){return e.some(e=>Ea(e,t))}const Oa=`slicc-transcript`,ka=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],Aa=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 ja(e){return Aa.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Ma=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const Na=new Set(ka),Pa=/^[0-9a-fA-F]{64}$/,Fa=/^\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 Ia(e){return typeof e==`string`&&Pa.test(e)}function La(e){return Fa.test(e)&&Number.isFinite(Date.parse(e))}function Ra(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 za(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Ra(n,t)}:{ok:!0}}function Ba(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 Va(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 Ha(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=za(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?Va(e,t):n}function Ua(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 Wa(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 Ga(e,t){let n=Ua(e,t);if(!n.ok)return n;let r=e.cost;return F(r)?Wa(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function Ka(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`?La(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 qa(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 Ja(e,t){let n=e.usage;return n===void 0?{ok:!0}:F(n)?Ga(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function Ya(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=za(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=qa(e,t);if(!n.ok)return n}let r=Ka(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=Ba(i,Ha,`${t}.content`);return a.ok?Ja(e,t):a}function Xa(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=za(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Ba(r,Ya,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function Za(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 Qa(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`}:Ia(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 $a=[`attachment-file-missing`,`attachment-association-unavailable`];function eo(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?za(e.missingReason,$a,`${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 to(e,t){return e.present?Qa(e,t):eo(e,t)}function no(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Za(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=za(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?to(e,t):r}function ro(e,t){let n=za(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 io(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=za(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return F(r)?ro(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function ao(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 oo(e,t){return typeof e!=`string`||!Na.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function so(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 co(e){if(!F(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=za(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Ba(e.missing,oo,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function lo(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=za(e.state,[`active`,`frozen`],`session.state`);return t.ok?co(e.completeness):t}function uo(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)?Ba(n,io,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function fo(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Ba(t,Xa,`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=Ba(r,ao,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Ba(a,no,`attachments`):{ok:!1,error:`attachments must be an array`}}function po(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 mo(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 ho(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 go(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 ho(e))t.add(n)}return t}function _o(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 vo(e){return _o(e,go(e))}function yo(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 bo(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=yo(e,t);if(!r.ok)return r}}return{ok:!0}}function xo(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return bo(e,n)}function So(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 Co(e,t){let n=So(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 wo(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(ho(e)))}return t}function To(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 Eo(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return To(e,n,wo(t))}function Do(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 Oo(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=Do(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function ko(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=po(t);if(!o.ok)return o;let s=mo(t);if(!s.ok)return s;let c=vo(t);if(!c.ok)return c;let l=xo(t,n);if(!l.ok)return l;let u=Co(n,t);if(!u.ok)return u;let d=Eo(r,t);return d.ok?Oo(a,n):d}function Ao(e){let t=fo(e);return t.ok?ko(e):t}function jo(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=so(e.export);if(!t.ok)return t;let n=lo(e.session);if(!n.ok)return n;let r=uo(e.privacy);return r.ok?Ao(e):r}async function Mo(e,t,n){let r=await n({method:`GET`,path:`/${e}/sites/${t}/config.json`,origin:qe});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:No(a),sourceUrl:a}}function No(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const Po=`slicc-sprinkle-routes`;function Fo(){try{let e=localStorage.getItem(Po);return e?JSON.parse(e):{}}catch{return{}}}function Io(e){try{localStorage.setItem(Po,JSON.stringify(e))}catch{}}function Lo(e){return Fo()[e]}function Ro(e,t){let n=Fo();n[e]=t,Io(n)}function zo(e){let t=Fo();delete t[e],Io(t)}function Bo(){return Fo()}function Vo(e,t,n){return _t(t,n,`${e} adapter does not implement ${t}.${n}`)}function Ho(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(Vo(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function Uo(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:Ho(t,`browser`,bt,e.browser),network:Ho(t,`network`,gt,e.network),secrets:Ho(t,`secrets`,xt,e.secrets),devices:Ho(t,`devices`,St,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:Ho(t,`mounts`,vt,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:Ho(t,`approvals`,Ct,e.approvals)}}function Wo(e={}){return Uo({adapter:`connect`,pageGestures:e.pageGestures})}function Go(e){let t=wt(()=>import(`./extension-ops-OtrqWANJ.js`).then(t=>t.createExtensionOps(e)));return Uo({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 Ko(e={}){let t=wt(()=>import(`./rest-ops-j0P6ql7f.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return Uo({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 qo(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return Ko({pageGestures:n});case`extension-direct`:case`extension-delegate`:return Go({adapter:e,pageGestures:n});case`connect`:return Wo({pageGestures:n})}}const Jo=e(`quick-llm`);async function Yo(e){let t=f();if(!t)return Jo.debug(`No API key for active provider — skipping`),null;let n=d(),r=u(),i;if(i=e.modelId?$o(n,e.modelId)??$o(n,r):Xo(n,r),!i)return Jo.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`]=es());try{let n=(await Ee(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 Jo.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function Xo(e,t){let n=p(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=Qo(r.id),a=n.filter(e=>Zo(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function Zo(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 Qo(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 $o(e,t){return p(e).find(e=>e.id===t)}function es(){return Et(`ui-quick-llm`)}const ts=e(`sudo-suggest`),ns=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
2
2
  `),rs=[`You generalize a single filesystem path into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the meaningful directory prefix and replace the volatile`,`leaf (and below) with "**". Examples:`,` /workspace/.git/config -> /workspace/.git/**`,` /shared/secrets/openai.key -> /shared/secrets/**`,` /workspace/src/app/main.ts -> /workspace/src/**`].join(`
3
3
  `);async function is(e,t){if(e.suggestedPattern&&e.suggestedPattern.trim().length>0)return e.suggestedPattern.trim();let n=e.detail.trim();if(e.kind===`guest-message`||e.kind===`guest-tool`)return n;let r=e.kind===`command`?ns:rs,i=null;try{i=await Yo({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){ts.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return as(i)||n}function as(e){if(!e)return null;let t=(e.split(`
4
4
  `,1)[0]?.trim()??``).replace(/^`+/,``).replace(/`+$/,``).replace(/^["']/,``).replace(/["']$/,``).trim();return t.length===0?null:t}const os=e(`sudo:capability-gesture`);function ss(e,t={}){let n=t.suggest??is;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 os.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),ht();if(!e)return os.warn(`no CapabilityBroker injected for the sudo gesture hop — denying (composition bug, never a guessed transport)`,{detail:t.detail}),ht();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?yt(o.value,a):(os.warn(`capability broker approvals.request failed — denying`,{message:o.message}),ht())}}}const cs=e(`sudo:tray-first`);function ls(e,t={}){let n=t.suggest??is,r=t.timeoutMs??6e5,i=t.getClient??(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-CR9k3qWE.js`).then(e=>e.r);return e()});return{async requestApproval(t,a){if(a?.signal?.aborted)return ht();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){cs.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 ds(e?.decision,o)}catch(e){cs.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return e.requestApproval(s,a)}}}const us=[`user-timeout`,`cone-timeout`,`unavailable`];function ds(e,t){if(!e||typeof e!=`object`)return ht();let n=e,r=n.attestation===`biometric`||n.attestation===`passcode`||n.attestation===`none`?n.attestation:void 0;if(n.decision===`allow`)return{decision:`allow`,...r?{attestation:r}:{}};if(n.decision===`always`)return{decision:`always`,pattern:typeof n.pattern==`string`&&n.pattern.trim().length>0?n.pattern.trim():t,...r?{attestation:r}:{}};if(n.decision!==`deny`)return ht();let i=us.find(e=>e===n.reason);return i?{decision:`deny`,reason:i}:{decision:`deny`}}function fs(e,t){return{requestApproval(n){return t.enqueueSudoRequest(e,n)}}}function ps(){return`lick-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}var ms=class{pending=new Map;timeoutMs;newId;setTimer;clearTimer;onAutoSettle;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.newId=e.newId??ps,this.setTimer=e.setTimer??((e,t)=>setTimeout(e,t)),this.clearTimer=e.clearTimer??(e=>clearTimeout(e)),this.onAutoSettle=e.onAutoSettle??(()=>{})}notifyAutoSettle(e,t,n){try{this.onAutoSettle(e,t,n)}catch{}}register(e,t,n){let r=this.newId();return{id:r,pending:new Promise(i=>{let a=null;Number.isFinite(this.timeoutMs)&&this.timeoutMs>0&&(a=this.setTimer(()=>{let e=this.pending.get(r);e&&(this.pending.delete(r),e.resolve(ae(`cone-timeout`)),this.notifyAutoSettle(r,`expired`,e.scoopJid))},this.timeoutMs)),this.pending.set(r,{scoopJid:e,request:t,resolve:i,timerHandle:a,approverJid:n})})}}resolve(e,t){let n=this.pending.get(e);return n?(this.pending.delete(e),n.timerHandle!=null&&this.clearTimer(n.timerHandle),n.resolve(t),!0):!1}failScoop(e){let t=0;for(let[n,r]of this.pending)r.scoopJid===e&&(this.pending.delete(n),r.timerHandle!=null&&this.clearTimer(r.timerHandle),r.resolve({decision:`deny`,reason:`unavailable`}),this.notifyAutoSettle(n,`scoop-dropped`,r.scoopJid),t++);return t}failAll(){let e=0;for(let[t,n]of this.pending)n.timerHandle!=null&&this.clearTimer(n.timerHandle),n.resolve({decision:`deny`,reason:`unavailable`}),this.notifyAutoSettle(t,`shutdown`,n.scoopJid),e++;return this.pending.clear(),e}get(e){let t=this.pending.get(e);return t?{id:e,scoopJid:t.scoopJid,request:t.request,...t.approverJid?{approverJid:t.approverJid}:{}}:null}list(){let e=[];for(let[t,n]of this.pending)e.push({id:t,scoopJid:n.scoopJid,request:n.request,...n.approverJid?{approverJid:n.approverJid}:{}});return e}size(){return this.pending.size}};e(`sudo-panel`),typeof globalThis.confirm==`function`&&globalThis.confirm.bind(globalThis),typeof globalThis.prompt==`function`&&globalThis.prompt.bind(globalThis),e(`sudo:page`),e(`sudo`);function hs(e){return re(gs(e))}function gs(e){let t=ss(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:ls(t)}let _s=null;function vs(e){return _s=e,()=>{_s===e&&(_s=null)}}function ys(){if(!_s)throw new Ma(`session-not-found`);return _s}const bs=`focus`,xs={type:`leaf`,surfaceId:`chat`};function Ss(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 Cs={focus:{name:`focus`,tree:Ss({left:xs},{left:3,middle:1})}};function ws(e){return Cs[e]??null}const Ts=`progress`;async function Es(){try{let e=await Rt();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 zt(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);return await Lt(t),t}throw Error(`mount: unexpected popup result`)}catch(e){throw Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}async function Ds(){if(typeof window>`u`||!(`showDirectoryPicker`in window))throw Error(`mount: local picker requires a user gesture in the panel (unavailable in this runtime). Ask the agent to mount it instead.`);try{return await window.showDirectoryPicker({mode:`readwrite`})}catch(e){throw e instanceof Error&&e.name===`AbortError`?Error(`mount: cancelled`):Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}async function Os(e,t){let n;try{({grants:n}=await e.call(`permission-request`,{kinds:[`filesystem`],description:`A command in the terminal asks to mount a local directory at ${t}.`},{timeoutMs:3e5}))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(t.replace(/^permission-request: /,``))}let r=n.find(e=>e.kind===`filesystem`);if(!r||!(`idbKey`in r))throw Error(`no directory selected`);let i=await zt(r.idbKey);if(!i)throw Error(`no directory handle found in storage`);return await Lt(i),i}function ks(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 As(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 js=new Set([`--source`,`--profile`,`--backend`,`--max-body-mb`]);function Ms(e){for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`)return!1;if(n===`--help`||n===`-h`)return!0;js.has(n)&&t++}return!1}function Ns(e){return`aem://${e.org}/${e.name}${e.path?`/${e.path}`:``}`}var Ps=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=ks(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=Me();if(!n){let n=await Fs(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=fe()?null:y(),i;if(n){let t=this.options.acquireLocalMountViaToolUI;if(!t)throw Error(`mount: tool UI not available in this runtime`);i=await t(n,e)}else i=te()?await Es():r?await Os(r,e):await Ds();let a=Ue.fromHandle(i,{mountId:Xe()});return await this.options.fs.mount(e,a,{env:t}),{stdout:`Mounted '${a.describe().displayName}' → ${e}\nIndexing in background for fast file discovery.\nNote: External changes are not auto-detected — use 'mount refresh ${e}' after modifying files outside the browser.\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`mount: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async mountS3(e,t){if(!t.source)return this.usageError(`mount: --source required`);let n=t.profile??`default`,r=Xe(),i=new Ze({mountId:r,ttlMs:3e4}),a=new Ge({source:t.source,profile:n,cache:i,maxBodyBytes:t.maxBodyMb?t.maxBodyMb*1024*1024:void 0,mountId:r,signedFetch:this.signedFetchS3??Ke(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??Ye(),i=As(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 Mo(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=Xe(),c=new Ze({mountId:s,ttlMs:3e4}),l={source:a===`aem`?Ns(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 Je(l):new We(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(Ms(e))return n===`umount`?this.umountHelp():this.help();let r=ks(e);if(r.positional.length===0)return{stdout:``,stderr:`${n}: path required\n`,exitCode:1};let i=this.resolvePath(r.positional[0],t);try{let e,t;if(r.clearCache){let{getAllMountEntries:n}=await import(`./mount-table-store-DrF_Ifaz.js`).then(e=>e.r),r=(await n()).find(e=>e.targetPath===i),a=r?.descriptor.kind;r&&(a===`s3`||a===`da`||a===`aem`)&&(e=r.descriptor.mountId,t=r.descriptor.kind)}await this.options.fs.unmount(i);let n=``;if(r.clearCache&&e&&t){let{RemoteMountCache:t}=await import(`./remote-cache-UwMD8EkX.js`).then(e=>e.n);await new t({mountId:e,ttlMs:3e4}).clearMount(),n=` (cache cleared)`}else r.clearCache&&(n=` (no remote cache to clear)`);return{stdout:`Unmounted ${i}${n}\n`,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`${n}: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async handleList(){try{let e=this.options.fs.listMounts();if(e.length===0)return{stdout:`No active mounts
@@ -287,7 +287,7 @@ Examples:
287
287
  skill list
288
288
  skill info bluebubbles
289
289
  skill read bluebubbles
290
- `,stderr:``,exitCode:0};let r=t[0],i=await import(`./kernel-worker-Mlna6Sz7.js`).then(e=>e.r);try{switch(r){case`list`:return Oh(t,e,i,n.env.get(`PATH`));case`info`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: info requires a skill name
290
+ `,stderr:``,exitCode:0};let r=t[0],i=await import(`./kernel-worker-CjZd9XRW.js`).then(e=>e.r);try{switch(r){case`list`:return Oh(t,e,i,n.env.get(`PATH`));case`info`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: info requires a skill name
291
291
  `,exitCode:1};let r=await i.getSkillInfo(e,n);return r?{stdout:Eh(r),stderr:``,exitCode:0}:{stdout:``,stderr:`skill: "${n}" not found\n`,exitCode:1}}case`read`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: read requires a skill name
292
292
  `,exitCode:1};let r=await i.readSkillInstructions(e,n);return r===null?{stdout:``,stderr:`skill: no SKILL.md found for "${n}"\n`,exitCode:1}:{stdout:r+`
293
293
  `,stderr:``,exitCode:0}}default:return{stdout:``,stderr:`skill: unknown command "${r}"\n`,exitCode:1}}}catch(e){return{stdout:``,stderr:`skill: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}const Ah=[{names:[`--branch`,`-b`],validate:e=>!e.startsWith(`-`)&&i(e),error:`upskill: --branch must be a git ref of [A-Za-z0-9._/-]+ with no "..", leading "-"/"/", trailing "/" or ".lock", or shell metacharacters`,apply:(e,t)=>{e.branch=t}},{names:[`--from`],validate:e=>Wi(e)!==null,error:`upskill: --from requires a GitHub source (owner/repo, owner/repo@branch, or a github.com URL)`,apply:(e,t)=>{e.from=t}},{names:[`--path`,`-p`],validate:e=>o(e),error:`upskill: --path must be a repo-relative sub-path of [A-Za-z0-9._/-]+ with no "..", leading "-"/"/", or shell metacharacters`,apply:(e,t)=>{e.path=t}}];function jh(e){let t={skills:[],dryRun:!1,json:!1};for(let n=0;n<e.length;n++){let r=e[n],i=Ah.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 Mh(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}async function Nh(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 Ph(e,t,n,r){let i=await Nh(e,t);return Ai(n)?i?{status:`kept-local`,write:!1}:{status:`added`,write:!0}:i?Mh(i,r)?{status:`unchanged`,write:!1}:{status:`updated`,write:!0}:{status:`added`,write:!0}}async function Fh(e,t,n,r){let i={changes:[],writes:[],removals:[]};for(let[r,a]of n){let n=`${t}/${r}`,{status:o,write:s}=await Ph(e,n,r,a);i.changes.push({path:r,status:o}),s&&i.writes.push({path:n,content:a})}let a=new Set(r.files??[]);for(let r of await ji(e,t)){if(n.has(r))continue;let e=a.has(r);i.changes.push({path:r,status:e?`removed`:`kept-local`}),e&&i.removals.push(`${t}/${r}`)}return i.changes.sort((e,t)=>e.path.localeCompare(t.path)),i}async function Ih(e,t,n,r,i,a){let o={skill:n,source:`${r.kind}:${r.source}`,ref:i??r.ref,from:r.sha,outcome:`current`,changes:[]},[s,c]=r.source.split(`/`);if(!s||!c)return{...o,outcome:`error`,error:`unusable source "${r.source}"`};let l=(r.path??``).replace(/^\/|\/$/g,``),u=await Ii(t),d=await Ri(s,c,o.ref,u,!0,l||void 0);if(d&&r.sha===d&&await Lh(e,n,r))return{...o,to:d,outcome:`current`,changes:[]};let f=await Rh(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 Fh(e,`${Ci}/${n}`,p,r),v=g.length>0||_.length>0;if(a)return{...o,outcome:v?`updated`:`current`,changes:h};let ee=d??r.sha;return v&&await Uh(e,{changes:h,writes:g,removals:_}),await zi(e,n,{...r,ref:o.ref,path:m,sha:ee,files:[...p.keys()].sort()}),{...o,to:ee,outcome:v?`updated`:`current`,changes:h}}async function Lh(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 Rh(e,t,n,r,i,a,o){let s=await Ni(e,t,a,i??`main`);if(s.status===`ok`){let i=Oi(s.files),a=n||zh(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:Hh(i,a),path:a}}try{return{files:Vh(Bh(await Mi(e,t,n,i,o))),path:n}}catch(e){let t=e instanceof Error?e.message:String(e);return{error:`${s.message}; Contents API fallback failed: ${t}`}}}function zh(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 Bh(e){return new Map([...e].filter(([e])=>ki(e)))}function Vh(e){return new Map([...e].sort(([e],[t])=>e.localeCompare(t)))}function Hh(e,t){let n=t?`${t}/`:``,r=new Map;for(let[t,i]of Object.entries(e)){if(!t.startsWith(n)||t.endsWith(`/`))continue;let e=t.slice(n.length);ki(e)&&r.set(e,i)}return Vh(r)}async function Uh(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 Wh(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 xh(o,s,t);if(!c.ok)return{...a,outcome:`error`,error:c.error};let l=`${Ci}/${n}/SKILL.md`,u=await Nh(e,l),d=new TextEncoder().encode(c.content),f=u!==void 0&&yh(new TextDecoder().decode(u))===yh(c.content);if(Mh(u,d)||f)return{...a,changes:[{path:`SKILL.md`,status:`unchanged`}]};let p=u?`updated`:`added`;return i||(await e.mkdir(`${Ci}/${n}`,{recursive:!0}),await e.writeFile(l,d),await zi(e,n,{...r,files:[`SKILL.md`]})),{...a,outcome:`updated`,changes:[{path:`SKILL.md`,status:p}]}}function 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 Kh(e,t,n,r){let i=Wi(t);return i?{version:1,kind:`github`,source:`${i.owner}/${i.repo}`,skill:e,ref:r??i.branch,path:n??i.path,installed:new Date().toISOString()}:null}async function qh(e,t,n){if(t.length===0){let t=await Li(e);return{targets:t.provenanced,missing:[],skipped:t.unattributed}}let r=[],i=[];for(let a of t){let t=await Bi(e,a);if(t){r.push({name:a,provenance:t});continue}if(!await e.exists(`/workspace/skills/${a}`)){i.push({name:a,reason:`not-installed`});continue}let o=n.from?Kh(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 Jh(e){return e.reason===`not-installed`?`upskill: no skill named "${e.name}" is installed — check \`upskill list\`
@@ -298,7 +298,7 @@ Examples:
298
298
  `}function Zh(e,t,n,r,i){let a=t?`Skill update (dry run — nothing written):
299
299
  `:`Skill update:
300
300
  `;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 ${Yh(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 Qh(e,t,n){let{targets:r,missing:i,skipped:a}=await qh(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 Wh(e,t,i.name,i.provenance,n.dryRun):await Ih(e,t,i.name,i.provenance,n.branch,n.dryRun));return{results:o,skipped:a,missing:i}}async function $h(e,t,n){let r=jh(e);if(r.error)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{results:i,missing:a,skipped:o}=await Qh(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`:Zh([],r.dryRun,!1,!0,o),stderr:``,exitCode:0}:{stdout:``,stderr:a.length?a.map(Jh).join(``):"upskill: no skill has install provenance yet — reinstall a skill, or run `upskill update <skill> --from <owner>/<repo>`, to record its source\n",exitCode:1};let s=i.filter(e=>e.outcome===`error`),c=i.some(e=>e.outcome===`updated`);c&&!r.dryRun&&await Ui();let l=a.map(Jh).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:Zh(i,r.dryRun,c,u,o),stderr:l,exitCode:+!u}}function eg(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 tg(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 ng(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}${tg(e)}`)}if(t.length>0){let e=t.length===1?`skill`:`skills`;r.push(``,`Skipped ${t.length} ${e} with no install provenance — not checked.`)}let i=e.filter(e=>e.outcome===`error`);if(i.length>0){let e=i.length===1?`skill`:`skills`;r.push(``,`Could not check ${i.length} ${e}:`);for(let e of i)r.push(` ${e.skill}: failed — ${e.error}`)}return`${r.join(`
301
- `)}\n`}async function rg(e,t,n){let r=await(await import(`./kernel-worker-Mlna6Sz7.js`).then(e=>e.r)).discoverSkills(e),{collisions:i}=await ur(e,sr(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${Ch()}`,stderr:``,exitCode:0}:{...dr(`upskill`,Th(r,`Discoverable local skills`),i,{builtinNames:new Set(it())}),exitCode:0}}async function ig(e,t,n){let{results:r,skipped:i}=await Qh(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:ng(r,i),stderr:c,exitCode:+!s}}async function ag(e,t,n,r){let i=eg(e);return i.error?{stdout:``,stderr:`${i.error}\n`,exitCode:1}:i.outdated?ig(t,n,i.json):rg(t,i.json,r)}async function og(e,t){let n=`${wi}/experimental/search?q=${encodeURIComponent(e)}&contentType=skills&page%5Bsize%5D=20`,r;try{r=await t(n,{headers:{Accept:`application/json`}})}catch(e){throw Error(Fi(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=xe(r.body);if(!i.data)return[];let a=new Map;for(let e of i.data){if(e.type!==`skill`)continue;let t=e.attributes,n=Hi(t.sourceUrl),r=n?`${n.owner}/${n.repo}`:void 0,i=t.scores.aggregate==null?null:Math.round(t.scores.aggregate*100),o=t.sourceUrl||e.id,s=a.get(o);if(s&&s.qualityScore!=null&&i!=null&&s.qualityScore>=i)continue;let c=t.path.replace(/\/SKILL\.md$/i,``),l=c.split(`/`).pop()||t.name,u=n?`upskill ${n.owner}/${n.repo} --path ${c.split(`/`).slice(0,-1).join(`/`)||`.`} --skill ${l}`:`upskill tessl:${t.name}`;a.set(o,{name:t.name,displayName:t.name,summary:t.description||``,source:`tessl`,qualityScore:i,installHint:u,featured:t.featured,sourceRepo:r})}return Array.from(a.values())}async function sg(e,t){let n=`${wi}/experimental/search?q=${encodeURIComponent(e)}&contentType=skills&page%5Bsize%5D=5`,r;try{r=await t(n,{headers:{Accept:`application/json`}})}catch(e){return{error:`Tessl search failed: ${Fi(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=xe(r.body).data?.find(t=>t.type===`skill`&&t.attributes.name===e);if(!i)return{error:`skill "${e}" not found on Tessl registry`};let a=Hi(i.attributes.sourceUrl);if(!a)return{error:`skill "${e}" has no GitHub source URL`};let o=i.attributes.path.replace(/\/SKILL\.md$/i,``);return{owner:a.owner,repo:a.repo,skillPath:o,skillName:e}}const cg=[{label:`Tessl`,host:new URL(wi).host,fetch:og},{label:`browse.sh`,host:new URL(Di).host,fetch:ph}];function lg(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 ug(e,t,n=1){let r=await Promise.allSettled(cg.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=lg(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=cg[e],r=t.reason instanceof Error?t.reason.message:String(t.reason);s+=`warning: ${n.label} registry unavailable (${n.host}): ${r}\n`}}if(o.length===0){let t=a?`${s}upskill: registries failed to respond\n`:s;return{stdout:`No skills found for "${e}"\n\nTry a different search term or browse the registries at https://tessl.io/registry or https://browse.sh\n`,stderr:t,exitCode:+!!a}}let c=o.length,l=Math.ceil(c/10),u=Math.max(1,Math.min(n,l)),d=(u-1)*10,f=o.slice(d,d+10),p=`Search results for "${e}" (page ${u}/${l}, ${c} total):\n\n`;for(let e of f){let t=e.qualityScore==null?` `:String(e.qualityScore).padStart(3),n=`[${e.source}]`,r=e.sourceRepo?` ${e.sourceRepo}`:``;p+=` ${e.name.padEnd(30)} ${t} ${n.padEnd(10)}${r}\n`,e.summary&&(p+=` ${e.summary}\n`),p+=`
301
+ `)}\n`}async function rg(e,t,n){let r=await(await import(`./kernel-worker-CjZd9XRW.js`).then(e=>e.r)).discoverSkills(e),{collisions:i}=await ur(e,sr(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${Ch()}`,stderr:``,exitCode:0}:{...dr(`upskill`,Th(r,`Discoverable local skills`),i,{builtinNames:new Set(it())}),exitCode:0}}async function ig(e,t,n){let{results:r,skipped:i}=await Qh(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:ng(r,i),stderr:c,exitCode:+!s}}async function ag(e,t,n,r){let i=eg(e);return i.error?{stdout:``,stderr:`${i.error}\n`,exitCode:1}:i.outdated?ig(t,n,i.json):rg(t,i.json,r)}async function og(e,t){let n=`${wi}/experimental/search?q=${encodeURIComponent(e)}&contentType=skills&page%5Bsize%5D=20`,r;try{r=await t(n,{headers:{Accept:`application/json`}})}catch(e){throw Error(Fi(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=xe(r.body);if(!i.data)return[];let a=new Map;for(let e of i.data){if(e.type!==`skill`)continue;let t=e.attributes,n=Hi(t.sourceUrl),r=n?`${n.owner}/${n.repo}`:void 0,i=t.scores.aggregate==null?null:Math.round(t.scores.aggregate*100),o=t.sourceUrl||e.id,s=a.get(o);if(s&&s.qualityScore!=null&&i!=null&&s.qualityScore>=i)continue;let c=t.path.replace(/\/SKILL\.md$/i,``),l=c.split(`/`).pop()||t.name,u=n?`upskill ${n.owner}/${n.repo} --path ${c.split(`/`).slice(0,-1).join(`/`)||`.`} --skill ${l}`:`upskill tessl:${t.name}`;a.set(o,{name:t.name,displayName:t.name,summary:t.description||``,source:`tessl`,qualityScore:i,installHint:u,featured:t.featured,sourceRepo:r})}return Array.from(a.values())}async function sg(e,t){let n=`${wi}/experimental/search?q=${encodeURIComponent(e)}&contentType=skills&page%5Bsize%5D=5`,r;try{r=await t(n,{headers:{Accept:`application/json`}})}catch(e){return{error:`Tessl search failed: ${Fi(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=xe(r.body).data?.find(t=>t.type===`skill`&&t.attributes.name===e);if(!i)return{error:`skill "${e}" not found on Tessl registry`};let a=Hi(i.attributes.sourceUrl);if(!a)return{error:`skill "${e}" has no GitHub source URL`};let o=i.attributes.path.replace(/\/SKILL\.md$/i,``);return{owner:a.owner,repo:a.repo,skillPath:o,skillName:e}}const cg=[{label:`Tessl`,host:new URL(wi).host,fetch:og},{label:`browse.sh`,host:new URL(Di).host,fetch:ph}];function lg(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 ug(e,t,n=1){let r=await Promise.allSettled(cg.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=lg(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=cg[e],r=t.reason instanceof Error?t.reason.message:String(t.reason);s+=`warning: ${n.label} registry unavailable (${n.host}): ${r}\n`}}if(o.length===0){let t=a?`${s}upskill: registries failed to respond\n`:s;return{stdout:`No skills found for "${e}"\n\nTry a different search term or browse the registries at https://tessl.io/registry or https://browse.sh\n`,stderr:t,exitCode:+!!a}}let c=o.length,l=Math.ceil(c/10),u=Math.max(1,Math.min(n,l)),d=(u-1)*10,f=o.slice(d,d+10),p=`Search results for "${e}" (page ${u}/${l}, ${c} total):\n\n`;for(let e of f){let t=e.qualityScore==null?` `:String(e.qualityScore).padStart(3),n=`[${e.source}]`,r=e.sourceRepo?` ${e.sourceRepo}`:``;p+=` ${e.name.padEnd(30)} ${t} ${n.padEnd(10)}${r}\n`,e.summary&&(p+=` ${e.summary}\n`),p+=`
302
302
  `}return u<l&&(p+=`Showing ${d+1}-${d+f.length} of ${c}. `,p+=`Next page: upskill search ${e} --page ${u+1}\n\n`),p+=`To install:
303
303
  `,p+=` From Tessl: upskill <owner/repo> --skill <name>
304
304
  `,p+=` From browse.sh: upskill browse:<hostname>/<task>
@@ -321,7 +321,7 @@ Examples:
321
321
  `,{stdout:s,stderr:``,exitCode:0}}function _g(e){return!e||e.startsWith(`-`)?{stdout:``,stderr:`upskill: --branch requires a value
322
322
  `,exitCode:1}:i(e)?null:{stdout:``,stderr:`upskill: --branch must be a git ref of [A-Za-z0-9._/-]+ with no "..", leading "-"/"/", trailing "/" or ".lock", or shell metacharacters
323
323
  `,exitCode:1}}function vg(e){let t={selectedSkills:[],listOnly:!1,installAll:!1,force:!1,sourceRef:``},n=0;for(;n<e.length;){let r=e[n];if(r===`--skill`)t.selectedSkills.push(e[++n]);else if(r===`--path`||r===`-p`){let r=e[++n];if(typeof r!=`string`||!o(r))return t.earlyReturn={stdout:``,stderr:`upskill: --path must be a repo-relative sub-path of [A-Za-z0-9._/-]+ with no "..", leading "-"/"/", or shell metacharacters
324
- `,exitCode:1},t;t.subPath=r}else if(r===`--list`)t.listOnly=!0;else if(r===`--all`)t.installAll=!0;else if(r===`--force`)t.force=!0;else if(r===`--branch`||r===`-b`){let r=_g(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 yg(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./kernel-worker-Mlna6Sz7.js`).then(e=>e.r);if(e===`info`){let e=await r.getSkillInfo(n,t);if(!e)return{stdout:``,stderr:`upskill: skill "${t}" not found\n`,exitCode:1};let i=await Bi(n,t),a=i?Vi(i):"Installed from: (no provenance recorded — reinstall to enable `upskill update`)\n";return{stdout:Eh(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+`
324
+ `,exitCode:1},t;t.subPath=r}else if(r===`--list`)t.listOnly=!0;else if(r===`--all`)t.installAll=!0;else if(r===`--force`)t.force=!0;else if(r===`--branch`||r===`-b`){let r=_g(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 yg(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./kernel-worker-CjZd9XRW.js`).then(e=>e.r);if(e===`info`){let e=await r.getSkillInfo(n,t);if(!e)return{stdout:``,stderr:`upskill: skill "${t}" not found\n`,exitCode:1};let i=await Bi(n,t),a=i?Vi(i):"Installed from: (no provenance recorded — reinstall to enable `upskill update`)\n";return{stdout:Eh(e)+a,stderr:``,exitCode:0}}let i=await r.readSkillInstructions(n,t);return i===null?{stdout:``,stderr:`upskill: no SKILL.md found for "${t}"\n`,exitCode:1}:{stdout:i+`
325
325
  `,stderr:``,exitCode:0}}async function bg(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 xg(e,t,n,r,i,a,o,s){let c=``,l=``,u=0,d=e.length;for(let f=0;f<e.length;f++){let p=e[f],m=await Gi(t,n,p.path,p.name,i,r,a,void 0,o),h=f+1,g=((Date.now()-s)/1e3).toFixed(1),_=(Date.now()-s)/h,v=h<d?` (~${Math.round((d-h)*_/1e3)}s remaining)`:``;m.exitCode===0?(c+=`[${h}/${d}] Installed "${p.name}" from ${t}/${n} (${g}s)${v}\n`,u++):(c+=`[${h}/${d}] Failed "${p.name}": ${m.stderr.trim()}${v}\n`,l+=m.stderr)}return{output:c,errors:l,successCount:u}}async function Sg(e,t,n,r,i,a,o,s){let c=``,l=``,u=0;for(let d of e){let e=await Gi(t,n,d.path,d.name,i,r,a,o,s);e.exitCode===0?(c+=e.stdout,u++):l+=e.stderr}return{output:c,errors:l,successCount:u}}function Cg(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 wg(e,t,n,r){let{owner:i,repo:a}=e,o=t.branch??e.branch,s=t.subPath??e.path,c=await Ii(r),l=await qi(i,a,c,s,r,o);if(l.error)return{stdout:``,stderr:`upskill: failed to list skills: ${l.error}\n`,exitCode:1};if(l.skills.length===0)return{stdout:`No skills found in ${i}/${a}${s?`/`+s:``}\n`,stderr:``,exitCode:0};if(t.listOnly)return{stdout:Cg(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:Cg(l.skills,i,a)+`\nTo install specific skills: upskill ${t.sourceRef} --skill <name>\nTo install all: upskill ${t.sourceRef} --all\n`,stderr:``,exitCode:0};let d=u.length,f=Date.now(),p=``,m=``,h=0;if(d>1){let e=await Ni(i,a,r,o);if(e.status===`ok`){let r=await Ri(i,a,o,c,!0,s),l=await bg(u,i,a,Oi(e.files),n,t.force,f,{kind:`github`,source:`${i}/${a}`,ref:o,sha:r});({output:p,errors:m,successCount:h}=l)}else{let e=await xg(u,i,a,c,n,t.force,o,f);({output:p,errors:m,successCount:h}=e)}}else({output:p,errors:m,successCount:h}=await Sg(u,i,a,c,n,t.force,r,o));let g=((Date.now()-f)/1e3).toFixed(1);return h>0&&(p+=`\nInstalled ${h} skill(s)${d>1?` in ${g}s`:``}\n`,await Ui()),{stdout:p,stderr:m,exitCode:+!!m}}async function Tg(e,t,n,r,i){switch(e[0]){case`tabs`:return hg(t,n,r,e.includes(`--json`));case`recommendations`:return gg(t,n,e.includes(`--install`));case`update`:case`upgrade`:return $h(e.slice(1),t,n);case`list`:return ag(e.slice(1),t,n,i);case`info`:case`read`:return yg(e[0],e[1],t);case`search`:return Dg(e,n);default:return null}}function Eg(e,t,n){return S(`upskill`,async(r,i)=>{if(r.length===0||r.includes(`--help`)||r.includes(`-h`))return Dh();let a=await Tg(r,e,t,n,i.env.get(`PATH`));if(a)return a;let o=vg(r);if(o.earlyReturn)return o.earlyReturn;if(!o.sourceRef)return Dh();if(o.sourceRef.startsWith(`tessl:`))return Og(o.sourceRef,o.force,e,t);let s=gh(o.sourceRef);if(s)return Sh(s.hostname,s.task,e,t,o.force);let c=Wi(o.sourceRef);return c?wg(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 Dg(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?ug(a,t,i):Dh()}async function Og(e,t,n,r){let i=e.slice(6);if(!i)return{stdout:``,stderr:`upskill: tessl: requires a skill name
326
326
  `,exitCode:1};let a=await sg(i,r);if(`error`in a)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let o=await Ii(r);return Gi(a.owner,a.repo,a.skillPath,a.skillName,n,o,t,r)}function kg(){return{stdout:`usage: afplay [-v volume] [-r rate] <file>
327
327
 
@@ -332,7 +332,7 @@ Examples:
332
332
 
333
333
  Plays a notification chime sound.
334
334
  Alias for: afplay /shared/sounds/chime.mp3
335
- `,stderr:``,exitCode:0}:Wg(`/shared/sounds/chime.mp3`,1,1,t))}function qg(e={}){return S(`agent`,async(t,n)=>{let{executeAgentCommand:r}=await import(`./agent-command-impl-BQZK9ujN.js`);return r(t,n,e)})}const Jg=[`bg`,`caller`,`disown`,`enable`,`fc`,`fg`,`jobs`,`logout`,`suspend`,`times`,`trap`,`ulimit`];function Yg(){return Jg.map(e=>S(e,async(t,n)=>{let{runBashBuiltin:r}=await import(`./run-B39tlo9Y.js`);return r(e,t,n)}))}function Xg(e,t){e.escaped?e.escaped=!1:t===`\\`?e.escaped=!0:t===`"`&&(e.inString=!1)}function Zg(e,t){let n=t+2;for(;n<e.length&&e[n]!==`
335
+ `,stderr:``,exitCode:0}:Wg(`/shared/sounds/chime.mp3`,1,1,t))}function qg(e={}){return S(`agent`,async(t,n)=>{let{executeAgentCommand:r}=await import(`./agent-command-impl-BQZK9ujN.js`);return r(t,n,e)})}const Jg=[`bg`,`caller`,`disown`,`enable`,`fc`,`fg`,`jobs`,`logout`,`suspend`,`times`,`trap`,`ulimit`];function Yg(){return Jg.map(e=>S(e,async(t,n)=>{let{runBashBuiltin:r}=await import(`./run-DnxVNWPE.js`);return r(e,t,n)}))}function Xg(e,t){e.escaped?e.escaped=!1:t===`\\`?e.escaped=!0:t===`"`&&(e.inString=!1)}function Zg(e,t){let n=t+2;for(;n<e.length&&e[n]!==`
336
336
  `&&e[n]!==`\r`;)n++;return{text:` `.repeat(n-t),end:n-1}}function Qg(e,t){let n=` `,r=t+2;for(;r<e.length&&(e[r]!==`*`||e[r+1]!==`/`);)n+=e[r]===`
337
337
  `||e[r]===`\r`?e[r]:` `,r++;return r<e.length&&(n+=` `,r++),{text:n,end:r}}function $g(e){let t=``,n={inString:!1,escaped:!1};for(let r=0;r<e.length;r++){let i=e[r],a=e[r+1];if(n.inString){t+=i,Xg(n,i);continue}if(i===`"`){n.inString=!0,t+=i;continue}if(i===`/`&&a===`/`){let n=Zg(e,r);t+=n.text,r=n.end;continue}if(i===`/`&&a===`*`){let n=Qg(e,r);t+=n.text,r=n.end;continue}t+=i}return t}function e_(e){let t=``,n=!1,r=!1;for(let i=0;i<e.length;i++){let a=e[i];if(n){t+=a,r?r=!1:a===`\\`?r=!0:a===`"`&&(n=!1);continue}if(a===`"`){n=!0,t+=a;continue}if(a===`,`){let t=i+1;for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]===`}`||e[t]===`]`)continue}t+=a}return t}function t_(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function n_(e){let t=e.charCodeAt(0)===65279?e.slice(1):e,n=JSON.parse(e_($g(t)));if(!t_(n))throw Error(`configuration must contain a JSON object`);return n}function r_(e){if(typeof e==`string`)return e;if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=e.path;return typeof t==`string`?t:null}function i_(e){let t=e.plugins;if(!Array.isArray(t))return null;for(let e of t){let t=r_(e);if(t!==null)return t}return null}async function a_(e,t){let n=b(t);for(;;){if(!n.split(`/`).includes(`node_modules`))for(let t of[`biome.json`,`biome.jsonc`]){let r=x(n,t);if(await e.exists(r))return r}if(n===`/`)return null;n=Ie(n).dir}}async function o_(e,t,n){let r;try{r=await e.readFile(t)}catch(e){return{ok:!1,error:`biome: failed to read configuration ${t}: ${e instanceof Error?e.message:String(e)}`,exitCode:n}}try{let e=n_(r),i=i_(e);return i===null?{ok:!0,resolved:{path:t,configuration:e}}:{ok:!1,error:`biome: unsupported configuration ${t}: path-based plugin ${JSON.stringify(i)} cannot be loaded by @biomejs/js-api@6.0.0`,exitCode:n}}catch(e){return{ok:!1,error:`biome: failed to parse configuration ${t}: ${e instanceof Error?e.message:String(e)}`,exitCode:n}}}async function s_(e,t,n,r){if(r!==null){let n=b(e.resolvePath(t,r));return await e.exists(n)?o_(e,n,2):{ok:!1,error:`biome: configuration file not found: ${n}`,exitCode:2}}let i=await a_(e,n);return i===null?{ok:!0,resolved:null}:o_(e,i,1)}const c_=new Set(`address.article.aside.blockquote.dd.div.dl.dt.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hr.li.main.nav.ol.p.pre.section.table.tbody.td.tfoot.th.thead.tr.ul`.split(`.`)),l_={amp:`&`,apos:`'`,gt:`>`,lt:`<`,nbsp:` `,quot:`"`};function u_(e){let t=e.slice(1,-1);if(!t.startsWith(`#`))return l_[t.toLowerCase()]??e;let n=t[1]?.toLowerCase()===`x`,r=Number.parseInt(t.slice(n?2:1),n?16:10);return!Number.isFinite(r)||r<0||r>1114111||r>=55296&&r<=57343?e:String.fromCodePoint(r)}function d_(e){let t=``,n=0,r=!1;for(let i of e.matchAll(/<!--[\s\S]*?-->|<![^>]*>|<\/?[A-Za-z][^>]*>/g)){let a=e.slice(n,i.index);a&&(t+=a,r=!1);let o=i[0],s=/^<\/?\s*([A-Za-z0-9-]+)/.exec(o)?.[1]?.toLowerCase();s===`br`?(t+=`
338
338
  `,r=!1):s&&c_.has(s)&&t.length>0&&!t.endsWith(`
@@ -544,7 +544,7 @@ Usage: cherry-emit <name> [--detail <json>] [--runtime <id>]
544
544
  -o Force paste mode (write to stdout)
545
545
  (default) Auto-detect: stdin present = copy, no stdin = paste
546
546
  Example: echo hello | ${e}\n Example: ${e} -o > file.txt\n`,stderr:``,exitCode:0}}async function fv(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: ${cv(e)}\n`,exitCode:1}}}async function pv(e){let t=!!globalThis.navigator?.clipboard,n=t?null:y();if(!t&&!n)return{stdout:``,stderr:`${e}: clipboard API is unavailable\n`,exitCode:1};try{return{stdout:t?await navigator.clipboard.readText():(await n.call(`clipboard-read-text`,void 0)).text,stderr:``,exitCode:0}}catch(t){return{stdout:``,stderr:`${e}: failed to read from clipboard: ${cv(t)}\n`,exitCode:1}}}function mv(){return S(`pbcopy`,async(e,t)=>e.includes(`--help`)||e.includes(`-h`)?lv():fv(P(t.stdin),`pbcopy`))}function hv(){return S(`pbpaste`,async e=>e.includes(`--help`)||e.includes(`-h`)?uv():pv(`pbpaste`))}function gv(e){return S(e,async(t,n)=>{if(t.includes(`--help`)||t.includes(`-h`))return dv(e);let r=t.includes(`-i`),i=t.includes(`-o`);if(r&&i)return{stdout:``,stderr:`${e}: cannot use both -i and -o\n`,exitCode:1};if(i)return pv(e);let a=P(n.stdin);return r||a.length>0?fv(a,e):pv(e)})}function _v(){return S(`cmp`,async(e,t)=>{let n=e.some(e=>e===`-s`||e===`--quiet`||e===`--silent`),r=e.filter(e=>![`-s`,`--quiet`,`--silent`].includes(e));if(r.length!==2||r.some(e=>e.startsWith(`-`)&&e!==`-`))return{stdout:``,stderr:`cmp: usage: cmp [-s|--quiet|--silent] FILE1 FILE2
547
- `,exitCode:2};let i=await vv(t,r[0]);if(`error`in i)return n?{...i.error,stderr:``}:i.error;let a=await vv(t,r[1]);if(`error`in a)return n?{...a.error,stderr:``}:a.error;let o=yv(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 vv(e,t){if(t===`-`){let t=_i(e.stdin);return{bytes:Uint8Array.from(t,e=>e.charCodeAt(0)&255)}}try{return{bytes:await e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t))}}catch{return{error:{stdout:``,stderr:`cmp: ${t}: No such file or directory\n`,exitCode:2}}}}function yv(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 bv(e={}){return S(`computer`,async(t,n)=>{let{runComputer:r}=await import(`./run-BteWzSfI.js`).then(e=>e.t);return r(t,n,e)})}var xv=`/assets/AdobeClean-Regular-CVsq5gF7.otf`;function Sv(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 Cv(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 wv=`AdobeClean-Regular.otf`,Tv=new WeakSet;let Ev=null;function Dv(){return{stdout:`usage: convert [input ...] [operations...] [output]
547
+ `,exitCode:2};let i=await vv(t,r[0]);if(`error`in i)return n?{...i.error,stderr:``}:i.error;let a=await vv(t,r[1]);if(`error`in a)return n?{...a.error,stderr:``}:a.error;let o=yv(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 vv(e,t){if(t===`-`){let t=_i(e.stdin);return{bytes:Uint8Array.from(t,e=>e.charCodeAt(0)&255)}}try{return{bytes:await e.fs.readFileBuffer(e.fs.resolvePath(e.cwd,t))}}catch{return{error:{stdout:``,stderr:`cmp: ${t}: No such file or directory\n`,exitCode:2}}}}function yv(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 bv(e={}){return S(`computer`,async(t,n)=>{let{runComputer:r}=await import(`./run-C1H8fJIP.js`).then(e=>e.t);return r(t,n,e)})}var xv=`/assets/AdobeClean-Regular-CVsq5gF7.otf`;function Sv(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 Cv(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 wv=`AdobeClean-Regular.otf`,Tv=new WeakSet;let Ev=null;function Dv(){return{stdout:`usage: convert [input ...] [operations...] [output]
548
548
 
549
549
  Operations:
550
550
  -resize GEOMETRY resize; supports %, !, ^, >, and < modifiers
@@ -819,7 +819,7 @@ Without --port, the Web Serial picker opens (asks for permission).
819
819
  `)}\n`:`region erased
820
820
  `)}case`run`:{let e=await fS(a,r);return await n.run(e,c,u),lS(l.length?`${l.join(`
821
821
  `)}\n`:`running app
822
- `)}default:return uS(`unknown subcommand '${i[0]??``}'. Try 'esptool --help'.`)}}function hS(){return S(`esptool`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return lS(dS);let n=fe(),r=y(),i=Ax(n,r),a=ei(n,r);if(!i||!a)return uS(`Web Serial is unavailable in this environment`);try{return await mS(e,t,i,a)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?uS(`user cancelled or no port selected`):uS(t)}})}function gS(){return S(`ffmpeg`,async(e,t)=>{let{runFfmpeg:n}=await import(`./run-dcwnpB-U.js`);return n(e,t)})}function _S(){return S(`ffprobe`,async(e,t)=>{let{runFfprobe:n}=await import(`./run-yplzwsG-.js`);return n(e,t)})}function vS(e){let t=pe().find(t=>t.id===e);return t?t.id:null}function yS(){return pe().map(e=>e.id)}function bS(e){return he(e)}function xS(e,t){if(me(e,t),_e()[e]!==t)throw Error(`flag ${e} cannot be overridden on this float`)}function SS(e){let t=globalThis.localStorage;if(!t||typeof t.setItem!=`function`)throw Error(`this realm has no localStorage to apply the override`);t.setItem(ve,e)}const CS=`usage: flags set <id> on|off
822
+ `)}default:return uS(`unknown subcommand '${i[0]??``}'. Try 'esptool --help'.`)}}function hS(){return S(`esptool`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return lS(dS);let n=fe(),r=y(),i=Ax(n,r),a=ei(n,r);if(!i||!a)return uS(`Web Serial is unavailable in this environment`);try{return await mS(e,t,i,a)}catch(e){let t=e instanceof Error?e.message:String(e);return/cancelled|NotFoundError|No port selected/i.test(t)?uS(`user cancelled or no port selected`):uS(t)}})}function gS(){return S(`ffmpeg`,async(e,t)=>{let{runFfmpeg:n}=await import(`./run-dcwnpB-U.js`);return n(e,t)})}function _S(){return S(`ffprobe`,async(e,t)=>{let{runFfprobe:n}=await import(`./run-Cf6ZRThe.js`);return n(e,t)})}function vS(e){let t=pe().find(t=>t.id===e);return t?t.id:null}function yS(){return pe().map(e=>e.id)}function bS(e){return he(e)}function xS(e,t){if(me(e,t),_e()[e]!==t)throw Error(`flag ${e} cannot be overridden on this float`)}function SS(e){let t=globalThis.localStorage;if(!t||typeof t.setItem!=`function`)throw Error(`this realm has no localStorage to apply the override`);t.setItem(ve,e)}const CS=`usage: flags set <id> on|off
823
823
  flags get <id>
824
824
 
825
825
  set <id> on|off Persist a local override. The next new session reads it.
@@ -1426,7 +1426,7 @@ Options:
1426
1426
  --global Resolve only from the shared global prefix (/shared/lib/node_modules)
1427
1427
  -h, --help Show this help message
1428
1428
  `}async function zO(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function BO(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function VO(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*HO(e,t=!1){if(t){yield ar;return}let n=b(e);for(;yield x(n,`node_modules`),n!==`/`;)n=Ie(n).dir;yield ar}async function UO(e,t,n,r=!1){for(let i of HO(t,r)){let t=x(i,`.bin`,n);if(!await BO(e,t))continue;let r=await zO(e,t),a=LO.exec(r),o=Ie(t).dir;return{binFilePath:a?x(o,a[1]):t,argvName:t}}return null}function WO(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function GO(e,t){if(typeof e==`string`)return{binName:WO(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,WO(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 KO(e,t,n,r=!1){for(let i of HO(t,r)){let t=x(i,n),r=x(t,`package.json`);if(!await BO(e,r))continue;let a;try{a=JSON.parse(await zO(e,r))}catch{return null}let o=GO(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 qO(e,t,n,r=!1){return await UO(e,t,n,r)??await KO(e,t,n,r)}async function JO(e,t,n){for(let r of HO(t))if(await BO(e,x(r,n,`package.json`)))return!0;return!1}function YO(e){return e instanceof Error?e.message:String(e)}function XO(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function ZO(e,t,n,r){try{let{installPackages:i}=await import(`./installer-iQBJzSUD.js`),a=await i([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(a.errors.length>0)return{error:XO(e,`failed to install '${t}': ${YO(a.errors[0].error)}`)};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:o.length>0?`${o.join(`
1429
- `)}\n`:``}}catch(n){return{error:XO(e,`failed to install '${t}': ${YO(n)}`)}}}async function QO(e,t,n,r){return await BO(r,n)?null:await VO(r,n)?XO(e,`bin target '${n}' is a directory, not a file`):XO(e,`bin file '${n}' for '${t}' does not exist`)}async function $O(e,t,n,r,i,a){if(await JO(a.fs,i.cwd,t))return{error:XO(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:PO(t);if(o)return{error:{stdout:``,stderr:IO(e,t,n,o),exitCode:1}};let s=await ZO(e,t,i,a);if(`error`in s)return s;let c=await qO(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:XO(e,`package '${t}' was installed but does not expose an executable bin`)}}function ek(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:RO(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:RO(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await qO(t.fs,r.cwd,c,o)}catch(t){return XO(e,YO(t))}let d=``;if(!u){if(o)return XO(e,`no global bin '${c}' found in ${ar}`);let n=await $O(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await QO(e,c,u.binFilePath,t.fs);if(f)return f;let p=si(await zO(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await ai(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function tk(e={}){return S(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-M6VkslbE.js`);return r(t,n,e)})}const nk=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function rk(e={}){return S(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return lk();let n=e.processManager??ik();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1429
+ `)}\n`:``}}catch(n){return{error:XO(e,`failed to install '${t}': ${YO(n)}`)}}}async function QO(e,t,n,r){return await BO(r,n)?null:await VO(r,n)?XO(e,`bin target '${n}' is a directory, not a file`):XO(e,`bin file '${n}' for '${t}' does not exist`)}async function $O(e,t,n,r,i,a){if(await JO(a.fs,i.cwd,t))return{error:XO(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:PO(t);if(o)return{error:{stdout:``,stderr:IO(e,t,n,o),exitCode:1}};let s=await ZO(e,t,i,a);if(`error`in s)return s;let c=await qO(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:XO(e,`package '${t}' was installed but does not expose an executable bin`)}}function ek(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:RO(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:RO(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await qO(t.fs,r.cwd,c,o)}catch(t){return XO(e,YO(t))}let d=``;if(!u){if(o)return XO(e,`no global bin '${c}' found in ${ar}`);let n=await $O(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await QO(e,c,u.binFilePath,t.fs);if(f)return f;let p=si(await zO(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await ai(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function tk(e={}){return S(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-_s42Xqna.js`);return r(t,n,e)})}const nk=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function rk(e={}){return S(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return lk();let n=e.processManager??ik();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1430
1430
  `,exitCode:1};let r=ak(t);if(!r.ok)return{stdout:``,stderr:r.stderr,exitCode:r.exitCode};let{allDelivered:i,errors:a}=ok(n,r.pids,r.signal);return{stdout:``,stderr:a.length?`${a.join(`
1431
1431
  `)}\n`:``,exitCode:+!i}})}function ik(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function ak(e){let t=`SIGTERM`,n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i===`-s`||i===`--signal`){let n=e[++r];if(!n)return{ok:!1,stderr:`kill: -s requires a signal name
1432
1432
  `,exitCode:2};let i=sk(n);if(i instanceof Error)return{ok:!1,stderr:`kill: ${i.message}\n`,exitCode:2};t=i;continue}if(i.startsWith(`-`)){let e=ck(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
@@ -1499,7 +1499,7 @@ Common base URLs:
1499
1499
  `)+`
1500
1500
  `,stderr:``,exitCode:0}}function Ik(e,t){let n=t.models.length;return{stdout:[`✓ ${e} (${Mk(t.runtime,!1)})`,` Saved ${n} model${n===1?``:`s`} to Settings:`,...Nk(t.models)].join(`
1501
1501
  `)+`
1502
- `,stderr:``,exitCode:0}}function Lk(){return S(Ak,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:jk(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-BVwBfCUF.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-p6guz-en.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(Ak);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1502
+ `,stderr:``,exitCode:0}}function Lk(){return S(Ak,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:jk(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-CivERjco.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-yQTqA0rT.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(Ak);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1503
1503
  `,exitCode:1};let c=await a(s,t(Ak)??void 0);if(!c.ok)return Pk(s,c);if(o===`discover`){let e=n(Ak)??``;return i(Ak,e,s,c.models.join(`, `)),Ik(s,c)}return Fk(s,c)})}function Rk(){return{stdout:`usage: man <topic>
1504
1504
 
1505
1505
  Fetches documentation for a given topic from sliccy.com.
@@ -1518,7 +1518,7 @@ Notes:
1518
1518
  Document-Isolation-Policy). Embedded floats cannot be isolated and
1519
1519
  report why instead.
1520
1520
  - The browser randomizes measurement timing — expect a short delay.
1521
- `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??Uk();if(!r&&!e.measure)return Vk(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return Vk(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return Vk(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:Gk(a),stderr:``,exitCode:0}})}function qk(e){return S(`memory`,async t=>{let{runMemory:n}=await import(`./run-DyWK2CEh.js`);return n(t,e)})}function Jk(){return S(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const Yk=`/.cache/artificial-analysis.json`,Xk=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],Zk=[`--provider`];function Qk(e){return{stdout:``,stderr:e.endsWith(`
1521
+ `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??Uk();if(!r&&!e.measure)return Vk(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return Vk(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return Vk(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:Gk(a),stderr:``,exitCode:0}})}function qk(e){return S(`memory`,async t=>{let{runMemory:n}=await import(`./run-B7Gxq2hA.js`);return n(t,e)})}function Jk(){return S(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const Yk=`/.cache/artificial-analysis.json`,Xk=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],Zk=[`--provider`];function Qk(e){return{stdout:``,stderr:e.endsWith(`
1522
1522
  `)?e:`${e}\n`,exitCode:1}}async function $k(e){try{let t=await e.readFile(Yk),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}return null}function eA(){try{return localStorage.getItem(`aa_api_key`)}catch{return null}}function tA(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 nA(e,t){let n={fetchedAt:Date.now(),models:t};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(Yk,JSON.stringify(n))}catch{}}async function rA(e,t=!1){if(e&&!t){let t=await $k(e);if(t)return t}let n={Accept:`application/json`},r=eA();r&&(n[`x-api-key`]=r);let i=g(),a;try{a=await i(`https://artificialanalysis.ai/api/v2/data/llms/models`,{method:`GET`,headers:n})}catch{return[]}if(a.status===401||a.status<200||a.status>=300)return[];let o;try{o=JSON.parse(new TextDecoder().decode(a.body))}catch{return[]}if(typeof o!=`object`||!o)return[];let s=o,c=tA(Array.isArray(s)?s:s.data??s.models??[]);return e&&c.length>0&&await nA(e,c),c}function iA(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=iA(e),a=t.find(e=>iA(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 oA(){return`models - list available LLM models
1523
1523
 
1524
1524
  Usage: models [options]
@@ -1533,7 +1533,7 @@ Options:
1533
1533
  -h, --help Show this help message
1534
1534
  `}function sA(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function cA(e){return`$${e.toFixed(2)}`}const lA=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function uA(e){let t=`${e.id} ${e.name??``}`;return!lA.test(t)}function dA(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 fA(e){let t=e.toLowerCase();return t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``),dA(t)??t.replace(/-[\d.]+$/,``)}function pA(e){let t=new Map;for(let n of e){let e=fA(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function mA(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 hA(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=`${cA(e.cost.input)} / ${cA(e.cost.output)}`,a=`${sA(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(`
1535
1535
  `)+`
1536
- `}function gA(e){let t=C(e,{bool:Xk,value:Zk});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 _A(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 vA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(uA);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=pA(s)),s}function yA(e,t,n,r){let i=`${e}:${t}`,a=`${n}:${r}`;return i===a?`Currently using: ${i}\n`:`Currently using: ${i} (selected ${a} — resolved to a different model)\n`}async function bA(e,t){if(w(e,{valueFlags:Zk}))return{stdout:oA(),stderr:``,exitCode:0};let n=gA(e);if(`error`in n)return Qk(`models: ${n.error}`);let r=await import(`./account-store-BVwBfCUF.js`).then(e=>e.t);if(r.getAccounts().length===0)return Qk(`No provider accounts configured. Run the provider settings to add one.
1536
+ `}function gA(e){let t=C(e,{bool:Xk,value:Zk});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 _A(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 vA(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(uA);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=pA(s)),s}function yA(e,t,n,r){let i=`${e}:${t}`,a=`${n}:${r}`;return i===a?`Currently using: ${i}\n`:`Currently using: ${i} (selected ${a} — resolved to a different model)\n`}async function bA(e,t){if(w(e,{valueFlags:Zk}))return{stdout:oA(),stderr:``,exitCode:0};let n=gA(e);if(`error`in n)return Qk(`models: ${n.error}`);let r=await import(`./account-store-CivERjco.js`).then(e=>e.t);if(r.getAccounts().length===0)return Qk(`No provider accounts configured. Run the provider settings to add one.
1537
1537
  `);let i=r.resolveCurrentModel(),a=i.id,o=i.provider,s=r.getSelectedProvider(),c=r.getSelectedModelId(),l;if(!n.noBenchmarks){let e=await rA(t,n.forceRefresh);e.length>0&&(l=e)}let u=_A(r,n,s);if(`error`in u)return Qk(u.error);let d=[],f=[];for(let e of u){let t=vA(r,e,a,o,l,n.allVersions);if(t.length===0){if(!n.allMode)return Qk(`No models available for provider ${e}.\n`);continue}if(d.push(...t),!n.jsonMode){let n=r.getProviderConfig(e);f.push(hA(n.name,e,t,!!l))}}return n.jsonMode?{stdout:JSON.stringify(d,null,2)+`
1538
1538
  `,stderr:``,exitCode:0}:(n.allVersions||f.push(`Showing latest versions only. Use --all-versions to see all.
1539
1539
  `),f.push(yA(o,a,s,c)),{stdout:f.join(`
@@ -1591,7 +1591,7 @@ Examples:
1591
1591
  `)}\n`,stderr:``,exitCode:0}}async function GA(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain add: requires <providerId> and <domain>
1592
1592
  `,exitCode:1};let r=e.getExtraOAuthDomains(t),i=n.toLowerCase();return r.some(e=>e.toLowerCase()===i)?{stdout:`(${n} already in ${t} extras)\n`,stderr:``,exitCode:0}:(await e.setExtraOAuthDomainsAsync(t,[...r,n]),{stdout:`Added ${n} to ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0})}async function KA(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain remove: requires <providerId> and <domain>
1593
1593
  `,exitCode:1};let r=e.getExtraOAuthDomains(t),i=n.toLowerCase(),a=r.filter(e=>e.toLowerCase()!==i);return a.length===r.length?{stdout:`(${n} not found in ${t} extras)\n`,stderr:``,exitCode:0}:(await e.setExtraOAuthDomainsAsync(t,a),{stdout:`Removed ${n} from ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0})}async function qA(e,t){return t?(await e.setExtraOAuthDomainsAsync(t,[]),{stdout:`Cleared extra domains for ${t}. Reload the page to apply.\n`,stderr:``,exitCode:0}):{stdout:``,stderr:`oauth-domain clear: requires <providerId>
1594
- `,exitCode:1}}async function JA(e,t,n,r){switch(t){case`list`:return WA(e,n);case`add`:return GA(e,n,r);case`remove`:return KA(e,n,r);case`clear`:return qA(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${HA()}`,exitCode:1}}}function YA(){return S(`oauth-domain`,async e=>{if(e.length===0||w(e))return{stdout:HA(),stderr:``,exitCode:0};let t=C(e);if(`error`in t)return UA(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-BVwBfCUF.js`).then(e=>e.t);try{return await JA(a,n,r,i)}catch(e){return UA(e instanceof Error?e.message:String(e))}})}function XA(){return S(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-Zu9QCbOT.js`);return n(e,t)})}const ZA=[`--download`,`-d`,`--view`,`-v`],QA=[`--size`],$A={low:256,medium:768,high:1536};function ej(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1594
+ `,exitCode:1}}async function JA(e,t,n,r){switch(t){case`list`:return WA(e,n);case`add`:return GA(e,n,r);case`remove`:return KA(e,n,r);case`clear`:return qA(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${HA()}`,exitCode:1}}}function YA(){return S(`oauth-domain`,async e=>{if(e.length===0||w(e))return{stdout:HA(),stderr:``,exitCode:0};let t=C(e);if(`error`in t)return UA(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-CivERjco.js`).then(e=>e.t);try{return await JA(a,n,r,i)}catch(e){return UA(e instanceof Error?e.message:String(e))}})}function XA(){return S(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-Cxla4Ky-.js`);return n(e,t)})}const ZA=[`--download`,`-d`,`--view`,`-v`],QA=[`--size`],$A={low:256,medium:768,high:1536};function ej(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1595
1595
 
1596
1596
  VFS paths are served in a new browser tab via the preview service worker.
1597
1597
  URLs (http/https/etc.) are opened directly in a new tab.
@@ -1617,7 +1617,7 @@ Examples:
1617
1617
  `);let i=!1;try{i=(await t.fs.stat(e)).isDirectory}catch{}let a=await hr(t.fs,i?e:Cr(e)),o=Mr(e,a),s;try{s=await r(o)}catch(e){return G(`${e instanceof Error?e.message:String(e)}\n`)}return lj(`opened ${e} → ${o}${uj(s)}`)}async function _j(e,t,n,r){if(!_r(e)&&e.endsWith(`.shtml`)&&t.fs)return fj(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return G(`open: browser APIs are unavailable in this environment
1618
1618
  `);if(_r(e))return pj(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?mj(e,i,t,n.sizeSpec):n.download?hj(e,i,t,r.hasDom):gj(i,t,r.canOpenWindow,r.openExternal)}function vj(e){return S(`open`,async(t,n)=>{if(t.length===0||w(t,{valueFlags:QA}))return ej();let r=cj(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 ej();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:dj(e,l,u)},f=[];for(let e of s){let t=await _j(e,n,{view:a,download:i,sizeSpec:o},d);if(!t.ok)return t.result;f.push(t.message)}return{stdout:f.join(`
1619
1619
  `)+`
1620
- `,stderr:``,exitCode:0}})}function yj(){return S(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-DH2tb90L.js`);return n(e,t)})}function bj(e=`pdftk`){return S(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function xj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1620
+ `,stderr:``,exitCode:0}})}function yj(){return S(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-XzRUhomo.js`);return n(e,t)})}function bj(e=`pdftk`){return S(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function xj(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1621
1621
 
1622
1622
  Rasterize PDF pages to images. Writes <prefix>-<n>.<ext> per page, where <n>
1623
1623
  is zero-padded to the digit width of the last page (out-1.png for a 9-page
@@ -1912,7 +1912,7 @@ Limits and lifetime:
1912
1912
  `,exitCode:1};if(e.ttlMs!==void 0&&e.maxTabs!==void 0)return{stdout:``,stderr:`serve: --ttl cannot be combined with --max-tabs
1913
1913
  `,exitCode:1}}async function SP(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return mP(t,n)}}async function CP(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return QN();let i=iP(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await bP(i);if(a)return a;if(!i.directory)return QN();let o=xP(i);if(o)return o;let s=await aP(i.directory,i.entry,t.fs,t.cwd);if(oP(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await SP(i,r,c)}catch(e){return{stdout:``,stderr:`serve: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let d=i.project?`serve: --project is obsolete; ignored (root-absolute paths work natively under unified preview)
1914
1914
  `:``,f=await vP(!i.noBridge&&i.bridge,d);return f.ok?yP(i,c,l,f.webhookId,d,u,n):f.result}function wP(e,t){return S(`serve`,(n,r)=>CP(n,r,e,t))}const TP=`usage: session export [--id <id>] [--output <path>]
1915
- `;function EP(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 DP(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${TP}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${TP}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${TP}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${TP}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${TP}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${TP}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function OP(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||Dt(r)!==a.sha256)throw new Ma(`transfer-corrupt`);return r}async function kP(e,t){let n=DP(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=EP(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${TP}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await ys().export(a,{}),n=await OP(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 Ma?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function AP(){return S(`session`,async(e,t)=>{if(e[0]===`export`&&!w(e))return kP(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-CL_-Hk6R.js`);return n(e,t,TP)})}function jP(){return S(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-BRFnmkzR.js`);return await n(e,t)})}const MP=`leader`;function NP(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function PP(e){return+!!e.leader+e.followers.length}function FP(){return{stdout:`usage: sprinkle <subcommand> [args]
1915
+ `;function EP(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 DP(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${TP}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${TP}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${TP}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${TP}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${TP}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${TP}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function OP(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||Dt(r)!==a.sha256)throw new Ma(`transfer-corrupt`);return r}async function kP(e,t){let n=DP(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=EP(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${TP}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await ys().export(a,{}),n=await OP(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 Ma?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function AP(){return S(`session`,async(e,t)=>{if(e[0]===`export`&&!w(e))return kP(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-B9VZUetL.js`);return n(e,t,TP)})}function jP(){return S(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-BRFnmkzR.js`);return await n(e,t)})}const MP=`leader`;function NP(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function PP(e){return+!!e.leader+e.followers.length}function FP(){return{stdout:`usage: sprinkle <subcommand> [args]
1916
1916
 
1917
1917
  list [--runtime <id>] List sprinkles + an instance line per runtime
1918
1918
  open <name> Open a sprinkle by name
@@ -3059,7 +3059,7 @@ Notes:
3059
3059
  curl -o ${fR}/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
3060
3060
  or pass -bios / -vgabios with explicit VFS paths.`,hR={"-n":gR,"-name":gR,"--name":gR,"-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)=>_R(e,`cdrom`,t),"-hda":(e,t)=>_R(e,`hda`,t),"-fda":(e,t)=>_R(e,`fda`,t),"-kernel":(e,t)=>_R(e,`kernel`,t),"-initrd":(e,t)=>_R(e,`initrd`,t),"-append":(e,t)=>_R(e,`append`,t),"-bios":(e,t)=>_R(e,`bios`,t),"-vgabios":(e,t)=>_R(e,`vgabios`,t),"-state":(e,t)=>_R(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 gR(e,t){return/^[A-Za-z0-9_-]+$/.test(t)?(e.name=t,null):`invalid VM name '${t}'`}function _R(e,t,n){return e[t]=n,null}const vR=[...Object.keys(hR),`--fps`,`--tail`,`--send`,`--to`];function yR(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 bR(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 xR(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 SR(e){return _a(e)||Q(`no VM named '${e}' — boot one with \`v86 start -n ${e} ...\``)}function CR(e){return`exitCode`in e}async function wR(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 TR={a:801,c:306,d:531};function ER(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function DR(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 OR(n,e);let r=t[0];if(w(t.slice(1),{valueFlags:vR}))return $(st(`v86`,r,pR,{prefix:`v86`}));let i=ot(t.slice(1));try{switch(r){case`start`:return await PR(i,n,e);case`ls`:return IR();case`type`:return await BR(i,n);case`key`:return await VR(i,n);case`mouse`:return await UR(i,n);case`screenshot`:return await WR(i,n);case`text`:return await GR(i,n);case`serve`:return KR(i);case`serial`:return qR(i);case`state`:return await JR(i,n);case`stop`:return await YR(i,e);default:return Q(`unknown subcommand '${r}' — see \`v86 --help\``)}}catch(e){return Q(e instanceof Error?e.message:String(e))}})}async function OR(e,t){if(t.loadEngine)return $(`v86 ${(await t.loadEngine(bR(e))).version} (qemu-flavored CLI)\n`);let n=await wO(bR(e));return n?$(`v86 ${n.version} (qemu-flavored CLI)\n`):Q(yO)}async function kR(e,t,n){if(e.state&&!e.bios&&!e.vgabios)return null;let r=await wR(t,e.bios??`${fR}/seabios.bin`,`-bios`);if(`exitCode`in r)return e.bios?r:Q(mR.replace(/^v86: /u,``));if(n.bios=r,e.nographic)return null;let i=await wR(t,e.vgabios??`${fR}/vgabios.bin`,`-vgabios`);return`exitCode`in i?e.vgabios?i:Q(mR.replace(/^v86: /u,``)):(n.vga_bios=i,null)}async function AR(e,t,n){let r=await kR(e,t,n);if(r)return r;for(let[r,i]of[[`cdrom`,`cdrom`],[`hda`,`hda`],[`fda`,`fda`],[`kernel`,`bzimage`],[`initrd`,`initrd`]]){let a=e[r];if(!a)continue;let o=await wR(t,a,`-${r}`);if(`exitCode`in o)return o;n[i]=o}if(e.append&&(n.cmdline=e.append),e.boot&&(n.boot_order=TR[e.boot]),e.state){let r=await wR(t,e.state,`-state`);if(`exitCode`in r)return r;n.initial_state=r}return e.fs9p&&(n.filesystem={baseurl:e.fs9p}),e.net&&(n.net_device=e.netRelay===`fetch`?{type:e.net,relay_url:`fetch`}:{type:e.net}),null}const jR=6e4;function MR(e){return e.v86?Promise.resolve():new Promise((t,n)=>{let r=setTimeout(()=>n(Error(`engine init timed out after ${jR/1e3}s`)),jR);e.add_listener(`emulator-loaded`,()=>{clearTimeout(r),t()})})}function NR(e,t){let n=e.network_adapter;if(!n||typeof n.fetch!=`function`)return Q(`relay=fetch: engine exposed no fetch-relay network adapter`);let r=t.proxiedFetch??g();return n.fetch=async(e,t)=>{let n=e.replace(/^http:\/\/(?!localhost[:/]|127\.0\.0\.1[:/])/u,`https://`),i={};t?.headers?.forEach((e,t)=>{i[t]=e});let a;if(t?.body){let e=``;for(let n of t.body)e+=String.fromCharCode(n);a=e}let o=await r(n,{method:t?.method,headers:i,body:a}),s=o.body,c=s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength);return{status:o.status,statusText:o.statusText,headers:new Headers(o.headers),redirected:!1,url:o.url,arrayBuffer:async()=>c}},null}async function PR(e,t,n){let r=yR(e);if(!r.ok)return Q(r.error);let i=r.parsed;if(_a(i.name))return Q(`VM '${i.name}' already running — stop it first or pick another -n name`);let a=bR(t),o=n.loadEngine?await n.loadEngine(a):await xO({ipk:a}),s={wasm_fn:EO(o.wasmModule),memory_size:i.memoryMib*1024*1024,vga_memory_size:i.vgaMemoryMib*1024*1024,autostart:!1,disable_speaker:!0,fastboot:!0},c=await AR(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??ER();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`,()=>{FR(u,d)})}ga(u);try{if(await MR(l),i.netRelay===`fetch`){let e=NR(l,n);if(e)return await FR(u,d),e}ha(u),await l.run()}catch(e){return await FR(u,d),Q(`boot failed: ${e instanceof Error?e.message:String(e)}`)}u.onScreenChange=()=>{import(`./registry-DfuJBCKY.js`).then(({getComputerRegistry:e})=>{e()?.refresh(`v86:${u.name}`)})},import(`./v86-16ZWsI-9.js`).then(({registerV86Computer:e})=>e(u)).catch(()=>{});let f=u.pid===null?``:` (pid ${u.pid})`;return $(`VM '${i.name}' booting in the background${f}.\nDrive it with: v86 text -n ${i.name} | v86 screenshot -n ${i.name} | v86 type -n ${i.name} "..."\n`)}async function FR(e,t){va(e),ma(e.name),import(`./v86-16ZWsI-9.js`).then(({unregisterV86Computer:t})=>t(e.name)).catch(()=>{});try{e.emulator.is_running()&&await e.emulator.stop()}catch{}try{await e.emulator.destroy()}catch{}t&&e.pid!==null&&t.exit(e.pid,null)}function IR(){let e=pa();if(e.length===0)return $(`no VMs running
3061
3061
  `);let t=[`NAME PID STATE UP BOOT`];for(let n of e){let e=Math.round((Date.now()-n.startedAt)/1e3),r=e>=60?`${Math.floor(e/60)}m${e%60}s`:`${e}s`;t.push(`${n.name.padEnd(10)} ${String(n.pid??`-`).padEnd(6)} ${(n.emulator.is_running()?`running`:`stopped`).padEnd(9)} ${r.padEnd(9)} `+n.bootArgv.slice(2).join(` `))}return $(`${t.join(`
3062
- `)}\n`)}function LR(e,t){return`prefer: computer ${e} -c ${t}\n`}async function RR(e,t,n,r){let i=SR(t);if(CR(i))return i;let[{runComputer:a},{getComputerRegistry:o,installComputerRegistry:s},c]=await Promise.all([import(`./run-BteWzSfI.js`).then(e=>e.t),import(`./registry-DfuJBCKY.js`),import(`./v86-16ZWsI-9.js`)]),l=c.v86ComputerId(t),u=o()??s(null);return u.get(l)||c.registerV86Computer(i,u),zR(await a([`-c`,l,...n],e,{registry:u}),r,l)}function zR(e,t,n){let r=LR(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 BR(e,t){let{name:n,rest:r}=xR(e);if(r.length===0){let e=SR(n);return CR(e)?e:Q(`type: no text supplied`)}return RR(t,n,[`type`,`--`,...r],`type`)}async function VR(e,t){let{name:n,rest:r}=xR(e);if(r.length===0){let e=SR(n);return CR(e)?e:Q(`key: no chord supplied`)}return RR(t,n,[`key`,...r],`key`)}const HR=[`left`,`middle`,`right`];async function UR(e,t){let{name:n,rest:r}=xR(e),i=SR(n);if(CR(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?RR(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>`):RR(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!HR.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),RR(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function WR(e,t){let{name:n,rest:r}=xR(e);return RR(t,n,[`screenshot`,...r],`screenshot`)}async function GR(e,t){let{name:n}=xR(e);return RR(t,n,[`text`],`text`)}function KR(e){let{name:t}=xR(e);return $(`v86 serve is retired.\nUse: computer watch -c v86:${t}\nLive frames go to the overlay, lightbox, and bash rows.\n`)}function qR(e){let{name:t,rest:n}=xR(e),r=SR(t);if(CR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
3062
+ `)}\n`)}function LR(e,t){return`prefer: computer ${e} -c ${t}\n`}async function RR(e,t,n,r){let i=SR(t);if(CR(i))return i;let[{runComputer:a},{getComputerRegistry:o,installComputerRegistry:s},c]=await Promise.all([import(`./run-C1H8fJIP.js`).then(e=>e.t),import(`./registry-DfuJBCKY.js`),import(`./v86-16ZWsI-9.js`)]),l=c.v86ComputerId(t),u=o()??s(null);return u.get(l)||c.registerV86Computer(i,u),zR(await a([`-c`,l,...n],e,{registry:u}),r,l)}function zR(e,t,n){let r=LR(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 BR(e,t){let{name:n,rest:r}=xR(e);if(r.length===0){let e=SR(n);return CR(e)?e:Q(`type: no text supplied`)}return RR(t,n,[`type`,`--`,...r],`type`)}async function VR(e,t){let{name:n,rest:r}=xR(e);if(r.length===0){let e=SR(n);return CR(e)?e:Q(`key: no chord supplied`)}return RR(t,n,[`key`,...r],`key`)}const HR=[`left`,`middle`,`right`];async function UR(e,t){let{name:n,rest:r}=xR(e),i=SR(n);if(CR(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?RR(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>`):RR(t,n,[`--native`,`mousemove`,e,i,`--relative`],`mousemove`)}if(o===`click`){let e=r[1]??`left`;if(!HR.includes(e))return Q(`mouse: unknown button '${r[1]}'`);let i=[`click`,e];return r.includes(`--double`)&&i.push(`--repeat`,`2`),RR(t,n,i,`click`)}return Q(`mouse: expected move <dx> <dy>, click [button], or --to <x>,<y>`)}async function WR(e,t){let{name:n,rest:r}=xR(e);return RR(t,n,[`screenshot`,...r],`screenshot`)}async function GR(e,t){let{name:n}=xR(e);return RR(t,n,[`text`],`text`)}function KR(e){let{name:t}=xR(e);return $(`v86 serve is retired.\nUse: computer watch -c v86:${t}\nLive frames go to the overlay, lightbox, and bash rows.\n`)}function qR(e){let{name:t,rest:n}=xR(e),r=SR(t);if(CR(r))return r;let i=n.indexOf(`--send`);if(i!==-1){let e=n.slice(i+1).join(` `).replace(/\\n/gu,`
3063
3063
  `);return e?(r.emulator.serial0_send(e),$()):Q(`serial: --send requires text`)}let a=n.indexOf(`--tail`);if(a!==-1){let e=Number.parseInt(n[a+1]??`25`,10);return $(`${r.serial.buffer.split(`
3064
3064
  `).slice(-Math.max(1,e)).join(`
3065
3065
  `)}\n`)}return $(r.serial.buffer?`${r.serial.buffer}\n`:``)}async function JR(e,t){let{name:n,rest:r}=xR(e),i=SR(n);if(CR(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 YR(e,t){let{name:n,rest:r}=xR(e),i=SR(n);if(CR(i))return i;let a=t.processManager??ER();return r.includes(`--force`)&&a&&i.pid!==null?(a.signal(i.pid,`SIGKILL`),$(`VM '${n}' killed\n`)):(await FR(i,a),$(`VM '${n}' stopped\n`))}function XR(e={}){return S(`wasm`,async(t,n)=>{let{runWasmCommand:r}=await import(`./run-BI9A9cl8.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}const ZR=[`--name`,`--filter`,`--scoop`],QR={state:`inactive`,session:null};function $R(){return{stdout:`usage: webhook <command> [options]
@@ -3324,7 +3324,7 @@ pass --wait to block and print the full result.`,vB=new Set([`list`,`status`,`st
3324
3324
  `,stderr:``,exitCode:0};let n;try{n=WB(e)}catch(e){return MB(e.message)}let r=n.positional[0],i=n.positional[1],a=!r||r===`-`,o;try{o=await KB(t,r,a)}catch{return MB(`${r}: No such file or directory`)}if(n.revert){let e=FB(o),r=n.plain?BB(e):VB(e);return i?(await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),r),{stdout:``,stderr:``,exitCode:0}):{stdout:FB(r),stderr:``,exitCode:0}}let{data:s,base:c}=JB(n,o),l=qB(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 XB(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=vr(t,o),s=n?`${n}/${o}`:o;a+=await XB(e,i,s,r)}return a}function ZB(){return{stdout:`usage: zip [-r] <archive.zip> <path> [path...]
3325
3325
  `,stderr:``,exitCode:0}}function QB(){return S(`zip`,async(e,t)=>{if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return ZB();let n=!1,r=[];for(let t of e){if(t===`-r`){n=!0;continue}if(t.startsWith(`-`))return{stdout:``,stderr:`zip: unsupported option ${t}\n`,exitCode:1};r.push(t)}if(r.length<2)return{stdout:``,stderr:`zip: expected archive path and at least one input path
3326
3326
  `,exitCode:1};let i=t.fs.resolvePath(t.cwd,r[0]),a=r.slice(1),o={},s=0;for(let e of a){let r=t.fs.resolvePath(t.cwd,e),i=await t.fs.stat(r),a=(e.startsWith(`/`)?e.slice(1):e.replace(/^\.\//,``))||yr(r);if(i.isDirectory&&!n)return{stdout:``,stderr:`zip: ${e} is a directory (use -r)\n`,exitCode:1};s+=await XB(t,r,a,o)}if(s===0)return{stdout:``,stderr:`zip: nothing to do
3327
- `,exitCode:1};let c=kt(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function $B(e){let t;return S(`mcp`,async(n,r)=>{if(!t){let{createMcpCommand:n}=await import(`./mcp-command-C67i3Bq4.js`);t=n({fs:e.fs,scriptCatalog:e.scriptCatalog,connectionManager:e.mcpConnectionManager})}return t.execute(n,r)})}function eV(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function tV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[dO(`ipk`,r),dO(`npm`,r),dO(`i`,r),ek(`ipx`,{fs:t,fetch:n}),ek(`npx`,{fs:t,fetch:n}),sb(`di`,{fs:t,fetch:n}),sb(`uv`,{fs:t,fetch:n}),TL({fs:t,fetch:n})]}function nV(e){let t={buildProcessConfig:e.buildProcessConfig};return[`python3`,`python`,`pyodide`].map(e=>PM(e,t))}function rV(e){let t=e.scriptCatalog;return{buildProcessConfig:e.buildProcessConfig,terminal:e.terminal,gate:e.gateNativeCommand,commands:t&&(()=>t.getWasmCommands()),gitIdentity:e.gitIdentity}}function iV(e={}){let t=[gE({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),oe(),fF(),jP(),wP(e.browserAPI,e.fs),vj(e.browserAPI),Sy(e.browserAPI),xD(e),QB(),tL(),qF(e.fs?{fs:e.fs}:{}),yF(),EF(),CF(),_v(),XR(rV(e)),HS(rV(e)),YB(),oF(`sqlite3`),oF(`sqllite`),uI(),AI(),Cx(),$_(),FA({buildProcessConfig:e.buildProcessConfig}),FA({buildProcessConfig:e.buildProcessConfig},`jsh`),...nV(e),...tV(e),...e.fs?[VS({fs:e.fs})]:[],...e.fs?[qk({fs:e.fs})]:[],...e.fetch?[DE({fetch:e.fetch,streamFetch:e.streamFetch})]:[],gS(),_S(),kS(),dz(e.webhook),Xz(),xy(e.crontask),$B(e),Rj({fs:e.fs,fetch:e.fetch}),BS(),ZP(),yj(),bj(`pdftk`),bj(`pdf`),ev(`biscotto`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),ev(`biscotti`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),Aj(`pdftoppm`),Aj(`pdftocairo`),jj(`pdftotext`),ay(`convert`),ay(`magick`),oB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),PI(),XI(),_D(),vD(),ZI(),Jk(),RM(),Bk(),Jb(),XA(),YA(),Lk(),YN(eV(e)),Am(e.gitCredential),ZM({fs:e.fs}),CN(),mv(),hv(),gv(`xclip`),gv(`xsel`),SN(),rC(),Gg(),Kg(),xA(e.fs),ct(),BA(),qg({getParentJid:e.getParentJid}),nx(),oM({processManager:e.processManager}),BL({processManager:e.processManager}),rk({processManager:e.processManager}),tk({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...Yg(),Kk(),kk(),dR(),$E(),iS(),DR({processManager:e.processManager}),bv({processManager:e.processManager,browser:e.browserAPI,sudoBroker:e.sudoCommand?.broker}),hS(),sv({registry:e.cherryRuntimeRegistry}),jy(),Ly({fs:e.fs}),Ry({fs:e.fs}),mF(e.sudoCommand),CB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),Zz(),AP()];return e.fs&&(Nj(),t.push(...Kn.map(t=>pE(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let aV=null;function oV(e){aV=e}function sV(e){aV?.(e)}var cV=Bt();const lV={user:`user`,home:hp},uV=new Set([`root`,`nobody`,`nogroup`]),dV=/^[A-Za-z_][A-Za-z0-9_.-]*$/;function fV(e){return{user:dV.test(e.user)&&!uV.has(e.user)?e.user:lV.user,home:e.home.startsWith(`/`)&&!/[:\n]/.test(e.home)?e.home:lV.home}}function pV(e,t){let{user:n,home:r}=fV(t);if(e===`/etc/passwd`)return[`root:x:0:0:root:/root:/bin/bash`,`${n}:x:1000:1000:SLICC user:${r}:/bin/bash`,`nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin`,``].join(`
3327
+ `,exitCode:1};let c=kt(o);return await t.fs.writeFile(i,c),{stdout:`created ${i} (${s} file(s))\n`,stderr:``,exitCode:0}})}function $B(e){let t;return S(`mcp`,async(n,r)=>{if(!t){let{createMcpCommand:n}=await import(`./mcp-command-DvN8ZhAS.js`);t=n({fs:e.fs,scriptCatalog:e.scriptCatalog,connectionManager:e.mcpConnectionManager})}return t.execute(n,r)})}function eV(e){return{setEnv:e.setEnv,unsetEnv:e.unsetEnv,broker:e.sudoCommand?.broker}}function tV(e){let{fs:t,fetch:n}=e;if(!t||!n)return[];let r={fs:t,fetch:n,scriptCatalog:e.scriptCatalog,syncScriptCommands:e.syncScriptCommands};return[dO(`ipk`,r),dO(`npm`,r),dO(`i`,r),ek(`ipx`,{fs:t,fetch:n}),ek(`npx`,{fs:t,fetch:n}),sb(`di`,{fs:t,fetch:n}),sb(`uv`,{fs:t,fetch:n}),TL({fs:t,fetch:n})]}function nV(e){let t={buildProcessConfig:e.buildProcessConfig};return[`python3`,`python`,`pyodide`].map(e=>PM(e,t))}function rV(e){let t=e.scriptCatalog;return{buildProcessConfig:e.buildProcessConfig,terminal:e.terminal,gate:e.gateNativeCommand,commands:t&&(()=>t.getWasmCommands()),gitIdentity:e.gitIdentity}}function iV(e={}){let t=[gE({getJshCommands:e.getJshCommands,getWorkflowCommands:e.getWorkflowCommands}),oe(),fF(),jP(),wP(e.browserAPI,e.fs),vj(e.browserAPI),Sy(e.browserAPI),xD(e),QB(),tL(),qF(e.fs?{fs:e.fs}:{}),yF(),EF(),CF(),_v(),XR(rV(e)),HS(rV(e)),YB(),oF(`sqlite3`),oF(`sqllite`),uI(),AI(),Cx(),$_(),FA({buildProcessConfig:e.buildProcessConfig}),FA({buildProcessConfig:e.buildProcessConfig},`jsh`),...nV(e),...tV(e),...e.fs?[VS({fs:e.fs})]:[],...e.fs?[qk({fs:e.fs})]:[],...e.fetch?[DE({fetch:e.fetch,streamFetch:e.streamFetch})]:[],gS(),_S(),kS(),dz(e.webhook),Xz(),xy(e.crontask),$B(e),Rj({fs:e.fs,fetch:e.fetch}),BS(),ZP(),yj(),bj(`pdftk`),bj(`pdf`),ev(`biscotto`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),ev(`biscotti`,{getParentJid:e.getParentJid,isScoop:e.isScoop}),Aj(`pdftoppm`),Aj(`pdftocairo`),jj(`pdftotext`),ay(`convert`),ay(`magick`),oB({fs:e.fs,scriptCatalog:e.scriptCatalog,getStaticBuiltins:e.getStaticBuiltins,getScriptRegisteredNames:e.getScriptRegisteredNames}),PI(),XI(),_D(),vD(),ZI(),Jk(),RM(),Bk(),Jb(),XA(),YA(),Lk(),YN(eV(e)),Am(e.gitCredential),ZM({fs:e.fs}),CN(),mv(),hv(),gv(`xclip`),gv(`xsel`),SN(),rC(),Gg(),Kg(),xA(e.fs),ct(),BA(),qg({getParentJid:e.getParentJid}),nx(),oM({processManager:e.processManager}),BL({processManager:e.processManager}),rk({processManager:e.processManager}),tk({processManager:e.processManager,scriptCatalog:e.scriptCatalog}),...Yg(),Kk(),kk(),dR(),$E(),iS(),DR({processManager:e.processManager}),bv({processManager:e.processManager,browser:e.browserAPI,sudoBroker:e.sudoCommand?.broker}),hS(),sv({registry:e.cherryRuntimeRegistry}),jy(),Ly({fs:e.fs}),Ry({fs:e.fs}),mF(e.sudoCommand),CB({getParentJid:e.getParentJid,syncScriptCommands:e.syncScriptCommands}),Zz(),AP()];return e.fs&&(Nj(),t.push(...Kn.map(t=>pE(t,e.browserAPI,e.fs,{isScoop:e.isScoop})))),t}let aV=null;function oV(e){aV=e}function sV(e){aV?.(e)}var cV=Bt();const lV={user:`user`,home:hp},uV=new Set([`root`,`nobody`,`nogroup`]),dV=/^[A-Za-z_][A-Za-z0-9_.-]*$/;function fV(e){return{user:dV.test(e.user)&&!uV.has(e.user)?e.user:lV.user,home:e.home.startsWith(`/`)&&!/[:\n]/.test(e.home)?e.home:lV.home}}function pV(e,t){let{user:n,home:r}=fV(t);if(e===`/etc/passwd`)return[`root:x:0:0:root:/root:/bin/bash`,`${n}:x:1000:1000:SLICC user:${r}:/bin/bash`,`nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin`,``].join(`
3328
3328
  `);if(e===`/etc/group`)return[`root:x:0:`,`${n}:x:1000:`,`nogroup:x:65534:`,``].join(`
3329
3329
  `)}function mV(e,t=lV){let n=pV(e,t);return n===void 0?void 0:new TextEncoder().encode(n)}function hV(e){return e===`/etc`?[`group`,`passwd`]:[]}function gV(e){return e?.code===`ENOENT`}const _V=Reflect.get(nt,`DefenseInDepthBox`);function vV(e){return(typeof e==`string`?e:e?.encoding)??`utf8`}function yV(e,t){if(typeof e!=`string`)return e;let n=vV(t);if(n===`binary`||n===`latin1`){let t=be(e);if(t)return t}return cV.Buffer.from(e,n)}function bV(e){return e===`/bin`?`/usr/bin`:e.startsWith(`/bin/`)?`/usr${e}`:e}function xV(e){let t=/^[A-Za-z0-9._+-]+$/.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`;return new TextEncoder().encode(`#!/bin/sh\n# SLICC command\nexec ${t} "$@"\n`)}function SV(e,t){let n=hV(e).filter(e=>!t.includes(e));return n.length?[...t,...n].sort():t}function CV(e,t){let n=hV(e).filter(e=>!t.some(t=>t.name===e));if(!n.length)return t;let r=n.map(e=>({name:e,isFile:!0,isDirectory:!1,isSymbolicLink:!1}));return[...t,...r].sort((e,t)=>e.name.localeCompare(t.name))}var wV=class{vfs;registeredCommandsFn=null;identityFn=null;listingStats=new Map;listingStatsMax;listingStatsTtlMs;constructor(e,t){this.vfs=e,this.listingStatsMax=Math.max(1,t?.listingStatsMax??2e4),this.listingStatsTtlMs=t?.listingStatsTtlMs??1e3,this.updateMetadataBatch=this.updateMetadataBatch.bind(this),this.symlinkBatch=this.symlinkBatch.bind(this)}get listingStatsSize(){return this.listingStats.size}primeListingStats(e,t){let n=Date.now();if(t.length>this.listingStatsMax){this.listingStats.clear();return}this.sweepExpiredListingStats(n),this.listingStats.size+t.length>this.listingStatsMax&&this.listingStats.clear();let r=e===`/`?`/`:`${e}/`;for(let e of t){let t=Ve(e),i=`${r}${e.name}`;this.listingStats.delete(i),t&&this.listingStats.set(i,{stats:t,at:n})}}sweepExpiredListingStats(e){for(let[t,n]of this.listingStats){if(e-n.at<=this.listingStatsTtlMs)break;this.listingStats.delete(t)}}primedStats(e){let t=this.listingStats.get(e);if(t){if(Date.now()-t.at>this.listingStatsTtlMs){this.listingStats.delete(e);return}return t.stats}}dropListingStats(){this.listingStats.clear()}setRegisteredCommandsFn(e){this.registeredCommandsFn=e}setIdentityFn(e){this.identityFn=e}identityFile(e){return mV(e,this.identityFn?.()??lV)}isVirtualBinCommand(e){return e.length>0&&!e.includes(`/`)&&this.getVirtualBinCommands().includes(e)}getVirtualBinCommands(){return this.registeredCommandsFn?.()??[]}virtualUsrStat(e){let t=bV(e);if(t===`/usr`||t===`/usr/bin`)return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date(0)};if(t.startsWith(`/usr/bin/`)){let e=t.slice(9);if(this.isVirtualBinCommand(e))return{isFile:!0,isDirectory:!1,isSymbolicLink:!1,mode:493,size:xV(e).length,mtime:new Date(0)}}return null}canWrite(e){let t=this.vfs;return typeof t.canWrite!=`function`||t.canWrite(e)}listMountPoints(){let e=this.vfs;return typeof e.listMountPoints==`function`?e.listMountPoints():[]}trusted(e){let t=_V?.runTrustedAsync;return t?t(e):Promise.resolve().then(e)}async readFile(e,t){return this.trusted(async()=>{let n=b(e),r=await this.readRaw(n),i=vV(t),a=cV.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString(i);return i!==`hex`&&i!==`base64`&&m(a,r),a})}async readFileBuffer(e){return this.trusted(()=>this.readRaw(b(e)))}async readRaw(e){let t=bV(e);if(t.startsWith(`/usr/bin/`)&&this.isVirtualBinCommand(t.slice(9)))return xV(t.slice(9));let n;try{n=await this.vfs.readFile(e,{encoding:`binary`})}catch(t){let n=this.identityFile(e);if(n&&gV(t))return n;throw t}return n instanceof Uint8Array?n:new TextEncoder().encode(n)}identityStat(e,t){let n=this.identityFile(e);if(!(!n||!gV(t)))return{isFile:!0,isDirectory:!1,isSymbolicLink:!1,mode:420,size:n.length,mtime:new Date(0)}}async readFileBytes(e){let t=await this.readFileBuffer(e);return cV.Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString(`latin1`)}async getNativeFile(e){return this.trusted(()=>this.vfs.getNativeFile(b(e)))}async readFileRange(e,t,n){return this.trusted(()=>this.vfs.readFileRange(b(e),t,n))}async writeFile(e,t,n){return this.dropListingStats(),this.trusted(async()=>{let r=b(e);await this.vfs.writeFile(r,yV(t,n))})}async appendFile(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.appendFile(b(e),yV(t,n)))}async exists(e){return this.trusted(async()=>{let t=b(e);return this.virtualUsrStat(t)?!0:await this.vfs.exists(t)||this.identityFile(t)!==void 0})}async stat(e){return this.trusted(async()=>{let t=b(e);try{return await this.statVfs(t)}catch(e){let n=this.identityStat(t,e);if(n)return n;throw e}})}async statVfs(e){let t=this.virtualUsrStat(e);if(t)return t;let n=this.vfs.statSync(e);if(n)return{isFile:n.type===`file`,isDirectory:n.type===`directory`,isSymbolicLink:!!n.isSymlink,mode:n.mode??(n.type===`directory`?493:420),size:n.size,mtime:new Date(n.mtime),identity:n.identity,dev:n.dev,ino:n.identity===void 0?void 0:n.ino};let r=this.primedStats(e)??await this.vfs.stat(e);return{isFile:r.type===`file`,isDirectory:r.type===`directory`,isSymbolicLink:!!r.isSymlink,mode:r.mode??(r.type===`directory`?493:420),size:r.size,mtime:new Date(r.mtime),identity:r.identity,dev:r.dev,ino:r.identity===void 0?void 0:r.ino}}async lstat(e){return this.trusted(async()=>{let t=b(e);try{return await this.lstatVfs(t)}catch(e){let n=this.identityStat(t,e);if(n)return n;throw e}})}async lstatVfs(e){let t=this.virtualUsrStat(e);if(t)return t;let n=this.vfs.lstatSync(e);if(n)return{isFile:n.type===`file`,isDirectory:n.type===`directory`,isSymbolicLink:n.type===`symlink`,mode:n.mode??(n.type===`directory`?493:n.type===`symlink`?511:420),size:n.size,mtime:new Date(n.mtime),identity:n.identity,dev:n.dev,ino:n.identity===void 0?void 0:n.ino};let r=this.primedStats(e)??await this.vfs.lstat(e);return{isFile:r.type===`file`,isDirectory:r.type===`directory`,isSymbolicLink:r.type===`symlink`,mode:r.mode??(r.type===`directory`?493:r.type===`symlink`?511:420),size:r.size,mtime:new Date(r.mtime),identity:r.identity,dev:r.dev,ino:r.identity===void 0?void 0:r.ino}}async mkdir(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.mkdir(b(e),t)})}async readdir(e){return this.trusted(async()=>{let t=b(e);if(t===`/usr`)return[`bin`];if(bV(t)===`/usr/bin`)return this.getVirtualBinCommands().slice().sort();let n=this.vfs.readDirSync(t);if(n!==null)return SV(t,n.map(e=>e.name));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),SV(t,r.map(e=>e.name))})}async readdirWithFileTypes(e){return this.trusted(async()=>{let t=b(e);if(t===`/usr`)return[{name:`bin`,isFile:!1,isDirectory:!0,isSymbolicLink:!1}];if(bV(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 CV(t,this.mapFastEntriesToDirents(n));let r=await this.vfs.readDir(t,{includeStats:!0});return this.primeListingStats(t,r),CV(t,this.mapAsyncEntriesToDirents(r))})}mapFastEntriesToDirents(e){return e.map(e=>this.entryToDirent(e))}mapAsyncEntriesToDirents(e){return e.map(e=>this.entryToDirent(e))}entryToDirent(e){return e.type===`symlink`?{name:e.name,isFile:!1,isDirectory:!1,isSymbolicLink:!0}:{name:e.name,isFile:e.type===`file`,isDirectory:e.type===`directory`,isSymbolicLink:!1}}async rm(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.rm(b(e),t)})}async cp(e,t,n){return this.dropListingStats(),this.trusted(async()=>{let r=b(e),i=b(t),a;try{a=await this.vfs.stat(r)}catch(e){let t=this.identityFile(r);if(!t||!gV(e))throw e;await this.vfs.writeFile(i,t);return}if(a.type===`directory`){if(!n?.recursive)throw new He(`EISDIR`,`is a directory`,r);await this.cpDir(r,i)}else await this.vfs.copyFile(r,i)})}async cpDir(e,t){await this.vfs.mkdir(t,{recursive:!0});let n=await this.vfs.readDir(e);for(let r of n){let n=x(e,r.name),i=x(t,r.name);r.type===`directory`?await this.cpDir(n,i):await this.vfs.copyFile(n,i)}let r=new Set(n.map(e=>e.name));for(let n of hV(e)){let i=r.has(n)?void 0:this.identityFile(x(e,n));i&&await this.vfs.writeFile(x(t,n),i)}}async mv(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.rename(b(e),b(t))})}async rename(e,t){return this.mv(e,t)}resolvePath(e,t){return t.startsWith(`/`)?b(t):b(x(e,t))}getAllPaths(){return[]}async chmod(e,t){return this.dropListingStats(),this.trusted(()=>this.vfs.chmod(b(e),t))}async updateMetadataBatch(e){return this.dropListingStats(),this.trusted(()=>this.vfs.updateMetadataBatch(e.map(e=>({...e,path:b(e.path)}))))}async symlinkBatch(e){return this.dropListingStats(),this.trusted(()=>this.vfs.symlinkBatch(e.map(e=>({target:e.target,path:b(e.path)}))))}async symlink(e,t){return this.dropListingStats(),this.trusted(async()=>{await this.vfs.symlink(e,b(t))})}async link(e,t){throw Error(`Hard links not supported in VirtualFS`)}async readlink(e){return this.trusted(async()=>this.vfs.readlink(b(e)))}async realpath(e){return this.trusted(async()=>this.vfs.realpath(b(e)))}async utimes(e,t,n){return this.dropListingStats(),this.trusted(()=>this.vfs.utimes(b(e),t,n))}invalidatePaths(e){this.dropListingStats();let t=this.vfs;t.invalidatePaths&&t.invalidatePaths(e)}async forgetSidecarConsistency(){await this.vfs.forgetSidecarConsistency?.()}};function TV(e){return e&&typeof e.getWatcher==`function`?e.getWatcher?.()??null:e&&typeof e.getUnderlyingFS==`function`?TV(e.getUnderlyingFS?.()):null}async function EV(e){let t=ye(`github`);if(t){if(e?.force){await t.onSilentRenew?.();return}await t.getValidAccessToken?.()}}function DV(){let e=ye(`github`);if(!e)return xm;let t=typeof localStorage>`u`?[]:l(localStorage).github;return[...e.oauthTokenDomains??xm,...t??[]]}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,[im]:r,[Mt]:i,[Pt]:a,...o}=e;return o}function NV(e){let t=new AbortController,n=e.filter(e=>e!==void 0),r=()=>t.abort();for(let e of n)e.aborted?t.abort():e.addEventListener(`abort`,r,{once:!0});return{signal:t.signal,release(){for(let e of n)e.removeEventListener(`abort`,r)}}}var PV=class e{options;bash;vfsAdapter;gitCommands;mountCommands;lastEnv;cwd;umask=18;builtinCommandNames;staticBuiltinNames;allowedCommands;scriptCatalog;initialJshSync=null;ownsScriptCatalog;registeredJshCommands=new Map;registeredWorkflowCommands=new Set;registeredWasmCommands=new Set;jshSyncInflight=null;jshSyncDirty=!1;pendingCommandGrants=[];pendingSudoBypasses=new Map;pendingEnvWrites=new Map;activeShellPid;progress;activeRunSignal;commandAbort=new AbortController;scriptRun=null;scriptRunsActive=0;registryNames=new Set;outputTees=new Map;nextOutputTeeId=0;resolveJshProcessConfig=e=>this.buildJshProcessConfig(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:hp,PATH:cr,USER:`user`,SHELL:`/bin/bash`,TMPDIR:`/tmp`,PWD:t,...e.env}}buildSupplementalCommands(e,t,n){return iV({onMediaPreview:async e=>this.renderMediaPreview(e),getJshCommands:()=>this.getJshCommandNames(),getWorkflowCommands:()=>this.getWorkflowCommandNames(),syncScriptCommands:()=>this.syncJshCommands(),getStaticBuiltins:()=>[...this.staticBuiltinNames],getScriptRegisteredNames:()=>[...this.registeredJshCommands.keys(),...this.registeredWorkflowCommands,...this.registeredWasmCommands],fs:e.fs,fetch:t,streamFetch:n,scriptCatalog:this.scriptCatalog,browserAPI:e.browserAPI,webhook:e.webhook,crontask:e.crontask,getParentJid:e.getParentJid,isScoop:e.isScoop,buildProcessConfig:this.resolveJshProcessConfig,terminal:e.terminal,gateNativeCommand:this.gateNativeCommand,processManager:e.processManager,sudoCommand:e.sudo?{broker:e.sudo.broker,persistGrant:async e=>{this.pendingCommandGrants.push(e)},suppressNextGate:e=>this.registerSudoBypass(e)}:void 0,setEnv:(e,t)=>{this.pendingEnvWrites.set(e,t),this.lastEnv[e]=t},unsetEnv:e=>{this.pendingEnvWrites.set(e,null),delete this.lastEnv[e]},gitCredential:{githubToken:(e,t)=>this.gitCommands.githubCredential(e,t),githubDomains:DV},gitIdentity:()=>this.gitCommands.identity(),mcpConnectionManager:e.mcpConnectionManager})}constructor(t){this.options=t,this.vfsAdapter=new wV(t.fs),this.progress=new yp({scrubLabel:t.scrubProgressLabel}),this.allowedCommands=e.buildAllowedCommandSet(t);let n=t.cwd??`/`,r=e.buildInitialEnv(t,n);this.gitCommands=new sp({fs:t.fs,authorName:r.GIT_AUTHOR_NAME??`User`,authorEmail:r.GIT_AUTHOR_EMAIL??`user@example.com`,ensureFreshGithubToken:EV}),this.mountCommands=new Ps({fs:t.fs,isScoop:t.isScoop,acquireLocalMountViaToolUI:Fm});let i=t.jshDiscoveryFs??t.fs,a=t.bshDiscoveryFs??t.fs,o=TV(i)??TV(a);this.scriptCatalog=t.scriptCatalog??new Si({jshFs:i,bshFs:a,watcher:o}),this.ownsScriptCatalog=!t.scriptCatalog,o&&o.watch(`/`,e=>e.endsWith(`.jsh`)||e.endsWith(`.workflow.js`)||or(e),()=>{this.syncJshCommands().catch(()=>void 0)});let s=this.createGitCustomCommand(),c=g({progress:wp(this.progress)}),l=_({progress:wp(this.progress)}),u=this.buildSupplementalCommands(t,c,l),d=[s,this.createMountCustomCommand(),this.createUmountCustomCommand(),kh(t.fs),Eg(t.fs,c,t.browserAPI),...u].filter(e=>this.isCommandAllowed(e.name)),f=[...it(),...rt()],p=this.allowedCommands?f.filter(e=>this.isCommandAllowed(e)):void 0;if(this.bash=new at({fs:this.vfsAdapter,cwd:n,env:{},fetch:c,commands:p,customCommands:d,sleep:Gp(this.progress,{isAborted:()=>this.activeRunSignal?.aborted??!1}),executionLimitProfile:t.executionLimitProfile,executionLimits:lp(t.isScoop?.()??!1,t.executionLimits)}),this.bash.registerTransformPlugin(Um),this.allowedCommands!==null){let e=this.bash;for(let t of rt())this.isCommandAllowed(t)||e.commands.delete(t)}{let e=this.bash;for(let[t,n]of e.commands)e.commands.set(t,this.wrapCommandForDispatch(n));this.registryNames=new Set(e.commands.keys())}let m=d.map(e=>e.name),h=p??[...it(),...rt()];this.builtinCommandNames=new Set([...h,...m]),this.staticBuiltinNames=new Set(this.builtinCommandNames),this.vfsAdapter.setRegisteredCommandsFn(()=>[...this.builtinCommandNames]),this.vfsAdapter.setIdentityFn(()=>({user:this.lastEnv.USER??`user`,home:this.lastEnv.HOME??`/home/user`})),this.lastEnv={...r},this.cwd=n,this.startInitialJshSync()}getBash(){return this.bash}getCwd(){return this.cwd}getScriptCatalog(){return this.scriptCatalog}getEnv(){return{...this.lastEnv}}setMaskedEnvVar(e,t){this.pendingEnvWrites.set(e,t),this.lastEnv[e]=t}applySessionOverrides(e){e.cwd!==void 0&&(this.cwd=e.cwd,this.lastEnv.PWD=e.cwd),e.env&&Object.assign(this.lastEnv,e.env)}async getJshCommandNames(){return[...(await this.getFilteredJshCommands()).keys()]}async syncJshCommands(){return this.jshSyncInflight===null?(this.jshSyncInflight=this.doSyncJshCommands(),this.jshSyncInflight):(this.jshSyncDirty=!0,this.jshSyncInflight)}cancelActiveCommand(){this.commandAbort.abort(),this.commandAbort=new AbortController}async executeCommand(e,t,n,r=``,i){let a=this.activeShellPid;n!==void 0&&(this.activeShellPid=n);let o=i?.onOutput?`tee-${this.nextOutputTeeId+=1}`:void 0;o&&i?.onOutput&&this.outputTees.set(o,i.onOutput);try{let a=await this.runCommand(e,t,n,r,o,i?.capturePipeStatus);return{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode,...a.pipeStatus===void 0?{}:{pipeStatus:a.pipeStatus}}}finally{this.activeShellPid=a,o&&this.outputTees.delete(o)}}async executeScriptFile(e,t=[]){return ni(e,t,{fs:this.vfsAdapter,cwd:this.cwd,env:new Map(Object.entries(this.lastEnv)),stdin:``,exec:(e,t)=>this.bash.exec(e,{env:t?.env??this.lastEnv,cwd:t?.cwd??this.cwd,umask:this.umask,...t?.env===void 0?{}:{replaceEnv:!0}})},this.buildJshProcessConfig())}dispose(){this.ownsScriptCatalog&&this.scriptCatalog.dispose()}async renderMediaPreview(e){throw Error(`terminal preview is unavailable in headless mode`)}currentScanRoots(){return lr(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 gp(e);this.lastEnv.HOME=t,this.options.env?.USER||(this.lastEnv.USER=_p(t));let n=`${t.replace(/\/+$/,``)}/.profile`;if(!await e.exists(n).catch(()=>!1))return;let r=await this.bash.exec(`. "$HOME/.profile"`,{env:this.lastEnv,cwd:this.cwd,umask:this.umask});if(typeof r.umask==`number`&&(this.umask=r.umask),r.env){let{PWD:e,...t}=r.env;this.lastEnv={...t,PWD:this.lastEnv.PWD??this.cwd}}}catch(e){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){if(sV(e.trim().split(/\s+/)[0]||`unknown`),v(),await this.waitForInitialJshSync(t),await this.usesGnuBash())return this.runOnGnuBash(e,t,n,r,i,a);let o=om(e),s={env:{...this.lastEnv,...n===void 0?{}:{[kV]:String(n)},...i===void 0?{}:{[AV]:i},...o?{[im]:o}:{}},cwd:this.cwd,umask:this.umask,signal:t,...r===``?{}:{stdin:r,stdinKind:`bytes`}},c=this.lastEnv.PATH,l=NV([t,this.commandAbort.signal]);s.signal=l.signal,this.activeRunSignal=l.signal;let u=this.beginScriptRun(e),d;try{d=await this.bash.exec(Ft(e,a),s)}finally{l.release(),this.activeRunSignal===l.signal&&(this.activeRunSignal=void 0),this.endScriptRun(u)}if(await this.flushPendingCommandGrants(),d=At(d,a),typeof d.umask==`number`&&(this.umask=d.umask),d.env&&(this.lastEnv=MV(d.env)),d.env&&this.lastEnv.PATH!==c&&await this.syncJshCommands().catch(()=>void 0),this.applyPendingEnvWrites(),d.env?.PWD&&(this.cwd=d.env.PWD),d.exitCode===127){let t=await this.tryJshFallback(e,n);if(t)return this.syncJshCommands().catch(()=>void 0),t}if(d.exitCode!==0&&d.stderr.includes(`Permission denied`)){let{withShebangExecHint:e}=await import(`./shebang-exec-hint-CSwess-H.js`).then(e=>e.n);return Nt(await e(d,this.cwd,this.vfsAdapter),d.pipeStatus)}return d}applyPendingEnvWrites(){for(let[e,t]of this.pendingEnvWrites)t===null?delete this.lastEnv[e]:this.lastEnv[e]=t;this.pendingEnvWrites.clear()}async usesGnuBash(){return!this.options.gnuBash||this.lastEnv.SLICC_SHELL===`just-bash`||typeof SharedArrayBuffer!=`function`?!1:(await this.scriptCatalog.getWasmCommands()).has(`bash`)}async runOnGnuBash(e,t,n,r,i,a){let{runWasmCommand:o,withoutRealmDefaults:s}=await import(`./run-BI9A9cl8.js`),c=om(e),l={...this.lastEnv,...n===void 0?{}:{[kV]:String(n)},...c?{[im]:c}:{}},u=i===void 0?void 0:this.outputTees.get(i),d=await mp(e,{env:l,run:(e,i,a)=>o(e,this.wasmContext(i,t,r),{processConfig:this.buildJshProcessConfig(n),gate:this.gateNativeCommand,onOutput:u,fds:a,commands:()=>this.scriptCatalog.getWasmCommands(),gitIdentity:()=>this.gitCommands.identity()})}),f=this.lastEnv.PATH;return d.state&&(this.cwd=d.state.cwd,this.lastEnv=fp(s(d.state.env,l),[kV,im,AV])),this.lastEnv.PATH!==f&&await this.syncJshCommands().catch(()=>void 0),await this.flushPendingCommandGrants(),this.applyPendingEnvWrites(),{stdout:d.stdout,stderr:d.stderr,exitCode:d.exitCode,env:{...this.lastEnv},...a&&d.state?{pipeStatus:d.state.pipeStatus}:{}}}wasmContext(e,t,n){return{fs:this.vfsAdapter,cwd:this.cwd,env:new Map(Object.entries(e)),exportedEnv:e,stdin:n,signal:t,exec:(e,t)=>this.bash.exec(e,{...t,umask:this.umask})}}gateNativeCommand=async(e,t,n)=>{if(this.allowedCommands!==null&&!this.isCommandAllowed(e))return{stderr:`bash: ${e}: command not found\n`,exitCode:127};if(!this.isTransparentGatingEnabled()||bm.has(e))return null;let r=await this.gateCommandDispatch(e,t,n[im]);return r?{stderr:r.stderr,exitCode:r.exitCode}:null};isTransparentGatingEnabled(){let e=this.options.sudo;return!!e&&e.transparentGating!==!1}wrapCommandForDispatch(e){let t=this.wrapCommandForSudo(e),n=e.name===`timeout`?Yp(t,this.progress):Zp(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 $p(()=>n.execute(e,t),t.signal);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=Bp(this.bash.transform(e).ast,this.registryNames)}catch{t={totalSteps:null}}return this.scriptRun=new Hp(t,this.progress,Vp(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()||bm.has(e.name))return e;let t=(t,n)=>this.gateCommandDispatch(e.name,t,n);return{...e,async execute(n,r){return await t(n,r.env?.get(im))||e.execute(n,r)}}}async gateCommandDispatch(e,t,n){let r=this.options.sudo;if(!r)return null;let i=tm(e,t);if(this.consumeSudoBypass(i))return null;let a=r.getPolicy();if(!a)return null;let o=await rm(i,{policy:a,broker:r.broker,persistGrant:async e=>{this.pendingCommandGrants.push(e)},defaultDisposition:r.defaultDisposition,...n?{reason:n}:{}});return o.allowed?null:{stdout:``,stderr:`${o.message}\n`,exitCode:o.exitCode??77}}registerSudoBypass(e){let t=e.trim();t&&this.pendingSudoBypasses.set(t,(this.pendingSudoBypasses.get(t)??0)+1)}consumeSudoBypass(e){let t=this.pendingSudoBypasses.get(e);return t?(t===1?this.pendingSudoBypasses.delete(e):this.pendingSudoBypasses.set(e,t-1),!0):!1}async flushPendingCommandGrants(){if(this.pendingCommandGrants.length===0)return;let e=this.pendingCommandGrants;this.pendingCommandGrants=[];for(let t of e)try{await this.persistCommandGrant(t)}catch{}}async persistCommandGrant(e){let t=this.options.sudo?.persistCommandGrant;if(t){await t(e);return}let n=ut(e);if(!n)return;let r=`${ft}/granted`,i=this.options.fs,a=``;try{await i.exists(r)&&(a=await i.readFile(r))}catch(e){if(!(e instanceof He&&e.code===`ENOENT`))throw e}let o=a&&!a.endsWith(`
3330
3330
  `)?`${a}\n`:a;await i.writeFile(r,`${o}NOPASSWD Cmnd ${n}\n`)}isCommandAllowed(e){return this.allowedCommands===null||this.allowedCommands.has(bm.get(e)??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(),r=await this.scriptCatalog.getWasmCommands();for(let[e,n]of t)this.isCommandAllowed(e)&&(this.builtinCommandNames.has(e)&&!this.registeredJshCommands.has(e)||this.registeredJshCommands.get(e)!==n&&(this.bash.registerCommand(this.wrapCommandForDispatch(this.makeScriptCommand(e))),this.registeredJshCommands.set(e,n),this.builtinCommandNames.add(e)));let i=[...r.keys()].filter(e=>this.isCommandAllowed(e));this.registerLateScriptNames(i,this.registeredWasmCommands),this.registerLateScriptNames(n.keys(),this.registeredWorkflowCommands)}finally{this.jshSyncInflight=null,this.jshSyncDirty&&(this.jshSyncDirty=!1,this.syncJshCommands().catch(()=>void 0))}}registerLateScriptNames(e,t){let n=[this.registeredJshCommands,this.registeredWasmCommands,this.registeredWorkflowCommands];for(let r of e)if(!t.has(r)){if(n.some(e=>e!==t&&e.has(r))){t.add(r);continue}this.builtinCommandNames.has(r)||(this.bash.registerCommand(this.wrapCommandForDispatch(this.makeScriptCommand(r))),t.add(r),this.builtinCommandNames.add(r))}}makeScriptCommand(e){let t=this.scriptCatalog,n=this.options.jshDiscoveryFs??this.options.fs,r=e,i=async(e,i)=>{let a=i.exec??((e,t)=>this.bash.exec(e,{env:t?.env??Object.fromEntries(i.env),cwd:t?.cwd??i.cwd,args:t?.args,...t?.env===void 0?{}:{replaceEnv:!0}})),o=(await t.getJshCommands(this.currentScanRoots())).get(r);if(o){let t;try{let e=await n.readFile(o,{encoding:`utf-8`});t=typeof e==`string`?e:new TextDecoder().decode(e)}catch{return{stdout:``,stderr:`jsh: cannot read script '${o}'\n`,exitCode:127}}return ai(t,[`node`,o,...e],{fs:i.fs,cwd:i.cwd,env:i.env,stdin:i.stdin,exec:a},this.buildJshProcessConfig(jV(i.env)))}let s=(await t.getWasmCommands()).get(r);if(s){let{runWasmCommand:n}=await import(`./run-BI9A9cl8.js`);return n(s.script?[r,...e]:[`--argv0`,s.argv0,`--module`,s.wasm,s.glue,...s.args??[],...e],i,{processConfig:this.buildJshProcessConfig(jV(i.env)),gate:this.gateNativeCommand,defaults:s.env,commands:()=>t.getWasmCommands(),gitIdentity:()=>this.gitCommands.identity()})}let c=(await t.getWorkflowCommands()).get(r);if(c){let t=xi(c.path,e);return a(t[0],{args:t.slice(1),cwd:i.cwd})}return{stdout:``,stderr:`${r}: command no longer exists\n`,exitCode:127}};return{name:e,trusted:!0,async execute(e,t){try{return await i(e,t)}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`${r}: ${t}\n`,exitCode:1}}}}}createGitCustomCommand(){let e=this.gitCommands;return S(`git`,async(t,n)=>{let r=n.cwd,i=await e.execute(t,r,n.env,P(n.stdin));return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}})}createMountCustomCommand(){let e=this.mountCommands;return S(`mount`,async(t,n)=>{let r=n.cwd,i=await e.execute(t,r,n.env);return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}})}createUmountCustomCommand(){let e=this.mountCommands;return S(`umount`,async(t,n)=>{let r=n.cwd,i=await e.executeUmount(t,r);return{stdout:i.stdout,stderr:i.stderr,exitCode:i.exitCode}})}async getFilteredJshCommands(){let e=await this.scriptCatalog.getJshCommands(this.currentScanRoots()),t=new Map;for(let[n,r]of e)this.builtinCommandNames.has(n)||this.isCommandAllowed(n)&&t.set(n,r);return t}async getFilteredWorkflowCommands(){let e=await this.scriptCatalog.getWorkflowCommands(),t=new Map;for(let[n,r]of e)this.isCommandAllowed(n)&&t.set(n,r);return t}async getWorkflowCommandNames(){return[...(await this.getFilteredWorkflowCommands()).keys()]}async tryJshFallback(e,t){let n=e.trim(),r=n.indexOf(` `),i=r>=0?n.slice(0,r):n,a=r>=0?n.slice(r+1).trim():``,o=(await this.getFilteredJshCommands()).get(i);if(!o)return null;let s=a?vp(a):[],c=this.options.jshDiscoveryFs??this.options.fs,l;try{let e=await c.readFile(o,{encoding:`utf-8`});l=typeof e==`string`?e:new TextDecoder().decode(e)}catch{return{stdout:``,stderr:`jsh: cannot read script '${o}'\n`,exitCode:127,env:this.lastEnv}}let u=[`node`,o,...s],d=await ai(l,u,{fs:this.vfsAdapter,cwd:this.cwd,env:new Map(Object.entries(this.lastEnv)),stdin:``,exec:(e,t)=>this.bash.exec(e,{env:t?.env??this.lastEnv,cwd:t?.cwd??this.cwd,umask:this.umask,...t?.env===void 0?{}:{replaceEnv:!0}})},this.buildJshProcessConfig(t));return{stdout:d.stdout,stderr:d.stderr,exitCode:d.exitCode,env:this.lastEnv}}buildJshProcessConfig(e){if(!(!this.options.processManager||!this.options.processOwner))return{processManager:this.options.processManager,owner:this.options.processOwner,getParentPid:()=>e??this.activeShellPid??this.options.getCurrentShellPid?.()}}};export{Ma as _,pB as a,Sa as b,Ts as c,ms as d,fs as f,Oa as g,Lo as h,lB as i,vs as l,Ko as m,wV as n,sB as o,qo as p,oV as r,hp as s,PV as t,hs as u,ja as v,jo as y};
@@ -1 +1 @@
1
- import{CHAT_SURFACE_ID as e}from"./wc-sprinkles-AJYh-VqI.js";var t=`focus`,n={type:`leaf`,surfaceId:`chat`};function r(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}}}var i={focus:{name:`focus`,tree:r({left:n},{left:3,middle:1})}};function a(e){return i[e]??null}function o(n,r){switch(r.kind){case`set`:n.applyLayout(r.tree);break;case`reset`:{let e=a(t);e&&n.applyLayout(e.tree);break}case`chat`:n.moveSurfaceToZone(e,r.zone);break;case`open`:n.placeSurface(r.zone,r.surfaceId);break;case`close`:n.removeSurface(r.surfaceId);break;case`move`:n.moveSurfaceToZone(r.surfaceId,r.zone);break;case`size`:n.setSurfaceSize(r.surfaceId,r.size)}}export{o as applyLayout};
1
+ import{CHAT_SURFACE_ID as e}from"./wc-sprinkles-C_IFSUWu.js";var t=`focus`,n={type:`leaf`,surfaceId:`chat`};function r(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}}}var i={focus:{name:`focus`,tree:r({left:n},{left:3,middle:1})}};function a(e){return i[e]??null}function o(n,r){switch(r.kind){case`set`:n.applyLayout(r.tree);break;case`reset`:{let e=a(t);e&&n.applyLayout(e.tree);break}case`chat`:n.moveSurfaceToZone(e,r.zone);break;case`open`:n.placeSurface(r.zone,r.surfaceId);break;case`close`:n.removeSurface(r.surfaceId);break;case`move`:n.moveSurfaceToZone(r.surfaceId,r.zone);break;case`size`:n.setSurfaceSize(r.surfaceId,r.size)}}export{o as applyLayout};