@spinabot/brigade 1.6.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/dist/agents/agent-loop.d.ts +13 -0
  2. package/dist/agents/agent-loop.d.ts.map +1 -1
  3. package/dist/agents/agent-loop.js +5 -0
  4. package/dist/agents/agent-loop.js.map +1 -1
  5. package/dist/agents/channels/access-control/group-tool-policy.d.ts +73 -0
  6. package/dist/agents/channels/access-control/group-tool-policy.d.ts.map +1 -0
  7. package/dist/agents/channels/access-control/group-tool-policy.js +193 -0
  8. package/dist/agents/channels/access-control/group-tool-policy.js.map +1 -0
  9. package/dist/agents/channels/access-control/index.d.ts +1 -0
  10. package/dist/agents/channels/access-control/index.d.ts.map +1 -1
  11. package/dist/agents/channels/access-control/index.js +1 -0
  12. package/dist/agents/channels/access-control/index.js.map +1 -1
  13. package/dist/agents/channels/bluebubbles/account-config.d.ts +253 -0
  14. package/dist/agents/channels/bluebubbles/account-config.d.ts.map +1 -0
  15. package/dist/agents/channels/bluebubbles/account-config.js +486 -0
  16. package/dist/agents/channels/bluebubbles/account-config.js.map +1 -0
  17. package/dist/agents/channels/bluebubbles/account-registry.d.ts +33 -0
  18. package/dist/agents/channels/bluebubbles/account-registry.d.ts.map +1 -0
  19. package/dist/agents/channels/bluebubbles/account-registry.js +46 -0
  20. package/dist/agents/channels/bluebubbles/account-registry.js.map +1 -0
  21. package/dist/agents/channels/bluebubbles/adapter.d.ts +45 -0
  22. package/dist/agents/channels/bluebubbles/adapter.d.ts.map +1 -0
  23. package/dist/agents/channels/bluebubbles/adapter.js +366 -0
  24. package/dist/agents/channels/bluebubbles/adapter.js.map +1 -0
  25. package/dist/agents/channels/bluebubbles/catchup-cursor.d.ts +52 -0
  26. package/dist/agents/channels/bluebubbles/catchup-cursor.d.ts.map +1 -0
  27. package/dist/agents/channels/bluebubbles/catchup-cursor.js +118 -0
  28. package/dist/agents/channels/bluebubbles/catchup-cursor.js.map +1 -0
  29. package/dist/agents/channels/bluebubbles/catchup.d.ts +114 -0
  30. package/dist/agents/channels/bluebubbles/catchup.d.ts.map +1 -0
  31. package/dist/agents/channels/bluebubbles/catchup.js +220 -0
  32. package/dist/agents/channels/bluebubbles/catchup.js.map +1 -0
  33. package/dist/agents/channels/bluebubbles/chat.d.ts +75 -0
  34. package/dist/agents/channels/bluebubbles/chat.d.ts.map +1 -0
  35. package/dist/agents/channels/bluebubbles/chat.js +182 -0
  36. package/dist/agents/channels/bluebubbles/chat.js.map +1 -0
  37. package/dist/agents/channels/bluebubbles/connection.d.ts +95 -0
  38. package/dist/agents/channels/bluebubbles/connection.d.ts.map +1 -0
  39. package/dist/agents/channels/bluebubbles/connection.js +413 -0
  40. package/dist/agents/channels/bluebubbles/connection.js.map +1 -0
  41. package/dist/agents/channels/bluebubbles/contact-names.d.ts +79 -0
  42. package/dist/agents/channels/bluebubbles/contact-names.d.ts.map +1 -0
  43. package/dist/agents/channels/bluebubbles/contact-names.js +188 -0
  44. package/dist/agents/channels/bluebubbles/contact-names.js.map +1 -0
  45. package/dist/agents/channels/bluebubbles/debounce.d.ts +78 -0
  46. package/dist/agents/channels/bluebubbles/debounce.d.ts.map +1 -0
  47. package/dist/agents/channels/bluebubbles/debounce.js +173 -0
  48. package/dist/agents/channels/bluebubbles/debounce.js.map +1 -0
  49. package/dist/agents/channels/bluebubbles/dedupe.d.ts +25 -0
  50. package/dist/agents/channels/bluebubbles/dedupe.d.ts.map +1 -0
  51. package/dist/agents/channels/bluebubbles/dedupe.js +35 -0
  52. package/dist/agents/channels/bluebubbles/dedupe.js.map +1 -0
  53. package/dist/agents/channels/bluebubbles/effects.d.ts +17 -0
  54. package/dist/agents/channels/bluebubbles/effects.d.ts.map +1 -0
  55. package/dist/agents/channels/bluebubbles/effects.js +57 -0
  56. package/dist/agents/channels/bluebubbles/effects.js.map +1 -0
  57. package/dist/agents/channels/bluebubbles/history.d.ts +56 -0
  58. package/dist/agents/channels/bluebubbles/history.d.ts.map +1 -0
  59. package/dist/agents/channels/bluebubbles/history.js +140 -0
  60. package/dist/agents/channels/bluebubbles/history.js.map +1 -0
  61. package/dist/agents/channels/bluebubbles/index.d.ts +18 -0
  62. package/dist/agents/channels/bluebubbles/index.d.ts.map +1 -0
  63. package/dist/agents/channels/bluebubbles/index.js +18 -0
  64. package/dist/agents/channels/bluebubbles/index.js.map +1 -0
  65. package/dist/agents/channels/bluebubbles/media.d.ts +104 -0
  66. package/dist/agents/channels/bluebubbles/media.d.ts.map +1 -0
  67. package/dist/agents/channels/bluebubbles/media.js +222 -0
  68. package/dist/agents/channels/bluebubbles/media.js.map +1 -0
  69. package/dist/agents/channels/bluebubbles/messaging.d.ts +13 -0
  70. package/dist/agents/channels/bluebubbles/messaging.d.ts.map +1 -0
  71. package/dist/agents/channels/bluebubbles/messaging.js +36 -0
  72. package/dist/agents/channels/bluebubbles/messaging.js.map +1 -0
  73. package/dist/agents/channels/bluebubbles/module.d.ts +24 -0
  74. package/dist/agents/channels/bluebubbles/module.d.ts.map +1 -0
  75. package/dist/agents/channels/bluebubbles/module.js +52 -0
  76. package/dist/agents/channels/bluebubbles/module.js.map +1 -0
  77. package/dist/agents/channels/bluebubbles/normalize.d.ts +111 -0
  78. package/dist/agents/channels/bluebubbles/normalize.d.ts.map +1 -0
  79. package/dist/agents/channels/bluebubbles/normalize.js +239 -0
  80. package/dist/agents/channels/bluebubbles/normalize.js.map +1 -0
  81. package/dist/agents/channels/bluebubbles/plugin.d.ts +46 -0
  82. package/dist/agents/channels/bluebubbles/plugin.d.ts.map +1 -0
  83. package/dist/agents/channels/bluebubbles/plugin.js +242 -0
  84. package/dist/agents/channels/bluebubbles/plugin.js.map +1 -0
  85. package/dist/agents/channels/bluebubbles/probe.d.ts +79 -0
  86. package/dist/agents/channels/bluebubbles/probe.d.ts.map +1 -0
  87. package/dist/agents/channels/bluebubbles/probe.js +138 -0
  88. package/dist/agents/channels/bluebubbles/probe.js.map +1 -0
  89. package/dist/agents/channels/bluebubbles/reactions.d.ts +46 -0
  90. package/dist/agents/channels/bluebubbles/reactions.d.ts.map +1 -0
  91. package/dist/agents/channels/bluebubbles/reactions.js +207 -0
  92. package/dist/agents/channels/bluebubbles/reactions.js.map +1 -0
  93. package/dist/agents/channels/bluebubbles/send.d.ts +132 -0
  94. package/dist/agents/channels/bluebubbles/send.d.ts.map +1 -0
  95. package/dist/agents/channels/bluebubbles/send.js +327 -0
  96. package/dist/agents/channels/bluebubbles/send.js.map +1 -0
  97. package/dist/agents/channels/bluebubbles/status-issues.d.ts +57 -0
  98. package/dist/agents/channels/bluebubbles/status-issues.d.ts.map +1 -0
  99. package/dist/agents/channels/bluebubbles/status-issues.js +93 -0
  100. package/dist/agents/channels/bluebubbles/status-issues.js.map +1 -0
  101. package/dist/agents/channels/bluebubbles/types.d.ts +69 -0
  102. package/dist/agents/channels/bluebubbles/types.d.ts.map +1 -0
  103. package/dist/agents/channels/bluebubbles/types.js +118 -0
  104. package/dist/agents/channels/bluebubbles/types.js.map +1 -0
  105. package/dist/agents/channels/bluebubbles/webhook.d.ts +97 -0
  106. package/dist/agents/channels/bluebubbles/webhook.d.ts.map +1 -0
  107. package/dist/agents/channels/bluebubbles/webhook.js +249 -0
  108. package/dist/agents/channels/bluebubbles/webhook.js.map +1 -0
  109. package/dist/agents/channels/bundled-channel-metas.d.ts +13 -0
  110. package/dist/agents/channels/bundled-channel-metas.d.ts.map +1 -1
  111. package/dist/agents/channels/bundled-channel-metas.js +33 -0
  112. package/dist/agents/channels/bundled-channel-metas.js.map +1 -1
  113. package/dist/agents/channels/discord/account-config.d.ts +60 -0
  114. package/dist/agents/channels/discord/account-config.d.ts.map +1 -1
  115. package/dist/agents/channels/discord/account-config.js +89 -0
  116. package/dist/agents/channels/discord/account-config.js.map +1 -1
  117. package/dist/agents/channels/discord/adapter.d.ts +24 -1
  118. package/dist/agents/channels/discord/adapter.d.ts.map +1 -1
  119. package/dist/agents/channels/discord/adapter.js +208 -41
  120. package/dist/agents/channels/discord/adapter.js.map +1 -1
  121. package/dist/agents/channels/discord/component-blocks.d.ts +108 -0
  122. package/dist/agents/channels/discord/component-blocks.d.ts.map +1 -0
  123. package/dist/agents/channels/discord/component-blocks.js +113 -0
  124. package/dist/agents/channels/discord/component-blocks.js.map +1 -0
  125. package/dist/agents/channels/discord/components.d.ts +78 -0
  126. package/dist/agents/channels/discord/components.d.ts.map +1 -1
  127. package/dist/agents/channels/discord/components.js +89 -0
  128. package/dist/agents/channels/discord/components.js.map +1 -1
  129. package/dist/agents/channels/discord/connection.d.ts +195 -12
  130. package/dist/agents/channels/discord/connection.d.ts.map +1 -1
  131. package/dist/agents/channels/discord/connection.js +852 -38
  132. package/dist/agents/channels/discord/connection.js.map +1 -1
  133. package/dist/agents/channels/discord/directory-cache.d.ts +47 -0
  134. package/dist/agents/channels/discord/directory-cache.d.ts.map +1 -0
  135. package/dist/agents/channels/discord/directory-cache.js +131 -0
  136. package/dist/agents/channels/discord/directory-cache.js.map +1 -0
  137. package/dist/agents/channels/discord/directory-live.d.ts +61 -0
  138. package/dist/agents/channels/discord/directory-live.d.ts.map +1 -0
  139. package/dist/agents/channels/discord/directory-live.js +140 -0
  140. package/dist/agents/channels/discord/directory-live.js.map +1 -0
  141. package/dist/agents/channels/discord/format.d.ts +15 -0
  142. package/dist/agents/channels/discord/format.d.ts.map +1 -1
  143. package/dist/agents/channels/discord/format.js +56 -0
  144. package/dist/agents/channels/discord/format.js.map +1 -1
  145. package/dist/agents/channels/discord/guilds.d.ts +25 -0
  146. package/dist/agents/channels/discord/guilds.d.ts.map +1 -0
  147. package/dist/agents/channels/discord/guilds.js +46 -0
  148. package/dist/agents/channels/discord/guilds.js.map +1 -0
  149. package/dist/agents/channels/discord/inbound-extras.d.ts +166 -9
  150. package/dist/agents/channels/discord/inbound-extras.d.ts.map +1 -1
  151. package/dist/agents/channels/discord/inbound-extras.js +246 -8
  152. package/dist/agents/channels/discord/inbound-extras.js.map +1 -1
  153. package/dist/agents/channels/discord/index.d.ts +10 -3
  154. package/dist/agents/channels/discord/index.d.ts.map +1 -1
  155. package/dist/agents/channels/discord/index.js +10 -3
  156. package/dist/agents/channels/discord/index.js.map +1 -1
  157. package/dist/agents/channels/discord/modal-registry.d.ts +89 -0
  158. package/dist/agents/channels/discord/modal-registry.d.ts.map +1 -0
  159. package/dist/agents/channels/discord/modal-registry.js +104 -0
  160. package/dist/agents/channels/discord/modal-registry.js.map +1 -0
  161. package/dist/agents/channels/discord/modals.d.ts +100 -0
  162. package/dist/agents/channels/discord/modals.d.ts.map +1 -0
  163. package/dist/agents/channels/discord/modals.js +124 -0
  164. package/dist/agents/channels/discord/modals.js.map +1 -0
  165. package/dist/agents/channels/discord/permission-audit.d.ts +43 -0
  166. package/dist/agents/channels/discord/permission-audit.d.ts.map +1 -0
  167. package/dist/agents/channels/discord/permission-audit.js +192 -0
  168. package/dist/agents/channels/discord/permission-audit.js.map +1 -0
  169. package/dist/agents/channels/discord/plugin.d.ts +18 -2
  170. package/dist/agents/channels/discord/plugin.d.ts.map +1 -1
  171. package/dist/agents/channels/discord/plugin.js +73 -4
  172. package/dist/agents/channels/discord/plugin.js.map +1 -1
  173. package/dist/agents/channels/discord/probe.d.ts +23 -1
  174. package/dist/agents/channels/discord/probe.d.ts.map +1 -1
  175. package/dist/agents/channels/discord/probe.js +40 -5
  176. package/dist/agents/channels/discord/probe.js.map +1 -1
  177. package/dist/agents/channels/discord/rest-actions.d.ts +346 -0
  178. package/dist/agents/channels/discord/rest-actions.d.ts.map +1 -0
  179. package/dist/agents/channels/discord/rest-actions.js +559 -0
  180. package/dist/agents/channels/discord/rest-actions.js.map +1 -0
  181. package/dist/agents/channels/discord/rest-components.d.ts +122 -0
  182. package/dist/agents/channels/discord/rest-components.d.ts.map +1 -0
  183. package/dist/agents/channels/discord/rest-components.js +243 -0
  184. package/dist/agents/channels/discord/rest-components.js.map +1 -0
  185. package/dist/agents/channels/discord/security-audit.d.ts +29 -0
  186. package/dist/agents/channels/discord/security-audit.d.ts.map +1 -0
  187. package/dist/agents/channels/discord/security-audit.js +94 -0
  188. package/dist/agents/channels/discord/security-audit.js.map +1 -0
  189. package/dist/agents/channels/discord/security-doctor.d.ts +43 -0
  190. package/dist/agents/channels/discord/security-doctor.d.ts.map +1 -0
  191. package/dist/agents/channels/discord/security-doctor.js +83 -0
  192. package/dist/agents/channels/discord/security-doctor.js.map +1 -0
  193. package/dist/agents/channels/discord/status-issues.d.ts +37 -0
  194. package/dist/agents/channels/discord/status-issues.d.ts.map +1 -0
  195. package/dist/agents/channels/discord/status-issues.js +66 -0
  196. package/dist/agents/channels/discord/status-issues.js.map +1 -0
  197. package/dist/agents/channels/discord/subagent-thread-binding-store.d.ts +57 -0
  198. package/dist/agents/channels/discord/subagent-thread-binding-store.d.ts.map +1 -0
  199. package/dist/agents/channels/discord/subagent-thread-binding-store.js +98 -0
  200. package/dist/agents/channels/discord/subagent-thread-binding-store.js.map +1 -0
  201. package/dist/agents/channels/discord/subagent-thread-binding.d.ts +95 -0
  202. package/dist/agents/channels/discord/subagent-thread-binding.d.ts.map +1 -0
  203. package/dist/agents/channels/discord/subagent-thread-binding.js +208 -0
  204. package/dist/agents/channels/discord/subagent-thread-binding.js.map +1 -0
  205. package/dist/agents/channels/discord/system-events.d.ts +31 -0
  206. package/dist/agents/channels/discord/system-events.d.ts.map +1 -0
  207. package/dist/agents/channels/discord/system-events.js +74 -0
  208. package/dist/agents/channels/discord/system-events.js.map +1 -0
  209. package/dist/agents/channels/general-callback.d.ts +12 -0
  210. package/dist/agents/channels/general-callback.d.ts.map +1 -1
  211. package/dist/agents/channels/general-callback.js +18 -0
  212. package/dist/agents/channels/general-callback.js.map +1 -1
  213. package/dist/agents/channels/imessage/account-config.d.ts +178 -0
  214. package/dist/agents/channels/imessage/account-config.d.ts.map +1 -0
  215. package/dist/agents/channels/imessage/account-config.js +371 -0
  216. package/dist/agents/channels/imessage/account-config.js.map +1 -0
  217. package/dist/agents/channels/imessage/adapter.d.ts +36 -0
  218. package/dist/agents/channels/imessage/adapter.d.ts.map +1 -0
  219. package/dist/agents/channels/imessage/adapter.js +286 -0
  220. package/dist/agents/channels/imessage/adapter.js.map +1 -0
  221. package/dist/agents/channels/imessage/client.d.ts +99 -0
  222. package/dist/agents/channels/imessage/client.d.ts.map +1 -0
  223. package/dist/agents/channels/imessage/client.js +231 -0
  224. package/dist/agents/channels/imessage/client.js.map +1 -0
  225. package/dist/agents/channels/imessage/connection.d.ts +101 -0
  226. package/dist/agents/channels/imessage/connection.d.ts.map +1 -0
  227. package/dist/agents/channels/imessage/connection.js +367 -0
  228. package/dist/agents/channels/imessage/connection.js.map +1 -0
  229. package/dist/agents/channels/imessage/format.d.ts +45 -0
  230. package/dist/agents/channels/imessage/format.d.ts.map +1 -0
  231. package/dist/agents/channels/imessage/format.js +170 -0
  232. package/dist/agents/channels/imessage/format.js.map +1 -0
  233. package/dist/agents/channels/imessage/history.d.ts +49 -0
  234. package/dist/agents/channels/imessage/history.d.ts.map +1 -0
  235. package/dist/agents/channels/imessage/history.js +74 -0
  236. package/dist/agents/channels/imessage/history.js.map +1 -0
  237. package/dist/agents/channels/imessage/index.d.ts +25 -0
  238. package/dist/agents/channels/imessage/index.d.ts.map +1 -0
  239. package/dist/agents/channels/imessage/index.js +25 -0
  240. package/dist/agents/channels/imessage/index.js.map +1 -0
  241. package/dist/agents/channels/imessage/media.d.ts +92 -0
  242. package/dist/agents/channels/imessage/media.d.ts.map +1 -0
  243. package/dist/agents/channels/imessage/media.js +196 -0
  244. package/dist/agents/channels/imessage/media.js.map +1 -0
  245. package/dist/agents/channels/imessage/messaging.d.ts +14 -0
  246. package/dist/agents/channels/imessage/messaging.d.ts.map +1 -0
  247. package/dist/agents/channels/imessage/messaging.js +37 -0
  248. package/dist/agents/channels/imessage/messaging.js.map +1 -0
  249. package/dist/agents/channels/imessage/module.d.ts +16 -0
  250. package/dist/agents/channels/imessage/module.d.ts.map +1 -0
  251. package/dist/agents/channels/imessage/module.js +23 -0
  252. package/dist/agents/channels/imessage/module.js.map +1 -0
  253. package/dist/agents/channels/imessage/monitor.d.ts +207 -0
  254. package/dist/agents/channels/imessage/monitor.d.ts.map +1 -0
  255. package/dist/agents/channels/imessage/monitor.js +504 -0
  256. package/dist/agents/channels/imessage/monitor.js.map +1 -0
  257. package/dist/agents/channels/imessage/plugin.d.ts +53 -0
  258. package/dist/agents/channels/imessage/plugin.d.ts.map +1 -0
  259. package/dist/agents/channels/imessage/plugin.js +215 -0
  260. package/dist/agents/channels/imessage/plugin.js.map +1 -0
  261. package/dist/agents/channels/imessage/probe.d.ts +68 -0
  262. package/dist/agents/channels/imessage/probe.d.ts.map +1 -0
  263. package/dist/agents/channels/imessage/probe.js +134 -0
  264. package/dist/agents/channels/imessage/probe.js.map +1 -0
  265. package/dist/agents/channels/imessage/remote-attachments.d.ts +61 -0
  266. package/dist/agents/channels/imessage/remote-attachments.d.ts.map +1 -0
  267. package/dist/agents/channels/imessage/remote-attachments.js +131 -0
  268. package/dist/agents/channels/imessage/remote-attachments.js.map +1 -0
  269. package/dist/agents/channels/imessage/send.d.ts +61 -0
  270. package/dist/agents/channels/imessage/send.d.ts.map +1 -0
  271. package/dist/agents/channels/imessage/send.js +108 -0
  272. package/dist/agents/channels/imessage/send.js.map +1 -0
  273. package/dist/agents/channels/imessage/targets.d.ts +91 -0
  274. package/dist/agents/channels/imessage/targets.d.ts.map +1 -0
  275. package/dist/agents/channels/imessage/targets.js +245 -0
  276. package/dist/agents/channels/imessage/targets.js.map +1 -0
  277. package/dist/agents/channels/imessage/watch-error.d.ts +23 -0
  278. package/dist/agents/channels/imessage/watch-error.d.ts.map +1 -0
  279. package/dist/agents/channels/imessage/watch-error.js +69 -0
  280. package/dist/agents/channels/imessage/watch-error.js.map +1 -0
  281. package/dist/agents/channels/inbound-pipeline.d.ts +11 -0
  282. package/dist/agents/channels/inbound-pipeline.d.ts.map +1 -1
  283. package/dist/agents/channels/inbound-pipeline.js +25 -4
  284. package/dist/agents/channels/inbound-pipeline.js.map +1 -1
  285. package/dist/agents/channels/manager.d.ts +9 -0
  286. package/dist/agents/channels/manager.d.ts.map +1 -1
  287. package/dist/agents/channels/manager.js.map +1 -1
  288. package/dist/agents/channels/sdk.d.ts +4 -0
  289. package/dist/agents/channels/sdk.d.ts.map +1 -1
  290. package/dist/agents/channels/sdk.js +4 -0
  291. package/dist/agents/channels/sdk.js.map +1 -1
  292. package/dist/agents/extensions/modules/index.d.ts.map +1 -1
  293. package/dist/agents/extensions/modules/index.js +12 -0
  294. package/dist/agents/extensions/modules/index.js.map +1 -1
  295. package/dist/agents/extensions/types.d.ts +7 -0
  296. package/dist/agents/extensions/types.d.ts.map +1 -1
  297. package/dist/agents/extensions/types.js.map +1 -1
  298. package/dist/agents/session-wiring.d.ts +31 -0
  299. package/dist/agents/session-wiring.d.ts.map +1 -1
  300. package/dist/agents/session-wiring.js +45 -2
  301. package/dist/agents/session-wiring.js.map +1 -1
  302. package/dist/agents/subagent-announce-delivery.d.ts +10 -0
  303. package/dist/agents/subagent-announce-delivery.d.ts.map +1 -1
  304. package/dist/agents/subagent-announce-delivery.js +1 -0
  305. package/dist/agents/subagent-announce-delivery.js.map +1 -1
  306. package/dist/agents/subagent-completion-bridge.d.ts.map +1 -1
  307. package/dist/agents/subagent-completion-bridge.js +81 -0
  308. package/dist/agents/subagent-completion-bridge.js.map +1 -1
  309. package/dist/agents/subagent-spawn.d.ts.map +1 -1
  310. package/dist/agents/subagent-spawn.js +57 -4
  311. package/dist/agents/subagent-spawn.js.map +1 -1
  312. package/dist/agents/tools/bluebubbles-action-tool.d.ts +66 -0
  313. package/dist/agents/tools/bluebubbles-action-tool.d.ts.map +1 -0
  314. package/dist/agents/tools/bluebubbles-action-tool.js +234 -0
  315. package/dist/agents/tools/bluebubbles-action-tool.js.map +1 -0
  316. package/dist/agents/tools/discord-action-tool.d.ts +224 -0
  317. package/dist/agents/tools/discord-action-tool.d.ts.map +1 -0
  318. package/dist/agents/tools/discord-action-tool.js +848 -0
  319. package/dist/agents/tools/discord-action-tool.js.map +1 -0
  320. package/dist/agents/tools/registry.d.ts.map +1 -1
  321. package/dist/agents/tools/registry.js +39 -0
  322. package/dist/agents/tools/registry.js.map +1 -1
  323. package/dist/agents/tools/sessions/index.d.ts +8 -0
  324. package/dist/agents/tools/sessions/index.d.ts.map +1 -1
  325. package/dist/agents/tools/sessions/index.js +15 -3
  326. package/dist/agents/tools/sessions/index.js.map +1 -1
  327. package/dist/buildstamp.json +1 -1
  328. package/dist/cli/commands/channels.d.ts +2 -0
  329. package/dist/cli/commands/channels.d.ts.map +1 -1
  330. package/dist/cli/commands/channels.js +58 -1
  331. package/dist/cli/commands/channels.js.map +1 -1
  332. package/dist/core/server.d.ts.map +1 -1
  333. package/dist/core/server.js +48 -2
  334. package/dist/core/server.js.map +1 -1
  335. package/dist/infra/net/fetch-guard.d.ts +24 -2
  336. package/dist/infra/net/fetch-guard.d.ts.map +1 -1
  337. package/dist/infra/net/fetch-guard.js +78 -31
  338. package/dist/infra/net/fetch-guard.js.map +1 -1
  339. package/package.json +1 -1
