shadow-claw 1.31.0 → 1.33.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 (231) hide show
  1. package/.well-known/mcp/server-card.json +1 -1
  2. package/.well-known/mcp.json +1 -1
  3. package/dist/electron/main.cjs +1 -1
  4. package/dist/lib/components/index.js +26 -26
  5. package/dist/lib/components/settings/shadow-claw-accounts.js +1 -1
  6. package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
  7. package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
  8. package/dist/lib/components/settings/shadow-claw-git.js +1 -1
  9. package/dist/lib/components/settings/shadow-claw-integrations.js +1 -1
  10. package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
  11. package/dist/lib/components/settings/shadow-claw-mcp-remote.js +1 -1
  12. package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
  13. package/dist/lib/components/settings/shadow-claw-notifications.js +1 -1
  14. package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
  15. package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
  16. package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
  17. package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
  18. package/dist/lib/components/shadow-claw-a2ui.js +1 -1
  19. package/dist/lib/components/shadow-claw-accounts.js +1 -1
  20. package/dist/lib/components/shadow-claw-channel-config.js +1 -1
  21. package/dist/lib/components/shadow-claw-channels.js +1 -1
  22. package/dist/lib/components/shadow-claw-chat.js +1 -1
  23. package/dist/lib/components/shadow-claw-control-plane.js +1 -1
  24. package/dist/lib/components/shadow-claw-conversations.js +1 -1
  25. package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
  26. package/dist/lib/components/shadow-claw-files.js +1 -1
  27. package/dist/lib/components/shadow-claw-git.js +1 -1
  28. package/dist/lib/components/shadow-claw-integrations.js +1 -1
  29. package/dist/lib/components/shadow-claw-llm.js +1 -1
  30. package/dist/lib/components/shadow-claw-mcp-remote.js +1 -1
  31. package/dist/lib/components/shadow-claw-networking.js +1 -1
  32. package/dist/lib/components/shadow-claw-notifications.js +1 -1
  33. package/dist/lib/components/shadow-claw-page-header.js +1 -1
  34. package/dist/lib/components/shadow-claw-pages.js +1 -1
  35. package/dist/lib/components/shadow-claw-peerjs.js +1 -1
  36. package/dist/lib/components/shadow-claw-settings.js +1 -1
  37. package/dist/lib/components/shadow-claw-storage.js +1 -1
  38. package/dist/lib/components/shadow-claw-task-server.js +1 -1
  39. package/dist/lib/components/shadow-claw-tasks.js +1 -1
  40. package/dist/lib/components/shadow-claw-terminal.js +1 -1
  41. package/dist/lib/components/shadow-claw-tools.js +1 -1
  42. package/dist/lib/components/shadow-claw-webvm.js +1 -1
  43. package/dist/lib/components/shadow-claw.js +1 -1
  44. package/dist/lib/{config-DjZ9QWc4.js → config-BcFbkaQv.js} +21 -4
  45. package/dist/lib/config-BcFbkaQv.js.map +1 -0
  46. package/dist/lib/{configurePeerJs-u7CYSquX.js → configurePeerJs-CBMPHbwa.js} +3 -3
  47. package/dist/lib/{configurePeerJs-u7CYSquX.js.map → configurePeerJs-CBMPHbwa.js.map} +1 -1
  48. package/dist/lib/{connections-BURqMIUv.js → connections-PZrUDf49.js} +2 -2
  49. package/dist/lib/{connections-BURqMIUv.js.map → connections-PZrUDf49.js.map} +1 -1
  50. package/dist/lib/{downloadGroupFile-B8J4up2a.js → downloadGroupFile-DSRUa9Au.js} +2 -2
  51. package/dist/lib/{downloadGroupFile-B8J4up2a.js.map → downloadGroupFile-DSRUa9Au.js.map} +1 -1
  52. package/dist/lib/{file-viewer-DoHM75Jz.js → file-viewer-11VVOpJv.js} +5 -5
  53. package/dist/lib/{file-viewer-DoHM75Jz.js.map → file-viewer-11VVOpJv.js.map} +1 -1
  54. package/dist/lib/{getGroupDir-QrN2aTo8.js → getGroupDir-BxKMYPPm.js} +3 -3
  55. package/dist/lib/{getGroupDir-QrN2aTo8.js.map → getGroupDir-BxKMYPPm.js.map} +1 -1
  56. package/dist/lib/{git-DAP_EV6R.js → git-BppibnJW.js} +27 -10
  57. package/dist/lib/{git-DAP_EV6R.js.map → git-BppibnJW.js.map} +1 -1
  58. package/dist/lib/{iframe-sanitizer-Bujgq14T.js → iframe-sanitizer-Dp8EYffI.js} +2 -2
  59. package/dist/lib/{iframe-sanitizer-Bujgq14T.js.map → iframe-sanitizer-Dp8EYffI.js.map} +1 -1
  60. package/dist/lib/index.js +27 -27
  61. package/dist/lib/{initChatSplitResize-BjiWoqC_.js → initChatSplitResize-CE_kWaLf.js} +2 -2
  62. package/dist/lib/{initChatSplitResize-BjiWoqC_.js.map → initChatSplitResize-CE_kWaLf.js.map} +1 -1
  63. package/dist/lib/{initControlPlane-DCK_SHeR.js → initControlPlane-BRIIOzoH.js} +18 -17
  64. package/dist/lib/{initControlPlane-DCK_SHeR.js.map → initControlPlane-BRIIOzoH.js.map} +1 -1
  65. package/dist/lib/{markdown-BFUTPQoO.js → markdown-Cq4sVwUT.js} +4 -4
  66. package/dist/lib/{markdown-BFUTPQoO.js.map → markdown-Cq4sVwUT.js.map} +1 -1
  67. package/dist/lib/{mcp-reconnect-BxJ77WSb.js → mcp-reconnect-CoHDMjmY.js} +2 -2
  68. package/dist/lib/{mcp-reconnect-BxJ77WSb.js.map → mcp-reconnect-CoHDMjmY.js.map} +1 -1
  69. package/dist/lib/{memoryStorage-D3FBwO9T.js → memoryStorage-DcFWrn_y.js} +2 -2
  70. package/dist/lib/{memoryStorage-D3FBwO9T.js.map → memoryStorage-DcFWrn_y.js.map} +1 -1
  71. package/dist/lib/{orchestrator-DNamnY-k.js → orchestrator-C3TgDZvq.js} +100 -19
  72. package/dist/lib/{orchestrator-DNamnY-k.js.map → orchestrator-C3TgDZvq.js.map} +1 -1
  73. package/dist/lib/{orchestrator-XygttQw2.js → orchestrator-Ce9_lmL2.js} +12 -12
  74. package/dist/lib/{orchestrator-XygttQw2.js.map → orchestrator-Ce9_lmL2.js.map} +1 -1
  75. package/dist/lib/{peerjs-BgkPSHKa.js → peerjs-PTYQ7yEG.js} +6 -6
  76. package/dist/lib/{peerjs-BgkPSHKa.js.map → peerjs-PTYQ7yEG.js.map} +1 -1
  77. package/dist/lib/{push-client-C09NQEk5.js → push-client-DDV5Rcg6.js} +3 -3
  78. package/dist/lib/{push-client-C09NQEk5.js.map → push-client-DDV5Rcg6.js.map} +1 -1
  79. package/dist/lib/{readGroupFileBytes-CSA7u-nJ.js → readGroupFileBytes-7C8G-yps.js} +2 -2
  80. package/dist/lib/{readGroupFileBytes-CSA7u-nJ.js.map → readGroupFileBytes-7C8G-yps.js.map} +1 -1
  81. package/dist/lib/{shadow-claw-vzcggiax.js → shadow-claw-WrWoPqFx.js} +10 -10
  82. package/dist/lib/{shadow-claw-vzcggiax.js.map → shadow-claw-WrWoPqFx.js.map} +1 -1
  83. package/dist/lib/{shadow-claw-a2ui-2I5nffIn.js → shadow-claw-a2ui-CcmJNXQP.js} +2 -2
  84. package/dist/lib/{shadow-claw-a2ui-2I5nffIn.js.map → shadow-claw-a2ui-CcmJNXQP.js.map} +1 -1
  85. package/dist/lib/{shadow-claw-accounts-DMb0y4ca.js → shadow-claw-accounts-CcB2429E.js} +3 -3
  86. package/dist/lib/{shadow-claw-accounts-DMb0y4ca.js.map → shadow-claw-accounts-CcB2429E.js.map} +1 -1
  87. package/dist/lib/{shadow-claw-channel-config-Cl3JvxIJ.js → shadow-claw-channel-config-C4v0h8oa.js} +3 -3
  88. package/dist/lib/{shadow-claw-channel-config-Cl3JvxIJ.js.map → shadow-claw-channel-config-C4v0h8oa.js.map} +1 -1
  89. package/dist/lib/{shadow-claw-channels-kv21lr_O.js → shadow-claw-channels-CyV88k9T.js} +3 -3
  90. package/dist/lib/{shadow-claw-channels-kv21lr_O.js.map → shadow-claw-channels-CyV88k9T.js.map} +1 -1
  91. package/dist/lib/{shadow-claw-chat-Cj1fHQIl.js → shadow-claw-chat-DSYtuZod.js} +11 -11
  92. package/dist/lib/{shadow-claw-chat-Cj1fHQIl.js.map → shadow-claw-chat-DSYtuZod.js.map} +1 -1
  93. package/dist/lib/{shadow-claw-control-plane-DySeKB36.js → shadow-claw-control-plane-DBSGuDT1.js} +7 -7
  94. package/dist/lib/{shadow-claw-control-plane-DySeKB36.js.map → shadow-claw-control-plane-DBSGuDT1.js.map} +1 -1
  95. package/dist/lib/{shadow-claw-conversations-DghueOOD.js → shadow-claw-conversations-Cp8pK4PM.js} +5 -5
  96. package/dist/lib/{shadow-claw-conversations-DghueOOD.js.map → shadow-claw-conversations-Cp8pK4PM.js.map} +1 -1
  97. package/dist/lib/{shadow-claw-file-viewer-C_ITv8T6.js → shadow-claw-file-viewer-B8G8yo48.js} +8 -8
  98. package/dist/lib/{shadow-claw-file-viewer-C_ITv8T6.js.map → shadow-claw-file-viewer-B8G8yo48.js.map} +1 -1
  99. package/dist/lib/{shadow-claw-files-CWBaYt9p.js → shadow-claw-files-D1COKzuC.js} +9 -9
  100. package/dist/lib/{shadow-claw-files-CWBaYt9p.js.map → shadow-claw-files-D1COKzuC.js.map} +1 -1
  101. package/dist/lib/{shadow-claw-git-XfPBpfXd.js → shadow-claw-git-60tWU4Ee.js} +6 -6
  102. package/dist/lib/{shadow-claw-git-XfPBpfXd.js.map → shadow-claw-git-60tWU4Ee.js.map} +1 -1
  103. package/dist/lib/{shadow-claw-integrations-yT7j07TM.js → shadow-claw-integrations-Bw1cG1ze.js} +4 -4
  104. package/dist/lib/{shadow-claw-integrations-yT7j07TM.js.map → shadow-claw-integrations-Bw1cG1ze.js.map} +1 -1
  105. package/dist/lib/{shadow-claw-llm-Gzx4ufL_.js → shadow-claw-llm-By5CvsFJ.js} +6 -6
  106. package/dist/lib/{shadow-claw-llm-Gzx4ufL_.js.map → shadow-claw-llm-By5CvsFJ.js.map} +1 -1
  107. package/dist/lib/{shadow-claw-mcp-remote-DGDWjByQ.js → shadow-claw-mcp-remote-BaNODd1v.js} +4 -4
  108. package/dist/lib/{shadow-claw-mcp-remote-DGDWjByQ.js.map → shadow-claw-mcp-remote-BaNODd1v.js.map} +1 -1
  109. package/dist/lib/{shadow-claw-networking-CYEbc5TR.js → shadow-claw-networking-DtZ5bsTz.js} +2 -2
  110. package/dist/lib/{shadow-claw-networking-CYEbc5TR.js.map → shadow-claw-networking-DtZ5bsTz.js.map} +1 -1
  111. package/dist/lib/{shadow-claw-notifications-DHvkTrgv.js → shadow-claw-notifications-C3VEba_A.js} +3 -3
  112. package/dist/lib/{shadow-claw-notifications-DHvkTrgv.js.map → shadow-claw-notifications-C3VEba_A.js.map} +1 -1
  113. package/dist/lib/{shadow-claw-page-header-DrAcWCZ9.js → shadow-claw-page-header-BLowJopA.js} +2 -2
  114. package/dist/lib/{shadow-claw-page-header-DrAcWCZ9.js.map → shadow-claw-page-header-BLowJopA.js.map} +1 -1
  115. package/dist/lib/{shadow-claw-pages-Bj3w3V6Y.js → shadow-claw-pages-CpeUV-hw.js} +9 -9
  116. package/dist/lib/{shadow-claw-pages-Bj3w3V6Y.js.map → shadow-claw-pages-CpeUV-hw.js.map} +1 -1
  117. package/dist/lib/{shadow-claw-peerjs-B3sx2xLA.js → shadow-claw-peerjs-DYAzJbTy.js} +3 -3
  118. package/dist/lib/{shadow-claw-peerjs-B3sx2xLA.js.map → shadow-claw-peerjs-DYAzJbTy.js.map} +1 -1
  119. package/dist/lib/{shadow-claw-settings-DK-0kp3A.js → shadow-claw-settings-ByxwW3WK.js} +9 -9
  120. package/dist/lib/{shadow-claw-settings-DK-0kp3A.js.map → shadow-claw-settings-ByxwW3WK.js.map} +1 -1
  121. package/dist/lib/{shadow-claw-storage-p9nVMQPF.js → shadow-claw-storage-CsSPYVDJ.js} +5 -5
  122. package/dist/lib/{shadow-claw-storage-p9nVMQPF.js.map → shadow-claw-storage-CsSPYVDJ.js.map} +1 -1
  123. package/dist/lib/{shadow-claw-task-server-BNKCWG2M.js → shadow-claw-task-server-De2WCEw4.js} +2 -2
  124. package/dist/lib/{shadow-claw-task-server-BNKCWG2M.js.map → shadow-claw-task-server-De2WCEw4.js.map} +1 -1
  125. package/dist/lib/{shadow-claw-tasks-Dbq9rUku.js → shadow-claw-tasks-zHWT4GaE.js} +7 -7
  126. package/dist/lib/{shadow-claw-tasks-Dbq9rUku.js.map → shadow-claw-tasks-zHWT4GaE.js.map} +1 -1
  127. package/dist/lib/{shadow-claw-terminal-Wk2qRWJ9.js → shadow-claw-terminal-Bpawfv4N.js} +2 -2
  128. package/dist/lib/{shadow-claw-terminal-Wk2qRWJ9.js.map → shadow-claw-terminal-Bpawfv4N.js.map} +1 -1
  129. package/dist/lib/{shadow-claw-tools-C9TEf2k7.js → shadow-claw-tools-BbKdWcps.js} +7 -7
  130. package/dist/lib/{shadow-claw-tools-C9TEf2k7.js.map → shadow-claw-tools-BbKdWcps.js.map} +1 -1
  131. package/dist/lib/{shadow-claw-webvm-VoKerWW8.js → shadow-claw-webvm-DLqK0AxW.js} +3 -3
  132. package/dist/lib/{shadow-claw-webvm-VoKerWW8.js.map → shadow-claw-webvm-DLqK0AxW.js.map} +1 -1
  133. package/dist/lib/subsystems/git/git.d.ts +8 -1
  134. package/dist/lib/subsystems/git/types.d.ts +7 -1
  135. package/dist/lib/subsystems/mcp/webmcp.d.ts +37 -0
  136. package/dist/lib/subsystems/providers/model-registry.d.ts +4 -1
  137. package/dist/lib/subsystems/providers/providers.d.ts +10 -0
  138. package/dist/lib/{syncWebMcpRegistration-DEs4JjI_.js → syncWebMcpRegistration-mlbbvcdm.js} +5 -5
  139. package/dist/lib/{syncWebMcpRegistration-DEs4JjI_.js.map → syncWebMcpRegistration-mlbbvcdm.js.map} +1 -1
  140. package/dist/lib/{tools-f1WPNDSS.js → tools-Bb2ujM2E.js} +4 -4
  141. package/dist/lib/{tools-f1WPNDSS.js.map → tools-Bb2ujM2E.js.map} +1 -1
  142. package/dist/lib/utils/index.js +1 -1
  143. package/dist/lib/utils/utils.js +1 -1
  144. package/dist/lib/{utils-B99XP70b.js → utils-mpsYPfS7.js} +3 -3
  145. package/dist/lib/{utils-B99XP70b.js.map → utils-mpsYPfS7.js.map} +1 -1
  146. package/dist/lib/webmcp-BVR2lBVo.js +1544 -0
  147. package/dist/lib/webmcp-BVR2lBVo.js.map +1 -0
  148. package/dist/public/.well-known/mcp/server-card.json +1 -1
  149. package/dist/public/.well-known/mcp.json +1 -1
  150. package/dist/public/agent.worker.js +44 -44
  151. package/dist/public/config-BqecTktB.js +1 -0
  152. package/dist/public/{configurePeerJs-B68egTBd.js → configurePeerJs-BPKfWuEt.js} +1 -1
  153. package/dist/public/{connections-6575KDGE.js → connections-C_3tYsmX.js} +1 -1
  154. package/dist/public/{custom-element-security-Da_6HQ6X.js → custom-element-security-DXwU3Lae.js} +1 -1
  155. package/dist/public/docs/example/article/index.html +2 -2
  156. package/dist/public/docs/publishing/index.html +2 -2
  157. package/dist/public/docs/skill-creator/index.html +2 -2
  158. package/dist/public/docs/subsystems/tools.md +4 -3
  159. package/dist/public/docs/subsystems/webmcp.md +58 -13
  160. package/dist/public/{downloadGroupFile-Dj-AMNsd.js → downloadGroupFile-DTyf5DIC.js} +1 -1
  161. package/dist/public/{e2e-bridge-DQ4Mb_eC.js → e2e-bridge-DXwWCQKw.js} +1 -1
  162. package/dist/public/{file-viewer-BqNHyqzy.js → file-viewer-ConEyDDG.js} +1 -1
  163. package/dist/public/{getGroupDir-BwprrdrQ.js → getGroupDir-ZfZsiq6d.js} +1 -1
  164. package/dist/public/git-BtBaLC1-.js +100 -0
  165. package/dist/public/git-DgFF7xTW.js +100 -0
  166. package/dist/public/{iframe-sanitizer-viROQkRn.js → iframe-sanitizer-Corkvo_d.js} +1 -1
  167. package/dist/public/index.html +2 -2
  168. package/dist/public/index.js +1 -1
  169. package/dist/public/{initChatSplitResize-BA18wLQQ.js → initChatSplitResize-CUc-TEmT.js} +1 -1
  170. package/dist/public/{initControlPlane-DG_LcLDy.js → initControlPlane-B_uYS8a4.js} +1 -1
  171. package/dist/public/main/index.html +2 -2
  172. package/dist/public/main/memory/index.html +2 -2
  173. package/dist/public/{markdown-eFKxxpVP.js → markdown-Cfa6GuJs.js} +1 -1
  174. package/dist/public/{mcp-reconnect-CBHuaYdF.js → mcp-reconnect-CUOkdPEz.js} +1 -1
  175. package/dist/public/{memoryStorage-C1llaYus.js → memoryStorage-Bh8fjmip.js} +1 -1
  176. package/dist/public/{orchestrator-BXwxW4N2.js → orchestrator-BcSzrg6E.js} +2 -2
  177. package/dist/public/{orchestrator-DAJkyJmV.js → orchestrator-Bi5OdVZD.js} +11 -11
  178. package/dist/public/{peerjs-BaDbzfgl.js → peerjs-CzCXG-NW.js} +1 -1
  179. package/dist/public/{push-client-B1CCaldJ.js → push-client-Cr3Ruahp.js} +1 -1
  180. package/dist/public/service-worker.js +1 -1
  181. package/dist/public/{shadow-claw-CpBmveOh.js → shadow-claw-CzUYuuOa.js} +2 -2
  182. package/dist/public/{shadow-claw-accounts-D1y-zbMs.js → shadow-claw-accounts-BgIHB_aP.js} +1 -1
  183. package/dist/public/{shadow-claw-channels-7Oew09u0.js → shadow-claw-channels-Ce_trJ5D.js} +1 -1
  184. package/dist/public/{shadow-claw-chat-CskwjDzZ.js → shadow-claw-chat-CdECLLwL.js} +1 -1
  185. package/dist/public/{shadow-claw-control-plane-BqjEyhx7.js → shadow-claw-control-plane-DM62UmOz.js} +2 -2
  186. package/dist/public/{shadow-claw-conversations-ClGgBPVY.js → shadow-claw-conversations-AM5g3C00.js} +1 -1
  187. package/dist/public/{shadow-claw-file-viewer-rDepUwFJ.js → shadow-claw-file-viewer-BP7gWS5g.js} +1 -1
  188. package/dist/public/{shadow-claw-files-C0r05PYf.js → shadow-claw-files-RPPGszcK.js} +1 -1
  189. package/dist/public/{shadow-claw-git-CXrECHKy.js → shadow-claw-git-BsHEvLrb.js} +2 -2
  190. package/dist/public/{shadow-claw-integrations-CRGL78Fy.js → shadow-claw-integrations-B0vbcOqg.js} +1 -1
  191. package/dist/public/{shadow-claw-llm-jeGVNciG.js → shadow-claw-llm-FNNamrc_.js} +2 -2
  192. package/dist/public/{shadow-claw-mcp-remote-DyGnK4S_.js → shadow-claw-mcp-remote-7mDgniQu.js} +1 -1
  193. package/dist/public/{shadow-claw-networking--q6MgEAT.js → shadow-claw-networking-CGsetaLp.js} +1 -1
  194. package/dist/public/{shadow-claw-notifications-CrFUF0fl.js → shadow-claw-notifications-pnwRcR-4.js} +1 -1
  195. package/dist/public/{shadow-claw-page-header-DA-FG08G.js → shadow-claw-page-header-BUy15Poz.js} +1 -1
  196. package/dist/public/{shadow-claw-pages-_n1wVXAV.js → shadow-claw-pages-ILAjGWNk.js} +1 -1
  197. package/dist/public/{shadow-claw-settings-5yIfa3ie.js → shadow-claw-settings-Bx5IgVqN.js} +3 -3
  198. package/dist/public/{shadow-claw-storage-PLX9EFGn.js → shadow-claw-storage-PAtNykaF.js} +1 -1
  199. package/dist/public/{shadow-claw-task-server-BMps7aSr.js → shadow-claw-task-server-Cbbi_2OO.js} +1 -1
  200. package/dist/public/{shadow-claw-tasks-CHO1xvsu.js → shadow-claw-tasks-B-jKYWZJ.js} +1 -1
  201. package/dist/public/{shadow-claw-terminal-BJnSXRsb.js → shadow-claw-terminal-BRejND-Z.js} +1 -1
  202. package/dist/public/{shadow-claw-tools-BHfxRckC.js → shadow-claw-tools-DNQe3oa-.js} +1 -1
  203. package/dist/public/{shadow-claw-webvm-CyI23mQT.js → shadow-claw-webvm-BFuwRifU.js} +1 -1
  204. package/dist/public/{syncWebMcpRegistration-R0tha3kP.js → syncWebMcpRegistration-FxKAPwaz.js} +1 -1
  205. package/dist/public/theme-init.js +1 -1
  206. package/dist/public/{tools-Cp1gequ8.js → tools-BwQKGsro.js} +1 -1
  207. package/dist/public/transformers-js.worker.js +1 -1
  208. package/dist/public/webmcp-C28PAlfy.js +1 -0
  209. package/dist/server.js +1 -1
  210. package/package.json +3 -3
  211. package/src/core/utils/initControlPlane.test.ts +122 -1
  212. package/src/core/utils/initControlPlane.ts +12 -8
  213. package/src/storage/staticMainSite.ts +16 -2
  214. package/src/stores/orchestrator.test.ts +33 -0
  215. package/src/stores/orchestrator.ts +36 -0
  216. package/src/subsystems/git/git.test.ts +99 -0
  217. package/src/subsystems/git/git.ts +92 -12
  218. package/src/subsystems/git/types.ts +7 -0
  219. package/src/subsystems/mcp/webmcp.test.ts +253 -1
  220. package/src/subsystems/mcp/webmcp.ts +147 -4
  221. package/src/subsystems/providers/model-registry.test.ts +139 -0
  222. package/src/subsystems/providers/model-registry.ts +54 -2
  223. package/src/subsystems/providers/providers.test.ts +329 -0
  224. package/src/subsystems/providers/providers.ts +135 -11
  225. package/dist/lib/config-DjZ9QWc4.js.map +0 -1
  226. package/dist/lib/webmcp-BC8_WafM.js +0 -1710
  227. package/dist/lib/webmcp-BC8_WafM.js.map +0 -1
  228. package/dist/public/config-Bnwx4EfS.js +0 -1
  229. package/dist/public/git-BDaM5VT5.js +0 -100
  230. package/dist/public/git-D4n46G9B.js +0 -100
  231. package/dist/public/webmcp-DBONjQWd.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"syncWebMcpRegistration-DEs4JjI_.js","names":[],"sources":["../../src/subsystems/skills/tool.ts","../../src/core/orchestrator/utils/syncWebMcpRegistration.ts"],"sourcesContent":["import type { ToolDefinition } from \"../../subsystems/tools/types.js\";\n\nexport const activate_skill: ToolDefinition = {\n name: \"activate_skill\",\n description:\n \"Load the full instructions for a workspace skill when its description matches the current task.\",\n input_schema: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n description: \"The exact skill name from the available skills catalog.\",\n },\n },\n required: [\"name\"],\n },\n};\n","import { orchestratorStore } from \"../../../stores/orchestrator.js\";\nimport { toolsStore } from \"../../../stores/tools.js\";\n\nimport {\n setWebMcpMode as applyWebMcpMode,\n registerWebMcpTools,\n unregisterWebMcpTools,\n} from \"../../../subsystems/mcp/webmcp.js\";\n\nimport { effect } from \"../../effect.js\";\nimport { handleWorkerMessage } from \"./handleWorkerMessage.js\";\n\nimport { CONFIG_KEYS } from \"../../../config/config.js\";\nimport { setConfig } from \"../../../db/setConfig.js\";\n\nimport type { ShadowClawDatabase } from \"../../../db/db.js\";\nimport type { WebMcpMode } from \"../../../subsystems/mcp/webmcp.js\";\nimport type { OrchestratorState } from \"../orchestrator-state.js\";\nimport type { Orchestrator } from \"../orchestrator.js\";\n\nimport { discoverSkills } from \"../../../subsystems/skills/discoverSkills.js\";\nimport { activate_skill } from \"../../../subsystems/skills/tool.js\";\n\nexport function syncWebMcpRegistration(\n orchestrator: Orchestrator,\n db: ShadowClawDatabase,\n): void {\n if (typeof orchestrator.webMcpEffectCleanup === \"function\") {\n orchestrator.webMcpEffectCleanup();\n orchestrator.webMcpEffectCleanup = null;\n }\n\n if (!orchestrator.webMcpToolsEnabled) {\n unregisterWebMcpTools();\n\n return;\n }\n\n // Register WebMCP tools and re-register when tool config changes.\n // This effect runs once immediately to perform the initial registration.\n // We intentionally do NOT call isWebMcpSupported() here — that accesses\n // the browser's modelContext API which can crash Chrome Canary's\n // early-preview renderer. Instead, registerWebMcpTools handles feature detection\n // internally and skips modelContext access entirely when 0 tools are\n // passed.\n orchestrator.webMcpEffectCleanup = effect(() => {\n // Access signals to establish tracking.\n const activeGroupId = orchestratorStore.activeGroupId;\n const allTools = toolsStore.allTools;\n const globalTools = toolsStore.enabledTools;\n void toolsStore.declarativeTools;\n void toolsStore.declarativeToolNamesEnabled;\n const groups = orchestratorStore.groups;\n const group = groups.find((g) => g.groupId === activeGroupId);\n\n // Serialize WebMCP registration calls to prevent overlapping unregister/register cycles.\n orchestrator.webMcpRegistrationLock = orchestrator.webMcpRegistrationLock\n .then(async () => {\n unregisterWebMcpTools();\n // Small delay to allow the browser's ModelContext to process the unregistrations.\n await new Promise((resolve) => setTimeout(resolve, 0));\n\n let declarativeTools: any[] = [];\n try {\n declarativeTools = await toolsStore.refreshDeclarativeTools(\n db,\n activeGroupId,\n );\n } catch {\n // Ignore OPFS load errors\n }\n\n const enabledDeclarativeTools = declarativeTools.filter((dt) =>\n toolsStore.isDeclarativeToolEnabled(dt.name),\n );\n\n const candidateTools = [...allTools, ...declarativeTools];\n let tools =\n group?.toolTags && group.toolTags.length > 0\n ? candidateTools.filter((t) => group.toolTags!.includes(t.name))\n : [...globalTools, ...enabledDeclarativeTools];\n\n let skillDiscovery: { skills: any[] } = { skills: [] };\n try {\n skillDiscovery = await discoverSkills(db, activeGroupId);\n } catch {\n // Ignore OPFS load errors\n }\n\n if (\n skillDiscovery.skills.length > 0 &&\n !tools.some((t) => t.name === activate_skill.name)\n ) {\n tools = [...tools, activate_skill];\n }\n\n await registerWebMcpTools(\n orchestrator.agentWorker,\n async (msg) => {\n await handleWorkerMessage(orchestrator, db, msg);\n },\n activeGroupId,\n tools,\n );\n })\n .catch((err) => {\n console.error(\"WebMCP registration failed:\", err);\n });\n });\n}\nexport async function setWebMcpMode(\n _state: Pick<\n OrchestratorState,\n \"webMcpToolsEnabled\" | \"webMcpRegistrationLock\"\n > & {\n webMcpEffectCleanup: (() => void) | null;\n agentWorker: Worker | null;\n },\n db: ShadowClawDatabase,\n mode: WebMcpMode,\n syncDeps: { orchestrator: Orchestrator },\n): Promise<void> {\n // Unregister with old mode, switch, re-register with new mode.\n unregisterWebMcpTools();\n applyWebMcpMode(mode);\n\n await setConfig(db, CONFIG_KEYS.WEBMCP_MODE, mode);\n\n syncWebMcpRegistration(syncDeps.orchestrator, db);\n}\n\nexport async function setWebMcpToolsEnabled(\n state: Pick<OrchestratorState, \"webMcpToolsEnabled\">,\n db: ShadowClawDatabase,\n enabled: boolean,\n syncDeps: { orchestrator: Orchestrator },\n): Promise<void> {\n state.webMcpToolsEnabled = !!enabled;\n\n await setConfig(\n db,\n CONFIG_KEYS.WEBMCP_TOOLS_ENABLED,\n state.webMcpToolsEnabled ? \"true\" : \"false\",\n );\n\n syncWebMcpRegistration(syncDeps.orchestrator, db);\n}\n"],"mappings":";;;;;;;;AAEA,MAAa,iBAAiC;CAC5C,MAAM;CACN,aACE;CACF,cAAc;EACZ,MAAM;EACN,YAAY,EACV,MAAM;GACJ,MAAM;GACN,aAAa;EACf,EACF;EACA,UAAU,CAAC,MAAM;CACnB;AACF;;;;ACOA,SAAgB,uBACd,cACA,IACM;CACN,IAAI,OAAO,aAAa,wBAAwB,YAAY;EAC1D,aAAa,oBAAoB;EACjC,aAAa,sBAAsB;CACrC;CAEA,IAAI,CAAC,aAAa,oBAAoB;EACpC,sBAAsB;EAEtB;CACF;CASA,aAAa,sBAAsB,aAAa;EAE9C,MAAM,gBAAgB,kBAAkB;EACxC,MAAM,WAAW,WAAW;EAC5B,MAAM,cAAc,WAAW;EAC/B,AAAK,WAAW;EAChB,AAAK,WAAW;EAEhB,MAAM,QADS,kBAAkB,OACZ,MAAM,MAAM,EAAE,YAAY,aAAa;EAG5D,aAAa,yBAAyB,aAAa,uBAChD,KAAK,YAAY;GAChB,sBAAsB;GAEtB,MAAM,IAAI,SAAS,YAAY,WAAW,SAAS,CAAC,CAAC;GAErD,IAAI,mBAA0B,CAAC;GAC/B,IAAI;IACF,mBAAmB,MAAM,WAAW,wBAClC,IACA,aACF;GACF,QAAQ,CAER;GAEA,MAAM,0BAA0B,iBAAiB,QAAQ,OACvD,WAAW,yBAAyB,GAAG,IAAI,CAC7C;GAEA,MAAM,iBAAiB,CAAC,GAAG,UAAU,GAAG,gBAAgB;GACxD,IAAI,QACF,OAAO,YAAY,MAAM,SAAS,SAAS,IACvC,eAAe,QAAQ,MAAM,MAAM,SAAU,SAAS,EAAE,IAAI,CAAC,IAC7D,CAAC,GAAG,aAAa,GAAG,uBAAuB;GAEjD,IAAI,iBAAoC,EAAE,QAAQ,CAAC,EAAE;GACrD,IAAI;IACF,iBAAiB,MAAM,eAAe,IAAI,aAAa;GACzD,QAAQ,CAER;GAEA,IACE,eAAe,OAAO,SAAS,KAC/B,CAAC,MAAM,MAAM,MAAM,EAAE,SAAS,eAAe,IAAI,GAEjD,QAAQ,CAAC,GAAG,OAAO,cAAc;GAGnC,MAAM,oBACJ,aAAa,aACb,OAAO,QAAQ;IACb,MAAM,oBAAoB,cAAc,IAAI,GAAG;GACjD,GACA,eACA,KACF;EACF,CAAC,CAAC,CACD,OAAO,QAAQ;GACd,QAAQ,MAAM,+BAA+B,GAAG;EAClD,CAAC;CACL,CAAC;AACH;AACA,eAAsB,cACpB,QAOA,IACA,MACA,UACe;CAEf,sBAAsB;CACtB,gBAAgB,IAAI;CAEpB,MAAM,UAAU,IAAI,YAAY,aAAa,IAAI;CAEjD,uBAAuB,SAAS,cAAc,EAAE;AAClD;AAEA,eAAsB,sBACpB,OACA,IACA,SACA,UACe;CACf,MAAM,qBAAqB,CAAC,CAAC;CAE7B,MAAM,UACJ,IACA,YAAY,sBACZ,MAAM,qBAAqB,SAAS,OACtC;CAEA,uBAAuB,SAAS,cAAc,EAAE;AAClD"}
