shadow-claw 1.26.0 → 1.27.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.
- package/.agents/skills/main/skill-creator/SKILL.md +39 -0
- package/.agents/skills/main/skill-creator/references/declarative-pipelines.md +44 -0
- package/.agents/skills/main/skill-creator/references/declarative-tools.md +35 -0
- package/.agents/skills/main/skill-creator/references/frontmatter-spec.md +50 -0
- package/.well-known/agent-skills/index.json +14 -0
- package/README.md +5 -3
- package/bin/build/build.mjs +146 -15
- package/bin/build/build.test.mjs +57 -0
- package/bin/cli.mjs +26 -0
- package/bin/commands/mcp.mjs +277 -55
- package/bin/commands/mcp.test.mjs +275 -1
- package/bin/commands/skills-index.mjs +328 -0
- package/bin/commands/skills-index.test.mjs +161 -0
- package/bin/site-config/utils/custom-elements/get-approved-custom-element-scripts.test.mjs +2 -0
- package/bin/site-config/utils/custom-elements/sanitize-embedded-custom-element-scripts.test.mjs +10 -1
- package/dist/lib/components/index.js +25 -25
- package/dist/lib/components/settings/shadow-claw-accounts.js +1 -1
- package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
- package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
- package/dist/lib/components/settings/shadow-claw-git.js +1 -1
- package/dist/lib/components/settings/shadow-claw-integrations.js +1 -1
- package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
- package/dist/lib/components/settings/shadow-claw-mcp-remote.js +1 -1
- package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
- package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
- package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
- package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
- package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
- package/dist/lib/components/shadow-claw-a2ui.js +1 -1
- package/dist/lib/components/shadow-claw-accounts.js +1 -1
- package/dist/lib/components/shadow-claw-channel-config.js +1 -1
- package/dist/lib/components/shadow-claw-channels.js +1 -1
- package/dist/lib/components/shadow-claw-chat.js +1 -1
- package/dist/lib/components/shadow-claw-control-plane.js +1 -1
- package/dist/lib/components/shadow-claw-conversations.js +1 -1
- package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
- package/dist/lib/components/shadow-claw-files.js +1 -1
- package/dist/lib/components/shadow-claw-git.js +1 -1
- package/dist/lib/components/shadow-claw-integrations.js +1 -1
- package/dist/lib/components/shadow-claw-llm.js +1 -1
- package/dist/lib/components/shadow-claw-mcp-remote.js +1 -1
- package/dist/lib/components/shadow-claw-networking.js +1 -1
- package/dist/lib/components/shadow-claw-page-header.js +1 -1
- package/dist/lib/components/shadow-claw-pages.js +1 -1
- package/dist/lib/components/shadow-claw-peerjs.js +1 -1
- package/dist/lib/components/shadow-claw-settings.js +1 -1
- package/dist/lib/components/shadow-claw-storage.js +1 -1
- package/dist/lib/components/shadow-claw-task-server.js +1 -1
- package/dist/lib/components/shadow-claw-tasks.js +1 -1
- package/dist/lib/components/shadow-claw-terminal.js +1 -1
- package/dist/lib/components/shadow-claw-tools.js +1 -1
- package/dist/lib/components/shadow-claw-webvm.js +1 -1
- package/dist/lib/components/shadow-claw.js +1 -1
- package/dist/lib/{configurePeerJs-CrlGan0m.js → configurePeerJs-oODzltaC.js} +2 -2
- package/dist/lib/{configurePeerJs-CrlGan0m.js.map → configurePeerJs-oODzltaC.js.map} +1 -1
- package/dist/lib/core/control-plane-client.d.ts +1 -0
- package/dist/lib/{downloadGroupFile-DboUjmp2.js → downloadGroupFile-DmcBQU1n.js} +2 -2
- package/dist/lib/{downloadGroupFile-DboUjmp2.js.map → downloadGroupFile-DmcBQU1n.js.map} +1 -1
- package/dist/lib/{file-viewer-BrK2Wxgh.js → file-viewer-C3YKnq_-.js} +4 -3
- package/dist/lib/{file-viewer-BrK2Wxgh.js.map → file-viewer-C3YKnq_-.js.map} +1 -1
- package/dist/lib/index.js +26 -26
- package/dist/lib/{initControlPlane-CsO4UR6_.js → initControlPlane-C2zURVIS.js} +86 -13
- package/dist/lib/initControlPlane-C2zURVIS.js.map +1 -0
- package/dist/lib/{markdown-eeSTFnMA.js → markdown-C6EHl9zs.js} +3 -3
- package/dist/lib/{markdown-eeSTFnMA.js.map → markdown-C6EHl9zs.js.map} +1 -1
- package/dist/lib/{orchestrator-CJvoC2Uu.js → orchestrator-CACLa_Ro.js} +7 -6
- package/dist/lib/{orchestrator-CJvoC2Uu.js.map → orchestrator-CACLa_Ro.js.map} +1 -1
- package/dist/lib/{orchestrator-DCfomsn9.js → orchestrator-KRjx0eba.js} +6 -534
- package/dist/lib/{orchestrator-DCfomsn9.js.map → orchestrator-KRjx0eba.js.map} +1 -1
- package/dist/lib/parsePath-DwC_YZjw.js +16 -0
- package/dist/lib/parsePath-DwC_YZjw.js.map +1 -0
- package/dist/lib/{peerjs-Dp02bXcG.js → peerjs-DFWOBcXf.js} +4 -4
- package/dist/lib/{peerjs-Dp02bXcG.js.map → peerjs-DFWOBcXf.js.map} +1 -1
- package/dist/lib/{readGroupFileBytes-Bve-e5e_.js → readGroupFileBytes-C8oOe8Iu.js} +3 -16
- package/dist/lib/readGroupFileBytes-C8oOe8Iu.js.map +1 -0
- package/dist/lib/security/custom-element-security.d.ts +8 -0
- package/dist/lib/server/control-plane-types.d.ts +1 -1
- package/dist/lib/{shadow-claw-D8xINM3c.js → shadow-claw-6UHdiy4a.js} +5 -5
- package/dist/lib/{shadow-claw-D8xINM3c.js.map → shadow-claw-6UHdiy4a.js.map} +1 -1
- package/dist/lib/{shadow-claw-a2ui-7rJqG4Ke.js → shadow-claw-a2ui-CpZUTzlh.js} +5 -4
- package/dist/lib/{shadow-claw-a2ui-7rJqG4Ke.js.map → shadow-claw-a2ui-CpZUTzlh.js.map} +1 -1
- package/dist/lib/{shadow-claw-accounts-CdruwN8A.js → shadow-claw-accounts-03oJ__XC.js} +2 -2
- package/dist/lib/{shadow-claw-accounts-CdruwN8A.js.map → shadow-claw-accounts-03oJ__XC.js.map} +1 -1
- package/dist/lib/{shadow-claw-channel-config-Bj0-Nk3t.js → shadow-claw-channel-config-DmfwJc6G.js} +3 -3
- package/dist/lib/{shadow-claw-channel-config-Bj0-Nk3t.js.map → shadow-claw-channel-config-DmfwJc6G.js.map} +1 -1
- package/dist/lib/{shadow-claw-channels-C_jI4KhP.js → shadow-claw-channels-1N6Jl-By.js} +3 -3
- package/dist/lib/{shadow-claw-channels-C_jI4KhP.js.map → shadow-claw-channels-1N6Jl-By.js.map} +1 -1
- package/dist/lib/{shadow-claw-chat-B16MspoP.js → shadow-claw-chat-BMoqQJRK.js} +10 -10
- package/dist/lib/{shadow-claw-chat-B16MspoP.js.map → shadow-claw-chat-BMoqQJRK.js.map} +1 -1
- package/dist/lib/{shadow-claw-control-plane-x8Ldid_h.js → shadow-claw-control-plane-UG0o7pCz.js} +6 -6
- package/dist/lib/{shadow-claw-control-plane-x8Ldid_h.js.map → shadow-claw-control-plane-UG0o7pCz.js.map} +1 -1
- package/dist/lib/{shadow-claw-conversations-Ct1kAYdB.js → shadow-claw-conversations-BwXep3iu.js} +4 -3
- package/dist/lib/{shadow-claw-conversations-Ct1kAYdB.js.map → shadow-claw-conversations-BwXep3iu.js.map} +1 -1
- package/dist/lib/{shadow-claw-file-viewer-BfDHHgpA.js → shadow-claw-file-viewer-DUxzVxDT.js} +14 -10
- package/dist/lib/shadow-claw-file-viewer-DUxzVxDT.js.map +1 -0
- package/dist/lib/{shadow-claw-files-EYhOPYIH.js → shadow-claw-files-DIREEnT2.js} +7 -7
- package/dist/lib/{shadow-claw-files-EYhOPYIH.js.map → shadow-claw-files-DIREEnT2.js.map} +1 -1
- package/dist/lib/{shadow-claw-git-tcSpT-P0.js → shadow-claw-git-Bg1SWgsF.js} +4 -4
- package/dist/lib/{shadow-claw-git-tcSpT-P0.js.map → shadow-claw-git-Bg1SWgsF.js.map} +1 -1
- package/dist/lib/{shadow-claw-integrations-NbcCx_ZI.js → shadow-claw-integrations-Ds-CLPhj.js} +2 -2
- package/dist/lib/{shadow-claw-integrations-NbcCx_ZI.js.map → shadow-claw-integrations-Ds-CLPhj.js.map} +1 -1
- package/dist/lib/{shadow-claw-llm-BazJdD5f.js → shadow-claw-llm-CazBrVpM.js} +3 -3
- package/dist/lib/{shadow-claw-llm-BazJdD5f.js.map → shadow-claw-llm-CazBrVpM.js.map} +1 -1
- package/dist/lib/{shadow-claw-mcp-remote-CYmhpg7a.js → shadow-claw-mcp-remote-CT5Q-54E.js} +2 -2
- package/dist/lib/{shadow-claw-mcp-remote-CYmhpg7a.js.map → shadow-claw-mcp-remote-CT5Q-54E.js.map} +1 -1
- package/dist/lib/{shadow-claw-networking-DImPxe0H.js → shadow-claw-networking-Df85tCbO.js} +2 -2
- package/dist/lib/{shadow-claw-networking-DImPxe0H.js.map → shadow-claw-networking-Df85tCbO.js.map} +1 -1
- package/dist/lib/{shadow-claw-page-header-CcHUfFUx.js → shadow-claw-page-header-Cti2fzf-.js} +2 -2
- package/dist/lib/{shadow-claw-page-header-CcHUfFUx.js.map → shadow-claw-page-header-Cti2fzf-.js.map} +1 -1
- package/dist/lib/{shadow-claw-pages-D54jF1Qq.js → shadow-claw-pages-BgPyIEZO.js} +15 -11
- package/dist/lib/shadow-claw-pages-BgPyIEZO.js.map +1 -0
- package/dist/lib/{shadow-claw-peerjs-B9-T8Nlx.js → shadow-claw-peerjs-xkBXILed.js} +3 -3
- package/dist/lib/{shadow-claw-peerjs-B9-T8Nlx.js.map → shadow-claw-peerjs-xkBXILed.js.map} +1 -1
- package/dist/lib/{shadow-claw-settings-Bt1VAe-1.js → shadow-claw-settings-CN89xRVU.js} +4 -4
- package/dist/lib/{shadow-claw-settings-Bt1VAe-1.js.map → shadow-claw-settings-CN89xRVU.js.map} +1 -1
- package/dist/lib/{shadow-claw-storage-CFOjGf1d.js → shadow-claw-storage-VnhcObCe.js} +3 -3
- package/dist/lib/{shadow-claw-storage-CFOjGf1d.js.map → shadow-claw-storage-VnhcObCe.js.map} +1 -1
- package/dist/lib/{shadow-claw-task-server-BiKa2GOm.js → shadow-claw-task-server-jgEC2hHB.js} +2 -2
- package/dist/lib/{shadow-claw-task-server-BiKa2GOm.js.map → shadow-claw-task-server-jgEC2hHB.js.map} +1 -1
- package/dist/lib/{shadow-claw-tasks-DDHd8W4d.js → shadow-claw-tasks-i_evIufy.js} +6 -6
- package/dist/lib/{shadow-claw-tasks-DDHd8W4d.js.map → shadow-claw-tasks-i_evIufy.js.map} +1 -1
- package/dist/lib/{shadow-claw-terminal-kB6_tWKz.js → shadow-claw-terminal-CwScROlu.js} +2 -2
- package/dist/lib/{shadow-claw-terminal-kB6_tWKz.js.map → shadow-claw-terminal-CwScROlu.js.map} +1 -1
- package/dist/lib/{shadow-claw-tools-DxXIm0ku.js → shadow-claw-tools-DD3fyXP4.js} +5 -4
- package/dist/lib/{shadow-claw-tools-DxXIm0ku.js.map → shadow-claw-tools-DD3fyXP4.js.map} +1 -1
- package/dist/lib/{shadow-claw-webvm-Dc8oo7ao.js → shadow-claw-webvm-DbJq4I3-.js} +2 -2
- package/dist/lib/{shadow-claw-webvm-Dc8oo7ao.js.map → shadow-claw-webvm-DbJq4I3-.js.map} +1 -1
- package/dist/lib/{syncWebMcpRegistration-jyRGbC9w.js → syncWebMcpRegistration-DNLnQ-jz.js} +3 -2
- package/dist/lib/{syncWebMcpRegistration-jyRGbC9w.js.map → syncWebMcpRegistration-DNLnQ-jz.js.map} +1 -1
- package/dist/lib/tools-DwwB9RBa.js +546 -0
- package/dist/lib/tools-DwwB9RBa.js.map +1 -0
- package/dist/lib/{trusted-types-CkLDpLiZ.js → trusted-types-Dx0RZlrd.js} +19 -8
- package/dist/lib/trusted-types-Dx0RZlrd.js.map +1 -0
- package/dist/lib/utils/index.js +1 -1
- package/dist/lib/utils/utils.js +1 -1
- package/dist/public/.well-known/agent-skills/index.json +14 -0
- package/dist/public/AGENTS.md +5 -3
- package/dist/public/README.md +5 -3
- package/dist/public/agent.worker.js +1 -1
- package/dist/public/{configurePeerJs-COcwE0E7.js → configurePeerJs-BqgeBjP7.js} +1 -1
- package/dist/public/custom-element-security-FU04Cq05.js +1 -0
- package/dist/public/dist-B9m1QM9v.js +58 -0
- package/dist/public/docs/README.md +31 -31
- package/dist/public/docs/example/article/index.html +1 -1
- package/dist/public/docs/publishing/index.html +1 -1
- package/dist/public/docs/skill-creator/index.html +1 -1
- package/dist/public/docs/subsystems/a2ui.md +11 -1
- package/dist/public/docs/subsystems/cli.md +29 -0
- package/dist/public/docs/subsystems/control-plane.md +8 -2
- package/dist/public/docs/subsystems/custom-element-security.md +19 -9
- package/dist/public/docs/subsystems/mcp-server.md +39 -15
- package/dist/public/docs/subsystems/skills.md +30 -0
- package/dist/public/docs/subsystems/webmcp.md +9 -0
- package/dist/public/downloadGroupFile-D8KRJGGL.js +1 -0
- package/dist/public/e2e/README.md +7 -4
- package/dist/public/{e2e-bridge-CHARpbpW.js → e2e-bridge-Ceqr5kGc.js} +1 -1
- package/dist/public/effect-BJCrpFdp.js +1 -0
- package/dist/public/file-viewer-C-6Jc_tb.js +1 -0
- package/dist/public/index.html +1 -1
- package/dist/public/index.js +1 -1
- package/dist/public/initControlPlane-BN9cWyO0.js +1 -0
- package/dist/public/main/index.html +1 -1
- package/dist/public/main/memory/index.html +1 -1
- package/dist/public/{markdown-1I3O6Mmd.js → markdown-C3M4OW_A.js} +1 -1
- package/dist/public/{orchestrator-Cl95w2vb.js → orchestrator-CMbCTjBf.js} +7 -7
- package/dist/public/{orchestrator-D-xlXG92.js → orchestrator-DHjdLtqa.js} +663 -663
- package/dist/public/peerjs-DUCKH-m9.js +1 -0
- package/dist/public/service-worker.js +1 -1
- package/dist/public/{shadow-claw-CaoKmIIB.js → shadow-claw-EAt2ml5Y.js} +3 -3
- package/dist/public/{shadow-claw-accounts-CJvYC4li.js → shadow-claw-accounts-xUOLBsQZ.js} +1 -1
- package/dist/public/{shadow-claw-channels-3K62sU5f.js → shadow-claw-channels-XsfuWFF8.js} +4 -4
- package/dist/public/{shadow-claw-chat-Cu2keU2I.js → shadow-claw-chat-CbSaOZ4q.js} +7 -7
- package/dist/public/{shadow-claw-control-plane-D1OwlQI_.js → shadow-claw-control-plane-DHvN3Ukg.js} +2 -2
- package/dist/public/{shadow-claw-conversations-DDtg3BEZ.js → shadow-claw-conversations-BWs5VVfs.js} +2 -2
- package/dist/public/{shadow-claw-file-viewer-BR__1z9S.js → shadow-claw-file-viewer-BWsoW5QS.js} +5 -4
- package/dist/public/{shadow-claw-files-BJSyZ-Bl.js → shadow-claw-files-CG7MqWiV.js} +8 -8
- package/dist/public/{shadow-claw-git-MAjhXRLc.js → shadow-claw-git-DBRPZNav.js} +6 -6
- package/dist/public/{shadow-claw-integrations-82UoFuDR.js → shadow-claw-integrations-BBVnO0Fc.js} +8 -8
- package/dist/public/{shadow-claw-llm-R8j0lwPP.js → shadow-claw-llm-DMvLgKXo.js} +2 -2
- package/dist/public/{shadow-claw-mcp-remote-BzZoz4LX.js → shadow-claw-mcp-remote-Bkx0gsmF.js} +2 -2
- package/dist/public/{shadow-claw-networking-DLEd9cNm.js → shadow-claw-networking-Dd8Rw31D.js} +2 -2
- package/dist/public/{shadow-claw-notifications-1vwR7TbT.js → shadow-claw-notifications-Dbevj-lq.js} +2 -2
- package/dist/public/{shadow-claw-page-header-DMKbkv3s.js → shadow-claw-page-header-BccSHItx.js} +1 -1
- package/dist/public/{shadow-claw-pages-CjyeIV__.js → shadow-claw-pages-3_lQAv0t.js} +4 -3
- package/dist/public/{shadow-claw-settings-BfbT4dBU.js → shadow-claw-settings-t8TIlgrM.js} +5 -5
- package/dist/public/{shadow-claw-storage-C-mWQQML.js → shadow-claw-storage-CfEXoSIE.js} +2 -2
- package/dist/public/{shadow-claw-task-server-D3lHp0Nc.js → shadow-claw-task-server-DxQSsgRZ.js} +2 -2
- package/dist/public/{shadow-claw-tasks-DVVWEm-c.js → shadow-claw-tasks-DNpicQwz.js} +14 -14
- package/dist/public/{shadow-claw-terminal-BwuTRp-O.js → shadow-claw-terminal-DpY6zU_r.js} +1 -1
- package/dist/public/{shadow-claw-toast-ClCwgzFG.js → shadow-claw-toast-BkrQIP-3.js} +1 -1
- package/dist/public/{shadow-claw-tools-zFLk2nbV.js → shadow-claw-tools-WSwWohnk.js} +2 -2
- package/dist/public/{shadow-claw-webvm-qR9X7fg7.js → shadow-claw-webvm-CP6oFjg5.js} +2 -2
- package/dist/public/syncWebMcpRegistration-DOn9gLnD.js +1 -0
- package/dist/public/toast-BXgUfbyh.js +1 -0
- package/dist/public/tools-DvckJZG2.js +1 -0
- package/dist/server.js +188 -188
- package/package.json +3 -1
- package/src/components/shadow-claw-a2ui/shadow-claw-a2ui.stories.ts +1380 -93
- package/src/components/shadow-claw-a2ui/shadow-claw-a2ui.ts +11 -6
- package/src/components/shadow-claw-file-viewer/shadow-claw-file-viewer.test.ts +8 -1
- package/src/components/shadow-claw-file-viewer/shadow-claw-file-viewer.ts +13 -5
- package/src/components/shadow-claw-pages/utils/buildHtmlPageSrcdoc.ts +13 -5
- package/src/core/control-plane-client.ts +15 -0
- package/src/core/utils/initControlPlane.test.ts +187 -0
- package/src/core/utils/initControlPlane.ts +194 -20
- package/src/security/custom-element-security.test.ts +51 -0
- package/src/security/custom-element-security.ts +33 -15
- package/src/server/control-plane-types.ts +1 -0
- package/src/server/control-plane.test.ts +69 -0
- package/src/server/control-plane.ts +45 -3
- package/src/server/mcp/tools/built-in-tools.ts +80 -5
- package/src/server/mcp/tools/client-tool-relay.ts +183 -26
- package/src/server/mcp/tools/mcp-tools.test.ts +140 -0
- package/src/server/middleware/static-files.test.ts +142 -0
- package/src/server/middleware/static-files.ts +66 -8
- package/src/testing/jest-setup.ts +1 -0
- package/src/worker/utils/handleMessage.ts +4 -1
- package/dist/lib/initControlPlane-CsO4UR6_.js.map +0 -1
- package/dist/lib/readGroupFileBytes-Bve-e5e_.js.map +0 -1
- package/dist/lib/shadow-claw-file-viewer-BfDHHgpA.js.map +0 -1
- package/dist/lib/shadow-claw-pages-D54jF1Qq.js.map +0 -1
- package/dist/lib/trusted-types-CkLDpLiZ.js.map +0 -1
- package/dist/public/custom-element-security-NCqQ5lmC.js +0 -1
- package/dist/public/downloadGroupFile-G0BZQgQg.js +0 -1
- package/dist/public/effect-rHYr4nfu.js +0 -1
- package/dist/public/file-viewer-8PdCURDD.js +0 -1
- package/dist/public/initControlPlane-CcGXax0A.js +0 -1
- package/dist/public/peerjs-BZdxWQFv.js +0 -1
- package/dist/public/syncWebMcpRegistration-DD42YsYV.js +0 -1
- package/dist/public/toast-HAq8XWFj.js +0 -58
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as getControlPlaneTargetAddressSpace, t as ShadowClawControlPlane } from "../shadow-claw-control-plane-
|
|
1
|
+
import { n as getControlPlaneTargetAddressSpace, t as ShadowClawControlPlane } from "../shadow-claw-control-plane-UG0o7pCz.js";
|
|
2
2
|
|
|
3
3
|
export { ShadowClawControlPlane, getControlPlaneTargetAddressSpace };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as ShadowClawTerminal, t as AUTO_SCROLL_BOTTOM_THRESHOLD_PX } from "../shadow-claw-terminal-
|
|
1
|
+
import { n as ShadowClawTerminal, t as AUTO_SCROLL_BOTTOM_THRESHOLD_PX } from "../shadow-claw-terminal-CwScROlu.js";
|
|
2
2
|
|
|
3
3
|
export { AUTO_SCROLL_BOTTOM_THRESHOLD_PX, ShadowClawTerminal };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as ShadowClaw } from "../shadow-claw-
|
|
1
|
+
import { t as ShadowClaw } from "../shadow-claw-6UHdiy4a.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--CFrw3J3.js";
|
|
2
|
-
import { dt as getChannelEnabled, yt as normalizeStringList } from "./orchestrator-
|
|
2
|
+
import { dt as getChannelEnabled, yt as normalizeStringList } from "./orchestrator-KRjx0eba.js";
|
|
3
3
|
import { t as setConfig } from "./setConfig-BFED5CXn.js";
|
|
4
4
|
|
|
5
5
|
//#region src/core/orchestrator/utils/configurePeerJs.ts
|
|
@@ -35,4 +35,4 @@ async function configurePeerJs(orchestrator, db, myPeerId, trustedPeerIds, serve
|
|
|
35
35
|
|
|
36
36
|
//#endregion
|
|
37
37
|
export { configurePeerJs as t };
|
|
38
|
-
//# sourceMappingURL=configurePeerJs-
|
|
38
|
+
//# sourceMappingURL=configurePeerJs-oODzltaC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configurePeerJs-
|
|
1
|
+
{"version":3,"file":"configurePeerJs-oODzltaC.js","names":[],"sources":["../../src/core/orchestrator/utils/configurePeerJs.ts"],"sourcesContent":["import { CONFIG_KEYS } from \"../../../config/config.js\";\nimport { setConfig } from \"../../../db/setConfig.js\";\nimport { normalizeStringList } from \"./normalizeStringList.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,5 +1,5 @@
|
|
|
1
1
|
import { t as getGroupDir } from "./getGroupDir-m0f-ekgX.js";
|
|
2
|
-
import {
|
|
2
|
+
import { t as parsePath } from "./parsePath-DwC_YZjw.js";
|
|
3
3
|
|
|
4
4
|
//#region src/storage/downloadGroupFile.ts
|
|
5
5
|
/**
|
|
@@ -23,4 +23,4 @@ async function downloadGroupFile(db, groupId, filePath) {
|
|
|
23
23
|
|
|
24
24
|
//#endregion
|
|
25
25
|
export { downloadGroupFile as t };
|
|
26
|
-
//# sourceMappingURL=downloadGroupFile-
|
|
26
|
+
//# sourceMappingURL=downloadGroupFile-DmcBQU1n.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadGroupFile-
|
|
1
|
+
{"version":3,"file":"downloadGroupFile-DmcBQU1n.js","names":[],"sources":["../../src/storage/downloadGroupFile.ts"],"sourcesContent":["import { getGroupDir } from \"./getGroupDir.js\";\nimport { parsePath } from \"./parsePath.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Download a single file\n */\nexport async function downloadGroupFile(\n db: ShadowClawDatabase,\n groupId: string,\n filePath: string,\n): Promise<void> {\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 const file = await fileHandle.getFile();\n\n // Create a download link and trigger download\n const url = URL.createObjectURL(file);\n const link = document.createElement(\"a\");\n\n link.href = url;\n link.download = filename;\n\n document.body.appendChild(link);\n\n link.click();\n\n document.body.removeChild(link);\n\n URL.revokeObjectURL(url);\n}\n"],"mappings":";;;;;;;AAOA,eAAsB,kBACpB,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;CAIxC,MAAM,OAAO,OAAM,MADM,IAAI,cAAc,QAAQ,EACtB,CAAC,QAAQ;CAGtC,MAAM,MAAM,IAAI,gBAAgB,IAAI;CACpC,MAAM,OAAO,SAAS,cAAc,GAAG;CAEvC,KAAK,OAAO;CACZ,KAAK,WAAW;CAEhB,SAAS,KAAK,YAAY,IAAI;CAE9B,KAAK,MAAM;CAEX,SAAS,KAAK,YAAY,IAAI;CAE9B,IAAI,gBAAgB,GAAG;AACzB"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { t as Signal } from "./dist-Bxg3C_zy.js";
|
|
2
2
|
import { t as getGroupDir } from "./getGroupDir-m0f-ekgX.js";
|
|
3
3
|
import { o as DEFAULT_GROUP_ID } from "./config--CFrw3J3.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { t as parsePath } from "./parsePath-DwC_YZjw.js";
|
|
5
|
+
import { o as readGroupFile } from "./tools-DwwB9RBa.js";
|
|
6
|
+
import { t as readGroupFileBytes } from "./readGroupFileBytes-C8oOe8Iu.js";
|
|
6
7
|
|
|
7
8
|
//#region src/storage/getGroupFile.ts
|
|
8
9
|
/**
|
|
@@ -147,4 +148,4 @@ const fileViewerStore = new FileViewerStore();
|
|
|
147
148
|
|
|
148
149
|
//#endregion
|
|
149
150
|
export { fileViewerStore as t };
|
|
150
|
-
//# sourceMappingURL=file-viewer-
|
|
151
|
+
//# sourceMappingURL=file-viewer-C3YKnq_-.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-viewer-
|
|
1
|
+
{"version":3,"file":"file-viewer-C3YKnq_-.js","names":[],"sources":["../../src/storage/getGroupFile.ts","../../src/stores/file-viewer.ts"],"sourcesContent":["import { getGroupDir } from \"./getGroupDir.js\";\nimport { parsePath } from \"./parsePath.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/readGroupFile.js\";\nimport { readGroupFileBytes } from \"../storage/readGroupFileBytes.js\";\nimport { getGroupFile } from \"../storage/getGroupFile.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
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
import ShadowClawElement from "./components/shadow-claw-element.js";
|
|
2
2
|
import { ulid } from "./utils/ulid.js";
|
|
3
|
-
import { c as escapeHtml, d as handleSpecialLinkNavigation, f as sanitizeHtml, l as formatDateForFilename, o as bufferToHex, p as toArrayBuffer, s as computeSha256, u as formatTimestamp } from "./trusted-types-
|
|
3
|
+
import { c as escapeHtml, d as handleSpecialLinkNavigation, f as sanitizeHtml, l as formatDateForFilename, o as bufferToHex, p as toArrayBuffer, s as computeSha256, u as formatTimestamp } from "./trusted-types-Dx0RZlrd.js";
|
|
4
4
|
import { a as showSuccess, i as showInfo, l as toastStore, o as showToast, r as showError, s as showWarning } from "./toast-DZ6r7_YI.js";
|
|
5
5
|
import { getNamespacedItem, getNamespacedStorageKey, removeNamespacedItem, setNamespacedItem } from "./utils/namespacedStorage.js";
|
|
6
6
|
import { applyJsonPatch } from "./utils/jsonPatch.js";
|
|
7
|
-
import { t as ShadowClaw } from "./shadow-claw-
|
|
8
|
-
import { t as ShadowClawChat } from "./shadow-claw-chat-
|
|
9
|
-
import { t as ShadowClawA2UI } from "./shadow-claw-a2ui-
|
|
7
|
+
import { t as ShadowClaw } from "./shadow-claw-6UHdiy4a.js";
|
|
8
|
+
import { t as ShadowClawChat } from "./shadow-claw-chat-BMoqQJRK.js";
|
|
9
|
+
import { t as ShadowClawA2UI } from "./shadow-claw-a2ui-CpZUTzlh.js";
|
|
10
10
|
import { t as ShadowClawPageHeaderActionButton } from "./shadow-claw-page-header-action-button-BXXm5b5N.js";
|
|
11
11
|
import { ShadowClawA2UIInterceptor } from "./components/shadow-claw-a2ui-interceptor.js";
|
|
12
12
|
import { ShadowClawDialog } from "./components/shadow-claw-dialog.js";
|
|
13
|
-
import { t as ShadowClawPageHeader } from "./shadow-claw-page-header-
|
|
14
|
-
import { t as ShadowClawFiles } from "./shadow-claw-files-
|
|
13
|
+
import { t as ShadowClawPageHeader } from "./shadow-claw-page-header-Cti2fzf-.js";
|
|
14
|
+
import { t as ShadowClawFiles } from "./shadow-claw-files-DIREEnT2.js";
|
|
15
15
|
import { t as ShadowClawEmptyState } from "./shadow-claw-empty-state-DPfDqaMA.js";
|
|
16
|
-
import { t as ShadowClawFileViewer } from "./shadow-claw-file-viewer-
|
|
16
|
+
import { t as ShadowClawFileViewer } from "./shadow-claw-file-viewer-DUxzVxDT.js";
|
|
17
17
|
import { t as ShadowClawPdfViewer } from "./shadow-claw-pdf-viewer-D3leDhRq.js";
|
|
18
|
-
import { t as ShadowClawTasks } from "./shadow-claw-tasks-
|
|
19
|
-
import { n as ShadowClawTerminal } from "./shadow-claw-terminal-
|
|
20
|
-
import { t as ShadowClawPages } from "./shadow-claw-pages-
|
|
21
|
-
import { t as ShadowClawSettings } from "./shadow-claw-settings-
|
|
22
|
-
import { t as ShadowClawPeerJs } from "./shadow-claw-peerjs-
|
|
23
|
-
import { t as ShadowClawChannelConfig } from "./shadow-claw-channel-config-
|
|
24
|
-
import { t as ShadowClawChannels } from "./shadow-claw-channels-
|
|
18
|
+
import { t as ShadowClawTasks } from "./shadow-claw-tasks-i_evIufy.js";
|
|
19
|
+
import { n as ShadowClawTerminal } from "./shadow-claw-terminal-CwScROlu.js";
|
|
20
|
+
import { t as ShadowClawPages } from "./shadow-claw-pages-BgPyIEZO.js";
|
|
21
|
+
import { t as ShadowClawSettings } from "./shadow-claw-settings-CN89xRVU.js";
|
|
22
|
+
import { t as ShadowClawPeerJs } from "./shadow-claw-peerjs-xkBXILed.js";
|
|
23
|
+
import { t as ShadowClawChannelConfig } from "./shadow-claw-channel-config-DmfwJc6G.js";
|
|
24
|
+
import { t as ShadowClawChannels } from "./shadow-claw-channels-1N6Jl-By.js";
|
|
25
25
|
import { t as ShadowClawProviderModelPicker } from "./shadow-claw-provider-model-picker-CsA-507a.js";
|
|
26
26
|
import { t as ShadowClawProviderModuleSettings } from "./shadow-claw-provider-module-settings-3sCTnCSp.js";
|
|
27
|
-
import { t as ShadowClawConversations } from "./shadow-claw-conversations-
|
|
27
|
+
import { t as ShadowClawConversations } from "./shadow-claw-conversations-BwXep3iu.js";
|
|
28
28
|
import { t as ShadowClawToast } from "./shadow-claw-toast-C8oAkrMC.js";
|
|
29
|
-
import { t as ShadowClawTools } from "./shadow-claw-tools-
|
|
29
|
+
import { t as ShadowClawTools } from "./shadow-claw-tools-DD3fyXP4.js";
|
|
30
30
|
import { t as ShadowClawActions } from "./shadow-claw-actions-G99P9oxr.js";
|
|
31
31
|
import { t as ShadowClawCard } from "./shadow-claw-card-D9azfSMu.js";
|
|
32
|
-
import { t as ShadowClawAccounts } from "./shadow-claw-accounts-
|
|
33
|
-
import { t as ShadowClawControlPlane } from "./shadow-claw-control-plane-
|
|
34
|
-
import { t as ShadowClawGit } from "./shadow-claw-git-
|
|
35
|
-
import { t as ShadowClawIntegrations } from "./shadow-claw-integrations-
|
|
36
|
-
import { t as ShadowClawLlm } from "./shadow-claw-llm-
|
|
37
|
-
import { t as ShadowClawMcpRemote } from "./shadow-claw-mcp-remote-
|
|
38
|
-
import { t as ShadowClawNetworking } from "./shadow-claw-networking-
|
|
32
|
+
import { t as ShadowClawAccounts } from "./shadow-claw-accounts-03oJ__XC.js";
|
|
33
|
+
import { t as ShadowClawControlPlane } from "./shadow-claw-control-plane-UG0o7pCz.js";
|
|
34
|
+
import { t as ShadowClawGit } from "./shadow-claw-git-Bg1SWgsF.js";
|
|
35
|
+
import { t as ShadowClawIntegrations } from "./shadow-claw-integrations-Ds-CLPhj.js";
|
|
36
|
+
import { t as ShadowClawLlm } from "./shadow-claw-llm-CazBrVpM.js";
|
|
37
|
+
import { t as ShadowClawMcpRemote } from "./shadow-claw-mcp-remote-CT5Q-54E.js";
|
|
38
|
+
import { t as ShadowClawNetworking } from "./shadow-claw-networking-Df85tCbO.js";
|
|
39
39
|
import { t as ShadowClawNotifications } from "./shadow-claw-notifications-v62FryTc.js";
|
|
40
|
-
import { t as ShadowClawStorage } from "./shadow-claw-storage-
|
|
41
|
-
import { t as ShadowClawTaskServer } from "./shadow-claw-task-server-
|
|
42
|
-
import { t as ShadowClawWebvm } from "./shadow-claw-webvm-
|
|
40
|
+
import { t as ShadowClawStorage } from "./shadow-claw-storage-VnhcObCe.js";
|
|
41
|
+
import { t as ShadowClawTaskServer } from "./shadow-claw-task-server-jgEC2hHB.js";
|
|
42
|
+
import { t as ShadowClawWebvm } from "./shadow-claw-webvm-DbJq4I3-.js";
|
|
43
43
|
import "./components/index.js";
|
|
44
44
|
import { base64ToBytes, bytesToBase64 } from "./utils/base64.js";
|
|
45
45
|
import { t as utils_exports } from "./utils/index.js";
|
|
@@ -146,6 +146,9 @@ var ControlPlaneClient = class {
|
|
|
146
146
|
}
|
|
147
147
|
disconnect() {
|
|
148
148
|
this._isDestroyed = true;
|
|
149
|
+
try {
|
|
150
|
+
this._sendUnregister();
|
|
151
|
+
} catch (_) {}
|
|
149
152
|
this._cleanupConnection();
|
|
150
153
|
if (this._reconnectTimer) {
|
|
151
154
|
clearTimeout(this._reconnectTimer);
|
|
@@ -214,6 +217,15 @@ var ControlPlaneClient = class {
|
|
|
214
217
|
payload
|
|
215
218
|
});
|
|
216
219
|
}
|
|
220
|
+
_sendUnregister() {
|
|
221
|
+
if (!this._clientId) return;
|
|
222
|
+
const payload = { clientId: this._clientId };
|
|
223
|
+
this._sendMessage({
|
|
224
|
+
id: ulid(),
|
|
225
|
+
type: "client:unregister",
|
|
226
|
+
payload
|
|
227
|
+
});
|
|
228
|
+
}
|
|
217
229
|
_sendMessage(msg) {
|
|
218
230
|
if (this._transport === "websocket") {
|
|
219
231
|
if (this._ws && (this._ws.readyState === 1 || this._ws.readyState === this._WebSocketClass?.OPEN)) this._ws.send(JSON.stringify(msg));
|
|
@@ -381,7 +393,7 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
|
|
|
381
393
|
switch (action) {
|
|
382
394
|
case "send-message": {
|
|
383
395
|
if (!args.text) throw new Error("Missing text parameter");
|
|
384
|
-
const { orchestratorStore } = await import("./orchestrator-
|
|
396
|
+
const { orchestratorStore } = await import("./orchestrator-KRjx0eba.js").then((n) => n.n);
|
|
385
397
|
const orch = options.orchestrator || orchestratorStore.orchestrator;
|
|
386
398
|
const targetGroupId = args.groupId || orchestratorStore.activeGroupId || "br:main";
|
|
387
399
|
if (orch?.browserChat?.submit) {
|
|
@@ -416,7 +428,7 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
|
|
|
416
428
|
return { tasks };
|
|
417
429
|
}
|
|
418
430
|
case "read-state": {
|
|
419
|
-
const { orchestratorStore } = await import("./orchestrator-
|
|
431
|
+
const { orchestratorStore } = await import("./orchestrator-KRjx0eba.js").then((n) => n.n);
|
|
420
432
|
const orch = options.orchestrator || orchestratorStore.orchestrator;
|
|
421
433
|
return {
|
|
422
434
|
clientId,
|
|
@@ -437,6 +449,21 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
|
|
|
437
449
|
annotations: t.annotations
|
|
438
450
|
})) };
|
|
439
451
|
} catch (_) {}
|
|
452
|
+
try {
|
|
453
|
+
const { orchestratorStore } = await import("./orchestrator-KRjx0eba.js").then((n) => n.n);
|
|
454
|
+
const orch = options.orchestrator || orchestratorStore.orchestrator || (typeof document !== "undefined" ? document.querySelector("shadow-claw")?.orchestrator : null);
|
|
455
|
+
const activeGroupId = args.groupId || orch?.activeGroupId || orchestratorStore.activeGroupId || "br:main";
|
|
456
|
+
const group = orchestratorStore.groups.find((g) => g.groupId === activeGroupId);
|
|
457
|
+
if (group?.toolTags && group.toolTags.length > 0) {
|
|
458
|
+
const { TOOL_DEFINITIONS } = await import("./tools-DBaMRiEu.js").then((n) => n.n);
|
|
459
|
+
const { parseWebMcpInputSchema } = await import("./webmcp-j_1_T3wf.js").then((n) => n.a);
|
|
460
|
+
return { tools: TOOL_DEFINITIONS.filter((t) => group.toolTags.includes(t.name)).map((t) => ({
|
|
461
|
+
name: t.name,
|
|
462
|
+
description: t.description,
|
|
463
|
+
inputSchema: parseWebMcpInputSchema(t.input_schema)
|
|
464
|
+
})) };
|
|
465
|
+
}
|
|
466
|
+
} catch (_) {}
|
|
440
467
|
const { TOOL_DEFINITIONS } = await import("./tools-DBaMRiEu.js").then((n) => n.n);
|
|
441
468
|
const { parseWebMcpInputSchema } = await import("./webmcp-j_1_T3wf.js").then((n) => n.a);
|
|
442
469
|
return { tools: TOOL_DEFINITIONS.map((t) => ({
|
|
@@ -447,26 +474,72 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
|
|
|
447
474
|
}
|
|
448
475
|
case "invoke-tool": {
|
|
449
476
|
if (!args.toolName) throw new Error("Missing toolName parameter");
|
|
477
|
+
try {
|
|
478
|
+
const { orchestratorStore } = await import("./orchestrator-KRjx0eba.js").then((n) => n.n);
|
|
479
|
+
const { toolsStore } = await import("./tools-DwwB9RBa.js").then((n) => n.n);
|
|
480
|
+
const orch = options.orchestrator || orchestratorStore.orchestrator || (typeof document !== "undefined" ? document.querySelector("shadow-claw")?.orchestrator : null);
|
|
481
|
+
const activeGroupId = args.groupId || orch?.activeGroupId || orchestratorStore.activeGroupId || "br:main";
|
|
482
|
+
const group = orchestratorStore.groups.find((g) => g.groupId === activeGroupId);
|
|
483
|
+
if (group?.toolTags && group.toolTags.length > 0) {
|
|
484
|
+
if (!group.toolTags.includes(args.toolName)) throw new Error(`Tool '${args.toolName}' is not enabled in the active conversation (${activeGroupId}).`);
|
|
485
|
+
} else if (toolsStore?.allTools && toolsStore.allTools.some((t) => t.name === args.toolName) && toolsStore?.enabledToolNames && toolsStore.enabledToolNames.size > 0) {
|
|
486
|
+
const isBuiltIn = toolsStore.enabledToolNames.has(args.toolName);
|
|
487
|
+
const isDeclarative = toolsStore.isDeclarativeToolEnabled(args.toolName);
|
|
488
|
+
if (!isBuiltIn && !isDeclarative) throw new Error(`Tool '${args.toolName}' is not enabled on this client.`);
|
|
489
|
+
}
|
|
490
|
+
} catch (err) {
|
|
491
|
+
if (err.message && err.message.includes("is not enabled")) throw err;
|
|
492
|
+
}
|
|
450
493
|
const ctx = typeof document !== "undefined" && document.modelContext || typeof navigator !== "undefined" && navigator.modelContext;
|
|
451
494
|
if (ctx) {
|
|
495
|
+
let matchedTool;
|
|
452
496
|
if (typeof ctx.getTools === "function") try {
|
|
453
497
|
const tools = await ctx.getTools();
|
|
454
|
-
|
|
455
|
-
|
|
498
|
+
if (Array.isArray(tools) && tools.length > 0) {
|
|
499
|
+
matchedTool = tools.find((t) => t.name === args.toolName);
|
|
500
|
+
if (!matchedTool) throw new Error(`Tool '${args.toolName}' is not enabled or registered on this client.`);
|
|
501
|
+
} else matchedTool = Array.isArray(tools) ? tools.find((t) => t.name === args.toolName) : void 0;
|
|
502
|
+
if (matchedTool && typeof matchedTool.execute === "function") return { result: await matchedTool.execute(typeof args.input === "string" ? JSON.parse(args.input) : args.input || {}) };
|
|
503
|
+
} catch (err) {
|
|
504
|
+
if (err.message && err.message.includes("is not enabled")) throw err;
|
|
505
|
+
}
|
|
506
|
+
const inputStr = typeof args.input === "string" ? args.input : JSON.stringify(args.input || {});
|
|
507
|
+
if (typeof ctx.executeTool === "function") {
|
|
508
|
+
if (matchedTool) try {
|
|
509
|
+
return { result: await ctx.executeTool(matchedTool, inputStr) };
|
|
510
|
+
} catch (_) {}
|
|
511
|
+
try {
|
|
512
|
+
return { result: await ctx.executeTool({ name: args.toolName }, inputStr) };
|
|
513
|
+
} catch (_) {}
|
|
514
|
+
try {
|
|
515
|
+
return { result: await ctx.executeTool(args.toolName, inputStr) };
|
|
516
|
+
} catch (_) {}
|
|
517
|
+
}
|
|
518
|
+
if (typeof navigator !== "undefined" && navigator.modelContextTesting && typeof navigator.modelContextTesting.executeTool === "function") try {
|
|
519
|
+
return { result: await navigator.modelContextTesting.executeTool(args.toolName, inputStr) };
|
|
520
|
+
} catch (_) {}
|
|
521
|
+
if (typeof ctx.callTool === "function") try {
|
|
522
|
+
return { result: await ctx.callTool({
|
|
523
|
+
name: args.toolName,
|
|
524
|
+
arguments: typeof args.input === "string" ? JSON.parse(args.input) : args.input || {}
|
|
525
|
+
}) };
|
|
526
|
+
} catch (_) {}
|
|
527
|
+
if (typeof ctx.invoke === "function") try {
|
|
528
|
+
return { result: await ctx.invoke(args.toolName, typeof args.input === "string" ? JSON.parse(args.input) : args.input || {}) };
|
|
456
529
|
} catch (_) {}
|
|
457
|
-
if (typeof ctx.executeTool === "function") return { result: await ctx.executeTool({ name: args.toolName }, typeof args.input === "string" ? args.input : JSON.stringify(args.input || {})) };
|
|
458
|
-
if (typeof ctx.invoke === "function") return { result: await ctx.invoke(args.toolName, args.input || {}) };
|
|
459
530
|
}
|
|
460
|
-
const { orchestratorStore } = await import("./orchestrator-
|
|
461
|
-
const orch = options.orchestrator || orchestratorStore.orchestrator;
|
|
531
|
+
const { orchestratorStore } = await import("./orchestrator-KRjx0eba.js").then((n) => n.n);
|
|
532
|
+
const orch = options.orchestrator || orchestratorStore.orchestrator || (typeof document !== "undefined" ? document.querySelector("shadow-claw")?.orchestrator : null);
|
|
462
533
|
const worker = orch?.agentWorker;
|
|
463
534
|
if (worker && typeof worker.postMessage === "function") {
|
|
464
535
|
const callId = Date.now().toString(36) + Math.random().toString(36).slice(2);
|
|
536
|
+
const isInteractive = args.toolName === "ask_user";
|
|
537
|
+
const fallbackTimeoutMs = args.timeoutMs || (isInteractive ? 3e5 : 6e4);
|
|
465
538
|
return { result: await new Promise((resolve, reject) => {
|
|
466
539
|
const timeout = setTimeout(() => {
|
|
467
540
|
worker.removeEventListener("message", handler);
|
|
468
541
|
reject(/* @__PURE__ */ new Error("Timeout waiting for tool execution"));
|
|
469
|
-
},
|
|
542
|
+
}, fallbackTimeoutMs);
|
|
470
543
|
const handler = (event) => {
|
|
471
544
|
const data = event.data;
|
|
472
545
|
if (data && data.type === "execute-tool-result" && data.callId === callId) {
|
|
@@ -482,8 +555,8 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
|
|
|
482
555
|
callId,
|
|
483
556
|
payload: {
|
|
484
557
|
name: args.toolName,
|
|
485
|
-
input: args.input || {},
|
|
486
|
-
groupId: args.groupId || orch
|
|
558
|
+
input: typeof args.input === "string" ? JSON.parse(args.input) : args.input || {},
|
|
559
|
+
groupId: args.groupId || orch?.activeGroupId || "br:main"
|
|
487
560
|
}
|
|
488
561
|
});
|
|
489
562
|
}) };
|
|
@@ -491,7 +564,7 @@ async function executeClientControlCommand(action, args = {}, options = {}) {
|
|
|
491
564
|
throw new Error(`Tool ${args.toolName} could not be executed (no context or worker available)`);
|
|
492
565
|
}
|
|
493
566
|
case "trigger-backup": {
|
|
494
|
-
const { orchestratorStore } = await import("./orchestrator-
|
|
567
|
+
const { orchestratorStore } = await import("./orchestrator-KRjx0eba.js").then((n) => n.n);
|
|
495
568
|
const targetGroupId = args.groupId || options.orchestrator?.activeGroupId || orchestratorStore.activeGroupId || "br:main";
|
|
496
569
|
const db = await getDb();
|
|
497
570
|
const { getGroupDir } = await import("./getGroupDir-m0f-ekgX.js").then((n) => n.n);
|
|
@@ -583,4 +656,4 @@ function stopControlPlaneClient() {
|
|
|
583
656
|
|
|
584
657
|
//#endregion
|
|
585
658
|
export { createDefaultControlPlaneClient, executeClientControlCommand, isControlPlaneEnabled, shouldConnectControlPlane, stopControlPlaneClient };
|
|
586
|
-
//# sourceMappingURL=initControlPlane-
|
|
659
|
+
//# sourceMappingURL=initControlPlane-C2zURVIS.js.map
|