shadow-claw 1.54.0 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/.well-known/mcp/server-card.json +1 -1
  2. package/.well-known/mcp.json +1 -1
  3. package/README.md +1 -1
  4. package/dist/cli/build/build.js +1 -1
  5. package/dist/cli/{chunk-DO2t9bUI.js → chunk--IuVyWfT.js} +24 -23
  6. package/dist/cli/{chunk-2ZYd9gYC.js → chunk--JpdI-Ht.js} +1 -1
  7. package/dist/cli/{chunk-m4Ineemy.js → chunk-4O8yrQuN.js} +1 -1
  8. package/dist/cli/{chunk-BiH9IXnQ.js → chunk-7S9Ywlfy.js} +1 -1
  9. package/dist/cli/{chunk-BmMOdYvk.js → chunk-B0SqqDSK.js} +1 -1
  10. package/dist/cli/chunk-BNaWaEm-.js +1 -0
  11. package/dist/cli/chunk-BXCsxO9e.js +1 -0
  12. package/dist/cli/chunk-Bq37qDoZ.js +18 -0
  13. package/dist/cli/{chunk-C1htf-nO.js → chunk-BrEeCKIo.js} +2 -2
  14. package/dist/cli/{chunk-BI1SOTM1.js → chunk-Bu3ylrhT.js} +8 -8
  15. package/dist/cli/{chunk-3smiGQoQ.js → chunk-C1v_s0Kb.js} +1 -1
  16. package/dist/cli/{chunk-DGeysxz3.js → chunk-C44G533y.js} +1 -1
  17. package/dist/cli/{chunk-9KiBalKu.js → chunk-C7hJLmsL.js} +1 -1
  18. package/dist/cli/{chunk-BFv9XSNd.js → chunk-CAaQWd6t.js} +1 -1
  19. package/dist/cli/chunk-CIkgn5Fh.js +1 -0
  20. package/dist/cli/chunk-CWEIN2kc.js +1 -0
  21. package/dist/cli/{chunk-BDeDZ-0L.js → chunk-CYg1lO1a.js} +1 -1
  22. package/dist/cli/{chunk-DXLmEQ3i.js → chunk-Ce09lwXT.js} +1 -1
  23. package/dist/cli/{chunk-XsfHeN4m.js → chunk-CpdqRSO-.js} +1 -1
  24. package/dist/cli/chunk-DB4x5L-B.js +1 -0
  25. package/dist/cli/{chunk-DaNyMqrk.js → chunk-DBvObsBQ.js} +1 -1
  26. package/dist/cli/chunk-DGPpt7Ka.js +1 -0
  27. package/dist/cli/chunk-DGagHluH.js +1 -0
  28. package/dist/cli/chunk-DUIs23D9.js +1 -0
  29. package/dist/cli/{chunk-CyvfQV16.js → chunk-DaurYOqg.js} +1 -1
  30. package/dist/cli/{chunk-DSFrcSyA.js → chunk-DfwRL0Ue.js} +1 -1
  31. package/dist/cli/{chunk-M2tZrzY5.js → chunk-DudYQk0p.js} +1 -1
  32. package/dist/cli/chunk-DvKo50Tp.js +2 -0
  33. package/dist/cli/{chunk-H_Mw5ypp.js → chunk-Dvrqte5Q.js} +2 -2
  34. package/dist/cli/{chunk-BtNO-m9T.js → chunk-DzhSExU0.js} +1 -1
  35. package/dist/cli/{chunk-IOMO88kZ.js → chunk-ENKlt3i9.js} +1 -1
  36. package/dist/cli/{chunk-Bspgzwsm.js → chunk-FWRwAX75.js} +8 -8
  37. package/dist/cli/chunk-Lf-Z-h48.js +32 -0
  38. package/dist/cli/{chunk-BucXnZ4Z.js → chunk-VRfkSLrD.js} +1 -1
  39. package/dist/cli/chunk-uaTxD024.js +1 -0
  40. package/dist/cli/cli.js +1 -1
  41. package/dist/cli/prerender/dsd-shell/prerender-dsd-shell.js +1 -1
  42. package/dist/headless-agent.js +2 -2
  43. package/dist/lib/components/index.js +25 -25
  44. package/dist/lib/components/settings/shadow-claw-accounts.js +1 -1
  45. package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
  46. package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
  47. package/dist/lib/components/settings/shadow-claw-git.js +1 -1
  48. package/dist/lib/components/settings/shadow-claw-integrations.js +1 -1
  49. package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
  50. package/dist/lib/components/settings/shadow-claw-mcp-remote.js +1 -1
  51. package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
  52. package/dist/lib/components/settings/shadow-claw-notifications.js +1 -1
  53. package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
  54. package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
  55. package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
  56. package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
  57. package/dist/lib/components/shadow-claw/utils/get-route.d.ts +3 -0
  58. package/dist/lib/components/shadow-claw/utils/sync-slotted-sidebar-active-links.d.ts +1 -1
  59. package/dist/lib/components/shadow-claw-accounts.js +1 -1
  60. package/dist/lib/components/shadow-claw-channel-config.js +1 -1
  61. package/dist/lib/components/shadow-claw-channels.js +1 -1
  62. package/dist/lib/components/shadow-claw-chat.js +1 -1
  63. package/dist/lib/components/shadow-claw-control-plane.js +1 -1
  64. package/dist/lib/components/shadow-claw-conversations.js +1 -1
  65. package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
  66. package/dist/lib/components/shadow-claw-files.js +1 -1
  67. package/dist/lib/components/shadow-claw-git.js +1 -1
  68. package/dist/lib/components/shadow-claw-integrations.js +1 -1
  69. package/dist/lib/components/shadow-claw-llm.js +1 -1
  70. package/dist/lib/components/shadow-claw-mcp-remote.js +1 -1
  71. package/dist/lib/components/shadow-claw-networking.js +1 -1
  72. package/dist/lib/components/shadow-claw-notifications.js +1 -1
  73. package/dist/lib/components/shadow-claw-page-header.js +1 -1
  74. package/dist/lib/components/shadow-claw-pages.js +1 -1
  75. package/dist/lib/components/shadow-claw-peerjs.js +1 -1
  76. package/dist/lib/components/shadow-claw-settings.js +1 -1
  77. package/dist/lib/components/shadow-claw-storage.js +1 -1
  78. package/dist/lib/components/shadow-claw-task-server.js +1 -1
  79. package/dist/lib/components/shadow-claw-tasks.js +1 -1
  80. package/dist/lib/components/shadow-claw-terminal.js +1 -1
  81. package/dist/lib/components/shadow-claw-tools.js +1 -1
  82. package/dist/lib/components/shadow-claw-webvm.js +1 -1
  83. package/dist/lib/components/shadow-claw.js +1 -1
  84. package/dist/lib/{configure-peer-js-D5jDCtLx.js → configure-peer-js-C9554Slv.js} +2 -2
  85. package/dist/lib/{configure-peer-js-D5jDCtLx.js.map → configure-peer-js-C9554Slv.js.map} +1 -1
  86. package/dist/lib/{file-viewer-B4CL4e0i.js → file-viewer-DBc5dxNy.js} +2 -2
  87. package/dist/lib/{file-viewer-B4CL4e0i.js.map → file-viewer-DBc5dxNy.js.map} +1 -1
  88. package/dist/lib/index.js +28 -27
  89. package/dist/lib/{init-control-plane-l2uFnhGV.js → init-control-plane-D-41Fm5q.js} +12 -12
  90. package/dist/lib/{init-control-plane-l2uFnhGV.js.map → init-control-plane-D-41Fm5q.js.map} +1 -1
  91. package/dist/lib/{markdown-0_p_zfxL.js → markdown-KnDWzWJJ.js} +2 -2
  92. package/dist/lib/{markdown-0_p_zfxL.js.map → markdown-KnDWzWJJ.js.map} +1 -1
  93. package/dist/lib/{orchestrator-D6wm8Sec.js → orchestrator-BEZcqgR5.js} +9 -9
  94. package/dist/lib/{orchestrator-D6wm8Sec.js.map → orchestrator-BEZcqgR5.js.map} +1 -1
  95. package/dist/lib/{orchestrator-Dh-hnIpK.js → orchestrator-Cda13e5U.js} +4 -4
  96. package/dist/lib/{orchestrator-Dh-hnIpK.js.map → orchestrator-Cda13e5U.js.map} +1 -1
  97. package/dist/lib/{peerjs-BWZnsD0B.js → peerjs-DYkUTcee.js} +5 -5
  98. package/dist/lib/{peerjs-BWZnsD0B.js.map → peerjs-DYkUTcee.js.map} +1 -1
  99. package/dist/lib/{push-client-MybDfOdi.js → push-client-CQtCFDaD.js} +3 -3
  100. package/dist/lib/{push-client-MybDfOdi.js.map → push-client-CQtCFDaD.js.map} +1 -1
  101. package/dist/lib/security/custom-element-security.d.ts +8 -4
  102. package/dist/lib/{shadow-claw-PdOpgTxH.js → shadow-claw-DYe9u6Tp.js} +142 -33
  103. package/dist/lib/shadow-claw-DYe9u6Tp.js.map +1 -0
  104. package/dist/lib/{shadow-claw-accounts-3bR76EOb.js → shadow-claw-accounts-D2URoHys.js} +2 -2
  105. package/dist/lib/{shadow-claw-accounts-3bR76EOb.js.map → shadow-claw-accounts-D2URoHys.js.map} +1 -1
  106. package/dist/lib/{shadow-claw-channel-config-ChdZ1iB8.js → shadow-claw-channel-config-buXoz2xv.js} +3 -3
  107. package/dist/lib/{shadow-claw-channel-config-ChdZ1iB8.js.map → shadow-claw-channel-config-buXoz2xv.js.map} +1 -1
  108. package/dist/lib/{shadow-claw-channels-CK9sc7h_.js → shadow-claw-channels-5yVJ1gLk.js} +3 -3
  109. package/dist/lib/{shadow-claw-channels-CK9sc7h_.js.map → shadow-claw-channels-5yVJ1gLk.js.map} +1 -1
  110. package/dist/lib/{shadow-claw-chat-B6uuZnJ7.js → shadow-claw-chat-CVc-7ycM.js} +7 -7
  111. package/dist/lib/{shadow-claw-chat-B6uuZnJ7.js.map → shadow-claw-chat-CVc-7ycM.js.map} +1 -1
  112. package/dist/lib/{shadow-claw-control-plane-BpRcl312.js → shadow-claw-control-plane-B5vsF91B.js} +6 -6
  113. package/dist/lib/{shadow-claw-control-plane-BpRcl312.js.map → shadow-claw-control-plane-B5vsF91B.js.map} +1 -1
  114. package/dist/lib/{shadow-claw-conversations-Dc_Xk2mB.js → shadow-claw-conversations-PGK5zqn3.js} +54 -12
  115. package/dist/lib/{shadow-claw-conversations-Dc_Xk2mB.js.map → shadow-claw-conversations-PGK5zqn3.js.map} +1 -1
  116. package/dist/lib/{shadow-claw-file-viewer-C4x1PtB2.js → shadow-claw-file-viewer-DSqn0hgx.js} +6 -6
  117. package/dist/lib/{shadow-claw-file-viewer-C4x1PtB2.js.map → shadow-claw-file-viewer-DSqn0hgx.js.map} +1 -1
  118. package/dist/lib/{shadow-claw-files-DhnHbXKf.js → shadow-claw-files-vOa9ZWbr.js} +6 -6
  119. package/dist/lib/{shadow-claw-files-DhnHbXKf.js.map → shadow-claw-files-vOa9ZWbr.js.map} +1 -1
  120. package/dist/lib/{shadow-claw-git-BeQ1ElUd.js → shadow-claw-git-D54Z85Bj.js} +4 -4
  121. package/dist/lib/{shadow-claw-git-BeQ1ElUd.js.map → shadow-claw-git-D54Z85Bj.js.map} +1 -1
  122. package/dist/lib/{shadow-claw-integrations-Bbdolk3w.js → shadow-claw-integrations-BTubMH9d.js} +2 -2
  123. package/dist/lib/{shadow-claw-integrations-Bbdolk3w.js.map → shadow-claw-integrations-BTubMH9d.js.map} +1 -1
  124. package/dist/lib/{shadow-claw-llm-DPda4L3C.js → shadow-claw-llm-8koGTNYs.js} +3 -3
  125. package/dist/lib/{shadow-claw-llm-DPda4L3C.js.map → shadow-claw-llm-8koGTNYs.js.map} +1 -1
  126. package/dist/lib/{shadow-claw-mcp-remote-Dn9c30WI.js → shadow-claw-mcp-remote-C2jwBsQt.js} +2 -2
  127. package/dist/lib/{shadow-claw-mcp-remote-Dn9c30WI.js.map → shadow-claw-mcp-remote-C2jwBsQt.js.map} +1 -1
  128. package/dist/lib/{shadow-claw-networking-zqNuyn3-.js → shadow-claw-networking-BV-rna16.js} +2 -2
  129. package/dist/lib/{shadow-claw-networking-zqNuyn3-.js.map → shadow-claw-networking-BV-rna16.js.map} +1 -1
  130. package/dist/lib/{shadow-claw-notifications-DFgdo33v.js → shadow-claw-notifications-Dku7VBLk.js} +2 -2
  131. package/dist/lib/{shadow-claw-notifications-DFgdo33v.js.map → shadow-claw-notifications-Dku7VBLk.js.map} +1 -1
  132. package/dist/lib/{shadow-claw-page-header-B7LFGQRf.js → shadow-claw-page-header-VPjYWfsT.js} +2 -2
  133. package/dist/lib/{shadow-claw-page-header-B7LFGQRf.js.map → shadow-claw-page-header-VPjYWfsT.js.map} +1 -1
  134. package/dist/lib/{shadow-claw-pages-DLspFqdK.js → shadow-claw-pages-DXrM6hgZ.js} +29 -19
  135. package/dist/lib/shadow-claw-pages-DXrM6hgZ.js.map +1 -0
  136. package/dist/lib/{shadow-claw-peerjs-D8xWwuWR.js → shadow-claw-peerjs-D3xonez5.js} +3 -3
  137. package/dist/lib/{shadow-claw-peerjs-D8xWwuWR.js.map → shadow-claw-peerjs-D3xonez5.js.map} +1 -1
  138. package/dist/lib/{shadow-claw-settings-NbvzXASD.js → shadow-claw-settings-DMTx6OS9.js} +5 -5
  139. package/dist/lib/{shadow-claw-settings-NbvzXASD.js.map → shadow-claw-settings-DMTx6OS9.js.map} +1 -1
  140. package/dist/lib/{shadow-claw-storage-B_NAoZmd.js → shadow-claw-storage-BJLnukxa.js} +3 -3
  141. package/dist/lib/{shadow-claw-storage-B_NAoZmd.js.map → shadow-claw-storage-BJLnukxa.js.map} +1 -1
  142. package/dist/lib/{shadow-claw-task-server-BaQJXhYJ.js → shadow-claw-task-server-DcMj20hD.js} +2 -2
  143. package/dist/lib/{shadow-claw-task-server-BaQJXhYJ.js.map → shadow-claw-task-server-DcMj20hD.js.map} +1 -1
  144. package/dist/lib/{shadow-claw-tasks-CAZua0-j.js → shadow-claw-tasks-BQBe4lVi.js} +7 -7
  145. package/dist/lib/{shadow-claw-tasks-CAZua0-j.js.map → shadow-claw-tasks-BQBe4lVi.js.map} +1 -1
  146. package/dist/lib/{shadow-claw-terminal-B2YJhkJL.js → shadow-claw-terminal-DPEzTxXv.js} +2 -2
  147. package/dist/lib/{shadow-claw-terminal-B2YJhkJL.js.map → shadow-claw-terminal-DPEzTxXv.js.map} +1 -1
  148. package/dist/lib/{shadow-claw-tools-CkZWxxTm.js → shadow-claw-tools-BCnU8FaK.js} +6 -6
  149. package/dist/lib/{shadow-claw-tools-CkZWxxTm.js.map → shadow-claw-tools-BCnU8FaK.js.map} +1 -1
  150. package/dist/lib/{shadow-claw-webvm-BL9cgrP9.js → shadow-claw-webvm-CnW-hoJ8.js} +2 -2
  151. package/dist/lib/{shadow-claw-webvm-BL9cgrP9.js.map → shadow-claw-webvm-CnW-hoJ8.js.map} +1 -1
  152. package/dist/lib/subsystems/mcp/webmcp.d.ts +15 -2
  153. package/dist/lib/{sync-web-mcp-registration-dW2MVCj4.js → sync-web-mcp-registration-DwpGjVdo.js} +10 -4
  154. package/dist/lib/sync-web-mcp-registration-DwpGjVdo.js.map +1 -0
  155. package/dist/lib/{tools-D7whby3H.js → tools-CP6G0HF7.js} +5 -6
  156. package/dist/lib/tools-CP6G0HF7.js.map +1 -0
  157. package/dist/lib/{trusted-types-d0cdkut_.js → trusted-types-0cu5Dm6M.js} +29 -4
  158. package/dist/lib/{trusted-types-d0cdkut_.js.map → trusted-types-0cu5Dm6M.js.map} +1 -1
  159. package/dist/lib/utils/index.d.ts +1 -0
  160. package/dist/lib/utils/index.js +4 -2
  161. package/dist/lib/utils/index.js.map +1 -1
  162. package/dist/lib/utils/resolve-page-script-dependencies.d.ts +19 -0
  163. package/dist/lib/utils/resolve-page-script-dependencies.js +98 -0
  164. package/dist/lib/utils/resolve-page-script-dependencies.js.map +1 -0
  165. package/dist/lib/utils/utils.js +1 -1
  166. package/dist/lib/webmcp-Bf9rT7uu.js +2001 -0
  167. package/dist/lib/webmcp-Bf9rT7uu.js.map +1 -0
  168. package/dist/public/.well-known/mcp/server-card.json +1 -1
  169. package/dist/public/.well-known/mcp.json +1 -1
  170. package/dist/public/AGENTS.md +3 -3
  171. package/dist/public/README.md +1 -1
  172. package/dist/public/agent.worker.js +2 -2
  173. package/dist/public/components/shadow-claw/shadow-claw.css +1 -1
  174. package/dist/public/components/shadow-claw/shadow-claw.html +1 -1
  175. package/dist/public/components/shadow-claw-conversations/shadow-claw-conversations.css +1 -1
  176. package/dist/public/components/shadow-claw-conversations/shadow-claw-conversations.html +1 -1
  177. package/dist/public/{configure-peer-js-WLRM7Qa7.js → configure-peer-js-OYl3V8sW.js} +1 -1
  178. package/dist/public/{custom-element-security-Cl991z-x.js → custom-element-security-BR4V40j4.js} +1 -1
  179. package/dist/public/docs/example/article/index.html +3 -3
  180. package/dist/public/docs/example/article.html +3 -3
  181. package/dist/public/docs/publishing/index.html +3 -3
  182. package/dist/public/docs/publishing.html +3 -3
  183. package/dist/public/docs/skill-creator/index.html +3 -3
  184. package/dist/public/docs/skill-creator.html +3 -3
  185. package/dist/public/docs/subsystems/custom-element-security.md +19 -5
  186. package/dist/public/docs/subsystems/pages.md +10 -2
  187. package/dist/public/docs/subsystems/tools.md +1 -2
  188. package/dist/public/docs/subsystems/webmcp.md +41 -6
  189. package/dist/public/{download-group-file-fFjoIIp4.js → download-group-file-BNmK8wac.js} +1 -1
  190. package/dist/public/e2e/README.md +2 -2
  191. package/dist/public/{e2e-bridge-CiSfBRT4.js → e2e-bridge-4phD1JUQ.js} +1 -1
  192. package/dist/public/{file-viewer-DFC3kfeO.js → file-viewer-Dbh3K9nL.js} +1 -1
  193. package/dist/public/index.html +3 -3
  194. package/dist/public/index.js +1 -1
  195. package/dist/public/{init-control-plane-BEbcwmmv.js → init-control-plane-DGOY_RNS.js} +1 -1
  196. package/dist/public/llms.txt +1 -1
  197. package/dist/public/main/index.html +3 -3
  198. package/dist/public/main/memory/index.html +3 -3
  199. package/dist/public/main/memory.html +3 -3
  200. package/dist/public/main.html +3 -3
  201. package/dist/public/{markdown-BeglYzw9.js → markdown-BPZYpfGm.js} +1 -1
  202. package/dist/public/{orchestrator-BlvEG3PO.js → orchestrator-OoUK7CF9.js} +1 -1
  203. package/dist/public/{orchestrator-DTNrntd4.js → orchestrator-a9047bGu.js} +1 -1
  204. package/dist/public/{peerjs-CnBdK94R.js → peerjs-Cbn310Tz.js} +1 -1
  205. package/dist/public/{push-client-DOHbdCyj.js → push-client-Dy4LGJy9.js} +1 -1
  206. package/dist/public/service-worker.js +1 -1
  207. package/dist/public/shadow-claw-B-HWC1uN.js +1180 -0
  208. package/dist/public/{shadow-claw-accounts-C6FXVw2K.js → shadow-claw-accounts-Di-anCZ1.js} +1 -1
  209. package/dist/public/{shadow-claw-channels-tr_r60Kq.js → shadow-claw-channels-RVwCE8pE.js} +1 -1
  210. package/dist/public/{shadow-claw-chat-BAAPhAOs.js → shadow-claw-chat-DI1q8UnX.js} +1 -1
  211. package/dist/public/{shadow-claw-control-plane-C_5VIx8E.js → shadow-claw-control-plane-KXEdLOGl.js} +2 -2
  212. package/dist/public/{shadow-claw-conversations-DGYZdDa3.js → shadow-claw-conversations-BCBGtS30.js} +40 -6
  213. package/dist/public/{shadow-claw-file-viewer-5j2-Z3fN.js → shadow-claw-file-viewer-CW3t6j-w.js} +1 -1
  214. package/dist/public/{shadow-claw-files-DKF4Yy0m.js → shadow-claw-files-JQ-o0ImX.js} +1 -1
  215. package/dist/public/{shadow-claw-git-CtUTJXKT.js → shadow-claw-git-D2M8VixW.js} +2 -2
  216. package/dist/public/{shadow-claw-integrations-CuBy9D3z.js → shadow-claw-integrations-Cgw6v9_1.js} +1 -1
  217. package/dist/public/{shadow-claw-llm-BIfNNjGL.js → shadow-claw-llm-74ieXp7i.js} +1 -1
  218. package/dist/public/{shadow-claw-mcp-remote-C17FXvrb.js → shadow-claw-mcp-remote-BX0BkSmy.js} +1 -1
  219. package/dist/public/{shadow-claw-networking-CjxQ1CLI.js → shadow-claw-networking-DNX8vaIQ.js} +1 -1
  220. package/dist/public/{shadow-claw-notifications-Brn2O3Ps.js → shadow-claw-notifications-BLTaGAny.js} +1 -1
  221. package/dist/public/{shadow-claw-page-header-Bn1P7Cxb.js → shadow-claw-page-header-CjFOdo9v.js} +1 -1
  222. package/dist/public/shadow-claw-pages-DOQqMm0_.js +645 -0
  223. package/dist/public/{shadow-claw-settings-CfDm0hVA.js → shadow-claw-settings-DFtl0Fy8.js} +2 -2
  224. package/dist/public/{shadow-claw-storage-DOOesRzw.js → shadow-claw-storage-gQGExZRq.js} +1 -1
  225. package/dist/public/{shadow-claw-task-server-H36iDDp2.js → shadow-claw-task-server-Ca45uY7S.js} +1 -1
  226. package/dist/public/{shadow-claw-tasks-4JsjSGkN.js → shadow-claw-tasks-CCTaaSdi.js} +1 -1
  227. package/dist/public/{shadow-claw-terminal-CTRTcYz-.js → shadow-claw-terminal-BfgulLkl.js} +1 -1
  228. package/dist/public/{shadow-claw-tools-Dm1LxNf4.js → shadow-claw-tools-V8NA4n18.js} +1 -1
  229. package/dist/public/{shadow-claw-webvm-JzuPe9Nr.js → shadow-claw-webvm-CxxI2bnC.js} +1 -1
  230. package/dist/public/sync-web-mcp-registration-CkCA8UFm.js +1 -0
  231. package/dist/public/{tools-FiTtOlIt.js → tools-CwQq5tJH.js} +2 -2
  232. package/dist/public/webmcp-CmtWOAFm.js +6 -0
  233. package/dist/server.js +2 -2
  234. package/package.json +3 -3
  235. package/src/cli/prerender/dsd-shell/prerender-dsd-shell.test.ts +16 -0
  236. package/src/cli/prerender/dsd-shell/prerender-dsd-shell.ts +62 -1
  237. package/src/cli/prerender/pretty-paths/prerender-pretty-paths.test.ts +277 -0
  238. package/src/cli/prerender/pretty-paths/prerender-pretty-paths.ts +28 -1
  239. package/src/cli/site-config/custom-elements/build-custom-element-script-tags.ts +13 -1
  240. package/src/components/shadow-claw/shadow-claw.css +12 -0
  241. package/src/components/shadow-claw/shadow-claw.html +12 -2
  242. package/src/components/shadow-claw/utils/bind-event-listeners.test.ts +18 -0
  243. package/src/components/shadow-claw/utils/bind-event-listeners.ts +14 -0
  244. package/src/components/shadow-claw/utils/get-route.test.ts +35 -0
  245. package/src/components/shadow-claw/utils/get-route.ts +18 -0
  246. package/src/components/shadow-claw/utils/sync-slotted-sidebar-active-links.test.ts +152 -1
  247. package/src/components/shadow-claw/utils/sync-slotted-sidebar-active-links.ts +139 -8
  248. package/src/components/shadow-claw-conversations/shadow-claw-conversations.css +11 -0
  249. package/src/components/shadow-claw-conversations/shadow-claw-conversations.html +27 -4
  250. package/src/components/shadow-claw-conversations/shadow-claw-conversations.ts +32 -4
  251. package/src/components/shadow-claw-pages/shadow-claw-pages-scripts.test.ts +266 -0
  252. package/src/components/shadow-claw-pages/shadow-claw-pages.ts +41 -17
  253. package/src/core/orchestrator/utils/sync-web-mcp-registration.test.ts +18 -1
  254. package/src/core/orchestrator/utils/sync-web-mcp-registration.ts +8 -0
  255. package/src/core/utils/init-control-plane.test.ts +9 -4
  256. package/src/security/custom-element-security.test.ts +65 -0
  257. package/src/security/custom-element-security.ts +67 -4
  258. package/src/stores/tools.test.ts +5 -3
  259. package/src/stores/tools.ts +5 -10
  260. package/src/subsystems/mcp/webmcp.test.ts +84 -13
  261. package/src/subsystems/mcp/webmcp.ts +73 -10
  262. package/src/utils/index.ts +1 -0
  263. package/src/utils/resolve-page-script-dependencies.test.ts +245 -0
  264. package/src/utils/resolve-page-script-dependencies.ts +198 -0
  265. package/dist/cli/chunk-B1hufJeO.js +0 -1
  266. package/dist/cli/chunk-BZpn8npn.js +0 -1
  267. package/dist/cli/chunk-Bw5aOTFr.js +0 -1
  268. package/dist/cli/chunk-C8nH01Gw.js +0 -32
  269. package/dist/cli/chunk-CK1ZoyoE.js +0 -17
  270. package/dist/cli/chunk-CVkhDr-7.js +0 -1
  271. package/dist/cli/chunk-Cum07Vlh.js +0 -1
  272. package/dist/cli/chunk-D3UhDDmV.js +0 -2
  273. package/dist/cli/chunk-D8GI6qj6.js +0 -1
  274. package/dist/cli/chunk-DEH-FvmP.js +0 -1
  275. package/dist/cli/chunk-DksvJ_kf.js +0 -1
  276. package/dist/cli/chunk-RGb9wM4R.js +0 -1
  277. package/dist/lib/shadow-claw-PdOpgTxH.js.map +0 -1
  278. package/dist/lib/shadow-claw-pages-DLspFqdK.js.map +0 -1
  279. package/dist/lib/sync-web-mcp-registration-dW2MVCj4.js.map +0 -1
  280. package/dist/lib/tools-D7whby3H.js.map +0 -1
  281. package/dist/lib/webmcp-CYTNZfkn.js +0 -1687
  282. package/dist/lib/webmcp-CYTNZfkn.js.map +0 -1
  283. package/dist/public/shadow-claw-CnNX-WCh.js +0 -1158
  284. package/dist/public/shadow-claw-pages-BwOOqRWW.js +0 -645
  285. package/dist/public/sync-web-mcp-registration-BnHVUjat.js +0 -1
  286. package/dist/public/webmcp-_TBqXlVW.js +0 -1