@@ -0,0 +1,249 @@
1
+ /**
2
+ * BlueBubbles inbound gateway route.
3
+ *
4
+ * BlueBubbles POSTs each event to a Brigade gateway HTTP route. Because a
5
+ * BlueBubbles webhook CANNOT send custom headers, the server PASSWORD is embedded
6
+ * in the registered webhook URL's QUERY STRING (`?password=…` / `?guid=…`) and
7
+ * verified on each inbound POST. (Some BlueBubbles versions also send the token
8
+ * as a header — those are accepted too.) Verification happens FIRST, before the
9
+ * body is parsed / routed, so a forged event can't reach the agent.
10
+ *
11
+ * Mirrors `slack/webhook.ts` (the webhook-ingress blueprint): build an
12
+ * `HttpRoute`, register it via `b.httpRoute(...)` from the module, resolve the
13
+ * started adapter (`resolveSink`) at REQUEST time (late binding — the route is
14
+ * registered before the plugin starts accounts), always reply 200 so BlueBubbles
15
+ * doesn't retry-storm.
16
+ */
17
+ import { timingSafeEqual } from "node:crypto";
18
+ /** Cap on the webhook body (a BlueBubbles event is small; 4 MiB is generous). */
19
+ const WEBHOOK_MAX_BODY_BYTES = 4 * 1024 * 1024;
20
+ /** Default fixed-window rate-limit: max authenticated requests per window. */
21
+ export const WEBHOOK_RATE_LIMIT_MAX = 240;
22
+ /** Default fixed-window length (ms). 240 req / 10s ≈ 24 rps sustained per account. */
23
+ export const WEBHOOK_RATE_LIMIT_WINDOW_MS = 10_000;
24
+ /** Default bound on concurrently in-flight handler bodies (normalize/dedupe/dispatch). */
25
+ export const WEBHOOK_MAX_IN_FLIGHT = 32;
26
+ /** Build a fixed-window rate limiter (`max` requests per `windowMs`). */
27
+ export function createFixedWindowRateLimiter(max, windowMs) {
28
+ const cap = Math.max(1, Math.floor(max));
29
+ const span = Math.max(1, Math.floor(windowMs));
30
+ let windowStart = 0;
31
+ let count = 0;
32
+ return {
33
+ hit(nowMs = Date.now()) {
34
+ if (nowMs - windowStart >= span) {
35
+ windowStart = nowMs;
36
+ count = 0;
37
+ }
38
+ count++;
39
+ return count <= cap;
40
+ },
41
+ };
42
+ }
43
+ /** Build an in-flight concurrency limiter capped at `max` simultaneous holders. */
44
+ export function createInFlightLimiter(max) {
45
+ const cap = Math.max(1, Math.floor(max));
46
+ let active = 0;
47
+ return {
48
+ tryAcquire() {
49
+ if (active >= cap)
50
+ return null;
51
+ active++;
52
+ let released = false;
53
+ return () => {
54
+ if (released)
55
+ return;
56
+ released = true;
57
+ active--;
58
+ };
59
+ },
60
+ inFlight: () => active,
61
+ };
62
+ }
63
+ /** Constant-time compare of two strings — avoids leaking via timing. */
64
+ export function safeEqualToken(a, b) {
65
+ if (a.length !== b.length)
66
+ return false;
67
+ try {
68
+ return timingSafeEqual(Buffer.from(a, "utf8"), Buffer.from(b, "utf8"));
69
+ }
70
+ catch {
71
+ return false;
72
+ }
73
+ }
74
+ /**
75
+ * Verify a BlueBubbles webhook request's password. The supplied token comes from
76
+ * the URL query (`password` / `guid`) or, when present, a header. When
77
+ * `expectedPassword` is empty the check is SKIPPED (returns true) — the operator
78
+ * opted out (not recommended). Returns false when a password is configured but
79
+ * the supplied one is missing / wrong.
80
+ */
81
+ export function verifyBlueBubblesWebhook(args) {
82
+ if (!args.expectedPassword)
83
+ return true; // no password configured → skip
84
+ const supplied = (args.suppliedToken ?? "").trim();
85
+ if (!supplied)
86
+ return false;
87
+ return safeEqualToken(supplied, args.expectedPassword);
88
+ }
89
+ /** Pull the auth token from the request URL query or a header. */
90
+ function extractSuppliedToken(req) {
91
+ // URL query (BlueBubbles can't set custom headers, so this is the primary path).
92
+ const rawUrl = req.url ?? "";
93
+ const qIdx = rawUrl.indexOf("?");
94
+ if (qIdx >= 0) {
95
+ const params = new URLSearchParams(rawUrl.slice(qIdx + 1));
96
+ const fromQuery = params.get("password") ?? params.get("guid");
97
+ if (fromQuery)
98
+ return fromQuery;
99
+ }
100
+ // Header fallbacks (some BB proxy setups inject them).
101
+ const header = (name) => {
102
+ const v = req.headers[name];
103
+ const s = Array.isArray(v) ? v[0] : v;
104
+ return s ? s.replace(/^Bearer\s+/i, "").trim() : undefined;
105
+ };
106
+ return header("x-password") ?? header("x-guid") ?? header("x-bluebubbles-guid") ?? header("authorization");
107
+ }
108
+ /** Read a request body up to `maxBytes`, rejecting (→ null) when it overflows. */
109
+ function readBody(req, maxBytes) {
110
+ return new Promise((resolve) => {
111
+ const chunks = [];
112
+ let size = 0;
113
+ let overflowed = false;
114
+ req.on("data", (chunk) => {
115
+ if (overflowed)
116
+ return;
117
+ size += chunk.length;
118
+ if (size > maxBytes) {
119
+ overflowed = true;
120
+ resolve(null);
121
+ return;
122
+ }
123
+ chunks.push(chunk);
124
+ });
125
+ req.on("end", () => {
126
+ if (overflowed)
127
+ return;
128
+ resolve(Buffer.concat(chunks).toString("utf8"));
129
+ });
130
+ req.on("error", () => resolve(null));
131
+ });
132
+ }
133
+ /**
134
+ * Parse the request body. BlueBubbles delivers JSON; a form-encoded fallback
135
+ * (some proxy setups) carries the JSON under a `payload`/`data` field.
136
+ */
137
+ export function parseBlueBubblesBody(rawBody, contentType) {
138
+ const ct = (contentType ?? "").toLowerCase();
139
+ const tryJson = (s) => {
140
+ try {
141
+ const v = JSON.parse(s);
142
+ return v && typeof v === "object" ? v : null;
143
+ }
144
+ catch {
145
+ return null;
146
+ }
147
+ };
148
+ let body = null;
149
+ if (ct.includes("application/x-www-form-urlencoded")) {
150
+ const params = new URLSearchParams(rawBody);
151
+ const inner = params.get("payload") ?? params.get("data") ?? params.get("message");
152
+ if (inner)
153
+ body = tryJson(inner);
154
+ }
155
+ if (!body)
156
+ body = tryJson(rawBody);
157
+ if (!body)
158
+ return null;
159
+ const type = typeof body.type === "string" ? body.type : undefined;
160
+ return { ...(type ? { type } : {}), payload: body };
161
+ }
162
+ /**
163
+ * Build the Brigade `HttpRoute` for the BlueBubbles webhook. Register it via
164
+ * `b.httpRoute(...)` from the module.
165
+ */
166
+ export function buildBlueBubblesWebhookRoute(args) {
167
+ // Per-route limiters (one route = one account). Built once and closed over so
168
+ // the window/in-flight counters persist across requests.
169
+ const rateLimiter = createFixedWindowRateLimiter(args.rateLimitMax ?? WEBHOOK_RATE_LIMIT_MAX, args.rateLimitWindowMs ?? WEBHOOK_RATE_LIMIT_WINDOW_MS);
170
+ const inFlight = createInFlightLimiter(args.maxInFlight ?? WEBHOOK_MAX_IN_FLIGHT);
171
+ const handler = async (req, res) => {
172
+ const reply = (status, body) => {
173
+ res.statusCode = status;
174
+ res.setHeader("content-type", "application/json");
175
+ res.end(typeof body === "string" ? body : JSON.stringify(body));
176
+ };
177
+ if ((req.method ?? "").toUpperCase() !== "POST") {
178
+ reply(405, { ok: false, error: "method not allowed" });
179
+ return;
180
+ }
181
+ // Auth FIRST — verify the password before reading / parsing the body.
182
+ const supplied = extractSuppliedToken(req);
183
+ if (!verifyBlueBubblesWebhook({ expectedPassword: args.password, suppliedToken: supplied })) {
184
+ args.log?.("bluebubbles webhook rejected — bad password");
185
+ reply(401, { ok: false, error: "unauthorized" });
186
+ return;
187
+ }
188
+ // Rate-limit the authenticated stream — a replay-storm / hostile sender that
189
+ // has the password must not run the normalize/dedupe/dispatch path
190
+ // unbounded. Over-limit requests are dropped with 429 BEFORE the body is
191
+ // read, so the cost of an abusive burst is bounded.
192
+ if (!rateLimiter.hit(args.now?.())) {
193
+ args.log?.("bluebubbles webhook throttled — over rate limit");
194
+ reply(429, { ok: false, error: "rate limited" });
195
+ return;
196
+ }
197
+ // Bound concurrent in-flight handler bodies. When the cap is reached, shed
198
+ // load with 429 rather than letting unbounded parses/dispatches pile up.
199
+ const release = inFlight.tryAcquire();
200
+ if (!release) {
201
+ args.log?.("bluebubbles webhook throttled — in-flight cap reached");
202
+ reply(429, { ok: false, error: "busy" });
203
+ return;
204
+ }
205
+ try {
206
+ // The gateway dispatcher has ALREADY drained + buffered the body onto
207
+ // `req.body`. Read that first; only stream when exercised outside the gateway.
208
+ const pre = req.body;
209
+ const raw = pre ? pre.toString("utf8") : await readBody(req, WEBHOOK_MAX_BODY_BYTES);
210
+ if (raw === null) {
211
+ reply(413, { ok: false, error: "payload too large" });
212
+ return;
213
+ }
214
+ const contentType = (() => {
215
+ const c = req.headers["content-type"];
216
+ return Array.isArray(c) ? (c[0] ?? "") : (c ?? "");
217
+ })();
218
+ const parsed = parseBlueBubblesBody(raw, contentType);
219
+ if (!parsed) {
220
+ reply(400, { ok: false, error: "invalid body" });
221
+ return;
222
+ }
223
+ const sink = args.resolveSink();
224
+ if (sink) {
225
+ try {
226
+ sink.feedWebhookEvent(parsed.type, parsed.payload);
227
+ }
228
+ catch (err) {
229
+ args.log?.("bluebubbles webhook dispatch threw", { error: err instanceof Error ? err.message : String(err) });
230
+ }
231
+ }
232
+ // Always 200 so BlueBubbles doesn't retry-storm.
233
+ reply(200, { ok: true });
234
+ }
235
+ finally {
236
+ release();
237
+ }
238
+ };
239
+ return {
240
+ method: "POST",
241
+ path: args.path,
242
+ auth: "none", // BlueBubbles can't present operator-auth; the password query IS the auth.
243
+ match: "exact",
244
+ maxBodyBytes: WEBHOOK_MAX_BODY_BYTES,
245
+ skipSessionGuard: true,
246
+ handler,
247
+ };
248
+ }
249
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../../src/agents/channels/bluebubbles/webhook.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,19 @@ export declare const TELEGRAM_CHANNEL_META: ChannelMeta;
25
25
  export declare const SLACK_CHANNEL_META: ChannelMeta;
