@spacebar_ai/moldclaw-core 2026.3.14 → 2026.3.16
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/README.md +108 -3
- package/dist/account-id-plS5L20e.d.ts +1 -0
- package/dist/accounts-BAYVGC2k.js +109 -0
- package/dist/accounts-DrjRgReV.d.ts +103 -0
- package/dist/acp-cli-at_UYEOS.js +2088 -0
- package/dist/acpx-Chy1GQ_k.d.ts +5 -0
- package/dist/actions.runtime-C0F7dMfO.js +114 -0
- package/dist/actions.runtime-caI2LG9o.js +128 -0
- package/dist/agent-media-payload-CkpAqaOh.d.ts +16 -0
- package/dist/agents-B98yPGc5.js +853 -0
- package/dist/agents-BrLr08L3.js +217 -0
- package/dist/allow-from-BIwT4dl7.d.ts +42 -0
- package/dist/allow-list-CHt7yvAf.js +81 -0
- package/dist/allowlist-CxQo2wQc.js +142 -0
- package/dist/allowlist-resolution-B7ib7gye.d.ts +17 -0
- package/dist/api-Co7TNHbL.js +6953 -0
- package/dist/api-cEQ_ql_8.js +112 -0
- package/dist/audit-AnKnnlaZ.js +787 -0
- package/dist/audit-channel.collect.runtime-CAk1DFQ3.js +600 -0
- package/dist/audit-channel.runtime-5phdZp_m.js +116 -0
- package/dist/audit-extra.async-B8ZXFxic.js +813 -0
- package/dist/audit-hdKa3D-u.js +54 -0
- package/dist/audit-membership-runtime-CJV5XvGU.js +157 -0
- package/dist/audit.deep.runtime-DNMcRQrp.js +24 -0
- package/dist/audit.nondeep.runtime-DhNDL6yM.js +831 -0
- package/dist/audit.runtime-Bx7uWEh8.js +113 -0
- package/dist/auth-choice-C37W9MA7.js +268 -0
- package/dist/auth-choice-CNppOY_V.js +117 -0
- package/dist/auth-choice-XYFnp6fI.js +502 -0
- package/dist/auth-choice-options-D6oZY4Xo.js +123 -0
- package/dist/auth-choice-prompt-BhRqchJx.js +110 -0
- package/dist/auth-choice-prompt-C1xv0N08.js +36 -0
- package/dist/auth-choice.plugin-providers.runtime-DhLEtbmR.js +114 -0
- package/dist/auth-profiles-9zZdaXJK.js +127756 -0
- package/dist/auth-profiles.runtime-HONFDgiu.js +111 -0
- package/dist/bluebubbles-BY8JhO4y.js +64 -0
- package/dist/bluebubbles-CQjEnzK_.d.ts +6 -0
- package/dist/bluebubbles-RmcKgkBa.d.ts +45 -0
- package/dist/boolean-param-F1sMwnPu.d.ts +5 -0
- package/dist/bot-BGh-ATV7.d.ts +478 -0
- package/dist/brave-CljenznH.js +24 -0
- package/dist/browser-cli-CX8i0wf0.js +1492 -0
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.d.ts +6 -0
- package/dist/bundled/boot-md/handler.js +26 -26
- package/dist/bundled/bootstrap-extra-files/handler.d.ts +6 -0
- package/dist/bundled/command-logger/handler.d.ts +9 -0
- package/dist/bundled/session-memory/handler.d.ts +9 -0
- package/dist/bundled/session-memory/handler.js +27 -27
- package/dist/call-Bc257L16.js +37 -0
- package/dist/call-DYFR7oGy.js +639 -0
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/channel-Bd-igGEW.js +803 -0
- package/dist/channel-BgRMb6bZ.js +575 -0
- package/dist/channel-BtcLrU6J.js +1598 -0
- package/dist/channel-Bwf6m_hD.js +538 -0
- package/dist/channel-C7-kgDBd.js +562 -0
- package/dist/channel-CEXOAxIc.js +949 -0
- package/dist/channel-CpZ3p9MJ.js +226 -0
- package/dist/channel-CqBlN6A2.js +619 -0
- package/dist/channel-DKhfHW4U.js +352 -0
- package/dist/channel-DS3t_KdJ2.js +316 -0
- package/dist/channel-DY24FA1v.js +4681 -0
- package/dist/channel-DYFGmImJ.js +542 -0
- package/dist/channel-DcyIqX5p.js +207 -0
- package/dist/channel-J-2XcAli.js +214 -0
- package/dist/channel-N616f4gZ.js +306 -0
- package/dist/channel-NY7aU2Gj.js +397 -0
- package/dist/channel-PNI8BOmm.js +1321 -0
- package/dist/channel-UcXepDJs.js +943 -0
- package/dist/channel-account-context-CL3hEq1j.js +103 -0
- package/dist/channel-config-schema-Q2nzcCCR.d.ts +1 -0
- package/dist/channel-jA_jodJo.js +920 -0
- package/dist/channel-options-CtgU5qkG.js +50 -0
- package/dist/channel-policy-7wXDp6d3.d.ts +1 -0
- package/dist/channel-rGI8uig4.js +497 -0
- package/dist/channel-summary-DGJZXo0r.js +106 -0
- package/dist/channel.runtime--WZvlNJM.js +413 -0
- package/dist/channel.runtime-B0ct42DL.js +122 -0
- package/dist/channel.runtime-BEZUZrYB.js +177 -0
- package/dist/channel.runtime-BMuWmsIC.js +166 -0
- package/dist/channel.runtime-BtvHP0po.js +4006 -0
- package/dist/channel.runtime-Cwf993pX.js +194 -0
- package/dist/channel.runtime-Cy4lEpTX.js +174 -0
- package/dist/channel.runtime-DAz6axda.js +865 -0
- package/dist/channel.runtime-DdQ2mOVh.js +236 -0
- package/dist/channel.runtime-Dy3HPgOU.js +399 -0
- package/dist/channel.runtime-iqfC25k7.js +213 -0
- package/dist/channel.setup-B4VYMZlQ.js +9 -0
- package/dist/channel.setup-BohGbCbI.js +57 -0
- package/dist/channel.setup-Bq2AQqqc.js +6 -0
- package/dist/channel.setup-BxiSfLp1.js +8 -0
- package/dist/channel.setup-DOUS6fjO.js +8 -0
- package/dist/channel.setup-DXhdYU3g.js +9 -0
- package/dist/channel.setup-N51CgfNy.js +11 -0
- package/dist/channels/plugins/actions/discord.d.ts +3 -0
- package/dist/channels/plugins/actions/discord.js +26 -26
- package/dist/channels/plugins/actions/signal.d.ts +2 -0
- package/dist/channels/plugins/actions/signal.js +26 -26
- package/dist/channels/plugins/actions/telegram.d.ts +3 -0
- package/dist/channels/plugins/actions/telegram.js +26 -26
- package/dist/channels/plugins/agent-tools/whatsapp-login.d.ts +4 -0
- package/dist/channels/plugins/agent-tools/whatsapp-login.js +26 -26
- package/dist/channels-CueeFf0q.js +404 -0
- package/dist/channels-PheAd73E.js +1113 -0
- package/dist/channels-cli-CXzVF84v.js +286 -0
- package/dist/channels-status-issues-BjWBQHhU.js +16 -0
- package/dist/chat-type-BlSN0vo4.d.ts +5 -0
- package/dist/clawbot-cli-BBehDXW1.js +113 -0
- package/dist/cli/daemon-cli.d.ts +58 -0
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/cli-CIm7d5Id.js +149 -0
- package/dist/command-format-pq3tS8t2.d.ts +4 -0
- package/dist/command-registry-CDkp__KH.js +13 -0
- package/dist/command-registry-DSEkUBW1.js +212 -0
- package/dist/command-secret-gateway-CqP_o0n8.js +106 -0
- package/dist/compact.runtime-Qm_csEtG.js +111 -0
- package/dist/completion-cli-Ch1sgSLQ.js +445 -0
- package/dist/completion-cli-vF067Tso.js +16 -0
- package/dist/config-B2W1zTP1.js +44 -0
- package/dist/config-CMhKplgO.js +938 -0
- package/dist/config-DchtRsvs.js +30 -0
- package/dist/config-cli-C41d88_c.js +428 -0
- package/dist/config-guard-B_vjkXCQ.js +117 -0
- package/dist/config-schema-pPBCF4hz.js +31 -0
- package/dist/config-validation-6om9cBUx.js +262 -0
- package/dist/config-value-Dl3XEpA6.js +132 -0
- package/dist/configure-BxzvDSzu.js +1100 -0
- package/dist/configure-CLMLoWAn.js +238 -0
- package/dist/control-ui-shared-E8Nz6uKZ.js +29 -0
- package/dist/core-Cd3fMFKq.d.ts +87 -0
- package/dist/credentials-yYt6VWCq.js +268 -0
- package/dist/cron-cli-CA3lV3kh.js +634 -0
- package/dist/daemon-cli-BtQuIXEk.js +339 -0
- package/dist/daemon-install-BWKGzgMm.js +175 -0
- package/dist/deliver-CgMNmfTy.js +106 -0
- package/dist/deliver-runtime-Bn1KWoiQ.js +106 -0
- package/dist/devices-cli-D601npiL.js +340 -0
- package/dist/diagnostic-CkiYEGqt.js +310 -0
- package/dist/diffs-B5tZ8Coj.d.ts +1 -0
- package/dist/directory-cli-skEV8MT7.js +306 -0
- package/dist/directory-config-helpers-B-tiBKIv.d.ts +38 -0
- package/dist/directory-runtime-BEJ2fCIR.d.ts +1 -0
- package/dist/directory.static-CnyzoWbV.js +44 -0
- package/dist/discord-B_gbzPti.js +109 -0
- package/dist/discovery-CqI-e_Mv.js +48 -0
- package/dist/dm-policy-shared-nybkS1uP.d.ts +95 -0
- package/dist/dns-cli-Cjes3Ruw.js +216 -0
- package/dist/docs-cli-C3g3Gi_d.js +173 -0
- package/dist/doctor-completion-TvgV4SZH.js +90 -0
- package/dist/doctor-config-flow-0w9Ux7V8.js +107 -0
- package/dist/doctor-config-flow-DLzr8W7Y.js +2437 -0
- package/dist/enable-VYzv8b2z.js +24 -0
- package/dist/entry.d.ts +7 -0
- package/dist/entry.js +1 -1
- package/dist/env-overrides-DYVIkuvN.js +434 -0
- package/dist/env-overrides.runtime-6kijpIuu.js +17 -0
- package/dist/exec-approvals-cli-D_lkTG-l.js +419 -0
- package/dist/exec-sVmouhA9.d.ts +39 -0
- package/dist/extensions/acpx/index.d.ts +11 -0
- package/dist/extensions/acpx/index.js +1 -1
- package/dist/extensions/amazon-bedrock/index.d.ts +11 -0
- package/dist/extensions/anthropic/index.d.ts +11 -0
- package/dist/extensions/anthropic/index.js +26 -26
- package/dist/extensions/bluebubbles/index.d.ts +11 -0
- package/dist/extensions/bluebubbles/index.js +30 -30
- package/dist/extensions/bluebubbles/setup-entry.d.ts +59 -0
- package/dist/extensions/bluebubbles/setup-entry.js +30 -30
- package/dist/extensions/brave/index.d.ts +11 -0
- package/dist/extensions/brave/index.js +2 -2
- package/dist/extensions/byteplus/index.d.ts +11 -0
- package/dist/extensions/byteplus/index.js +26 -26
- package/dist/extensions/cloudflare-ai-gateway/index.d.ts +11 -0
- package/dist/extensions/cloudflare-ai-gateway/index.js +27 -27
- package/dist/extensions/copilot-proxy/index.d.ts +11 -0
- package/dist/extensions/device-pair/index.d.ts +12 -0
- package/dist/extensions/diagnostics-otel/index.d.ts +11 -0
- package/dist/extensions/diffs/index.d.ts +11 -0
- package/dist/extensions/discord/index.d.ts +11 -0
- package/dist/extensions/discord/index.js +31 -31
- package/dist/extensions/discord/setup-entry.d.ts +7 -0
- package/dist/extensions/discord/setup-entry.js +29 -29
- package/dist/extensions/elevenlabs/index.d.ts +11 -0
- package/dist/extensions/elevenlabs/index.js +26 -26
- package/dist/extensions/feishu/index.d.ts +229 -0
- package/dist/extensions/feishu/index.js +31 -31
- package/dist/extensions/feishu/setup-entry.d.ts +9 -0
- package/dist/extensions/feishu/setup-entry.js +28 -28
- package/dist/extensions/firecrawl/index.d.ts +11 -0
- package/dist/extensions/firecrawl/index.js +26 -26
- package/dist/extensions/github-copilot/index.d.ts +11 -0
- package/dist/extensions/github-copilot/index.js +27 -27
- package/dist/extensions/google/index.d.ts +11 -0
- package/dist/extensions/google/index.js +26 -26
- package/dist/extensions/googlechat/index.d.ts +11 -0
- package/dist/extensions/googlechat/index.js +30 -30
- package/dist/extensions/googlechat/setup-entry.d.ts +19 -0
- package/dist/extensions/googlechat/setup-entry.js +30 -30
- package/dist/extensions/huggingface/index.d.ts +11 -0
- package/dist/extensions/huggingface/index.js +26 -26
- package/dist/extensions/imessage/index.d.ts +11 -0
- package/dist/extensions/imessage/index.js +30 -30
- package/dist/extensions/imessage/setup-entry.d.ts +7 -0
- package/dist/extensions/imessage/setup-entry.js +30 -30
- package/dist/extensions/irc/index.d.ts +11 -0
- package/dist/extensions/irc/index.js +29 -29
- package/dist/extensions/irc/setup-entry.d.ts +8 -0
- package/dist/extensions/irc/setup-entry.js +29 -29
- package/dist/extensions/kakao-talkchannel/index.d.ts +19 -0
- package/dist/extensions/kakao-talkchannel/index.js +1762 -0
- package/dist/extensions/kakao-talkchannel/moldclaw.plugin.json +111 -0
- package/dist/extensions/kakao-talkchannel/package.json +12 -0
- package/dist/extensions/kilocode/index.d.ts +11 -0
- package/dist/extensions/kilocode/index.js +26 -26
- package/dist/extensions/kimi-coding/index.d.ts +11 -0
- package/dist/extensions/kimi-coding/index.js +26 -26
- package/dist/extensions/line/index.d.ts +11 -0
- package/dist/extensions/line/index.js +28 -28
- package/dist/extensions/line/setup-entry.d.ts +7 -0
- package/dist/extensions/line/setup-entry.js +28 -28
- package/dist/extensions/llm-task/index.d.ts +11 -0
- package/dist/extensions/llm-task/index.js +28 -28
- package/dist/extensions/lobster/index.d.ts +11 -0
- package/dist/extensions/matrix/index.d.ts +11 -0
- package/dist/extensions/matrix/index.js +31 -31
- package/dist/extensions/matrix/setup-entry.d.ts +20 -0
- package/dist/extensions/matrix/setup-entry.js +31 -31
- package/dist/extensions/mattermost/index.d.ts +11 -0
- package/dist/extensions/mattermost/index.js +28 -28
- package/dist/extensions/mattermost/setup-entry.d.ts +88 -0
- package/dist/extensions/mattermost/setup-entry.js +28 -28
- package/dist/extensions/memory-core/index.d.ts +11 -0
- package/dist/extensions/memory-lancedb/index.d.ts +25 -0
- package/dist/extensions/microsoft/index.d.ts +11 -0
- package/dist/extensions/microsoft/index.js +26 -26
- package/dist/extensions/minimax/index.d.ts +11 -0
- package/dist/extensions/minimax/index.js +26 -26
- package/dist/extensions/mistral/index.d.ts +11 -0
- package/dist/extensions/mistral/index.js +26 -26
- package/dist/extensions/modelstudio/index.d.ts +11 -0
- package/dist/extensions/modelstudio/index.js +26 -26
- package/dist/extensions/moonshot/index.d.ts +11 -0
- package/dist/extensions/moonshot/index.js +26 -26
- package/dist/extensions/msteams/index.d.ts +11 -0
- package/dist/extensions/msteams/index.js +31 -31
- package/dist/extensions/msteams/setup-entry.d.ts +11 -0
- package/dist/extensions/msteams/setup-entry.js +31 -31
- package/dist/extensions/nextcloud-talk/index.d.ts +11 -0
- package/dist/extensions/nextcloud-talk/index.js +28 -28
- package/dist/extensions/nextcloud-talk/setup-entry.d.ts +60 -0
- package/dist/extensions/nextcloud-talk/setup-entry.js +28 -28
- package/dist/extensions/nostr/index.d.ts +11 -0
- package/dist/extensions/nostr/index.js +28 -28
- package/dist/extensions/nostr/setup-entry.d.ts +49 -0
- package/dist/extensions/nostr/setup-entry.js +28 -28
- package/dist/extensions/nvidia/index.d.ts +11 -0
- package/dist/extensions/ollama/index.d.ts +11 -0
- package/dist/extensions/open-prose/index.d.ts +11 -0
- package/dist/extensions/openai/index.d.ts +11 -0
- package/dist/extensions/openai/index.js +26 -26
- package/dist/extensions/opencode/index.d.ts +11 -0
- package/dist/extensions/opencode/index.js +26 -26
- package/dist/extensions/opencode-go/index.d.ts +11 -0
- package/dist/extensions/opencode-go/index.js +26 -26
- package/dist/extensions/openrouter/index.d.ts +11 -0
- package/dist/extensions/openrouter/index.js +26 -26
- package/dist/extensions/openshell/index.d.ts +11 -0
- package/dist/extensions/openshell/index.js +26 -26
- package/dist/extensions/perplexity/index.d.ts +11 -0
- package/dist/extensions/perplexity/index.js +2 -2
- package/dist/extensions/phone-control/index.d.ts +12 -0
- package/dist/extensions/qianfan/index.d.ts +11 -0
- package/dist/extensions/qianfan/index.js +26 -26
- package/dist/extensions/qwen-portal-auth/index.d.ts +12 -0
- package/dist/extensions/qwen-portal-auth/index.js +26 -26
- package/dist/extensions/sglang/index.d.ts +11 -0
- package/dist/extensions/sglang/index.js +26 -26
- package/dist/extensions/signal/index.d.ts +11 -0
- package/dist/extensions/signal/index.js +29 -29
- package/dist/extensions/signal/setup-entry.d.ts +7 -0
- package/dist/extensions/signal/setup-entry.js +29 -29
- package/dist/extensions/slack/index.d.ts +11 -0
- package/dist/extensions/slack/index.js +30 -30
- package/dist/extensions/slack/setup-entry.d.ts +7 -0
- package/dist/extensions/slack/setup-entry.js +29 -29
- package/dist/extensions/synology-chat/index.d.ts +11 -0
- package/dist/extensions/synology-chat/index.js +28 -28
- package/dist/extensions/synology-chat/setup-entry.d.ts +138 -0
- package/dist/extensions/synology-chat/setup-entry.js +28 -28
- package/dist/extensions/synthetic/index.d.ts +11 -0
- package/dist/extensions/synthetic/index.js +26 -26
- package/dist/extensions/talk-voice/index.d.ts +12 -0
- package/dist/extensions/talk-voice/index.js +26 -26
- package/dist/extensions/telegram/index.d.ts +11 -0
- package/dist/extensions/telegram/index.js +29 -29
- package/dist/extensions/telegram/setup-entry.d.ts +7 -0
- package/dist/extensions/telegram/setup-entry.js +28 -28
- package/dist/extensions/thread-ownership/index.d.ts +12 -0
- package/dist/extensions/tlon/index.d.ts +11 -0
- package/dist/extensions/tlon/index.js +28 -28
- package/dist/extensions/tlon/setup-entry.d.ts +7 -0
- package/dist/extensions/tlon/setup-entry.js +28 -28
- package/dist/extensions/together/index.d.ts +11 -0
- package/dist/extensions/together/index.js +26 -26
- package/dist/extensions/twitch/index.d.ts +39 -0
- package/dist/extensions/twitch/index.js +28 -28
- package/dist/extensions/venice/index.d.ts +11 -0
- package/dist/extensions/venice/index.js +26 -26
- package/dist/extensions/vercel-ai-gateway/index.d.ts +11 -0
- package/dist/extensions/vercel-ai-gateway/index.js +26 -26
- package/dist/extensions/vllm/index.d.ts +11 -0
- package/dist/extensions/vllm/index.js +26 -26
- package/dist/extensions/voice-call/index.d.ts +11 -0
- package/dist/extensions/voice-call/index.js +26 -26
- package/dist/extensions/volcengine/index.d.ts +11 -0
- package/dist/extensions/volcengine/index.js +26 -26
- package/dist/extensions/whatsapp/index.d.ts +11 -0
- package/dist/extensions/whatsapp/index.js +29 -29
- package/dist/extensions/whatsapp/setup-entry.d.ts +7 -0
- package/dist/extensions/whatsapp/setup-entry.js +29 -29
- package/dist/extensions/xai/index.d.ts +11 -0
- package/dist/extensions/xai/index.js +26 -26
- package/dist/extensions/xiaomi/index.d.ts +11 -0
- package/dist/extensions/xiaomi/index.js +26 -26
- package/dist/extensions/zai/index.d.ts +11 -0
- package/dist/extensions/zai/index.js +26 -26
- package/dist/extensions/zalo/index.d.ts +11 -0
- package/dist/extensions/zalo/index.js +30 -30
- package/dist/extensions/zalo/setup-entry.d.ts +34 -0
- package/dist/extensions/zalo/setup-entry.js +30 -30
- package/dist/extensions/zalouser/index.d.ts +11 -0
- package/dist/extensions/zalouser/index.js +31 -31
- package/dist/extensions/zalouser/setup-entry.d.ts +42 -0
- package/dist/extensions/zalouser/setup-entry.js +31 -31
- package/dist/feishu-DCKEC3ao.d.ts +36 -0
- package/dist/gateway-cli-DN1Ii6J-.js +26432 -0
- package/dist/gateway-install-token-CJYFJBaC.js +163 -0
- package/dist/gateway-rpc-CroQg9MB.js +26 -0
- package/dist/gateway-runtime-D9FRZqKP.js +69 -0
- package/dist/googlechat-CBCkerAy.js +307 -0
- package/dist/googlechat-CSUNieHX.d.ts +12 -0
- package/dist/group-access-rSvkIglb.d.ts +61 -0
- package/dist/health-B6WwLJp4.js +570 -0
- package/dist/health-CAlJydXv.js +108 -0
- package/dist/history-BwNxb0sJ.d.ts +75 -0
- package/dist/hooks-BYlfU3Nf.d.ts +6 -0
- package/dist/hooks-cli-DuKmdo_H.js +995 -0
- package/dist/http-registry-DX_LVtuK.d.ts +20 -0
- package/dist/image-generation-DKkdRpve.d.ts +9 -0
- package/dist/imessage-7abjbe2Q.js +31 -0
- package/dist/imessage-DOH1yaDE.js +110 -0
- package/dist/inbound-envelope-CmvweL6U.d.ts +78 -0
- package/dist/inbound-reply-dispatch-BvnKTOec.js +71 -0
- package/dist/inbound-reply-dispatch-C7LjHRZN.d.ts +72 -0
- package/dist/index-DTQqfqj9.d.ts +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +2 -2
- package/dist/infra/warning-filter.d.ts +10 -0
- package/dist/install-target-tXRD7VkM.js +574 -0
- package/dist/installs-C8fz8sm3.js +532 -0
- package/dist/io-C6XifaT4.js +9737 -0
- package/dist/io-C8awRnSW.js +28 -0
- package/dist/ipv4-d88_Jn2p.js +82 -0
- package/dist/irc-DpR6FXjN.js +672 -0
- package/dist/json-store-Sr_kk-II.d.ts +14 -0
- package/dist/keyed-async-queue-BA3BKukE.d.ts +19 -0
- package/dist/library-DOwowAGN.js +107 -0
- package/dist/lifecycle-core-BHHBoRTY.js +382 -0
- package/dist/line/accounts.d.ts +3 -0
- package/dist/line/send.d.ts +2 -0
- package/dist/line/send.js +4 -4
- package/dist/line/template-messages.d.ts +2 -0
- package/dist/line-8rsNbJCP.js +530 -0
- package/dist/line-D_cvIf6B.d.ts +75 -0
- package/dist/links-BOnvOj1z.d.ts +7 -0
- package/dist/llm-slug-generator-D9HjWtJT.js +67 -0
- package/dist/llm-slug-generator.d.ts +12 -0
- package/dist/llm-slug-generator.js +27 -27
- package/dist/logging-BhqLWxTD.js +13 -0
- package/dist/logging-DfaiL4OX.js +29 -0
- package/dist/login-qr-COBYR52w.js +233 -0
- package/dist/login-qr-xK4QIpPc.js +107 -0
- package/dist/logs-cli-RSSTw8L_.js +254 -0
- package/dist/manager-runtime-DL6JoSj9.js +106 -0
- package/dist/manager.runtime-Cbyhg1vB.js +710 -0
- package/dist/markdown-to-line-BTlEkOls.d.ts +91 -0
- package/dist/matrix-DX-jaB88.js +1490 -0
- package/dist/matrix-H6Yyj1QZ.d.ts +68 -0
- package/dist/matrix-J8s45tRw.js +1269 -0
- package/dist/mattermost-D75n6bRI.d.ts +6 -0
- package/dist/mcp-cli-CLc3_yCO.js +86 -0
- package/dist/media-understanding.runtime-BI0Lljbl.js +111 -0
- package/dist/memory-cli-CTp2cYrf.js +106 -0
- package/dist/method-scopes-Du8ODGFW.js +2586 -0
- package/dist/model-auth-markers-DEDakSUW.d.ts +20 -0
- package/dist/model-picker-CDBs7LJF.js +390 -0
- package/dist/model-picker-CRix4Wwv.js +107 -0
- package/dist/model-picker.runtime-CITyy3Rn.js +120 -0
- package/dist/model-suppression.runtime-Ce7D6QUT.js +111 -0
- package/dist/models-BK1eanuP.js +113 -0
- package/dist/models-X4Czy3uE.js +2514 -0
- package/dist/models-cli-C79Ulviy.js +304 -0
- package/dist/models-config-DALlu3S9.js +106 -0
- package/dist/models-config.providers.discovery-CSJ1STM1.d.ts +18 -0
- package/dist/monitor-B45a_RpX.js +3468 -0
- package/dist/monitor-C8KbJ-i0.js +767 -0
- package/dist/monitor-CIhrvegZ.js +3076 -0
- package/dist/monitor-CQut7klP.js +6823 -0
- package/dist/monitor-DZb5IJle.js +777 -0
- package/dist/monitor-DaFkdD27.js +108 -0
- package/dist/monitor-Do9Tp2Ii.js +110 -0
- package/dist/monitor-shared-CMK9cDOb.js +444 -0
- package/dist/msteams-A6H_wv5F.js +852 -0
- package/dist/net-DpMJgN-o.d.ts +19 -0
- package/dist/nextcloud-talk-f1pZ5Bge.d.ts +1 -0
- package/dist/node-cli-BXnmsjzL.js +2498 -0
- package/dist/node-resolve-CupmrA0Y.js +835 -0
- package/dist/nodes-cli-DZVrah_8.js +1375 -0
- package/dist/nostr-DMV534Ks.d.ts +7 -0
- package/dist/nostr-SAk3tjtR.js +8744 -0
- package/dist/npm-resolution-Dr9wssCY.js +60 -0
- package/dist/oauth-utils-DnyXdWU9.d.ts +10 -0
- package/dist/onboard-BE5pmb1g.js +589 -0
- package/dist/onboard-channels-3hNVY0E7.js +1241 -0
- package/dist/onboard-channels-vaO3nWLL.js +200 -0
- package/dist/onboard-custom-CI5uFyWH.js +571 -0
- package/dist/onboard-custom-eIvRswgv.js +109 -0
- package/dist/onboard-helpers-ChMWfUnl.js +335 -0
- package/dist/onboard-helpers-DRFi9oaD.js +108 -0
- package/dist/onboard-remote-BTspTgA4.js +112 -0
- package/dist/onboard-remote-so38yXlX.js +181 -0
- package/dist/onboard-search-DS0tZS24.js +297 -0
- package/dist/onboard-skills-B9DxCCiU.js +133 -0
- package/dist/onboard-skills-so0a_BJV.js +112 -0
- package/dist/outbound-media-BiJscGlR.js +11 -0
- package/dist/outbound-media-DJF-TuJu.d.ts +11 -0
- package/dist/pairing-access-CuiJP9xN.d.ts +21 -0
- package/dist/pairing-cli-DN0u1Cez.js +212 -0
- package/dist/parse-finite-number-B3FJTjyQ.d.ts +5 -0
- package/dist/perplexity-Bw1u3CAF.js +24 -0
- package/dist/persistent-dedupe-DR5Ka6BX.d.ts +26 -0
- package/dist/pi-model-discovery-runtime-iwKNCaYu.js +106 -0
- package/dist/pi-tools.before-tool-call.runtime-BM_N-JZe.js +380 -0
- package/dist/plugin-install--KVul05Z.js +184 -0
- package/dist/plugin-install-DVpPsLkS.js +112 -0
- package/dist/plugin-install-plan-Dwc6-coz.js +49 -0
- package/dist/plugin-registry-XRswugE9.js +108 -0
- package/dist/plugin-registry-jozQafRo.js +49 -0
- package/dist/plugin-sdk/account-resolution.js +26 -26
- package/dist/plugin-sdk/acp-runtime.js +26 -26
- package/dist/plugin-sdk/acpx.js +1 -1
- package/dist/plugin-sdk/agent-runtime.js +26 -26
- package/dist/plugin-sdk/bluebubbles.js +29 -29
- package/dist/plugin-sdk/channel-config-helpers.js +26 -26
- package/dist/plugin-sdk/channel-config-schema.js +2 -2
- package/dist/plugin-sdk/channel-policy.js +26 -26
- package/dist/plugin-sdk/channel-runtime.js +26 -26
- package/dist/plugin-sdk/compat.js +27 -27
- package/dist/plugin-sdk/config-runtime.js +28 -28
- package/dist/plugin-sdk/conversation-runtime.js +26 -26
- package/dist/plugin-sdk/discord.js +26 -26
- package/dist/plugin-sdk/feishu.js +27 -27
- package/dist/plugin-sdk/gateway-runtime.js +8 -8
- package/dist/plugin-sdk/googlechat.js +29 -29
- package/dist/plugin-sdk/image-generation-runtime.js +26 -26
- package/dist/plugin-sdk/image-generation.js +26 -26
- package/dist/plugin-sdk/imessage.js +27 -27
- package/dist/plugin-sdk/index.js +26 -26
- package/dist/plugin-sdk/infra-runtime.js +26 -26
- package/dist/plugin-sdk/irc.js +29 -29
- package/dist/plugin-sdk/line.js +27 -27
- package/dist/plugin-sdk/llm-task.js +26 -26
- package/dist/plugin-sdk/matrix.js +29 -29
- package/dist/plugin-sdk/mattermost.js +28 -28
- package/dist/plugin-sdk/media-runtime.js +26 -26
- package/dist/plugin-sdk/media-understanding-runtime.js +26 -26
- package/dist/plugin-sdk/media-understanding.js +26 -26
- package/dist/plugin-sdk/msteams.js +30 -30
- package/dist/plugin-sdk/nextcloud-talk.js +28 -28
- package/dist/plugin-sdk/nostr.js +27 -27
- package/dist/plugin-sdk/plugin-runtime.js +26 -26
- package/dist/plugin-sdk/provider-auth.js +28 -28
- package/dist/plugin-sdk/provider-setup.js +27 -27
- package/dist/plugin-sdk/provider-web-search.js +1 -1
- package/dist/plugin-sdk/qwen-portal-auth.js +26 -26
- package/dist/plugin-sdk/reply-history.js +26 -26
- package/dist/plugin-sdk/reply-runtime.js +26 -26
- package/dist/plugin-sdk/sandbox.js +26 -26
- package/dist/plugin-sdk/security-runtime.js +26 -26
- package/dist/plugin-sdk/self-hosted-provider-setup.js +27 -27
- package/dist/plugin-sdk/setup.js +27 -27
- package/dist/plugin-sdk/signal.js +26 -26
- package/dist/plugin-sdk/slack.js +26 -26
- package/dist/plugin-sdk/speech-runtime.js +26 -26
- package/dist/plugin-sdk/speech.js +26 -26
- package/dist/plugin-sdk/src/channels/plugins/setup-wizard-helpers.d.ts +3 -0
- package/dist/plugin-sdk/src/config/config-lock.d.ts +38 -0
- package/dist/plugin-sdk/src/config/config.d.ts +1 -1
- package/dist/plugin-sdk/src/config/io.d.ts +39 -0
- package/dist/plugin-sdk/src/config/types.gateway.d.ts +12 -0
- package/dist/plugin-sdk/src/config/types.secrets.d.ts +10 -0
- package/dist/plugin-sdk/src/config/zod-schema.d.ts +2 -0
- package/dist/plugin-sdk/src/gateway/credential-planner.d.ts +3 -1
- package/dist/plugin-sdk/src/secrets/provider-env-vars.d.ts +61 -0
- package/dist/plugin-sdk/src/secrets/sec1-placeholder.d.ts +181 -0
- package/dist/plugin-sdk/src/secrets/sec1-utils.d.ts +57 -0
- package/dist/plugin-sdk/synology-chat.js +27 -27
- package/dist/plugin-sdk/telegram.js +26 -26
- package/dist/plugin-sdk/text-runtime.js +4 -4
- package/dist/plugin-sdk/tlon.js +27 -27
- package/dist/plugin-sdk/twitch.js +26 -26
- package/dist/plugin-sdk/voice-call.js +26 -26
- package/dist/plugin-sdk/whatsapp.js +26 -26
- package/dist/plugin-sdk/zalo.js +30 -30
- package/dist/plugin-sdk/zalouser.js +29 -29
- package/dist/plugins/runtime/index.d.ts +22 -0
- package/dist/plugins/runtime/index.js +26 -26
- package/dist/plugins-C4PiDdjc.js +106 -0
- package/dist/plugins-cli-zhmliYNU.js +912 -0
- package/dist/policy-CcSolumc.js +143 -0
- package/dist/preflight-audio.runtime-BAbfqqzW.js +111 -0
- package/dist/probe-Bgt5c-cr.js +129 -0
- package/dist/probe-CPk5iGcg.js +47 -0
- package/dist/probe-DR4KRKXz.js +19 -0
- package/dist/probe-DnoCyJ_m.js +1793 -0
- package/dist/probe-VsLtK3vQ.js +6328 -0
- package/dist/probe-auth-BnsKrQt7.js +38 -0
- package/dist/probe-auth-DYdUG8l1.js +48 -0
- package/dist/program-8enYYBsc.js +247 -0
- package/dist/prompt-select-styled-DxBcUasv.js +2673 -0
- package/dist/provider-api-key-auth.runtime-DsLZyt6h.js +116 -0
- package/dist/provider-auth-choice-30EvRxqc.js +126 -0
- package/dist/provider-auth-choice-preference-DMr1WmRg.js +189 -0
- package/dist/provider-auth-choice.runtime-CI98BgQF.js +118 -0
- package/dist/provider-auth-guidance-WKDIi_wk.js +34 -0
- package/dist/provider-auth-result-Cs8wguSI.d.ts +18 -0
- package/dist/provider-models-EOys_Nvi.d.ts +867 -0
- package/dist/provider-ollama-setup-D89zlm9C.d.ts +32 -0
- package/dist/provider-onboard-BzOpgCLu.d.ts +40 -0
- package/dist/provider-runtime.runtime-Cm4as2KG.js +106 -0
- package/dist/provider-self-hosted-setup-Bmv_AQmw.d.ts +61 -0
- package/dist/provider-self-hosted-setup-CJwFVVB4.js +182 -0
- package/dist/provider-usage-CVNyLLDb.js +106 -0
- package/dist/provider-usage.types-CdTymHNu.d.ts +16 -0
- package/dist/provider-web-search-BJhXD5dH.js +2392 -0
- package/dist/provider-wizard-DMMYXjlW.js +152 -0
- package/dist/push-apns-BnWTdTEk.js +1038 -0
- package/dist/pw-ai-CtK_7Cy2.js +1866 -0
- package/dist/qr-cli-CA-BF0--.js +108 -0
- package/dist/qr-cli-D18HiUkh.js +369 -0
- package/dist/reactions-Df7XG8Uh.js +281 -0
- package/dist/read-only-account-inspect.discord.runtime-B-FP0mwb.js +111 -0
- package/dist/read-only-account-inspect.slack.runtime-DkWZ2ccW.js +111 -0
- package/dist/read-only-account-inspect.telegram.runtime-BnlTkn_e.js +111 -0
- package/dist/redact-snapshot-DVdstBvO.js +2661 -0
- package/dist/ref-contract-RPkB754Q.js +53 -0
- package/dist/register.agent-DVAxXQKW.js +434 -0
- package/dist/register.backup-CUuL5KUZ.js +624 -0
- package/dist/register.configure-bC0UEwfU.js +247 -0
- package/dist/register.maintenance-iIqvl_eT.js +569 -0
- package/dist/register.message-CEDd4z07.js +704 -0
- package/dist/register.onboard-Cejfnysy.js +187 -0
- package/dist/register.setup-DU7uHdYt.js +207 -0
- package/dist/register.status-health-sessions-BWphMXNR.js +493 -0
- package/dist/register.subclis-DnIweTEG.js +315 -0
- package/dist/register.subclis-gJX_Pbub.js +12 -0
- package/dist/registry-Dgwc-7eS.js +1183 -0
- package/dist/replies-D9PEZ8yn.js +110 -0
- package/dist/reply-history-lHgoC4l3.d.ts +1 -0
- package/dist/reply-payload-Bd2HuR4g.d.ts +46 -0
- package/dist/request-url-BcSJaiiu.d.ts +5 -0
- package/dist/resolve-BbsCHGLY.js +660 -0
- package/dist/resolve-channels-BtrGC95o.js +262 -0
- package/dist/resolve-channels-C1SthO1N.js +226 -0
- package/dist/resolve-users-CgSxHrU0.js +143 -0
- package/dist/routes-BZtqNrBf.js +7097 -0
- package/dist/rpc-D3KMxG4J.js +67 -0
- package/dist/run-command-C8b3dCZV.d.ts +16 -0
- package/dist/run-main-BlWJVotF.js +423 -0
- package/dist/runtime-RWGbO5Qy.d.ts +26 -0
- package/dist/runtime-discord-ops.runtime-DUXIYvQr.js +9073 -0
- package/dist/runtime-slack-ops.runtime-n1yFfyp1.js +4551 -0
- package/dist/runtime-telegram-ops.runtime-PZUWchjT.js +128 -0
- package/dist/runtime-whatsapp-login.runtime-xsuNyvGz.js +109 -0
- package/dist/runtime-whatsapp-outbound.runtime-5EfEyCsO.js +112 -0
- package/dist/sandbox-cli-Dw1nWNmQ.js +530 -0
- package/dist/search-manager-BJoRxOaf.js +15 -0
- package/dist/search-manager-DxkQvUrW.js +386 -0
- package/dist/secret-input-schema-Cp_La9qv.d.ts +19 -0
- package/dist/secrets-cli-BPyV2gSq.js +2065 -0
- package/dist/security-cli-EK4sSRfG.js +570 -0
- package/dist/send-B01Gvh9m.js +629 -0
- package/dist/send-B4L4wRJO.js +100 -0
- package/dist/send-BDcGrXt0.js +1025 -0
- package/dist/send-BRRtHxyR.js +283 -0
- package/dist/send-DU6dmMXW.js +631 -0
- package/dist/server-CWw5GFEg.js +106 -0
- package/dist/server-node-events-92cDVswC.js +501 -0
- package/dist/session-key-DbkfhOjM.d.ts +46 -0
- package/dist/sessions-B052uHA3.js +218 -0
- package/dist/sessions-Cef4dZNP.js +107 -0
- package/dist/setup-BlQPyDPy.js +387 -0
- package/dist/setup-DcSZ_pTn.d.ts +37 -0
- package/dist/setup-core-B9mdZYnU.js +166 -0
- package/dist/setup-core-Cj0sLkpP.js +47 -0
- package/dist/setup-core-CkZbebOv.js +143 -0
- package/dist/setup-core-MRNjnrJl.js +205 -0
- package/dist/setup-surface-3ZY0JtWE.js +490 -0
- package/dist/setup-wizard-helpers-Dwzb9Dcz.d.ts +203 -0
- package/dist/setup.finalize-B5ETm3Ui.js +517 -0
- package/dist/setup.gateway-config-C8hdtlbw.js +338 -0
- package/dist/setup.secret-input-BZSIeiqy.js +25 -0
- package/dist/shared--9_eQ_lc.js +75 -0
- package/dist/shared-CxkH3H0U.js +102 -0
- package/dist/shared-DTNL0hA9.js +298 -0
- package/dist/shared-HSP1OV-Q.js +96 -0
- package/dist/shared-UIjWb_3B.js +182 -0
- package/dist/signal-CTI6bSmB.js +109 -0
- package/dist/skills-4-r1mfJM.js +853 -0
- package/dist/skills-RNm54CBO.js +19 -0
- package/dist/skills-cli-te7dSs5p.js +291 -0
- package/dist/skills-install-Del-Ogv8.js +763 -0
- package/dist/skills-status-BZpoMXrR.js +169 -0
- package/dist/skills-status-Dq61Sz8U.js +20 -0
- package/dist/slack-oc-viUtl.js +109 -0
- package/dist/slash-commands.runtime-NdkD2LZV.js +123 -0
- package/dist/slash-dispatch.runtime-DQgeaF3J.js +136 -0
- package/dist/slash-skill-commands.runtime-DmOl2DnL.js +111 -0
- package/dist/src-0wtt7seR.js +1696 -0
- package/dist/status-5oR_gqv_.js +121 -0
- package/dist/status-BO8LY0hC.js +1599 -0
- package/dist/status-D_oHA9yO.js +126 -0
- package/dist/status-IrMacJRj.js +606 -0
- package/dist/status-Prdeg53E.js +43 -0
- package/dist/status-json-Da0hR-1Z.js +286 -0
- package/dist/status.link-channel-BgUJEZAz.js +138 -0
- package/dist/status.scan.deps.runtime-D9vHTxOW.js +121 -0
- package/dist/status.scan.runtime-D-EdD5CW.js +114 -0
- package/dist/status.summary--i6xduWH.js +592 -0
- package/dist/status.summary.runtime-BqMXjaBc.js +113 -0
- package/dist/subagent-orphan-recovery-DiRJcFQc.js +302 -0
- package/dist/subagent-registry-runtime-B66EYEYm.js +106 -0
- package/dist/synology-chat-BemXqdzG.js +297 -0
- package/dist/system-cli-CSuiia4-.js +92 -0
- package/dist/telegram/audit.d.ts +2 -0
- package/dist/telegram/audit.js +1 -1
- package/dist/telegram/token.d.ts +2 -0
- package/dist/telegram/token.js +26 -26
- package/dist/telegram-DLFcRv5a.js +109 -0
- package/dist/testing-DZrulv-n.d.ts +1755 -0
- package/dist/text-chunking-BaYBIUoR.d.ts +79 -0
- package/dist/text-chunking-C8kmbNfa.js +84 -0
- package/dist/thinking-D8aqmr3o.d.ts +13 -0
- package/dist/tlon-Bpr4f3yF.js +433 -0
- package/dist/tool-send-BHKm5ztm.d.ts +9 -0
- package/dist/tui-BY3QRgC1.js +3834 -0
- package/dist/tui-cli-CCfZOlV0.js +132 -0
- package/dist/types-CKx5nDZB.d.ts +45 -0
- package/dist/types-DBhDdMQd.d.ts +22670 -0
- package/dist/types.base-B_TkkSS8.d.ts +188 -0
- package/dist/types.secrets-Bojc4omL.js +92 -0
- package/dist/ui-1UpZZyI3.js +31 -0
- package/dist/update-BR4JvFpV.js +1036 -0
- package/dist/update-cli-BZv44lFq.js +1498 -0
- package/dist/update-offset-store-DGdBotIW.js +107 -0
- package/dist/update-runner-D34sooPe.js +1496 -0
- package/dist/vllm-defaults-BCGSJ7K0.d.ts +13 -0
- package/dist/wait-BU9vJv22.d.ts +4 -0
- package/dist/web-CXpU2D41.js +107 -0
- package/dist/web-shared-B4sL45ah.d.ts +45 -0
- package/dist/webhook-memory-guards-B7oLVseG.d.ts +43 -0
- package/dist/webhook-request-guards-CqIH7equ.d.ts +76 -0
- package/dist/webhook-targets-CAAGATtk.js +181 -0
- package/dist/webhook-targets-oQ0jd4r0.d.ts +106 -0
- package/dist/webhooks-cli-B46t2VT5.js +349 -0
- package/dist/whatsapp-Dniwd4Rv.js +109 -0
- package/dist/whatsapp-actions-fL46PsNs.js +162 -0
- package/dist/windows-spawn-DGeE98SH.d.ts +43 -0
- package/dist/workspace-dirs-d3Ms_ryk.js +2002 -0
- package/dist/zalo-Csulx0XK.d.ts +9 -0
- package/dist/zalo-gh0yAWmS.js +415 -0
- package/dist/zalouser-CuxRvztM.js +30911 -0
- package/dist/zod-schema.agent-runtime-B4MkB-_3.d.ts +10 -0
- package/dist/zod-schema.core-D5reNip6.js +541 -0
- package/dist/zod-schema.core-DN3RhEUG.d.ts +173 -0
- package/docs/SEC1.md +523 -0
- package/docs/SEC1_IMPLEMENTATION/CHANNELS_REPORT.md +173 -0
- package/docs/SEC1_IMPLEMENTATION/CORE_UTIL_REPORT.md +139 -0
- package/docs/SEC1_IMPLEMENTATION/DOCS_REPORT.md +134 -0
- package/docs/SEC1_IMPLEMENTATION/ENV_MAP_DRAFT.md +148 -0
- package/docs/SEC1_IMPLEMENTATION/INTEGRATION_REPORT.md +170 -0
- package/docs/SEC1_IMPLEMENTATION/PROVIDERS_REPORT.md +291 -0
- package/docs/SEC1_IMPLEMENTATION/QA_REPORT.md +249 -0
- package/docs/SEC1_IMPLEMENTATION/RECURSIVE_QA/wave1-channels.md +317 -0
- package/docs/SEC1_IMPLEMENTATION/RECURSIVE_QA/wave1-docs.md +212 -0
- package/docs/SEC1_IMPLEMENTATION/RECURSIVE_QA/wave1-security.md +368 -0
- package/docs/SEC1_IMPLEMENTATION/RECURSIVE_QA/wave2-critic-consolidated.md +195 -0
- package/docs/SEC1_IMPLEMENTATION/RECURSIVE_QA/wave3-fix-report.md +105 -0
- package/docs/SEC1_IMPLEMENTATION/STRATEGY.md +451 -0
- package/docs/SEC1_IMPLEMENTATION/TEST_REPORT.md +156 -0
- package/docs/pipeline-sdk/CLI_SPEC.md +609 -0
- package/docs/pipeline-sdk/PIPELINE_SDK_DESIGN.md +1372 -0
- package/extensions/kakao-talkchannel/MIGRATION_ARCH_ANALYSIS.md +455 -0
- package/extensions/kakao-talkchannel/MIGRATION_CODE_ANALYSIS.md +383 -0
- package/extensions/kakao-talkchannel/MIGRATION_STRATEGY.md +115 -0
- package/extensions/kakao-talkchannel/README.md +50 -0
- package/extensions/kakao-talkchannel/index.ts +20 -0
- package/extensions/kakao-talkchannel/moldclaw.plugin.json +98 -0
- package/extensions/kakao-talkchannel/package.json +12 -0
- package/extensions/kakao-talkchannel/src/adapters/config.ts +132 -0
- package/extensions/kakao-talkchannel/src/adapters/gateway.ts +974 -0
- package/extensions/kakao-talkchannel/src/adapters/outbound.ts +52 -0
- package/extensions/kakao-talkchannel/src/adapters/pairing.ts +35 -0
- package/extensions/kakao-talkchannel/src/adapters/security.ts +57 -0
- package/extensions/kakao-talkchannel/src/adapters/setup.ts +105 -0
- package/extensions/kakao-talkchannel/src/adapters/status.ts +117 -0
- package/extensions/kakao-talkchannel/src/channel.ts +58 -0
- package/extensions/kakao-talkchannel/src/commands/card.ts +413 -0
- package/extensions/kakao-talkchannel/src/config/schema.ts +129 -0
- package/extensions/kakao-talkchannel/src/kakao/callback.ts +133 -0
- package/extensions/kakao-talkchannel/src/kakao/limits.ts +129 -0
- package/extensions/kakao-talkchannel/src/kakao/payload.ts +138 -0
- package/extensions/kakao-talkchannel/src/kakao/response.ts +373 -0
- package/extensions/kakao-talkchannel/src/relay/client.ts +146 -0
- package/extensions/kakao-talkchannel/src/relay/session.ts +137 -0
- package/extensions/kakao-talkchannel/src/relay/sse.ts +258 -0
- package/extensions/kakao-talkchannel/src/relay/stream.ts +149 -0
- package/extensions/kakao-talkchannel/src/runtime.ts +21 -0
- package/extensions/kakao-talkchannel/src/types.ts +447 -0
- package/extensions/kakao-talkchannel/src/version.ts +3 -0
- package/extensions/kakao-talkchannel/tsconfig.json +19 -0
- package/package.json +23 -8
- package/skills/meshy/SKILL.md +69 -0
- package/skills/meshy/scripts/__pycache__/check_status.cpython-312.pyc +0 -0
- package/skills/meshy/scripts/__pycache__/image_to_3d.cpython-312.pyc +0 -0
- package/skills/meshy/scripts/__pycache__/text_to_3d.cpython-312.pyc +0 -0
- package/skills/meshy/scripts/check_status.py +147 -0
- package/skills/meshy/scripts/image_to_3d.py +229 -0
- package/skills/meshy/scripts/text_to_3d.py +214 -0
- package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
- package/skills/openai-whisper-api/scripts/transcribe.sh +0 -0
- package/skills/tavily-search/SKILL.md +61 -0
- package/skills/tavily-search/scripts/__pycache__/search.cpython-312.pyc +0 -0
- package/skills/tavily-search/scripts/search.py +238 -0
- package/skills/video-frames/scripts/frame.sh +0 -0
- package/LICENSE +0 -21
- package/dist/accounts-UcSvD34O.js +0 -109
- package/dist/acp-cli-BPb8PgHP.js +0 -2088
- package/dist/actions.runtime-BL5QRooG.js +0 -114
- package/dist/actions.runtime-DSdfSo40.js +0 -128
- package/dist/agents-CHeX_5-H.js +0 -217
- package/dist/agents-DQRL9XKP.js +0 -853
- package/dist/allow-list-Boi79v-U.js +0 -81
- package/dist/allowlist-B2eBBeMF.js +0 -142
- package/dist/api-CFAtRSYL.js +0 -6953
- package/dist/api-D5JNJj8n.js +0 -112
- package/dist/audit-BM0GsdzV.js +0 -787
- package/dist/audit-BqRK9OSj.js +0 -54
- package/dist/audit-channel.collect.runtime-BPvDB8aq.js +0 -600
- package/dist/audit-channel.runtime-D3fzHiAo.js +0 -116
- package/dist/audit-extra.async-NveNIzX0.js +0 -813
- package/dist/audit-membership-runtime-mu470WFO.js +0 -157
- package/dist/audit.deep.runtime-RdxvW8Tj.js +0 -24
- package/dist/audit.nondeep.runtime-DDu8vA9Z.js +0 -831
- package/dist/audit.runtime-Y8C9W7s9.js +0 -113
- package/dist/auth-choice-C1CIxRsi.js +0 -268
- package/dist/auth-choice-CTvqWiDI.js +0 -117
- package/dist/auth-choice-Ddzko1B8.js +0 -502
- package/dist/auth-choice-options-BIAmAiCe.js +0 -123
- package/dist/auth-choice-prompt-B815kArz.js +0 -110
- package/dist/auth-choice-prompt-CGhTNCJx.js +0 -36
- package/dist/auth-choice.plugin-providers.runtime-AvAZ6S5W.js +0 -114
- package/dist/auth-profiles-BJcHzwPy.js +0 -127650
- package/dist/auth-profiles.runtime-CieFilK5.js +0 -111
- package/dist/bluebubbles-F8FGE9cH.js +0 -64
- package/dist/brave-BG5Yopn8.js +0 -24
- package/dist/browser-cli-Co7PJGZF.js +0 -1492
- package/dist/call-CoaQYq7c.js +0 -639
- package/dist/call-D3eu5Jjh.js +0 -37
- package/dist/channel-BftWD6yu.js +0 -1321
- package/dist/channel-Bub9U5Xg.js +0 -214
- package/dist/channel-C0oDs7TO.js +0 -4681
- package/dist/channel-C8CnEdkZ.js +0 -352
- package/dist/channel-CI-RC-xf.js +0 -497
- package/dist/channel-CY-hZCOJ.js +0 -397
- package/dist/channel-CbtGJB2x.js +0 -943
- package/dist/channel-CcfK3wP8.js +0 -803
- package/dist/channel-DBoDIeVj.js +0 -619
- package/dist/channel-DEq6Ecs-.js +0 -920
- package/dist/channel-DH4dhW1n.js +0 -226
- package/dist/channel-DQ_wdKg_.js +0 -575
- package/dist/channel-DT6qD1Ic.js +0 -207
- package/dist/channel-DZNAyxwr.js +0 -542
- package/dist/channel-DtakwAEe.js +0 -538
- package/dist/channel-DuYgH6p1.js +0 -562
- package/dist/channel-Hn-AN-d52.js +0 -316
- package/dist/channel-_R4hbD5h.js +0 -1598
- package/dist/channel-account-context-DXq8dlvI.js +0 -103
- package/dist/channel-kQmEVn3I.js +0 -306
- package/dist/channel-options-DHfxaklg.js +0 -50
- package/dist/channel-summary-DUpnoYhI.js +0 -106
- package/dist/channel-t-JxCWk6.js +0 -949
- package/dist/channel.runtime--GYriaXU.js +0 -213
- package/dist/channel.runtime-BJtn3GOH.js +0 -174
- package/dist/channel.runtime-BV7t_oNz.js +0 -166
- package/dist/channel.runtime-Bi8a3n9S.js +0 -865
- package/dist/channel.runtime-BjsYF0NN.js +0 -122
- package/dist/channel.runtime-BnI6YtmI.js +0 -413
- package/dist/channel.runtime-CQOftcCd.js +0 -194
- package/dist/channel.runtime-CuIAcPjZ.js +0 -4006
- package/dist/channel.runtime-DH1Q1G4k.js +0 -399
- package/dist/channel.runtime-DYYUPKxr.js +0 -236
- package/dist/channel.runtime-U5Gszsr5.js +0 -177
- package/dist/channel.setup-BQFHmgki.js +0 -9
- package/dist/channel.setup-BVoDwklu.js +0 -8
- package/dist/channel.setup-Bf73HsXr.js +0 -57
- package/dist/channel.setup-CblD4flM.js +0 -11
- package/dist/channel.setup-DgxlrPgz.js +0 -6
- package/dist/channel.setup-GLIAEVKL.js +0 -8
- package/dist/channel.setup-YTy5R1sz.js +0 -9
- package/dist/channels-CTL8iR9J.js +0 -404
- package/dist/channels-DBGvnjHY.js +0 -1113
- package/dist/channels-cli-BmVO5-sq.js +0 -286
- package/dist/channels-status-issues-kDtsWzA-.js +0 -16
- package/dist/clawbot-cli-DtcMJHqX.js +0 -113
- package/dist/cli-BNGECGVY.js +0 -149
- package/dist/command-registry-1SDrWgER.js +0 -13
- package/dist/command-registry-DNorYU4w.js +0 -212
- package/dist/command-secret-gateway-DqDZparO.js +0 -106
- package/dist/compact.runtime-C1ZN8UGb.js +0 -111
- package/dist/completion-cli-Q_Jt5Foc.js +0 -16
- package/dist/completion-cli-QkTXhuJh.js +0 -445
- package/dist/config-BbxrRaLf.js +0 -938
- package/dist/config-CkD8DJ7L.js +0 -44
- package/dist/config-cli-BoPrlYTp.js +0 -428
- package/dist/config-guard-CEhCvr_u.js +0 -117
- package/dist/config-schema-GQ6uWjXe.js +0 -31
- package/dist/config-validation-woE2_LpC.js +0 -262
- package/dist/config-value-Dh8m-CFf.js +0 -132
- package/dist/config-y4i5g7s4.js +0 -30
- package/dist/configure-DGRzwdFN.js +0 -1100
- package/dist/configure-S4AHE3k_.js +0 -238
- package/dist/control-ui-shared-kLBp4YlS.js +0 -29
- package/dist/credentials-D5uBf_C5.js +0 -265
- package/dist/cron-cli-lGupeVCW.js +0 -634
- package/dist/daemon-cli-Cs_edi0I.js +0 -339
- package/dist/daemon-install-DIFpP_qv.js +0 -175
- package/dist/deliver-DYa_DFZU.js +0 -106
- package/dist/deliver-runtime-DCW_o2Ot.js +0 -106
- package/dist/devices-cli-YsGOW2-w.js +0 -340
- package/dist/diagnostic-vMghIesG.js +0 -310
- package/dist/directory-cli-DtjMQjU5.js +0 -306
- package/dist/directory.static-DBZGvsdF.js +0 -44
- package/dist/discord-DYCu19HT.js +0 -109
- package/dist/discovery-DZYAoDF_.js +0 -48
- package/dist/dns-cli-DqW4pNgW.js +0 -216
- package/dist/docs-cli-Bu9TBlDU.js +0 -173
- package/dist/doctor-completion-B5hcQD5c.js +0 -90
- package/dist/doctor-config-flow-BBB2ZKfT.js +0 -107
- package/dist/doctor-config-flow-DDBYUS9f.js +0 -2437
- package/dist/enable-Tmsp8QuB.js +0 -24
- package/dist/env-overrides-BHxqjYZG.js +0 -434
- package/dist/env-overrides.runtime-Cz98bf-l.js +0 -17
- package/dist/exec-approvals-cli-wO5cYfMa.js +0 -419
- package/dist/gateway-cli-CFvDGhB9.js +0 -26429
- package/dist/gateway-install-token-CskJfo_N.js +0 -163
- package/dist/gateway-rpc-srYfBID9.js +0 -26
- package/dist/gateway-runtime-C76hUmUV.js +0 -69
- package/dist/googlechat-Cha5utST.js +0 -307
- package/dist/health-DDQYYsJy.js +0 -108
- package/dist/health-DXZykGaX.js +0 -570
- package/dist/hooks-cli-DfkurPYP.js +0 -995
- package/dist/imessage-B26k39pl.js +0 -110
- package/dist/imessage-Bp1_6cws.js +0 -31
- package/dist/inbound-reply-dispatch-DoIJLztA.js +0 -71
- package/dist/install-target-BjOuS4I8.js +0 -574
- package/dist/installs-Cz4k0W1Y.js +0 -532
- package/dist/io-B0OKifLZ.js +0 -28
- package/dist/io-DcoxdH6t.js +0 -9570
- package/dist/ipv4-CTQQ4_IW.js +0 -82
- package/dist/irc-B8vBDigm.js +0 -672
- package/dist/library-VCM_cQY4.js +0 -107
- package/dist/lifecycle-core-Ctz36PdQ.js +0 -382
- package/dist/line-B_uTLrdI.js +0 -530
- package/dist/llm-slug-generator-YWg0g2pj.js +0 -67
- package/dist/logging-S-5LPdfQ.js +0 -13
- package/dist/logging-ueBMCGMR.js +0 -29
- package/dist/login-qr-pcACm2Ng.js +0 -107
- package/dist/login-qr-pv-kxMfF.js +0 -233
- package/dist/logs-cli-RgADgSMO.js +0 -254
- package/dist/manager-runtime-BhTkoKmb.js +0 -106
- package/dist/manager.runtime-BjHzikoK.js +0 -710
- package/dist/matrix-C4EEu2Qp.js +0 -1490
- package/dist/matrix-Dfzcc5nV.js +0 -1269
- package/dist/mcp-cli-CJmOm9Oj.js +0 -86
- package/dist/media-understanding.runtime-DCETFCw_.js +0 -111
- package/dist/memory-cli-DFqd6tYx.js +0 -106
- package/dist/method-scopes-D-Q9dvbj.js +0 -2586
- package/dist/model-picker-Z-CUcuMr.js +0 -390
- package/dist/model-picker-v5mUsZ4J.js +0 -107
- package/dist/model-picker.runtime-A_z0dHfS.js +0 -120
- package/dist/model-suppression.runtime-QVWVJRr-.js +0 -111
- package/dist/models-Bbj0xV4F.js +0 -2514
- package/dist/models-D-OIjZqU.js +0 -113
- package/dist/models-cli-Bpn-5i4h.js +0 -304
- package/dist/models-config-Cwa5cJbC.js +0 -106
- package/dist/monitor-BchfCAaU.js +0 -6823
- package/dist/monitor-BydV44SP.js +0 -3076
- package/dist/monitor-CT8axwfm.js +0 -767
- package/dist/monitor-CZGWNOvn.js +0 -777
- package/dist/monitor-DN62r69g.js +0 -3468
- package/dist/monitor-DZ0fzJku.js +0 -110
- package/dist/monitor-DvNjzWFu.js +0 -108
- package/dist/monitor-shared-B-DBSlkQ.js +0 -444
- package/dist/msteams-Bf-wk2Rp.js +0 -852
- package/dist/node-cli-kH16TQI7.js +0 -2498
- package/dist/node-resolve-DfOpQmxm.js +0 -835
- package/dist/nodes-cli-CkAMXW5u.js +0 -1375
- package/dist/nostr-B8UGHclZ.js +0 -8744
- package/dist/npm-resolution-DmjlifII.js +0 -60
- package/dist/onboard-C883nfyw.js +0 -589
- package/dist/onboard-channels-Dc-BxN7p.js +0 -200
- package/dist/onboard-channels-j5EENtum.js +0 -1241
- package/dist/onboard-custom-0atne0C5.js +0 -571
- package/dist/onboard-custom-CWMqwjJx.js +0 -109
- package/dist/onboard-helpers-D3wWfH8F.js +0 -335
- package/dist/onboard-helpers-DZmRCe8l.js +0 -108
- package/dist/onboard-remote-Cn6kW-p0.js +0 -112
- package/dist/onboard-remote-Cx4w5VAk.js +0 -181
- package/dist/onboard-search-Ck9HRh2M.js +0 -297
- package/dist/onboard-skills-BtqrGioT.js +0 -133
- package/dist/onboard-skills-Dnw19Os8.js +0 -112
- package/dist/outbound-media-C5Nv4o18.js +0 -11
- package/dist/pairing-cli-Cwy9QZ_4.js +0 -212
- package/dist/perplexity-Brhpb45X.js +0 -24
- package/dist/pi-model-discovery-runtime-DIOdo6D8.js +0 -106
- package/dist/pi-tools.before-tool-call.runtime-CFM4gsDF.js +0 -380
- package/dist/plugin-install-BOV00hia.js +0 -112
- package/dist/plugin-install-Bak8fUBv.js +0 -184
- package/dist/plugin-install-plan-bKkEefRf.js +0 -49
- package/dist/plugin-registry-DxAXQUlZ.js +0 -108
- package/dist/plugin-registry-n0p3phem.js +0 -49
- package/dist/plugins-Ca3RK8Fi.js +0 -106
- package/dist/plugins-cli-BnC51H2R.js +0 -912
- package/dist/policy-BJv97w9e.js +0 -143
- package/dist/preflight-audio.runtime-BrFcf-6_.js +0 -111
- package/dist/probe-063xvvZc.js +0 -19
- package/dist/probe-BJEb2wGv.js +0 -1793
- package/dist/probe-CJQlxgsl.js +0 -47
- package/dist/probe-Caa2HznF.js +0 -6328
- package/dist/probe-CfL4tnJ6.js +0 -129
- package/dist/probe-auth-DN2Ec83-.js +0 -38
- package/dist/probe-auth-D_UKzu4m.js +0 -48
- package/dist/program-BOMdC7MC.js +0 -247
- package/dist/prompt-select-styled-DDnCfM3j.js +0 -2673
- package/dist/provider-api-key-auth.runtime-DUns3fwX.js +0 -116
- package/dist/provider-auth-choice-B_j1ctT2.js +0 -126
- package/dist/provider-auth-choice-preference-BaOBZ_Xn.js +0 -189
- package/dist/provider-auth-choice.runtime-DOako_zV.js +0 -118
- package/dist/provider-auth-guidance-CrjxnoNZ.js +0 -34
- package/dist/provider-runtime.runtime-BkOkgmTw.js +0 -106
- package/dist/provider-self-hosted-setup-BFDU6dRa.js +0 -182
- package/dist/provider-usage-CaDE0mqq.js +0 -106
- package/dist/provider-web-search-BR7etTjJ.js +0 -2392
- package/dist/provider-wizard-DCPdKUvb.js +0 -152
- package/dist/push-apns-B_OZjm4v.js +0 -1038
- package/dist/pw-ai-dG60P0hQ.js +0 -1866
- package/dist/qr-cli-DWfiw79I.js +0 -369
- package/dist/qr-cli-DwuKtyZQ.js +0 -108
- package/dist/reactions-CIGAPBn8.js +0 -281
- package/dist/read-only-account-inspect.discord.runtime-D54mnq8l.js +0 -111
- package/dist/read-only-account-inspect.slack.runtime-Bxs9ObMC.js +0 -111
- package/dist/read-only-account-inspect.telegram.runtime-UoVuf_Yo.js +0 -111
- package/dist/redact-snapshot-DZ3Vq-SC.js +0 -2657
- package/dist/ref-contract-D96lSYLs.js +0 -53
- package/dist/register.agent-2KmeahEL.js +0 -434
- package/dist/register.backup-ECBnWVR7.js +0 -624
- package/dist/register.configure-Doz1daCp.js +0 -247
- package/dist/register.maintenance-C33cV-WM.js +0 -569
- package/dist/register.message-CnL0NiF6.js +0 -704
- package/dist/register.onboard-BrYGZeQA.js +0 -187
- package/dist/register.setup-Bx6gEg6X.js +0 -207
- package/dist/register.status-health-sessions-FLb0CUOO.js +0 -493
- package/dist/register.subclis-BuqgaeIf.js +0 -12
- package/dist/register.subclis-DwdgfdnT.js +0 -315
- package/dist/registry-xhgvU89y.js +0 -1107
- package/dist/replies-hB2aipLu.js +0 -110
- package/dist/resolve-3ErMOltL.js +0 -660
- package/dist/resolve-channels-BV8GXuPe.js +0 -226
- package/dist/resolve-channels-CTY_XRIP.js +0 -262
- package/dist/resolve-users-DQ4Ne4Zc.js +0 -143
- package/dist/routes-BNDsNO_e.js +0 -7097
- package/dist/rpc-BLGTBWXq.js +0 -67
- package/dist/run-main-COAE4GlI.js +0 -423
- package/dist/runtime-discord-ops.runtime-Dxg-nlgd.js +0 -9073
- package/dist/runtime-slack-ops.runtime-Di474LJr.js +0 -4551
- package/dist/runtime-telegram-ops.runtime-Da8vgf3O.js +0 -128
- package/dist/runtime-whatsapp-login.runtime-DcouP4iF.js +0 -109
- package/dist/runtime-whatsapp-outbound.runtime-CYamaEJX.js +0 -112
- package/dist/sandbox-cli-U5ZTxhxL.js +0 -530
- package/dist/search-manager-CfizyEMk.js +0 -386
- package/dist/search-manager-DaF2QP4s.js +0 -15
- package/dist/secrets-cli-C0gytFip.js +0 -2065
- package/dist/security-cli-C74EuLUO.js +0 -570
- package/dist/send-BTLVBf_E.js +0 -631
- package/dist/send-BlWWCEZE.js +0 -1025
- package/dist/send-CfypD1B_.js +0 -100
- package/dist/send-Cm9v3uhF.js +0 -283
- package/dist/send-g2odQuYI.js +0 -629
- package/dist/server-C8b5QJ2s.js +0 -106
- package/dist/server-node-events-xqQe5xiu.js +0 -501
- package/dist/sessions-CSSzvgPQ.js +0 -107
- package/dist/sessions-z0GIvdKa.js +0 -218
- package/dist/setup-D9XTmlF8.js +0 -387
- package/dist/setup-core-BDrLOwYO.js +0 -143
- package/dist/setup-core-CM7cY7_i.js +0 -166
- package/dist/setup-core-CnmgANY-.js +0 -205
- package/dist/setup-core-DgcjCKmG.js +0 -47
- package/dist/setup-surface-DzRrVKYj.js +0 -490
- package/dist/setup.finalize-UaPu_adv.js +0 -517
- package/dist/setup.gateway-config-Djc1ceEh.js +0 -338
- package/dist/setup.secret-input-BkczghbR.js +0 -25
- package/dist/shared-BHizGoNk.js +0 -298
- package/dist/shared-CUfYhQkP.js +0 -96
- package/dist/shared-DYYqr9EC.js +0 -75
- package/dist/shared-DthOxMRQ.js +0 -182
- package/dist/shared-On_A5_hW.js +0 -102
- package/dist/signal-D6px9PGZ.js +0 -109
- package/dist/skills-B4h1k-SP.js +0 -853
- package/dist/skills-Bto10BGB.js +0 -19
- package/dist/skills-cli-CXGR3Y5j.js +0 -291
- package/dist/skills-install-B1AlkK8C.js +0 -763
- package/dist/skills-status-BsmJ_iSg.js +0 -20
- package/dist/skills-status-DGdxY3OI.js +0 -169
- package/dist/slack-B7vWFmxP.js +0 -109
- package/dist/slash-commands.runtime-DXdAT84n.js +0 -123
- package/dist/slash-dispatch.runtime-CNf2-9Aj.js +0 -136
- package/dist/slash-skill-commands.runtime-CBjffHRX.js +0 -111
- package/dist/src-Cp7P7T08.js +0 -1696
- package/dist/status-158fWh4A.js +0 -43
- package/dist/status-BJIVLJnb.js +0 -1599
- package/dist/status-BQiBI6N9.js +0 -126
- package/dist/status-CZipXGUu.js +0 -121
- package/dist/status-ZZIVFLI-.js +0 -606
- package/dist/status-json-BNUy5Mem.js +0 -286
- package/dist/status.link-channel-B694y1Xu.js +0 -138
- package/dist/status.scan.deps.runtime-BcoKEzQD.js +0 -121
- package/dist/status.scan.runtime-CqScDt-p.js +0 -114
- package/dist/status.summary-AMek7qvI.js +0 -592
- package/dist/status.summary.runtime-XgkcQ_kr.js +0 -113
- package/dist/subagent-orphan-recovery-CrCYTmFC.js +0 -302
- package/dist/subagent-registry-runtime-Cg-YvLx3.js +0 -106
- package/dist/synology-chat-0G85jIqQ.js +0 -297
- package/dist/system-cli-kZtSxKNm.js +0 -92
- package/dist/telegram-DV0Wy89w.js +0 -109
- package/dist/text-chunking-C2J2Oeul.js +0 -84
- package/dist/tlon-DmK1NUVP.js +0 -433
- package/dist/tui-D3bNPLG7.js +0 -3834
- package/dist/tui-cli-DtMp9k_s.js +0 -132
- package/dist/types.secrets-DuSPmmWB.js +0 -80
- package/dist/ui-CeGztSEL.js +0 -31
- package/dist/update-De7VudzP.js +0 -1036
- package/dist/update-cli-BH8Pb-So.js +0 -1498
- package/dist/update-offset-store-syELkdEW.js +0 -107
- package/dist/update-runner-Cq-Q40T9.js +0 -1496
- package/dist/web-CjMtvfSq.js +0 -107
- package/dist/webhook-targets-_jTR0Bb_.js +0 -181
- package/dist/webhooks-cli-DQ6u2Qau.js +0 -349
- package/dist/whatsapp-CyLk16SZ.js +0 -109
- package/dist/whatsapp-actions-Dzr2Wzqw.js +0 -162
- package/dist/workspace-dirs-L1_QQ9mB.js +0 -2002
- package/dist/zalo-CrehfXvK.js +0 -415
- package/dist/zalouser-D1QD-O-I.js +0 -30911
- package/dist/zod-schema.core-CWxzqcUs.js +0 -541
package/dist/matrix-Dfzcc5nV.js
DELETED
|
@@ -1,1269 +0,0 @@
|
|
|
1
|
-
import { o as __toESM } from "./chunk-DORXReHP.js";
|
|
2
|
-
import { t as formatDocsLink } from "./links-C5I443Xb.js";
|
|
3
|
-
import { HC as createAccountListHelpers, Mw as prepareScopedSetupConfig, Wh as formatResolvedUnresolvedNote, cg as addWildcardAllowFrom, jg as setTopLevelChannelGroupPolicy, lg as buildSingleChannelSecretPromptState, ug as mergeAllowFromEntries, xg as promptSingleChannelSecretInput } from "./auth-profiles-BJcHzwPy.js";
|
|
4
|
-
import { n as normalizeAccountId, t as DEFAULT_ACCOUNT_ID } from "./account-id-O4Og6DrK.js";
|
|
5
|
-
import { a as hasConfiguredSecretInput, c as normalizeResolvedSecretInputString, l as normalizeSecretInputString } from "./types.secrets-DuSPmmWB.js";
|
|
6
|
-
import { J as fetchWithSsrFGuard } from "./provider-web-search-BR7etTjJ.js";
|
|
7
|
-
import { t as mapAllowlistResolutionInputs } from "./allowlist-resolution-B2_DjN_J.js";
|
|
8
|
-
import { t as runPluginCommandWithTimeout } from "./run-command-DLrfpRdi.js";
|
|
9
|
-
import { n as loadMatrixCredentials, s as getMatrixRuntime, t as credentialsMatchConfig } from "./credentials-CgJiOMDt.js";
|
|
10
|
-
import { createRequire } from "node:module";
|
|
11
|
-
import { fileURLToPath } from "node:url";
|
|
12
|
-
import fs from "node:fs";
|
|
13
|
-
import path from "node:path";
|
|
14
|
-
import os from "node:os";
|
|
15
|
-
import crypto from "node:crypto";
|
|
16
|
-
//#region extensions/matrix/src/matrix/client/runtime.ts
|
|
17
|
-
function isBunRuntime() {
|
|
18
|
-
return typeof process.versions.bun === "string";
|
|
19
|
-
}
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region extensions/matrix/src/matrix/sdk-runtime.ts
|
|
22
|
-
let cachedMatrixSdkRuntime = null;
|
|
23
|
-
function loadMatrixSdk() {
|
|
24
|
-
if (cachedMatrixSdkRuntime) return cachedMatrixSdkRuntime;
|
|
25
|
-
cachedMatrixSdkRuntime = createRequire(import.meta.url)("@vector-im/matrix-bot-sdk");
|
|
26
|
-
return cachedMatrixSdkRuntime;
|
|
27
|
-
}
|
|
28
|
-
function getMatrixLogService() {
|
|
29
|
-
return loadMatrixSdk().LogService;
|
|
30
|
-
}
|
|
31
|
-
//#endregion
|
|
32
|
-
//#region extensions/matrix/src/matrix/client/logging.ts
|
|
33
|
-
let matrixSdkLoggingConfigured = false;
|
|
34
|
-
let matrixSdkBaseLogger;
|
|
35
|
-
function shouldSuppressMatrixHttpNotFound(module, messageOrObject) {
|
|
36
|
-
if (module !== "MatrixHttpClient") return false;
|
|
37
|
-
return messageOrObject.some((entry) => {
|
|
38
|
-
if (!entry || typeof entry !== "object") return false;
|
|
39
|
-
return entry.errcode === "M_NOT_FOUND";
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
function ensureMatrixSdkLoggingConfigured() {
|
|
43
|
-
if (matrixSdkLoggingConfigured) return;
|
|
44
|
-
const { ConsoleLogger, LogService } = loadMatrixSdk();
|
|
45
|
-
matrixSdkBaseLogger = new ConsoleLogger();
|
|
46
|
-
matrixSdkLoggingConfigured = true;
|
|
47
|
-
LogService.setLogger({
|
|
48
|
-
trace: (module, ...messageOrObject) => matrixSdkBaseLogger?.trace(module, ...messageOrObject),
|
|
49
|
-
debug: (module, ...messageOrObject) => matrixSdkBaseLogger?.debug(module, ...messageOrObject),
|
|
50
|
-
info: (module, ...messageOrObject) => matrixSdkBaseLogger?.info(module, ...messageOrObject),
|
|
51
|
-
warn: (module, ...messageOrObject) => matrixSdkBaseLogger?.warn(module, ...messageOrObject),
|
|
52
|
-
error: (module, ...messageOrObject) => {
|
|
53
|
-
if (shouldSuppressMatrixHttpNotFound(module, messageOrObject)) return;
|
|
54
|
-
matrixSdkBaseLogger?.error(module, ...messageOrObject);
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
//#endregion
|
|
59
|
-
//#region extensions/matrix/src/matrix/client/config.ts
|
|
60
|
-
function clean(value, path) {
|
|
61
|
-
return normalizeResolvedSecretInputString({
|
|
62
|
-
value,
|
|
63
|
-
path
|
|
64
|
-
}) ?? "";
|
|
65
|
-
}
|
|
66
|
-
/** Shallow-merge known nested config sub-objects so partial overrides inherit base values. */
|
|
67
|
-
function deepMergeConfig(base, override) {
|
|
68
|
-
const merged = {
|
|
69
|
-
...base,
|
|
70
|
-
...override
|
|
71
|
-
};
|
|
72
|
-
for (const key of ["dm", "actions"]) {
|
|
73
|
-
const b = base[key];
|
|
74
|
-
const o = override[key];
|
|
75
|
-
if (typeof b === "object" && b !== null && typeof o === "object" && o !== null) merged[key] = {
|
|
76
|
-
...b,
|
|
77
|
-
...o
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
return merged;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Resolve Matrix config for a specific account, with fallback to top-level config.
|
|
84
|
-
* This supports both multi-account (channels.matrix.accounts.*) and
|
|
85
|
-
* single-account (channels.matrix.*) configurations.
|
|
86
|
-
*/
|
|
87
|
-
function resolveMatrixConfigForAccount(cfg = getMatrixRuntime().config.loadConfig(), accountId, env = process.env) {
|
|
88
|
-
const normalizedAccountId = normalizeAccountId(accountId);
|
|
89
|
-
const matrixBase = cfg.channels?.matrix ?? {};
|
|
90
|
-
const accounts = cfg.channels?.matrix?.accounts;
|
|
91
|
-
let accountConfig = accounts?.[normalizedAccountId];
|
|
92
|
-
if (!accountConfig && accounts) {
|
|
93
|
-
for (const key of Object.keys(accounts)) if (normalizeAccountId(key) === normalizedAccountId) {
|
|
94
|
-
accountConfig = accounts[key];
|
|
95
|
-
break;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
const matrix = accountConfig ? deepMergeConfig(matrixBase, accountConfig) : matrixBase;
|
|
99
|
-
return {
|
|
100
|
-
homeserver: clean(matrix.homeserver, "channels.matrix.homeserver") || clean(env.MATRIX_HOMESERVER, "MATRIX_HOMESERVER"),
|
|
101
|
-
userId: clean(matrix.userId, "channels.matrix.userId") || clean(env.MATRIX_USER_ID, "MATRIX_USER_ID"),
|
|
102
|
-
accessToken: clean(matrix.accessToken, "channels.matrix.accessToken") || clean(env.MATRIX_ACCESS_TOKEN, "MATRIX_ACCESS_TOKEN") || void 0,
|
|
103
|
-
password: clean(matrix.password, "channels.matrix.password") || clean(env.MATRIX_PASSWORD, "MATRIX_PASSWORD") || void 0,
|
|
104
|
-
deviceName: clean(matrix.deviceName, "channels.matrix.deviceName") || clean(env.MATRIX_DEVICE_NAME, "MATRIX_DEVICE_NAME") || void 0,
|
|
105
|
-
initialSyncLimit: typeof matrix.initialSyncLimit === "number" ? Math.max(0, Math.floor(matrix.initialSyncLimit)) : void 0,
|
|
106
|
-
encryption: matrix.encryption ?? false
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
async function resolveMatrixAuth(params) {
|
|
110
|
-
const cfg = params?.cfg ?? getMatrixRuntime().config.loadConfig();
|
|
111
|
-
const env = params?.env ?? process.env;
|
|
112
|
-
const resolved = resolveMatrixConfigForAccount(cfg, params?.accountId, env);
|
|
113
|
-
if (!resolved.homeserver) throw new Error("Matrix homeserver is required (matrix.homeserver)");
|
|
114
|
-
const { loadMatrixCredentials, saveMatrixCredentials, credentialsMatchConfig, touchMatrixCredentials } = await import("./credentials-KI-Se7m3.js");
|
|
115
|
-
const accountId = params?.accountId;
|
|
116
|
-
const cached = loadMatrixCredentials(env, accountId);
|
|
117
|
-
const cachedCredentials = cached && credentialsMatchConfig(cached, {
|
|
118
|
-
homeserver: resolved.homeserver,
|
|
119
|
-
userId: resolved.userId || ""
|
|
120
|
-
}) ? cached : null;
|
|
121
|
-
if (resolved.accessToken) {
|
|
122
|
-
let userId = resolved.userId;
|
|
123
|
-
if (!userId) {
|
|
124
|
-
ensureMatrixSdkLoggingConfigured();
|
|
125
|
-
const { MatrixClient } = loadMatrixSdk();
|
|
126
|
-
userId = await new MatrixClient(resolved.homeserver, resolved.accessToken).getUserId();
|
|
127
|
-
saveMatrixCredentials({
|
|
128
|
-
homeserver: resolved.homeserver,
|
|
129
|
-
userId,
|
|
130
|
-
accessToken: resolved.accessToken
|
|
131
|
-
}, env, accountId);
|
|
132
|
-
} else if (cachedCredentials && cachedCredentials.accessToken === resolved.accessToken) touchMatrixCredentials(env, accountId);
|
|
133
|
-
return {
|
|
134
|
-
homeserver: resolved.homeserver,
|
|
135
|
-
userId,
|
|
136
|
-
accessToken: resolved.accessToken,
|
|
137
|
-
deviceName: resolved.deviceName,
|
|
138
|
-
initialSyncLimit: resolved.initialSyncLimit,
|
|
139
|
-
encryption: resolved.encryption
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
if (cachedCredentials) {
|
|
143
|
-
touchMatrixCredentials(env, accountId);
|
|
144
|
-
return {
|
|
145
|
-
homeserver: cachedCredentials.homeserver,
|
|
146
|
-
userId: cachedCredentials.userId,
|
|
147
|
-
accessToken: cachedCredentials.accessToken,
|
|
148
|
-
deviceName: resolved.deviceName,
|
|
149
|
-
initialSyncLimit: resolved.initialSyncLimit,
|
|
150
|
-
encryption: resolved.encryption
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
if (!resolved.userId) throw new Error("Matrix userId is required when no access token is configured (matrix.userId)");
|
|
154
|
-
if (!resolved.password) throw new Error("Matrix password is required when no access token is configured (matrix.password)");
|
|
155
|
-
const { response: loginResponse, release: releaseLoginResponse } = await fetchWithSsrFGuard({
|
|
156
|
-
url: `${resolved.homeserver}/_matrix/client/v3/login`,
|
|
157
|
-
init: {
|
|
158
|
-
method: "POST",
|
|
159
|
-
headers: { "Content-Type": "application/json" },
|
|
160
|
-
body: JSON.stringify({
|
|
161
|
-
type: "m.login.password",
|
|
162
|
-
identifier: {
|
|
163
|
-
type: "m.id.user",
|
|
164
|
-
user: resolved.userId
|
|
165
|
-
},
|
|
166
|
-
password: resolved.password,
|
|
167
|
-
initial_device_display_name: resolved.deviceName ?? "MoldClaw Gateway"
|
|
168
|
-
})
|
|
169
|
-
},
|
|
170
|
-
auditContext: "matrix.login"
|
|
171
|
-
});
|
|
172
|
-
const login = await (async () => {
|
|
173
|
-
try {
|
|
174
|
-
if (!loginResponse.ok) {
|
|
175
|
-
const errorText = await loginResponse.text();
|
|
176
|
-
throw new Error(`Matrix login failed: ${errorText}`);
|
|
177
|
-
}
|
|
178
|
-
return await loginResponse.json();
|
|
179
|
-
} finally {
|
|
180
|
-
await releaseLoginResponse();
|
|
181
|
-
}
|
|
182
|
-
})();
|
|
183
|
-
const accessToken = login.access_token?.trim();
|
|
184
|
-
if (!accessToken) throw new Error("Matrix login did not return an access token");
|
|
185
|
-
const auth = {
|
|
186
|
-
homeserver: resolved.homeserver,
|
|
187
|
-
userId: login.user_id ?? resolved.userId,
|
|
188
|
-
accessToken,
|
|
189
|
-
deviceName: resolved.deviceName,
|
|
190
|
-
initialSyncLimit: resolved.initialSyncLimit,
|
|
191
|
-
encryption: resolved.encryption
|
|
192
|
-
};
|
|
193
|
-
saveMatrixCredentials({
|
|
194
|
-
homeserver: auth.homeserver,
|
|
195
|
-
userId: auth.userId,
|
|
196
|
-
accessToken: auth.accessToken,
|
|
197
|
-
deviceId: login.device_id
|
|
198
|
-
}, env, accountId);
|
|
199
|
-
return auth;
|
|
200
|
-
}
|
|
201
|
-
//#endregion
|
|
202
|
-
//#region extensions/matrix/src/matrix/deps.ts
|
|
203
|
-
const MATRIX_SDK_PACKAGE = "@vector-im/matrix-bot-sdk";
|
|
204
|
-
const MATRIX_CRYPTO_DOWNLOAD_HELPER = "@matrix-org/matrix-sdk-crypto-nodejs/download-lib.js";
|
|
205
|
-
function formatCommandError(result) {
|
|
206
|
-
const stderr = result.stderr.trim();
|
|
207
|
-
if (stderr) return stderr;
|
|
208
|
-
const stdout = result.stdout.trim();
|
|
209
|
-
if (stdout) return stdout;
|
|
210
|
-
return "unknown error";
|
|
211
|
-
}
|
|
212
|
-
function isMissingMatrixCryptoRuntimeError(err) {
|
|
213
|
-
const message = err instanceof Error ? err.message : String(err ?? "");
|
|
214
|
-
return message.includes("Cannot find module") && message.includes("@matrix-org/matrix-sdk-crypto-nodejs-");
|
|
215
|
-
}
|
|
216
|
-
function isMatrixSdkAvailable() {
|
|
217
|
-
try {
|
|
218
|
-
createRequire(import.meta.url).resolve(MATRIX_SDK_PACKAGE);
|
|
219
|
-
return true;
|
|
220
|
-
} catch {
|
|
221
|
-
return false;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
function resolvePluginRoot() {
|
|
225
|
-
const currentDir = path.dirname(fileURLToPath(import.meta.url));
|
|
226
|
-
return path.resolve(currentDir, "..", "..");
|
|
227
|
-
}
|
|
228
|
-
async function ensureMatrixCryptoRuntime(params = {}) {
|
|
229
|
-
const req = createRequire(import.meta.url);
|
|
230
|
-
const requireFn = params.requireFn ?? ((id) => req(id));
|
|
231
|
-
const resolveFn = params.resolveFn ?? ((id) => req.resolve(id));
|
|
232
|
-
const runCommand = params.runCommand ?? runPluginCommandWithTimeout;
|
|
233
|
-
const nodeExecutable = params.nodeExecutable ?? process.execPath;
|
|
234
|
-
try {
|
|
235
|
-
requireFn(MATRIX_SDK_PACKAGE);
|
|
236
|
-
return;
|
|
237
|
-
} catch (err) {
|
|
238
|
-
if (!isMissingMatrixCryptoRuntimeError(err)) throw err;
|
|
239
|
-
}
|
|
240
|
-
const scriptPath = resolveFn(MATRIX_CRYPTO_DOWNLOAD_HELPER);
|
|
241
|
-
params.log?.("matrix: crypto runtime missing; downloading platform library…");
|
|
242
|
-
const result = await runCommand({
|
|
243
|
-
argv: [nodeExecutable, scriptPath],
|
|
244
|
-
cwd: path.dirname(scriptPath),
|
|
245
|
-
timeoutMs: 3e5,
|
|
246
|
-
env: { COREPACK_ENABLE_DOWNLOAD_PROMPT: "0" }
|
|
247
|
-
});
|
|
248
|
-
if (result.code !== 0) throw new Error(`Matrix crypto runtime bootstrap failed: ${formatCommandError(result)}`);
|
|
249
|
-
try {
|
|
250
|
-
requireFn(MATRIX_SDK_PACKAGE);
|
|
251
|
-
} catch (err) {
|
|
252
|
-
throw new Error(`Matrix crypto runtime remains unavailable after bootstrap: ${err instanceof Error ? err.message : String(err)}`);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
async function ensureMatrixSdkInstalled(params) {
|
|
256
|
-
if (isMatrixSdkAvailable()) return;
|
|
257
|
-
const confirm = params.confirm;
|
|
258
|
-
if (confirm) {
|
|
259
|
-
if (!await confirm("Matrix requires @vector-im/matrix-bot-sdk. Install now?")) throw new Error("Matrix requires @vector-im/matrix-bot-sdk (install dependencies first).");
|
|
260
|
-
}
|
|
261
|
-
const root = resolvePluginRoot();
|
|
262
|
-
const command = fs.existsSync(path.join(root, "pnpm-lock.yaml")) ? ["pnpm", "install"] : [
|
|
263
|
-
"npm",
|
|
264
|
-
"install",
|
|
265
|
-
"--omit=dev",
|
|
266
|
-
"--silent"
|
|
267
|
-
];
|
|
268
|
-
params.runtime.log?.(`matrix: installing dependencies via ${command[0]} (${root})…`);
|
|
269
|
-
const result = await runPluginCommandWithTimeout({
|
|
270
|
-
argv: command,
|
|
271
|
-
cwd: root,
|
|
272
|
-
timeoutMs: 3e5,
|
|
273
|
-
env: { COREPACK_ENABLE_DOWNLOAD_PROMPT: "0" }
|
|
274
|
-
});
|
|
275
|
-
if (result.code !== 0) throw new Error(result.stderr.trim() || result.stdout.trim() || "Matrix dependency install failed.");
|
|
276
|
-
if (!isMatrixSdkAvailable()) throw new Error("Matrix dependency install completed but @vector-im/matrix-bot-sdk is still missing.");
|
|
277
|
-
}
|
|
278
|
-
const STORAGE_META_FILENAME = "storage-meta.json";
|
|
279
|
-
function sanitizePathSegment(value) {
|
|
280
|
-
return value.trim().toLowerCase().replace(/[^a-z0-9._-]+/g, "_").replace(/^_+|_+$/g, "") || "unknown";
|
|
281
|
-
}
|
|
282
|
-
function resolveHomeserverKey(homeserver) {
|
|
283
|
-
try {
|
|
284
|
-
const url = new URL(homeserver);
|
|
285
|
-
if (url.host) return sanitizePathSegment(url.host);
|
|
286
|
-
} catch {}
|
|
287
|
-
return sanitizePathSegment(homeserver);
|
|
288
|
-
}
|
|
289
|
-
function hashAccessToken(accessToken) {
|
|
290
|
-
return crypto.createHash("sha256").update(accessToken).digest("hex").slice(0, 16);
|
|
291
|
-
}
|
|
292
|
-
function resolveLegacyStoragePaths(env = process.env) {
|
|
293
|
-
const stateDir = getMatrixRuntime().state.resolveStateDir(env, os.homedir);
|
|
294
|
-
return {
|
|
295
|
-
storagePath: path.join(stateDir, "matrix", "bot-storage.json"),
|
|
296
|
-
cryptoPath: path.join(stateDir, "matrix", "crypto")
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
function resolveMatrixStoragePaths(params) {
|
|
300
|
-
const env = params.env ?? process.env;
|
|
301
|
-
const stateDir = getMatrixRuntime().state.resolveStateDir(env, os.homedir);
|
|
302
|
-
const accountKey = sanitizePathSegment(params.accountId ?? "default");
|
|
303
|
-
const userKey = sanitizePathSegment(params.userId);
|
|
304
|
-
const serverKey = resolveHomeserverKey(params.homeserver);
|
|
305
|
-
const tokenHash = hashAccessToken(params.accessToken);
|
|
306
|
-
const rootDir = path.join(stateDir, "matrix", "accounts", accountKey, `${serverKey}__${userKey}`, tokenHash);
|
|
307
|
-
return {
|
|
308
|
-
rootDir,
|
|
309
|
-
storagePath: path.join(rootDir, "bot-storage.json"),
|
|
310
|
-
cryptoPath: path.join(rootDir, "crypto"),
|
|
311
|
-
metaPath: path.join(rootDir, STORAGE_META_FILENAME),
|
|
312
|
-
accountKey,
|
|
313
|
-
tokenHash
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
function maybeMigrateLegacyStorage(params) {
|
|
317
|
-
const legacy = resolveLegacyStoragePaths(params.env);
|
|
318
|
-
const hasLegacyStorage = fs.existsSync(legacy.storagePath);
|
|
319
|
-
const hasLegacyCrypto = fs.existsSync(legacy.cryptoPath);
|
|
320
|
-
const hasNewStorage = fs.existsSync(params.storagePaths.storagePath) || fs.existsSync(params.storagePaths.cryptoPath);
|
|
321
|
-
if (!hasLegacyStorage && !hasLegacyCrypto) return;
|
|
322
|
-
if (hasNewStorage) return;
|
|
323
|
-
fs.mkdirSync(params.storagePaths.rootDir, { recursive: true });
|
|
324
|
-
if (hasLegacyStorage) try {
|
|
325
|
-
fs.renameSync(legacy.storagePath, params.storagePaths.storagePath);
|
|
326
|
-
} catch {}
|
|
327
|
-
if (hasLegacyCrypto) try {
|
|
328
|
-
fs.renameSync(legacy.cryptoPath, params.storagePaths.cryptoPath);
|
|
329
|
-
} catch {}
|
|
330
|
-
}
|
|
331
|
-
function writeStorageMeta(params) {
|
|
332
|
-
try {
|
|
333
|
-
const payload = {
|
|
334
|
-
homeserver: params.homeserver,
|
|
335
|
-
userId: params.userId,
|
|
336
|
-
accountId: params.accountId ?? "default",
|
|
337
|
-
accessTokenHash: params.storagePaths.tokenHash,
|
|
338
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
339
|
-
};
|
|
340
|
-
fs.mkdirSync(params.storagePaths.rootDir, { recursive: true });
|
|
341
|
-
fs.writeFileSync(params.storagePaths.metaPath, JSON.stringify(payload, null, 2), "utf-8");
|
|
342
|
-
} catch {}
|
|
343
|
-
}
|
|
344
|
-
//#endregion
|
|
345
|
-
//#region extensions/matrix/src/matrix/client/create-client.ts
|
|
346
|
-
function sanitizeUserIdList(input, label) {
|
|
347
|
-
const LogService = loadMatrixSdk().LogService;
|
|
348
|
-
if (input == null) return [];
|
|
349
|
-
if (!Array.isArray(input)) {
|
|
350
|
-
LogService.warn("MatrixClientLite", `Expected ${label} list to be an array, got ${typeof input}`);
|
|
351
|
-
return [];
|
|
352
|
-
}
|
|
353
|
-
const filtered = input.filter((entry) => typeof entry === "string" && entry.trim().length > 0);
|
|
354
|
-
if (filtered.length !== input.length) LogService.warn("MatrixClientLite", `Dropping ${input.length - filtered.length} invalid ${label} entries from sync payload`);
|
|
355
|
-
return filtered;
|
|
356
|
-
}
|
|
357
|
-
async function createMatrixClient(params) {
|
|
358
|
-
await ensureMatrixCryptoRuntime();
|
|
359
|
-
const { MatrixClient, SimpleFsStorageProvider, RustSdkCryptoStorageProvider, LogService } = loadMatrixSdk();
|
|
360
|
-
ensureMatrixSdkLoggingConfigured();
|
|
361
|
-
const env = process.env;
|
|
362
|
-
const storagePaths = resolveMatrixStoragePaths({
|
|
363
|
-
homeserver: params.homeserver,
|
|
364
|
-
userId: params.userId,
|
|
365
|
-
accessToken: params.accessToken,
|
|
366
|
-
accountId: params.accountId,
|
|
367
|
-
env
|
|
368
|
-
});
|
|
369
|
-
maybeMigrateLegacyStorage({
|
|
370
|
-
storagePaths,
|
|
371
|
-
env
|
|
372
|
-
});
|
|
373
|
-
fs.mkdirSync(storagePaths.rootDir, { recursive: true });
|
|
374
|
-
const storage = new SimpleFsStorageProvider(storagePaths.storagePath);
|
|
375
|
-
let cryptoStorage;
|
|
376
|
-
if (params.encryption) {
|
|
377
|
-
fs.mkdirSync(storagePaths.cryptoPath, { recursive: true });
|
|
378
|
-
try {
|
|
379
|
-
const { StoreType } = await import("./matrix-sdk-crypto-nodejs-DIthZmBD.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1));
|
|
380
|
-
cryptoStorage = new RustSdkCryptoStorageProvider(storagePaths.cryptoPath, StoreType.Sqlite);
|
|
381
|
-
} catch (err) {
|
|
382
|
-
LogService.warn("MatrixClientLite", "Failed to initialize crypto storage, E2EE disabled:", err);
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
writeStorageMeta({
|
|
386
|
-
storagePaths,
|
|
387
|
-
homeserver: params.homeserver,
|
|
388
|
-
userId: params.userId,
|
|
389
|
-
accountId: params.accountId
|
|
390
|
-
});
|
|
391
|
-
const client = new MatrixClient(params.homeserver, params.accessToken, storage, cryptoStorage);
|
|
392
|
-
if (client.crypto) {
|
|
393
|
-
const originalUpdateSyncData = client.crypto.updateSyncData.bind(client.crypto);
|
|
394
|
-
client.crypto.updateSyncData = async (toDeviceMessages, otkCounts, unusedFallbackKeyAlgs, changedDeviceLists, leftDeviceLists) => {
|
|
395
|
-
const safeChanged = sanitizeUserIdList(changedDeviceLists, "changed device list");
|
|
396
|
-
const safeLeft = sanitizeUserIdList(leftDeviceLists, "left device list");
|
|
397
|
-
try {
|
|
398
|
-
return await originalUpdateSyncData(toDeviceMessages, otkCounts, unusedFallbackKeyAlgs, safeChanged, safeLeft);
|
|
399
|
-
} catch (err) {
|
|
400
|
-
const message = typeof err === "string" ? err : err instanceof Error ? err.message : "";
|
|
401
|
-
if (message.includes("Expect value to be String")) {
|
|
402
|
-
LogService.warn("MatrixClientLite", "Ignoring malformed device list entries during crypto sync", message);
|
|
403
|
-
return;
|
|
404
|
-
}
|
|
405
|
-
throw err;
|
|
406
|
-
}
|
|
407
|
-
};
|
|
408
|
-
}
|
|
409
|
-
return client;
|
|
410
|
-
}
|
|
411
|
-
async function startMatrixClientWithGrace(params) {
|
|
412
|
-
const graceMs = params.graceMs ?? 2e3;
|
|
413
|
-
let startFailed = false;
|
|
414
|
-
let startError = void 0;
|
|
415
|
-
let startPromise;
|
|
416
|
-
try {
|
|
417
|
-
startPromise = params.client.start();
|
|
418
|
-
} catch (err) {
|
|
419
|
-
params.onError?.(err);
|
|
420
|
-
throw err;
|
|
421
|
-
}
|
|
422
|
-
startPromise.catch((err) => {
|
|
423
|
-
startFailed = true;
|
|
424
|
-
startError = err;
|
|
425
|
-
params.onError?.(err);
|
|
426
|
-
});
|
|
427
|
-
await new Promise((resolve) => setTimeout(resolve, graceMs));
|
|
428
|
-
if (startFailed) throw startError;
|
|
429
|
-
}
|
|
430
|
-
//#endregion
|
|
431
|
-
//#region extensions/matrix/src/matrix/client/shared.ts
|
|
432
|
-
const sharedClientStates = /* @__PURE__ */ new Map();
|
|
433
|
-
const sharedClientPromises = /* @__PURE__ */ new Map();
|
|
434
|
-
const sharedClientStartPromises = /* @__PURE__ */ new Map();
|
|
435
|
-
function buildSharedClientKey(auth, accountId) {
|
|
436
|
-
const normalizedAccountId = normalizeAccountId(accountId);
|
|
437
|
-
return [
|
|
438
|
-
auth.homeserver,
|
|
439
|
-
auth.userId,
|
|
440
|
-
auth.accessToken,
|
|
441
|
-
auth.encryption ? "e2ee" : "plain",
|
|
442
|
-
normalizedAccountId || "default"
|
|
443
|
-
].join("|");
|
|
444
|
-
}
|
|
445
|
-
async function createSharedMatrixClient(params) {
|
|
446
|
-
return {
|
|
447
|
-
client: await createMatrixClient({
|
|
448
|
-
homeserver: params.auth.homeserver,
|
|
449
|
-
userId: params.auth.userId,
|
|
450
|
-
accessToken: params.auth.accessToken,
|
|
451
|
-
encryption: params.auth.encryption,
|
|
452
|
-
localTimeoutMs: params.timeoutMs,
|
|
453
|
-
accountId: params.accountId
|
|
454
|
-
}),
|
|
455
|
-
key: buildSharedClientKey(params.auth, params.accountId),
|
|
456
|
-
started: false,
|
|
457
|
-
cryptoReady: false
|
|
458
|
-
};
|
|
459
|
-
}
|
|
460
|
-
async function ensureSharedClientStarted(params) {
|
|
461
|
-
if (params.state.started) return;
|
|
462
|
-
const key = params.state.key;
|
|
463
|
-
const existingStartPromise = sharedClientStartPromises.get(key);
|
|
464
|
-
if (existingStartPromise) {
|
|
465
|
-
await existingStartPromise;
|
|
466
|
-
return;
|
|
467
|
-
}
|
|
468
|
-
const startPromise = (async () => {
|
|
469
|
-
const client = params.state.client;
|
|
470
|
-
if (params.encryption && !params.state.cryptoReady) try {
|
|
471
|
-
const joinedRooms = await client.getJoinedRooms();
|
|
472
|
-
if (client.crypto) {
|
|
473
|
-
await client.crypto.prepare(joinedRooms);
|
|
474
|
-
params.state.cryptoReady = true;
|
|
475
|
-
}
|
|
476
|
-
} catch (err) {
|
|
477
|
-
getMatrixLogService().warn("MatrixClientLite", "Failed to prepare crypto:", err);
|
|
478
|
-
}
|
|
479
|
-
await startMatrixClientWithGrace({
|
|
480
|
-
client,
|
|
481
|
-
onError: (err) => {
|
|
482
|
-
params.state.started = false;
|
|
483
|
-
getMatrixLogService().error("MatrixClientLite", "client.start() error:", err);
|
|
484
|
-
}
|
|
485
|
-
});
|
|
486
|
-
params.state.started = true;
|
|
487
|
-
})();
|
|
488
|
-
sharedClientStartPromises.set(key, startPromise);
|
|
489
|
-
try {
|
|
490
|
-
await startPromise;
|
|
491
|
-
} finally {
|
|
492
|
-
sharedClientStartPromises.delete(key);
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
async function resolveSharedMatrixClient(params = {}) {
|
|
496
|
-
const accountId = normalizeAccountId(params.accountId);
|
|
497
|
-
const auth = params.auth ?? await resolveMatrixAuth({
|
|
498
|
-
cfg: params.cfg,
|
|
499
|
-
env: params.env,
|
|
500
|
-
accountId
|
|
501
|
-
});
|
|
502
|
-
const key = buildSharedClientKey(auth, accountId);
|
|
503
|
-
const shouldStart = params.startClient !== false;
|
|
504
|
-
const existingState = sharedClientStates.get(key);
|
|
505
|
-
if (existingState) {
|
|
506
|
-
if (shouldStart) await ensureSharedClientStarted({
|
|
507
|
-
state: existingState,
|
|
508
|
-
timeoutMs: params.timeoutMs,
|
|
509
|
-
initialSyncLimit: auth.initialSyncLimit,
|
|
510
|
-
encryption: auth.encryption
|
|
511
|
-
});
|
|
512
|
-
return existingState.client;
|
|
513
|
-
}
|
|
514
|
-
const existingPromise = sharedClientPromises.get(key);
|
|
515
|
-
if (existingPromise) {
|
|
516
|
-
const pending = await existingPromise;
|
|
517
|
-
if (shouldStart) await ensureSharedClientStarted({
|
|
518
|
-
state: pending,
|
|
519
|
-
timeoutMs: params.timeoutMs,
|
|
520
|
-
initialSyncLimit: auth.initialSyncLimit,
|
|
521
|
-
encryption: auth.encryption
|
|
522
|
-
});
|
|
523
|
-
return pending.client;
|
|
524
|
-
}
|
|
525
|
-
const createPromise = createSharedMatrixClient({
|
|
526
|
-
auth,
|
|
527
|
-
timeoutMs: params.timeoutMs,
|
|
528
|
-
accountId
|
|
529
|
-
});
|
|
530
|
-
sharedClientPromises.set(key, createPromise);
|
|
531
|
-
try {
|
|
532
|
-
const created = await createPromise;
|
|
533
|
-
sharedClientStates.set(key, created);
|
|
534
|
-
if (shouldStart) await ensureSharedClientStarted({
|
|
535
|
-
state: created,
|
|
536
|
-
timeoutMs: params.timeoutMs,
|
|
537
|
-
initialSyncLimit: auth.initialSyncLimit,
|
|
538
|
-
encryption: auth.encryption
|
|
539
|
-
});
|
|
540
|
-
return created.client;
|
|
541
|
-
} finally {
|
|
542
|
-
sharedClientPromises.delete(key);
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
function stopSharedClient(key) {
|
|
546
|
-
if (key) {
|
|
547
|
-
const state = sharedClientStates.get(key);
|
|
548
|
-
if (state) {
|
|
549
|
-
state.client.stop();
|
|
550
|
-
sharedClientStates.delete(key);
|
|
551
|
-
}
|
|
552
|
-
} else {
|
|
553
|
-
for (const state of sharedClientStates.values()) state.client.stop();
|
|
554
|
-
sharedClientStates.clear();
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
/**
|
|
558
|
-
* Stop the shared client for a specific account.
|
|
559
|
-
* Use this instead of stopSharedClient() when shutting down a single account
|
|
560
|
-
* to avoid stopping all accounts.
|
|
561
|
-
*/
|
|
562
|
-
function stopSharedClientForAccount(auth, accountId) {
|
|
563
|
-
stopSharedClient(buildSharedClientKey(auth, normalizeAccountId(accountId)));
|
|
564
|
-
}
|
|
565
|
-
//#endregion
|
|
566
|
-
//#region extensions/matrix/src/directory-live.ts
|
|
567
|
-
async function fetchMatrixJson(params) {
|
|
568
|
-
const res = await fetch(`${params.homeserver}${params.path}`, {
|
|
569
|
-
method: params.method ?? "GET",
|
|
570
|
-
headers: {
|
|
571
|
-
Authorization: `Bearer ${params.accessToken}`,
|
|
572
|
-
"Content-Type": "application/json"
|
|
573
|
-
},
|
|
574
|
-
body: params.body ? JSON.stringify(params.body) : void 0
|
|
575
|
-
});
|
|
576
|
-
if (!res.ok) {
|
|
577
|
-
const text = await res.text().catch(() => "");
|
|
578
|
-
throw new Error(`Matrix API ${params.path} failed (${res.status}): ${text || "unknown error"}`);
|
|
579
|
-
}
|
|
580
|
-
return await res.json();
|
|
581
|
-
}
|
|
582
|
-
function normalizeQuery(value) {
|
|
583
|
-
return value?.trim().toLowerCase() ?? "";
|
|
584
|
-
}
|
|
585
|
-
function resolveMatrixDirectoryLimit(limit) {
|
|
586
|
-
return typeof limit === "number" && limit > 0 ? limit : 20;
|
|
587
|
-
}
|
|
588
|
-
async function resolveMatrixDirectoryContext(params) {
|
|
589
|
-
const query = normalizeQuery(params.query);
|
|
590
|
-
if (!query) return null;
|
|
591
|
-
return {
|
|
592
|
-
query,
|
|
593
|
-
auth: await resolveMatrixAuth({
|
|
594
|
-
cfg: params.cfg,
|
|
595
|
-
accountId: params.accountId
|
|
596
|
-
})
|
|
597
|
-
};
|
|
598
|
-
}
|
|
599
|
-
function createGroupDirectoryEntry(params) {
|
|
600
|
-
return {
|
|
601
|
-
kind: "group",
|
|
602
|
-
id: params.id,
|
|
603
|
-
name: params.name,
|
|
604
|
-
handle: params.handle
|
|
605
|
-
};
|
|
606
|
-
}
|
|
607
|
-
async function listMatrixDirectoryPeersLive(params) {
|
|
608
|
-
const context = await resolveMatrixDirectoryContext(params);
|
|
609
|
-
if (!context) return [];
|
|
610
|
-
const { query, auth } = context;
|
|
611
|
-
return ((await fetchMatrixJson({
|
|
612
|
-
homeserver: auth.homeserver,
|
|
613
|
-
accessToken: auth.accessToken,
|
|
614
|
-
path: "/_matrix/client/v3/user_directory/search",
|
|
615
|
-
method: "POST",
|
|
616
|
-
body: {
|
|
617
|
-
search_term: query,
|
|
618
|
-
limit: resolveMatrixDirectoryLimit(params.limit)
|
|
619
|
-
}
|
|
620
|
-
})).results ?? []).map((entry) => {
|
|
621
|
-
const userId = entry.user_id?.trim();
|
|
622
|
-
if (!userId) return null;
|
|
623
|
-
return {
|
|
624
|
-
kind: "user",
|
|
625
|
-
id: userId,
|
|
626
|
-
name: entry.display_name?.trim() || void 0,
|
|
627
|
-
handle: entry.display_name ? `@${entry.display_name.trim()}` : void 0,
|
|
628
|
-
raw: entry
|
|
629
|
-
};
|
|
630
|
-
}).filter(Boolean);
|
|
631
|
-
}
|
|
632
|
-
async function resolveMatrixRoomAlias(homeserver, accessToken, alias) {
|
|
633
|
-
try {
|
|
634
|
-
return (await fetchMatrixJson({
|
|
635
|
-
homeserver,
|
|
636
|
-
accessToken,
|
|
637
|
-
path: `/_matrix/client/v3/directory/room/${encodeURIComponent(alias)}`
|
|
638
|
-
})).room_id?.trim() || null;
|
|
639
|
-
} catch {
|
|
640
|
-
return null;
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
async function fetchMatrixRoomName(homeserver, accessToken, roomId) {
|
|
644
|
-
try {
|
|
645
|
-
return (await fetchMatrixJson({
|
|
646
|
-
homeserver,
|
|
647
|
-
accessToken,
|
|
648
|
-
path: `/_matrix/client/v3/rooms/${encodeURIComponent(roomId)}/state/m.room.name`
|
|
649
|
-
})).name?.trim() || null;
|
|
650
|
-
} catch {
|
|
651
|
-
return null;
|
|
652
|
-
}
|
|
653
|
-
}
|
|
654
|
-
async function listMatrixDirectoryGroupsLive(params) {
|
|
655
|
-
const context = await resolveMatrixDirectoryContext(params);
|
|
656
|
-
if (!context) return [];
|
|
657
|
-
const { query, auth } = context;
|
|
658
|
-
const limit = resolveMatrixDirectoryLimit(params.limit);
|
|
659
|
-
if (query.startsWith("#")) {
|
|
660
|
-
const roomId = await resolveMatrixRoomAlias(auth.homeserver, auth.accessToken, query);
|
|
661
|
-
if (!roomId) return [];
|
|
662
|
-
return [createGroupDirectoryEntry({
|
|
663
|
-
id: roomId,
|
|
664
|
-
name: query,
|
|
665
|
-
handle: query
|
|
666
|
-
})];
|
|
667
|
-
}
|
|
668
|
-
if (query.startsWith("!")) {
|
|
669
|
-
const originalId = params.query?.trim() ?? query;
|
|
670
|
-
return [createGroupDirectoryEntry({
|
|
671
|
-
id: originalId,
|
|
672
|
-
name: originalId
|
|
673
|
-
})];
|
|
674
|
-
}
|
|
675
|
-
const rooms = (await fetchMatrixJson({
|
|
676
|
-
homeserver: auth.homeserver,
|
|
677
|
-
accessToken: auth.accessToken,
|
|
678
|
-
path: "/_matrix/client/v3/joined_rooms"
|
|
679
|
-
})).joined_rooms ?? [];
|
|
680
|
-
const results = [];
|
|
681
|
-
for (const roomId of rooms) {
|
|
682
|
-
const name = await fetchMatrixRoomName(auth.homeserver, auth.accessToken, roomId);
|
|
683
|
-
if (!name) continue;
|
|
684
|
-
if (!name.toLowerCase().includes(query)) continue;
|
|
685
|
-
results.push({
|
|
686
|
-
kind: "group",
|
|
687
|
-
id: roomId,
|
|
688
|
-
name,
|
|
689
|
-
handle: `#${name}`
|
|
690
|
-
});
|
|
691
|
-
if (results.length >= limit) break;
|
|
692
|
-
}
|
|
693
|
-
return results;
|
|
694
|
-
}
|
|
695
|
-
//#endregion
|
|
696
|
-
//#region extensions/matrix/src/matrix/accounts.ts
|
|
697
|
-
/** Merge account config with top-level defaults, preserving nested objects. */
|
|
698
|
-
function mergeAccountConfig(base, account) {
|
|
699
|
-
const merged = {
|
|
700
|
-
...base,
|
|
701
|
-
...account
|
|
702
|
-
};
|
|
703
|
-
for (const key of ["dm", "actions"]) {
|
|
704
|
-
const b = base[key];
|
|
705
|
-
const o = account[key];
|
|
706
|
-
if (typeof b === "object" && b != null && typeof o === "object" && o != null) merged[key] = {
|
|
707
|
-
...b,
|
|
708
|
-
...o
|
|
709
|
-
};
|
|
710
|
-
}
|
|
711
|
-
delete merged.accounts;
|
|
712
|
-
delete merged.defaultAccount;
|
|
713
|
-
return merged;
|
|
714
|
-
}
|
|
715
|
-
const { listAccountIds: listMatrixAccountIds, resolveDefaultAccountId: resolveDefaultMatrixAccountId } = createAccountListHelpers("matrix", { normalizeAccountId });
|
|
716
|
-
function resolveAccountConfig(cfg, accountId) {
|
|
717
|
-
const accounts = cfg.channels?.matrix?.accounts;
|
|
718
|
-
if (!accounts || typeof accounts !== "object") return;
|
|
719
|
-
if (accounts[accountId]) return accounts[accountId];
|
|
720
|
-
const normalized = normalizeAccountId(accountId);
|
|
721
|
-
for (const key of Object.keys(accounts)) if (normalizeAccountId(key) === normalized) return accounts[key];
|
|
722
|
-
}
|
|
723
|
-
function resolveMatrixAccount(params) {
|
|
724
|
-
const accountId = normalizeAccountId(params.accountId);
|
|
725
|
-
const matrixBase = params.cfg.channels?.matrix ?? {};
|
|
726
|
-
const base = resolveMatrixAccountConfig({
|
|
727
|
-
cfg: params.cfg,
|
|
728
|
-
accountId
|
|
729
|
-
});
|
|
730
|
-
const enabled = base.enabled !== false && matrixBase.enabled !== false;
|
|
731
|
-
const resolved = resolveMatrixConfigForAccount(params.cfg, accountId, process.env);
|
|
732
|
-
const hasHomeserver = Boolean(resolved.homeserver);
|
|
733
|
-
const hasUserId = Boolean(resolved.userId);
|
|
734
|
-
const hasAccessToken = Boolean(resolved.accessToken);
|
|
735
|
-
const hasPassword = Boolean(resolved.password);
|
|
736
|
-
const hasPasswordAuth = hasUserId && (hasPassword || hasConfiguredSecretInput(base.password));
|
|
737
|
-
const stored = loadMatrixCredentials(process.env, accountId);
|
|
738
|
-
const hasStored = stored && resolved.homeserver ? credentialsMatchConfig(stored, {
|
|
739
|
-
homeserver: resolved.homeserver,
|
|
740
|
-
userId: resolved.userId || ""
|
|
741
|
-
}) : false;
|
|
742
|
-
const configured = hasHomeserver && (hasAccessToken || hasPasswordAuth || Boolean(hasStored));
|
|
743
|
-
return {
|
|
744
|
-
accountId,
|
|
745
|
-
enabled,
|
|
746
|
-
name: base.name?.trim() || void 0,
|
|
747
|
-
configured,
|
|
748
|
-
homeserver: resolved.homeserver || void 0,
|
|
749
|
-
userId: resolved.userId || void 0,
|
|
750
|
-
config: base
|
|
751
|
-
};
|
|
752
|
-
}
|
|
753
|
-
function resolveMatrixAccountConfig(params) {
|
|
754
|
-
const accountId = normalizeAccountId(params.accountId);
|
|
755
|
-
const matrixBase = params.cfg.channels?.matrix ?? {};
|
|
756
|
-
const accountConfig = resolveAccountConfig(params.cfg, accountId);
|
|
757
|
-
if (!accountConfig) return matrixBase;
|
|
758
|
-
return mergeAccountConfig(matrixBase, accountConfig);
|
|
759
|
-
}
|
|
760
|
-
//#endregion
|
|
761
|
-
//#region extensions/matrix/src/resolve-targets.ts
|
|
762
|
-
function findExactDirectoryMatches(matches, query) {
|
|
763
|
-
const normalized = query.trim().toLowerCase();
|
|
764
|
-
if (!normalized) return [];
|
|
765
|
-
return matches.filter((match) => {
|
|
766
|
-
const id = match.id.trim().toLowerCase();
|
|
767
|
-
const name = match.name?.trim().toLowerCase();
|
|
768
|
-
const handle = match.handle?.trim().toLowerCase();
|
|
769
|
-
return normalized === id || normalized === name || normalized === handle;
|
|
770
|
-
});
|
|
771
|
-
}
|
|
772
|
-
function pickBestGroupMatch(matches, query) {
|
|
773
|
-
if (matches.length === 0) return;
|
|
774
|
-
const [exact] = findExactDirectoryMatches(matches, query);
|
|
775
|
-
return exact ?? matches[0];
|
|
776
|
-
}
|
|
777
|
-
function pickBestUserMatch(matches, query) {
|
|
778
|
-
if (matches.length === 0) return;
|
|
779
|
-
const exact = findExactDirectoryMatches(matches, query);
|
|
780
|
-
if (exact.length === 1) return exact[0];
|
|
781
|
-
}
|
|
782
|
-
function describeUserMatchFailure(matches, query) {
|
|
783
|
-
if (matches.length === 0) return "no matches";
|
|
784
|
-
const normalized = query.trim().toLowerCase();
|
|
785
|
-
if (!normalized) return "empty input";
|
|
786
|
-
const exact = findExactDirectoryMatches(matches, normalized);
|
|
787
|
-
if (exact.length === 0) return "no exact match; use full Matrix ID";
|
|
788
|
-
if (exact.length > 1) return "multiple exact matches; use full Matrix ID";
|
|
789
|
-
return "no exact match; use full Matrix ID";
|
|
790
|
-
}
|
|
791
|
-
async function resolveMatrixTargets(params) {
|
|
792
|
-
return await mapAllowlistResolutionInputs({
|
|
793
|
-
inputs: params.inputs,
|
|
794
|
-
mapInput: async (input) => {
|
|
795
|
-
const trimmed = input.trim();
|
|
796
|
-
if (!trimmed) return {
|
|
797
|
-
input,
|
|
798
|
-
resolved: false,
|
|
799
|
-
note: "empty input"
|
|
800
|
-
};
|
|
801
|
-
if (params.kind === "user") {
|
|
802
|
-
if (trimmed.startsWith("@") && trimmed.includes(":")) return {
|
|
803
|
-
input,
|
|
804
|
-
resolved: true,
|
|
805
|
-
id: trimmed
|
|
806
|
-
};
|
|
807
|
-
try {
|
|
808
|
-
const matches = await listMatrixDirectoryPeersLive({
|
|
809
|
-
cfg: params.cfg,
|
|
810
|
-
query: trimmed,
|
|
811
|
-
limit: 5
|
|
812
|
-
});
|
|
813
|
-
const best = pickBestUserMatch(matches, trimmed);
|
|
814
|
-
return {
|
|
815
|
-
input,
|
|
816
|
-
resolved: Boolean(best?.id),
|
|
817
|
-
id: best?.id,
|
|
818
|
-
name: best?.name,
|
|
819
|
-
note: best ? void 0 : describeUserMatchFailure(matches, trimmed)
|
|
820
|
-
};
|
|
821
|
-
} catch (err) {
|
|
822
|
-
params.runtime?.error?.(`matrix resolve failed: ${String(err)}`);
|
|
823
|
-
return {
|
|
824
|
-
input,
|
|
825
|
-
resolved: false,
|
|
826
|
-
note: "lookup failed"
|
|
827
|
-
};
|
|
828
|
-
}
|
|
829
|
-
}
|
|
830
|
-
try {
|
|
831
|
-
const matches = await listMatrixDirectoryGroupsLive({
|
|
832
|
-
cfg: params.cfg,
|
|
833
|
-
query: trimmed,
|
|
834
|
-
limit: 5
|
|
835
|
-
});
|
|
836
|
-
const best = pickBestGroupMatch(matches, trimmed);
|
|
837
|
-
return {
|
|
838
|
-
input,
|
|
839
|
-
resolved: Boolean(best?.id),
|
|
840
|
-
id: best?.id,
|
|
841
|
-
name: best?.name,
|
|
842
|
-
note: matches.length > 1 ? "multiple matches; chose first" : void 0
|
|
843
|
-
};
|
|
844
|
-
} catch (err) {
|
|
845
|
-
params.runtime?.error?.(`matrix resolve failed: ${String(err)}`);
|
|
846
|
-
return {
|
|
847
|
-
input,
|
|
848
|
-
resolved: false,
|
|
849
|
-
note: "lookup failed"
|
|
850
|
-
};
|
|
851
|
-
}
|
|
852
|
-
}
|
|
853
|
-
});
|
|
854
|
-
}
|
|
855
|
-
//#endregion
|
|
856
|
-
//#region extensions/matrix/src/setup-core.ts
|
|
857
|
-
const channel$1 = "matrix";
|
|
858
|
-
function buildMatrixConfigUpdate(cfg, input) {
|
|
859
|
-
const existing = cfg.channels?.matrix ?? {};
|
|
860
|
-
return {
|
|
861
|
-
...cfg,
|
|
862
|
-
channels: {
|
|
863
|
-
...cfg.channels,
|
|
864
|
-
matrix: {
|
|
865
|
-
...existing,
|
|
866
|
-
enabled: true,
|
|
867
|
-
...input.homeserver ? { homeserver: input.homeserver } : {},
|
|
868
|
-
...input.userId ? { userId: input.userId } : {},
|
|
869
|
-
...input.accessToken ? { accessToken: input.accessToken } : {},
|
|
870
|
-
...input.password ? { password: input.password } : {},
|
|
871
|
-
...input.deviceName ? { deviceName: input.deviceName } : {},
|
|
872
|
-
...typeof input.initialSyncLimit === "number" ? { initialSyncLimit: input.initialSyncLimit } : {}
|
|
873
|
-
}
|
|
874
|
-
}
|
|
875
|
-
};
|
|
876
|
-
}
|
|
877
|
-
const matrixSetupAdapter = {
|
|
878
|
-
resolveAccountId: ({ accountId }) => normalizeAccountId(accountId),
|
|
879
|
-
applyAccountName: ({ cfg, accountId, name }) => prepareScopedSetupConfig({
|
|
880
|
-
cfg,
|
|
881
|
-
channelKey: channel$1,
|
|
882
|
-
accountId,
|
|
883
|
-
name
|
|
884
|
-
}),
|
|
885
|
-
validateInput: ({ input }) => {
|
|
886
|
-
if (input.useEnv) return null;
|
|
887
|
-
if (!input.homeserver?.trim()) return "Matrix requires --homeserver";
|
|
888
|
-
const accessToken = input.accessToken?.trim();
|
|
889
|
-
const password = normalizeSecretInputString(input.password);
|
|
890
|
-
const userId = input.userId?.trim();
|
|
891
|
-
if (!accessToken && !password) return "Matrix requires --access-token or --password";
|
|
892
|
-
if (!accessToken) {
|
|
893
|
-
if (!userId) return "Matrix requires --user-id when using --password";
|
|
894
|
-
if (!password) return "Matrix requires --password when using --user-id";
|
|
895
|
-
}
|
|
896
|
-
return null;
|
|
897
|
-
},
|
|
898
|
-
applyAccountConfig: ({ cfg, accountId, input }) => {
|
|
899
|
-
const next = prepareScopedSetupConfig({
|
|
900
|
-
cfg,
|
|
901
|
-
channelKey: channel$1,
|
|
902
|
-
accountId,
|
|
903
|
-
name: input.name,
|
|
904
|
-
migrateBaseName: true
|
|
905
|
-
});
|
|
906
|
-
if (input.useEnv) return {
|
|
907
|
-
...next,
|
|
908
|
-
channels: {
|
|
909
|
-
...next.channels,
|
|
910
|
-
matrix: {
|
|
911
|
-
...next.channels?.matrix,
|
|
912
|
-
enabled: true
|
|
913
|
-
}
|
|
914
|
-
}
|
|
915
|
-
};
|
|
916
|
-
return buildMatrixConfigUpdate(next, {
|
|
917
|
-
homeserver: input.homeserver?.trim(),
|
|
918
|
-
userId: input.userId?.trim(),
|
|
919
|
-
accessToken: input.accessToken?.trim(),
|
|
920
|
-
password: normalizeSecretInputString(input.password),
|
|
921
|
-
deviceName: input.deviceName?.trim(),
|
|
922
|
-
initialSyncLimit: input.initialSyncLimit
|
|
923
|
-
});
|
|
924
|
-
}
|
|
925
|
-
};
|
|
926
|
-
//#endregion
|
|
927
|
-
//#region extensions/matrix/src/setup-surface.ts
|
|
928
|
-
const channel = "matrix";
|
|
929
|
-
function setMatrixDmPolicy(cfg, policy) {
|
|
930
|
-
const allowFrom = policy === "open" ? addWildcardAllowFrom(cfg.channels?.matrix?.dm?.allowFrom) : void 0;
|
|
931
|
-
return {
|
|
932
|
-
...cfg,
|
|
933
|
-
channels: {
|
|
934
|
-
...cfg.channels,
|
|
935
|
-
matrix: {
|
|
936
|
-
...cfg.channels?.matrix,
|
|
937
|
-
dm: {
|
|
938
|
-
...cfg.channels?.matrix?.dm,
|
|
939
|
-
policy,
|
|
940
|
-
...allowFrom ? { allowFrom } : {}
|
|
941
|
-
}
|
|
942
|
-
}
|
|
943
|
-
}
|
|
944
|
-
};
|
|
945
|
-
}
|
|
946
|
-
async function noteMatrixAuthHelp(prompter) {
|
|
947
|
-
await prompter.note([
|
|
948
|
-
"Matrix requires a homeserver URL.",
|
|
949
|
-
"Use an access token (recommended) or a password (logs in and stores a token).",
|
|
950
|
-
"With access token: user ID is fetched automatically.",
|
|
951
|
-
"Env vars supported: MATRIX_HOMESERVER, MATRIX_USER_ID, MATRIX_ACCESS_TOKEN, MATRIX_PASSWORD.",
|
|
952
|
-
`Docs: ${formatDocsLink("/channels/matrix", "channels/matrix")}`
|
|
953
|
-
].join("\n"), "Matrix setup");
|
|
954
|
-
}
|
|
955
|
-
async function promptMatrixAllowFrom(params) {
|
|
956
|
-
const { cfg, prompter } = params;
|
|
957
|
-
const existingAllowFrom = cfg.channels?.matrix?.dm?.allowFrom ?? [];
|
|
958
|
-
const account = resolveMatrixAccount({ cfg });
|
|
959
|
-
const canResolve = Boolean(account.configured);
|
|
960
|
-
const parseInput = (raw) => raw.split(/[\n,;]+/g).map((entry) => entry.trim()).filter(Boolean);
|
|
961
|
-
const isFullUserId = (value) => value.startsWith("@") && value.includes(":");
|
|
962
|
-
while (true) {
|
|
963
|
-
const entry = await prompter.text({
|
|
964
|
-
message: "Matrix allowFrom (full @user:server; display name only if unique)",
|
|
965
|
-
placeholder: "@user:server",
|
|
966
|
-
initialValue: existingAllowFrom[0] ? String(existingAllowFrom[0]) : void 0,
|
|
967
|
-
validate: (value) => String(value ?? "").trim() ? void 0 : "Required"
|
|
968
|
-
});
|
|
969
|
-
const parts = parseInput(String(entry));
|
|
970
|
-
const resolvedIds = [];
|
|
971
|
-
const pending = [];
|
|
972
|
-
const unresolved = [];
|
|
973
|
-
const unresolvedNotes = [];
|
|
974
|
-
for (const part of parts) {
|
|
975
|
-
if (isFullUserId(part)) {
|
|
976
|
-
resolvedIds.push(part);
|
|
977
|
-
continue;
|
|
978
|
-
}
|
|
979
|
-
if (!canResolve) {
|
|
980
|
-
unresolved.push(part);
|
|
981
|
-
continue;
|
|
982
|
-
}
|
|
983
|
-
pending.push(part);
|
|
984
|
-
}
|
|
985
|
-
if (pending.length > 0) {
|
|
986
|
-
const results = await resolveMatrixTargets({
|
|
987
|
-
cfg,
|
|
988
|
-
inputs: pending,
|
|
989
|
-
kind: "user"
|
|
990
|
-
}).catch(() => []);
|
|
991
|
-
for (const result of results) {
|
|
992
|
-
if (result?.resolved && result.id) {
|
|
993
|
-
resolvedIds.push(result.id);
|
|
994
|
-
continue;
|
|
995
|
-
}
|
|
996
|
-
if (result?.input) {
|
|
997
|
-
unresolved.push(result.input);
|
|
998
|
-
if (result.note) unresolvedNotes.push(`${result.input}: ${result.note}`);
|
|
999
|
-
}
|
|
1000
|
-
}
|
|
1001
|
-
}
|
|
1002
|
-
if (unresolved.length > 0) {
|
|
1003
|
-
const details = unresolvedNotes.length > 0 ? unresolvedNotes : unresolved;
|
|
1004
|
-
await prompter.note(`Could not resolve:\n${details.join("\n")}\nUse full @user:server IDs.`, "Matrix allowlist");
|
|
1005
|
-
continue;
|
|
1006
|
-
}
|
|
1007
|
-
const unique = mergeAllowFromEntries(existingAllowFrom, resolvedIds);
|
|
1008
|
-
return {
|
|
1009
|
-
...cfg,
|
|
1010
|
-
channels: {
|
|
1011
|
-
...cfg.channels,
|
|
1012
|
-
matrix: {
|
|
1013
|
-
...cfg.channels?.matrix,
|
|
1014
|
-
enabled: true,
|
|
1015
|
-
dm: {
|
|
1016
|
-
...cfg.channels?.matrix?.dm,
|
|
1017
|
-
policy: "allowlist",
|
|
1018
|
-
allowFrom: unique
|
|
1019
|
-
}
|
|
1020
|
-
}
|
|
1021
|
-
}
|
|
1022
|
-
};
|
|
1023
|
-
}
|
|
1024
|
-
}
|
|
1025
|
-
function setMatrixGroupPolicy(cfg, groupPolicy) {
|
|
1026
|
-
return setTopLevelChannelGroupPolicy({
|
|
1027
|
-
cfg,
|
|
1028
|
-
channel: "matrix",
|
|
1029
|
-
groupPolicy,
|
|
1030
|
-
enabled: true
|
|
1031
|
-
});
|
|
1032
|
-
}
|
|
1033
|
-
function setMatrixGroupRooms(cfg, roomKeys) {
|
|
1034
|
-
const groups = Object.fromEntries(roomKeys.map((key) => [key, { allow: true }]));
|
|
1035
|
-
return {
|
|
1036
|
-
...cfg,
|
|
1037
|
-
channels: {
|
|
1038
|
-
...cfg.channels,
|
|
1039
|
-
matrix: {
|
|
1040
|
-
...cfg.channels?.matrix,
|
|
1041
|
-
enabled: true,
|
|
1042
|
-
groups
|
|
1043
|
-
}
|
|
1044
|
-
}
|
|
1045
|
-
};
|
|
1046
|
-
}
|
|
1047
|
-
async function resolveMatrixGroupRooms(params) {
|
|
1048
|
-
if (params.entries.length === 0) return [];
|
|
1049
|
-
try {
|
|
1050
|
-
const resolvedIds = [];
|
|
1051
|
-
const unresolved = [];
|
|
1052
|
-
for (const entry of params.entries) {
|
|
1053
|
-
const trimmed = entry.trim();
|
|
1054
|
-
if (!trimmed) continue;
|
|
1055
|
-
const cleaned = trimmed.replace(/^(room|channel):/i, "").trim();
|
|
1056
|
-
if (cleaned.startsWith("!") && cleaned.includes(":")) {
|
|
1057
|
-
resolvedIds.push(cleaned);
|
|
1058
|
-
continue;
|
|
1059
|
-
}
|
|
1060
|
-
const matches = await listMatrixDirectoryGroupsLive({
|
|
1061
|
-
cfg: params.cfg,
|
|
1062
|
-
query: trimmed,
|
|
1063
|
-
limit: 10
|
|
1064
|
-
});
|
|
1065
|
-
const best = matches.find((match) => (match.name ?? "").toLowerCase() === trimmed.toLowerCase()) ?? matches[0];
|
|
1066
|
-
if (best?.id) resolvedIds.push(best.id);
|
|
1067
|
-
else unresolved.push(entry);
|
|
1068
|
-
}
|
|
1069
|
-
const roomKeys = [...resolvedIds, ...unresolved.map((entry) => entry.trim()).filter(Boolean)];
|
|
1070
|
-
const resolution = formatResolvedUnresolvedNote({
|
|
1071
|
-
resolved: resolvedIds,
|
|
1072
|
-
unresolved
|
|
1073
|
-
});
|
|
1074
|
-
if (resolution) await params.prompter.note(resolution, "Matrix rooms");
|
|
1075
|
-
return roomKeys;
|
|
1076
|
-
} catch (err) {
|
|
1077
|
-
await params.prompter.note(`Room lookup failed; keeping entries as typed. ${String(err)}`, "Matrix rooms");
|
|
1078
|
-
return params.entries.map((entry) => entry.trim()).filter(Boolean);
|
|
1079
|
-
}
|
|
1080
|
-
}
|
|
1081
|
-
const matrixSetupWizard = {
|
|
1082
|
-
channel,
|
|
1083
|
-
resolveAccountIdForConfigure: () => DEFAULT_ACCOUNT_ID,
|
|
1084
|
-
resolveShouldPromptAccountIds: () => false,
|
|
1085
|
-
status: {
|
|
1086
|
-
configuredLabel: "configured",
|
|
1087
|
-
unconfiguredLabel: "needs homeserver + access token or password",
|
|
1088
|
-
configuredHint: "configured",
|
|
1089
|
-
unconfiguredHint: "needs auth",
|
|
1090
|
-
resolveConfigured: ({ cfg }) => resolveMatrixAccount({ cfg }).configured,
|
|
1091
|
-
resolveStatusLines: ({ cfg }) => {
|
|
1092
|
-
return [`Matrix: ${resolveMatrixAccount({ cfg }).configured ? "configured" : "needs homeserver + access token or password"}`];
|
|
1093
|
-
},
|
|
1094
|
-
resolveSelectionHint: ({ cfg, configured }) => {
|
|
1095
|
-
if (!isMatrixSdkAvailable()) return "install @vector-im/matrix-bot-sdk";
|
|
1096
|
-
return configured ? "configured" : "needs auth";
|
|
1097
|
-
}
|
|
1098
|
-
},
|
|
1099
|
-
credentials: [],
|
|
1100
|
-
finalize: async ({ cfg, runtime, prompter, forceAllowFrom }) => {
|
|
1101
|
-
let next = cfg;
|
|
1102
|
-
await ensureMatrixSdkInstalled({
|
|
1103
|
-
runtime,
|
|
1104
|
-
confirm: async (message) => await prompter.confirm({
|
|
1105
|
-
message,
|
|
1106
|
-
initialValue: true
|
|
1107
|
-
})
|
|
1108
|
-
});
|
|
1109
|
-
const existing = next.channels?.matrix ?? {};
|
|
1110
|
-
if (!resolveMatrixAccount({ cfg: next }).configured) await noteMatrixAuthHelp(prompter);
|
|
1111
|
-
const envHomeserver = process.env.MATRIX_HOMESERVER?.trim();
|
|
1112
|
-
const envUserId = process.env.MATRIX_USER_ID?.trim();
|
|
1113
|
-
const envAccessToken = process.env.MATRIX_ACCESS_TOKEN?.trim();
|
|
1114
|
-
const envPassword = process.env.MATRIX_PASSWORD?.trim();
|
|
1115
|
-
if (Boolean(envHomeserver && (envAccessToken || envUserId && envPassword)) && !existing.homeserver && !existing.userId && !existing.accessToken && !existing.password) {
|
|
1116
|
-
if (await prompter.confirm({
|
|
1117
|
-
message: "Matrix env vars detected. Use env values?",
|
|
1118
|
-
initialValue: true
|
|
1119
|
-
})) {
|
|
1120
|
-
next = matrixSetupAdapter.applyAccountConfig({
|
|
1121
|
-
cfg: next,
|
|
1122
|
-
accountId: DEFAULT_ACCOUNT_ID,
|
|
1123
|
-
input: { useEnv: true }
|
|
1124
|
-
});
|
|
1125
|
-
if (forceAllowFrom) next = await promptMatrixAllowFrom({
|
|
1126
|
-
cfg: next,
|
|
1127
|
-
prompter
|
|
1128
|
-
});
|
|
1129
|
-
return { cfg: next };
|
|
1130
|
-
}
|
|
1131
|
-
}
|
|
1132
|
-
const homeserver = String(await prompter.text({
|
|
1133
|
-
message: "Matrix homeserver URL",
|
|
1134
|
-
initialValue: existing.homeserver ?? envHomeserver,
|
|
1135
|
-
validate: (value) => {
|
|
1136
|
-
const raw = String(value ?? "").trim();
|
|
1137
|
-
if (!raw) return "Required";
|
|
1138
|
-
if (!/^https?:\/\//i.test(raw)) return "Use a full URL (https://...)";
|
|
1139
|
-
}
|
|
1140
|
-
})).trim();
|
|
1141
|
-
let accessToken = existing.accessToken ?? "";
|
|
1142
|
-
let password = existing.password;
|
|
1143
|
-
let userId = existing.userId ?? "";
|
|
1144
|
-
const existingPasswordConfigured = hasConfiguredSecretInput(existing.password);
|
|
1145
|
-
const passwordConfigured = () => hasConfiguredSecretInput(password);
|
|
1146
|
-
if (accessToken || passwordConfigured()) {
|
|
1147
|
-
if (!await prompter.confirm({
|
|
1148
|
-
message: "Matrix credentials already configured. Keep them?",
|
|
1149
|
-
initialValue: true
|
|
1150
|
-
})) {
|
|
1151
|
-
accessToken = "";
|
|
1152
|
-
password = void 0;
|
|
1153
|
-
userId = "";
|
|
1154
|
-
}
|
|
1155
|
-
}
|
|
1156
|
-
if (!accessToken && !passwordConfigured()) if (await prompter.select({
|
|
1157
|
-
message: "Matrix auth method",
|
|
1158
|
-
options: [{
|
|
1159
|
-
value: "token",
|
|
1160
|
-
label: "Access token (user ID fetched automatically)"
|
|
1161
|
-
}, {
|
|
1162
|
-
value: "password",
|
|
1163
|
-
label: "Password (requires user ID)"
|
|
1164
|
-
}]
|
|
1165
|
-
}) === "token") {
|
|
1166
|
-
accessToken = String(await prompter.text({
|
|
1167
|
-
message: "Matrix access token",
|
|
1168
|
-
validate: (value) => value?.trim() ? void 0 : "Required"
|
|
1169
|
-
})).trim();
|
|
1170
|
-
userId = "";
|
|
1171
|
-
} else {
|
|
1172
|
-
userId = String(await prompter.text({
|
|
1173
|
-
message: "Matrix user ID",
|
|
1174
|
-
initialValue: existing.userId ?? envUserId,
|
|
1175
|
-
validate: (value) => {
|
|
1176
|
-
const raw = String(value ?? "").trim();
|
|
1177
|
-
if (!raw) return "Required";
|
|
1178
|
-
if (!raw.startsWith("@")) return "Matrix user IDs should start with @";
|
|
1179
|
-
if (!raw.includes(":")) return "Matrix user IDs should include a server (:server)";
|
|
1180
|
-
}
|
|
1181
|
-
})).trim();
|
|
1182
|
-
const passwordPromptState = buildSingleChannelSecretPromptState({
|
|
1183
|
-
accountConfigured: Boolean(existingPasswordConfigured),
|
|
1184
|
-
hasConfigToken: existingPasswordConfigured,
|
|
1185
|
-
allowEnv: true,
|
|
1186
|
-
envValue: envPassword
|
|
1187
|
-
});
|
|
1188
|
-
const passwordResult = await promptSingleChannelSecretInput({
|
|
1189
|
-
cfg: next,
|
|
1190
|
-
prompter,
|
|
1191
|
-
providerHint: channel,
|
|
1192
|
-
credentialLabel: "password",
|
|
1193
|
-
accountConfigured: passwordPromptState.accountConfigured,
|
|
1194
|
-
canUseEnv: passwordPromptState.canUseEnv,
|
|
1195
|
-
hasConfigToken: passwordPromptState.hasConfigToken,
|
|
1196
|
-
envPrompt: "MATRIX_PASSWORD detected. Use env var?",
|
|
1197
|
-
keepPrompt: "Matrix password already configured. Keep it?",
|
|
1198
|
-
inputPrompt: "Matrix password",
|
|
1199
|
-
preferredEnvVar: "MATRIX_PASSWORD"
|
|
1200
|
-
});
|
|
1201
|
-
if (passwordResult.action === "set") password = passwordResult.value;
|
|
1202
|
-
if (passwordResult.action === "use-env") password = void 0;
|
|
1203
|
-
}
|
|
1204
|
-
const deviceName = String(await prompter.text({
|
|
1205
|
-
message: "Matrix device name (optional)",
|
|
1206
|
-
initialValue: existing.deviceName ?? "MoldClaw Gateway"
|
|
1207
|
-
})).trim();
|
|
1208
|
-
const enableEncryption = await prompter.confirm({
|
|
1209
|
-
message: "Enable end-to-end encryption (E2EE)?",
|
|
1210
|
-
initialValue: existing.encryption ?? false
|
|
1211
|
-
});
|
|
1212
|
-
next = {
|
|
1213
|
-
...next,
|
|
1214
|
-
channels: {
|
|
1215
|
-
...next.channels,
|
|
1216
|
-
matrix: {
|
|
1217
|
-
...next.channels?.matrix,
|
|
1218
|
-
enabled: true,
|
|
1219
|
-
homeserver,
|
|
1220
|
-
userId: userId || void 0,
|
|
1221
|
-
accessToken: accessToken || void 0,
|
|
1222
|
-
password,
|
|
1223
|
-
deviceName: deviceName || void 0,
|
|
1224
|
-
encryption: enableEncryption || void 0
|
|
1225
|
-
}
|
|
1226
|
-
}
|
|
1227
|
-
};
|
|
1228
|
-
if (forceAllowFrom) next = await promptMatrixAllowFrom({
|
|
1229
|
-
cfg: next,
|
|
1230
|
-
prompter
|
|
1231
|
-
});
|
|
1232
|
-
return { cfg: next };
|
|
1233
|
-
},
|
|
1234
|
-
dmPolicy: {
|
|
1235
|
-
label: "Matrix",
|
|
1236
|
-
channel,
|
|
1237
|
-
policyKey: "channels.matrix.dm.policy",
|
|
1238
|
-
allowFromKey: "channels.matrix.dm.allowFrom",
|
|
1239
|
-
getCurrent: (cfg) => cfg.channels?.matrix?.dm?.policy ?? "pairing",
|
|
1240
|
-
setPolicy: (cfg, policy) => setMatrixDmPolicy(cfg, policy),
|
|
1241
|
-
promptAllowFrom: promptMatrixAllowFrom
|
|
1242
|
-
},
|
|
1243
|
-
groupAccess: {
|
|
1244
|
-
label: "Matrix rooms",
|
|
1245
|
-
placeholder: "!roomId:server, #alias:server, Project Room",
|
|
1246
|
-
currentPolicy: ({ cfg }) => cfg.channels?.matrix?.groupPolicy ?? "allowlist",
|
|
1247
|
-
currentEntries: ({ cfg }) => Object.keys(cfg.channels?.matrix?.groups ?? cfg.channels?.matrix?.rooms ?? {}),
|
|
1248
|
-
updatePrompt: ({ cfg }) => Boolean(cfg.channels?.matrix?.groups ?? cfg.channels?.matrix?.rooms),
|
|
1249
|
-
setPolicy: ({ cfg, policy }) => setMatrixGroupPolicy(cfg, policy),
|
|
1250
|
-
resolveAllowlist: async ({ cfg, entries, prompter }) => await resolveMatrixGroupRooms({
|
|
1251
|
-
cfg,
|
|
1252
|
-
entries,
|
|
1253
|
-
prompter
|
|
1254
|
-
}),
|
|
1255
|
-
applyAllowlist: ({ cfg, resolved }) => setMatrixGroupRooms(cfg, resolved)
|
|
1256
|
-
},
|
|
1257
|
-
disable: (cfg) => ({
|
|
1258
|
-
...cfg,
|
|
1259
|
-
channels: {
|
|
1260
|
-
...cfg.channels,
|
|
1261
|
-
matrix: {
|
|
1262
|
-
...cfg.channels?.matrix,
|
|
1263
|
-
enabled: false
|
|
1264
|
-
}
|
|
1265
|
-
}
|
|
1266
|
-
})
|
|
1267
|
-
};
|
|
1268
|
-
//#endregion
|
|
1269
|
-
export { isBunRuntime as _, resolveDefaultMatrixAccountId as a, listMatrixDirectoryGroupsLive as c, stopSharedClientForAccount as d, startMatrixClientWithGrace as f, loadMatrixSdk as g, getMatrixLogService as h, listMatrixAccountIds as i, listMatrixDirectoryPeersLive as l, resolveMatrixAuth as m, matrixSetupAdapter as n, resolveMatrixAccount as o, createMatrixClient as p, resolveMatrixTargets as r, resolveMatrixAccountConfig as s, matrixSetupWizard as t, resolveSharedMatrixClient as u };
|