@@ -1,3 +1,3 @@
1
- import { n as getControlPlaneTargetAddressSpace, t as ShadowClawControlPlane } from "../shadow-claw-control-plane-BpRcl312.js";
1
+ import { n as getControlPlaneTargetAddressSpace, t as ShadowClawControlPlane } from "../shadow-claw-control-plane-B5vsF91B.js";
2
2
 
3
3
  export { ShadowClawControlPlane, getControlPlaneTargetAddressSpace };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawConversations } from "../shadow-claw-conversations-Dc_Xk2mB.js";
1
+ import { t as ShadowClawConversations } from "../shadow-claw-conversations-PGK5zqn3.js";
2
2
 
3
3
  export { ShadowClawConversations };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawFileViewer } from "../shadow-claw-file-viewer-C4x1PtB2.js";
1
+ import { t as ShadowClawFileViewer } from "../shadow-claw-file-viewer-DSqn0hgx.js";
2
2
 
3
3
  export { ShadowClawFileViewer };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawFiles } from "../shadow-claw-files-DhnHbXKf.js";
1
+ import { t as ShadowClawFiles } from "../shadow-claw-files-vOa9ZWbr.js";
2
2
 
3
3
  export { ShadowClawFiles };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawGit } from "../shadow-claw-git-BeQ1ElUd.js";
