@spinabot/brigade 1.7.0 → 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 (214) 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/imessage/account-config.d.ts +178 -0
  114. package/dist/agents/channels/imessage/account-config.d.ts.map +1 -0
  115. package/dist/agents/channels/imessage/account-config.js +371 -0
  116. package/dist/agents/channels/imessage/account-config.js.map +1 -0
  117. package/dist/agents/channels/imessage/adapter.d.ts +36 -0
  118. package/dist/agents/channels/imessage/adapter.d.ts.map +1 -0
  119. package/dist/agents/channels/imessage/adapter.js +286 -0
  120. package/dist/agents/channels/imessage/adapter.js.map +1 -0
  121. package/dist/agents/channels/imessage/client.d.ts +99 -0
  122. package/dist/agents/channels/imessage/client.d.ts.map +1 -0
  123. package/dist/agents/channels/imessage/client.js +231 -0
  124. package/dist/agents/channels/imessage/client.js.map +1 -0
  125. package/dist/agents/channels/imessage/connection.d.ts +101 -0
  126. package/dist/agents/channels/imessage/connection.d.ts.map +1 -0
  127. package/dist/agents/channels/imessage/connection.js +367 -0
  128. package/dist/agents/channels/imessage/connection.js.map +1 -0
  129. package/dist/agents/channels/imessage/format.d.ts +45 -0
  130. package/dist/agents/channels/imessage/format.d.ts.map +1 -0
  131. package/dist/agents/channels/imessage/format.js +170 -0
  132. package/dist/agents/channels/imessage/format.js.map +1 -0
  133. package/dist/agents/channels/imessage/history.d.ts +49 -0
  134. package/dist/agents/channels/imessage/history.d.ts.map +1 -0
  135. package/dist/agents/channels/imessage/history.js +74 -0
  136. package/dist/agents/channels/imessage/history.js.map +1 -0
  137. package/dist/agents/channels/imessage/index.d.ts +25 -0
  138. package/dist/agents/channels/imessage/index.d.ts.map +1 -0
  139. package/dist/agents/channels/imessage/index.js +25 -0
  140. package/dist/agents/channels/imessage/index.js.map +1 -0
  141. package/dist/agents/channels/imessage/media.d.ts +92 -0
  142. package/dist/agents/channels/imessage/media.d.ts.map +1 -0
  143. package/dist/agents/channels/imessage/media.js +196 -0
  144. package/dist/agents/channels/imessage/media.js.map +1 -0
  145. package/dist/agents/channels/imessage/messaging.d.ts +14 -0
  146. package/dist/agents/channels/imessage/messaging.d.ts.map +1 -0
  147. package/dist/agents/channels/imessage/messaging.js +37 -0
  148. package/dist/agents/channels/imessage/messaging.js.map +1 -0
  149. package/dist/agents/channels/imessage/module.d.ts +16 -0
  150. package/dist/agents/channels/imessage/module.d.ts.map +1 -0
  151. package/dist/agents/channels/imessage/module.js +23 -0
  152. package/dist/agents/channels/imessage/module.js.map +1 -0
  153. package/dist/agents/channels/imessage/monitor.d.ts +207 -0
  154. package/dist/agents/channels/imessage/monitor.d.ts.map +1 -0
  155. package/dist/agents/channels/imessage/monitor.js +504 -0
  156. package/dist/agents/channels/imessage/monitor.js.map +1 -0
  157. package/dist/agents/channels/imessage/plugin.d.ts +53 -0
  158. package/dist/agents/channels/imessage/plugin.d.ts.map +1 -0
  159. package/dist/agents/channels/imessage/plugin.js +215 -0
  160. package/dist/agents/channels/imessage/plugin.js.map +1 -0
  161. package/dist/agents/channels/imessage/probe.d.ts +68 -0
  162. package/dist/agents/channels/imessage/probe.d.ts.map +1 -0
  163. package/dist/agents/channels/imessage/probe.js +134 -0
  164. package/dist/agents/channels/imessage/probe.js.map +1 -0
  165. package/dist/agents/channels/imessage/remote-attachments.d.ts +61 -0
  166. package/dist/agents/channels/imessage/remote-attachments.d.ts.map +1 -0
  167. package/dist/agents/channels/imessage/remote-attachments.js +131 -0
  168. package/dist/agents/channels/imessage/remote-attachments.js.map +1 -0
  169. package/dist/agents/channels/imessage/send.d.ts +61 -0
  170. package/dist/agents/channels/imessage/send.d.ts.map +1 -0
  171. package/dist/agents/channels/imessage/send.js +108 -0
  172. package/dist/agents/channels/imessage/send.js.map +1 -0
  173. package/dist/agents/channels/imessage/targets.d.ts +91 -0
  174. package/dist/agents/channels/imessage/targets.d.ts.map +1 -0
  175. package/dist/agents/channels/imessage/targets.js +245 -0
  176. package/dist/agents/channels/imessage/targets.js.map +1 -0
  177. package/dist/agents/channels/imessage/watch-error.d.ts +23 -0
  178. package/dist/agents/channels/imessage/watch-error.d.ts.map +1 -0
  179. package/dist/agents/channels/imessage/watch-error.js +69 -0
  180. package/dist/agents/channels/imessage/watch-error.js.map +1 -0
  181. package/dist/agents/channels/inbound-pipeline.d.ts +11 -0
  182. package/dist/agents/channels/inbound-pipeline.d.ts.map +1 -1
  183. package/dist/agents/channels/inbound-pipeline.js +20 -1
  184. package/dist/agents/channels/inbound-pipeline.js.map +1 -1
  185. package/dist/agents/channels/manager.d.ts +9 -0
  186. package/dist/agents/channels/manager.d.ts.map +1 -1
  187. package/dist/agents/channels/manager.js.map +1 -1
  188. package/dist/agents/channels/sdk.d.ts +4 -0
  189. package/dist/agents/channels/sdk.d.ts.map +1 -1
  190. package/dist/agents/channels/sdk.js +4 -0
  191. package/dist/agents/channels/sdk.js.map +1 -1
  192. package/dist/agents/extensions/modules/index.d.ts.map +1 -1
  193. package/dist/agents/extensions/modules/index.js +12 -0
  194. package/dist/agents/extensions/modules/index.js.map +1 -1
  195. package/dist/agents/session-wiring.d.ts +31 -0
  196. package/dist/agents/session-wiring.d.ts.map +1 -1
  197. package/dist/agents/session-wiring.js +45 -2
  198. package/dist/agents/session-wiring.js.map +1 -1
  199. package/dist/agents/tools/bluebubbles-action-tool.d.ts +66 -0
  200. package/dist/agents/tools/bluebubbles-action-tool.d.ts.map +1 -0
  201. package/dist/agents/tools/bluebubbles-action-tool.js +234 -0
  202. package/dist/agents/tools/bluebubbles-action-tool.js.map +1 -0
  203. package/dist/agents/tools/registry.d.ts.map +1 -1
  204. package/dist/agents/tools/registry.js +18 -0
  205. package/dist/agents/tools/registry.js.map +1 -1
  206. package/dist/buildstamp.json +1 -1
  207. package/dist/core/server.d.ts.map +1 -1
  208. package/dist/core/server.js +48 -2
  209. package/dist/core/server.js.map +1 -1
  210. package/dist/infra/net/fetch-guard.d.ts +24 -2
  211. package/dist/infra/net/fetch-guard.d.ts.map +1 -1
  212. package/dist/infra/net/fetch-guard.js +78 -31
  213. package/dist/infra/net/fetch-guard.js.map +1 -1
  214. package/package.json +1 -1
