@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
@@ -104,6 +104,137 @@ export function extractDiscordText(message, resolve) {
104
104
  return "";
105
105
  return expandDiscordTokens(raw, resolve).trim();
106
106
  }
107
+ /* ───────────────────────── embeds / stickers / forwards (assembled text) ───────────────────────── */
108
+ const FORWARD_REFERENCE_TYPE = 1;
109
+ /**
110
+ * True when the message is a FORWARD (reference kind `1`) rather than a reply
111
+ * (kind `0` / absent). discord.js exposes the kind on `reference.type`; the raw
112
+ * gateway shape carries it on `messageReference.type`. Used so a forward isn't
113
+ * mistaken for a reply by the reply-context resolver.
114
+ */
115
+ export function isDiscordForward(message) {
116
+ const t = message.reference?.type ?? message.messageReference?.type;
117
+ return typeof t === "number" && t === FORWARD_REFERENCE_TYPE;
118
+ }
119
+ /** A short author label for a forwarded snapshot (globalName → username → id). */
120
+ function snapshotAuthorLabel(author) {
121
+ if (!author)
122
+ return undefined;
123
+ const display = author.globalName ?? author.global_name ?? undefined;
124
+ if (typeof display === "string" && display.trim())
125
+ return display.trim();
126
+ const username = author.username;
127
+ if (typeof username === "string" && username.trim())
128
+ return username.trim();
129
+ return typeof author.id === "string" && author.id ? author.id : undefined;
130
+ }
131
+ /**
132
+ * The first embed's text folded into a readable run: `title` + `description` +
133
+ * (a bare `url` when neither carries it). Returns "" when the message has no
134
+ * embed text. Pure + deterministic.
135
+ */
136
+ export function extractDiscordEmbedText(message) {
137
+ const embed = Array.isArray(message.embeds) ? message.embeds[0] : undefined;
138
+ if (!embed)
139
+ return "";
140
+ const title = typeof embed.title === "string" ? embed.title.trim() : "";
141
+ const description = typeof embed.description === "string" ? embed.description.trim() : "";
142
+ const url = typeof embed.url === "string" ? embed.url.trim() : "";
143
+ const parts = [];
144
+ if (title)
145
+ parts.push(title);
146
+ if (description)
147
+ parts.push(description);
148
+ // Surface the link only when there's no title/description carrying it already.
149
+ if (url && parts.length === 0)
150
+ parts.push(url);
151
+ return parts.join("\n");
152
+ }
153
+ /** The sticker items on a message (the `.stickers` collection, then raw `sticker_items`). */
154
+ export function resolveInboundStickers(message) {
155
+ const fromCollection = toArray(message.stickers ?? undefined).filter((s) => Boolean(s) && typeof s === "object");
156
+ if (fromCollection.length > 0)
157
+ return fromCollection;
158
+ const raw = Array.isArray(message.sticker_items) ? message.sticker_items : [];
159
+ return raw.filter((s) => Boolean(s) && typeof s === "object");
160
+ }
161
+ /** A `<sticker: name>` placeholder line per sticker, joined by newlines. Returns "" when none. */
162
+ export function extractDiscordStickerText(message) {
163
+ const stickers = resolveInboundStickers(message);
164
+ if (stickers.length === 0)
165
+ return "";
166
+ return stickers
167
+ .map((s) => {
168
+ const name = typeof s.name === "string" && s.name.trim() ? s.name.trim() : "sticker";
169
+ return `<sticker: ${name}>`;
170
+ })
171
+ .join("\n");
172
+ }
173
+ /** The forwarded-message snapshots on a message (discord.js Collection or raw array). */
174
+ export function resolveDiscordSnapshots(message) {
175
+ const fromCollection = toArray(message.messageSnapshots ?? undefined).filter((s) => Boolean(s) && typeof s === "object");
176
+ if (fromCollection.length > 0)
177
+ return fromCollection;
178
+ const raw = Array.isArray(message.message_snapshots) ? message.message_snapshots : [];
179
+ return raw.filter((s) => Boolean(s) && typeof s === "object");
180
+ }
181
+ /** The plain text of ONE forwarded snapshot's inner message (content → sticker → embed). */
182
+ function snapshotInnerText(snap, resolve) {
183
+ const content = typeof snap.content === "string" && !isBinaryContent(snap.content) ? expandDiscordTokens(snap.content, resolve).trim() : "";
184
+ const stickerText = extractDiscordStickerText(snap);
185
+ const embedText = extractDiscordEmbedText(snap);
186
+ return content || stickerText || embedText || "";
187
+ }
188
+ /**
189
+ * The `[Forwarded from <author>]` block(s) for any forwarded snapshots on the
190
+ * message. Each snapshot becomes a heading + its inner text. A forward whose
191
+ * snapshot has no text still surfaces the heading so the agent learns a forward
192
+ * happened. Returns "" when the message carries no forward snapshots.
193
+ */
194
+ export function extractDiscordForwardedText(message, resolve) {
195
+ const snapshots = resolveDiscordSnapshots(message);
196
+ if (snapshots.length === 0)
197
+ return "";
198
+ const blocks = [];
199
+ for (const snap of snapshots) {
200
+ const inner = snap.message ?? undefined;
201
+ const author = inner ? snapshotAuthorLabel(inner.author) : undefined;
202
+ const heading = author ? `[Forwarded from ${author}]` : "[Forwarded message]";
203
+ const text = inner ? snapshotInnerText(inner, resolve) : "";
204
+ blocks.push(text ? `${heading}\n${text}` : heading);
205
+ }
206
+ return blocks.join("\n\n");
207
+ }
208
+ /**
209
+ * The full agent-facing text Brigade routes for a Discord message. The message
210
+ * `content` leads (token-expanded); when content is empty we FALL BACK to the
211
+ * first embed's title/description so an embed-only message isn't dropped. A
212
+ * `<sticker: name>` placeholder is APPENDED for any stickers, and a
213
+ * `[Forwarded from …]` block is APPENDED for any forwarded snapshots — so a
214
+ * sticker-only or forward-only message carries real text instead of "".
215
+ *
216
+ * Pure + deterministic; the connection passes a `resolve` lookup so mention
217
+ * tokens expand to readable names.
218
+ */
219
+ export function assembleDiscordText(message, resolve) {
220
+ const content = extractDiscordText(message, resolve);
221
+ const parts = [];
222
+ if (content) {
223
+ parts.push(content);
224
+ }
225
+ else {
226
+ const embedText = extractDiscordEmbedText(message);
227
+ if (embedText)
228
+ parts.push(embedText);
229
+ }
230
+ const stickerText = extractDiscordStickerText(message);
231
+ if (stickerText)
232
+ parts.push(stickerText);
233
+ const forwardedText = extractDiscordForwardedText(message, resolve);
234
+ if (forwardedText)
235
+ parts.push(forwardedText);
236
+ return parts.join("\n").trim();
237
+ }
107
238
  /* ───────────────────────── chat type + thread + reply ───────────────────────── */
