@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,371 @@
1
+ /**
2
+ * iMessage config-shape helpers (multi-ACCOUNT aware; mirrors Discord's
3
+ * `account-config.ts`).
4
+ *
5
+ * iMessage is driven through the third-party `imsg` CLI run as a long-lived
6
+ * JSON-RPC subprocess (`imsg rpc`). Unlike a token-based channel there is NO
7
+ * secret to seal — the auth surface is "the machine running the gateway is
8
+ * already signed into Messages.app". So instead of a bot token this module
9
+ * resolves the local-runtime knobs the transport needs:
10
+ *
11
+ * - `cliPath` path to the `imsg` binary (default `"imsg"`, found on PATH).
12
+ * - `dbPath` optional override for the chat.db the binary reads.
13
+ * - `service` default send service: `"imessage"` | `"sms"` | `"auto"`.
14
+ * - `region` default phone-number region for E.164 normalisation (US).
15
+ * - `mediaMaxMb` cap on an outbound attachment's size (MB).
16
+ * - `probeTimeoutMs` RPC round-trip timeout for the doctor/probe call.
17
+ * - `attachmentRoots` allow-list of dirs inbound media may be read from.
18
+ *
19
+ * Two config shapes are recognised so the surface lines up with the other
20
+ * channels:
21
+ *
22
+ * Legacy (single-account):
23
+ * channels.imessage = { enabled: true, cliPath: "imsg", service: "auto" }
24
+ *
25
+ * Multi-account:
26
+ * channels.imessage = {
27
+ * enabled: true,
28
+ * accounts: [
29
+ * { id: "personal", dbPath: "~/Library/Messages/chat.db" },
30
+ * { id: "work", cliPath: "/opt/imsg/bin/imsg" },
31
+ * ],
32
+ * }
33
+ *
34
+ * A legacy config with no `accounts[]` reads as `[{ id: "default" }]`.
35
+ */
36
+ /** Canonical channel id + default account id. */
37
+ const CHANNEL_ID = "imessage";
38
+ const DEFAULT_ACCOUNT_ID = "default";
39
+ /** Default `imsg` binary name — resolved on PATH when no explicit path is set. */
40
+ const DEFAULT_CLI_PATH = "imsg";
41
+ /** Default send service when neither the target nor the account pins one. */
42
+ const DEFAULT_SERVICE = "auto";
43
+ /** Default phone-number region used for E.164 normalisation. */
44
+ const DEFAULT_REGION = "US";
45
+ /** Default outbound media size cap (MB). */
46
+ const DEFAULT_MEDIA_MAX_MB = 16;
47
+ /** Default RPC probe / request timeout (ms). */
48
+ export const DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS = 10_000;
49
+ /** Default per-message outbound text chunk size (chars). iMessage's practical limit. */
50
+ export const DEFAULT_IMESSAGE_TEXT_CHUNK_LIMIT = 4_000;
51
+ /**
52
+ * Default rolling-history depth for an untagged GROUP message (0 = off). iMessage
53
+ * delivers one notification per message with no thread context, so the monitor
54
+ * keeps the last N seen group messages and prepends them as context.
55
+ */
56
+ export const DEFAULT_IMESSAGE_HISTORY_LIMIT = 0;
57
+ /** Default macOS Messages attachment root inbound media may be read from. */
58
+ export const DEFAULT_IMESSAGE_ATTACHMENT_ROOTS = [
59
+ "/Users/*/Library/Messages/Attachments",
60
+ ];
61
+ /** Per-knob env var consulted as a last-resort fallback for the binary path. */
62
+ const CLI_PATH_ENV_VAR = "IMSG_CLI_PATH";
63
+ /** `${VAR}` secret-ref form — identical to `config/io.ts`'s SECRET_REF_PATTERN. */
64
+ const SECRET_REF_PATTERN = /^\$\{([A-Z_][A-Z0-9_]*)\}$/;
65
+ /** Read `channels.imessage` loosely (schema keeps it open). */
66
+ function imessageChannelConfig(cfg) {
67
+ return cfg.channels?.[CHANNEL_ID];
68
+ }
69
+ /**
70
+ * Resolve a single string-ish config value: a `${VAR}` ref expands against
71
+ * `process.env`; any other non-empty string passes through verbatim; empty /
72
+ * missing returns "".
73
+ */
74
+ function resolveStringRef(raw, env) {
75
+ if (typeof raw !== "string")
76
+ return "";
77
+ const trimmed = raw.trim();
78
+ if (!trimmed)
79
+ return "";
80
+ const m = SECRET_REF_PATTERN.exec(trimmed);
81
+ if (m && m[1])
82
+ return (env[m[1]] ?? "").trim();
83
+ return trimmed;
84
+ }
85
+ /** Coerce a loose `service` string to the typed union (defaults to `auto`). */
86
+ export function coerceIMessageService(raw, fallback = DEFAULT_SERVICE) {
87
+ const v = typeof raw === "string" ? raw.trim().toLowerCase() : "";
88
+ if (v === "imessage" || v === "sms" || v === "auto")
89
+ return v;
90
+ return fallback;
91
+ }
92
+ /** Is the iMessage channel switched on at all (any shape)? */
93
+ export function imessageChannelEnabled(cfg) {
94
+ return imessageChannelConfig(cfg)?.enabled === true;
95
+ }
96
+ /** List configured account ids. Legacy single-account configs surface `["default"]`. */
97
+ export function listIMessageAccountIds(cfg) {
98
+ const slot = imessageChannelConfig(cfg);
99
+ if (!slot || slot.enabled !== true)
100
+ return [];
101
+ const accounts = Array.isArray(slot.accounts) ? slot.accounts : undefined;
102
+ if (!accounts || accounts.length === 0)
103
+ return [DEFAULT_ACCOUNT_ID];
104
+ const ids = [];
105
+ const seen = new Set();
106
+ for (const entry of accounts) {
107
+ const id = typeof entry?.id === "string" ? entry.id.trim() : "";
108
+ if (!id || seen.has(id))
109
+ continue;
110
+ seen.add(id);
111
+ ids.push(id);
112
+ }
113
+ // A half-typed `accounts:[]` still degrades to the default account so the
114
+ // channel isn't silently disabled.
115
+ return ids.length === 0 ? [DEFAULT_ACCOUNT_ID] : ids;
116
+ }
117
+ /** Look up the raw account entry from config (or null when missing). */
118
+ function findAccountEntry(cfg, accountId) {
119
+ const slot = imessageChannelConfig(cfg);
120
+ if (!slot)
121
+ return null;
122
+ const accounts = Array.isArray(slot.accounts) ? slot.accounts : undefined;
123
+ if (!accounts)
124
+ return null;
125
+ for (const entry of accounts) {
126
+ const id = typeof entry?.id === "string" ? entry.id.trim() : "";
127
+ if (id === accountId)
128
+ return entry;
129
+ }
130
+ return null;
131
+ }
132
+ /**
133
+ * Resolve the `imsg` binary path for an account. Precedence: per-account config
134
+ * `${VAR}`/literal → top-level config → `IMSG_CLI_PATH` env → the default
135
+ * `"imsg"` (found on PATH).
136
+ */
137
+ export function resolveIMessageCliPath(cfg, accountId, env = process.env) {
138
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
139
+ const slot = imessageChannelConfig(cfg);
140
+ const entry = findAccountEntry(cfg, id);
141
+ const perAccount = resolveStringRef(entry?.cliPath, env);
142
+ if (perAccount)
143
+ return perAccount;
144
+ const topLevel = resolveStringRef(slot?.cliPath, env);
145
+ if (topLevel)
146
+ return topLevel;
147
+ const fromEnv = (env[CLI_PATH_ENV_VAR] ?? "").trim();
148
+ if (fromEnv)
149
+ return fromEnv;
150
+ return DEFAULT_CLI_PATH;
151
+ }
152
+ /**
153
+ * Resolve the optional chat.db override for an account. Per-account → top-level
154
+ * → "" (the binary uses its own default location). `~`-expansion is the client's
155
+ * job — this returns the raw path.
156
+ */
157
+ export function resolveIMessageDbPath(cfg, accountId, env = process.env) {
158
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
159
+ const slot = imessageChannelConfig(cfg);
160
+ const entry = findAccountEntry(cfg, id);
161
+ const perAccount = resolveStringRef(entry?.dbPath, env);
162
+ if (perAccount)
163
+ return perAccount;
164
+ const topLevel = resolveStringRef(slot?.dbPath, env);
165
+ if (topLevel)
166
+ return topLevel;
167
+ return "";
168
+ }
169
+ /** Merge inbound attachment-root allow-lists in priority order, de-duped. */
170
+ function mergeRoots(...lists) {
171
+ const out = [];
172
+ const seen = new Set();
173
+ for (const list of lists) {
174
+ if (!Array.isArray(list))
175
+ continue;
176
+ for (const raw of list) {
177
+ const v = typeof raw === "string" ? raw.trim() : "";
178
+ if (!v || seen.has(v))
179
+ continue;
180
+ seen.add(v);
181
+ out.push(v);
182
+ }
183
+ }
184
+ return out;
185
+ }
186
+ /**
187
+ * Resolve the inbound attachment roots iMessage media may be read from
188
+ * (account-specific → channel-global → the macOS Messages Attachments floor).
189
+ */
190
+ export function resolveIMessageAttachmentRoots(cfg, accountId) {
191
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
192
+ const slot = imessageChannelConfig(cfg);
193
+ const entry = findAccountEntry(cfg, id);
194
+ return mergeRoots(entry?.attachmentRoots, slot?.attachmentRoots, DEFAULT_IMESSAGE_ATTACHMENT_ROOTS);
195
+ }
196
+ /**
197
+ * Resolve the REMOTE inbound attachment roots (when the `imsg` bridge runs on a
198
+ * different host than the gateway). Falls back through the local roots so a
199
+ * same-host setup is unchanged.
200
+ */
201
+ export function resolveIMessageRemoteAttachmentRoots(cfg, accountId) {
202
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
203
+ const slot = imessageChannelConfig(cfg);
204
+ const entry = findAccountEntry(cfg, id);
205
+ return mergeRoots(entry?.remoteAttachmentRoots, slot?.remoteAttachmentRoots, entry?.attachmentRoots, slot?.attachmentRoots, DEFAULT_IMESSAGE_ATTACHMENT_ROOTS);
206
+ }
207
+ /** Resolve the RPC probe / request timeout (ms) for an account. */
208
+ export function resolveIMessageProbeTimeoutMs(cfg, accountId) {
209
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
210
+ const slot = imessageChannelConfig(cfg);
211
+ const entry = findAccountEntry(cfg, id);
212
+ const raw = typeof entry?.probeTimeoutMs === "number" ? entry.probeTimeoutMs : slot?.probeTimeoutMs;
213
+ return typeof raw === "number" && raw > 0 ? raw : DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS;
214
+ }
215
+ /**
216
+ * Normalise a handle for self/mention matching: an email lower-cases; a phone
217
+ * keeps only its digits (so `+1 (555) 123-4567` and `15551234567` compare equal).
218
+ * Returns "" for an empty input. Mirrors BlueBubbles' `normalizeBlueBubblesSelfHandle`.
219
+ */
220
+ export function normalizeIMessageSelfHandle(raw) {
221
+ const trimmed = (raw ?? "").trim();
222
+ if (!trimmed)
223
+ return "";
224
+ if (trimmed.includes("@"))
225
+ return trimmed.toLowerCase();
226
+ const digits = trimmed.replace(/[^0-9]/g, "");
227
+ return digits || trimmed.toLowerCase();
228
+ }
229
+ /**
230
+ * Resolve the bot's own handle for an account (per-account `selfHandle` wins over
231
+ * the top-level slot), normalised. Empty when unset.
232
+ */
233
+ export function resolveIMessageSelfHandle(cfg, accountId, env = process.env) {
234
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
235
+ const slot = imessageChannelConfig(cfg);
236
+ const entry = findAccountEntry(cfg, id);
237
+ const raw = resolveStringRef(entry?.selfHandle, env) || resolveStringRef(slot?.selfHandle, env);
238
+ return normalizeIMessageSelfHandle(raw);
239
+ }
240
+ /**
241
+ * Resolve the REMOTE host (`user@host` / `host`) for an account when the `imsg`
242
+ * bridge runs on a different machine. Per-account → top-level → "". Returns the
243
+ * raw configured value; the SCP layer safety-validates it.
244
+ */
245
+ export function resolveIMessageRemoteHost(cfg, accountId, env = process.env) {
246
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
247
+ const slot = imessageChannelConfig(cfg);
248
+ const entry = findAccountEntry(cfg, id);
249
+ return resolveStringRef(entry?.remoteHost, env) || resolveStringRef(slot?.remoteHost, env);
250
+ }
251
+ /**
252
+ * Resolve whether inbound media should be resolved at all. Per-account →
253
+ * top-level → DEFAULT TRUE (resolve media). Setting `includeAttachments:false`
254
+ * opts a noisy / privacy-sensitive account out of inbound media resolution.
255
+ */
256
+ export function resolveIMessageIncludeAttachments(cfg, accountId) {
257
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
258
+ const slot = imessageChannelConfig(cfg);
259
+ const entry = findAccountEntry(cfg, id);
260
+ if (typeof entry?.includeAttachments === "boolean")
261
+ return entry.includeAttachments;
262
+ if (typeof slot?.includeAttachments === "boolean")
263
+ return slot.includeAttachments;
264
+ return true;
265
+ }
266
+ /** Resolve the default outbound recipient (per-account → top-level → ""). */
267
+ export function resolveIMessageDefaultTo(cfg, accountId, env = process.env) {
268
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
269
+ const slot = imessageChannelConfig(cfg);
270
+ const entry = findAccountEntry(cfg, id);
271
+ return resolveStringRef(entry?.defaultTo, env) || resolveStringRef(slot?.defaultTo, env);
272
+ }
273
+ /** Coerce a non-negative integer history limit (per-account → top-level → fallback). */
274
+ function resolveHistoryLimit(entryVal, slotVal, fallback) {
275
+ const pick = typeof entryVal === "number" ? entryVal : typeof slotVal === "number" ? slotVal : fallback;
276
+ return Number.isFinite(pick) && pick > 0 ? Math.floor(pick) : 0;
277
+ }
278
+ /** Resolve the rolling-history depth for an untagged GROUP message (0 = off). */
279
+ export function resolveIMessageHistoryLimit(cfg, accountId) {
280
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
281
+ const slot = imessageChannelConfig(cfg);
282
+ const entry = findAccountEntry(cfg, id);
283
+ return resolveHistoryLimit(entry?.historyLimit, slot?.historyLimit, DEFAULT_IMESSAGE_HISTORY_LIMIT);
284
+ }
285
+ /** Resolve the rolling-history depth for an untagged DM (0 = off). */
286
+ export function resolveIMessageDmHistoryLimit(cfg, accountId) {
287
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
288
+ const slot = imessageChannelConfig(cfg);
289
+ const entry = findAccountEntry(cfg, id);
290
+ return resolveHistoryLimit(entry?.dmHistoryLimit, slot?.dmHistoryLimit, DEFAULT_IMESSAGE_HISTORY_LIMIT);
291
+ }
292
+ /** Resolve the per-message outbound text chunk size (chars). */
293
+ export function resolveIMessageTextChunkLimit(cfg, accountId) {
294
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
295
+ const slot = imessageChannelConfig(cfg);
296
+ const entry = findAccountEntry(cfg, id);
297
+ const raw = typeof entry?.textChunkLimit === "number" ? entry.textChunkLimit : slot?.textChunkLimit;
298
+ return typeof raw === "number" && raw > 0 ? Math.floor(raw) : DEFAULT_IMESSAGE_TEXT_CHUNK_LIMIT;
299
+ }
300
+ /** Coerce a loose `chunkMode` string to the typed union (defaults to `length`). */
301
+ export function coerceIMessageChunkMode(raw) {
302
+ const v = typeof raw === "string" ? raw.trim().toLowerCase() : "";
303
+ return v === "newline" ? "newline" : "length";
304
+ }
305
+ /** Resolve the outbound chunk strategy (per-account → top-level → `length`). */
306
+ export function resolveIMessageChunkMode(cfg, accountId) {
307
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
308
+ const slot = imessageChannelConfig(cfg);
309
+ const entry = findAccountEntry(cfg, id);
310
+ return coerceIMessageChunkMode(entry?.chunkMode ?? slot?.chunkMode);
311
+ }
312
+ /** Resolve a per-account view of the config (defaults filled in). */
313
+ export function resolveIMessageAccount(cfg, accountId, env = process.env) {
314
+ const slot = imessageChannelConfig(cfg);
315
+ const id = accountId?.trim() || DEFAULT_ACCOUNT_ID;
316
+ const entry = findAccountEntry(cfg, id);
317
+ const enabled = entry?.enabled !== false && slot?.enabled === true;
318
+ const service = coerceIMessageService(entry?.service ?? slot?.service, DEFAULT_SERVICE);
319
+ const region = (resolveStringRef(entry?.region, env) || resolveStringRef(slot?.region, env) || DEFAULT_REGION).trim();
320
+ const mediaMaxMb = typeof entry?.mediaMaxMb === "number" && entry.mediaMaxMb > 0
321
+ ? entry.mediaMaxMb
322
+ : typeof slot?.mediaMaxMb === "number" && slot.mediaMaxMb > 0
323
+ ? slot.mediaMaxMb
324
+ : DEFAULT_MEDIA_MAX_MB;
325
+ return {
326
+ accountId: id,
327
+ enabled,
328
+ cliPath: resolveIMessageCliPath(cfg, id, env),
329
+ dbPath: resolveIMessageDbPath(cfg, id, env),
330
+ service,
331
+ region,
332
+ mediaMaxBytes: Math.round(mediaMaxMb * 1024 * 1024),
333
+ probeTimeoutMs: resolveIMessageProbeTimeoutMs(cfg, id),
334
+ selfHandle: resolveIMessageSelfHandle(cfg, id, env),
335
+ remoteHost: resolveIMessageRemoteHost(cfg, id, env),
336
+ includeAttachments: resolveIMessageIncludeAttachments(cfg, id),
337
+ defaultTo: resolveIMessageDefaultTo(cfg, id, env),
338
+ historyLimit: resolveIMessageHistoryLimit(cfg, id),
339
+ dmHistoryLimit: resolveIMessageDmHistoryLimit(cfg, id),
340
+ textChunkLimit: resolveIMessageTextChunkLimit(cfg, id),
341
+ chunkMode: resolveIMessageChunkMode(cfg, id),
342
+ verbose: slot?.verbose === true,
343
+ };
344
+ }
345
+ /**
346
+ * Resolve the idle-thread-session TTL in ms, or `null` when unset / disabled.
347
+ * Accepts a number (ms) or a duration string (`"6h"`, `"30m"`, …). The cron
348
+ * session-reaper uses this to age out idle iMessage group sessions.
349
+ */
350
+ export function imessageThreadIdleTtlMs(cfg) {
351
+ const raw = imessageChannelConfig(cfg)?.threadIdleTtlMs;
352
+ if (typeof raw === "number")
353
+ return raw > 0 ? raw : null;
354
+ if (typeof raw !== "string")
355
+ return null;
356
+ const trimmed = raw.trim();
357
+ if (!trimmed)
358
+ return null;
359
+ const m = /^(\d+)\s*(s|m|h|d|w)?$/i.exec(trimmed);
360
+ if (!m)
361
+ return null;
362
+ const n = Number(m[1]);
363
+ if (!Number.isFinite(n) || n <= 0)
364
+ return null;
365
+ const unit = (m[2] ?? "ms").toLowerCase();
366
+ const mult = { s: 1_000, m: 60_000, h: 3_600_000, d: 86_400_000, w: 604_800_000, ms: 1 };
367
+ const factor = mult[unit] ?? 1;
368
+ return n * factor;
369
+ }
370
+ export { CHANNEL_ID as IMESSAGE_CHANNEL_ID, DEFAULT_ACCOUNT_ID as IMESSAGE_DEFAULT_ACCOUNT_ID, CLI_PATH_ENV_VAR as IMESSAGE_CLI_PATH_ENV_VAR, DEFAULT_CLI_PATH as IMESSAGE_DEFAULT_CLI_PATH, };
371
+ //# sourceMappingURL=account-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-config.js","sourceRoot":"","sources":["../../../../src/agents/channels/imessage/account-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * iMessage channel adapter.
3
+ *
4
+ * Implements the Brigade `ChannelAdapter` contract on top of the `imsg` CLI
5
+ * driven as a JSON-RPC subprocess (`connection.ts`). iMessage authenticates via
6
+ * the local Messages.app session — there is NO bot token, so enablement is just
7
+ * `channels.imessage.enabled: true` plus a runnable `imsg` binary. The adapter
8
+ * declares a `setup` wizard for the binary path (so `brigade channels add` can
9
+ * configure a non-PATH install) and has no QR/link flow.
10
+ *
11
+ * Modeled on `discord/adapter.ts`: same `isConfigured`→`start` config capture,
12
+ * same health-flag mirroring, same deferred-media passthrough on inbound, same
13
+ * chunk-then-send outbound (chunk the markdown, plain-text-ify each chunk, send).
14
+ *
15
+ * TEST SEAM: `connectImpl` overrides how the connection is built — production
16
+ * leaves it undefined and `connectIMessage` lazy-spawns the subprocess (which
17
+ * itself refuses in tests); a unit test injects a fake connection so send /
18
+ * health / inbound dispatch run with no real binary.
19
+ */
20
+ import { type ChannelAdapter, type ChannelCapabilities } from "../sdk.js";
21
+ import { type ConnectIMessageArgs, type IMessageConnection } from "./connection.js";
22
+ /** iMessage capabilities — DMs + groups, media + reply; no edit/unsend/reactions via the bridge. */
23
+ export declare const IMESSAGE_CAPABILITIES: ChannelCapabilities;
24
+ /** Adapter construction options — all optional for back-compat. */
25
+ export interface CreateIMessageAdapterOptions {
26
+ /** Per-account scope. Defaults to `"default"` (single-account). */
27
+ accountId?: string;
28
+ /**
29
+ * TEST SEAM: override how the connection is built. Production leaves this
30
+ * undefined and `connectIMessage` lazy-spawns the `imsg` subprocess. Tests
31
+ * inject a fake.
32
+ */
33
+ connectImpl?: (args: ConnectIMessageArgs) => Promise<IMessageConnection>;
34
+ }
35
+ export declare function createIMessageAdapter(opts?: CreateIMessageAdapterOptions): ChannelAdapter;
36
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/imessage/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAMxB,MAAM,WAAW,CAAC;AAWnB,OAAO,EAEN,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAEvB,MAAM,iBAAiB,CAAC;AAMzB,oGAAoG;AACpG,eAAO,MAAM,qBAAqB,EAAE,mBAInC,CAAC;AAEF,mEAAmE;AACnE,MAAM,WAAW,4BAA4B;IAC5C,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACzE;AAoBD,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,4BAAiC,GAAG,cAAc,CAgP7F"}