shadow-claw 1.54.0 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/.well-known/mcp/server-card.json +1 -1
  2. package/.well-known/mcp.json +1 -1
  3. package/README.md +1 -1
  4. package/dist/cli/build/build.js +1 -1
  5. package/dist/cli/{chunk-DO2t9bUI.js → chunk--IuVyWfT.js} +24 -23
  6. package/dist/cli/{chunk-2ZYd9gYC.js → chunk--JpdI-Ht.js} +1 -1
  7. package/dist/cli/{chunk-m4Ineemy.js → chunk-4O8yrQuN.js} +1 -1
  8. package/dist/cli/{chunk-BiH9IXnQ.js → chunk-7S9Ywlfy.js} +1 -1
  9. package/dist/cli/{chunk-BmMOdYvk.js → chunk-B0SqqDSK.js} +1 -1
  10. package/dist/cli/chunk-BNaWaEm-.js +1 -0
  11. package/dist/cli/chunk-BXCsxO9e.js +1 -0
  12. package/dist/cli/chunk-Bq37qDoZ.js +18 -0
  13. package/dist/cli/{chunk-C1htf-nO.js → chunk-BrEeCKIo.js} +2 -2
  14. package/dist/cli/{chunk-BI1SOTM1.js → chunk-Bu3ylrhT.js} +8 -8
  15. package/dist/cli/{chunk-3smiGQoQ.js → chunk-C1v_s0Kb.js} +1 -1
  16. package/dist/cli/{chunk-DGeysxz3.js → chunk-C44G533y.js} +1 -1
  17. package/dist/cli/{chunk-9KiBalKu.js → chunk-C7hJLmsL.js} +1 -1
  18. package/dist/cli/{chunk-BFv9XSNd.js → chunk-CAaQWd6t.js} +1 -1
  19. package/dist/cli/chunk-CIkgn5Fh.js +1 -0
  20. package/dist/cli/chunk-CWEIN2kc.js +1 -0
  21. package/dist/cli/{chunk-BDeDZ-0L.js → chunk-CYg1lO1a.js} +1 -1
  22. package/dist/cli/{chunk-DXLmEQ3i.js → chunk-Ce09lwXT.js} +1 -1
  23. package/dist/cli/{chunk-XsfHeN4m.js → chunk-CpdqRSO-.js} +1 -1
  24. package/dist/cli/chunk-DB4x5L-B.js +1 -0
  25. package/dist/cli/{chunk-DaNyMqrk.js → chunk-DBvObsBQ.js} +1 -1
  26. package/dist/cli/chunk-DGPpt7Ka.js +1 -0
  27. package/dist/cli/chunk-DGagHluH.js +1 -0
  28. package/dist/cli/chunk-DUIs23D9.js +1 -0
  29. package/dist/cli/{chunk-CyvfQV16.js → chunk-DaurYOqg.js} +1 -1
  30. package/dist/cli/{chunk-DSFrcSyA.js → chunk-DfwRL0Ue.js} +1 -1
  31. package/dist/cli/{chunk-M2tZrzY5.js → chunk-DudYQk0p.js} +1 -1
  32. package/dist/cli/chunk-DvKo50Tp.js +2 -0
  33. package/dist/cli/{chunk-H_Mw5ypp.js → chunk-Dvrqte5Q.js} +2 -2
  34. package/dist/cli/{chunk-BtNO-m9T.js → chunk-DzhSExU0.js} +1 -1
  35. package/dist/cli/{chunk-IOMO88kZ.js → chunk-ENKlt3i9.js} +1 -1
  36. package/dist/cli/{chunk-Bspgzwsm.js → chunk-FWRwAX75.js} +8 -8
  37. package/dist/cli/chunk-Lf-Z-h48.js +32 -0
  38. package/dist/cli/{chunk-BucXnZ4Z.js → chunk-VRfkSLrD.js} +1 -1
  39. package/dist/cli/chunk-uaTxD024.js +1 -0
  40. package/dist/cli/cli.js +1 -1
  41. package/dist/cli/prerender/dsd-shell/prerender-dsd-shell.js +1 -1
  42. package/dist/headless-agent.js +2 -2
  43. package/dist/lib/components/index.js +25 -25
  44. package/dist/lib/components/settings/shadow-claw-accounts.js +1 -1
  45. package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
  46. package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
  47. package/dist/lib/components/settings/shadow-claw-git.js +1 -1
  48. package/dist/lib/components/settings/shadow-claw-integrations.js +1 -1
  49. package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
  50. package/dist/lib/components/settings/shadow-claw-mcp-remote.js +1 -1
  51. package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
  52. package/dist/lib/components/settings/shadow-claw-notifications.js +1 -1
  53. package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
  54. package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
  55. package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
  56. package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
  57. package/dist/lib/components/shadow-claw/utils/get-route.d.ts +3 -0
  58. package/dist/lib/components/shadow-claw/utils/sync-slotted-sidebar-active-links.d.ts +1 -1
  59. package/dist/lib/components/shadow-claw-accounts.js +1 -1
  60. package/dist/lib/components/shadow-claw-channel-config.js +1 -1
  61. package/dist/lib/components/shadow-claw-channels.js +1 -1
  62. package/dist/lib/components/shadow-claw-chat.js +1 -1
  63. package/dist/lib/components/shadow-claw-control-plane.js +1 -1
  64. package/dist/lib/components/shadow-claw-conversations.js +1 -1
  65. package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
  66. package/dist/lib/components/shadow-claw-files.js +1 -1
  67. package/dist/lib/components/shadow-claw-git.js +1 -1
  68. package/dist/lib/components/shadow-claw-integrations.js +1 -1
  69. package/dist/lib/components/shadow-claw-llm.js +1 -1
  70. package/dist/lib/components/shadow-claw-mcp-remote.js +1 -1
  71. package/dist/lib/components/shadow-claw-networking.js +1 -1
  72. package/dist/lib/components/shadow-claw-notifications.js +1 -1
  73. package/dist/lib/components/shadow-claw-page-header.js +1 -1
  74. package/dist/lib/components/shadow-claw-pages.js +1 -1
  75. package/dist/lib/components/shadow-claw-peerjs.js +1 -1
  76. package/dist/lib/components/shadow-claw-settings.js +1 -1
  77. package/dist/lib/components/shadow-claw-storage.js +1 -1
  78. package/dist/lib/components/shadow-claw-task-server.js +1 -1
  79. package/dist/lib/components/shadow-claw-tasks.js +1 -1
  80. package/dist/lib/components/shadow-claw-terminal.js +1 -1
  81. package/dist/lib/components/shadow-claw-tools.js +1 -1
  82. package/dist/lib/components/shadow-claw-webvm.js +1 -1
  83. package/dist/lib/components/shadow-claw.js +1 -1
  84. package/dist/lib/{configure-peer-js-D5jDCtLx.js → configure-peer-js-C9554Slv.js} +2 -2
  85. package/dist/lib/{configure-peer-js-D5jDCtLx.js.map → configure-peer-js-C9554Slv.js.map} +1 -1
  86. package/dist/lib/{file-viewer-B4CL4e0i.js → file-viewer-DBc5dxNy.js} +2 -2
  87. package/dist/lib/{file-viewer-B4CL4e0i.js.map → file-viewer-DBc5dxNy.js.map} +1 -1
  88. package/dist/lib/index.js +28 -27
  89. package/dist/lib/{init-control-plane-l2uFnhGV.js → init-control-plane-D-41Fm5q.js} +12 -12
  90. package/dist/lib/{init-control-plane-l2uFnhGV.js.map → init-control-plane-D-41Fm5q.js.map} +1 -1
  91. package/dist/lib/{markdown-0_p_zfxL.js → markdown-KnDWzWJJ.js} +2 -2
  92. package/dist/lib/{markdown-0_p_zfxL.js.map → markdown-KnDWzWJJ.js.map} +1 -1
  93. package/dist/lib/{orchestrator-D6wm8Sec.js → orchestrator-BEZcqgR5.js} +9 -9
  94. package/dist/lib/{orchestrator-D6wm8Sec.js.map → orchestrator-BEZcqgR5.js.map} +1 -1
  95. package/dist/lib/{orchestrator-Dh-hnIpK.js → orchestrator-Cda13e5U.js} +4 -4
  96. package/dist/lib/{orchestrator-Dh-hnIpK.js.map → orchestrator-Cda13e5U.js.map} +1 -1
  97. package/dist/lib/{peerjs-BWZnsD0B.js → peerjs-DYkUTcee.js} +5 -5
  98. package/dist/lib/{peerjs-BWZnsD0B.js.map → peerjs-DYkUTcee.js.map} +1 -1
  99. package/dist/lib/{push-client-MybDfOdi.js → push-client-CQtCFDaD.js} +3 -3
  100. package/dist/lib/{push-client-MybDfOdi.js.map → push-client-CQtCFDaD.js.map} +1 -1
  101. package/dist/lib/security/custom-element-security.d.ts +8 -4
  102. package/dist/lib/{shadow-claw-PdOpgTxH.js → shadow-claw-DYe9u6Tp.js} +142 -33
  103. package/dist/lib/shadow-claw-DYe9u6Tp.js.map +1 -0
  104. package/dist/lib/{shadow-claw-accounts-3bR76EOb.js → shadow-claw-accounts-D2URoHys.js} +2 -2
  105. package/dist/lib/{shadow-claw-accounts-3bR76EOb.js.map → shadow-claw-accounts-D2URoHys.js.map} +1 -1
  106. package/dist/lib/{shadow-claw-channel-config-ChdZ1iB8.js → shadow-claw-channel-config-buXoz2xv.js} +3 -3
  107. package/dist/lib/{shadow-claw-channel-config-ChdZ1iB8.js.map → shadow-claw-channel-config-buXoz2xv.js.map} +1 -1
  108. package/dist/lib/{shadow-claw-channels-CK9sc7h_.js → shadow-claw-channels-5yVJ1gLk.js} +3 -3
  109. package/dist/lib/{shadow-claw-channels-CK9sc7h_.js.map → shadow-claw-channels-5yVJ1gLk.js.map} +1 -1
  110. package/dist/lib/{shadow-claw-chat-B6uuZnJ7.js → shadow-claw-chat-CVc-7ycM.js} +7 -7
  111. package/dist/lib/{shadow-claw-chat-B6uuZnJ7.js.map → shadow-claw-chat-CVc-7ycM.js.map} +1 -1
  112. package/dist/lib/{shadow-claw-control-plane-BpRcl312.js → shadow-claw-control-plane-B5vsF91B.js} +6 -6
  113. package/dist/lib/{shadow-claw-control-plane-BpRcl312.js.map → shadow-claw-control-plane-B5vsF91B.js.map} +1 -1
  114. package/dist/lib/{shadow-claw-conversations-Dc_Xk2mB.js → shadow-claw-conversations-PGK5zqn3.js} +54 -12
  115. package/dist/lib/{shadow-claw-conversations-Dc_Xk2mB.js.map → shadow-claw-conversations-PGK5zqn3.js.map} +1 -1
  116. package/dist/lib/{shadow-claw-file-viewer-C4x1PtB2.js → shadow-claw-file-viewer-DSqn0hgx.js} +6 -6
  117. package/dist/lib/{shadow-claw-file-viewer-C4x1PtB2.js.map → shadow-claw-file-viewer-DSqn0hgx.js.map} +1 -1
  118. package/dist/lib/{shadow-claw-files-DhnHbXKf.js → shadow-claw-files-vOa9ZWbr.js} +6 -6
  119. package/dist/lib/{shadow-claw-files-DhnHbXKf.js.map → shadow-claw-files-vOa9ZWbr.js.map} +1 -1
  120. package/dist/lib/{shadow-claw-git-BeQ1ElUd.js → shadow-claw-git-D54Z85Bj.js} +4 -4
  121. package/dist/lib/{shadow-claw-git-BeQ1ElUd.js.map → shadow-claw-git-D54Z85Bj.js.map} +1 -1
  122. package/dist/lib/{shadow-claw-integrations-Bbdolk3w.js → shadow-claw-integrations-BTubMH9d.js} +2 -2
  123. package/dist/lib/{shadow-claw-integrations-Bbdolk3w.js.map → shadow-claw-integrations-BTubMH9d.js.map} +1 -1
  124. package/dist/lib/{shadow-claw-llm-DPda4L3C.js → shadow-claw-llm-8koGTNYs.js} +3 -3
  125. package/dist/lib/{shadow-claw-llm-DPda4L3C.js.map → shadow-claw-llm-8koGTNYs.js.map} +1 -1
  126. package/dist/lib/{shadow-claw-mcp-remote-Dn9c30WI.js → shadow-claw-mcp-remote-C2jwBsQt.js} +2 -2
  127. package/dist/lib/{shadow-claw-mcp-remote-Dn9c30WI.js.map → shadow-claw-mcp-remote-C2jwBsQt.js.map} +1 -1
  128. package/dist/lib/{shadow-claw-networking-zqNuyn3-.js → shadow-claw-networking-BV-rna16.js} +2 -2
  129. package/dist/lib/{shadow-claw-networking-zqNuyn3-.js.map → shadow-claw-networking-BV-rna16.js.map} +1 -1
  130. package/dist/lib/{shadow-claw-notifications-DFgdo33v.js → shadow-claw-notifications-Dku7VBLk.js} +2 -2
  131. package/dist/lib/{shadow-claw-notifications-DFgdo33v.js.map → shadow-claw-notifications-Dku7VBLk.js.map} +1 -1
  132. package/dist/lib/{shadow-claw-page-header-B7LFGQRf.js → shadow-claw-page-header-VPjYWfsT.js} +2 -2
  133. package/dist/lib/{shadow-claw-page-header-B7LFGQRf.js.map → shadow-claw-page-header-VPjYWfsT.js.map} +1 -1
  134. package/dist/lib/{shadow-claw-pages-DLspFqdK.js → shadow-claw-pages-DXrM6hgZ.js} +29 -19
  135. package/dist/lib/shadow-claw-pages-DXrM6hgZ.js.map +1 -0
  136. package/dist/lib/{shadow-claw-peerjs-D8xWwuWR.js → shadow-claw-peerjs-D3xonez5.js} +3 -3
  137. package/dist/lib/{shadow-claw-peerjs-D8xWwuWR.js.map → shadow-claw-peerjs-D3xonez5.js.map} +1 -1
  138. package/dist/lib/{shadow-claw-settings-NbvzXASD.js → shadow-claw-settings-DMTx6OS9.js} +5 -5
  139. package/dist/lib/{shadow-claw-settings-NbvzXASD.js.map → shadow-claw-settings-DMTx6OS9.js.map} +1 -1
  140. package/dist/lib/{shadow-claw-storage-B_NAoZmd.js → shadow-claw-storage-BJLnukxa.js} +3 -3
  141. package/dist/lib/{shadow-claw-storage-B_NAoZmd.js.map → shadow-claw-storage-BJLnukxa.js.map} +1 -1
  142. package/dist/lib/{shadow-claw-task-server-BaQJXhYJ.js → shadow-claw-task-server-DcMj20hD.js} +2 -2
  143. package/dist/lib/{shadow-claw-task-server-BaQJXhYJ.js.map → shadow-claw-task-server-DcMj20hD.js.map} +1 -1
  144. package/dist/lib/{shadow-claw-tasks-CAZua0-j.js → shadow-claw-tasks-BQBe4lVi.js} +7 -7
  145. package/dist/lib/{shadow-claw-tasks-CAZua0-j.js.map → shadow-claw-tasks-BQBe4lVi.js.map} +1 -1
  146. package/dist/lib/{shadow-claw-terminal-B2YJhkJL.js → shadow-claw-terminal-DPEzTxXv.js} +2 -2
  147. package/dist/lib/{shadow-claw-terminal-B2YJhkJL.js.map → shadow-claw-terminal-DPEzTxXv.js.map} +1 -1
  148. package/dist/lib/{shadow-claw-tools-CkZWxxTm.js → shadow-claw-tools-BCnU8FaK.js} +6 -6
  149. package/dist/lib/{shadow-claw-tools-CkZWxxTm.js.map → shadow-claw-tools-BCnU8FaK.js.map} +1 -1
  150. package/dist/lib/{shadow-claw-webvm-BL9cgrP9.js → shadow-claw-webvm-CnW-hoJ8.js} +2 -2
  151. package/dist/lib/{shadow-claw-webvm-BL9cgrP9.js.map → shadow-claw-webvm-CnW-hoJ8.js.map} +1 -1
  152. package/dist/lib/subsystems/mcp/webmcp.d.ts +15 -2
  153. package/dist/lib/{sync-web-mcp-registration-dW2MVCj4.js → sync-web-mcp-registration-DwpGjVdo.js} +10 -4
  154. package/dist/lib/sync-web-mcp-registration-DwpGjVdo.js.map +1 -0
  155. package/dist/lib/{tools-D7whby3H.js → tools-CP6G0HF7.js} +5 -6
  156. package/dist/lib/tools-CP6G0HF7.js.map +1 -0
  157. package/dist/lib/{trusted-types-d0cdkut_.js → trusted-types-0cu5Dm6M.js} +29 -4
  158. package/dist/lib/{trusted-types-d0cdkut_.js.map → trusted-types-0cu5Dm6M.js.map} +1 -1
  159. package/dist/lib/utils/index.d.ts +1 -0
  160. package/dist/lib/utils/index.js +4 -2
  161. package/dist/lib/utils/index.js.map +1 -1
  162. package/dist/lib/utils/resolve-page-script-dependencies.d.ts +19 -0
  163. package/dist/lib/utils/resolve-page-script-dependencies.js +98 -0
  164. package/dist/lib/utils/resolve-page-script-dependencies.js.map +1 -0
  165. package/dist/lib/utils/utils.js +1 -1
  166. package/dist/lib/webmcp-Bf9rT7uu.js +2001 -0
  167. package/dist/lib/webmcp-Bf9rT7uu.js.map +1 -0
  168. package/dist/public/.well-known/mcp/server-card.json +1 -1
  169. package/dist/public/.well-known/mcp.json +1 -1
  170. package/dist/public/AGENTS.md +3 -3
  171. package/dist/public/README.md +1 -1
  172. package/dist/public/agent.worker.js +2 -2
  173. package/dist/public/components/shadow-claw/shadow-claw.css +1 -1
  174. package/dist/public/components/shadow-claw/shadow-claw.html +1 -1
  175. package/dist/public/components/shadow-claw-conversations/shadow-claw-conversations.css +1 -1
  176. package/dist/public/components/shadow-claw-conversations/shadow-claw-conversations.html +1 -1
  177. package/dist/public/{configure-peer-js-WLRM7Qa7.js → configure-peer-js-OYl3V8sW.js} +1 -1
  178. package/dist/public/{custom-element-security-Cl991z-x.js → custom-element-security-BR4V40j4.js} +1 -1
  179. package/dist/public/docs/example/article/index.html +3 -3
  180. package/dist/public/docs/example/article.html +3 -3
  181. package/dist/public/docs/publishing/index.html +3 -3
  182. package/dist/public/docs/publishing.html +3 -3
  183. package/dist/public/docs/skill-creator/index.html +3 -3
  184. package/dist/public/docs/skill-creator.html +3 -3
  185. package/dist/public/docs/subsystems/custom-element-security.md +19 -5
  186. package/dist/public/docs/subsystems/pages.md +10 -2
  187. package/dist/public/docs/subsystems/tools.md +1 -2
  188. package/dist/public/docs/subsystems/webmcp.md +41 -6
  189. package/dist/public/{download-group-file-fFjoIIp4.js → download-group-file-BNmK8wac.js} +1 -1
  190. package/dist/public/e2e/README.md +2 -2
  191. package/dist/public/{e2e-bridge-CiSfBRT4.js → e2e-bridge-4phD1JUQ.js} +1 -1
  192. package/dist/public/{file-viewer-DFC3kfeO.js → file-viewer-Dbh3K9nL.js} +1 -1
  193. package/dist/public/index.html +3 -3
  194. package/dist/public/index.js +1 -1
  195. package/dist/public/{init-control-plane-BEbcwmmv.js → init-control-plane-DGOY_RNS.js} +1 -1
  196. package/dist/public/llms.txt +1 -1
  197. package/dist/public/main/index.html +3 -3
  198. package/dist/public/main/memory/index.html +3 -3
  199. package/dist/public/main/memory.html +3 -3
  200. package/dist/public/main.html +3 -3
  201. package/dist/public/{markdown-BeglYzw9.js → markdown-BPZYpfGm.js} +1 -1
  202. package/dist/public/{orchestrator-BlvEG3PO.js → orchestrator-OoUK7CF9.js} +1 -1
  203. package/dist/public/{orchestrator-DTNrntd4.js → orchestrator-a9047bGu.js} +1 -1
  204. package/dist/public/{peerjs-CnBdK94R.js → peerjs-Cbn310Tz.js} +1 -1
  205. package/dist/public/{push-client-DOHbdCyj.js → push-client-Dy4LGJy9.js} +1 -1
  206. package/dist/public/service-worker.js +1 -1
  207. package/dist/public/shadow-claw-B-HWC1uN.js +1180 -0
  208. package/dist/public/{shadow-claw-accounts-C6FXVw2K.js → shadow-claw-accounts-Di-anCZ1.js} +1 -1
  209. package/dist/public/{shadow-claw-channels-tr_r60Kq.js → shadow-claw-channels-RVwCE8pE.js} +1 -1
  210. package/dist/public/{shadow-claw-chat-BAAPhAOs.js → shadow-claw-chat-DI1q8UnX.js} +1 -1
  211. package/dist/public/{shadow-claw-control-plane-C_5VIx8E.js → shadow-claw-control-plane-KXEdLOGl.js} +2 -2
  212. package/dist/public/{shadow-claw-conversations-DGYZdDa3.js → shadow-claw-conversations-BCBGtS30.js} +40 -6
  213. package/dist/public/{shadow-claw-file-viewer-5j2-Z3fN.js → shadow-claw-file-viewer-CW3t6j-w.js} +1 -1
  214. package/dist/public/{shadow-claw-files-DKF4Yy0m.js → shadow-claw-files-JQ-o0ImX.js} +1 -1
  215. package/dist/public/{shadow-claw-git-CtUTJXKT.js → shadow-claw-git-D2M8VixW.js} +2 -2
  216. package/dist/public/{shadow-claw-integrations-CuBy9D3z.js → shadow-claw-integrations-Cgw6v9_1.js} +1 -1
  217. package/dist/public/{shadow-claw-llm-BIfNNjGL.js → shadow-claw-llm-74ieXp7i.js} +1 -1
  218. package/dist/public/{shadow-claw-mcp-remote-C17FXvrb.js → shadow-claw-mcp-remote-BX0BkSmy.js} +1 -1
  219. package/dist/public/{shadow-claw-networking-CjxQ1CLI.js → shadow-claw-networking-DNX8vaIQ.js} +1 -1
  220. package/dist/public/{shadow-claw-notifications-Brn2O3Ps.js → shadow-claw-notifications-BLTaGAny.js} +1 -1
  221. package/dist/public/{shadow-claw-page-header-Bn1P7Cxb.js → shadow-claw-page-header-CjFOdo9v.js} +1 -1
  222. package/dist/public/shadow-claw-pages-DOQqMm0_.js +645 -0
  223. package/dist/public/{shadow-claw-settings-CfDm0hVA.js → shadow-claw-settings-DFtl0Fy8.js} +2 -2
  224. package/dist/public/{shadow-claw-storage-DOOesRzw.js → shadow-claw-storage-gQGExZRq.js} +1 -1
  225. package/dist/public/{shadow-claw-task-server-H36iDDp2.js → shadow-claw-task-server-Ca45uY7S.js} +1 -1
  226. package/dist/public/{shadow-claw-tasks-4JsjSGkN.js → shadow-claw-tasks-CCTaaSdi.js} +1 -1
  227. package/dist/public/{shadow-claw-terminal-CTRTcYz-.js → shadow-claw-terminal-BfgulLkl.js} +1 -1
  228. package/dist/public/{shadow-claw-tools-Dm1LxNf4.js → shadow-claw-tools-V8NA4n18.js} +1 -1
  229. package/dist/public/{shadow-claw-webvm-JzuPe9Nr.js → shadow-claw-webvm-CxxI2bnC.js} +1 -1
  230. package/dist/public/sync-web-mcp-registration-CkCA8UFm.js +1 -0
  231. package/dist/public/{tools-FiTtOlIt.js → tools-CwQq5tJH.js} +2 -2
  232. package/dist/public/webmcp-CmtWOAFm.js +6 -0
  233. package/dist/server.js +2 -2
  234. package/package.json +3 -3
  235. package/src/cli/prerender/dsd-shell/prerender-dsd-shell.test.ts +16 -0
  236. package/src/cli/prerender/dsd-shell/prerender-dsd-shell.ts +62 -1
  237. package/src/cli/prerender/pretty-paths/prerender-pretty-paths.test.ts +277 -0
  238. package/src/cli/prerender/pretty-paths/prerender-pretty-paths.ts +28 -1
  239. package/src/cli/site-config/custom-elements/build-custom-element-script-tags.ts +13 -1
  240. package/src/components/shadow-claw/shadow-claw.css +12 -0
  241. package/src/components/shadow-claw/shadow-claw.html +12 -2
  242. package/src/components/shadow-claw/utils/bind-event-listeners.test.ts +18 -0
  243. package/src/components/shadow-claw/utils/bind-event-listeners.ts +14 -0
  244. package/src/components/shadow-claw/utils/get-route.test.ts +35 -0
  245. package/src/components/shadow-claw/utils/get-route.ts +18 -0
  246. package/src/components/shadow-claw/utils/sync-slotted-sidebar-active-links.test.ts +152 -1
  247. package/src/components/shadow-claw/utils/sync-slotted-sidebar-active-links.ts +139 -8
  248. package/src/components/shadow-claw-conversations/shadow-claw-conversations.css +11 -0
  249. package/src/components/shadow-claw-conversations/shadow-claw-conversations.html +27 -4
  250. package/src/components/shadow-claw-conversations/shadow-claw-conversations.ts +32 -4
  251. package/src/components/shadow-claw-pages/shadow-claw-pages-scripts.test.ts +266 -0
  252. package/src/components/shadow-claw-pages/shadow-claw-pages.ts +41 -17
  253. package/src/core/orchestrator/utils/sync-web-mcp-registration.test.ts +18 -1
  254. package/src/core/orchestrator/utils/sync-web-mcp-registration.ts +8 -0
  255. package/src/core/utils/init-control-plane.test.ts +9 -4
  256. package/src/security/custom-element-security.test.ts +65 -0
  257. package/src/security/custom-element-security.ts +67 -4
  258. package/src/stores/tools.test.ts +5 -3
  259. package/src/stores/tools.ts +5 -10
  260. package/src/subsystems/mcp/webmcp.test.ts +84 -13
  261. package/src/subsystems/mcp/webmcp.ts +73 -10
  262. package/src/utils/index.ts +1 -0
  263. package/src/utils/resolve-page-script-dependencies.test.ts +245 -0
  264. package/src/utils/resolve-page-script-dependencies.ts +198 -0
  265. package/dist/cli/chunk-B1hufJeO.js +0 -1
  266. package/dist/cli/chunk-BZpn8npn.js +0 -1
  267. package/dist/cli/chunk-Bw5aOTFr.js +0 -1
  268. package/dist/cli/chunk-C8nH01Gw.js +0 -32
  269. package/dist/cli/chunk-CK1ZoyoE.js +0 -17
  270. package/dist/cli/chunk-CVkhDr-7.js +0 -1
  271. package/dist/cli/chunk-Cum07Vlh.js +0 -1
  272. package/dist/cli/chunk-D3UhDDmV.js +0 -2
  273. package/dist/cli/chunk-D8GI6qj6.js +0 -1
  274. package/dist/cli/chunk-DEH-FvmP.js +0 -1
  275. package/dist/cli/chunk-DksvJ_kf.js +0 -1
  276. package/dist/cli/chunk-RGb9wM4R.js +0 -1
  277. package/dist/lib/shadow-claw-PdOpgTxH.js.map +0 -1
  278. package/dist/lib/shadow-claw-pages-DLspFqdK.js.map +0 -1
  279. package/dist/lib/sync-web-mcp-registration-dW2MVCj4.js.map +0 -1
  280. package/dist/lib/tools-D7whby3H.js.map +0 -1
  281. package/dist/lib/webmcp-CYTNZfkn.js +0 -1687
  282. package/dist/lib/webmcp-CYTNZfkn.js.map +0 -1
  283. package/dist/public/shadow-claw-CnNX-WCh.js +0 -1158
  284. package/dist/public/shadow-claw-pages-BwOOqRWW.js +0 -645
  285. package/dist/public/sync-web-mcp-registration-BnHVUjat.js +0 -1
  286. package/dist/public/webmcp-_TBqXlVW.js +0 -1