108
239
  /** Discord channel-type enum values Brigade distinguishes. */
109
240
  const CHANNEL_TYPE_DM = 1;
@@ -157,13 +288,32 @@ export function discordThreadId(message) {
157
288
  * inline that message's text — so the context surfaces the parent message id and
158
289
  * leaves `body` undefined (the connection can fetch the parent if it needs the
159
290
  * excerpt). Returns undefined for a non-reply.
291
+ *
292
+ * When discord.js already resolved the reply parent (`message.referencedMessage`,
293
+ * which rides inline on a Gateway reply MESSAGE_CREATE), the parent's author id is
294
+ * captured SYNCHRONOUSLY into `from`. This matters because the central pipeline's
295
+ * group-addressing `isReplyToBot` depends on `replyTo.from === selfId` — if `from`
296
+ * were populated ONLY by the async body-backfill (connection.ts), a guild
297
+ * reply-to-bot whose backfill fetch failed would lose its implicit-mention
298
+ * admission and be dropped. The async backfill still fills `body` (the excerpt).
160
299
  */
161
300
  export function extractDiscordReplyContext(message) {
301
+ // A FORWARD (reference kind 1) also carries a `reference.messageId`, but it's a
302
+ // forward — its content rides in the snapshot, not a quoted reply. Don't surface
303
+ // it as reply context (the assembled text already carries the forwarded block).
304
+ if (isDiscordForward(message))
305
+ return undefined;
162
306
  const ref = message.reference;
163
307
  const id = ref?.messageId;
164
308
  if (typeof id !== "string" || !id)
165
309
  return undefined;
166
- return { messageId: id };
310
+ const out = { messageId: id };
311
+ // Synchronously resolve the parent author from the already-cached referenced
312
+ // message when discord.js handed one — no async fetch needed.
313
+ const parentAuthorId = message.referencedMessage?.author?.id;
314
+ if (typeof parentAuthorId === "string" && parentAuthorId)
315
+ out.from = parentAuthorId;
316
+ return out;
167
317
  }
168
318
  /* ───────────────────────── mentions ───────────────────────── */
169
319
  /**
@@ -304,18 +454,106 @@ const VOICE_MESSAGE_FLAG = 1 << 13;
304
454
  function isDownloadableAttachment(a) {
305
455
  return Boolean(a && (a.url || a.proxyURL));
306
456
  }
457
+ /** discord.js sticker `format` / raw `format_type` enum: 1=PNG, 2=APNG, 3=Lottie, 4=GIF. */
458
+ const STICKER_FORMAT_PNG = 1;
459
+ const STICKER_FORMAT_APNG = 2;
460
+ const STICKER_FORMAT_LOTTIE = 3;
461
+ const STICKER_FORMAT_GIF = 4;
462
+ /** The CDN host stickers download from — already in the SSRF host allowlist (`media.discordapp.net`). */
463
+ const STICKER_ASSET_BASE_URL = "https://media.discordapp.net/stickers";
307
464
  /**
308
- * Cheap presence probe does this message carry a downloadable attachment?
309
- * Walks `message.attachments` but never touches the network, so the connection
310
- * layer can DEFER the actual download until AFTER the central access gate admits
311
- * the sender (mirrors Slack/Telegram). Mirrors `hasInboundMedia`.
465
+ * The downloadable CDN URL + content-type for ONE sticker, derived from its
466
+ * `format` enum. PNG/APNG `.png`, GIF `.gif`, Lottie (vector) → `.json`
467
+ * (the raw Lottie animation; we don't rasterize). The host is `media.discordapp.net`,
468
+ * already covered by the inbound SSRF allowlist. Returns null when the sticker
469
+ * has no id.
470
+ */
471
+ export function stickerToAttachment(sticker) {
472
+ const id = typeof sticker.id === "string" ? sticker.id.trim() : "";
473
+ if (!id)
474
+ return null;
475
+ const format = typeof sticker.format === "number" ? sticker.format : typeof sticker.format_type === "number" ? sticker.format_type : STICKER_FORMAT_PNG;
476
+ const baseName = typeof sticker.name === "string" && sticker.name.trim() ? sticker.name.trim().replace(/[^A-Za-z0-9_-]/g, "_") : `sticker-${id}`;
477
+ let ext;
478
+ let contentType;
479
+ switch (format) {
480
+ case STICKER_FORMAT_GIF:
481
+ ext = "gif";
482
+ contentType = "image/gif";
483
+ break;
484
+ case STICKER_FORMAT_LOTTIE:
485
+ ext = "json";
486
+ contentType = "application/json";
487
+ break;
488
+ case STICKER_FORMAT_APNG:
489
+ case STICKER_FORMAT_PNG:
490
+ default:
491
+ ext = "png";
492
+ contentType = "image/png";
493
+ break;
494
+ }
495
+ return {
496
+ id,
497
+ name: `${baseName}.${ext}`,
498
+ url: `${STICKER_ASSET_BASE_URL}/${id}.${ext}`,
499
+ contentType,
500
+ };
501
+ }
502
+ /** Sticker assets on a message, mapped to downloadable attachment descriptors. */
503
+ export function resolveInboundStickerAttachments(message) {
504
+ const out = [];
505
+ for (const sticker of resolveInboundStickers(message)) {
506
+ const att = stickerToAttachment(sticker);
507
+ if (att)
508
+ out.push(att);
509
+ }
510
+ return out;
511
+ }
512
+ /**
513
+ * Downloadable attachments carried INSIDE forwarded snapshots (attachments +
514
+ * stickers of each forwarded message). A forward arrives as a frozen snapshot,
515
+ * so its media never appears on `message.attachments` — it has to be pulled out
516
+ * of the snapshot.
517
+ */
518
+ export function resolveForwardedAttachments(message) {
519
+ const out = [];
520
+ for (const snap of resolveDiscordSnapshots(message)) {
521
+ const inner = snap.message;
522
+ if (!inner)
523
+ continue;
524
+ for (const a of toArray(inner.attachments ?? undefined)) {
525
+ if (isDownloadableAttachment(a))
526
+ out.push(a);
527
+ }
528
+ out.push(...resolveInboundStickerAttachments(inner));
529
+ }
530
+ return out;
531
+ }
532
+ /**
533
+ * Cheap presence probe — does this message carry ANY downloadable media? Walks
534
+ * direct attachments, stickers, AND forwarded-snapshot media but never touches
535
+ * the network, so the connection layer can DEFER the actual download until AFTER
536
+ * the central access gate admits the sender (mirrors Slack/Telegram).
312
537
  */
313
538
  export function hasInboundMedia(message) {
314
- return toArray(message.attachments).some(isDownloadableAttachment);
539
+ if (toArray(message.attachments).some(isDownloadableAttachment))
540
+ return true;
541
+ if (resolveInboundStickers(message).length > 0)
542
+ return true;
543
+ if (resolveForwardedAttachments(message).length > 0)
544
+ return true;
545
+ return false;
315
546
  }
316
- /** The list of downloadable attachments on a message. */
547
+ /**
548
+ * The full list of downloadable attachments to fetch for a message: direct
549
+ * attachments, sticker assets (downloaded from the Discord sticker CDN), and any
550
+ * media carried inside forwarded snapshots.
551
+ */
317
552
  export function resolveInboundAttachments(message) {
318
- return toArray(message.attachments).filter(isDownloadableAttachment);
553
+ const direct = toArray(message.attachments).filter(isDownloadableAttachment);
554
+ const stickers = resolveInboundStickerAttachments(message);
555
+ const forwarded = resolveForwardedAttachments(message);
556
+ return [...direct, ...stickers, ...forwarded];
319
557
  }
320
558
  /** True when an attachment carries the Discord voice-message flag. */
321
559
  function isVoiceAttachment(a) {
@@ -1 +1 @@
1
- {"version":3,"file":"inbound-extras.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/inbound-extras.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbound-extras.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/inbound-extras.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,21 @@
1
1
  /** Discord channel — public surface. */
2
2
  export { createDiscordAdapter, buildReactionNote, DISCORD_CAPABILITIES, type CreateDiscordAdapterOptions, type DiscordAdapter, } from "./adapter.js";
3
- export { listDiscordAccountIds, resolveDiscordAccount, resolveDiscordBotToken, resolveDiscordProxyUrl, discordChannelEnabled, discordLiveStreamEnabled, discordStreamThrottleMs, discordSurfaceReasoning, discordThreadIdleTtlMs, maskProxyUrl, stripBotPrefix, DISCORD_BOT_TOKEN_ENV_VAR, DISCORD_CHANNEL_ID, DISCORD_DEFAULT_ACCOUNT_ID, type ResolvedDiscordAccount, } from "./account-config.js";
3
+ export { listDiscordAccountIds, resolveDiscordAccount, resolveDiscordAutoThread, resolveDiscordBotToken, resolveDiscordPresence, resolveDiscordProxyUrl, discordChannelEnabled, discordLiveStreamEnabled, discordReactionNotifications, discordStreamThrottleMs, discordSurfaceReasoning, discordThreadIdleTtlMs, maskProxyUrl, stripBotPrefix, DISCORD_BOT_TOKEN_ENV_VAR, DISCORD_CHANNEL_ID, DISCORD_DEFAULT_ACCOUNT_ID, type DiscordAutoThreadNameMode, type DiscordPresenceActivityType, type DiscordPresenceStatus, type DiscordReactionNotificationMode, type ResolvedDiscordAccount, type ResolvedDiscordAutoThread, type ResolvedDiscordPresence, } from "./account-config.js";
4
4
  export { buildDiscordApprovalMessage, buildDiscordApprovalText, parseDiscordApprovalAction, type DiscordApprovalMessage, } from "./approval-native.js";
5
5
  export { resolveDiscordApprover } from "./approval-authorize.js";
6
6
  export { buildDiscordApprovalRows, buildDiscordButtonRows, sanitizeDiscordCustomId, DISCORD_BUTTON_STYLE, DISCORD_BUTTONS_PER_ROW, DISCORD_CUSTOM_ID_MAX_CHARS, DISCORD_MAX_ROWS, type DiscordActionRow, type DiscordButtonSpec, } from "./components.js";
7
7
  export { buildDiscordCommandManifest, normalizeDiscordCommandName, type DiscordApplicationCommand, } from "./command-menu.js";
8
- export { connectDiscord, discordBackoffDelay, isDiscordUnauthorized, redactDiscordToken, type ConnectDiscordArgs, type DiscordConnection, type DiscordInboundMessage, } from "./connection.js";
8
+ export { connectDiscord, discordBackoffDelay, isDiscordUnauthorized, redactDiscordToken, sanitizeThreadName, type ConnectDiscordArgs, type DiscordConnection, type DiscordInboundMessage, type DiscordPresencePayload, } from "./connection.js";
9
9
  export { downloadDiscordAttachment, buildDiscordAttachment, isAllowedDiscordAttachmentUrl, type DiscordOutboundAttachment, } from "./media.js";
10
10
  export { markdownToDiscord, discordTextIsEmpty, DISCORD_MESSAGE_LIMIT } from "./format.js";
11
11
  export { createDiscordPlugin, type DiscordPluginDeps, type DiscordPluginHandle } from "./plugin.js";
12
- export { probeDiscord, decodeMessageContentIntent, MESSAGE_CONTENT_DISABLED_WARNING, type DiscordProbeResult, type DiscordProbeBot, type MessageContentIntentState, } from "./probe.js";
12
+ export { probeDiscord, decodeMessageContentIntent, decodePrivilegedIntents, MESSAGE_CONTENT_DISABLED_WARNING, type DiscordPrivilegedIntents, type DiscordProbeResult, type DiscordProbeBot, type MessageContentIntentState, type PrivilegedIntentState, } from "./probe.js";
13
+ export { listDiscordGuilds, type DiscordGuildSummary } from "./guilds.js";
14
+ export { listDiscordDirectoryPeers, listDiscordDirectoryGroups, type DiscordDirectoryEntry, type DiscordDirectoryQuery, } from "./directory-live.js";
15
+ export { auditDiscordChannelPermissions, type DiscordChannelPermissionResult, type DiscordPermissionAuditResult, } from "./permission-audit.js";
16
+ export { collectDiscordStatusIssues, type DiscordStatusAccount } from "./status-issues.js";
17
+ export { collectDiscordSecurityAuditFindings } from "./security-audit.js";
18
+ export { isDiscordMutableAllowEntry, scanDiscordNumericIdHazards, type DiscordNumericIdHazard, } from "./security-doctor.js";
19
+ export { collectConfiguredDiscordChannelIds, type DiscordProbeWithAudit } from "./plugin.js";
13
20
  export { discordModule } from "./module.js";
14
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,cAAc,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,sBAAsB,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,KAAK,sBAAsB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACN,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,2BAA2B,EAC3B,2BAA2B,EAC3B,KAAK,yBAAyB,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,yBAAyB,EACzB,sBAAsB,EACtB,6BAA6B,EAC7B,KAAK,yBAAyB,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EACN,YAAY,EACZ,0BAA0B,EAC1B,gCAAgC,EAChC,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,yBAAyB,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,cAAc,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,KAAK,sBAAsB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACN,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,2BAA2B,EAC3B,2BAA2B,EAC3B,KAAK,yBAAyB,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,yBAAyB,EACzB,sBAAsB,EACtB,6BAA6B,EAC7B,KAAK,yBAAyB,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EACN,YAAY,EACZ,0BAA0B,EAC1B,uBAAuB,EACvB,gCAAgC,EAChC,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EACN,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,8BAA8B,EAC9B,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,GACjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,0BAA0B,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,mCAAmC,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,sBAAsB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kCAAkC,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -1,14 +1,21 @@
1
1
  /** Discord channel — public surface. */
2
2
  export { createDiscordAdapter, buildReactionNote, DISCORD_CAPABILITIES, } from "./adapter.js";
3
- export { listDiscordAccountIds, resolveDiscordAccount, resolveDiscordBotToken, resolveDiscordProxyUrl, discordChannelEnabled, discordLiveStreamEnabled, discordStreamThrottleMs, discordSurfaceReasoning, discordThreadIdleTtlMs, maskProxyUrl, stripBotPrefix, DISCORD_BOT_TOKEN_ENV_VAR, DISCORD_CHANNEL_ID, DISCORD_DEFAULT_ACCOUNT_ID, } from "./account-config.js";
3
+ export { listDiscordAccountIds, resolveDiscordAccount, resolveDiscordAutoThread, resolveDiscordBotToken, resolveDiscordPresence, resolveDiscordProxyUrl, discordChannelEnabled, discordLiveStreamEnabled, discordReactionNotifications, discordStreamThrottleMs, discordSurfaceReasoning, discordThreadIdleTtlMs, maskProxyUrl, stripBotPrefix, DISCORD_BOT_TOKEN_ENV_VAR, DISCORD_CHANNEL_ID, DISCORD_DEFAULT_ACCOUNT_ID, } from "./account-config.js";
4
4
  export { buildDiscordApprovalMessage, buildDiscordApprovalText, parseDiscordApprovalAction, } from "./approval-native.js";
5
5
  export { resolveDiscordApprover } from "./approval-authorize.js";
6
6
  export { buildDiscordApprovalRows, buildDiscordButtonRows, sanitizeDiscordCustomId, DISCORD_BUTTON_STYLE, DISCORD_BUTTONS_PER_ROW, DISCORD_CUSTOM_ID_MAX_CHARS, DISCORD_MAX_ROWS, } from "./components.js";
7
7
  export { buildDiscordCommandManifest, normalizeDiscordCommandName, } from "./command-menu.js";
8
- export { connectDiscord, discordBackoffDelay, isDiscordUnauthorized, redactDiscordToken, } from "./connection.js";
8
+ export { connectDiscord, discordBackoffDelay, isDiscordUnauthorized, redactDiscordToken, sanitizeThreadName, } from "./connection.js";
9
9
  export { downloadDiscordAttachment, buildDiscordAttachment, isAllowedDiscordAttachmentUrl, } from "./media.js";
10
10
  export { markdownToDiscord, discordTextIsEmpty, DISCORD_MESSAGE_LIMIT } from "./format.js";
11
11
  export { createDiscordPlugin } from "./plugin.js";
12
- export { probeDiscord, decodeMessageContentIntent, MESSAGE_CONTENT_DISABLED_WARNING, } from "./probe.js";
12
+ export { probeDiscord, decodeMessageContentIntent, decodePrivilegedIntents, MESSAGE_CONTENT_DISABLED_WARNING, } from "./probe.js";
13
+ export { listDiscordGuilds } from "./guilds.js";
14
+ export { listDiscordDirectoryPeers, listDiscordDirectoryGroups, } from "./directory-live.js";
15
+ export { auditDiscordChannelPermissions, } from "./permission-audit.js";
16
+ export { collectDiscordStatusIssues } from "./status-issues.js";
17
+ export { collectDiscordSecurityAuditFindings } from "./security-audit.js";
18
+ export { isDiscordMutableAllowEntry, scanDiscordNumericIdHazards, } from "./security-doctor.js";
19
+ export { collectConfiguredDiscordChannelIds } from "./plugin.js";
13
20
  export { discordModule } from "./module.js";
14
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,GAGpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,GAE1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,GAE1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACN,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,gBAAgB,GAGhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,2BAA2B,EAC3B,2BAA2B,GAE3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GAIlB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,yBAAyB,EACzB,sBAAsB,EACtB,6BAA6B,GAE7B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAoD,MAAM,aAAa,CAAC;AACpG,OAAO,EACN,YAAY,EACZ,0BAA0B,EAC1B,gCAAgC,GAIhC,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,GAGpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,GAQ1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,GAE1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACN,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,gBAAgB,GAGhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,2BAA2B,EAC3B,2BAA2B,GAE3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,GAKlB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,yBAAyB,EACzB,sBAAsB,EACtB,6BAA6B,GAE7B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAoD,MAAM,aAAa,CAAC;AACpG,OAAO,EACN,YAAY,EACZ,0BAA0B,EAC1B,uBAAuB,EACvB,gCAAgC,GAMhC,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAA4B,MAAM,aAAa,CAAC;AAC1E,OAAO,EACN,yBAAyB,EACzB,0BAA0B,GAG1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,8BAA8B,GAG9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,0BAA0B,EAA6B,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,mCAAmC,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,GAE3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kCAAkC,EAA8B,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * In-memory registry of pending Discord modal (form) definitions (Fix 3b).
3
+ *
4
+ * A Discord modal carries up to five text-input fields, each with a label,
5
+ * style, placeholder, and required flag. A modal is OPENED by pressing a
6
+ * "modal-trigger" button; on submit Discord delivers the field values keyed by
7
+ * each field's custom_id. The full field definition is far larger than the
8
+ * 100-char `custom_id` budget a button/modal can carry, so it CANNOT ride inline
9
+ * — hence this small side registry. The trigger button + the modal both carry
10
+ * only a short `modal:<modalId>` marker; the heavy definition lives here, keyed
11
+ * by that id.
12
+ *
13
+ * Entries expire after {@link MODAL_ENTRY_TTL_MS} so a never-submitted form
14
+ * doesn't leak. `consume` removes the entry (a modal is single-use by default);
15
+ * `get` peeks without removing (for the trigger → showModal lookup). A
16
+ * reset hook is exported for tests.
17
+ *
18
+ * Pure module-level state — no I/O.
19
+ */
20
+ /** A modal lives for 30 minutes before it's reaped (the form was abandoned). */
21
+ export declare const MODAL_ENTRY_TTL_MS: number;
22
+ /** Discord supports at most 5 inputs per modal. */
23
+ export declare const DISCORD_MODAL_FIELD_MAX = 5;
24
+ /** discord.js `TextInputStyle` values (Short = single line, Paragraph = multi-line). */
25
+ export declare const DISCORD_TEXT_INPUT_STYLE: {
26
+ readonly short: 1;
27
+ readonly paragraph: 2;
28
+ };
29
+ /** A single text-input field definition for a modal. */
30
+ export interface DiscordModalField {
31
+ /** Field custom_id — Discord echoes this back keying the submitted value. */
32
+ id: string;
33
+ /** Label shown above the input. */
34
+ label: string;
35
+ /** `short` (single line) or `paragraph` (multi-line). Defaults to `short`. */
36
+ style?: "short" | "paragraph";
37
+ /** Whether the field must be filled before submit (default true). */
38
+ required?: boolean;
39
+ /** Placeholder hint shown in the empty input. */
40
+ placeholder?: string;
41
+ }
42
+ /** A registered modal definition (the heavy form spec the custom_id can't carry). */
43
+ export interface DiscordModalEntry {
44
+ /** Modal heading shown above the form. */
45
+ title: string;
46
+ /** Text-input fields (1..5). */
47
+ fields: DiscordModalField[];
48
+ /** Session the form belongs to (so a submit routes back to the right turn). */
49
+ sessionKey?: string;
50
+ /** Agent that attached the form. */
51
+ agentId?: string;
52
+ /** Account namespace. */
53
+ accountId?: string;
54
+ /** Optional allowlist of user ids permitted to submit. */
55
+ allowedUsers?: string[];
56
+ /** Epoch ms the entry was registered. */
57
+ createdAt: number;
58
+ /** Epoch ms the entry expires. */
59
+ expiresAt: number;
60
+ }
61
+ /** What a caller supplies when registering a modal (timestamps are filled in). */
62
+ export interface DiscordModalRegistration {
63
+ /** Modal heading (defaults to "Form" when empty). */
64
+ title?: string;
65
+ fields: DiscordModalField[];
66
+ sessionKey?: string;
67
+ agentId?: string;
68
+ accountId?: string;
69
+ allowedUsers?: string[];
70
+ }
71
+ /** Mint a short, unique modal id (fits the `modal:<id>` marker budget). */
72
+ export declare function nextDiscordModalId(): string;
73
+ /**
74
+ * Register a modal definition, returning the modal id the trigger button carries.
75
+ * The entry expires after {@link MODAL_ENTRY_TTL_MS}. Fields beyond the Discord
76
+ * 5-input cap are dropped.
77
+ */
78
+ export declare function registerDiscordModal(reg: DiscordModalRegistration): string;
79
+ /** Peek at a registered modal WITHOUT removing it (the trigger → showModal lookup). */
80
+ export declare function getDiscordModal(modalId: string): DiscordModalEntry | undefined;
81
+ /**
82
+ * Consume a registered modal — return it AND remove it (a modal is single-use, so
83
+ * a second submit of the same id degrades gracefully to `undefined`). Returns
84
+ * `undefined` for a missing / expired id.
85
+ */
86
+ export declare function consumeDiscordModal(modalId: string): DiscordModalEntry | undefined;
87
+ /** TEST-ONLY: clear the registry + reset the clock + id counter. */
88
+ export declare function __resetDiscordModalRegistryForTest(clock?: () => number): void;
89
+ //# sourceMappingURL=modal-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal-registry.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/modal-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAElD,mDAAmD;AACnD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,wFAAwF;AACxF,eAAO,MAAM,wBAAwB;;;CAG3B,CAAC;AAEX,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IACjC,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IACjC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,kFAAkF;AAClF,MAAM,WAAW,wBAAwB;IACxC,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAWD,2EAA2E;AAC3E,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAUD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,wBAAwB,GAAG,MAAM,CAiB1E;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAS9E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAIlF;AAED,oEAAoE;AACpE,wBAAgB,kCAAkC,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAI7E"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * In-memory registry of pending Discord modal (form) definitions (Fix 3b).
3
+ *
4
+ * A Discord modal carries up to five text-input fields, each with a label,
5
+ * style, placeholder, and required flag. A modal is OPENED by pressing a
6
+ * "modal-trigger" button; on submit Discord delivers the field values keyed by
7
+ * each field's custom_id. The full field definition is far larger than the
8
+ * 100-char `custom_id` budget a button/modal can carry, so it CANNOT ride inline
9
+ * — hence this small side registry. The trigger button + the modal both carry
10
+ * only a short `modal:<modalId>` marker; the heavy definition lives here, keyed
11
+ * by that id.
12
+ *
13
+ * Entries expire after {@link MODAL_ENTRY_TTL_MS} so a never-submitted form
14
+ * doesn't leak. `consume` removes the entry (a modal is single-use by default);
15
+ * `get` peeks without removing (for the trigger → showModal lookup). A
16
+ * reset hook is exported for tests.
17
+ *
18
+ * Pure module-level state — no I/O.
19
+ */
20
+ /** A modal lives for 30 minutes before it's reaped (the form was abandoned). */
21
+ export const MODAL_ENTRY_TTL_MS = 30 * 60 * 1_000;
22
+ /** Discord supports at most 5 inputs per modal. */
23
+ export const DISCORD_MODAL_FIELD_MAX = 5;
24
+ /** discord.js `TextInputStyle` values (Short = single line, Paragraph = multi-line). */
25
+ export const DISCORD_TEXT_INPUT_STYLE = {
26
+ short: 1,
27
+ paragraph: 2,
28
+ };
29
+ /** modalId → entry. Insertion-ordered; pruned lazily on access. */
30
+ const registry = new Map();
31
+ /** Monotonic counter feeding the generated modal ids (collision-free per process). */
32
+ let modalSeq = 0;
33
+ /** A clock seam so tests can drive expiry deterministically. */
34
+ let nowFn = () => Date.now();
35
+ /** Mint a short, unique modal id (fits the `modal:<id>` marker budget). */
36
+ export function nextDiscordModalId() {
37
+ modalSeq += 1;
38
+ return `m${modalSeq.toString(36)}${nowFn().toString(36).slice(-4)}`;
39
+ }
40
+ /** Drop every entry whose `expiresAt` is in the past. */
41
+ function pruneExpired() {
42
+ const now = nowFn();
43
+ for (const [id, entry] of registry) {
44
+ if (entry.expiresAt <= now)
45
+ registry.delete(id);
46
+ }
47
+ }
48
+ /**
49
+ * Register a modal definition, returning the modal id the trigger button carries.
50
+ * The entry expires after {@link MODAL_ENTRY_TTL_MS}. Fields beyond the Discord
51
+ * 5-input cap are dropped.
52
+ */
53
+ export function registerDiscordModal(reg) {
54
+ pruneExpired();
55
+ const id = nextDiscordModalId();
56
+ const now = nowFn();
57
+ const fields = (reg.fields ?? []).slice(0, DISCORD_MODAL_FIELD_MAX);
58
+ const entry = {
59
+ title: (reg.title ?? "").trim() || "Form",
60
+ fields,
61
+ createdAt: now,
62
+ expiresAt: now + MODAL_ENTRY_TTL_MS,
63
+ };
64
+ if (reg.sessionKey !== undefined)
65
+ entry.sessionKey = reg.sessionKey;
66
+ if (reg.agentId !== undefined)
67
+ entry.agentId = reg.agentId;
68
+ if (reg.accountId !== undefined)
69
+ entry.accountId = reg.accountId;
70
+ if (reg.allowedUsers !== undefined)
71
+ entry.allowedUsers = reg.allowedUsers;
72
+ registry.set(id, entry);
73
+ return id;
74
+ }
75
+ /** Peek at a registered modal WITHOUT removing it (the trigger → showModal lookup). */
76
+ export function getDiscordModal(modalId) {
77
+ pruneExpired();
78
+ const entry = registry.get(modalId);
79
+ if (!entry)
80
+ return undefined;
81
+ if (entry.expiresAt <= nowFn()) {
82
+ registry.delete(modalId);
83
+ return undefined;
84
+ }
85
+ return entry;
86
+ }
87
+ /**
88
+ * Consume a registered modal — return it AND remove it (a modal is single-use, so
89
+ * a second submit of the same id degrades gracefully to `undefined`). Returns
90
+ * `undefined` for a missing / expired id.
91
+ */
92
+ export function consumeDiscordModal(modalId) {
93
+ const entry = getDiscordModal(modalId);
94
+ if (entry)
95
+ registry.delete(modalId);
96
+ return entry;
97
+ }
98
+ /** TEST-ONLY: clear the registry + reset the clock + id counter. */
99
+ export function __resetDiscordModalRegistryForTest(clock) {
100
+ registry.clear();
101
+ modalSeq = 0;
102
+ nowFn = clock ?? (() => Date.now());
103
+ }
104
+ //# sourceMappingURL=modal-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal-registry.js","sourceRoot":"","sources":["../../../../src/agents/channels/discord/modal-registry.ts"],"names":[],"mappings":"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"}