1
+ {"version":3,"file":"syncWebMcpRegistration-mlbbvcdm.js","names":[],"sources":["../../src/subsystems/skills/tool.ts","../../src/core/orchestrator/utils/syncWebMcpRegistration.ts"],"sourcesContent":["import type { ToolDefinition } from \"../../subsystems/tools/types.js\";\n\nexport const activate_skill: ToolDefinition = {\n name: \"activate_skill\",\n description:\n \"Load the full instructions for a workspace skill when its description matches the current task.\",\n input_schema: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n description: \"The exact skill name from the available skills catalog.\",\n },\n },\n required: [\"name\"],\n },\n};\n","import { orchestratorStore } from \"../../../stores/orchestrator.js\";\nimport { toolsStore } from \"../../../stores/tools.js\";\n\nimport {\n setWebMcpMode as applyWebMcpMode,\n registerWebMcpTools,\n unregisterWebMcpTools,\n} from \"../../../subsystems/mcp/webmcp.js\";\n\nimport { effect } from \"../../effect.js\";\nimport { handleWorkerMessage } from \"./handleWorkerMessage.js\";\n\nimport { CONFIG_KEYS } from \"../../../config/config.js\";\nimport { setConfig } from \"../../../db/setConfig.js\";\n\nimport type { ShadowClawDatabase } from \"../../../db/db.js\";\nimport type { WebMcpMode } from \"../../../subsystems/mcp/webmcp.js\";\nimport type { OrchestratorState } from \"../orchestrator-state.js\";\nimport type { Orchestrator } from \"../orchestrator.js\";\n\nimport { discoverSkills } from \"../../../subsystems/skills/discoverSkills.js\";\nimport { activate_skill } from \"../../../subsystems/skills/tool.js\";\n\nexport function syncWebMcpRegistration(\n orchestrator: Orchestrator,\n db: ShadowClawDatabase,\n): void {\n if (typeof orchestrator.webMcpEffectCleanup === \"function\") {\n orchestrator.webMcpEffectCleanup();\n orchestrator.webMcpEffectCleanup = null;\n }\n\n if (!orchestrator.webMcpToolsEnabled) {\n unregisterWebMcpTools();\n\n return;\n }\n\n // Register WebMCP tools and re-register when tool config changes.\n // This effect runs once immediately to perform the initial registration.\n // We intentionally do NOT call isWebMcpSupported() here — that accesses\n // the browser's modelContext API which can crash Chrome Canary's\n // early-preview renderer. Instead, registerWebMcpTools handles feature detection\n // internally and skips modelContext access entirely when 0 tools are\n // passed.\n orchestrator.webMcpEffectCleanup = effect(() => {\n // Access signals to establish tracking.\n const activeGroupId = orchestratorStore.activeGroupId;\n const allTools = toolsStore.allTools;\n const globalTools = toolsStore.enabledTools;\n void toolsStore.declarativeTools;\n void toolsStore.declarativeToolNamesEnabled;\n const groups = orchestratorStore.groups;\n const group = groups.find((g) => g.groupId === activeGroupId);\n\n // Serialize WebMCP registration calls to prevent overlapping unregister/register cycles.\n orchestrator.webMcpRegistrationLock = orchestrator.webMcpRegistrationLock\n .then(async () => {\n unregisterWebMcpTools();\n // Small delay to allow the browser's ModelContext to process the unregistrations.\n await new Promise((resolve) => setTimeout(resolve, 0));\n\n let declarativeTools: any[] = [];\n try {\n declarativeTools = await toolsStore.refreshDeclarativeTools(\n db,\n activeGroupId,\n );\n } catch {\n // Ignore OPFS load errors\n }\n\n const enabledDeclarativeTools = declarativeTools.filter((dt) =>\n toolsStore.isDeclarativeToolEnabled(dt.name),\n );\n\n const candidateTools = [...allTools, ...declarativeTools];\n let tools =\n group?.toolTags && group.toolTags.length > 0\n ? candidateTools.filter((t) => group.toolTags!.includes(t.name))\n : [...globalTools, ...enabledDeclarativeTools];\n\n let skillDiscovery: { skills: any[] } = { skills: [] };\n try {\n skillDiscovery = await discoverSkills(db, activeGroupId);\n } catch {\n // Ignore OPFS load errors\n }\n\n if (\n skillDiscovery.skills.length > 0 &&\n !tools.some((t) => t.name === activate_skill.name)\n ) {\n tools = [...tools, activate_skill];\n }\n\n await registerWebMcpTools(\n orchestrator.agentWorker,\n async (msg) => {\n await handleWorkerMessage(orchestrator, db, msg);\n },\n activeGroupId,\n tools,\n );\n })\n .catch((err) => {\n console.error(\"WebMCP registration failed:\", err);\n });\n });\n}\nexport async function setWebMcpMode(\n _state: Pick<\n OrchestratorState,\n \"webMcpToolsEnabled\" | \"webMcpRegistrationLock\"\n > & {\n webMcpEffectCleanup: (() => void) | null;\n agentWorker: Worker | null;\n },\n db: ShadowClawDatabase,\n mode: WebMcpMode,\n syncDeps: { orchestrator: Orchestrator },\n): Promise<void> {\n // Unregister with old mode, switch, re-register with new mode.\n unregisterWebMcpTools();\n applyWebMcpMode(mode);\n\n await setConfig(db, CONFIG_KEYS.WEBMCP_MODE, mode);\n\n syncWebMcpRegistration(syncDeps.orchestrator, db);\n}\n\nexport async function setWebMcpToolsEnabled(\n state: Pick<OrchestratorState, \"webMcpToolsEnabled\">,\n db: ShadowClawDatabase,\n enabled: boolean,\n syncDeps: { orchestrator: Orchestrator },\n): Promise<void> {\n state.webMcpToolsEnabled = !!enabled;\n\n await setConfig(\n db,\n CONFIG_KEYS.WEBMCP_TOOLS_ENABLED,\n state.webMcpToolsEnabled ? \"true\" : \"false\",\n );\n\n syncWebMcpRegistration(syncDeps.orchestrator, db);\n}\n"],"mappings":";;;;;;;;AAEA,MAAa,iBAAiC;CAC5C,MAAM;CACN,aACE;CACF,cAAc;EACZ,MAAM;EACN,YAAY,EACV,MAAM;GACJ,MAAM;GACN,aAAa;EACf,EACF;EACA,UAAU,CAAC,MAAM;CACnB;AACF;;;;ACOA,SAAgB,uBACd,cACA,IACM;CACN,IAAI,OAAO,aAAa,wBAAwB,YAAY;EAC1D,aAAa,oBAAoB;EACjC,aAAa,sBAAsB;CACrC;CAEA,IAAI,CAAC,aAAa,oBAAoB;EACpC,sBAAsB;EAEtB;CACF;CASA,aAAa,sBAAsB,aAAa;EAE9C,MAAM,gBAAgB,kBAAkB;EACxC,MAAM,WAAW,WAAW;EAC5B,MAAM,cAAc,WAAW;EAC/B,AAAK,WAAW;EAChB,AAAK,WAAW;EAEhB,MAAM,QADS,kBAAkB,OACZ,MAAM,MAAM,EAAE,YAAY,aAAa;EAG5D,aAAa,yBAAyB,aAAa,uBAChD,KAAK,YAAY;GAChB,sBAAsB;GAEtB,MAAM,IAAI,SAAS,YAAY,WAAW,SAAS,CAAC,CAAC;GAErD,IAAI,mBAA0B,CAAC;GAC/B,IAAI;IACF,mBAAmB,MAAM,WAAW,wBAClC,IACA,aACF;GACF,QAAQ,CAER;GAEA,MAAM,0BAA0B,iBAAiB,QAAQ,OACvD,WAAW,yBAAyB,GAAG,IAAI,CAC7C;GAEA,MAAM,iBAAiB,CAAC,GAAG,UAAU,GAAG,gBAAgB;GACxD,IAAI,QACF,OAAO,YAAY,MAAM,SAAS,SAAS,IACvC,eAAe,QAAQ,MAAM,MAAM,SAAU,SAAS,EAAE,IAAI,CAAC,IAC7D,CAAC,GAAG,aAAa,GAAG,uBAAuB;GAEjD,IAAI,iBAAoC,EAAE,QAAQ,CAAC,EAAE;GACrD,IAAI;IACF,iBAAiB,MAAM,eAAe,IAAI,aAAa;GACzD,QAAQ,CAER;GAEA,IACE,eAAe,OAAO,SAAS,KAC/B,CAAC,MAAM,MAAM,MAAM,EAAE,SAAS,eAAe,IAAI,GAEjD,QAAQ,CAAC,GAAG,OAAO,cAAc;GAGnC,MAAM,oBACJ,aAAa,aACb,OAAO,QAAQ;IACb,MAAM,oBAAoB,cAAc,IAAI,GAAG;GACjD,GACA,eACA,KACF;EACF,CAAC,CAAC,CACD,OAAO,QAAQ;GACd,QAAQ,MAAM,+BAA+B,GAAG;EAClD,CAAC;CACL,CAAC;AACH;AACA,eAAsB,cACpB,QAOA,IACA,MACA,UACe;CAEf,sBAAsB;CACtB,gBAAgB,IAAI;CAEpB,MAAM,UAAU,IAAI,YAAY,aAAa,IAAI;CAEjD,uBAAuB,SAAS,cAAc,EAAE;AAClD;AAEA,eAAsB,sBACpB,OACA,IACA,SACA,UACe;CACf,MAAM,qBAAqB,CAAC,CAAC;CAE7B,MAAM,UACJ,IACA,YAAY,sBACZ,MAAM,qBAAqB,SAAS,OACtC;CAEA,uBAAuB,SAAS,cAAc,EAAE;AAClD"}
@@ -1,13 +1,13 @@
1
1
  import { i as __toESM, n as __exportAll, t as __commonJSMin } from "./rolldown-runtime-DZ8SGSJo.js";
