@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
@@ -1,1701 +0,0 @@
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-C17YnmA8.js";
18
- import { $w as formatAllowlistMatchMeta, Ah as createScopedPairingAccess, At as buildMediaPayload, Nd as resolveDmGroupAccessWithLists, Pd as resolveEffectiveAllowFromLists, Qg as buildPendingHistoryContextFromMap, Ug as logInboundDrop, Wg as logTypingFailure, Ww as resolveDualTextControlCommandGate, ag as createTypingCallbacks, e_ as clearHistoryEntriesIfEnabled, hS as DEFAULT_WEBHOOK_MAX_BODY_BYTES, hs as resolveInboundSessionEnvelopeContext, kd as readStoreAllowFromForDmPolicy, nh as resolveChannelMediaMaxBytes, r_ as recordPendingHistoryEntryIfEnabled, sT as mergeAllowlist, sg as createReplyPrefixOptions, tC as isDangerousNameMatchingEnabled, uT as summarizeMapping, ys as resolveMentionGating } from "./auth-profiles-1kPLbBwI.js";
19
- import "./model-selection-hL8i1Jbs.js";
20
- import "./agent-scope-C-YmLnnb.js";
21
- import { t as DEFAULT_ACCOUNT_ID } from "./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-CpWi5wPr.js";
26
- import "./io-CMfWWPXQ.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-DAd0SRAP.js";
35
- import "./ip-C4YAIpr4.js";
36
- import "./zod-schema.core-DvwgNmpd.js";
37
- import "./config-sW57gztj.js";
38
- import "./audit-fs-CMb-YUHX.js";
39
- import "./resolve-PSlwZjg3.js";
40
- import { J as fetchWithSsrFGuard } from "./provider-web-search-CcUC9ktE.js";
41
- import "./text-runtime-Cfq-Uyx0.js";
42
- import "./workspace-dirs-x10McA9t.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-4k2kpvoT.js";
48
- import "./frontmatter-Cgg0ICvh.js";
49
- import "./env-overrides-DBQl3LRc.js";
50
- import "./path-alias-guards-BtSO7sk7.js";
51
- import "./skills-CbB5b27M.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-CSHDsa_m.js";
61
- import "./internal-hooks-83AcmxP3.js";
62
- import { a as resolveSenderScopedGroupPolicy, i as evaluateSenderGroupAccessForPolicy, l as resolveDefaultGroupPolicy } from "./group-access-UAqUyJod.js";
63
- import "./lazy-runtime-BoGB4usD.js";
64
- import "./config-schema-BNU4GQh_.js";
65
- import "./method-scopes-CQE7-bZ-.js";
66
- import "./session-cost-usage-DWgQk6XT.js";
67
- import "./paths-ApLcu1Uu.js";
68
- import "./routing-DQ-fpTaA.js";
69
- import "./send-BuNhp8PH.js";
70
- import "./node-resolve-D5Hvcgyx.js";
71
- import "./provider-stream-DrUD69ai.js";
72
- import "./identity-file-sshkKKIr.js";
73
- import "./provider-models-BCId_Lfu.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-Ca0TaNud.js";
79
- import "./model-definitions-Cyyzm6Kr.js";
80
- import "./usage-N3bxnbmt.js";
81
- import "./device-identity-CRfhC3_s.js";
82
- import "./auth-Byfp0flq.js";
83
- import "./subscription-BhZORXN9.js";
84
- import "./diagnostic-D96Xaqrj.js";
85
- import "./message-hook-mappers-CeiHXgSQ.js";
86
- import "./json-store--7cBPxTG.js";
87
- import "./call-ByEzDJ1_.js";
88
- import "./multimodal-BJBBn_4F.js";
89
- import "./memory-search-Cv1SBrn7.js";
90
- import "./query-expansion-D_Mm5Hhi.js";
91
- import "./search-manager-C7J7B3_a.js";
92
- import "./core-CvDzLs7B.js";
93
- import "./issue-format-B0SI57Es.js";
94
- import "./logging-CxP9suT8.js";
95
- import "./note-dOl5kPAy.js";
96
- import "./state-paths-DsMoTg25.js";
97
- import "./config-value-CtTWALxG.js";
98
- import "./command-secret-targets-BFF4x_RB.js";
99
- import "./brave-BoWimrLe.js";
100
- import "./provider-usage-D8EZpFz9.js";
101
- import "./perplexity-EZwC3y2b.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-CIWW1Aqm.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-D89mSQPB.js";
113
- import { n as keepHttpServerTaskAlive } from "./channel-lifecycle-DA5pCpey.js";
114
- import { n as dispatchReplyFromConfigWithSettledDispatcher } from "./inbound-reply-dispatch-C73_7SOl.js";
115
- import "./outbound-media-DYRO2vTD.js";
116
- import { A as resolveAttachmentFetchPolicy, C as extractInlineImageCandidates, D as isRecord, E as isLikelyImageAttachment, M as resolveRequestUrl, N as safeFetchWithPolicy, O as isUrlAllowed, P as safeHostForUrl, S as extractHtmlFromAttachment, T as isDownloadableAttachment, _ as loadMSTeamsSdkWithAuth, b as IMG_SRC_RE, c as resolveMSTeamsUserAllowlist, g as createMSTeamsAdapter, j as resolveMediaSsrfPolicy, k as normalizeContentType, m as resolveMSTeamsCredentials, s as resolveMSTeamsChannelAllowlist, v as ATTACHMENT_TAG_RE, w as inferPlaceholder, x as applyAuthorizationHeaderForUrl, y as GRAPH_ROOT } from "./msteams-7FMwTvQG.js";
117
- import { a as resolveMSTeamsRouteConfig, i as resolveMSTeamsReplyPolicy, n as resolveMSTeamsAllowlistMatch, t as isMSTeamsGroupAllowed } from "./policy-DsMBbEe7.js";
118
- import { t as getMSTeamsRuntime } from "./runtime-ChDf4nkp.js";
119
- import { _ as createMSTeamsConversationStoreFs, a as buildConversationReference, c as withRevokedProxyFallback, d as buildFileInfoCard, f as parseFileConsentInvoke, g as formatUnknownError, h as formatMSTeamsSendErrorHint, l as getPendingUpload, m as classifyMSTeamsSendError, o as renderReplyPayloadsToMessages, p as uploadToConsentUrl, s as sendMSTeamsMessages, u as removePendingUpload, v as createMSTeamsPollStoreFs, y as extractMSTeamsPollVote } from "./probe-DvAEEWYr.js";
120
- //#region extensions/msteams/src/inbound.ts
121
- function normalizeMSTeamsConversationId(raw) {
122
- return raw.split(";")[0] ?? raw;
123
- }
124
- function extractMSTeamsConversationMessageId(raw) {
125
- if (!raw) return;
126
- return (/(?:^|;)messageid=([^;]+)/i.exec(raw)?.[1]?.trim() ?? "") || void 0;
127
- }
128
- function parseMSTeamsActivityTimestamp(value) {
129
- if (!value) return;
130
- if (value instanceof Date) return value;
131
- if (typeof value !== "string") return;
132
- const date = new Date(value);
133
- return Number.isNaN(date.getTime()) ? void 0 : date;
134
- }
135
- function stripMSTeamsMentionTags(text) {
136
- return text.replace(/<at[^>]*>.*?<\/at>/gi, "").trim();
137
- }
138
- function wasMSTeamsBotMentioned(activity) {
139
- const botId = activity.recipient?.id;
140
- if (!botId) return false;
141
- return (activity.entities ?? []).some((e) => e.type === "mention" && e.mentioned?.id === botId);
142
- }
143
- //#endregion
144
- //#region extensions/msteams/src/attachments/remote-media.ts
145
- async function downloadAndStoreMSTeamsRemoteMedia(params) {
146
- const fetched = await getMSTeamsRuntime().channel.media.fetchRemoteMedia({
147
- url: params.url,
148
- fetchImpl: params.fetchImpl,
149
- filePathHint: params.filePathHint,
150
- maxBytes: params.maxBytes,
151
- ssrfPolicy: params.ssrfPolicy
152
- });
153
- const mime = await getMSTeamsRuntime().media.detectMime({
154
- buffer: fetched.buffer,
155
- headerMime: fetched.contentType ?? params.contentTypeHint,
156
- filePath: params.filePathHint
157
- });
158
- const originalFilename = params.preserveFilenames ? params.filePathHint : void 0;
159
- const saved = await getMSTeamsRuntime().channel.media.saveMediaBuffer(fetched.buffer, mime ?? params.contentTypeHint, "inbound", params.maxBytes, originalFilename);
160
- return {
161
- path: saved.path,
162
- contentType: saved.contentType,
163
- placeholder: params.placeholder ?? inferPlaceholder({
164
- contentType: saved.contentType,
165
- fileName: params.filePathHint
166
- })
167
- };
168
- }
169
- //#endregion
170
- //#region extensions/msteams/src/attachments/download.ts
171
- function resolveDownloadCandidate(att) {
172
- const contentType = normalizeContentType(att.contentType);
173
- const name = typeof att.name === "string" ? att.name.trim() : "";
174
- if (contentType === "application/vnd.microsoft.teams.file.download.info") {
175
- if (!isRecord(att.content)) return null;
176
- const downloadUrl = typeof att.content.downloadUrl === "string" ? att.content.downloadUrl.trim() : "";
177
- if (!downloadUrl) return null;
178
- const fileType = typeof att.content.fileType === "string" ? att.content.fileType.trim() : "";
179
- const uniqueId = typeof att.content.uniqueId === "string" ? att.content.uniqueId.trim() : "";
180
- const fileName = typeof att.content.fileName === "string" ? att.content.fileName.trim() : "";
181
- const fileHint = name || fileName || (uniqueId && fileType ? `${uniqueId}.${fileType}` : "");
182
- return {
183
- url: downloadUrl,
184
- fileHint: fileHint || void 0,
185
- contentTypeHint: void 0,
186
- placeholder: inferPlaceholder({
187
- contentType,
188
- fileName: fileHint,
189
- fileType
190
- })
191
- };
192
- }
193
- const contentUrl = typeof att.contentUrl === "string" ? att.contentUrl.trim() : "";
194
- if (!contentUrl) return null;
195
- return {
196
- url: contentUrl,
197
- fileHint: name || void 0,
198
- contentTypeHint: contentType,
199
- placeholder: inferPlaceholder({
200
- contentType,
201
- fileName: name
202
- })
203
- };
204
- }
205
- function scopeCandidatesForUrl(url) {
206
- try {
207
- const host = new URL(url).hostname.toLowerCase();
208
- return host.endsWith("graph.microsoft.com") || host.endsWith("sharepoint.com") || host.endsWith("1drv.ms") || host.includes("sharepoint") ? ["https://graph.microsoft.com", "https://api.botframework.com"] : ["https://api.botframework.com", "https://graph.microsoft.com"];
209
- } catch {
210
- return ["https://api.botframework.com", "https://graph.microsoft.com"];
211
- }
212
- }
213
- function isRedirectStatus(status) {
214
- return status === 301 || status === 302 || status === 303 || status === 307 || status === 308;
215
- }
216
- async function fetchWithAuthFallback(params) {
217
- const firstAttempt = await safeFetchWithPolicy({
218
- url: params.url,
219
- policy: params.policy,
220
- fetchFn: params.fetchFn,
221
- requestInit: params.requestInit
222
- });
223
- if (firstAttempt.ok) return firstAttempt;
224
- if (!params.tokenProvider) return firstAttempt;
225
- if (firstAttempt.status !== 401 && firstAttempt.status !== 403) return firstAttempt;
226
- if (!isUrlAllowed(params.url, params.policy.authAllowHosts)) return firstAttempt;
227
- const scopes = scopeCandidatesForUrl(params.url);
228
- const fetchFn = params.fetchFn ?? fetch;
229
- for (const scope of scopes) try {
230
- const token = await params.tokenProvider.getAccessToken(scope);
231
- const authHeaders = new Headers(params.requestInit?.headers);
232
- authHeaders.set("Authorization", `Bearer ${token}`);
233
- const authAttempt = await safeFetchWithPolicy({
234
- url: params.url,
235
- policy: params.policy,
236
- fetchFn,
237
- requestInit: {
238
- ...params.requestInit,
239
- headers: authHeaders
240
- }
241
- });
242
- if (authAttempt.ok) return authAttempt;
243
- if (isRedirectStatus(authAttempt.status)) return authAttempt;
244
- if (authAttempt.status !== 401 && authAttempt.status !== 403) continue;
245
- } catch {}
246
- return firstAttempt;
247
- }
248
- /**
249
- * Download all file attachments from a Teams message (images, documents, etc.).
250
- * Renamed from downloadMSTeamsImageAttachments to support all file types.
251
- */
252
- async function downloadMSTeamsAttachments(params) {
253
- const list = Array.isArray(params.attachments) ? params.attachments : [];
254
- if (list.length === 0) return [];
255
- const policy = resolveAttachmentFetchPolicy({
256
- allowHosts: params.allowHosts,
257
- authAllowHosts: params.authAllowHosts
258
- });
259
- const allowHosts = policy.allowHosts;
260
- const ssrfPolicy = resolveMediaSsrfPolicy(allowHosts);
261
- const candidates = list.filter(isDownloadableAttachment).map(resolveDownloadCandidate).filter(Boolean);
262
- const inlineCandidates = extractInlineImageCandidates(list);
263
- const seenUrls = /* @__PURE__ */ new Set();
264
- for (const inline of inlineCandidates) if (inline.kind === "url") {
265
- if (!isUrlAllowed(inline.url, allowHosts)) continue;
266
- if (seenUrls.has(inline.url)) continue;
267
- seenUrls.add(inline.url);
268
- candidates.push({
269
- url: inline.url,
270
- fileHint: inline.fileHint,
271
- contentTypeHint: inline.contentType,
272
- placeholder: inline.placeholder
273
- });
274
- }
275
- if (candidates.length === 0 && inlineCandidates.length === 0) return [];
276
- const out = [];
277
- for (const inline of inlineCandidates) {
278
- if (inline.kind !== "data") continue;
279
- if (inline.data.byteLength > params.maxBytes) continue;
280
- try {
281
- const saved = await getMSTeamsRuntime().channel.media.saveMediaBuffer(inline.data, inline.contentType, "inbound", params.maxBytes);
282
- out.push({
283
- path: saved.path,
284
- contentType: saved.contentType,
285
- placeholder: inline.placeholder
286
- });
287
- } catch {}
288
- }
289
- for (const candidate of candidates) {
290
- if (!isUrlAllowed(candidate.url, allowHosts)) continue;
291
- try {
292
- const media = await downloadAndStoreMSTeamsRemoteMedia({
293
- url: candidate.url,
294
- filePathHint: candidate.fileHint ?? candidate.url,
295
- maxBytes: params.maxBytes,
296
- contentTypeHint: candidate.contentTypeHint,
297
- placeholder: candidate.placeholder,
298
- preserveFilenames: params.preserveFilenames,
299
- ssrfPolicy,
300
- fetchImpl: (input, init) => fetchWithAuthFallback({
301
- url: resolveRequestUrl(input),
302
- tokenProvider: params.tokenProvider,
303
- fetchFn: params.fetchFn,
304
- requestInit: init,
305
- policy
306
- })
307
- });
308
- out.push(media);
309
- } catch {}
310
- }
311
- return out;
312
- }
313
- //#endregion
314
- //#region extensions/msteams/src/attachments/graph.ts
315
- function readNestedString(value, keys) {
316
- let current = value;
317
- for (const key of keys) {
318
- if (!isRecord(current)) return;
319
- current = current[key];
320
- }
321
- return typeof current === "string" && current.trim() ? current.trim() : void 0;
322
- }
323
- function buildMSTeamsGraphMessageUrls(params) {
324
- const conversationType = params.conversationType?.trim().toLowerCase() ?? "";
325
- const messageIdCandidates = /* @__PURE__ */ new Set();
326
- const pushCandidate = (value) => {
327
- const trimmed = typeof value === "string" ? value.trim() : "";
328
- if (trimmed) messageIdCandidates.add(trimmed);
329
- };
330
- pushCandidate(params.messageId);
331
- pushCandidate(params.conversationMessageId);
332
- pushCandidate(readNestedString(params.channelData, ["messageId"]));
333
- pushCandidate(readNestedString(params.channelData, ["teamsMessageId"]));
334
- const replyToId = typeof params.replyToId === "string" ? params.replyToId.trim() : "";
335
- if (conversationType === "channel") {
336
- const teamId = readNestedString(params.channelData, ["team", "id"]) ?? readNestedString(params.channelData, ["teamId"]);
337
- const channelId = readNestedString(params.channelData, ["channel", "id"]) ?? readNestedString(params.channelData, ["channelId"]) ?? readNestedString(params.channelData, ["teamsChannelId"]);
338
- if (!teamId || !channelId) return [];
339
- const urls = [];
340
- if (replyToId) for (const candidate of messageIdCandidates) {
341
- if (candidate === replyToId) continue;
342
- urls.push(`${GRAPH_ROOT}/teams/${encodeURIComponent(teamId)}/channels/${encodeURIComponent(channelId)}/messages/${encodeURIComponent(replyToId)}/replies/${encodeURIComponent(candidate)}`);
343
- }
344
- if (messageIdCandidates.size === 0 && replyToId) messageIdCandidates.add(replyToId);
345
- for (const candidate of messageIdCandidates) urls.push(`${GRAPH_ROOT}/teams/${encodeURIComponent(teamId)}/channels/${encodeURIComponent(channelId)}/messages/${encodeURIComponent(candidate)}`);
346
- return Array.from(new Set(urls));
347
- }
348
- const chatId = params.conversationId?.trim() || readNestedString(params.channelData, ["chatId"]);
349
- if (!chatId) return [];
350
- if (messageIdCandidates.size === 0 && replyToId) messageIdCandidates.add(replyToId);
351
- const urls = Array.from(messageIdCandidates).map((candidate) => `${GRAPH_ROOT}/chats/${encodeURIComponent(chatId)}/messages/${encodeURIComponent(candidate)}`);
352
- return Array.from(new Set(urls));
353
- }
354
- async function fetchGraphCollection(params) {
355
- const fetchFn = params.fetchFn ?? fetch;
356
- const { response, release } = await fetchWithSsrFGuard({
357
- url: params.url,
358
- fetchImpl: fetchFn,
359
- init: { headers: { Authorization: `Bearer ${params.accessToken}` } },
360
- policy: params.ssrfPolicy,
361
- auditContext: "msteams.graph.collection"
362
- });
363
- try {
364
- const status = response.status;
365
- if (!response.ok) return {
366
- status,
367
- items: []
368
- };
369
- try {
370
- const data = await response.json();
371
- return {
372
- status,
373
- items: Array.isArray(data.value) ? data.value : []
374
- };
375
- } catch {
376
- return {
377
- status,
378
- items: []
379
- };
380
- }
381
- } finally {
382
- await release();
383
- }
384
- }
385
- function normalizeGraphAttachment(att) {
386
- let content = att.content;
387
- if (typeof content === "string") try {
388
- content = JSON.parse(content);
389
- } catch {}
390
- return {
391
- contentType: normalizeContentType(att.contentType) ?? void 0,
392
- contentUrl: att.contentUrl ?? void 0,
393
- name: att.name ?? void 0,
394
- thumbnailUrl: att.thumbnailUrl ?? void 0,
395
- content
396
- };
397
- }
398
- /**
399
- * Download all hosted content from a Teams message (images, documents, etc.).
400
- * Renamed from downloadGraphHostedImages to support all file types.
401
- */
402
- async function downloadGraphHostedContent(params) {
403
- const hosted = await fetchGraphCollection({
404
- url: `${params.messageUrl}/hostedContents`,
405
- accessToken: params.accessToken,
406
- fetchFn: params.fetchFn,
407
- ssrfPolicy: params.ssrfPolicy
408
- });
409
- if (hosted.items.length === 0) return {
410
- media: [],
411
- status: hosted.status,
412
- count: 0
413
- };
414
- const out = [];
415
- for (const item of hosted.items) {
416
- const contentBytes = typeof item.contentBytes === "string" ? item.contentBytes : "";
417
- if (!contentBytes) continue;
418
- let buffer;
419
- try {
420
- buffer = Buffer.from(contentBytes, "base64");
421
- } catch {
422
- continue;
423
- }
424
- if (buffer.byteLength > params.maxBytes) continue;
425
- const mime = await getMSTeamsRuntime().media.detectMime({
426
- buffer,
427
- headerMime: item.contentType ?? void 0
428
- });
429
- try {
430
- const saved = await getMSTeamsRuntime().channel.media.saveMediaBuffer(buffer, mime ?? item.contentType ?? void 0, "inbound", params.maxBytes);
431
- out.push({
432
- path: saved.path,
433
- contentType: saved.contentType,
434
- placeholder: inferPlaceholder({ contentType: saved.contentType })
435
- });
436
- } catch {}
437
- }
438
- return {
439
- media: out,
440
- status: hosted.status,
441
- count: hosted.items.length
442
- };
443
- }
444
- async function downloadMSTeamsGraphMedia(params) {
445
- if (!params.messageUrl || !params.tokenProvider) return { media: [] };
446
- const policy = resolveAttachmentFetchPolicy({
447
- allowHosts: params.allowHosts,
448
- authAllowHosts: params.authAllowHosts
449
- });
450
- const ssrfPolicy = resolveMediaSsrfPolicy(policy.allowHosts);
451
- const messageUrl = params.messageUrl;
452
- let accessToken;
453
- try {
454
- accessToken = await params.tokenProvider.getAccessToken("https://graph.microsoft.com");
455
- } catch {
456
- return {
457
- media: [],
458
- messageUrl,
459
- tokenError: true
460
- };
461
- }
462
- const fetchFn = params.fetchFn ?? fetch;
463
- const sharePointMedia = [];
464
- const downloadedReferenceUrls = /* @__PURE__ */ new Set();
465
- try {
466
- const { response: msgRes, release } = await fetchWithSsrFGuard({
467
- url: messageUrl,
468
- fetchImpl: fetchFn,
469
- init: { headers: { Authorization: `Bearer ${accessToken}` } },
470
- policy: ssrfPolicy,
471
- auditContext: "msteams.graph.message"
472
- });
473
- try {
474
- if (msgRes.ok) {
475
- const spAttachments = ((await msgRes.json()).attachments ?? []).filter((a) => a.contentType === "reference" && a.contentUrl && a.name);
476
- for (const att of spAttachments) {
477
- const name = att.name ?? "file";
478
- try {
479
- const shareUrl = att.contentUrl;
480
- if (!isUrlAllowed(shareUrl, policy.allowHosts)) continue;
481
- const media = await downloadAndStoreMSTeamsRemoteMedia({
482
- url: `${GRAPH_ROOT}/shares/u!${Buffer.from(shareUrl).toString("base64url")}/driveItem/content`,
483
- filePathHint: name,
484
- maxBytes: params.maxBytes,
485
- contentTypeHint: "application/octet-stream",
486
- preserveFilenames: params.preserveFilenames,
487
- ssrfPolicy,
488
- fetchImpl: async (input, init) => {
489
- const requestUrl = resolveRequestUrl(input);
490
- const headers = new Headers(init?.headers);
491
- applyAuthorizationHeaderForUrl({
492
- headers,
493
- url: requestUrl,
494
- authAllowHosts: policy.authAllowHosts,
495
- bearerToken: accessToken
496
- });
497
- return await safeFetchWithPolicy({
498
- url: requestUrl,
499
- policy,
500
- fetchFn,
501
- requestInit: {
502
- ...init,
503
- headers
504
- }
505
- });
506
- }
507
- });
508
- sharePointMedia.push(media);
509
- downloadedReferenceUrls.add(shareUrl);
510
- } catch {}
511
- }
512
- }
513
- } finally {
514
- await release();
515
- }
516
- } catch {}
517
- const hosted = await downloadGraphHostedContent({
518
- accessToken,
519
- messageUrl,
520
- maxBytes: params.maxBytes,
521
- fetchFn: params.fetchFn,
522
- preserveFilenames: params.preserveFilenames,
523
- ssrfPolicy
524
- });
525
- const attachments = await fetchGraphCollection({
526
- url: `${messageUrl}/attachments`,
527
- accessToken,
528
- fetchFn: params.fetchFn,
529
- ssrfPolicy
530
- });
531
- const normalizedAttachments = attachments.items.map(normalizeGraphAttachment);
532
- const filteredAttachments = sharePointMedia.length > 0 ? normalizedAttachments.filter((att) => {
533
- if (att.contentType?.toLowerCase() !== "reference") return true;
534
- const url = typeof att.contentUrl === "string" ? att.contentUrl : "";
535
- if (!url) return true;
536
- return !downloadedReferenceUrls.has(url);
537
- }) : normalizedAttachments;
538
- const attachmentMedia = await downloadMSTeamsAttachments({
539
- attachments: filteredAttachments,
540
- maxBytes: params.maxBytes,
541
- tokenProvider: params.tokenProvider,
542
- allowHosts: policy.allowHosts,
543
- authAllowHosts: policy.authAllowHosts,
544
- fetchFn: params.fetchFn,
545
- preserveFilenames: params.preserveFilenames
546
- });
547
- return {
548
- media: [
549
- ...sharePointMedia,
550
- ...hosted.media,
551
- ...attachmentMedia
552
- ],
553
- hostedCount: hosted.count,
554
- attachmentCount: filteredAttachments.length + sharePointMedia.length,
555
- hostedStatus: hosted.status,
556
- attachmentStatus: attachments.status,
557
- messageUrl
558
- };
559
- }
560
- //#endregion
561
- //#region extensions/msteams/src/attachments/html.ts
562
- function summarizeMSTeamsHtmlAttachments(attachments) {
563
- const list = Array.isArray(attachments) ? attachments : [];
564
- if (list.length === 0) return;
565
- let htmlAttachments = 0;
566
- let imgTags = 0;
567
- let dataImages = 0;
568
- let cidImages = 0;
569
- const srcHosts = /* @__PURE__ */ new Set();
570
- let attachmentTags = 0;
571
- const attachmentIds = /* @__PURE__ */ new Set();
572
- for (const att of list) {
573
- const html = extractHtmlFromAttachment(att);
574
- if (!html) continue;
575
- htmlAttachments += 1;
576
- IMG_SRC_RE.lastIndex = 0;
577
- let match = IMG_SRC_RE.exec(html);
578
- while (match) {
579
- imgTags += 1;
580
- const src = match[1]?.trim();
581
- if (src) if (src.startsWith("data:")) dataImages += 1;
582
- else if (src.startsWith("cid:")) cidImages += 1;
583
- else srcHosts.add(safeHostForUrl(src));
584
- match = IMG_SRC_RE.exec(html);
585
- }
586
- ATTACHMENT_TAG_RE.lastIndex = 0;
587
- let attachmentMatch = ATTACHMENT_TAG_RE.exec(html);
588
- while (attachmentMatch) {
589
- attachmentTags += 1;
590
- const id = attachmentMatch[1]?.trim();
591
- if (id) attachmentIds.add(id);
592
- attachmentMatch = ATTACHMENT_TAG_RE.exec(html);
593
- }
594
- }
595
- if (htmlAttachments === 0) return;
596
- return {
597
- htmlAttachments,
598
- imgTags,
599
- dataImages,
600
- cidImages,
601
- srcHosts: Array.from(srcHosts).slice(0, 5),
602
- attachmentTags,
603
- attachmentIds: Array.from(attachmentIds).slice(0, 5)
604
- };
605
- }
606
- function buildMSTeamsAttachmentPlaceholder(attachments) {
607
- const list = Array.isArray(attachments) ? attachments : [];
608
- if (list.length === 0) return "";
609
- const totalImages = list.filter(isLikelyImageAttachment).length + extractInlineImageCandidates(list).length;
610
- if (totalImages > 0) return `<media:image>${totalImages > 1 ? ` (${totalImages} images)` : ""}`;
611
- const count = list.length;
612
- return `<media:document>${count > 1 ? ` (${count} files)` : ""}`;
613
- }
614
- //#endregion
615
- //#region extensions/msteams/src/attachments/payload.ts
616
- function buildMSTeamsMediaPayload(mediaList) {
617
- return buildMediaPayload(mediaList, { preserveMediaTypeCardinality: true });
618
- }
619
- //#endregion
620
- //#region extensions/msteams/src/reply-dispatcher.ts
621
- function createMSTeamsReplyDispatcher(params) {
622
- const core = getMSTeamsRuntime();
623
- /**
624
- * Send a typing indicator.
625
- *
626
- * First tries the live turn context (cheapest path). When the context has
627
- * been revoked (debounced messages) we fall back to proactive messaging via
628
- * the stored conversation reference so the user still sees the "…" bubble.
629
- */
630
- const sendTypingIndicator = async () => {
631
- await withRevokedProxyFallback({
632
- run: async () => {
633
- await params.context.sendActivity({ type: "typing" });
634
- },
635
- onRevoked: async () => {
636
- const baseRef = buildConversationReference(params.conversationRef);
637
- await params.adapter.continueConversation(params.appId, {
638
- ...baseRef,
639
- activityId: void 0
640
- }, async (ctx) => {
641
- await ctx.sendActivity({ type: "typing" });
642
- });
643
- },
644
- onRevokedLog: () => {
645
- params.log.debug?.("turn context revoked, sending typing via proactive messaging");
646
- }
647
- });
648
- };
649
- const typingCallbacks = createTypingCallbacks({
650
- start: sendTypingIndicator,
651
- onStartError: (err) => {
652
- logTypingFailure({
653
- log: (message) => params.log.debug?.(message),
654
- channel: "msteams",
655
- action: "start",
656
- error: err
657
- });
658
- }
659
- });
660
- const { onModelSelected, ...prefixOptions } = createReplyPrefixOptions({
661
- cfg: params.cfg,
662
- agentId: params.agentId,
663
- channel: "msteams",
664
- accountId: params.accountId
665
- });
666
- const chunkMode = core.channel.text.resolveChunkMode(params.cfg, "msteams");
667
- const { dispatcher, replyOptions, markDispatchIdle } = core.channel.reply.createReplyDispatcherWithTyping({
668
- ...prefixOptions,
669
- humanDelay: core.channel.reply.resolveHumanDelayConfig(params.cfg, params.agentId),
670
- typingCallbacks,
671
- deliver: async (payload) => {
672
- const tableMode = core.channel.text.resolveMarkdownTableMode({
673
- cfg: params.cfg,
674
- channel: "msteams"
675
- });
676
- const messages = renderReplyPayloadsToMessages([payload], {
677
- textChunkLimit: params.textLimit,
678
- chunkText: true,
679
- mediaMode: "split",
680
- tableMode,
681
- chunkMode
682
- });
683
- const mediaMaxBytes = resolveChannelMediaMaxBytes({
684
- cfg: params.cfg,
685
- resolveChannelLimitMb: ({ cfg }) => cfg.channels?.msteams?.mediaMaxMb
686
- });
687
- const ids = await sendMSTeamsMessages({
688
- replyStyle: params.replyStyle,
689
- adapter: params.adapter,
690
- appId: params.appId,
691
- conversationRef: params.conversationRef,
692
- context: params.context,
693
- messages,
694
- retry: {},
695
- onRetry: (event) => {
696
- params.log.debug?.("retrying send", {
697
- replyStyle: params.replyStyle,
698
- ...event
699
- });
700
- },
701
- tokenProvider: params.tokenProvider,
702
- sharePointSiteId: params.sharePointSiteId,
703
- mediaMaxBytes
704
- });
705
- if (ids.length > 0) params.onSentMessageIds?.(ids);
706
- },
707
- onError: (err, info) => {
708
- const errMsg = formatUnknownError(err);
709
- const classification = classifyMSTeamsSendError(err);
710
- const hint = formatMSTeamsSendErrorHint(classification);
711
- params.runtime.error?.(`msteams ${info.kind} reply failed: ${errMsg}${hint ? ` (${hint})` : ""}`);
712
- params.log.error("reply failed", {
713
- kind: info.kind,
714
- error: errMsg,
715
- classification,
716
- hint
717
- });
718
- }
719
- });
720
- return {
721
- dispatcher,
722
- replyOptions: {
723
- ...replyOptions,
724
- onModelSelected
725
- },
726
- markDispatchIdle
727
- };
728
- }
729
- //#endregion
730
- //#region extensions/msteams/src/sent-message-cache.ts
731
- const TTL_MS = 1440 * 60 * 1e3;
732
- const sentMessages = /* @__PURE__ */ new Map();
733
- function cleanupExpired(entry) {
734
- const now = Date.now();
735
- for (const [msgId, timestamp] of entry.timestamps) if (now - timestamp > TTL_MS) entry.timestamps.delete(msgId);
736
- }
737
- function recordMSTeamsSentMessage(conversationId, messageId) {
738
- if (!conversationId || !messageId) return;
739
- let entry = sentMessages.get(conversationId);
740
- if (!entry) {
741
- entry = { timestamps: /* @__PURE__ */ new Map() };
742
- sentMessages.set(conversationId, entry);
743
- }
744
- entry.timestamps.set(messageId, Date.now());
745
- if (entry.timestamps.size > 200) cleanupExpired(entry);
746
- }
747
- function wasMSTeamsMessageSent(conversationId, messageId) {
748
- const entry = sentMessages.get(conversationId);
749
- if (!entry) return false;
750
- cleanupExpired(entry);
751
- return entry.timestamps.has(messageId);
752
- }
753
- //#endregion
754
- //#region extensions/msteams/src/monitor-handler/inbound-media.ts
755
- async function resolveMSTeamsInboundMedia(params) {
756
- const { attachments, htmlSummary, maxBytes, tokenProvider, allowHosts, conversationType, conversationId, conversationMessageId, activity, log, preserveFilenames } = params;
757
- let mediaList = await downloadMSTeamsAttachments({
758
- attachments,
759
- maxBytes,
760
- tokenProvider,
761
- allowHosts,
762
- authAllowHosts: params.authAllowHosts,
763
- preserveFilenames
764
- });
765
- if (mediaList.length === 0) {
766
- if (attachments.length > 0 && attachments.every((att) => String(att.contentType ?? "").startsWith("text/html"))) {
767
- const messageUrls = buildMSTeamsGraphMessageUrls({
768
- conversationType,
769
- conversationId,
770
- messageId: activity.id ?? void 0,
771
- replyToId: activity.replyToId ?? void 0,
772
- conversationMessageId,
773
- channelData: activity.channelData
774
- });
775
- if (messageUrls.length === 0) log.debug?.("graph message url unavailable", {
776
- conversationType,
777
- hasChannelData: Boolean(activity.channelData),
778
- messageId: activity.id ?? void 0,
779
- replyToId: activity.replyToId ?? void 0
780
- });
781
- else {
782
- const attempts = [];
783
- for (const messageUrl of messageUrls) {
784
- const graphMedia = await downloadMSTeamsGraphMedia({
785
- messageUrl,
786
- tokenProvider,
787
- maxBytes,
788
- allowHosts,
789
- authAllowHosts: params.authAllowHosts,
790
- preserveFilenames
791
- });
792
- attempts.push({
793
- url: messageUrl,
794
- hostedStatus: graphMedia.hostedStatus,
795
- attachmentStatus: graphMedia.attachmentStatus,
796
- hostedCount: graphMedia.hostedCount,
797
- attachmentCount: graphMedia.attachmentCount,
798
- tokenError: graphMedia.tokenError
799
- });
800
- if (graphMedia.media.length > 0) {
801
- mediaList = graphMedia.media;
802
- break;
803
- }
804
- if (graphMedia.tokenError) break;
805
- }
806
- if (mediaList.length === 0) log.debug?.("graph media fetch empty", { attempts });
807
- }
808
- }
809
- }
810
- if (mediaList.length > 0) log.debug?.("downloaded attachments", { count: mediaList.length });
811
- else if (htmlSummary?.imgTags) log.debug?.("inline images detected but none downloaded", {
812
- imgTags: htmlSummary.imgTags,
813
- srcHosts: htmlSummary.srcHosts,
814
- dataImages: htmlSummary.dataImages,
815
- cidImages: htmlSummary.cidImages
816
- });
817
- return mediaList;
818
- }
819
- //#endregion
820
- //#region extensions/msteams/src/monitor-handler/message-handler.ts
821
- function createMSTeamsMessageHandler(deps) {
822
- const { cfg, runtime, appId, adapter, tokenProvider, textLimit, mediaMaxBytes, conversationStore, pollStore, log } = deps;
823
- const core = getMSTeamsRuntime();
824
- const pairing = createScopedPairingAccess({
825
- core,
826
- channel: "msteams",
827
- accountId: DEFAULT_ACCOUNT_ID
828
- });
829
- const logVerboseMessage = (message) => {
830
- if (core.logging.shouldLogVerbose()) log.debug?.(message);
831
- };
832
- const msteamsCfg = cfg.channels?.msteams;
833
- const historyLimit = Math.max(0, msteamsCfg?.historyLimit ?? cfg.messages?.groupChat?.historyLimit ?? 50);
834
- const conversationHistories = /* @__PURE__ */ new Map();
835
- const inboundDebounceMs = core.channel.debounce.resolveInboundDebounceMs({
836
- cfg,
837
- channel: "msteams"
838
- });
839
- const handleTeamsMessageNow = async (params) => {
840
- const context = params.context;
841
- const activity = context.activity;
842
- const rawText = params.rawText;
843
- const text = params.text;
844
- const attachments = params.attachments;
845
- const attachmentPlaceholder = buildMSTeamsAttachmentPlaceholder(attachments);
846
- const rawBody = text || attachmentPlaceholder;
847
- const from = activity.from;
848
- const conversation = activity.conversation;
849
- const attachmentTypes = attachments.map((att) => typeof att.contentType === "string" ? att.contentType : void 0).filter(Boolean).slice(0, 3);
850
- const htmlSummary = summarizeMSTeamsHtmlAttachments(attachments);
851
- log.info("received message", {
852
- rawText: rawText.slice(0, 50),
853
- text: text.slice(0, 50),
854
- attachments: attachments.length,
855
- attachmentTypes,
856
- from: from?.id,
857
- conversation: conversation?.id
858
- });
859
- if (htmlSummary) log.debug?.("html attachment summary", htmlSummary);
860
- if (!from?.id) {
861
- log.debug?.("skipping message without from.id");
862
- return;
863
- }
864
- const rawConversationId = conversation?.id ?? "";
865
- const conversationId = normalizeMSTeamsConversationId(rawConversationId);
866
- const conversationMessageId = extractMSTeamsConversationMessageId(rawConversationId);
867
- const conversationType = conversation?.conversationType ?? "personal";
868
- const isGroupChat = conversationType === "groupChat" || conversation?.isGroup === true;
869
- const isChannel = conversationType === "channel";
870
- const isDirectMessage = !isGroupChat && !isChannel;
871
- const senderName = from.name ?? from.id;
872
- const senderId = from.aadObjectId ?? from.id;
873
- const dmPolicy = msteamsCfg?.dmPolicy ?? "pairing";
874
- const storedAllowFrom = await readStoreAllowFromForDmPolicy({
875
- provider: "msteams",
876
- accountId: pairing.accountId,
877
- dmPolicy,
878
- readStore: pairing.readStoreForDmPolicy
879
- });
880
- const useAccessGroups = cfg.commands?.useAccessGroups !== false;
881
- const configuredDmAllowFrom = (msteamsCfg?.allowFrom ?? []).map((v) => String(v));
882
- const groupAllowFrom = msteamsCfg?.groupAllowFrom;
883
- const resolvedAllowFromLists = resolveEffectiveAllowFromLists({
884
- allowFrom: configuredDmAllowFrom,
885
- groupAllowFrom,
886
- storeAllowFrom: storedAllowFrom,
887
- dmPolicy
888
- });
889
- const defaultGroupPolicy = resolveDefaultGroupPolicy(cfg);
890
- const groupPolicy = !isDirectMessage && msteamsCfg ? msteamsCfg.groupPolicy ?? defaultGroupPolicy ?? "allowlist" : "disabled";
891
- const effectiveGroupAllowFrom = resolvedAllowFromLists.effectiveGroupAllowFrom;
892
- const teamId = activity.channelData?.team?.id;
893
- const teamName = activity.channelData?.team?.name;
894
- const channelName = activity.channelData?.channel?.name;
895
- const channelGate = resolveMSTeamsRouteConfig({
896
- cfg: msteamsCfg,
897
- teamId,
898
- teamName,
899
- conversationId,
900
- channelName,
901
- allowNameMatching: isDangerousNameMatchingEnabled(msteamsCfg)
902
- });
903
- const senderGroupPolicy = resolveSenderScopedGroupPolicy({
904
- groupPolicy,
905
- groupAllowFrom: effectiveGroupAllowFrom
906
- });
907
- const access = resolveDmGroupAccessWithLists({
908
- isGroup: !isDirectMessage,
909
- dmPolicy,
910
- groupPolicy: senderGroupPolicy,
911
- allowFrom: configuredDmAllowFrom,
912
- groupAllowFrom,
913
- storeAllowFrom: storedAllowFrom,
914
- groupAllowFromFallbackToAllowFrom: false,
915
- isSenderAllowed: (allowFrom) => resolveMSTeamsAllowlistMatch({
916
- allowFrom,
917
- senderId,
918
- senderName,
919
- allowNameMatching: isDangerousNameMatchingEnabled(msteamsCfg)
920
- }).allowed
921
- });
922
- const effectiveDmAllowFrom = access.effectiveAllowFrom;
923
- if (isDirectMessage && msteamsCfg && access.decision !== "allow") {
924
- if (access.reason === "dmPolicy=disabled") {
925
- log.debug?.("dropping dm (dms disabled)");
926
- return;
927
- }
928
- const allowMatch = resolveMSTeamsAllowlistMatch({
929
- allowFrom: effectiveDmAllowFrom,
930
- senderId,
931
- senderName,
932
- allowNameMatching: isDangerousNameMatchingEnabled(msteamsCfg)
933
- });
934
- if (access.decision === "pairing") {
935
- if (await pairing.upsertPairingRequest({
936
- id: senderId,
937
- meta: { name: senderName }
938
- })) log.info("msteams pairing request created", {
939
- sender: senderId,
940
- label: senderName
941
- });
942
- }
943
- log.debug?.("dropping dm (not allowlisted)", {
944
- sender: senderId,
945
- label: senderName,
946
- allowlistMatch: formatAllowlistMatchMeta(allowMatch)
947
- });
948
- return;
949
- }
950
- if (!isDirectMessage && msteamsCfg) {
951
- if (channelGate.allowlistConfigured && !channelGate.allowed) {
952
- log.debug?.("dropping group message (not in team/channel allowlist)", {
953
- conversationId,
954
- teamKey: channelGate.teamKey ?? "none",
955
- channelKey: channelGate.channelKey ?? "none",
956
- channelMatchKey: channelGate.channelMatchKey ?? "none",
957
- channelMatchSource: channelGate.channelMatchSource ?? "none"
958
- });
959
- return;
960
- }
961
- const senderGroupAccess = evaluateSenderGroupAccessForPolicy({
962
- groupPolicy,
963
- groupAllowFrom: effectiveGroupAllowFrom,
964
- senderId,
965
- isSenderAllowed: (_senderId, allowFrom) => resolveMSTeamsAllowlistMatch({
966
- allowFrom,
967
- senderId,
968
- senderName,
969
- allowNameMatching: isDangerousNameMatchingEnabled(msteamsCfg)
970
- }).allowed
971
- });
972
- if (!senderGroupAccess.allowed && senderGroupAccess.reason === "disabled") {
973
- log.debug?.("dropping group message (groupPolicy: disabled)", { conversationId });
974
- return;
975
- }
976
- if (!senderGroupAccess.allowed && senderGroupAccess.reason === "empty_allowlist") {
977
- log.debug?.("dropping group message (groupPolicy: allowlist, no allowlist)", { conversationId });
978
- return;
979
- }
980
- if (!senderGroupAccess.allowed && senderGroupAccess.reason === "sender_not_allowlisted") {
981
- const allowMatch = resolveMSTeamsAllowlistMatch({
982
- allowFrom: effectiveGroupAllowFrom,
983
- senderId,
984
- senderName,
985
- allowNameMatching: isDangerousNameMatchingEnabled(msteamsCfg)
986
- });
987
- log.debug?.("dropping group message (not in groupAllowFrom)", {
988
- sender: senderId,
989
- label: senderName,
990
- allowlistMatch: formatAllowlistMatchMeta(allowMatch)
991
- });
992
- return;
993
- }
994
- }
995
- const commandDmAllowFrom = isDirectMessage ? effectiveDmAllowFrom : configuredDmAllowFrom;
996
- const ownerAllowedForCommands = isMSTeamsGroupAllowed({
997
- groupPolicy: "allowlist",
998
- allowFrom: commandDmAllowFrom,
999
- senderId,
1000
- senderName,
1001
- allowNameMatching: isDangerousNameMatchingEnabled(msteamsCfg)
1002
- });
1003
- const groupAllowedForCommands = isMSTeamsGroupAllowed({
1004
- groupPolicy: "allowlist",
1005
- allowFrom: effectiveGroupAllowFrom,
1006
- senderId,
1007
- senderName,
1008
- allowNameMatching: isDangerousNameMatchingEnabled(msteamsCfg)
1009
- });
1010
- const { commandAuthorized, shouldBlock } = resolveDualTextControlCommandGate({
1011
- useAccessGroups,
1012
- primaryConfigured: commandDmAllowFrom.length > 0,
1013
- primaryAllowed: ownerAllowedForCommands,
1014
- secondaryConfigured: effectiveGroupAllowFrom.length > 0,
1015
- secondaryAllowed: groupAllowedForCommands,
1016
- hasControlCommand: core.channel.text.hasControlCommand(text, cfg)
1017
- });
1018
- if (shouldBlock) {
1019
- logInboundDrop({
1020
- log: logVerboseMessage,
1021
- channel: "msteams",
1022
- reason: "control command (unauthorized)",
1023
- target: senderId
1024
- });
1025
- return;
1026
- }
1027
- const agent = activity.recipient;
1028
- const conversationRef = {
1029
- activityId: activity.id,
1030
- user: {
1031
- id: from.id,
1032
- name: from.name,
1033
- aadObjectId: from.aadObjectId
1034
- },
1035
- agent,
1036
- bot: agent ? {
1037
- id: agent.id,
1038
- name: agent.name
1039
- } : void 0,
1040
- conversation: {
1041
- id: conversationId,
1042
- conversationType,
1043
- tenantId: conversation?.tenantId
1044
- },
1045
- teamId,
1046
- channelId: activity.channelId,
1047
- serviceUrl: activity.serviceUrl,
1048
- locale: activity.locale
1049
- };
1050
- conversationStore.upsert(conversationId, conversationRef).catch((err) => {
1051
- log.debug?.("failed to save conversation reference", { error: formatUnknownError(err) });
1052
- });
1053
- const pollVote = extractMSTeamsPollVote(activity);
1054
- if (pollVote) {
1055
- try {
1056
- if (!await pollStore.recordVote({
1057
- pollId: pollVote.pollId,
1058
- voterId: senderId,
1059
- selections: pollVote.selections
1060
- })) log.debug?.("poll vote ignored (poll not found)", { pollId: pollVote.pollId });
1061
- else log.info("recorded poll vote", {
1062
- pollId: pollVote.pollId,
1063
- voter: senderId,
1064
- selections: pollVote.selections
1065
- });
1066
- } catch (err) {
1067
- log.error("failed to record poll vote", {
1068
- pollId: pollVote.pollId,
1069
- error: formatUnknownError(err)
1070
- });
1071
- }
1072
- return;
1073
- }
1074
- if (!rawBody) {
1075
- log.debug?.("skipping empty message after stripping mentions");
1076
- return;
1077
- }
1078
- const teamsFrom = isDirectMessage ? `msteams:${senderId}` : isChannel ? `msteams:channel:${conversationId}` : `msteams:group:${conversationId}`;
1079
- const teamsTo = isDirectMessage ? `user:${senderId}` : `conversation:${conversationId}`;
1080
- const route = core.channel.routing.resolveAgentRoute({
1081
- cfg,
1082
- channel: "msteams",
1083
- peer: {
1084
- kind: isDirectMessage ? "direct" : isChannel ? "channel" : "group",
1085
- id: isDirectMessage ? senderId : conversationId
1086
- }
1087
- });
1088
- const preview = rawBody.replace(/\s+/g, " ").slice(0, 160);
1089
- const inboundLabel = isDirectMessage ? `Teams DM from ${senderName}` : `Teams message in ${conversationType} from ${senderName}`;
1090
- core.system.enqueueSystemEvent(`${inboundLabel}: ${preview}`, {
1091
- sessionKey: route.sessionKey,
1092
- contextKey: `msteams:message:${conversationId}:${activity.id ?? "unknown"}`
1093
- });
1094
- const channelId = conversationId;
1095
- const { teamConfig, channelConfig } = channelGate;
1096
- const { requireMention, replyStyle } = resolveMSTeamsReplyPolicy({
1097
- isDirectMessage,
1098
- globalConfig: msteamsCfg,
1099
- teamConfig,
1100
- channelConfig
1101
- });
1102
- const timestamp = parseMSTeamsActivityTimestamp(activity.timestamp);
1103
- if (!isDirectMessage) {
1104
- const mentionGate = resolveMentionGating({
1105
- requireMention: Boolean(requireMention),
1106
- canDetectMention: true,
1107
- wasMentioned: params.wasMentioned,
1108
- implicitMention: params.implicitMention,
1109
- shouldBypassMention: false
1110
- });
1111
- const mentioned = mentionGate.effectiveWasMentioned;
1112
- if (requireMention && mentionGate.shouldSkip) {
1113
- log.debug?.("skipping message (mention required)", {
1114
- teamId,
1115
- channelId,
1116
- requireMention,
1117
- mentioned
1118
- });
1119
- recordPendingHistoryEntryIfEnabled({
1120
- historyMap: conversationHistories,
1121
- historyKey: conversationId,
1122
- limit: historyLimit,
1123
- entry: {
1124
- sender: senderName,
1125
- body: rawBody,
1126
- timestamp: timestamp?.getTime(),
1127
- messageId: activity.id ?? void 0
1128
- }
1129
- });
1130
- return;
1131
- }
1132
- }
1133
- const mediaPayload = buildMSTeamsMediaPayload(await resolveMSTeamsInboundMedia({
1134
- attachments,
1135
- htmlSummary: htmlSummary ?? void 0,
1136
- maxBytes: mediaMaxBytes,
1137
- tokenProvider,
1138
- allowHosts: msteamsCfg?.mediaAllowHosts,
1139
- authAllowHosts: msteamsCfg?.mediaAuthAllowHosts,
1140
- conversationType,
1141
- conversationId,
1142
- conversationMessageId: conversationMessageId ?? void 0,
1143
- activity: {
1144
- id: activity.id,
1145
- replyToId: activity.replyToId,
1146
- channelData: activity.channelData
1147
- },
1148
- log,
1149
- preserveFilenames: cfg.media?.preserveFilenames
1150
- }));
1151
- const envelopeFrom = isDirectMessage ? senderName : conversationType;
1152
- const { storePath, envelopeOptions, previousTimestamp } = resolveInboundSessionEnvelopeContext({
1153
- cfg,
1154
- agentId: route.agentId,
1155
- sessionKey: route.sessionKey
1156
- });
1157
- let combinedBody = core.channel.reply.formatAgentEnvelope({
1158
- channel: "Teams",
1159
- from: envelopeFrom,
1160
- timestamp,
1161
- previousTimestamp,
1162
- envelope: envelopeOptions,
1163
- body: rawBody
1164
- });
1165
- const isRoomish = !isDirectMessage;
1166
- const historyKey = isRoomish ? conversationId : void 0;
1167
- if (isRoomish && historyKey) combinedBody = buildPendingHistoryContextFromMap({
1168
- historyMap: conversationHistories,
1169
- historyKey,
1170
- limit: historyLimit,
1171
- currentMessage: combinedBody,
1172
- formatEntry: (entry) => core.channel.reply.formatAgentEnvelope({
1173
- channel: "Teams",
1174
- from: conversationType,
1175
- timestamp: entry.timestamp,
1176
- body: `${entry.sender}: ${entry.body}${entry.messageId ? ` [id:${entry.messageId}]` : ""}`,
1177
- envelope: envelopeOptions
1178
- })
1179
- });
1180
- const inboundHistory = isRoomish && historyKey && historyLimit > 0 ? (conversationHistories.get(historyKey) ?? []).map((entry) => ({
1181
- sender: entry.sender,
1182
- body: entry.body,
1183
- timestamp: entry.timestamp
1184
- })) : void 0;
1185
- const commandBody = text.trim();
1186
- const ctxPayload = core.channel.reply.finalizeInboundContext({
1187
- Body: combinedBody,
1188
- BodyForAgent: rawBody,
1189
- InboundHistory: inboundHistory,
1190
- RawBody: rawBody,
1191
- CommandBody: commandBody,
1192
- BodyForCommands: commandBody,
1193
- From: teamsFrom,
1194
- To: teamsTo,
1195
- SessionKey: route.sessionKey,
1196
- AccountId: route.accountId,
1197
- ChatType: isDirectMessage ? "direct" : isChannel ? "channel" : "group",
1198
- ConversationLabel: envelopeFrom,
1199
- GroupSubject: !isDirectMessage ? conversationType : void 0,
1200
- SenderName: senderName,
1201
- SenderId: senderId,
1202
- Provider: "msteams",
1203
- Surface: "msteams",
1204
- MessageSid: activity.id,
1205
- Timestamp: timestamp?.getTime() ?? Date.now(),
1206
- WasMentioned: isDirectMessage || params.wasMentioned || params.implicitMention,
1207
- CommandAuthorized: commandAuthorized,
1208
- OriginatingChannel: "msteams",
1209
- OriginatingTo: teamsTo,
1210
- ...mediaPayload
1211
- });
1212
- await core.channel.session.recordInboundSession({
1213
- storePath,
1214
- sessionKey: ctxPayload.SessionKey ?? route.sessionKey,
1215
- ctx: ctxPayload,
1216
- onRecordError: (err) => {
1217
- logVerboseMessage(`msteams: failed updating session meta: ${String(err)}`);
1218
- }
1219
- });
1220
- logVerboseMessage(`msteams inbound: from=${ctxPayload.From} preview="${preview}"`);
1221
- const sharePointSiteId = msteamsCfg?.sharePointSiteId;
1222
- const { dispatcher, replyOptions, markDispatchIdle } = createMSTeamsReplyDispatcher({
1223
- cfg,
1224
- agentId: route.agentId,
1225
- accountId: route.accountId,
1226
- runtime,
1227
- log,
1228
- adapter,
1229
- appId,
1230
- conversationRef,
1231
- context,
1232
- replyStyle,
1233
- textLimit,
1234
- onSentMessageIds: (ids) => {
1235
- for (const id of ids) recordMSTeamsSentMessage(conversationId, id);
1236
- },
1237
- tokenProvider,
1238
- sharePointSiteId
1239
- });
1240
- log.info("dispatching to agent", { sessionKey: route.sessionKey });
1241
- try {
1242
- const { queuedFinal, counts } = await dispatchReplyFromConfigWithSettledDispatcher({
1243
- cfg,
1244
- ctxPayload,
1245
- dispatcher,
1246
- onSettled: () => {
1247
- markDispatchIdle();
1248
- },
1249
- replyOptions
1250
- });
1251
- log.info("dispatch complete", {
1252
- queuedFinal,
1253
- counts
1254
- });
1255
- if (!queuedFinal) {
1256
- if (isRoomish && historyKey) clearHistoryEntriesIfEnabled({
1257
- historyMap: conversationHistories,
1258
- historyKey,
1259
- limit: historyLimit
1260
- });
1261
- return;
1262
- }
1263
- const finalCount = counts.final;
1264
- logVerboseMessage(`msteams: delivered ${finalCount} reply${finalCount === 1 ? "" : "ies"} to ${teamsTo}`);
1265
- if (isRoomish && historyKey) clearHistoryEntriesIfEnabled({
1266
- historyMap: conversationHistories,
1267
- historyKey,
1268
- limit: historyLimit
1269
- });
1270
- } catch (err) {
1271
- log.error("dispatch failed", { error: String(err) });
1272
- runtime.error?.(`msteams dispatch failed: ${String(err)}`);
1273
- try {
1274
- await context.sendActivity(`⚠️ Agent failed: ${err instanceof Error ? err.message : String(err)}`);
1275
- } catch {}
1276
- }
1277
- };
1278
- const inboundDebouncer = core.channel.debounce.createInboundDebouncer({
1279
- debounceMs: inboundDebounceMs,
1280
- buildKey: (entry) => {
1281
- const conversationId = normalizeMSTeamsConversationId(entry.context.activity.conversation?.id ?? "");
1282
- const senderId = entry.context.activity.from?.aadObjectId ?? entry.context.activity.from?.id ?? "";
1283
- if (!senderId || !conversationId) return null;
1284
- return `msteams:${appId}:${conversationId}:${senderId}`;
1285
- },
1286
- shouldDebounce: (entry) => {
1287
- if (!entry.text.trim()) return false;
1288
- if (entry.attachments.length > 0) return false;
1289
- return !core.channel.text.hasControlCommand(entry.text, cfg);
1290
- },
1291
- onFlush: async (entries) => {
1292
- const last = entries.at(-1);
1293
- if (!last) return;
1294
- if (entries.length === 1) {
1295
- await handleTeamsMessageNow(last);
1296
- return;
1297
- }
1298
- const combinedText = entries.map((entry) => entry.text).filter(Boolean).join("\n");
1299
- if (!combinedText.trim()) return;
1300
- const combinedRawText = entries.map((entry) => entry.rawText).filter(Boolean).join("\n");
1301
- const wasMentioned = entries.some((entry) => entry.wasMentioned);
1302
- const implicitMention = entries.some((entry) => entry.implicitMention);
1303
- await handleTeamsMessageNow({
1304
- context: last.context,
1305
- rawText: combinedRawText,
1306
- text: combinedText,
1307
- attachments: [],
1308
- wasMentioned,
1309
- implicitMention
1310
- });
1311
- },
1312
- onError: (err) => {
1313
- runtime.error?.(`msteams debounce flush failed: ${String(err)}`);
1314
- }
1315
- });
1316
- return async function handleTeamsMessage(context) {
1317
- const activity = context.activity;
1318
- const rawText = activity.text?.trim() ?? "";
1319
- const text = stripMSTeamsMentionTags(rawText);
1320
- const attachments = Array.isArray(activity.attachments) ? activity.attachments : [];
1321
- const wasMentioned = wasMSTeamsBotMentioned(activity);
1322
- const conversationId = normalizeMSTeamsConversationId(activity.conversation?.id ?? "");
1323
- const replyToId = activity.replyToId ?? void 0;
1324
- const implicitMention = Boolean(conversationId && replyToId && wasMSTeamsMessageSent(conversationId, replyToId));
1325
- await inboundDebouncer.enqueue({
1326
- context,
1327
- rawText,
1328
- text,
1329
- attachments,
1330
- wasMentioned,
1331
- implicitMention
1332
- });
1333
- };
1334
- }
1335
- //#endregion
1336
- //#region extensions/msteams/src/monitor-handler.ts
1337
- /**
1338
- * Handle fileConsent/invoke activities for large file uploads.
1339
- */
1340
- async function handleFileConsentInvoke(context, log) {
1341
- const expiredUploadMessage = "The file upload request has expired. Please try sending the file again.";
1342
- const activity = context.activity;
1343
- if (activity.type !== "invoke" || activity.name !== "fileConsent/invoke") return false;
1344
- const consentResponse = parseFileConsentInvoke(activity);
1345
- if (!consentResponse) {
1346
- log.debug?.("invalid file consent invoke", { value: activity.value });
1347
- return false;
1348
- }
1349
- const uploadId = typeof consentResponse.context?.uploadId === "string" ? consentResponse.context.uploadId : void 0;
1350
- const pendingFile = getPendingUpload(uploadId);
1351
- if (pendingFile) {
1352
- const pendingConversationId = normalizeMSTeamsConversationId(pendingFile.conversationId);
1353
- const invokeConversationId = normalizeMSTeamsConversationId(activity.conversation?.id ?? "");
1354
- if (!invokeConversationId || pendingConversationId !== invokeConversationId) {
1355
- log.info("file consent conversation mismatch", {
1356
- uploadId,
1357
- expectedConversationId: pendingConversationId,
1358
- receivedConversationId: invokeConversationId || void 0
1359
- });
1360
- if (consentResponse.action === "accept") await context.sendActivity(expiredUploadMessage);
1361
- return true;
1362
- }
1363
- }
1364
- if (consentResponse.action === "accept" && consentResponse.uploadInfo) if (pendingFile) {
1365
- log.debug?.("user accepted file consent, uploading", {
1366
- uploadId,
1367
- filename: pendingFile.filename,
1368
- size: pendingFile.buffer.length
1369
- });
1370
- try {
1371
- await uploadToConsentUrl({
1372
- url: consentResponse.uploadInfo.uploadUrl,
1373
- buffer: pendingFile.buffer,
1374
- contentType: pendingFile.contentType
1375
- });
1376
- const fileInfoCard = buildFileInfoCard({
1377
- filename: consentResponse.uploadInfo.name,
1378
- contentUrl: consentResponse.uploadInfo.contentUrl,
1379
- uniqueId: consentResponse.uploadInfo.uniqueId,
1380
- fileType: consentResponse.uploadInfo.fileType
1381
- });
1382
- await context.sendActivity({
1383
- type: "message",
1384
- attachments: [fileInfoCard]
1385
- });
1386
- log.info("file upload complete", {
1387
- uploadId,
1388
- filename: consentResponse.uploadInfo.name,
1389
- uniqueId: consentResponse.uploadInfo.uniqueId
1390
- });
1391
- } catch (err) {
1392
- log.debug?.("file upload failed", {
1393
- uploadId,
1394
- error: String(err)
1395
- });
1396
- await context.sendActivity(`File upload failed: ${String(err)}`);
1397
- } finally {
1398
- removePendingUpload(uploadId);
1399
- }
1400
- } else {
1401
- log.debug?.("pending file not found for consent", { uploadId });
1402
- await context.sendActivity(expiredUploadMessage);
1403
- }
1404
- else {
1405
- log.debug?.("user declined file consent", { uploadId });
1406
- removePendingUpload(uploadId);
1407
- }
1408
- return true;
1409
- }
1410
- function registerMSTeamsHandlers(handler, deps) {
1411
- const handleTeamsMessage = createMSTeamsMessageHandler(deps);
1412
- const originalRun = handler.run;
1413
- if (originalRun) handler.run = async (context) => {
1414
- const ctx = context;
1415
- if (ctx.activity?.type === "invoke" && ctx.activity?.name === "fileConsent/invoke") {
1416
- await ctx.sendActivity({
1417
- type: "invokeResponse",
1418
- value: { status: 200 }
1419
- });
1420
- try {
1421
- await withRevokedProxyFallback({
1422
- run: async () => await handleFileConsentInvoke(ctx, deps.log),
1423
- onRevoked: async () => true,
1424
- onRevokedLog: () => {
1425
- deps.log.debug?.("turn context revoked during file consent invoke; skipping delayed response");
1426
- }
1427
- });
1428
- } catch (err) {
1429
- deps.log.debug?.("file consent handler error", { error: String(err) });
1430
- }
1431
- return;
1432
- }
1433
- return originalRun.call(handler, context);
1434
- };
1435
- handler.onMessage(async (context, next) => {
1436
- try {
1437
- await handleTeamsMessage(context);
1438
- } catch (err) {
1439
- deps.runtime.error?.(`msteams handler failed: ${String(err)}`);
1440
- }
1441
- await next();
1442
- });
1443
- handler.onMembersAdded(async (context, next) => {
1444
- const membersAdded = context.activity?.membersAdded ?? [];
1445
- for (const member of membersAdded) if (member.id !== context.activity?.recipient?.id) deps.log.debug?.("member added", { member: member.id });
1446
- await next();
1447
- });
1448
- return handler;
1449
- }
1450
- //#endregion
1451
- //#region extensions/msteams/src/monitor.ts
1452
- const MSTEAMS_WEBHOOK_MAX_BODY_BYTES = DEFAULT_WEBHOOK_MAX_BODY_BYTES;
1453
- const MSTEAMS_WEBHOOK_INACTIVITY_TIMEOUT_MS = 3e4;
1454
- const MSTEAMS_WEBHOOK_REQUEST_TIMEOUT_MS = 3e4;
1455
- const MSTEAMS_WEBHOOK_HEADERS_TIMEOUT_MS = 15e3;
1456
- function applyMSTeamsWebhookTimeouts(httpServer, opts) {
1457
- const inactivityTimeoutMs = opts?.inactivityTimeoutMs ?? MSTEAMS_WEBHOOK_INACTIVITY_TIMEOUT_MS;
1458
- const requestTimeoutMs = opts?.requestTimeoutMs ?? MSTEAMS_WEBHOOK_REQUEST_TIMEOUT_MS;
1459
- const headersTimeoutMs = Math.min(opts?.headersTimeoutMs ?? MSTEAMS_WEBHOOK_HEADERS_TIMEOUT_MS, requestTimeoutMs);
1460
- httpServer.setTimeout(inactivityTimeoutMs);
1461
- httpServer.requestTimeout = requestTimeoutMs;
1462
- httpServer.headersTimeout = headersTimeoutMs;
1463
- }
1464
- async function monitorMSTeamsProvider(opts) {
1465
- const core = getMSTeamsRuntime();
1466
- const log = core.logging.getChildLogger({ name: "msteams" });
1467
- let cfg = opts.cfg;
1468
- let msteamsCfg = cfg.channels?.msteams;
1469
- if (!msteamsCfg?.enabled) {
1470
- log.debug?.("msteams provider disabled");
1471
- return {
1472
- app: null,
1473
- shutdown: async () => {}
1474
- };
1475
- }
1476
- const creds = resolveMSTeamsCredentials(msteamsCfg);
1477
- if (!creds) {
1478
- log.error("msteams credentials not configured");
1479
- return {
1480
- app: null,
1481
- shutdown: async () => {}
1482
- };
1483
- }
1484
- const appId = creds.appId;
1485
- const runtime = opts.runtime ?? {
1486
- log: console.log,
1487
- error: console.error,
1488
- exit: (code) => {
1489
- throw new Error(`exit ${code}`);
1490
- }
1491
- };
1492
- let allowFrom = msteamsCfg.allowFrom;
1493
- let groupAllowFrom = msteamsCfg.groupAllowFrom;
1494
- let teamsConfig = msteamsCfg.teams;
1495
- const cleanAllowEntry = (entry) => entry.replace(/^(msteams|teams):/i, "").replace(/^user:/i, "").trim();
1496
- const resolveAllowlistUsers = async (label, entries) => {
1497
- if (entries.length === 0) return {
1498
- additions: [],
1499
- unresolved: []
1500
- };
1501
- const resolved = await resolveMSTeamsUserAllowlist({
1502
- cfg,
1503
- entries
1504
- });
1505
- const additions = [];
1506
- const unresolved = [];
1507
- for (const entry of resolved) if (entry.resolved && entry.id) additions.push(entry.id);
1508
- else unresolved.push(entry.input);
1509
- summarizeMapping(label, resolved.filter((entry) => entry.resolved && entry.id).map((entry) => `${entry.input}→${entry.id}`), unresolved, runtime);
1510
- return {
1511
- additions,
1512
- unresolved
1513
- };
1514
- };
1515
- try {
1516
- const allowEntries = allowFrom?.map((entry) => cleanAllowEntry(String(entry))).filter((entry) => entry && entry !== "*") ?? [];
1517
- if (allowEntries.length > 0) {
1518
- const { additions } = await resolveAllowlistUsers("msteams users", allowEntries);
1519
- allowFrom = mergeAllowlist({
1520
- existing: allowFrom,
1521
- additions
1522
- });
1523
- }
1524
- if (Array.isArray(groupAllowFrom) && groupAllowFrom.length > 0) {
1525
- const groupEntries = groupAllowFrom.map((entry) => cleanAllowEntry(String(entry))).filter((entry) => entry && entry !== "*");
1526
- if (groupEntries.length > 0) {
1527
- const { additions } = await resolveAllowlistUsers("msteams group users", groupEntries);
1528
- groupAllowFrom = mergeAllowlist({
1529
- existing: groupAllowFrom,
1530
- additions
1531
- });
1532
- }
1533
- }
1534
- if (teamsConfig && Object.keys(teamsConfig).length > 0) {
1535
- const entries = [];
1536
- for (const [teamKey, teamCfg] of Object.entries(teamsConfig)) {
1537
- if (teamKey === "*") continue;
1538
- const channels = teamCfg?.channels ?? {};
1539
- const channelKeys = Object.keys(channels).filter((key) => key !== "*");
1540
- if (channelKeys.length === 0) {
1541
- entries.push({
1542
- input: teamKey,
1543
- teamKey
1544
- });
1545
- continue;
1546
- }
1547
- for (const channelKey of channelKeys) entries.push({
1548
- input: `${teamKey}/${channelKey}`,
1549
- teamKey,
1550
- channelKey
1551
- });
1552
- }
1553
- if (entries.length > 0) {
1554
- const resolved = await resolveMSTeamsChannelAllowlist({
1555
- cfg,
1556
- entries: entries.map((entry) => entry.input)
1557
- });
1558
- const mapping = [];
1559
- const unresolved = [];
1560
- const nextTeams = { ...teamsConfig };
1561
- resolved.forEach((entry, idx) => {
1562
- const source = entries[idx];
1563
- if (!source) return;
1564
- const sourceTeam = teamsConfig?.[source.teamKey] ?? {};
1565
- if (!entry.resolved || !entry.teamId) {
1566
- unresolved.push(entry.input);
1567
- return;
1568
- }
1569
- mapping.push(entry.channelId ? `${entry.input}→${entry.teamId}/${entry.channelId}` : `${entry.input}→${entry.teamId}`);
1570
- const existing = nextTeams[entry.teamId] ?? {};
1571
- const mergedChannels = {
1572
- ...sourceTeam.channels,
1573
- ...existing.channels
1574
- };
1575
- const mergedTeam = {
1576
- ...sourceTeam,
1577
- ...existing,
1578
- channels: mergedChannels
1579
- };
1580
- nextTeams[entry.teamId] = mergedTeam;
1581
- if (source.channelKey && entry.channelId) {
1582
- const sourceChannel = sourceTeam.channels?.[source.channelKey];
1583
- if (sourceChannel) nextTeams[entry.teamId] = {
1584
- ...mergedTeam,
1585
- channels: {
1586
- ...mergedChannels,
1587
- [entry.channelId]: {
1588
- ...sourceChannel,
1589
- ...mergedChannels?.[entry.channelId]
1590
- }
1591
- }
1592
- };
1593
- }
1594
- });
1595
- teamsConfig = nextTeams;
1596
- summarizeMapping("msteams channels", mapping, unresolved, runtime);
1597
- }
1598
- }
1599
- } catch (err) {
1600
- runtime.log?.(`msteams resolve failed; using config entries. ${String(err)}`);
1601
- }
1602
- msteamsCfg = {
1603
- ...msteamsCfg,
1604
- allowFrom,
1605
- groupAllowFrom,
1606
- teams: teamsConfig
1607
- };
1608
- cfg = {
1609
- ...cfg,
1610
- channels: {
1611
- ...cfg.channels,
1612
- msteams: msteamsCfg
1613
- }
1614
- };
1615
- const port = msteamsCfg.webhook?.port ?? 3978;
1616
- const textLimit = core.channel.text.resolveTextChunkLimit(cfg, "msteams");
1617
- const MB = 1024 * 1024;
1618
- const agentDefaults = cfg.agents?.defaults;
1619
- const mediaMaxBytes = typeof agentDefaults?.mediaMaxMb === "number" && agentDefaults.mediaMaxMb > 0 ? Math.floor(agentDefaults.mediaMaxMb * MB) : 8 * MB;
1620
- const conversationStore = opts.conversationStore ?? createMSTeamsConversationStoreFs();
1621
- const pollStore = opts.pollStore ?? createMSTeamsPollStoreFs();
1622
- log.info(`starting provider (port ${port})`);
1623
- const express = await import("express");
1624
- const { sdk, authConfig } = await loadMSTeamsSdkWithAuth(creds);
1625
- const { ActivityHandler, MsalTokenProvider, authorizeJWT } = sdk;
1626
- const tokenProvider = new MsalTokenProvider(authConfig);
1627
- const adapter = createMSTeamsAdapter(authConfig, sdk);
1628
- const handler = registerMSTeamsHandlers(new ActivityHandler(), {
1629
- cfg,
1630
- runtime,
1631
- appId,
1632
- adapter,
1633
- tokenProvider,
1634
- textLimit,
1635
- mediaMaxBytes,
1636
- conversationStore,
1637
- pollStore,
1638
- log
1639
- });
1640
- const expressApp = express.default();
1641
- expressApp.use(authorizeJWT(authConfig));
1642
- expressApp.use(express.json({ limit: MSTEAMS_WEBHOOK_MAX_BODY_BYTES }));
1643
- expressApp.use((err, _req, res, next) => {
1644
- if (err && typeof err === "object" && "status" in err && err.status === 413) {
1645
- res.status(413).json({ error: "Payload too large" });
1646
- return;
1647
- }
1648
- next(err);
1649
- });
1650
- const configuredPath = msteamsCfg.webhook?.path ?? "/api/messages";
1651
- const messageHandler = (req, res) => {
1652
- adapter.process(req, res, (context) => handler.run(context)).catch((err) => {
1653
- log.error("msteams webhook failed", { error: formatUnknownError(err) });
1654
- });
1655
- };
1656
- expressApp.post(configuredPath, messageHandler);
1657
- if (configuredPath !== "/api/messages") expressApp.post("/api/messages", messageHandler);
1658
- log.debug?.("listening on paths", {
1659
- primary: configuredPath,
1660
- fallback: "/api/messages"
1661
- });
1662
- const httpServer = expressApp.listen(port);
1663
- await new Promise((resolve, reject) => {
1664
- const onListening = () => {
1665
- httpServer.off("error", onError);
1666
- log.info(`msteams provider started on port ${port}`);
1667
- resolve();
1668
- };
1669
- const onError = (err) => {
1670
- httpServer.off("listening", onListening);
1671
- log.error("msteams server error", { error: String(err) });
1672
- reject(err);
1673
- };
1674
- httpServer.once("listening", onListening);
1675
- httpServer.once("error", onError);
1676
- });
1677
- applyMSTeamsWebhookTimeouts(httpServer);
1678
- httpServer.on("error", (err) => {
1679
- log.error("msteams server error", { error: String(err) });
1680
- });
1681
- const shutdown = async () => {
1682
- log.info("shutting down msteams provider");
1683
- return new Promise((resolve) => {
1684
- httpServer.close((err) => {
1685
- if (err) log.debug?.("msteams server close error", { error: String(err) });
1686
- resolve();
1687
- });
1688
- });
1689
- };
1690
- await keepHttpServerTaskAlive({
1691
- server: httpServer,
1692
- abortSignal: opts.abortSignal,
1693
- onAbort: shutdown
1694
- });
1695
- return {
1696
- app: expressApp,
1697
- shutdown
1698
- };
1699
- }
1700
- //#endregion
1701
- export { monitorMSTeamsProvider };