@@ -1,4 +1,4 @@
1
- import{i as e}from"./chunk-BtNO-m9T.js";import{t}from"./chunk-BFv9XSNd.js";import{t as n}from"./chunk-M2tZrzY5.js";import{i as r,n as i,r as a,t as o}from"./chunk-BDeDZ-0L.js";import s from"node:fs";import c from"node:path";import l from"node:process";import{access as u,constants as d,mkdir as f,mkdtemp as p,readFile as m,writeFile as h}from"node:fs/promises";import{tmpdir as g}from"node:os";import _ from"node:readline/promises";import v from"node:tty";function y(){let e=l.emitWarning;if(!e||e.__suppressed)return;let t=function(t,...n){if((typeof t!=`string`||n[0]!==`ExperimentalWarning`&&!t.includes(`ExperimentalWarning`)&&!t.includes(`SQLite`))&&!(t&&typeof t==`object`&&(t.name===`ExperimentalWarning`||typeof t.message==`string`&&t.message.includes(`SQLite`))))return e.call(l,t,...n)};t.__suppressed=!0,l.emitWarning=t}y();const b=[`shadow-claw.config.json`,`shadow-claw-config.json`,`shadowclaw.config.json`,`site-config.json`];async function x(e){try{return await u(e,d.F_OK),!0}catch{return!1}}async function S(e,t){let n=[];if(e&&n.push(c.resolve(e)),t){let e=c.resolve(t);n.includes(e)||n.push(e)}if(e&&c.basename(c.resolve(e))===`.cache`){let t=c.dirname(c.resolve(e));n.includes(t)||n.push(t)}for(let e of n)for(let t of b){let n=c.join(e,t);if(await x(n))try{let e=await m(n,`utf8`),t=JSON.parse(e);if(t&&typeof t==`object`)return{configPath:n,config:t}}catch{}}return null}function C(){return c.join(g(),`shadow-claw`)}function w(e){let t=c.resolve(e||l.cwd()),n=[c.join(t,`shadow-claw-config.json`),c.join(t,`shadow-claw.config.json`),c.join(t,`shadowclaw.config.json`),c.join(t,`pages`,`shadow-claw-config.json`),c.join(t,`pages`,`shadow-claw.config.json`),c.join(t,`site-config.json`),c.join(t,`pages`,`site-config.json`)];for(let e of n)if(s.existsSync(e))try{let n=s.readFileSync(e,`utf8`),r=JSON.parse(n);if(r&&typeof r.cacheDir==`string`&&r.cacheDir.trim())return c.resolve(t,r.cacheDir.trim());if(r&&r.server&&typeof r.server.cacheDir==`string`&&r.server.cacheDir.trim())return c.resolve(t,r.server.cacheDir.trim())}catch{}return null}function T(e,t=`.cache`){let n=c.resolve(e||l.cwd()),r=c.join(n,t),i=c.join(r,`database`),a=[r,c.join(r,`control-token.json`),c.join(r,`cli-peer-id`),i,c.join(i,`clients.db`),c.join(i,`agent.db`),c.join(i,`scheduled-tasks.db`),c.join(i,`push-subscriptions.db`),c.join(n,`database`,`clients.db`),c.join(n,`database`,`agent.db`)];for(let e of a)if(s.existsSync(e))return!0;return!1}async function E({contentRoot:e,stdin:t=l.stdin,stdout:n=l.stdout,onExit:r=e=>l.exit(e)}={}){let i=c.resolve(e||l.cwd()),a=c.join(i,`.cache`),o=C(),u=t,d=n,f=!1,p=null;if(t===l.stdin&&!l.stdin.isTTY&&!l.env.CI&&(l.stderr.isTTY||l.stdout.isTTY))try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;p=s.openSync(e,`r`),u=new v.ReadStream(p),d=l.stderr.isTTY?l.stderr:l.stdout,f=!0}catch{try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;u=s.createReadStream(e),d=l.stderr.isTTY?l.stderr:l.stdout,f=!0}catch{}}let m=_.createInterface({input:u,output:d}),h=!1,g=()=>{if(!h){h=!0,d.write(`
1
+ import{i as e}from"./chunk-VRfkSLrD.js";import{t}from"./chunk-CAaQWd6t.js";import{t as n}from"./chunk-DudYQk0p.js";import{i as r,n as i,r as a,t as o}from"./chunk-CYg1lO1a.js";import s from"node:fs";import c from"node:path";import l from"node:process";import{access as u,constants as d,mkdir as f,mkdtemp as p,readFile as m,writeFile as h}from"node:fs/promises";import{tmpdir as g}from"node:os";import _ from"node:readline/promises";import v from"node:tty";function y(){let e=l.emitWarning;if(!e||e.__suppressed)return;let t=function(t,...n){if((typeof t!=`string`||n[0]!==`ExperimentalWarning`&&!t.includes(`ExperimentalWarning`)&&!t.includes(`SQLite`))&&!(t&&typeof t==`object`&&(t.name===`ExperimentalWarning`||typeof t.message==`string`&&t.message.includes(`SQLite`))))return e.call(l,t,...n)};t.__suppressed=!0,l.emitWarning=t}y();const b=[`shadow-claw.config.json`,`shadow-claw-config.json`,`shadowclaw.config.json`,`site-config.json`];async function x(e){try{return await u(e,d.F_OK),!0}catch{return!1}}async function S(e,t){let n=[];if(e&&n.push(c.resolve(e)),t){let e=c.resolve(t);n.includes(e)||n.push(e)}if(e&&c.basename(c.resolve(e))===`.cache`){let t=c.dirname(c.resolve(e));n.includes(t)||n.push(t)}for(let e of n)for(let t of b){let n=c.join(e,t);if(await x(n))try{let e=await m(n,`utf8`),t=JSON.parse(e);if(t&&typeof t==`object`)return{configPath:n,config:t}}catch{}}return null}function C(){return c.join(g(),`shadow-claw`)}function w(e){let t=c.resolve(e||l.cwd()),n=[c.join(t,`shadow-claw-config.json`),c.join(t,`shadow-claw.config.json`),c.join(t,`shadowclaw.config.json`),c.join(t,`pages`,`shadow-claw-config.json`),c.join(t,`pages`,`shadow-claw.config.json`),c.join(t,`site-config.json`),c.join(t,`pages`,`site-config.json`)];for(let e of n)if(s.existsSync(e))try{let n=s.readFileSync(e,`utf8`),r=JSON.parse(n);if(r&&typeof r.cacheDir==`string`&&r.cacheDir.trim())return c.resolve(t,r.cacheDir.trim());if(r&&r.server&&typeof r.server.cacheDir==`string`&&r.server.cacheDir.trim())return c.resolve(t,r.server.cacheDir.trim())}catch{}return null}function T(e,t=`.cache`){let n=c.resolve(e||l.cwd()),r=c.join(n,t),i=c.join(r,`database`),a=[r,c.join(r,`control-token.json`),c.join(r,`cli-peer-id`),i,c.join(i,`clients.db`),c.join(i,`agent.db`),c.join(i,`scheduled-tasks.db`),c.join(i,`push-subscriptions.db`),c.join(n,`database`,`clients.db`),c.join(n,`database`,`agent.db`)];for(let e of a)if(s.existsSync(e))return!0;return!1}async function E({contentRoot:e,stdin:t=l.stdin,stdout:n=l.stdout,onExit:r=e=>l.exit(e)}={}){let i=c.resolve(e||l.cwd()),a=c.join(i,`.cache`),o=C(),u=t,d=n,f=!1,p=null;if(t===l.stdin&&!l.stdin.isTTY&&!l.env.CI&&(l.stderr.isTTY||l.stdout.isTTY))try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;p=s.openSync(e,`r`),u=new v.ReadStream(p),d=l.stderr.isTTY?l.stderr:l.stdout,f=!0}catch{try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;u=s.createReadStream(e),d=l.stderr.isTTY?l.stderr:l.stdout,f=!0}catch{}}let m=_.createInterface({input:u,output:d}),h=!1,g=()=>{if(!h){h=!0,d.write(`
2
2
  Operation cancelled.
3
3
  `);try{m.close()}catch{}r(130)}};m.on(`SIGINT`,g),u&&typeof u.on==`function`&&u!==l.stdin&&u.on(`SIGINT`,g);let y=()=>g();l.on(`SIGINT`,y);let b=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&g()};u&&typeof u.on==`function`&&u.on(`data`,b);try{d.write(`
4
4
  ShadowClaw needs a directory to store cache and database files:
@@ -11,18 +11,18 @@ ShadowClaw needs a directory to store cache and database files:
11
11
  `),n.write(`Tip: You can pass --tmp, --cache-dir <dir>, set SHADOWCLAW_TMP=1, SHADOWCLAW_CACHE_DIR=<dir>, or configure "cacheDir" in shadow-claw.config.json to skip this prompt.
12
12
 
13
13
  `);let e=(await m.question(`Enter choice [1-3] or a directory path (default: 1): `)).trim();if(!e||e===`1`||e.toLowerCase()===`y`||e.toLowerCase()===`yes`)return n.write(`Using current directory cache: ${a}\n\n`),a;if(e===`2`||e.toLowerCase()===`tmp`||e.toLowerCase()===`temp`||e.toLowerCase()===`t`)return n.write(`Using temporary directory: ${o}\n\n`),o;if(e.toLowerCase()===`n`||e.toLowerCase()===`no`){let e=(await m.question(`Use temporary directory (${o}) instead? (Y/n): `)).trim();return e.toLowerCase()===`n`||e.toLowerCase()===`no`?(n.write(`Operation cancelled.
14
- `),r(0),o):(n.write(`Using temporary directory: ${o}\n\n`),o)}if(e===`3`||e.toLowerCase()===`c`||e.toLowerCase()===`custom`){let e=(await m.question(`Enter custom directory path: `)).trim();if(!e)return n.write(`Using current directory cache: ${a}\n\n`),a;let t=c.resolve(i,e);return n.write(`Using custom directory: ${t}\n\n`),t}let t=c.resolve(i,e);return d.write(`Using directory: ${t}\n\n`),t}finally{l.removeListener(`SIGINT`,y),u&&typeof u.removeListener==`function`&&(u!==l.stdin&&u.removeListener(`SIGINT`,g),u.removeListener(`data`,b));try{m.close()}catch{}if(f){if(u&&typeof u.destroy==`function`)try{u.destroy()}catch{}if(p!=null)try{s.closeSync(p)}catch{}}}}async function D(e={}){let t=c.resolve(e.contentRoot||l.cwd());if(e.tmp||e.temp||[`1`,`true`,`yes`].includes((l.env.SHADOWCLAW_TMP||l.env.SHADOWCLAW_TEMP||``).toLowerCase().trim())){let n=C();return{cacheDir:n,databaseDir:e.databaseDir?c.resolve(t,e.databaseDir):c.join(n,`database`)}}let n=(e.cacheDir||l.env.SHADOWCLAW_CACHE_DIR||``).trim();if(n){let r=c.resolve(t,n);return{cacheDir:r,databaseDir:e.databaseDir?c.resolve(t,e.databaseDir):c.join(r,`database`)}}let r=(e.databaseDir||l.env.SHADOWCLAW_DATABASE_DIR||``).trim();if(r){let e=c.resolve(t,r);return{cacheDir:c.basename(e)===`database`?c.dirname(e):c.resolve(e,`..`),databaseDir:e}}let i=w(t);if(i)return{cacheDir:i,databaseDir:c.join(i,`database`)};let a=T(t),o=c.join(t,`.cache`),s=c.join(o,`database`);if(a||e.yes||e.y||[`1`,`true`,`yes`].includes((l.env.SHADOWCLAW_YES||``).toLowerCase().trim()))return{cacheDir:o,databaseDir:s};let u=e.stdin?!!e.stdin.isTTY:!!l.stdin.isTTY,d=!e.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),f=e.isTTY===void 0?u||d:!!e.isTTY,p=e.isCI===void 0?e.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!e.isCI;if(!f||p||e.quiet)return{cacheDir:o,databaseDir:s};let m=await E({contentRoot:t,stdin:e.stdin,stdout:e.stdout,onExit:e.onExit});return{cacheDir:m,databaseDir:c.join(m,`database`)}}function O(e,t,n){if(!n||typeof e?.executeNativeAiTask!=`function`)return;let{id:r,groupId:i,taskType:a,input:o}=n;return e.executeNativeAiTask({taskType:a,input:o,groupId:i,db:t}).then(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].resolve(e),delete t[r])}).catch(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].reject(e),delete t[r])})}async function k(e={}){let t=e.core||await n();t.setHeadlessMode(!0);let r,i;if(e.workspace)r=c.resolve(e.workspace),i=e.databaseDir?c.resolve(e.databaseDir):e.cacheDir?c.resolve(e.cacheDir,`database`):c.resolve(r,`database`);else{let t=await D({contentRoot:l.cwd(),cacheDir:e.cacheDir,databaseDir:e.databaseDir,tmp:e.tmp||e.temp,yes:e.yes||e.y,quiet:e.quiet,isTTY:e.isTTY,stdin:e.stdin,stdout:e.stdout}),n=c.join(g(),`shadow-claw`);await f(n,{recursive:!0}),r=await p(c.join(n,`workspace-`)),i=t.databaseDir}await f(r,{recursive:!0}),await f(i,{recursive:!0});let a=c.join(i,`agent.db`),o=t.openSqliteDatabase(a);t.setDB(o),t.setStorageRootFromPath(r);let s=(await S(r))?.config||{},u=s.settings||{},d=e.internetAccess??e.allowInternet??u.internetAccess??u.vm_bash_full_internet_access??u.fullInternetAccess??s.internetAccess;if(d!==void 0&&typeof t.setConfig==`function`){let e=t.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await t.setConfig(o,e,d?`true`:`false`)}let m={response:t=>{!e.quiet&&t.payload?.text&&console.log(t.payload.text)},error:t=>{!e.quiet&&t.payload?.error&&console.error(`Error: ${t.payload.error}`)},"tool-activity":t=>{!e.quiet&&e.verbose&&t.payload&&console.log(`[Tool] ${t.payload.tool} (${t.payload.status||`executing`})`)},"thinking-log":t=>{if(!e.quiet&&e.verbose&&t.payload){let e=t.payload.label||t.payload.level||`Log`;console.log(`[${e}] ${t.payload.message||``}`)}},"request-native-ai-task":e=>{O(t,o,e.payload)}};return t.setPostHandler(e=>{m[e.type]?.(e)}),{db:o,workspaceDir:r,dbPath:a,core:t}}function A(e={}){let{force:t=!1,stdin:n=l.stdin,timeoutMs:r}=e,i=n;return!t&&i?.isTTY?Promise.resolve(null):new Promise((e,t)=>{let n=[],a=!1,o;r!=null&&r>0&&(o=setTimeout(()=>{a=!0,typeof i?.destroy==`function`&&i.destroy(),e(null)},r)),typeof i?.setEncoding==`function`&&i.setEncoding(`utf8`),i.on(`data`,e=>{a||n.push(typeof e==`string`?e:e.toString(`utf8`))}),i.on(`end`,()=>{if(o&&clearTimeout(o),a)return;let t=n.join(``).trim();e(t.length>0?t:null)}),i.on(`error`,e=>{o&&clearTimeout(o),!a&&t(e)})})}function j(e,t){let n=t&&typeof t==`object`?Object.keys(t.properties||{}):[];for(let t of[`text`,`prompt`,`content`,`input`])if(n.includes(t))return{[t]:e};return{input:e}}function M(e){return(Array.isArray(e)?e:e?[e]:[]).map(e=>String(e)).filter(Boolean)}async function N(t){let n=[];for(let r of t){let t=c.resolve(r),i;try{i=await m(t)}catch(e){throw Error(`Error: Failed to read attachment file "${r}": ${e.message}`)}let a=c.basename(t),o=e(a,``);n.push({fileName:a,mimeType:o,size:i.length,source:{kind:`local-file`,file:new Blob([new Uint8Array(i)],{type:o})}})}return n}const P=/* @__PURE__ */ new Set([`ask_user`,`attach_file_to_chat`,`clear_chat`,`create_room`,`invite_to_room`,`leave_room`,`list_components`,`list_room_members`,`open_file`,`render_component`,`send_file`,`show_toast`,`send_notification`,`spawn_subagent`]),F=`server:main`;async function I(e={}){let t;if(e.workspace)t=c.resolve(e.workspace);else{let e=c.join(g(),`shadow-claw`);await f(e,{recursive:!0}),t=await p(c.join(e,`workspace-`))}let n=c.join(t,`.agents`,`skills`),r=c.join(t,`.agents`,`tools`),i=c.join(t,`database`);await f(t,{recursive:!0}),await f(n,{recursive:!0}),await f(r,{recursive:!0}),await f(i,{recursive:!0});let a=e.provider,o=e.model,s=e.stdin?!!e.stdin.isTTY:!!l.stdin.isTTY,u=!e.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),d=e.isTTY===void 0?s||u:!!e.isTTY,m=e.isCI===void 0?e.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!e.isCI,_=d&&!m&&!e.quiet&&!e.yes&&!e.y;if(!a&&!o&&_){let{promptForAgentModel:n}=await import(`./chunk-3smiGQoQ.js`),r=await n({workspaceDir:t,contentRoot:l.cwd(),cacheDir:e.cacheDir,stdin:e.stdin,stdout:e.stdout,quiet:e.quiet,isTTY:d});a=r.providerId,o=r.model}if(a||=`transformers_js_local`,!o){let{DEFAULT_LOCAL_MODEL:e}=await import(`./chunk-3smiGQoQ.js`);o=a===`transformers_js_local`?e:`openrouter/free`}if(!await S(t)){let e=c.join(t,`shadow-claw.config.json`);await h(e,JSON.stringify({$schema:`https://json-schema.org/draft/2020-12/schema`,site:{title:`ShadowClaw Agent Workspace`,description:`Headless CLI agent workspace`},settings:{defaultProvider:`openrouter`,defaultModel:`openrouter/free`},agent:{defaultProvider:a,defaultModel:o}},null,2)+`
15
- `,`utf8`)}if(e.download&&(a===`transformers_js_local`||a===`llamafile`)){let{downloadLocalModel:t}=await import(`./chunk-3smiGQoQ.js`);await t(o,{cacheDir:e.cacheDir,verbose:e.verbose,isTTY:e.isTTY})}return await k({workspace:t,quiet:!0}),{success:!0,workspace:t}}async function L(e={}){let{db:t,core:n}=await k(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||F,i=await n.discoverSkills(t,r);return{skills:i.skills,diagnostics:i.diagnostics}}async function R(e={}){let{db:t,core:n}=await k(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||F,i=null;if(e.toolsProfile||e.profile){let r=String(e.toolsProfile||e.profile).trim().toLowerCase(),a=n.DEFAULT_BUILTIN_PROFILE||null,o=[];if(typeof n.getConfig==`function`)try{let e=await n.getConfig(t,n.CONFIG_KEYS?.TOOL_PROFILES||`tool_profiles`);typeof e==`string`?o=JSON.parse(e):Array.isArray(e)&&(o=e)}catch{}let s=[a,...o].filter(Boolean).find(e=>e.id&&String(e.id).toLowerCase()===r||e.name&&String(e.name).toLowerCase()===r);s&&(i=new Set(s.enabledToolNames||[]))}let a=[...n.TOOL_DEFINITIONS||[]];if(typeof n.loadDeclarativeTools==`function`)try{let e=await n.loadDeclarativeTools(t,r);if(e&&Array.isArray(e.tools))for(let t of e.tools)a.some(e=>e.name===t.name)||a.push(t)}catch{}return{tools:a.map(e=>({name:e.name,description:e.description,headlessSafe:!P.has(e.name),...i?{enabled:i.has(e.name)}:{}}))}}async function z(e,t,n={}){let{db:r,workspaceDir:i,core:a}=await k(n),o=n.group||a.DEFAULT_SERVER_GROUP_ID||F,s=(a.TOOL_DEFINITIONS||[]).find(t=>t.name===e);if(!s&&typeof a.loadDeclarativeTools==`function`)try{s=(await a.loadDeclarativeTools(r,o)).tools.find(t=>t.name===e)}catch{}if(!s){let t=`Error: Tool "${e}" not found.`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}let u=!P.has(s.name),d=t??n.input;if(d===`-`&&(d=void 0),d==null&&n._stdinData!=null){let e=n._stdinData,t;try{t=JSON.parse(e)}catch{t=j(e,s.input_schema)}d=t}if(d!=null){let t={};if(typeof d==`string`)try{t=JSON.parse(d)}catch(e){let t=`Error: Failed to parse input JSON: ${e.message}`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}else typeof d==`object`&&(t=d);let f;try{let e=await H(r,a,i,{...n,interactive:!1});f={db:r,provider:e.providerId,model:e.model,apiKey:e.apiKey}}catch{}try{let i=await a.executeTool(r,e,t,o,{invokeContext:f}),d=typeof i==`string`?i:JSON.stringify(i,null,2);return n.output?(await h(c.resolve(n.output),d,`utf8`),n.quiet||l.stderr.write(`Output written to ${n.output}\n`)):n.quiet||l.stdout.write(d+`
14
+ `),r(0),o):(n.write(`Using temporary directory: ${o}\n\n`),o)}if(e===`3`||e.toLowerCase()===`c`||e.toLowerCase()===`custom`){let e=(await m.question(`Enter custom directory path: `)).trim();if(!e)return n.write(`Using current directory cache: ${a}\n\n`),a;let t=c.resolve(i,e);return n.write(`Using custom directory: ${t}\n\n`),t}let t=c.resolve(i,e);return d.write(`Using directory: ${t}\n\n`),t}finally{l.removeListener(`SIGINT`,y),u&&typeof u.removeListener==`function`&&(u!==l.stdin&&u.removeListener(`SIGINT`,g),u.removeListener(`data`,b));try{m.close()}catch{}if(f){if(u&&typeof u.destroy==`function`)try{u.destroy()}catch{}if(p!=null)try{s.closeSync(p)}catch{}}}}async function D(e={}){let t=c.resolve(e.contentRoot||l.cwd());if(e.tmp||e.temp||[`1`,`true`,`yes`].includes((l.env.SHADOWCLAW_TMP||l.env.SHADOWCLAW_TEMP||``).toLowerCase().trim())){let n=C();return{cacheDir:n,databaseDir:e.databaseDir?c.resolve(t,e.databaseDir):c.join(n,`database`)}}let n=(e.cacheDir||l.env.SHADOWCLAW_CACHE_DIR||``).trim();if(n){let r=c.resolve(t,n);return{cacheDir:r,databaseDir:e.databaseDir?c.resolve(t,e.databaseDir):c.join(r,`database`)}}let r=(e.databaseDir||l.env.SHADOWCLAW_DATABASE_DIR||``).trim();if(r){let e=c.resolve(t,r);return{cacheDir:c.basename(e)===`database`?c.dirname(e):c.resolve(e,`..`),databaseDir:e}}let i=w(t);if(i)return{cacheDir:i,databaseDir:c.join(i,`database`)};let a=T(t),o=c.join(t,`.cache`),s=c.join(o,`database`);if(a||e.yes||e.y||[`1`,`true`,`yes`].includes((l.env.SHADOWCLAW_YES||``).toLowerCase().trim()))return{cacheDir:o,databaseDir:s};let u=e.stdin?!!e.stdin.isTTY:!!l.stdin.isTTY,d=!e.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),f=e.isTTY===void 0?u||d:!!e.isTTY,p=e.isCI===void 0?e.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!e.isCI;if(!f||p||e.quiet)return{cacheDir:o,databaseDir:s};let m=await E({contentRoot:t,stdin:e.stdin,stdout:e.stdout,onExit:e.onExit});return{cacheDir:m,databaseDir:c.join(m,`database`)}}function O(e,t,n){if(!n||typeof e?.executeNativeAiTask!=`function`)return;let{id:r,groupId:i,taskType:a,input:o}=n;return e.executeNativeAiTask({taskType:a,input:o,groupId:i,db:t}).then(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].resolve(e),delete t[r])}).catch(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].reject(e),delete t[r])})}async function k(e={}){let t=e.core||await n();t.setHeadlessMode(!0);let r,i;if(e.workspace)r=c.resolve(e.workspace),i=e.databaseDir?c.resolve(e.databaseDir):e.cacheDir?c.resolve(e.cacheDir,`database`):c.resolve(r,`database`);else{let t=await D({contentRoot:l.cwd(),cacheDir:e.cacheDir,databaseDir:e.databaseDir,tmp:e.tmp||e.temp,yes:e.yes||e.y,quiet:e.quiet,isTTY:e.isTTY,stdin:e.stdin,stdout:e.stdout}),n=c.join(g(),`shadow-claw`);await f(n,{recursive:!0}),r=await p(c.join(n,`workspace-`)),i=t.databaseDir}await f(r,{recursive:!0}),await f(i,{recursive:!0});let a=c.join(i,`agent.db`),o=t.openSqliteDatabase(a);t.setDB(o),t.setStorageRootFromPath(r);let s=(await S(r))?.config||{},u=s.settings||{},d=e.internetAccess??e.allowInternet??u.internetAccess??u.vm_bash_full_internet_access??u.fullInternetAccess??s.internetAccess;if(d!==void 0&&typeof t.setConfig==`function`){let e=t.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await t.setConfig(o,e,d?`true`:`false`)}let m={response:t=>{!e.quiet&&t.payload?.text&&console.log(t.payload.text)},error:t=>{!e.quiet&&t.payload?.error&&console.error(`Error: ${t.payload.error}`)},"tool-activity":t=>{!e.quiet&&e.verbose&&t.payload&&console.log(`[Tool] ${t.payload.tool} (${t.payload.status||`executing`})`)},"thinking-log":t=>{if(!e.quiet&&e.verbose&&t.payload){let e=t.payload.label||t.payload.level||`Log`;console.log(`[${e}] ${t.payload.message||``}`)}},"request-native-ai-task":e=>{O(t,o,e.payload)}};return t.setPostHandler(e=>{m[e.type]?.(e)}),{db:o,workspaceDir:r,dbPath:a,core:t}}function A(e={}){let{force:t=!1,stdin:n=l.stdin,timeoutMs:r}=e,i=n;return!t&&i?.isTTY?Promise.resolve(null):new Promise((e,t)=>{let n=[],a=!1,o;r!=null&&r>0&&(o=setTimeout(()=>{a=!0,typeof i?.destroy==`function`&&i.destroy(),e(null)},r)),typeof i?.setEncoding==`function`&&i.setEncoding(`utf8`),i.on(`data`,e=>{a||n.push(typeof e==`string`?e:e.toString(`utf8`))}),i.on(`end`,()=>{if(o&&clearTimeout(o),a)return;let t=n.join(``).trim();e(t.length>0?t:null)}),i.on(`error`,e=>{o&&clearTimeout(o),!a&&t(e)})})}function j(e,t){let n=t&&typeof t==`object`?Object.keys(t.properties||{}):[];for(let t of[`text`,`prompt`,`content`,`input`])if(n.includes(t))return{[t]:e};return{input:e}}function M(e){return(Array.isArray(e)?e:e?[e]:[]).map(e=>String(e)).filter(Boolean)}async function N(t){let n=[];for(let r of t){let t=c.resolve(r),i;try{i=await m(t)}catch(e){throw Error(`Error: Failed to read attachment file "${r}": ${e.message}`)}let a=c.basename(t),o=e(a,``);n.push({fileName:a,mimeType:o,size:i.length,source:{kind:`local-file`,file:new Blob([new Uint8Array(i)],{type:o})}})}return n}const P=/* @__PURE__ */ new Set([`ask_user`,`attach_file_to_chat`,`clear_chat`,`create_room`,`invite_to_room`,`leave_room`,`list_components`,`list_room_members`,`open_file`,`render_component`,`send_file`,`show_toast`,`send_notification`,`spawn_subagent`]),F=`server:main`;async function I(e={}){let t;if(e.workspace)t=c.resolve(e.workspace);else{let e=c.join(g(),`shadow-claw`);await f(e,{recursive:!0}),t=await p(c.join(e,`workspace-`))}let n=c.join(t,`.agents`,`skills`),r=c.join(t,`.agents`,`tools`),i=c.join(t,`database`);await f(t,{recursive:!0}),await f(n,{recursive:!0}),await f(r,{recursive:!0}),await f(i,{recursive:!0});let a=e.provider,o=e.model,s=e.stdin?!!e.stdin.isTTY:!!l.stdin.isTTY,u=!e.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),d=e.isTTY===void 0?s||u:!!e.isTTY,m=e.isCI===void 0?e.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!e.isCI,_=d&&!m&&!e.quiet&&!e.yes&&!e.y;if(!a&&!o&&_){let{promptForAgentModel:n}=await import(`./chunk-C1v_s0Kb.js`),r=await n({workspaceDir:t,contentRoot:l.cwd(),cacheDir:e.cacheDir,stdin:e.stdin,stdout:e.stdout,quiet:e.quiet,isTTY:d});a=r.providerId,o=r.model}if(a||=`transformers_js_local`,!o){let{DEFAULT_LOCAL_MODEL:e}=await import(`./chunk-C1v_s0Kb.js`);o=a===`transformers_js_local`?e:`openrouter/free`}if(!await S(t)){let e=c.join(t,`shadow-claw.config.json`);await h(e,JSON.stringify({$schema:`https://json-schema.org/draft/2020-12/schema`,site:{title:`ShadowClaw Agent Workspace`,description:`Headless CLI agent workspace`},settings:{defaultProvider:`openrouter`,defaultModel:`openrouter/free`},agent:{defaultProvider:a,defaultModel:o}},null,2)+`
15
+ `,`utf8`)}if(e.download&&(a===`transformers_js_local`||a===`llamafile`)){let{downloadLocalModel:t}=await import(`./chunk-C1v_s0Kb.js`);await t(o,{cacheDir:e.cacheDir,verbose:e.verbose,isTTY:e.isTTY})}return await k({workspace:t,quiet:!0}),{success:!0,workspace:t}}async function L(e={}){let{db:t,core:n}=await k(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||F,i=await n.discoverSkills(t,r);return{skills:i.skills,diagnostics:i.diagnostics}}async function R(e={}){let{db:t,core:n}=await k(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||F,i=null;if(e.toolsProfile||e.profile){let r=String(e.toolsProfile||e.profile).trim().toLowerCase(),a=n.DEFAULT_BUILTIN_PROFILE||null,o=[];if(typeof n.getConfig==`function`)try{let e=await n.getConfig(t,n.CONFIG_KEYS?.TOOL_PROFILES||`tool_profiles`);typeof e==`string`?o=JSON.parse(e):Array.isArray(e)&&(o=e)}catch{}let s=[a,...o].filter(Boolean).find(e=>e.id&&String(e.id).toLowerCase()===r||e.name&&String(e.name).toLowerCase()===r);s&&(i=new Set(s.enabledToolNames||[]))}let a=[...n.TOOL_DEFINITIONS||[]];if(typeof n.loadDeclarativeTools==`function`)try{let e=await n.loadDeclarativeTools(t,r);if(e&&Array.isArray(e.tools))for(let t of e.tools)a.some(e=>e.name===t.name)||a.push(t)}catch{}return{tools:a.map(e=>({name:e.name,description:e.description,headlessSafe:!P.has(e.name),...i?{enabled:i.has(e.name)}:{}}))}}async function z(e,t,n={}){let{db:r,workspaceDir:i,core:a}=await k(n),o=n.group||a.DEFAULT_SERVER_GROUP_ID||F,s=(a.TOOL_DEFINITIONS||[]).find(t=>t.name===e);if(!s&&typeof a.loadDeclarativeTools==`function`)try{s=(await a.loadDeclarativeTools(r,o)).tools.find(t=>t.name===e)}catch{}if(!s){let t=`Error: Tool "${e}" not found.`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}let u=!P.has(s.name),d=t??n.input;if(d===`-`&&(d=void 0),d==null&&n._stdinData!=null){let e=n._stdinData,t;try{t=JSON.parse(e)}catch{t=j(e,s.input_schema)}d=t}if(d!=null){let t={};if(typeof d==`string`)try{t=JSON.parse(d)}catch(e){let t=`Error: Failed to parse input JSON: ${e.message}`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}else typeof d==`object`&&(t=d);let f;try{let e=await H(r,a,i,{...n,interactive:!1});f={db:r,provider:e.providerId,model:e.model,apiKey:e.apiKey}}catch{}try{let i=await a.executeTool(r,e,t,o,{invokeContext:f}),d=typeof i==`string`?i:JSON.stringify(i,null,2);return n.output?(await h(c.resolve(n.output),d,`utf8`),n.quiet||l.stderr.write(`Output written to ${n.output}\n`)):n.quiet||l.stdout.write(d+`
16
16
  `),{success:!0,tool:s,headlessSafe:u,output:i}}catch(t){let r=t instanceof Error?t.message:String(t);return n.quiet||console.error(`Error executing tool "${e}": ${r}`),l.exitCode=1,{success:!1,error:r}}}if(!n.quiet){let e=u?`[headless-safe]`:`[browser-only]`;console.log(`Tool: ${s.name} ${e}\n`),console.log(`Description:\n ${s.description}\n`),s.input_schema&&(console.log(`Parameters (JSON Schema):`),console.log(JSON.stringify(s.input_schema,null,2)),console.log()),console.log(`Usage:`),console.log(` Direct CLI: npx shadow-claw agent tool ${s.name} '<json-input>'`),console.log(` Pipe input: echo '<text>' | npx shadow-claw agent tool ${s.name}`),console.log(` Agent Prompt: npx shadow-claw agent run "<instruction>"
17
- `)}return{success:!0,tool:s,headlessSafe:u}}async function B(e={}){let{db:t,core:n}=await k(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||F,{clearGroupMessages:i}=await import(`./chunk-CAxYfMhR.js`);return await i(t,r),e.quiet||console.log(`Cleared conversation history for group "${r}".`),{success:!0,groupId:r}}async function V(e,t={}){let{db:n,core:r}=await k(t),i=t.group||r.DEFAULT_SERVER_GROUP_ID||F,a=await r.loadSkill(n,i,e);if(!a)throw Error(`Skill "${e}" not found in workspace.`);if(a.execution?.type===`tools`&&Array.isArray(a.execution.tools)){let e=a.execution.tools.map(e=>({name:e.name||e.tool,input:e.input||e.arguments||{},suppressOutput:e.suppressOutput})),t=await r.executeToolChain(n,i,e,{isManual:!0});return{success:!0,skill:a,results:t.results,rawOutputs:t.rawOutputs}}return{success:!0,skill:a,message:`Skill "${e}" loaded (no declarative tools defined).`}}async function H(e,t,n,r={}){let i=r.contentRoot??l.cwd(),a=await S(n,i),o=a?.config||{},s=o.settings||{},c=o.agent||s.agent||{},u=r.provider||l.env.SHADOW_CLAW_PROVIDER||l.env.SHADOW_CLAW_DEFAULT_PROVIDER;if(!u&&typeof t.getConfig==`function`&&(u=await t.getConfig(e,t.CONFIG_KEYS?.PROVIDER||`provider`)),!u&&r.model){let{isLlamafile:e,isAgentfile:t}=await import(`./chunk-3smiGQoQ.js`);t(r.model)?u=`agentfile`:e(r.model)?u=`llamafile`:/onnx/i.test(r.model)&&(u=`transformers_js_local`)}u||=c.defaultProvider||c.provider||s.defaultProvider||s.provider||o.defaultProvider;let d=r.stdin?!!r.stdin.isTTY:!!l.stdin.isTTY,f=!r.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),p=r.isTTY===void 0?d||f:!!r.isTTY,m=r.isCI===void 0?r.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!r.isCI,h=p&&!m&&!r.quiet&&r.interactive!==!1;if(!u){if(h){let{promptForAgentModel:e}=await import(`./chunk-3smiGQoQ.js`),t=await e({workspaceDir:n,contentRoot:i,cacheDir:r.cacheDir,stdin:r.stdin,stdout:r.stdout,quiet:r.quiet,isTTY:p,service:r._transformersService});u=t.providerId,r.model=t.model}else u=`openrouter`}let g=typeof t.getProvider==`function`?t.getProvider(u):null;if(!g){let e=`Error: Unknown provider "${u}".`;throw Error(e)}let _;if(r.apiKey!==void 0)_=r.apiKey;else{if(_=l.env.SHADOW_CLAW_API_KEY,!_)switch(u){case`openrouter`:_=l.env.OPENROUTER_API_KEY;break;case`huggingface`:_=l.env.HUGGINGFACE_API_KEY||l.env.HF_TOKEN;break;case`gemini_proxy`:_=l.env.GEMINI_API_KEY}!_&&typeof t.getConfig==`function`&&(_=await t.getConfig(e,`api_key:${u}`)||await t.getConfig(e,`apiKey`))}let v=r.model||l.env.SHADOW_CLAW_MODEL||l.env.SHADOW_CLAW_DEFAULT_MODEL||(typeof t.getConfig==`function`?await t.getConfig(e,t.CONFIG_KEYS?.MODEL||`model`):null)||c.defaultModel||c.model||s.defaultModel||s.model||o.defaultModel||g?.defaultModel||(u===`transformers_js_local`?(await import(`./chunk-3smiGQoQ.js`)).DEFAULT_LOCAL_MODEL:`default`);if(u===`transformers_js_local`||u===`llamafile`||u===`agentfile`){let{isModelLocallyCached:e,downloadLocalModel:t}=await import(`./chunk-3smiGQoQ.js`),i=r.cacheDir||c.cacheDir||o.cacheDir||s.cacheDir;if(!(e(v,i)||n&&e(v,n))){let e=r.stdout||l.stderr;if(r.download||r.yes||r.y)r.quiet||e.write(`\nDownloading ${v} from Hugging Face...\n`),await t(v,{cacheDir:i||r.cacheDir,stream:e,isTTY:p,service:r._transformersService,progress:!r.quiet&&r.progress!==!1&&!r.noProgress,quiet:r.quiet,verbose:r.verbose});else if(h){let n=await import(`node:readline/promises`),a=await import(`node:tty`),o=await import(`node:fs`),s=r.stdin||l.stdin,c=e,u=!1,d=null;if(s===l.stdin&&!l.stdin.isTTY&&!l.env.CI&&(l.stderr.isTTY||l.stdout.isTTY))try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;d=o.openSync(e,`r`),s=new a.ReadStream(d),c=l.stderr.isTTY?l.stderr:l.stdout,u=!0}catch{try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;s=o.createReadStream(e),c=l.stderr.isTTY?l.stderr:l.stdout,u=!0}catch{}}let f=n.createInterface({input:s,output:c}),m=!1,h=()=>{if(!m){m=!0,c.write(`
17
+ `)}return{success:!0,tool:s,headlessSafe:u}}async function B(e={}){let{db:t,core:n}=await k(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||F,{clearGroupMessages:i}=await import(`./chunk-CAxYfMhR.js`);return await i(t,r),e.quiet||console.log(`Cleared conversation history for group "${r}".`),{success:!0,groupId:r}}async function V(e,t={}){let{db:n,core:r}=await k(t),i=t.group||r.DEFAULT_SERVER_GROUP_ID||F,a=await r.loadSkill(n,i,e);if(!a)throw Error(`Skill "${e}" not found in workspace.`);if(a.execution?.type===`tools`&&Array.isArray(a.execution.tools)){let e=a.execution.tools.map(e=>({name:e.name||e.tool,input:e.input||e.arguments||{},suppressOutput:e.suppressOutput})),t=await r.executeToolChain(n,i,e,{isManual:!0});return{success:!0,skill:a,results:t.results,rawOutputs:t.rawOutputs}}return{success:!0,skill:a,message:`Skill "${e}" loaded (no declarative tools defined).`}}async function H(e,t,n,r={}){let i=r.contentRoot??l.cwd(),a=await S(n,i),o=a?.config||{},s=o.settings||{},c=o.agent||s.agent||{},u=r.provider||l.env.SHADOW_CLAW_PROVIDER||l.env.SHADOW_CLAW_DEFAULT_PROVIDER;if(!u&&typeof t.getConfig==`function`&&(u=await t.getConfig(e,t.CONFIG_KEYS?.PROVIDER||`provider`)),!u&&r.model){let{isLlamafile:e,isAgentfile:t}=await import(`./chunk-C1v_s0Kb.js`);t(r.model)?u=`agentfile`:e(r.model)?u=`llamafile`:/onnx/i.test(r.model)&&(u=`transformers_js_local`)}u||=c.defaultProvider||c.provider||s.defaultProvider||s.provider||o.defaultProvider;let d=r.stdin?!!r.stdin.isTTY:!!l.stdin.isTTY,f=!r.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),p=r.isTTY===void 0?d||f:!!r.isTTY,m=r.isCI===void 0?r.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!r.isCI,h=p&&!m&&!r.quiet&&r.interactive!==!1;if(!u){if(h){let{promptForAgentModel:e}=await import(`./chunk-C1v_s0Kb.js`),t=await e({workspaceDir:n,contentRoot:i,cacheDir:r.cacheDir,stdin:r.stdin,stdout:r.stdout,quiet:r.quiet,isTTY:p,service:r._transformersService});u=t.providerId,r.model=t.model}else u=`openrouter`}let g=typeof t.getProvider==`function`?t.getProvider(u):null;if(!g){let e=`Error: Unknown provider "${u}".`;throw Error(e)}let _;if(r.apiKey!==void 0)_=r.apiKey;else{if(_=l.env.SHADOW_CLAW_API_KEY,!_)switch(u){case`openrouter`:_=l.env.OPENROUTER_API_KEY;break;case`huggingface`:_=l.env.HUGGINGFACE_API_KEY||l.env.HF_TOKEN;break;case`gemini_proxy`:_=l.env.GEMINI_API_KEY}!_&&typeof t.getConfig==`function`&&(_=await t.getConfig(e,`api_key:${u}`)||await t.getConfig(e,`apiKey`))}let v=r.model||l.env.SHADOW_CLAW_MODEL||l.env.SHADOW_CLAW_DEFAULT_MODEL||(typeof t.getConfig==`function`?await t.getConfig(e,t.CONFIG_KEYS?.MODEL||`model`):null)||c.defaultModel||c.model||s.defaultModel||s.model||o.defaultModel||g?.defaultModel||(u===`transformers_js_local`?(await import(`./chunk-C1v_s0Kb.js`)).DEFAULT_LOCAL_MODEL:`default`);if(u===`transformers_js_local`||u===`llamafile`||u===`agentfile`){let{isModelLocallyCached:e,downloadLocalModel:t}=await import(`./chunk-C1v_s0Kb.js`),i=r.cacheDir||c.cacheDir||o.cacheDir||s.cacheDir;if(!(e(v,i)||n&&e(v,n))){let e=r.stdout||l.stderr;if(r.download||r.yes||r.y)r.quiet||e.write(`\nDownloading ${v} from Hugging Face...\n`),await t(v,{cacheDir:i||r.cacheDir,stream:e,isTTY:p,service:r._transformersService,progress:!r.quiet&&r.progress!==!1&&!r.noProgress,quiet:r.quiet,verbose:r.verbose});else if(h){let n=await import(`node:readline/promises`),a=await import(`node:tty`),o=await import(`node:fs`),s=r.stdin||l.stdin,c=e,u=!1,d=null;if(s===l.stdin&&!l.stdin.isTTY&&!l.env.CI&&(l.stderr.isTTY||l.stdout.isTTY))try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;d=o.openSync(e,`r`),s=new a.ReadStream(d),c=l.stderr.isTTY?l.stderr:l.stdout,u=!0}catch{try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;s=o.createReadStream(e),c=l.stderr.isTTY?l.stderr:l.stdout,u=!0}catch{}}let f=n.createInterface({input:s,output:c}),m=!1,h=()=>{if(!m){m=!0,c.write(`
18
18
  Operation cancelled.
19
19
  `);try{f.close()}catch{}typeof r.onExit==`function`?r.onExit(130):l.exit(130)}};f.on(`SIGINT`,h),s&&typeof s.on==`function`&&s!==l.stdin&&s.on(`SIGINT`,h);let g=()=>h();l.on(`SIGINT`,g);let _=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&h()};s&&typeof s.on==`function`&&s.on(`data`,_);let y=``;try{y=(await f.question(`\nModel "${v}" is not yet downloaded to local disk.\nDownload model weights now? (Y/n) [default: Y]: `)).trim().toLowerCase()}finally{l.removeListener(`SIGINT`,g),s&&typeof s.removeListener==`function`&&(s!==l.stdin&&s.removeListener(`SIGINT`,h),s.removeListener(`data`,_));try{f.close()}catch{}if(u){if(s&&typeof s.destroy==`function`)try{s.destroy()}catch{}if(d!=null)try{o.closeSync(d)}catch{}}}if(y===``||y===`y`||y===`yes`)r.quiet||e.write(`\nDownloading ${v} from Hugging Face...\n`),await t(v,{cacheDir:i||r.cacheDir,stream:e,isTTY:p,service:r._transformersService,progress:!r.quiet&&r.progress!==!1&&!r.noProgress,quiet:r.quiet,verbose:r.verbose});else throw Error(`Model "${v}" is not downloaded. Download aborted.`)}else throw Error(`Model "${v}" is not downloaded. Run with --download or --yes to download model weights automatically.`)}}let y=r.baseUrl||r.providerBaseUrl||c?.baseUrl||s?.baseUrl||s?.providerBaseUrl;return y&&g&&(g={...g,baseUrl:y}),{providerId:u,providerConfig:g,apiKey:_||``,model:v,workspaceConfigData:a,workspaceConfig:o,workspaceSettings:s,workspaceAgent:c}}async function ee(e,t,n,r,i,a,o){let s=[...t.TOOL_DEFINITIONS||[]];if(typeof t.loadDeclarativeTools==`function`)try{let r=await t.loadDeclarativeTools(e,n);if(r&&Array.isArray(r.tools))for(let e of r.tools)s.some(t=>t.name===e.name)||s.push(e)}catch{}let c=s.filter(e=>!P.has(e.name)),l=c,u=null;async function d(){let n=t.DEFAULT_BUILTIN_PROFILE||null,a=[];if(typeof t.getConfig==`function`)try{let n=await t.getConfig(e,t.CONFIG_KEYS?.TOOL_PROFILES||`tool_profiles`);typeof n==`string`?a=JSON.parse(n):Array.isArray(n)&&(a=n)}catch{}let o=r?.toolProfiles||i?.toolProfiles||r?.profiles||[];return[n,...a,...o].filter(Boolean)}if(o.noTools===!0||o.tools===!1||o.tools===`none`||o.tools===``)return l=[],{enabledTools:l,profileSystemPromptOverride:u};if(o.tools!==void 0&&o.tools!==null)return l=(Array.isArray(o.tools)?o.tools:String(o.tools).split(`,`)).map(e=>String(e).trim()).filter(Boolean).map(e=>c.find(t=>t.name===String(e))).filter(Boolean),{enabledTools:l,profileSystemPromptOverride:u};if(o.toolsProfile){let e=await d(),t=String(o.toolsProfile).trim().toLowerCase(),n=e.find(e=>e.id&&String(e.id).toLowerCase()===t||e.name&&String(e.name).toLowerCase()===t);if(!n)throw Error(`Error: Tool profile "${o.toolsProfile}" not found.`);let r=new Set(n.enabledToolNames||[]);if(l=c.filter(e=>r.has(e.name)),n.customTools&&Array.isArray(n.customTools))for(let e of n.customTools)!P.has(e.name)&&!l.some(t=>t.name===e.name)&&l.push(e);return n.systemPromptOverride&&(u=n.systemPromptOverride),{enabledTools:l,profileSystemPromptOverride:u}}let f=a?.tools??a?.enabledTools;if(f!=null)return f===!1||f===`none`||f===``?(l=[],{enabledTools:l,profileSystemPromptOverride:u}):(l=(Array.isArray(f)?f:String(f).split(`,`)).map(e=>String(e).trim()).filter(Boolean).map(e=>c.find(t=>t.name===e)).filter(Boolean),{enabledTools:l,profileSystemPromptOverride:u});let p=a?.toolsProfile||a?.defaultToolsProfile;if(p){let e=await d(),t=String(p).trim().toLowerCase(),n=e.find(e=>e.id&&String(e.id).toLowerCase()===t||e.name&&String(e.name).toLowerCase()===t);if(n){let e=new Set(n.enabledToolNames||[]);return l=c.filter(t=>e.has(t.name)),n.systemPromptOverride&&(u=n.systemPromptOverride),{enabledTools:l,profileSystemPromptOverride:u}}}return{enabledTools:l,profileSystemPromptOverride:u}}async function U(e,n={}){let{db:s,workspaceDir:u,core:d}=await k(n),f=n.group||d.DEFAULT_SERVER_GROUP_ID||F,p=n._stdinData??null;if(e===`-`?e=p||``:p&&(e=e?`${e}\n\n${p}`:p),!e){let e=`Error: Prompt required. Provide a prompt argument or pipe text to stdin.`;return n.quiet||console.error(e),l.exitCode=1,{success:!1,error:e}}let g=[],_=/* @__PURE__ */ new Map;try{let e=await N(M(n.file));for(let t of e)if(t.source?.kind===`local-file`){let e=await t.source.file.arrayBuffer();_.set(t.fileName,new Uint8Array(e))}g=await t(s,f,e);for(let e of g)e.path&&_.has(e.fileName)&&_.set(e.path,_.get(e.fileName))}catch(e){return n.quiet||console.error(e.message),l.exitCode=1,{success:!1,error:e.message}}let v,y,b,x,S,C,w,T;try{let e=await H(s,d,u,n);v=e.providerId,y=e.providerConfig,b=e.apiKey,x=e.model,S=e.workspaceConfigData,C=e.workspaceConfig,w=e.workspaceSettings,T=e.workspaceAgent}catch(e){return n.quiet||console.error(e.message),l.exitCode=1,{success:!1,error:e.message}}let E=n.internetAccess??n.allowInternet??w?.internetAccess??w?.vm_bash_full_internet_access??w?.fullInternetAccess??C?.internetAccess;if(E!==void 0&&typeof d.setConfig==`function`){let e=d.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await d.setConfig(s,e,E?`true`:`false`)}if(y.requiresApiKey!==!1&&!b){let e=v===`huggingface`?`HUGGINGFACE_API_KEY`:`${v.toUpperCase()}_API_KEY`,t=`Error: Provider "${v}" requires an API key, but none was provided.\nPlease provide an API key via --api-key <key> or export ${e}="...".`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}let D=[];if(n.history!==!1&&typeof d.getRecentMessages==`function`)try{let e=await d.getRecentMessages(s,f,50);D=await Promise.all(e.map(async e=>{if(e?.role===`user`&&Array.isArray(e?.attachments)&&e.attachments.length>0){let t=await i(e.attachments,async e=>{if(e.path&&s)try{return await o(s,f,e.path)}catch{}return null});if(t.length>0){let n=typeof e.content==`string`?e.content:``;return{...e,content:n?[{type:`text`,text:n},...t]:t}}}return e}))}catch{}let A={id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:f,role:`user`,sender:`user`,channel:`chat`,isFromMe:!1,isTrigger:!0,content:e,timestamp:Date.now(),...g.length>0?{attachments:g}:{}};if(typeof d.saveMessage==`function`)try{await d.saveMessage(s,A)}catch{}let j=A;if(g.length>0){let t=await i(g,async e=>{if(e.path&&_.has(e.path))return _.get(e.path);if(_.has(e.fileName))return _.get(e.fileName);if(e.path&&s)try{return await o(s,f,e.path)}catch{}return null});t.length>0&&(j={...A,content:e?[{type:`text`,text:e},...t]:t})}let P=y?.supportsStreaming===!0,I=n.stream!==!1&&n.streaming!==!1&&!n.noStream,L=P&&I,R=Number(n.maxTokens)||(typeof d.getModelMaxTokens==`function`?d.getModelMaxTokens(x):d.DEFAULT_MAX_TOKENS||8192);if(n.verbose&&!n.quiet){let e=y?.name||v,t=L?`streaming`:`standard`;l.stderr.write(`[Agent] Connecting to ${e} (${x}) [${t}]...\n`),l.stderr.write(`[Agent] Workspace: ${u}\n[Agent] Group: ${f}\n[Agent] Max tokens: ${R}\n`)}let z,B,V=!1,U=``,W=[];d.setPostHandler(async e=>{({"streaming-start":()=>{V=!0},"streaming-chunk":e=>{e.payload?.text&&(V=!0,U+=e.payload.text,z=(z||``)+e.payload.text,!n.quiet&&!n.output&&l.stdout.write(e.payload.text))},"streaming-done":()=>{},"streaming-end":()=>{V=!1,U=``},response:e=>{if(e.payload?.text){if(z=e.payload.text,n.output){let t=h(c.resolve(n.output),e.payload.text,`utf8`).then(()=>{n.quiet||l.stderr.write(`Output written to ${n.output}\n`)}).catch(()=>{});W.push(t)}else n.quiet||(V&&typeof U==`string`&&U.trim()===e.payload.text.trim()?e.payload.text.endsWith(`
20
20
  `)||l.stdout.write(`
21
21
  `):l.stdout.write(e.payload.text+`
22
- `))}},"intermediate-response":e=>{n.verbose&&!n.quiet&&e.payload?.text&&l.stderr.write(`[Thought] ${e.payload.text}\n`)},error:e=>{e.payload?.error&&(B=e.payload.error,n.quiet||console.error(`Error: ${e.payload.error}`))},"tool-activity":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.tool||`tool`,n=e.payload.status||`executing`;l.stderr.write(`[Tool] ${t} (${n})\n`)}},"thinking-log":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;l.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},status:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label?`[${e.payload.label}] `:``;l.stderr.write(`${t}${e.payload.message||``}\n`)}},log:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;l.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},"token-usage":e=>{if(n.verbose&&!n.quiet&&e.payload?.usage){let t=e.payload.usage,n=t.prompt_tokens??t.input_tokens??0,r=t.completion_tokens??t.output_tokens??0,i=t.total_tokens??n+r;l.stderr.write(`[Tokens] Prompt: ${n}, Completion: ${r}, Total: ${i}\n`)}},"request-native-ai-task":e=>{O(d,s,e.payload)}})[e.type]?.(e)});let G;try{G=await ee(s,d,f,C,w,T,n)}catch(e){let t=e.message||String(e);return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}let{enabledTools:K,profileSystemPromptOverride:q}=G;if(K.length>0&&!n.quiet){let{getCuratedModelToolSupport:e}=await import(`./chunk-3smiGQoQ.js`);e(x)===!1&&l.stderr.write(`[Agent] Warning: Model "${x}" does not support tool calling; tools will be ignored. Use --tools none or choose a tool-capable model (e.g. onnx-community/gemma-4-E2B-it-ONNX).\n`)}if(g.length>0&&!n.quiet){let e=r(x);for(let t of g){let n=a(t.mimeType,t.fileName);n===`image`&&!e.images&&!e.routerByFeatures?l.stderr.write(`[Agent] Warning: Model "${x}" does not accept image input; "${t.fileName}" will be passed as a reference only.\n`):n===`audio`&&!e.audio&&!e.routerByFeatures?l.stderr.write(`[Agent] Warning: Model "${x}" does not accept audio input; "${t.fileName}" will be passed as a reference only.\n`):n===`video`&&!e.video&&!e.routerByFeatures?l.stderr.write(`[Agent] Warning: Model "${x}" does not accept video input; "${t.fileName}" will be passed as a reference only.\n`):n===`document`&&!e.documents&&!e.routerByFeatures&&l.stderr.write(`[Agent] Warning: Model "${x}" does not accept PDF/document input; "${t.fileName}" will be passed as a reference only.\n`)}}let J;if(n.systemPrompt===`none`||n.systemPrompt===``||n.systemPrompt===!1||n.noSystemPrompt===!0)J=``;else{if(J=n.systemPrompt,!J&&n.systemPromptFile)try{let e=c.resolve(n.systemPromptFile);J=await m(e,`utf8`)}catch(e){let t=`Error: Failed to read system prompt file "${n.systemPromptFile}": ${e.message}`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}if(J||=l.env.SHADOW_CLAW_SYSTEM_PROMPT||l.env.SHADOWCLAW_SYSTEM_PROMPT,!J&&q&&(J=q),!J&&T?.systemPromptFile)try{let e=S?.configPath?c.dirname(S.configPath):u,t=c.resolve(e,T.systemPromptFile);J=await m(t,`utf8`)}catch(e){n.verbose&&!n.quiet&&console.error(`Warning: Failed to read systemPromptFile from config: ${e.message}`)}if(J||=T?.systemPrompt||w?.systemPrompt||w?.systemPromptOverride,!J&&typeof d.getConfig==`function`)try{let e=await d.getConfig(s,d.CONFIG_KEYS?.SYSTEM_PROMPT_OVERRIDE||`system_prompt_override`);e&&typeof e==`string`&&(J=e)}catch{}J||=`You are ShadowClaw, a helpful AI assistant operating in a headless workspace. Answer concisely.`}let te={apiKey:b||``,assistantName:`ShadowClaw`,enabledTools:K,groupId:f,maxTokens:R,messages:[...D,j],model:x,provider:v,...y?.baseUrl?{baseUrl:y.baseUrl}:{},streaming:L,verbose:!!n.verbose,systemPrompt:J},Y=new AbortController;n.abortSignal&&(n.abortSignal.aborted?Y.abort():n.abortSignal.addEventListener(`abort`,()=>Y.abort(),{once:!0}));let X=e=>{typeof n.onExit==`function`?n.onExit(e):!l.env.JEST_WORKER_ID&&l.env.NODE_ENV!==`test`&&l.exit(e)},Z=!1,Q=null,$=()=>{if(Z)Q&&=(clearTimeout(Q),null),X(130);else{Z=!0,Y.abort();try{typeof d.cleanupAllLlamafileProcesses==`function`&&d.cleanupAllLlamafileProcesses()}catch{}Q=setTimeout(()=>{X(130)},1500),Q.unref?.()}};l.on(`SIGINT`,$);let ne=n.invokeHandler||d.handleInvoke;try{await ne(s,te,Y.signal)}catch(e){B=e instanceof Error?e.message:String(e),!Z&&!n.quiet&&console.error(`Error: ${B}`)}finally{l.removeListener(`SIGINT`,$),Q&&=(clearTimeout(Q),null)}if(Z)return n.quiet||l.stderr.write(`
22
+ `))}},"intermediate-response":e=>{n.verbose&&!n.quiet&&e.payload?.text&&l.stderr.write(`[Thought] ${e.payload.text}\n`)},error:e=>{e.payload?.error&&(B=e.payload.error,n.quiet||console.error(`Error: ${e.payload.error}`))},"tool-activity":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.tool||`tool`,n=e.payload.status||`executing`;l.stderr.write(`[Tool] ${t} (${n})\n`)}},"thinking-log":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;l.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},status:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label?`[${e.payload.label}] `:``;l.stderr.write(`${t}${e.payload.message||``}\n`)}},log:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;l.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},"token-usage":e=>{if(n.verbose&&!n.quiet&&e.payload?.usage){let t=e.payload.usage,n=t.prompt_tokens??t.input_tokens??0,r=t.completion_tokens??t.output_tokens??0,i=t.total_tokens??n+r;l.stderr.write(`[Tokens] Prompt: ${n}, Completion: ${r}, Total: ${i}\n`)}},"request-native-ai-task":e=>{O(d,s,e.payload)}})[e.type]?.(e)});let G;try{G=await ee(s,d,f,C,w,T,n)}catch(e){let t=e.message||String(e);return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}let{enabledTools:K,profileSystemPromptOverride:q}=G;if(K.length>0&&!n.quiet){let{getCuratedModelToolSupport:e}=await import(`./chunk-C1v_s0Kb.js`);e(x)===!1&&l.stderr.write(`[Agent] Warning: Model "${x}" does not support tool calling; tools will be ignored. Use --tools none or choose a tool-capable model (e.g. onnx-community/gemma-4-E2B-it-ONNX).\n`)}if(g.length>0&&!n.quiet){let e=r(x);for(let t of g){let n=a(t.mimeType,t.fileName);n===`image`&&!e.images&&!e.routerByFeatures?l.stderr.write(`[Agent] Warning: Model "${x}" does not accept image input; "${t.fileName}" will be passed as a reference only.\n`):n===`audio`&&!e.audio&&!e.routerByFeatures?l.stderr.write(`[Agent] Warning: Model "${x}" does not accept audio input; "${t.fileName}" will be passed as a reference only.\n`):n===`video`&&!e.video&&!e.routerByFeatures?l.stderr.write(`[Agent] Warning: Model "${x}" does not accept video input; "${t.fileName}" will be passed as a reference only.\n`):n===`document`&&!e.documents&&!e.routerByFeatures&&l.stderr.write(`[Agent] Warning: Model "${x}" does not accept PDF/document input; "${t.fileName}" will be passed as a reference only.\n`)}}let J;if(n.systemPrompt===`none`||n.systemPrompt===``||n.systemPrompt===!1||n.noSystemPrompt===!0)J=``;else{if(J=n.systemPrompt,!J&&n.systemPromptFile)try{let e=c.resolve(n.systemPromptFile);J=await m(e,`utf8`)}catch(e){let t=`Error: Failed to read system prompt file "${n.systemPromptFile}": ${e.message}`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}if(J||=l.env.SHADOW_CLAW_SYSTEM_PROMPT||l.env.SHADOWCLAW_SYSTEM_PROMPT,!J&&q&&(J=q),!J&&T?.systemPromptFile)try{let e=S?.configPath?c.dirname(S.configPath):u,t=c.resolve(e,T.systemPromptFile);J=await m(t,`utf8`)}catch(e){n.verbose&&!n.quiet&&console.error(`Warning: Failed to read systemPromptFile from config: ${e.message}`)}if(J||=T?.systemPrompt||w?.systemPrompt||w?.systemPromptOverride,!J&&typeof d.getConfig==`function`)try{let e=await d.getConfig(s,d.CONFIG_KEYS?.SYSTEM_PROMPT_OVERRIDE||`system_prompt_override`);e&&typeof e==`string`&&(J=e)}catch{}J||=`You are ShadowClaw, a helpful AI assistant operating in a headless workspace. Answer concisely.`}let te={apiKey:b||``,assistantName:`ShadowClaw`,enabledTools:K,groupId:f,maxTokens:R,messages:[...D,j],model:x,provider:v,...y?.baseUrl?{baseUrl:y.baseUrl}:{},streaming:L,verbose:!!n.verbose,systemPrompt:J},Y=new AbortController;n.abortSignal&&(n.abortSignal.aborted?Y.abort():n.abortSignal.addEventListener(`abort`,()=>Y.abort(),{once:!0}));let X=e=>{typeof n.onExit==`function`?n.onExit(e):!l.env.JEST_WORKER_ID&&l.env.NODE_ENV!==`test`&&l.exit(e)},Z=!1,Q=null,$=()=>{if(Z)Q&&=(clearTimeout(Q),null),X(130);else{Z=!0,Y.abort();try{typeof d.cleanupAllLlamafileProcesses==`function`&&d.cleanupAllLlamafileProcesses()}catch{}Q=setTimeout(()=>{X(130)},1500),Q.unref?.()}};l.on(`SIGINT`,$);let ne=n.invokeHandler||d.handleInvoke;try{await ne(s,te,Y.signal)}catch(e){B=e instanceof Error?e.message:String(e),!Z&&!n.quiet&&console.error(`Error: ${B}`)}finally{l.removeListener(`SIGINT`,$),Q&&=(clearTimeout(Q),null)}if(Z)return n.quiet||l.stderr.write(`
23
23
  Operation cancelled.
24
24
  `),l.exitCode=130,typeof n.onExit==`function`&&n.onExit(130),{success:!1,error:`Operation cancelled.`};if(B&&V&&!n.quiet&&!n.output&&l.stdout.write(`
25
- `),B)return l.exitCode=1,{success:!1,error:B};if(z&&typeof d.saveMessage==`function`)try{await d.saveMessage(s,{id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:f,role:`assistant`,content:z,timestamp:Date.now()})}catch{}if(n.output&&z&&W.length===0){let e=h(c.resolve(n.output),z,`utf8`).then(()=>{n.quiet||l.stderr.write(`Output written to ${n.output}\n`)}).catch(()=>{});W.push(e)}return await Promise.all(W),typeof d.setPostHandler==`function`&&d.setPostHandler(null),{success:!0,response:z,model:x,provider:v}}async function W(e=`list`,t,n={}){let{listLocalModels:r,listLlamafileModels:i,downloadLocalModel:a,fetchRemoteModels:o,DEFAULT_LOCAL_MODEL:s}=await import(`./chunk-3smiGQoQ.js`),u=n.workspace?c.resolve(n.workspace):l.cwd(),d=e||`list`;if(d===`list`||d===`remote`){let e=d===`remote`||!!(n.remote||n.all||n.huggingface),a=await S(u),c=a?.config?.agent?.defaultModel||a?.config?.settings?.defaultModel||s;if(e){n.quiet||l.stdout.write(`
25
+ `),B)return l.exitCode=1,{success:!1,error:B};if(z&&typeof d.saveMessage==`function`)try{await d.saveMessage(s,{id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:f,role:`assistant`,content:z,timestamp:Date.now()})}catch{}if(n.output&&z&&W.length===0){let e=h(c.resolve(n.output),z,`utf8`).then(()=>{n.quiet||l.stderr.write(`Output written to ${n.output}\n`)}).catch(()=>{});W.push(e)}return await Promise.all(W),typeof d.setPostHandler==`function`&&d.setPostHandler(null),{success:!0,response:z,model:x,provider:v}}async function W(e=`list`,t,n={}){let{listLocalModels:r,listLlamafileModels:i,downloadLocalModel:a,fetchRemoteModels:o,DEFAULT_LOCAL_MODEL:s}=await import(`./chunk-C1v_s0Kb.js`),u=n.workspace?c.resolve(n.workspace):l.cwd(),d=e||`list`;if(d===`list`||d===`remote`){let e=d===`remote`||!!(n.remote||n.all||n.huggingface),a=await S(u),c=a?.config?.agent?.defaultModel||a?.config?.settings?.defaultModel||s;if(e){n.quiet||l.stdout.write(`
26
26
  Fetching available ONNX models from Hugging Face (onnx-community)...
27
27
  `);let e=await o({cacheDir:n.cacheDir,query:n.query||(d===`remote`&&t?t:void 0)});if(!n.quiet){if(e.length===0)l.stdout.write(`No models found on Hugging Face or could not reach huggingface.co.
28
28
 
@@ -36,5 +36,5 @@ Curated Transformers.js Models (Local ONNX):
36
36
  `);for(let e of f){let t=e.id===c,n=e.cached?` [Cached]`:` [Not downloaded]`,r=t?` (Default)`:``;l.stdout.write(` • ${e.id}${r}${n}\n`),l.stdout.write(` Name: ${e.name}\n`),l.stdout.write(` Context: ${e.contextLength.toLocaleString()} tokens | Tools: ${e.supportsTools?`Yes`:`No`}\n`),l.stdout.write(` ${e.description}\n\n`)}l.stdout.write(`Curated Llamafile Models (Local Executable):
37
37
 
38
38
  `);for(let e of p){let t=e.fileName===c||e.id===c||c.endsWith(e.fileName),n=e.cached?` [Cached]`:` [Not downloaded]`,r=t?` (Default)`:``;l.stdout.write(` • ${e.fileName}${r}${n}\n`),l.stdout.write(` Name: ${e.name}\n`),l.stdout.write(` URL: ${e.url}\n`),l.stdout.write(` ${e.description}\n\n`)}l.stdout.write("Tip: Run `shadow-claw agent model list --remote` (or `shadow-claw agent model remote`) to browse all ONNX models from Hugging Face.\n\n")}return{success:!0,models:f,llamafileModels:p,defaultModel:c}}if(d===`download`){let e=t||n.model||s;n.verbose&&!n.quiet&&l.stderr.write(`Preparing to download model: ${e}\n`);let r=await a(e,{cacheDir:n.cacheDir,verbose:n.verbose,isTTY:n.isTTY,progress:n.progress!==!1&&!n.noProgress});return r.success||(l.exitCode=1),r}if(d===`set`){let e=t||n.model;if(!e){let e=`Error: Please specify a model ID to set as default.`;return n.quiet||console.error(e),l.exitCode=1,{success:!1,error:e}}let r=await S(u),i=r?.configPath||c.join(u,`shadow-claw.config.json`),a=r?.config||{},o={...a,agent:{...a.agent||{},defaultModel:e}};return await h(i,JSON.stringify(o,null,2)+`
39
- `,`utf8`),n.quiet||l.stdout.write(`Updated default CLI agent model to: ${e}\n`),{success:!0,model:e,configPath:i}}let f=`Unknown model action: "${d}". Available: list, download, set`;return n.quiet||console.error(f),l.exitCode=1,{success:!1,error:f}}async function G(e,t={}){let n=(e||``).trim();if(!n){let e=`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`;return t.quiet||console.error(e),l.exitCode=1,{success:!1,error:e}}let{db:r,core:i}=await k(t),a=t.group||i.DEFAULT_SERVER_GROUP_ID||F,o=i.fetchDiscoveryManifest||(await import(`./chunk-DcU4pBl7.js`)).fetchDiscoveryManifest,s=i.importRemoteArtifacts||(await import(`./chunk-Cum07Vlh.js`)).importRemoteArtifacts,c=t.fetchFn||globalThis.fetch;t.quiet||console.log(`Fetching discovery manifest from ${n}...`);let u;try{u=await o(n,c)}catch(e){let n=`Failed to fetch discovery manifest: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),l.exitCode=1,{success:!1,error:n}}let{manifest:d,siteUrl:f,manifestUrl:p}=u,m=d.tools||[],h=d.skills||[],g=d.scripts||[];t.quiet||console.log(`Discovered: ${d.name||`Remote Site`} (${h.length} skill${h.length===1?``:`s`}, ${m.length} tool${m.length===1?``:`s`}, ${g.length} script${g.length===1?``:`s`})`);let _=m.map(e=>e.name),v=h.map(e=>e.name),y=g.map(e=>e.name),b,x,S;if((t.tools||t.skills||t.scripts)&&!t.all){let e=e=>e?Array.isArray(e)?e.map(e=>String(e).trim()).filter(Boolean):String(e).split(`,`).map(e=>e.trim()).filter(Boolean):[];b=e(t.tools),x=e(t.skills),S=e(t.scripts)}else b=_,x=v,S=y;let C=t.autoEnable!==!1,w=!!t.overwrite,T;try{T=await s(r,a,d,{toolNames:b,skillNames:x,scriptNames:S},{autoEnable:C,overwrite:w,fetchFn:c,siteSlug:t.siteSlug,targetSubdir:t.targetSubdir})}catch(e){let n=`Import failed: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),l.exitCode=1,{success:!1,error:n}}let E=T.tools.filter(e=>e.status===`imported`),D=T.skills.filter(e=>e.status===`imported`),O=T.scripts.filter(e=>e.status===`imported`),A=T.tools.filter(e=>e.status===`skipped`),j=T.skills.filter(e=>e.status===`skipped`),M=T.scripts.filter(e=>e.status===`skipped`),N=T.tools.filter(e=>e.status===`failed`),P=T.skills.filter(e=>e.status===`failed`),I=T.scripts.filter(e=>e.status===`failed`),L=E.length+D.length+O.length,R=A.length+j.length+M.length,z=N.length+P.length+I.length;if(!t.quiet){console.log(`
40
- Importing artifacts:`);for(let e of[...T.tools,...T.skills,...T.scripts]){let t=T.tools.includes(e)?`tool`:T.skills.includes(e)?`skill`:`script`;e.status===`imported`?console.log(` [${t}] ${e.name} -> ${e.path} (imported)`):e.status===`skipped`?console.log(` [${t}] ${e.name} -> ${e.path} (skipped, already exists - use --overwrite to replace)`):console.log(` [${t}] ${e.name} (failed: ${e.error||`unknown error`})`)}console.log(z>0?`\nCompleted with ${z} error${z===1?``:`s`}. Successfully imported ${L} items, ${R} skipped.`:`\nSuccessfully imported ${L} item${L===1?``:`s`} (${E.length} tool${E.length===1?``:`s`}, ${D.length} skill${D.length===1?``:`s`}, ${O.length} script${O.length===1?``:`s`}).`)}let B=z===0||L>0;return B||(l.exitCode=1),{success:B,manifest:d,siteUrl:f,manifestUrl:p,result:T,importedCount:L,skippedCount:R,failedCount:z}}async function K(e,t=[],n={}){let r=t,i=n;if(!Array.isArray(t)&&typeof t==`object`&&(i=t,r=[]),i._stdinData===void 0)try{i={...i,_stdinData:l.stdin.isTTY?null:await A({timeoutMs:500})}}catch{i={...i,_stdinData:null}}switch(e){case`init`:{let e=r[0]||i.workspace,t=await I({...i,workspace:e});return console.log(`Headless agent workspace initialized at: ${t.workspace}`),t}case`skills`:{let e=await L(i);if(e.skills.length===0)console.log(`No skills found in workspace (.agents/skills/).`);else{console.log(`Available skills (${e.skills.length}):\n`);for(let t of e.skills)console.log(` - ${t.name}: ${t.description||`No description`}`)}return e}case`tools`:{let e=r[0];if(e)return await z(e,r[1],i);let t=await R(i);console.log(`Available tools (${t.tools.length}):\n`);for(let e of t.tools){let t=e.headlessSafe?`[headless-safe]`:`[browser-only]`;console.log(` - ${e.name.padEnd(25)} ${t} ${e.description||``}`)}return t}case`tool`:{let e=r[0];if(!e){console.error(`Error: Tool name required. Usage: shadow-claw agent tool <name> [input-json]`),l.exitCode=1;return}return await z(e,r[1],i)}case`skill`:{let e=r[0];if(!e){console.error(`Error: Skill name required. Usage: shadow-claw agent skill <name>`),l.exitCode=1;return}return await V(e,i)}case`clear`:return await B(i);case`run`:return await U(r.join(` `)||`-`,i);case`models`:case`model`:{let e=r[0]||`list`,t=r[1];return await W(e,t,i)}case`import`:{let e=r[0];return e?await G(e,i):(console.error(`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`),l.exitCode=1,{success:!1,error:`Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`})}case`listen`:return await(i.listenFn||(async e=>{let{runWebRtcListenCommand:t}=await import(`./chunk-DksvJ_kf.js`);return t(e)}))({...i,agent:!0});default:console.log(`Usage: shadow-claw agent <init|model|skills|tools|tool|skill|import|run|clear|listen> [args...]`)}}export{I as a,V as c,R as d,k as f,G as i,L as l,S as m,B as n,W as o,D as p,K as r,U as s,H as t,z as u};
39
+ `,`utf8`),n.quiet||l.stdout.write(`Updated default CLI agent model to: ${e}\n`),{success:!0,model:e,configPath:i}}let f=`Unknown model action: "${d}". Available: list, download, set`;return n.quiet||console.error(f),l.exitCode=1,{success:!1,error:f}}async function G(e,t={}){let n=(e||``).trim();if(!n){let e=`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`;return t.quiet||console.error(e),l.exitCode=1,{success:!1,error:e}}let{db:r,core:i}=await k(t),a=t.group||i.DEFAULT_SERVER_GROUP_ID||F,o=i.fetchDiscoveryManifest||(await import(`./chunk-DcU4pBl7.js`)).fetchDiscoveryManifest,s=i.importRemoteArtifacts||(await import(`./chunk-DB4x5L-B.js`)).importRemoteArtifacts,c=t.fetchFn||globalThis.fetch;t.quiet||console.log(`Fetching discovery manifest from ${n}...`);let u;try{u=await o(n,c)}catch(e){let n=`Failed to fetch discovery manifest: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),l.exitCode=1,{success:!1,error:n}}let{manifest:d,siteUrl:f,manifestUrl:p}=u,m=d.tools||[],h=d.skills||[],g=d.scripts||[];t.quiet||console.log(`Discovered: ${d.name||`Remote Site`} (${h.length} skill${h.length===1?``:`s`}, ${m.length} tool${m.length===1?``:`s`}, ${g.length} script${g.length===1?``:`s`})`);let _=m.map(e=>e.name),v=h.map(e=>e.name),y=g.map(e=>e.name),b,x,S;if((t.tools||t.skills||t.scripts)&&!t.all){let e=e=>e?Array.isArray(e)?e.map(e=>String(e).trim()).filter(Boolean):String(e).split(`,`).map(e=>e.trim()).filter(Boolean):[];b=e(t.tools),x=e(t.skills),S=e(t.scripts)}else b=_,x=v,S=y;let C=t.autoEnable!==!1,w=!!t.overwrite,T;try{T=await s(r,a,d,{toolNames:b,skillNames:x,scriptNames:S},{autoEnable:C,overwrite:w,fetchFn:c,siteSlug:t.siteSlug,targetSubdir:t.targetSubdir})}catch(e){let n=`Import failed: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),l.exitCode=1,{success:!1,error:n}}let E=T.tools.filter(e=>e.status===`imported`),D=T.skills.filter(e=>e.status===`imported`),O=T.scripts.filter(e=>e.status===`imported`),A=T.tools.filter(e=>e.status===`skipped`),j=T.skills.filter(e=>e.status===`skipped`),M=T.scripts.filter(e=>e.status===`skipped`),N=T.tools.filter(e=>e.status===`failed`),P=T.skills.filter(e=>e.status===`failed`),I=T.scripts.filter(e=>e.status===`failed`),L=E.length+D.length+O.length,R=A.length+j.length+M.length,z=N.length+P.length+I.length;if(!t.quiet){console.log(`
40
+ Importing artifacts:`);for(let e of[...T.tools,...T.skills,...T.scripts]){let t=T.tools.includes(e)?`tool`:T.skills.includes(e)?`skill`:`script`;e.status===`imported`?console.log(` [${t}] ${e.name} -> ${e.path} (imported)`):e.status===`skipped`?console.log(` [${t}] ${e.name} -> ${e.path} (skipped, already exists - use --overwrite to replace)`):console.log(` [${t}] ${e.name} (failed: ${e.error||`unknown error`})`)}console.log(z>0?`\nCompleted with ${z} error${z===1?``:`s`}. Successfully imported ${L} items, ${R} skipped.`:`\nSuccessfully imported ${L} item${L===1?``:`s`} (${E.length} tool${E.length===1?``:`s`}, ${D.length} skill${D.length===1?``:`s`}, ${O.length} script${O.length===1?``:`s`}).`)}let B=z===0||L>0;return B||(l.exitCode=1),{success:B,manifest:d,siteUrl:f,manifestUrl:p,result:T,importedCount:L,skippedCount:R,failedCount:z}}async function K(e,t=[],n={}){let r=t,i=n;if(!Array.isArray(t)&&typeof t==`object`&&(i=t,r=[]),i._stdinData===void 0)try{i={...i,_stdinData:l.stdin.isTTY?null:await A({timeoutMs:500})}}catch{i={...i,_stdinData:null}}switch(e){case`init`:{let e=r[0]||i.workspace,t=await I({...i,workspace:e});return console.log(`Headless agent workspace initialized at: ${t.workspace}`),t}case`skills`:{let e=await L(i);if(e.skills.length===0)console.log(`No skills found in workspace (.agents/skills/).`);else{console.log(`Available skills (${e.skills.length}):\n`);for(let t of e.skills)console.log(` - ${t.name}: ${t.description||`No description`}`)}return e}case`tools`:{let e=r[0];if(e)return await z(e,r[1],i);let t=await R(i);console.log(`Available tools (${t.tools.length}):\n`);for(let e of t.tools){let t=e.headlessSafe?`[headless-safe]`:`[browser-only]`;console.log(` - ${e.name.padEnd(25)} ${t} ${e.description||``}`)}return t}case`tool`:{let e=r[0];if(!e){console.error(`Error: Tool name required. Usage: shadow-claw agent tool <name> [input-json]`),l.exitCode=1;return}return await z(e,r[1],i)}case`skill`:{let e=r[0];if(!e){console.error(`Error: Skill name required. Usage: shadow-claw agent skill <name>`),l.exitCode=1;return}return await V(e,i)}case`clear`:return await B(i);case`run`:return await U(r.join(` `)||`-`,i);case`models`:case`model`:{let e=r[0]||`list`,t=r[1];return await W(e,t,i)}case`import`:{let e=r[0];return e?await G(e,i):(console.error(`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`),l.exitCode=1,{success:!1,error:`Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`})}case`listen`:return await(i.listenFn||(async e=>{let{runWebRtcListenCommand:t}=await import(`./chunk-DGPpt7Ka.js`);return t(e)}))({...i,agent:!0});default:console.log(`Usage: shadow-claw agent <init|model|skills|tools|tool|skill|import|run|clear|listen> [args...]`)}}export{I as a,V as c,R as d,k as f,G as i,L as l,S as m,B as n,W as o,D as p,K as r,U as s,H as t,z as u};
@@ -1,5 +1,5 @@
1
1
  import e from"node:fs";import t from"node:path";import n from"node:process";import r from"node:readline/promises";import i from"node:tty";function a(e,t=1){if(!Number.isFinite(e)||e<=0)return`0 B`;let n=1024,r=t<0?0:t,i=[`B`,`KB`,`MB`,`GB`,`TB`],a=Math.floor(Math.log(e)/Math.log(n)),o=Math.min(a,i.length-1);return`${parseFloat((e/n**o).toFixed(r))} ${i[o]}`}function o(e={}){let{modelId:t=`model`,stream:r=n.stderr,barWidth:i=24,isTTY:o=!!(r&&typeof r==`object`&&r.isTTY),enabled:s=!0}=e;if(!s)return{update:()=>{},finish:()=>{},fail:e=>{r?.write&&r.write(`${e||`✖ Failed to download ${t}.`}\n`)}};let c=[],l=/* @__PURE__ */ new Map,u=!1;function d(e){let t=Math.round(Math.max(0,Math.min(1,e))*i),n=i-t;return`[`+`=`.repeat(t)+(t<i?`>`:``)+` `.repeat(Math.max(0,n-+(t<i)))+`]`}function f(e,t=0,n=0){let i=l.get(e);return i||(i={lineIndex:c.length,lastPct:-1,lastRenderedTime:0,loaded:t,total:n,isDone:!1},l.set(e,i),c.push(e),o&&c.length>1&&r?.write&&r.write(`
2
- `)),i}function p(e,t){if(!o||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,a=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${a}\x1b[${s}B\r`):r.write(`\r\x1b[2K${a}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!o&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(o){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}}else if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(o){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${a(l)} / ${a(u)})`:l>0&&(i=` (${a(l)})`);let o=n?` [${n}]`:``;p(n,`Downloading ${t}${o} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${a(l)} / ${a(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}}else if(e.status===`done`){let i=l.get(n);if(i){if(i.isDone=!0,o){let e=d(1),r=i.total||i.loaded,o=r>0?` (${a(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${o}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`)}else!o&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const s=[{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model (Default, 128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model (128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B GQA — chat only (template has no tool support)`,contextLength:32e3,supportsTools:!1,recommended:!1}],c=`onnx-community/gemma-4-E2B-it-ONNX`,l=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0}];function u(e){if(!e)return;let t=s.find(t=>t.id===e||t.id.toLowerCase()===e.toLowerCase());if(t)return t.supportsTools;let n=l.find(t=>t.id===e||t.fileName===e||t.id.toLowerCase()===e.toLowerCase()||t.fileName.toLowerCase()===e.toLowerCase());if(n)return n.supportsTools}function d(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function f(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function p(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||l.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function m(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=f(i);if(!e.existsSync(o))return!1;let s=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),c=s?s.fileName:t.basename(r),u=c.endsWith(`.llamafile`)?c:`${c}.llamafile`,d=t.join(o,u),p=t.join(o,`${u}.part`);try{if(e.existsSync(p))return!1;if(e.existsSync(d))return e.statSync(d).size>0}catch{}return!1}function h(e){return e?t.resolve(e,`agentfile`):t.resolve(n.cwd(),`assets/cache/agentfile`)}function g(e){return!e||typeof e!=`string`?!1:e.endsWith(`.agentfile`)||e.includes(`agentfile`)}function _(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=[h(i),f(i)],s=t.basename(r),c=s.endsWith(`.agentfile`)?s:`${s}.agentfile`;for(let n of o){if(!e.existsSync(n))continue;let r=t.join(n,c),i=t.join(n,`${c}.part`);try{if(e.existsSync(i))return!1;if(e.existsSync(r)&&e.statSync(r).size>0)return!0}catch{}}return!1}function v(n){let r=!1,i=!1;function a(n){let o;try{o=e.readdirSync(n,{withFileTypes:!0})}catch{return}for(let e of o)if(e.isDirectory())a(t.join(n,e.name));else if(e.isFile()){let t=e.name;(t.endsWith(`.part`)||t.includes(`.tmp`))&&(r=!0),t.endsWith(`.onnx`)&&!t.endsWith(`.part`)&&!t.includes(`.tmp`)&&(i=!0)}}return a(n),{hasPartFiles:r,hasOnnxFiles:i}}function y(n,r){if(g(n))return _(n,r);if(p(n))return m(n,r);let i=d(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)){let{hasPartFiles:e,hasOnnxFiles:n}=v(t);if(!e&&n)return!0}}catch{}return!1}function b(e){return s.map(t=>({...t,cached:y(t.id,e)}))}function x(e){return l.map(t=>({...t,cached:m(t.fileName,e)}))}async function S(e={}){let t=e.limit??100,n=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=${t}`;try{let t=await fetch(n,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!t.ok)return[];let r=await t.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}let a=i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:y(t,e.cacheDir)}));if(e.page!==void 0||e.pageSize!==void 0){let t=Math.max(1,e.page??1),n=Math.max(1,e.pageSize??25),r=(t-1)*n;a=a.slice(r,r+n)}return a}catch{return[]}}async function C(r,i={}){let{cacheDir:a,verbose:s=!1,isTTY:c,stream:u=n.stderr,progress:d,noProgress:p,quiet:m=!1,abortSignal:_}=i,v=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),y=g(r),b,x;v?(b=v.url,x=v.fileName):r.startsWith(`http://`)||r.startsWith(`https://`)?(b=r,x=t.basename(new URL(r).pathname)):y?(x=t.basename(r).endsWith(`.agentfile`)?t.basename(r):`${t.basename(r)}.agentfile`,b=`https://huggingface.co/mozilla-ai/agentfile/resolve/main/${x}`):(x=t.basename(r).endsWith(`.llamafile`)?t.basename(r):`${t.basename(r)}.llamafile`,b=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${x}`);let S=y?h(a):f(a);e.mkdirSync(S,{recursive:!0});let C=t.join(S,x),w=t.join(S,`${x}.part`);if(e.existsSync(C))try{if(e.statSync(C).size>0)return{success:!0,modelId:r,path:C}}catch{}let T=0;if(e.existsSync(w))try{let t=e.statSync(w);t.size>0&&(T=t.size)}catch{T=0}let E=o({modelId:x,stream:u,isTTY:c,enabled:!m&&d!==!1&&!p}),D;try{s&&u?.write&&u.write(`[Llamafile] Downloading ${b}...\n`);let t={"User-Agent":`ShadowClaw-CLI`,"Accept-Encoding":`identity`};T>0&&(t.Range=`bytes=${T}-`);let n=i.fetch||globalThis.fetch,a=await n(b,{headers:t,redirect:`follow`,signal:_});if(a.status===416&&T>0){try{e.existsSync(w)&&e.unlinkSync(w)}catch{}T=0,delete t.Range,a=await n(b,{headers:t,redirect:`follow`,signal:_})}if(!a.ok&&a.status!==206)throw Error(`Failed to download ${b}: HTTP ${a.status} ${a.statusText}`);let o=a.status===206,c=0,l=0;if(o){let t=(a.headers?.get?.(`content-range`))?.match(/\/\s*(\d+)\s*$/),n=parseInt(a.headers?.get?.(`content-length`)||`0`,10);c=t?parseInt(t[1],10):T+n,l=T,D=e.createWriteStream(w,{flags:`a`})}else T=0,c=parseInt(a.headers?.get?.(`content-length`)||`0`,10),l=0,D=e.createWriteStream(w,{flags:`w`});if(l>0&&E.update({status:`progress`,file:x,loaded:l,total:c,progress:c>0?l/c*100:void 0}),a.body){let{Readable:e}=await import(`node:stream`),t;if(typeof e.fromWeb==`function`&&typeof a.body.getReader==`function`)t=e.fromWeb(a.body);else if(typeof a.body[Symbol.asyncIterator]==`function`)t=a.body;else{let e=Buffer.from(await a.arrayBuffer());D.write(e),l+=e.length}if(t)for await(let e of t){let t=Buffer.isBuffer(e)?e:Buffer.from(e);D.write(t),l+=t.length,E.update({status:`progress`,file:x,loaded:l,total:c,progress:c>0?l/c*100:void 0})}}if(D){let e=D;e.end(),await new Promise((t,n)=>{e.on(`finish`,t),e.on(`error`,n)})}e.renameSync(w,C);try{e.chmodSync(C,493)}catch{}return E.finish(),{success:!0,modelId:r,path:C}}catch(e){try{D?.end()}catch{}let t=e instanceof Error?e.message:String(e);return E.fail(`✖ Error downloading ${x}: ${t}`),{success:!1,modelId:r,error:t}}}async function w(e,t={}){if(p(e)||g(e))return C(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:s,progress:c,noProgress:l,quiet:u=!1}=t,d=s;if(!d){let{getAgentCore:e}=await import(`./chunk-Bw5aOTFr.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);d=t.createTransformersRuntimeService()}let f=o({modelId:e,stream:a,isTTY:i,enabled:!u&&c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await d.prewarmModel({modelId:e,verbose:r,cacheDir:t.cacheDir,onProgress:e=>{f.update(e)}}),f.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return f.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function T(a={}){let o=t.resolve(a.contentRoot||n.cwd()),s=t.resolve(a.workspaceDir||o),l=a.cacheDir,u=a.onExit||(e=>n.exit(e)),d=a.stdin||n.stdin,f=a.stdout||n.stderr,h=!1,v=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;v=e.openSync(t,`r`),d=new i.ReadStream(v),f=n.stderr.isTTY?n.stderr:n.stdout,h=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),f=n.stderr.isTTY?n.stderr:n.stdout,h=!0}catch{}}let b=r.createInterface({input:d,output:f}),x=!1,T=()=>{if(!x){x=!0,f.write(`
2
+ `)),i}function p(e,t){if(!o||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,a=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${a}\x1b[${s}B\r`):r.write(`\r\x1b[2K${a}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!o&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(o){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}}else if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(o){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${a(l)} / ${a(u)})`:l>0&&(i=` (${a(l)})`);let o=n?` [${n}]`:``;p(n,`Downloading ${t}${o} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${a(l)} / ${a(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}}else if(e.status===`done`){let i=l.get(n);if(i){if(i.isDone=!0,o){let e=d(1),r=i.total||i.loaded,o=r>0?` (${a(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${o}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`)}else!o&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const s=[{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model (Default, 128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model (128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B GQA — chat only (template has no tool support)`,contextLength:32e3,supportsTools:!1,recommended:!1}],c=`onnx-community/gemma-4-E2B-it-ONNX`,l=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0}];function u(e){if(!e)return;let t=s.find(t=>t.id===e||t.id.toLowerCase()===e.toLowerCase());if(t)return t.supportsTools;let n=l.find(t=>t.id===e||t.fileName===e||t.id.toLowerCase()===e.toLowerCase()||t.fileName.toLowerCase()===e.toLowerCase());if(n)return n.supportsTools}function d(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function f(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function p(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||l.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function m(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=f(i);if(!e.existsSync(o))return!1;let s=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),c=s?s.fileName:t.basename(r),u=c.endsWith(`.llamafile`)?c:`${c}.llamafile`,d=t.join(o,u),p=t.join(o,`${u}.part`);try{if(e.existsSync(p))return!1;if(e.existsSync(d))return e.statSync(d).size>0}catch{}return!1}function h(e){return e?t.resolve(e,`agentfile`):t.resolve(n.cwd(),`assets/cache/agentfile`)}function g(e){return!e||typeof e!=`string`?!1:e.endsWith(`.agentfile`)||e.includes(`agentfile`)}function _(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=[h(i),f(i)],s=t.basename(r),c=s.endsWith(`.agentfile`)?s:`${s}.agentfile`;for(let n of o){if(!e.existsSync(n))continue;let r=t.join(n,c),i=t.join(n,`${c}.part`);try{if(e.existsSync(i))return!1;if(e.existsSync(r)&&e.statSync(r).size>0)return!0}catch{}}return!1}function v(n){let r=!1,i=!1;function a(n){let o;try{o=e.readdirSync(n,{withFileTypes:!0})}catch{return}for(let e of o)if(e.isDirectory())a(t.join(n,e.name));else if(e.isFile()){let t=e.name;(t.endsWith(`.part`)||t.includes(`.tmp`))&&(r=!0),t.endsWith(`.onnx`)&&!t.endsWith(`.part`)&&!t.includes(`.tmp`)&&(i=!0)}}return a(n),{hasPartFiles:r,hasOnnxFiles:i}}function y(n,r){if(g(n))return _(n,r);if(p(n))return m(n,r);let i=d(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)){let{hasPartFiles:e,hasOnnxFiles:n}=v(t);if(!e&&n)return!0}}catch{}return!1}function b(e){return s.map(t=>({...t,cached:y(t.id,e)}))}function x(e){return l.map(t=>({...t,cached:m(t.fileName,e)}))}async function S(e={}){let t=e.limit??100,n=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=${t}`;try{let t=await fetch(n,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!t.ok)return[];let r=await t.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}let a=i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:y(t,e.cacheDir)}));if(e.page!==void 0||e.pageSize!==void 0){let t=Math.max(1,e.page??1),n=Math.max(1,e.pageSize??25),r=(t-1)*n;a=a.slice(r,r+n)}return a}catch{return[]}}async function C(r,i={}){let{cacheDir:a,verbose:s=!1,isTTY:c,stream:u=n.stderr,progress:d,noProgress:p,quiet:m=!1,abortSignal:_}=i,v=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),y=g(r),b,x;v?(b=v.url,x=v.fileName):r.startsWith(`http://`)||r.startsWith(`https://`)?(b=r,x=t.basename(new URL(r).pathname)):y?(x=t.basename(r).endsWith(`.agentfile`)?t.basename(r):`${t.basename(r)}.agentfile`,b=`https://huggingface.co/mozilla-ai/agentfile/resolve/main/${x}`):(x=t.basename(r).endsWith(`.llamafile`)?t.basename(r):`${t.basename(r)}.llamafile`,b=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${x}`);let S=y?h(a):f(a);e.mkdirSync(S,{recursive:!0});let C=t.join(S,x),w=t.join(S,`${x}.part`);if(e.existsSync(C))try{if(e.statSync(C).size>0)return{success:!0,modelId:r,path:C}}catch{}let T=0;if(e.existsSync(w))try{let t=e.statSync(w);t.size>0&&(T=t.size)}catch{T=0}let E=o({modelId:x,stream:u,isTTY:c,enabled:!m&&d!==!1&&!p}),D;try{s&&u?.write&&u.write(`[Llamafile] Downloading ${b}...\n`);let t={"User-Agent":`ShadowClaw-CLI`,"Accept-Encoding":`identity`};T>0&&(t.Range=`bytes=${T}-`);let n=i.fetch||globalThis.fetch,a=await n(b,{headers:t,redirect:`follow`,signal:_});if(a.status===416&&T>0){try{e.existsSync(w)&&e.unlinkSync(w)}catch{}T=0,delete t.Range,a=await n(b,{headers:t,redirect:`follow`,signal:_})}if(!a.ok&&a.status!==206)throw Error(`Failed to download ${b}: HTTP ${a.status} ${a.statusText}`);let o=a.status===206,c=0,l=0;if(o){let t=(a.headers?.get?.(`content-range`))?.match(/\/\s*(\d+)\s*$/),n=parseInt(a.headers?.get?.(`content-length`)||`0`,10);c=t?parseInt(t[1],10):T+n,l=T,D=e.createWriteStream(w,{flags:`a`})}else T=0,c=parseInt(a.headers?.get?.(`content-length`)||`0`,10),l=0,D=e.createWriteStream(w,{flags:`w`});if(l>0&&E.update({status:`progress`,file:x,loaded:l,total:c,progress:c>0?l/c*100:void 0}),a.body){let{Readable:e}=await import(`node:stream`),t;if(typeof e.fromWeb==`function`&&typeof a.body.getReader==`function`)t=e.fromWeb(a.body);else if(typeof a.body[Symbol.asyncIterator]==`function`)t=a.body;else{let e=Buffer.from(await a.arrayBuffer());D.write(e),l+=e.length}if(t)for await(let e of t){let t=Buffer.isBuffer(e)?e:Buffer.from(e);D.write(t),l+=t.length,E.update({status:`progress`,file:x,loaded:l,total:c,progress:c>0?l/c*100:void 0})}}if(D){let e=D;e.end(),await new Promise((t,n)=>{e.on(`finish`,t),e.on(`error`,n)})}e.renameSync(w,C);try{e.chmodSync(C,493)}catch{}return E.finish(),{success:!0,modelId:r,path:C}}catch(e){try{D?.end()}catch{}let t=e instanceof Error?e.message:String(e);return E.fail(`✖ Error downloading ${x}: ${t}`),{success:!1,modelId:r,error:t}}}async function w(e,t={}){if(p(e)||g(e))return C(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:s,progress:c,noProgress:l,quiet:u=!1}=t,d=s;if(!d){let{getAgentCore:e}=await import(`./chunk-CWEIN2kc.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);d=t.createTransformersRuntimeService()}let f=o({modelId:e,stream:a,isTTY:i,enabled:!u&&c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await d.prewarmModel({modelId:e,verbose:r,cacheDir:t.cacheDir,onProgress:e=>{f.update(e)}}),f.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return f.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function T(a={}){let o=t.resolve(a.contentRoot||n.cwd()),s=t.resolve(a.workspaceDir||o),l=a.cacheDir,u=a.onExit||(e=>n.exit(e)),d=a.stdin||n.stdin,f=a.stdout||n.stderr,h=!1,v=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;v=e.openSync(t,`r`),d=new i.ReadStream(v),f=n.stderr.isTTY?n.stderr:n.stdout,h=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),f=n.stderr.isTTY?n.stderr:n.stdout,h=!0}catch{}}let b=r.createInterface({input:d,output:f}),x=!1,T=()=>{if(!x){x=!0,f.write(`
3
3
  Operation cancelled.
4
4
  `);try{b.close()}catch{}u(130)}};b.on(`SIGINT`,T),d&&typeof d.on==`function`&&d!==n.stdin&&d.on(`SIGINT`,T);let E=()=>T();n.on(`SIGINT`,E);let D=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&T()};d&&typeof d.on==`function`&&d.on(`data`,D);try{let r=`transformers_js_local`,i=c,u=/* @__PURE__ */ new Map;for(;!x;){f.write(`
5
5
  ShadowClaw CLI Agent — Model Selection:
@@ -1,2 +1,2 @@
1
- import{o as e}from"./chunk-B--rR4-3.js";import{t}from"./chunk-CasDHXCj.js";import{c as n,f as r,l as i,m as a,n as o,p as s,t as c,u as l}from"./chunk-DXLmEQ3i.js";import{o as u,r as d}from"./chunk-Bqo_706l.js";import{t as f}from"./chunk-DdrVpDvJ.js";import{t as p}from"./chunk-DY5GDEeQ.js";import{t as m}from"./chunk-CuwzD5GU.js";import{a as h}from"./chunk-kLHhdthB.js";function g(e,t,n){return f(e,`config`,`readwrite`,e=>e.put({key:t,value:n})).then(()=>void 0)}async function _(e,t,r){let a=await i(e,t),{dirs:o,filename:s}=n(r),c=a;for(let e of o)c=await c.getDirectoryHandle(e);let l=await c.getFileHandle(s);try{let e=await l.createSyncAccessHandle(),t=e.getSize(),n=new Uint8Array(t);return e.read(n,{at:0}),e.close(),new TextDecoder(`utf-8`).decode(n)}catch{return(await l.getFile()).text()}}const v=/^[a-z][a-z0-9_]{0,63}$/;function y(e,t){if(!t||typeof t!=`object`)throw Error(`Tool at ${e} must be a JSON object`);let n=t,r=typeof n.name==`string`?n.name.trim():``,i=typeof n.description==`string`?n.description.trim():``,a=n.input_schema??n.parameters,o=n.execution??n.evaluation;if(!v.test(r))throw Error(`Tool name is invalid: ${r||`(missing)`}`);if(!i)throw Error(`Tool ${r} requires a description`);if(!a||typeof a!=`object`)throw Error(`Tool ${r} requires input_schema`);if(!o||typeof o!=`object`)throw Error(`Tool ${r} requires execution`);let s=o,c=s.type;if(c!==`bash`&&c!==`javascript`&&c!==`tool`)throw Error(`Tool ${r} execution type must be bash, javascript, or tool`);if(c===`tool`){if(typeof s.name!=`string`||!v.test(s.name))throw Error(`Tool ${r} execution requires a valid tool name`);return{name:r,description:i,input_schema:a,execution:{type:c,name:s.name,...s.input&&typeof s.input==`object`?{input:s.input}:{}},path:e}}let l=c===`bash`?`command`:`code`,u=s[l]??s.expression;if(typeof u!=`string`||u.trim()===``)throw Error(`Tool ${r} execution requires ${l}`);return{name:r,description:i,input_schema:a,execution:{type:c,[l]:u},path:e}}async function b(e,t=u){let n=[],r=[],a=t===`br:main`?[u]:[t,u];for(let t of a)try{let a=await i(e,t),o=[];async function s(e,t){for await(let[n,r]of e.entries()){let e=`${t}/${n}`;r.kind===`directory`?await s(r,e):n.endsWith(`.json`)&&e.startsWith(`.agents/tools/`)&&o.push(e)}}try{await s(await(await a.getDirectoryHandle(`.agents`)).getDirectoryHandle(`tools`),`.agents/tools`)}catch{continue}for(let i of o.sort())try{let r=y(i,JSON.parse(await _(e,t,i)));n.some(e=>e.name===r.name)||n.push(r)}catch(e){r.push(e instanceof Error?e.message:String(e))}}catch{}return{tools:n,diagnostics:r}}async function x(e,t=u,n){try{let{tools:r}=await b(e,t),i=r.find(e=>e.name===n)||null;if(!i)return null;let a=await p(e,d.DECLARATIVE_TOOLS_ENABLED);return Array.isArray(a)&&!a.includes(n)?null:i}catch{return null}}async function S(e,t,u,d){let{dirs:f,filename:p}=n(u);for(let n=0;n<2;n++)try{let n=await i(e,t);for(let e of f)n=await n.getDirectoryHandle(e,{create:!0});let a=await n.getFileHandle(p,{create:!0});try{await c(a,d);return}catch(t){if(!((t instanceof Error?t.message:String(t)).includes(`Writable file streams are not supported`)&&(await r(e)).type===`opfs`))throw t}let s=t.replace(/:/g,`-`);await o([l(),`groups`,s,...f,p],d);return}catch(e){if(n===0&&a(e)){s();continue}throw e}}async function C(e,t,n){try{return await _(e,t,n),!0}catch{return!1}}var w=/* @__PURE__ */ e(t(),1);const T=/^[a-z0-9](?:[a-z0-9]|-(?!-))*[a-z0-9]$|^[a-z0-9]$/;function E(e){try{let t=(0,w.default)(e);return{data:t.data&&typeof t.data==`object`?t.data:{},content:t.content||``}}catch{let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(t){let e=t[1],n=t[2]||``,r=e.split(/\r?\n/).map(e=>{let t=e.match(/^([a-zA-Z0-9_-]+):\s*(.+)$/);if(t){let[,e,n]=t,r=n.trim();if(r&&r!==`true`&&r!==`false`&&r!==`null`&&!r.startsWith(`"`)&&!r.startsWith(`'`)&&!r.startsWith(`[`)&&!r.startsWith(`{`)&&r!==`>`&&r!==`|`&&r!==`>-`&&r!==`|-`&&!/^-?\d+(?:\.\d+)?$/.test(r))return`${e}: ${JSON.stringify(r)}`}return e});try{let e=`---\n${r.join(`
1
+ import{o as e}from"./chunk-B--rR4-3.js";import{t}from"./chunk-CasDHXCj.js";import{c as n,f as r,l as i,m as a,n as o,p as s,t as c,u as l}from"./chunk-Ce09lwXT.js";import{o as u,r as d}from"./chunk-Bqo_706l.js";import{t as f}from"./chunk-DdrVpDvJ.js";import{t as p}from"./chunk-DY5GDEeQ.js";import{t as m}from"./chunk-CuwzD5GU.js";import{a as h}from"./chunk-kLHhdthB.js";function g(e,t,n){return f(e,`config`,`readwrite`,e=>e.put({key:t,value:n})).then(()=>void 0)}async function _(e,t,r){let a=await i(e,t),{dirs:o,filename:s}=n(r),c=a;for(let e of o)c=await c.getDirectoryHandle(e);let l=await c.getFileHandle(s);try{let e=await l.createSyncAccessHandle(),t=e.getSize(),n=new Uint8Array(t);return e.read(n,{at:0}),e.close(),new TextDecoder(`utf-8`).decode(n)}catch{return(await l.getFile()).text()}}const v=/^[a-z][a-z0-9_]{0,63}$/;function y(e,t){if(!t||typeof t!=`object`)throw Error(`Tool at ${e} must be a JSON object`);let n=t,r=typeof n.name==`string`?n.name.trim():``,i=typeof n.description==`string`?n.description.trim():``,a=n.input_schema??n.parameters,o=n.execution??n.evaluation;if(!v.test(r))throw Error(`Tool name is invalid: ${r||`(missing)`}`);if(!i)throw Error(`Tool ${r} requires a description`);if(!a||typeof a!=`object`)throw Error(`Tool ${r} requires input_schema`);if(!o||typeof o!=`object`)throw Error(`Tool ${r} requires execution`);let s=o,c=s.type;if(c!==`bash`&&c!==`javascript`&&c!==`tool`)throw Error(`Tool ${r} execution type must be bash, javascript, or tool`);if(c===`tool`){if(typeof s.name!=`string`||!v.test(s.name))throw Error(`Tool ${r} execution requires a valid tool name`);return{name:r,description:i,input_schema:a,execution:{type:c,name:s.name,...s.input&&typeof s.input==`object`?{input:s.input}:{}},path:e}}let l=c===`bash`?`command`:`code`,u=s[l]??s.expression;if(typeof u!=`string`||u.trim()===``)throw Error(`Tool ${r} execution requires ${l}`);return{name:r,description:i,input_schema:a,execution:{type:c,[l]:u},path:e}}async function b(e,t=u){let n=[],r=[],a=t===`br:main`?[u]:[t,u];for(let t of a)try{let a=await i(e,t),o=[];async function s(e,t){for await(let[n,r]of e.entries()){let e=`${t}/${n}`;r.kind===`directory`?await s(r,e):n.endsWith(`.json`)&&e.startsWith(`.agents/tools/`)&&o.push(e)}}try{await s(await(await a.getDirectoryHandle(`.agents`)).getDirectoryHandle(`tools`),`.agents/tools`)}catch{continue}for(let i of o.sort())try{let r=y(i,JSON.parse(await _(e,t,i)));n.some(e=>e.name===r.name)||n.push(r)}catch(e){r.push(e instanceof Error?e.message:String(e))}}catch{}return{tools:n,diagnostics:r}}async function x(e,t=u,n){try{let{tools:r}=await b(e,t),i=r.find(e=>e.name===n)||null;if(!i)return null;let a=await p(e,d.DECLARATIVE_TOOLS_ENABLED);return Array.isArray(a)&&!a.includes(n)?null:i}catch{return null}}async function S(e,t,u,d){let{dirs:f,filename:p}=n(u);for(let n=0;n<2;n++)try{let n=await i(e,t);for(let e of f)n=await n.getDirectoryHandle(e,{create:!0});let a=await n.getFileHandle(p,{create:!0});try{await c(a,d);return}catch(t){if(!((t instanceof Error?t.message:String(t)).includes(`Writable file streams are not supported`)&&(await r(e)).type===`opfs`))throw t}let s=t.replace(/:/g,`-`);await o([l(),`groups`,s,...f,p],d);return}catch(e){if(n===0&&a(e)){s();continue}throw e}}async function C(e,t,n){try{return await _(e,t,n),!0}catch{return!1}}var w=/* @__PURE__ */ e(t(),1);const T=/^[a-z0-9](?:[a-z0-9]|-(?!-))*[a-z0-9]$|^[a-z0-9]$/;function E(e){try{let t=(0,w.default)(e);return{data:t.data&&typeof t.data==`object`?t.data:{},content:t.content||``}}catch{let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(t){let e=t[1],n=t[2]||``,r=e.split(/\r?\n/).map(e=>{let t=e.match(/^([a-zA-Z0-9_-]+):\s*(.+)$/);if(t){let[,e,n]=t,r=n.trim();if(r&&r!==`true`&&r!==`false`&&r!==`null`&&!r.startsWith(`"`)&&!r.startsWith(`'`)&&!r.startsWith(`[`)&&!r.startsWith(`{`)&&r!==`>`&&r!==`|`&&r!==`>-`&&r!==`|-`&&!/^-?\d+(?:\.\d+)?$/.test(r))return`${e}: ${JSON.stringify(r)}`}return e});try{let e=`---\n${r.join(`
2
2
  `)}\n---\n${n}`,t=(0,w.default)(e);return{data:t.data&&typeof t.data==`object`?t.data:{},content:t.content||``}}catch{}let i={},a=e.match(/^name:\s*["']?([^"'\r\n]+)["']?/m);a&&(i.name=a[1].trim());let o=e.match(/^description:\s*(.+)$/m);if(o){let e=o[1].trim();(e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`))&&(e=e.slice(1,-1)),i.description=e}let s=e.match(/^user-invocable:\s*(true|false)/im);s&&(i[`user-invocable`]=s[1].toLowerCase()===`true`);let c=e.match(/^disable-model-invocation:\s*(true|false)/im);c&&(i[`disable-model-invocation`]=c[1].toLowerCase()===`true`);let l=e.match(/^allowed-tools:\s*["']?([^"'\r\n]+)["']?/m);l&&(i[`allowed-tools`]=l[1].trim());let u=e.match(/allowed-tools:\s*\n((?:\s*-\s*[^\r\n]+\r?\n?)+)/m);if(u){let e=u[1].split(/\r?\n/).map(e=>e.replace(/^\s*-\s*/,``).trim()).filter(Boolean);e.length>0&&(i[`allowed-tools`]=e)}return{data:i,content:n}}return{data:{},content:e}}}function D(e){if(typeof e==`string`){let t=e.trim();return t.length>0?t:void 0}if(Array.isArray(e)){let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e.length>0);return t.length>0?t.join(` `):void 0}}function O(e,t){let n=E(t),r=n.data,i=typeof r.name==`string`?r.name.trim():``,a=typeof r.description==`string`?r.description.trim():``;if(!i)throw Error(`Skill at ${e} requires a name`);if(!a)throw Error(`Skill ${i} requires a description`);if(i.length>64||!T.test(i))throw Error(`Skill name must be 1-64 lowercase characters and hyphens: ${i}`);if(a.length>1024)throw Error(`Skill ${i} description must be 1024 characters or fewer`);let o=e.replace(/\/SKILL\.md$/u,``),s=r.metadata&&typeof r.metadata==`object`?r.metadata:void 0,c=D(s?.[`allowed-tools`])||D(s?.allowedTools)||D(r[`allowed-tools`])||D(r.allowedTools),l=[];if(s){for(let[e,t]of Object.entries(s))if(e!==`execution`&&t!=null){if(e===`allowed-tools`||e===`allowedTools`)c&&l.push([e,c]);else if(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)l.push([e,String(t)]);else if(Array.isArray(t)){let n=t.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(Boolean);n.length>0&&l.push([e,n.join(` `)])}}}let u=l.length>0?Object.fromEntries(l):void 0,d=s?.execution,f;if(d!==void 0){if(!d||typeof d!=`object`||d.type!==`tools`||!Array.isArray(d.tools))throw Error(`Skill ${i} has invalid tools execution`);let e=d,t=typeof e.suppressToast==`boolean`?e.suppressToast:void 0,n=typeof e.suppressOutput==`boolean`?e.suppressOutput:void 0,r=e.tools.map(e=>({...e,...t!==void 0&&e.suppressToast===void 0?{suppressToast:t}:{},...n!==void 0&&e.suppressOutput===void 0?{suppressOutput:n}:{}}));f={type:`tools`,...t===void 0?{}:{suppressToast:t},...n===void 0?{}:{suppressOutput:n},tools:r}}return{name:i,description:a,...typeof r.license==`string`?{license:r.license}:{},...typeof r.compatibility==`string`?{compatibility:r.compatibility}:{},...u?{metadata:u}:{},...typeof c==`string`?{allowedTools:c}:{},...typeof r[`user-invocable`]==`boolean`?{userInvocable:r[`user-invocable`]}:typeof r[`user-invocable`]==`string`&&(r[`user-invocable`].toLowerCase()===`true`||r[`user-invocable`].toLowerCase()===`false`)?{userInvocable:r[`user-invocable`].toLowerCase()===`true`}:{},...typeof r[`disable-model-invocation`]==`boolean`?{disableModelInvocation:r[`disable-model-invocation`]}:typeof r[`disable-model-invocation`]==`string`&&(r[`disable-model-invocation`].toLowerCase()===`true`||r[`disable-model-invocation`].toLowerCase()===`false`)?{disableModelInvocation:r[`disable-model-invocation`].toLowerCase()===`true`}:{},...f?{execution:f}:{},body:n.content.trim(),path:e,basePath:o}}const k=new Set(m.map(e=>e.name)),A=/^[a-z][a-z0-9_]{0,63}$/;function j(e){return e?.targetSubdir?e.targetSubdir:e?.siteSlug?`imported/${e.siteSlug}`:`main`}async function M(e,t=u,n,r){let i=(n.name||``).trim();if(k.has(i))return{name:i,path:``,status:`failed`,error:`Cannot shadow built-in tool: ${i}`};if(!A.test(i))return{name:i,path:``,status:`failed`,error:`Invalid tool name: ${i}`};let a=`.agents/tools/${j(r)}/${i}.json`;try{if(await C(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();if(n.digest&&!await h(s,n.digest))return{name:i,path:a,status:`failed`,error:`Integrity verification failed for tool definition`};let c;try{c=JSON.parse(s)}catch{return{name:i,path:a,status:`failed`,error:`Downloaded tool definition is not valid JSON`}}if(y(a,c),await S(e,t,a,JSON.stringify(c,null,2)),r?.autoEnable){let t=await p(e,d.DECLARATIVE_TOOLS_ENABLED),n=new Set(Array.isArray(t)?t:[]);n.add(i),await g(e,d.DECLARATIVE_TOOLS_ENABLED,Array.from(n))}return{name:i,path:a,status:`imported`}}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function N(e,t=u,n,r){let i=(n.name||``).trim(),a=`.agents/scripts/${j(r)}/${i.endsWith(`.js`)||i.endsWith(`.mjs`)?i:`${i}.js`}`;try{if(await C(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();return n.digest&&!await h(s,n.digest)?{name:i,path:a,status:`failed`,error:`Integrity verification failed for script`}:(await S(e,t,a,s),{name:i,path:a,status:`imported`})}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function P(e,t=u,n,r){let i=(n.name||``).trim(),a=`.agents/skills/${j(r)}/${i}/SKILL.md`;try{if(await C(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();return n.digest&&!await h(s,n.digest)?{name:i,path:a,status:`failed`,error:`Integrity verification failed for skill`}:(O(a,s),await S(e,t,a,s),{name:i,path:a,status:`imported`})}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function F(e,t=u,n,r,i){let a={tools:[],skills:[],scripts:[],diagnostics:[]},o=new Set(r.toolNames||[]),s=new Set(r.skillNames||[]),c=new Set(r.scriptNames||[]),l=n.tools||[],d=n.skills||[],f=n.scripts||[];for(let e of d)if(s.has(e.name)){if(Array.isArray(e.tools))for(let t of e.tools)o.add(t.name);if(Array.isArray(e.scripts))for(let t of e.scripts)c.add(t.name)}for(let n of f)if(c.has(n.name)){let r=await N(e,t,n,i);a.scripts.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Script ${n.name}: ${r.error}`)}for(let n of l)if(o.has(n.name)){let r=await M(e,t,n,i);a.tools.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Tool ${n.name}: ${r.error}`)}for(let n of d)if(s.has(n.name)){let r=await P(e,t,n,i);a.skills.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Skill ${n.name}: ${r.error}`)}return a}export{O as a,x as c,g as d,M as i,b as l,N as n,C as o,P as r,S as s,F as t,_ as u};
@@ -1,5 +1,5 @@
1
1
  import e from"node:fs";import t from"node:path";import n from"node:process";import{Buffer as r}from"buffer";import i from"node:readline/promises";import a from"node:tty";function o(e,t=1){if(!Number.isFinite(e)||e<=0)return`0 B`;let n=1024,r=t<0?0:t,i=[`B`,`KB`,`MB`,`GB`,`TB`],a=Math.floor(Math.log(e)/Math.log(n)),o=Math.min(a,i.length-1);return`${parseFloat((e/n**o).toFixed(r))} ${i[o]}`}function s(e={}){let{modelId:t=`model`,stream:r=n.stderr,barWidth:i=24,isTTY:a=!!(r&&typeof r==`object`&&r.isTTY),enabled:s=!0}=e;if(!s)return{update:()=>{},finish:()=>{},fail:e=>{r?.write&&r.write(`${e||`✖ Failed to download ${t}.`}\n`)}};let c=[],l=/* @__PURE__ */ new Map,u=!1;function d(e){let t=Math.round(Math.max(0,Math.min(1,e))*i),n=i-t;return`[`+`=`.repeat(t)+(t<i?`>`:``)+` `.repeat(Math.max(0,n-+(t<i)))+`]`}function f(e,t=0,n=0){let i=l.get(e);return i||(i={lineIndex:c.length,lastPct:-1,lastRenderedTime:0,loaded:t,total:n,isDone:!1},l.set(e,i),c.push(e),a&&c.length>1&&r?.write&&r.write(`
2
- `)),i}function p(e,t){if(!a||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,o=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${o}\x1b[${s}B\r`):r.write(`\r\x1b[2K${o}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!a&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(a){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}}else if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(a){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${o(l)} / ${o(u)})`:l>0&&(i=` (${o(l)})`);let a=n?` [${n}]`:``;p(n,`Downloading ${t}${a} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${o(l)} / ${o(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}}else if(e.status===`done`){let i=l.get(n);if(i){if(i.isDone=!0,a){let e=d(1),r=i.total||i.loaded,a=r>0?` (${o(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${a}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`)}else!a&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;a&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;a&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const c=[{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model (Default, 128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model (128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B GQA — chat only (template has no tool support)`,contextLength:32e3,supportsTools:!1,recommended:!1}],l=`onnx-community/gemma-4-E2B-it-ONNX`,u=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0}];function d(e){if(!e)return;let t=c.find(t=>t.id===e||t.id.toLowerCase()===e.toLowerCase());if(t)return t.supportsTools;let n=u.find(t=>t.id===e||t.fileName===e||t.id.toLowerCase()===e.toLowerCase()||t.fileName.toLowerCase()===e.toLowerCase());if(n)return n.supportsTools}function f(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function p(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function m(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||u.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function h(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=p(i);if(!e.existsSync(o))return!1;let s=u.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),c=s?s.fileName:t.basename(r),l=c.endsWith(`.llamafile`)?c:`${c}.llamafile`,d=t.join(o,l),f=t.join(o,`${l}.part`);try{if(e.existsSync(f))return!1;if(e.existsSync(d))return e.statSync(d).size>0}catch{}return!1}function g(e){return e?t.resolve(e,`agentfile`):t.resolve(n.cwd(),`assets/cache/agentfile`)}function _(e){return!e||typeof e!=`string`?!1:e.endsWith(`.agentfile`)||e.includes(`agentfile`)}function v(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=[g(i),p(i)],s=t.basename(r),c=s.endsWith(`.agentfile`)?s:`${s}.agentfile`;for(let n of o){if(!e.existsSync(n))continue;let r=t.join(n,c),i=t.join(n,`${c}.part`);try{if(e.existsSync(i))return!1;if(e.existsSync(r)&&e.statSync(r).size>0)return!0}catch{}}return!1}function y(n){let r=!1,i=!1;function a(n){let o;try{o=e.readdirSync(n,{withFileTypes:!0})}catch{return}for(let e of o)if(e.isDirectory())a(t.join(n,e.name));else if(e.isFile()){let t=e.name;(t.endsWith(`.part`)||t.includes(`.tmp`))&&(r=!0),t.endsWith(`.onnx`)&&!t.endsWith(`.part`)&&!t.includes(`.tmp`)&&(i=!0)}}return a(n),{hasPartFiles:r,hasOnnxFiles:i}}function b(n,r){if(_(n))return v(n,r);if(m(n))return h(n,r);let i=f(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)){let{hasPartFiles:e,hasOnnxFiles:n}=y(t);if(!e&&n)return!0}}catch{}return!1}function x(e){return c.map(t=>({...t,cached:b(t.id,e)}))}function S(e){return u.map(t=>({...t,cached:h(t.fileName,e)}))}async function C(e={}){let t=e.limit??100,n=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=${t}`;try{let t=await fetch(n,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!t.ok)return[];let r=await t.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}let a=i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:b(t,e.cacheDir)}));if(e.page!==void 0||e.pageSize!==void 0){let t=Math.max(1,e.page??1),n=Math.max(1,e.pageSize??25),r=(t-1)*n;a=a.slice(r,r+n)}return a}catch{return[]}}async function w(i,a={}){let{cacheDir:o,verbose:c=!1,isTTY:l,stream:d=n.stderr,progress:f,noProgress:m,quiet:h=!1,abortSignal:v}=a,y=u.find(e=>e.id===i||e.fileName===i||e.fileName===t.basename(i)||e.url===i),b=_(i),x,S;y?(x=y.url,S=y.fileName):i.startsWith(`http://`)||i.startsWith(`https://`)?(x=i,S=t.basename(new URL(i).pathname)):b?(S=t.basename(i).endsWith(`.agentfile`)?t.basename(i):`${t.basename(i)}.agentfile`,x=`https://huggingface.co/mozilla-ai/agentfile/resolve/main/${S}`):(S=t.basename(i).endsWith(`.llamafile`)?t.basename(i):`${t.basename(i)}.llamafile`,x=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${S}`);let C=b?g(o):p(o);e.mkdirSync(C,{recursive:!0});let w=t.join(C,S),T=t.join(C,`${S}.part`);if(e.existsSync(w))try{if(e.statSync(w).size>0)return{success:!0,modelId:i,path:w}}catch{}let E=0;if(e.existsSync(T))try{let t=e.statSync(T);t.size>0&&(E=t.size)}catch{E=0}let D=s({modelId:S,stream:d,isTTY:l,enabled:!h&&f!==!1&&!m}),O;try{c&&d?.write&&d.write(`[Llamafile] Downloading ${x}...\n`);let t={"User-Agent":`ShadowClaw-CLI`,"Accept-Encoding":`identity`};E>0&&(t.Range=`bytes=${E}-`);let n=a.fetch||globalThis.fetch,o=await n(x,{headers:t,redirect:`follow`,signal:v});if(o.status===416&&E>0){try{e.existsSync(T)&&e.unlinkSync(T)}catch{}E=0,delete t.Range,o=await n(x,{headers:t,redirect:`follow`,signal:v})}if(!o.ok&&o.status!==206)throw Error(`Failed to download ${x}: HTTP ${o.status} ${o.statusText}`);let s=o.status===206,l=0,u=0;if(s){let t=(o.headers?.get?.(`content-range`))?.match(/\/\s*(\d+)\s*$/),n=parseInt(o.headers?.get?.(`content-length`)||`0`,10);l=t?parseInt(t[1],10):E+n,u=E,O=e.createWriteStream(T,{flags:`a`})}else E=0,l=parseInt(o.headers?.get?.(`content-length`)||`0`,10),u=0,O=e.createWriteStream(T,{flags:`w`});if(u>0&&D.update({status:`progress`,file:S,loaded:u,total:l,progress:l>0?u/l*100:void 0}),o.body){let{Readable:e}=await import(`node:stream`),t;if(typeof e.fromWeb==`function`&&typeof o.body.getReader==`function`)t=e.fromWeb(o.body);else if(typeof o.body[Symbol.asyncIterator]==`function`)t=o.body;else{let e=r.from(await o.arrayBuffer());O.write(e),u+=e.length}if(t)for await(let e of t){let t=r.isBuffer(e)?e:r.from(e);O.write(t),u+=t.length,D.update({status:`progress`,file:S,loaded:u,total:l,progress:l>0?u/l*100:void 0})}}if(O){let e=O;e.end(),await new Promise((t,n)=>{e.on(`finish`,t),e.on(`error`,n)})}e.renameSync(T,w);try{e.chmodSync(w,493)}catch{}return D.finish(),{success:!0,modelId:i,path:w}}catch(e){try{O?.end()}catch{}let t=e instanceof Error?e.message:String(e);return D.fail(`✖ Error downloading ${S}: ${t}`),{success:!1,modelId:i,error:t}}}async function T(e,t={}){if(m(e)||_(e))return w(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:o,progress:c,noProgress:l,quiet:u=!1}=t,d=o;if(!d){let{getAgentCore:e}=await import(`./chunk-CVkhDr-7.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);d=t.createTransformersRuntimeService()}let f=s({modelId:e,stream:a,isTTY:i,enabled:!u&&c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await d.prewarmModel({modelId:e,verbose:r,cacheDir:t.cacheDir,onProgress:e=>{f.update(e)}}),f.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return f.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function E(r={}){let o=t.resolve(r.contentRoot||n.cwd()),s=t.resolve(r.workspaceDir||o),c=r.cacheDir,u=r.onExit||(e=>n.exit(e)),d=r.stdin||n.stdin,f=r.stdout||n.stderr,p=!1,g=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;g=e.openSync(t,`r`),d=new a.ReadStream(g),f=n.stderr.isTTY?n.stderr:n.stdout,p=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),f=n.stderr.isTTY?n.stderr:n.stdout,p=!0}catch{}}let y=i.createInterface({input:d,output:f}),x=!1,S=()=>{if(!x){x=!0,f.write(`
2
+ `)),i}function p(e,t){if(!a||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,o=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${o}\x1b[${s}B\r`):r.write(`\r\x1b[2K${o}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!a&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(a){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}}else if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(a){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${o(l)} / ${o(u)})`:l>0&&(i=` (${o(l)})`);let a=n?` [${n}]`:``;p(n,`Downloading ${t}${a} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${o(l)} / ${o(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}}else if(e.status===`done`){let i=l.get(n);if(i){if(i.isDone=!0,a){let e=d(1),r=i.total||i.loaded,a=r>0?` (${o(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${a}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`)}else!a&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;a&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;a&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const c=[{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model (Default, 128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model (128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B GQA — chat only (template has no tool support)`,contextLength:32e3,supportsTools:!1,recommended:!1}],l=`onnx-community/gemma-4-E2B-it-ONNX`,u=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0}];function d(e){if(!e)return;let t=c.find(t=>t.id===e||t.id.toLowerCase()===e.toLowerCase());if(t)return t.supportsTools;let n=u.find(t=>t.id===e||t.fileName===e||t.id.toLowerCase()===e.toLowerCase()||t.fileName.toLowerCase()===e.toLowerCase());if(n)return n.supportsTools}function f(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function p(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function m(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||u.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function h(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=p(i);if(!e.existsSync(o))return!1;let s=u.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),c=s?s.fileName:t.basename(r),l=c.endsWith(`.llamafile`)?c:`${c}.llamafile`,d=t.join(o,l),f=t.join(o,`${l}.part`);try{if(e.existsSync(f))return!1;if(e.existsSync(d))return e.statSync(d).size>0}catch{}return!1}function g(e){return e?t.resolve(e,`agentfile`):t.resolve(n.cwd(),`assets/cache/agentfile`)}function _(e){return!e||typeof e!=`string`?!1:e.endsWith(`.agentfile`)||e.includes(`agentfile`)}function v(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=[g(i),p(i)],s=t.basename(r),c=s.endsWith(`.agentfile`)?s:`${s}.agentfile`;for(let n of o){if(!e.existsSync(n))continue;let r=t.join(n,c),i=t.join(n,`${c}.part`);try{if(e.existsSync(i))return!1;if(e.existsSync(r)&&e.statSync(r).size>0)return!0}catch{}}return!1}function y(n){let r=!1,i=!1;function a(n){let o;try{o=e.readdirSync(n,{withFileTypes:!0})}catch{return}for(let e of o)if(e.isDirectory())a(t.join(n,e.name));else if(e.isFile()){let t=e.name;(t.endsWith(`.part`)||t.includes(`.tmp`))&&(r=!0),t.endsWith(`.onnx`)&&!t.endsWith(`.part`)&&!t.includes(`.tmp`)&&(i=!0)}}return a(n),{hasPartFiles:r,hasOnnxFiles:i}}function b(n,r){if(_(n))return v(n,r);if(m(n))return h(n,r);let i=f(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)){let{hasPartFiles:e,hasOnnxFiles:n}=y(t);if(!e&&n)return!0}}catch{}return!1}function x(e){return c.map(t=>({...t,cached:b(t.id,e)}))}function S(e){return u.map(t=>({...t,cached:h(t.fileName,e)}))}async function C(e={}){let t=e.limit??100,n=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=${t}`;try{let t=await fetch(n,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!t.ok)return[];let r=await t.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}let a=i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:b(t,e.cacheDir)}));if(e.page!==void 0||e.pageSize!==void 0){let t=Math.max(1,e.page??1),n=Math.max(1,e.pageSize??25),r=(t-1)*n;a=a.slice(r,r+n)}return a}catch{return[]}}async function w(i,a={}){let{cacheDir:o,verbose:c=!1,isTTY:l,stream:d=n.stderr,progress:f,noProgress:m,quiet:h=!1,abortSignal:v}=a,y=u.find(e=>e.id===i||e.fileName===i||e.fileName===t.basename(i)||e.url===i),b=_(i),x,S;y?(x=y.url,S=y.fileName):i.startsWith(`http://`)||i.startsWith(`https://`)?(x=i,S=t.basename(new URL(i).pathname)):b?(S=t.basename(i).endsWith(`.agentfile`)?t.basename(i):`${t.basename(i)}.agentfile`,x=`https://huggingface.co/mozilla-ai/agentfile/resolve/main/${S}`):(S=t.basename(i).endsWith(`.llamafile`)?t.basename(i):`${t.basename(i)}.llamafile`,x=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${S}`);let C=b?g(o):p(o);e.mkdirSync(C,{recursive:!0});let w=t.join(C,S),T=t.join(C,`${S}.part`);if(e.existsSync(w))try{if(e.statSync(w).size>0)return{success:!0,modelId:i,path:w}}catch{}let E=0;if(e.existsSync(T))try{let t=e.statSync(T);t.size>0&&(E=t.size)}catch{E=0}let D=s({modelId:S,stream:d,isTTY:l,enabled:!h&&f!==!1&&!m}),O;try{c&&d?.write&&d.write(`[Llamafile] Downloading ${x}...\n`);let t={"User-Agent":`ShadowClaw-CLI`,"Accept-Encoding":`identity`};E>0&&(t.Range=`bytes=${E}-`);let n=a.fetch||globalThis.fetch,o=await n(x,{headers:t,redirect:`follow`,signal:v});if(o.status===416&&E>0){try{e.existsSync(T)&&e.unlinkSync(T)}catch{}E=0,delete t.Range,o=await n(x,{headers:t,redirect:`follow`,signal:v})}if(!o.ok&&o.status!==206)throw Error(`Failed to download ${x}: HTTP ${o.status} ${o.statusText}`);let s=o.status===206,l=0,u=0;if(s){let t=(o.headers?.get?.(`content-range`))?.match(/\/\s*(\d+)\s*$/),n=parseInt(o.headers?.get?.(`content-length`)||`0`,10);l=t?parseInt(t[1],10):E+n,u=E,O=e.createWriteStream(T,{flags:`a`})}else E=0,l=parseInt(o.headers?.get?.(`content-length`)||`0`,10),u=0,O=e.createWriteStream(T,{flags:`w`});if(u>0&&D.update({status:`progress`,file:S,loaded:u,total:l,progress:l>0?u/l*100:void 0}),o.body){let{Readable:e}=await import(`node:stream`),t;if(typeof e.fromWeb==`function`&&typeof o.body.getReader==`function`)t=e.fromWeb(o.body);else if(typeof o.body[Symbol.asyncIterator]==`function`)t=o.body;else{let e=r.from(await o.arrayBuffer());O.write(e),u+=e.length}if(t)for await(let e of t){let t=r.isBuffer(e)?e:r.from(e);O.write(t),u+=t.length,D.update({status:`progress`,file:S,loaded:u,total:l,progress:l>0?u/l*100:void 0})}}if(O){let e=O;e.end(),await new Promise((t,n)=>{e.on(`finish`,t),e.on(`error`,n)})}e.renameSync(T,w);try{e.chmodSync(w,493)}catch{}return D.finish(),{success:!0,modelId:i,path:w}}catch(e){try{O?.end()}catch{}let t=e instanceof Error?e.message:String(e);return D.fail(`✖ Error downloading ${S}: ${t}`),{success:!1,modelId:i,error:t}}}async function T(e,t={}){if(m(e)||_(e))return w(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:o,progress:c,noProgress:l,quiet:u=!1}=t,d=o;if(!d){let{getAgentCore:e}=await import(`./chunk-CIkgn5Fh.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);d=t.createTransformersRuntimeService()}let f=s({modelId:e,stream:a,isTTY:i,enabled:!u&&c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await d.prewarmModel({modelId:e,verbose:r,cacheDir:t.cacheDir,onProgress:e=>{f.update(e)}}),f.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return f.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function E(r={}){let o=t.resolve(r.contentRoot||n.cwd()),s=t.resolve(r.workspaceDir||o),c=r.cacheDir,u=r.onExit||(e=>n.exit(e)),d=r.stdin||n.stdin,f=r.stdout||n.stderr,p=!1,g=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;g=e.openSync(t,`r`),d=new a.ReadStream(g),f=n.stderr.isTTY?n.stderr:n.stdout,p=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),f=n.stderr.isTTY?n.stderr:n.stdout,p=!0}catch{}}let y=i.createInterface({input:d,output:f}),x=!1,S=()=>{if(!x){x=!0,f.write(`
3
3
  Operation cancelled.
4
4
  `);try{y.close()}catch{}u(130)}};y.on(`SIGINT`,S),d&&typeof d.on==`function`&&d!==n.stdin&&d.on(`SIGINT`,S);let E=()=>S();n.on(`SIGINT`,E);let D=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&S()};d&&typeof d.on==`function`&&d.on(`data`,D);try{let i=`transformers_js_local`,a=l,u=/* @__PURE__ */ new Map;for(;!x;){f.write(`
5
5
  ShadowClaw CLI Agent — Model Selection:
@@ -1 +1 @@
1
- import{c as e,i as t,s as n}from"./chunk-BtNO-m9T.js";function r(e){return n(e,{replacement:`-`,fallback:`attachment`,stripLeadingDots:!0,collapseReplacement:!0,stripControlChars:!0})}function i(e,t=``,n=Date.now()){let i=r(e),a=t.trim().replace(/[^a-zA-Z0-9._-]+/g,`-`).replace(/^-+|-+$/g,``);return`attachments/${n}-${a?`${a}-`:``}${i}`}async function a(n,a,c=[]){let l=[];for(let u of c){let c=r(u.fileName||``),d=u.path||i(c,u.id),f=u.source,p=t(c,u.mimeType||``),m=u.size;if(f){let r=await o(f);p=t(c,u.mimeType||r.type),m=typeof m==`number`?m:r.size,await e(n,a,d,r)}l.push(s({...u,fileName:c,mimeType:p,size:m,path:d,previewDisposition:u.previewDisposition||(p===`image/png`?`inline`:`file`)}))}return l}async function o(e){if(e.kind===`local-file`)return e.file;if(e.kind===`inline-text`)return new Blob([e.text],{type:e.mimeType||`text/plain`});let t=await fetch(e.url,{headers:e.headers});if(!t.ok)throw Error(`Attachment download failed: HTTP ${t.status} ${t.statusText}`);return await t.blob()}function s(e){let{source:t,...n}=e;return n}export{r as n,a as t};
1
+ import{c as e,i as t,s as n}from"./chunk-VRfkSLrD.js";function r(e){return n(e,{replacement:`-`,fallback:`attachment`,stripLeadingDots:!0,collapseReplacement:!0,stripControlChars:!0})}function i(e,t=``,n=Date.now()){let i=r(e),a=t.trim().replace(/[^a-zA-Z0-9._-]+/g,`-`).replace(/^-+|-+$/g,``);return`attachments/${n}-${a?`${a}-`:``}${i}`}async function a(n,a,c=[]){let l=[];for(let u of c){let c=r(u.fileName||``),d=u.path||i(c,u.id),f=u.source,p=t(c,u.mimeType||``),m=u.size;if(f){let r=await o(f);p=t(c,u.mimeType||r.type),m=typeof m==`number`?m:r.size,await e(n,a,d,r)}l.push(s({...u,fileName:c,mimeType:p,size:m,path:d,previewDisposition:u.previewDisposition||(p===`image/png`?`inline`:`file`)}))}return l}async function o(e){if(e.kind===`local-file`)return e.file;if(e.kind===`inline-text`)return new Blob([e.text],{type:e.mimeType||`text/plain`});let t=await fetch(e.url,{headers:e.headers});if(!t.ok)throw Error(`Attachment download failed: HTTP ${t.status} ${t.statusText}`);return await t.blob()}function s(e){let{source:t,...n}=e;return n}export{r as n,a as t};
@@ -0,0 +1 @@
1
+ export{t as getAgentCore}from"./chunk--JpdI-Ht.js";
@@ -0,0 +1 @@
1
+ export{t as getAgentCore}from"./chunk-DudYQk0p.js";
@@ -1 +1 @@
1
- import{c as e,l as t}from"./chunk-D3UhDDmV.js";import{D as n}from"./chunk-fv3B7eiP.js";import{n as r}from"./chunk-BtNO-m9T.js";function i(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n){let i=e.subarray(r,r+n);t+=String.fromCharCode(...i)}return btoa(t)}function a(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function o(e=``,t=``){let n=(e&&e!==`application/octet-stream`?e:r(t)||e).toLowerCase(),i=t.toLowerCase();return n.startsWith(`text/`)||n.includes(`json`)||n.includes(`xml`)||i.endsWith(`.md`)||i.endsWith(`.txt`)?`text`:n.startsWith(`image/`)?`image`:n.startsWith(`audio/`)?`audio`:n.startsWith(`video/`)?`video`:n===`application/pdf`||i.endsWith(`.pdf`)?`document`:`file`}function s(e){let t=(e||``).toLowerCase(),r=n.getModelInfo(t);if(r){let e=r.supportsImageInput===!0||r.routesByRequestFeatures===!0,t=r.supportsAudioInput===!0||r.routesByRequestFeatures===!0,n=r.supportsVideoInput===!0||r.routesByRequestFeatures===!0,i=r.supportsDocumentInput===!0||r.routesByRequestFeatures===!0;if(r.supportsImageInput!==void 0||r.supportsAudioInput!==void 0||r.supportsVideoInput!==void 0||r.supportsDocumentInput!==void 0||r.routesByRequestFeatures)return{images:e,audio:t,video:n,documents:i,routerByFeatures:!!r.routesByRequestFeatures,source:`metadata`}}let i=t.includes(`no-vision`)||t.includes(`non-vision`)||t.includes(`text-only`),a=t===`openrouter/free`||t===`openrouter/auto`,o=!i&&[`gpt-4o`,`gpt-4.1`,`gpt-5`,`gpt-6`,`astra`,`claude-3`,`claude-4`,`claude-5`,`claude-sonnet`,`claude-haiku`,`claude-opus`,`claude-fable`,`claude-mythos`,`gemini`,`omni`,`llava`,`qwen-vl`,`-vl`,`vision`,`pixtral`].some(e=>t.includes(e)),s=!i&&(t.includes(`claude-3-5`)||t.includes(`claude-3.5`)||t.includes(`claude-3-7`)||t.includes(`claude-3.7`)||t.includes(`claude-4`)||t.includes(`claude-5`)||t.includes(`claude-fable`)||t.includes(`claude-mythos`)||t.includes(`gemini`)||t.includes(`gpt-4.1`)||t.includes(`gpt-5`)||t.includes(`gpt-6`)||t.includes(`astra`)||/claude-(?:sonnet|haiku|opus|fable|mythos)-\d/.test(t));return o?{images:!0,audio:t.includes(`omni`)||t.includes(`audio`),video:t.includes(`omni`)||t.includes(`video`)||t.includes(`gemini`),documents:s,routerByFeatures:a,source:`heuristic`}:{images:!1,audio:!1,video:!1,documents:!1,routerByFeatures:a,source:`unknown`}}async function c(e=[],t,n={}){let r=n.maxInlineTextBytes??102400,a=[];for(let n of e){let e=n.mimeType||`application/octet-stream`,s=o(e,n.fileName),c=s===`text`?`file`:s===`document`?`document`:s,l=null;try{l=await t(n)}catch{l=null}let u=l?.length??(typeof n.size==`number`?n.size:0);if(s===`text`&&l&&u<=r)try{let e=new TextDecoder(`utf-8`).decode(l),t=e.includes("```")?`~~~~`:"```";a.push({type:`text`,text:`Attachment: ${n.fileName}\n${t}\n${e}\n${t}`});continue}catch{}let d={type:`attachment`,mediaType:c,fileName:n.fileName,mimeType:e,size:n.size,path:n.path};l&&(c===`image`&&u<=3145728||c===`audio`&&u<=5242880||c===`document`&&u<=20971520)&&(d.data=i(l)),a.push(d)}return a}async function l(n,r,i){let a=await t(n,r),{dirs:o,filename:s}=e(i),c=a;for(let e of o)c=await c.getDirectoryHandle(e);let l=await c.getFileHandle(s);try{let e=await l.createSyncAccessHandle(),t=e.getSize(),n=new Uint8Array(t);return e.read(n,{at:0}),e.close(),n}catch{let e=await(await l.getFile()).arrayBuffer();return new Uint8Array(e)}}export{a,s as i,c as n,i as o,o as r,l as t};
1
+ import{c as e,l as t}from"./chunk-DvKo50Tp.js";import{D as n}from"./chunk-fv3B7eiP.js";import{n as r}from"./chunk-VRfkSLrD.js";function i(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n){let i=e.subarray(r,r+n);t+=String.fromCharCode(...i)}return btoa(t)}function a(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function o(e=``,t=``){let n=(e&&e!==`application/octet-stream`?e:r(t)||e).toLowerCase(),i=t.toLowerCase();return n.startsWith(`text/`)||n.includes(`json`)||n.includes(`xml`)||i.endsWith(`.md`)||i.endsWith(`.txt`)?`text`:n.startsWith(`image/`)?`image`:n.startsWith(`audio/`)?`audio`:n.startsWith(`video/`)?`video`:n===`application/pdf`||i.endsWith(`.pdf`)?`document`:`file`}function s(e){let t=(e||``).toLowerCase(),r=n.getModelInfo(t);if(r){let e=r.supportsImageInput===!0||r.routesByRequestFeatures===!0,t=r.supportsAudioInput===!0||r.routesByRequestFeatures===!0,n=r.supportsVideoInput===!0||r.routesByRequestFeatures===!0,i=r.supportsDocumentInput===!0||r.routesByRequestFeatures===!0;if(r.supportsImageInput!==void 0||r.supportsAudioInput!==void 0||r.supportsVideoInput!==void 0||r.supportsDocumentInput!==void 0||r.routesByRequestFeatures)return{images:e,audio:t,video:n,documents:i,routerByFeatures:!!r.routesByRequestFeatures,source:`metadata`}}let i=t.includes(`no-vision`)||t.includes(`non-vision`)||t.includes(`text-only`),a=t===`openrouter/free`||t===`openrouter/auto`,o=!i&&[`gpt-4o`,`gpt-4.1`,`gpt-5`,`gpt-6`,`astra`,`claude-3`,`claude-4`,`claude-5`,`claude-sonnet`,`claude-haiku`,`claude-opus`,`claude-fable`,`claude-mythos`,`gemini`,`omni`,`llava`,`qwen-vl`,`-vl`,`vision`,`pixtral`].some(e=>t.includes(e)),s=!i&&(t.includes(`claude-3-5`)||t.includes(`claude-3.5`)||t.includes(`claude-3-7`)||t.includes(`claude-3.7`)||t.includes(`claude-4`)||t.includes(`claude-5`)||t.includes(`claude-fable`)||t.includes(`claude-mythos`)||t.includes(`gemini`)||t.includes(`gpt-4.1`)||t.includes(`gpt-5`)||t.includes(`gpt-6`)||t.includes(`astra`)||/claude-(?:sonnet|haiku|opus|fable|mythos)-\d/.test(t));return o?{images:!0,audio:t.includes(`omni`)||t.includes(`audio`),video:t.includes(`omni`)||t.includes(`video`)||t.includes(`gemini`),documents:s,routerByFeatures:a,source:`heuristic`}:{images:!1,audio:!1,video:!1,documents:!1,routerByFeatures:a,source:`unknown`}}async function c(e=[],t,n={}){let r=n.maxInlineTextBytes??102400,a=[];for(let n of e){let e=n.mimeType||`application/octet-stream`,s=o(e,n.fileName),c=s===`text`?`file`:s===`document`?`document`:s,l=null;try{l=await t(n)}catch{l=null}let u=l?.length??(typeof n.size==`number`?n.size:0);if(s===`text`&&l&&u<=r)try{let e=new TextDecoder(`utf-8`).decode(l),t=e.includes("```")?`~~~~`:"```";a.push({type:`text`,text:`Attachment: ${n.fileName}\n${t}\n${e}\n${t}`});continue}catch{}let d={type:`attachment`,mediaType:c,fileName:n.fileName,mimeType:e,size:n.size,path:n.path};l&&(c===`image`&&u<=3145728||c===`audio`&&u<=5242880||c===`document`&&u<=20971520)&&(d.data=i(l)),a.push(d)}return a}async function l(n,r,i){let a=await t(n,r),{dirs:o,filename:s}=e(i),c=a;for(let e of o)c=await c.getDirectoryHandle(e);let l=await c.getFileHandle(s);try{let e=await l.createSyncAccessHandle(),t=e.getSize(),n=new Uint8Array(t);return e.read(n,{at:0}),e.close(),n}catch{let e=await(await l.getFile()).arrayBuffer();return new Uint8Array(e)}}export{a,s as i,c as n,i as o,o as r,l as t};
@@ -4,5 +4,5 @@ function re(e,t){this.v=e,this.k=t}function g(e,t){(t==null||t>e.length)&&(t=e.l
4
4
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}
5
5
  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
6
6
  function ae(e,t){return _(e)||ie(e,t)||y(e,t)||v()}function y(e,t){if(e){if(typeof e==`string`)return g(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}function b(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof re;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`&&o.k?t:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(!!a.done,n)},function(e){r(`throw`,e)})}catch(e){i(2,e)}}function i(e,i){e===2?t.reject(i):t.resolve({value:i,done:e}),(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}b.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},b.prototype.next=function(e){return this._invoke(`next`,e)},b.prototype.throw=function(e){return this._invoke(`throw`,e)},b.prototype.return=function(e){return this._invoke(`return`,e)};const oe=Object.entries,se=Object.setPrototypeOf,ce=Object.isFrozen,le=Object.getPrototypeOf,ue=Object.getOwnPropertyDescriptor;let x=Object.freeze,S=Object.seal,de=Object.create,C=typeof Reflect<`u`&&Reflect,fe=C.apply,pe=C.construct;x||=function(e){return e},S||=function(e){return e},fe||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},pe||=function(e){return new e(...[...arguments].slice(1))};const w=k(Array.prototype.forEach);Array.prototype.indexOf;const me=k(Array.prototype.lastIndexOf),he=k(Array.prototype.pop),ge=k(Array.prototype.push);Array.prototype.slice;const _e=k(Array.prototype.splice),T=Array.isArray,ve=k(String.prototype.toLowerCase),ye=k(String.prototype.toString),be=k(String.prototype.match),xe=k(String.prototype.replace),Se=k(String.prototype.indexOf),Ce=k(String.prototype.trim),we=k(Number.prototype.toString),Te=k(Boolean.prototype.toString),Ee=typeof BigInt>`u`?null:k(BigInt.prototype.toString),De=typeof Symbol>`u`?null:k(Symbol.prototype.toString),E=k(Object.prototype.hasOwnProperty),Oe=k(Object.prototype.toString),D=k(RegExp.prototype.test),O=A(TypeError);function k(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return fe(e,t,n)}}function A(e){return function(){return pe(e,[...arguments])}}function j(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ve;if(se&&se(e,null),!T(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(ce(t)||(t[r]=e),i=e)}e[i]=!0}return e}function ke(e){for(let t=0;t<e.length;t++)E(e,t)||(e[t]=null);return e}function M(e){let t=de(null);for(let r of oe(e)){var n=ae(r,2);let i=n[0],a=n[1];E(e,i)&&(t[i]=T(a)?ke(a):a&&typeof a==`object`&&a.constructor===Object?M(a):a)}return t}function Ae(e){switch(typeof e){case`string`:return e;case`number`:return we(e);case`boolean`:return Te(e);case`bigint`:return Ee?Ee(e):`0`;case`symbol`:return De?De(e):`Symbol()`;case`undefined`:return Oe(e);case`function`:case`object`:{if(e===null)return Oe(e);let t=e,n=N(t,`toString`);if(typeof n==`function`){let e=n(t);return typeof e==`string`?e:Oe(e)}return Oe(e)}default:return Oe(e)}}function N(e,t){for(;e!==null;){let n=ue(e,t);if(n){if(n.get)return k(n.get);if(typeof n.value==`function`)return k(n.value)}e=le(e)}function n(){return null}return n}function je(e){try{return D(e,``),!0}catch{return!1}}const Me=x(/* @__PURE__ */ `a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),Ne=x(/* @__PURE__ */ `svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),Pe=x([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Fe=x([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),Ie=x(/* @__PURE__ */ `math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),Le=x([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),Re=x([`#text`]),ze=x(/* @__PURE__ */ `accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.command.commandfor.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns`.split(`.`)),Be=x(/* @__PURE__ */ `accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dominant-baseline.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.pointer-events.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-orientation.text-rendering.textlength.type.u1.u2.unicode.values.vector-effect.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Ve=x(/* @__PURE__ */ `accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),He=x([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),Ue=S(/{{[\w\W]*|^[\w\W]*}}/g),We=S(/<%[\w\W]*|^[\w\W]*%>/g),Ge=S(/\${[\w\W]*/g),Ke=S(/^data-[\-\w.\u00B7-\uFFFF]+$/),qe=S(/^aria-[\-\w]+$/),Je=S(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Ye=S(/^(?:\w+script|data):/i),Xe=S(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Ze=S(/^html$/i),Qe=S(/^[a-z][.\w]*(-[.\w]+)+$/i),$e=S(/<[/\w!]/g),et=S(/<[/\w]/g),tt=S(/<\/no(script|embed|frames)/i),nt=S(/\/>/i),P={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},rt=[`style`,`script`,`xmp`,`iframe`,`noembed`,`noframes`,`plaintext`,`noscript`],it=x(j({},rt)),at=function(){let e={};return w(rt,t=>{e[t]=S(RegExp(`</`+t+`(?=[\\t\\n\\f\\r />])`,`i`))}),x(e)}(),ot=function(){return typeof window>`u`?null:window},st=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},ct=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},F=function(e,t,n,r){return E(e,t)&&T(e[t])?j(r.base?M(r.base):{},e[t],r.transform):n},lt=function(e,t,n){let r=E(e,t)?e[t]:void 0;return r&&typeof r==`object`?M(r):n()};function ut(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ot(),t=e=>ut(e);if(t.version=`3.4.16`,t.removed=[],!e||!e.document||e.document.nodeType!==P.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,f=N(d,`cloneNode`),p=N(d,`remove`),ee=N(d,`removeAttributeNode`),te=N(d,`nextSibling`),m=N(d,`childNodes`),h=N(d,`parentNode`),ne=N(d,`shadowRoot`),re=N(d,`attributes`),g=o&&o.prototype?N(o.prototype,`nodeType`):null,_=o&&o.prototype?N(o.prototype,`nodeName`):null,ie=o&&o.prototype?N(o.prototype,`ownerDocument`):null,v=function(e){return g?g(e):e.nodeType},ae=function(e){return _?_(e):e.nodeName};if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let y,b=``,se,ce=!1,le=0,ue=function(){if(le>0)throw O(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},C=function(e){ue(),le++;try{return y.createHTML(e)}finally{le--}},fe=function(e){ue(),le++;try{return y.createScriptURL(e)}finally{le--}},pe=function(){return ce||=(se=st(u,i),!0),se},we=n,Te=we.implementation,Ee=we.createNodeIterator,De=we.createDocumentFragment,Oe=we.getElementsByTagName,k=r.importNode,A=ct();t.isSupported=typeof oe==`function`&&typeof h==`function`&&Te&&Te.createHTMLDocument!==void 0;let ke=Ue,rt=We,dt=Ge,ft=Ke,pt=qe,mt=Ye,ht=Xe,gt=Qe,_t=Je,I=null,vt=j({},[...Me,...Ne,...Pe,...Ie,...Re]),L=null,R=j({},[...ze,...Be,...Ve,...He]),z=Object.seal(de(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),B=null,yt=null,V=Object.seal(de(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),bt=!0,xt=!0,St=!1,Ct=!0,H=!1,U=!0,W=!1,wt=!1,G=null,Tt=null,Et=!1,K=!1,Dt=!1,q=!1,Ot=!0,kt=!1,At=`user-content-`,jt=!0,Mt=!1,J={},Y=null,Nt=j({},/* @__PURE__ */ `annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Pt=null,Ft=j({},[`audio`,`video`,`img`,`source`,`image`,`track`]),It=null,Lt=j({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),Rt=`http://www.w3.org/1998/Math/MathML`,zt=`http://www.w3.org/2000/svg`,X=`http://www.w3.org/1999/xhtml`,Bt=X,Vt=!1,Ht=null,Ut=j({},[Rt,zt,X],ye),Wt=x([`mi`,`mo`,`mn`,`ms`,`mtext`]),Gt=j({},Wt),Kt=x([`annotation-xml`]),qt=j({},Kt),Jt=j({},[`title`,`style`,`font`,`a`,`script`]),Yt=null,Xt=[`application/xhtml+xml`,`text/html`],Z=null,Zt=null,Qt=n.createElement(`form`),$t=function(e){return e instanceof RegExp||e instanceof Function},en=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Zt&&Zt===e)return;(!e||typeof e!=`object`)&&(e={}),e=M(e),Yt=Xt.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,Z=Yt===`application/xhtml+xml`?ye:ve,I=F(e,`ALLOWED_TAGS`,vt,{transform:Z}),L=F(e,`ALLOWED_ATTR`,R,{transform:Z}),Ht=F(e,`ALLOWED_NAMESPACES`,Ut,{transform:ye}),It=F(e,`ADD_URI_SAFE_ATTR`,Lt,{transform:Z,base:Lt}),Pt=F(e,`ADD_DATA_URI_TAGS`,Ft,{transform:Z,base:Ft}),Y=F(e,`FORBID_CONTENTS`,Nt,{transform:Z}),B=F(e,`FORBID_TAGS`,M({}),{transform:Z}),yt=F(e,`FORBID_ATTR`,M({}),{transform:Z}),J=E(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?M(e.USE_PROFILES):e.USE_PROFILES:!1,bt=e.ALLOW_ARIA_ATTR!==!1,xt=e.ALLOW_DATA_ATTR!==!1,St=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ct=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,H=e.SAFE_FOR_TEMPLATES||!1,U=e.SAFE_FOR_XML!==!1,W=e.WHOLE_DOCUMENT||!1,K=e.RETURN_DOM||!1,Dt=e.RETURN_DOM_FRAGMENT||!1,q=e.RETURN_TRUSTED_TYPE||!1,Et=e.FORCE_BODY||!1,Ot=e.SANITIZE_DOM!==!1,kt=e.SANITIZE_NAMED_PROPS||!1,jt=e.KEEP_CONTENT!==!1,Mt=e.IN_PLACE||!1,_t=je(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:Je,Bt=typeof e.NAMESPACE==`string`?e.NAMESPACE:X,Gt=lt(e,`MATHML_TEXT_INTEGRATION_POINTS`,()=>j({},Wt)),qt=lt(e,`HTML_INTEGRATION_POINTS`,()=>j({},Kt));let t=lt(e,`CUSTOM_ELEMENT_HANDLING`,()=>de(null));if(z=de(null),E(t,`tagNameCheck`)&&$t(t.tagNameCheck)&&(z.tagNameCheck=t.tagNameCheck),E(t,`attributeNameCheck`)&&$t(t.attributeNameCheck)&&(z.attributeNameCheck=t.attributeNameCheck),E(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(z.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),S(z),H&&(xt=!1),Dt&&(K=!0),J&&(I=j({},Re),L=de(null),J.html===!0&&(j(I,Me),j(L,ze)),J.svg===!0&&(j(I,Ne),j(L,Be),j(L,He)),J.svgFilters===!0&&(j(I,Pe),j(L,Be),j(L,He)),J.mathMl===!0&&(j(I,Ie),j(L,Ve),j(L,He))),V.tagCheck=null,V.attributeCheck=null,E(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?V.tagCheck=e.ADD_TAGS:T(e.ADD_TAGS)&&(I===vt&&(I=M(I)),j(I,e.ADD_TAGS,Z))),E(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?V.attributeCheck=e.ADD_ATTR:T(e.ADD_ATTR)&&(L===R&&(L=M(L)),j(L,e.ADD_ATTR,Z))),E(e,`ADD_FORBID_CONTENTS`)&&T(e.ADD_FORBID_CONTENTS)&&(Y===Nt&&(Y=M(Y)),j(Y,e.ADD_FORBID_CONTENTS,Z)),jt&&(I[`#text`]=!0),W&&j(I,[`html`,`head`,`body`]),I.table&&(j(I,[`tbody`]),delete B.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw O(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw O(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=y;y=e.TRUSTED_TYPES_POLICY;try{b=C(``)}catch(e){throw y=t,e}}else e.TRUSTED_TYPES_POLICY===null?(y=void 0,b=``):(y===void 0&&(y=pe()),y&&typeof b==`string`&&(b=C(``)));x&&x(e),Zt=e},tn=j({},[...Ne,...Pe,...Fe]),nn=j({},[...Ie,...Le]),rn=function(e,t,n){return t.namespaceURI===X?e===`svg`:t.namespaceURI===Rt?e===`svg`&&(n===`annotation-xml`||Gt[n]):!!tn[e]},an=function(e,t,n){return t.namespaceURI===X?e===`math`:t.namespaceURI===zt?e===`math`&&qt[n]:!!nn[e]},on=function(e,t,n){return t.namespaceURI===zt&&!qt[n]||t.namespaceURI===Rt&&!Gt[n]?!1:!nn[e]&&(Jt[e]||!tn[e])},sn=function(e){let t=h(e);(!t||!t.tagName)&&(t={namespaceURI:Bt,tagName:`template`});let n=ve(e.tagName),r=ve(t.tagName);return Ht[e.namespaceURI]?e.namespaceURI===zt?rn(n,t,r):e.namespaceURI===Rt?an(n,t,r):e.namespaceURI===X?on(n,t,r):!!(Yt===`application/xhtml+xml`&&Ht[e.namespaceURI]):!1},Q=function(e){ge(t.removed,{element:e});try{h(e).removeChild(e)}catch{if(p(e),!h(e))throw O(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},cn=function(e,t,n){try{ee(e,t)}catch{try{e.removeAttribute(n)}catch{}}},ln=function(e){fn(e);let t=m(e);if(t){let e=[];w(t,t=>{ge(e,t)}),w(e,e=>{try{p(e)}catch{}})}let n=re(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;typeof i==`string`&&cn(e,r,i)}},un=function(e,n,r){if(!r)try{r=n.getAttributeNode(e)}catch{r=null}ge(t.removed,{attribute:r||null,from:n});try{r?ee(n,r):n.removeAttribute(e)}catch{try{n.removeAttribute(e)}catch{}}if(e===`is`){if(K||Dt)try{Q(n)}catch{}else try{n.setAttribute(e,``)}catch{}}},dn=function(e){let t=re(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;typeof i!=`string`||L[Z(i)]||cn(e,r,i)}},fn=function(e){let t=[e];for(;t.length>0;){let e=t.pop();v(e)===P.element&&dn(e);let n=m(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},pn=function(e,t){return U?e===`patchsrc`||e===`for`&&t!==`label`&&t!==`output`:!1},mn=function(e){if(!U)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=v(e);if(n===P.processingInstruction||n===P.comment&&D(et,e.data)){try{p(e)}catch{}continue}if(n===P.element){let t=e,n=Z(ae(e));try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&pn(`for`,n)&&t.removeAttribute(`for`)}catch{}}let r=m(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},hn=function(e){let t=null,r=null;if(Et)e=`<remove></remove>`+e;else{let t=be(e,/^[\r\n\t ]+/);r=t&&t[0]}Yt===`application/xhtml+xml`&&Bt===X&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=y?C(e):e;if(Bt===X)try{t=new l().parseFromString(i,Yt)}catch{}if(!t||!t.documentElement){t=Te.createDocument(Bt,`template`,null);try{t.documentElement.innerHTML=Vt?b:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Bt===X?Oe.call(t,W?`html`:`body`)[0]:W?t.documentElement:a},gn=function(e){let t=ie?ie(e):e.ownerDocument;return Ee.call(t||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},_n=function(e){return e=xe(e,ke,` `),e=xe(e,rt,` `),e=xe(e,dt,` `),e},vn=function(e){e.normalize();let t=ie?ie(e):e.ownerDocument,n=Ee.call(t||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),r=n.nextNode();for(;r;)r.data=_n(r.data),r=n.nextNode();let i=e.querySelectorAll?.call(e,`template`);i&&w(i,e=>{bn(e.content)&&vn(e.content)})},yn=function(e){let t=_?_(e):null;return typeof t!=`string`||Z(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==re(e)||typeof e.removeAttribute!=`function`||typeof e.removeAttributeNode!=`function`||typeof e.getAttributeNode!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==g(e)||e.childNodes!==m(e)},bn=function(e){if(!g||typeof e!=`object`||!e)return!1;try{return g(e)===P.documentFragment}catch{return!1}},xn=function(e){if(!g||typeof e!=`object`||!e)return!1;try{return typeof g(e)==`number`}catch{return!1}};function $(e,n,r){e.length!==0&&w(e,e=>{e.call(t,n,r,Zt)})}let Sn=function(e,t){return!!(U&&e.hasChildNodes()&&!xn(e.firstElementChild)&&D($e,e.textContent)&&D($e,e.innerHTML)||U&&e.namespaceURI===X&&it[t]&&(xn(e.firstElementChild)||typeof e.textContent==`string`&&D(at[t],e.textContent))||e.nodeType===P.processingInstruction||U&&e.nodeType===P.comment&&D(et,e.data))},Cn=function(e,t){return e instanceof RegExp?D(e,t):e instanceof Function&&!!e(t,...[...arguments].slice(2))},wn=function(e,t,n){if(!B[t]&&An(t)&&Cn(z.tagNameCheck,t))return!1;if(jt&&!Y[t]){let t=h(e),r=m(e);if(r&&t){let i=r.length;for(let a=i-1;a>=0;--a){let i=e===n?f(r[a],!0):r[a];t.insertBefore(i,te(e))}}}return Q(e),!0},Tn=function(e,t,n,r){return e.length===0?t:t===n||t===r?M(t):t},En=function(e,t){return e===t||h(e)!==null?!1:(Mt&&fn(e),!0)},Dn=function(e,n){if($(A.beforeSanitizeElements,e,null),En(e,n))return!0;if(yn(e))return Q(e),!0;let r=Z(ae(e));if(I=Tn(A.uponSanitizeElement,I,vt,G),$(A.uponSanitizeElement,e,{tagName:r,allowedTags:I}),En(e,n))return!0;if(Sn(e,r))return Q(e),!0;if(B[r]||!(V.tagCheck instanceof Function&&V.tagCheck(r))&&!I[r]){let t=wn(e,r,n);return t===!1&&($(A.afterSanitizeElements,e,null),En(e,n))?!0:t}if(v(e)===P.element&&!sn(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&D(tt,e.innerHTML))return Q(e),!0;if(H&&e.nodeType===P.text){let n=_n(e.textContent);e.textContent!==n&&(ge(t.removed,{element:e.cloneNode()}),e.textContent=n)}return $(A.afterSanitizeElements,e,null),En(e,n)},On=function(e,t,r){if(yt[t]||pn(t,e)||Ot&&(t===`id`||t===`name`)&&(r in n||r in Qt))return!1;let i=L[t]||V.attributeCheck instanceof Function&&V.attributeCheck(t,e);return xt&&D(ft,t)||bt&&D(pt,t)?!0:i?It[t]||D(_t,xe(r,ht,``))||(t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Se(r,`data:`)===0&&Pt[e]||St&&!D(mt,xe(r,ht,``))?!0:!r:An(e)&&Cn(z.tagNameCheck,e)&&Cn(z.attributeNameCheck,t,e)||t===`is`&&z.allowCustomizedBuiltInElements&&Cn(z.tagNameCheck,r)},kn=j({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),An=function(e){return!kn[ve(e)]&&D(gt,e)},jn=function(e,t,n,r){if(y&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return C(r);case`TrustedScriptURL`:return fe(r)}return r},Mn=function(e,t,n,r){try{return n?e.setAttributeNS(n,t,r):e.setAttribute(t,r),!yn(e)||(Q(e),!1)}catch{return un(t,e),!1}},Nn=function(e,n){if($(A.beforeSanitizeAttributes,e,null),En(e,n))return;let r=e.attributes;if(!r||yn(e))return;L=Tn(A.uponSanitizeAttribute,L,R,Tt);let i={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:L,forceKeepAttr:void 0},a=r.length,o=Z(e.nodeName);for(;a--;){let n=r[a],s=n.name,c=n.namespaceURI,l=n.value,u=Z(s),d=l,f=s===`value`?d:Ce(d),p=!1;i.attrName=u,i.attrValue=f,i.keepAttr=!0,i.forceKeepAttr=void 0,$(A.uponSanitizeAttribute,e,i),f=i.attrValue,kt&&(u===`id`||u===`name`)&&Se(f,At)!==0&&(un(s,e,n),f=At+f,p=!0),U&&D(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,f)||u===`attributename`&&be(f,`href`)?un(s,e,n):i.forceKeepAttr||(i.keepAttr?!Ct&&D(nt,f)?un(s,e,n):(H&&(f=_n(f)),On(o,u,f)?(f=jn(o,u,c,f),f!==d&&Mn(e,s,c,f)&&p&&he(t.removed)):un(s,e,n)):un(s,e,n))}$(A.afterSanitizeAttributes,e,null),En(e,n)},Pn=function(e){let t=null,n=gn(e);for($(A.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if($(A.uponSanitizeShadowNode,t,null),Dn(t,e),Nn(t,e),bn(t.content)&&Pn(t.content),v(t)===P.element){let e=ne(t);bn(e)&&(Fn(e),Pn(e))}$(A.afterSanitizeShadowDOM,e,null)},Fn=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){Pn(e.shadow);continue}let n=e.node,r=v(n)===P.element,i=m(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=_?_(n):null;if(typeof e==`string`&&Z(e)===`template`){let e=n.content;bn(e)&&t.push({node:e,shadow:null})}}if(r){let e=ne(n);bn(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(Vt=!e,Vt&&(e=`<!-->`),typeof e!=`string`&&!xn(e)&&(e=Ae(e),typeof e!=`string`))throw O(`dirty is not a string, aborting`);if(!t.isSupported)return e;wt?(I=G,L=Tt):en(n),(A.uponSanitizeElement.length>0||A.uponSanitizeAttribute.length>0)&&(I=M(I)),A.uponSanitizeAttribute.length>0&&(L=M(L)),t.removed=[];let c=Mt&&typeof e!=`string`&&xn(e);if(c){mn(e);let t=ae(e);if(typeof t==`string`){let n=Z(t);if(!I[n]||B[n])throw ln(e),O(`root node is forbidden and cannot be sanitized in-place`)}if(yn(e))throw ln(e),O(`root node is clobbered and cannot be sanitized in-place`);try{Fn(e)}catch(t){throw ln(e),t}}else if(xn(e))i=hn(`<!---->`),a=i.ownerDocument.importNode(e,!0),a.nodeType===P.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),Fn(i);else{if(!K&&!H&&!W&&e.indexOf(`<`)===-1)return y&&q?C(e):e;if(i=hn(e),!i)return K?null:q?b:``}i&&Et&&Q(i.firstChild);let l=c?e:i;try{let e=gn(l);for(;o=e.nextNode();)Dn(o,l),Nn(o,l),bn(o.content)&&Pn(o.content)}catch(n){throw c&&(ln(e),w(t.removed,e=>{e.element&&fn(e.element)})),n}if(c){let n=!1;if(w(t.removed,t=>{t.element&&(t.element===e&&(n=!0),fn(t.element))}),n)throw O(`a node selected for removal could not be safely returned; refusing to sanitize in place`);return H&&vn(e),e}if(K){if(H&&vn(i),Dt)for(s=De.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(L.shadowroot||L.shadowrootmode)&&(s=k.call(r,s,!0)),s}let u=W?i.outerHTML:i.innerHTML;return W&&I[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&D(Ze,i.ownerDocument.doctype.name)&&(u=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
7
- `+u),H&&(u=_n(u)),y&&q?C(u):u},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};en(e),wt=!0,G=I,Tt=L},t.clearConfig=function(){Zt=null,wt=!1,G=null,Tt=null,y=se,b=``},t.isValidAttribute=function(e,t,n){Zt||en({});let r=Z(e),i=Z(t);return On(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&E(A,e)&&ge(A[e],t)},t.removeHook=function(e,t){if(E(A,e)){if(t!==void 0){let n=me(A[e],t);return n===-1?void 0:_e(A[e],n,1)[0]}return he(A[e])}},t.removeHooks=function(e){E(A,e)&&(A[e]=[])},t.removeAllHooks=function(){A=ct()},t}ut();function dt(e){let t=e.trim();if(!t)return()=>!1;if(t.startsWith(`/`)&&(t.endsWith(`/`)||/\/[gimuy]*$/.test(t)))try{let e=t.lastIndexOf(`/`),n=t.slice(1,e),r=t.slice(e+1),i=new RegExp(n,r||`i`);return e=>i.test(e)}catch{}if(t.includes(`^`)||t.includes(`$`)||t.includes(`(`)&&t.includes(`)`))try{let e=new RegExp(t,`i`);return t=>e.test(t)}catch{}if(t.startsWith(`*.`)){let e=t.slice(2).toLowerCase();return t=>{let n=t.toLowerCase();return n===e||n.endsWith(`.`+e)}}let n=t.toLowerCase();return e=>{let t=e.toLowerCase();return t===n||t.endsWith(`.`+n)}}let ft=[`youtube.com`,`youtube-nocookie.com`,`youtu.be`,`xt-ml.github.io`,`kherrick.github.io`];function pt(e){e.map(e=>dt(e)).filter(Boolean)}pt(ft);const mt=[],ht=[];let gt=new Set(mt.map(e=>e.toLowerCase().trim())),_t=[...ht],I=[];function vt(e){I=e.map(e=>dt(e)).filter(Boolean)}vt(_t);function L(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.toLowerCase().trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.toLowerCase().trim()).filter(Boolean):[]}function R(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.trim()).filter(Boolean):[]}function z(e){let t=L(e);gt=new Set(t)}function B(e){let t=R(e);_t=t,vt(t)}function yt(e){if(!e||typeof e!=`string`)return!1;let t=e.trim().toLowerCase();return!t.includes(`-`)||t===`shadow-claw`||t.startsWith(`shadow-claw-`)||t.startsWith(`sc-`)?!0:gt.has(t)}function V(e){if(!e||typeof e!=`string`)return!1;let t=e.trim();if(!t||/^(?:javascript|data|vbscript):/i.test(t))return!1;if(/^blob:/i.test(t)||t.startsWith(`/`)||t.startsWith(`./`)||t.startsWith(`../`))return!0;try{let e=typeof globalThis<`u`&&globalThis.location?.origin&&globalThis.location.origin!==`null`?globalThis.location.origin:`http://localhost`,n=new URL(t,e);if(n.protocol!==`http:`&&n.protocol!==`https:`)return!1;if(typeof globalThis<`u`&&globalThis.location?.origin&&globalThis.location.origin!==`null`&&n.origin===globalThis.location.origin)return!0;let r=n.hostname.toLowerCase();return I.some(e=>e(r))}catch{return!1}}function bt(e){if(!e||typeof e!=`object`)return;let t=e.allowedCustomElements||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedElements:void 0);t!==void 0&&z(t);let n=e.allowedCustomElementDomains||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedDomains:void 0);n!==void 0&&B(n)}let xt=null;function St(e){xt=e}function Ct(){if(typeof document>`u`)return;let e=document.getElementById(`shadow-claw-site-config`);if(e&&e.textContent)try{let t=JSON.parse(e.textContent);bt(t),xt?.(t)}catch{}}let H=null,U=!1;function W(){Ct(),!(U||typeof customElements>`u`||typeof customElements.define!=`function`)&&(H=customElements.define.bind(customElements),customElements.define=function(e,t,n){if(!yt((e||``).toLowerCase().trim())){let t=`[Security] Registration blocked: <${e}> is not an approved custom element.`;throw console.error(t),Error(t)}return H(e,t,n)},U=!0)}function wt(e=typeof document<`u`?document.documentElement:null){if(typeof MutationObserver>`u`||!e)return null;if(typeof e.querySelectorAll==`function`)try{e.querySelectorAll(`*`).forEach(e=>{let t=e.tagName?e.tagName.toLowerCase():``;t.includes(`-`)&&!yt(t)&&(console.warn(`[Security] Removing existing unapproved custom element: <${t}>`),e.remove())})}catch{}let t=new MutationObserver(e=>{for(let t of e)t.addedNodes.forEach(e=>{if(e.nodeType===1){let t=e,n=t.tagName?t.tagName.toLowerCase():``;n.includes(`-`)&&!yt(n)&&(console.warn(`[Security] Removing unapproved custom element: <${n}>`),t.remove())}})});return t.observe(e,{childList:!0,subtree:!0}),t}const G=`allow-modals allow-scripts allow-popups allow-popups-to-escape-sandbox`,Tt=[`'self'`,`blob:`,`data:`],Et=[`'self'`,`blob:`,`data:`],K=[`'self'`,`'unsafe-inline'`,`https:`,`http:`],Dt=[`'self'`,`blob:`,`data:`,`https:`,`http:`];let q=G;[...Tt],[...Et],[...K],[...Dt];function Ot(e){q=Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean).join(` `):typeof e==`string`&&e.trim()?e.trim():G}function kt(e){if(!e||typeof e!=`object`)return;let t=e.allowedCustomElements||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedElements:void 0);t!==void 0&&z(t);let n=e.allowedCustomElementDomains||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedDomains:void 0);n!==void 0&&B(n);let r=typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.scripts:void 0;r!==void 0&&At(r),e.security?.iframeSandbox===void 0?(e.security?.allowSameOrigin===!0||e.security?.allowIframeSameOrigin===!0)&&(q.includes(`allow-same-origin`)||(q=`${q} allow-same-origin`.trim())):Ot(e.security.iframeSandbox),e.security?.workerSrc!==void 0&&R(e.security.workerSrc),e.security?.connectSrc!==void 0&&R(e.security.connectSrc),e.security?.scriptSrc!==void 0&&R(e.security.scriptSrc),e.security?.styleSrc!==void 0&&R(e.security.styleSrc),e.security?.imgSrc!==void 0&&R(e.security.imgSrc)}St(kt);function At(e){Array.isArray(e)&&e.map(e=>({src:typeof e==`string`?e:e?.src,hasInit:typeof e==`object`&&e?!!e.hasInit:!1})).filter(e=>typeof e.src==`string`&&V(e.src))}async function jt(e){try{let{getDb:t}=await import(`./chunk-C5y0xMR4.js`),{getConfig:n}=await import(`./chunk-CnQJzcD6.js`),r=e??await t();if(!r)return;let[i,a]=await Promise.all([n(r,`allowed_custom_elements`),n(r,`allowed_custom_element_host_patterns`)]);if(typeof i==`string`&&i.trim())try{z(JSON.parse(i))}catch{z(i)}if(typeof a==`string`&&a.trim())try{B(JSON.parse(a))}catch{B(a)}}catch(e){console.warn(`Failed to load custom element security from db:`,e)}}const Mt=`shadowclaw`;let J;function Y(){let e=globalThis.trustedTypes;return!e||typeof e.createPolicy!=`function`?null:e}function Nt(){if(J!==void 0)return J;let e=Y();if(!e)return J=null,J;if(typeof e.getPolicy==`function`){let t=e.getPolicy(Mt);if(t)return J=t,J}try{J=e.createPolicy(Mt,{createHTML:e=>e,createScriptURL:e=>e})}catch{J=typeof e.getPolicy==`function`?e.getPolicy(Mt)??null:null}return J}function Pt(e){let t=Nt();return!t||typeof t.createScriptURL!=`function`?e:t.createScriptURL(e)}async function Ft(e,t){let n=e?.createWritable,r=Reflect.get(e,`createWriteable`),i=typeof n==`function`?n.bind(e):typeof r==`function`?r.bind(e):null;if(i){let e=await i();await e.write(Lt(t)),await e.close()}else if(typeof e.createSyncAccessHandle==`function`){let n=await e.createSyncAccessHandle();try{let e=await Rt(t);n.truncate(0),n.write(e,{at:0}),typeof n.flush==`function`&&n.flush()}finally{n.close()}}else throw Error(`Writable file streams are not supported by this browser/storage backend.`)}async function It(e,t){if(typeof globalThis.Worker!=`function`)throw Error(`Writable file streams are not supported by this browser/storage backend.`);let n=await Rt(t);return new Promise((t,r)=>{let i=``,a=null;try{let e=[`self.onmessage = async (e) => {`,` try {`,` const { pathSegments, bytes } = e.data;`,` let dir = await navigator.storage.getDirectory();`,` for (let i = 0; i < pathSegments.length - 1; i++) {`,` dir = await dir.getDirectoryHandle(pathSegments[i], { create: true });`,` }`,` const filename = pathSegments[pathSegments.length - 1];`,` const fh = await dir.getFileHandle(filename, { create: true });`,` const h = await fh.createSyncAccessHandle();`,` try {`,` h.truncate(0);`,` h.write(bytes, { at: 0 });`,` if (typeof h.flush === 'function') h.flush();`,` } finally { h.close(); }`,` self.postMessage({ ok: true });`,` } catch (err) {`,` self.postMessage({ error: err.message || String(err) });`,` }`,`};`].join(`
7
+ `+u),H&&(u=_n(u)),y&&q?C(u):u},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};en(e),wt=!0,G=I,Tt=L},t.clearConfig=function(){Zt=null,wt=!1,G=null,Tt=null,y=se,b=``},t.isValidAttribute=function(e,t,n){Zt||en({});let r=Z(e),i=Z(t);return On(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&E(A,e)&&ge(A[e],t)},t.removeHook=function(e,t){if(E(A,e)){if(t!==void 0){let n=me(A[e],t);return n===-1?void 0:_e(A[e],n,1)[0]}return he(A[e])}},t.removeHooks=function(e){E(A,e)&&(A[e]=[])},t.removeAllHooks=function(){A=ct()},t}ut();function dt(e){let t=e.trim();if(!t)return()=>!1;if(t.startsWith(`/`)&&(t.endsWith(`/`)||/\/[gimuy]*$/.test(t)))try{let e=t.lastIndexOf(`/`),n=t.slice(1,e),r=t.slice(e+1),i=new RegExp(n,r||`i`);return e=>i.test(e)}catch{}if(t.includes(`^`)||t.includes(`$`)||t.includes(`(`)&&t.includes(`)`))try{let e=new RegExp(t,`i`);return t=>e.test(t)}catch{}if(t.startsWith(`*.`)){let e=t.slice(2).toLowerCase();return t=>{let n=t.toLowerCase();return n===e||n.endsWith(`.`+e)}}let n=t.toLowerCase();return e=>{let t=e.toLowerCase();return t===n||t.endsWith(`.`+n)}}let ft=[`youtube.com`,`youtube-nocookie.com`,`youtu.be`,`xt-ml.github.io`,`kherrick.github.io`];function pt(e){e.map(e=>dt(e)).filter(Boolean)}pt(ft);const mt=[],ht=[];let gt=new Set(mt.map(e=>e.toLowerCase().trim())),_t=[...ht],I=[];function vt(e){I=e.map(e=>dt(e)).filter(Boolean)}vt(_t);function L(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.toLowerCase().trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.toLowerCase().trim()).filter(Boolean):[]}function R(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.trim()).filter(Boolean):[]}function z(e){let t=L(e);gt=new Set(t)}function B(e){let t=R(e);_t=t,vt(t)}function yt(e){if(!e||typeof e!=`string`)return!1;let t=e.trim().toLowerCase();return!t.includes(`-`)||t===`shadow-claw`||t.startsWith(`shadow-claw-`)||t.startsWith(`sc-`)?!0:gt.has(t)}function V(e){if(!e||typeof e!=`string`)return!1;let t=e.trim();if(!t||/^(?:javascript|data|vbscript):/i.test(t))return!1;if(/^blob:/i.test(t)||t.startsWith(`/`)||t.startsWith(`./`)||t.startsWith(`../`))return!0;try{let e=typeof globalThis<`u`&&globalThis.location?.origin&&globalThis.location.origin!==`null`?globalThis.location.origin:`http://localhost`,n=new URL(t,e);if(n.protocol!==`http:`&&n.protocol!==`https:`)return!1;if(typeof globalThis<`u`&&globalThis.location?.origin&&globalThis.location.origin!==`null`&&n.origin===globalThis.location.origin)return!0;let r=n.hostname.toLowerCase();return I.some(e=>e(r))}catch{return!1}}function bt(e){if(!e||typeof e!=`object`)return;let t=e.allowedCustomElements||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedElements:void 0);t!==void 0&&z(t);let n=e.allowedCustomElementDomains||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedDomains:void 0);n!==void 0&&B(n)}let xt=null;function St(e){xt=e}function Ct(){if(typeof document>`u`)return;let e=document.getElementById(`shadow-claw-site-config`);if(e&&e.textContent)try{let t=JSON.parse(e.textContent);bt(t),xt?.(t)}catch{}}let H=null,U=!1;function W(){Ct(),!(U||typeof customElements>`u`||typeof customElements.define!=`function`)&&(H=customElements.define.bind(customElements),customElements.define=function(e,t,n){if(!yt((e||``).toLowerCase().trim())){let t=`[Security] Registration blocked: <${e}> is not an approved custom element.`;throw console.error(t),Error(t)}return H(e,t,n)},U=!0)}function wt(e=typeof document<`u`?document.documentElement:null){if(typeof MutationObserver>`u`||!e)return null;if(typeof e.querySelectorAll==`function`)try{e.querySelectorAll(`*`).forEach(e=>{let t=e.tagName?e.tagName.toLowerCase():``;t.includes(`-`)&&!yt(t)&&(console.warn(`[Security] Removing existing unapproved custom element: <${t}>`),e.remove())})}catch{}let t=new MutationObserver(e=>{for(let t of e)t.addedNodes.forEach(e=>{if(e.nodeType===1){let t=e,n=t.tagName?t.tagName.toLowerCase():``;n.includes(`-`)&&!yt(n)&&(console.warn(`[Security] Removing unapproved custom element: <${n}>`),t.remove())}})});return t.observe(e,{childList:!0,subtree:!0}),t}const G=`allow-modals allow-scripts allow-popups allow-popups-to-escape-sandbox`,Tt=[`'self'`,`blob:`,`data:`],Et=[`'self'`,`blob:`,`data:`],K=[`'self'`,`'unsafe-inline'`,`https:`,`http:`],Dt=[`'self'`,`blob:`,`data:`,`https:`,`http:`];let q=G;[...Tt],[...Et],[...K],[...Dt];function Ot(e){q=Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean).join(` `):typeof e==`string`&&e.trim()?e.trim():G}function kt(e){if(!e||typeof e!=`object`)return;let t=e.allowedCustomElements||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedElements:void 0);t!==void 0&&z(t);let n=e.allowedCustomElementDomains||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedDomains:void 0);n!==void 0&&B(n);let r=typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.scripts:void 0;r!==void 0&&At(r),e.security?.iframeSandbox===void 0?(e.security?.allowSameOrigin===!0||e.security?.allowIframeSameOrigin===!0)&&(q.includes(`allow-same-origin`)||(q=`${q} allow-same-origin`.trim())):Ot(e.security.iframeSandbox),e.security?.workerSrc!==void 0&&R(e.security.workerSrc),e.security?.connectSrc!==void 0&&R(e.security.connectSrc),e.security?.scriptSrc!==void 0&&R(e.security.scriptSrc),e.security?.styleSrc!==void 0&&R(e.security.styleSrc),e.security?.imgSrc!==void 0&&R(e.security.imgSrc)}St(kt);function At(e){Array.isArray(e)&&e.map(e=>{let t=typeof e==`string`?e:e?.src,n=typeof e==`object`&&e&&typeof e.id==`string`?e.id.trim():void 0,r=typeof e==`object`&&e&&typeof e.name==`string`?e.name.trim():void 0,i=typeof e==`object`&&e?!!(e.global||e.autoload):!1,a=typeof e==`object`&&e&&typeof e.type==`string`?e.type:void 0,o=typeof e==`object`&&e&&typeof e.async==`boolean`?e.async:void 0,s=typeof e==`object`&&e&&typeof e.defer==`boolean`?e.defer:void 0,c=typeof e==`object`&&e?!!e.hasInit:!1;return{src:t,...n?{id:n}:{},...r?{name:r}:{},...i?{global:!0,autoload:!0}:{},...a?{type:a}:{},...o?{async:o}:{},...s?{defer:s}:{},hasInit:c}}).filter(e=>typeof e.src==`string`&&V(e.src))}async function jt(e){try{let{getDb:t}=await import(`./chunk-C5y0xMR4.js`),{getConfig:n}=await import(`./chunk-CnQJzcD6.js`),r=e??await t();if(!r)return;let[i,a]=await Promise.all([n(r,`allowed_custom_elements`),n(r,`allowed_custom_element_host_patterns`)]);if(typeof i==`string`&&i.trim())try{z(JSON.parse(i))}catch{z(i)}if(typeof a==`string`&&a.trim())try{B(JSON.parse(a))}catch{B(a)}}catch(e){console.warn(`Failed to load custom element security from db:`,e)}}const Mt=`shadowclaw`;let J;function Y(){let e=globalThis.trustedTypes;return!e||typeof e.createPolicy!=`function`?null:e}function Nt(){if(J!==void 0)return J;let e=Y();if(!e)return J=null,J;if(typeof e.getPolicy==`function`){let t=e.getPolicy(Mt);if(t)return J=t,J}try{J=e.createPolicy(Mt,{createHTML:e=>e,createScriptURL:e=>e})}catch{J=typeof e.getPolicy==`function`?e.getPolicy(Mt)??null:null}return J}function Pt(e){let t=Nt();return!t||typeof t.createScriptURL!=`function`?e:t.createScriptURL(e)}async function Ft(e,t){let n=e?.createWritable,r=Reflect.get(e,`createWriteable`),i=typeof n==`function`?n.bind(e):typeof r==`function`?r.bind(e):null;if(i){let e=await i();await e.write(Lt(t)),await e.close()}else if(typeof e.createSyncAccessHandle==`function`){let n=await e.createSyncAccessHandle();try{let e=await Rt(t);n.truncate(0),n.write(e,{at:0}),typeof n.flush==`function`&&n.flush()}finally{n.close()}}else throw Error(`Writable file streams are not supported by this browser/storage backend.`)}async function It(e,t){if(typeof globalThis.Worker!=`function`)throw Error(`Writable file streams are not supported by this browser/storage backend.`);let n=await Rt(t);return new Promise((t,r)=>{let i=``,a=null;try{let e=[`self.onmessage = async (e) => {`,` try {`,` const { pathSegments, bytes } = e.data;`,` let dir = await navigator.storage.getDirectory();`,` for (let i = 0; i < pathSegments.length - 1; i++) {`,` dir = await dir.getDirectoryHandle(pathSegments[i], { create: true });`,` }`,` const filename = pathSegments[pathSegments.length - 1];`,` const fh = await dir.getFileHandle(filename, { create: true });`,` const h = await fh.createSyncAccessHandle();`,` try {`,` h.truncate(0);`,` h.write(bytes, { at: 0 });`,` if (typeof h.flush === 'function') h.flush();`,` } finally { h.close(); }`,` self.postMessage({ ok: true });`,` } catch (err) {`,` self.postMessage({ error: err.message || String(err) });`,` }`,`};`].join(`
8
8
  `);i=URL.createObjectURL(new Blob([e],{type:`text/javascript`})),a=new Worker(Pt(i))}catch{i&&URL.revokeObjectURL(i),r(/* @__PURE__ */ Error(`Writable file streams are not supported by this browser/storage backend.`));return}let o=()=>{a&&a.terminate(),URL.revokeObjectURL(i)};a.onmessage=e=>{o(),e.data?.error?r(Error(e.data.error)):t()},a.onerror=e=>{o(),r(Error(e.message||`Worker file write failed`))},a.postMessage({pathSegments:e,bytes:n},[n.buffer])})}function Lt(e){if(typeof e==`string`||e instanceof Blob)return e;if(e instanceof Uint8Array){let t=new Uint8Array(e.byteLength);return t.set(e),new Blob([t])}return new Blob([e])}async function Rt(e){return e instanceof Uint8Array?e:typeof e==`string`?new TextEncoder().encode(e):e instanceof Blob?new Uint8Array(await e.arrayBuffer()):e instanceof ArrayBuffer?new Uint8Array(e):/* @__PURE__ */ new Uint8Array}export{jt as a,ne as c,f as d,m as f,p as h,kt as i,h as l,te as m,It as n,wt as o,ee as p,Pt as r,W as s,Ft as t,l as u};
@@ -1,3 +1,3 @@
1
- import{a as e,n as t,o as n,r}from"./chunk-D1JOfP9r.js";import{n as i}from"./chunk-BFv9XSNd.js";import a from"node:fs";import o from"node:path";import s from"node:http";import{tmpdir as c}from"node:os";function l(e={}){let t=e.agent!==!1,n;if(e.workspace)n=o.resolve(e.workspace);else{let e=o.join(c(),`shadow-claw`);a.mkdirSync(e,{recursive:!0}),n=a.mkdtempSync(o.join(e,`workspace-`))}let r=e.transfersDir||o.join(n,`transfers`),s={"send-message":async(n,r)=>{let i=n?.text??n?.prompt??n?.message;if(!i||typeof i!=`string`||!i.trim())throw Error(`Missing text or prompt parameter`);let a=r?.remotePeerId||`remote`,o=n.groupId||`peer:${a}`;if(!t)return e.verbose&&console.log(`[webrtc-listen] Message received from ${a} (agent disabled): "${i.trim()}"`),{success:!0,queued:!0,groupId:o,text:`Message received (agent disabled)`};e.verbose&&console.log(`[webrtc-listen] Prompt from ${a}: "${i.length>80?i.slice(0,77)+`...`:i}"`);let s=await(e.runAgent||(async(e,t)=>{let{runAgentRun:n}=await import(`./chunk-RGb9wM4R.js`);return n(e,t)}))(i.trim(),{workspace:e.workspace,cacheDir:e.cacheDir,model:e.model,provider:e.provider,apiKey:e.apiKey,systemPrompt:e.systemPrompt,systemPromptFile:e.systemPromptFile,tools:e.tools,allowInternet:e.allowInternet,group:o,quiet:!e.verbose,stream:!1});if(!s?.success)throw Error(s?.error||`Agent execution failed`);return{success:!0,reply:s.response,text:s.response,model:s.model,provider:s.provider,groupId:o}},prompt:async(e,t)=>s[`send-message`](e,t),"send-file":async(n,s)=>{let{fileName:c,data:l,prompt:u,groupId:d}=n||{};if(!c||typeof c!=`string`||!l)throw Error(`Missing fileName or data in send-file args`);let f=i(c);await a.promises.mkdir(r,{recursive:!0});let p=o.join(r,f),m=Buffer.isBuffer(l)?l:Buffer.from(l,`base64`);await a.promises.writeFile(p,m);let h=s?.remotePeerId||`remote`,g=d||`peer:${h}`;e.verbose&&console.log(`[webrtc-listen] Saved file "${f}" (${m.length} bytes) to ${p}`);let _;if(u&&typeof u==`string`&&u.trim()&&t){let t=await(e.runAgent||(async(e,t)=>{let{runAgentRun:n}=await import(`./chunk-RGb9wM4R.js`);return n(e,t)}))(`[Attached file: ${f} (${m.length} bytes) saved at ${p}]\n\n${u.trim()}`,{workspace:e.workspace,cacheDir:e.cacheDir,model:e.model,provider:e.provider,apiKey:e.apiKey,systemPrompt:e.systemPrompt,systemPromptFile:e.systemPromptFile,tools:e.tools,allowInternet:e.allowInternet,group:g,quiet:!e.verbose,stream:!1});t?.success&&(_=t.response)}return{success:!0,fileName:f,path:p,size:m.length,reply:_,text:_}},"transfer-file":async(e,t)=>s[`send-file`](e,t),"list-tools":async()=>{try{let{TOOL_DEFINITIONS:e}=await import(`./chunk-bKcol4wy.js`);return{tools:e.map(e=>e.name)}}catch{return{tools:[]}}},ping:async t=>({ok:!0,peerId:e.peerId||``,timestamp:Date.now()})};return s}function u(t,n){return new Promise((r,i)=>{let c=e(n);try{a.unlinkSync(c)}catch{}try{a.mkdirSync(o.dirname(c),{recursive:!0})}catch{}let l=s.createServer(async(e,n)=>{if(e.method===`GET`&&e.url===`/ping`)n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify({ok:!0,peerId:t.cliPeerId}));else if(e.method===`GET`&&e.url===`/clients`){let e=Array.from(t._connections.keys()).map(e=>{let n=t._peerCards?.get(e);return{clientId:e,peerId:e,deviceLabel:n?.name||`Browser Peer (${e})`,capabilities:n?.capabilities||[`webrtc`,`peerjs`],version:n?.version||`1.0.0`,transport:`webrtc`,connectedAt:Date.now(),lastSeen:Date.now()}});n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify({ok:!0,clients:e}))}else if(e.method===`POST`&&e.url===`/command`){let r=``;e.on(`data`,e=>r+=e),e.on(`end`,async()=>{try{let{targetPeerId:e,action:i,args:a,timeoutMs:o}=JSON.parse(r);if(!e){n.writeHead(400,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:`targetPeerId is required`}));return}let s=t._connections.get(e);if(!s){let r=Array.from(t._connections.keys());n.writeHead(503,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:`No DataChannel open to peer "${e}". Make sure the browser has connected to this listener first.`+(r.length?` Connected peers: ${r.join(`, `)}`:` No peers are currently connected.`)}));return}let c=`${Date.now()}-${Math.random().toString(36).slice(2)}`,l={id:c,type:`command:execute`,payload:{commandId:c,action:i,args:a||{}}},u=await new Promise((e,n)=>{let r=setTimeout(()=>{t._pendingIpc.delete(c),n(/* @__PURE__ */ Error(`Command "${i}" timed out after ${o||3e4}ms`))},o||3e4);t._pendingIpc.set(c,t=>{clearTimeout(r),e(t)});try{s.send(l)}catch(e){clearTimeout(r),t._pendingIpc.delete(c),n(e)}});n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify(u))}catch(e){n.writeHead(500,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:e.message}))}})}else n.writeHead(404),n.end()});l.listen(c,()=>{console.log(`[webrtc-listen] IPC socket: ${c}`),r(l)}),l.on(`error`,i)})}async function d(e={}){let i=e.host||process.env.SHADOWCLAW_HOST||`127.0.0.1`,a=e.port?parseInt(String(e.port),10):parseInt(process.env.SHADOWCLAW_PORT||`8888`,10),o=e.path||`/`,s=!!(e.secure||e.https||[`1`,`true`,`yes`].includes((process.env.SHADOWCLAW_HTTPS||``).toLowerCase().trim())),c=!!(e.insecure===!1||[`0`,`false`,`no`].includes((process.env.SHADOWCLAW_TLS_REJECT_UNAUTHORIZED||``).toLowerCase().trim())),d=e.trustedPeer?Array.isArray(e.trustedPeer)?e.trustedPeer:[e.trustedPeer]:[],f=n(e.peerId,e.cacheDir);console.log(`WebRTC CLI Peer ID : ${f}`),console.log(`Signaling server : ${s?`wss`:`ws`}://${i}:${a}${o}`),s&&!c&&console.log(`TLS verification : disabled (self-signed cert allowed)`),d.length>0?console.log(`Trusted peers : ${d.join(`, `)}`):console.log(`Trusted peers : (any — add --trusted-peer <id> to restrict)`),console.log(``),console.log(`Add this CLI Peer ID as a trusted peer in the browser:`),console.log(` Settings → WebRTC/PeerJS → Trusted Peer IDs → "${f}"`),console.log(``);let p={...l({...e,peerId:f}),...e.handlers||{}},m=new t({host:i,port:a,path:o,secure:s,rejectUnauthorized:c,trustedPeerIds:d,peerId:e.peerId,cacheDir:e.cacheDir,renewPeerId:!!e.renewPeerId,verbose:!!e.verbose,handlers:p}),h=/* @__PURE__ */ new Map;m._pendingIpc=h;let g=m._setupConnection.bind(m);m._setupConnection=function(e,t){g(e,t),e.on(`data`,e=>{let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return}if(t&&typeof t==`object`&&t.type===`command:result`){let e=t.payload||{},n=h.get(e.commandId);n&&(h.delete(e.commandId),n(e))}})};let _=t=>{if(console.log(`
1
+ import{a as e,n as t,o as n,r}from"./chunk-D1JOfP9r.js";import{n as i}from"./chunk-CAaQWd6t.js";import a from"node:fs";import o from"node:path";import s from"node:http";import{tmpdir as c}from"node:os";function l(e={}){let t=e.agent!==!1,n;if(e.workspace)n=o.resolve(e.workspace);else{let e=o.join(c(),`shadow-claw`);a.mkdirSync(e,{recursive:!0}),n=a.mkdtempSync(o.join(e,`workspace-`))}let r=e.transfersDir||o.join(n,`transfers`),s={"send-message":async(n,r)=>{let i=n?.text??n?.prompt??n?.message;if(!i||typeof i!=`string`||!i.trim())throw Error(`Missing text or prompt parameter`);let a=r?.remotePeerId||`remote`,o=n.groupId||`peer:${a}`;if(!t)return e.verbose&&console.log(`[webrtc-listen] Message received from ${a} (agent disabled): "${i.trim()}"`),{success:!0,queued:!0,groupId:o,text:`Message received (agent disabled)`};e.verbose&&console.log(`[webrtc-listen] Prompt from ${a}: "${i.length>80?i.slice(0,77)+`...`:i}"`);let s=await(e.runAgent||(async(e,t)=>{let{runAgentRun:n}=await import(`./chunk-DaurYOqg.js`);return n(e,t)}))(i.trim(),{workspace:e.workspace,cacheDir:e.cacheDir,model:e.model,provider:e.provider,apiKey:e.apiKey,systemPrompt:e.systemPrompt,systemPromptFile:e.systemPromptFile,tools:e.tools,allowInternet:e.allowInternet,group:o,quiet:!e.verbose,stream:!1});if(!s?.success)throw Error(s?.error||`Agent execution failed`);return{success:!0,reply:s.response,text:s.response,model:s.model,provider:s.provider,groupId:o}},prompt:async(e,t)=>s[`send-message`](e,t),"send-file":async(n,s)=>{let{fileName:c,data:l,prompt:u,groupId:d}=n||{};if(!c||typeof c!=`string`||!l)throw Error(`Missing fileName or data in send-file args`);let f=i(c);await a.promises.mkdir(r,{recursive:!0});let p=o.join(r,f),m=Buffer.isBuffer(l)?l:Buffer.from(l,`base64`);await a.promises.writeFile(p,m);let h=s?.remotePeerId||`remote`,g=d||`peer:${h}`;e.verbose&&console.log(`[webrtc-listen] Saved file "${f}" (${m.length} bytes) to ${p}`);let _;if(u&&typeof u==`string`&&u.trim()&&t){let t=await(e.runAgent||(async(e,t)=>{let{runAgentRun:n}=await import(`./chunk-DaurYOqg.js`);return n(e,t)}))(`[Attached file: ${f} (${m.length} bytes) saved at ${p}]\n\n${u.trim()}`,{workspace:e.workspace,cacheDir:e.cacheDir,model:e.model,provider:e.provider,apiKey:e.apiKey,systemPrompt:e.systemPrompt,systemPromptFile:e.systemPromptFile,tools:e.tools,allowInternet:e.allowInternet,group:g,quiet:!e.verbose,stream:!1});t?.success&&(_=t.response)}return{success:!0,fileName:f,path:p,size:m.length,reply:_,text:_}},"transfer-file":async(e,t)=>s[`send-file`](e,t),"list-tools":async()=>{try{let{TOOL_DEFINITIONS:e}=await import(`./chunk-bKcol4wy.js`);return{tools:e.map(e=>e.name)}}catch{return{tools:[]}}},ping:async t=>({ok:!0,peerId:e.peerId||``,timestamp:Date.now()})};return s}function u(t,n){return new Promise((r,i)=>{let c=e(n);try{a.unlinkSync(c)}catch{}try{a.mkdirSync(o.dirname(c),{recursive:!0})}catch{}let l=s.createServer(async(e,n)=>{if(e.method===`GET`&&e.url===`/ping`)n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify({ok:!0,peerId:t.cliPeerId}));else if(e.method===`GET`&&e.url===`/clients`){let e=Array.from(t._connections.keys()).map(e=>{let n=t._peerCards?.get(e);return{clientId:e,peerId:e,deviceLabel:n?.name||`Browser Peer (${e})`,capabilities:n?.capabilities||[`webrtc`,`peerjs`],version:n?.version||`1.0.0`,transport:`webrtc`,connectedAt:Date.now(),lastSeen:Date.now()}});n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify({ok:!0,clients:e}))}else if(e.method===`POST`&&e.url===`/command`){let r=``;e.on(`data`,e=>r+=e),e.on(`end`,async()=>{try{let{targetPeerId:e,action:i,args:a,timeoutMs:o}=JSON.parse(r);if(!e){n.writeHead(400,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:`targetPeerId is required`}));return}let s=t._connections.get(e);if(!s){let r=Array.from(t._connections.keys());n.writeHead(503,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:`No DataChannel open to peer "${e}". Make sure the browser has connected to this listener first.`+(r.length?` Connected peers: ${r.join(`, `)}`:` No peers are currently connected.`)}));return}let c=`${Date.now()}-${Math.random().toString(36).slice(2)}`,l={id:c,type:`command:execute`,payload:{commandId:c,action:i,args:a||{}}},u=await new Promise((e,n)=>{let r=setTimeout(()=>{t._pendingIpc.delete(c),n(/* @__PURE__ */ Error(`Command "${i}" timed out after ${o||3e4}ms`))},o||3e4);t._pendingIpc.set(c,t=>{clearTimeout(r),e(t)});try{s.send(l)}catch(e){clearTimeout(r),t._pendingIpc.delete(c),n(e)}});n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify(u))}catch(e){n.writeHead(500,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:e.message}))}})}else n.writeHead(404),n.end()});l.listen(c,()=>{console.log(`[webrtc-listen] IPC socket: ${c}`),r(l)}),l.on(`error`,i)})}async function d(e={}){let i=e.host||process.env.SHADOWCLAW_HOST||`127.0.0.1`,a=e.port?parseInt(String(e.port),10):parseInt(process.env.SHADOWCLAW_PORT||`8888`,10),o=e.path||`/`,s=!!(e.secure||e.https||[`1`,`true`,`yes`].includes((process.env.SHADOWCLAW_HTTPS||``).toLowerCase().trim())),c=!!(e.insecure===!1||[`0`,`false`,`no`].includes((process.env.SHADOWCLAW_TLS_REJECT_UNAUTHORIZED||``).toLowerCase().trim())),d=e.trustedPeer?Array.isArray(e.trustedPeer)?e.trustedPeer:[e.trustedPeer]:[],f=n(e.peerId,e.cacheDir);console.log(`WebRTC CLI Peer ID : ${f}`),console.log(`Signaling server : ${s?`wss`:`ws`}://${i}:${a}${o}`),s&&!c&&console.log(`TLS verification : disabled (self-signed cert allowed)`),d.length>0?console.log(`Trusted peers : ${d.join(`, `)}`):console.log(`Trusted peers : (any — add --trusted-peer <id> to restrict)`),console.log(``),console.log(`Add this CLI Peer ID as a trusted peer in the browser:`),console.log(` Settings → WebRTC/PeerJS → Trusted Peer IDs → "${f}"`),console.log(``);let p={...l({...e,peerId:f}),...e.handlers||{}},m=new t({host:i,port:a,path:o,secure:s,rejectUnauthorized:c,trustedPeerIds:d,peerId:e.peerId,cacheDir:e.cacheDir,renewPeerId:!!e.renewPeerId,verbose:!!e.verbose,handlers:p}),h=/* @__PURE__ */ new Map;m._pendingIpc=h;let g=m._setupConnection.bind(m);m._setupConnection=function(e,t){g(e,t),e.on(`data`,e=>{let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return}if(t&&typeof t==`object`&&t.type===`command:result`){let e=t.payload||{},n=h.get(e.commandId);n&&(h.delete(e.commandId),n(e))}})};let _=t=>{if(console.log(`
2
2
  [webrtc-listen] Shutting down…`),r(e.cacheDir),t)try{t.close()}catch{}m.close(),process.exit(0)};try{await m.start();let t=await u(m,e.cacheDir);process.on(`SIGINT`,()=>_(t)),process.on(`SIGTERM`,()=>_(t)),console.log(`[webrtc-listen] Ready. Run commands with:
3
3
  node bin/cli.mjs send --transport webrtc --client <browser-peer-id> "message"`),await new Promise(()=>{})}catch(t){r(e.cacheDir),console.error(`Error starting WebRTC listener: ${t.message}`),process.exitCode=1}}export{d as n,u as r,l as t};
@@ -0,0 +1 @@
1
+ export{t as importRemoteArtifacts}from"./chunk-4O8yrQuN.js";
@@ -1 +1 @@
1
- import{c as e,l as t}from"./chunk-DXLmEQ3i.js";import{D as n}from"./chunk-Bqo_706l.js";import{n as r}from"./chunk-BucXnZ4Z.js";function i(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n){let i=e.subarray(r,r+n);t+=String.fromCharCode(...i)}return btoa(t)}function a(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function o(e=``,t=``){let n=(e&&e!==`application/octet-stream`?e:r(t)||e).toLowerCase(),i=t.toLowerCase();return n.startsWith(`text/`)||n.includes(`json`)||n.includes(`xml`)||i.endsWith(`.md`)||i.endsWith(`.txt`)?`text`:n.startsWith(`image/`)?`image`:n.startsWith(`audio/`)?`audio`:n.startsWith(`video/`)?`video`:n===`application/pdf`||i.endsWith(`.pdf`)?`document`:`file`}function s(e){let t=(e||``).toLowerCase(),r=n.getModelInfo(t);if(r){let e=r.supportsImageInput===!0||r.routesByRequestFeatures===!0,t=r.supportsAudioInput===!0||r.routesByRequestFeatures===!0,n=r.supportsVideoInput===!0||r.routesByRequestFeatures===!0,i=r.supportsDocumentInput===!0||r.routesByRequestFeatures===!0;if(r.supportsImageInput!==void 0||r.supportsAudioInput!==void 0||r.supportsVideoInput!==void 0||r.supportsDocumentInput!==void 0||r.routesByRequestFeatures)return{images:e,audio:t,video:n,documents:i,routerByFeatures:!!r.routesByRequestFeatures,source:`metadata`}}let i=t.includes(`no-vision`)||t.includes(`non-vision`)||t.includes(`text-only`),a=t===`openrouter/free`||t===`openrouter/auto`,o=!i&&[`gpt-4o`,`gpt-4.1`,`gpt-5`,`gpt-6`,`astra`,`claude-3`,`claude-4`,`claude-5`,`claude-sonnet`,`claude-haiku`,`claude-opus`,`claude-fable`,`claude-mythos`,`gemini`,`omni`,`llava`,`qwen-vl`,`-vl`,`vision`,`pixtral`].some(e=>t.includes(e)),s=!i&&(t.includes(`claude-3-5`)||t.includes(`claude-3.5`)||t.includes(`claude-3-7`)||t.includes(`claude-3.7`)||t.includes(`claude-4`)||t.includes(`claude-5`)||t.includes(`claude-fable`)||t.includes(`claude-mythos`)||t.includes(`gemini`)||t.includes(`gpt-4.1`)||t.includes(`gpt-5`)||t.includes(`gpt-6`)||t.includes(`astra`)||/claude-(?:sonnet|haiku|opus|fable|mythos)-\d/.test(t));return o?{images:!0,audio:t.includes(`omni`)||t.includes(`audio`),video:t.includes(`omni`)||t.includes(`video`)||t.includes(`gemini`),documents:s,routerByFeatures:a,source:`heuristic`}:{images:!1,audio:!1,video:!1,documents:!1,routerByFeatures:a,source:`unknown`}}async function c(e=[],t,n={}){let r=n.maxInlineTextBytes??102400,a=[];for(let n of e){let e=n.mimeType||`application/octet-stream`,s=o(e,n.fileName),c=s===`text`?`file`:s===`document`?`document`:s,l=null;try{l=await t(n)}catch{l=null}let u=l?.length??(typeof n.size==`number`?n.size:0);if(s===`text`&&l&&u<=r)try{let e=new TextDecoder(`utf-8`).decode(l),t=e.includes("```")?`~~~~`:"```";a.push({type:`text`,text:`Attachment: ${n.fileName}\n${t}\n${e}\n${t}`});continue}catch{}let d={type:`attachment`,mediaType:c,fileName:n.fileName,mimeType:e,size:n.size,path:n.path};l&&(c===`image`&&u<=3145728||c===`audio`&&u<=5242880||c===`document`&&u<=20971520)&&(d.data=i(l)),a.push(d)}return a}async function l(n,r,i){let a=await t(n,r),{dirs:o,filename:s}=e(i),c=a;for(let e of o)c=await c.getDirectoryHandle(e);let l=await c.getFileHandle(s);try{let e=await l.createSyncAccessHandle(),t=e.getSize(),n=new Uint8Array(t);return e.read(n,{at:0}),e.close(),n}catch{let e=await(await l.getFile()).arrayBuffer();return new Uint8Array(e)}}export{a,s as i,c as n,i as o,o as r,l as t};
1
+ import{c as e,l as t}from"./chunk-Ce09lwXT.js";import{D as n}from"./chunk-Bqo_706l.js";import{n as r}from"./chunk-DzhSExU0.js";function i(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n){let i=e.subarray(r,r+n);t+=String.fromCharCode(...i)}return btoa(t)}function a(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function o(e=``,t=``){let n=(e&&e!==`application/octet-stream`?e:r(t)||e).toLowerCase(),i=t.toLowerCase();return n.startsWith(`text/`)||n.includes(`json`)||n.includes(`xml`)||i.endsWith(`.md`)||i.endsWith(`.txt`)?`text`:n.startsWith(`image/`)?`image`:n.startsWith(`audio/`)?`audio`:n.startsWith(`video/`)?`video`:n===`application/pdf`||i.endsWith(`.pdf`)?`document`:`file`}function s(e){let t=(e||``).toLowerCase(),r=n.getModelInfo(t);if(r){let e=r.supportsImageInput===!0||r.routesByRequestFeatures===!0,t=r.supportsAudioInput===!0||r.routesByRequestFeatures===!0,n=r.supportsVideoInput===!0||r.routesByRequestFeatures===!0,i=r.supportsDocumentInput===!0||r.routesByRequestFeatures===!0;if(r.supportsImageInput!==void 0||r.supportsAudioInput!==void 0||r.supportsVideoInput!==void 0||r.supportsDocumentInput!==void 0||r.routesByRequestFeatures)return{images:e,audio:t,video:n,documents:i,routerByFeatures:!!r.routesByRequestFeatures,source:`metadata`}}let i=t.includes(`no-vision`)||t.includes(`non-vision`)||t.includes(`text-only`),a=t===`openrouter/free`||t===`openrouter/auto`,o=!i&&[`gpt-4o`,`gpt-4.1`,`gpt-5`,`gpt-6`,`astra`,`claude-3`,`claude-4`,`claude-5`,`claude-sonnet`,`claude-haiku`,`claude-opus`,`claude-fable`,`claude-mythos`,`gemini`,`omni`,`llava`,`qwen-vl`,`-vl`,`vision`,`pixtral`].some(e=>t.includes(e)),s=!i&&(t.includes(`claude-3-5`)||t.includes(`claude-3.5`)||t.includes(`claude-3-7`)||t.includes(`claude-3.7`)||t.includes(`claude-4`)||t.includes(`claude-5`)||t.includes(`claude-fable`)||t.includes(`claude-mythos`)||t.includes(`gemini`)||t.includes(`gpt-4.1`)||t.includes(`gpt-5`)||t.includes(`gpt-6`)||t.includes(`astra`)||/claude-(?:sonnet|haiku|opus|fable|mythos)-\d/.test(t));return o?{images:!0,audio:t.includes(`omni`)||t.includes(`audio`),video:t.includes(`omni`)||t.includes(`video`)||t.includes(`gemini`),documents:s,routerByFeatures:a,source:`heuristic`}:{images:!1,audio:!1,video:!1,documents:!1,routerByFeatures:a,source:`unknown`}}async function c(e=[],t,n={}){let r=n.maxInlineTextBytes??102400,a=[];for(let n of e){let e=n.mimeType||`application/octet-stream`,s=o(e,n.fileName),c=s===`text`?`file`:s===`document`?`document`:s,l=null;try{l=await t(n)}catch{l=null}let u=l?.length??(typeof n.size==`number`?n.size:0);if(s===`text`&&l&&u<=r)try{let e=new TextDecoder(`utf-8`).decode(l),t=e.includes("```")?`~~~~`:"```";a.push({type:`text`,text:`Attachment: ${n.fileName}\n${t}\n${e}\n${t}`});continue}catch{}let d={type:`attachment`,mediaType:c,fileName:n.fileName,mimeType:e,size:n.size,path:n.path};l&&(c===`image`&&u<=3145728||c===`audio`&&u<=5242880||c===`document`&&u<=20971520)&&(d.data=i(l)),a.push(d)}return a}async function l(n,r,i){let a=await t(n,r),{dirs:o,filename:s}=e(i),c=a;for(let e of o)c=await c.getDirectoryHandle(e);let l=await c.getFileHandle(s);try{let e=await l.createSyncAccessHandle(),t=e.getSize(),n=new Uint8Array(t);return e.read(n,{at:0}),e.close(),n}catch{let e=await(await l.getFile()).arrayBuffer();return new Uint8Array(e)}}export{a,s as i,c as n,i as o,o as r,l as t};
@@ -0,0 +1 @@
1
+ export{n as runWebRtcListenCommand}from"./chunk-CpdqRSO-.js";