@@ -55,6 +55,10 @@ import { listSlackAccountIds, slackChannelEnabled, slackThreadIdleTtlMs, } from
55
55
  import { createSlackPlugin } from "../agents/channels/slack/plugin.js";
56
56
  import { listDiscordAccountIds, discordChannelEnabled, discordThreadIdleTtlMs, } from "../agents/channels/discord/account-config.js";
57
57
  import { createDiscordPlugin } from "../agents/channels/discord/plugin.js";
58
+ import { listIMessageAccountIds, imessageChannelEnabled, imessageThreadIdleTtlMs, } from "../agents/channels/imessage/account-config.js";
59
+ import { createIMessagePlugin } from "../agents/channels/imessage/plugin.js";
60
+ import { listBlueBubblesAccountIds, bluebubblesChannelEnabled, bluebubblesThreadIdleTtlMs, } from "../agents/channels/bluebubbles/account-config.js";
61
+ import { createBlueBubblesPlugin } from "../agents/channels/bluebubbles/plugin.js";
58
62
  import { createPluginChannelManagerFacade } from "../agents/channels/plugin-channel-manager-facade.js";
59
63
  import { clearChannelMessagingRegistry, syncChannelMessagingAdaptersFromPlugins, } from "../agents/channels/channel-messaging-registry.js";
60
64
  import { clearChannelSecurityRegistry, syncChannelSecurityAdaptersFromPlugins, } from "../agents/channels/channel-security-registry.js";
