sliccy 6.226.1 → 6.226.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 (165) hide show
  1. package/dist/node-server/sudo/dialog-backends.d.ts +10 -5
  2. package/dist/node-server/sudo/dialog-backends.js +47 -10
  3. package/dist/node-server/sudo/electron-backend.d.ts +4 -3
  4. package/dist/node-server/sudo/electron-backend.js +6 -3
  5. package/dist/node-server/sudo/endpoint.d.ts +4 -3
  6. package/dist/node-server/sudo/endpoint.js +6 -4
  7. package/dist/node-server/sudo/select.d.ts +1 -1
  8. package/dist/node-server/sudo/select.js +1 -1
  9. package/dist/node-server/sudo/tty-backend.d.ts +4 -2
  10. package/dist/node-server/sudo/tty-backend.js +5 -2
  11. package/dist/node-server/sudo/types.d.ts +29 -1
  12. package/dist/node-server/sudo/types.js +8 -1
  13. package/dist/ui/.vite/manifest.json +182 -182
  14. package/dist/ui/assets/__vite-browser-external-ZetWQ5ax.js +1 -0
  15. package/dist/ui/assets/{account-store-BlJDP1-W.js → account-store-CckwuDB2.js} +1 -1
  16. package/dist/ui/assets/{account-store-Dup-dSte.js → account-store-DP_9wI9F.js} +1 -1
  17. package/dist/ui/assets/{adobe-BkQaujbn.js → adobe-BX6MOOVZ.js} +1 -1
  18. package/dist/ui/assets/{adobe-CQvTuyh_.js → adobe-CpN64YaE.js} +1 -1
  19. package/dist/ui/assets/{agent-panels-e39BAcGn.js → agent-panels-CGXjqFbQ.js} +1 -1
  20. package/dist/ui/assets/{almost-bash-shell-headless-DvTsKS1v.js → almost-bash-shell-headless-DANvPMM_.js} +33 -33
  21. package/dist/ui/assets/{apply-layout-COKznjFL.js → apply-layout-BqFOBUKs.js} +1 -1
  22. package/dist/ui/assets/{apps-BnILH4xd.js → apps-C4Y2CDb2.js} +1 -1
  23. package/dist/ui/assets/{azure-openai-DtOuOPJB.js → azure-openai-Djld28cS.js} +1 -1
  24. package/dist/ui/assets/{azure-openai-DSN7cshd.js → azure-openai-Wvaw8FEs.js} +1 -1
  25. package/dist/ui/assets/{backend-hostfs-KLShl7sQ.js → backend-hostfs-B383ob12.js} +1 -1
  26. package/dist/ui/assets/{cdp-Dxgj-kkt.js → cdp-B_M-UmZ-.js} +1 -1
  27. package/dist/ui/assets/{cerebras-DaTX2QuX.js → cerebras-CYnqzV28.js} +1 -1
  28. package/dist/ui/assets/{cerebras-uY6Xy8za.js → cerebras-CnYplQcE.js} +1 -1
  29. package/dist/ui/assets/{composer-speech-SCKDMr4i.js → composer-speech-F0aNDREI.js} +1 -1
  30. package/dist/ui/assets/{connect-surface-BzENdoiF.js → connect-surface-BnTWpdsP.js} +1 -1
  31. package/dist/ui/assets/{directed-approval-B_DRdwpJ.js → directed-approval-ClnG3YEs.js} +1 -1
  32. package/dist/ui/assets/{emscripten-vfs-hook-Dce5ZWJb.js → emscripten-vfs-hook-d03P2Jrb.js} +1 -1
  33. package/dist/ui/assets/{ensure-speech-assets-DUhEO7H0.js → ensure-speech-assets-BAwQVUZ-.js} +1 -1
  34. package/dist/ui/assets/{frozen-archive-writer-BGB_nYip.js → frozen-archive-writer-DlQ2pWzw.js} +1 -1
  35. package/dist/ui/assets/{fs-DKTyXngI.js → fs-B6V0zxAV.js} +2 -2
  36. package/dist/ui/assets/{fs-DwHLmdxe.js → fs-DFXgS-c1.js} +1 -1
  37. package/dist/ui/assets/{gelatiere-store-DQIudjLw.js → gelatiere-store-aggur0yp.js} +1 -1
  38. package/dist/ui/assets/{gelatiere-unit-CoeN1YRk.js → gelatiere-unit-is8dhW-d.js} +1 -1
  39. package/dist/ui/assets/{github-C_sejJLD.js → github-CWBn99Bd.js} +2 -2
  40. package/dist/ui/assets/{github-auth-CyLgcuwk.js → github-auth-yNHDwebn.js} +1 -1
  41. package/dist/ui/assets/{github-copilot-DSF4sN0A.js → github-copilot-BADuy5GH.js} +1 -1
  42. package/dist/ui/assets/{github-copilot-DNir8nPs.js → github-copilot-BOrHa5RN.js} +1 -1
  43. package/dist/ui/assets/{github-install-CypHkXWW.js → github-install-BIoofnjZ.js} +1 -1
  44. package/dist/ui/assets/{github-Chwcb38q.js → github-pVY7MyJd.js} +1 -1
  45. package/dist/ui/assets/{github-zip-DvrCoKij.js → github-zip-TmRPTM75.js} +1 -1
  46. package/dist/ui/assets/{hear-BYApgyRp.js → hear-JttBNQ7c.js} +1 -1
  47. package/dist/ui/assets/{help-BSRIYdTr.js → help-DvETwJex.js} +1 -1
  48. package/dist/ui/assets/{installer-DU0Ft-ta.js → installer-CmAHuSft.js} +1 -1
  49. package/dist/ui/assets/{ipk-mamba-BhzmAVqX.js → ipk-mamba-D1bLinsh.js} +1 -1
  50. package/dist/ui/assets/{js-realm-worker-CMoqILM7.js → js-realm-worker-CsvflECa.js} +2 -2
  51. package/dist/ui/assets/{jsh-executor-BSfT4Av-.js → jsh-executor-CEkiOk4d.js} +2 -2
  52. package/dist/ui/assets/{kernel-worker-jFET0gP4.js → kernel-worker-CSRynihq.js} +9 -9
  53. package/dist/ui/assets/{lick-ws-bridge-EXboAIWs.js → lick-ws-bridge-C_07Sgiv.js} +1 -1
  54. package/dist/ui/assets/{lick-ws-bridge-Bzqf-vDY.js → lick-ws-bridge-ZBncAqka.js} +1 -1
  55. package/dist/ui/assets/{live-session-curation-9JOZOk__.js → live-session-curation-lunfYQqv.js} +1 -1
  56. package/dist/ui/assets/{live-session-snapshot-lb3l3-2i.js → live-session-snapshot-BMzJEYH6.js} +1 -1
  57. package/dist/ui/assets/{local-llm-DeEO_kWk.js → local-llm-DYEdgnfp.js} +1 -1
  58. package/dist/ui/assets/{local-llm-DPdTCBrf.js → local-llm-FyJMIUux.js} +1 -1
  59. package/dist/ui/assets/{main-cherry-CbSGyKQc.js → main-cherry-BknGKE1w.js} +1 -1
  60. package/dist/ui/assets/{main-D4T6A3x0.js → main-mYxYChCJ.js} +3 -3
  61. package/dist/ui/assets/{memory-curation-seam-D86YzTcB.js → memory-curation-seam-ff-huuyf.js} +1 -1
  62. package/dist/ui/assets/{memory-health-CRaGX9nB.js → memory-health-hO_nQaAH.js} +1 -1
  63. package/dist/ui/assets/{memory-write-execute-DWf8irl0.js → memory-write-execute-CotJ6gZQ.js} +1 -1
  64. package/dist/ui/assets/{merge-folded-cost-into-frozen-Bu65Q9Cg.js → merge-folded-cost-into-frozen-85Z0pknu.js} +1 -1
  65. package/dist/ui/assets/{mount-D8OdNZ70.js → mount-BXI8X7dl.js} +1 -1
  66. package/dist/ui/assets/{mount-Dvq41z85.js → mount-dHmWGrgT.js} +3 -3
  67. package/dist/ui/assets/{new-session-pIOo08ug.js → new-session-CwPpsslH.js} +2 -2
  68. package/dist/ui/assets/{oauth-bootstrap-hI54waCl.js → oauth-bootstrap-DFH58dMK.js} +2 -2
  69. package/dist/ui/assets/{onboarding-orchestrator-C7IPNkaS.js → onboarding-orchestrator-IM_eYwPO.js} +1 -1
  70. package/dist/ui/assets/{openai-codex-Co8hzNYp.js → openai-codex-B5TF7s7X.js} +1 -1
  71. package/dist/ui/assets/{openai-codex-4RG71-r1.js → openai-codex-DOLy2I4o.js} +1 -1
  72. package/dist/ui/assets/{openrouter-BQpYDJi3.js → openrouter-CQSD-mOw.js} +1 -1
  73. package/dist/ui/assets/{openrouter-Czqj8XpT.js → openrouter-DQpeSY-A.js} +1 -1
  74. package/dist/ui/assets/{openrouter-free-BEKVrg00.js → openrouter-free-DB3Go5D-.js} +1 -1
  75. package/dist/ui/assets/{openrouter-free-ZF0WQe1F.js → openrouter-free-cjPrMokY.js} +1 -1
  76. package/dist/ui/assets/{openrouter-oauth-BDLDVcec.js → openrouter-oauth-B_Qr_P-V.js} +1 -1
  77. package/dist/ui/assets/{openrouter-oauth-Bvj7wwNp.js → openrouter-oauth-DQeQAIy-.js} +1 -1
  78. package/dist/ui/assets/{opfs-mount-CkEPMeKd.js → opfs-mount-tnswXF8V.js} +1 -1
  79. package/dist/ui/assets/{panel-rpc-handlers-BIaCpUWF.js → panel-rpc-handlers-DWiTg8Ql.js} +2 -2
  80. package/dist/ui/assets/{panelize-shell-ZDSWSUaz.js → panelize-shell-BKkiVZiC.js} +1 -1
  81. package/dist/ui/assets/{pi-edit-execution-Dxz6tqcr.js → pi-edit-execution-DoPTCkJU.js} +1 -1
  82. package/dist/ui/assets/{provider-C3R_g8Ig.js → provider-DHEg3RIC.js} +2 -2
  83. package/dist/ui/assets/{provider-8d5bGvbc.js → provider-Do8hIn0m.js} +1 -1
  84. package/dist/ui/assets/{provider-settings-DUOh4hPx.js → provider-settings-x2iD9c0h.js} +1 -1
  85. package/dist/ui/assets/provider-store-access-4-s6k7tf.js +1 -0
  86. package/dist/ui/assets/provider-store-access-DXOTVVCa.js +1 -0
  87. package/dist/ui/assets/{providers-CqM86e9A.js → providers-B8axP5LK.js} +2 -2
  88. package/dist/ui/assets/{providers-fZ3KX8Lg.js → providers-ChXzAurS.js} +1 -1
  89. package/dist/ui/assets/{py-realm-worker-BJhAN3Hi.js → py-realm-worker-D7ZPZyKh.js} +1 -1
  90. package/dist/ui/assets/{pyodide-BC3toCIx.js → pyodide-C89f2pno.js} +1 -1
  91. package/dist/ui/assets/{pyodide-65Z_RapY.js → pyodide-DdE1Qe05.js} +1 -1
  92. package/dist/ui/assets/{quick-llm-Do6-ghEG.js → quick-llm-DbTW7_qg.js} +1 -1
  93. package/dist/ui/assets/{realm-inprocess-BYC0jsGK.js → realm-inprocess-Ck6ydQwT.js} +2 -2
  94. package/dist/ui/assets/{realm-unhandled-rejections-DGcjCfBE.js → realm-unhandled-rejections-CeAkuLUL.js} +1 -1
  95. package/dist/ui/assets/{realm-unhandled-rejections-ZGmUnuk3.js → realm-unhandled-rejections-CnU72aPe.js} +1 -1
  96. package/dist/ui/assets/{recovery-screen-J3LoIlFr.js → recovery-screen-ty-N4sk6.js} +1 -1
  97. package/dist/ui/assets/{remote-terminal-view-_0YIhuqT.js → remote-terminal-view-CNpjHeSR.js} +2 -2
  98. package/dist/ui/assets/{require-guards-CdMtRPQA.js → require-guards-CMPvNDQg.js} +1 -1
  99. package/dist/ui/assets/{restore-DHQi2wzK.js → restore-CGbZluMQ.js} +1 -1
  100. package/dist/ui/assets/{run-uFO4egDg.js → run-B9eYT4Oj.js} +2 -2
  101. package/dist/ui/assets/{run-BhlaKL0o.js → run-BKqnD09g.js} +1 -1
  102. package/dist/ui/assets/{run-EPiuw1ru.js → run-Cka1zPhr.js} +1 -1
  103. package/dist/ui/assets/{run-BUv3t71i.js → run-DGl39wQp.js} +1 -1
  104. package/dist/ui/assets/{run-_oGn-1AP.js → run-DHBSR6nH.js} +1 -1
  105. package/dist/ui/assets/{run-CB-l85sr.js → run-DPEU0mPp.js} +2 -2
  106. package/dist/ui/assets/{session-command-memory-n0b0bNTG.js → session-command-memory-NaC_Sdn0.js} +2 -2
  107. package/dist/ui/assets/{session-jsonl-Dm2yw6F9.js → session-jsonl-CK1nnZwL.js} +1 -1
  108. package/dist/ui/assets/{session-jsonl-BNQAPUiL.js → session-jsonl-iSVMsOx7.js} +1 -1
  109. package/dist/ui/assets/{session-search-index-DW9ma2yj.js → session-search-index-MELCgtJ1.js} +1 -1
  110. package/dist/ui/assets/{setup-feature-flags-remote-D2waO-r4.js → setup-feature-flags-remote-DGeAaOhE.js} +1 -1
  111. package/dist/ui/assets/{setup-model-catalog-W9d0IwmJ.js → setup-model-catalog-B1uR2ova.js} +1 -1
  112. package/dist/ui/assets/{signed-fetch-CIdxcCyT.js → signed-fetch-bUBxSCEr.js} +1 -1
  113. package/dist/ui/assets/{silent-renew-backoff-CKXdzlDo.js → silent-renew-backoff-k-_ROUgc.js} +1 -1
  114. package/dist/ui/assets/slicc-version-DwS1sP4C.js +1 -0
  115. package/dist/ui/assets/{snapshot-KIIqV7oO.js → snapshot-DQ087sVE.js} +1 -1
  116. package/dist/ui/assets/{snapshot-features-BLo8PAIz.js → snapshot-features-DeJe8uji.js} +1 -1
  117. package/dist/ui/assets/{soundscape-DzqywR3L.js → soundscape-BnFzEyFw.js} +1 -1
  118. package/dist/ui/assets/{speak-Ck3_PA-W.js → speak-dfd9BW6L.js} +1 -1
  119. package/dist/ui/assets/{sprinkle-manager-BeKUo2tm.js → sprinkle-manager-yEepkH2c.js} +1 -1
  120. package/dist/ui/assets/{sprinkle-renderer-CRyiQKjI.js → sprinkle-renderer-k4VuPxiX.js} +1 -1
  121. package/dist/ui/assets/{state-BWDzjtHj.js → state-DOWkJUEg.js} +1 -1
  122. package/dist/ui/assets/{store-Czn1xbby.js → store-CD8HQQi0.js} +1 -1
  123. package/dist/ui/assets/{store-DNedyI8F.js → store-DMPHri86.js} +1 -1
  124. package/dist/ui/assets/{sudo-qoInIpBO.js → sudo-ChxuFQrD.js} +1 -1
  125. package/dist/ui/assets/{supervisor-Jdju-S84.js → supervisor-DsGHAeFb.js} +1 -1
  126. package/dist/ui/assets/{sync-dialog-D7E1y2Ec.js → sync-dialog-DJlE-_Qu.js} +1 -1
  127. package/dist/ui/assets/{transformers-env-BWQg6iPs.js → transformers-env-CrD3F-k5.js} +1 -1
  128. package/dist/ui/assets/{tray-leader-CGgHEzgP.js → tray-leader-Cj5ylIFZ.js} +1 -1
  129. package/dist/ui/assets/{tray-leave-runtime-BBUcylR0.js → tray-leave-runtime-B86ntR2C.js} +1 -1
  130. package/dist/ui/assets/{tray-sidecar-B3vE5G1l.js → tray-sidecar-BuTgfmG-.js} +1 -1
  131. package/dist/ui/assets/{upgrade-detection-RbwMSxeX.js → upgrade-detection-CdnTlzbk.js} +1 -1
  132. package/dist/ui/assets/{upskill-lick-skip-C0iou2rp.js → upskill-lick-skip-CwWHxj2D.js} +1 -1
  133. package/dist/ui/assets/{voice-reply-Bj1CpSf6.js → voice-reply-Ba6fFHwZ.js} +1 -1
  134. package/dist/ui/assets/{wc-attach-B631REQc.js → wc-attach-ClqP_QLV.js} +2 -2
  135. package/dist/ui/assets/{wc-browser-KZbo8H3B.js → wc-browser-DcJYOuwt.js} +1 -1
  136. package/dist/ui/assets/{wc-computers-Deq0yXKO.js → wc-computers-DZ8F8APM.js} +1 -1
  137. package/dist/ui/assets/{wc-detached-9lhlXJPy.js → wc-detached-CqurijdL.js} +1 -1
  138. package/dist/ui/assets/{wc-extension-CKQerQPt.js → wc-extension-upUnhYIA.js} +2 -2
  139. package/dist/ui/assets/{wc-follower-DP10htl7.js → wc-follower-lb7m208l.js} +3 -3
  140. package/dist/ui/assets/{wc-follower-oauth-ANEiGFkZ.js → wc-follower-oauth-T2WVyWZD.js} +1 -1
  141. package/dist/ui/assets/{wc-gelatiere-DsVbjYHN.js → wc-gelatiere-DsLb5fF7.js} +1 -1
  142. package/dist/ui/assets/{wc-live-BWEChou-.js → wc-live-_82dhqx_.js} +5 -5
  143. package/dist/ui/assets/{wc-nav-Bu0rCT1z.js → wc-nav-CWlfBhcg.js} +2 -2
  144. package/dist/ui/assets/{wc-onboarding-L8z2-1Ld.js → wc-onboarding-4dwuoncC.js} +2 -2
  145. package/dist/ui/assets/{wc-permissions-Dz0I-zKu.js → wc-permissions-BxfEjmt-.js} +2 -2
  146. package/dist/ui/assets/{wc-placeholder-BTHzaZLv.js → wc-placeholder-Co5efYux.js} +3 -3
  147. package/dist/ui/assets/{wc-secret-request-D6rDxI6g.js → wc-secret-request-BwJvFf3r.js} +1 -1
  148. package/dist/ui/assets/{wc-settings-DFhVBdll.js → wc-settings-CIwPnJJ7.js} +3 -3
  149. package/dist/ui/assets/{wc-shell-Dh9k1nMd.js → wc-shell-DAAFPsyf.js} +3 -3
  150. package/dist/ui/assets/{wc-shortcut-config-Bb94V6Av.js → wc-shortcut-config-DIYpCAoK.js} +1 -1
  151. package/dist/ui/assets/{wc-sprinkles-BkAJcrnZ.js → wc-sprinkles-B6Lpsc3h.js} +2 -2
  152. package/dist/ui/assets/{wc-transcript-export-Bh3AZeXa.js → wc-transcript-export-Dk603hfy.js} +2 -2
  153. package/dist/ui/assets/{wc-tray-DyBz3iBQ.js → wc-tray-tSlRM35e.js} +4 -4
  154. package/dist/ui/assets/welcome-detection-DZ0LEfXq.js +1 -0
  155. package/dist/ui/assets/{whisper-session-DTRVaIcc.js → whisper-session-DO32dZVE.js} +2 -2
  156. package/dist/ui/assets/{xai-grok-HD2wS7Sr.js → xai-grok-C5i9rD2B.js} +1 -1
  157. package/dist/ui/assets/{xai-grok-DEqHFn_v.js → xai-grok-CGWMCUeC.js} +1 -1
  158. package/dist/ui/index.html +3 -3
  159. package/dist/ui/packages/webapp/index.html +3 -3
  160. package/package.json +2 -2
  161. package/dist/ui/assets/__vite-browser-external-BLOvPDKs.js +0 -1
  162. package/dist/ui/assets/provider-store-access-D4qzS4fC.js +0 -1
  163. package/dist/ui/assets/provider-store-access-DEvTyUN8.js +0 -1
  164. package/dist/ui/assets/slicc-version-fbt_Uj4l.js +0 -1
  165. package/dist/ui/assets/welcome-detection-C4RN_MWp.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-BlJDP1-W.js";import{c as m,d as h,n as g,r as _,s as v}from"./proxied-fetch-CoZ8jHud.js";import{t as ee}from"./runtime-env-DadgceZk.js";import{t as te}from"./slugify-BYJ6QVAt.js";import{n as ne,t as re}from"./host-command-Dn-Z4AbC.js";import{a as ie,i as ae,n as oe,r as se,t as ce}from"./snapshot-KIIqV7oO.js";import{i as le,r as y}from"./panel-rpc-DW7W4w6_.js";import{a as ue,c as de,n as fe,o as pe,s as me,t as he}from"./feature-flags-QlgHaQc1.js";import{t as ge}from"./providers-fZ3KX8Lg.js";import{r as _e}from"./binary-cache-bSOhqXB1.js";import{i as ve,n as ye,r as be}from"./fetch-body-CuwTaJC_.js";import{s as xe,t as Se}from"./api-endpoint-D8lUKmPu.js";import{t as Ce}from"./compat-CGK4SwF8.js";import{a as we,i as Te}from"./core-E6pC-3NP.js";import{n as Ee,t as De}from"./mime-types-D7IV6i7k.js";import{t as Oe}from"./secrets-bridge-client-EgBSROu5.js";import{a as ke,i as Ae,n as je,r as Me}from"./tool-ui-DRnUkp2g.js";import{a as Ne,i as Pe,n as b,t as x}from"./path-utils-DNJG-zQf.js";import{n as Fe,r as Ie,t as Le}from"./merge-file-core-VJlzucJY.js";import{r as Re}from"./workspace-mode-D0kUKBVS.js";import{n as ze,t as Be}from"./thinking-level-5x0UAu9N.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-CIdxcCyT.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-DwHLmdxe.js";import{a as $e}from"./tray-leader-status-CpkFr6n7.js";import{n as et,t as tt}from"./slicc-version-fbt_Uj4l.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-C_1fldSP.js";import{d as lt,g as ut,i as dt,n as ft,o as pt}from"./sudoers-BdBYQPUn.js";import{n as mt}from"./types-Dj5TU-Qg.js";import{n as ht,r as gt,t as _t}from"./approval-timeout-CeQbGMnv.js";import{a as vt,c as yt,i as bt,l as xt,n as St,o as Ct,r as wt,t as Tt}from"./types-JfhqX7lD.js";import{n as T,t as Et}from"./boundary-DjgipyWT.js";import"./rest-paths-Dia19u9P.js";import{t as Dt}from"./html-B_Hg2WOy.js";import{n as Ot}from"./llm-session-id-BZyXP_j2.js";import{t as kt}from"./src-CUSndb9K.js";import{i as At,o as jt}from"./browser-DuyhpHbR.js";import{i as Mt,r as Nt,t as Pt}from"./mount-picker-popup-BMils9JY.js";import{t as Ft}from"./buffer-B5d1xHaH.js";import"./buffer-polyfill-BwLbCySD.js";import{A as It,B as E,C as Lt,D,E as Rt,F as zt,G as Bt,H as O,I as k,J as Vt,K as Ht,L as Ut,M as Wt,N as Gt,O as Kt,P as qt,R as Jt,S as Yt,T as Xt,U as Zt,V as Qt,W as $t,Y as en,_ as tn,a as nn,b as rn,c as an,d as on,f as sn,g as cn,h as ln,i as un,j as dn,k as fn,l as pn,m as mn,n as hn,o as gn,p as A,q as _n,r as vn,s as yn,t as bn,u as xn,v as Sn,w as Cn,x as wn,y as Tn,z as En}from"./isomorphic-git-r9mnHMnp.js";import"./global-db-DJXlpNui.js";import{S as Dn,_ as On,a as kn,b as An,c as jn,d as Mn,f as Nn,g as Pn,h as Fn,i as In,l as Ln,n as Rn,o as zn,p as Bn,r as Vn,s as Hn,t as Un,u as Wn,v as j,x as M,y as Gn}from"./state-BWDzjtHj.js";import{a as Kn,i as qn,r as Jn,t as Yn}from"./git-config-Bdgu8kD2.js";import{i as Xn,m as Zn,r as Qn}from"./stdio-tty-CA5sZxWL.js";import{i as $n,r as er}from"./global-prefix-DqCuANmV.js";import{t as tr}from"./wasm-programs-k6khOGzw.js";import{a as nr,n as rr,o as ir,r as ar,s as or}from"./jsh-discovery-CnvNKojr.js";import{C as sr,a as cr,b as lr,c as ur,d as dr,f as fr,h as pr,i as mr,l as hr,m as gr,n as _r,o as vr,p as yr,r as br,s as xr,t as N,u as Sr,v as Cr,y as wr}from"./shared-D-ZRFYou.js";import{_ as Tr,a as Er,b as Dr,d as Or,f as kr,g as Ar,h as jr,i as Mr,l as Nr,m as Pr,p as Fr,r as Ir,s as Lr,u as Rr,v as zr,x as Br,y as Vr}from"./require-guards-CdMtRPQA.js";import{_ as Hr,a as Ur,b as Wr,c as Gr,d as Kr,f as qr,g as Jr,h as Yr,l as Xr,m as Zr,n as Qr,p as $r,s as ei,t as ti,u as ni,v as ri,x as ii,y as ai}from"./jsh-executor-BSfT4Av-.js";import{n as oi,t as si}from"./esbuild-wasm-DeTghvWH.js";import{n as ci}from"./wasm-compiler-Ct7QZURL.js";import{a as li,o as ui,s as di,t as fi}from"./usb-device-registry-DFzxaOky.js";import{a as P,i as pi,r as mi,t as hi}from"./just-bash-compat-B-SPHuh_.js";import{i as gi,r as _i,t as vi}from"./script-catalog-B5BTq3Ma.js";import{a as yi,c as bi,o as xi,s as Si,t as Ci}from"./types-Dzr0qYl3.js";import{a as wi,c as Ti,d as Ei,f as Di,n as Oi,r as ki,u as Ai}from"./github-zip-DvrCoKij.js";import{i as ji,t as Mi}from"./github-auth-CyLgcuwk.js";import{a as Ni,i as Pi,o as Fi,r as Ii,t as Li}from"./provenance-DdmsQ3Nr.js";import{a as Ri,c as zi,i as Bi,n as Vi,o as Hi,r as Ui,s as Wi}from"./github-install-CypHkXWW.js";import{n as Gi,t as Ki}from"./magick-wasm-BbnwhVj1.js";import{i as qi,n as Ji,r as Yi,t as Xi}from"./pdf-raster-BWk6ezTX.js";import{n as Zi}from"./lick-target-env-8JxfVcIV.js";import{t as Qi}from"./tmpdir-env-ate4iNcK.js";import{n as $i,t as ea}from"./hf-defaults-BwJdGLgk.js";import{t as ta}from"./ffmpeg-wasm-sx-3yVAE.js";import{t as na}from"./local-llm-DPdTCBrf.js";import{t as ra}from"./client-C4_ggaf5.js";import{t as ia}from"./redirect-uri-31pXIMS9.js";import{i as aa,n as oa,r as sa,t as ca}from"./tar-BWIPCxI2.js";import{a as la,c as ua,i as da,o as fa,r as pa,s as ma}from"./v86-vm-DCm7zA2r.js";import{n as ha,r as ga}from"./lick-urls-CgPiVwD-.js";let _a=null;function va(e){_a=e!==null&&Number.isFinite(e)&&e>0?e:null}function ya(){if(_a!==null)return _a;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const ba=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function xa(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=ba.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 Sa(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 Ca(e,t){return e.some(e=>Sa(e,t))}const wa=`slicc-transcript`,Ta=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],Ea=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 Da(e){return Ea.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Oa=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const ka=new Set(Ta),Aa=/^[0-9a-fA-F]{64}$/,ja=/^\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 Ma(e){return typeof e==`string`&&Aa.test(e)}function Na(e){return ja.test(e)&&Number.isFinite(Date.parse(e))}function Pa(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 Fa(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Pa(n,t)}:{ok:!0}}function Ia(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 La(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 Ra(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Fa(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?La(e,t):n}function za(e,t){for(let n of[`input`,`output`,`cacheRead`,`cacheWrite`,`totalTokens`]){let r=e[n];if(typeof r!=`number`)return{ok:!1,error:`${t}.${n} must be a number`};if(!Number.isInteger(r)||r<0)return{ok:!1,error:`${t}.${n} must be a non-negative integer`}}return{ok:!0}}function Ba(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 Va(e,t){let n=za(e,t);if(!n.ok)return n;let r=e.cost;return F(r)?Ba(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function Ha(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`?Na(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 Ua(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 Wa(e,t){let n=e.usage;return n===void 0?{ok:!0}:F(n)?Va(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function Ga(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Fa(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=Ua(e,t);if(!n.ok)return n}let r=Ha(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=Ia(i,Ra,`${t}.content`);return a.ok?Wa(e,t):a}function Ka(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=Fa(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Ia(r,Ga,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function qa(e,t){for(let n of[`id`,`path`,`originalName`,`mimeType`,`sha256`,`sourceConversationId`,`sourceMessageId`])if(typeof e[n]!=`string`)return{ok:!1,error:`${t}.${n} must be a string`};return{ok:!0}}function Ja(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`}:Ma(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 Ya=[`attachment-file-missing`,`attachment-association-unavailable`];function Xa(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?Fa(e.missingReason,Ya,`${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 Za(e,t){return e.present?Ja(e,t):Xa(e,t)}function Qa(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=qa(e,t);if(!n.ok)return n;if(typeof e.byteLength!=`number`)return{ok:!1,error:`${t}.byteLength must be a number`};if(typeof e.present!=`boolean`)return{ok:!1,error:`${t}.present must be a boolean`};let r=Fa(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?Za(e,t):r}function $a(e,t){let n=Fa(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 eo(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=Fa(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return F(r)?$a(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function to(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 no(e,t){return typeof e!=`string`||!ka.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function ro(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 io(e){if(!F(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=Fa(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Ia(e.missing,no,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function ao(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=Fa(e.state,[`active`,`frozen`],`session.state`);return t.ok?io(e.completeness):t}function oo(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)?Ia(n,eo,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function so(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Ia(t,Ka,`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=Ia(r,to,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Ia(a,Qa,`attachments`):{ok:!1,error:`attachments must be an array`}}function co(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 lo(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 uo(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 fo(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 uo(e))t.add(n)}return t}function po(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 mo(e){return po(e,fo(e))}function ho(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 go(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=ho(e,t);if(!r.ok)return r}}return{ok:!0}}function _o(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return go(e,n)}function vo(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 yo(e,t){let n=vo(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 bo(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(uo(e)))}return t}function xo(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 So(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return xo(e,n,bo(t))}function Co(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 wo(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=Co(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function To(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=co(t);if(!o.ok)return o;let s=lo(t);if(!s.ok)return s;let c=mo(t);if(!c.ok)return c;let l=_o(t,n);if(!l.ok)return l;let u=yo(n,t);if(!u.ok)return u;let d=So(r,t);return d.ok?wo(a,n):d}function Eo(e){let t=so(e);return t.ok?To(e):t}function Do(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=ro(e.export);if(!t.ok)return t;let n=ao(e.session);if(!n.ok)return n;let r=oo(e.privacy);return r.ok?Eo(e):r}async function Oo(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:ko(a),sourceUrl:a}}function ko(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const Ao=`slicc-sprinkle-routes`;function jo(){try{let e=localStorage.getItem(Ao);return e?JSON.parse(e):{}}catch{return{}}}function Mo(e){try{localStorage.setItem(Ao,JSON.stringify(e))}catch{}}function No(e){return jo()[e]}function Po(e,t){let n=jo();n[e]=t,Mo(n)}function Fo(e){let t=jo();delete t[e],Mo(t)}function Io(){return jo()}function Lo(e,t,n){return yt(t,n,`${e} adapter does not implement ${t}.${n}`)}function Ro(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(Lo(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function zo(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:Ro(t,`browser`,St,e.browser),network:Ro(t,`network`,vt,e.network),secrets:Ro(t,`secrets`,Ct,e.secrets),devices:Ro(t,`devices`,wt,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:Ro(t,`mounts`,bt,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:Ro(t,`approvals`,Tt,e.approvals)}}function Bo(e={}){return zo({adapter:`connect`,pageGestures:e.pageGestures})}function Vo(e){let t=Et(()=>import(`./extension-ops-Ded2__AC.js`).then(t=>t.createExtensionOps(e)));return zo({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 Ho(e={}){let t=Et(()=>import(`./rest-ops-DyAkn44S.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return zo({adapter:`node-rest`,pageGestures:e.pageGestures,network:{localNodeServer:()=>Promise.resolve({ok:!0,value:{available:!0}}),crossOriginFetch:e=>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 Uo(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return Ho({pageGestures:n});case`extension-direct`:case`extension-delegate`:return Vo({adapter:e,pageGestures:n});case`connect`:return Bo({pageGestures:n})}}const Wo=e(`quick-llm`);async function Go(e){let t=f();if(!t)return Wo.debug(`No API key for active provider — skipping`),null;let n=d(),r=u(),i;if(i=e.modelId?Yo(n,e.modelId)??Yo(n,r):Ko(n,r),!i)return Wo.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`]=Xo());try{let n=(await Ce(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 Wo.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function Ko(e,t){let n=p(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=Jo(r.id),a=n.filter(e=>qo(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function qo(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function Jo(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 Yo(e,t){return p(e).find(e=>e.id===t)}function Xo(){return Ot(`ui-quick-llm`)}const Zo=e(`sudo-suggest`),Qo=[`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-CckwuDB2.js";import{c as m,d as h,n as g,r as _,s as v}from"./proxied-fetch-CoZ8jHud.js";import{t as ee}from"./runtime-env-DadgceZk.js";import{t as te}from"./slugify-BYJ6QVAt.js";import{n as ne,t as re}from"./host-command-Dn-Z4AbC.js";import{a as ie,i as ae,n as oe,r as se,t as ce}from"./snapshot-DQ087sVE.js";import{i as le,r as y}from"./panel-rpc-DW7W4w6_.js";import{a as ue,c as de,n as fe,o as pe,s as me,t as he}from"./feature-flags-QlgHaQc1.js";import{t as ge}from"./providers-ChXzAurS.js";import{r as _e}from"./binary-cache-bSOhqXB1.js";import{i as ve,n as ye,r as be}from"./fetch-body-CuwTaJC_.js";import{s as xe,t as Se}from"./api-endpoint-D8lUKmPu.js";import{t as Ce}from"./compat-CGK4SwF8.js";import{a as we,i as Te}from"./core-E6pC-3NP.js";import{n as Ee,t as De}from"./mime-types-D7IV6i7k.js";import{t as Oe}from"./secrets-bridge-client-EgBSROu5.js";import{a as ke,i as Ae,n as je,r as Me}from"./tool-ui-DRnUkp2g.js";import{a as Ne,i as Pe,n as b,t as x}from"./path-utils-DNJG-zQf.js";import{n as Fe,r as Ie,t as Le}from"./merge-file-core-VJlzucJY.js";import{r as Re}from"./workspace-mode-D0kUKBVS.js";import{n as ze,t as Be}from"./thinking-level-5x0UAu9N.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-bUBxSCEr.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-DFXgS-c1.js";import{a as $e}from"./tray-leader-status-CpkFr6n7.js";import{n as et,t as tt}from"./slicc-version-DwS1sP4C.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-C_1fldSP.js";import{d as lt,g as ut,i as dt,n as ft,o as pt}from"./sudoers-BdBYQPUn.js";import{n as mt}from"./types-Dj5TU-Qg.js";import{n as ht,r as gt,t as _t}from"./approval-timeout-CeQbGMnv.js";import{a as vt,c as yt,i as bt,l as xt,n as St,o as Ct,r as wt,t as Tt}from"./types-JfhqX7lD.js";import{n as T,t as Et}from"./boundary-DjgipyWT.js";import"./rest-paths-Dia19u9P.js";import{t as Dt}from"./html-B_Hg2WOy.js";import{n as Ot}from"./llm-session-id-BZyXP_j2.js";import{t as kt}from"./src-CUSndb9K.js";import{i as At,o as jt}from"./browser-DuyhpHbR.js";import{i as Mt,r as Nt,t as Pt}from"./mount-picker-popup-BMils9JY.js";import{t as Ft}from"./buffer-B5d1xHaH.js";import"./buffer-polyfill-BwLbCySD.js";import{A as It,B as E,C as Lt,D,E as Rt,F as zt,G as Bt,H as O,I as k,J as Vt,K as Ht,L as Ut,M as Wt,N as Gt,O as Kt,P as qt,R as Jt,S as Yt,T as Xt,U as Zt,V as Qt,W as $t,Y as en,_ as tn,a as nn,b as rn,c as an,d as on,f as sn,g as cn,h as ln,i as un,j as dn,k as fn,l as pn,m as mn,n as hn,o as gn,p as A,q as _n,r as vn,s as yn,t as bn,u as xn,v as Sn,w as Cn,x as wn,y as Tn,z as En}from"./isomorphic-git-r9mnHMnp.js";import"./global-db-DJXlpNui.js";import{S as Dn,_ as On,a as kn,b as An,c as jn,d as Mn,f as Nn,g as Pn,h as Fn,i as In,l as Ln,n as Rn,o as zn,p as Bn,r as Vn,s as Hn,t as Un,u as Wn,v as j,x as M,y as Gn}from"./state-DOWkJUEg.js";import{a as Kn,i as qn,r as Jn,t as Yn}from"./git-config-Bdgu8kD2.js";import{i as Xn,m as Zn,r as Qn}from"./stdio-tty-CA5sZxWL.js";import{i as $n,r as er}from"./global-prefix-DqCuANmV.js";import{t as tr}from"./wasm-programs-k6khOGzw.js";import{a as nr,n as rr,o as ir,r as ar,s as or}from"./jsh-discovery-CnvNKojr.js";import{C as sr,a as cr,b as lr,c as ur,d as dr,f as fr,h as pr,i as mr,l as hr,m as gr,n as _r,o as vr,p as yr,r as br,s as xr,t as N,u as Sr,v as Cr,y as wr}from"./shared-D-ZRFYou.js";import{_ as Tr,a as Er,b as Dr,d as Or,f as kr,g as Ar,h as jr,i as Mr,l as Nr,m as Pr,p as Fr,r as Ir,s as Lr,u as Rr,v as zr,x as Br,y as Vr}from"./require-guards-CMPvNDQg.js";import{_ as Hr,a as Ur,b as Wr,c as Gr,d as Kr,f as qr,g as Jr,h as Yr,l as Xr,m as Zr,n as Qr,p as $r,s as ei,t as ti,u as ni,v as ri,x as ii,y as ai}from"./jsh-executor-CEkiOk4d.js";import{n as oi,t as si}from"./esbuild-wasm-DeTghvWH.js";import{n as ci}from"./wasm-compiler-Ct7QZURL.js";import{a as li,o as ui,s as di,t as fi}from"./usb-device-registry-DFzxaOky.js";import{a as P,i as pi,r as mi,t as hi}from"./just-bash-compat-B-SPHuh_.js";import{i as gi,r as _i,t as vi}from"./script-catalog-B5BTq3Ma.js";import{a as yi,c as bi,o as xi,s as Si,t as Ci}from"./types-Dzr0qYl3.js";import{a as wi,c as Ti,d as Ei,f as Di,n as Oi,r as ki,u as Ai}from"./github-zip-TmRPTM75.js";import{i as ji,t as Mi}from"./github-auth-yNHDwebn.js";import{a as Ni,i as Pi,o as Fi,r as Ii,t as Li}from"./provenance-DdmsQ3Nr.js";import{a as Ri,c as zi,i as Bi,n as Vi,o as Hi,r as Ui,s as Wi}from"./github-install-BIoofnjZ.js";import{n as Gi,t as Ki}from"./magick-wasm-BbnwhVj1.js";import{i as qi,n as Ji,r as Yi,t as Xi}from"./pdf-raster-BWk6ezTX.js";import{n as Zi}from"./lick-target-env-8JxfVcIV.js";import{t as Qi}from"./tmpdir-env-ate4iNcK.js";import{n as $i,t as ea}from"./hf-defaults-BwJdGLgk.js";import{t as ta}from"./ffmpeg-wasm-sx-3yVAE.js";import{t as na}from"./local-llm-FyJMIUux.js";import{t as ra}from"./client-C4_ggaf5.js";import{t as ia}from"./redirect-uri-31pXIMS9.js";import{i as aa,n as oa,r as sa,t as ca}from"./tar-BWIPCxI2.js";import{a as la,c as ua,i as da,o as fa,r as pa,s as ma}from"./v86-vm-DCm7zA2r.js";import{n as ha,r as ga}from"./lick-urls-CgPiVwD-.js";let _a=null;function va(e){_a=e!==null&&Number.isFinite(e)&&e>0?e:null}function ya(){if(_a!==null)return _a;let e=globalThis.performance?.timeOrigin;return typeof e==`number`&&Number.isFinite(e)&&e>0?e:Date.now()}new URL(r).hostname;const ba=/^([0-9a-f]{32})--(?:[0-9a-f]{8}-)?([0-9a-f]+)$/i;function xa(e){let t;try{t=new URL(e.includes(`://`)?e:`https://${e}`).hostname}catch{return null}let n=ba.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 Sa(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 Ca(e,t){return e.some(e=>Sa(e,t))}const wa=`slicc-transcript`,Ta=[`canonical-agent-history-unavailable`,`tool-data-may-be-truncated`,`model-metadata-unavailable`,`scoop-history-unavailable`,`attachment-file-missing`,`attachment-association-unavailable`,`complete-snapshot-unavailable`],Ea=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 Da(e){return Ea.has(e.replace(/\/\d+(?=\/|$)/g,`/*`))}var Oa=class extends Error{code;detail;constructor(e,t){super(t?`${e}: ${t}`:e),this.code=e,this.detail=t,this.name=`TranscriptExportError`}};const ka=new Set(Ta),Aa=/^[0-9a-fA-F]{64}$/,ja=/^\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 Ma(e){return typeof e==`string`&&Aa.test(e)}function Na(e){return ja.test(e)&&Number.isFinite(Date.parse(e))}function Pa(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 Fa(e,t,n){return typeof e!=`string`||!t.includes(e)?{ok:!1,error:Pa(n,t)}:{ok:!0}}function Ia(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 La(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 Ra(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Fa(e.type,[`text`,`tool-call`,`attachment-ref`],`${t}.type`);return n.ok?La(e,t):n}function za(e,t){for(let n of[`input`,`output`,`cacheRead`,`cacheWrite`,`totalTokens`]){let r=e[n];if(typeof r!=`number`)return{ok:!1,error:`${t}.${n} must be a number`};if(!Number.isInteger(r)||r<0)return{ok:!1,error:`${t}.${n} must be a non-negative integer`}}return{ok:!0}}function Ba(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 Va(e,t){let n=za(e,t);if(!n.ok)return n;let r=e.cost;return F(r)?Ba(r,`${t}.cost`):{ok:!1,error:`${t}.cost must be a non-null object`}}function Ha(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`?Na(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 Ua(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 Wa(e,t){let n=e.usage;return n===void 0?{ok:!0}:F(n)?Va(n,`${t}.usage`):{ok:!1,error:`${t}.usage must be a non-null object`}}function Ga(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=Fa(e.role,[`user`,`assistant`,`tool-result`],`${t}.role`);if(!n.ok)return n;if(e.role===`tool-result`){let n=Ua(e,t);if(!n.ok)return n}let r=Ha(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=Ia(i,Ra,`${t}.content`);return a.ok?Wa(e,t):a}function Ka(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=Fa(e.kind,[`cone`,`scoop`],`${t}.kind`);if(!n.ok)return n;let r=e.messages;return Array.isArray(r)?Ia(r,Ga,`${t}.messages`):{ok:!1,error:`${t}.messages must be an array`}}function qa(e,t){for(let n of[`id`,`path`,`originalName`,`mimeType`,`sha256`,`sourceConversationId`,`sourceMessageId`])if(typeof e[n]!=`string`)return{ok:!1,error:`${t}.${n} must be a string`};return{ok:!0}}function Ja(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`}:Ma(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 Ya=[`attachment-file-missing`,`attachment-association-unavailable`];function Xa(e,t){let n=e.path,r=e.sha256,i=e.byteLength;return n===``?r===``?i===0?Fa(e.missingReason,Ya,`${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 Za(e,t){return e.present?Ja(e,t):Xa(e,t)}function Qa(e,t){if(!F(e))return{ok:!1,error:`${t} must be a non-null object`};let n=qa(e,t);if(!n.ok)return n;if(typeof e.byteLength!=`number`)return{ok:!1,error:`${t}.byteLength must be a number`};if(typeof e.present!=`boolean`)return{ok:!1,error:`${t}.present must be a boolean`};let r=Fa(e.handling,[`text-redacted`,`binary-unchanged`],`${t}.handling`);return r.ok?Za(e,t):r}function $a(e,t){let n=Fa(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 eo(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=Fa(e.detector,[`known-secret`,`credential-pattern`,`pre-obfuscated`],`${t}.detector`);if(!n.ok)return n;let r=e.target;return F(r)?$a(r,`${t}.target`):{ok:!1,error:`${t}.target must be a non-null object`}}function to(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 no(e,t){return typeof e!=`string`||!ka.has(e)?{ok:!1,error:`${t} is not a valid completeness reason`}:{ok:!0}}function ro(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 io(e){if(!F(e))return{ok:!1,error:`session.completeness must be a non-null object`};let t=Fa(e.status,[`complete`,`partial`],`session.completeness.status`);return t.ok?Array.isArray(e.missing)?Ia(e.missing,no,`session.completeness.missing`):{ok:!1,error:`session.completeness.missing must be an array`}:t}function ao(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=Fa(e.state,[`active`,`frozen`],`session.state`);return t.ok?io(e.completeness):t}function oo(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)?Ia(n,eo,`privacy.redactions`):{ok:!1,error:`privacy.redactions must be an array`}}function so(e){let t=e.conversations;if(!Array.isArray(t))return{ok:!1,error:`conversations must be an array`};let n=Ia(t,Ka,`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=Ia(r,to,`delegations`);if(!i.ok)return i;let a=e.attachments;return Array.isArray(a)?Ia(a,Qa,`attachments`):{ok:!1,error:`attachments must be an array`}}function co(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 lo(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 uo(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 fo(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 uo(e))t.add(n)}return t}function po(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 mo(e){return po(e,fo(e))}function ho(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 go(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=ho(e,t);if(!r.ok)return r}}return{ok:!0}}function _o(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return go(e,n)}function vo(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 yo(e,t){let n=vo(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 bo(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(uo(e)))}return t}function xo(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 So(e,t){let n=new Set;for(let e of t)F(e)&&typeof e.id==`string`&&n.add(e.id);return xo(e,n,bo(t))}function Co(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 wo(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=Co(i,n,`privacy.redactions[${t}].target`);if(!a.ok)return a}return{ok:!0}}function To(e){let t=e.conversations,n=e.attachments,r=e.delegations,i=e.privacy,a=Array.isArray(i?.redactions)?i.redactions:[],o=co(t);if(!o.ok)return o;let s=lo(t);if(!s.ok)return s;let c=mo(t);if(!c.ok)return c;let l=_o(t,n);if(!l.ok)return l;let u=yo(n,t);if(!u.ok)return u;let d=So(r,t);return d.ok?wo(a,n):d}function Eo(e){let t=so(e);return t.ok?To(e):t}function Do(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=ro(e.export);if(!t.ok)return t;let n=ao(e.session);if(!n.ok)return n;let r=oo(e.privacy);return r.ok?Eo(e):r}async function Oo(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:ko(a),sourceUrl:a}}function ko(e){if(!e)return`da`;let t;try{t=new URL(e).host}catch{return`da`}return t===`api.aem.live`?`aem`:`da`}const Ao=`slicc-sprinkle-routes`;function jo(){try{let e=localStorage.getItem(Ao);return e?JSON.parse(e):{}}catch{return{}}}function Mo(e){try{localStorage.setItem(Ao,JSON.stringify(e))}catch{}}function No(e){return jo()[e]}function Po(e,t){let n=jo();n[e]=t,Mo(n)}function Fo(e){let t=jo();delete t[e],Mo(t)}function Io(){return jo()}function Lo(e,t,n){return yt(t,n,`${e} adapter does not implement ${t}.${n}`)}function Ro(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(Lo(e,t,n))]});return{...Object.fromEntries(a),allowlist:i,supports:e=>i.includes(e)}}function zo(e){let{adapter:t,pageGestures:n}=e,r=n??{};return{adapter:t,browser:Ro(t,`browser`,St,e.browser),network:Ro(t,`network`,vt,e.network),secrets:Ro(t,`secrets`,Ct,e.secrets),devices:Ro(t,`devices`,wt,{usbRequest:r.usbRequest,serialRequest:r.serialRequest,hidRequest:r.hidRequest,...e.devices}),mounts:Ro(t,`mounts`,bt,{pickDirectory:r.pickDirectory,...e.mounts}),approvals:Ro(t,`approvals`,Tt,e.approvals)}}function Bo(e={}){return zo({adapter:`connect`,pageGestures:e.pageGestures})}function Vo(e){let t=Et(()=>import(`./extension-ops-Ded2__AC.js`).then(t=>t.createExtensionOps(e)));return zo({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 Ho(e={}){let t=Et(()=>import(`./rest-ops-DyAkn44S.js`).then(t=>t.createRestOps(e)),e.controlTimeoutMs??1e4);return zo({adapter:`node-rest`,pageGestures:e.pageGestures,network:{localNodeServer:()=>Promise.resolve({ok:!0,value:{available:!0}}),crossOriginFetch:e=>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 Uo(e,t={}){let{pageGestures:n}=t;switch(e){case`node-rest`:return Ho({pageGestures:n});case`extension-direct`:case`extension-delegate`:return Vo({adapter:e,pageGestures:n});case`connect`:return Bo({pageGestures:n})}}const Wo=e(`quick-llm`);async function Go(e){let t=f();if(!t)return Wo.debug(`No API key for active provider — skipping`),null;let n=d(),r=u(),i;if(i=e.modelId?Yo(n,e.modelId)??Yo(n,r):Ko(n,r),!i)return Wo.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`]=Xo());try{let n=(await Ce(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 Wo.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function Ko(e,t){let n=p(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=Jo(r.id),a=n.filter(e=>qo(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function qo(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function Jo(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 Yo(e,t){return p(e).find(e=>e.id===t)}function Xo(){return Ot(`ui-quick-llm`)}const Zo=e(`sudo-suggest`),Qo=[`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
  `),$o=[`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 es(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`?Qo:$o,i=null;try{i=await Go({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){Zo.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return ts(i)||n}function ts(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 ns=e(`sudo:capability-gesture`);function rs(e,t={}){let n=t.suggest??es;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 ns.warn(`sudo approval aborted before prompting — denying`,{detail:t.detail}),mt();if(!e)return ns.warn(`no CapabilityBroker injected for the sudo gesture hop — denying (composition bug, never a guessed transport)`,{detail:t.detail}),mt();let o=await e.approvals.request({kind:t.kind,detail:t.detail,suggestedPattern:a,...t.requester?{requester:t.requester}:{},...t.reason?{reason:t.reason}:{},...t.approver?{approver:t.approver}:{},...i?{signal:i}:{}});return o.ok?xt(o.value,a):(ns.warn(`capability broker approvals.request failed — denying`,{message:o.message}),mt())}}}const is=e(`sudo:tray-first`);function as(e,t={}){let n=t.suggest??es,r=t.timeoutMs??6e5,i=t.getClient??(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-DW7W4w6_.js`).then(e=>e.a);return e()});return{async requestApproval(t,a){if(a?.signal?.aborted)return mt();let o=t.suggestedPattern;if(!o)try{o=await n(t,a?.signal)}catch{o=t.detail}let s={...t,suggestedPattern:o},c=null;try{c=await i()}catch(e){is.debug?.(`panel-RPC client lookup threw — using native broker`,{error:e instanceof Error?e.message:String(e)})}if(c)try{let e=await c.call(`sudo-request`,{request:s,mode:`tray-first`},{timeoutMs:r});if(e?.handled!==!1)return ss(e?.decision,o)}catch(e){is.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return e.requestApproval(s,a)}}}const os=[`user-timeout`,`cone-timeout`,`unavailable`];function ss(e,t){if(!e||typeof e!=`object`)return mt();let n=e,r=n.attestation===`biometric`||n.attestation===`passcode`||n.attestation===`none`?n.attestation:void 0;if(n.decision===`allow`)return{decision:`allow`,...r?{attestation:r}:{}};if(n.decision===`always`)return{decision:`always`,pattern:typeof n.pattern==`string`&&n.pattern.trim().length>0?n.pattern.trim():t,...r?{attestation:r}:{}};if(n.decision!==`deny`)return mt();let i=os.find(e=>e===n.reason);return i?{decision:`deny`,reason:i}:{decision:`deny`}}function cs(e,t){return{requestApproval(n){return t.enqueueSudoRequest(e,n)}}}function ls(){return`lick-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}var us=class{pending=new Map;timeoutMs;newId;setTimer;clearTimer;onAutoSettle;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.newId=e.newId??ls,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(ht(`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 ds(e){return gt(fs(e))}function fs(e){let t=rs(e);return e?.adapter===`extension-direct`||e?.adapter===`extension-delegate`?t:as(t)}let ps=null;function ms(e){return ps=e,()=>{ps===e&&(ps=null)}}function hs(){if(!ps)throw new Oa(`session-not-found`);return ps}const gs=`focus`,_s={type:`leaf`,surfaceId:`chat`};function vs(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 ys={focus:{name:`focus`,tree:vs({left:_s},{left:3,middle:1})}};function bs(e){return ys[e]??null}const xs=`progress`;function Ss(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}async function Cs(){try{let e=await Nt();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 Pt(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);return await Mt(t),t}throw Error(`mount: unexpected popup result`)}catch(e){throw Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}async function ws(){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 Ts(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 Pt(r.idbKey);if(!i)throw Error(`no directory handle found in storage`);return await Mt(i),i}function Es(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 Ds(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 Os=new Set([`--source`,`--profile`,`--backend`,`--max-body-mb`]);function ks(e){for(let t=0;t<e.length;t++){let n=e[t];if(n===`--`)return!1;if(n===`--help`||n===`-h`)return!0;Os.has(n)&&t++}return!1}function As(e){return`aem://${e.org}/${e.name}${e.path?`/${e.path}`:``}`}var js=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=Es(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=ke();if(!n){let n=await Ms(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=le()?null:y(),i;if(n){let t=this.options.acquireLocalMountViaToolUI;if(!t)throw Error(`mount: tool UI not available in this runtime`);i=await t(n,e)}else i=ee()?await Cs():r?await Ts(r,e):await ws();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=Ds(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 Oo(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`?As(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(ks(e))return n===`umount`?this.umountHelp():this.help();let r=Es(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
@@ -291,7 +291,7 @@ Examples:
291
291
  skill list
292
292
  skill info bluebubbles
293
293
  skill read bluebubbles
294
- `,stderr:``,exitCode:0};let r=t[0],i=await import(`./kernel-worker-jFET0gP4.js`).then(e=>e.r);try{switch(r){case`list`:return Rh(t,e,i,n.env.get(`PATH`));case`info`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: info requires a skill name
294
+ `,stderr:``,exitCode:0};let r=t[0],i=await import(`./kernel-worker-CSRynihq.js`).then(e=>e.r);try{switch(r){case`list`:return Rh(t,e,i,n.env.get(`PATH`));case`info`:{let n=t[1];if(!n)return{stdout:``,stderr:`skill: info requires a skill name
295
295
  `,exitCode:1};let r=await i.getSkillInfo(e,n);return r?{stdout:Ih(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
296
296
  `,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+`
297
297
  `,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 Bh=[{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=>Bi(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 Vh(e){let t={skills:[],dryRun:!1,json:!1};for(let n=0;n<e.length;n++){let r=e[n],i=Bh.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 Hh(e,t){return!e||!t||e.byteLength!==t.byteLength?!1:e.every((e,n)=>e===t[n])}async function Uh(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 Wh(e,t,n,r){let i=await Uh(e,t);return Ei(n)?i?{status:`kept-local`,write:!1}:{status:`added`,write:!0}:i?Hh(i,r)?{status:`unchanged`,write:!1}:{status:`updated`,write:!0}:{status:`added`,write:!0}}async function Gh(e,t,n,r){let i={changes:[],writes:[],removals:[]};for(let[r,a]of n){let n=`${t}/${r}`,{status:o,write:s}=await Wh(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 Di(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 Kh(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 Mi(t),d=await Pi(s,c,o.ref,u,!0,l||void 0);if(d&&r.sha===d&&await qh(e,n,r))return{...o,to:d,outcome:`current`,changes:[]};let f=await Jh(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 Gh(e,`${yi}/${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 $h(e,{changes:h,writes:g,removals:_}),await Fi(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 qh(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 Jh(e,t,n,r,i,a,o){let s=await ki(e,t,a,i??`main`);if(s.status===`ok`){let i=wi(s.files),a=n||Yh(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:Qh(i,a),path:a}}try{return{files:Zh(Xh(await Oi(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 Yh(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 Xh(e){return new Map([...e].filter(([e])=>Ti(e)))}function Zh(e){return new Map([...e].sort(([e],[t])=>e.localeCompare(t)))}function Qh(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);Ti(e)&&r.set(e,i)}return Zh(r)}async function $h(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 eg(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 jh(o,s,t);if(!c.ok)return{...a,outcome:`error`,error:c.error};let l=`${yi}/${n}/SKILL.md`,u=await Uh(e,l),d=new TextEncoder().encode(c.content),f=u!==void 0&&kh(new TextDecoder().decode(u))===kh(c.content);if(Hh(u,d)||f)return{...a,changes:[{path:`SKILL.md`,status:`unchanged`}]};let p=u?`updated`:`added`;return i||(await e.mkdir(`${yi}/${n}`,{recursive:!0}),await e.writeFile(l,d),await Fi(e,n,{...r,files:[`SKILL.md`]})),{...a,outcome:`updated`,changes:[{path:`SKILL.md`,status:p}]}}function tg(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 ng(e,t,n,r){let i=Bi(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 rg(e,t,n){if(t.length===0){let t=await Ni(e);return{targets:t.provenanced,missing:[],skipped:t.unattributed}}let r=[],i=[];for(let a of t){let t=await Ii(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?ng(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 ig(e){return e.reason===`not-installed`?`upskill: no skill named "${e.name}" is installed — check \`upskill list\`
@@ -302,7 +302,7 @@ Examples:
302
302
  `}function sg(e,t,n,r,i){let a=t?`Skill update (dry run — nothing written):
303
303
  `:`Skill update:
304
304
  `;for(let n of e)a+=tg(n,t);if(i.length>0&&(a+=og(i)),!n&&r&&e.length>0){let n=i.length>0?`all ${ag(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 cg(e,t,n){let{targets:r,missing:i,skipped:a}=await rg(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 eg(e,t,i.name,i.provenance,n.dryRun):await Kh(e,t,i.name,i.provenance,n.branch,n.dryRun));return{results:o,skipped:a,missing:i}}async function lg(e,t,n){let r=Vh(e);if(r.error)return{stdout:``,stderr:`${r.error}\n`,exitCode:1};let{results:i,missing:a,skipped:o}=await cg(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`:sg([],r.dryRun,!1,!0,o),stderr:``,exitCode:0}:{stdout:``,stderr:a.length?a.map(ig).join(``):"upskill: no skill has install provenance yet — reinstall a skill, or run `upskill update <skill> --from <owner>/<repo>`, to record its source\n",exitCode:1};let s=i.filter(e=>e.outcome===`error`),c=i.some(e=>e.outcome===`updated`);c&&!r.dryRun&&await zi();let l=a.map(ig).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:sg(i,r.dryRun,c,u,o),stderr:l,exitCode:+!u}}function ug(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 dg(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 fg(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}${dg(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(`
305
- `)}\n`}async function pg(e,t,n){let r=await(await import(`./kernel-worker-jFET0gP4.js`).then(e=>e.r)).discoverSkills(e),{collisions:i}=await ar(e,nr(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${Nh()}`,stderr:``,exitCode:0}:{...or(`upskill`,Fh(r,`Discoverable local skills`),i,{builtinNames:new Set(it())}),exitCode:0}}async function mg(e,t,n){let{results:r,skipped:i}=await cg(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:fg(r,i),stderr:c,exitCode:+!s}}async function hg(e,t,n,r){let i=ug(e);return i.error?{stdout:``,stderr:`${i.error}\n`,exitCode:1}:i.outdated?mg(t,n,i.json):pg(t,i.json,r)}async function gg(e,t){let n=`${bi}/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(ji(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=ve(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=Ri(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 _g(e,t){let n=`${bi}/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: ${ji(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=ve(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=Ri(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 vg=[{label:`Tessl`,host:new URL(bi).host,fetch:gg},{label:`browse.sh`,host:new URL(Ci).host,fetch:Ch}];function yg(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 bg(e,t,n=1){let r=await Promise.allSettled(vg.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=yg(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=vg[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+=`
305
+ `)}\n`}async function pg(e,t,n){let r=await(await import(`./kernel-worker-CSRynihq.js`).then(e=>e.r)).discoverSkills(e),{collisions:i}=await ar(e,nr(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${Nh()}`,stderr:``,exitCode:0}:{...or(`upskill`,Fh(r,`Discoverable local skills`),i,{builtinNames:new Set(it())}),exitCode:0}}async function mg(e,t,n){let{results:r,skipped:i}=await cg(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:fg(r,i),stderr:c,exitCode:+!s}}async function hg(e,t,n,r){let i=ug(e);return i.error?{stdout:``,stderr:`${i.error}\n`,exitCode:1}:i.outdated?mg(t,n,i.json):pg(t,i.json,r)}async function gg(e,t){let n=`${bi}/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(ji(e,n))}if(r.status!==200)throw Error(`Tessl returned HTTP ${r.status}`);let i=ve(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=Ri(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 _g(e,t){let n=`${bi}/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: ${ji(e,n)}`}}if(r.status!==200)return{error:`Tessl search failed (HTTP ${r.status})`};let i=ve(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=Ri(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 vg=[{label:`Tessl`,host:new URL(bi).host,fetch:gg},{label:`browse.sh`,host:new URL(Ci).host,fetch:Ch}];function yg(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 bg(e,t,n=1){let r=await Promise.allSettled(vg.map(n=>n.fetch(e,t))),i=r.map(e=>e.status===`fulfilled`?e.value:[]),a=r.every(e=>e.status===`rejected`),o=yg(i),s=``;for(let e=0;e<r.length;e++){let t=r[e];if(t.status===`rejected`){let n=vg[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+=`
306
306
  `}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:
307
307
  `,p+=` From Tessl: upskill <owner/repo> --skill <name>
308
308
  `,p+=` From browse.sh: upskill browse:<hostname>/<task>
@@ -325,7 +325,7 @@ Examples:
325
325
  `,{stdout:s,stderr:``,exitCode:0}}function Dg(e){return!e||e.startsWith(`-`)?{stdout:``,stderr:`upskill: --branch requires a value
326
326
  `,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
327
327
  `,exitCode:1}}function Og(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
328
- `,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=Dg(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 kg(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./kernel-worker-jFET0gP4.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 Ii(n,t),a=i?Li(i):"Installed from: (no provenance recorded — reinstall to enable `upskill update`)\n";return{stdout:Ih(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+`
328
+ `,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=Dg(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 kg(e,t,n){if(!t)return{stdout:``,stderr:`upskill: ${e} requires a skill name\n`,exitCode:1};let r=await import(`./kernel-worker-CSRynihq.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 Ii(n,t),a=i?Li(i):"Installed from: (no provenance recorded — reinstall to enable `upskill update`)\n";return{stdout:Ih(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+`
329
329
  `,stderr:``,exitCode:0}}async function Ag(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 Hi(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 jg(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 Vi(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 Mg(e,t,n,r,i,a,o,s){let c=``,l=``,u=0;for(let d of e){let e=await Vi(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 Ng(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 Pg(e,t,n,r){let{owner:i,repo:a}=e,o=t.branch??e.branch,s=t.subPath??e.path,c=await Mi(r),l=await Ui(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:Ng(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:Ng(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 ki(i,a,r,o);if(e.status===`ok`){let r=await Pi(i,a,o,c,!0,s),l=await Ag(u,i,a,wi(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 jg(u,i,a,c,n,t.force,o,f);({output:p,errors:m,successCount:h}=e)}}else({output:p,errors:m,successCount:h}=await Mg(u,i,a,c,n,t.force,r,o));let g=((Date.now()-f)/1e3).toFixed(1);return h>0&&(p+=`\nInstalled ${h} skill(s)${d>1?` in ${g}s`:``}\n`,await zi()),{stdout:p,stderr:m,exitCode:+!!m}}async function Fg(e,t,n,r,i){switch(e[0]){case`tabs`:return Tg(t,n,r,e.includes(`--json`));case`recommendations`:return Eg(t,n,e.includes(`--install`));case`update`:case`upgrade`:return lg(e.slice(1),t,n);case`list`:return hg(e.slice(1),t,n,i);case`info`:case`read`:return kg(e[0],e[1],t);case`search`:return Lg(e,n);default:return null}}function Ig(e,t,n){return S(`upskill`,async(r,i)=>{if(r.length===0||r.includes(`--help`)||r.includes(`-h`))return Lh();let a=await Fg(r,e,t,n,i.env.get(`PATH`));if(a)return a;let o=Og(r);if(o.earlyReturn)return o.earlyReturn;if(!o.sourceRef)return Lh();if(o.sourceRef.startsWith(`tessl:`))return Rg(o.sourceRef,o.force,e,t);let s=Eh(o.sourceRef);if(s)return Mh(s.hostname,s.task,e,t,o.force);let c=Bi(o.sourceRef);return c?Pg(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 Lg(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?bg(a,t,i):Lh()}async function Rg(e,t,n,r){let i=e.slice(6);if(!i)return{stdout:``,stderr:`upskill: tessl: requires a skill name
330
330
  `,exitCode:1};let a=await _g(i,r);if(`error`in a)return{stdout:``,stderr:`upskill: ${a.error}\n`,exitCode:1};let o=await Mi(r);return Vi(a.owner,a.repo,a.skillPath,a.skillName,n,o,t,r)}function zg(){return{stdout:`usage: afplay [-v volume] [-r rate] <file>
331
331
 
@@ -719,7 +719,7 @@ Examples:
719
719
  `;for(let n of e)t+=` ${n.id} ${n.name.padEnd(20)} ${n.cron.padEnd(15)}`,n.scoop&&(t+=` -> ${n.scoop}`),n.filter&&(t+=` [filtered]`),t+=` (${n.status})`,n.nextRun&&(t+=` next: ${new Date(n.nextRun).toLocaleString()}`),t+=`
720
720
  `;return t}async function Yy(e,t){let n=C(e.slice(1),{});if(`error`in n)return Ky(n.error);if(!t()){let e=await zy();if(!e)return Hy(`list`);let t=await e.listCronTasks();return t.length===0?{stdout:`No active cron tasks
721
721
  `,stderr:``,exitCode:0}:{stdout:Jy(t),stderr:``,exitCode:0}}let{ok:r,data:i}=await Wy(`GET`,``);if(!r)return{stdout:``,stderr:`crontask: failed to list: ${i.error??`unknown error`}\n`,exitCode:1};let a=i;return a.length===0?{stdout:`No active cron tasks
722
- `,stderr:``,exitCode:0}:{stdout:Jy(a),stderr:``,exitCode:0}}async function Xy(e,t){let n=e[0],r=C(e.slice(1),{});if(`error`in r)return Ky(r.error);let i=r.positionals[0];if(!i)return{stdout:``,stderr:`crontask: ${n} requires an ID\n`,exitCode:1};if(!t()){let e=await zy();return e?await e.deleteCronTask(i)?{stdout:`Deleted cron task "${i}"\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`crontask: task "${i}" not found\n`,exitCode:1}:Hy(`delete`)}let{ok:a,status:o,data:s}=await Wy(`DELETE`,`/${i}`);return a?{stdout:`Deleted cron task "${i}"\n`,stderr:``,exitCode:0}:o===404?{stdout:``,stderr:`crontask: task "${i}" not found\n`,exitCode:1}:{stdout:``,stderr:`crontask: failed to delete: ${s.error??`unknown error`}\n`,exitCode:1}}function Zy(e={}){let t=e.hasLocalNodeServer??(()=>!1);return S(`crontask`,async(e,n)=>{let r=e[0];if(!r||w(e,{valueFlags:Gy}))return Uy();try{switch(r){case`create`:return await qy(e,n.env,t);case`list`:return await Yy(e,t);case`delete`:case`kill`:return await Xy(e,t);default:return{stdout:``,stderr:`crontask: unknown command "${r}"\n`,exitCode:1}}}catch(e){return{stdout:``,stderr:`crontask: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function Qy(e){return S(`curlwright`,async(t,n)=>{let{runCurlwright:r}=await import(`./run-BUv3t71i.js`);return r(e,t,n)})}function $y(e,t={}){if(!Number.isFinite(e)||e<0)return``;if(t.si){if(e<1e3)return`${Math.round(e)} B`;let t=[`kB`,`MB`,`GB`,`TB`],n=e/1e3,r=0;for(;n>=1e3&&r<t.length-1;)n/=1e3,r+=1;return`${n<10?n.toFixed(1):Math.round(n)} ${t[r]}`}if(e<1024)return Number.isInteger(e)?`${e} B`:e>=.1?`${e.toFixed(1)} B`:e>0?`${Math.max(.01,Number(e.toFixed(2)))} B`:`0 B`;let n=[`KB`,`MB`,`GB`,`TB`,`PB`],r=e,i=-1;for(;r>=1024&&i<n.length-1;)r/=1024,i+=1;return`${r.toFixed(1)} ${n[i]}`}function eb(e){return $y(e,{si:!1})}const tb=`slicc-fs`;async function nb(){try{let e=globalThis.indexedDB;if(!e)return!1;let t=e.databases;return typeof t!=`function`||(await t.call(e)).some(e=>e.name===tb)}catch{return!0}}async function rb(){let e=globalThis.indexedDB;return e?new Promise(t=>{let n;try{n=e.deleteDatabase(tb)}catch{t(`error`);return}n.onsuccess=()=>t(`deleted`),n.onerror=()=>t(`error`),n.onblocked=()=>t(`blocked`)}):`error`}async function ib(){if(!await nb())return{kind:`absent`,message:`legacy slicc-fs IDB not present — nothing to clean`};let e=await rb();return e===`deleted`?{kind:`deleted`,message:`legacy slicc-fs IDB deleted`}:e===`blocked`?{kind:`blocked`,message:`legacy slicc-fs IDB delete blocked by another connection — close other tabs and retry`}:{kind:`error`,message:`legacy slicc-fs IDB delete failed`}}function ab(){return`slicc-fs-cleanup — delete the legacy slicc-fs IndexedDB
722
+ `,stderr:``,exitCode:0}:{stdout:Jy(a),stderr:``,exitCode:0}}async function Xy(e,t){let n=e[0],r=C(e.slice(1),{});if(`error`in r)return Ky(r.error);let i=r.positionals[0];if(!i)return{stdout:``,stderr:`crontask: ${n} requires an ID\n`,exitCode:1};if(!t()){let e=await zy();return e?await e.deleteCronTask(i)?{stdout:`Deleted cron task "${i}"\n`,stderr:``,exitCode:0}:{stdout:``,stderr:`crontask: task "${i}" not found\n`,exitCode:1}:Hy(`delete`)}let{ok:a,status:o,data:s}=await Wy(`DELETE`,`/${i}`);return a?{stdout:`Deleted cron task "${i}"\n`,stderr:``,exitCode:0}:o===404?{stdout:``,stderr:`crontask: task "${i}" not found\n`,exitCode:1}:{stdout:``,stderr:`crontask: failed to delete: ${s.error??`unknown error`}\n`,exitCode:1}}function Zy(e={}){let t=e.hasLocalNodeServer??(()=>!1);return S(`crontask`,async(e,n)=>{let r=e[0];if(!r||w(e,{valueFlags:Gy}))return Uy();try{switch(r){case`create`:return await qy(e,n.env,t);case`list`:return await Yy(e,t);case`delete`:case`kill`:return await Xy(e,t);default:return{stdout:``,stderr:`crontask: unknown command "${r}"\n`,exitCode:1}}}catch(e){return{stdout:``,stderr:`crontask: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}function Qy(e){return S(`curlwright`,async(t,n)=>{let{runCurlwright:r}=await import(`./run-DGl39wQp.js`);return r(e,t,n)})}function $y(e,t={}){if(!Number.isFinite(e)||e<0)return``;if(t.si){if(e<1e3)return`${Math.round(e)} B`;let t=[`kB`,`MB`,`GB`,`TB`],n=e/1e3,r=0;for(;n>=1e3&&r<t.length-1;)n/=1e3,r+=1;return`${n<10?n.toFixed(1):Math.round(n)} ${t[r]}`}if(e<1024)return Number.isInteger(e)?`${e} B`:e>=.1?`${e.toFixed(1)} B`:e>0?`${Math.max(.01,Number(e.toFixed(2)))} B`:`0 B`;let n=[`KB`,`MB`,`GB`,`TB`,`PB`],r=e,i=-1;for(;r>=1024&&i<n.length-1;)r/=1024,i+=1;return`${r.toFixed(1)} ${n[i]}`}function eb(e){return $y(e,{si:!1})}const tb=`slicc-fs`;async function nb(){try{let e=globalThis.indexedDB;if(!e)return!1;let t=e.databases;return typeof t!=`function`||(await t.call(e)).some(e=>e.name===tb)}catch{return!0}}async function rb(){let e=globalThis.indexedDB;return e?new Promise(t=>{let n;try{n=e.deleteDatabase(tb)}catch{t(`error`);return}n.onsuccess=()=>t(`deleted`),n.onerror=()=>t(`error`),n.onblocked=()=>t(`blocked`)}):`error`}async function ib(){if(!await nb())return{kind:`absent`,message:`legacy slicc-fs IDB not present — nothing to clean`};let e=await rb();return e===`deleted`?{kind:`deleted`,message:`legacy slicc-fs IDB deleted`}:e===`blocked`?{kind:`blocked`,message:`legacy slicc-fs IDB delete blocked by another connection — close other tabs and retry`}:{kind:`error`,message:`legacy slicc-fs IDB delete failed`}}function ab(){return`slicc-fs-cleanup — delete the legacy slicc-fs IndexedDB
723
723
 
724
724
  Usage:
725
725
  slicc-fs-cleanup Delete the legacy slicc-fs IDB.
@@ -936,7 +936,7 @@ Options:
936
936
  --pattern <glob> File pattern to match, e.g. "*.md", "*.bsh" (required)
937
937
  --scoop <target> Scoop name, cone name, or folder. Omit for your own cone.
938
938
  --name <name> Human-readable name for the watcher
939
- `);switch(n){case`list`:return dC(e);case`delete`:return fC(e);case`create`:return await hC(e,t.env);default:return lC(`unknown command: ${n}`)}})}function _C(e){return S(`gelatiere`,async(t,n)=>{let{runGelatiere:r}=await import(`./run-_oGn-1AP.js`);return r(t,n,e)})}function vC(e={}){return S(`go`,async(t,n)=>{let{runGoCommand:r}=await import(`./go-driver-CYR67gv1.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}function yC(){return{stdout:`usage: hear [-i file] [-l lang] [-T seconds] [-d deviceId] [--engine name]
939
+ `);switch(n){case`list`:return dC(e);case`delete`:return fC(e);case`create`:return await hC(e,t.env);default:return lC(`unknown command: ${n}`)}})}function _C(e){return S(`gelatiere`,async(t,n)=>{let{runGelatiere:r}=await import(`./run-DHBSR6nH.js`);return r(t,n,e)})}function vC(e={}){return S(`go`,async(t,n)=>{let{runGoCommand:r}=await import(`./go-driver-CYR67gv1.js`);return r(t,n,{processConfig:e.buildProcessConfig?.(n.env),terminal:e.terminal,gate:e.gate,commands:e.commands,gitIdentity:e.gitIdentity})})}function yC(){return{stdout:`usage: hear [-i file] [-l lang] [-T seconds] [-d deviceId] [--engine name]
940
940
  hear --devices | --status | --warmup
941
941
 
942
942
  Speech recognition: listens on the microphone until you pause, then
@@ -1221,7 +1221,7 @@ Options:
1221
1221
  `,stderr:``,exitCode:0}}let a=e.routes.get(r.targetId)??[],o=a.length,s=a.filter(e=>e.pattern!==i);if(e.routes.set(r.targetId,s),s.length===0){let t=e.routeCleanup.get(r.targetId);t&&(t(),e.routeCleanup.delete(r.targetId))}return{stdout:`Removed ${o-s.length} route(s) matching "${i}"\n`,stderr:``,exitCode:0}},GT=`/.playwright`;function KT(e,t){return e?`${t.replace(/\/+$/,``)}${GT}`:GT}async function qT(e,t,n){if(!t.sessionDirsCreated.has(n)){for(let t of[n,`${n}/snapshots`,`${n}/screenshots`])try{await e.mkdir(t,{recursive:!0})}catch(e){if(!Nn(e))throw e}t.sessionDirsCreated.add(n)}}async function JT(e,t,n,r,i){try{return await e.withTab(n,async e=>{let{url:a,title:o,text:s,refToSelector:c,refToBackendNodeId:l,refToFrameId:u}=await ce(e),d={url:a,title:o,refToSelector:c,refToBackendNodeId:l,refToFrameId:u,content:s,timestamp:Date.now()};r.snapshots.set(n,d);let f=[`Page URL: ${a}`,`Page Title: ${o}`,``,s].join(`
1222
1222
  `),p=`${i}/snapshots/page-${jn(new Date)}.yml`;return await t.writeFile(p,f),p})}catch{return null}}async function YT(e,t,n,r){await qT(e,t,n);let i=new Date().toISOString(),a=`playwright-cli ${r.command}${r.args.length?` `+r.args.join(` `):``}`,o=r.result.exitCode===0?r.result.stdout.trim()||`OK`:`Error: ${r.result.stderr.trim()}`,s=[`### ${a}`,`- **Time**: ${i}`];if(r.tabUrl||r.targetId){let e=r.tabUrl?`${r.tabUrl}${r.targetId?` (targetId: ${r.targetId})`:``}`:`targetId: ${r.targetId}`;s.push(`- **Tab**: ${e}`)}s.push(`- **Result**: ${o}`),r.snapshotPath&&s.push(``,`[Snapshot](${r.snapshotPath})`),s.push(`---`,``);let c=s.join(`
1223
1223
  `)+`
1224
- `,l=`${n}/session.md`,u=``;try{let t=await e.readFile(l);u=typeof t==`string`?t:new TextDecoder().decode(t)}catch{}await e.writeFile(l,u+c)}function XT(){return import(`./snapshot-features-BLo8PAIz.js`)}async function ZT(e,t,n,r){let i=await e.getAccessibilityTreeForFrame(r.frameId),a=new Map,o=new Map,s=new Map,c=se(i,a,o,{value:0},``,`f1`);for(let e of a.keys())s.set(e,r.frameId);let l=c.join(`
1224
+ `,l=`${n}/session.md`,u=``;try{let t=await e.readFile(l);u=typeof t==`string`?t:new TextDecoder().decode(t)}catch{}await e.writeFile(l,u+c)}function XT(){return import(`./snapshot-features-DeJe8uji.js`)}async function ZT(e,t,n,r){let i=await e.getAccessibilityTreeForFrame(r.frameId),a=new Map,o=new Map,s=new Map,c=se(i,a,o,{value:0},``,`f1`);for(let e of a.keys())s.set(e,r.frameId);let l=c.join(`
1225
1225
  `);return t.snapshots.set(n,{url:r.url,title:r.name,refToSelector:a,refToBackendNodeId:o,refToFrameId:s,content:l,timestamp:Date.now()}),l}async function QT(e,t){await e.send(`DOM.enable`),await e.send(`Runtime.enable`);let n=(await e.send(`DOM.resolveNode`,{backendNodeId:t})).object;if(n?.objectId)return(await e.send(`Runtime.callFunctionOn`,{objectId:n.objectId,functionDeclaration:`function() {
1226
1226
  this.scrollIntoView({ block: 'center' });
1227
1227
  const r = this.getBoundingClientRect();
@@ -1299,7 +1299,7 @@ Options:
1299
1299
  el.dispatchEvent(new Event('input', { bubbles: true }));
1300
1300
  return el.files.length;
1301
1301
  })()`,r=await t.send(`Runtime.evaluate`,{expression:n,returnByValue:!0,awaitPromise:!1},e);if(r.exceptionDetails){let e=r.exceptionDetails.exception?.description??r.exceptionDetails.text??`File upload failed`;throw Error(e)}});let p=d.map(e=>e.split(`/`).pop()??e).join(`, `);return{stdout:`Uploaded ${d.length} file(s): ${p}\n`,stderr:``,exitCode:0}}],[`state-save`,lE],[`state-load`,uE],[`console`,VC],[`requests`,kT],[`request`,AT],[`request-headers`,jT],[`request-body`,MT],[`response-headers`,NT],[`response-body`,PT],[`mousemove`,Nw],[`mousedown`,Pw],[`mouseup`,Fw],[`mousewheel`,Iw],[`drop`,Lw],[`route`,HT],[`route-list`,UT],[`unroute`,WT],[`generate-locator`,ZC],[`highlight`,QC]]);function NE(){let e=(In.string??[]).map(e=>`--${e}`),t=new Set(In.boolean??[]);for(let[e,n]of Object.entries(In.alias??{})){let r=[e,...Array.isArray(n)?n:[n]];if(r.some(e=>t.has(e)))for(let e of r)t.add(e)}return{value:e,bool:[...[...t].map(e=>`--${e}`),`--help`,`-h`,`--no-iframes`]}}function PE(e){return e.map(e=>e===`--no-iframes`||e.startsWith(`--no-iframes=`)?e.replace(`--no-iframes`,`--_noiframes`):e)}function FE(e){return{...e,bool:[...e.bool??[],`--_noiframes`],value:[...e.value??[],`--_noiframes`]}}const IE=2e3;function LE(e,t){if(typeof e.getTabLockStats!=`function`)return;let n=e.getTabLockStats();return t?{totalWaitMs:n.totalWaitMs,tabWaitMs:e.getTabLockStats(t).tabWaitMs}:{totalWaitMs:n.totalWaitMs}}function RE(e,t,n,r){if(!t||typeof e.getTabLockStats!=`function`)return r;let i=e.getTabLockStats(),a=i.totalWaitMs-t.totalWaitMs;if(a<IE)return r;let o=(a/1e3).toFixed(1),s=n&&t.tabWaitMs!==void 0?e.getTabLockStats(n).tabWaitMs-t.tabWaitMs:0,c=`note: browser bridge contended — lock waits totaled ${o}s while this command ran, ${s>=IE?`${(s/1e3).toFixed(1)}s of it waiting on this tab (--tab=${n})`:`all of it waiting on the bridge, not on this tab`} (queue depth ${i.queueDepth}). Commands on the same tab serialize; commands on different tabs run in parallel — stagger callers on THIS tab, or give each caller its own tab.
1302
- `;return{...r,stderr:r.stderr+c}}async function zE(e,t,n){let r=n instanceof Error?n.message:String(n);return{stdout:``,stderr:`Error: ${(t.tab?await Ln(e,t.tab,n):null)??r}\n`,exitCode:1}}function BE(e,t,n){return{stdout:``,stderr:`${e} ${t}: ${n===void 0?`aborted: the caller stopped waiting for it`:n instanceof Error?n.message:String(n)}\n`,exitCode:130}}async function VE(e,t,n){let r=ME.get(t);if(!r)return{stdout:``,stderr:`Unknown command: ${t}\nRun "playwright-cli help" for usage.\n`,exitCode:1};let{signal:i}=n;try{let a=await r(n);return i?.aborted?BE(e,t,void 0):a}catch(r){return i?.aborted?BE(e,t,r):await zE(n.browser,n.flags,r)}}async function HE(e,t,n,r){let i=C(PE(n),FE(r));if(`error`in i)return{answer:{stdout:``,stderr:`${e} ${t}: ${i.error}\n`,exitCode:1}};let a;try{({flags:a}=Fn(n))}catch(n){return{answer:{stdout:``,stderr:`${e} ${t}: ${n instanceof Error?n.message:String(n)}\n`,exitCode:1}}}if(a.help===`true`||a.h===`true`){let{formatSubcommandHelp:n}=await import(`./help-BSRIYdTr.js`);return{answer:{stdout:n(e,t),stderr:``,exitCode:0}}}let o=null;try{let{validateSubcommandArgs:r}=await import(`./validate-args-BcxRh84E.js`);o=r(e,t,n,i.positionals)}catch{o=null}return o?{answer:{stdout:``,stderr:o,exitCode:1}}:{positional:i.positionals,flags:a}}function UE(e,t,n,r={}){let i=t?Mn(t,n):null,a=NE();return S(e,async(o,s)=>{if(o.length===0||o[0]===`help`||o[0]===`--help`||o[0]===`-h`){let{formatHelp:t}=await import(`./help-BSRIYdTr.js`);return{stdout:t(e)+`
1302
+ `;return{...r,stderr:r.stderr+c}}async function zE(e,t,n){let r=n instanceof Error?n.message:String(n);return{stdout:``,stderr:`Error: ${(t.tab?await Ln(e,t.tab,n):null)??r}\n`,exitCode:1}}function BE(e,t,n){return{stdout:``,stderr:`${e} ${t}: ${n===void 0?`aborted: the caller stopped waiting for it`:n instanceof Error?n.message:String(n)}\n`,exitCode:130}}async function VE(e,t,n){let r=ME.get(t);if(!r)return{stdout:``,stderr:`Unknown command: ${t}\nRun "playwright-cli help" for usage.\n`,exitCode:1};let{signal:i}=n;try{let a=await r(n);return i?.aborted?BE(e,t,void 0):a}catch(r){return i?.aborted?BE(e,t,r):await zE(n.browser,n.flags,r)}}async function HE(e,t,n,r){let i=C(PE(n),FE(r));if(`error`in i)return{answer:{stdout:``,stderr:`${e} ${t}: ${i.error}\n`,exitCode:1}};let a;try{({flags:a}=Fn(n))}catch(n){return{answer:{stdout:``,stderr:`${e} ${t}: ${n instanceof Error?n.message:String(n)}\n`,exitCode:1}}}if(a.help===`true`||a.h===`true`){let{formatSubcommandHelp:n}=await import(`./help-DvETwJex.js`);return{answer:{stdout:n(e,t),stderr:``,exitCode:0}}}let o=null;try{let{validateSubcommandArgs:r}=await import(`./validate-args-BcxRh84E.js`);o=r(e,t,n,i.positionals)}catch{o=null}return o?{answer:{stdout:``,stderr:o,exitCode:1}}:{positional:i.positionals,flags:a}}function UE(e,t,n,r={}){let i=t?Mn(t,n):null,a=NE();return S(e,async(o,s)=>{if(o.length===0||o[0]===`help`||o[0]===`--help`||o[0]===`-h`){let{formatHelp:t}=await import(`./help-DvETwJex.js`);return{stdout:t(e)+`
1303
1303
  `,stderr:``,exitCode:0}}let c=o[0],l=o.slice(1),u=await HE(e,c,l,a);if(`answer`in u)return u.answer;let{positional:d,flags:f}=u;if(!t||!i)return{stdout:``,stderr:`${e}: browser APIs are unavailable in this environment\n`,exitCode:1};let p=f.tab??null,m=LE(t,p),h=Qi(s.env),g=KT(r.isScoop?.()??!1,h),_=await VE(e,c,{browser:t,fs:n,state:i,positional:d,flags:f,scratchDir:h,sessionRoot:g,onTab:(e,n)=>t.withTab(e,n,{signal:s.signal}),signal:s.signal}),v=f.tab??null,ee=null;Un.has(c)&&_.exitCode===0&&v&&(ee=await JT(t,n,v,i,g));try{await YT(n,i,g,{command:c,args:l,result:_,snapshotPath:ee,targetId:v})}catch{}return RE(t,m,p,_)})}const WE=new Map([[`File operations`,[`ls`,`cat`,`head`,`tail`,`wc`,`touch`,`mkdir`,`rm`,`cp`,`mv`,`ln`,`chmod`,`stat`,`readlink`,`file`,`rmdir`,`rsync`]],[`Text processing`,[`grep`,`sed`,`awk`,`sort`,`uniq`,`cut`,`tr`,`tee`,`diff`,`patch`,`column`,`comm`,`egrep`,`fgrep`,`expand`,`unexpand`,`fold`,`join`,`nl`,`od`,`paste`,`rev`,`split`,`strings`,`tac`]],[`Search`,[`find`,`rg`]],[`Navigation & paths`,[`pwd`,`basename`,`dirname`,`tree`,`du`,`cd`]],[`Archives`,[`zip`,`unzip`,`pdftk`,`pdf`,`gunzip`,`gzip`,`zcat`]],[`Media`,[`convert`,`magick`,`pdftoppm`,`pdftocairo`,`pdftotext`,`ffmpeg`,`ffprobe`,`screencapture`]],[`Audio`,[`say`,`hear`,`afplay`,`chime`]],[`Environment & shell`,`echo.printf.env.printenv.export.alias.unalias.history.clear.true.false.bash.sh.commands.which.uname.man.host.oauth-token.secret.nuke.models.local-llm.cost.hostname.whoami.id.help.sleep.time.timeout.oauth-domain`.split(`.`)],[`Data processing`,[`xargs`,`jq`,`base64`,`date`,`expr`,`seq`]],[`Hashes`,[`md5sum`,`sha1sum`,`sha256sum`]],[`Network`,[`curl`,`curlwright`,`wget`,`dig`,`websocat`,`html-to-markdown`]],[`Version control`,[`git`]],[`Languages`,[`node`,`jsh`,`python`,`python3`,`pyodide`,`sqlite3`]],[`Virtualization`,[`v86`,`computer`]],[`Build tools`,[`tsc`,`tst`,`esbuild`,`biome`]],[`Packages`,[`ipk`,`hf`,`npm`,`i`,`ipx`,`npx`]],[`Skills`,[`skill`,`upskill`]],[`Browser & UI`,[`serve`,`open`,`imgcat`,...Vn,`sprinkle`]],[`Clipboard`,[`pbcopy`,`pbpaste`,`xclip`,`xsel`]],[`Filesystem`,[`mount`,`umount`,`fswatch`]],[`Scoops & agents`,[`agent`,`gelatiere`,`mcp`,`webhook`,`crontask`]],[`Process`,[`ps`,`kill`,`jshd`,`meminfo`,`uptime`]],[`Shell builtins (limited)`,[...w_]]]);function GE(e,t=[],n=[]){let r=[],i=new Set(e);for(let e of t)i.delete(e);for(let e of n)i.delete(e);r.push(`Available commands:
1304
1304
  `);let a=[];for(let[e,t]of WE){let n=t.filter(e=>i.has(e));if(n.length>0){r.push(` ${e}:`),r.push(` ${n.join(`, `)}\n`);for(let e of n)i.delete(e)}}for(let e of i)a.push(e);return a.length>0&&(r.push(` Other:`),r.push(` ${a.sort().join(`, `)}\n`)),t.length>0&&(r.push(` User scripts (.jsh):`),r.push(` ${t.sort().join(`, `)}\n`)),n.length>0&&(r.push(` Workflows:`),r.push(` ${n.sort().join(`, `)}\n`)),r.push(`Use '<command> --help' for details on a specific command.`),r.join(`
1305
1305
  `)+`
@@ -1403,7 +1403,7 @@ Options:
1403
1403
  `,exitCode:1};let i=[];for(let e of r.positionals){let t=n.fs.resolvePath(n.cwd,e);if(!(await n.fs.stat(t)).isFile)return{stdout:``,stderr:`imgcat: not a file: ${e}\n`,exitCode:1};let r=De(t);if(!Ee(r))return{stdout:``,stderr:`imgcat: unsupported media type: ${e}\n`,exitCode:1};let a=await n.fs.readFileBuffer(t),o=new Uint8Array(a.byteLength);o.set(a),i.push({path:t,mimeType:r,bytes:o})}try{return await e.onMediaPreview(i),{stdout:``,stderr:``,exitCode:0}}catch(e){return{stdout:``,stderr:`imgcat: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}})}const QD=new Set([`run`,`run-script`]),$D=new Set([`test`,`start`,`stop`,`restart`]),eO=new Set([` `,` `,`
1404
1404
  `,`;`,`|`,`&`,`(`,`)`,`{`,`}`,`<`,`>`]),tO=new Set([`;`,`|`,`&`,`(`,`)`,`{`,`
1405
1405
  `]),nO=/^[A-Za-z_][A-Za-z0-9_]*=/,rO=/^[@A-Za-z0-9._-]+$/,iO=new Set([`if`,`then`,`else`,`elif`,`fi`,`for`,`while`,`until`,`do`,`done`,`case`,`in`,`esac`,`function`,`time`,`!`]),aO=new Set([`if`,`then`,`else`,`elif`,`while`,`until`,`do`,`time`,`!`]),oO=new Set([`ipx`,`npx`]);function sO(e){return`'${e.replace(/'/g,`'\\''`)}'`}async function cO(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}function*lO(e){let t=b(e);for(;yield t,t!==`/`;)t=Ne(t).dir}function uO(e){if(typeof e!=`object`||!e)return{};let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}function dO(e){return typeof e==`string`?e:void 0}async function fO(e,t){for(let n of lO(t)){let t=x(n,`package.json`);if(!await e.exists(t))continue;let r;try{r=JSON.parse(await cO(e,t))}catch(e){throw Error(`${t} is not valid JSON: ${e instanceof Error?e.message:String(e)}`)}return{dir:n,name:dO(r.name),version:dO(r.version),scripts:uO(r.scripts)}}return null}function pO(e,t){let n=t,r=``;for(;n<e.length;){let t=e[n];if(r!==``){t===`\\`&&r===`"`?n++:t===r&&(r=``),n++;continue}if(t===`'`||t===`"`){r=t,n++;continue}if(t===`\\`){n+=2;continue}if(eO.has(t))break;n++}return{start:t,end:n,text:e.slice(t,n)}}function mO(e){let t=[],n=0,r=!0;for(;n<e.length;){let i=e[n];if(i===` `||i===` `){n++;continue}if(tO.has(i)){r=!0,n++;continue}let a=pO(e,n);if(a.end===a.start){n++;continue}if(r&&!nO.test(a.text)){if(aO.has(a.text)){n=a.end;continue}t.push(a),r=!1}n=a.end}return t}function hO(e,t){return!rO.test(e)||iO.has(e)||oO.has(e)?!1:!t.isRegistered(e)}async function gO(e,t){let n=mO(e).filter(e=>hO(e.text,t));if(n.length===0)return e;let r=[];for(let e of n)await t.hasLocalBin(e.text)&&r.push(e);if(r.length===0)return e;let i=e;for(let e of[...r].reverse())i=`${i.slice(0,e.start)}ipx ${i.slice(e.start)}`;return i}function _O(e){let t=[];for(let n of lO(e))t.push(x(n,`node_modules`,`.bin`));return t}function vO(e,t,n,r){let i=r.env.get(`PATH`)??``,a={PATH:[..._O(e.dir),i].filter(e=>e!==``).join(`:`),npm_lifecycle_event:t,npm_lifecycle_script:n};return e.name!==void 0&&(a.npm_package_name=e.name),e.version!==void 0&&(a.npm_package_version=e.version),a}function yO(e){return e.name===void 0?e.dir:e.version===void 0?e.name:`${e.name}@${e.version}`}function bO(e,t){let n=Object.entries(t.scripts);if(n.length===0)return`${e}: no scripts defined in ${x(t.dir,`package.json`)}\n`;let r=[`Scripts available in ${yO(t)} via \`${e} run\`:`];for(let[e,t]of n)r.push(` ${e}`),r.push(` ${t}`);return`${r.join(`
1406
- `)}\n`}function xO(e,t){return t===`--silent`||t===`-s`?(e.silent=!0,!0):t===`--if-present`&&(e.ifPresent=!0,!0)}function SO(e){let t={silent:!1,ifPresent:!1},n=[],r,i=!1;for(let a of e){if(i){n.push(a);continue}if(a===`--`){i=!0;continue}xO(t,a)||(r===void 0?r=a:n.push(a))}return{flags:t,script:r,extraArgs:n}}function CO(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}function wO(e,t,n,r){let i=r.length>0?` ${r.map(sO).join(` `)}`:``,a=[],o=e.scripts[`pre${t}`];o!==void 0&&a.push({event:`pre${t}`,body:o}),a.push({event:t,body:`${n}${i}`});let s=e.scripts[`post${t}`];return s!==void 0&&a.push({event:`post${t}`,body:s}),a}async function TO(e,t,n,r){if(n===`start`&&await r.exists(x(t.dir,`server.js`)))return`node server.js`;if(n===`restart`)return`${e} stop --if-present && ${e} start`}function EO(e,t,n){let r=new Set(n.getRegisteredCommands?.()??[]);return{isRegistered:e=>r.has(e),hasLocalBin:async n=>{for(let r of _O(t.dir))if(await e.exists(x(r,n)))return!0;return!1}}}async function DO(e,t,n,r,i,a){let o=i.exec;if(!o)return CO(e,`run requires shell exec support, which this context does not provide`);let s=EO(a.fs,t,i),c=yO(t),l=``,u=``;for(let a of n){r.silent||(l+=`\n> ${c} ${a.event}\n> ${a.body}\n\n`);let n=await o(await gO(a.body,s),{cwd:t.dir,env:vO(t,a.event,a.body,i),stdin:pi(i.stdin),stdinKind:`bytes`});if(l+=n.stdout,u+=n.stderr,n.exitCode!==0)return u+=`${e}: script '${a.event}' exited with code ${n.exitCode}\n`,{stdout:l,stderr:u,exitCode:n.exitCode}}return{stdout:l,stderr:u,exitCode:0}}async function OO(e,t,n,r){let i;try{i=await fO(r.fs,n.cwd)}catch(t){return CO(e,t instanceof Error?t.message:String(t))}if(!i)return CO(e,`no package.json found in ${n.cwd} or any parent directory — nothing to run`);let{flags:a,script:o,extraArgs:s}=SO(t);if(o===void 0)return{stdout:bO(e,i),stderr:``,exitCode:0};let c=i.scripts[o]??await TO(e,i,o,r.fs)??void 0;if(c===void 0){if(a.ifPresent)return{stdout:``,stderr:``,exitCode:0};let t=Object.keys(i.scripts);return CO(e,`missing script: ${o}${t.length>0?` (available: ${t.join(`, `)})`:` (${x(i.dir,`package.json`)} defines no scripts)`}`)}return DO(e,i,wO(i,o,c,s),a,n,r)}const kO=()=>import(`./installer-DU0Ft-ta.js`),AO=new Set([`install`,`i`,`add`]),jO=new Set([`uninstall`,`remove`,`rm`,`un`]),MO=new Set([`list`,`ls`]),NO=new Set([`-g`,`--global`,`--location=global`]),PO=[`-g`,`--global`,`-D`,`--save-dev`];function FO(e){return`${e} - install packages from the npm registry into node_modules
1406
+ `)}\n`}function xO(e,t){return t===`--silent`||t===`-s`?(e.silent=!0,!0):t===`--if-present`&&(e.ifPresent=!0,!0)}function SO(e){let t={silent:!1,ifPresent:!1},n=[],r,i=!1;for(let a of e){if(i){n.push(a);continue}if(a===`--`){i=!0;continue}xO(t,a)||(r===void 0?r=a:n.push(a))}return{flags:t,script:r,extraArgs:n}}function CO(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}function wO(e,t,n,r){let i=r.length>0?` ${r.map(sO).join(` `)}`:``,a=[],o=e.scripts[`pre${t}`];o!==void 0&&a.push({event:`pre${t}`,body:o}),a.push({event:t,body:`${n}${i}`});let s=e.scripts[`post${t}`];return s!==void 0&&a.push({event:`post${t}`,body:s}),a}async function TO(e,t,n,r){if(n===`start`&&await r.exists(x(t.dir,`server.js`)))return`node server.js`;if(n===`restart`)return`${e} stop --if-present && ${e} start`}function EO(e,t,n){let r=new Set(n.getRegisteredCommands?.()??[]);return{isRegistered:e=>r.has(e),hasLocalBin:async n=>{for(let r of _O(t.dir))if(await e.exists(x(r,n)))return!0;return!1}}}async function DO(e,t,n,r,i,a){let o=i.exec;if(!o)return CO(e,`run requires shell exec support, which this context does not provide`);let s=EO(a.fs,t,i),c=yO(t),l=``,u=``;for(let a of n){r.silent||(l+=`\n> ${c} ${a.event}\n> ${a.body}\n\n`);let n=await o(await gO(a.body,s),{cwd:t.dir,env:vO(t,a.event,a.body,i),stdin:pi(i.stdin),stdinKind:`bytes`});if(l+=n.stdout,u+=n.stderr,n.exitCode!==0)return u+=`${e}: script '${a.event}' exited with code ${n.exitCode}\n`,{stdout:l,stderr:u,exitCode:n.exitCode}}return{stdout:l,stderr:u,exitCode:0}}async function OO(e,t,n,r){let i;try{i=await fO(r.fs,n.cwd)}catch(t){return CO(e,t instanceof Error?t.message:String(t))}if(!i)return CO(e,`no package.json found in ${n.cwd} or any parent directory — nothing to run`);let{flags:a,script:o,extraArgs:s}=SO(t);if(o===void 0)return{stdout:bO(e,i),stderr:``,exitCode:0};let c=i.scripts[o]??await TO(e,i,o,r.fs)??void 0;if(c===void 0){if(a.ifPresent)return{stdout:``,stderr:``,exitCode:0};let t=Object.keys(i.scripts);return CO(e,`missing script: ${o}${t.length>0?` (available: ${t.join(`, `)})`:` (${x(i.dir,`package.json`)} defines no scripts)`}`)}return DO(e,i,wO(i,o,c,s),a,n,r)}const kO=()=>import(`./installer-CmAHuSft.js`),AO=new Set([`install`,`i`,`add`]),jO=new Set([`uninstall`,`remove`,`rm`,`un`]),MO=new Set([`list`,`ls`]),NO=new Set([`-g`,`--global`,`--location=global`]),PO=[`-g`,`--global`,`-D`,`--save-dev`];function FO(e){return`${e} - install packages from the npm registry into node_modules
1407
1407
  and run package.json scripts; also install conda/emscripten-forge
1408
1408
  packages via '${e} mamba'
1409
1409
 
@@ -1479,7 +1479,7 @@ manifest without rewriting it. With -g, packages go to /shared/lib/node_modules
1479
1479
  and deps are recorded in /shared/lib/package.json. Existing fields are
1480
1480
  preserved. Idempotent: re-installing an already-satisfied package is a clean
1481
1481
  no-op.
1482
- `}function IO(e){let t=C(e,{bool:PO,value:[`--location`]});if(`error`in t)return t;let n=t.values.get(`--location`);return n!==void 0&&n!==`global`?{error:`unknown flag: --location=${n}`}:{global:t.bools.has(`-g`)||t.bools.has(`--global`)||n===`global`,saveDev:t.bools.has(`-D`)||t.bools.has(`--save-dev`),specs:t.positionals}}function LO(e){let t=!1,n=[];for(let r of e){if(NO.has(r)){t=!0;continue}r.startsWith(`-`)||n.push(r)}return{global:t,specs:n}}function RO(e){return w(e)}function zO(e){return e instanceof Error?e.message:String(e)}async function BO(e){e.scriptCatalog?.invalidateJsh(),await e.syncScriptCommands?.()}function VO(e,t){let n=e===`i`;return S(e,async(r,i)=>{if(n)return RO(r)?{stdout:FO(e),stderr:``,exitCode:0}:UO(e,r,i,t);if(r[0]===`mamba`){let{runIpkMamba:n}=await import(`./ipk-mamba-BhzmAVqX.js`);return n(e,r.slice(1),i,t)}if(RO(r))return{stdout:FO(e),stderr:``,exitCode:0};if(r.length===0)return{stdout:FO(e),stderr:`${e}: missing subcommand\n`,exitCode:1};let a=r[0],o=r.slice(1);return AO.has(a)?UO(e,o,i,t):jO.has(a)?GO(e,o,i,t):MO.has(a)?KO(e,o,i,t):a===`root`?qO(e,o,i,t):QD.has(a)?OO(e,o,i,{fs:t.fs}):$D.has(a)?OO(e,r,i,{fs:t.fs}):{stdout:``,stderr:`${e}: unknown subcommand '${a}' (supported: install, uninstall, list, root, run, mamba)\n`,exitCode:1}})}async function HO(e,t,n){let{installFromManifest:r,ManifestNotFoundError:i}=await kO(),a;try{a=await r({fs:n.fs,fetch:n.fetch,cwd:t.cwd})}catch(t){return t instanceof i?{stdout:``,stderr:`${e}: ${t.message}\n`,exitCode:1}:{stdout:``,stderr:`${e}: install failed: ${zO(t)}\n`,exitCode:1}}if(a.empty&&a.errors.length===0)return{stdout:`${e}: nothing to install (package.json declares no dependencies)\n`,stderr:``,exitCode:0};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),s=[...(a.notes??[]).map(t=>`${e}: ${t}`),...a.errors.map(t=>`${e}: failed to install ${t.spec}: ${zO(t.error)}`)];return{stdout:o.length>0?`${o.join(`
1482
+ `}function IO(e){let t=C(e,{bool:PO,value:[`--location`]});if(`error`in t)return t;let n=t.values.get(`--location`);return n!==void 0&&n!==`global`?{error:`unknown flag: --location=${n}`}:{global:t.bools.has(`-g`)||t.bools.has(`--global`)||n===`global`,saveDev:t.bools.has(`-D`)||t.bools.has(`--save-dev`),specs:t.positionals}}function LO(e){let t=!1,n=[];for(let r of e){if(NO.has(r)){t=!0;continue}r.startsWith(`-`)||n.push(r)}return{global:t,specs:n}}function RO(e){return w(e)}function zO(e){return e instanceof Error?e.message:String(e)}async function BO(e){e.scriptCatalog?.invalidateJsh(),await e.syncScriptCommands?.()}function VO(e,t){let n=e===`i`;return S(e,async(r,i)=>{if(n)return RO(r)?{stdout:FO(e),stderr:``,exitCode:0}:UO(e,r,i,t);if(r[0]===`mamba`){let{runIpkMamba:n}=await import(`./ipk-mamba-D1bLinsh.js`);return n(e,r.slice(1),i,t)}if(RO(r))return{stdout:FO(e),stderr:``,exitCode:0};if(r.length===0)return{stdout:FO(e),stderr:`${e}: missing subcommand\n`,exitCode:1};let a=r[0],o=r.slice(1);return AO.has(a)?UO(e,o,i,t):jO.has(a)?GO(e,o,i,t):MO.has(a)?KO(e,o,i,t):a===`root`?qO(e,o,i,t):QD.has(a)?OO(e,o,i,{fs:t.fs}):$D.has(a)?OO(e,r,i,{fs:t.fs}):{stdout:``,stderr:`${e}: unknown subcommand '${a}' (supported: install, uninstall, list, root, run, mamba)\n`,exitCode:1}})}async function HO(e,t,n){let{installFromManifest:r,ManifestNotFoundError:i}=await kO(),a;try{a=await r({fs:n.fs,fetch:n.fetch,cwd:t.cwd})}catch(t){return t instanceof i?{stdout:``,stderr:`${e}: ${t.message}\n`,exitCode:1}:{stdout:``,stderr:`${e}: install failed: ${zO(t)}\n`,exitCode:1}}if(a.empty&&a.errors.length===0)return{stdout:`${e}: nothing to install (package.json declares no dependencies)\n`,stderr:``,exitCode:0};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),s=[...(a.notes??[]).map(t=>`${e}: ${t}`),...a.errors.map(t=>`${e}: failed to install ${t.spec}: ${zO(t.error)}`)];return{stdout:o.length>0?`${o.join(`
1483
1483
  `)}\n`:``,stderr:s.length>0?`${s.join(`
1484
1484
  `)}\n`:``,exitCode:a.errors.length===0?0:1}}async function UO(e,t,n,r){let i=IO(t);if(`error`in i)return{stdout:``,stderr:`${e}: ${i.error}\n`,exitCode:1};let{global:a,saveDev:o,specs:s}=i;if(a&&s.length===0)return{stdout:``,stderr:`${e}: global install requires at least one package name\n`,exitCode:1};if(s.length===0)return HO(e,n,r);let{installPackages:c}=await kO(),l;try{l=await c(s,{fs:r.fs,fetch:r.fetch,cwd:n.cwd,global:a,saveDev:o})}catch(t){return{stdout:``,stderr:`${e}: install failed: ${zO(t)}\n`,exitCode:1}}let u=l.results.map(t=>`${e}: installed ${t.name}@${t.version} -> ${t.installPath}`),d=[...(l.notes??[]).map(t=>`${e}: ${t}`),...l.errors.map(t=>`${e}: failed to install ${t.spec}: ${zO(t.error)}`)];return a&&l.results.length>0&&await BO(r),{stdout:u.length>0?`${u.join(`
1485
1485
  `)}\n`:``,stderr:d.length>0?`${d.join(`
@@ -1500,8 +1500,8 @@ Options:
1500
1500
  --force Install a package even when a SLICC built-in shadows it
1501
1501
  --global Resolve only from the shared global prefix (/shared/lib/node_modules)
1502
1502
  -h, --help Show this help message
1503
- `}async function hk(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function gk(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function _k(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*vk(e,t=!1){if(t){yield er;return}let n=b(e);for(;yield x(n,`node_modules`),n!==`/`;)n=Ne(n).dir;yield er}async function yk(e,t,n,r=!1){for(let i of vk(t,r)){let t=x(i,`.bin`,n);if(!await gk(e,t))continue;let r=await hk(e,t),a=pk.exec(r),o=Ne(t).dir;return{binFilePath:a?x(o,a[1]):t,argvName:t}}return null}function bk(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function xk(e,t){if(typeof e==`string`)return{binName:bk(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,bk(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 Sk(e,t,n,r=!1){for(let i of vk(t,r)){let t=x(i,n),r=x(t,`package.json`);if(!await gk(e,r))continue;let a;try{a=JSON.parse(await hk(e,r))}catch{return null}let o=xk(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 Ck(e,t,n,r=!1){return await yk(e,t,n,r)??await Sk(e,t,n,r)}async function wk(e,t,n){for(let r of vk(t))if(await gk(e,x(r,n,`package.json`)))return!0;return!1}function Tk(e){return e instanceof Error?e.message:String(e)}function Ek(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function Dk(e,t,n,r){try{let{installPackages:i}=await import(`./installer-DU0Ft-ta.js`),a=await i([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(a.errors.length>0)return{error:Ek(e,`failed to install '${t}': ${Tk(a.errors[0].error)}`)};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:o.length>0?`${o.join(`
1504
- `)}\n`:``}}catch(n){return{error:Ek(e,`failed to install '${t}': ${Tk(n)}`)}}}async function Ok(e,t,n,r){return await gk(r,n)?null:await _k(r,n)?Ek(e,`bin target '${n}' is a directory, not a file`):Ek(e,`bin file '${n}' for '${t}' does not exist`)}async function kk(e,t,n,r,i,a){if(await wk(a.fs,i.cwd,t))return{error:Ek(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:uk(t);if(o)return{error:{stdout:``,stderr:fk(e,t,n,o),exitCode:1}};let s=await Dk(e,t,i,a);if(`error`in s)return s;let c=await Ck(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:Ek(e,`package '${t}' was installed but does not expose an executable bin`)}}function Ak(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:mk(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:mk(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await Ck(t.fs,r.cwd,c,o)}catch(t){return Ek(e,Tk(t))}let d=``;if(!u){if(o)return Ek(e,`no global bin '${c}' found in ${er}`);let n=await kk(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await Ok(e,c,u.binFilePath,t.fs);if(f)return f;let p=ri(await hk(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await ti(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function jk(e={}){return S(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-CB-l85sr.js`);return r(t,n,e)})}const Mk=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function Nk(e={}){return S(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return zk();let n=e.processManager??Pk();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1503
+ `}async function hk(e,t){let n=await e.readFile(t);return typeof n==`string`?n:new TextDecoder().decode(n)}async function gk(e,t){try{return(await e.stat(t)).type===`file`}catch{return!1}}async function _k(e,t){try{return(await e.stat(t)).type===`directory`}catch{return!1}}function*vk(e,t=!1){if(t){yield er;return}let n=b(e);for(;yield x(n,`node_modules`),n!==`/`;)n=Ne(n).dir;yield er}async function yk(e,t,n,r=!1){for(let i of vk(t,r)){let t=x(i,`.bin`,n);if(!await gk(e,t))continue;let r=await hk(e,t),a=pk.exec(r),o=Ne(t).dir;return{binFilePath:a?x(o,a[1]):t,argvName:t}}return null}function bk(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t!==-1)return e.slice(t+1)}return e}function xk(e,t){if(typeof e==`string`)return{binName:bk(t),binPath:e};if(typeof e!=`object`||!e)return null;let n=[t,bk(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 Sk(e,t,n,r=!1){for(let i of vk(t,r)){let t=x(i,n),r=x(t,`package.json`);if(!await gk(e,r))continue;let a;try{a=JSON.parse(await hk(e,r))}catch{return null}let o=xk(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 Ck(e,t,n,r=!1){return await yk(e,t,n,r)??await Sk(e,t,n,r)}async function wk(e,t,n){for(let r of vk(t))if(await gk(e,x(r,n,`package.json`)))return!0;return!1}function Tk(e){return e instanceof Error?e.message:String(e)}function Ek(e,t){return{stdout:``,stderr:`${e}: ${t}\n`,exitCode:1}}async function Dk(e,t,n,r){try{let{installPackages:i}=await import(`./installer-CmAHuSft.js`),a=await i([t],{fs:r.fs,fetch:r.fetch,cwd:n.cwd});if(a.errors.length>0)return{error:Ek(e,`failed to install '${t}': ${Tk(a.errors[0].error)}`)};let o=a.results.map(t=>`${e}: installed ${t.name}@${t.version}`);return{progress:o.length>0?`${o.join(`
1504
+ `)}\n`:``}}catch(n){return{error:Ek(e,`failed to install '${t}': ${Tk(n)}`)}}}async function Ok(e,t,n,r){return await gk(r,n)?null:await _k(r,n)?Ek(e,`bin target '${n}' is a directory, not a file`):Ek(e,`bin file '${n}' for '${t}' does not exist`)}async function kk(e,t,n,r,i,a){if(await wk(a.fs,i.cwd,t))return{error:Ek(e,`package '${t}' does not expose an executable bin`)};let o=r?void 0:uk(t);if(o)return{error:{stdout:``,stderr:fk(e,t,n,o),exitCode:1}};let s=await Dk(e,t,i,a);if(`error`in s)return s;let c=await Ck(a.fs,i.cwd,t);return c?{resolved:c,installProgress:s.progress}:{error:Ek(e,`package '${t}' was installed but does not expose an executable bin`)}}function Ak(e,t){return{name:e,trusted:!0,async execute(n,r){if(n.length===0||n[0]===`--help`||n[0]===`-h`)return{stdout:mk(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:mk(e),stderr:``,exitCode:1};let c=s[0],l=s.slice(1),u;try{u=await Ck(t.fs,r.cwd,c,o)}catch(t){return Ek(e,Tk(t))}let d=``;if(!u){if(o)return Ek(e,`no global bin '${c}' found in ${er}`);let n=await kk(e,c,l,i,r,t);if(`error`in n)return n.error;u=n.resolved,d=n.installProgress}let f=await Ok(e,c,u.binFilePath,t.fs);if(f)return f;let p=ri(await hk(t.fs,u.binFilePath)),m=[`node`,u.argvName,...l],h=await ti(p,m,r,void 0,{filename:u.binFilePath});return{stdout:h.stdout,stderr:d+h.stderr,exitCode:h.exitCode}}}}function jk(e={}){return S(`jshd`,async(t,n)=>{let{runJshd:r}=await import(`./run-DPEU0mPp.js`);return r(t,n,e)})}const Mk=new Set([`SIGINT`,`SIGTERM`,`SIGKILL`,`SIGSTOP`,`SIGCONT`]);function Nk(e={}){return S(`kill`,async t=>{if(t.length===0||t.includes(`--help`)||t.includes(`-h`))return zk();let n=e.processManager??Pk();if(!n)return{stdout:``,stderr:`kill: no process manager available in this runtime
1505
1505
  `,exitCode:1};let r=Fk(t);if(!r.ok)return{stdout:``,stderr:r.stderr,exitCode:r.exitCode};let{allDelivered:i,errors:a}=Ik(n,r.pids,r.signal);return{stdout:``,stderr:a.length?`${a.join(`
1506
1506
  `)}\n`:``,exitCode:+!i}})}function Pk(){let e=globalThis.__slicc_pm;return e instanceof Object&&typeof e.signal==`function`?e:null}function Fk(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
1507
1507
  `,exitCode:2};let i=Lk(n);if(i instanceof Error)return{ok:!1,stderr:`kill: ${i.message}\n`,exitCode:2};t=i;continue}if(i.startsWith(`-`)){let e=Rk(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
@@ -1574,7 +1574,7 @@ Common base URLs:
1574
1574
  `)+`
1575
1575
  `,stderr:``,exitCode:0}}function fA(e,t){let n=t.models.length;return{stdout:[`✓ ${e} (${cA(t.runtime,!1)})`,` Saved ${n} model${n===1?``:`s`} to Settings:`,...lA(t.models)].join(`
1576
1576
  `)+`
1577
- `,stderr:``,exitCode:0}}function pA(){return S(oA,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:sA(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-BlJDP1-W.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-DPdTCBrf.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(oA);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1577
+ `,stderr:``,exitCode:0}}function pA(){return S(oA,async e=>{if(e.includes(`--help`)||e.includes(`-h`))return{stdout:sA(),stderr:``,exitCode:0};let{getApiKeyForProvider:t,getRawApiKeyForProvider:n,getBaseUrlForProvider:r,addAccount:i}=await import(`./account-store-CckwuDB2.js`).then(e=>e.t),{verifyConnection:a}=await import(`./local-llm-FyJMIUux.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(oA);if(!s)return{stdout:``,stderr:`Local LLM is not configured. Open Settings → Providers → Local LLM and set a base URL.
1578
1578
  `,exitCode:1};let c=await a(s,t(oA)??void 0);if(!c.ok)return uA(s,c);if(o===`discover`){let e=n(oA)??``;return i(oA,e,s,c.models.join(`, `)),fA(s,c)}return dA(s,c)})}function mA(){return{stdout:`usage: man <topic>
1579
1579
 
1580
1580
  Fetches documentation for a given topic from sliccy.com.
@@ -1612,20 +1612,20 @@ authorization-code flow, stores the access token, and retries.
1612
1612
  On success, the server is persisted to /workspace/.mcp/servers.json and
1613
1613
  an alias shim is written to /workspace/.mcp/aliases/<name>.jsh so the
1614
1614
  short name resolves on the PATH.
1615
- `);let n=C(e,{});if(`error`in n)return bA(n.error);if(n.positionals.length<2)return G(`mcp add: expected <url> <name>`);let[r,i]=n.positionals;if(!/^https?:\/\//i.test(r))return G(`mcp add: invalid URL "${r}" (must start with http:// or https://)`);if(!/^[A-Za-z][A-Za-z0-9_-]*$/.test(i))return G(`mcp add: invalid name "${i}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:a,setServer:o}=await import(`./store-DNedyI8F.js`).then(e=>e.r);if(await a(i,t.fs))return G(`mcp add: a server named "${i}" already exists`);let{McpClient:s,McpAuthRequiredError:c}=await import(`./client-C4_ggaf5.js`).then(e=>e.n),l=new s({url:r,fetchImpl:t.fetchImpl}),u;try{await l.initialize()}catch(e){if(!(e instanceof c))throw e;u=await wA(r,i,e.resourceMetadataUrl,t),l=new s({url:r,fetchImpl:t.fetchImpl,getAuthHeader:()=>$A(i)}),await l.initialize()}let d=await l.toolsList(),f=await l.appsList(),p=new Date().toISOString();await o(i,{url:r,protocolVersion:l.getNegotiatedProtocolVersion(),tools:d,apps:f,addedAt:p,lastRefreshedAt:p,...u?{auth:u}:{}},t.fs),await ij(i,t);let m=await sj(i,f,t);if(u){let{registerMcpProvider:e}=await import(`./provider-8d5bGvbc.js`);e({name:i,serverUrl:r,auth:u})}return W([`Added MCP server "${i}" → ${r}`,` tools: ${d.length}, apps: ${f.length} (${m} sprinkle${m===1?``:`s`})`,` alias: ${yA}/${i}.jsh`,u?` auth: oauth (provider mcp:${i})`:` auth: none`].join(`
1615
+ `);let n=C(e,{});if(`error`in n)return bA(n.error);if(n.positionals.length<2)return G(`mcp add: expected <url> <name>`);let[r,i]=n.positionals;if(!/^https?:\/\//i.test(r))return G(`mcp add: invalid URL "${r}" (must start with http:// or https://)`);if(!/^[A-Za-z][A-Za-z0-9_-]*$/.test(i))return G(`mcp add: invalid name "${i}" (letters, digits, _ and - only; must start with a letter)`);let{getServer:a,setServer:o}=await import(`./store-DMPHri86.js`).then(e=>e.r);if(await a(i,t.fs))return G(`mcp add: a server named "${i}" already exists`);let{McpClient:s,McpAuthRequiredError:c}=await import(`./client-C4_ggaf5.js`).then(e=>e.n),l=new s({url:r,fetchImpl:t.fetchImpl}),u;try{await l.initialize()}catch(e){if(!(e instanceof c))throw e;u=await wA(r,i,e.resourceMetadataUrl,t),l=new s({url:r,fetchImpl:t.fetchImpl,getAuthHeader:()=>$A(i)}),await l.initialize()}let d=await l.toolsList(),f=await l.appsList(),p=new Date().toISOString();await o(i,{url:r,protocolVersion:l.getNegotiatedProtocolVersion(),tools:d,apps:f,addedAt:p,lastRefreshedAt:p,...u?{auth:u}:{}},t.fs),await ij(i,t);let m=await sj(i,f,t);if(u){let{registerMcpProvider:e}=await import(`./provider-Do8hIn0m.js`);e({name:i,serverUrl:r,auth:u})}return W([`Added MCP server "${i}" → ${r}`,` tools: ${d.length}, apps: ${f.length} (${m} sprinkle${m===1?``:`s`})`,` alias: ${yA}/${i}.jsh`,u?` auth: oauth (provider mcp:${i})`:` auth: none`].join(`
1616
1616
  `)+`
1617
- `)}async function wA(e,t,n,r){let{discoverAuth:i,dynamicRegister:a,runAuthFlow:o}=await import(`./oauth-D20BEoY6.js`),{saveOAuthAccount:s}=await import(`./account-store-BlJDP1-W.js`).then(e=>e.t),c=await tj(r.oauthFetchImpl),l=r.oauthLauncher??await ej(),u=await i(e,n,c);vA.debug(`MCP OAuth discovery succeeded`,{name:t,serverUrl:e,discoveryPath:u.discoveryPath,issuer:u.issuer});let d=await ia(we()),f=await a(u,d,c),p=u.supportedScopes&&u.supportedScopes.length>0?u.supportedScopes.join(` `):void 0,m=await o({asMetadata:u,clientId:f.clientId,scope:p,redirectUri:d,launcher:l,fetchImpl:c}),h=`mcp:${t}`;return await s({providerId:h,accessToken:m.accessToken,refreshToken:m.refreshToken,tokenExpiresAt:m.expiresAt,scopes:m.scope}),{providerId:h,authorizationServer:u.issuer,clientId:f.clientId,redirectUri:d,scope:m.scope??p,registrationClientUri:f.registrationClientUri}}async function TA(e,t){if(w(e))return W(`usage: mcp list
1618
- `);let n=C(e,{});if(`error`in n)return bA(n.error);let{ensureAllMcpProvidersRegistered:r}=await import(`./provider-8d5bGvbc.js`);await r();let{listServers:i}=await import(`./store-DNedyI8F.js`).then(e=>e.r),a=await i(t.fs),o=Object.keys(a).sort();if(o.length===0)return W("No MCP servers configured. Use `mcp add <url> <name>`.\n");let s=[[`NAME`,`URL`,`AUTH`,`TOOLS`,`APPS`,`ADDED`]];for(let e of o){let t=a[e];s.push([e,t.url,t.auth?`yes`:`no`,String(t.tools?.length??0),String(t.apps?.length??0),t.addedAt?t.addedAt.slice(0,10):`-`])}return W(EA(s))}function EA(e){let t=e[0].map((t,n)=>e.reduce((e,t)=>Math.max(e,(t[n]??``).length),0));return e.map(e=>e.map((e,n)=>e.padEnd(t[n])).join(` `).trimEnd()).join(`
1617
+ `)}async function wA(e,t,n,r){let{discoverAuth:i,dynamicRegister:a,runAuthFlow:o}=await import(`./oauth-D20BEoY6.js`),{saveOAuthAccount:s}=await import(`./account-store-CckwuDB2.js`).then(e=>e.t),c=await tj(r.oauthFetchImpl),l=r.oauthLauncher??await ej(),u=await i(e,n,c);vA.debug(`MCP OAuth discovery succeeded`,{name:t,serverUrl:e,discoveryPath:u.discoveryPath,issuer:u.issuer});let d=await ia(we()),f=await a(u,d,c),p=u.supportedScopes&&u.supportedScopes.length>0?u.supportedScopes.join(` `):void 0,m=await o({asMetadata:u,clientId:f.clientId,scope:p,redirectUri:d,launcher:l,fetchImpl:c}),h=`mcp:${t}`;return await s({providerId:h,accessToken:m.accessToken,refreshToken:m.refreshToken,tokenExpiresAt:m.expiresAt,scopes:m.scope}),{providerId:h,authorizationServer:u.issuer,clientId:f.clientId,redirectUri:d,scope:m.scope??p,registrationClientUri:f.registrationClientUri}}async function TA(e,t){if(w(e))return W(`usage: mcp list
1618
+ `);let n=C(e,{});if(`error`in n)return bA(n.error);let{ensureAllMcpProvidersRegistered:r}=await import(`./provider-Do8hIn0m.js`);await r();let{listServers:i}=await import(`./store-DMPHri86.js`).then(e=>e.r),a=await i(t.fs),o=Object.keys(a).sort();if(o.length===0)return W("No MCP servers configured. Use `mcp add <url> <name>`.\n");let s=[[`NAME`,`URL`,`AUTH`,`TOOLS`,`APPS`,`ADDED`]];for(let e of o){let t=a[e];s.push([e,t.url,t.auth?`yes`:`no`,String(t.tools?.length??0),String(t.apps?.length??0),t.addedAt?t.addedAt.slice(0,10):`-`])}return W(EA(s))}function EA(e){let t=e[0].map((t,n)=>e.reduce((e,t)=>Math.max(e,(t[n]??``).length),0));return e.map(e=>e.map((e,n)=>e.padEnd(t[n])).join(` `).trimEnd()).join(`
1619
1619
  `)+`
1620
1620
  `}async function DA(e,t){if(w(e))return W(`usage: mcp search <query>
1621
1621
 
1622
1622
  Case-insensitive substring search across the cached tools of every
1623
1623
  registered MCP server. Matches tool name OR description and prints a
1624
1624
  table of (server, tool, description, match-field) rows.
1625
- `);let n=C(e,{});if(`error`in n)return bA(n.error);if(n.positionals.length===0)return G(`mcp search: expected <query>`);let r=n.positionals[0],i=r.toLowerCase(),{ensureAllMcpProvidersRegistered:a}=await import(`./provider-8d5bGvbc.js`);await a();let{listServers:o}=await import(`./store-DNedyI8F.js`).then(e=>e.r),s=await o(t.fs),c=Object.keys(s).sort();if(c.length===0)return W("No MCP servers configured. Use `mcp add <url> <name>`.\n");let l=[];for(let e of c){let t=s[e].tools??[];for(let n of t){let t=n.description??``,r=n.name.toLowerCase().includes(i),a=t.toLowerCase().includes(i);if(!r&&!a)continue;let o=r&&a?`name+description`:r?`name`:`description`;l.push({server:e,tool:n.name,description:t,match:o})}}if(l.length===0)return W(`No tools matched "${r}".\n`);l.sort((e,t)=>e.server===t.server?e.tool.localeCompare(t.tool):e.server.localeCompare(t.server));let u=[[`SERVER`,`TOOL`,`DESCRIPTION`,`MATCH`]];for(let e of l)u.push([e.server,e.tool,OA(e.description),e.match]);return W(EA(u))}function OA(e){if(!e)return``;let t=e.replace(/\s+/g,` `).trim();return t.length<=60?t:t.slice(0,59)+`…`}async function kA(e,t){if(e.length===0||w(e))return e.length===0?G(`mcp delete: expected <name>`):W(`usage: mcp delete <name>
1626
- `);let n=C(e,{});if(`error`in n)return bA(n.error);let r=n.positionals[0];if(!r)return G(`mcp delete: expected <name>`);let{ensureMcpProviderRegistered:i,removeMcpProvider:a}=await import(`./provider-8d5bGvbc.js`);await i(r);let{deleteServer:o}=await import(`./store-DNedyI8F.js`).then(e=>e.r),s=await o(r,t.fs);await aj(r,t),await oj(r,t);let c=`mcp:${r}`,l=!1;try{let{removeAccount:e,getAccounts:t}=await import(`./account-store-BlJDP1-W.js`).then(e=>e.t);t().some(e=>e.providerId===c)&&(await e(c),l=!0)}catch(e){vA.warn(`mcp delete: OAuth removal failed`,{providerId:c,error:e instanceof Error?e.message:String(e)})}let u=a(r);return!s&&!l&&!u?G(`mcp delete: no server, alias, or account found for "${r}"`):W([`Removed MCP server "${r}"`,` servers.json: ${s?`removed`:`not present`}`,` alias: cleaned`,` sprinkles: cleaned`,` oauth: ${l?`removed`:`not present`}`,` provider: ${u?`unregistered`:`not registered`}`].join(`
1625
+ `);let n=C(e,{});if(`error`in n)return bA(n.error);if(n.positionals.length===0)return G(`mcp search: expected <query>`);let r=n.positionals[0],i=r.toLowerCase(),{ensureAllMcpProvidersRegistered:a}=await import(`./provider-Do8hIn0m.js`);await a();let{listServers:o}=await import(`./store-DMPHri86.js`).then(e=>e.r),s=await o(t.fs),c=Object.keys(s).sort();if(c.length===0)return W("No MCP servers configured. Use `mcp add <url> <name>`.\n");let l=[];for(let e of c){let t=s[e].tools??[];for(let n of t){let t=n.description??``,r=n.name.toLowerCase().includes(i),a=t.toLowerCase().includes(i);if(!r&&!a)continue;let o=r&&a?`name+description`:r?`name`:`description`;l.push({server:e,tool:n.name,description:t,match:o})}}if(l.length===0)return W(`No tools matched "${r}".\n`);l.sort((e,t)=>e.server===t.server?e.tool.localeCompare(t.tool):e.server.localeCompare(t.server));let u=[[`SERVER`,`TOOL`,`DESCRIPTION`,`MATCH`]];for(let e of l)u.push([e.server,e.tool,OA(e.description),e.match]);return W(EA(u))}function OA(e){if(!e)return``;let t=e.replace(/\s+/g,` `).trim();return t.length<=60?t:t.slice(0,59)+`…`}async function kA(e,t){if(e.length===0||w(e))return e.length===0?G(`mcp delete: expected <name>`):W(`usage: mcp delete <name>
1626
+ `);let n=C(e,{});if(`error`in n)return bA(n.error);let r=n.positionals[0];if(!r)return G(`mcp delete: expected <name>`);let{ensureMcpProviderRegistered:i,removeMcpProvider:a}=await import(`./provider-Do8hIn0m.js`);await i(r);let{deleteServer:o}=await import(`./store-DMPHri86.js`).then(e=>e.r),s=await o(r,t.fs);await aj(r,t),await oj(r,t);let c=`mcp:${r}`,l=!1;try{let{removeAccount:e,getAccounts:t}=await import(`./account-store-CckwuDB2.js`).then(e=>e.t);t().some(e=>e.providerId===c)&&(await e(c),l=!0)}catch(e){vA.warn(`mcp delete: OAuth removal failed`,{providerId:c,error:e instanceof Error?e.message:String(e)})}let u=a(r);return!s&&!l&&!u?G(`mcp delete: no server, alias, or account found for "${r}"`):W([`Removed MCP server "${r}"`,` servers.json: ${s?`removed`:`not present`}`,` alias: cleaned`,` sprinkles: cleaned`,` oauth: ${l?`removed`:`not present`}`,` provider: ${u?`unregistered`:`not registered`}`].join(`
1627
1627
  `)+`
1628
- `)}async function AA(e,t){if(e.length===0)return G(`mcp invoke: expected <name>`);if(w(e.slice(0,1)))return W(NA());let n=C([e[0]],{});if(`error`in n)return bA(n.error);let r=n.positionals[0];if(!r)return G(`mcp invoke: expected <name>`);let i=e.slice(1),{ensureMcpProviderRegistered:a}=await import(`./provider-8d5bGvbc.js`);await a(r);let{getServer:o}=await import(`./store-DNedyI8F.js`).then(e=>e.r),s=await o(r,t.fs);if(!s)return G(`mcp invoke: unknown server "${r}" (run \`mcp add <url> ${r}\` first)`);let c=s.tools??[];if(i.length===0||w(i.slice(0,1)))return W(PA(r,s,c));let l=C([i[0]],{});if(`error`in l)return bA(l.error);let u=l.positionals[0];if(!u)return G(`mcp invoke: expected <tool>`);let d=c.find(e=>e.name===u);if(!d)return G(`mcp invoke: unknown tool "${u}" on "${r}" (run \`${r}\` to list tools)`);let{timeoutMs:f,remaining:p,warnings:m}=jA(i.slice(1));if(w(p))return W(IA(r,d));let h=LA(p,d.inputSchema);if(!h.ok)return G(`mcp invoke: ${h.error}`);let{McpClient:g}=await import(`./client-C4_ggaf5.js`).then(e=>e.n),_=new g({url:s.url,fetchImpl:t.fetchImpl,headers:s.headers,getAuthHeader:s.auth?()=>$A(r):void 0,...f===void 0?{}:{timeoutMs:f}});await _.initialize();let v=YA(await _.toolsCall(u,h.value));return m.length>0&&(v.stderr=m.map(e=>`${e}\n`).join(``)+v.stderr),v}function jA(e){let t=[],n=[],r,i=0;for(;i<e.length;){let a=e[i];if(a.startsWith(`--timeout=`)){let e=MA(a.slice(10));e.ok?r=e.value:n.push(e.error),i+=1;continue}if(a===`--timeout`){let t=e[i+1];if(t===void 0||t.startsWith(`--`)){n.push(`mcp invoke: --timeout requires a value (got ${t===void 0?`nothing`:`"${t}"`}); using default.`),i+=1;continue}let a=MA(t);a.ok?r=a.value:n.push(a.error),i+=2;continue}t.push(a),i+=1}return{timeoutMs:r,remaining:t,warnings:n}}function MA(e){if(!/^-?\d+$/.test(e))return{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (expected positive integer seconds); using default.`};let t=Number(e);return!Number.isFinite(t)||t<1?{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (must be >= 1 second); using default.`}:{ok:!0,value:t*1e3}}function NA(){return`usage: mcp invoke <name> [tool] [--timeout <seconds>] [--flag value …]
1628
+ `)}async function AA(e,t){if(e.length===0)return G(`mcp invoke: expected <name>`);if(w(e.slice(0,1)))return W(NA());let n=C([e[0]],{});if(`error`in n)return bA(n.error);let r=n.positionals[0];if(!r)return G(`mcp invoke: expected <name>`);let i=e.slice(1),{ensureMcpProviderRegistered:a}=await import(`./provider-Do8hIn0m.js`);await a(r);let{getServer:o}=await import(`./store-DMPHri86.js`).then(e=>e.r),s=await o(r,t.fs);if(!s)return G(`mcp invoke: unknown server "${r}" (run \`mcp add <url> ${r}\` first)`);let c=s.tools??[];if(i.length===0||w(i.slice(0,1)))return W(PA(r,s,c));let l=C([i[0]],{});if(`error`in l)return bA(l.error);let u=l.positionals[0];if(!u)return G(`mcp invoke: expected <tool>`);let d=c.find(e=>e.name===u);if(!d)return G(`mcp invoke: unknown tool "${u}" on "${r}" (run \`${r}\` to list tools)`);let{timeoutMs:f,remaining:p,warnings:m}=jA(i.slice(1));if(w(p))return W(IA(r,d));let h=LA(p,d.inputSchema);if(!h.ok)return G(`mcp invoke: ${h.error}`);let{McpClient:g}=await import(`./client-C4_ggaf5.js`).then(e=>e.n),_=new g({url:s.url,fetchImpl:t.fetchImpl,headers:s.headers,getAuthHeader:s.auth?()=>$A(r):void 0,...f===void 0?{}:{timeoutMs:f}});await _.initialize();let v=YA(await _.toolsCall(u,h.value));return m.length>0&&(v.stderr=m.map(e=>`${e}\n`).join(``)+v.stderr),v}function jA(e){let t=[],n=[],r,i=0;for(;i<e.length;){let a=e[i];if(a.startsWith(`--timeout=`)){let e=MA(a.slice(10));e.ok?r=e.value:n.push(e.error),i+=1;continue}if(a===`--timeout`){let t=e[i+1];if(t===void 0||t.startsWith(`--`)){n.push(`mcp invoke: --timeout requires a value (got ${t===void 0?`nothing`:`"${t}"`}); using default.`),i+=1;continue}let a=MA(t);a.ok?r=a.value:n.push(a.error),i+=2;continue}t.push(a),i+=1}return{timeoutMs:r,remaining:t,warnings:n}}function MA(e){if(!/^-?\d+$/.test(e))return{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (expected positive integer seconds); using default.`};let t=Number(e);return!Number.isFinite(t)||t<1?{ok:!1,error:`mcp invoke: invalid --timeout value "${e}" (must be >= 1 second); using default.`}:{ok:!0,value:t*1e3}}function NA(){return`usage: mcp invoke <name> [tool] [--timeout <seconds>] [--flag value …]
1629
1629
 
1630
1630
  mcp invoke <name> List tools on <name>.
1631
1631
  mcp invoke <name> <tool> --help Show flags for <tool>.
@@ -1658,7 +1658,7 @@ Arguments are coerced according to the tool's JSON Schema:
1658
1658
 
1659
1659
  Re-fetches the tool catalog and \`apps/list\` for <name>. Does NOT refresh
1660
1660
  OAuth tokens — for OAuth token refresh use \`mcp auth <name>\`.
1661
- `);let n=C(e,{});if(`error`in n)return bA(n.error);let r=n.positionals[0];if(!r)return G(`mcp refresh: expected <name>`);let{ensureMcpProviderRegistered:i}=await import(`./provider-8d5bGvbc.js`);await i(r);let{getServer:a,setServer:o}=await import(`./store-DNedyI8F.js`).then(e=>e.r),s=await a(r,t.fs);if(!s)return G(`mcp refresh: unknown server "${r}"`);let{McpClient:c,McpAuthRequiredError:l}=await import(`./client-C4_ggaf5.js`).then(e=>e.n),u=new c({url:s.url,fetchImpl:t.fetchImpl,headers:s.headers,getAuthHeader:s.auth?()=>$A(r):void 0});try{await u.initialize()}catch(e){if(e instanceof l)return G(`mcp refresh: server "${r}" returned 401 — token may have expired. Run \`mcp auth ${r}\` to re-authenticate.`);throw e}let d=await u.toolsList(),f=await u.appsList();await o(r,{...s,protocolVersion:u.getNegotiatedProtocolVersion(),tools:d,apps:f,lastRefreshedAt:new Date().toISOString()},t.fs);let p=await sj(r,f,t);return W(`Refreshed "${r}" — tools: ${d.length}, apps: ${f.length} (${p} sprinkle${p===1?``:`s`})\n`)}async function ZA(e,t){if(w(e))return W(`usage: mcp auth <name> [--silent | --interactive]
1661
+ `);let n=C(e,{});if(`error`in n)return bA(n.error);let r=n.positionals[0];if(!r)return G(`mcp refresh: expected <name>`);let{ensureMcpProviderRegistered:i}=await import(`./provider-Do8hIn0m.js`);await i(r);let{getServer:a,setServer:o}=await import(`./store-DMPHri86.js`).then(e=>e.r),s=await a(r,t.fs);if(!s)return G(`mcp refresh: unknown server "${r}"`);let{McpClient:c,McpAuthRequiredError:l}=await import(`./client-C4_ggaf5.js`).then(e=>e.n),u=new c({url:s.url,fetchImpl:t.fetchImpl,headers:s.headers,getAuthHeader:s.auth?()=>$A(r):void 0});try{await u.initialize()}catch(e){if(e instanceof l)return G(`mcp refresh: server "${r}" returned 401 — token may have expired. Run \`mcp auth ${r}\` to re-authenticate.`);throw e}let d=await u.toolsList(),f=await u.appsList();await o(r,{...s,protocolVersion:u.getNegotiatedProtocolVersion(),tools:d,apps:f,lastRefreshedAt:new Date().toISOString()},t.fs);let p=await sj(r,f,t);return W(`Refreshed "${r}" — tools: ${d.length}, apps: ${f.length} (${p} sprinkle${p===1?``:`s`})\n`)}async function ZA(e,t){if(w(e))return W(`usage: mcp auth <name> [--silent | --interactive]
1662
1662
 
1663
1663
  Re-authenticate an existing MCP server. By default, attempts a silent
1664
1664
  token renewal using the persisted refresh_token; if that returns no
@@ -1670,7 +1670,7 @@ Options:
1670
1670
  -i, --interactive Skip silent renewal and open the OAuth popup
1671
1671
  directly. Use after revoking a refresh token or
1672
1672
  when the AS no longer accepts the cached one.
1673
- `);let n=C(e,{bool:_A});if(`error`in n)return bA(n.error);let r=n.positionals[0];if(!r)return G(`mcp auth: expected <name>`);let i=n.bools.has(`--silent`)||n.bools.has(`-s`),a=n.bools.has(`--interactive`)||n.bools.has(`-i`);if(i&&a)return G(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:o}=await import(`./provider-8d5bGvbc.js`),s=await o(r,{fetchImpl:t.oauthFetchImpl,launcher:t.oauthLauncher}),{getServer:c}=await import(`./store-DNedyI8F.js`).then(e=>e.r),l=await c(r,t.fs);if(!l)return G(`mcp auth: unknown server "${r}" (run \`mcp list\` to see configured servers)`);if(!l.auth)return G(`mcp auth: server "${r}" does not use OAuth`);if(!s)return G(`mcp auth: failed to register provider for "${r}"`);let u=`mcp:${r}`,{getRegisteredProviderConfig:d}=await import(`./providers-fZ3KX8Lg.js`).then(e=>e.r),f=d(u);if(!f)return G(`mcp auth: provider "${u}" is not registered`);if(a)return await QA(r,f,t);if(!f.onSilentRenew)return i?G(`mcp auth: provider "${u}" does not support silent renewal; retry without --silent`):await QA(r,f,t);let p=null;try{p=await f.onSilentRenew()}catch(e){let t=e instanceof Error?e.message:String(e);if(i)return G(`mcp auth: silent renewal for "${r}" failed (${t}); retry without --silent to run the interactive flow`);vA.debug(`mcp auth: silent renewal threw, falling back to interactive`,{name:r,error:t})}return p?W(`Re-authenticated "${r}" via silent renewal (provider ${u})\n`):i?G(`mcp auth: silent renewal for "${r}" returned no token; retry without --silent to run the interactive flow`):await QA(r,f,t)}async function QA(e,t,n){if(!t.onOAuthLogin)return G(`mcp auth: provider "${t.id}" does not support interactive OAuth login`);let r=n.oauthLauncher??await ej(),i=!1;return await t.onOAuthLogin(r,()=>{i=!0}),i?W(`Re-authenticated "${e}" via interactive login (provider ${t.id})\n`):G(`mcp auth: interactive login for "${e}" did not complete`)}async function $A(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await import(`./account-store-BlJDP1-W.js`).then(e=>e.t),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-fZ3KX8Lg.js`).then(e=>e.r),n=await e(t)?.onSilentRenew?.();if(n)return`Bearer ${n}`}catch(e){vA.debug(`silent renewal threw`,{providerId:t,error:e instanceof Error?e.message:String(e)})}return null}return`Bearer ${r.token}`}async function ej(){let{createOAuthLauncher:e}=await import(`./oauth-service-Bx_Dy3GC.js`);return e()}async function tj(e){if(e)return e;let{createProxiedFetch:t}=await import(`./proxied-fetch-CoZ8jHud.js`).then(e=>e.o),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function nj(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-DwHLmdxe.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DJXlpNui.js`).then(e=>e.n);return await t.create({dbName:n})}function rj(e){return`// MCP alias for "${e}" — forwards args to \`mcp invoke ${e}\`.
1673
+ `);let n=C(e,{bool:_A});if(`error`in n)return bA(n.error);let r=n.positionals[0];if(!r)return G(`mcp auth: expected <name>`);let i=n.bools.has(`--silent`)||n.bools.has(`-s`),a=n.bools.has(`--interactive`)||n.bools.has(`-i`);if(i&&a)return G(`mcp auth: --silent and --interactive are mutually exclusive`);let{ensureMcpProviderRegistered:o}=await import(`./provider-Do8hIn0m.js`),s=await o(r,{fetchImpl:t.oauthFetchImpl,launcher:t.oauthLauncher}),{getServer:c}=await import(`./store-DMPHri86.js`).then(e=>e.r),l=await c(r,t.fs);if(!l)return G(`mcp auth: unknown server "${r}" (run \`mcp list\` to see configured servers)`);if(!l.auth)return G(`mcp auth: server "${r}" does not use OAuth`);if(!s)return G(`mcp auth: failed to register provider for "${r}"`);let u=`mcp:${r}`,{getRegisteredProviderConfig:d}=await import(`./providers-ChXzAurS.js`).then(e=>e.r),f=d(u);if(!f)return G(`mcp auth: provider "${u}" is not registered`);if(a)return await QA(r,f,t);if(!f.onSilentRenew)return i?G(`mcp auth: provider "${u}" does not support silent renewal; retry without --silent`):await QA(r,f,t);let p=null;try{p=await f.onSilentRenew()}catch(e){let t=e instanceof Error?e.message:String(e);if(i)return G(`mcp auth: silent renewal for "${r}" failed (${t}); retry without --silent to run the interactive flow`);vA.debug(`mcp auth: silent renewal threw, falling back to interactive`,{name:r,error:t})}return p?W(`Re-authenticated "${r}" via silent renewal (provider ${u})\n`):i?G(`mcp auth: silent renewal for "${r}" returned no token; retry without --silent to run the interactive flow`):await QA(r,f,t)}async function QA(e,t,n){if(!t.onOAuthLogin)return G(`mcp auth: provider "${t.id}" does not support interactive OAuth login`);let r=n.oauthLauncher??await ej(),i=!1;return await t.onOAuthLogin(r,()=>{i=!0}),i?W(`Re-authenticated "${e}" via interactive login (provider ${t.id})\n`):G(`mcp auth: interactive login for "${e}" did not complete`)}async function $A(e){let t=`mcp:${e}`,{getOAuthAccountInfo:n}=await import(`./account-store-CckwuDB2.js`).then(e=>e.t),r=n(t);if(!r)return null;if(r.expired){try{let{getRegisteredProviderConfig:e}=await import(`./providers-ChXzAurS.js`).then(e=>e.r),n=await e(t)?.onSilentRenew?.();if(n)return`Bearer ${n}`}catch(e){vA.debug(`silent renewal threw`,{providerId:t,error:e instanceof Error?e.message:String(e)})}return null}return`Bearer ${r.token}`}async function ej(){let{createOAuthLauncher:e}=await import(`./oauth-service-Bx_Dy3GC.js`);return e()}async function tj(e){if(e)return e;let{createProxiedFetch:t}=await import(`./proxied-fetch-CoZ8jHud.js`).then(e=>e.o),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function nj(e){if(e)return e;let{VirtualFS:t}=await import(`./fs-DFXgS-c1.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DJXlpNui.js`).then(e=>e.n);return await t.create({dbName:n})}function rj(e){return`// MCP alias for "${e}" — forwards args to \`mcp invoke ${e}\`.
1674
1674
  // Auto-generated by \`mcp add ${e}\`; do not edit by hand.
1675
1675
  const { promisify } = require('util');
1676
1676
  const { exec } = require('child_process');
@@ -1699,7 +1699,7 @@ try {
1699
1699
  if (stdout) process.stdout.write(stdout);
1700
1700
  if (stderr) process.stderr.write(stderr);
1701
1701
  process.exit(exitCode);
1702
- `}async function ij(e,t){let n=await nj(t.fs);await n.mkdir(yA,{recursive:!0}),await n.writeFile(`${yA}/${e}.jsh`,rj(e)),t.scriptCatalog?.invalidateJsh()}async function aj(e,t){let n=await nj(t.fs),r=`${yA}/${e}.jsh`;try{await n.exists(r)&&await n.rm(r)}catch(e){vA.debug(`alias removal failed`,{path:r,error:e instanceof Error?e.message:String(e)})}t.scriptCatalog?.invalidateJsh()}async function oj(e,t){let{removeAppSprinkles:n}=await import(`./apps-BnILH4xd.js`);await n(e,t.fs)}async function sj(e,t,n){try{let{materializeAppSprinkles:r}=await import(`./apps-BnILH4xd.js`);return(await r(e,t,n.fs)).length}catch(t){return vA.warn(`mcp: failed to materialize app sprinkles`,{name:e,error:t instanceof Error?t.message:String(t)}),0}}function cj(e){return{stdout:``,stderr:`meminfo: ${e}\n`,exitCode:1}}function lj(e){return e.attribution.length===0?`(shared)`:e.attribution.map(e=>{let t=e.container?.src??e.container?.id??e.url??`?`;return e.scope?`${e.scope} ${t}`:t}).join(`, `)}function uj(){let e=globalThis.performance,t=e?.measureUserAgentSpecificMemory;return t?t.bind(e):null}function dj(e){if(e[0]===`--help`||e[0]===`-h`||e[0]===`help`)return{help:!0};let t=!1;for(let n of e){if(n!==`--json`)return{error:`unknown option '${n}' — see \`meminfo --help\``};t=!0}return{help:!1,json:t}}function fj(e){let t=[`total: ${eb(e.bytes)}`],n=[...e.breakdown].filter(e=>e.bytes>0).sort((e,t)=>t.bytes-e.bytes);if(n.length>0){t.push(``,`BYTES TYPES ATTRIBUTION`);for(let e of n)t.push(`${eb(e.bytes).padEnd(10)} ${e.types.join(`,`).padEnd(20)} ${lj(e)}`)}return`${t.join(`
1702
+ `}async function ij(e,t){let n=await nj(t.fs);await n.mkdir(yA,{recursive:!0}),await n.writeFile(`${yA}/${e}.jsh`,rj(e)),t.scriptCatalog?.invalidateJsh()}async function aj(e,t){let n=await nj(t.fs),r=`${yA}/${e}.jsh`;try{await n.exists(r)&&await n.rm(r)}catch(e){vA.debug(`alias removal failed`,{path:r,error:e instanceof Error?e.message:String(e)})}t.scriptCatalog?.invalidateJsh()}async function oj(e,t){let{removeAppSprinkles:n}=await import(`./apps-C4Y2CDb2.js`);await n(e,t.fs)}async function sj(e,t,n){try{let{materializeAppSprinkles:r}=await import(`./apps-C4Y2CDb2.js`);return(await r(e,t,n.fs)).length}catch(t){return vA.warn(`mcp: failed to materialize app sprinkles`,{name:e,error:t instanceof Error?t.message:String(t)}),0}}function cj(e){return{stdout:``,stderr:`meminfo: ${e}\n`,exitCode:1}}function lj(e){return e.attribution.length===0?`(shared)`:e.attribution.map(e=>{let t=e.container?.src??e.container?.id??e.url??`?`;return e.scope?`${e.scope} ${t}`:t}).join(`, `)}function uj(){let e=globalThis.performance,t=e?.measureUserAgentSpecificMemory;return t?t.bind(e):null}function dj(e){if(e[0]===`--help`||e[0]===`-h`||e[0]===`help`)return{help:!0};let t=!1;for(let n of e){if(n!==`--json`)return{error:`unknown option '${n}' — see \`meminfo --help\``};t=!0}return{help:!1,json:t}}function fj(e){let t=[`total: ${eb(e.bytes)}`],n=[...e.breakdown].filter(e=>e.bytes>0).sort((e,t)=>t.bytes-e.bytes);if(n.length>0){t.push(``,`BYTES TYPES ATTRIBUTION`);for(let e of n)t.push(`${eb(e.bytes).padEnd(10)} ${e.types.join(`,`).padEnd(20)} ${lj(e)}`)}return`${t.join(`
1703
1703
  `)}\n`}function pj(e={}){return S(`meminfo`,async t=>{let n=dj(t);if(`error`in n)return cj(n.error);if(n.help)return{stdout:`meminfo - agent-cluster memory diagnostics
1704
1704
 
1705
1705
  Usage:
@@ -1711,7 +1711,7 @@ Notes:
1711
1711
  Document-Isolation-Policy). Embedded floats cannot be isolated and
1712
1712
  report why instead.
1713
1713
  - The browser randomizes measurement timing — expect a short delay.
1714
- `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??uj();if(!r&&!e.measure)return cj(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return cj(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return cj(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:fj(a),stderr:``,exitCode:0}})}function mj(e){return S(`memory`,async t=>{let{runMemory:n}=await import(`./run-EPiuw1ru.js`);return n(t,e)})}function hj(){return S(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const gj=`/.cache/artificial-analysis.json`,_j=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],vj=[`--provider`];function yj(e){return{stdout:``,stderr:e.endsWith(`
1714
+ `,stderr:``,exitCode:0};let r=e.isIsolated?e.isIsolated():globalThis.crossOriginIsolated===!0,i=e.measure??uj();if(!r&&!e.measure)return cj(`memory measurement requires a cross-origin-isolated runtime (Document-Isolation-Policy) — this runtime is not isolated`);if(!i)return cj(`performance.measureUserAgentSpecificMemory is not available in this browser`);let a;try{a=await i()}catch(e){return cj(e instanceof Error?e.message:String(e))}return n.json?{stdout:`${JSON.stringify(a,null,2)}\n`,stderr:``,exitCode:0}:{stdout:fj(a),stderr:``,exitCode:0}})}function mj(e){return S(`memory`,async t=>{let{runMemory:n}=await import(`./run-Cka1zPhr.js`);return n(t,e)})}function hj(){return S(`mktemp`,async(e,t)=>{let{runMktemp:n}=await import(`./run-dAJe7sKp.js`);return n(e,t)})}const gj=`/.cache/artificial-analysis.json`,_j=[`--all`,`--all-versions`,`--json`,`--refresh`,`--no-benchmarks`,`--help`,`-h`],vj=[`--provider`];function yj(e){return{stdout:``,stderr:e.endsWith(`
1715
1715
  `)?e:`${e}\n`,exitCode:1}}async function bj(e){try{let t=await e.readFile(gj),n=JSON.parse(t);if(Date.now()-n.fetchedAt<864e5)return n.models}catch{}return null}function xj(){try{return localStorage.getItem(`aa_api_key`)}catch{return null}}function Sj(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 Cj(e,t){let n={fetchedAt:Date.now(),models:t};try{await e.mkdir(`/.cache`,{recursive:!0}),await e.writeFile(gj,JSON.stringify(n))}catch{}}async function wj(e,t=!1){if(e&&!t){let t=await bj(e);if(t)return t}let n={Accept:`application/json`},r=xj();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=Sj(Array.isArray(s)?s:s.data??s.models??[]);return e&&c.length>0&&await Cj(e,c),c}function Tj(e){return e.toLowerCase().replace(/\./g,`-`).replace(/-\d{8}$/,``).replace(/-\d{4}$/,``)}function Ej(e,t){let n=e.toLowerCase(),r=t.find(e=>e.slug===n);if(r)return r;let i=Tj(e),a=t.find(e=>Tj(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 Dj(){return`models - list available LLM models
1716
1716
 
1717
1717
  Usage: models [options]
@@ -1726,7 +1726,7 @@ Options:
1726
1726
  -h, --help Show this help message
1727
1727
  `}function Oj(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`.replace(`.0M`,`M`):e>=1e3?`${(e/1e3).toFixed(0)}K`:`${e}`}function kj(e){return`$${e.toFixed(2)}`}const Aj=/\b(embedding|embed|tts|whisper|dall-e|image-gen|audio|vision-preview)\b/i;function jj(e){let t=`${e.id} ${e.name??``}`;return!Aj.test(t)}function Mj(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 Nj(e){let t=e.toLowerCase();return t=t.replace(/-\d{8}$/,``),t=t.replace(/-\d{4}$/,``),t=t.replace(/-(preview|latest)$/,``),Mj(t)??t.replace(/-[\d.]+$/,``)}function Pj(e){let t=new Map;for(let n of e){let e=Nj(n.id);(!t.has(e)||n.selected)&&t.set(e,n)}return[...t.values()]}function Fj(e,t,n,r,i){let a=i?Ej(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 Ij(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=`${kj(e.cost.input)} / ${kj(e.cost.output)}`,a=`${Oj(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(`
1728
1728
  `)+`
1729
- `}function Lj(e){let t=C(e,{bool:_j,value:vj});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 Rj(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 zj(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(jj);if(o.length===0)return[];let s=o.map(e=>Fj(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=Pj(s)),s}function Bj(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 Vj(e,t){if(w(e,{valueFlags:vj}))return{stdout:Dj(),stderr:``,exitCode:0};let n=Lj(e);if(`error`in n)return yj(`models: ${n.error}`);let r=await import(`./account-store-BlJDP1-W.js`).then(e=>e.t);if(r.getAccounts().length===0)return yj(`No provider accounts configured. Run the provider settings to add one.
1729
+ `}function Lj(e){let t=C(e,{bool:_j,value:vj});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 Rj(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 zj(e,t,n,r,i,a){let o=e.getProviderModels(t).filter(jj);if(o.length===0)return[];let s=o.map(e=>Fj(e,t,n,r,i)).sort((e,t)=>t.cost.input-e.cost.input);return a||(s=Pj(s)),s}function Bj(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 Vj(e,t){if(w(e,{valueFlags:vj}))return{stdout:Dj(),stderr:``,exitCode:0};let n=Lj(e);if(`error`in n)return yj(`models: ${n.error}`);let r=await import(`./account-store-CckwuDB2.js`).then(e=>e.t);if(r.getAccounts().length===0)return yj(`No provider accounts configured. Run the provider settings to add one.
1730
1730
  `);let i=r.resolveCurrentModel(),a=i.id,o=i.provider,s=r.getSelectedProvider(),c=r.getSelectedModelId(),l;if(!n.noBenchmarks){let e=await wj(t,n.forceRefresh);e.length>0&&(l=e)}let u=Rj(r,n,s);if(`error`in u)return yj(u.error);let d=[],f=[];for(let e of u){let t=zj(r,e,a,o,l,n.allVersions);if(t.length===0){if(!n.allMode)return yj(`No models available for provider ${e}.\n`);continue}if(d.push(...t),!n.jsonMode){let n=r.getProviderConfig(e);f.push(Ij(n.name,e,t,!!l))}}return n.jsonMode?{stdout:JSON.stringify(d,null,2)+`
1731
1731
  `,stderr:``,exitCode:0}:(n.allVersions||f.push(`Showing latest versions only. Use --all-versions to see all.
1732
1732
  `),f.push(Bj(o,a,s,c)),{stdout:f.join(`
@@ -1784,7 +1784,7 @@ Examples:
1784
1784
  `)}\n`,stderr:``,exitCode:0}}async function fM(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain add: requires <providerId> and <domain>
1785
1785
  `,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 pM(e,t,n){if(!t||!n)return{stdout:``,stderr:`oauth-domain remove: requires <providerId> and <domain>
1786
1786
  `,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 mM(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>
1787
- `,exitCode:1}}async function hM(e,t,n,r){switch(t){case`list`:return dM(e,n);case`add`:return fM(e,n,r);case`remove`:return pM(e,n,r);case`clear`:return mM(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${lM()}`,exitCode:1}}}function gM(){return S(`oauth-domain`,async e=>{if(e.length===0||w(e))return{stdout:lM(),stderr:``,exitCode:0};let t=C(e);if(`error`in t)return uM(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-BlJDP1-W.js`).then(e=>e.t);try{return await hM(a,n,r,i)}catch(e){return uM(e instanceof Error?e.message:String(e))}})}function _M(){return S(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-uFO4egDg.js`);return n(e,t)})}const vM=[`--download`,`-d`,`--view`,`-v`],yM=[`--size`],bM={low:256,medium:768,high:1536};function xM(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1787
+ `,exitCode:1}}async function hM(e,t,n,r){switch(t){case`list`:return dM(e,n);case`add`:return fM(e,n,r);case`remove`:return pM(e,n,r);case`clear`:return mM(e,n);default:return{stdout:``,stderr:`oauth-domain: unknown subcommand "${t}"\n${lM()}`,exitCode:1}}}function gM(){return S(`oauth-domain`,async e=>{if(e.length===0||w(e))return{stdout:lM(),stderr:``,exitCode:0};let t=C(e);if(`error`in t)return uM(t.error);let[n,r,i]=t.positionals,a=await import(`./account-store-CckwuDB2.js`).then(e=>e.t);try{return await hM(a,n,r,i)}catch(e){return uM(e instanceof Error?e.message:String(e))}})}function _M(){return S(`oauth-token`,async(e,t)=>{let{runOAuthToken:n}=await import(`./run-B9eYT4Oj.js`);return n(e,t)})}const vM=[`--download`,`-d`,`--view`,`-v`],yM=[`--size`],bM={low:256,medium:768,high:1536};function xM(){return{stdout:`usage: open [--download|-d] [--view|-v [--size <spec>]] <url|path> [url|path...]
1788
1788
 
1789
1789
  VFS paths are served in a new browser tab via the preview service worker.
1790
1790
  URLs (http/https/etc.) are opened directly in a new tab.
@@ -1810,7 +1810,7 @@ Examples:
1810
1810
  `);let i=!1;try{i=(await t.fs.stat(e)).isDirectory}catch{}let a=await ur(t.fs,i?e:vr(e)),o=Br(e,a),s;try{s=await r(o)}catch(e){return K(`${e instanceof Error?e.message:String(e)}\n`)}return AM(`opened ${e} → ${o}${jM(s)}`)}async function RM(e,t,n,r){if(!fr(e)&&e.endsWith(`.shtml`)&&t.fs)return NM(e,t,r.sprinkleManager,r.canOpenWindow,r.openExternal);if(!n.view&&!r.canOpenWindow)return K(`open: browser APIs are unavailable in this environment
1811
1811
  `);if(fr(e))return PM(e,r.canOpenWindow,r.openExternal);let i=t.fs.resolvePath(t.cwd,e);return n.view?FM(e,i,t,n.sizeSpec):n.download?IM(e,i,t,r.hasDom):LM(i,t,r.canOpenWindow,r.openExternal)}function zM(e){return S(`open`,async(t,n)=>{if(t.length===0||w(t,{valueFlags:yM}))return xM();let r=kM(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 xM();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:MM(e,l,u)},f=[];for(let e of s){let t=await RM(e,n,{view:a,download:i,sizeSpec:o},d);if(!t.ok)return t.result;f.push(t.message)}return{stdout:f.join(`
1812
1812
  `)+`
1813
- `,stderr:``,exitCode:0}})}function BM(){return S(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-BhlaKL0o.js`);return n(e,t)})}function VM(e=`pdftk`){return S(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function HM(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1813
+ `,stderr:``,exitCode:0}})}function BM(){return S(`patch`,async(e,t)=>{let{runPatch:n}=await import(`./run-BKqnD09g.js`);return n(e,t)})}function VM(e=`pdftk`){return S(e,async(t,n)=>{let{runPdftk:r}=await import(`./run-BEs473Sp.js`);return r(e,t,n)})}function HM(){return{stdout:`usage: pdftoppm [options] <input.pdf> [output-prefix]
1814
1814
 
1815
1815
  Rasterize PDF pages to images. Writes <prefix>-<n>.<ext> per page, where <n>
1816
1816
  is zero-padded to the digit width of the last page (out-1.png for a 9-page
@@ -1870,7 +1870,7 @@ Examples:
1870
1870
  plugin list
1871
1871
  plugin info my-plugin
1872
1872
  plugin remove my-plugin
1873
- `}function aN(e={}){return S(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return nN(iN());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await fN(i,a,e);case`list`:case`ls`:return await gN(i,e);case`info`:return await _N(i,e);case`validate`:return await vN(i,a,e,Qi(n?.env));case`remove`:case`rm`:case`delete`:return await yN(i,e);default:return q(`plugin: unknown subcommand "${r}" (try \`plugin --help\`)`)}}catch(e){return q(`plugin ${r}: ${e instanceof Error?e.message:String(e)}`)}})}async function oN(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-DwHLmdxe.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DJXlpNui.js`).then(e=>e.n);return t.create({dbName:n})}async function sN(e,t,n){let r=bN(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-CypHkXWW.js`).then(e=>e.t),a=i(e);if(a){let e=`${a.owner}/${a.repo}${a.branch?`@${a.branch}`:``}${a.path?`/${a.path}`:``}`;return{kind:`github`,ref:{...a,display:e}}}return{kind:`error`,message:`${r} does not exist and "${e}" is not a GitHub reference (owner/repo[@branch] or https://github.com/owner/repo[/tree/branch[/dir]])`}}function cN(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function lN(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${tN}/${t.map(cN).join(`--`)}`}async function uN(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-DvrCoKij.js`).then(e=>e.i),s=await i(e.owner,e.repo,r,e.branch);if(s.status===`error`)return`failed to download ${e.display}: ${s.message}`;let c=a(s.files),l=e.path?e.path.replace(/^\/|\/$/g,``)+`/`:``;if(!c[`${l}plugin.json`])return`no plugin.json found at ${e.display} — not an Agent Plugins package`;try{await n.rm(t,{recursive:!0})}catch{}return await n.mkdir(t,{recursive:!0}),(await o(c,l,t,n,!1)).length===0?`no files found at ${e.display}`:null}async function dN(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function fN(e,t,n){if(w(e))return nN(`usage: plugin install <path|repo>
1873
+ `}function aN(e={}){return S(`plugin`,async(t,n)=>{if(t.length===0||t[0]===`--help`||t[0]===`-h`)return nN(iN());let r=t[0],i=t.slice(1),a=n?.cwd??`/`;try{switch(r){case`install`:case`add`:return await fN(i,a,e);case`list`:case`ls`:return await gN(i,e);case`info`:return await _N(i,e);case`validate`:return await vN(i,a,e,Qi(n?.env));case`remove`:case`rm`:case`delete`:return await yN(i,e);default:return q(`plugin: unknown subcommand "${r}" (try \`plugin --help\`)`)}}catch(e){return q(`plugin ${r}: ${e instanceof Error?e.message:String(e)}`)}})}async function oN(e){if(e.fs)return e.fs;let{VirtualFS:t}=await import(`./fs-DFXgS-c1.js`).then(e=>e.t),{GLOBAL_FS_DB_NAME:n}=await import(`./global-db-DJXlpNui.js`).then(e=>e.n);return t.create({dbName:n})}async function sN(e,t,n){let r=bN(t,e);if(await n.exists(r))return{kind:`local`,root:r};let{parseGitHubRef:i}=await import(`./github-install-BIoofnjZ.js`).then(e=>e.t),a=i(e);if(a){let e=`${a.owner}/${a.repo}${a.branch?`@${a.branch}`:``}${a.path?`/${a.path}`:``}`;return{kind:`github`,ref:{...a,display:e}}}return{kind:`error`,message:`${r} does not exist and "${e}" is not a GitHub reference (owner/repo[@branch] or https://github.com/owner/repo[/tree/branch[/dir]])`}}function cN(e){let t=e.replace(/[^A-Za-z0-9._-]+/g,`-`);return/^\.+$/.test(t)?t.replace(/\./g,`_`):t}function lN(e){let t=[e.owner,e.repo,...e.path?[e.path]:[]];return`${tN}/${t.map(cN).join(`--`)}`}async function uN(e,t,n,r){let{fetchRepoZip:i,stripZipPrefix:a,writeZipFilesToDir:o}=await import(`./github-zip-TmRPTM75.js`).then(e=>e.i),s=await i(e.owner,e.repo,r,e.branch);if(s.status===`error`)return`failed to download ${e.display}: ${s.message}`;let c=a(s.files),l=e.path?e.path.replace(/^\/|\/$/g,``)+`/`:``;if(!c[`${l}plugin.json`])return`no plugin.json found at ${e.display} — not an Agent Plugins package`;try{await n.rm(t,{recursive:!0})}catch{}return await n.mkdir(t,{recursive:!0}),(await o(c,l,t,n,!1)).length===0?`no files found at ${e.display}`:null}async function dN(e,t){try{await e.rm(t,{recursive:!0})}catch{}}async function fN(e,t,n){if(w(e))return nN(`usage: plugin install <path|repo>
1874
1874
 
1875
1875
  Loads the Agent Plugins package at <path>, or downloads it from a GitHub
1876
1876
  reference (owner/repo, owner/repo@branch, or
@@ -1881,19 +1881,19 @@ mcp.json. On success the plugin is recorded in
1881
1881
  /workspace/.plugins/plugins.json — its skills then surface through the
1882
1882
  standard skills discovery, and each supported streamable-http MCP server
1883
1883
  is registered in the MCP store as "<plugin>:<server>".
1884
- `);let r=rN(`install`,e);if(!(`ok`in r))return r;if(r.positionals.length<1)return q(`plugin install: expected <path|repo>`);let i=await oN(n),a=await sN(r.positionals[0],t,i);if(a.kind===`error`)return q(`plugin install: ${a.message}`);let o,s;if(a.kind===`github`){if(!n.fetch)return q(`plugin install: GitHub installs are unavailable (no network fetch configured)`);o=lN(a.ref),s=a.ref.display;let e=await uN(a.ref,o,i,n.fetch);if(e)return q(`plugin install: ${e}`)}else o=a.root;let{loadPluginFromDirectory:c}=await import(`./loader-Dw-TPPKt.js`),l=await c(i,o);if(!l.ok)return a.kind===`github`&&await dN(i,o),q(`plugin install: plugin at ${s??o} was rejected:\n${xN(l.diagnostics)}`);let{plugin:u}=l,d=u.manifest.name,{getInstalledPlugin:f,setInstalledPlugin:p}=await import(`./store-Czn1xbby.js`),m=await f(d,n.fs);if(m&&m.root!==o)return a.kind===`github`&&await dN(i,o),q(`plugin install: a plugin named "${d}" is already installed from ${m.root} (remove it first)`);let h=await hN(u,n),g=await mN(d,m?.mcpServerNames,h.registered,n);return await p(d,{root:o,version:u.manifest.version,description:u.manifest.description,installedAt:new Date().toISOString(),mcpServerNames:h.registered,...s?{source:s}:{}},n.fs),nN(pN(u,h,g,s??o,l.diagnostics))}function pN(e,t,n,r,i){let a=e.manifest.name,o=t.registered,s=e.mcp.servers.filter(e=>e.status!==`supported`),c=[`Installed agent plugin "${a}"${e.manifest.version?` v${e.manifest.version}`:``} from ${r}`,` skills: ${e.skills.length}${e.skills.length>0?` (${e.skills.map(e=>e.name).join(`, `)})`:``}`,` mcp: ${o.length} registered${o.length>0?` (${o.join(`, `)})`:``}${s.length>0?`, ${s.length} skipped`:``}${n>0?`, ${n} removed from previous install`:``}`];return t.conflicts.length>0&&c.push(` warning: not bridged — MCP server name(s) already in use and not owned by this plugin: ${t.conflicts.join(`, `)} (remove them with \`mcp remove\` first)`),i.length>0&&c.push(`Diagnostics:`,xN(i)),c.join(`
1884
+ `);let r=rN(`install`,e);if(!(`ok`in r))return r;if(r.positionals.length<1)return q(`plugin install: expected <path|repo>`);let i=await oN(n),a=await sN(r.positionals[0],t,i);if(a.kind===`error`)return q(`plugin install: ${a.message}`);let o,s;if(a.kind===`github`){if(!n.fetch)return q(`plugin install: GitHub installs are unavailable (no network fetch configured)`);o=lN(a.ref),s=a.ref.display;let e=await uN(a.ref,o,i,n.fetch);if(e)return q(`plugin install: ${e}`)}else o=a.root;let{loadPluginFromDirectory:c}=await import(`./loader-Dw-TPPKt.js`),l=await c(i,o);if(!l.ok)return a.kind===`github`&&await dN(i,o),q(`plugin install: plugin at ${s??o} was rejected:\n${xN(l.diagnostics)}`);let{plugin:u}=l,d=u.manifest.name,{getInstalledPlugin:f,setInstalledPlugin:p}=await import(`./store-CD8HQQi0.js`),m=await f(d,n.fs);if(m&&m.root!==o)return a.kind===`github`&&await dN(i,o),q(`plugin install: a plugin named "${d}" is already installed from ${m.root} (remove it first)`);let h=await hN(u,n),g=await mN(d,m?.mcpServerNames,h.registered,n);return await p(d,{root:o,version:u.manifest.version,description:u.manifest.description,installedAt:new Date().toISOString(),mcpServerNames:h.registered,...s?{source:s}:{}},n.fs),nN(pN(u,h,g,s??o,l.diagnostics))}function pN(e,t,n,r,i){let a=e.manifest.name,o=t.registered,s=e.mcp.servers.filter(e=>e.status!==`supported`),c=[`Installed agent plugin "${a}"${e.manifest.version?` v${e.manifest.version}`:``} from ${r}`,` skills: ${e.skills.length}${e.skills.length>0?` (${e.skills.map(e=>e.name).join(`, `)})`:``}`,` mcp: ${o.length} registered${o.length>0?` (${o.join(`, `)})`:``}${s.length>0?`, ${s.length} skipped`:``}${n>0?`, ${n} removed from previous install`:``}`];return t.conflicts.length>0&&c.push(` warning: not bridged — MCP server name(s) already in use and not owned by this plugin: ${t.conflicts.join(`, `)} (remove them with \`mcp remove\` first)`),i.length>0&&c.push(`Diagnostics:`,xN(i)),c.join(`
1885
1885
  `)+`
1886
- `}async function mN(e,t,n,r){let i=(t??[]).filter(e=>!n.includes(e));if(i.length===0)return 0;let{deleteServer:a,getServer:o}=await import(`./store-DNedyI8F.js`).then(e=>e.r),s=0;for(let t of i)(await o(t,r.fs))?.pluginOrigin===e&&await a(t,r.fs)&&(s+=1);return s}async function hN(e,t){let n=e.mcp.servers.filter(e=>e.status===`supported`);if(n.length===0)return{registered:[],conflicts:[]};let{getServer:r,setServer:i}=await import(`./store-DNedyI8F.js`).then(e=>e.r),{McpClient:a}=await import(`./client-C4_ggaf5.js`).then(e=>e.n),o=[],s=[];for(let c of n){let n=c.config,l=`${e.manifest.name}:${c.name}`,u=await r(l,t.fs);if(u&&u.pluginOrigin!==e.manifest.name){s.push(l);continue}let d=[];try{let e=new a({url:n.url,headers:n.headers});await e.initialize(),d=await e.toolsList()}catch{}await i(l,{url:n.url,...n.headers?{headers:n.headers}:{},tools:d,addedAt:new Date().toISOString(),pluginOrigin:e.manifest.name},t.fs),o.push(l)}return{registered:o,conflicts:s}}async function gN(e,t){if(w(e))return nN(`usage: plugin list
1887
- `);let n=rN(`list`,e);if(!(`ok`in n))return n;let{listInstalledPlugins:r}=await import(`./store-Czn1xbby.js`),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return nN("No agent plugins installed. Use `plugin install <path>`.\n");let o=[[`NAME`,`VERSION`,`ROOT`,`MCP`]];for(let e of a){let t=i[e];o.push([e,t.version??`-`,t.root,String(t.mcpServerNames?.length??0)])}let s=o[0].map((e,t)=>Math.max(...o.map(e=>e[t].length)));return nN(o.map(e=>e.map((e,t)=>e.padEnd(s[t])).join(` `)).join(`
1886
+ `}async function mN(e,t,n,r){let i=(t??[]).filter(e=>!n.includes(e));if(i.length===0)return 0;let{deleteServer:a,getServer:o}=await import(`./store-DMPHri86.js`).then(e=>e.r),s=0;for(let t of i)(await o(t,r.fs))?.pluginOrigin===e&&await a(t,r.fs)&&(s+=1);return s}async function hN(e,t){let n=e.mcp.servers.filter(e=>e.status===`supported`);if(n.length===0)return{registered:[],conflicts:[]};let{getServer:r,setServer:i}=await import(`./store-DMPHri86.js`).then(e=>e.r),{McpClient:a}=await import(`./client-C4_ggaf5.js`).then(e=>e.n),o=[],s=[];for(let c of n){let n=c.config,l=`${e.manifest.name}:${c.name}`,u=await r(l,t.fs);if(u&&u.pluginOrigin!==e.manifest.name){s.push(l);continue}let d=[];try{let e=new a({url:n.url,headers:n.headers});await e.initialize(),d=await e.toolsList()}catch{}await i(l,{url:n.url,...n.headers?{headers:n.headers}:{},tools:d,addedAt:new Date().toISOString(),pluginOrigin:e.manifest.name},t.fs),o.push(l)}return{registered:o,conflicts:s}}async function gN(e,t){if(w(e))return nN(`usage: plugin list
1887
+ `);let n=rN(`list`,e);if(!(`ok`in n))return n;let{listInstalledPlugins:r}=await import(`./store-CD8HQQi0.js`),i=await r(t.fs),a=Object.keys(i).sort();if(a.length===0)return nN("No agent plugins installed. Use `plugin install <path>`.\n");let o=[[`NAME`,`VERSION`,`ROOT`,`MCP`]];for(let e of a){let t=i[e];o.push([e,t.version??`-`,t.root,String(t.mcpServerNames?.length??0)])}let s=o[0].map((e,t)=>Math.max(...o.map(e=>e[t].length)));return nN(o.map(e=>e.map((e,t)=>e.padEnd(s[t])).join(` `)).join(`
1888
1888
  `)+`
1889
1889
  `)}async function _N(e,t){if(w(e))return nN(`usage: plugin info <name>
1890
- `);let n=rN(`info`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return q(`plugin info: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i}=await import(`./store-Czn1xbby.js`),a=await i(r,t.fs);if(!a)return q(`plugin info: no installed plugin named "${r}"`);let o=await oN(t),{loadPluginFromDirectory:s}=await import(`./loader-Dw-TPPKt.js`),c=await s(o,a.root);if(!c.ok)return q(`plugin info: plugin at ${a.root} no longer loads:\n${xN(c.diagnostics)}`);let{plugin:l}=c,u=l.manifest,d=[`${u.name}${u.version?` v${u.version}`:``}`,...u.description?[` ${u.description}`]:[],` root: ${l.root}`,...u.license?[` license: ${u.license}`]:[],...u.homepage?[` home: ${u.homepage}`]:[],``,`Skills (${l.skills.length}):`,...l.skills.map(e=>` ${e.name} ${e.description}`),``,`MCP servers (${l.mcp.servers.length}):`,...l.mcp.servers.map(e=>e.status===`supported`?` ${e.name} ${e.config.type} ${e.config.url}`:` ${e.name} [skipped: ${e.reason}]`)];return c.diagnostics.length>0&&d.push(``,`Diagnostics:`,xN(c.diagnostics)),nN(d.join(`
1890
+ `);let n=rN(`info`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return q(`plugin info: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i}=await import(`./store-CD8HQQi0.js`),a=await i(r,t.fs);if(!a)return q(`plugin info: no installed plugin named "${r}"`);let o=await oN(t),{loadPluginFromDirectory:s}=await import(`./loader-Dw-TPPKt.js`),c=await s(o,a.root);if(!c.ok)return q(`plugin info: plugin at ${a.root} no longer loads:\n${xN(c.diagnostics)}`);let{plugin:l}=c,u=l.manifest,d=[`${u.name}${u.version?` v${u.version}`:``}`,...u.description?[` ${u.description}`]:[],` root: ${l.root}`,...u.license?[` license: ${u.license}`]:[],...u.homepage?[` home: ${u.homepage}`]:[],``,`Skills (${l.skills.length}):`,...l.skills.map(e=>` ${e.name} ${e.description}`),``,`MCP servers (${l.mcp.servers.length}):`,...l.mcp.servers.map(e=>e.status===`supported`?` ${e.name} ${e.config.type} ${e.config.url}`:` ${e.name} [skipped: ${e.reason}]`)];return c.diagnostics.length>0&&d.push(``,`Diagnostics:`,xN(c.diagnostics)),nN(d.join(`
1891
1891
  `)+`
1892
1892
  `)}async function vN(e,t,n,r){if(w(e))return nN(`usage: plugin validate <path|repo>
1893
1893
  `);let i=rN(`validate`,e);if(!(`ok`in i))return i;if(i.positionals.length<1)return q(`plugin validate: expected <path|repo>`);let a=await oN(n),o=await sN(i.positionals[0],t,a);if(o.kind===`error`)return q(`plugin validate: ${o.message}`);let s,c=null;if(o.kind===`github`){if(!n.fetch)return q(`plugin validate: GitHub sources are unavailable (no network fetch configured)`);c=`${r}/.plugin-validate/${lN(o.ref).split(`/`).pop()}`;let e=await uN(o.ref,c,a,n.fetch);if(e)return q(`plugin validate: ${e}`);s=c}else s=o.root;let{loadPluginFromDirectory:l}=await import(`./loader-Dw-TPPKt.js`),u;try{u=await l(a,s)}finally{c&&await dN(a,c)}if(!u.ok)return{stdout:``,stderr:`plugin validate: REJECTED\n${xN(u.diagnostics)}\n`,exitCode:1};let{plugin:d}=u,f=d.mcp.servers.filter(e=>e.status===`supported`).length,p=[`plugin validate: OK — "${d.manifest.name}"${d.manifest.version?` v${d.manifest.version}`:``}`,` skills: ${d.skills.length}`,` mcp servers: ${f} supported, ${d.mcp.servers.length-f} skipped (mcp.json ${d.mcp.status})`];return u.diagnostics.length>0&&p.push(`Diagnostics:`,xN(u.diagnostics)),nN(p.join(`
1894
1894
  `)+`
1895
1895
  `)}async function yN(e,t){if(w(e))return nN(`usage: plugin remove <name>
1896
- `);let n=rN(`remove`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return q(`plugin remove: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i,deleteInstalledPlugin:a}=await import(`./store-Czn1xbby.js`),o=await i(r,t.fs);if(!o)return q(`plugin remove: no installed plugin named "${r}"`);let s=0;if(o.mcpServerNames&&o.mcpServerNames.length>0){let{deleteServer:e,getServer:n}=await import(`./store-DNedyI8F.js`).then(e=>e.r);for(let i of o.mcpServerNames)(await n(i,t.fs))?.pluginOrigin===r&&await e(i,t.fs)&&(s+=1)}await a(r,t.fs);let c=o.root.startsWith(`${tN}/`);return c&&await dN(await oN(t),o.root),nN([`Removed agent plugin "${r}"`,` registry: removed`,` mcp servers: ${s} removed`,c?` files: removed (${o.root})`:` files: left in place (${o.root})`].join(`
1896
+ `);let n=rN(`remove`,e);if(!(`ok`in n))return n;if(n.positionals.length<1)return q(`plugin remove: expected <name>`);let r=n.positionals[0],{getInstalledPlugin:i,deleteInstalledPlugin:a}=await import(`./store-CD8HQQi0.js`),o=await i(r,t.fs);if(!o)return q(`plugin remove: no installed plugin named "${r}"`);let s=0;if(o.mcpServerNames&&o.mcpServerNames.length>0){let{deleteServer:e,getServer:n}=await import(`./store-DMPHri86.js`).then(e=>e.r);for(let i of o.mcpServerNames)(await n(i,t.fs))?.pluginOrigin===r&&await e(i,t.fs)&&(s+=1)}await a(r,t.fs);let c=o.root.startsWith(`${tN}/`);return c&&await dN(await oN(t),o.root),nN([`Removed agent plugin "${r}"`,` registry: removed`,` mcp servers: ${s} removed`,c?` files: removed (${o.root})`:` files: left in place (${o.root})`].join(`
1897
1897
  `)+`
1898
1898
  `)}function bN(e,t){let n=t.startsWith(`/`)?t:`${e.replace(/\/$/,``)}/${t}`,r=[];for(let e of n.split(`/`))e!==``&&e!==`.`&&(e===`..`?r.pop():r.push(e));return`/${r.join(`/`)}`}function xN(e){return e.map(e=>` ${e.level===`error`?`error`:`warn `} [${e.component}] ${e.message}`).join(`
1899
1899
  `)}const SN=[`pid`,`ppid`,`kind`,`stat`,`start`,`scoop`,`command`],CN=[`pid`,`ppid`,`stat`,`start`,`scoop`,`command`],wN={running:`R`,pending:`S`,exited:`Z`,killed:`K`},TN=[`-a`,`-A`,`-e`,`--all`,`-T`,`--tree`],EN=[`-o`,`--columns`];function DN(e={}){return S(`ps`,async t=>{if(w(t,{valueFlags:EN}))return VN();let n=e.processManager??ON();if(!n)return{stdout:``,stderr:`ps: no process manager available in this runtime
@@ -2105,7 +2105,7 @@ Limits and lifetime:
2105
2105
  `,exitCode:1};if(e.ttlMs!==void 0&&e.maxTabs!==void 0)return{stdout:``,stderr:`serve: --ttl cannot be combined with --max-tabs
2106
2106
  `,exitCode:1}}async function WF(e,t,n){if(e.ttlMs!==void 0){if(!t)throw Error(`persistent snapshot filesystem unavailable`);return IF(t,n)}}async function GF(e,t,n,r){if(e.length===0||e.includes(`--help`)||e.includes(`-h`))return bF();let i=EF(e);if(i.error)return{stdout:``,stderr:i.error,exitCode:1};let a=await HF(i);if(a)return a;if(!i.directory)return bF();let o=UF(i);if(o)return o;let s=await DF(i.directory,i.entry,t.fs,t.cwd);if(OF(s))return s;let{fullDirectory:c,entryPath:l}=s,u;try{u=await WF(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)
2107
2107
  `:``,f=await BF(!i.noBridge&&i.bridge,d);return f.ok?VF(i,c,l,f.webhookId,d,u,n):f.result}function KF(e,t){return S(`serve`,(n,r)=>GF(n,r,e,t))}const qF=`usage: session export [--id <id>] [--output <path>]
2108
- `;function JF(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 YF(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${qF}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${qF}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${qF}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${qF}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${qF}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${qF}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function XF(e){let t=[],n=0;for await(let r of e.chunks)t.push(r),n+=r.byteLength;let r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.byteLength;let a=await e.completion;if(a.byteLength!==n||kt(r)!==a.sha256)throw new Oa(`transfer-corrupt`);return r}async function ZF(e,t){let n=YF(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=JF(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${qF}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await hs().export(a,{}),n=await XF(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 Oa?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function QF(){return S(`session`,async(e,t)=>{if(e[0]===`export`&&!w(e))return ZF(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-n0b0bNTG.js`);return n(e,t,qF)})}function $F(){return S(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-cvQKad0O.js`);return await n(e,t)})}const eI=`leader`;function tI(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function nI(e){return+!!e.leader+e.followers.length}function rI(){return{stdout:`usage: sprinkle <subcommand> [args]
2108
+ `;function JF(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 YF(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${qF}`};let n=r[e+1];if(!n||n.startsWith(`-`))return{ok:!1,stderr:`session export: --id requires a value\n${qF}`};t=n,e++}else if(i===`--output`){if(n!==null)return{ok:!1,stderr:`session export: duplicate flag --output\n${qF}`};let t=r[e+1];if(!t||t.startsWith(`-`))return{ok:!1,stderr:`session export: --output requires a path\n${qF}`};n=t,e++}else if(i.startsWith(`-`))return{ok:!1,stderr:`session export: unknown flag ${i}\n${qF}`};else return{ok:!1,stderr:`session export: unexpected argument ${JSON.stringify(i)}\n${qF}`}}return{ok:!0,args:{sessionId:t,outputPath:n}}}async function XF(e){let t=[],n=0;for await(let r of e.chunks)t.push(r),n+=r.byteLength;let r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.byteLength;let a=await e.completion;if(a.byteLength!==n||kt(r)!==a.sha256)throw new Oa(`transfer-corrupt`);return r}async function ZF(e,t){let n=YF(e);if(!n.ok)return{stdout:``,stderr:n.stderr,exitCode:1};let{sessionId:r,outputPath:i}=n.args;if(i!==null){let e=JF(i);if(!e.ok)return{stdout:``,stderr:`session export: --output ${e.reason}\n${qF}`,exitCode:1}}let a=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r};try{let e=await hs().export(a,{}),n=await XF(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 Oa?e.code:e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}function QF(){return S(`session`,async(e,t)=>{if(e[0]===`export`&&!w(e))return ZF(e,t);let{dispatchSessionMemoryAware:n}=await import(`./session-command-memory-NaC_Sdn0.js`);return n(e,t,qF)})}function $F(){return S(`slicc`,async(e,t)=>{let{runSlicc:n}=await import(`./run-cvQKad0O.js`);return await n(e,t)})}const eI=`leader`;function tI(){try{let e=globalThis.localStorage?.getItem(`slicc.leaderSprinkleInstances`);if(e)return JSON.parse(e)}catch{}return[]}function nI(e){return+!!e.leader+e.followers.length}function rI(){return{stdout:`usage: sprinkle <subcommand> [args]
2109
2109
 
2110
2110
  list [--runtime <id>] List sprinkles + an instance line per runtime
2111
2111
  open <name> Open a sprinkle by name