@spacebar_ai/moldclaw-core 2026.3.43 → 2026.3.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1131) hide show
  1. package/dist/accounts-5qY-dKca.d.ts +103 -0
  2. package/dist/accounts-SqdHz2ZP.js +114 -0
  3. package/dist/acp-cli-E6bcNqiE.js +2093 -0
  4. package/dist/actions.runtime-BU_XMuLk.js +119 -0
  5. package/dist/actions.runtime-CY5h8lqH.js +133 -0
  6. package/dist/agent-scope-lZlwP1At.js +208 -0
  7. package/dist/agents-C4SkadR1.js +853 -0
  8. package/dist/agents-RfwqGCzE.js +222 -0
  9. package/dist/agents.config-CX9CPNfP.js +17 -0
  10. package/dist/agents.config-DF9Zwn9n.js +121 -0
  11. package/dist/allow-list-3WSjz1zl.js +81 -0
  12. package/dist/allowlist-DNbDjFjw.js +142 -0
  13. package/dist/api-BEOpJ7dR.js +117 -0
  14. package/dist/audit-CpJz_eu6.js +787 -0
  15. package/dist/audit-CpfSjvyo.js +54 -0
  16. package/dist/audit-channel.collect.runtime-BeGotloZ.js +605 -0
  17. package/dist/audit-channel.runtime-BJDZ7ETt.js +121 -0
  18. package/dist/audit-extra.async-C2G0mqmk.js +813 -0
  19. package/dist/audit-membership-runtime-B1FqJsPV.js +162 -0
  20. package/dist/audit.deep.runtime-DyL9O_sU.js +25 -0
  21. package/dist/audit.nondeep.runtime-C6jFgJfH.js +832 -0
  22. package/dist/audit.runtime-Dnlsn23e.js +118 -0
  23. package/dist/auth-Ch3Rchm4.js +101 -0
  24. package/dist/auth-choice-CEFSlnLT.js +122 -0
  25. package/dist/auth-choice-CVCef-eU.js +268 -0
  26. package/dist/auth-choice-Cez-pXrg.js +507 -0
  27. package/dist/auth-choice-options-DO78mvPe.js +123 -0
  28. package/dist/auth-choice-prompt-CUkC7Mmb.js +36 -0
  29. package/dist/auth-choice-prompt-DCuQRiVl.js +115 -0
  30. package/dist/auth-choice.apply-helpers-BhbNIV8X.js +66 -0
  31. package/dist/auth-choice.plugin-providers.runtime-4BhqvEw_.js +119 -0
  32. package/dist/auth-profiles-smABVXzp.js +128040 -0
  33. package/dist/auth-profiles.runtime-Cr-ojtTc.js +116 -0
  34. package/dist/banner-CojBHPWr.js +342 -0
  35. package/dist/bluebubbles-BnLsj2Fy.d.ts +6 -0
  36. package/dist/bluebubbles-CVk7M3Bl.js +64 -0
  37. package/dist/bot-DdyrB2z9.d.ts +478 -0
  38. package/dist/brave-w4Fo8WZ3.js +24 -0
  39. package/dist/browser-cli-DWFs3P_i.js +1494 -0
  40. package/dist/build-info.json +3 -3
  41. package/dist/bundled/boot-md/handler.d.ts +1 -1
  42. package/dist/bundled/boot-md/handler.js +35 -35
  43. package/dist/bundled/bootstrap-extra-files/handler.d.ts +1 -1
  44. package/dist/bundled/bootstrap-extra-files/handler.js +1 -1
  45. package/dist/bundled/command-logger/handler.d.ts +1 -1
  46. package/dist/bundled/session-memory/handler.d.ts +1 -1
  47. package/dist/bundled/session-memory/handler.js +36 -36
  48. package/dist/call-Do7wTSr7.js +39 -0
  49. package/dist/call-gdDAt07d.js +640 -0
  50. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  51. package/dist/channel-B26pkce0.js +214 -0
  52. package/dist/channel-BJHp0AQC.js +352 -0
  53. package/dist/channel-BKFOv51P.js +4681 -0
  54. package/dist/channel-BNgpOY8v.js +538 -0
  55. package/dist/channel-BcQAAo2P.js +226 -0
  56. package/dist/channel-BvNdnhbx.js +1598 -0
  57. package/dist/channel-C1Rda3Jd.js +306 -0
  58. package/dist/channel-C87DG-F7.js +803 -0
  59. package/dist/channel-CIip0kvZ.js +619 -0
  60. package/dist/channel-CTPxoT_E2.js +316 -0
  61. package/dist/channel-CklaCzUG.js +562 -0
  62. package/dist/channel-CoJnAdLs.js +920 -0
  63. package/dist/channel-D3tafL1_.js +949 -0
  64. package/dist/channel-DFMrP2uu.js +542 -0
  65. package/dist/channel-DMd5cJQe.js +397 -0
  66. package/dist/channel-Dm34kxAJ.js +207 -0
  67. package/dist/channel-DmwF9udn.js +1321 -0
  68. package/dist/channel-account-context-Bjur9nlh.js +103 -0
  69. package/dist/channel-bGnST659.js +943 -0
  70. package/dist/channel-hIgbkTZf.js +575 -0
  71. package/dist/channel-m_TGrDKo.js +497 -0
  72. package/dist/channel-options-DoUPBMa8.js +50 -0
  73. package/dist/channel-plugin-ids-TZIY4hFs.js +26 -0
  74. package/dist/channel-summary-qD54bOBO.js +111 -0
  75. package/dist/channel.runtime-B0H04Dkk.js +199 -0
  76. package/dist/channel.runtime-BU1f3NkV.js +418 -0
  77. package/dist/channel.runtime-Bj1sfLep.js +4011 -0
  78. package/dist/channel.runtime-BtPAAJc3.js +870 -0
  79. package/dist/channel.runtime-Bx-10m_j.js +171 -0
  80. package/dist/channel.runtime-CI_TBywQ.js +179 -0
  81. package/dist/channel.runtime-CSLj14-Z.js +182 -0
  82. package/dist/channel.runtime-D-lTSYAd.js +404 -0
  83. package/dist/channel.runtime-DJqIOSji.js +127 -0
  84. package/dist/channel.runtime-Ec8aQ9V2.js +241 -0
  85. package/dist/channel.runtime-ax5a1jBm.js +218 -0
  86. package/dist/channel.setup-B-ncdYLT.js +9 -0
  87. package/dist/channel.setup-BY4bh5dm.js +9 -0
  88. package/dist/channel.setup-BovsdMnL.js +57 -0
  89. package/dist/channel.setup-CXzXA25h.js +6 -0
  90. package/dist/channel.setup-DcZUEufN.js +8 -0
  91. package/dist/channel.setup-E6zceRsE.js +8 -0
  92. package/dist/channel.setup-Pc7nGbdX.js +11 -0
  93. package/dist/channels/plugins/actions/discord.d.ts +2 -2
  94. package/dist/channels/plugins/actions/discord.js +35 -35
  95. package/dist/channels/plugins/actions/signal.d.ts +1 -1
  96. package/dist/channels/plugins/actions/signal.js +35 -35
  97. package/dist/channels/plugins/actions/telegram.d.ts +2 -2
  98. package/dist/channels/plugins/actions/telegram.js +35 -35
  99. package/dist/channels/plugins/agent-tools/whatsapp-login.d.ts +3 -3
  100. package/dist/channels/plugins/agent-tools/whatsapp-login.js +35 -35
  101. package/dist/channels-CPtE5ND6.js +404 -0
  102. package/dist/channels-Cj8ZolHI.js +1118 -0
  103. package/dist/channels-cli-D2sKrntt.js +291 -0
  104. package/dist/channels-status-issues-CzIHODg2.js +16 -0
  105. package/dist/clawbot-cli-BcwEDmUn.js +118 -0
  106. package/dist/cleanup-utils-D0L17RsX.js +96 -0
  107. package/dist/cli/daemon-cli.js +1 -1
  108. package/dist/cli-BvGVPKnD.js +154 -0
  109. package/dist/command-registry-CADQzTAg.js +14 -0
  110. package/dist/command-registry-ktiJNAJd.js +242 -0
  111. package/dist/command-secret-gateway-CXp10RTM.js +111 -0
  112. package/dist/compact.runtime-DyKL-Iar.js +116 -0
  113. package/dist/completion-cli-Bz4STrpt.js +17 -0
  114. package/dist/completion-cli-pVda2OFb.js +445 -0
  115. package/dist/config-BbvDRSYp.js +31 -0
  116. package/dist/config-CwBv71QC.js +44 -0
  117. package/dist/config-cli-Y0uXHbOw.js +678 -0
  118. package/dist/config-guard-BpW5g7JE.js +118 -0
  119. package/dist/config-validation-B-vLIsbo.js +262 -0
  120. package/dist/config-value-DT3-5958.js +132 -0
  121. package/dist/configure-B9U-jCqP.js +1100 -0
  122. package/dist/configure-BJ3Wrs5b.js +243 -0
  123. package/dist/control-ui-assets-C1YDYi82.js +232 -0
  124. package/dist/control-ui-shared-Dm5Dh0Lo.js +29 -0
  125. package/dist/core-BwKq3krw.js +150 -0
  126. package/dist/core-hjBwfDsW.d.ts +87 -0
  127. package/dist/cron-cli-DTDgfoMh.js +639 -0
  128. package/dist/daemon-cli-C-dkAXR1.js +339 -0
  129. package/dist/daemon-install-Oy0Q5pMF.js +180 -0
  130. package/dist/deliver-DNGnDqF9.js +111 -0
  131. package/dist/deliver-runtime-CCNZIhET.js +111 -0
  132. package/dist/device-id-cli-XvwZbIyC.js +52 -0
  133. package/dist/device-identity-IG5DngWM.js +365 -0
  134. package/dist/devices-cli-DIsxj4xp.js +342 -0
  135. package/dist/diagnostic-DTPopFvh.js +310 -0
  136. package/dist/directory-cli-DTSY3Ktr.js +311 -0
  137. package/dist/directory-config-helpers-DpFcAbmo.d.ts +38 -0
  138. package/dist/directory.static-CBRAUwUW.js +44 -0
  139. package/dist/discord-CrgxhEWw.js +114 -0
  140. package/dist/discovery-DrG7wmAR.js +48 -0
  141. package/dist/dm-policy-shared-DKoGdUpY.d.ts +95 -0
  142. package/dist/dns-cli-BJiz6CLK.js +217 -0
  143. package/dist/docs-cli-Dq2Yi5qO.js +174 -0
  144. package/dist/doctor-completion-D3GeVcFP.js +90 -0
  145. package/dist/doctor-config-flow-B1cMjr8h.js +112 -0
  146. package/dist/doctor-config-flow-BUe7JpV3.js +2437 -0
  147. package/dist/enable-Bc8bCuVe.js +24 -0
  148. package/dist/entry.js +4 -4
  149. package/dist/exec-approvals-cli-kLAev6bP.js +421 -0
  150. package/dist/extensions/acpx/index.d.ts +1 -1
  151. package/dist/extensions/amazon-bedrock/index.d.ts +1 -1
  152. package/dist/extensions/amazon-bedrock/index.js +4 -4
  153. package/dist/extensions/anthropic/index.d.ts +1 -1
  154. package/dist/extensions/anthropic/index.js +35 -35
  155. package/dist/extensions/bluebubbles/index.d.ts +1 -1
  156. package/dist/extensions/bluebubbles/index.js +39 -39
  157. package/dist/extensions/bluebubbles/setup-entry.d.ts +2 -2
  158. package/dist/extensions/bluebubbles/setup-entry.js +39 -39
  159. package/dist/extensions/brave/index.d.ts +1 -1
  160. package/dist/extensions/brave/index.js +5 -5
  161. package/dist/extensions/byteplus/index.d.ts +1 -1
  162. package/dist/extensions/byteplus/index.js +35 -35
  163. package/dist/extensions/cloudflare-ai-gateway/index.d.ts +1 -1
  164. package/dist/extensions/cloudflare-ai-gateway/index.js +36 -36
  165. package/dist/extensions/copilot-proxy/index.d.ts +1 -1
  166. package/dist/extensions/copilot-proxy/index.js +4 -4
  167. package/dist/extensions/device-pair/index.d.ts +1 -1
  168. package/dist/extensions/device-pair/index.js +4 -4
  169. package/dist/extensions/diagnostics-otel/index.d.ts +1 -1
  170. package/dist/extensions/diagnostics-otel/index.js +4 -4
  171. package/dist/extensions/diffs/index.d.ts +1 -1
  172. package/dist/extensions/discord/index.d.ts +1 -1
  173. package/dist/extensions/discord/index.js +40 -40
  174. package/dist/extensions/discord/setup-entry.d.ts +1 -1
  175. package/dist/extensions/discord/setup-entry.js +38 -38
  176. package/dist/extensions/elevenlabs/index.d.ts +1 -1
  177. package/dist/extensions/elevenlabs/index.js +35 -35
  178. package/dist/extensions/feishu/index.d.ts +2 -2
  179. package/dist/extensions/feishu/index.js +40 -40
  180. package/dist/extensions/feishu/setup-entry.d.ts +2 -2
  181. package/dist/extensions/feishu/setup-entry.js +37 -37
  182. package/dist/extensions/firecrawl/index.d.ts +1 -1
  183. package/dist/extensions/firecrawl/index.js +35 -35
  184. package/dist/extensions/github-copilot/index.d.ts +1 -1
  185. package/dist/extensions/github-copilot/index.js +35 -35
  186. package/dist/extensions/google/index.d.ts +1 -1
  187. package/dist/extensions/google/index.js +35 -35
  188. package/dist/extensions/googlechat/index.d.ts +1 -1
  189. package/dist/extensions/googlechat/index.js +38 -38
  190. package/dist/extensions/googlechat/setup-entry.d.ts +1 -1
  191. package/dist/extensions/googlechat/setup-entry.js +38 -38
  192. package/dist/extensions/huggingface/index.d.ts +1 -1
  193. package/dist/extensions/huggingface/index.js +35 -35
  194. package/dist/extensions/imessage/index.d.ts +1 -1
  195. package/dist/extensions/imessage/index.js +39 -39
  196. package/dist/extensions/imessage/setup-entry.d.ts +1 -1
  197. package/dist/extensions/imessage/setup-entry.js +39 -39
  198. package/dist/extensions/irc/index.d.ts +1 -1
  199. package/dist/extensions/irc/index.js +38 -38
  200. package/dist/extensions/irc/setup-entry.d.ts +2 -2
  201. package/dist/extensions/irc/setup-entry.js +38 -38
  202. package/dist/extensions/kakao-talkchannel/index.d.ts +1 -1
  203. package/dist/extensions/kakao-talkchannel/index.js +4 -4
  204. package/dist/extensions/kilocode/index.d.ts +1 -1
  205. package/dist/extensions/kilocode/index.js +35 -35
  206. package/dist/extensions/kimi-coding/index.d.ts +1 -1
  207. package/dist/extensions/kimi-coding/index.js +35 -35
  208. package/dist/extensions/line/index.d.ts +1 -1
  209. package/dist/extensions/line/index.js +37 -37
  210. package/dist/extensions/line/setup-entry.d.ts +1 -1
  211. package/dist/extensions/line/setup-entry.js +37 -37
  212. package/dist/extensions/llm-task/index.d.ts +1 -1
  213. package/dist/extensions/llm-task/index.js +35 -35
  214. package/dist/extensions/lobster/index.d.ts +1 -1
  215. package/dist/extensions/lobster/index.js +4 -4
  216. package/dist/extensions/matrix/index.d.ts +1 -1
  217. package/dist/extensions/matrix/index.js +40 -40
  218. package/dist/extensions/matrix/setup-entry.d.ts +2 -2
  219. package/dist/extensions/matrix/setup-entry.js +40 -40
  220. package/dist/extensions/mattermost/index.d.ts +1 -1
  221. package/dist/extensions/mattermost/index.js +37 -37
  222. package/dist/extensions/mattermost/setup-entry.d.ts +2 -2
  223. package/dist/extensions/mattermost/setup-entry.js +37 -37
  224. package/dist/extensions/memory-core/index.d.ts +1 -1
  225. package/dist/extensions/memory-core/index.js +4 -4
  226. package/dist/extensions/memory-lancedb/index.d.ts +1 -1
  227. package/dist/extensions/memory-lancedb/index.js +4 -4
  228. package/dist/extensions/microsoft/index.d.ts +1 -1
  229. package/dist/extensions/microsoft/index.js +35 -35
  230. package/dist/extensions/minimax/index.d.ts +1 -1
  231. package/dist/extensions/minimax/index.js +35 -35
  232. package/dist/extensions/mistral/index.d.ts +1 -1
  233. package/dist/extensions/mistral/index.js +35 -35
  234. package/dist/extensions/modelstudio/index.d.ts +1 -1
  235. package/dist/extensions/modelstudio/index.js +35 -35
  236. package/dist/extensions/moonshot/index.d.ts +1 -1
  237. package/dist/extensions/moonshot/index.js +35 -35
  238. package/dist/extensions/msteams/index.d.ts +1 -1
  239. package/dist/extensions/msteams/index.js +40 -40
  240. package/dist/extensions/msteams/setup-entry.d.ts +1 -1
  241. package/dist/extensions/msteams/setup-entry.js +40 -40
  242. package/dist/extensions/nextcloud-talk/index.d.ts +1 -1
  243. package/dist/extensions/nextcloud-talk/index.js +37 -37
  244. package/dist/extensions/nextcloud-talk/setup-entry.d.ts +2 -2
  245. package/dist/extensions/nextcloud-talk/setup-entry.js +37 -37
  246. package/dist/extensions/nostr/index.d.ts +1 -1
  247. package/dist/extensions/nostr/index.js +37 -37
  248. package/dist/extensions/nostr/setup-entry.d.ts +1 -1
  249. package/dist/extensions/nostr/setup-entry.js +37 -37
  250. package/dist/extensions/nvidia/index.d.ts +1 -1
  251. package/dist/extensions/nvidia/index.js +4 -4
  252. package/dist/extensions/ollama/index.d.ts +1 -1
  253. package/dist/extensions/ollama/index.js +7 -7
  254. package/dist/extensions/open-prose/index.d.ts +1 -1
  255. package/dist/extensions/open-prose/index.js +4 -4
  256. package/dist/extensions/openai/index.d.ts +1 -1
  257. package/dist/extensions/openai/index.js +35 -35
  258. package/dist/extensions/opencode/index.d.ts +1 -1
  259. package/dist/extensions/opencode/index.js +35 -35
  260. package/dist/extensions/opencode-go/index.d.ts +1 -1
  261. package/dist/extensions/opencode-go/index.js +35 -35
  262. package/dist/extensions/openrouter/index.d.ts +1 -1
  263. package/dist/extensions/openrouter/index.js +35 -35
  264. package/dist/extensions/openshell/index.d.ts +1 -1
  265. package/dist/extensions/openshell/index.js +35 -35
  266. package/dist/extensions/perplexity/index.d.ts +1 -1
  267. package/dist/extensions/perplexity/index.js +5 -5
  268. package/dist/extensions/phone-control/index.d.ts +1 -1
  269. package/dist/extensions/phone-control/index.js +4 -4
  270. package/dist/extensions/qianfan/index.d.ts +1 -1
  271. package/dist/extensions/qianfan/index.js +35 -35
  272. package/dist/extensions/qwen-portal-auth/index.d.ts +1 -1
  273. package/dist/extensions/qwen-portal-auth/index.js +35 -35
  274. package/dist/extensions/sglang/index.d.ts +1 -1
  275. package/dist/extensions/sglang/index.js +35 -35
  276. package/dist/extensions/signal/index.d.ts +1 -1
  277. package/dist/extensions/signal/index.js +38 -38
  278. package/dist/extensions/signal/setup-entry.d.ts +1 -1
  279. package/dist/extensions/signal/setup-entry.js +38 -38
  280. package/dist/extensions/slack/index.d.ts +1 -1
  281. package/dist/extensions/slack/index.js +39 -39
  282. package/dist/extensions/slack/setup-entry.d.ts +1 -1
  283. package/dist/extensions/slack/setup-entry.js +38 -38
  284. package/dist/extensions/synology-chat/index.d.ts +1 -1
  285. package/dist/extensions/synology-chat/index.js +37 -37
  286. package/dist/extensions/synology-chat/setup-entry.d.ts +1 -1
  287. package/dist/extensions/synology-chat/setup-entry.js +37 -37
  288. package/dist/extensions/synthetic/index.d.ts +1 -1
  289. package/dist/extensions/synthetic/index.js +35 -35
  290. package/dist/extensions/talk-voice/index.d.ts +1 -1
  291. package/dist/extensions/talk-voice/index.js +35 -35
  292. package/dist/extensions/telegram/index.d.ts +1 -1
  293. package/dist/extensions/telegram/index.js +38 -38
  294. package/dist/extensions/telegram/setup-entry.d.ts +1 -1
  295. package/dist/extensions/telegram/setup-entry.js +37 -37
  296. package/dist/extensions/thread-ownership/index.d.ts +1 -1
  297. package/dist/extensions/thread-ownership/index.js +4 -4
  298. package/dist/extensions/tlon/index.d.ts +1 -1
  299. package/dist/extensions/tlon/index.js +37 -37
  300. package/dist/extensions/tlon/setup-entry.d.ts +1 -1
  301. package/dist/extensions/tlon/setup-entry.js +37 -37
  302. package/dist/extensions/together/index.d.ts +1 -1
  303. package/dist/extensions/together/index.js +35 -35
  304. package/dist/extensions/twitch/index.d.ts +2 -2
  305. package/dist/extensions/twitch/index.js +37 -37
  306. package/dist/extensions/venice/index.d.ts +1 -1
  307. package/dist/extensions/venice/index.js +35 -35
  308. package/dist/extensions/vercel-ai-gateway/index.d.ts +1 -1
  309. package/dist/extensions/vercel-ai-gateway/index.js +36 -36
  310. package/dist/extensions/vllm/index.d.ts +1 -1
  311. package/dist/extensions/vllm/index.js +35 -35
  312. package/dist/extensions/voice-call/index.d.ts +1 -1
  313. package/dist/extensions/voice-call/index.js +35 -35
  314. package/dist/extensions/volcengine/index.d.ts +1 -1
  315. package/dist/extensions/volcengine/index.js +35 -35
  316. package/dist/extensions/whatsapp/index.d.ts +1 -1
  317. package/dist/extensions/whatsapp/index.js +38 -38
  318. package/dist/extensions/whatsapp/setup-entry.d.ts +1 -1
  319. package/dist/extensions/whatsapp/setup-entry.js +38 -38
  320. package/dist/extensions/xai/index.d.ts +1 -1
  321. package/dist/extensions/xai/index.js +35 -35
  322. package/dist/extensions/xiaomi/index.d.ts +1 -1
  323. package/dist/extensions/xiaomi/index.js +35 -35
  324. package/dist/extensions/zai/index.d.ts +1 -1
  325. package/dist/extensions/zai/index.js +35 -35
  326. package/dist/extensions/zalo/index.d.ts +1 -1
  327. package/dist/extensions/zalo/index.js +39 -39
  328. package/dist/extensions/zalo/setup-entry.d.ts +1 -1
  329. package/dist/extensions/zalo/setup-entry.js +39 -39
  330. package/dist/extensions/zalouser/index.d.ts +1 -1
  331. package/dist/extensions/zalouser/index.js +40 -40
  332. package/dist/extensions/zalouser/setup-entry.d.ts +1 -1
  333. package/dist/extensions/zalouser/setup-entry.js +40 -40
  334. package/dist/feishu-fIcnHDTd.d.ts +36 -0
  335. package/dist/gateway-cli-0c-8h93_.js +26437 -0
  336. package/dist/gateway-install-token-1PwJvrBY.js +163 -0
  337. package/dist/gateway-rpc-C0Vk51W7.js +26 -0
  338. package/dist/gateway-runtime-CBm3CCoA.js +69 -0
  339. package/dist/git-commit-BTWXFY41.js +177 -0
  340. package/dist/git-commit-D6GTN5Yt.js +2 -0
  341. package/dist/googlechat-BQr4xgoZ.js +307 -0
  342. package/dist/googlechat-BvwsCVKl.d.ts +12 -0
  343. package/dist/group-access-DpiQnd-G.d.ts +61 -0
  344. package/dist/health-6yZQGADY.js +113 -0
  345. package/dist/health-C9DYGyRe.js +570 -0
  346. package/dist/heartbeat-summary-Dct2lqJj.js +57 -0
  347. package/dist/help-CtwSApfq.js +81 -0
  348. package/dist/hooks-9gokOxZ5.d.ts +6 -0
  349. package/dist/hooks-cli-BegKzHZT.js +1000 -0
  350. package/dist/hooks-status-Bm_pGORf.js +78 -0
  351. package/dist/http-registry-D-S6a1Na.d.ts +20 -0
  352. package/dist/identity-file-Diub2a0t.js +60 -0
  353. package/dist/image-generation-CbIVzmAR.d.ts +9 -0
  354. package/dist/imessage-Bgok9kfl.js +31 -0
  355. package/dist/imessage-VIHePprL.js +115 -0
  356. package/dist/inbound-reply-dispatch-B53GAGWq.js +71 -0
  357. package/dist/inbound-reply-dispatch-n7U3qg15.d.ts +72 -0
  358. package/dist/index.js +2 -2
  359. package/dist/install-target-oz1pjfHH.js +574 -0
  360. package/dist/installs-CUFm5V8a.js +532 -0
  361. package/dist/io-BaBxjB1v.js +9739 -0
  362. package/dist/io-CgHb1Jld.js +29 -0
  363. package/dist/irc-CaRKzGvW.js +672 -0
  364. package/dist/library-C5SNBCMb.js +112 -0
  365. package/dist/lifecycle-core-Dn8PK6nk.js +382 -0
  366. package/dist/line/accounts.d.ts +2 -2
  367. package/dist/line/send.d.ts +1 -1
  368. package/dist/line/send.js +7 -7
  369. package/dist/line/template-messages.d.ts +1 -1
  370. package/dist/line-B5QFpgN_.d.ts +75 -0
  371. package/dist/line-fePrrQOD.js +530 -0
  372. package/dist/llm-slug-generator-hKae3XDA.js +67 -0
  373. package/dist/llm-slug-generator.d.ts +1 -1
  374. package/dist/llm-slug-generator.js +36 -36
  375. package/dist/logging-CdisccbY.js +13 -0
  376. package/dist/logging-LKQSgX1d.js +30 -0
  377. package/dist/login-qr-C1YWh4nE.js +233 -0
  378. package/dist/login-qr-WFluMDMb.js +112 -0
  379. package/dist/logs-cli-CNzOvZ2d.js +256 -0
  380. package/dist/manager-runtime-DgMhLTkR.js +111 -0
  381. package/dist/manager.runtime-hUWgpPt2.js +715 -0
  382. package/dist/manifest-registry-CS_p1OBQ.js +1329 -0
  383. package/dist/matrix-43_RGLZN.d.ts +68 -0
  384. package/dist/matrix-CCFxHfxa.js +1269 -0
  385. package/dist/matrix-DWs_qIkJ.js +1495 -0
  386. package/dist/mcp-cli-Ci2jvv3s.js +87 -0
  387. package/dist/media-understanding.runtime-Cdr6iTW6.js +116 -0
  388. package/dist/memory-cli-LZbyF0Iu.js +111 -0
  389. package/dist/memory-search-BHhETk6u.js +17 -0
  390. package/dist/memory-search-tTD5o_rU.js +204 -0
  391. package/dist/method-scopes-B2ZKSsxQ.js +2452 -0
  392. package/dist/model-auth-markers-LqZ4qhrZ.d.ts +20 -0
  393. package/dist/model-picker-CTR5mo4v.js +112 -0
  394. package/dist/model-picker-DG4z_dBs.js +390 -0
  395. package/dist/model-picker.runtime-DMQ9Pj9_.js +125 -0
  396. package/dist/model-selection-bBBxfXdb.js +653 -0
  397. package/dist/model-suppression.runtime-BVG75tZ7.js +116 -0
  398. package/dist/models-BjkVLfgw.js +2514 -0
  399. package/dist/models-ZO01Q4cx.js +118 -0
  400. package/dist/models-cli-DemdF-bm.js +309 -0
  401. package/dist/models-config-B2Jja8ua.js +111 -0
  402. package/dist/models-config.providers.discovery-puxTsH39.d.ts +18 -0
  403. package/dist/moldclaw-root-Cb6HRlUO.js +92 -0
  404. package/dist/monitor-BP4idxJD.js +782 -0
  405. package/dist/monitor-B_eP8Eim.js +772 -0
  406. package/dist/monitor-CRHYNl5J.js +3468 -0
  407. package/dist/monitor-Ci1Xg4g3.js +113 -0
  408. package/dist/monitor-DEodDl3z.js +6823 -0
  409. package/dist/monitor-DJlNKuMz.js +115 -0
  410. package/dist/monitor-DvFwDS9w.js +3076 -0
  411. package/dist/monitor-shared--cEjSf8s.js +444 -0
  412. package/dist/msteams-CV2a8uE8.js +852 -0
  413. package/dist/node-cli-Of2g7DSd.js +2503 -0
  414. package/dist/node-resolve-BYC2FbO2.js +835 -0
  415. package/dist/nodes-cli-CPHM6Upj.js +1380 -0
  416. package/dist/nostr-BFKRoOlz.d.ts +7 -0
  417. package/dist/nostr-lHpcBzz4.js +8744 -0
  418. package/dist/npm-resolution-kqHN85wB.js +60 -0
  419. package/dist/oauth-env-CLG8KOrz.js +10 -0
  420. package/dist/onboard-BON0C360.js +48 -0
  421. package/dist/onboard-CRkIBgOI.js +589 -0
  422. package/dist/onboard-DsKI17iq.js +25 -0
  423. package/dist/onboard-channels-BY3IbBBf.js +1241 -0
  424. package/dist/onboard-channels-CLKdRxvW.js +205 -0
  425. package/dist/onboard-custom-BjPrMo_R.js +571 -0
  426. package/dist/onboard-custom-DqcPiZBN.js +114 -0
  427. package/dist/onboard-helpers-BkrOY5OE.js +113 -0
  428. package/dist/onboard-helpers-DiSRTpZC.js +335 -0
  429. package/dist/onboard-hooks-pzEPZAvl.js +72 -0
  430. package/dist/onboard-remote-ChyLC6Dk.js +181 -0
  431. package/dist/onboard-remote-DHmK9ntl.js +117 -0
  432. package/dist/onboard-search-BgA3jEMW.js +302 -0
  433. package/dist/onboard-skills-BMo_NvnW.js +133 -0
  434. package/dist/onboard-skills-Bba-Z2p8.js +117 -0
  435. package/dist/outbound-media-BHD4aJEX.d.ts +11 -0
  436. package/dist/outbound-media-DSno0N82.js +11 -0
  437. package/dist/pairing-access-CzHpaM0R.d.ts +21 -0
  438. package/dist/pairing-cli-CmklqK0q.js +217 -0
  439. package/dist/perplexity-CXwMDD3u.js +24 -0
  440. package/dist/persistent-dedupe-B9vrAf8t.d.ts +26 -0
  441. package/dist/pi-model-discovery-runtime-BrK7tcaO.js +111 -0
  442. package/dist/pi-tools.before-tool-call.runtime-C5yLUogH.js +381 -0
  443. package/dist/plugin-install-C4AWJIFP.js +117 -0
  444. package/dist/plugin-install-CB3J1hfV.js +184 -0
  445. package/dist/plugin-install-plan-7itZiegi.js +49 -0
  446. package/dist/plugin-registry-DX_GFoiz.js +113 -0
  447. package/dist/plugin-registry-e3cxTtvb.js +49 -0
  448. package/dist/plugin-sdk/account-resolution.js +35 -35
  449. package/dist/plugin-sdk/acp-runtime.js +35 -35
  450. package/dist/plugin-sdk/agent-runtime.js +35 -35
  451. package/dist/plugin-sdk/bluebubbles.js +37 -37
  452. package/dist/plugin-sdk/channel-config-helpers.js +35 -35
  453. package/dist/plugin-sdk/channel-policy.js +35 -35
  454. package/dist/plugin-sdk/channel-runtime.js +35 -35
  455. package/dist/plugin-sdk/compat.js +36 -36
  456. package/dist/plugin-sdk/config-runtime.js +35 -35
  457. package/dist/plugin-sdk/conversation-runtime.js +35 -35
  458. package/dist/plugin-sdk/copilot-proxy.js +4 -4
  459. package/dist/plugin-sdk/core.js +4 -4
  460. package/dist/plugin-sdk/device-pair.js +4 -4
  461. package/dist/plugin-sdk/discord.js +35 -35
  462. package/dist/plugin-sdk/feishu.js +35 -35
  463. package/dist/plugin-sdk/gateway-runtime.js +10 -10
  464. package/dist/plugin-sdk/googlechat.js +37 -37
  465. package/dist/plugin-sdk/image-generation-runtime.js +35 -35
  466. package/dist/plugin-sdk/image-generation.js +35 -35
  467. package/dist/plugin-sdk/imessage.js +36 -36
  468. package/dist/plugin-sdk/index.js +35 -35
  469. package/dist/plugin-sdk/infra-runtime.js +35 -35
  470. package/dist/plugin-sdk/irc.js +37 -37
  471. package/dist/plugin-sdk/line.js +36 -36
  472. package/dist/plugin-sdk/llm-task.js +35 -35
  473. package/dist/plugin-sdk/lobster.js +4 -4
  474. package/dist/plugin-sdk/matrix.js +37 -37
  475. package/dist/plugin-sdk/mattermost.js +36 -36
  476. package/dist/plugin-sdk/media-runtime.js +35 -35
  477. package/dist/plugin-sdk/media-understanding-runtime.js +35 -35
  478. package/dist/plugin-sdk/media-understanding.js +35 -35
  479. package/dist/plugin-sdk/memory-lancedb.js +4 -4
  480. package/dist/plugin-sdk/minimax-portal-auth.js +4 -4
  481. package/dist/plugin-sdk/msteams.js +38 -38
  482. package/dist/plugin-sdk/nextcloud-talk.js +36 -36
  483. package/dist/plugin-sdk/nostr.js +36 -36
  484. package/dist/plugin-sdk/ollama-setup.js +9 -9
  485. package/dist/plugin-sdk/open-prose.js +4 -4
  486. package/dist/plugin-sdk/phone-control.js +4 -4
  487. package/dist/plugin-sdk/plugin-runtime.js +35 -35
  488. package/dist/plugin-sdk/provider-auth.js +35 -35
  489. package/dist/plugin-sdk/provider-models.js +5 -5
  490. package/dist/plugin-sdk/provider-onboard.js +4 -4
  491. package/dist/plugin-sdk/provider-setup.js +39 -39
  492. package/dist/plugin-sdk/provider-stream.js +4 -4
  493. package/dist/plugin-sdk/provider-usage.js +4 -4
  494. package/dist/plugin-sdk/qwen-portal-auth.js +35 -35
  495. package/dist/plugin-sdk/reply-history.js +35 -35
  496. package/dist/plugin-sdk/reply-runtime.js +35 -35
  497. package/dist/plugin-sdk/routing.js +3 -3
  498. package/dist/plugin-sdk/sandbox.js +35 -35
  499. package/dist/plugin-sdk/security-runtime.js +35 -35
  500. package/dist/plugin-sdk/self-hosted-provider-setup.js +37 -37
  501. package/dist/plugin-sdk/setup.js +35 -35
  502. package/dist/plugin-sdk/signal.js +35 -35
  503. package/dist/plugin-sdk/slack.js +35 -35
  504. package/dist/plugin-sdk/speech-runtime.js +35 -35
  505. package/dist/plugin-sdk/speech.js +35 -35
  506. package/dist/plugin-sdk/src/secrets/secure-file-store.d.ts +26 -0
  507. package/dist/plugin-sdk/src/subscription/provider.d.ts +5 -3
  508. package/dist/plugin-sdk/synology-chat.js +36 -36
  509. package/dist/plugin-sdk/talk-voice.js +4 -4
  510. package/dist/plugin-sdk/telegram.js +35 -35
  511. package/dist/plugin-sdk/text-runtime.js +7 -7
  512. package/dist/plugin-sdk/thread-ownership.js +4 -4
  513. package/dist/plugin-sdk/tlon.js +36 -36
  514. package/dist/plugin-sdk/twitch.js +35 -35
  515. package/dist/plugin-sdk/voice-call.js +35 -35
  516. package/dist/plugin-sdk/whatsapp.js +35 -35
  517. package/dist/plugin-sdk/zalo.js +38 -38
  518. package/dist/plugin-sdk/zalouser.js +38 -38
  519. package/dist/plugins/runtime/index.d.ts +1 -1
  520. package/dist/plugins/runtime/index.js +35 -35
  521. package/dist/plugins-DF5FaTO0.js +111 -0
  522. package/dist/plugins-cli-CvTJemqC.js +917 -0
  523. package/dist/policy-CNXISK_a.js +143 -0
  524. package/dist/preflight-audio.runtime-RP000oxo.js +116 -0
  525. package/dist/probe-BkM5pykD.js +21 -0
  526. package/dist/probe-DKbRTJv5.js +1793 -0
  527. package/dist/probe-DkrfRsjU.js +47 -0
  528. package/dist/probe-DpcJ0WeP.js +129 -0
  529. package/dist/probe-auth-BcNjX8hy.js +40 -0
  530. package/dist/probe-auth-DhuAb8ls.js +48 -0
  531. package/dist/probe-wciBj-aL.js +6329 -0
  532. package/dist/program-C8-p0mW5.js +253 -0
  533. package/dist/prompt-select-styled-DH0pVoc0.js +2673 -0
  534. package/dist/provider-api-key-auth.runtime-CAFeIQ1u.js +121 -0
  535. package/dist/provider-auth-choice-CB_HzdTl.js +126 -0
  536. package/dist/provider-auth-choice-helpers-hzDkh3f1.js +48 -0
  537. package/dist/provider-auth-choice-preference-BHCXvNSE.js +189 -0
  538. package/dist/provider-auth-choice.runtime-Dx4ms2C5.js +123 -0
  539. package/dist/provider-auth-choices-0KaDNPBQ.js +57 -0
  540. package/dist/provider-auth-guidance-BaAUiNr_.js +34 -0
  541. package/dist/provider-auth-result-Bto1bYtS.d.ts +18 -0
  542. package/dist/provider-models-DxOmeToO.d.ts +867 -0
  543. package/dist/provider-models-xnyxy6mO.js +2113 -0
  544. package/dist/provider-ollama-setup-DBYK__ov.d.ts +32 -0
  545. package/dist/provider-ollama-setup-QzgCxj44.js +314 -0
  546. package/dist/provider-onboard-B9ionepI.js +139 -0
  547. package/dist/provider-onboard-CURxJ_UX.d.ts +40 -0
  548. package/dist/provider-runtime.runtime-4xwmsl5L.js +111 -0
  549. package/dist/provider-self-hosted-setup-BHd24EDG.js +182 -0
  550. package/dist/provider-self-hosted-setup-qeY8BYSy.d.ts +61 -0
  551. package/dist/provider-stream-Chz_EFw3.js +512 -0
  552. package/dist/provider-usage-C11Q7UwS.js +111 -0
  553. package/dist/provider-usage-kxemdMp2.js +633 -0
  554. package/dist/provider-wizard-CanJoxNC.js +152 -0
  555. package/dist/push-apns-Dsajnm8C.js +1038 -0
  556. package/dist/pw-ai-DUe4BbH2.js +1867 -0
  557. package/dist/qmd-manager-CAAFp7qK.js +1570 -0
  558. package/dist/qr-cli-Bu2jqTPY.js +113 -0
  559. package/dist/qr-cli-Bu9Z-X48.js +369 -0
  560. package/dist/reactions-Cpfum4iU.js +281 -0
  561. package/dist/read-only-account-inspect.discord.runtime-BK0LaMgC.js +116 -0
  562. package/dist/read-only-account-inspect.slack.runtime-DgKiC5wT.js +116 -0
  563. package/dist/read-only-account-inspect.telegram.runtime-mxfgFVOU.js +116 -0
  564. package/dist/redact-snapshot-DD8A4tdd.js +2663 -0
  565. package/dist/register.agent-DU4FtrU2.js +439 -0
  566. package/dist/register.backup-8nOYtJqg.js +625 -0
  567. package/dist/register.configure-DmtecqIH.js +252 -0
  568. package/dist/register.maintenance-Dir3ulKP.js +574 -0
  569. package/dist/register.message-Cfl-f3Ju.js +709 -0
  570. package/dist/register.onboard-Bv7WVzEi.js +192 -0
  571. package/dist/register.setup-BIyeI8RY.js +212 -0
  572. package/dist/register.status-health-sessions-C69WQcF4.js +498 -0
  573. package/dist/register.subclis-B_4KCgTd.js +315 -0
  574. package/dist/register.subclis-BeXsmgBL.js +13 -0
  575. package/dist/replies-DdcFUmki.js +110 -0
  576. package/dist/resolve-channels-DRZqPV5o.js +226 -0
  577. package/dist/resolve-channels-DxW1kqxA.js +262 -0
  578. package/dist/resolve-route-DdX-HBVt.js +538 -0
  579. package/dist/resolve-users-rgCQvkLs.js +143 -0
  580. package/dist/root-help-QAkoA7GD.js +32 -0
  581. package/dist/routes-CcJNnwTF.js +7097 -0
  582. package/dist/rpc-DDUAlBbH.js +67 -0
  583. package/dist/run-main-D9ci5pn7.js +424 -0
  584. package/dist/runtime-Bitmi8Er.d.ts +26 -0
  585. package/dist/runtime-discord-ops.runtime-T4sf7aRB.js +9078 -0
  586. package/dist/runtime-slack-ops.runtime-BQpP48mC.js +4556 -0
  587. package/dist/runtime-telegram-ops.runtime-cVO5dqOp.js +133 -0
  588. package/dist/runtime-whatsapp-login.runtime-DtNx0dSY.js +114 -0
  589. package/dist/runtime-whatsapp-outbound.runtime-Bw47QbFK.js +117 -0
  590. package/dist/sandbox-cli-DsFwjbjC.js +535 -0
  591. package/dist/search-manager-BRAK8fEe.js +16 -0
  592. package/dist/search-manager-BS5Db0A6.js +386 -0
  593. package/dist/secrets-cli-D3J46TJp.js +2070 -0
  594. package/dist/security-cli-B866M9cB.js +575 -0
  595. package/dist/send-B1pX9_Oc.js +283 -0
  596. package/dist/send-B2RrLg83.js +100 -0
  597. package/dist/send-DFnV__Aq.js +1025 -0
  598. package/dist/send-DZIH6CJt.js +629 -0
  599. package/dist/send-sl9WnKbW.js +631 -0
  600. package/dist/server-node-events-BT6egg20.js +506 -0
  601. package/dist/server-zI_K-D05.js +107 -0
  602. package/dist/sessions-C8kiAcoJ.js +112 -0
  603. package/dist/sessions-DLBpp52_.js +218 -0
  604. package/dist/setup-C7eOzMiC.js +387 -0
  605. package/dist/setup-CFIMq-Pz.d.ts +37 -0
  606. package/dist/setup-binary-CcAv8NXz.js +406 -0
  607. package/dist/setup-browser-C4eRV3h6.js +70 -0
  608. package/dist/setup-core-BnR486P-.js +143 -0
  609. package/dist/setup-core-CIswIiu5.js +166 -0
  610. package/dist/setup-core-CcbcrXXg.js +47 -0
  611. package/dist/setup-core-nZSw5BSv.js +205 -0
  612. package/dist/setup-surface-C5iSpT4M.js +490 -0
  613. package/dist/setup-wizard-helpers-r0J6l8ST.d.ts +203 -0
  614. package/dist/setup.finalize-adiRfo0U.js +522 -0
  615. package/dist/setup.gateway-config-BwFWKDfT.js +343 -0
  616. package/dist/shared-12TimyeF.js +182 -0
  617. package/dist/shared-9EWO34-k.js +298 -0
  618. package/dist/shared-B4vUbaRR.js +75 -0
  619. package/dist/shared-bNWpW3Dd.js +96 -0
  620. package/dist/shared-lU1y5dvS.js +102 -0
  621. package/dist/signal-DBlETRu9.js +114 -0
  622. package/dist/skills-Bio8GwTE.js +20 -0
  623. package/dist/skills-DE_MXFSN.js +853 -0
  624. package/dist/skills-cli-BGuW-tKw.js +292 -0
  625. package/dist/skills-install--rnorIoJ.js +763 -0
  626. package/dist/skills-status-B08PtBc_.js +21 -0
  627. package/dist/skills-status-CzM008aB.js +169 -0
  628. package/dist/slack-C4T53Nc-.js +114 -0
  629. package/dist/slash-commands.runtime-B7fsD8Be.js +128 -0
  630. package/dist/slash-dispatch.runtime-t0PAX4vQ.js +141 -0
  631. package/dist/slash-skill-commands.runtime-DIhPnEfR.js +116 -0
  632. package/dist/src-DrDirlvw.js +1701 -0
  633. package/dist/status-Bld14WSA.js +131 -0
  634. package/dist/status-CgeO4RuH.js +43 -0
  635. package/dist/status-HlvixAOq.js +606 -0
  636. package/dist/status-Rom_Lf3c.js +1599 -0
  637. package/dist/status-TwbMH6Am.js +126 -0
  638. package/dist/status-json-DMW7cmuK.js +288 -0
  639. package/dist/status.link-channel-V4LkB6Gq.js +143 -0
  640. package/dist/status.scan.deps.runtime-BE3X-dcP.js +126 -0
  641. package/dist/status.scan.runtime-BxVY4mty.js +119 -0
  642. package/dist/status.summary-CzLM0vVr.js +592 -0
  643. package/dist/status.summary.runtime-BSBnHZ1Q.js +118 -0
  644. package/dist/status.update-BxblMS7P.js +77 -0
  645. package/dist/subagent-orphan-recovery-BpRPryEj.js +307 -0
  646. package/dist/subagent-registry-runtime-DYYU5p3X.js +111 -0
  647. package/dist/subscription-CpFdxuFS.js +33 -0
  648. package/dist/subscription-DaA1urx-.js +102 -0
  649. package/dist/subscription-cli-Bvto9EmO.js +134 -0
  650. package/dist/synology-chat-3nwk-Nj0.js +297 -0
  651. package/dist/system-cli-BvNps8sl.js +94 -0
  652. package/dist/telegram/audit.d.ts +1 -1
  653. package/dist/telegram/audit.js +1 -1
  654. package/dist/telegram/token.d.ts +1 -1
  655. package/dist/telegram/token.js +35 -35
  656. package/dist/telegram-RtKXoEsF.js +114 -0
  657. package/dist/text-chunking-BD5mQe2R.js +84 -0
  658. package/dist/text-chunking-DDUU_vAF.d.ts +79 -0
  659. package/dist/tlon-z-kYmJE-.js +433 -0
  660. package/dist/tui-cli-CzSK08Rh.js +137 -0
  661. package/dist/tui-wV7R1Tlc.js +3834 -0
  662. package/dist/types-2H_e7eWT.d.ts +45 -0
  663. package/dist/types-ZKnGUchG.d.ts +22692 -0
  664. package/dist/types.base-BFiQZ4J9.d.ts +188 -0
  665. package/dist/ui-BWVHreeR.js +31 -0
  666. package/dist/update-D1Wgh1Tj.js +1036 -0
  667. package/dist/update-cli-CZh99uyY.js +1503 -0
  668. package/dist/update-offset-store-D5xTdUr0.js +112 -0
  669. package/dist/update-runner-GbKfoCHs.js +1496 -0
  670. package/dist/upsert-with-lock-BZU7Le8n.js +33 -0
  671. package/dist/usage-Czgwvg0h.js +115 -0
  672. package/dist/web-CMczmL90.js +112 -0
  673. package/dist/web-shared-B5Q0mIJq.d.ts +45 -0
  674. package/dist/webhook-request-guards-CsKDhZJr.d.ts +76 -0
  675. package/dist/webhook-targets-BSmFtesN.js +181 -0
  676. package/dist/webhook-targets-CjxuEE9C.d.ts +106 -0
  677. package/dist/webhooks-cli-Wl9y6AWW.js +350 -0
  678. package/dist/whatsapp-VzRW8MdR.js +114 -0
  679. package/dist/whatsapp-actions-Cg1Wxv8W.js +167 -0
  680. package/dist/workspace-DJ_S272u.js +484 -0
  681. package/dist/workspace-DbZSqjw0.js +289 -0
  682. package/dist/workspace-cli-D93DLmAh.js +154 -0
  683. package/dist/workspace-dirs-CGeIPpGN.js +2003 -0
  684. package/dist/zalo-CK2dlGmu.d.ts +9 -0
  685. package/dist/zalo-Db7s2boL.js +415 -0
  686. package/dist/zalouser-Jh5YTJX3.js +30911 -0
  687. package/extensions/discord/src/monitor/allow-list.ts +8 -1
  688. package/extensions/discord/src/monitor/message-handler.preflight.ts +4 -1
  689. package/package.json +1 -1
  690. package/dist/accounts-CS8U4v8C.js +0 -114
  691. package/dist/accounts-gLr-Udmt.d.ts +0 -103
  692. package/dist/acp-cli-BGT0jXcC.js +0 -2093
  693. package/dist/actions.runtime-BfckTw6c.js +0 -119
  694. package/dist/actions.runtime-Cl9mBfqH.js +0 -133
  695. package/dist/agent-scope-C-YmLnnb.js +0 -208
  696. package/dist/agents-CydD54p8.js +0 -222
  697. package/dist/agents-DpQsZO6O.js +0 -853
  698. package/dist/agents.config-XU7IsYE-.js +0 -121
  699. package/dist/agents.config-ssoQXuvF.js +0 -17
  700. package/dist/allow-list-Cfn6lmMK.js +0 -81
  701. package/dist/allowlist-CCYXVpM9.js +0 -142
  702. package/dist/api-BoXoFKxy.js +0 -117
  703. package/dist/audit-Bv05N5o9.js +0 -787
  704. package/dist/audit-CIWW1Aqm.js +0 -54
  705. package/dist/audit-channel.collect.runtime-Bi7yrdcO.js +0 -605
  706. package/dist/audit-channel.runtime-C_NDweiW.js +0 -121
  707. package/dist/audit-extra.async-Dp7OKSXg.js +0 -813
  708. package/dist/audit-membership-runtime-B8FQ6VtN.js +0 -162
  709. package/dist/audit.deep.runtime-CXhobL6b.js +0 -25
  710. package/dist/audit.nondeep.runtime-CrEm3T16.js +0 -832
  711. package/dist/audit.runtime-CJPKj1Zg.js +0 -118
  712. package/dist/auth-Byfp0flq.js +0 -101
  713. package/dist/auth-choice-BgOjdeXN.js +0 -507
  714. package/dist/auth-choice-CD1Heq0M.js +0 -122
  715. package/dist/auth-choice-ePNfg0iQ.js +0 -268
  716. package/dist/auth-choice-options-BlewQWI0.js +0 -123
  717. package/dist/auth-choice-prompt-BP2b6aXz.js +0 -36
  718. package/dist/auth-choice-prompt-Cmwl4n97.js +0 -115
  719. package/dist/auth-choice.apply-helpers-Dq-nxuuX.js +0 -66
  720. package/dist/auth-choice.plugin-providers.runtime-B23kOUzQ.js +0 -119
  721. package/dist/auth-profiles-1kPLbBwI.js +0 -127823
  722. package/dist/auth-profiles.runtime-DAfSjku1.js +0 -116
  723. package/dist/banner-DeOsobLO.js +0 -342
  724. package/dist/bluebubbles-BsLGedBM.js +0 -64
  725. package/dist/bluebubbles-U2sAfO4_.d.ts +0 -6
  726. package/dist/bot-DW12K3bO.d.ts +0 -478
  727. package/dist/brave-BoWimrLe.js +0 -24
  728. package/dist/browser-cli-D_S3wEYE.js +0 -1494
  729. package/dist/call-ByEzDJ1_.js +0 -640
  730. package/dist/call-CHCWVg-O.js +0 -39
  731. package/dist/channel-3VC0oOMu.js +0 -214
  732. package/dist/channel-B9fCBPiS.js +0 -207
  733. package/dist/channel-B9q775cM.js +0 -562
  734. package/dist/channel-BG3UK54j.js +0 -803
  735. package/dist/channel-BRQAdMML.js +0 -352
  736. package/dist/channel-BmlLp933.js +0 -1321
  737. package/dist/channel-By6KvdTG.js +0 -920
  738. package/dist/channel-C8rRsdf6.js +0 -226
  739. package/dist/channel-CLEDBbXE.js +0 -943
  740. package/dist/channel-CMvBAG7o.js +0 -306
  741. package/dist/channel-CmlxxjHY.js +0 -1598
  742. package/dist/channel-CqG6_xN0.js +0 -949
  743. package/dist/channel-DNueHKs92.js +0 -316
  744. package/dist/channel-DUtyN7BX.js +0 -4681
  745. package/dist/channel-DWD6GrfZ.js +0 -538
  746. package/dist/channel-DaRYMYzj.js +0 -619
  747. package/dist/channel-Dj6BgLp8.js +0 -575
  748. package/dist/channel-account-context-Ba3u5D21.js +0 -103
  749. package/dist/channel-crabk6Em.js +0 -542
  750. package/dist/channel-i8uqQaK2.js +0 -497
  751. package/dist/channel-options-xljvwHS2.js +0 -50
  752. package/dist/channel-plugin-ids-DAgknSG4.js +0 -26
  753. package/dist/channel-summary-dHTMCG75.js +0 -111
  754. package/dist/channel-xVWQ96Ni.js +0 -397
  755. package/dist/channel.runtime-B6PoZ4BV.js +0 -182
  756. package/dist/channel.runtime-BPZmo57e.js +0 -404
  757. package/dist/channel.runtime-B_1uGR-U.js +0 -199
  758. package/dist/channel.runtime-BiXnPU0d.js +0 -218
  759. package/dist/channel.runtime-BpvDc9sv.js +0 -870
  760. package/dist/channel.runtime-CUua3W80.js +0 -418
  761. package/dist/channel.runtime-CaCBTd0A.js +0 -179
  762. package/dist/channel.runtime-D0FfYvUj.js +0 -4011
  763. package/dist/channel.runtime-DhoJtpvJ.js +0 -241
  764. package/dist/channel.runtime-Kj9EXNE0.js +0 -127
  765. package/dist/channel.runtime-r4tPuPyh.js +0 -171
  766. package/dist/channel.setup-B7d_grfe.js +0 -6
  767. package/dist/channel.setup-C0vu1fhi.js +0 -9
  768. package/dist/channel.setup-CAI0FNHj.js +0 -11
  769. package/dist/channel.setup-CkDVwv5R.js +0 -57
  770. package/dist/channel.setup-Cpd00YqQ.js +0 -8
  771. package/dist/channel.setup-DbBz1-WT.js +0 -9
  772. package/dist/channel.setup-GZnAvD9g.js +0 -8
  773. package/dist/channels-5H484RSw.js +0 -1118
  774. package/dist/channels-BnPudfyx.js +0 -404
  775. package/dist/channels-cli-WIC-QeH_.js +0 -291
  776. package/dist/channels-status-issues-RDmzovJU.js +0 -16
  777. package/dist/clawbot-cli-BgutNwf8.js +0 -118
  778. package/dist/cleanup-utils-DBl1Aij1.js +0 -96
  779. package/dist/cli-1P7u6zqu.js +0 -154
  780. package/dist/command-registry-B8jovrws.js +0 -232
  781. package/dist/command-registry-DtDl1FVm.js +0 -14
  782. package/dist/command-secret-gateway-BgUo3FxJ.js +0 -111
  783. package/dist/compact.runtime-CXbXM0AU.js +0 -116
  784. package/dist/completion-cli-Cik_owAE.js +0 -17
  785. package/dist/completion-cli-RU3P2RSl.js +0 -445
  786. package/dist/config-5HUpB1L1.js +0 -31
  787. package/dist/config-cli-QHaUHoZI.js +0 -433
  788. package/dist/config-guard-C9Sn3pE-.js +0 -118
  789. package/dist/config-sW57gztj.js +0 -44
  790. package/dist/config-validation-5LkjIKNt.js +0 -262
  791. package/dist/config-value-CtTWALxG.js +0 -132
  792. package/dist/configure-BmR2TPLf.js +0 -243
  793. package/dist/configure-DaLN-5xM.js +0 -1100
  794. package/dist/control-ui-assets-CH3MYmAo.js +0 -232
  795. package/dist/control-ui-shared-CA77PTml.js +0 -29
  796. package/dist/core-CvDzLs7B.js +0 -150
  797. package/dist/core-dPA4nFkn.d.ts +0 -87
  798. package/dist/cron-cli-tguLpzyq.js +0 -639
  799. package/dist/daemon-cli-ptosOkL8.js +0 -339
  800. package/dist/daemon-install-DzU4EnVa.js +0 -180
  801. package/dist/deliver-DwxFoHM3.js +0 -111
  802. package/dist/deliver-runtime-DOdDyaPI.js +0 -111
  803. package/dist/device-id-cli-GopvlxxZ.js +0 -52
  804. package/dist/device-identity-CRfhC3_s.js +0 -365
  805. package/dist/devices-cli-ain7ESqU.js +0 -342
  806. package/dist/diagnostic-D96Xaqrj.js +0 -310
  807. package/dist/directory-cli-fh1UxGgY.js +0 -311
  808. package/dist/directory-config-helpers-CpU1oflo.d.ts +0 -38
  809. package/dist/directory.static-CKjJUNGl.js +0 -44
  810. package/dist/discord-CflhwDEM.js +0 -114
  811. package/dist/discovery-x0ZqY4AB.js +0 -48
  812. package/dist/dm-policy-shared-73A52W6E.d.ts +0 -95
  813. package/dist/dns-cli-DCHyKjGf.js +0 -217
  814. package/dist/docs-cli-D3OoqYSP.js +0 -174
  815. package/dist/doctor-completion-Bq2eP87s.js +0 -90
  816. package/dist/doctor-config-flow-D8XRG9Ku.js +0 -2437
  817. package/dist/doctor-config-flow-DGiF1HGc.js +0 -112
  818. package/dist/enable-0QSF4YGH.js +0 -24
  819. package/dist/exec-approvals-cli-Bncym0Gd.js +0 -421
  820. package/dist/feishu-B5JDcyF9.d.ts +0 -36
  821. package/dist/gateway-cli-DYscsmA-.js +0 -26437
  822. package/dist/gateway-install-token-CNv17ac9.js +0 -163
  823. package/dist/gateway-rpc-BGC1Rxvg.js +0 -26
  824. package/dist/gateway-runtime-D89mSQPB.js +0 -69
  825. package/dist/git-commit-CeLH5Ozm.js +0 -2
  826. package/dist/git-commit-DUKRiCP-.js +0 -177
  827. package/dist/googlechat-BgXeXjd1.js +0 -307
  828. package/dist/googlechat-De-T7C31.d.ts +0 -12
  829. package/dist/group-access-Deh1tVNr.d.ts +0 -61
  830. package/dist/health-BEjzWwaB.js +0 -570
  831. package/dist/health-FjqrWQL6.js +0 -113
  832. package/dist/heartbeat-summary-CfdSA9M1.js +0 -57
  833. package/dist/help-BZeVprq1.js +0 -81
  834. package/dist/hooks-B5pYs_d7.d.ts +0 -6
  835. package/dist/hooks-cli-B7uGJs2O.js +0 -1000
  836. package/dist/hooks-status-CfceaUSg.js +0 -78
  837. package/dist/http-registry-C-KXqwnj.d.ts +0 -20
  838. package/dist/identity-file-sshkKKIr.js +0 -60
  839. package/dist/image-generation-CafM5hZh.d.ts +0 -9
  840. package/dist/imessage-BcV3WGx_.js +0 -31
  841. package/dist/imessage-Dhje7Ty-.js +0 -115
  842. package/dist/inbound-reply-dispatch-C73_7SOl.js +0 -71
  843. package/dist/inbound-reply-dispatch-DmL0KWLe.d.ts +0 -72
  844. package/dist/install-target-D7NRhfzc.js +0 -574
  845. package/dist/installs-Bj6jblqc.js +0 -532
  846. package/dist/io-CMfWWPXQ.js +0 -9738
  847. package/dist/io-CV844hAM.js +0 -29
  848. package/dist/irc-DKi1fDYI.js +0 -672
  849. package/dist/library-rygTG3oA.js +0 -112
  850. package/dist/lifecycle-core-BPlvShWY.js +0 -382
  851. package/dist/line-CGsemKWJ.js +0 -530
  852. package/dist/line-CKU3ER-n.d.ts +0 -75
  853. package/dist/llm-slug-generator-DlhVyMqT.js +0 -67
  854. package/dist/logging-5wu9k6w4.js +0 -30
  855. package/dist/logging-CxP9suT8.js +0 -13
  856. package/dist/login-qr-BcDsiwHs.js +0 -233
  857. package/dist/login-qr-Y8pJ5yV4.js +0 -112
  858. package/dist/logs-cli-XI9oVXpH.js +0 -256
  859. package/dist/manager-runtime-DkIlXBhD.js +0 -111
  860. package/dist/manager.runtime-Q0q2rJCC.js +0 -715
  861. package/dist/manifest-registry-DAd0SRAP.js +0 -1329
  862. package/dist/matrix-BI0DBBrG.js +0 -1495
  863. package/dist/matrix-DiABGjJR.js +0 -1269
  864. package/dist/matrix-fC6NrFM5.d.ts +0 -68
  865. package/dist/mcp-cli-BOyn_DLL.js +0 -87
  866. package/dist/media-understanding.runtime-DjUa7Dka.js +0 -116
  867. package/dist/memory-cli-CJd_vl-Y.js +0 -111
  868. package/dist/memory-search-CEEItIFR.js +0 -17
  869. package/dist/memory-search-Cv1SBrn7.js +0 -204
  870. package/dist/method-scopes-CQE7-bZ-.js +0 -2452
  871. package/dist/model-auth-markers-B1bbs9Qd.d.ts +0 -20
  872. package/dist/model-picker-D6_89XHg.js +0 -112
  873. package/dist/model-picker-Svaw-APs.js +0 -390
  874. package/dist/model-picker.runtime-Chi9nV7A.js +0 -125
  875. package/dist/model-selection-hL8i1Jbs.js +0 -653
  876. package/dist/model-suppression.runtime-DjWJZ0X-.js +0 -116
  877. package/dist/models-7qj1dG_W.js +0 -118
  878. package/dist/models-BPOB_xJF.js +0 -2514
  879. package/dist/models-cli-DdlOVUjS.js +0 -309
  880. package/dist/models-config-CBqUS-jX.js +0 -111
  881. package/dist/models-config.providers.discovery-BKB5JH9M.d.ts +0 -18
  882. package/dist/moldclaw-root-D6PbhbZk.js +0 -88
  883. package/dist/monitor-BPYhkEqF.js +0 -782
  884. package/dist/monitor-BuTcQ24j.js +0 -3468
  885. package/dist/monitor-CuXvNhFh.js +0 -113
  886. package/dist/monitor-D-TqSIHF.js +0 -6823
  887. package/dist/monitor-DRSgo9u2.js +0 -3076
  888. package/dist/monitor-DcHch39z.js +0 -772
  889. package/dist/monitor-DsHBMrXp.js +0 -115
  890. package/dist/monitor-shared-CL8T4gt1.js +0 -444
  891. package/dist/msteams-7FMwTvQG.js +0 -852
  892. package/dist/node-cli-BCjaSCZM.js +0 -2503
  893. package/dist/node-resolve-D5Hvcgyx.js +0 -835
  894. package/dist/nodes-cli-Dd_SNbkt.js +0 -1380
  895. package/dist/nostr-D8scBiYq.d.ts +0 -7
  896. package/dist/nostr-DBTFTxKs.js +0 -8744
  897. package/dist/npm-resolution-CYfb3MHG.js +0 -60
  898. package/dist/oauth-env-zPt5RywA.js +0 -10
  899. package/dist/onboard-BEFQQeig.js +0 -25
  900. package/dist/onboard-CJHNyxJh.js +0 -48
  901. package/dist/onboard-D_3UeLEN.js +0 -589
  902. package/dist/onboard-channels-B_JL0Djc.js +0 -1241
  903. package/dist/onboard-channels-CqZzHt2C.js +0 -205
  904. package/dist/onboard-custom-CER3Ggbq.js +0 -571
  905. package/dist/onboard-custom-bNRdGECb.js +0 -114
  906. package/dist/onboard-helpers-BK0Hsb7Y.js +0 -335
  907. package/dist/onboard-helpers-CXZ5RPoR.js +0 -113
  908. package/dist/onboard-hooks-1NsxEDjH.js +0 -72
  909. package/dist/onboard-remote-DuKhC_7W.js +0 -117
  910. package/dist/onboard-remote-OwRcDuB3.js +0 -181
  911. package/dist/onboard-search-Cy8dOq2W.js +0 -302
  912. package/dist/onboard-skills-D5phRa6r.js +0 -117
  913. package/dist/onboard-skills-c9qWCNe9.js +0 -133
  914. package/dist/outbound-media-CgNYEQWb.d.ts +0 -11
  915. package/dist/outbound-media-DYRO2vTD.js +0 -11
  916. package/dist/pairing-access-Dsiu5Mvl.d.ts +0 -21
  917. package/dist/pairing-cli-BOnv0TYn.js +0 -217
  918. package/dist/perplexity-EZwC3y2b.js +0 -24
  919. package/dist/persistent-dedupe-DMLOqJ23.d.ts +0 -26
  920. package/dist/pi-model-discovery-runtime-BToY3A6K.js +0 -111
  921. package/dist/pi-tools.before-tool-call.runtime-D_acPtld.js +0 -381
  922. package/dist/plugin-install-CgJpSjYd.js +0 -184
  923. package/dist/plugin-install-Cl1A4EF6.js +0 -117
  924. package/dist/plugin-install-plan-Dc2Z4DeU.js +0 -49
  925. package/dist/plugin-registry-B1UaWrQD.js +0 -49
  926. package/dist/plugin-registry-Cy8biwnn.js +0 -113
  927. package/dist/plugins-CXwvg50F.js +0 -111
  928. package/dist/plugins-cli-Uvzp2aYV.js +0 -917
  929. package/dist/policy-DsMBbEe7.js +0 -143
  930. package/dist/preflight-audio.runtime-hWsZIYvc.js +0 -116
  931. package/dist/probe-CNsSf1Uf.js +0 -6329
  932. package/dist/probe-CqOIrPhb.js +0 -47
  933. package/dist/probe-DH6gDw-h.js +0 -129
  934. package/dist/probe-DM16PLf4.js +0 -21
  935. package/dist/probe-DvAEEWYr.js +0 -1793
  936. package/dist/probe-auth-COfgCble.js +0 -48
  937. package/dist/probe-auth-I_5TX1Eh.js +0 -40
  938. package/dist/program-Dz80sgTU.js +0 -253
  939. package/dist/prompt-select-styled-wQehwFxK.js +0 -2673
  940. package/dist/provider-api-key-auth.runtime-BR9GU4ya.js +0 -121
  941. package/dist/provider-auth-choice-CdhA84kr.js +0 -126
  942. package/dist/provider-auth-choice-helpers-kabp_0zA.js +0 -48
  943. package/dist/provider-auth-choice-preference-se3zAM_2.js +0 -189
  944. package/dist/provider-auth-choice.runtime-BMc8-xNQ.js +0 -123
  945. package/dist/provider-auth-choices-CYsCViGi.js +0 -57
  946. package/dist/provider-auth-guidance-CMjUWlNf.js +0 -34
  947. package/dist/provider-auth-result-Cw6qIhO-.d.ts +0 -18
  948. package/dist/provider-models-BCId_Lfu.js +0 -2113
  949. package/dist/provider-models-Ok-DrSiY.d.ts +0 -867
  950. package/dist/provider-ollama-setup-B6XJZ0So.js +0 -314
  951. package/dist/provider-ollama-setup-lGDdTl0b.d.ts +0 -32
  952. package/dist/provider-onboard-CSPi7jOK.d.ts +0 -40
  953. package/dist/provider-onboard-Ca0TaNud.js +0 -139
  954. package/dist/provider-runtime.runtime-DwwkHw_7.js +0 -111
  955. package/dist/provider-self-hosted-setup-BEKLVGpj.js +0 -182
  956. package/dist/provider-self-hosted-setup-Df91By-J.d.ts +0 -61
  957. package/dist/provider-stream-DrUD69ai.js +0 -512
  958. package/dist/provider-usage-BgKHCnjr.js +0 -111
  959. package/dist/provider-usage-D8EZpFz9.js +0 -633
  960. package/dist/provider-wizard-DMdb-zj_.js +0 -152
  961. package/dist/push-apns-BPH6d4VV.js +0 -1038
  962. package/dist/pw-ai-DttfldtL.js +0 -1867
  963. package/dist/qmd-manager-CybcDUfk.js +0 -1570
  964. package/dist/qr-cli-8NcmJ8Ft.js +0 -369
  965. package/dist/qr-cli-DWe0Our3.js +0 -113
  966. package/dist/reactions-D6N0LR16.js +0 -281
  967. package/dist/read-only-account-inspect.discord.runtime-CqUWTRfl.js +0 -116
  968. package/dist/read-only-account-inspect.slack.runtime-9-jpln3q.js +0 -116
  969. package/dist/read-only-account-inspect.telegram.runtime-EKPI1D7n.js +0 -116
  970. package/dist/redact-snapshot-DwJEIVk9.js +0 -2663
  971. package/dist/register.agent-D3YdDirP.js +0 -439
  972. package/dist/register.backup-dR27qCuo.js +0 -625
  973. package/dist/register.configure-BjFhkkka.js +0 -252
  974. package/dist/register.maintenance-DiMQJIOa.js +0 -574
  975. package/dist/register.message-CdZsKYH1.js +0 -709
  976. package/dist/register.onboard-B0rV1eaO.js +0 -192
  977. package/dist/register.setup-wKMvohzo.js +0 -212
  978. package/dist/register.status-health-sessions-BJ68m6pt.js +0 -498
  979. package/dist/register.subclis-CnnrWt2a.js +0 -315
  980. package/dist/register.subclis-lSvTkC6z.js +0 -13
  981. package/dist/replies-BABt9b48.js +0 -110
  982. package/dist/resolve-channels-BqZFl2Ux.js +0 -262
  983. package/dist/resolve-channels-DjQLXb7B.js +0 -226
  984. package/dist/resolve-route-CSHDsa_m.js +0 -538
  985. package/dist/resolve-users-BG6HaSR5.js +0 -143
  986. package/dist/root-help-ohmaCyC_.js +0 -32
  987. package/dist/routes-4k2kpvoT.js +0 -7097
  988. package/dist/rpc-Cnwn4Q6L.js +0 -67
  989. package/dist/run-main-VYlacKA0.js +0 -424
  990. package/dist/runtime-D61jzMiI.d.ts +0 -26
  991. package/dist/runtime-discord-ops.runtime-DafrU-rI.js +0 -9078
  992. package/dist/runtime-slack-ops.runtime-CdXBKXwd.js +0 -4556
  993. package/dist/runtime-telegram-ops.runtime-B12sF7gE.js +0 -133
  994. package/dist/runtime-whatsapp-login.runtime-CqEudH37.js +0 -114
  995. package/dist/runtime-whatsapp-outbound.runtime-D5m2qyn-.js +0 -117
  996. package/dist/sandbox-cli-CHJiEWXB.js +0 -535
  997. package/dist/search-manager-BtNC3-i_.js +0 -16
  998. package/dist/search-manager-C7J7B3_a.js +0 -386
  999. package/dist/secrets-cli-C6yIWBbN.js +0 -2070
  1000. package/dist/security-cli-BVu9BkjD.js +0 -575
  1001. package/dist/send-BSreC7rr.js +0 -631
  1002. package/dist/send-BsLHQG_B.js +0 -1025
  1003. package/dist/send-BuNhp8PH.js +0 -283
  1004. package/dist/send-DOCswVar.js +0 -100
  1005. package/dist/send-Dl0LLErk.js +0 -629
  1006. package/dist/server-node-events-Bq2067EG.js +0 -506
  1007. package/dist/server-y38L7N5H.js +0 -107
  1008. package/dist/sessions-BV8gXURR.js +0 -112
  1009. package/dist/sessions-dl1Kc-Ci.js +0 -218
  1010. package/dist/setup-BSPXdMuK.d.ts +0 -37
  1011. package/dist/setup-DGszQH0_.js +0 -387
  1012. package/dist/setup-binary-C17YnmA8.js +0 -406
  1013. package/dist/setup-browser-CPx-nEsr.js +0 -70
  1014. package/dist/setup-core-BByHN1ME.js +0 -143
  1015. package/dist/setup-core-C0KPlBmL.js +0 -47
  1016. package/dist/setup-core-Cq37G6of.js +0 -166
  1017. package/dist/setup-core-uO84_Y75.js +0 -205
  1018. package/dist/setup-surface-BEMi7Rmb.js +0 -490
  1019. package/dist/setup-wizard-helpers-Ck9wDR0b.d.ts +0 -203
  1020. package/dist/setup.finalize-BzPBa8zW.js +0 -522
  1021. package/dist/setup.gateway-config-DdwkF-8e.js +0 -343
  1022. package/dist/shared-BCw4SKjB.js +0 -96
  1023. package/dist/shared-CjNzsULP.js +0 -75
  1024. package/dist/shared-Cu1BE7ZE.js +0 -298
  1025. package/dist/shared-DSClmyUn.js +0 -182
  1026. package/dist/shared-DyJdGH6y.js +0 -102
  1027. package/dist/signal-Dyv4NZsB.js +0 -114
  1028. package/dist/skills-CbB5b27M.js +0 -853
  1029. package/dist/skills-CnfI7Szw.js +0 -20
  1030. package/dist/skills-cli-CavB1f_3.js +0 -292
  1031. package/dist/skills-install-B1OBdgd0.js +0 -763
  1032. package/dist/skills-status-B3gAmIbW.js +0 -169
  1033. package/dist/skills-status-DrHhFgU9.js +0 -21
  1034. package/dist/slack-BRzqnoAz.js +0 -114
  1035. package/dist/slash-commands.runtime-BK88kgds.js +0 -128
  1036. package/dist/slash-dispatch.runtime-COGywwJE.js +0 -141
  1037. package/dist/slash-skill-commands.runtime-Ti4brxgh.js +0 -116
  1038. package/dist/src-DUR6OQxI.js +0 -1701
  1039. package/dist/status-C6dgQY9a.js +0 -131
  1040. package/dist/status-CNK0Q7QH.js +0 -606
  1041. package/dist/status-DBcX0DSC.js +0 -43
  1042. package/dist/status-DKgFgbwv.js +0 -1599
  1043. package/dist/status-Wn5lhNAc.js +0 -126
  1044. package/dist/status-json-D2EkWqAl.js +0 -288
  1045. package/dist/status.link-channel-D3ULIdEa.js +0 -143
  1046. package/dist/status.scan.deps.runtime-BsjWTAm4.js +0 -126
  1047. package/dist/status.scan.runtime-D4HbzROD.js +0 -119
  1048. package/dist/status.summary-C3YxPrDK.js +0 -592
  1049. package/dist/status.summary.runtime-DAkXPSaK.js +0 -118
  1050. package/dist/status.update-B4NnN9P1.js +0 -77
  1051. package/dist/subagent-orphan-recovery-QiQEBv36.js +0 -307
  1052. package/dist/subagent-registry-runtime-BJatPQFK.js +0 -111
  1053. package/dist/subscription-BhZORXN9.js +0 -100
  1054. package/dist/subscription-QEUjQRMv.js +0 -33
  1055. package/dist/subscription-cli-HrULlAgc.js +0 -134
  1056. package/dist/synology-chat-DB76GWMN.js +0 -297
  1057. package/dist/system-cli-D8jDwWuL.js +0 -94
  1058. package/dist/telegram-BHiiqKkQ.js +0 -114
  1059. package/dist/text-chunking-Baonm9Lu.js +0 -84
  1060. package/dist/text-chunking-DzB11ONk.d.ts +0 -79
  1061. package/dist/tlon-DLESxNgD.js +0 -433
  1062. package/dist/tui-C75zi2Cl.js +0 -3834
  1063. package/dist/tui-cli-DFwx5e6i.js +0 -137
  1064. package/dist/types-BKldC9YN.d.ts +0 -22692
  1065. package/dist/types-MeyueBE0.d.ts +0 -45
  1066. package/dist/types.base-Cw0-zIvE.d.ts +0 -188
  1067. package/dist/ui-B55NOIB6.js +0 -31
  1068. package/dist/update--ojavYQ4.js +0 -1036
  1069. package/dist/update-cli-Cvj5aWYM.js +0 -1503
  1070. package/dist/update-offset-store-upatuWwX.js +0 -112
  1071. package/dist/update-runner-DHkY_-76.js +0 -1496
  1072. package/dist/upsert-with-lock-C171GLaR.js +0 -33
  1073. package/dist/usage-N3bxnbmt.js +0 -115
  1074. package/dist/web-RdvT7gKa.js +0 -112
  1075. package/dist/web-shared-C2qHVxw1.d.ts +0 -45
  1076. package/dist/webhook-request-guards-CosLyl01.d.ts +0 -76
  1077. package/dist/webhook-targets-Bfnag-du.js +0 -181
  1078. package/dist/webhook-targets-DP_EkQa4.d.ts +0 -106
  1079. package/dist/webhooks-cli-ZpnXrq7G.js +0 -350
  1080. package/dist/whatsapp-DNTAyZHt.js +0 -114
  1081. package/dist/whatsapp-actions-o1zKQzKZ.js +0 -167
  1082. package/dist/workspace-CpWi5wPr.js +0 -479
  1083. package/dist/workspace-Ii7aRS7c.js +0 -289
  1084. package/dist/workspace-dirs-x10McA9t.js +0 -2003
  1085. package/dist/zalo-C9OQRYRw.d.ts +0 -9
  1086. package/dist/zalo-zm_bYCKg.js +0 -415
  1087. package/dist/zalouser-CvVEUvc5.js +0 -30911
  1088. /package/dist/{account-id-B3YSn4hl.d.ts → account-id-B8ce6G_4.d.ts} +0 -0
  1089. /package/dist/{acpx-CnNv70m2.d.ts → acpx-Ci50I9T2.d.ts} +0 -0
  1090. /package/dist/{agent-media-payload-DE2pEcsz.d.ts → agent-media-payload-en-gS5p6.d.ts} +0 -0
  1091. /package/dist/{allow-from-DPpHnT2A.d.ts → allow-from-cMeQ47Ot.d.ts} +0 -0
  1092. /package/dist/{allowlist-resolution-CLFiZ6nE.d.ts → allowlist-resolution-DoAWbfXV.d.ts} +0 -0
  1093. /package/dist/{bluebubbles-Duhu-Jer.d.ts → bluebubbles-C6yYmUl0.d.ts} +0 -0
  1094. /package/dist/{boolean-param-BhFjB3gp.d.ts → boolean-param-CdO2TFTk.d.ts} +0 -0
  1095. /package/dist/{channel-config-schema-DnnVMdjR.d.ts → channel-config-schema-Chp38wel.d.ts} +0 -0
  1096. /package/dist/{channel-policy-Baq-Z06b.d.ts → channel-policy-g2h6AbYQ.d.ts} +0 -0
  1097. /package/dist/{chat-type-DpiBgwuG.d.ts → chat-type-BLt59pPT.d.ts} +0 -0
  1098. /package/dist/{command-format-vi4xq8e8.d.ts → command-format-BDJC05Jp.d.ts} +0 -0
  1099. /package/dist/{diffs-DK7fVSDo.d.ts → diffs-D_iNKCyn.d.ts} +0 -0
  1100. /package/dist/{directory-runtime-BTLPaysA.d.ts → directory-runtime-DhMex6HY.d.ts} +0 -0
  1101. /package/dist/{exec-C01wtBHu.d.ts → exec-pjfUY4KM.d.ts} +0 -0
  1102. /package/dist/{gaxios-fetch-compat-wZ38b3w3.js → gaxios-fetch-compat-B_vtINdV.js} +0 -0
  1103. /package/dist/{history-CwXuP2TW.d.ts → history-aqSS5VGQ.d.ts} +0 -0
  1104. /package/dist/{inbound-envelope-SggrBs9m.d.ts → inbound-envelope-C5hWuZod.d.ts} +0 -0
  1105. /package/dist/{index-apAZHsDo.d.ts → index-DXVQFYGX.d.ts} +0 -0
  1106. /package/dist/{json-store-r75IZGk9.d.ts → json-store-UnqQ5aV3.d.ts} +0 -0
  1107. /package/dist/{keyed-async-queue-DHIr7yNe.d.ts → keyed-async-queue-guucpLw3.d.ts} +0 -0
  1108. /package/dist/{links-HeQ3r_L0.d.ts → links-Bar0meEK.d.ts} +0 -0
  1109. /package/dist/{markdown-to-line-CDb4Jy3V.d.ts → markdown-to-line-D8uH_KOj.d.ts} +0 -0
  1110. /package/dist/{mattermost-DtCsxpgg.d.ts → mattermost-xl7jAFJL.d.ts} +0 -0
  1111. /package/dist/{net-BATPDwdQ.d.ts → net-rGOKGds6.d.ts} +0 -0
  1112. /package/dist/{nextcloud-talk-Bb2wHOwp.d.ts → nextcloud-talk-De2CZ9dV.d.ts} +0 -0
  1113. /package/dist/{oauth-utils-u567CLT0.d.ts → oauth-utils-DzN1AlEH.d.ts} +0 -0
  1114. /package/dist/{parse-finite-number-l3tNlrZh.d.ts → parse-finite-number-odgyqhi0.d.ts} +0 -0
  1115. /package/dist/{provider-usage.types-C6061OVN.d.ts → provider-usage.types-EDE9o-H_.d.ts} +0 -0
  1116. /package/dist/{reply-history-BDsFnZFl.d.ts → reply-history-CVuU31xe.d.ts} +0 -0
  1117. /package/dist/{reply-payload-CCvM4W9u.d.ts → reply-payload-CHkpBYwL.d.ts} +0 -0
  1118. /package/dist/{request-url-C54l4-xC.d.ts → request-url-DHisbiHY.d.ts} +0 -0
  1119. /package/dist/{run-command-D3RqWcHu.d.ts → run-command-y0Cndsb1.d.ts} +0 -0
  1120. /package/dist/{secret-input-schema-BLBt-NAP.d.ts → secret-input-schema-b1vpYDQN.d.ts} +0 -0
  1121. /package/dist/{session-key-BQ2-bR-9.d.ts → session-key-DTHQl57f.d.ts} +0 -0
  1122. /package/dist/{ssh-config-C4mcH9Ly.js → ssh-config-hEHBfU2_.js} +0 -0
  1123. /package/dist/{testing-DLkhGsoz.d.ts → testing-DszuZXgK.d.ts} +0 -0
  1124. /package/dist/{thinking-DRkjX18p.d.ts → thinking-IwXTGSeT.d.ts} +0 -0
  1125. /package/dist/{tool-send-CMMD1uDu.d.ts → tool-send-DWHRmKpz.d.ts} +0 -0
  1126. /package/dist/{vllm-defaults-CcGuf4hL.d.ts → vllm-defaults-CrxZgE6-.d.ts} +0 -0
  1127. /package/dist/{wait-Daog8bxM.d.ts → wait-wDWw_MTI.d.ts} +0 -0
  1128. /package/dist/{webhook-memory-guards-C5MrExwT.d.ts → webhook-memory-guards-DreORuJy.d.ts} +0 -0
  1129. /package/dist/{windows-spawn-j2l-dqu8.d.ts → windows-spawn-BIzH92x2.d.ts} +0 -0
  1130. /package/dist/{zod-schema.agent-runtime-krMrBnIn.d.ts → zod-schema.agent-runtime-CP2rmis3.d.ts} +0 -0
  1131. /package/dist/{zod-schema.core-BNDieZDZ.d.ts → zod-schema.core-Foi1tYwi.d.ts} +0 -0