1
+ import { t as ShadowClawGit } from "../shadow-claw-git-D54Z85Bj.js";
2
2
 
3
3
  export { ShadowClawGit };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawIntegrations } from "../shadow-claw-integrations-Bbdolk3w.js";
1
+ import { t as ShadowClawIntegrations } from "../shadow-claw-integrations-BTubMH9d.js";
2
2
 
3
3
  export { ShadowClawIntegrations };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawLlm } from "../shadow-claw-llm-DPda4L3C.js";
1
+ import { t as ShadowClawLlm } from "../shadow-claw-llm-8koGTNYs.js";
2
2
 
3
3
  export { ShadowClawLlm };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawMcpRemote } from "../shadow-claw-mcp-remote-Dn9c30WI.js";
1
+ import { t as ShadowClawMcpRemote } from "../shadow-claw-mcp-remote-C2jwBsQt.js";
2
2
 
3
3
  export { ShadowClawMcpRemote };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawNetworking } from "../shadow-claw-networking-zqNuyn3-.js";
1
+ import { t as ShadowClawNetworking } from "../shadow-claw-networking-BV-rna16.js";
2
2
 
3
3
  export { ShadowClawNetworking };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawNotifications } from "../shadow-claw-notifications-DFgdo33v.js";
1
+ import { t as ShadowClawNotifications } from "../shadow-claw-notifications-Dku7VBLk.js";
2
2
 
3
3
  export { ShadowClawNotifications };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawPageHeader } from "../shadow-claw-page-header-B7LFGQRf.js";
1
+ import { t as ShadowClawPageHeader } from "../shadow-claw-page-header-VPjYWfsT.js";
2
2
 
3
3
  export { ShadowClawPageHeader };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawPages } from "../shadow-claw-pages-DLspFqdK.js";
1
+ import { t as ShadowClawPages } from "../shadow-claw-pages-DXrM6hgZ.js";
2
2
 
3
3
  export { ShadowClawPages };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawPeerJs } from "../shadow-claw-peerjs-D8xWwuWR.js";
1
+ import { t as ShadowClawPeerJs } from "../shadow-claw-peerjs-D3xonez5.js";
2
2
 
3
3
  export { ShadowClawPeerJs };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawSettings } from "../shadow-claw-settings-NbvzXASD.js";