@@ -1721,7 +1725,11 @@ async function continueBoot(args) {
1721
1725
  // `loadConfig` is synchronous + cheap; reading fresh keeps the TTL
1722
1726
  // live across config reloads without threading a mutable holder.
1723
1727
  const cfg = loadConfig();
1724
- return telegramThreadIdleTtlMs(cfg) ?? slackThreadIdleTtlMs(cfg) ?? discordThreadIdleTtlMs(cfg);
1728
+ return (telegramThreadIdleTtlMs(cfg) ??
1729
+ slackThreadIdleTtlMs(cfg) ??
1730
+ discordThreadIdleTtlMs(cfg) ??
1731
+ imessageThreadIdleTtlMs(cfg) ??
1732
+ bluebubblesThreadIdleTtlMs(cfg));
1725
1733
  }
1726
1734
  catch {
1727
1735
  return null;
@@ -2283,6 +2291,11 @@ async function continueBoot(args) {
2283
2291
  ...(turn.channelApprovalRoute !== undefined
2284
2292
  ? { channelApprovalRoute: turn.channelApprovalRoute }
2285
2293
  : {}),
2294
+ // Forward the per-group/per-sender tool policy (set ONLY for
2295
+ // group-message turns that resolved one) so the tool-assembly
2296
+ // site narrows this turn's toolset by name. Undefined elsewhere
2297
+ // → toolset unchanged.
2298
+ ...(turn.toolPolicy !== undefined ? { toolPolicy: turn.toolPolicy } : {}),
2286
2299
  onSessionReady: (session) => {
2287
2300
  // A fallback candidate builds a fresh session; tear down the
2288
2301
  // previous candidate's wiring before attaching the new one.
@@ -4711,11 +4724,24 @@ async function continueBoot(args) {
4711
4724
  const discordAccounts = discordChannelEnabled(cfg)
4712
4725
  ? listDiscordAccountIds(cfg)
4713
4726
  : [];
4727
+ const imessageAccounts = imessageChannelEnabled(cfg)
4728
+ ? listIMessageAccountIds(cfg)
4729
+ : [];
4730
+ const bluebubblesAccounts = bluebubblesChannelEnabled(cfg)
4731
+ ? listBlueBubblesAccountIds(cfg)
4732
+ : [];
4714
4733
  const wantWhatsAppMulti = whatsappAccounts.length > 1;
4715
4734
  const wantTelegramMulti = telegramAccounts.length > 1;
4716
4735
  const wantSlackMulti = slackAccounts.length > 1;
4717
4736
  const wantDiscordMulti = discordAccounts.length > 1;
4718
- if (wantWhatsAppMulti || wantTelegramMulti || wantSlackMulti || wantDiscordMulti) {
4737
+ const wantIMessageMulti = imessageAccounts.length > 1;
4738
+ const wantBlueBubblesMulti = bluebubblesAccounts.length > 1;
4739
+ if (wantWhatsAppMulti ||
4740
+ wantTelegramMulti ||
4741
+ wantSlackMulti ||
4742
+ wantDiscordMulti ||
4743
+ wantIMessageMulti ||
4744
+ wantBlueBubblesMulti) {
4719
4745
  // Fresh list each (re)start so a reload doesn't accumulate stale plugins.
4720
4746
  bundledChannelPlugins = [];
4721
4747
  const facadeHandles = [];
@@ -4767,6 +4793,26 @@ async function continueBoot(args) {
4767
4793
  facadeHandles.push(discordPlugin);
4768
4794
  multiAccountSummary.push(`discord x${discordAccounts.length}`);
4769
4795
  }
4796
+ if (wantIMessageMulti) {
4797
+ const imessagePlugin = createIMessagePlugin({
4798
+ defaultAgentId: agentId,
4799
+ loadConfig: () => cfg,
4800
+ runTurn: (turn) => runGatewayTurn(turn),
4801
+ });
4802
+ bundledChannelPlugins.push(imessagePlugin);
4803
+ facadeHandles.push(imessagePlugin);
4804
+ multiAccountSummary.push(`imessage x${imessageAccounts.length}`);
4805
+ }
4806
+ if (wantBlueBubblesMulti) {
4807
+ const bluebubblesPlugin = createBlueBubblesPlugin({
4808
+ defaultAgentId: agentId,
4809
+ loadConfig: () => cfg,
4810
+ runTurn: (turn) => runGatewayTurn(turn),
4811
+ });
4812
+ bundledChannelPlugins.push(bluebubblesPlugin);
4813
+ facadeHandles.push(bluebubblesPlugin);
4814
+ multiAccountSummary.push(`bluebubbles x${bluebubblesAccounts.length}`);
4815
+ }
4770
4816
  const pluginById = new Map(bundledChannelPlugins.map((p) => [p.id, p]));
4771
4817
  // Register each constructed plugin's `meta` + its `messaging`/`security`
4772
4818
  // slots into the process-wide registries. These are full `ChannelPlugin`