26
26
  /** Discord channel metadata (markdown-capable; visible everywhere by default). */
27
27
  export declare const DISCORD_CHANNEL_META: ChannelMeta;
28
+ /**
29
+ * iMessage channel metadata. iMessage has NO rich markup (plain text only), so
30
+ * it is NOT markdown-capable — the assembler's markdown gate strips formatting
31
+ * for this channel. Driven by the `imsg` CLI as a JSON-RPC subprocess.
32
+ */
33
+ export declare const IMESSAGE_CHANNEL_META: ChannelMeta;
34
+ /**
35
+ * BlueBubbles channel metadata. Like iMessage, BlueBubbles has NO rich markup
36
+ * (plain text only), so it is NOT markdown-capable — the assembler's markdown
37
+ * gate strips formatting for this channel. Driven by the BlueBubbles macOS server
38
+ * over REST (outbound) + a webhook (inbound).
39
+ */
40
+ export declare const BLUEBUBBLES_CHANNEL_META: ChannelMeta;
28
41
  /** Every bundled channel meta, in declaration order. The registry seeds from this. */
29
42
  export declare const BUNDLED_CHANNEL_METAS: readonly ChannelMeta[];
30
43
  //# sourceMappingURL=bundled-channel-metas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundled-channel-metas.d.ts","sourceRoot":"","sources":["../../../src/agents/channels/bundled-channel-metas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,EAAE,WAQnC,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,EAAE,WAQnC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,EAAE,WAQhC,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,EAAE,WAQlC,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAKvD,CAAC"}