1
+ import { t as ShadowClawSettings } from "../shadow-claw-settings-DMTx6OS9.js";
2
2
 
3
3
  export { ShadowClawSettings };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawStorage } from "../shadow-claw-storage-B_NAoZmd.js";
1
+ import { t as ShadowClawStorage } from "../shadow-claw-storage-BJLnukxa.js";
2
2
 
3
3
  export { ShadowClawStorage };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawTaskServer } from "../shadow-claw-task-server-BaQJXhYJ.js";
1
+ import { t as ShadowClawTaskServer } from "../shadow-claw-task-server-DcMj20hD.js";
2
2
 
3
3
  export { ShadowClawTaskServer };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawTasks } from "../shadow-claw-tasks-CAZua0-j.js";
1
+ import { t as ShadowClawTasks } from "../shadow-claw-tasks-BQBe4lVi.js";
2
2
 
3
3
  export { ShadowClawTasks };
@@ -1,3 +1,3 @@
1
- import { n as ShadowClawTerminal, t as AUTO_SCROLL_BOTTOM_THRESHOLD_PX } from "../shadow-claw-terminal-B2YJhkJL.js";
1
+ import { n as ShadowClawTerminal, t as AUTO_SCROLL_BOTTOM_THRESHOLD_PX } from "../shadow-claw-terminal-DPEzTxXv.js";
2
2
 
3
3
  export { AUTO_SCROLL_BOTTOM_THRESHOLD_PX, ShadowClawTerminal };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawTools } from "../shadow-claw-tools-CkZWxxTm.js";
1
+ import { t as ShadowClawTools } from "../shadow-claw-tools-BCnU8FaK.js";
2
2
 
3
3
  export { ShadowClawTools };
@@ -1,3 +1,3 @@
1
- import { t as ShadowClawWebvm } from "../shadow-claw-webvm-BL9cgrP9.js";
1
+ import { t as ShadowClawWebvm } from "../shadow-claw-webvm-CnW-hoJ8.js";
2
2
 
3
3
  export { ShadowClawWebvm };
@@ -1,4 +1,4 @@
1
- import { t as ShadowClaw } from "../shadow-claw-PdOpgTxH.js";
1
+ import { t as ShadowClaw } from "../shadow-claw-DYe9u6Tp.js";
2
2
  import { n as MAX_SIDEBAR_WIDTH_PX, r as MIN_SIDEBAR_WIDTH_PX, t as DEFAULT_SIDEBAR_WIDTH_PX } from "../constants-BxxDX8j_.js";
3
3
 
4
4
  export { DEFAULT_SIDEBAR_WIDTH_PX, MAX_SIDEBAR_WIDTH_PX, MIN_SIDEBAR_WIDTH_PX, ShadowClaw };
@@ -1,5 +1,5 @@
1
1
  import { r as CONFIG_KEYS } from "./config-Dalol4GN.js";
2
- import { pt as getChannelEnabled } from "./orchestrator-Dh-hnIpK.js";
2
+ import { pt as getChannelEnabled } from "./orchestrator-Cda13e5U.js";
3
3
  import { t as setConfig } from "./set-config-CCrA9aKc.js";
4
4
  import { normalizeStringList } from "./utils/normalize-string-list.js";
5
5
 
