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
@@ -0,0 +1 @@
1
+ export{n as runWebRtcListenCommand}from"./chunk-B0SqqDSK.js";
@@ -0,0 +1 @@
1
+ export{t as resolveAgentProvider,s as runAgentRun}from"./chunk-FWRwAX75.js";
@@ -1 +1 @@
1
- export{t as resolveAgentProvider,s as runAgentRun}from"./chunk-Bspgzwsm.js";
1
+ export{t as resolveAgentProvider,s as runAgentRun}from"./chunk-Bu3ylrhT.js";
@@ -1,4 +1,4 @@
1
- import{t as e}from"./chunk-BChOKoxf.js";import{t}from"./chunk-gAdqVxWq.js";import{a as n,i as r,n as i,r as a,t as o}from"./chunk-Cpdoq2Nw.js";import{d as s,h as c,p as l,r as u}from"./chunk-D3UhDDmV.js";import{_ as d,b as f,g as p,l as m,r as h,s as g,y as _}from"./chunk-fv3B7eiP.js";import{n as v,r as y,t as b}from"./chunk-Dl4zTOqg.js";import{n as x,t as S}from"./chunk-DjKQO7aV.js";import{t as C}from"./chunk-DY5GDEeQ.js";import{A as w,B as T,C as E,D as ee,E as D,F as O,G as k,H as A,I as j,J as M,K as N,L as te,M as ne,N as re,O as ie,P,R as F,S as ae,T as oe,U as I,V as L,W as R,Y as se,_ as z,a as ce,b as le,c as ue,d as de,f as fe,g as pe,h as me,i as he,j as ge,k as _e,l as ve,m as ye,o as be,p as B,q as xe,s as Se,u as Ce,v as we,w as Te,x as Ee,y as De,z as V}from"./chunk-C1htf-nO.js";import{d as Oe,i as ke,l as Ae,n as je,r as Me,t as Ne}from"./chunk-m4Ineemy.js";import{t as Pe}from"./chunk-CuwzD5GU.js";import{n as Fe,t as Ie}from"./chunk-DkrM-nlV.js";import{createRequire as Le}from"node:module";import Re,{constants as ze,existsSync as Be}from"node:fs";import H from"node:path";import{fileURLToPath as Ve}from"node:url";import{env as He}from"node:process";import{exec as Ue,spawn as We}from"node:child_process";import{access as Ge,mkdir as Ke,readFile as qe,readdir as Je,rename as Ye,rm as Xe,rmdir as Ze,stat as U,unlink as W,writeFile as G}from"node:fs/promises";import{EventEmitter as Qe}from"node:events";import{isIP as $e}from"node:net";import{runInNewContext as et}from"node:vm";import{DatabaseSync as tt}from"node:sqlite";var nt=class{kind=`file`;name;_path;constructor(e){this._path=e,this.name=H.basename(e)}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async getFile(){let e=await qe(this._path);return{size:e.length,type:`application/octet-stream`,async text(){return e.toString(`utf8`)},async arrayBuffer(){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}}}async createWritable(){let e=[],t=this._path,n=async t=>{if(typeof t==`string`)e.push(Buffer.from(t,`utf8`));else if(t instanceof Uint8Array)e.push(Buffer.from(t));else if(t instanceof ArrayBuffer)e.push(Buffer.from(t));else if(t instanceof Blob){if(typeof t.arrayBuffer==`function`){let n=await t.arrayBuffer();e.push(Buffer.from(n))}else if(typeof t.bytes==`function`){let n=await t.bytes();e.push(Buffer.from(n))}else if(typeof t.text==`function`){let n=await t.text();e.push(Buffer.from(n,`utf8`))}else if(t._buffer)e.push(Buffer.from(t._buffer));else if(typeof FileReader<`u`){let n=await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(r.result),r.onerror=n,r.readAsArrayBuffer(t)});e.push(Buffer.from(n))}}else t&&typeof t==`object`&&`data`in t?await n(t.data):e.push(Buffer.from(new Uint8Array(t)))};return{write:n,async close(){let n=Buffer.concat(e);await G(t,n)}}}},rt=class e{kind=`directory`;name;_path;_rootPath;constructor(e,t){this._path=H.resolve(e),this._rootPath=t?H.resolve(t):this._path,this.name=H.basename(this._path)||this._path}_resolveChild(e){if(!e||e===`.`||e.includes(`\0`)){let t=/* @__PURE__ */ Error(`Invalid path name: "${e}"`);throw t.name=`TypeError`,t}let t=H.resolve(this._path,e),n=H.relative(this._path,t),r=H.relative(this._rootPath,t);if(n.startsWith(`..`)||H.isAbsolute(n)||r.startsWith(`..`)||H.isAbsolute(r)){let t=/* @__PURE__ */ Error(`SecurityError: Path traversal outside workspace root is not allowed: "${e}"`);throw t.name=`SecurityError`,t}return t}async getDirectoryHandle(t,n){let r=this._resolveChild(t);if(n?.create)await Ke(r,{recursive:!0});else if(!Be(r)){let e=/* @__PURE__ */ Error(`NotFoundError: ${r} does not exist`);throw e.name=`NotFoundError`,e}if(!(await U(r)).isDirectory()){let e=/* @__PURE__ */ Error(`TypeMismatchError: "${t}" is a file, not a directory`);throw e.name=`TypeMismatchError`,e}return new e(r,this._rootPath)}async getFileHandle(e,t){let n=this._resolveChild(e);if(t?.create)Be(n)||await G(n,``);else if(!Be(n)){let e=/* @__PURE__ */ Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await U(n)).isDirectory()){let t=/* @__PURE__ */ Error(`TypeMismatchError: "${e}" is a directory, not a file`);throw t.name=`TypeMismatchError`,t}return new nt(n)}async*entries(){let t;try{t=await Je(this._path)}catch{return}for(let n of t){let t=H.join(this._path,n);try{(await U(t)).isDirectory()?yield[n,new e(t,this._rootPath)]:yield[n,new nt(t)]}catch{}}}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async removeEntry(e,t){let n=this._resolveChild(e);if(!Be(n)){let e=/* @__PURE__ */ Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await U(n)).isDirectory()){if(t?.recursive)await Xe(n,{recursive:!0});else try{await Ze(n)}catch(t){if(t.code===`ENOTEMPTY`){let t=/* @__PURE__ */ Error(`InvalidModificationError: directory is not empty: "${e}"`);throw t.name=`InvalidModificationError`,t}throw t}}else await W(n)}};let it=null;function at(){return it}function ot(e){it=H.resolve(e),c(new rt(e))}globalThis.__setStorageRootFromPath=ot,globalThis.__getStorageRootPath=at;const st=({command:e,stdin:t,timeoutSec:n})=>new Promise(r=>{let i=at?.()??globalThis.__getStorageRootPath?.()??process.cwd(),a=Ue(e,{timeout:n*1e3,maxBuffer:10485760,cwd:i},(e,t,n)=>{let i=t||``;n&&(i+=(i?`
1
+ import{t as e}from"./chunk-BChOKoxf.js";import{t}from"./chunk-gAdqVxWq.js";import{a as n,i as r,n as i,r as a,t as o}from"./chunk-Cpdoq2Nw.js";import{d as s,h as c,p as l,r as u}from"./chunk-DvKo50Tp.js";import{_ as d,b as f,g as p,l as m,r as h,s as g,y as _}from"./chunk-fv3B7eiP.js";import{n as v,r as y,t as b}from"./chunk-Dl4zTOqg.js";import{n as x,t as S}from"./chunk-DjKQO7aV.js";import{t as C}from"./chunk-DY5GDEeQ.js";import{A as w,B as T,C as E,D as ee,E as D,F as O,G as k,H as A,I as j,J as M,K as N,L as te,M as ne,N as re,O as ie,P,R as F,S as ae,T as oe,U as I,V as L,W as R,Y as se,_ as z,a as ce,b as le,c as ue,d as de,f as fe,g as pe,h as me,i as he,j as ge,k as _e,l as ve,m as ye,o as be,p as B,q as xe,s as Se,u as Ce,v as we,w as Te,x as Ee,y as De,z as V}from"./chunk-BrEeCKIo.js";import{d as Oe,i as ke,l as Ae,n as je,r as Me,t as Ne}from"./chunk-4O8yrQuN.js";import{t as Pe}from"./chunk-CuwzD5GU.js";import{n as Fe,t as Ie}from"./chunk-DkrM-nlV.js";import{createRequire as Le}from"node:module";import Re,{constants as ze,existsSync as Be}from"node:fs";import H from"node:path";import{fileURLToPath as Ve}from"node:url";import{env as He}from"node:process";import{exec as Ue,spawn as We}from"node:child_process";import{access as Ge,mkdir as Ke,readFile as qe,readdir as Je,rename as Ye,rm as Xe,rmdir as Ze,stat as U,unlink as W,writeFile as G}from"node:fs/promises";import{EventEmitter as Qe}from"node:events";import{isIP as $e}from"node:net";import{runInNewContext as et}from"node:vm";import{DatabaseSync as tt}from"node:sqlite";var nt=class{kind=`file`;name;_path;constructor(e){this._path=e,this.name=H.basename(e)}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async getFile(){let e=await qe(this._path);return{size:e.length,type:`application/octet-stream`,async text(){return e.toString(`utf8`)},async arrayBuffer(){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}}}async createWritable(){let e=[],t=this._path,n=async t=>{if(typeof t==`string`)e.push(Buffer.from(t,`utf8`));else if(t instanceof Uint8Array)e.push(Buffer.from(t));else if(t instanceof ArrayBuffer)e.push(Buffer.from(t));else if(t instanceof Blob){if(typeof t.arrayBuffer==`function`){let n=await t.arrayBuffer();e.push(Buffer.from(n))}else if(typeof t.bytes==`function`){let n=await t.bytes();e.push(Buffer.from(n))}else if(typeof t.text==`function`){let n=await t.text();e.push(Buffer.from(n,`utf8`))}else if(t._buffer)e.push(Buffer.from(t._buffer));else if(typeof FileReader<`u`){let n=await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(r.result),r.onerror=n,r.readAsArrayBuffer(t)});e.push(Buffer.from(n))}}else t&&typeof t==`object`&&`data`in t?await n(t.data):e.push(Buffer.from(new Uint8Array(t)))};return{write:n,async close(){let n=Buffer.concat(e);await G(t,n)}}}},rt=class e{kind=`directory`;name;_path;_rootPath;constructor(e,t){this._path=H.resolve(e),this._rootPath=t?H.resolve(t):this._path,this.name=H.basename(this._path)||this._path}_resolveChild(e){if(!e||e===`.`||e.includes(`\0`)){let t=/* @__PURE__ */ Error(`Invalid path name: "${e}"`);throw t.name=`TypeError`,t}let t=H.resolve(this._path,e),n=H.relative(this._path,t),r=H.relative(this._rootPath,t);if(n.startsWith(`..`)||H.isAbsolute(n)||r.startsWith(`..`)||H.isAbsolute(r)){let t=/* @__PURE__ */ Error(`SecurityError: Path traversal outside workspace root is not allowed: "${e}"`);throw t.name=`SecurityError`,t}return t}async getDirectoryHandle(t,n){let r=this._resolveChild(t);if(n?.create)await Ke(r,{recursive:!0});else if(!Be(r)){let e=/* @__PURE__ */ Error(`NotFoundError: ${r} does not exist`);throw e.name=`NotFoundError`,e}if(!(await U(r)).isDirectory()){let e=/* @__PURE__ */ Error(`TypeMismatchError: "${t}" is a file, not a directory`);throw e.name=`TypeMismatchError`,e}return new e(r,this._rootPath)}async getFileHandle(e,t){let n=this._resolveChild(e);if(t?.create)Be(n)||await G(n,``);else if(!Be(n)){let e=/* @__PURE__ */ Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await U(n)).isDirectory()){let t=/* @__PURE__ */ Error(`TypeMismatchError: "${e}" is a directory, not a file`);throw t.name=`TypeMismatchError`,t}return new nt(n)}async*entries(){let t;try{t=await Je(this._path)}catch{return}for(let n of t){let t=H.join(this._path,n);try{(await U(t)).isDirectory()?yield[n,new e(t,this._rootPath)]:yield[n,new nt(t)]}catch{}}}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async removeEntry(e,t){let n=this._resolveChild(e);if(!Be(n)){let e=/* @__PURE__ */ Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await U(n)).isDirectory()){if(t?.recursive)await Xe(n,{recursive:!0});else try{await Ze(n)}catch(t){if(t.code===`ENOTEMPTY`){let t=/* @__PURE__ */ Error(`InvalidModificationError: directory is not empty: "${e}"`);throw t.name=`InvalidModificationError`,t}throw t}}else await W(n)}};let it=null;function at(){return it}function ot(e){it=H.resolve(e),c(new rt(e))}globalThis.__setStorageRootFromPath=ot,globalThis.__getStorageRootPath=at;const st=({command:e,stdin:t,timeoutSec:n})=>new Promise(r=>{let i=at?.()??globalThis.__getStorageRootPath?.()??process.cwd(),a=Ue(e,{timeout:n*1e3,maxBuffer:10485760,cwd:i},(e,t,n)=>{let i=t||``;n&&(i+=(i?`
2
2
  `:``)+n),e&&!i&&(i=e.message),r(i)});t&&a.stdin&&(a.stdin.write(t),a.stdin.end())});F(st),globalThis.__headlessBashExecutor=st;function ct(e,t,n){let r=t.input_tokens||0,i=t.output_tokens||0,a=t.cache_read_input_tokens||0,o=t.cache_creation_input_tokens||0;return{type:`token-usage`,payload:{groupId:e,inputTokens:r,outputTokens:i,cacheReadTokens:a,cacheCreationTokens:o,totalTokens:r+i+a+o,contextLimit:n}}}function K(e,t,n,r){V(R(e,t,n,r))}async function*lt(e,t){let n=e.getReader(),r=new TextDecoder,i=``;try{for(;!t?.aborted;){let{done:e,value:t}=await n.read();if(e)break;i+=r.decode(t,{stream:!0});let a=i.split(`
3
3
 
4
4
  `);i=a.pop()||``;for(let e of a){let t=e.split(`
@@ -1 +1 @@
1
- import{t as e}from"./chunk-uAI_Zi6n.js";import{existsSync as t}from"node:fs";import n from"node:path";import{pathToFileURL as r}from"node:url";import i from"node:process";const a=e(import.meta.url);let o=null;async function s(){if(o)return o;let e=i.env.NODE_ENV===`test`,s=n.join(a,`dist/headless-agent.js`);if(!e&&t(s))return o=await import(r(s).href),o;try{return o={...await import(`./chunk-DSFrcSyA.js`)},o}catch{try{return o={...await import(`./chunk-DSFrcSyA.js`)},o}catch(e){if(t(s))return o={...await import(r(s).href)},o;throw e}}}export{s as t};
1
+ import{t as e}from"./chunk-uAI_Zi6n.js";import{existsSync as t}from"node:fs";import n from"node:path";import{pathToFileURL as r}from"node:url";import i from"node:process";const a=e(import.meta.url);let o=null;async function s(){if(o)return o;let e=i.env.NODE_ENV===`test`,s=n.join(a,`dist/headless-agent.js`);if(!e&&t(s))return o=await import(r(s).href),o;try{return o={...await import(`./chunk-DfwRL0Ue.js`)},o}catch{try{return o={...await import(`./chunk-DfwRL0Ue.js`)},o}catch(e){if(t(s))return o={...await import(r(s).href)},o;throw e}}}export{s as t};
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./chunk-Cpdoq2Nw.js";import{T as t,h as n,r}from"./chunk-fv3B7eiP.js";import"./chunk-Dl4zTOqg.js";import"./chunk-DdrVpDvJ.js";import{t as i}from"./chunk-DY5GDEeQ.js";import{a}from"./chunk-Bjy_uBfN.js";import"dompurify";async function o(e,...t){let n=e;for(let e of t){let t=await n.getDirectoryHandle(e,{create:!0});if(typeof n.isSameEntry==`function`&&await n.isSameEntry(t))throw Error(`Directory navigation failed: "${e}" resolved to the same directory as its parent. The stored directory handle may be stale — try re-selecting the storage folder.`);n=t}return n}let s=null;async function c(e,t){try{return await e.entries().next(),`granted`}catch{return t}}function l(){let e=t();return e?`${n}-${e}`:n}async function u(){try{if(typeof navigator<`u`&&navigator.storage&&typeof navigator.storage.getDirectory==`function`){let e=await navigator.storage.getDirectory(),t=l();return await e.getDirectoryHandle(t,{create:!0})}}catch(e){console.warn(`OPFS is unavailable (e.g. Firefox Private Browsing). Using in-memory storage fallback:`,e)}return a()}function d(e){if(!e||typeof e!=`object`)return!1;let t=globalThis.FileSystemDirectoryHandle;return t!==void 0&&e instanceof t||typeof e.getDirectoryHandle==`function`&&typeof e.getFileHandle==`function`}async function f(e){if(s)return s;try{let t=await i(e,r.STORAGE_HANDLE);if(d(t)){let e=t;if(typeof e.queryPermission==`function`&&await e.queryPermission({mode:`readwrite`})!==`granted`&&typeof e.requestPermission==`function`)try{await e.requestPermission({mode:`readwrite`})}catch{}return e}}catch(e){console.warn(`Failed to retrieve local storage handle from DB:`,e)}return u()}function p(e){s=e}function m(){s=null}function h(e){return e instanceof DOMException&&e.name===`InvalidStateError`}async function g(e){if(s)try{let e=await s.queryPermission({mode:`readwrite`});return{type:`local`,permission:e===`granted`?`granted`:await c(s,e),name:s.name}}catch{console.warn(`Getting storage status failed for explicit storage root.`)}try{let t=await i(e,r.STORAGE_HANDLE);if(d(t)){let e=t,n=await e.queryPermission({mode:`readwrite`});return{type:`local`,permission:n===`granted`?`granted`:await c(e,n),name:e.name}}}catch(e){console.warn(`Failed to check storage status:`,e)}return{type:`opfs`,permission:`granted`,name:`OPFS`}}async function _(t,n){let r=await f(t);return e()?r:o(r,`groups`,n.replace(/:/g,`-`))}function v(e){let t=e.replace(/\\/g,`/`).replace(/^\/home\/user\//,`/`).replace(/^\/+/,``).split(`/`).filter(Boolean);if(t.length===0)throw Error(`Empty file path`);let n=t.pop();if(t.some(e=>e===`..`||e===`.`)||n===`..`||n===`.`){let t=/* @__PURE__ */ Error(`SecurityError: Path traversal is not allowed: "${e}"`);throw t.name=`SecurityError`,t}return{dirs:t,filename:n||``}}function y(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 b=[`youtube.com`,`youtube-nocookie.com`,`youtu.be`,`xt-ml.github.io`,`kherrick.github.io`];function ee(e){e.map(e=>y(e)).filter(Boolean)}ee(b);const te=[],x=[];let S=new Set(te.map(e=>e.toLowerCase().trim())),C=[...x],w=[];function T(e){w=e.map(e=>y(e)).filter(Boolean)}T(C);function E(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 D(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 O(e){let t=E(e);S=new Set(t)}function k(e){let t=D(e);C=t,T(t)}function A(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:S.has(t)}function j(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 w.some(e=>e(r))}catch{return!1}}function M(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&&O(t);let n=e.allowedCustomElementDomains||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedDomains:void 0);n!==void 0&&k(n)}let N=null;function P(e){N=e}function F(){if(typeof document>`u`)return;let e=document.getElementById(`shadow-claw-site-config`);if(e&&e.textContent)try{let t=JSON.parse(e.textContent);M(t),N?.(t)}catch{}}let I=null,L=!1;function R(){F(),!(L||typeof customElements>`u`||typeof customElements.define!=`function`)&&(I=customElements.define.bind(customElements),customElements.define=function(e,t,n){if(!A((e||``).toLowerCase().trim())){let t=`[Security] Registration blocked: <${e}> is not an approved custom element.`;throw console.error(t),Error(t)}return I(e,t,n)},L=!0)}function z(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(`-`)&&!A(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(`-`)&&!A(n)&&(console.warn(`[Security] Removing unapproved custom element: <${n}>`),t.remove())}})});return t.observe(e,{childList:!0,subtree:!0}),t}const B=`allow-modals allow-scripts allow-popups allow-popups-to-escape-sandbox`,V=[`'self'`,`blob:`,`data:`],H=[`'self'`,`blob:`,`data:`],U=[`'self'`,`'unsafe-inline'`,`https:`,`http:`],W=[`'self'`,`blob:`,`data:`,`https:`,`http:`];let G=B;[...V],[...H],[...U],[...W];function K(e){G=Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean).join(` `):typeof e==`string`&&e.trim()?e.trim():B}function q(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&&O(t);let n=e.allowedCustomElementDomains||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedDomains:void 0);n!==void 0&&k(n);let r=typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.scripts:void 0;r!==void 0&&J(r),e.security?.iframeSandbox===void 0?(e.security?.allowSameOrigin===!0||e.security?.allowIframeSameOrigin===!0)&&(G.includes(`allow-same-origin`)||(G=`${G} allow-same-origin`.trim())):K(e.security.iframeSandbox),e.security?.workerSrc!==void 0&&D(e.security.workerSrc),e.security?.connectSrc!==void 0&&D(e.security.connectSrc),e.security?.scriptSrc!==void 0&&D(e.security.scriptSrc),e.security?.styleSrc!==void 0&&D(e.security.styleSrc),e.security?.imgSrc!==void 0&&D(e.security.imgSrc)}P(q);function J(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`&&j(e.src))}async function Y(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{O(JSON.parse(i))}catch{O(i)}if(typeof a==`string`&&a.trim())try{k(JSON.parse(a))}catch{k(a)}}catch(e){console.warn(`Failed to load custom element security from db:`,e)}}const X=`shadowclaw`;let Z;function ne(){let e=globalThis.trustedTypes;return!e||typeof e.createPolicy!=`function`?null:e}function re(){if(Z!==void 0)return Z;let e=ne();if(!e)return Z=null,Z;if(typeof e.getPolicy==`function`){let t=e.getPolicy(X);if(t)return Z=t,Z}try{Z=e.createPolicy(X,{createHTML:e=>e,createScriptURL:e=>e})}catch{Z=typeof e.getPolicy==`function`?e.getPolicy(X)??null:null}return Z}function Q(e){let t=re();return!t||typeof t.createScriptURL!=`function`?e:t.createScriptURL(e)}async function ie(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(oe(t)),await e.close()}else if(typeof e.createSyncAccessHandle==`function`){let n=await e.createSyncAccessHandle();try{let e=await $(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 ae(e,t){if(typeof globalThis.Worker!=`function`)throw Error(`Writable file streams are not supported by this browser/storage backend.`);let n=await $(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(`
2
+ `);i=URL.createObjectURL(new Blob([e],{type:`text/javascript`})),a=new Worker(Q(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 oe(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 $(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{Y as a,v as c,f as d,g as f,p as h,q as i,_ as l,h as m,ae as n,z as o,m as p,Q as r,R as s,ie as t,l as u};
@@ -1,4 +1,4 @@
1
- import{d as e,i as t,l as n,n as r,r as i,t as a,u as o}from"./chunk-C9dO1ce2.js";import{t as s}from"./chunk-BChOKoxf.js";import{n as c,r as l,t as u}from"./chunk-Cpdoq2Nw.js";import{a as d,c as f,f as p,i as m,l as h,m as g,n as _,o as v,p as y,s as ee,t as b,u as te}from"./chunk-DXLmEQ3i.js";import{C as ne,D as re,E as ie,S as ae,T as oe,b as se,c as ce,f as le,m as ue,n as de,o as x,p as fe,r as S,u as pe,v as me,w as he,x as ge,y as _e}from"./chunk-Bqo_706l.js";import{t as ve}from"./chunk-Dl4zTOqg.js";import{t as ye}from"./chunk-DjKQO7aV.js";import{t as be}from"./chunk-DdrVpDvJ.js";import{t as C}from"./chunk-DY5GDEeQ.js";import{a as xe,c as Se,n as Ce,o as we,r as Te,s as Ee,t as De}from"./chunk-BucXnZ4Z.js";import{a as Oe,i as ke,n as Ae,o as je,t as Me}from"./chunk-DaNyMqrk.js";import{t as Ne}from"./chunk-mjuZTMQB.js";import{n as Pe,r as Fe,t as Ie}from"./chunk-JGMWNwO9.js";import{n as Le,t as Re}from"./chunk-BU-vs0np.js";import{r as ze,t as Be}from"./chunk-DPoeMCv9.js";import{t as Ve}from"./chunk-CgadgaEw.js";import{a as He,c as Ue,d as We,f as Ge,h as Ke,i as qe,l as Je,m as Ye,n as Xe,o as Ze,p as Qe,r as $e,s as et,t as tt,u as nt}from"./chunk-ZJVBMLyZ.js";import{t as rt}from"./chunk-CeGMLWmo.js";import{n as it,r as at,t as ot}from"./chunk-CLS1vG53.js";import{r as st}from"./chunk-BbpS-dVt.js";import{A as ct,B as lt,C as ut,D as dt,E as ft,F as pt,H as mt,I as ht,L as gt,M as _t,N as vt,O as yt,P as bt,S as xt,T as St,V as Ct,_ as wt,a as Tt,b as Et,c as Dt,d as Ot,f as w,g as kt,h as At,i as jt,j as Mt,k as Nt,l as Pt,m as Ft,n as It,o as Lt,p as T,r as Rt,s as zt,t as Bt,u as Vt,v as E,w as Ht,x as Ut,y as Wt,z as Gt}from"./chunk-DEgE46ki.js";import{n as Kt}from"./chunk-DVKHLRUO.js";import{n as qt,t as Jt}from"./chunk-1VdYkt-J.js";import{t as Yt}from"./chunk-BbKfuZ6h.js";import{t as Xt}from"./chunk-BhCmCUGL.js";import{a as Zt,c as Qt,d as D,l as $t,o as en,s as tn,t as nn,u as rn}from"./chunk-DGeysxz3.js";import{a as an,i as on,t as sn}from"./chunk-CuwzD5GU.js";import{t as cn}from"./chunk-kLHhdthB.js";import O from"process";import"buffer";import{lookup as ln}from"node:dns";function k(e){if(!e||e===`/`)return`/`;let t=e.endsWith(`/`)&&e!==`/`?e.slice(0,-1):e;t.startsWith(`/`)||(t=`/${t}`);let n=t.split(`/`).filter(e=>e&&e!==`.`),r=[];for(let e of n)e===`..`?r.pop():r.push(e);return`/${r.join(`/`)}`||`/`}function un(e,t){if(e.includes(`\0`))throw Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function dn(e){let t=k(e);if(t===`/`)return`/`;let n=t.lastIndexOf(`/`);return n===0?`/`:t.slice(0,n)}function fn(e,t){return t.startsWith(`/`)?k(t):k(e===`/`?`/${t}`:`${e}/${t}`)}function pn(e,t){return e===`/`?`/${t}`:`${e}/${t}`}function mn(e,t){return t.startsWith(`/`)?k(t):k(pn(dn(e),t))}var hn=Object.defineProperty,gn=(e,t,n)=>t in e?hn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_n=(e,t,n)=>(gn(e,typeof t==`symbol`?t:t+``,n),n),vn=(e,t,n)=>{if(!t.has(e))throw TypeError(`Cannot `+n)},yn=(e,t)=>{if(Object(t)!==t)throw TypeError(`Cannot use the "in" operator on this value`);return e.has(t)},bn=(e,t,n)=>{if(t.has(e))throw TypeError(`Cannot add the same private member more than once`);t instanceof WeakSet?t.add(e):t.set(e,n)},xn=(e,t,n)=>(vn(e,t,`access private method`),n);
1
+ import{d as e,i as t,l as n,n as r,r as i,t as a,u as o}from"./chunk-C9dO1ce2.js";import{t as s}from"./chunk-BChOKoxf.js";import{n as c,r as l,t as u}from"./chunk-Cpdoq2Nw.js";import{a as d,c as f,f as p,i as m,l as h,m as g,n as _,o as v,p as y,s as ee,t as b,u as te}from"./chunk-Ce09lwXT.js";import{C as ne,D as re,E as ie,S as ae,T as oe,b as se,c as ce,f as le,m as ue,n as de,o as x,p as fe,r as S,u as pe,v as me,w as he,x as ge,y as _e}from"./chunk-Bqo_706l.js";import{t as ve}from"./chunk-Dl4zTOqg.js";import{t as ye}from"./chunk-DjKQO7aV.js";import{t as be}from"./chunk-DdrVpDvJ.js";import{t as C}from"./chunk-DY5GDEeQ.js";import{a as xe,c as Se,n as Ce,o as we,r as Te,s as Ee,t as De}from"./chunk-DzhSExU0.js";import{a as Oe,i as ke,n as Ae,o as je,t as Me}from"./chunk-DBvObsBQ.js";import{t as Ne}from"./chunk-mjuZTMQB.js";import{n as Pe,r as Fe,t as Ie}from"./chunk-JGMWNwO9.js";import{n as Le,t as Re}from"./chunk-BU-vs0np.js";import{r as ze,t as Be}from"./chunk-DPoeMCv9.js";import{t as Ve}from"./chunk-CgadgaEw.js";import{a as He,c as Ue,d as We,f as Ge,h as Ke,i as qe,l as Je,m as Ye,n as Xe,o as Ze,p as Qe,r as $e,s as et,t as tt,u as nt}from"./chunk-ZJVBMLyZ.js";import{t as rt}from"./chunk-CeGMLWmo.js";import{n as it,r as at,t as ot}from"./chunk-CLS1vG53.js";import{r as st}from"./chunk-BbpS-dVt.js";import{A as ct,B as lt,C as ut,D as dt,E as ft,F as pt,H as mt,I as ht,L as gt,M as _t,N as vt,O as yt,P as bt,S as xt,T as St,V as Ct,_ as wt,a as Tt,b as Et,c as Dt,d as Ot,f as w,g as kt,h as At,i as jt,j as Mt,k as Nt,l as Pt,m as Ft,n as It,o as Lt,p as T,r as Rt,s as zt,t as Bt,u as Vt,v as E,w as Ht,x as Ut,y as Wt,z as Gt}from"./chunk-DEgE46ki.js";import{n as Kt}from"./chunk-DVKHLRUO.js";import{n as qt,t as Jt}from"./chunk-1VdYkt-J.js";import{t as Yt}from"./chunk-BbKfuZ6h.js";import{t as Xt}from"./chunk-BhCmCUGL.js";import{a as Zt,c as Qt,d as D,l as $t,o as en,s as tn,t as nn,u as rn}from"./chunk-C44G533y.js";import{a as an,i as on,t as sn}from"./chunk-CuwzD5GU.js";import{t as cn}from"./chunk-kLHhdthB.js";import O from"process";import"buffer";import{lookup as ln}from"node:dns";function k(e){if(!e||e===`/`)return`/`;let t=e.endsWith(`/`)&&e!==`/`?e.slice(0,-1):e;t.startsWith(`/`)||(t=`/${t}`);let n=t.split(`/`).filter(e=>e&&e!==`.`),r=[];for(let e of n)e===`..`?r.pop():r.push(e);return`/${r.join(`/`)}`||`/`}function un(e,t){if(e.includes(`\0`))throw Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function dn(e){let t=k(e);if(t===`/`)return`/`;let n=t.lastIndexOf(`/`);return n===0?`/`:t.slice(0,n)}function fn(e,t){return t.startsWith(`/`)?k(t):k(e===`/`?`/${t}`:`${e}/${t}`)}function pn(e,t){return e===`/`?`/${t}`:`${e}/${t}`}function mn(e,t){return t.startsWith(`/`)?k(t):k(pn(dn(e),t))}var hn=Object.defineProperty,gn=(e,t,n)=>t in e?hn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_n=(e,t,n)=>(gn(e,typeof t==`symbol`?t:t+``,n),n),vn=(e,t,n)=>{if(!t.has(e))throw TypeError(`Cannot `+n)},yn=(e,t)=>{if(Object(t)!==t)throw TypeError(`Cannot use the "in" operator on this value`);return e.has(t)},bn=(e,t,n)=>{if(t.has(e))throw TypeError(`Cannot add the same private member more than once`);t instanceof WeakSet?t.add(e):t.set(e,n)},xn=(e,t,n)=>(vn(e,t,`access private method`),n);
2
2
  /**
3
3
  * @license
4
4
  * Copyright Google LLC All Rights Reserved.
@@ -56,7 +56,7 @@ function er(e){let t=Object.create(rr);t.value=e;let n=()=>(jn(t),t.value);retur
56
56
  * limitations under the License.
57
57
  */
58
58
  const ar=Symbol(`node`);var A;(e=>{var t,n,r,i;class a{constructor(r,i={}){bn(this,n),_n(this,t);let a=er(r)[En];if(this[ar]=a,a.wrapper=this,i){let t=i.equals;t&&(a.equal=t),a.watched=i[e.subtle.watched],a.unwatched=i[e.subtle.unwatched]}}get(){if(!(0,e.isState)(this))throw TypeError(`Wrong receiver type for Signal.State.prototype.get`);return tr.call(this[ar])}set(t){if(!(0,e.isState)(this))throw TypeError(`Wrong receiver type for Signal.State.prototype.set`);if(kn())throw Error(`Writes to signals not permitted during Watcher callback`);let n=this[ar];nr(n,t)}}t=ar,n=/* @__PURE__ */ new WeakSet,e.isState=e=>typeof e==`object`&&yn(n,e),e.State=a;class o{constructor(t,n){bn(this,i),_n(this,r);let a=Kn(t)[En];if(a.consumerAllowSignalWrites=!0,this[ar]=a,a.wrapper=this,n){let t=n.equals;t&&(a.equal=t),a.watched=n[e.subtle.watched],a.unwatched=n[e.subtle.unwatched]}}get(){if(!(0,e.isComputed)(this))throw TypeError(`Wrong receiver type for Signal.Computed.prototype.get`);return Gn(this[ar])}}r=ar,i=/* @__PURE__ */ new WeakSet,e.isComputed=e=>typeof e==`object`&&yn(i,e),e.Computed=o,(t=>{var n,r,i,a;function o(e){let t,n=null;try{n=Dn(null),t=e()}finally{Dn(n)}return t}t.untrack=o;function s(t){if(!(0,e.isComputed)(t)&&!(0,e.isWatcher)(t))throw TypeError(`Called introspectSources without a Computed or Watcher argument`);return t[ar].producerNode?.map(e=>e.wrapper)??[]}t.introspectSources=s;function c(t){if(!(0,e.isComputed)(t)&&!(0,e.isState)(t))throw TypeError(`Called introspectSinks without a Signal argument`);return t[ar].liveConsumerNode?.map(e=>e.wrapper)??[]}t.introspectSinks=c;function l(t){if(!(0,e.isComputed)(t)&&!(0,e.isState)(t))throw TypeError(`Called hasSinks without a Signal argument`);let n=t[ar].liveConsumerNode;return n?n.length>0:!1}t.hasSinks=l;function u(t){if(!(0,e.isComputed)(t)&&!(0,e.isWatcher)(t))throw TypeError(`Called hasSources without a Computed or Watcher argument`);let n=t[ar].producerNode;return n?n.length>0:!1}t.hasSources=u;class d{constructor(e){bn(this,r),bn(this,i),_n(this,n);let t=Object.create(An);t.wrapper=this,t.consumerMarkedDirty=e,t.consumerIsAlwaysLive=!0,t.consumerAllowSignalWrites=!1,t.producerNode=[],this[ar]=t}watch(...t){if(!(0,e.isWatcher)(this))throw TypeError(`Called unwatch without Watcher receiver`);xn(this,i,a).call(this,t);let n=this[ar];n.dirty=!1;let r=Dn(n);for(let e of t)jn(e[ar]);Dn(r)}unwatch(...t){if(!(0,e.isWatcher)(this))throw TypeError(`Called unwatch without Watcher receiver`);xn(this,i,a).call(this,t);let n=this[ar];Un(n);for(let e=n.producerNode.length-1;e>=0;e--)if(t.includes(n.producerNode[e].wrapper)){Vn(n.producerNode[e],n.producerIndexOfThis[e]);let t=n.producerNode.length-1;if(n.producerNode[e]=n.producerNode[t],n.producerIndexOfThis[e]=n.producerIndexOfThis[t],n.producerNode.length--,n.producerIndexOfThis.length--,n.nextProducerIndex--,e<n.producerNode.length){let t=n.producerIndexOfThis[e],r=n.producerNode[e];Wn(r),r.liveConsumerIndexOfThis[t]=e}}}getPending(){if(!(0,e.isWatcher)(this))throw TypeError(`Called getPending without Watcher receiver`);return this[ar].producerNode.filter(e=>e.dirty).map(e=>e.wrapper)}}n=ar,r=/* @__PURE__ */ new WeakSet,i=/* @__PURE__ */ new WeakSet,a=function(t){for(let n of t)if(!(0,e.isComputed)(n)&&!(0,e.isState)(n))throw TypeError(`Called watch/unwatch without a Computed or State argument`)},e.isWatcher=e=>yn(r,e),t.Watcher=d;function f(){return On()?.wrapper}t.currentComputed=f,t.watched=Symbol(`watched`),t.unwatched=Symbol(`unwatched`)})(e.subtle||={})})(A||={});function or(e,t,n,r){let i=t*2**e,a=Math.min(i,n),o=a*r*Math.random();return Math.max(0,a-o)}function sr(e,t){return new Promise((n,r)=>{if(t?.aborted){r(t.reason??new DOMException(`Aborted`,`AbortError`));return}let i=setTimeout(n,e);if(t){let e=()=>{clearTimeout(i),r(t.reason??new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,e,{once:!0});let a=n;n=(n=>{t.removeEventListener(`abort`,e),a(n)})}})}async function cr(){let e=typeof globalThis<`u`?globalThis:void 0;e?.scheduler&&typeof e.scheduler.yield==`function`?await e.scheduler.yield():await new Promise(e=>setTimeout(e,0))}function lr(e,t,n){let r=(t||``).toLowerCase();return r?n&&(r.includes(`api key not configured`)||r.includes(`go to settings to add your api key`)||r.includes(`missing api key`)||r.includes(`no api key`))?`api-key-missing`:n&&(r.includes(`invalid api key`)||r.includes(`incorrect api key`)||r.includes(`authentication failed`)||r.includes(`401`)||r.includes(`403`)||r.includes(`unauthorized`)||r.includes(`forbidden`))?`api-key-invalid`:r.includes(`429`)||r.includes(`rate limit`)||r.includes(`too many requests`)?`rate-limited`:r.includes(`failed to fetch`)||r.includes(`networkerror`)||r.includes(`network error`)||r.includes(`econnrefused`)||r.includes(`connection refused`)||r.includes(`enotfound`)||r.includes(`timed out`)||r.includes(`timeout`)||r.includes(`503`)||r.includes(`502`)?`provider-unreachable`:null:null}function ur(e){if(typeof e.size==`number`&&e.size>0)return e.size;if(typeof e.data==`string`&&e.data.length>0){let t=e.data.endsWith(`==`)?2:+!!e.data.endsWith(`=`);return Math.max(0,Math.floor(e.data.length*3/4)-t)}return 0}function dr(e){return e?e.startsWith(`text/`)||e===`json`||e===`xml`||e===`javascript`||e===`csv`||e===`markdown`:!1}function fr(e){let t=ur(e);if(t===0)return 0;switch(e.mediaType){case`image`:return 1500;case`audio`:return 1500;case`video`:return 2500;default:return dr(e.mimeType)?Math.ceil(t/4):Math.ceil(t/16)}}function pr(e){return e?Math.ceil(e.length/4):0}function mr(e){let t=0;if(typeof e.content==`string`)t=pr(e.content);else if(Array.isArray(e.content))for(let n of e.content)if(n.type===`text`&&n.text)t+=pr(n.text);else if(n.type===`tool_use`)t+=pr(n.name),t+=pr(JSON.stringify(n.input));else if(n.type===`tool_result`){let e=n.content;t+=pr(typeof e==`string`?e:JSON.stringify(e))}else n.type===`attachment`&&(t+=pr(n.fileName),t+=pr(n.mimeType),t+=pr(n.path),t+=fr(n));return t+4}function hr(e,t){if(!e)return``;if(e.length<=t)return e;let n=e.slice(0,t).lastIndexOf(`
59
- `),r=n>t*.5?n:t;return`${e.slice(0,r)}\n[...truncated ${e.length-r} chars]`}function gr(e,t){let{contextLimit:n,systemPromptTokens:r,maxOutputTokens:i,skimTop:a=!1}=t;if(e.length===0)return{messages:[],estimatedTokens:0,truncatedCount:0,contextLimit:n,usagePercent:0};let o=Math.max(0,n-r-i),s=Math.min(25e3,Math.max(1e3,Math.floor(o*.6*4))),c=e.map(e=>_r(e,s)),l=0,u=c.length,d=null,f=0;if(a&&c.length>0){let e=c[0];(e.role===`user`||e.role===`system`)&&(f=mr(e),f<=o&&(d=e))}let p=o-f;for(let e=c.length-1;e>=+!!d;e--){let t=mr(c[e]),n=c[e],r=!1;if(n.role===`user`&&Array.isArray(n.content)&&n.content.some(e=>e.type===`tool_result`)){let n=c[e-1];n&&n.role===`assistant`&&Array.isArray(n.content)&&n.content.some(e=>e.type===`tool_use`)&&(r=!0,t+=mr(n))}if(l+t>p&&e<c.length-1)break;l+=t,r?(u=e-1,e--):u=e}let m=c.slice(u),h=u;d&&u>0&&(m=[d,...m],h=Math.max(0,u-1));let g=l+f,_=g+r,v=n>0?Math.round(_/n*100*10)/10:0;return{messages:m,estimatedTokens:g,truncatedCount:h,contextLimit:n,usagePercent:v}}function _r(e,t){if(!Array.isArray(e.content))return e;let n=e.content.map(e=>e.type===`tool_result`&&typeof e.content==`string`?{...e,content:hr(e.content,t)}:e);return{...e,content:n}}function vr(e,t,n){let r=null,i,a;return typeof e==`string`?(i=e,a=t):(r=e,i=t,a=n??50),r&&ye(r)?Promise.resolve().then(()=>(r.db.prepare(`SELECT * FROM messages WHERE groupId = ? ORDER BY timestamp DESC LIMIT ?`).all(i,a)??[]).reverse().map(yr)):new Promise(async(e,t)=>{try{let n=r??await ve();if(!n)return t(/* @__PURE__ */ Error(`failed to get transaction, cannot get recent messages.`));let o=n.transaction(`messages`,`readonly`);if(!o)return t(/* @__PURE__ */ Error(`failed to get transaction`));let s=o.objectStore(`messages`).index(`by-group-time`),c=IDBKeyRange.bound([i,0],[i,1/0]),l=s.openCursor(c,`prev`),u=[];l.onsuccess=()=>{let t=l.result;t&&u.length<a?(u.push(t.value),t.continue()):e(u.reverse())},l.onerror=()=>t(l.error)}catch(e){t(e)}})}function yr(e){return{...e,isFromMe:!!e.isFromMe,isTrigger:!!e.isTrigger,attachments:e.attachments?JSON.parse(e.attachments):void 0,a2uiAction:e.a2uiAction?JSON.parse(e.a2uiAction):void 0,a2uiEnvelopes:e.a2uiEnvelopes?JSON.parse(e.a2uiEnvelopes):void 0}}async function br(e,t){let n=await vr(e,t),r=await ve();return await Promise.all(n.map(async t=>{if(t.isFromMe)return{role:`assistant`,content:t.content};let n=`${t.sender}: ${t.content}`,i=t.attachments||[];if(i.length===0)return{role:`user`,content:n};let a=await Ae(i,async t=>!r||!t.path?null:Me(r,e,t.path));return a.length===0?{role:`user`,content:n}:{role:`user`,content:[{type:`text`,text:n},...a]}}))}const xr=`group_metadata`;async function Sr(e){let t=await C(e,xr);if(!t)return[];try{return JSON.parse(t)}catch{return[]}}async function Cr(e,t){await D(e,xr,JSON.stringify(t))}async function wr(e,t,n=`br:`,r){let i=await Sr(e),a={groupId:`${n}${r??s()}`,name:t,createdAt:Date.now()};return i.push(a),await Cr(e,i),a}async function Tr(e,t,n){let r=await Sr(e),i=r.find(e=>e.groupId===t);i&&(i.name=n),await Cr(e,r)}async function Er(e,t,n){let r=await Sr(e),i=r.find(e=>e.groupId===t);i&&(n&&n.length>0?i.toolTags=n:delete i.toolTags),await Cr(e,r)}async function Dr(e,t){await Cr(e,(await Sr(e)).filter(e=>e.groupId!==t))}async function Or(e){let t=await Sr(e);if(t.length===0){let t={groupId:x,name:`Main`,createdAt:0};return await Cr(e,[t]),[t]}return t}async function kr(e,t){let n=await Sr(e),r=new Map(n.map(e=>[e.groupId,e])),i=[];for(let e of t){let t=r.get(e);t&&(i.push(t),r.delete(e))}for(let e of n)r.has(e.groupId)&&i.push(e);await Cr(e,i)}async function Ar(e,t){let n=await Sr(e),r=n.find(e=>e.groupId===t);if(!r)return null;let i=t.indexOf(`:`),a={groupId:`${i>=0?t.slice(0,i+1):`br:`}${s()}`,name:`${r.name} (copy)`,createdAt:Date.now(),pinnedMaxTokens:r.pinnedMaxTokens,providerRuntimeOverrides:r.providerRuntimeOverrides?JSON.parse(JSON.stringify(r.providerRuntimeOverrides)):void 0,subagentModelSelectionMode:r.subagentModelSelectionMode,subagentMaxTokens:r.subagentMaxTokens,subagentPinnedProvider:r.subagentPinnedProvider,subagentPinnedModel:r.subagentPinnedModel,subagentFastProvider:r.subagentFastProvider,subagentFastModel:r.subagentFastModel,subagentSmartProvider:r.subagentSmartProvider,subagentSmartModel:r.subagentSmartModel,subagentPowerfulProvider:r.subagentPowerfulProvider,subagentPowerfulModel:r.subagentPowerfulModel,toolTags:r.toolTags?[...r.toolTags]:void 0};return n.push(a),await Cr(e,n),a}async function jr(e,t,n,r,i){let a=await Sr(e),o=a.find(e=>e.groupId===t);o&&(n?o.pinnedProvider=n:delete o.pinnedProvider,r?o.pinnedModel=r:delete o.pinnedModel,typeof i==`number`&&Number.isFinite(i)&&i>0?o.pinnedMaxTokens=Math.floor(i):delete o.pinnedMaxTokens),await Cr(e,a)}async function Mr(e,t,n,r,i,a){let o=await Sr(e),s=o.find(e=>e.groupId===t);s&&(s.subagentModelSelectionMode=n,n===`manual`?(r?s.subagentPinnedProvider=r:delete s.subagentPinnedProvider,i?s.subagentPinnedModel=i:delete s.subagentPinnedModel):(delete s.subagentPinnedProvider,delete s.subagentPinnedModel),typeof a==`number`&&Number.isFinite(a)&&a>0?s.subagentMaxTokens=Math.floor(a):delete s.subagentMaxTokens),await Cr(e,o)}async function Nr(e,t,n){let r=await Sr(e),i=r.find(e=>e.groupId===t);i&&(n&&Object.keys(n).length>0?i.providerRuntimeOverrides=JSON.parse(JSON.stringify(n)):delete i.providerRuntimeOverrides),await Cr(e,r)}const Pr={id:`__builtin_default`,name:`Default`,providerId:`prompt_api`,enabledToolNames:[`javascript`,`list_files`,`open_file`,`read_file`,`write_file`],customTools:[],systemPromptOverride:"You are a helpful coding assistant.\nContent intended to be rendered as a `Page` (HTML or Markdown) SHOULD include frontmatter (title, created, updated, and slug).\nHTML content intended to be rendered as a `Page` SHOULD USE `<article><h2>${subTitle}</h2>...</article>` for its main body content."},Fr=new class{_activeProfile;_activeProfileId;_allTools;_customTools;_declarativeTools;_declarativeToolNamesEnabled;_enabledDeclarativeTools;_enabledToolNames;_enabledTools;_profiles;_systemPromptOverride;_webSearchProxyUrl;_webSearchUrl;_webSearchUseProxy;_searchFilesMaxFileBytes;_searchFilesMaxFilesVisited;_searchFilesSkipDirs;constructor(){this._enabledToolNames=new A.State(new Set(Pr.enabledToolNames)),this._customTools=new A.State([]),this._declarativeTools=new A.State([]),this._declarativeToolNamesEnabled=new A.State(null),this._systemPromptOverride=new A.State(``),this._profiles=new A.State([]),this._activeProfileId=new A.State(Pr.id),this._webSearchUseProxy=new A.State(!1),this._webSearchProxyUrl=new A.State(`/proxy`),this._webSearchUrl=new A.State(`https://html.duckduckgo.com/html/?q={query}`),this._searchFilesMaxFileBytes=new A.State(524288),this._searchFilesMaxFilesVisited=new A.State(1e3),this._searchFilesSkipDirs=new A.State(`.git,node_modules,dist,dist-electron,.cache,.nx,.turbo,__pycache__,.venv,venv`),this._allTools=new A.Computed(()=>[...sn,...this._customTools.get()]),this._enabledTools=new A.Computed(()=>{let e=this._enabledToolNames.get();return this._allTools.get().filter(t=>e.has(t.name))}),this._enabledDeclarativeTools=new A.Computed(()=>{let e=this._declarativeTools.get(),t=this._declarativeToolNamesEnabled.get();return t===null?e:e.filter(e=>t.has(e.name))}),this._activeProfile=new A.Computed(()=>{let e=this._activeProfileId.get();return e?Pr.id===e?Pr:this._profiles.get().find(t=>t.id===e)||null:null})}get activeProfile(){return this._activeProfile.get()}get activeProfileId(){return this._activeProfileId.get()}get allTools(){return this._allTools.get()}get customTools(){return this._customTools.get()}get declarativeTools(){return this._declarativeTools.get()}get declarativeToolNamesEnabled(){return this._declarativeToolNamesEnabled.get()}get enabledDeclarativeTools(){return this._enabledDeclarativeTools.get()}get enabledToolNames(){return this._enabledToolNames.get()}get enabledTools(){return this._enabledTools.get()}isDeclarativeToolEnabled(e){let t=this._declarativeToolNamesEnabled.get();return t===null||t.has(e)}async refreshDeclarativeTools(e,t){try{let n=await $t(e,t||`br:main`),r=this.allTools,i=(n?.tools||[]).filter(e=>!r.some(t=>t.name===e.name)),a=this._declarativeTools.get();return a.length===i.length&&a.every((e,t)=>e.name===i[t].name&&e.description===i[t].description&&JSON.stringify(e.execution)===JSON.stringify(i[t].execution))||this._declarativeTools.set(i),i}catch{return this._declarativeTools.get().length>0&&this._declarativeTools.set([]),[]}}async setDeclarativeToolEnabled(e,t,n){let r=this._declarativeToolNamesEnabled.get(),i=this._declarativeTools.get(),a=new Set(r===null?i.map(e=>e.name):r);n?a.add(t):a.delete(t),this._declarativeToolNamesEnabled.set(a),await D(e,S.DECLARATIVE_TOOLS_ENABLED,Array.from(a))}async setAllDeclarativeEnabled(e,t){let n=new Set(t);this._declarativeToolNamesEnabled.set(n),await D(e,S.DECLARATIVE_TOOLS_ENABLED,t)}async fetchRemoteDiscoveryManifest(e){return await cn(e)}async importFromRemoteSite(e,t,n,r){let i=r?.groupId||`br:main`,a=await nn(e,i,t,n,r);return await this.refreshDeclarativeTools(e,i),a}exportBackup(){return JSON.stringify({enabledTools:[...this._enabledToolNames.get()],customTools:this._customTools.get(),declarativeToolsEnabled:this._declarativeToolNamesEnabled.get()?Array.from(this._declarativeToolNamesEnabled.get()):null,systemPromptOverride:this._systemPromptOverride.get(),profiles:this._profiles.get(),activeProfileId:this._activeProfileId.get(),webSearchUseProxy:this._webSearchUseProxy.get(),webSearchProxyUrl:this._webSearchProxyUrl.get(),webSearchUrl:this._webSearchUrl.get(),searchFilesMaxFileBytes:this._searchFilesMaxFileBytes.get(),searchFilesMaxFilesVisited:this._searchFilesMaxFilesVisited.get(),searchFilesSkipDirs:this._searchFilesSkipDirs.get()},null,2)}findProfilesForProvider(e,t){return this.profiles.filter(n=>!(n.providerId&&n.providerId!==e||n.model&&n.model!==t))}get profiles(){return[Pr,...this._profiles.get()]}get systemPromptOverride(){return this._systemPromptOverride.get()}get webSearchProxyUrl(){return this._webSearchProxyUrl.get()}get webSearchUrl(){return this._webSearchUrl.get()}get webSearchUseProxy(){return this._webSearchUseProxy.get()}get searchFilesMaxFileBytes(){return this._searchFilesMaxFileBytes.get()}get searchFilesMaxFilesVisited(){return this._searchFilesMaxFilesVisited.get()}get searchFilesSkipDirs(){return this._searchFilesSkipDirs.get()}get searchFilesSkipDirsSet(){return new Set(this._searchFilesSkipDirs.get().split(`,`).map(e=>e.trim()).filter(Boolean))}async activateProfile(e,t){let n=this.profiles.find(e=>e.id===t);n&&(this._activeProfileId.set(t),this._enabledToolNames.set(new Set(n.enabledToolNames)),this._customTools.set(n.customTools),this._systemPromptOverride.set(n.systemPromptOverride||``),await Promise.all([D(e,S.ACTIVE_TOOL_PROFILE,t),D(e,S.ENABLED_TOOLS,n.enabledToolNames),D(e,S.CUSTOM_TOOLS,n.customTools),D(e,S.SYSTEM_PROMPT_OVERRIDE,n.systemPromptOverride||``)]))}async addCustomTool(e,t){let n=[...this._customTools.get(),t];this._customTools.set(n);let r=new Set(this._enabledToolNames.get());r.add(t.name),this._enabledToolNames.set(r),await Promise.all([D(e,S.CUSTOM_TOOLS,n),D(e,S.ENABLED_TOOLS,[...r])])}async addProfile(e,t){let n=[...this._profiles.get(),t];this._profiles.set(n),await D(e,S.TOOL_PROFILES,n)}async cloneTool(e,t,n,r){let i=this.allTools.find(e=>e.name===t);if(!i||this.allTools.some(e=>e.name===n))return!1;let a={name:n,description:r||i.description,input_schema:JSON.parse(JSON.stringify(i.input_schema))};return await this.addCustomTool(e,a),!0}async deactivateProfile(e){this._activeProfileId.set(null),await D(e,S.ACTIVE_TOOL_PROFILE,null)}async deleteProfile(e,t){if(t===Pr.id)return;let n=this._profiles.get().filter(e=>e.id!==t);this._profiles.set(n),this._activeProfileId.get()===t&&(this._activeProfileId.set(null),await D(e,S.ACTIVE_TOOL_PROFILE,null)),await D(e,S.TOOL_PROFILES,n)}async importBackup(e,t){let n=JSON.parse(t);Array.isArray(n.enabledTools)&&(this._enabledToolNames.set(new Set(n.enabledTools)),await D(e,S.ENABLED_TOOLS,n.enabledTools)),Array.isArray(n.customTools)&&(this._customTools.set(n.customTools),await D(e,S.CUSTOM_TOOLS,n.customTools)),typeof n.systemPromptOverride==`string`&&(this._systemPromptOverride.set(n.systemPromptOverride),await D(e,S.SYSTEM_PROMPT_OVERRIDE,n.systemPromptOverride)),Array.isArray(n.profiles)&&(this._profiles.set(n.profiles),await D(e,S.TOOL_PROFILES,n.profiles)),(typeof n.activeProfileId==`string`||n.activeProfileId===null)&&(this._activeProfileId.set(n.activeProfileId),await D(e,S.ACTIVE_TOOL_PROFILE,n.activeProfileId)),typeof n.webSearchUseProxy==`boolean`&&(this._webSearchUseProxy.set(n.webSearchUseProxy),await D(e,S.WEB_SEARCH_USE_PROXY,n.webSearchUseProxy?`true`:`false`)),typeof n.webSearchProxyUrl==`string`&&(this._webSearchProxyUrl.set(n.webSearchProxyUrl),await D(e,S.WEB_SEARCH_PROXY_URL,n.webSearchProxyUrl)),typeof n.webSearchUrl==`string`&&(this._webSearchUrl.set(n.webSearchUrl),await D(e,S.WEB_SEARCH_URL,n.webSearchUrl)),typeof n.searchFilesMaxFileBytes==`number`&&n.searchFilesMaxFileBytes>0&&(this._searchFilesMaxFileBytes.set(n.searchFilesMaxFileBytes),await D(e,S.SEARCH_FILES_MAX_FILE_BYTES,String(n.searchFilesMaxFileBytes))),typeof n.searchFilesMaxFilesVisited==`number`&&n.searchFilesMaxFilesVisited>0&&(this._searchFilesMaxFilesVisited.set(n.searchFilesMaxFilesVisited),await D(e,S.SEARCH_FILES_MAX_FILES_VISITED,String(n.searchFilesMaxFilesVisited))),typeof n.searchFilesSkipDirs==`string`&&(this._searchFilesSkipDirs.set(n.searchFilesSkipDirs),await D(e,S.SEARCH_FILES_SKIP_DIRS,n.searchFilesSkipDirs)),Array.isArray(n.declarativeToolsEnabled)?(this._declarativeToolNamesEnabled.set(new Set(n.declarativeToolsEnabled)),await D(e,S.DECLARATIVE_TOOLS_ENABLED,n.declarativeToolsEnabled)):n.declarativeToolsEnabled===null&&(this._declarativeToolNamesEnabled.set(null),await D(e,S.DECLARATIVE_TOOLS_ENABLED,null))}async load(e){let[t,n,r,i,a,o,s,c,l,u,d,f]=await Promise.all([C(e,S.ENABLED_TOOLS),C(e,S.CUSTOM_TOOLS),C(e,S.SYSTEM_PROMPT_OVERRIDE),C(e,S.TOOL_PROFILES),C(e,S.ACTIVE_TOOL_PROFILE),C(e,S.WEB_SEARCH_USE_PROXY),C(e,S.WEB_SEARCH_PROXY_URL),C(e,S.WEB_SEARCH_URL),C(e,S.SEARCH_FILES_MAX_FILE_BYTES),C(e,S.SEARCH_FILES_MAX_FILES_VISITED),C(e,S.SEARCH_FILES_SKIP_DIRS),C(e,S.DECLARATIVE_TOOLS_ENABLED)]);if(Array.isArray(t)&&this._enabledToolNames.set(new Set(t)),Array.isArray(n)&&this._customTools.set(n),Array.isArray(f)&&this._declarativeToolNamesEnabled.set(new Set(f)),typeof r==`string`&&this._systemPromptOverride.set(r),Array.isArray(i)&&this._profiles.set(i),typeof a==`string`&&this._activeProfileId.set(a),o!=null){let e=String(o).toLowerCase();this._webSearchUseProxy.set(e===`true`||e===`1`)}if(typeof s==`string`&&s.trim().length>0&&this._webSearchProxyUrl.set(s.trim()),typeof c==`string`&&c.trim().length>0&&this._webSearchUrl.set(c.trim()),l!=null){let e=Number(l);Number.isFinite(e)&&e>0&&this._searchFilesMaxFileBytes.set(e)}if(u!=null){let e=Number(u);Number.isFinite(e)&&e>0&&this._searchFilesMaxFilesVisited.set(e)}typeof d==`string`&&d.trim().length>0&&this._searchFilesSkipDirs.set(d.trim())}async setWebSearchProxyUrl(e,t){let n=t.trim()||`/proxy`;this._webSearchProxyUrl.set(n),await D(e,S.WEB_SEARCH_PROXY_URL,n)}async setWebSearchUrl(e,t){let n=t.trim()||`https://html.duckduckgo.com/html/?q={query}`;this._webSearchUrl.set(n),await D(e,S.WEB_SEARCH_URL,n)}async setWebSearchUseProxy(e,t){let n=!!t;this._webSearchUseProxy.set(n),await D(e,S.WEB_SEARCH_USE_PROXY,n?`true`:`false`)}async setSearchFilesMaxFileBytes(e,t){let n=Math.max(1,Math.round(t));this._searchFilesMaxFileBytes.set(n),await D(e,S.SEARCH_FILES_MAX_FILE_BYTES,String(n))}async setSearchFilesMaxFilesVisited(e,t){let n=Math.max(1,Math.round(t));this._searchFilesMaxFilesVisited.set(n),await D(e,S.SEARCH_FILES_MAX_FILES_VISITED,String(n))}async setSearchFilesSkipDirs(e,t){let n=t.trim();this._searchFilesSkipDirs.set(n),await D(e,S.SEARCH_FILES_SKIP_DIRS,n)}async removeCustomTool(e,t){let n=this._customTools.get().filter(e=>e.name!==t);this._customTools.set(n);let r=new Set(this._enabledToolNames.get());r.delete(t),this._enabledToolNames.set(r),await Promise.all([D(e,S.CUSTOM_TOOLS,n),D(e,S.ENABLED_TOOLS,[...r])])}async saveToActiveProfile(e){let t=this._activeProfileId.get();if(!t)return;let n=this._profiles.get().find(e=>e.id===t);if(!n)return;let r={...n,enabledToolNames:[...this._enabledToolNames.get()],customTools:[...this._customTools.get()],systemPromptOverride:this._systemPromptOverride.get()};await this.updateProfile(e,r)}async setAllEnabled(e,t){this._enabledToolNames.set(new Set(t));let n=[D(e,S.ENABLED_TOOLS,t)];this._activeProfileId.get()&&(this._activeProfileId.set(null),n.push(D(e,S.ACTIVE_TOOL_PROFILE,null))),await Promise.all(n)}async setSystemPromptOverride(e,t){this._systemPromptOverride.set(t),await D(e,S.SYSTEM_PROMPT_OVERRIDE,t)}async setToolEnabled(e,t,n){let r=new Set(this._enabledToolNames.get());n?r.add(t):r.delete(t),this._enabledToolNames.set(r);let i=[D(e,S.ENABLED_TOOLS,[...r])];this._activeProfileId.get()&&(this._activeProfileId.set(null),i.push(D(e,S.ACTIVE_TOOL_PROFILE,null))),await Promise.all(i)}async updateProfile(e,t){let n=this._profiles.get().map(e=>e.id===t.id?t:e);this._profiles.set(n),await D(e,S.TOOL_PROFILES,n)}},Ir=[/<\|start_header_id\|>\s*(?:system|user|assistant|tool)\s*<\|end_header_id\|>/gi,/<\|(?:begin_of_text|end_of_text|eot_id|im_start|im_end|end_of_message)\|>/gi,/<\|(?:startofturn|endofturn|start_of_turn|end_of_turn)\|>/gi,/<\|(?:image|audio|video|tool_call|tool_response|tool_result|function_call)\|>|<\|\/function_call\|>/gi,/<|(?:system|user|assistant|im_start|im_end)|>/g,/\[\s*INST\s*\]|\[\s*\/INST\s*\]|<<\s*SYS\s*>>|<<\s*\/SYS\s*>>/gi,/<\/?s>|<\/?bos>|<\/?eos>|<\|(?:bos|eos|pad|unk)\|>/gi,/<\|(?:START_OF_TURN_TOKEN|END_OF_TURN_TOKEN|CHATBOT_TOKEN|USER_TOKEN|SYSTEM_TOKEN)\|>/gi,/<\|(?:system|user|assistant|end|endoftext|placeholder\d*)\|>/gi,/<|(?:begin▁of▁sentence|end▁of▁sentence)|>/g,/<\|start\|>\s*(?:system|user|assistant|tool)\s*<\|message\|>/gi];function Lr(e){for(let t of Ir)if(t.test(e))return!0;return!1}function Rr(e){let t=String(e||``),n=t;for(let e of Ir)t=t.replace(e,``);return t!==n&&(t=t.replace(/^[ \t]+$/gm,``),t=t.replace(/\n{3,}/g,`
59
+ `),r=n>t*.5?n:t;return`${e.slice(0,r)}\n[...truncated ${e.length-r} chars]`}function gr(e,t){let{contextLimit:n,systemPromptTokens:r,maxOutputTokens:i,skimTop:a=!1}=t;if(e.length===0)return{messages:[],estimatedTokens:0,truncatedCount:0,contextLimit:n,usagePercent:0};let o=Math.max(0,n-r-i),s=Math.min(25e3,Math.max(1e3,Math.floor(o*.6*4))),c=e.map(e=>_r(e,s)),l=0,u=c.length,d=null,f=0;if(a&&c.length>0){let e=c[0];(e.role===`user`||e.role===`system`)&&(f=mr(e),f<=o&&(d=e))}let p=o-f;for(let e=c.length-1;e>=+!!d;e--){let t=mr(c[e]),n=c[e],r=!1;if(n.role===`user`&&Array.isArray(n.content)&&n.content.some(e=>e.type===`tool_result`)){let n=c[e-1];n&&n.role===`assistant`&&Array.isArray(n.content)&&n.content.some(e=>e.type===`tool_use`)&&(r=!0,t+=mr(n))}if(l+t>p&&e<c.length-1)break;l+=t,r?(u=e-1,e--):u=e}let m=c.slice(u),h=u;d&&u>0&&(m=[d,...m],h=Math.max(0,u-1));let g=l+f,_=g+r,v=n>0?Math.round(_/n*100*10)/10:0;return{messages:m,estimatedTokens:g,truncatedCount:h,contextLimit:n,usagePercent:v}}function _r(e,t){if(!Array.isArray(e.content))return e;let n=e.content.map(e=>e.type===`tool_result`&&typeof e.content==`string`?{...e,content:hr(e.content,t)}:e);return{...e,content:n}}function vr(e,t,n){let r=null,i,a;return typeof e==`string`?(i=e,a=t):(r=e,i=t,a=n??50),r&&ye(r)?Promise.resolve().then(()=>(r.db.prepare(`SELECT * FROM messages WHERE groupId = ? ORDER BY timestamp DESC LIMIT ?`).all(i,a)??[]).reverse().map(yr)):new Promise(async(e,t)=>{try{let n=r??await ve();if(!n)return t(/* @__PURE__ */ Error(`failed to get transaction, cannot get recent messages.`));let o=n.transaction(`messages`,`readonly`);if(!o)return t(/* @__PURE__ */ Error(`failed to get transaction`));let s=o.objectStore(`messages`).index(`by-group-time`),c=IDBKeyRange.bound([i,0],[i,1/0]),l=s.openCursor(c,`prev`),u=[];l.onsuccess=()=>{let t=l.result;t&&u.length<a?(u.push(t.value),t.continue()):e(u.reverse())},l.onerror=()=>t(l.error)}catch(e){t(e)}})}function yr(e){return{...e,isFromMe:!!e.isFromMe,isTrigger:!!e.isTrigger,attachments:e.attachments?JSON.parse(e.attachments):void 0,a2uiAction:e.a2uiAction?JSON.parse(e.a2uiAction):void 0,a2uiEnvelopes:e.a2uiEnvelopes?JSON.parse(e.a2uiEnvelopes):void 0}}async function br(e,t){let n=await vr(e,t),r=await ve();return await Promise.all(n.map(async t=>{if(t.isFromMe)return{role:`assistant`,content:t.content};let n=`${t.sender}: ${t.content}`,i=t.attachments||[];if(i.length===0)return{role:`user`,content:n};let a=await Ae(i,async t=>!r||!t.path?null:Me(r,e,t.path));return a.length===0?{role:`user`,content:n}:{role:`user`,content:[{type:`text`,text:n},...a]}}))}const xr=`group_metadata`;async function Sr(e){let t=await C(e,xr);if(!t)return[];try{return JSON.parse(t)}catch{return[]}}async function Cr(e,t){await D(e,xr,JSON.stringify(t))}async function wr(e,t,n=`br:`,r){let i=await Sr(e),a={groupId:`${n}${r??s()}`,name:t,createdAt:Date.now()};return i.push(a),await Cr(e,i),a}async function Tr(e,t,n){let r=await Sr(e),i=r.find(e=>e.groupId===t);i&&(i.name=n),await Cr(e,r)}async function Er(e,t,n){let r=await Sr(e),i=r.find(e=>e.groupId===t);i&&(n&&n.length>0?i.toolTags=n:delete i.toolTags),await Cr(e,r)}async function Dr(e,t){await Cr(e,(await Sr(e)).filter(e=>e.groupId!==t))}async function Or(e){let t=await Sr(e);if(t.length===0){let t={groupId:x,name:`Main`,createdAt:0};return await Cr(e,[t]),[t]}return t}async function kr(e,t){let n=await Sr(e),r=new Map(n.map(e=>[e.groupId,e])),i=[];for(let e of t){let t=r.get(e);t&&(i.push(t),r.delete(e))}for(let e of n)r.has(e.groupId)&&i.push(e);await Cr(e,i)}async function Ar(e,t){let n=await Sr(e),r=n.find(e=>e.groupId===t);if(!r)return null;let i=t.indexOf(`:`),a={groupId:`${i>=0?t.slice(0,i+1):`br:`}${s()}`,name:`${r.name} (copy)`,createdAt:Date.now(),pinnedMaxTokens:r.pinnedMaxTokens,providerRuntimeOverrides:r.providerRuntimeOverrides?JSON.parse(JSON.stringify(r.providerRuntimeOverrides)):void 0,subagentModelSelectionMode:r.subagentModelSelectionMode,subagentMaxTokens:r.subagentMaxTokens,subagentPinnedProvider:r.subagentPinnedProvider,subagentPinnedModel:r.subagentPinnedModel,subagentFastProvider:r.subagentFastProvider,subagentFastModel:r.subagentFastModel,subagentSmartProvider:r.subagentSmartProvider,subagentSmartModel:r.subagentSmartModel,subagentPowerfulProvider:r.subagentPowerfulProvider,subagentPowerfulModel:r.subagentPowerfulModel,toolTags:r.toolTags?[...r.toolTags]:void 0};return n.push(a),await Cr(e,n),a}async function jr(e,t,n,r,i){let a=await Sr(e),o=a.find(e=>e.groupId===t);o&&(n?o.pinnedProvider=n:delete o.pinnedProvider,r?o.pinnedModel=r:delete o.pinnedModel,typeof i==`number`&&Number.isFinite(i)&&i>0?o.pinnedMaxTokens=Math.floor(i):delete o.pinnedMaxTokens),await Cr(e,a)}async function Mr(e,t,n,r,i,a){let o=await Sr(e),s=o.find(e=>e.groupId===t);s&&(s.subagentModelSelectionMode=n,n===`manual`?(r?s.subagentPinnedProvider=r:delete s.subagentPinnedProvider,i?s.subagentPinnedModel=i:delete s.subagentPinnedModel):(delete s.subagentPinnedProvider,delete s.subagentPinnedModel),typeof a==`number`&&Number.isFinite(a)&&a>0?s.subagentMaxTokens=Math.floor(a):delete s.subagentMaxTokens),await Cr(e,o)}async function Nr(e,t,n){let r=await Sr(e),i=r.find(e=>e.groupId===t);i&&(n&&Object.keys(n).length>0?i.providerRuntimeOverrides=JSON.parse(JSON.stringify(n)):delete i.providerRuntimeOverrides),await Cr(e,r)}const Pr={id:`__builtin_default`,name:`Default`,providerId:`prompt_api`,enabledToolNames:[`javascript`,`list_files`,`open_file`,`read_file`,`write_file`],customTools:[],systemPromptOverride:"You are a helpful coding assistant.\nContent intended to be rendered as a `Page` (HTML or Markdown) SHOULD include frontmatter (title, created, updated, and slug).\nHTML content intended to be rendered as a `Page` SHOULD USE `<article><h2>${subTitle}</h2>...</article>` for its main body content."},Fr=new class{_activeProfile;_activeProfileId;_allTools;_customTools;_declarativeTools;_declarativeToolNamesEnabled;_enabledDeclarativeTools;_enabledToolNames;_enabledTools;_profiles;_systemPromptOverride;_webSearchProxyUrl;_webSearchUrl;_webSearchUseProxy;_searchFilesMaxFileBytes;_searchFilesMaxFilesVisited;_searchFilesSkipDirs;constructor(){this._enabledToolNames=new A.State(new Set(Pr.enabledToolNames)),this._customTools=new A.State([]),this._declarativeTools=new A.State([]),this._declarativeToolNamesEnabled=new A.State(null),this._systemPromptOverride=new A.State(``),this._profiles=new A.State([]),this._activeProfileId=new A.State(Pr.id),this._webSearchUseProxy=new A.State(!1),this._webSearchProxyUrl=new A.State(`/proxy`),this._webSearchUrl=new A.State(`https://html.duckduckgo.com/html/?q={query}`),this._searchFilesMaxFileBytes=new A.State(524288),this._searchFilesMaxFilesVisited=new A.State(1e3),this._searchFilesSkipDirs=new A.State(`.git,node_modules,dist,dist-electron,.cache,.nx,.turbo,__pycache__,.venv,venv`),this._allTools=new A.Computed(()=>[...sn,...this._customTools.get()]),this._enabledTools=new A.Computed(()=>{let e=this._enabledToolNames.get();return this._allTools.get().filter(t=>e.has(t.name))}),this._enabledDeclarativeTools=new A.Computed(()=>{let e=this._declarativeTools.get(),t=this._declarativeToolNamesEnabled.get();return!t||t.size===0?[]:e.filter(e=>t.has(e.name))}),this._activeProfile=new A.Computed(()=>{let e=this._activeProfileId.get();return e?Pr.id===e?Pr:this._profiles.get().find(t=>t.id===e)||null:null})}get activeProfile(){return this._activeProfile.get()}get activeProfileId(){return this._activeProfileId.get()}get allTools(){return this._allTools.get()}get customTools(){return this._customTools.get()}get declarativeTools(){return this._declarativeTools.get()}get declarativeToolNamesEnabled(){return this._declarativeToolNamesEnabled.get()}get enabledDeclarativeTools(){return this._enabledDeclarativeTools.get()}get enabledToolNames(){return this._enabledToolNames.get()}get enabledTools(){return this._enabledTools.get()}isDeclarativeToolEnabled(e){let t=this._declarativeToolNamesEnabled.get();return t?t.has(e):!1}async refreshDeclarativeTools(e,t){try{let n=await $t(e,t||`br:main`),r=this.allTools,i=(n?.tools||[]).filter(e=>!r.some(t=>t.name===e.name)),a=this._declarativeTools.get();return a.length===i.length&&a.every((e,t)=>e.name===i[t].name&&e.description===i[t].description&&JSON.stringify(e.execution)===JSON.stringify(i[t].execution))||this._declarativeTools.set(i),i}catch{return this._declarativeTools.get().length>0&&this._declarativeTools.set([]),[]}}async setDeclarativeToolEnabled(e,t,n){let r=this._declarativeToolNamesEnabled.get(),i=new Set(r===null?[]:r);n?i.add(t):i.delete(t),this._declarativeToolNamesEnabled.set(i),await D(e,S.DECLARATIVE_TOOLS_ENABLED,Array.from(i))}async setAllDeclarativeEnabled(e,t){let n=new Set(t);this._declarativeToolNamesEnabled.set(n),await D(e,S.DECLARATIVE_TOOLS_ENABLED,t)}async fetchRemoteDiscoveryManifest(e){return await cn(e)}async importFromRemoteSite(e,t,n,r){let i=r?.groupId||`br:main`,a=await nn(e,i,t,n,r);return await this.refreshDeclarativeTools(e,i),a}exportBackup(){return JSON.stringify({enabledTools:[...this._enabledToolNames.get()],customTools:this._customTools.get(),declarativeToolsEnabled:this._declarativeToolNamesEnabled.get()?Array.from(this._declarativeToolNamesEnabled.get()):null,systemPromptOverride:this._systemPromptOverride.get(),profiles:this._profiles.get(),activeProfileId:this._activeProfileId.get(),webSearchUseProxy:this._webSearchUseProxy.get(),webSearchProxyUrl:this._webSearchProxyUrl.get(),webSearchUrl:this._webSearchUrl.get(),searchFilesMaxFileBytes:this._searchFilesMaxFileBytes.get(),searchFilesMaxFilesVisited:this._searchFilesMaxFilesVisited.get(),searchFilesSkipDirs:this._searchFilesSkipDirs.get()},null,2)}findProfilesForProvider(e,t){return this.profiles.filter(n=>!(n.providerId&&n.providerId!==e||n.model&&n.model!==t))}get profiles(){return[Pr,...this._profiles.get()]}get systemPromptOverride(){return this._systemPromptOverride.get()}get webSearchProxyUrl(){return this._webSearchProxyUrl.get()}get webSearchUrl(){return this._webSearchUrl.get()}get webSearchUseProxy(){return this._webSearchUseProxy.get()}get searchFilesMaxFileBytes(){return this._searchFilesMaxFileBytes.get()}get searchFilesMaxFilesVisited(){return this._searchFilesMaxFilesVisited.get()}get searchFilesSkipDirs(){return this._searchFilesSkipDirs.get()}get searchFilesSkipDirsSet(){return new Set(this._searchFilesSkipDirs.get().split(`,`).map(e=>e.trim()).filter(Boolean))}async activateProfile(e,t){let n=this.profiles.find(e=>e.id===t);n&&(this._activeProfileId.set(t),this._enabledToolNames.set(new Set(n.enabledToolNames)),this._customTools.set(n.customTools),this._systemPromptOverride.set(n.systemPromptOverride||``),await Promise.all([D(e,S.ACTIVE_TOOL_PROFILE,t),D(e,S.ENABLED_TOOLS,n.enabledToolNames),D(e,S.CUSTOM_TOOLS,n.customTools),D(e,S.SYSTEM_PROMPT_OVERRIDE,n.systemPromptOverride||``)]))}async addCustomTool(e,t){let n=[...this._customTools.get(),t];this._customTools.set(n);let r=new Set(this._enabledToolNames.get());r.add(t.name),this._enabledToolNames.set(r),await Promise.all([D(e,S.CUSTOM_TOOLS,n),D(e,S.ENABLED_TOOLS,[...r])])}async addProfile(e,t){let n=[...this._profiles.get(),t];this._profiles.set(n),await D(e,S.TOOL_PROFILES,n)}async cloneTool(e,t,n,r){let i=this.allTools.find(e=>e.name===t);if(!i||this.allTools.some(e=>e.name===n))return!1;let a={name:n,description:r||i.description,input_schema:JSON.parse(JSON.stringify(i.input_schema))};return await this.addCustomTool(e,a),!0}async deactivateProfile(e){this._activeProfileId.set(null),await D(e,S.ACTIVE_TOOL_PROFILE,null)}async deleteProfile(e,t){if(t===Pr.id)return;let n=this._profiles.get().filter(e=>e.id!==t);this._profiles.set(n),this._activeProfileId.get()===t&&(this._activeProfileId.set(null),await D(e,S.ACTIVE_TOOL_PROFILE,null)),await D(e,S.TOOL_PROFILES,n)}async importBackup(e,t){let n=JSON.parse(t);Array.isArray(n.enabledTools)&&(this._enabledToolNames.set(new Set(n.enabledTools)),await D(e,S.ENABLED_TOOLS,n.enabledTools)),Array.isArray(n.customTools)&&(this._customTools.set(n.customTools),await D(e,S.CUSTOM_TOOLS,n.customTools)),typeof n.systemPromptOverride==`string`&&(this._systemPromptOverride.set(n.systemPromptOverride),await D(e,S.SYSTEM_PROMPT_OVERRIDE,n.systemPromptOverride)),Array.isArray(n.profiles)&&(this._profiles.set(n.profiles),await D(e,S.TOOL_PROFILES,n.profiles)),(typeof n.activeProfileId==`string`||n.activeProfileId===null)&&(this._activeProfileId.set(n.activeProfileId),await D(e,S.ACTIVE_TOOL_PROFILE,n.activeProfileId)),typeof n.webSearchUseProxy==`boolean`&&(this._webSearchUseProxy.set(n.webSearchUseProxy),await D(e,S.WEB_SEARCH_USE_PROXY,n.webSearchUseProxy?`true`:`false`)),typeof n.webSearchProxyUrl==`string`&&(this._webSearchProxyUrl.set(n.webSearchProxyUrl),await D(e,S.WEB_SEARCH_PROXY_URL,n.webSearchProxyUrl)),typeof n.webSearchUrl==`string`&&(this._webSearchUrl.set(n.webSearchUrl),await D(e,S.WEB_SEARCH_URL,n.webSearchUrl)),typeof n.searchFilesMaxFileBytes==`number`&&n.searchFilesMaxFileBytes>0&&(this._searchFilesMaxFileBytes.set(n.searchFilesMaxFileBytes),await D(e,S.SEARCH_FILES_MAX_FILE_BYTES,String(n.searchFilesMaxFileBytes))),typeof n.searchFilesMaxFilesVisited==`number`&&n.searchFilesMaxFilesVisited>0&&(this._searchFilesMaxFilesVisited.set(n.searchFilesMaxFilesVisited),await D(e,S.SEARCH_FILES_MAX_FILES_VISITED,String(n.searchFilesMaxFilesVisited))),typeof n.searchFilesSkipDirs==`string`&&(this._searchFilesSkipDirs.set(n.searchFilesSkipDirs),await D(e,S.SEARCH_FILES_SKIP_DIRS,n.searchFilesSkipDirs)),Array.isArray(n.declarativeToolsEnabled)?(this._declarativeToolNamesEnabled.set(new Set(n.declarativeToolsEnabled)),await D(e,S.DECLARATIVE_TOOLS_ENABLED,n.declarativeToolsEnabled)):n.declarativeToolsEnabled===null&&(this._declarativeToolNamesEnabled.set(null),await D(e,S.DECLARATIVE_TOOLS_ENABLED,null))}async load(e){let[t,n,r,i,a,o,s,c,l,u,d,f]=await Promise.all([C(e,S.ENABLED_TOOLS),C(e,S.CUSTOM_TOOLS),C(e,S.SYSTEM_PROMPT_OVERRIDE),C(e,S.TOOL_PROFILES),C(e,S.ACTIVE_TOOL_PROFILE),C(e,S.WEB_SEARCH_USE_PROXY),C(e,S.WEB_SEARCH_PROXY_URL),C(e,S.WEB_SEARCH_URL),C(e,S.SEARCH_FILES_MAX_FILE_BYTES),C(e,S.SEARCH_FILES_MAX_FILES_VISITED),C(e,S.SEARCH_FILES_SKIP_DIRS),C(e,S.DECLARATIVE_TOOLS_ENABLED)]);if(Array.isArray(t)&&this._enabledToolNames.set(new Set(t)),Array.isArray(n)&&this._customTools.set(n),Array.isArray(f)&&this._declarativeToolNamesEnabled.set(new Set(f)),typeof r==`string`&&this._systemPromptOverride.set(r),Array.isArray(i)&&this._profiles.set(i),typeof a==`string`&&this._activeProfileId.set(a),o!=null){let e=String(o).toLowerCase();this._webSearchUseProxy.set(e===`true`||e===`1`)}if(typeof s==`string`&&s.trim().length>0&&this._webSearchProxyUrl.set(s.trim()),typeof c==`string`&&c.trim().length>0&&this._webSearchUrl.set(c.trim()),l!=null){let e=Number(l);Number.isFinite(e)&&e>0&&this._searchFilesMaxFileBytes.set(e)}if(u!=null){let e=Number(u);Number.isFinite(e)&&e>0&&this._searchFilesMaxFilesVisited.set(e)}typeof d==`string`&&d.trim().length>0&&this._searchFilesSkipDirs.set(d.trim())}async setWebSearchProxyUrl(e,t){let n=t.trim()||`/proxy`;this._webSearchProxyUrl.set(n),await D(e,S.WEB_SEARCH_PROXY_URL,n)}async setWebSearchUrl(e,t){let n=t.trim()||`https://html.duckduckgo.com/html/?q={query}`;this._webSearchUrl.set(n),await D(e,S.WEB_SEARCH_URL,n)}async setWebSearchUseProxy(e,t){let n=!!t;this._webSearchUseProxy.set(n),await D(e,S.WEB_SEARCH_USE_PROXY,n?`true`:`false`)}async setSearchFilesMaxFileBytes(e,t){let n=Math.max(1,Math.round(t));this._searchFilesMaxFileBytes.set(n),await D(e,S.SEARCH_FILES_MAX_FILE_BYTES,String(n))}async setSearchFilesMaxFilesVisited(e,t){let n=Math.max(1,Math.round(t));this._searchFilesMaxFilesVisited.set(n),await D(e,S.SEARCH_FILES_MAX_FILES_VISITED,String(n))}async setSearchFilesSkipDirs(e,t){let n=t.trim();this._searchFilesSkipDirs.set(n),await D(e,S.SEARCH_FILES_SKIP_DIRS,n)}async removeCustomTool(e,t){let n=this._customTools.get().filter(e=>e.name!==t);this._customTools.set(n);let r=new Set(this._enabledToolNames.get());r.delete(t),this._enabledToolNames.set(r),await Promise.all([D(e,S.CUSTOM_TOOLS,n),D(e,S.ENABLED_TOOLS,[...r])])}async saveToActiveProfile(e){let t=this._activeProfileId.get();if(!t)return;let n=this._profiles.get().find(e=>e.id===t);if(!n)return;let r={...n,enabledToolNames:[...this._enabledToolNames.get()],customTools:[...this._customTools.get()],systemPromptOverride:this._systemPromptOverride.get()};await this.updateProfile(e,r)}async setAllEnabled(e,t){this._enabledToolNames.set(new Set(t));let n=[D(e,S.ENABLED_TOOLS,t)];this._activeProfileId.get()&&(this._activeProfileId.set(null),n.push(D(e,S.ACTIVE_TOOL_PROFILE,null))),await Promise.all(n)}async setSystemPromptOverride(e,t){this._systemPromptOverride.set(t),await D(e,S.SYSTEM_PROMPT_OVERRIDE,t)}async setToolEnabled(e,t,n){let r=new Set(this._enabledToolNames.get());n?r.add(t):r.delete(t),this._enabledToolNames.set(r);let i=[D(e,S.ENABLED_TOOLS,[...r])];this._activeProfileId.get()&&(this._activeProfileId.set(null),i.push(D(e,S.ACTIVE_TOOL_PROFILE,null))),await Promise.all(i)}async updateProfile(e,t){let n=this._profiles.get().map(e=>e.id===t.id?t:e);this._profiles.set(n),await D(e,S.TOOL_PROFILES,n)}},Ir=[/<\|start_header_id\|>\s*(?:system|user|assistant|tool)\s*<\|end_header_id\|>/gi,/<\|(?:begin_of_text|end_of_text|eot_id|im_start|im_end|end_of_message)\|>/gi,/<\|(?:startofturn|endofturn|start_of_turn|end_of_turn)\|>/gi,/<\|(?:image|audio|video|tool_call|tool_response|tool_result|function_call)\|>|<\|\/function_call\|>/gi,/<|(?:system|user|assistant|im_start|im_end)|>/g,/\[\s*INST\s*\]|\[\s*\/INST\s*\]|<<\s*SYS\s*>>|<<\s*\/SYS\s*>>/gi,/<\/?s>|<\/?bos>|<\/?eos>|<\|(?:bos|eos|pad|unk)\|>/gi,/<\|(?:START_OF_TURN_TOKEN|END_OF_TURN_TOKEN|CHATBOT_TOKEN|USER_TOKEN|SYSTEM_TOKEN)\|>/gi,/<\|(?:system|user|assistant|end|endoftext|placeholder\d*)\|>/gi,/<|(?:begin▁of▁sentence|end▁of▁sentence)|>/g,/<\|start\|>\s*(?:system|user|assistant|tool)\s*<\|message\|>/gi];function Lr(e){for(let t of Ir)if(t.test(e))return!0;return!1}function Rr(e){let t=String(e||``),n=t;for(let e of Ir)t=t.replace(e,``);return t!==n&&(t=t.replace(/^[ \t]+$/gm,``),t=t.replace(/\n{3,}/g,`
60
60
 
61
61
  `)),t}function zr(e,t){let n=Rr(e);return n!==e&&Lr(e)&&console.info(`[ShadowClaw] Chat-template control token(s) detected and stripped from "${t}" output. The provider or model may not be applying its chat template correctly. Original length: ${e.length}, cleaned length: ${n.length}.`),n}function Br(e,t,n,r){return{type:`thinking-log`,payload:{groupId:e,level:t,timestamp:Date.now(),label:n,message:r||``}}}function Vr(e,t,n){return{type:`tool-activity`,payload:{groupId:e,tool:t,status:n}}}const Hr=`keys`,Ur=`api-key-encryption`;function Wr(){return new Promise((e,t)=>{let n=indexedDB.open(`shadowclaw-keystore`,1);n.onupgradeneeded=()=>{n.result.createObjectStore(Hr)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}async function Gr(){let e=await Wr();if(!e)return null;let t=await new Promise((t,n)=>{let r=e.transaction(Hr,`readonly`).objectStore(Hr).get(Ur);r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error)});if(t)return e.close(),t;let n=await crypto.subtle.generateKey({name:`AES-GCM`,length:256},!1,[`encrypt`,`decrypt`]);try{await new Promise((t,r)=>{let i=e.transaction(Hr,`readwrite`);i.objectStore(Hr).put(n,Ur),i.oncomplete=()=>t(),i.onerror=()=>r(i.error)})}finally{e.close()}return n}async function Kr(e){let t=await Gr();if(!t)return null;let n=crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(12)),r=await crypto.subtle.encrypt({name:`AES-GCM`,iv:n},t,new TextEncoder().encode(e)),i=new Uint8Array(n.length+new Uint8Array(r).length);return i.set(n),i.set(new Uint8Array(r),n.length),btoa(String.fromCharCode(...i))}async function qr(e){let t=await Gr();if(!t)return null;let n=Uint8Array.from(atob(e),e=>e.charCodeAt(0)),r=n.slice(0,12),i=n.slice(12),a=await crypto.subtle.decrypt({name:`AES-GCM`,iv:r},t,i);return new TextDecoder().decode(a)}function Jr(e){return!e||e.authMode===`token`||e.authMode===`pat`?`token`:e.authMode===`basic`?`basic`:e.authMode===`oauth`||e.oauthProviderId||e.oauthClientId||e.oauthClientSecret||e.refreshToken||e.accessTokenExpiresAt||e.tokenType||e.oauthReauthRequired?`oauth`:`token`}function Yr(e){return Jr(e)}function Xr(e,t){return Yr(e)!==`oauth`||e.oauthReauthRequired||!e.refreshToken||!e.oauthProviderId||!e.oauthClientId?!1:t.forceRefresh?!0:e.accessTokenExpiresAt?e.accessTokenExpiresAt<=Date.now()+6e4:!1}async function Zr(e,t,n){if(!n.refreshToken||!n.oauthProviderId||!n.oauthClientId)return n;let r=await qr(n.refreshToken);if(!r)return n;let i=n.oauthClientSecret?await qr(n.oauthClientSecret):void 0,a=async r=>{let i=t.findIndex(e=>e.id===n.id);i!==-1&&(t[i]=r,await D(e,S.SERVICE_ACCOUNTS,t))},o=async()=>{let e=(n.oauthRefreshFailureCount||0)+1,t=e>=3,r={...n,oauthRefreshFailureCount:e,oauthReauthRequired:t,oauthReauthRequiredAt:t?n.oauthReauthRequiredAt||Date.now():void 0};return await a(r),r};try{let e=await fetch(`/oauth/refresh`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({providerId:n.oauthProviderId,clientId:n.oauthClientId,clientSecret:i,refreshToken:r,scope:n.scopes,tokenUrl:n.oauthCustomTokenUrl})});if(!e.ok)return o();let t=await e.json();if(!t.accessToken)return o();let s=await Kr(t.accessToken);if(!s)return o();let c=n.refreshToken;if(t.refreshToken){let e=await Kr(t.refreshToken);e&&(c=e)}let l={...n,token:s,refreshToken:c,accessTokenExpiresAt:t.expiresIn?Date.now()+t.expiresIn*1e3:n.accessTokenExpiresAt,tokenType:t.tokenType||n.tokenType,scopes:t.scope?t.scope.split(/[\s,]+/).map(e=>e.trim()).filter(Boolean):n.scopes,oauthRefreshFailureCount:0,oauthReauthRequired:!1,oauthReauthRequiredAt:void 0};return await a(l),l}catch{return o()}}function Qr(e,t){if(e.oauthProviderId){let t=me(e.oauthProviderId);if(t)return t}let n=[e.service,e.hostPattern,t].filter(e=>!!e).map(e=>e.toLowerCase());for(let e of Object.values(fe))if([e.providerId,...e.aliases||[]].map(e=>e.toLowerCase()).some(e=>n.some(t=>t.includes(e))))return e;return null}function $r(e,t){let n=Yr(e),r=Qr(e,t);if(r){let e;return e=n===`oauth`?r.tokenAuth.oauth:n===`basic`&&r.tokenAuth.basic?r.tokenAuth.basic:r.tokenAuth.token,{headerName:e.headerName,headerPrefix:e.headerPrefix||``}}return{headerName:`Authorization`,headerPrefix:n===`basic`?`Basic `:`Bearer `}}function ei(e,t){let n=[],r=-1,i=t.toLowerCase();for(let t of e){if(!t.hostPattern)continue;let e=t.hostPattern.toLowerCase();i.includes(e)&&(e.length>r?(r=e.length,n.length=0,n.push(t)):e.length===r&&n.push(t))}return n}function ti(e,t){return e.length?t&&e.find(e=>Yr(e)===t)||e[0]:void 0}async function ni(e,t,n={}){let r=await C(e,S.SERVICE_ACCOUNTS),i=Array.isArray(r)?r:[];if(i.length===0)return;let a;if(n.accountId&&(a=i.find(e=>e.id===n.accountId)),!a&&t){let e=ei(i,t);a=n.authMode?ti(e,n.authMode):ti(e,e[0]?Qr(e[0],t)?.defaultMode:void 0)}if(!a){let t=await C(e,S.SERVICE_DEFAULT_ACCOUNT);t&&(a=i.find(e=>e.id===t))}if(!a&&n.authMode&&(a=ti(i,n.authMode)),a||=i[0],!a)return;if(Xr(a,n)&&(a=await Zr(e,i,a)),Yr(a)===`oauth`&&a.oauthReauthRequired)return{token:``,service:a.service,hostPattern:a.hostPattern,headerName:`Authorization`,headerValue:``,accountId:a.id,authMode:`oauth`,reauthRequired:!0};let o=``;a.token&&(o=await qr(a.token)??``);let{headerName:s,headerPrefix:c}=$r(a,t),l=o;Yr(a)===`basic`&&a.basicUsername&&(l=btoa(`${a.basicUsername}:${o}`));let u=c?`${c}${l}`:l;return{token:o,service:a.service,hostPattern:a.hostPattern,headerName:s,headerValue:u,accountId:a.id,authMode:Yr(a)}}function ri(e){return Jr(e)}function ii(e){switch(e){case`azure-devops`:return`azure_devops`;default:return e}}function ai(e){if(!e)return`generic`;let t=e.toLowerCase();return t.includes(`github`)?`github`:t.includes(`dev.azure.com`)||t.includes(`visualstudio.com`)?`azure-devops`:t.includes(`gitlab`)?`gitlab`:`generic`}function oi(e){if(e.reauthRequired)return{};let t=e.provider||ai(e.hostPattern||``),n=ii(t),r=e.authMode||`token`;if(e.token&&n===`azure_devops`&&ae(n,r,`git_remote`)?.headerPrefix===`Basic `)return{Authorization:`Basic ${btoa(`:`+e.token)}`};if(t===`azure-devops`&&e.username&&e.password)return{Authorization:`Basic ${btoa(e.username+`:`+e.password)}`};if(e.token){let t=ae(n,r,`git_remote`);return t?.headerName?{[t.headerName]:`${t.headerPrefix||``}${e.token}`}:{Authorization:`Bearer ${e.token}`}}return{}}function si(e){try{let t=new URL(e),n=t.pathname.replace(/\/+$/,``);return n?t.hostname+n:t.hostname}catch{return}}function ci(e,t){let n=t.toLowerCase(),r=[],i=-1;for(let t of e){if(!t.hostPattern)continue;let e=t.hostPattern.toLowerCase();n.includes(e)&&(e.length>i?(i=e.length,r.length=0,r.push(t)):e.length===i&&r.push(t))}return r}function li(e,t){if(!e.length)return;if(!t)return e[0];let n=e.find(e=>ri(e)===t);if(n)return n;if(t===`token`){let t=e.find(e=>ri(e)===`token`&&!e.authMode);if(t)return t}return e[0]}async function ui(e){if(e)return await qr(e)??void 0}function di(e,t){return ri(e)!==`oauth`||e.oauthReauthRequired||!e.refreshToken||!e.oauthProviderId||!e.oauthClientId?!1:t.forceRefresh?!0:e.accessTokenExpiresAt?e.accessTokenExpiresAt<=Date.now()+6e4:!1}async function fi(e,t,n){if(!n.refreshToken||!n.oauthProviderId||!n.oauthClientId)return n;let r=await ui(n.refreshToken);if(!r)return n;let i=n.oauthClientSecret?await ui(n.oauthClientSecret):void 0,a=async r=>{let i=t.findIndex(e=>e.id===n.id);i!==-1&&(t[i]=r,await D(e,S.GIT_ACCOUNTS,t))},o=async()=>{let e=(n.oauthRefreshFailureCount||0)+1,t=e>=3,r={...n,oauthRefreshFailureCount:e,oauthReauthRequired:t,oauthReauthRequiredAt:t?n.oauthReauthRequiredAt||Date.now():void 0};return await a(r),r};try{let e=await fetch(`/oauth/refresh`,{body:JSON.stringify({clientId:n.oauthClientId,clientSecret:i,providerId:n.oauthProviderId,refreshToken:r,scope:n.scopes}),headers:{"content-type":`application/json`},method:`POST`});if(!e.ok)return o();let t=await e.json();if(!t.accessToken)return o();let s=await Kr(t.accessToken);if(!s)return o();let c=n.refreshToken;if(t.refreshToken){let e=await Kr(t.refreshToken);e&&(c=e)}let l={...n,token:s,refreshToken:c,accessTokenExpiresAt:t.expiresIn?Date.now()+t.expiresIn*1e3:n.accessTokenExpiresAt,tokenType:t.tokenType||n.tokenType,scopes:t.scope?t.scope.split(/[\s,]+/).map(e=>e.trim()).filter(Boolean):n.scopes,oauthRefreshFailureCount:0,oauthReauthRequired:!1,oauthReauthRequiredAt:void 0};return await a(l),l}catch{return o()}}async function pi(e,t,n={}){let r=await C(e,S.GIT_ACCOUNTS);return Array.isArray(r)&&r.length>0?mi(e,r,t,n):hi(e)}async function mi(e,t,n,r={}){let i;if(r.accountId&&(i=t.find(e=>e.id===r.accountId)),!i&&n){let e=si(n);e&&(i=li(ci(t,e),r.authMode))}if(!i){let r=await C(e,S.GIT_DEFAULT_ACCOUNT);if(r){let e=t.find(e=>e.id===r);if(e){if(!n)i=e;else{let t=si(n);if(t&&e.hostPattern){let n=t?.toLowerCase(),r=e.hostPattern.toLowerCase();n?.includes(r)&&(i=e)}}}}}if(!i&&!n&&r.authMode&&(i=li(t,r.authMode)),!i&&!n&&(i=t[0]),!i)return{authMode:`token`,authorEmail:void 0,authorName:void 0,password:void 0,provider:`generic`,token:void 0,username:void 0};di(i,r)&&(i=await fi(e,t,i));let a=i.provider||ai(i.hostPattern||``);return ri(i)===`oauth`&&i.oauthReauthRequired?{accountId:i.id,authMode:`oauth`,authorEmail:i.authorEmail||void 0,authorName:i.authorName||void 0,hostPattern:i.hostPattern||void 0,password:void 0,provider:a,reauthRequired:!0,token:void 0,username:i.username||void 0}:{accountId:i.id,authMode:ri(i),authorEmail:i.authorEmail||void 0,authorName:i.authorName||void 0,hostPattern:i.hostPattern||void 0,password:await ui(i.password),provider:a,token:await ui(i.token),username:i.username||void 0}}async function hi(e){let t=await C(e,S.GIT_TOKEN),n=await C(e,S.GIT_PASSWORD);return{authMode:`token`,authorEmail:await C(e,S.GIT_AUTHOR_EMAIL)||void 0,authorName:await C(e,S.GIT_AUTHOR_NAME)||void 0,password:n?await ui(n):void 0,provider:`generic`,token:t?await ui(t):void 0,username:await C(e,S.GIT_USERNAME)||void 0}}function gi(e){if(typeof e!=`string`||!e.trim())return!1;try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`}catch{return!1}}function _i(e,t){if(!e||typeof e!=`object`)return null;let n=e;if(!n.serviceType||!n.authType)return null;if(n.serviceType!==t)throw Error(`Credential ref serviceType must match connection serviceType`);return{serviceType:n.serviceType,authType:n.authType,providerId:n.providerId||void 0,accountId:n.accountId||void 0,gitAccountId:n.gitAccountId||void 0,headerName:n.headerName||void 0,encryptedValue:n.encryptedValue||void 0}}function vi(e){if(!e||typeof e!=`object`)return null;let t=e;return!t.id||!t.label||!t.serviceType||!t.transport||typeof t.enabled!=`boolean`||typeof t.createdAt!=`number`||typeof t.updatedAt!=`number`||!gi(t.serverUrl)||t.serviceType!==`mcp_remote`&&t.serviceType!==`webmcp_local`||t.transport!==`streamable_http`&&t.transport!==`sse`&&t.transport!==`websocket`?null:{id:t.id,label:t.label,serviceType:t.serviceType,serverUrl:t.serverUrl,transport:t.transport,enabled:t.enabled,autoReconnectOAuth:t.autoReconnectOAuth===!0,createdAt:t.createdAt,updatedAt:t.updatedAt,credentialRef:_i(t.credentialRef,t.serviceType)}}async function yi(e){let t=await C(e,S.REMOTE_MCP_CONNECTIONS);if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=vi(e);t&&n.push(t)}return n}async function bi(e){return yi(e)}async function xi(e,t){if(!t)return null;let n=await yi(e);return n.find(e=>e.id===t)||n.find(e=>e.label.toLowerCase()===t.toLowerCase())||null}function Si(e){return e===`oauth`?`oauth`:`token`}async function Ci(e,t,n={}){let r=await xi(e,t);if(!r)return null;let i=r.credentialRef;if(!i||i.authType===`none`)return{connection:r,authType:`none`,headers:{}};if(i.authType===`custom_header`){if(!i.headerName||!i.encryptedValue)return{connection:r,authType:`custom_header`,headers:{}};let e=await qr(i.encryptedValue);return{connection:r,authType:`custom_header`,headers:e?{[i.headerName]:e}:{}}}let a=Si(i.authType);if(i.accountId){let t=await ni(e,r.serverUrl,{accountId:i.accountId,authMode:a,forceRefresh:n.forceRefresh});return t?t.reauthRequired?{connection:r,authType:i.authType,headers:{},reauthRequired:!0}:{connection:r,authType:i.authType,headers:t.headerValue?{[t.headerName]:t.headerValue}:{}}:{connection:r,authType:i.authType,headers:{}}}if(i.gitAccountId){let t=await pi(e,r.serverUrl,{accountId:i.gitAccountId,authMode:a,forceRefresh:n.forceRefresh});return t.reauthRequired?{connection:r,authType:i.authType,headers:{},reauthRequired:!0}:{connection:r,authType:i.authType,headers:oi(t)}}return{connection:r,authType:i.authType,headers:{}}}const wi=/* @__PURE__ */ new Map;function Ti(e){return typeof e==`object`&&!!e&&`method`in e&&`id`in e&&!(`result`in e)&&!(`error`in e)}function Ei(e){let t=(e.requestedSchema||{}).properties||{},n={};for(let[e,r]of Object.entries(t))`default`in r?n[e]=r.default:r.type===`boolean`&&(n[e]=!0);return n}var Di=class extends Error{constructor(e){super(e),this.name=`InvalidRemoteMcpSessionError`}},Oi=class extends Error{status;constructor(e,t){super(t),this.name=`HttpRemoteMcpError`,this.status=e}},ki=class extends Error{connectionId;constructor(e){super(`OAuth reconnect required for remote MCP connection`),this.name=`McpReauthRequiredError`,this.connectionId=e}};function Ai(e,t){return!e.headers||typeof e.headers.get!=`function`?null:e.headers.get(t)}function ji(e){return/no valid session id provided/i.test(e)}function Mi(e,t){let n=t&&`error`in t?t.error.message||`Remote MCP JSON-RPC error`:``;return ji(n)?new Di(n):e.ok?Error(n||`Remote MCP JSON-RPC error`):new Oi(e.status,n?`Remote MCP HTTP error: ${e.status} (${n})`:`Remote MCP HTTP error: ${e.status}`)}function Ni(e){if(!e)return null;let t=null,n=e.split(/\r?\n/);for(let e of n){let n=e.trim();if(!n.startsWith(`data:`))continue;let r=n.slice(5).trim();if(r&&r!==`[DONE]`)try{let e=JSON.parse(r);e&&typeof e==`object`&&`jsonrpc`in e&&(t=e)}catch{}}return t}function Pi(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function Fi(e,t,n){let r=await fetch(e,{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json, text/event-stream`,...t},body:JSON.stringify(n)}),i=(Ai(r,`content-type`)||``).toLowerCase(),a=null;if(typeof r.text==`function`){let e=await r.text();a=i.includes(`text/event-stream`)?Ni(e):Pi(e)}else try{a=await r.json()}catch{a=null}return{response:r,payload:a}}async function Ii(e,t,n){let{response:r,payload:i}=await Fi(e,{...t,"mcp-session-id":n},{jsonrpc:`2.0`,method:`notifications/initialized`,params:{}});if(!r.ok||i&&`error`in i)throw Mi(r,i)}async function Li(e,t,n){let r=wi.get(e);if(r?.sessionId)return r;let{response:i,payload:a}=await Fi(t,n,{jsonrpc:`2.0`,id:`initialize-${Date.now().toString(36)}`,method:`initialize`,params:{protocolVersion:`2025-03-26`,capabilities:{elicitation:{}},clientInfo:{name:`shadowclaw-remote-mcp-client`,version:`1.0.0`}}});if(!i.ok||a&&`error`in a)throw Mi(i,a);let o=Ai(i,`mcp-session-id`)||`local-${Date.now()}-${Math.random().toString(36).slice(2)}`,s={sessionId:o,protocolVersion:Ai(i,`mcp-protocol-version`)||a?.result?.protocolVersion,lastUsedAt:Date.now()};return await Ii(t,n,o),wi.set(e,s),s}async function Ri(e,t,n,r,i){let a=await Li(e,t,n),o=async e=>{let a={jsonrpc:`2.0`,id:Date.now().toString(),method:r,params:i||{}},o={...n,"mcp-session-id":e},{response:s,payload:c}=await Fi(t,o,a),l=0;for(;Ti(c)&&l<5&&(l++,c.method===`elicitation/create`);){let e=Ei(c.params||{});({response:s,payload:c}=await Fi(t,o,{jsonrpc:`2.0`,id:c.id,result:{action:`accept`,content:e}}))}if(Ti(c))throw Error(`Unsupported server request: ${c.method}`);if(!s.ok||!c||`error`in c)throw Mi(s,c);return c.result};try{let t=await o(a.sessionId);return a.lastUsedAt=Date.now(),wi.set(e,a),t}catch(r){if(!(r instanceof Di))throw r;wi.delete(e),a=await Li(e,t,n);let i=await o(a.sessionId);return a.lastUsedAt=Date.now(),wi.set(e,a),i}}function zi(e){e&&wi.delete(e)}async function Bi(e,t,n,r){let i=await Ci(e,t);if(!i)throw Error(`Remote MCP connection not found`);if(i.reauthRequired)throw new ki(t);let{connection:a,authType:o,headers:s}=i;if(a.transport!==`streamable_http`)throw Error(`Unsupported remote MCP transport`);try{return await Ri(t,a.serverUrl,s,n,r)}catch(i){if(!(i instanceof Oi)||i.status!==401||o!==`oauth`)throw i;zi(t);let a=await Ci(e,t,{forceRefresh:!0});if(!a||a.reauthRequired)throw new ki(t);try{return await Ri(t,a.connection.serverUrl,a.headers,n,r)}catch(e){throw e instanceof Oi&&e.status===401?new ki(t):e}}}async function Vi(e,t){let n=await Bi(e,t,`tools/list`);return Array.isArray(n.tools)?n.tools:[]}async function Hi(e,t,n,r={}){return Bi(e,t,`tools/call`,{name:n,arguments:r})}let Ui=null;function Wi(e){Ui=e}const Gi=/* @__PURE__ */ new Map;function Ki(e,t){Gi.set(e,t)}function qi(e){Gi.delete(e)}function j(e){let t=e?.payload?.groupId;t&&Gi.has(t)?Gi.get(t).push(e):Ui?Ui(e):typeof self<`u`&&typeof self.postMessage==`function`&&self.postMessage(e)}const Ji=/* @__PURE__ */ new Set;async function Yi(){ea()}async function Xi(e,t=900,n=null){{let e=Qi();return`Error: WebVM is not available. The VM requires local assets served at /assets/ (alpine-fs.json, libv86.mjs, etc). Use the "javascript" tool for code execution, or the "fetch_url" tool for HTTP requests.`+(e.error?`\nReason: ${e.error}`:e.booting?`
62
62
  Reason: VM is still booting in the background...`:``)}}function Zi(){return!1}function Qi(){return{ready:!1,booting:!1,bootAttempted:!1,mode:null,error:`WebVM is disabled. Enable it in Settings to use WebVM.`}}function $i(){return`disabled`}function ea(){let e=Qi();Ji.forEach(t=>{try{t(e)}catch{}})}var ta=[{name:`echo`,load:async()=>(await import(`./chunk-p3JWop8X.js`)).echoCommand},{name:`cat`,load:async()=>(await import(`./chunk-Cq7X9ykY.js`)).catCommand},{name:`printf`,load:async()=>(await import(`./chunk-B-TY2PIm.js`)).printfCommand},{name:`ls`,load:async()=>(await import(`./chunk-D-fTiFx9.js`)).lsCommand},{name:`mkdir`,load:async()=>(await import(`./chunk-Dm1-PKEF.js`)).mkdirCommand},{name:`rmdir`,load:async()=>(await import(`./chunk-DVjjLCxc.js`)).rmdirCommand},{name:`touch`,load:async()=>(await import(`./chunk-qTrbRHbm.js`)).touchCommand},{name:`rm`,load:async()=>(await import(`./chunk-RSPb6Xyp.js`)).rmCommand},{name:`cp`,load:async()=>(await import(`./chunk-Bx0hmMm2.js`)).cpCommand},{name:`mv`,load:async()=>(await import(`./chunk-C3e4qENO.js`)).mvCommand},{name:`ln`,load:async()=>(await import(`./chunk-CV3Va1v-.js`)).lnCommand},{name:`chmod`,load:async()=>(await import(`./chunk-CrSaIQYz.js`)).chmodCommand},{name:`pwd`,load:async()=>(await import(`./chunk-BM_u1iKb.js`)).pwdCommand},{name:`readlink`,load:async()=>(await import(`./chunk-Ui56kHYf.js`)).readlinkCommand},{name:`head`,load:async()=>(await import(`./chunk-C23iUMfi.js`)).headCommand},{name:`tail`,load:async()=>(await import(`./chunk-DIKMxZA5.js`)).tailCommand},{name:`wc`,load:async()=>(await import(`./chunk-CnIaGg86.js`)).wcCommand},{name:`stat`,load:async()=>(await import(`./chunk-BOab4jBF.js`)).statCommand},{name:`grep`,load:async()=>(await import(`./chunk-CNNN3RS9.js`)).grepCommand},{name:`fgrep`,load:async()=>(await import(`./chunk-CNNN3RS9.js`)).fgrepCommand},{name:`egrep`,load:async()=>(await import(`./chunk-CNNN3RS9.js`)).egrepCommand},{name:`rg`,load:async()=>(await import(`./chunk-DnPBpaPQ.js`)).rgCommand},{name:`sed`,load:async()=>(await import(`./chunk-Cse1I7m8.js`)).sedCommand},{name:`awk`,load:async()=>(await import(`./chunk-CFqCKQwy.js`)).awkCommand2},{name:`sort`,load:async()=>(await import(`./chunk-Dmn96iTH.js`)).sortCommand},{name:`uniq`,load:async()=>(await import(`./chunk-DtnzxmsG.js`)).uniqCommand},{name:`comm`,load:async()=>(await import(`./chunk-Ch5htC46.js`)).commCommand},{name:`cut`,load:async()=>(await import(`./chunk-Dz7ApPCj.js`)).cutCommand},{name:`paste`,load:async()=>(await import(`./chunk-DiNrlqvr.js`)).pasteCommand},{name:`tr`,load:async()=>(await import(`./chunk-DrBQocKi.js`)).trCommand},{name:`rev`,load:async()=>(await import(`./chunk-DNmSU1J2.js`)).rev},{name:`nl`,load:async()=>(await import(`./chunk-Dy6S3A5K.js`)).nl},{name:`fold`,load:async()=>(await import(`./chunk-Dw2jGdYV.js`)).fold},{name:`expand`,load:async()=>(await import(`./chunk-BaQxYevj.js`)).expand},{name:`unexpand`,load:async()=>(await import(`./chunk-jcLzW_Cy.js`)).unexpand},{name:`strings`,load:async()=>(await import(`./chunk-BmdfJtim.js`)).strings},{name:`split`,load:async()=>(await import(`./chunk-DHX-kYj6.js`)).split},{name:`column`,load:async()=>(await import(`./chunk-CjC29XBg.js`)).column},{name:`join`,load:async()=>(await import(`./chunk-Zo-LH0MM.js`)).join},{name:`tee`,load:async()=>(await import(`./chunk-C2PlJAsc.js`)).teeCommand},{name:`find`,load:async()=>(await import(`./chunk-D0g9W4Ka.js`)).findCommand},{name:`basename`,load:async()=>(await import(`./chunk-DixJLpBZ.js`)).basenameCommand},{name:`dirname`,load:async()=>(await import(`./chunk-Cchvlcgd.js`)).dirnameCommand},{name:`tree`,load:async()=>(await import(`./chunk-CJCjEG3Z.js`)).treeCommand},{name:`du`,load:async()=>(await import(`./chunk-qPRA0fTa.js`)).duCommand},{name:`env`,load:async()=>(await import(`./chunk-Bd4pliQ4.js`)).envCommand},{name:`printenv`,load:async()=>(await import(`./chunk-Bd4pliQ4.js`)).printenvCommand},{name:`alias`,load:async()=>(await import(`./chunk-DNtmwY_v.js`)).aliasCommand},{name:`unalias`,load:async()=>(await import(`./chunk-DNtmwY_v.js`)).unaliasCommand},{name:`history`,load:async()=>(await import(`./chunk-CjI8hX5Y.js`)).historyCommand},{name:`xargs`,load:async()=>(await import(`./chunk-B3549klC.js`)).xargsCommand},{name:`true`,load:async()=>(await import(`./chunk-Cwu3NLdw.js`)).trueCommand},{name:`false`,load:async()=>(await import(`./chunk-Cwu3NLdw.js`)).falseCommand},{name:`clear`,load:async()=>(await import(`./chunk-Cfm9HFzT.js`)).clearCommand},{name:`bash`,load:async()=>(await import(`./chunk-O1zMxwIB.js`)).bashCommand},{name:`sh`,load:async()=>(await import(`./chunk-O1zMxwIB.js`)).shCommand},{name:`jq`,load:async()=>(await import(`./chunk-CaBalkfV.js`)).jqCommand},{name:`base64`,load:async()=>(await import(`./chunk-DiwzfkOH.js`)).base64Command},{name:`diff`,load:async()=>(await import(`./chunk-CmBEBgGF.js`)).diffCommand},{name:`date`,load:async()=>(await import(`./chunk-DsPHdkdD.js`)).dateCommand},{name:`sleep`,load:async()=>(await import(`./chunk-BquuIz_t.js`)).sleepCommand},{name:`timeout`,load:async()=>(await import(`./chunk-D7Ejlkct.js`)).timeoutCommand},{name:`time`,load:async()=>(await import(`./chunk-C5wrhBNQ.js`)).timeCommand},{name:`seq`,load:async()=>(await import(`./chunk-ZP1c1VmP.js`)).seqCommand},{name:`expr`,load:async()=>(await import(`./chunk-DH1UqwH9.js`)).exprCommand},{name:`md5sum`,load:async()=>(await import(`./chunk-Bjcjmq61.js`)).md5sumCommand},{name:`sha1sum`,load:async()=>(await import(`./chunk-CiuinVuu.js`)).sha1sumCommand},{name:`sha256sum`,load:async()=>(await import(`./chunk-ClPCvcRm.js`)).sha256sumCommand},{name:`file`,load:async()=>(await import(`./chunk-D5Jy42-D.js`)).fileCommand},{name:`html-to-markdown`,load:async()=>(await import(`./chunk-BGhffNzI.js`)).htmlToMarkdownCommand},{name:`help`,load:async()=>(await import(`./chunk-CnI3uIBL.js`)).helpCommand},{name:`which`,load:async()=>(await import(`./chunk-CuPdv9Kb.js`)).whichCommand},{name:`tac`,load:async()=>(await import(`./chunk-ListDhYL.js`)).tac},{name:`hostname`,load:async()=>(await import(`./chunk-CA2LPOcq.js`)).hostname},{name:`whoami`,load:async()=>(await import(`./chunk-CNoiMT3I.js`)).whoami},{name:`od`,load:async()=>(await import(`./chunk-CEpOJ4dN.js`)).od},{name:`gzip`,load:async()=>(await import(`./chunk-C6KLVo8i.js`)).gzipCommand},{name:`gunzip`,load:async()=>(await import(`./chunk-C6KLVo8i.js`)).gunzipCommand},{name:`zcat`,load:async()=>(await import(`./chunk-C6KLVo8i.js`)).zcatCommand}];(typeof __BROWSER__>`u`||!__BROWSER__)&&(ta.push({name:`tar`,load:async()=>(await import(`./chunk-s3l-jS5A.js`)).tarCommand}),ta.push({name:`yq`,load:async()=>(await import(`./chunk-C6JAId89.js`)).yqCommand}),ta.push({name:`xan`,load:async()=>(await import(`./chunk-CrYnxLt7.js`)).xanCommand}),ta.push({name:`sqlite3`,load:async()=>(await import(`./chunk-DcNxjqH6.js`)).sqlite3Command}));var na=[];(typeof __BROWSER__>`u`||!__BROWSER__)&&(na.push({name:`python3`,load:async()=>(await import(`./chunk-BejPtDv-.js`)).python3Command}),na.push({name:`python`,load:async()=>(await import(`./chunk-BejPtDv-.js`)).pythonCommand}));var ra=[];(typeof __BROWSER__>`u`||!__BROWSER__)&&(ra.push({name:`js-exec`,load:async()=>(await import(`./chunk-BmlqXKZq.js`)).jsExecCommand}),ra.push({name:`node`,load:async()=>(await import(`./chunk-BmlqXKZq.js`)).nodeStubCommand}));var ia=[{name:`curl`,load:async()=>(await import(`./chunk-D7lRFyhe.js`)).curlCommand}],aa=/* @__PURE__ */ new Map;function oa(e){return{name:e.name,async execute(t,n){let r=aa.get(e.name);if(r||(r=await Re.runTrustedAsync(()=>e.load()),aa.set(e.name,r)),n.coverage&&(typeof __BROWSER__>`u`||!__BROWSER__)){let{emitFlagCoverage:r}=await import(`./chunk-_Vo-o_e3.js`);r(n.coverage,e.name,t)}return r.execute(t,n)}}}function sa(e){return(e?ta.filter(t=>e.includes(t.name)):ta).map(oa)}function ca(){return ia.map(oa)}function la(){return na.map(oa)}function ua(){return ra.map(oa)}function da(e){return`load`in e&&typeof e.load==`function`}function fa(e){let t=null;return{name:e.name,trusted:!0,async execute(n,r){return t||=await e.load(),t.execute(n,r)}}}var pa=new TextEncoder;function ma(e){return typeof e==`object`&&!!e&&!(e instanceof Uint8Array)&&`content`in e}var ha=class{data=/* @__PURE__ */ new Map;constructor(e){if(this.data.set(`/`,{type:`directory`,mode:493,mtime:/* @__PURE__ */ new Date}),e)for(let[t,n]of Object.entries(e))typeof n==`function`?this.writeFileLazy(t,n):ma(n)?this.writeFileSync(t,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(t,n)}ensureParentDirs(e){let t=dn(e);t!==`/`&&(this.data.has(t)||(this.ensureParentDirs(t),this.data.set(t,{type:`directory`,mode:493,mtime:/* @__PURE__ */ new Date})))}writeFileSync(e,t,n,r){un(e,`write`);let i=k(e);this.ensureParentDirs(i);let a=it(n),o=at(t,a);this.data.set(i,{type:`file`,content:o,mode:r?.mode??420,mtime:r?.mtime??/* @__PURE__ */ new Date})}writeFileLazy(e,t,n){un(e,`write`);let r=k(e);this.ensureParentDirs(r),this.data.set(r,{type:`file`,lazy:t,mode:n?.mode??420,mtime:n?.mtime??/* @__PURE__ */ new Date})}async materializeLazy(e,t){let n=await t.lazy(),r={type:`file`,content:typeof n==`string`?pa.encode(n):n,mode:t.mode,mtime:t.mtime};return this.data.set(e,r),r}async readFile(e,t){let n=await this.readFileBuffer(e),r=it(t);return ot(n,r)}async readFileBuffer(e){un(e,`open`);let t=this.resolvePathWithSymlinks(e),n=this.data.get(t);if(!n)throw Error(`ENOENT: no such file or directory, open '${e}'`);if(n.type!==`file`)throw Error(`EISDIR: illegal operation on a directory, read '${e}'`);if(`lazy`in n){let e=await this.materializeLazy(t,n);return e.content instanceof Uint8Array?e.content:pa.encode(e.content)}return n.content instanceof Uint8Array?n.content:pa.encode(n.content)}async writeFile(e,t,n){this.writeFileSync(e,t,n)}async appendFile(e,t,n){un(e,`append`);let r=k(e),i=this.data.get(r);if(i&&i.type===`directory`)throw Error(`EISDIR: illegal operation on a directory, write '${e}'`);let a=it(n),o=at(t,a);if(i?.type===`file`){let e=i;`lazy`in e&&(e=await this.materializeLazy(r,e));let t=`content`in e&&e.content instanceof Uint8Array?e.content:pa.encode(`content`in e?e.content:``),n=new Uint8Array(t.length+o.length);n.set(t),n.set(o,t.length),this.data.set(r,{type:`file`,content:n,mode:e.mode,mtime:/* @__PURE__ */ new Date})}else this.writeFileSync(e,t,n)}async exists(e){if(e.includes(`\0`))return!1;try{let t=this.resolvePathWithSymlinks(e);return this.data.has(t)}catch{return!1}}async stat(e){un(e,`stat`);let t=this.resolvePathWithSymlinks(e),n=this.data.get(t);if(!n)throw Error(`ENOENT: no such file or directory, stat '${e}'`);n.type===`file`&&`lazy`in n&&(n=await this.materializeLazy(t,n));let r=0;return n.type===`file`&&`content`in n&&n.content&&(r=n.content instanceof Uint8Array?n.content.length:pa.encode(n.content).length),{isFile:n.type===`file`,isDirectory:n.type===`directory`,isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||/* @__PURE__ */ new Date}}async lstat(e){un(e,`lstat`);let t=this.resolveIntermediateSymlinks(e),n=this.data.get(t);if(!n)throw Error(`ENOENT: no such file or directory, lstat '${e}'`);if(n.type===`symlink`)return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime||/* @__PURE__ */ new Date};n.type===`file`&&`lazy`in n&&(n=await this.materializeLazy(t,n));let r=0;return n.type===`file`&&`content`in n&&n.content&&(r=n.content instanceof Uint8Array?n.content.length:pa.encode(n.content).length),{isFile:n.type===`file`,isDirectory:n.type===`directory`,isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||/* @__PURE__ */ new Date}}resolveIntermediateSymlinks(e){let t=k(e);if(t===`/`)return`/`;let n=t.slice(1).split(`/`);if(n.length<=1)return t;let r=``,i=/* @__PURE__ */ new Set;for(let t=0;t<n.length-1;t++){let a=n[t];r=`${r}/${a}`;let o=this.data.get(r),s=0;for(;o&&o.type===`symlink`&&s<40;){if(i.has(r))throw Error(`ELOOP: too many levels of symbolic links, lstat '${e}'`);i.add(r),r=mn(r,o.target),o=this.data.get(r),s++}if(s>=40)throw Error(`ELOOP: too many levels of symbolic links, lstat '${e}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(e){let t=k(e);if(t===`/`)return`/`;let n=t.slice(1).split(`/`),r=``,i=/* @__PURE__ */ new Set;for(let t of n){r=`${r}/${t}`;let n=this.data.get(r),a=0;for(;n&&n.type===`symlink`&&a<40;){if(i.has(r))throw Error(`ELOOP: too many levels of symbolic links, open '${e}'`);i.add(r),r=mn(r,n.target),n=this.data.get(r),a++}if(a>=40)throw Error(`ELOOP: too many levels of symbolic links, open '${e}'`)}return r}async mkdir(e,t){this.mkdirSync(e,t)}mkdirSync(e,t){un(e,`mkdir`);let n=k(e);if(this.data.has(n)){if(this.data.get(n)?.type===`file`)throw Error(`EEXIST: file already exists, mkdir '${e}'`);if(!t?.recursive)throw Error(`EEXIST: directory already exists, mkdir '${e}'`);return}let r=dn(n);if(r!==`/`&&!this.data.has(r)){if(t?.recursive)this.mkdirSync(r,{recursive:!0});else throw Error(`ENOENT: no such file or directory, mkdir '${e}'`)}this.data.set(n,{type:`directory`,mode:493,mtime:/* @__PURE__ */ new Date})}async readdir(e){return(await this.readdirWithFileTypes(e)).map(e=>e.name)}async readdirWithFileTypes(e){un(e,`scandir`);let t=k(e),n=this.data.get(t);if(!n)throw Error(`ENOENT: no such file or directory, scandir '${e}'`);let r=/* @__PURE__ */ new Set;for(;n&&n.type===`symlink`;){if(r.has(t))throw Error(`ELOOP: too many levels of symbolic links, scandir '${e}'`);r.add(t),t=mn(t,n.target),n=this.data.get(t)}if(!n)throw Error(`ENOENT: no such file or directory, scandir '${e}'`);if(n.type!==`directory`)throw Error(`ENOTDIR: not a directory, scandir '${e}'`);let i=t===`/`?`/`:`${t}/`,a=/* @__PURE__ */ new Map;for(let[e,n]of this.data.entries())if(e!==t&&e.startsWith(i)){let t=e.slice(i.length),r=t.split(`/`)[0];r&&!t.includes(`/`,r.length)&&!a.has(r)&&a.set(r,{name:r,isFile:n.type===`file`,isDirectory:n.type===`directory`,isSymbolicLink:n.type===`symlink`})}return Array.from(a.values()).sort((e,t)=>e.name<t.name?-1:+(e.name>t.name))}async rm(e,t){un(e,`rm`);let n=k(e),r=this.data.get(n);if(!r){if(t?.force)return;throw Error(`ENOENT: no such file or directory, rm '${e}'`)}if(r.type===`directory`){let r=await this.readdir(n);if(r.length>0){if(!t?.recursive)throw Error(`ENOTEMPTY: directory not empty, rm '${e}'`);for(let e of r){let r=pn(n,e);await this.rm(r,t)}}}this.data.delete(n)}async cp(e,t,n){un(e,`cp`),un(t,`cp`);let r=k(e),i=k(t),a=this.data.get(r);if(!a)throw Error(`ENOENT: no such file or directory, cp '${e}'`);if(a.type===`file`){if(this.ensureParentDirs(i),`content`in a){let e=a.content instanceof Uint8Array?new Uint8Array(a.content):a.content;this.data.set(i,{...a,content:e})}else this.data.set(i,{...a})}else if(a.type===`symlink`)this.ensureParentDirs(i),this.data.set(i,{...a});else if(a.type===`directory`){if(!n?.recursive)throw Error(`EISDIR: is a directory, cp '${e}'`);await this.mkdir(i,{recursive:!0});let t=await this.readdir(r);for(let e of t){let t=pn(r,e),a=pn(i,e);await this.cp(t,a,n)}}}async mv(e,t){await this.cp(e,t,{recursive:!0}),await this.rm(e,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(e,t){return fn(e,t)}async chmod(e,t){un(e,`chmod`);let n=k(e),r=this.data.get(n);if(!r)throw Error(`ENOENT: no such file or directory, chmod '${e}'`);r.mode=t}async symlink(e,t){un(t,`symlink`);let n=k(t);if(this.data.has(n))throw Error(`EEXIST: file already exists, symlink '${t}'`);this.ensureParentDirs(n),this.data.set(n,{type:`symlink`,target:e,mode:511,mtime:/* @__PURE__ */ new Date})}async link(e,t){un(e,`link`),un(t,`link`);let n=k(e),r=k(t),i=this.data.get(n);if(!i)throw Error(`ENOENT: no such file or directory, link '${e}'`);if(i.type!==`file`)throw Error(`EPERM: operation not permitted, link '${e}'`);if(this.data.has(r))throw Error(`EEXIST: file already exists, link '${t}'`);let a=i;`lazy`in a&&(a=await this.materializeLazy(n,a)),this.ensureParentDirs(r),this.data.set(r,{type:`file`,content:a.content,mode:a.mode,mtime:a.mtime})}async readlink(e){un(e,`readlink`);let t=k(e),n=this.data.get(t);if(!n)throw Error(`ENOENT: no such file or directory, readlink '${e}'`);if(n.type!==`symlink`)throw Error(`EINVAL: invalid argument, readlink '${e}'`);return n.target}async realpath(e){un(e,`realpath`);let t=this.resolvePathWithSymlinks(e);if(!this.data.has(t))throw Error(`ENOENT: no such file or directory, realpath '${e}'`);return t}async utimes(e,t,n){un(e,`utimes`);let r=k(e),i=this.resolvePathWithSymlinks(r),a=this.data.get(i);if(!a)throw Error(`ENOENT: no such file or directory, utimes '${e}'`);a.mtime=n}};function ga(e){let t=e;return typeof t.mkdirSync==`function`&&typeof t.writeFileSync==`function`}function _a(e,t){e.mkdirSync(`/bin`,{recursive:!0}),e.mkdirSync(`/usr/bin`,{recursive:!0}),t&&(e.mkdirSync(`/home/user`,{recursive:!0}),e.mkdirSync(`/tmp`,{recursive:!0}))}function va(e){e.mkdirSync(`/dev`,{recursive:!0}),e.writeFileSync(`/dev/null`,``),e.writeFileSync(`/dev/zero`,/* @__PURE__ */ new Uint8Array),e.writeFileSync(`/dev/stdin`,``),e.writeFileSync(`/dev/stdout`,``),e.writeFileSync(`/dev/stderr`,``)}function ya(e,t){e.mkdirSync(`/proc/self/fd`,{recursive:!0}),e.writeFileSync(`/proc/version`,`${Ct}
@@ -1 +1 @@
1
- import{c as e,f as t,l as n,m as r,n as i,p as a,t as o,u as s}from"./chunk-D3UhDDmV.js";async function c(c,l,u,d){let{dirs:f,filename:p}=e(u);for(let e=0;e<2;e++)try{let e=await n(c,l);for(let t of f)e=await e.getDirectoryHandle(t,{create:!0});let r=await e.getFileHandle(p,{create:!0});try{await o(r,d);return}catch(e){if(!((e instanceof Error?e.message:String(e)).includes(`Writable file streams are not supported`)&&(await t(c)).type===`opfs`))throw e}let a=l.replace(/:/g,`-`);await i([s(),`groups`,a,...f,p],d);return}catch(t){if(e===0&&r(t)){a();continue}throw t}}function l(e,t=`attachment.bin`){if(!e)return t;let n=e.replace(/\\/g,`/`).split(`/`).filter(Boolean);return n[n.length-1]||t}function u(e,t={}){let n=t.replacement??`_`,r=t.fallback??`attachment.bin`,i=e.trim();t.stripControlChars&&(i=i.replace(/[\u0000-\u001f\u007f]+/g,``)),t.stripLeadingDots&&(i=i.replace(/^\.+/,``));let a=t.stripControlChars?/[\\/:*?"<>|]/g:/[\\/:*?"<>|\x00-\x1f\u007f]/g;if(t.collapseReplacement&&n){let e=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);i=i.replace(t.stripControlChars?/[\\/:*?"<>|]+/g:/[\\/:*?"<>|\x00-\x1f\u007f]+/g,n),i=i.replace(RegExp(`${e}+`,`g`),n)}else i=i.replace(a,n);return i=i.trim(),t.stripLeadingDots&&(i=i.replace(/^\.+/,``).trim()),i||r}const d={apng:`image/apng`,avif:`image/avif`,bmp:`image/bmp`,gif:`image/gif`,heic:`image/heic`,heif:`image/heif`,ico:`image/x-icon`,jpeg:`image/jpeg`,jpg:`image/jpeg`,png:`image/png`,svg:`image/svg+xml`,tif:`image/tiff`,tiff:`image/tiff`,webp:`image/webp`},f={...d,"3gp":`video/3gpp`,aac:`audio/aac`,avi:`video/x-msvideo`,bin:`application/octet-stream`,css:`text/css`,csv:`text/csv`,db:`application/vnd.sqlite3`,dll:`application/octet-stream`,dmg:`application/octet-stream`,dylib:`application/octet-stream`,exe:`application/vnd.microsoft.portable-executable`,flac:`audio/flac`,flv:`video/x-flv`,gz:`application/gzip`,htm:`text/html`,html:`text/html`,iso:`application/octet-stream`,js:`text/javascript`,json:`application/json`,m4a:`audio/mp4`,m4v:`video/mp4`,markdown:`text/markdown`,md:`text/markdown`,mjs:`text/javascript`,mkv:`video/x-matroska`,mov:`video/mp4`,mp3:`audio/mpeg`,mp4:`video/mp4`,oga:`audio/ogg`,ogg:`audio/ogg`,ogv:`video/ogg`,pdf:`application/pdf`,rar:`application/vnd.rar`,so:`application/octet-stream`,sqlite:`application/vnd.sqlite3`,sqlite3:`application/vnd.sqlite3`,tar:`application/x-tar`,ts:`text/typescript`,tsx:`text/typescript`,txt:`text/plain`,wasm:`application/wasm`,wav:`audio/wav`,weba:`audio/webm`,webm:`video/webm`,wmv:`video/x-ms-wmv`,xml:`application/xml`,yaml:`text/yaml`,yml:`text/yaml`,zip:`application/zip`};function p(e){return e&&(e.split(/[?#]/,1)[0].replace(/\\/g,`/`).split(`/`).pop()||``).toLowerCase().split(`.`).pop()||``}function m(e,t){let n=p(e);return f[n]??t}function h(e){let t=p(e);return d[t]||null}function g(e){return h(e)!==null}function _(e){let t=p(e);if(t===`md`||t===`markdown`||t===`txt`)return`text/plain`;if(t===`pdf`)return`application/pdf`;if(d[t])return d[t]}function v(e,t=``){return t||m(e,`application/octet-stream`)}export{g as a,c,v as i,m as n,l as o,_ as r,u as s,h as t};
1
+ import{c as e,f as t,l as n,m as r,n as i,p as a,t as o,u as s}from"./chunk-Ce09lwXT.js";async function c(c,l,u,d){let{dirs:f,filename:p}=e(u);for(let e=0;e<2;e++)try{let e=await n(c,l);for(let t of f)e=await e.getDirectoryHandle(t,{create:!0});let r=await e.getFileHandle(p,{create:!0});try{await o(r,d);return}catch(e){if(!((e instanceof Error?e.message:String(e)).includes(`Writable file streams are not supported`)&&(await t(c)).type===`opfs`))throw e}let a=l.replace(/:/g,`-`);await i([s(),`groups`,a,...f,p],d);return}catch(t){if(e===0&&r(t)){a();continue}throw t}}function l(e,t=`attachment.bin`){if(!e)return t;let n=e.replace(/\\/g,`/`).split(`/`).filter(Boolean);return n[n.length-1]||t}function u(e,t={}){let n=t.replacement??`_`,r=t.fallback??`attachment.bin`,i=e.trim();t.stripControlChars&&(i=i.replace(/[\u0000-\u001f\u007f]+/g,``)),t.stripLeadingDots&&(i=i.replace(/^\.+/,``));let a=t.stripControlChars?/[\\/:*?"<>|]/g:/[\\/:*?"<>|\x00-\x1f\u007f]/g;if(t.collapseReplacement&&n){let e=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);i=i.replace(t.stripControlChars?/[\\/:*?"<>|]+/g:/[\\/:*?"<>|\x00-\x1f\u007f]+/g,n),i=i.replace(RegExp(`${e}+`,`g`),n)}else i=i.replace(a,n);return i=i.trim(),t.stripLeadingDots&&(i=i.replace(/^\.+/,``).trim()),i||r}const d={apng:`image/apng`,avif:`image/avif`,bmp:`image/bmp`,gif:`image/gif`,heic:`image/heic`,heif:`image/heif`,ico:`image/x-icon`,jpeg:`image/jpeg`,jpg:`image/jpeg`,png:`image/png`,svg:`image/svg+xml`,tif:`image/tiff`,tiff:`image/tiff`,webp:`image/webp`},f={...d,"3gp":`video/3gpp`,aac:`audio/aac`,avi:`video/x-msvideo`,bin:`application/octet-stream`,css:`text/css`,csv:`text/csv`,db:`application/vnd.sqlite3`,dll:`application/octet-stream`,dmg:`application/octet-stream`,dylib:`application/octet-stream`,exe:`application/vnd.microsoft.portable-executable`,flac:`audio/flac`,flv:`video/x-flv`,gz:`application/gzip`,htm:`text/html`,html:`text/html`,iso:`application/octet-stream`,js:`text/javascript`,json:`application/json`,m4a:`audio/mp4`,m4v:`video/mp4`,markdown:`text/markdown`,md:`text/markdown`,mjs:`text/javascript`,mkv:`video/x-matroska`,mov:`video/mp4`,mp3:`audio/mpeg`,mp4:`video/mp4`,oga:`audio/ogg`,ogg:`audio/ogg`,ogv:`video/ogg`,pdf:`application/pdf`,rar:`application/vnd.rar`,so:`application/octet-stream`,sqlite:`application/vnd.sqlite3`,sqlite3:`application/vnd.sqlite3`,tar:`application/x-tar`,ts:`text/typescript`,tsx:`text/typescript`,txt:`text/plain`,wasm:`application/wasm`,wav:`audio/wav`,weba:`audio/webm`,webm:`video/webm`,wmv:`video/x-ms-wmv`,xml:`application/xml`,yaml:`text/yaml`,yml:`text/yaml`,zip:`application/zip`};function p(e){return e&&(e.split(/[?#]/,1)[0].replace(/\\/g,`/`).split(`/`).pop()||``).toLowerCase().split(`.`).pop()||``}function m(e,t){let n=p(e);return f[n]??t}function h(e){let t=p(e);return d[t]||null}function g(e){return h(e)!==null}function _(e){let t=p(e);if(t===`md`||t===`markdown`||t===`txt`)return`text/plain`;if(t===`pdf`)return`application/pdf`;if(d[t])return d[t]}function v(e,t=``){return t||m(e,`application/octet-stream`)}export{g as a,c,v as i,m as n,l as o,_ as r,u as s,h as t};
@@ -1 +1 @@
1
- import{c as e,i as t,s as n}from"./chunk-BucXnZ4Z.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-DzhSExU0.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,4 +1,4 @@
1
- import{i as e}from"./chunk-BucXnZ4Z.js";import{t}from"./chunk-IOMO88kZ.js";import{t as n}from"./chunk-2ZYd9gYC.js";import{i as r,n as i,r as a,t as o}from"./chunk-DaNyMqrk.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-DzhSExU0.js";import{t}from"./chunk-ENKlt3i9.js";import{t as n}from"./chunk--JpdI-Ht.js";import{i as r,n as i,r as a,t as o}from"./chunk-DBvObsBQ.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-9KiBalKu.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-9KiBalKu.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-9KiBalKu.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-C7hJLmsL.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-C7hJLmsL.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-C7hJLmsL.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-9KiBalKu.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-9KiBalKu.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-9KiBalKu.js`)).DEFAULT_LOCAL_MODEL:`default`);if(u===`transformers_js_local`||u===`llamafile`||u===`agentfile`){let{isModelLocallyCached:e,downloadLocalModel:t}=await import(`./chunk-9KiBalKu.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-C7hJLmsL.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-C7hJLmsL.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-C7hJLmsL.js`)).DEFAULT_LOCAL_MODEL:`default`);if(u===`transformers_js_local`||u===`llamafile`||u===`agentfile`){let{isModelLocallyCached:e,downloadLocalModel:t}=await import(`./chunk-C7hJLmsL.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-9KiBalKu.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-C7hJLmsL.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-9KiBalKu.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-C7hJLmsL.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-DtxGfe2J.js`)).fetchDiscoveryManifest,s=i.importRemoteArtifacts||(await import(`./chunk-B1hufJeO.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-DEH-FvmP.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-DtxGfe2J.js`)).fetchDiscoveryManifest,s=i.importRemoteArtifacts||(await import(`./chunk-BNaWaEm-.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-DGagHluH.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};