1
+ {"version":3,"file":"bundled-channel-metas.d.ts","sourceRoot":"","sources":["../../../src/agents/channels/bundled-channel-metas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,EAAE,WAQnC,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,EAAE,WAQnC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,EAAE,WAQhC,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,EAAE,WAQlC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,WASnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAStC,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAOvD,CAAC"}
@@ -56,11 +56,44 @@ export const DISCORD_CHANNEL_META = {
56
56
  order: 40,
57
57
  markdownCapable: true,
58
58
  };
59
+ /**
60
+ * iMessage channel metadata. iMessage has NO rich markup (plain text only), so
61
+ * it is NOT markdown-capable — the assembler's markdown gate strips formatting
62
+ * for this channel. Driven by the `imsg` CLI as a JSON-RPC subprocess.
63
+ */
64
+ export const IMESSAGE_CHANNEL_META = {
65
+ id: "imessage",
66
+ label: "iMessage",
67
+ selectionLabel: "iMessage",
68
+ docsPath: "channels/imessage",
69
+ blurb: "Drive native iMessage via the imsg CLI; DM/group chat over Messages.app.",
70
+ order: 50,
71
+ aliases: ["imsg"],
72
+ markdownCapable: false,
73
+ };
74
+ /**
75
+ * BlueBubbles channel metadata. Like iMessage, BlueBubbles has NO rich markup
76
+ * (plain text only), so it is NOT markdown-capable — the assembler's markdown
77
+ * gate strips formatting for this channel. Driven by the BlueBubbles macOS server
78
+ * over REST (outbound) + a webhook (inbound).
79
+ */
80
+ export const BLUEBUBBLES_CHANNEL_META = {
81
+ id: "bluebubbles",
82
+ label: "BlueBubbles",
83
+ selectionLabel: "BlueBubbles (iMessage)",
84
+ docsPath: "channels/bluebubbles",
85
+ blurb: "Drive native iMessage via a BlueBubbles macOS server; REST-out + webhook-in, reactions/edit/unsend.",
86
+ order: 55,
87
+ aliases: ["bb"],
88
+ markdownCapable: false,
89
+ };
59
90
  /** Every bundled channel meta, in declaration order. The registry seeds from this. */
60
91
  export const BUNDLED_CHANNEL_METAS = [
61
92
  WHATSAPP_CHANNEL_META,
62
93
  TELEGRAM_CHANNEL_META,
63
94
  SLACK_CHANNEL_META,
64
95
  DISCORD_CHANNEL_META,
96
+ IMESSAGE_CHANNEL_META,
97
+ BLUEBUBBLES_CHANNEL_META,
65
98
  ];
66
99
  //# sourceMappingURL=bundled-channel-metas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundled-channel-metas.js","sourceRoot":"","sources":["../../../src/agents/channels/bundled-channel-metas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,mFAAmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IACjD,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU;IACjB,cAAc,EAAE,UAAU;IAC1B,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,mDAAmD;IAC1D,KAAK,EAAE,EAAE;IACT,eAAe,EAAE,IAAI;CACrB,CAAC;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IACjD,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU;IACjB,cAAc,EAAE,UAAU;IAC1B,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,8DAA8D;IACrE,KAAK,EAAE,EAAE;IACT,eAAe,EAAE,IAAI;CACrB,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC9C,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,OAAO;IACd,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,gBAAgB;IAC1B,KAAK,EAAE,mEAAmE;IAC1E,KAAK,EAAE,EAAE;IACT,eAAe,EAAE,IAAI;CACrB,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAChD,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,SAAS;IAChB,cAAc,EAAE,SAAS;IACzB,QAAQ,EAAE,kBAAkB;IAC5B,KAAK,EAAE,8DAA8D;IACrE,KAAK,EAAE,EAAE;IACT,eAAe,EAAE,IAAI;CACrB,CAAC;AAEF,sFAAsF;AACtF,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC5D,qBAAqB;IACrB,qBAAqB;IACrB,kBAAkB;IAClB,oBAAoB;CACpB,CAAC"}
1
+ {"version":3,"file":"bundled-channel-metas.js","sourceRoot":"","sources":["../../../src/agents/channels/bundled-channel-metas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,mFAAmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IACjD,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU;IACjB,cAAc,EAAE,UAAU;IAC1B,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,mDAAmD;IAC1D,KAAK,EAAE,EAAE;IACT,eAAe,EAAE,IAAI;CACrB,CAAC;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IACjD,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU;IACjB,cAAc,EAAE,UAAU;IAC1B,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,8DAA8D;IACrE,KAAK,EAAE,EAAE;IACT,eAAe,EAAE,IAAI;CACrB,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC9C,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,OAAO;IACd,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,gBAAgB;IAC1B,KAAK,EAAE,mEAAmE;IAC1E,KAAK,EAAE,EAAE;IACT,eAAe,EAAE,IAAI;CACrB,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAChD,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,SAAS;IAChB,cAAc,EAAE,SAAS;IACzB,QAAQ,EAAE,kBAAkB;IAC5B,KAAK,EAAE,8DAA8D;IACrE,KAAK,EAAE,EAAE;IACT,eAAe,EAAE,IAAI;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IACjD,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU;IACjB,cAAc,EAAE,UAAU;IAC1B,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,0EAA0E;IACjF,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,eAAe,EAAE,KAAK;CACtB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAgB;IACpD,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,aAAa;IACpB,cAAc,EAAE,wBAAwB;IACxC,QAAQ,EAAE,sBAAsB;IAChC,KAAK,EAAE,qGAAqG;IAC5G,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,eAAe,EAAE,KAAK;CACtB,CAAC;AAEF,sFAAsF;AACtF,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC5D,qBAAqB;IACrB,qBAAqB;IACrB,kBAAkB;IAClB,oBAAoB;IACpB,qBAAqB;IACrB,wBAAwB;CACxB,CAAC"}
@@ -38,6 +38,36 @@ declare const CHANNEL_ID = "discord";
38
38
  declare const DEFAULT_ACCOUNT_ID = "default";
39
39
  /** Per-secret env var consulted as a last-resort fallback. */
40
40
  declare const BOT_TOKEN_ENV_VAR = "DISCORD_BOT_TOKEN";
41
+ /** Reaction-notification gating modes (see `channels.discord.reactionNotifications`). */
42
+ export type DiscordReactionNotificationMode = "off" | "own" | "all" | "allowlist";
43
+ /** Bot online-dot status (`channels.discord.presence.status`). */
44
+ export type DiscordPresenceStatus = "online" | "idle" | "dnd" | "invisible";
45
+ /** Activity row kind (`channels.discord.presence.activityType`). */
46
+ export type DiscordPresenceActivityType = "playing" | "streaming" | "listening" | "watching" | "custom" | "competing";
47
+ /** How an auto-thread is named (`channels.discord.autoThreadName`). */
48
+ export type DiscordAutoThreadNameMode = "generated" | "first-message";
49
+ /**
50
+ * Resolved presence applied on (re)connect. `activityType` is the discord.js
51
+ * `ActivityType` numeric enum value (playing=0, streaming=1, listening=2,
52
+ * watching=3, custom=4, competing=5); `activityText` is the activity name (the
53
+ * STATE line for a custom activity); `activityUrl` rides only on a streaming
54
+ * activity. `null` when no presence is configured.
55
+ */
56
+ export interface ResolvedDiscordPresence {
57
+ status: DiscordPresenceStatus;
58
+ activityType?: DiscordPresenceActivityType;
59
+ activityTypeCode?: number;
60
+ activityText?: string;
61
+ activityUrl?: string;
62
+ }
63
+ /** Resolved auto-thread policy (`channels.discord.autoThread*`). */
64
+ export interface ResolvedDiscordAutoThread {
65
+ enabled: boolean;
66
+ /** Thread name source. `"generated"` falls back to first-message until a completion runtime exists. */
67
+ nameMode: DiscordAutoThreadNameMode;
68
+ /** Idle minutes before Discord auto-archives the thread (60 / 1440 / 4320 / 10080). */
69
+ autoArchiveMinutes: number;
70
+ }
41
71
  /** Resolved per-account info — what the adapter runtime reads. */
42
72
  export interface ResolvedDiscordAccount {
43
73
  accountId: string;
@@ -107,11 +137,41 @@ export declare function discordStreamThrottleMs(cfg: BrigadeConfig): number;
107
137
  * Default OFF — `<think>` reasoning is stripped from channel replies as today.
108
138
  */
109
139
  export declare function discordSurfaceReasoning(cfg: BrigadeConfig): boolean;
140
+ /**
141
+ * Resolve the reaction-notification mode (`channels.discord.reactionNotifications`).
142
+ * Defaults to `"own"` (only reactions on the bot's own messages wake the agent) so
143
+ * a stranger's reaction in an admitted channel no longer spams a turn. An invalid /
144
+ * unset value degrades to the `"own"` default.
145
+ */
146
+ export declare function discordReactionNotifications(cfg: BrigadeConfig): DiscordReactionNotificationMode;
110
147
  /**
111
148
  * Resolve the idle-thread-session TTL in ms, or `null` when unset / disabled.
112
149
  * Accepts a number (ms) or a duration string (`"6h"`, `"30m"`, …). The cron
113
150
  * session-reaper uses this to age out idle Discord thread sessions.
114
151
  */
115
152
  export declare function discordThreadIdleTtlMs(cfg: BrigadeConfig): number | null;
153
+ /**
154
+ * Resolve the bot presence to apply on (re)connect, or `null` when none is
155
+ * configured (`channels.discord.presence` absent / empty → keep Discord's
156
+ * default). A `status`-only block (no activity) still resolves so the operator
157
+ * can set just the online dot. An invalid `status` / `activityType` is dropped
158
+ * (degrades to the default), never throwing. The activity type is mapped to its
159
+ * discord.js `ActivityType` numeric code here so the connection stays
160
+ * discord.js-agnostic.
161
+ *
162
+ * Multi-account aware (mirrors the other per-account resolvers): the per-account
163
+ * `accounts[id].presence` wins, falling back to the top-level
164
+ * `channels.discord.presence`. Without this fallback a per-account
165
+ * `set-presence` write was a silent no-op (it read only the top-level slot).
166
+ */
167
+ export declare function resolveDiscordPresence(cfg: BrigadeConfig, accountId?: string | null): ResolvedDiscordPresence | null;
168
+ /**
169
+ * Resolve the auto-thread policy (`channels.discord.autoThread*`). Returns a
170
+ * resolved view with `enabled` false when the feature is off (the default). The
171
+ * name mode defaults to `"first-message"`; `autoArchiveDuration` is clamped to
172
+ * one of Discord's accepted values (60 / 1440 / 4320 / 10080), defaulting to
173
+ * 1440 (24h).
174
+ */
175
+ export declare function resolveDiscordAutoThread(cfg: BrigadeConfig): ResolvedDiscordAutoThread;
116
176
  export { CHANNEL_ID as DISCORD_CHANNEL_ID, DEFAULT_ACCOUNT_ID as DISCORD_DEFAULT_ACCOUNT_ID, BOT_TOKEN_ENV_VAR as DISCORD_BOT_TOKEN_ENV_VAR, };
117
177
  //# sourceMappingURL=account-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-config.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/account-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,QAAA,MAAM,UAAU,YAAY,CAAC;AAC7B,QAAA,MAAM,kBAAkB,YAAY,CAAC;AAErC,8DAA8D;AAC9D,QAAA,MAAM,iBAAiB,sBAAsB,CAAC;AA+D9C,kEAAkE;AAClE,MAAM,WAAW,sBAAsB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACjB;AAqBD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAEjE;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,EAAE,CAgBlE;AAeD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,CAaR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,MAAM,CAaR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUrD;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,aAAa,EAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,sBAAsB,CAYxB;AAID;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAGlE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAcxE;AAED,OAAO,EACN,UAAU,IAAI,kBAAkB,EAChC,kBAAkB,IAAI,0BAA0B,EAChD,iBAAiB,IAAI,yBAAyB,GAC9C,CAAC"}
1
+ {"version":3,"file":"account-config.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/account-config.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,18 @@ const PROXY_ENV_VARS = ["https_proxy", "HTTPS_PROXY", "all_proxy", "ALL_PROXY"];
53
53
  const SEAL_KEY_BOT = CHANNEL_ID; // `channel:discord`
54
54
  /** `${VAR}` secret-ref form — identical to `config/io.ts`'s SECRET_REF_PATTERN. */
55
55
  const SECRET_REF_PATTERN = /^\$\{([A-Z_][A-Z0-9_]*)\}$/;
56
+ /** discord.js `ActivityType` numeric codes, keyed by the config string. */
57
+ const ACTIVITY_TYPE_CODE = {
58
+ playing: 0,
59
+ streaming: 1,
60
+ listening: 2,
61
+ watching: 3,
62
+ custom: 4,
63
+ competing: 5,
64
+ };
65
+ /** Valid auto-archive durations Discord accepts (minutes). */
66
+ const AUTO_ARCHIVE_DURATIONS = new Set([60, 1440, 4320, 10080]);
67
+ const DEFAULT_AUTO_ARCHIVE_MINUTES = 1440;
56
68
  /** Read `channels.discord` loosely (schema keeps it open). */
57
69
  function discordChannelConfig(cfg) {
58
70
  return cfg.channels?.[CHANNEL_ID];
@@ -231,6 +243,18 @@ export function discordStreamThrottleMs(cfg) {
231
243
  export function discordSurfaceReasoning(cfg) {
232
244
  return discordChannelConfig(cfg)?.surfaceReasoning === true;
233
245
  }
246
+ /**
247
+ * Resolve the reaction-notification mode (`channels.discord.reactionNotifications`).
248
+ * Defaults to `"own"` (only reactions on the bot's own messages wake the agent) so
249
+ * a stranger's reaction in an admitted channel no longer spams a turn. An invalid /
250
+ * unset value degrades to the `"own"` default.
251
+ */
252
+ export function discordReactionNotifications(cfg) {
253
+ const raw = discordChannelConfig(cfg)?.reactionNotifications;
254
+ if (raw === "off" || raw === "own" || raw === "all" || raw === "allowlist")
255
+ return raw;
256
+ return "own";
257
+ }
234
258
  /**
235
259
  * Resolve the idle-thread-session TTL in ms, or `null` when unset / disabled.
236
260
  * Accepts a number (ms) or a duration string (`"6h"`, `"30m"`, …). The cron
@@ -256,5 +280,70 @@ export function discordThreadIdleTtlMs(cfg) {
256
280
  const factor = mult[unit] ?? 1;
257
281
  return n * factor;
258
282
  }
283
+ /* ───────────────────────── presence / auto-thread config ───────────────────────── */
284
+ /**
285
+ * Resolve the bot presence to apply on (re)connect, or `null` when none is
286
+ * configured (`channels.discord.presence` absent / empty → keep Discord's
287
+ * default). A `status`-only block (no activity) still resolves so the operator
288
+ * can set just the online dot. An invalid `status` / `activityType` is dropped
289
+ * (degrades to the default), never throwing. The activity type is mapped to its
290
+ * discord.js `ActivityType` numeric code here so the connection stays
291
+ * discord.js-agnostic.
292
+ *
293
+ * Multi-account aware (mirrors the other per-account resolvers): the per-account
294
+ * `accounts[id].presence` wins, falling back to the top-level
295
+ * `channels.discord.presence`. Without this fallback a per-account
296
+ * `set-presence` write was a silent no-op (it read only the top-level slot).
297
+ */
298
+ export function resolveDiscordPresence(cfg, accountId) {
299
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
300
+ const entry = findAccountEntry(cfg, id);
301
+ const slot = (entry?.presence && typeof entry.presence === "object" ? entry.presence : undefined) ??
302
+ discordChannelConfig(cfg)?.presence;
303
+ if (!slot || typeof slot !== "object")
304
+ return null;
305
+ const statusRaw = typeof slot.status === "string" ? slot.status.trim().toLowerCase() : "";
306
+ const status = statusRaw === "online" || statusRaw === "idle" || statusRaw === "dnd" || statusRaw === "invisible"
307
+ ? statusRaw
308
+ : "online";
309
+ const activityText = typeof slot.activityText === "string" ? slot.activityText.trim() : "";
310
+ const activityTypeRaw = typeof slot.activityType === "string" ? slot.activityType.trim().toLowerCase() : undefined;
311
+ const activityType = activityTypeRaw && activityTypeRaw in ACTIVITY_TYPE_CODE ? activityTypeRaw : undefined;
312
+ const activityUrl = typeof slot.activityUrl === "string" ? slot.activityUrl.trim() : "";
313
+ // Nothing meaningful configured (no status, no activity) → no presence.
314
+ const hasStatus = statusRaw !== "";
315
+ const hasActivity = activityText !== "" || activityType !== undefined;
316
+ if (!hasStatus && !hasActivity)
317
+ return null;
318
+ const resolved = { status };
319
+ if (hasActivity) {
320
+ // An activity row needs at least a type; default to `custom` (the status
321
+ // STATE line) when only text was given.
322
+ const type = activityType ?? "custom";
323
+ resolved.activityType = type;
324
+ resolved.activityTypeCode = ACTIVITY_TYPE_CODE[type];
325
+ if (activityText)
326
+ resolved.activityText = activityText;
327
+ if (type === "streaming" && activityUrl)
328
+ resolved.activityUrl = activityUrl;
329
+ }
330
+ return resolved;
331
+ }
332
+ /**
333
+ * Resolve the auto-thread policy (`channels.discord.autoThread*`). Returns a
334
+ * resolved view with `enabled` false when the feature is off (the default). The
335
+ * name mode defaults to `"first-message"`; `autoArchiveDuration` is clamped to
336
+ * one of Discord's accepted values (60 / 1440 / 4320 / 10080), defaulting to
337
+ * 1440 (24h).
338
+ */
339
+ export function resolveDiscordAutoThread(cfg) {
340
+ const slot = discordChannelConfig(cfg);
341
+ const enabled = slot?.autoThread === true;
342
+ const nameRaw = typeof slot?.autoThreadName === "string" ? slot.autoThreadName.trim().toLowerCase() : "";
343
+ const nameMode = nameRaw === "generated" ? "generated" : "first-message";
344
+ const rawDuration = typeof slot?.autoArchiveDuration === "number" ? Math.round(slot.autoArchiveDuration) : NaN;
345
+ const autoArchiveMinutes = AUTO_ARCHIVE_DURATIONS.has(rawDuration) ? rawDuration : DEFAULT_AUTO_ARCHIVE_MINUTES;
346
+ return { enabled, nameMode, autoArchiveMinutes };
347
+ }
259
348
  export { CHANNEL_ID as DISCORD_CHANNEL_ID, DEFAULT_ACCOUNT_ID as DISCORD_DEFAULT_ACCOUNT_ID, BOT_TOKEN_ENV_VAR as DISCORD_BOT_TOKEN_ENV_VAR, };
260
349
  //# sourceMappingURL=account-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-config.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/account-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account-config.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/account-config.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,18 @@
19
19
  * (registered via REST application commands on connect). Unlike Slack, Discord's
20
20
  * command menu IS pushed programmatically — `nativeCommands: true`.
21
21
  */
22
+ import type { BrigadeConfig } from "../../../config/io.js";
22
23
  import { type ChannelAdapter, type ChannelCapabilities } from "../sdk.js";
23
- import { type ConnectDiscordArgs, type DiscordConnection } from "./connection.js";
24
+ import { type ResolvedDiscordPresence } from "./account-config.js";
25
+ import { type ConnectDiscordArgs, type DiscordConnection, type DiscordInboundMessage, type DiscordPresencePayload } from "./connection.js";
26
+ /**
27
+ * Map a resolved presence config into the discord.js `PresenceData` payload the
28
+ * connection applies on (re)connect (Phase 5). A `custom` activity (type 4)
29
+ * carries its text in the `state` field (Discord renders custom status from the
30
+ * state); every other type uses `name`. A `streaming` activity (type 1) adds the
31
+ * `url`. Returns `null` when no presence is configured.
32
+ */
33
+ export declare function mapDiscordPresencePayload(presence: ResolvedDiscordPresence | null): DiscordPresencePayload | null;
24
34
  /** Adapter construction options — all optional for back-compat. */
25
35
  export interface CreateDiscordAdapterOptions {
26
36
  /** Per-account scope. Defaults to `"default"` (single-account). */
@@ -32,6 +42,19 @@ export interface CreateDiscordAdapterOptions {
32
42
  connectImpl?: (args: ConnectDiscordArgs) => Promise<DiscordConnection>;
33
43
  }
34
44
  export declare function createDiscordAdapter(opts?: CreateDiscordAdapterOptions): ChannelAdapter;
45
+ /**
46
+ * Decide whether an inbound reaction-add should wake the agent, per the
47
+ * `channels.discord.reactionNotifications` mode (default `"own"`):
48
+ * - `"off"` → never;
49
+ * - `"own"` → only when the reacted message was authored by the bot
50
+ * (`reaction.targetAuthorId === selfId`);
51
+ * - `"all"` → always (legacy behavior);
52
+ * - `"allowlist"` → only when the reactor (`msg.from`) is on the channel
53
+ * allow-list — the central store list ∪ config `allowFrom`.
54
+ * A null config defensively falls back to `"own"`. Reaction-REMOVE is unaffected
55
+ * (handled in the connection's dedupe-release path).
56
+ */
57
+ export declare function shouldNotifyReaction(msg: DiscordInboundMessage, cfg: BrigadeConfig | null, selfId: string | undefined, accountId?: string): boolean;
35
58
  /**
36
59
  * Synthesise the agent-facing note for an inbound reaction. The reaction itself
37
60
  * carries no text, so the note ("<who> reacted :emoji: to message <id>") is what
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,EAGN,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EAQxB,MAAM,WAAW,CAAC;AAgBnB,OAAO,EAAkB,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAQlG,mEAAmE;AACnE,MAAM,WAAW,2BAA2B;IAC3C,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACvE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,2BAAgC,GAAG,cAAc,CA4c3F;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtG;AAED,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,EAAE,mBASlC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,cAAc;IACrD;;;;OAIG;IACH,WAAW,IAAI,MAAM,GAAG,IAAI,CAAC;CAC7B"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,OAAO,EAGN,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EAQxB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAaN,KAAK,uBAAuB,EAC5B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAGN,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,MAAM,iBAAiB,CAAC;AASzB;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAiBjH;AAED,mEAAmE;AACnE,MAAM,WAAW,2BAA2B;IAC3C,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACvE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,2BAAgC,GAAG,cAAc,CAwiB3F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CACnC,GAAG,EAAE,qBAAqB,EAC1B,GAAG,EAAE,aAAa,GAAG,IAAI,EACzB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAsBT;AASD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAKtG;AAED,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,EAAE,mBASlC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,cAAc;IACrD;;;;OAIG;IACH,WAAW,IAAI,MAAM,GAAG,IAAI,CAAC;CAC7B"}