@@ -36,4 +36,4 @@ async function configurePeerJs(orchestrator, db, myPeerId, trustedPeerIds, serve
36
36
 
37
37
  //#endregion
38
38
  export { configurePeerJs as t };
39
- //# sourceMappingURL=configure-peer-js-D5jDCtLx.js.map
39
+ //# sourceMappingURL=configure-peer-js-C9554Slv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configure-peer-js-D5jDCtLx.js","names":[],"sources":["../../src/core/orchestrator/utils/configure-peer-js.ts"],"sourcesContent":["import { CONFIG_KEYS } from \"../../../config/config.js\";\nimport { setConfig } from \"../../../db/set-config.js\";\nimport { normalizeStringList } from \"../../../utils/normalize-string-list.js\";\nimport { getChannelEnabled } from \"./operations/channel.js\";\n\nimport type { ShadowClawDatabase } from \"../../../db/db.js\";\nimport type { Orchestrator } from \"../orchestrator.js\";\n\nexport async function configurePeerJs(\n orchestrator: Orchestrator,\n db: ShadowClawDatabase,\n myPeerId: string,\n trustedPeerIds: string[],\n serverHost = \"\",\n serverPort = 0,\n serverPath = \"\",\n serverSecure = true,\n): Promise<void> {\n const normalizedMyPeerId = myPeerId.trim();\n const normalizedTrustedPeerIds = normalizeStringList(trustedPeerIds);\n const normalizedServerHost = serverHost.trim();\n const normalizedServerPort = Number.isFinite(serverPort)\n ? Math.max(0, Math.floor(serverPort))\n : 0;\n\n const normalizedServerPath = serverPath.trim();\n const normalizedServerSecure = !!serverSecure;\n\n orchestrator.peerjsMyPeerId = normalizedMyPeerId;\n orchestrator.peerjsTrustedPeerIds = normalizedTrustedPeerIds;\n orchestrator.peerjsServerHost = normalizedServerHost;\n orchestrator.peerjsServerPort = normalizedServerPort;\n orchestrator.peerjsServerPath = normalizedServerPath;\n orchestrator.peerjsServerSecure = normalizedServerSecure;\n\n await setConfig(db, CONFIG_KEYS.PEERJS_MY_PEER_ID, normalizedMyPeerId);\n await setConfig(\n db,\n CONFIG_KEYS.PEERJS_TRUSTED_PEER_IDS,\n JSON.stringify(normalizedTrustedPeerIds),\n );\n\n await setConfig(db, CONFIG_KEYS.PEERJS_SERVER_HOST, normalizedServerHost);\n await setConfig(\n db,\n CONFIG_KEYS.PEERJS_SERVER_PORT,\n normalizedServerPort ? String(normalizedServerPort) : \"\",\n );\n\n await setConfig(db, CONFIG_KEYS.PEERJS_SERVER_PATH, normalizedServerPath);\n await setConfig(\n db,\n CONFIG_KEYS.PEERJS_SERVER_SECURE,\n normalizedServerSecure ? \"true\" : \"false\",\n );\n\n const serverConfig = normalizedServerHost\n ? {\n host: normalizedServerHost,\n path: normalizedServerPath || undefined,\n port: normalizedServerPort || undefined,\n secure: normalizedServerSecure,\n }\n : {};\n\n orchestrator.peerjs.stop();\n orchestrator.peerjs.configure(\n normalizedMyPeerId,\n normalizedTrustedPeerIds,\n serverConfig,\n );\n\n if (normalizedMyPeerId && getChannelEnabled(orchestrator, \"peerjs\")) {\n orchestrator.peerjs.start();\n }\n}\n"],"mappings":";;;;;;AAQA,eAAsB,gBACpB,cACA,IACA,UACA,gBACA,aAAa,IACb,aAAa,GACb,aAAa,IACb,eAAe,MACA;CACf,MAAM,qBAAqB,SAAS,KAAK;CACzC,MAAM,2BAA2B,oBAAoB,cAAc;CACnE,MAAM,uBAAuB,WAAW,KAAK;CAC7C,MAAM,uBAAuB,OAAO,SAAS,UAAU,IACnD,KAAK,IAAI,GAAG,KAAK,MAAM,UAAU,CAAC,IAClC;CAEJ,MAAM,uBAAuB,WAAW,KAAK;CAC7C,MAAM,yBAAyB,CAAC,CAAC;CAEjC,aAAa,iBAAiB;CAC9B,aAAa,uBAAuB;CACpC,aAAa,mBAAmB;CAChC,aAAa,mBAAmB;CAChC,aAAa,mBAAmB;CAChC,aAAa,qBAAqB;CAElC,MAAM,UAAU,IAAI,YAAY,mBAAmB,kBAAkB;CACrE,MAAM,UACJ,IACA,YAAY,yBACZ,KAAK,UAAU,wBAAwB,CACzC;CAEA,MAAM,UAAU,IAAI,YAAY,oBAAoB,oBAAoB;CACxE,MAAM,UACJ,IACA,YAAY,oBACZ,uBAAuB,OAAO,oBAAoB,IAAI,EACxD;CAEA,MAAM,UAAU,IAAI,YAAY,oBAAoB,oBAAoB;CACxE,MAAM,UACJ,IACA,YAAY,sBACZ,yBAAyB,SAAS,OACpC;CAEA,MAAM,eAAe,uBACjB;EACE,MAAM;EACN,MAAM,wBAAwB;EAC9B,MAAM,wBAAwB;EAC9B,QAAQ;CACV,IACA,CAAC;CAEL,aAAa,OAAO,KAAK;CACzB,aAAa,OAAO,UAClB,oBACA,0BACA,YACF;CAEA,IAAI,sBAAsB,kBAAkB,cAAc,QAAQ,GAChE,aAAa,OAAO,MAAM;AAE9B"}
1
+ {"version":3,"file":"configure-peer-js-C9554Slv.js","names":[],"sources":["../../src/core/orchestrator/utils/configure-peer-js.ts"],"sourcesContent":["import { CONFIG_KEYS } from \"../../../config/config.js\";\nimport { setConfig } from \"../../../db/set-config.js\";\nimport { normalizeStringList } from \"../../../utils/normalize-string-list.js\";\nimport { getChannelEnabled } from \"./operations/channel.js\";\n\nimport type { ShadowClawDatabase } from \"../../../db/db.js\";\nimport type { Orchestrator } from \"../orchestrator.js\";\n\nexport async function configurePeerJs(\n orchestrator: Orchestrator,\n db: ShadowClawDatabase,\n myPeerId: string,\n trustedPeerIds: string[],\n serverHost = \"\",\n serverPort = 0,\n serverPath = \"\",\n serverSecure = true,\n): Promise<void> {\n const normalizedMyPeerId = myPeerId.trim();\n const normalizedTrustedPeerIds = normalizeStringList(trustedPeerIds);\n const normalizedServerHost = serverHost.trim();\n const normalizedServerPort = Number.isFinite(serverPort)\n ? Math.max(0, Math.floor(serverPort))\n : 0;\n\n const normalizedServerPath = serverPath.trim();\n const normalizedServerSecure = !!serverSecure;\n\n orchestrator.peerjsMyPeerId = normalizedMyPeerId;\n orchestrator.peerjsTrustedPeerIds = normalizedTrustedPeerIds;\n orchestrator.peerjsServerHost = normalizedServerHost;\n orchestrator.peerjsServerPort = normalizedServerPort;\n orchestrator.peerjsServerPath = normalizedServerPath;\n orchestrator.peerjsServerSecure = normalizedServerSecure;\n\n await setConfig(db, CONFIG_KEYS.PEERJS_MY_PEER_ID, normalizedMyPeerId);\n await setConfig(\n db,\n CONFIG_KEYS.PEERJS_TRUSTED_PEER_IDS,\n JSON.stringify(normalizedTrustedPeerIds),\n );\n\n await setConfig(db, CONFIG_KEYS.PEERJS_SERVER_HOST, normalizedServerHost);\n await setConfig(\n db,\n CONFIG_KEYS.PEERJS_SERVER_PORT,\n normalizedServerPort ? String(normalizedServerPort) : \"\",\n );\n\n await setConfig(db, CONFIG_KEYS.PEERJS_SERVER_PATH, normalizedServerPath);\n await setConfig(\n db,\n CONFIG_KEYS.PEERJS_SERVER_SECURE,\n normalizedServerSecure ? \"true\" : \"false\",\n );\n\n const serverConfig = normalizedServerHost\n ? {\n host: normalizedServerHost,\n path: normalizedServerPath || undefined,\n port: normalizedServerPort || undefined,\n secure: normalizedServerSecure,\n }\n : {};\n\n orchestrator.peerjs.stop();\n orchestrator.peerjs.configure(\n normalizedMyPeerId,\n normalizedTrustedPeerIds,\n serverConfig,\n );\n\n if (normalizedMyPeerId && getChannelEnabled(orchestrator, \"peerjs\")) {\n orchestrator.peerjs.start();\n }\n}\n"],"mappings":";;;;;;AAQA,eAAsB,gBACpB,cACA,IACA,UACA,gBACA,aAAa,IACb,aAAa,GACb,aAAa,IACb,eAAe,MACA;CACf,MAAM,qBAAqB,SAAS,KAAK;CACzC,MAAM,2BAA2B,oBAAoB,cAAc;CACnE,MAAM,uBAAuB,WAAW,KAAK;CAC7C,MAAM,uBAAuB,OAAO,SAAS,UAAU,IACnD,KAAK,IAAI,GAAG,KAAK,MAAM,UAAU,CAAC,IAClC;CAEJ,MAAM,uBAAuB,WAAW,KAAK;CAC7C,MAAM,yBAAyB,CAAC,CAAC;CAEjC,aAAa,iBAAiB;CAC9B,aAAa,uBAAuB;CACpC,aAAa,mBAAmB;CAChC,aAAa,mBAAmB;CAChC,aAAa,mBAAmB;CAChC,aAAa,qBAAqB;CAElC,MAAM,UAAU,IAAI,YAAY,mBAAmB,kBAAkB;CACrE,MAAM,UACJ,IACA,YAAY,yBACZ,KAAK,UAAU,wBAAwB,CACzC;CAEA,MAAM,UAAU,IAAI,YAAY,oBAAoB,oBAAoB;CACxE,MAAM,UACJ,IACA,YAAY,oBACZ,uBAAuB,OAAO,oBAAoB,IAAI,EACxD;CAEA,MAAM,UAAU,IAAI,YAAY,oBAAoB,oBAAoB;CACxE,MAAM,UACJ,IACA,YAAY,sBACZ,yBAAyB,SAAS,OACpC;CAEA,MAAM,eAAe,uBACjB;EACE,MAAM;EACN,MAAM,wBAAwB;EAC9B,MAAM,wBAAwB;EAC9B,QAAQ;CACV,IACA,CAAC;CAEL,aAAa,OAAO,KAAK;CACzB,aAAa,OAAO,UAClB,oBACA,0BACA,YACF;CAEA,IAAI,sBAAsB,kBAAkB,cAAc,QAAQ,GAChE,aAAa,OAAO,MAAM;AAE9B"}
@@ -2,7 +2,7 @@ import { t as Signal } from "./dist-Bxg3C_zy.js";
2
2
  import { t as getGroupDir } from "./get-group-dir-C1NEpC5r.js";
3
3
  import { o as DEFAULT_GROUP_ID } from "./config-Dalol4GN.js";
4
4
  import { t as parsePath } from "./parse-path-BndlLxjJ.js";
5
- import { d as readGroupFile } from "./tools-D7whby3H.js";
5
+ import { d as readGroupFile } from "./tools-CP6G0HF7.js";
6
6
  import { t as readGroupFileBytes } from "./read-group-file-bytes-DRdXsKTH.js";
7
7
 
8
8
  //#region src/storage/get-group-file.ts
@@ -148,4 +148,4 @@ const fileViewerStore = new FileViewerStore();
148
148
 
149
149
  //#endregion
150
150
  export { fileViewerStore as t };
151
- //# sourceMappingURL=file-viewer-B4CL4e0i.js.map
151
+ //# sourceMappingURL=file-viewer-DBc5dxNy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-viewer-B4CL4e0i.js","names":[],"sources":["../../src/storage/get-group-file.ts","../../src/stores/file-viewer.ts"],"sourcesContent":["import { getGroupDir } from \"./get-group-dir.js\";\nimport { parsePath } from \"./parse-path.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Get a native File object from a file in a group's workspace.\n */\nexport async function getGroupFile(\n db: ShadowClawDatabase,\n groupId: string,\n filePath: string,\n): Promise<File> {\n const groupDir = await getGroupDir(db, groupId);\n const { dirs, filename } = parsePath(filePath);\n\n let dir = groupDir;\n for (const seg of dirs) {\n dir = await dir.getDirectoryHandle(seg);\n }\n\n const fileHandle = await dir.getFileHandle(filename);\n\n return await fileHandle.getFile();\n}\n","import { Signal } from \"signal-polyfill\";\n\nimport { readGroupFile } from \"../storage/read-group-file.js\";\nimport { readGroupFileBytes } from \"../storage/read-group-file-bytes.js\";\nimport { getGroupFile } from \"../storage/get-group-file.js\";\nimport { DEFAULT_GROUP_ID } from \"../config/config.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\nexport interface FileInfo {\n name: string;\n path?: string;\n groupId?: string;\n content: string;\n kind: \"text\" | \"pdf\" | \"binary\";\n binaryContent: Uint8Array | null;\n nativeFile?: File | null;\n mimeType: string;\n}\n\nexport interface FileViewerState {\n file: FileInfo | null;\n openFile: (\n db: ShadowClawDatabase,\n path: string,\n groupId?: string,\n ) => Promise<void>;\n closeFile: () => void;\n}\n\nexport class FileViewerStore {\n private _file: Signal.State<FileInfo | null>;\n\n constructor() {\n this._file = new Signal.State(null);\n }\n\n /**\n * Close the current file\n */\n closeFile() {\n this._file.set(null);\n }\n\n get file(): FileInfo | null {\n return this._file.get();\n }\n\n /**\n * Get current file\n */\n getFile(): FileInfo | null {\n return this.file;\n }\n\n /**\n * Get preview binary MIME type\n */\n getPreviewBinaryMimeType(fileName: string): string {\n const extension = fileName.toLowerCase().split(\".\").pop() || \"\";\n\n const mimeTypes: Record<string, string> = {\n \"3gp\": \"video/3gpp\",\n \"7z\": \"application/x-7z-compressed\",\n aac: \"audio/aac\",\n apng: \"image/apng\",\n avi: \"video/x-msvideo\",\n avif: \"image/avif\",\n bin: \"application/octet-stream\",\n bmp: \"image/bmp\",\n db: \"application/vnd.sqlite3\",\n dll: \"application/octet-stream\",\n dmg: \"application/octet-stream\",\n dylib: \"application/octet-stream\",\n exe: \"application/vnd.microsoft.portable-executable\",\n flac: \"audio/flac\",\n flv: \"video/x-flv\",\n gif: \"image/gif\",\n gz: \"application/gzip\",\n heic: \"image/heic\",\n heif: \"image/heif\",\n ico: \"image/x-icon\",\n iso: \"application/octet-stream\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n m4a: \"audio/mp4\",\n m4v: \"video/mp4\",\n mkv: \"video/x-matroska\",\n mov: \"video/mp4\",\n mp3: \"audio/mpeg\",\n mp4: \"video/mp4\",\n oga: \"audio/ogg\",\n ogg: \"audio/ogg\",\n ogv: \"video/ogg\",\n png: \"image/png\",\n rar: \"application/vnd.rar\",\n so: \"application/octet-stream\",\n sqlite: \"application/vnd.sqlite3\",\n sqlite3: \"application/vnd.sqlite3\",\n tar: \"application/x-tar\",\n tif: \"image/tiff\",\n tiff: \"image/tiff\",\n wasm: \"application/wasm\",\n wav: \"audio/wav\",\n weba: \"audio/webm\",\n webm: \"video/webm\",\n webp: \"image/webp\",\n wmv: \"video/x-ms-wmv\",\n zip: \"application/zip\",\n };\n\n return mimeTypes[extension] || \"\";\n }\n\n /**\n * Open a file\n */\n async openFile(\n db: ShadowClawDatabase,\n path: string,\n groupId: string = DEFAULT_GROUP_ID,\n ): Promise<void> {\n try {\n const name = path.split(\"/\").pop() || path;\n const isPdf = /\\.pdf$/i.test(name);\n const binaryMimeType = this.getPreviewBinaryMimeType(name);\n\n if (isPdf) {\n const binaryContent = await readGroupFileBytes(db, groupId, path);\n\n this._file.set({\n name,\n path,\n groupId,\n content: \"\",\n kind: \"pdf\",\n binaryContent,\n mimeType: \"application/pdf\",\n });\n\n return;\n }\n\n if (binaryMimeType) {\n const nativeFile = await getGroupFile(db, groupId, path);\n\n this._file.set({\n name,\n path,\n groupId,\n content: \"\",\n kind: \"binary\",\n binaryContent: null,\n nativeFile,\n mimeType: binaryMimeType,\n });\n\n return;\n }\n\n const content = await readGroupFile(db, groupId, path);\n this._file.set({\n name,\n path,\n groupId,\n content,\n kind: \"text\",\n binaryContent: null,\n mimeType: \"text/plain\",\n });\n } catch (err) {\n console.error(\"Failed to open file:\", path, err);\n\n throw err;\n }\n }\n}\n\nexport const fileViewerStore = new FileViewerStore();\n"],"mappings":";;;;;;;;;;;AAOA,eAAsB,aACpB,IACA,SACA,UACe;CACf,MAAM,WAAW,MAAM,YAAY,IAAI,OAAO;CAC9C,MAAM,EAAE,MAAM,aAAa,UAAU,QAAQ;CAE7C,IAAI,MAAM;CACV,KAAK,MAAM,OAAO,MAChB,MAAM,MAAM,IAAI,mBAAmB,GAAG;CAKxC,OAAO,OAAM,MAFY,IAAI,cAAc,QAAQ,EAE5B,CAAC,QAAQ;AAClC;;;;ACMA,IAAa,kBAAb,MAA6B;CAC3B,AAAQ;CAER,cAAc;EACZ,KAAK,QAAQ,IAAI,OAAO,MAAM,IAAI;CACpC;;;;CAKA,YAAY;EACV,KAAK,MAAM,IAAI,IAAI;CACrB;CAEA,IAAI,OAAwB;EAC1B,OAAO,KAAK,MAAM,IAAI;CACxB;;;;CAKA,UAA2B;EACzB,OAAO,KAAK;CACd;;;;CAKA,yBAAyB,UAA0B;EAqDjD,OAAO;GAjDL,OAAO;GACP,MAAM;GACN,KAAK;GACL,MAAM;GACN,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,IAAI;GACJ,KAAK;GACL,KAAK;GACL,OAAO;GACP,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,IAAI;GACJ,MAAM;GACN,MAAM;GACN,KAAK;GACL,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,IAAI;GACJ,QAAQ;GACR,SAAS;GACT,KAAK;GACL,KAAK;GACL,MAAM;GACN,MAAM;GACN,KAAK;GACL,MAAM;GACN,MAAM;GACN,MAAM;GACN,KAAK;GACL,KAAK;EAGQ,EApDG,SAAS,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,OAoD9B;CACjC;;;;CAKA,MAAM,SACJ,IACA,MACA,UAAkB,kBACH;EACf,IAAI;GACF,MAAM,OAAO,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK;GACtC,MAAM,QAAQ,UAAU,KAAK,IAAI;GACjC,MAAM,iBAAiB,KAAK,yBAAyB,IAAI;GAEzD,IAAI,OAAO;IACT,MAAM,gBAAgB,MAAM,mBAAmB,IAAI,SAAS,IAAI;IAEhE,KAAK,MAAM,IAAI;KACb;KACA;KACA;KACA,SAAS;KACT,MAAM;KACN;KACA,UAAU;IACZ,CAAC;IAED;GACF;GAEA,IAAI,gBAAgB;IAClB,MAAM,aAAa,MAAM,aAAa,IAAI,SAAS,IAAI;IAEvD,KAAK,MAAM,IAAI;KACb;KACA;KACA;KACA,SAAS;KACT,MAAM;KACN,eAAe;KACf;KACA,UAAU;IACZ,CAAC;IAED;GACF;GAEA,MAAM,UAAU,MAAM,cAAc,IAAI,SAAS,IAAI;GACrD,KAAK,MAAM,IAAI;IACb;IACA;IACA;IACA;IACA,MAAM;IACN,eAAe;IACf,UAAU;GACZ,CAAC;EACH,SAAS,KAAK;GACZ,QAAQ,MAAM,wBAAwB,MAAM,GAAG;GAE/C,MAAM;EACR;CACF;AACF;AAEA,MAAa,kBAAkB,IAAI,gBAAgB"}
1
+ {"version":3,"file":"file-viewer-DBc5dxNy.js","names":[],"sources":["../../src/storage/get-group-file.ts","../../src/stores/file-viewer.ts"],"sourcesContent":["import { getGroupDir } from \"./get-group-dir.js\";\nimport { parsePath } from \"./parse-path.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Get a native File object from a file in a group's workspace.\n */\nexport async function getGroupFile(\n db: ShadowClawDatabase,\n groupId: string,\n filePath: string,\n): Promise<File> {\n const groupDir = await getGroupDir(db, groupId);\n const { dirs, filename } = parsePath(filePath);\n\n let dir = groupDir;\n for (const seg of dirs) {\n dir = await dir.getDirectoryHandle(seg);\n }\n\n const fileHandle = await dir.getFileHandle(filename);\n\n return await fileHandle.getFile();\n}\n","import { Signal } from \"signal-polyfill\";\n\nimport { readGroupFile } from \"../storage/read-group-file.js\";\nimport { readGroupFileBytes } from \"../storage/read-group-file-bytes.js\";\nimport { getGroupFile } from \"../storage/get-group-file.js\";\nimport { DEFAULT_GROUP_ID } from \"../config/config.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\nexport interface FileInfo {\n name: string;\n path?: string;\n groupId?: string;\n content: string;\n kind: \"text\" | \"pdf\" | \"binary\";\n binaryContent: Uint8Array | null;\n nativeFile?: File | null;\n mimeType: string;\n}\n\nexport interface FileViewerState {\n file: FileInfo | null;\n openFile: (\n db: ShadowClawDatabase,\n path: string,\n groupId?: string,\n ) => Promise<void>;\n closeFile: () => void;\n}\n\nexport class FileViewerStore {\n private _file: Signal.State<FileInfo | null>;\n\n constructor() {\n this._file = new Signal.State(null);\n }\n\n /**\n * Close the current file\n */\n closeFile() {\n this._file.set(null);\n }\n\n get file(): FileInfo | null {\n return this._file.get();\n }\n\n /**\n * Get current file\n */\n getFile(): FileInfo | null {\n return this.file;\n }\n\n /**\n * Get preview binary MIME type\n */\n getPreviewBinaryMimeType(fileName: string): string {\n const extension = fileName.toLowerCase().split(\".\").pop() || \"\";\n\n const mimeTypes: Record<string, string> = {\n \"3gp\": \"video/3gpp\",\n \"7z\": \"application/x-7z-compressed\",\n aac: \"audio/aac\",\n apng: \"image/apng\",\n avi: \"video/x-msvideo\",\n avif: \"image/avif\",\n bin: \"application/octet-stream\",\n bmp: \"image/bmp\",\n db: \"application/vnd.sqlite3\",\n dll: \"application/octet-stream\",\n dmg: \"application/octet-stream\",\n dylib: \"application/octet-stream\",\n exe: \"application/vnd.microsoft.portable-executable\",\n flac: \"audio/flac\",\n flv: \"video/x-flv\",\n gif: \"image/gif\",\n gz: \"application/gzip\",\n heic: \"image/heic\",\n heif: \"image/heif\",\n ico: \"image/x-icon\",\n iso: \"application/octet-stream\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n m4a: \"audio/mp4\",\n m4v: \"video/mp4\",\n mkv: \"video/x-matroska\",\n mov: \"video/mp4\",\n mp3: \"audio/mpeg\",\n mp4: \"video/mp4\",\n oga: \"audio/ogg\",\n ogg: \"audio/ogg\",\n ogv: \"video/ogg\",\n png: \"image/png\",\n rar: \"application/vnd.rar\",\n so: \"application/octet-stream\",\n sqlite: \"application/vnd.sqlite3\",\n sqlite3: \"application/vnd.sqlite3\",\n tar: \"application/x-tar\",\n tif: \"image/tiff\",\n tiff: \"image/tiff\",\n wasm: \"application/wasm\",\n wav: \"audio/wav\",\n weba: \"audio/webm\",\n webm: \"video/webm\",\n webp: \"image/webp\",\n wmv: \"video/x-ms-wmv\",\n zip: \"application/zip\",\n };\n\n return mimeTypes[extension] || \"\";\n }\n\n /**\n * Open a file\n */\n async openFile(\n db: ShadowClawDatabase,\n path: string,\n groupId: string = DEFAULT_GROUP_ID,\n ): Promise<void> {\n try {\n const name = path.split(\"/\").pop() || path;\n const isPdf = /\\.pdf$/i.test(name);\n const binaryMimeType = this.getPreviewBinaryMimeType(name);\n\n if (isPdf) {\n const binaryContent = await readGroupFileBytes(db, groupId, path);\n\n this._file.set({\n name,\n path,\n groupId,\n content: \"\",\n kind: \"pdf\",\n binaryContent,\n mimeType: \"application/pdf\",\n });\n\n return;\n }\n\n if (binaryMimeType) {\n const nativeFile = await getGroupFile(db, groupId, path);\n\n this._file.set({\n name,\n path,\n groupId,\n content: \"\",\n kind: \"binary\",\n binaryContent: null,\n nativeFile,\n mimeType: binaryMimeType,\n });\n\n return;\n }\n\n const content = await readGroupFile(db, groupId, path);\n this._file.set({\n name,\n path,\n groupId,\n content,\n kind: \"text\",\n binaryContent: null,\n mimeType: \"text/plain\",\n });\n } catch (err) {\n console.error(\"Failed to open file:\", path, err);\n\n throw err;\n }\n }\n}\n\nexport const fileViewerStore = new FileViewerStore();\n"],"mappings":";;;;;;;;;;;AAOA,eAAsB,aACpB,IACA,SACA,UACe;CACf,MAAM,WAAW,MAAM,YAAY,IAAI,OAAO;CAC9C,MAAM,EAAE,MAAM,aAAa,UAAU,QAAQ;CAE7C,IAAI,MAAM;CACV,KAAK,MAAM,OAAO,MAChB,MAAM,MAAM,IAAI,mBAAmB,GAAG;CAKxC,OAAO,OAAM,MAFY,IAAI,cAAc,QAAQ,EAE5B,CAAC,QAAQ;AAClC;;;;ACMA,IAAa,kBAAb,MAA6B;CAC3B,AAAQ;CAER,cAAc;EACZ,KAAK,QAAQ,IAAI,OAAO,MAAM,IAAI;CACpC;;;;CAKA,YAAY;EACV,KAAK,MAAM,IAAI,IAAI;CACrB;CAEA,IAAI,OAAwB;EAC1B,OAAO,KAAK,MAAM,IAAI;CACxB;;;;CAKA,UAA2B;EACzB,OAAO,KAAK;CACd;;;;CAKA,yBAAyB,UAA0B;EAqDjD,OAAO;GAjDL,OAAO;GACP,MAAM;GACN,KAAK;GACL,MAAM;GACN,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,IAAI;GACJ,KAAK;GACL,KAAK;GACL,OAAO;GACP,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,IAAI;GACJ,MAAM;GACN,MAAM;GACN,KAAK;GACL,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,IAAI;GACJ,QAAQ;GACR,SAAS;GACT,KAAK;GACL,KAAK;GACL,MAAM;GACN,MAAM;GACN,KAAK;GACL,MAAM;GACN,MAAM;GACN,MAAM;GACN,KAAK;GACL,KAAK;EAGQ,EApDG,SAAS,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,OAoD9B;CACjC;;;;CAKA,MAAM,SACJ,IACA,MACA,UAAkB,kBACH;EACf,IAAI;GACF,MAAM,OAAO,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK;GACtC,MAAM,QAAQ,UAAU,KAAK,IAAI;GACjC,MAAM,iBAAiB,KAAK,yBAAyB,IAAI;GAEzD,IAAI,OAAO;IACT,MAAM,gBAAgB,MAAM,mBAAmB,IAAI,SAAS,IAAI;IAEhE,KAAK,MAAM,IAAI;KACb;KACA;KACA;KACA,SAAS;KACT,MAAM;KACN;KACA,UAAU;IACZ,CAAC;IAED;GACF;GAEA,IAAI,gBAAgB;IAClB,MAAM,aAAa,MAAM,aAAa,IAAI,SAAS,IAAI;IAEvD,KAAK,MAAM,IAAI;KACb;KACA;KACA;KACA,SAAS;KACT,MAAM;KACN,eAAe;KACf;KACA,UAAU;IACZ,CAAC;IAED;GACF;GAEA,MAAM,UAAU,MAAM,cAAc,IAAI,SAAS,IAAI;GACrD,KAAK,MAAM,IAAI;IACb;IACA;IACA;IACA;IACA,MAAM;IACN,eAAe;IACf,UAAU;GACZ,CAAC;EACH,SAAS,KAAK;GACZ,QAAQ,MAAM,wBAAwB,MAAM,GAAG;GAE/C,MAAM;EACR;CACF;AACF;AAEA,MAAa,kBAAkB,IAAI,gBAAgB"}
package/dist/lib/index.js CHANGED
@@ -5,7 +5,7 @@ import { IMAGE_MIME_TYPES, MIME_TYPES, getImageMimeType, getMimeType, guessMimeT
5
5
  import { ulid } from "./utils/ulid.js";
6
6
  import { bufferToHex, computeSha256, toArrayBuffer } from "./utils/crypto.js";
7
7
  import { escapeHtml, escapeJsonForHtmlScript, stripHtml, unescapeHtml } from "./utils/html.js";
8
- import { o as handleSpecialLinkNavigation, s as sanitizeHtml } from "./trusted-types-d0cdkut_.js";
8
+ import { o as handleSpecialLinkNavigation, s as sanitizeHtml } from "./trusted-types-0cu5Dm6M.js";
9
9
  import { isTruthyConfigValue, parseBooleanConfig } from "./utils/parse-boolean-config.js";
10
10
  import { asNumber, asStringArray, asUidArray, coerce, coerceArray, coerceNumber, coerceStringArray, coerceUidArray } from "./utils/coerce.js";
11
11
  import { basename, cleanFilename, sanitizeFilename } from "./utils/filename.js";
@@ -19,47 +19,48 @@ import { getNamespacedItem, getNamespacedStorageKey, removeNamespacedItem, setNa
19
19
  import { isPagePathAllowed } from "./utils/is-page-path-allowed.js";
20
20
  import { applyJsonPatch } from "./utils/json-patch.js";
21
21
  import { parseStoredStringList } from "./utils/parse-stored-string-list.js";
22
- import { t as ShadowClaw } from "./shadow-claw-PdOpgTxH.js";
23
- import { t as ShadowClawChat } from "./shadow-claw-chat-B6uuZnJ7.js";
22
+ import { t as ShadowClaw } from "./shadow-claw-DYe9u6Tp.js";
23
+ import { t as ShadowClawChat } from "./shadow-claw-chat-CVc-7ycM.js";
24
24
  import { createFrontmatterDetailsElement, createFrontmatterElement, renderFrontmatterMarkup, splitFrontmatter } from "./utils/frontmatter.js";
25
25
  import { t as ShadowClawA2UI } from "./shadow-claw-a2ui-WmH9P1jy.js";
26
26
  import { formatDateForFilename, formatTimestamp } from "./utils/date.js";
27
27
  import { t as ShadowClawPageHeaderActionButton } from "./shadow-claw-page-header-action-button-BXXm5b5N.js";
28
28
  import { ShadowClawA2UIInterceptor } from "./components/shadow-claw-a2ui-interceptor.js";
29
29
  import { ShadowClawDialog } from "./components/shadow-claw-dialog.js";
30
- import { t as ShadowClawPageHeader } from "./shadow-claw-page-header-B7LFGQRf.js";
31
- import { t as ShadowClawFiles } from "./shadow-claw-files-DhnHbXKf.js";
30
+ import { t as ShadowClawPageHeader } from "./shadow-claw-page-header-VPjYWfsT.js";
31
+ import { t as ShadowClawFiles } from "./shadow-claw-files-vOa9ZWbr.js";
32
32
  import { t as ShadowClawEmptyState } from "./shadow-claw-empty-state-D9bnqWMF.js";
33
- import { t as ShadowClawFileViewer } from "./shadow-claw-file-viewer-C4x1PtB2.js";
33
+ import { t as ShadowClawFileViewer } from "./shadow-claw-file-viewer-DSqn0hgx.js";
34
34
  import { t as ShadowClawPdfViewer } from "./shadow-claw-pdf-viewer-D-7W4CFV.js";
35
- import { t as ShadowClawTasks } from "./shadow-claw-tasks-CAZua0-j.js";
36
- import { n as ShadowClawTerminal } from "./shadow-claw-terminal-B2YJhkJL.js";
35
+ import { t as ShadowClawTasks } from "./shadow-claw-tasks-BQBe4lVi.js";
36
+ import { n as ShadowClawTerminal } from "./shadow-claw-terminal-DPEzTxXv.js";
37
+ import { resolvePageScriptDependencies } from "./utils/resolve-page-script-dependencies.js";
37
38
  import { extractMarkdownDescription, formatSeoTitle, patchHtmlHeadMetadata, resolveCanonicalUrl } from "./utils/seo.js";
38
- import { t as ShadowClawPages } from "./shadow-claw-pages-DLspFqdK.js";
39
- import { t as ShadowClawSettings } from "./shadow-claw-settings-NbvzXASD.js";
40
- import { t as ShadowClawPeerJs } from "./shadow-claw-peerjs-D8xWwuWR.js";
41
- import { t as ShadowClawChannelConfig } from "./shadow-claw-channel-config-ChdZ1iB8.js";
42
- import { t as ShadowClawChannels } from "./shadow-claw-channels-CK9sc7h_.js";
39
+ import { t as ShadowClawPages } from "./shadow-claw-pages-DXrM6hgZ.js";
40
+ import { t as ShadowClawSettings } from "./shadow-claw-settings-DMTx6OS9.js";
41
+ import { t as ShadowClawPeerJs } from "./shadow-claw-peerjs-D3xonez5.js";
42
+ import { t as ShadowClawChannelConfig } from "./shadow-claw-channel-config-buXoz2xv.js";
43
+ import { t as ShadowClawChannels } from "./shadow-claw-channels-5yVJ1gLk.js";
43
44
  import { t as ShadowClawProviderModelPicker } from "./shadow-claw-provider-model-picker-DNnrStnN.js";
44
45
  import { t as ShadowClawProviderModuleSettings } from "./shadow-claw-provider-module-settings-3sCTnCSp.js";
45
- import { t as ShadowClawConversations } from "./shadow-claw-conversations-Dc_Xk2mB.js";
46
+ import { t as ShadowClawConversations } from "./shadow-claw-conversations-PGK5zqn3.js";
46
47
  import { t as ShadowClawToast } from "./shadow-claw-toast-DEqsSFJH.js";
47
- import { t as ShadowClawTools } from "./shadow-claw-tools-CkZWxxTm.js";
48
+ import { t as ShadowClawTools } from "./shadow-claw-tools-BCnU8FaK.js";
48
49
  import { t as ShadowClawActions } from "./shadow-claw-actions-G99P9oxr.js";
49
50
  import { t as ShadowClawCard } from "./shadow-claw-card-D9azfSMu.js";
50
- import { t as ShadowClawAccounts } from "./shadow-claw-accounts-3bR76EOb.js";
51
- import { t as ShadowClawControlPlane } from "./shadow-claw-control-plane-BpRcl312.js";
52
- import { t as ShadowClawGit } from "./shadow-claw-git-BeQ1ElUd.js";
53
- import { t as ShadowClawIntegrations } from "./shadow-claw-integrations-Bbdolk3w.js";
54
- import { t as ShadowClawLlm } from "./shadow-claw-llm-DPda4L3C.js";
55
- import { t as ShadowClawMcpRemote } from "./shadow-claw-mcp-remote-Dn9c30WI.js";
56
- import { t as ShadowClawNetworking } from "./shadow-claw-networking-zqNuyn3-.js";
57
- import { t as ShadowClawNotifications } from "./shadow-claw-notifications-DFgdo33v.js";
58
- import { t as ShadowClawStorage } from "./shadow-claw-storage-B_NAoZmd.js";
59
- import { t as ShadowClawTaskServer } from "./shadow-claw-task-server-BaQJXhYJ.js";
60
- import { t as ShadowClawWebvm } from "./shadow-claw-webvm-BL9cgrP9.js";
51
+ import { t as ShadowClawAccounts } from "./shadow-claw-accounts-D2URoHys.js";
52
+ import { t as ShadowClawControlPlane } from "./shadow-claw-control-plane-B5vsF91B.js";
53
+ import { t as ShadowClawGit } from "./shadow-claw-git-D54Z85Bj.js";
54
+ import { t as ShadowClawIntegrations } from "./shadow-claw-integrations-BTubMH9d.js";
55
+ import { t as ShadowClawLlm } from "./shadow-claw-llm-8koGTNYs.js";
56
+ import { t as ShadowClawMcpRemote } from "./shadow-claw-mcp-remote-C2jwBsQt.js";
57
+ import { t as ShadowClawNetworking } from "./shadow-claw-networking-BV-rna16.js";
58
+ import { t as ShadowClawNotifications } from "./shadow-claw-notifications-Dku7VBLk.js";
59
+ import { t as ShadowClawStorage } from "./shadow-claw-storage-BJLnukxa.js";
60
+ import { t as ShadowClawTaskServer } from "./shadow-claw-task-server-DcMj20hD.js";
61
+ import { t as ShadowClawWebvm } from "./shadow-claw-webvm-CnW-hoJ8.js";
61
62
  import "./components/index.js";
62
63
  import { isLocalOrPrivateHost, isLoopbackHost, isPrivateIp, isRemoteEnvironment } from "./utils/network.js";
63
64
  import { t as utils_exports } from "./utils/index.js";
64
65
 
65
- export { HttpError, IMAGE_MIME_TYPES, MIME_TYPES, RETRYABLE_STATUS_CODES, ShadowClaw, ShadowClawA2UI, ShadowClawA2UIInterceptor, ShadowClawAccounts, ShadowClawActions, ShadowClawCard, ShadowClawChannelConfig, ShadowClawChannels, ShadowClawChat, ShadowClawControlPlane, ShadowClawConversations, ShadowClawDialog, ShadowClawElement, ShadowClawEmptyState, ShadowClawFileViewer, ShadowClawFiles, ShadowClawGit, ShadowClawIntegrations, ShadowClawLlm, ShadowClawMcpRemote, ShadowClawNetworking, ShadowClawNotifications, ShadowClawPageHeader, ShadowClawPageHeaderActionButton, ShadowClawPages, ShadowClawPdfViewer, ShadowClawPeerJs, ShadowClawProviderModelPicker, ShadowClawProviderModuleSettings, ShadowClawSettings, ShadowClawStorage, ShadowClawTaskServer, ShadowClawTasks, ShadowClawTerminal, ShadowClawToast, ShadowClawTools, ShadowClawWebvm, applyJsonPatch, asNumber, asStringArray, asUidArray, base64, base64ToBytes, basename, bufferToHex, bytesToBase64, cleanFilename, coerce, coerceArray, coerceNumber, coerceStringArray, coerceUidArray, computeDelay, computeSha256, createFrontmatterDetailsElement, createFrontmatterElement, escapeHtml, escapeJsonForHtmlScript, extractMarkdownDescription, formatDateForFilename, formatSeoTitle, formatTimestamp, getImageMimeType, getMimeType, getNamespacedItem, getNamespacedStorageKey, guessMimeTypeFromFilename, handleSpecialLinkNavigation, hasPathTraversal, inferAttachmentMimeType, isBinary, isBinaryContent, isBinaryContentType, isImagePath, isLocalOrPrivateHost, isLoopbackHost, isMimeType, isPagePathAllowed, isPrivateIp, isRemoteEnvironment, isRetryableFetchError, isRetryableHttpError, isTruthyConfigValue, mime, normalizeStringList, normalizeWorkspacePath, parseBooleanConfig, parseStoredStringList, patchHtmlHeadMetadata, removeNamespacedItem, renderFrontmatterMarkup, resolveCanonicalUrl, sanitizeFilename, sanitizeHtml, setNamespacedItem, showError, showInfo, showSuccess, showToast, showWarning, sleep, splitFrontmatter, stripHtml, toArrayBuffer, toPosixPath, toastStore, trimSlashes, ulid, unescapeHtml, utils_exports as utils, withRetry, yieldToMain };
66
+ export { HttpError, IMAGE_MIME_TYPES, MIME_TYPES, RETRYABLE_STATUS_CODES, ShadowClaw, ShadowClawA2UI, ShadowClawA2UIInterceptor, ShadowClawAccounts, ShadowClawActions, ShadowClawCard, ShadowClawChannelConfig, ShadowClawChannels, ShadowClawChat, ShadowClawControlPlane, ShadowClawConversations, ShadowClawDialog, ShadowClawElement, ShadowClawEmptyState, ShadowClawFileViewer, ShadowClawFiles, ShadowClawGit, ShadowClawIntegrations, ShadowClawLlm, ShadowClawMcpRemote, ShadowClawNetworking, ShadowClawNotifications, ShadowClawPageHeader, ShadowClawPageHeaderActionButton, ShadowClawPages, ShadowClawPdfViewer, ShadowClawPeerJs, ShadowClawProviderModelPicker, ShadowClawProviderModuleSettings, ShadowClawSettings, ShadowClawStorage, ShadowClawTaskServer, ShadowClawTasks, ShadowClawTerminal, ShadowClawToast, ShadowClawTools, ShadowClawWebvm, applyJsonPatch, asNumber, asStringArray, asUidArray, base64, base64ToBytes, basename, bufferToHex, bytesToBase64, cleanFilename, coerce, coerceArray, coerceNumber, coerceStringArray, coerceUidArray, computeDelay, computeSha256, createFrontmatterDetailsElement, createFrontmatterElement, escapeHtml, escapeJsonForHtmlScript, extractMarkdownDescription, formatDateForFilename, formatSeoTitle, formatTimestamp, getImageMimeType, getMimeType, getNamespacedItem, getNamespacedStorageKey, guessMimeTypeFromFilename, handleSpecialLinkNavigation, hasPathTraversal, inferAttachmentMimeType, isBinary, isBinaryContent, isBinaryContentType, isImagePath, isLocalOrPrivateHost, isLoopbackHost, isMimeType, isPagePathAllowed, isPrivateIp, isRemoteEnvironment, isRetryableFetchError, isRetryableHttpError, isTruthyConfigValue, mime, normalizeStringList, normalizeWorkspacePath, parseBooleanConfig, parseStoredStringList, patchHtmlHeadMetadata, removeNamespacedItem, renderFrontmatterMarkup, resolveCanonicalUrl, resolvePageScriptDependencies, sanitizeFilename, sanitizeHtml, setNamespacedItem, showError, showInfo, showSuccess, showToast, showWarning, sleep, splitFrontmatter, stripHtml, toArrayBuffer, toPosixPath, toastStore, trimSlashes, ulid, unescapeHtml, utils_exports as utils, withRetry, yieldToMain };
@@ -432,7 +432,7 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
432
432
  switch (action) {
433
433
  case "send-message": {
434
434
  if (!args.text) throw new Error("Missing text parameter");
435
- const { orchestratorStore } = await import("./orchestrator-Dh-hnIpK.js").then((n) => n.n);
435
+ const { orchestratorStore } = await import("./orchestrator-Cda13e5U.js").then((n) => n.n);
436
436
  const orch = options.orchestrator || orchestratorStore.orchestrator;
437
437
  const targetGroupId = args.groupId || orchestratorStore.activeGroupId || "br:main";
438
438
  if (orch?.browserChat?.submit) {
@@ -468,7 +468,7 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
468
468
  return { tasks };
469
469
  }
470
470
  case "read-state": {
471
- const { orchestratorStore } = await import("./orchestrator-Dh-hnIpK.js").then((n) => n.n);
471
+ const { orchestratorStore } = await import("./orchestrator-Cda13e5U.js").then((n) => n.n);
472
472
  const orch = options.orchestrator || orchestratorStore.orchestrator;
473
473
  return {
474
474
  clientId,
@@ -481,7 +481,7 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
481
481
  }
482
482
  case "list-tools": {
483
483
  try {
484
- const { getWebMcpTools } = await import("./webmcp-CYTNZfkn.js").then((n) => n.s);
484
+ const { getWebMcpTools } = await import("./webmcp-Bf9rT7uu.js").then((n) => n.c);
485
485
  const webMcpTools = await getWebMcpTools();
486
486
  if (webMcpTools && webMcpTools.length > 0) return { tools: webMcpTools.map((t) => ({
487
487
  name: t.name,
@@ -491,13 +491,13 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
491
491
  })) };
492
492
  } catch (_) {}
493
493
  try {
494
- const { orchestratorStore } = await import("./orchestrator-Dh-hnIpK.js").then((n) => n.n);
494
+ const { orchestratorStore } = await import("./orchestrator-Cda13e5U.js").then((n) => n.n);
495
495
  const orch = options.orchestrator || orchestratorStore.orchestrator || (typeof document !== "undefined" ? document.querySelector("shadow-claw")?.orchestrator : null);
496
496
  const activeGroupId = args.groupId || orch?.activeGroupId || orchestratorStore.activeGroupId || "br:main";
497
497
  const group = orchestratorStore.groups.find((g) => g.groupId === activeGroupId);
498
498
  if (group?.toolTags && group.toolTags.length > 0) {
499
499
  const { TOOL_DEFINITIONS } = await import("./tools-tRG7Gu0x.js").then((n) => n.n);
500
- const { parseWebMcpInputSchema } = await import("./webmcp-CYTNZfkn.js").then((n) => n.s);
500
+ const { parseWebMcpInputSchema } = await import("./webmcp-Bf9rT7uu.js").then((n) => n.c);
501
501
  return { tools: TOOL_DEFINITIONS.filter((t) => group.toolTags.includes(t.name)).map((t) => ({
502
502
  name: t.name,
503
503
  description: t.description,
@@ -506,7 +506,7 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
506
506
  }
507
507
  } catch (_) {}
508
508
  const { TOOL_DEFINITIONS } = await import("./tools-tRG7Gu0x.js").then((n) => n.n);
509
- const { parseWebMcpInputSchema } = await import("./webmcp-CYTNZfkn.js").then((n) => n.s);
509
+ const { parseWebMcpInputSchema } = await import("./webmcp-Bf9rT7uu.js").then((n) => n.c);
510
510
  return { tools: TOOL_DEFINITIONS.map((t) => ({
511
511
  name: t.name,
512
512
  description: t.description,
@@ -516,8 +516,8 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
516
516
  case "invoke-tool": {
517
517
  if (!args.toolName) throw new Error("Missing toolName parameter");
518
518
  try {
519
- const { orchestratorStore } = await import("./orchestrator-Dh-hnIpK.js").then((n) => n.n);
520
- const { toolsStore } = await import("./tools-D7whby3H.js").then((n) => n.n);
519
+ const { orchestratorStore } = await import("./orchestrator-Cda13e5U.js").then((n) => n.n);
520
+ const { toolsStore } = await import("./tools-CP6G0HF7.js").then((n) => n.n);
521
521
  const orch = options.orchestrator || orchestratorStore.orchestrator || (typeof document !== "undefined" ? document.querySelector("shadow-claw")?.orchestrator : null);
522
522
  const activeGroupId = args.groupId || orch?.activeGroupId || orchestratorStore.activeGroupId || "br:main";
523
523
  const group = orchestratorStore.groups.find((g) => g.groupId === activeGroupId);
@@ -544,7 +544,7 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
544
544
  } catch (err) {
545
545
  if (err.message && err.message.includes("is not enabled")) throw err;
546
546
  }
547
- const { executeWebMcpTool } = await import("./webmcp-CYTNZfkn.js").then((n) => n.s);
547
+ const { executeWebMcpTool } = await import("./webmcp-Bf9rT7uu.js").then((n) => n.c);
548
548
  if (typeof ctx.executeTool === "function") {
549
549
  if (matchedTool) try {
550
550
  return { result: await executeWebMcpTool(ctx, matchedTool, args.input) };
@@ -570,7 +570,7 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
570
570
  return { result: await ctx.invoke(args.toolName, typeof args.input === "string" ? JSON.parse(args.input) : args.input || {}) };
571
571
  } catch (_) {}
572
572
  }
573
- const { orchestratorStore } = await import("./orchestrator-Dh-hnIpK.js").then((n) => n.n);
573
+ const { orchestratorStore } = await import("./orchestrator-Cda13e5U.js").then((n) => n.n);
574
574
  const orch = options.orchestrator || orchestratorStore.orchestrator || (typeof document !== "undefined" ? document.querySelector("shadow-claw")?.orchestrator : null);
575
575
  const worker = orch?.agentWorker;
576
576
  if (worker && typeof worker.postMessage === "function") {
@@ -606,7 +606,7 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
606
606
  throw new Error(`Tool ${args.toolName} could not be executed (no context or worker available)`);
607
607
  }
608
608
  case "trigger-backup": {
609
- const { orchestratorStore } = await import("./orchestrator-Dh-hnIpK.js").then((n) => n.n);
609
+ const { orchestratorStore } = await import("./orchestrator-Cda13e5U.js").then((n) => n.n);
610
610
  const targetGroupId = args.groupId || options.orchestrator?.activeGroupId || orchestratorStore.activeGroupId || "br:main";
611
611
  const db = await getDb();
612
612
  const { getGroupDir } = await import("./get-group-dir-C1NEpC5r.js").then((n) => n.n);
@@ -727,4 +727,4 @@ async function ensureControlPlaneConnected(options = {}) {
727
727
 
728
728
  //#endregion
729
729
  export { detectDeviceLabel, ensureControlPlaneConnected, executeClientControlCommand, getOrCreateControlPlaneClientId, isControlPlaneEnabled, shouldConnectControlPlane, stopControlPlaneClient };
730
- //# sourceMappingURL=init-control-plane-l2uFnhGV.js.map
730
+ //# sourceMappingURL=init-control-plane-D-41Fm5q.js.map