2
2
  import { t as Signal } from "./dist-Bxg3C_zy.js";
3
- import { a as getStorageStatus, o as invalidateStorageRoot, r as getOpfsRootDirName, s as isStaleHandleError, t as getGroupDir } from "./getGroupDir-QrN2aTo8.js";
4
- import { o as DEFAULT_GROUP_ID, r as CONFIG_KEYS } from "./config-DjZ9QWc4.js";
3
+ import { a as getStorageStatus, o as invalidateStorageRoot, r as getOpfsRootDirName, s as isStaleHandleError, t as getGroupDir } from "./getGroupDir-BxKMYPPm.js";
4
+ import { o as DEFAULT_GROUP_ID, r as CONFIG_KEYS } from "./config-BcFbkaQv.js";
5
5
  import { t as getConfig } from "./getConfig-BxxXMyuM.js";
6
6
  import { t as parsePath } from "./parsePath-DwC_YZjw.js";
7
7
  import { t as setConfig } from "./setConfig-BFED5CXn.js";
8
8
  import { t as TOOL_DEFINITIONS } from "./tools-DKzPWc0q.js";
9
9
  import "./tools-C3Kft940.js";
10
- import { n as computeSha256, x as toTrustedScriptUrl } from "./utils-B99XP70b.js";
10
+ import { n as computeSha256, x as toTrustedScriptUrl } from "./utils-mpsYPfS7.js";
11
11
  import { t as require_buffer } from "./buffer-BEXn271X.js";
12
12
 
13
13
  //#region src/storage/readGroupFile.ts
@@ -9384,4 +9384,4 @@ const toolsStore = new ToolsStore();
9384
9384
 
9385
9385
  //#endregion
9386
9386
  export { groupFileExists as a, writeOpfsPathViaWorker as c, DEFAULT_BUILTIN_PROFILE as d, readGroupFile as f, require_gray_matter as i, findDeclarativeTool as l, tools_exports as n, writeGroupFile as o, parseSkill as r, writeFileHandle as s, toolsStore as t, loadDeclarativeTools as u };
9387
- //# sourceMappingURL=tools-f1WPNDSS.js.map
9387
+ //# sourceMappingURL=tools-Bb2ujM2E.js.map