@@ -0,0 +1,1495 @@
1
+ import "./redact-fatrROh9.js";
2
+ import "./errors-DOJWZqNo.js";
3
+ import "./unhandled-rejections-CTvNvnT0.js";
4
+ import "./logger-BFfIIIKH.js";
5
+ import "./paths-D6AgsMTU.js";
6
+ import "./tmp-moldclaw-dir-DWF-d8qD.js";
7
+ import "./theme-BSXzMzAA.js";
8
+ import "./globals-DESrFYmC.js";
9
+ import "./runtime-_tQz41uA.js";
10
+ import "./ansi-BPhP6LBZ.js";
11
+ import "./subsystem-CPmDTJ2P.js";
12
+ import "./boolean-B6zcAynR.js";
13
+ import "./env-D42cffog.js";
14
+ import "./warning-filter-B1UOeM0G.js";
15
+ import "./utils-C7ykRPCQ.js";
16
+ import "./links-BcahUP5U.js";
17
+ import "./setup-binary-CcAv8NXz.js";
18
+ import { $w as formatAllowlistMatchMeta, Ah as createScopedPairingAccess, Nd as resolveDmGroupAccessWithLists, Oh as issuePairingChallenge, Ug as logInboundDrop, Uw as resolveControlCommandGate, Wg as logTypingFailure, _s as toLocationContext, ag as createTypingCallbacks, gs as formatLocationText, hs as resolveInboundSessionEnvelopeContext, kd as readStoreAllowFromForDmPolicy, sT as mergeAllowlist, sg as createReplyPrefixOptions, uT as summarizeMapping } from "./auth-profiles-smABVXzp.js";
19
+ import "./model-selection-bBBxfXdb.js";
20
+ import "./agent-scope-lZlwP1At.js";
21
+ import "./account-id-BuyZMNja.js";
22
+ import "./boundary-file-read-tPYh_8fH.js";
23
+ import "./logger-BGzLUitz.js";
24
+ import "./exec-CvEtXqTZ.js";
25
+ import "./workspace-DJ_S272u.js";
26
+ import "./io-BaBxjB1v.js";
27
+ import "./host-env-security-DQ2i_W12.js";
28
+ import "./safe-text-Cnulee_z.js";
29
+ import "./version-T8nMYUnU.js";
30
+ import "./env-substitution-68cyvF5h.js";
31
+ import "./config-state-h5jUoHya.js";
32
+ import "./network-mode-BtWXzwYn.js";
33
+ import "./registry-C1pRrsQl.js";
34
+ import "./manifest-registry-CS_p1OBQ.js";
35
+ import "./ip-C4YAIpr4.js";
36
+ import "./zod-schema.core-DvwgNmpd.js";
37
+ import "./config-CwBv71QC.js";
38
+ import "./audit-fs-CMb-YUHX.js";
39
+ import "./resolve-PSlwZjg3.js";
40
+ import "./provider-web-search-CcUC9ktE.js";
41
+ import "./text-runtime-Cfq-Uyx0.js";
42
+ import "./workspace-dirs-CGeIPpGN.js";
43
+ import "./config-BwkGZjD5.js";
44
+ import "./tailnet-fFTz5Twr.js";
45
+ import "./net-K181nxTH.js";
46
+ import "./credentials-D-5Pb-aZ.js";
47
+ import "./routes-CcJNnwTF.js";
48
+ import "./frontmatter-Cgg0ICvh.js";
49
+ import "./env-overrides-DBQl3LRc.js";
50
+ import "./path-alias-guards-BtSO7sk7.js";
51
+ import "./skills-DE_MXFSN.js";
52
+ import "./ports-Ca74cFb2.js";
53
+ import "./ports-lsof-CoiADo0p.js";
54
+ import "./ssh-tunnel-DsY-9yao.js";
55
+ import "./image-ops-Ck_D_vpe.js";
56
+ import "./fs-safe-CRXFoBmh.js";
57
+ import "./mime-DGFQe4XX.js";
58
+ import "./server-middleware-Djfoa1s0.js";
59
+ import "./message-channel-DFE4FuE_.js";
60
+ import "./resolve-route-DdX-HBVt.js";
61
+ import "./internal-hooks-83AcmxP3.js";
62
+ import { a as resolveSenderScopedGroupPolicy, c as resolveAllowlistProviderRuntimeGroupPolicy, f as warnMissingProviderGroupPolicyFallbackOnce, l as resolveDefaultGroupPolicy, o as GROUP_POLICY_BLOCKED_LABEL, t as evaluateGroupRouteAccessForPolicy } from "./group-access-UAqUyJod.js";
63
+ import "./lazy-runtime-BoGB4usD.js";
64
+ import "./config-schema-BNU4GQh_.js";
65
+ import "./method-scopes-B2ZKSsxQ.js";
66
+ import "./session-cost-usage-DWgQk6XT.js";
67
+ import "./paths-ApLcu1Uu.js";
68
+ import "./routing-DQ-fpTaA.js";
69
+ import "./send-B1pX9_Oc.js";
70
+ import "./node-resolve-BYC2FbO2.js";
71
+ import "./provider-stream-Chz_EFw3.js";
72
+ import "./identity-file-Diub2a0t.js";
73
+ import "./provider-models-xnyxy6mO.js";
74
+ import "./secret-file-p1IhQzwJ.js";
75
+ import "./logging-Dy7UYzIN.js";
76
+ import "./runtime-env-BlEtPF6b.js";
77
+ import "./registry-BFMbkmgR.js";
78
+ import "./provider-onboard-B9ionepI.js";
79
+ import "./model-definitions-Cyyzm6Kr.js";
80
+ import "./usage-Czgwvg0h.js";
81
+ import "./device-identity-IG5DngWM.js";
82
+ import "./auth-Ch3Rchm4.js";
83
+ import "./subscription-DaA1urx-.js";
84
+ import "./diagnostic-DTPopFvh.js";
85
+ import "./message-hook-mappers-CeiHXgSQ.js";
86
+ import "./json-store--7cBPxTG.js";
87
+ import "./call-gdDAt07d.js";
88
+ import "./multimodal-BJBBn_4F.js";
89
+ import "./memory-search-tTD5o_rU.js";
90
+ import "./query-expansion-D_Mm5Hhi.js";
91
+ import "./search-manager-BS5Db0A6.js";
92
+ import "./core-BwKq3krw.js";
93
+ import "./issue-format-B0SI57Es.js";
94
+ import "./logging-CdisccbY.js";
95
+ import "./note-dOl5kPAy.js";
96
+ import "./state-paths-DsMoTg25.js";
97
+ import "./config-value-DT3-5958.js";
98
+ import "./command-secret-targets-BFF4x_RB.js";
99
+ import "./brave-w4Fo8WZ3.js";
100
+ import "./provider-usage-kxemdMp2.js";
101
+ import "./perplexity-CXwMDD3u.js";
102
+ import "./restart-stale-pids-CPF1_61W.js";
103
+ import "./delivery-queue-BOf5wYIc.js";
104
+ import "./pairing-token-bu1e6z6X.js";
105
+ import "./accounts-J2OhhhQi.js";
106
+ import "./process-runtime-D27SftX_.js";
107
+ import "./audit-CpfSjvyo.js";
108
+ import "./cli-runtime-DTCHPjCi.js";
109
+ import "./cli-utils-BCuSS4l6.js";
110
+ import "./help-format-BFzPm_8V.js";
111
+ import "./progress-Cwq59vgZ.js";
112
+ import "./gateway-runtime-CBm3CCoA.js";
113
+ import "./run-command-uj_9ncR8.js";
114
+ import { n as resolveRuntimeEnv } from "./runtime-DP4WaDXD.js";
115
+ import { n as dispatchReplyFromConfigWithSettledDispatcher } from "./inbound-reply-dispatch-B53GAGWq.js";
116
+ import { _ as isBunRuntime, d as stopSharedClientForAccount, g as loadMatrixSdk, m as resolveMatrixAuth, o as resolveMatrixAccount, r as resolveMatrixTargets, u as resolveSharedMatrixClient } from "./matrix-CCFxHfxa.js";
117
+ import { s as getMatrixRuntime } from "./credentials-D1Ivi99Y.js";
118
+ import { a as sendTypingMatrix, d as isPollStartType, f as parsePollStartContent, i as sendReadReceiptMatrix, l as setActiveMatrixClient, n as sendMessageMatrix, t as reactMatrixMessage, u as formatPollAsText } from "./send-sl9WnKbW.js";
119
+ import { a as resolveMatrixRoomConfig, i as resolveMatrixAllowListMatches, n as normalizeMatrixUserId, o as fetchEventSummary, r as resolveMatrixAllowListMatch, t as normalizeMatrixAllowList } from "./allowlist-DNbDjFjw.js";
120
+ import "./probe-DkrfRsjU.js";
121
+ //#region extensions/matrix/src/matrix/monitor/auto-join.ts
122
+ function registerMatrixAutoJoin(params) {
123
+ const { client, cfg, runtime } = params;
124
+ const core = getMatrixRuntime();
125
+ const logVerbose = (message) => {
126
+ if (!core.logging.shouldLogVerbose()) return;
127
+ runtime.log?.(message);
128
+ };
129
+ const autoJoin = cfg.channels?.matrix?.autoJoin ?? "always";
130
+ const autoJoinAllowlist = cfg.channels?.matrix?.autoJoinAllowlist ?? [];
131
+ if (autoJoin === "off") return;
132
+ if (autoJoin === "always") {
133
+ const { AutojoinRoomsMixin } = loadMatrixSdk();
134
+ AutojoinRoomsMixin.setupOnClient(client);
135
+ logVerbose("matrix: auto-join enabled for all invites");
136
+ return;
137
+ }
138
+ client.on("room.invite", async (roomId, _inviteEvent) => {
139
+ if (autoJoin !== "allowlist") return;
140
+ let alias;
141
+ let altAliases = [];
142
+ try {
143
+ const aliasState = await client.getRoomStateEvent(roomId, "m.room.canonical_alias", "").catch(() => null);
144
+ alias = aliasState?.alias;
145
+ altAliases = Array.isArray(aliasState?.alt_aliases) ? aliasState.alt_aliases : [];
146
+ } catch {}
147
+ if (!(autoJoinAllowlist.includes("*") || autoJoinAllowlist.includes(roomId) || (alias ? autoJoinAllowlist.includes(alias) : false) || altAliases.some((value) => autoJoinAllowlist.includes(value)))) {
148
+ logVerbose(`matrix: invite ignored (not in allowlist) room=${roomId}`);
149
+ return;
150
+ }
151
+ try {
152
+ await client.joinRoom(roomId);
153
+ logVerbose(`matrix: joined room ${roomId}`);
154
+ } catch (err) {
155
+ runtime.error?.(`matrix: failed to join room ${roomId}: ${String(err)}`);
156
+ }
157
+ });
158
+ }
159
+ //#endregion
160
+ //#region extensions/matrix/src/matrix/monitor/direct.ts
161
+ const DM_CACHE_TTL_MS = 3e4;
162
+ /**
163
+ * Check if an error is a Matrix M_NOT_FOUND response (missing state event).
164
+ * The bot-sdk throws MatrixError with errcode/statusCode on the error object.
165
+ */
166
+ function isMatrixNotFoundError(err) {
167
+ if (typeof err !== "object" || err === null) return false;
168
+ const e = err;
169
+ return e.errcode === "M_NOT_FOUND" || e.statusCode === 404;
170
+ }
171
+ function createDirectRoomTracker(client, opts = {}) {
172
+ const log = opts.log ?? (() => {});
173
+ const includeMemberCountInLogs = opts.includeMemberCountInLogs === true;
174
+ let lastDmUpdateMs = 0;
175
+ let cachedSelfUserId = null;
176
+ const memberCountCache = /* @__PURE__ */ new Map();
177
+ const ensureSelfUserId = async () => {
178
+ if (cachedSelfUserId) return cachedSelfUserId;
179
+ try {
180
+ cachedSelfUserId = await client.getUserId();
181
+ } catch {
182
+ cachedSelfUserId = null;
183
+ }
184
+ return cachedSelfUserId;
185
+ };
186
+ const refreshDmCache = async () => {
187
+ const now = Date.now();
188
+ if (now - lastDmUpdateMs < DM_CACHE_TTL_MS) return;
189
+ lastDmUpdateMs = now;
190
+ try {
191
+ await client.dms.update();
192
+ } catch (err) {
193
+ log(`matrix: dm cache refresh failed (${String(err)})`);
194
+ }
195
+ };
196
+ const resolveMemberCount = async (roomId) => {
197
+ const cached = memberCountCache.get(roomId);
198
+ const now = Date.now();
199
+ if (cached && now - cached.ts < DM_CACHE_TTL_MS) return cached.count;
200
+ try {
201
+ const count = (await client.getJoinedRoomMembers(roomId)).length;
202
+ memberCountCache.set(roomId, {
203
+ count,
204
+ ts: now
205
+ });
206
+ return count;
207
+ } catch (err) {
208
+ log(`matrix: dm member count failed room=${roomId} (${String(err)})`);
209
+ return null;
210
+ }
211
+ };
212
+ const hasDirectFlag = async (roomId, userId) => {
213
+ const target = userId?.trim();
214
+ if (!target) return false;
215
+ try {
216
+ return (await client.getRoomStateEvent(roomId, "m.room.member", target))?.is_direct === true;
217
+ } catch {
218
+ return false;
219
+ }
220
+ };
221
+ return { isDirectMessage: async (params) => {
222
+ const { roomId, senderId } = params;
223
+ await refreshDmCache();
224
+ if (client.dms.isDm(roomId)) {
225
+ log(`matrix: dm detected via m.direct room=${roomId}`);
226
+ return true;
227
+ }
228
+ const selfUserId = params.selfUserId ?? await ensureSelfUserId();
229
+ if (await hasDirectFlag(roomId, senderId) || await hasDirectFlag(roomId, selfUserId ?? "")) {
230
+ log(`matrix: dm detected via member state room=${roomId}`);
231
+ return true;
232
+ }
233
+ const memberCount = await resolveMemberCount(roomId);
234
+ if (memberCount === 2) try {
235
+ if (!(await client.getRoomStateEvent(roomId, "m.room.name", ""))?.name?.trim()) {
236
+ log(`matrix: dm detected via fallback (2 members, no room name) room=${roomId}`);
237
+ return true;
238
+ }
239
+ } catch (err) {
240
+ if (isMatrixNotFoundError(err)) {
241
+ log(`matrix: dm detected via fallback (2 members, no room name) room=${roomId}`);
242
+ return true;
243
+ }
244
+ log(`matrix: dm fallback skipped (room name check failed: ${String(err)}) room=${roomId}`);
245
+ }
246
+ if (!includeMemberCountInLogs) {
247
+ log(`matrix: dm check room=${roomId} result=group`);
248
+ return false;
249
+ }
250
+ log(`matrix: dm check room=${roomId} result=group members=${memberCount ?? "unknown"}`);
251
+ return false;
252
+ } };
253
+ }
254
+ //#endregion
255
+ //#region extensions/matrix/src/matrix/monitor/types.ts
256
+ const EventType = {
257
+ RoomMessage: "m.room.message",
258
+ RoomMessageEncrypted: "m.room.encrypted",
259
+ RoomMember: "m.room.member",
260
+ Location: "m.location"
261
+ };
262
+ const RelationType$1 = {
263
+ Replace: "m.replace",
264
+ Thread: "m.thread"
265
+ };
266
+ //#endregion
267
+ //#region extensions/matrix/src/matrix/monitor/events.ts
268
+ const matrixMonitorListenerRegistry = (() => {
269
+ const registeredClients = /* @__PURE__ */ new WeakSet();
270
+ return { tryRegister(client) {
271
+ if (registeredClients.has(client)) return false;
272
+ registeredClients.add(client);
273
+ return true;
274
+ } };
275
+ })();
276
+ function createSelfUserIdResolver(client) {
277
+ let selfUserId;
278
+ let selfUserIdLookup;
279
+ return async () => {
280
+ if (selfUserId) return selfUserId;
281
+ if (!selfUserIdLookup) selfUserIdLookup = client.getUserId().then((userId) => {
282
+ selfUserId = userId;
283
+ return userId;
284
+ }).catch(() => void 0).finally(() => {
285
+ if (!selfUserId) selfUserIdLookup = void 0;
286
+ });
287
+ return await selfUserIdLookup;
288
+ };
289
+ }
290
+ function registerMatrixMonitorEvents(params) {
291
+ if (!matrixMonitorListenerRegistry.tryRegister(params.client)) {
292
+ params.logVerboseMessage("matrix: skipping duplicate listener registration for client");
293
+ return;
294
+ }
295
+ const { client, auth, logVerboseMessage, warnedEncryptedRooms, warnedCryptoMissingRooms, logger, formatNativeDependencyHint, onRoomMessage } = params;
296
+ const resolveSelfUserId = createSelfUserIdResolver(client);
297
+ client.on("room.message", (roomId, event) => {
298
+ const eventId = event?.event_id;
299
+ const senderId = event?.sender;
300
+ if (eventId && senderId) (async () => {
301
+ const currentSelfUserId = await resolveSelfUserId();
302
+ if (!currentSelfUserId || senderId === currentSelfUserId) return;
303
+ await sendReadReceiptMatrix(roomId, eventId, client).catch((err) => {
304
+ logVerboseMessage(`matrix: early read receipt failed room=${roomId} id=${eventId}: ${String(err)}`);
305
+ });
306
+ })();
307
+ onRoomMessage(roomId, event);
308
+ });
309
+ client.on("room.encrypted_event", (roomId, event) => {
310
+ const eventId = event?.event_id ?? "unknown";
311
+ logVerboseMessage(`matrix: encrypted event room=${roomId} type=${event?.type ?? "unknown"} id=${eventId}`);
312
+ });
313
+ client.on("room.decrypted_event", (roomId, event) => {
314
+ const eventId = event?.event_id ?? "unknown";
315
+ logVerboseMessage(`matrix: decrypted event room=${roomId} type=${event?.type ?? "unknown"} id=${eventId}`);
316
+ });
317
+ client.on("room.failed_decryption", async (roomId, event, error) => {
318
+ logger.warn("Failed to decrypt message", {
319
+ roomId,
320
+ eventId: event.event_id,
321
+ error: error.message
322
+ });
323
+ logVerboseMessage(`matrix: failed decrypt room=${roomId} id=${event.event_id ?? "unknown"} error=${error.message}`);
324
+ });
325
+ client.on("room.invite", (roomId, event) => {
326
+ const eventId = event?.event_id ?? "unknown";
327
+ const sender = event?.sender ?? "unknown";
328
+ const isDirect = (event?.content)?.is_direct === true;
329
+ logVerboseMessage(`matrix: invite room=${roomId} sender=${sender} direct=${String(isDirect)} id=${eventId}`);
330
+ });
331
+ client.on("room.join", (roomId, event) => {
332
+ logVerboseMessage(`matrix: join room=${roomId} id=${event?.event_id ?? "unknown"}`);
333
+ });
334
+ client.on("room.event", (roomId, event) => {
335
+ const eventType = event?.type ?? "unknown";
336
+ if (eventType === EventType.RoomMessageEncrypted) {
337
+ logVerboseMessage(`matrix: encrypted raw event room=${roomId} id=${event?.event_id ?? "unknown"}`);
338
+ if (auth.encryption !== true && !warnedEncryptedRooms.has(roomId)) {
339
+ warnedEncryptedRooms.add(roomId);
340
+ logger.warn("matrix: encrypted event received without encryption enabled; set channels.matrix.encryption=true and verify the device to decrypt", { roomId });
341
+ }
342
+ if (auth.encryption === true && !client.crypto && !warnedCryptoMissingRooms.has(roomId)) {
343
+ warnedCryptoMissingRooms.add(roomId);
344
+ const warning = `matrix: encryption enabled but crypto is unavailable; ${formatNativeDependencyHint({
345
+ packageName: "@matrix-org/matrix-sdk-crypto-nodejs",
346
+ manager: "pnpm",
347
+ downloadCommand: "node node_modules/@matrix-org/matrix-sdk-crypto-nodejs/download-lib.js"
348
+ })}`;
349
+ logger.warn(warning, { roomId });
350
+ }
351
+ return;
352
+ }
353
+ if (eventType === EventType.RoomMember) {
354
+ const membership = (event?.content)?.membership;
355
+ logVerboseMessage(`matrix: member event room=${roomId} stateKey=${event.state_key ?? ""} membership=${membership ?? "unknown"}`);
356
+ }
357
+ });
358
+ }
359
+ //#endregion
360
+ //#region extensions/matrix/src/matrix/monitor/access-policy.ts
361
+ async function resolveMatrixAccessState(params) {
362
+ const storeAllowFrom = params.isDirectMessage ? await readStoreAllowFromForDmPolicy({
363
+ provider: "matrix",
364
+ accountId: params.resolvedAccountId,
365
+ dmPolicy: params.dmPolicy,
366
+ readStore: params.readStoreForDmPolicy
367
+ }) : [];
368
+ const normalizedGroupAllowFrom = normalizeMatrixAllowList(params.groupAllowFrom);
369
+ const senderGroupPolicy = resolveSenderScopedGroupPolicy({
370
+ groupPolicy: params.groupPolicy,
371
+ groupAllowFrom: normalizedGroupAllowFrom
372
+ });
373
+ const access = resolveDmGroupAccessWithLists({
374
+ isGroup: !params.isDirectMessage,
375
+ dmPolicy: params.dmPolicy,
376
+ groupPolicy: senderGroupPolicy,
377
+ allowFrom: params.allowFrom,
378
+ groupAllowFrom: normalizedGroupAllowFrom,
379
+ storeAllowFrom,
380
+ groupAllowFromFallbackToAllowFrom: false,
381
+ isSenderAllowed: (allowFrom) => resolveMatrixAllowListMatches({
382
+ allowList: normalizeMatrixAllowList(allowFrom),
383
+ userId: params.senderId
384
+ })
385
+ });
386
+ const effectiveAllowFrom = normalizeMatrixAllowList(access.effectiveAllowFrom);
387
+ const effectiveGroupAllowFrom = normalizeMatrixAllowList(access.effectiveGroupAllowFrom);
388
+ return {
389
+ access,
390
+ effectiveAllowFrom,
391
+ effectiveGroupAllowFrom,
392
+ groupAllowConfigured: effectiveGroupAllowFrom.length > 0
393
+ };
394
+ }
395
+ async function enforceMatrixDirectMessageAccess(params) {
396
+ if (!params.dmEnabled) return false;
397
+ if (params.accessDecision === "allow") return true;
398
+ const allowMatchMeta = formatAllowlistMatchMeta(resolveMatrixAllowListMatch({
399
+ allowList: params.effectiveAllowFrom,
400
+ userId: params.senderId
401
+ }));
402
+ if (params.accessDecision === "pairing") {
403
+ await issuePairingChallenge({
404
+ channel: "matrix",
405
+ senderId: params.senderId,
406
+ senderIdLine: `Matrix user id: ${params.senderId}`,
407
+ meta: { name: params.senderName },
408
+ upsertPairingRequest: params.upsertPairingRequest,
409
+ buildReplyText: ({ code }) => [
410
+ "MoldClaw: access not configured.",
411
+ "",
412
+ `Pairing code: ${code}`,
413
+ "",
414
+ "Ask the bot owner to approve with:",
415
+ "moldclaw pairing approve matrix <code>"
416
+ ].join("\n"),
417
+ sendPairingReply: params.sendPairingReply,
418
+ onCreated: () => {
419
+ params.logVerboseMessage(`matrix pairing request sender=${params.senderId} name=${params.senderName ?? "unknown"} (${allowMatchMeta})`);
420
+ },
421
+ onReplyError: (err) => {
422
+ params.logVerboseMessage(`matrix pairing reply failed for ${params.senderId}: ${String(err)}`);
423
+ }
424
+ });
425
+ return false;
426
+ }
427
+ params.logVerboseMessage(`matrix: blocked dm sender ${params.senderId} (dmPolicy=${params.dmPolicy}, ${allowMatchMeta})`);
428
+ return false;
429
+ }
430
+ //#endregion
431
+ //#region extensions/matrix/src/matrix/monitor/inbound-body.ts
432
+ function resolveMatrixSenderUsername(senderId) {
433
+ const username = senderId.split(":")[0]?.replace(/^@/, "").trim();
434
+ return username ? username : void 0;
435
+ }
436
+ function resolveMatrixInboundSenderLabel(params) {
437
+ const senderName = params.senderName.trim();
438
+ const senderUsername = params.senderUsername ?? resolveMatrixSenderUsername(params.senderId);
439
+ if (senderName && senderUsername && senderName !== senderUsername) return `${senderName} (${senderUsername})`;
440
+ return senderName || senderUsername || params.senderId;
441
+ }
442
+ function resolveMatrixBodyForAgent(params) {
443
+ if (params.isDirectMessage) return params.bodyText;
444
+ return `${params.senderLabel}: ${params.bodyText}`;
445
+ }
446
+ //#endregion
447
+ //#region extensions/matrix/src/matrix/monitor/location.ts
448
+ function parseGeoUri(value) {
449
+ const trimmed = value.trim();
450
+ if (!trimmed) return null;
451
+ if (!trimmed.toLowerCase().startsWith("geo:")) return null;
452
+ const [coordsPart, ...paramParts] = trimmed.slice(4).split(";");
453
+ const coords = coordsPart.split(",");
454
+ if (coords.length < 2) return null;
455
+ const latitude = Number.parseFloat(coords[0] ?? "");
456
+ const longitude = Number.parseFloat(coords[1] ?? "");
457
+ if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) return null;
458
+ const params = /* @__PURE__ */ new Map();
459
+ for (const part of paramParts) {
460
+ const segment = part.trim();
461
+ if (!segment) continue;
462
+ const eqIndex = segment.indexOf("=");
463
+ const rawKey = eqIndex === -1 ? segment : segment.slice(0, eqIndex);
464
+ const rawValue = eqIndex === -1 ? "" : segment.slice(eqIndex + 1);
465
+ const key = rawKey.trim().toLowerCase();
466
+ if (!key) continue;
467
+ const valuePart = rawValue.trim();
468
+ params.set(key, valuePart ? decodeURIComponent(valuePart) : "");
469
+ }
470
+ const accuracyRaw = params.get("u");
471
+ const accuracy = accuracyRaw ? Number.parseFloat(accuracyRaw) : void 0;
472
+ return {
473
+ latitude,
474
+ longitude,
475
+ accuracy: Number.isFinite(accuracy) ? accuracy : void 0
476
+ };
477
+ }
478
+ function resolveMatrixLocation(params) {
479
+ const { eventType, content } = params;
480
+ if (!(eventType === EventType.Location || eventType === EventType.RoomMessage && content.msgtype === EventType.Location)) return null;
481
+ const geoUri = typeof content.geo_uri === "string" ? content.geo_uri.trim() : "";
482
+ if (!geoUri) return null;
483
+ const parsed = parseGeoUri(geoUri);
484
+ if (!parsed) return null;
485
+ const caption = typeof content.body === "string" ? content.body.trim() : "";
486
+ const location = {
487
+ latitude: parsed.latitude,
488
+ longitude: parsed.longitude,
489
+ accuracy: parsed.accuracy,
490
+ caption: caption || void 0,
491
+ source: "pin",
492
+ isLive: false
493
+ };
494
+ return {
495
+ text: formatLocationText(location),
496
+ context: toLocationContext(location)
497
+ };
498
+ }
499
+ //#endregion
500
+ //#region extensions/matrix/src/matrix/monitor/media.ts
501
+ async function fetchMatrixMediaBuffer(params) {
502
+ if (!params.client.mxcToHttp(params.mxcUrl)) return null;
503
+ try {
504
+ const result = await params.client.downloadContent(params.mxcUrl);
505
+ const raw = result.data ?? result;
506
+ const buffer = Buffer.isBuffer(raw) ? raw : Buffer.from(raw);
507
+ if (buffer.byteLength > params.maxBytes) throw new Error("Matrix media exceeds configured size limit");
508
+ return {
509
+ buffer,
510
+ headerType: result.contentType
511
+ };
512
+ } catch (err) {
513
+ throw new Error(`Matrix media download failed: ${String(err)}`, { cause: err });
514
+ }
515
+ }
516
+ /**
517
+ * Download and decrypt encrypted media from a Matrix room.
518
+ * Uses @vector-im/matrix-bot-sdk's decryptMedia which handles both download and decryption.
519
+ */
520
+ async function fetchEncryptedMediaBuffer(params) {
521
+ if (!params.client.crypto) throw new Error("Cannot decrypt media: crypto not enabled");
522
+ const decrypted = await params.client.crypto.decryptMedia(params.file);
523
+ if (decrypted.byteLength > params.maxBytes) throw new Error("Matrix media exceeds configured size limit");
524
+ return { buffer: decrypted };
525
+ }
526
+ async function downloadMatrixMedia(params) {
527
+ let fetched;
528
+ if (typeof params.sizeBytes === "number" && params.sizeBytes > params.maxBytes) throw new Error("Matrix media exceeds configured size limit");
529
+ if (params.file) fetched = await fetchEncryptedMediaBuffer({
530
+ client: params.client,
531
+ file: params.file,
532
+ maxBytes: params.maxBytes
533
+ });
534
+ else fetched = await fetchMatrixMediaBuffer({
535
+ client: params.client,
536
+ mxcUrl: params.mxcUrl,
537
+ maxBytes: params.maxBytes
538
+ });
539
+ if (!fetched) return null;
540
+ const headerType = fetched.headerType ?? params.contentType ?? void 0;
541
+ const saved = await getMatrixRuntime().channel.media.saveMediaBuffer(fetched.buffer, headerType, "inbound", params.maxBytes);
542
+ return {
543
+ path: saved.path,
544
+ contentType: saved.contentType,
545
+ placeholder: "[matrix media]"
546
+ };
547
+ }
548
+ //#endregion
549
+ //#region extensions/matrix/src/matrix/monitor/mentions.ts
550
+ /**
551
+ * Check if the formatted_body contains a matrix.to mention link for the given user ID.
552
+ * Many Matrix clients (including Element) use HTML links in formatted_body instead of
553
+ * or in addition to the m.mentions field.
554
+ */
555
+ function checkFormattedBodyMention(formattedBody, userId) {
556
+ if (!formattedBody || !userId) return false;
557
+ const escapedUserId = userId.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
558
+ if (new RegExp(`href=["']https://matrix\\.to/#/${escapedUserId}["']`, "i").test(formattedBody)) return true;
559
+ const encodedUserId = encodeURIComponent(userId).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
560
+ return new RegExp(`href=["']https://matrix\\.to/#/${encodedUserId}["']`, "i").test(formattedBody);
561
+ }
562
+ function resolveMentions(params) {
563
+ const mentions = params.content["m.mentions"];
564
+ const mentionedUsers = Array.isArray(mentions?.user_ids) ? new Set(mentions.user_ids) : /* @__PURE__ */ new Set();
565
+ const mentionedInFormattedBody = params.userId ? checkFormattedBodyMention(params.content.formatted_body, params.userId) : false;
566
+ return {
567
+ wasMentioned: Boolean(mentions?.room) || (params.userId ? mentionedUsers.has(params.userId) : false) || mentionedInFormattedBody || getMatrixRuntime().channel.mentions.matchesMentionPatterns(params.text ?? "", params.mentionRegexes),
568
+ hasExplicitMention: Boolean(mentions)
569
+ };
570
+ }
571
+ //#endregion
572
+ //#region extensions/matrix/src/matrix/monitor/replies.ts
573
+ async function deliverMatrixReplies(params) {
574
+ const core = getMatrixRuntime();
575
+ const cfg = core.config.loadConfig();
576
+ const tableMode = params.tableMode ?? core.channel.text.resolveMarkdownTableMode({
577
+ cfg,
578
+ channel: "matrix",
579
+ accountId: params.accountId
580
+ });
581
+ const logVerbose = (message) => {
582
+ if (core.logging.shouldLogVerbose()) params.runtime.log?.(message);
583
+ };
584
+ const chunkLimit = Math.min(params.textLimit, 4e3);
585
+ const chunkMode = core.channel.text.resolveChunkMode(cfg, "matrix", params.accountId);
586
+ let hasReplied = false;
587
+ for (const reply of params.replies) {
588
+ const hasMedia = Boolean(reply?.mediaUrl) || (reply?.mediaUrls?.length ?? 0) > 0;
589
+ if (!reply?.text && !hasMedia) {
590
+ if (reply?.audioAsVoice) {
591
+ logVerbose("matrix reply has audioAsVoice without media/text; skipping");
592
+ continue;
593
+ }
594
+ params.runtime.error?.("matrix reply missing text/media");
595
+ continue;
596
+ }
597
+ if (reply.text && isReasoningOnlyMessage(reply.text)) {
598
+ logVerbose("matrix reply is reasoning-only; skipping");
599
+ continue;
600
+ }
601
+ const replyToIdRaw = reply.replyToId?.trim();
602
+ const replyToId = params.threadId || params.replyToMode === "off" ? void 0 : replyToIdRaw;
603
+ const rawText = reply.text ?? "";
604
+ const text = core.channel.text.convertMarkdownTables(rawText, tableMode);
605
+ const mediaList = reply.mediaUrls?.length ? reply.mediaUrls : reply.mediaUrl ? [reply.mediaUrl] : [];
606
+ const shouldIncludeReply = (id) => Boolean(id) && (params.replyToMode === "all" || !hasReplied);
607
+ const replyToIdForReply = shouldIncludeReply(replyToId) ? replyToId : void 0;
608
+ if (mediaList.length === 0) {
609
+ let sentTextChunk = false;
610
+ for (const chunk of core.channel.text.chunkMarkdownTextWithMode(text, chunkLimit, chunkMode)) {
611
+ const trimmed = chunk.trim();
612
+ if (!trimmed) continue;
613
+ await sendMessageMatrix(params.roomId, trimmed, {
614
+ client: params.client,
615
+ replyToId: replyToIdForReply,
616
+ threadId: params.threadId,
617
+ accountId: params.accountId
618
+ });
619
+ sentTextChunk = true;
620
+ }
621
+ if (replyToIdForReply && !hasReplied && sentTextChunk) hasReplied = true;
622
+ continue;
623
+ }
624
+ let first = true;
625
+ for (const mediaUrl of mediaList) {
626
+ const caption = first ? text : "";
627
+ await sendMessageMatrix(params.roomId, caption, {
628
+ client: params.client,
629
+ mediaUrl,
630
+ replyToId: replyToIdForReply,
631
+ threadId: params.threadId,
632
+ audioAsVoice: reply.audioAsVoice,
633
+ accountId: params.accountId
634
+ });
635
+ first = false;
636
+ }
637
+ if (replyToIdForReply && !hasReplied) hasReplied = true;
638
+ }
639
+ }
640
+ const REASONING_PREFIX = "Reasoning:\n";
641
+ const THINKING_TAG_RE = /^\s*<\s*(?:think(?:ing)?|thought|antthinking)\b/i;
642
+ /**
643
+ * Detect messages that contain only reasoning/thinking content and no user-facing answer.
644
+ * These are emitted by the agent when `includeReasoning` is active but should not
645
+ * be forwarded to channels that do not support a dedicated reasoning lane.
646
+ */
647
+ function isReasoningOnlyMessage(text) {
648
+ const trimmed = text.trim();
649
+ if (trimmed.startsWith(REASONING_PREFIX)) return true;
650
+ if (THINKING_TAG_RE.test(trimmed)) return true;
651
+ return false;
652
+ }
653
+ //#endregion
654
+ //#region extensions/matrix/src/matrix/monitor/threads.ts
655
+ const RelationType = { Thread: "m.thread" };
656
+ function resolveMatrixThreadTarget(params) {
657
+ const { threadReplies, messageId, threadRootId } = params;
658
+ if (threadReplies === "off") return;
659
+ const isThreadRoot = params.isThreadRoot === true;
660
+ const hasInboundThread = Boolean(threadRootId && threadRootId !== messageId && !isThreadRoot);
661
+ if (threadReplies === "inbound") return hasInboundThread ? threadRootId : void 0;
662
+ if (threadReplies === "always") return threadRootId ?? messageId;
663
+ }
664
+ function resolveMatrixThreadRootId(params) {
665
+ const relates = params.content["m.relates_to"];
666
+ if (!relates || typeof relates !== "object") return;
667
+ if ("rel_type" in relates && relates.rel_type === RelationType.Thread) {
668
+ if ("event_id" in relates && typeof relates.event_id === "string") return relates.event_id;
669
+ if ("m.in_reply_to" in relates && typeof relates["m.in_reply_to"] === "object" && relates["m.in_reply_to"] && "event_id" in relates["m.in_reply_to"] && typeof relates["m.in_reply_to"].event_id === "string") return relates["m.in_reply_to"].event_id;
670
+ }
671
+ }
672
+ //#endregion
673
+ //#region extensions/matrix/src/matrix/monitor/handler.ts
674
+ function resolveMatrixBaseRouteSession(params) {
675
+ const sessionKey = params.isDirectMessage && params.baseRoute.matchedBy === "binding.peer.parent" ? params.buildAgentSessionKey({
676
+ agentId: params.baseRoute.agentId,
677
+ channel: "matrix",
678
+ accountId: params.accountId,
679
+ peer: {
680
+ kind: "channel",
681
+ id: params.roomId
682
+ }
683
+ }) : params.baseRoute.sessionKey;
684
+ return {
685
+ sessionKey,
686
+ lastRoutePolicy: sessionKey === params.baseRoute.mainSessionKey ? "main" : "session"
687
+ };
688
+ }
689
+ function shouldOverrideMatrixDmToGroup(params) {
690
+ return params.isDirectMessage === true && params.roomConfigInfo?.config !== void 0 && params.roomConfigInfo.allowed === true && params.roomConfigInfo.matchSource === "direct";
691
+ }
692
+ function createMatrixRoomMessageHandler(params) {
693
+ const { client, core, cfg, runtime, logger, logVerboseMessage, allowFrom, roomsConfig, mentionRegexes, groupPolicy, replyToMode, threadReplies, dmEnabled, dmPolicy, textLimit, mediaMaxBytes, startupMs, startupGraceMs, directTracker, getRoomInfo, getMemberDisplayName, accountId } = params;
694
+ const resolvedAccountId = accountId?.trim() || "default";
695
+ const pairing = createScopedPairingAccess({
696
+ core,
697
+ channel: "matrix",
698
+ accountId: resolvedAccountId
699
+ });
700
+ return async (roomId, event) => {
701
+ try {
702
+ const eventType = event.type;
703
+ if (eventType === EventType.RoomMessageEncrypted) return;
704
+ const isPollEvent = isPollStartType(eventType);
705
+ const locationContent = event.content;
706
+ const isLocationEvent = eventType === EventType.Location || eventType === EventType.RoomMessage && locationContent.msgtype === EventType.Location;
707
+ if (eventType !== EventType.RoomMessage && !isPollEvent && !isLocationEvent) return;
708
+ logVerboseMessage(`matrix: room.message recv room=${roomId} type=${eventType} id=${event.event_id ?? "unknown"}`);
709
+ if (event.unsigned?.redacted_because) return;
710
+ const senderId = event.sender;
711
+ if (!senderId) return;
712
+ const selfUserId = await client.getUserId();
713
+ if (senderId === selfUserId) return;
714
+ const eventTs = event.origin_server_ts;
715
+ const eventAge = event.unsigned?.age;
716
+ if (typeof eventTs === "number" && eventTs < startupMs - startupGraceMs) return;
717
+ if (typeof eventTs !== "number" && typeof eventAge === "number" && eventAge > startupGraceMs) return;
718
+ const roomInfo = await getRoomInfo(roomId);
719
+ const roomName = roomInfo.name;
720
+ const roomAliases = [roomInfo.canonicalAlias ?? "", ...roomInfo.altAliases].filter(Boolean);
721
+ let content = event.content;
722
+ if (isPollEvent) {
723
+ const pollStartContent = event.content;
724
+ const pollSummary = parsePollStartContent(pollStartContent);
725
+ if (pollSummary) {
726
+ pollSummary.eventId = event.event_id ?? "";
727
+ pollSummary.roomId = roomId;
728
+ pollSummary.sender = senderId;
729
+ pollSummary.senderName = await getMemberDisplayName(roomId, senderId);
730
+ content = {
731
+ msgtype: "m.text",
732
+ body: formatPollAsText(pollSummary)
733
+ };
734
+ } else return;
735
+ }
736
+ const locationPayload = resolveMatrixLocation({
737
+ eventType,
738
+ content
739
+ });
740
+ const relates = content["m.relates_to"];
741
+ if (relates && "rel_type" in relates) {
742
+ if (relates.rel_type === RelationType$1.Replace) return;
743
+ }
744
+ let isDirectMessage = await directTracker.isDirectMessage({
745
+ roomId,
746
+ senderId,
747
+ selfUserId
748
+ });
749
+ const roomConfigInfo = resolveMatrixRoomConfig({
750
+ rooms: roomsConfig,
751
+ roomId,
752
+ aliases: roomAliases,
753
+ name: roomName
754
+ });
755
+ if (shouldOverrideMatrixDmToGroup({
756
+ isDirectMessage,
757
+ roomConfigInfo
758
+ })) {
759
+ logVerboseMessage(`matrix: overriding DM to group for configured room=${roomId} (${roomConfigInfo.matchKey})`);
760
+ isDirectMessage = false;
761
+ }
762
+ const isRoom = !isDirectMessage;
763
+ if (isRoom && groupPolicy === "disabled") return;
764
+ const roomConfig = isRoom ? roomConfigInfo?.config : void 0;
765
+ const roomMatchMeta = roomConfigInfo ? `matchKey=${roomConfigInfo.matchKey ?? "none"} matchSource=${roomConfigInfo.matchSource ?? "none"}` : "matchKey=none matchSource=none";
766
+ if (isRoom) {
767
+ const routeAccess = evaluateGroupRouteAccessForPolicy({
768
+ groupPolicy,
769
+ routeAllowlistConfigured: Boolean(roomConfigInfo?.allowlistConfigured),
770
+ routeMatched: Boolean(roomConfig),
771
+ routeEnabled: roomConfigInfo?.allowed ?? true
772
+ });
773
+ if (!routeAccess.allowed) {
774
+ if (routeAccess.reason === "route_disabled") logVerboseMessage(`matrix: room disabled room=${roomId} (${roomMatchMeta})`);
775
+ else if (routeAccess.reason === "empty_allowlist") logVerboseMessage(`matrix: drop room message (no allowlist, ${roomMatchMeta})`);
776
+ else if (routeAccess.reason === "route_not_allowlisted") logVerboseMessage(`matrix: drop room message (not in allowlist, ${roomMatchMeta})`);
777
+ return;
778
+ }
779
+ }
780
+ const senderName = await getMemberDisplayName(roomId, senderId);
781
+ const senderUsername = resolveMatrixSenderUsername(senderId);
782
+ const senderLabel = resolveMatrixInboundSenderLabel({
783
+ senderName,
784
+ senderId,
785
+ senderUsername
786
+ });
787
+ const groupAllowFrom = cfg.channels?.matrix?.groupAllowFrom ?? [];
788
+ const { access, effectiveAllowFrom, effectiveGroupAllowFrom, groupAllowConfigured } = await resolveMatrixAccessState({
789
+ isDirectMessage,
790
+ resolvedAccountId,
791
+ dmPolicy,
792
+ groupPolicy,
793
+ allowFrom,
794
+ groupAllowFrom,
795
+ senderId,
796
+ readStoreForDmPolicy: pairing.readStoreForDmPolicy
797
+ });
798
+ if (isDirectMessage) {
799
+ if (!await enforceMatrixDirectMessageAccess({
800
+ dmEnabled,
801
+ dmPolicy,
802
+ accessDecision: access.decision,
803
+ senderId,
804
+ senderName,
805
+ effectiveAllowFrom,
806
+ upsertPairingRequest: pairing.upsertPairingRequest,
807
+ sendPairingReply: async (text) => {
808
+ await sendMessageMatrix(`room:${roomId}`, text, { client });
809
+ },
810
+ logVerboseMessage
811
+ })) return;
812
+ }
813
+ const roomUsers = roomConfig?.users ?? [];
814
+ if (isRoom && roomUsers.length > 0) {
815
+ const userMatch = resolveMatrixAllowListMatch({
816
+ allowList: normalizeMatrixAllowList(roomUsers),
817
+ userId: senderId
818
+ });
819
+ if (!userMatch.allowed) {
820
+ logVerboseMessage(`matrix: blocked sender ${senderId} (room users allowlist, ${roomMatchMeta}, ${formatAllowlistMatchMeta(userMatch)})`);
821
+ return;
822
+ }
823
+ }
824
+ if (isRoom && roomUsers.length === 0 && groupAllowConfigured && access.decision !== "allow") {
825
+ const groupAllowMatch = resolveMatrixAllowListMatch({
826
+ allowList: effectiveGroupAllowFrom,
827
+ userId: senderId
828
+ });
829
+ if (!groupAllowMatch.allowed) {
830
+ logVerboseMessage(`matrix: blocked sender ${senderId} (groupAllowFrom, ${roomMatchMeta}, ${formatAllowlistMatchMeta(groupAllowMatch)})`);
831
+ return;
832
+ }
833
+ }
834
+ if (isRoom) logVerboseMessage(`matrix: allow room ${roomId} (${roomMatchMeta})`);
835
+ const rawBody = locationPayload?.text ?? (typeof content.body === "string" ? content.body.trim() : "");
836
+ let media = null;
837
+ const contentUrl = "url" in content && typeof content.url === "string" ? content.url : void 0;
838
+ const contentFile = "file" in content && content.file && typeof content.file === "object" ? content.file : void 0;
839
+ const mediaUrl = contentUrl ?? contentFile?.url;
840
+ if (!rawBody && !mediaUrl) return;
841
+ const contentInfo = "info" in content && content.info && typeof content.info === "object" ? content.info : void 0;
842
+ const contentType = contentInfo?.mimetype;
843
+ const contentSize = typeof contentInfo?.size === "number" ? contentInfo.size : void 0;
844
+ if (mediaUrl?.startsWith("mxc://")) try {
845
+ media = await downloadMatrixMedia({
846
+ client,
847
+ mxcUrl: mediaUrl,
848
+ contentType,
849
+ sizeBytes: contentSize,
850
+ maxBytes: mediaMaxBytes,
851
+ file: contentFile
852
+ });
853
+ } catch (err) {
854
+ logVerboseMessage(`matrix: media download failed: ${String(err)}`);
855
+ }
856
+ const bodyText = rawBody || media?.placeholder || "";
857
+ if (!bodyText) return;
858
+ const { wasMentioned, hasExplicitMention } = resolveMentions({
859
+ content,
860
+ userId: selfUserId,
861
+ text: bodyText,
862
+ mentionRegexes
863
+ });
864
+ const allowTextCommands = core.channel.commands.shouldHandleTextCommands({
865
+ cfg,
866
+ surface: "matrix"
867
+ });
868
+ const useAccessGroups = cfg.commands?.useAccessGroups !== false;
869
+ const senderAllowedForCommands = resolveMatrixAllowListMatches({
870
+ allowList: effectiveAllowFrom,
871
+ userId: senderId
872
+ });
873
+ const senderAllowedForGroup = groupAllowConfigured ? resolveMatrixAllowListMatches({
874
+ allowList: effectiveGroupAllowFrom,
875
+ userId: senderId
876
+ }) : false;
877
+ const senderAllowedForRoomUsers = isRoom && roomUsers.length > 0 ? resolveMatrixAllowListMatches({
878
+ allowList: normalizeMatrixAllowList(roomUsers),
879
+ userId: senderId
880
+ }) : false;
881
+ const hasControlCommandInMessage = core.channel.text.hasControlCommand(bodyText, cfg);
882
+ const commandGate = resolveControlCommandGate({
883
+ useAccessGroups,
884
+ authorizers: [
885
+ {
886
+ configured: effectiveAllowFrom.length > 0,
887
+ allowed: senderAllowedForCommands
888
+ },
889
+ {
890
+ configured: roomUsers.length > 0,
891
+ allowed: senderAllowedForRoomUsers
892
+ },
893
+ {
894
+ configured: groupAllowConfigured,
895
+ allowed: senderAllowedForGroup
896
+ }
897
+ ],
898
+ allowTextCommands,
899
+ hasControlCommand: hasControlCommandInMessage
900
+ });
901
+ const commandAuthorized = commandGate.commandAuthorized;
902
+ if (isRoom && commandGate.shouldBlock) {
903
+ logInboundDrop({
904
+ log: logVerboseMessage,
905
+ channel: "matrix",
906
+ reason: "control command (unauthorized)",
907
+ target: senderId
908
+ });
909
+ return;
910
+ }
911
+ const shouldRequireMention = isRoom ? roomConfig?.autoReply === true ? false : roomConfig?.autoReply === false ? true : typeof roomConfig?.requireMention === "boolean" ? roomConfig?.requireMention : true : false;
912
+ const shouldBypassMention = allowTextCommands && isRoom && shouldRequireMention && !wasMentioned && !hasExplicitMention && commandAuthorized && hasControlCommandInMessage;
913
+ const canDetectMention = mentionRegexes.length > 0 || hasExplicitMention;
914
+ if (isRoom && shouldRequireMention && !wasMentioned && !shouldBypassMention) {
915
+ logger.info("skipping room message", {
916
+ roomId,
917
+ reason: "no-mention"
918
+ });
919
+ return;
920
+ }
921
+ const messageId = event.event_id ?? "";
922
+ const replyToEventId = content["m.relates_to"]?.["m.in_reply_to"]?.event_id;
923
+ const threadRootId = resolveMatrixThreadRootId({
924
+ event,
925
+ content
926
+ });
927
+ const threadTarget = resolveMatrixThreadTarget({
928
+ threadReplies,
929
+ messageId,
930
+ threadRootId,
931
+ isThreadRoot: false
932
+ });
933
+ const baseRoute = core.channel.routing.resolveAgentRoute({
934
+ cfg,
935
+ channel: "matrix",
936
+ accountId,
937
+ peer: {
938
+ kind: isDirectMessage ? "direct" : "channel",
939
+ id: isDirectMessage ? senderId : roomId
940
+ },
941
+ parentPeer: isDirectMessage ? {
942
+ kind: "channel",
943
+ id: roomId
944
+ } : void 0
945
+ });
946
+ const baseRouteSession = resolveMatrixBaseRouteSession({
947
+ buildAgentSessionKey: core.channel.routing.buildAgentSessionKey,
948
+ baseRoute,
949
+ isDirectMessage,
950
+ roomId,
951
+ accountId
952
+ });
953
+ const route = {
954
+ ...baseRoute,
955
+ lastRoutePolicy: baseRouteSession.lastRoutePolicy,
956
+ sessionKey: threadRootId ? `${baseRouteSession.sessionKey}:thread:${threadRootId}` : baseRouteSession.sessionKey
957
+ };
958
+ let threadStarterBody;
959
+ let threadLabel;
960
+ let parentSessionKey;
961
+ if (threadRootId) {
962
+ if (core.channel.session.readSessionUpdatedAt({
963
+ storePath: core.channel.session.resolveStorePath(cfg.session?.store, { agentId: baseRoute.agentId }),
964
+ sessionKey: route.sessionKey
965
+ }) === void 0) try {
966
+ const rootEvent = await fetchEventSummary(client, roomId, threadRootId);
967
+ if (rootEvent?.body) {
968
+ const rootSenderName = rootEvent.sender ? await getMemberDisplayName(roomId, rootEvent.sender) : void 0;
969
+ threadStarterBody = core.channel.reply.formatAgentEnvelope({
970
+ channel: "Matrix",
971
+ from: rootSenderName ?? rootEvent.sender ?? "Unknown",
972
+ timestamp: rootEvent.timestamp,
973
+ envelope: core.channel.reply.resolveEnvelopeFormatOptions(cfg),
974
+ body: rootEvent.body
975
+ });
976
+ threadLabel = `Matrix thread in ${roomName ?? roomId}`;
977
+ parentSessionKey = baseRoute.sessionKey;
978
+ }
979
+ } catch (err) {
980
+ logVerboseMessage(`matrix: failed to fetch thread root ${threadRootId}: ${String(err)}`);
981
+ }
982
+ }
983
+ const envelopeFrom = isDirectMessage ? senderName : roomName ?? roomId;
984
+ const textWithId = threadRootId ? `${bodyText}\n[matrix event id: ${messageId} room: ${roomId} thread: ${threadRootId}]` : `${bodyText}\n[matrix event id: ${messageId} room: ${roomId}]`;
985
+ const { storePath, envelopeOptions, previousTimestamp } = resolveInboundSessionEnvelopeContext({
986
+ cfg,
987
+ agentId: route.agentId,
988
+ sessionKey: route.sessionKey
989
+ });
990
+ const body = core.channel.reply.formatInboundEnvelope({
991
+ channel: "Matrix",
992
+ from: envelopeFrom,
993
+ timestamp: eventTs ?? void 0,
994
+ previousTimestamp,
995
+ envelope: envelopeOptions,
996
+ body: textWithId,
997
+ chatType: isDirectMessage ? "direct" : "channel",
998
+ senderLabel
999
+ });
1000
+ const groupSystemPrompt = roomConfig?.systemPrompt?.trim() || void 0;
1001
+ const ctxPayload = core.channel.reply.finalizeInboundContext({
1002
+ Body: body,
1003
+ BodyForAgent: resolveMatrixBodyForAgent({
1004
+ isDirectMessage,
1005
+ bodyText,
1006
+ senderLabel
1007
+ }),
1008
+ RawBody: bodyText,
1009
+ CommandBody: bodyText,
1010
+ From: isDirectMessage ? `matrix:${senderId}` : `matrix:channel:${roomId}`,
1011
+ To: `room:${roomId}`,
1012
+ SessionKey: route.sessionKey,
1013
+ AccountId: route.accountId,
1014
+ ChatType: threadRootId ? "thread" : isDirectMessage ? "direct" : "channel",
1015
+ ConversationLabel: envelopeFrom,
1016
+ SenderName: senderName,
1017
+ SenderId: senderId,
1018
+ SenderUsername: senderUsername,
1019
+ GroupSubject: isRoom ? roomName ?? roomId : void 0,
1020
+ GroupChannel: isRoom ? roomInfo.canonicalAlias ?? roomId : void 0,
1021
+ GroupSystemPrompt: isRoom ? groupSystemPrompt : void 0,
1022
+ Provider: "matrix",
1023
+ Surface: "matrix",
1024
+ WasMentioned: isRoom ? wasMentioned : void 0,
1025
+ MessageSid: messageId,
1026
+ ReplyToId: threadTarget ? void 0 : replyToEventId ?? void 0,
1027
+ MessageThreadId: threadTarget,
1028
+ Timestamp: eventTs ?? void 0,
1029
+ MediaPath: media?.path,
1030
+ MediaType: media?.contentType,
1031
+ MediaUrl: media?.path,
1032
+ ...locationPayload?.context,
1033
+ CommandAuthorized: commandAuthorized,
1034
+ CommandSource: "text",
1035
+ OriginatingChannel: "matrix",
1036
+ OriginatingTo: `room:${roomId}`,
1037
+ ThreadStarterBody: threadStarterBody,
1038
+ ThreadLabel: threadLabel,
1039
+ ParentSessionKey: parentSessionKey
1040
+ });
1041
+ await core.channel.session.recordInboundSession({
1042
+ storePath,
1043
+ sessionKey: ctxPayload.SessionKey ?? route.sessionKey,
1044
+ ctx: ctxPayload,
1045
+ updateLastRoute: isDirectMessage ? {
1046
+ sessionKey: route.mainSessionKey,
1047
+ channel: "matrix",
1048
+ to: `room:${roomId}`,
1049
+ accountId: route.accountId
1050
+ } : void 0,
1051
+ onRecordError: (err) => {
1052
+ logger.warn("failed updating session meta", {
1053
+ error: String(err),
1054
+ storePath,
1055
+ sessionKey: ctxPayload.SessionKey ?? route.sessionKey
1056
+ });
1057
+ }
1058
+ });
1059
+ logVerboseMessage(`matrix inbound: room=${roomId} from=${senderId} preview="${bodyText.slice(0, 200).replace(/\n/g, "\\n")}"`);
1060
+ const ackReaction = (cfg.messages?.ackReaction ?? "").trim();
1061
+ const ackScope = cfg.messages?.ackReactionScope ?? "group-mentions";
1062
+ const shouldAckReaction = () => Boolean(ackReaction && core.channel.reactions.shouldAckReaction({
1063
+ scope: ackScope,
1064
+ isDirect: isDirectMessage,
1065
+ isGroup: isRoom,
1066
+ isMentionableGroup: isRoom,
1067
+ requireMention: Boolean(shouldRequireMention),
1068
+ canDetectMention,
1069
+ effectiveWasMentioned: wasMentioned || shouldBypassMention,
1070
+ shouldBypassMention
1071
+ }));
1072
+ if (shouldAckReaction() && messageId) reactMatrixMessage(roomId, messageId, ackReaction, client).catch((err) => {
1073
+ logVerboseMessage(`matrix react failed for room ${roomId}: ${String(err)}`);
1074
+ });
1075
+ const replyTarget = ctxPayload.To;
1076
+ if (!replyTarget) {
1077
+ runtime.error?.("matrix: missing reply target");
1078
+ return;
1079
+ }
1080
+ let didSendReply = false;
1081
+ const tableMode = core.channel.text.resolveMarkdownTableMode({
1082
+ cfg,
1083
+ channel: "matrix",
1084
+ accountId: route.accountId
1085
+ });
1086
+ const { onModelSelected, ...prefixOptions } = createReplyPrefixOptions({
1087
+ cfg,
1088
+ agentId: route.agentId,
1089
+ channel: "matrix",
1090
+ accountId: route.accountId
1091
+ });
1092
+ const humanDelay = core.channel.reply.resolveHumanDelayConfig(cfg, route.agentId);
1093
+ const typingCallbacks = createTypingCallbacks({
1094
+ start: () => sendTypingMatrix(roomId, true, void 0, client),
1095
+ stop: () => sendTypingMatrix(roomId, false, void 0, client),
1096
+ onStartError: (err) => {
1097
+ logTypingFailure({
1098
+ log: logVerboseMessage,
1099
+ channel: "matrix",
1100
+ action: "start",
1101
+ target: roomId,
1102
+ error: err
1103
+ });
1104
+ },
1105
+ onStopError: (err) => {
1106
+ logTypingFailure({
1107
+ log: logVerboseMessage,
1108
+ channel: "matrix",
1109
+ action: "stop",
1110
+ target: roomId,
1111
+ error: err
1112
+ });
1113
+ }
1114
+ });
1115
+ const { dispatcher, replyOptions, markDispatchIdle } = core.channel.reply.createReplyDispatcherWithTyping({
1116
+ ...prefixOptions,
1117
+ humanDelay,
1118
+ typingCallbacks,
1119
+ deliver: async (payload) => {
1120
+ await deliverMatrixReplies({
1121
+ replies: [payload],
1122
+ roomId,
1123
+ client,
1124
+ runtime,
1125
+ textLimit,
1126
+ replyToMode,
1127
+ threadId: threadTarget,
1128
+ accountId: route.accountId,
1129
+ tableMode
1130
+ });
1131
+ didSendReply = true;
1132
+ },
1133
+ onError: (err, info) => {
1134
+ runtime.error?.(`matrix ${info.kind} reply failed: ${String(err)}`);
1135
+ }
1136
+ });
1137
+ const { queuedFinal, counts } = await dispatchReplyFromConfigWithSettledDispatcher({
1138
+ cfg,
1139
+ ctxPayload,
1140
+ dispatcher,
1141
+ onSettled: () => {
1142
+ markDispatchIdle();
1143
+ },
1144
+ replyOptions: {
1145
+ ...replyOptions,
1146
+ skillFilter: roomConfig?.skills,
1147
+ onModelSelected
1148
+ }
1149
+ });
1150
+ if (!queuedFinal) return;
1151
+ didSendReply = true;
1152
+ const finalCount = counts.final;
1153
+ logVerboseMessage(`matrix: delivered ${finalCount} reply${finalCount === 1 ? "" : "ies"} to ${replyTarget}`);
1154
+ if (didSendReply) {
1155
+ const previewText = bodyText.replace(/\s+/g, " ").slice(0, 160);
1156
+ core.system.enqueueSystemEvent(`Matrix message from ${senderName}: ${previewText}`, {
1157
+ sessionKey: route.sessionKey,
1158
+ contextKey: `matrix:message:${roomId}:${messageId || "unknown"}`
1159
+ });
1160
+ }
1161
+ } catch (err) {
1162
+ runtime.error?.(`matrix handler failed: ${String(err)}`);
1163
+ }
1164
+ };
1165
+ }
1166
+ //#endregion
1167
+ //#region extensions/matrix/src/matrix/monitor/room-info.ts
1168
+ function createMatrixRoomInfoResolver(client) {
1169
+ const roomInfoCache = /* @__PURE__ */ new Map();
1170
+ const getRoomInfo = async (roomId) => {
1171
+ const cached = roomInfoCache.get(roomId);
1172
+ if (cached) return cached;
1173
+ let name;
1174
+ let canonicalAlias;
1175
+ let altAliases = [];
1176
+ try {
1177
+ name = (await client.getRoomStateEvent(roomId, "m.room.name", "").catch(() => null))?.name;
1178
+ } catch {}
1179
+ try {
1180
+ const aliasState = await client.getRoomStateEvent(roomId, "m.room.canonical_alias", "").catch(() => null);
1181
+ canonicalAlias = aliasState?.alias;
1182
+ altAliases = aliasState?.alt_aliases ?? [];
1183
+ } catch {}
1184
+ const info = {
1185
+ name,
1186
+ canonicalAlias,
1187
+ altAliases
1188
+ };
1189
+ roomInfoCache.set(roomId, info);
1190
+ return info;
1191
+ };
1192
+ const getMemberDisplayName = async (roomId, userId) => {
1193
+ try {
1194
+ return (await client.getRoomStateEvent(roomId, "m.room.member", userId).catch(() => null))?.displayname ?? userId;
1195
+ } catch {
1196
+ return userId;
1197
+ }
1198
+ };
1199
+ return {
1200
+ getRoomInfo,
1201
+ getMemberDisplayName
1202
+ };
1203
+ }
1204
+ //#endregion
1205
+ //#region extensions/matrix/src/matrix/monitor/index.ts
1206
+ const DEFAULT_MEDIA_MAX_MB = 20;
1207
+ const DEFAULT_STARTUP_GRACE_MS = 5e3;
1208
+ function isConfiguredMatrixRoomEntry(entry) {
1209
+ return entry.startsWith("!") || entry.startsWith("#") && entry.includes(":");
1210
+ }
1211
+ function normalizeMatrixUserEntry(raw) {
1212
+ return raw.replace(/^matrix:/i, "").replace(/^user:/i, "").trim();
1213
+ }
1214
+ function normalizeMatrixRoomEntry(raw) {
1215
+ return raw.replace(/^matrix:/i, "").replace(/^(room|channel):/i, "").trim();
1216
+ }
1217
+ function isMatrixUserId(value) {
1218
+ return value.startsWith("@") && value.includes(":");
1219
+ }
1220
+ async function resolveMatrixUserAllowlist(params) {
1221
+ let allowList = params.list ?? [];
1222
+ if (allowList.length === 0) return allowList.map(String);
1223
+ const entries = allowList.map((entry) => normalizeMatrixUserEntry(String(entry))).filter((entry) => entry && entry !== "*");
1224
+ if (entries.length === 0) return allowList.map(String);
1225
+ const mapping = [];
1226
+ const unresolved = [];
1227
+ const additions = [];
1228
+ const pending = [];
1229
+ for (const entry of entries) {
1230
+ if (isMatrixUserId(entry)) {
1231
+ additions.push(normalizeMatrixUserId(entry));
1232
+ continue;
1233
+ }
1234
+ pending.push(entry);
1235
+ }
1236
+ if (pending.length > 0) {
1237
+ const resolved = await resolveMatrixTargets({
1238
+ cfg: params.cfg,
1239
+ inputs: pending,
1240
+ kind: "user",
1241
+ runtime: params.runtime
1242
+ });
1243
+ for (const entry of resolved) if (entry.resolved && entry.id) {
1244
+ const normalizedId = normalizeMatrixUserId(entry.id);
1245
+ additions.push(normalizedId);
1246
+ mapping.push(`${entry.input}→${normalizedId}`);
1247
+ } else unresolved.push(entry.input);
1248
+ }
1249
+ allowList = mergeAllowlist({
1250
+ existing: allowList,
1251
+ additions
1252
+ });
1253
+ summarizeMapping(params.label, mapping, unresolved, params.runtime);
1254
+ if (unresolved.length > 0) params.runtime.log?.(`${params.label} entries must be full Matrix IDs (example: @user:server). Unresolved entries are ignored.`);
1255
+ return allowList.map(String);
1256
+ }
1257
+ async function resolveMatrixRoomsConfig(params) {
1258
+ let roomsConfig = params.roomsConfig;
1259
+ if (!roomsConfig || Object.keys(roomsConfig).length === 0) return roomsConfig;
1260
+ const mapping = [];
1261
+ const unresolved = [];
1262
+ const nextRooms = {};
1263
+ if (roomsConfig["*"]) nextRooms["*"] = roomsConfig["*"];
1264
+ const pending = [];
1265
+ for (const [entry, roomConfig] of Object.entries(roomsConfig)) {
1266
+ if (entry === "*") continue;
1267
+ const trimmed = entry.trim();
1268
+ if (!trimmed) continue;
1269
+ const cleaned = normalizeMatrixRoomEntry(trimmed);
1270
+ if (isConfiguredMatrixRoomEntry(cleaned)) {
1271
+ if (!nextRooms[cleaned]) nextRooms[cleaned] = roomConfig;
1272
+ if (cleaned !== entry) mapping.push(`${entry}→${cleaned}`);
1273
+ continue;
1274
+ }
1275
+ pending.push({
1276
+ input: entry,
1277
+ query: trimmed,
1278
+ config: roomConfig
1279
+ });
1280
+ }
1281
+ if (pending.length > 0) (await resolveMatrixTargets({
1282
+ cfg: params.cfg,
1283
+ inputs: pending.map((entry) => entry.query),
1284
+ kind: "group",
1285
+ runtime: params.runtime
1286
+ })).forEach((entry, index) => {
1287
+ const source = pending[index];
1288
+ if (!source) return;
1289
+ if (entry.resolved && entry.id) {
1290
+ if (!nextRooms[entry.id]) nextRooms[entry.id] = source.config;
1291
+ mapping.push(`${source.input}→${entry.id}`);
1292
+ } else unresolved.push(source.input);
1293
+ });
1294
+ roomsConfig = nextRooms;
1295
+ summarizeMapping("matrix rooms", mapping, unresolved, params.runtime);
1296
+ if (unresolved.length > 0) params.runtime.log?.("matrix rooms must be room IDs or aliases (example: !room:server or #alias:server). Unresolved entries are ignored.");
1297
+ if (Object.keys(roomsConfig).length === 0) return roomsConfig;
1298
+ const nextRoomsWithUsers = { ...roomsConfig };
1299
+ for (const [roomKey, roomConfig] of Object.entries(roomsConfig)) {
1300
+ const users = roomConfig?.users ?? [];
1301
+ if (users.length === 0) continue;
1302
+ const resolvedUsers = await resolveMatrixUserAllowlist({
1303
+ cfg: params.cfg,
1304
+ runtime: params.runtime,
1305
+ label: `matrix room users (${roomKey})`,
1306
+ list: users
1307
+ });
1308
+ if (resolvedUsers !== users) nextRoomsWithUsers[roomKey] = {
1309
+ ...roomConfig,
1310
+ users: resolvedUsers
1311
+ };
1312
+ }
1313
+ return nextRoomsWithUsers;
1314
+ }
1315
+ async function resolveMatrixMonitorConfig(params) {
1316
+ return {
1317
+ allowFrom: await resolveMatrixUserAllowlist({
1318
+ cfg: params.cfg,
1319
+ runtime: params.runtime,
1320
+ label: "matrix dm allowlist",
1321
+ list: params.accountConfig.dm?.allowFrom ?? []
1322
+ }),
1323
+ groupAllowFrom: await resolveMatrixUserAllowlist({
1324
+ cfg: params.cfg,
1325
+ runtime: params.runtime,
1326
+ label: "matrix group allowlist",
1327
+ list: params.accountConfig.groupAllowFrom ?? []
1328
+ }),
1329
+ roomsConfig: await resolveMatrixRoomsConfig({
1330
+ cfg: params.cfg,
1331
+ runtime: params.runtime,
1332
+ roomsConfig: params.accountConfig.groups ?? params.accountConfig.rooms
1333
+ })
1334
+ };
1335
+ }
1336
+ async function monitorMatrixProvider(opts = {}) {
1337
+ if (isBunRuntime()) throw new Error("Matrix provider requires Node (bun runtime not supported)");
1338
+ const core = getMatrixRuntime();
1339
+ let cfg = core.config.loadConfig();
1340
+ if (cfg.channels?.matrix?.enabled === false) return;
1341
+ const logger = core.logging.getChildLogger({ module: "matrix-auto-reply" });
1342
+ const runtime = resolveRuntimeEnv({
1343
+ runtime: opts.runtime,
1344
+ logger
1345
+ });
1346
+ const logVerboseMessage = (message) => {
1347
+ if (!core.logging.shouldLogVerbose()) return;
1348
+ logger.debug?.(message);
1349
+ };
1350
+ const account = resolveMatrixAccount({
1351
+ cfg,
1352
+ accountId: opts.accountId
1353
+ });
1354
+ const accountConfig = account.config;
1355
+ const allowlistOnly = accountConfig.allowlistOnly === true;
1356
+ const { allowFrom, groupAllowFrom, roomsConfig } = await resolveMatrixMonitorConfig({
1357
+ cfg,
1358
+ runtime,
1359
+ accountConfig
1360
+ });
1361
+ cfg = {
1362
+ ...cfg,
1363
+ channels: {
1364
+ ...cfg.channels,
1365
+ matrix: {
1366
+ ...cfg.channels?.matrix,
1367
+ dm: {
1368
+ ...cfg.channels?.matrix?.dm,
1369
+ allowFrom
1370
+ },
1371
+ groupAllowFrom,
1372
+ ...roomsConfig ? { groups: roomsConfig } : {}
1373
+ }
1374
+ }
1375
+ };
1376
+ const auth = await resolveMatrixAuth({
1377
+ cfg,
1378
+ accountId: opts.accountId
1379
+ });
1380
+ const resolvedInitialSyncLimit = typeof opts.initialSyncLimit === "number" ? Math.max(0, Math.floor(opts.initialSyncLimit)) : auth.initialSyncLimit;
1381
+ const authWithLimit = resolvedInitialSyncLimit === auth.initialSyncLimit ? auth : {
1382
+ ...auth,
1383
+ initialSyncLimit: resolvedInitialSyncLimit
1384
+ };
1385
+ const client = await resolveSharedMatrixClient({
1386
+ cfg,
1387
+ auth: authWithLimit,
1388
+ startClient: false,
1389
+ accountId: opts.accountId
1390
+ });
1391
+ setActiveMatrixClient(client, opts.accountId);
1392
+ const mentionRegexes = core.channel.mentions.buildMentionRegexes(cfg);
1393
+ const defaultGroupPolicy = resolveDefaultGroupPolicy(cfg);
1394
+ const { groupPolicy: groupPolicyRaw, providerMissingFallbackApplied } = resolveAllowlistProviderRuntimeGroupPolicy({
1395
+ providerConfigPresent: cfg.channels?.matrix !== void 0,
1396
+ groupPolicy: accountConfig.groupPolicy,
1397
+ defaultGroupPolicy
1398
+ });
1399
+ warnMissingProviderGroupPolicyFallbackOnce({
1400
+ providerMissingFallbackApplied,
1401
+ providerKey: "matrix",
1402
+ accountId: account.accountId,
1403
+ blockedLabel: GROUP_POLICY_BLOCKED_LABEL.room,
1404
+ log: (message) => logVerboseMessage(message)
1405
+ });
1406
+ const groupPolicy = allowlistOnly && groupPolicyRaw === "open" ? "allowlist" : groupPolicyRaw;
1407
+ const replyToMode = opts.replyToMode ?? accountConfig.replyToMode ?? "off";
1408
+ const threadReplies = accountConfig.threadReplies ?? "inbound";
1409
+ const dmConfig = accountConfig.dm;
1410
+ const dmEnabled = dmConfig?.enabled ?? true;
1411
+ const dmPolicyRaw = dmConfig?.policy ?? "pairing";
1412
+ const dmPolicy = allowlistOnly && dmPolicyRaw !== "disabled" ? "allowlist" : dmPolicyRaw;
1413
+ const textLimit = core.channel.text.resolveTextChunkLimit(cfg, "matrix");
1414
+ const mediaMaxMb = opts.mediaMaxMb ?? accountConfig.mediaMaxMb ?? DEFAULT_MEDIA_MAX_MB;
1415
+ const mediaMaxBytes = Math.max(1, mediaMaxMb) * 1024 * 1024;
1416
+ const startupMs = Date.now();
1417
+ const startupGraceMs = DEFAULT_STARTUP_GRACE_MS;
1418
+ const directTracker = createDirectRoomTracker(client, {
1419
+ log: logVerboseMessage,
1420
+ includeMemberCountInLogs: core.logging.shouldLogVerbose()
1421
+ });
1422
+ registerMatrixAutoJoin({
1423
+ client,
1424
+ cfg,
1425
+ runtime
1426
+ });
1427
+ const warnedEncryptedRooms = /* @__PURE__ */ new Set();
1428
+ const warnedCryptoMissingRooms = /* @__PURE__ */ new Set();
1429
+ const { getRoomInfo, getMemberDisplayName } = createMatrixRoomInfoResolver(client);
1430
+ const handleRoomMessage = createMatrixRoomMessageHandler({
1431
+ client,
1432
+ core,
1433
+ cfg,
1434
+ runtime,
1435
+ logger,
1436
+ logVerboseMessage,
1437
+ allowFrom,
1438
+ roomsConfig,
1439
+ mentionRegexes,
1440
+ groupPolicy,
1441
+ replyToMode,
1442
+ threadReplies,
1443
+ dmEnabled,
1444
+ dmPolicy,
1445
+ textLimit,
1446
+ mediaMaxBytes,
1447
+ startupMs,
1448
+ startupGraceMs,
1449
+ directTracker,
1450
+ getRoomInfo,
1451
+ getMemberDisplayName,
1452
+ accountId: opts.accountId
1453
+ });
1454
+ registerMatrixMonitorEvents({
1455
+ client,
1456
+ auth,
1457
+ logVerboseMessage,
1458
+ warnedEncryptedRooms,
1459
+ warnedCryptoMissingRooms,
1460
+ logger,
1461
+ formatNativeDependencyHint: core.system.formatNativeDependencyHint,
1462
+ onRoomMessage: handleRoomMessage
1463
+ });
1464
+ logVerboseMessage("matrix: starting client");
1465
+ await resolveSharedMatrixClient({
1466
+ cfg,
1467
+ auth: authWithLimit,
1468
+ accountId: opts.accountId
1469
+ });
1470
+ logVerboseMessage("matrix: client started");
1471
+ logger.info(`matrix: logged in as ${auth.userId}`);
1472
+ if (auth.encryption && client.crypto) try {
1473
+ if (await client.crypto.requestOwnUserVerification?.()) logger.info("matrix: device verification requested - please verify in another client");
1474
+ } catch (err) {
1475
+ logger.debug?.("Device verification request failed (may already be verified)", { error: String(err) });
1476
+ }
1477
+ await new Promise((resolve) => {
1478
+ const onAbort = () => {
1479
+ try {
1480
+ logVerboseMessage("matrix: stopping client");
1481
+ stopSharedClientForAccount(auth, opts.accountId);
1482
+ } finally {
1483
+ setActiveMatrixClient(null, opts.accountId);
1484
+ resolve();
1485
+ }
1486
+ };
1487
+ if (opts.abortSignal?.aborted) {
1488
+ onAbort();
1489
+ return;
1490
+ }
1491
+ opts.abortSignal?.addEventListener("abort", onAbort, { once: true });
1492
+ });
1493
+ }
1494
+ //#endregion
1495
+ export { monitorMatrixProvider };