@spinabot/brigade 1.6.1 → 1.7.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 (133) hide show
  1. package/dist/agents/channels/discord/account-config.d.ts +60 -0
  2. package/dist/agents/channels/discord/account-config.d.ts.map +1 -1
  3. package/dist/agents/channels/discord/account-config.js +89 -0
  4. package/dist/agents/channels/discord/account-config.js.map +1 -1
  5. package/dist/agents/channels/discord/adapter.d.ts +24 -1
  6. package/dist/agents/channels/discord/adapter.d.ts.map +1 -1
  7. package/dist/agents/channels/discord/adapter.js +208 -41
  8. package/dist/agents/channels/discord/adapter.js.map +1 -1
  9. package/dist/agents/channels/discord/component-blocks.d.ts +108 -0
  10. package/dist/agents/channels/discord/component-blocks.d.ts.map +1 -0
  11. package/dist/agents/channels/discord/component-blocks.js +113 -0
  12. package/dist/agents/channels/discord/component-blocks.js.map +1 -0
  13. package/dist/agents/channels/discord/components.d.ts +78 -0
  14. package/dist/agents/channels/discord/components.d.ts.map +1 -1
  15. package/dist/agents/channels/discord/components.js +89 -0
  16. package/dist/agents/channels/discord/components.js.map +1 -1
  17. package/dist/agents/channels/discord/connection.d.ts +195 -12
  18. package/dist/agents/channels/discord/connection.d.ts.map +1 -1
  19. package/dist/agents/channels/discord/connection.js +852 -38
  20. package/dist/agents/channels/discord/connection.js.map +1 -1
  21. package/dist/agents/channels/discord/directory-cache.d.ts +47 -0
  22. package/dist/agents/channels/discord/directory-cache.d.ts.map +1 -0
  23. package/dist/agents/channels/discord/directory-cache.js +131 -0
  24. package/dist/agents/channels/discord/directory-cache.js.map +1 -0
  25. package/dist/agents/channels/discord/directory-live.d.ts +61 -0
  26. package/dist/agents/channels/discord/directory-live.d.ts.map +1 -0
  27. package/dist/agents/channels/discord/directory-live.js +140 -0
  28. package/dist/agents/channels/discord/directory-live.js.map +1 -0
  29. package/dist/agents/channels/discord/format.d.ts +15 -0
  30. package/dist/agents/channels/discord/format.d.ts.map +1 -1
  31. package/dist/agents/channels/discord/format.js +56 -0
  32. package/dist/agents/channels/discord/format.js.map +1 -1
  33. package/dist/agents/channels/discord/guilds.d.ts +25 -0
  34. package/dist/agents/channels/discord/guilds.d.ts.map +1 -0
  35. package/dist/agents/channels/discord/guilds.js +46 -0
  36. package/dist/agents/channels/discord/guilds.js.map +1 -0
  37. package/dist/agents/channels/discord/inbound-extras.d.ts +166 -9
  38. package/dist/agents/channels/discord/inbound-extras.d.ts.map +1 -1
  39. package/dist/agents/channels/discord/inbound-extras.js +246 -8
  40. package/dist/agents/channels/discord/inbound-extras.js.map +1 -1
  41. package/dist/agents/channels/discord/index.d.ts +10 -3
  42. package/dist/agents/channels/discord/index.d.ts.map +1 -1
  43. package/dist/agents/channels/discord/index.js +10 -3
  44. package/dist/agents/channels/discord/index.js.map +1 -1
  45. package/dist/agents/channels/discord/modal-registry.d.ts +89 -0
  46. package/dist/agents/channels/discord/modal-registry.d.ts.map +1 -0
  47. package/dist/agents/channels/discord/modal-registry.js +104 -0
  48. package/dist/agents/channels/discord/modal-registry.js.map +1 -0
  49. package/dist/agents/channels/discord/modals.d.ts +100 -0
  50. package/dist/agents/channels/discord/modals.d.ts.map +1 -0
  51. package/dist/agents/channels/discord/modals.js +124 -0
  52. package/dist/agents/channels/discord/modals.js.map +1 -0
  53. package/dist/agents/channels/discord/permission-audit.d.ts +43 -0
  54. package/dist/agents/channels/discord/permission-audit.d.ts.map +1 -0
  55. package/dist/agents/channels/discord/permission-audit.js +192 -0
  56. package/dist/agents/channels/discord/permission-audit.js.map +1 -0
  57. package/dist/agents/channels/discord/plugin.d.ts +18 -2
  58. package/dist/agents/channels/discord/plugin.d.ts.map +1 -1
  59. package/dist/agents/channels/discord/plugin.js +73 -4
  60. package/dist/agents/channels/discord/plugin.js.map +1 -1
  61. package/dist/agents/channels/discord/probe.d.ts +23 -1
  62. package/dist/agents/channels/discord/probe.d.ts.map +1 -1
  63. package/dist/agents/channels/discord/probe.js +40 -5
  64. package/dist/agents/channels/discord/probe.js.map +1 -1
  65. package/dist/agents/channels/discord/rest-actions.d.ts +346 -0
  66. package/dist/agents/channels/discord/rest-actions.d.ts.map +1 -0
  67. package/dist/agents/channels/discord/rest-actions.js +559 -0
  68. package/dist/agents/channels/discord/rest-actions.js.map +1 -0
  69. package/dist/agents/channels/discord/rest-components.d.ts +122 -0
  70. package/dist/agents/channels/discord/rest-components.d.ts.map +1 -0
  71. package/dist/agents/channels/discord/rest-components.js +243 -0
  72. package/dist/agents/channels/discord/rest-components.js.map +1 -0
  73. package/dist/agents/channels/discord/security-audit.d.ts +29 -0
  74. package/dist/agents/channels/discord/security-audit.d.ts.map +1 -0
  75. package/dist/agents/channels/discord/security-audit.js +94 -0
  76. package/dist/agents/channels/discord/security-audit.js.map +1 -0
  77. package/dist/agents/channels/discord/security-doctor.d.ts +43 -0
  78. package/dist/agents/channels/discord/security-doctor.d.ts.map +1 -0
  79. package/dist/agents/channels/discord/security-doctor.js +83 -0
  80. package/dist/agents/channels/discord/security-doctor.js.map +1 -0
  81. package/dist/agents/channels/discord/status-issues.d.ts +37 -0
  82. package/dist/agents/channels/discord/status-issues.d.ts.map +1 -0
  83. package/dist/agents/channels/discord/status-issues.js +66 -0
  84. package/dist/agents/channels/discord/status-issues.js.map +1 -0
  85. package/dist/agents/channels/discord/subagent-thread-binding-store.d.ts +57 -0
  86. package/dist/agents/channels/discord/subagent-thread-binding-store.d.ts.map +1 -0
  87. package/dist/agents/channels/discord/subagent-thread-binding-store.js +98 -0
  88. package/dist/agents/channels/discord/subagent-thread-binding-store.js.map +1 -0
  89. package/dist/agents/channels/discord/subagent-thread-binding.d.ts +95 -0
  90. package/dist/agents/channels/discord/subagent-thread-binding.d.ts.map +1 -0
  91. package/dist/agents/channels/discord/subagent-thread-binding.js +208 -0
  92. package/dist/agents/channels/discord/subagent-thread-binding.js.map +1 -0
  93. package/dist/agents/channels/discord/system-events.d.ts +31 -0
  94. package/dist/agents/channels/discord/system-events.d.ts.map +1 -0
  95. package/dist/agents/channels/discord/system-events.js +74 -0
  96. package/dist/agents/channels/discord/system-events.js.map +1 -0
  97. package/dist/agents/channels/general-callback.d.ts +12 -0
  98. package/dist/agents/channels/general-callback.d.ts.map +1 -1
  99. package/dist/agents/channels/general-callback.js +18 -0
  100. package/dist/agents/channels/general-callback.js.map +1 -1
  101. package/dist/agents/channels/inbound-pipeline.d.ts.map +1 -1
  102. package/dist/agents/channels/inbound-pipeline.js +5 -3
  103. package/dist/agents/channels/inbound-pipeline.js.map +1 -1
  104. package/dist/agents/extensions/types.d.ts +7 -0
  105. package/dist/agents/extensions/types.d.ts.map +1 -1
  106. package/dist/agents/extensions/types.js.map +1 -1
  107. package/dist/agents/subagent-announce-delivery.d.ts +10 -0
  108. package/dist/agents/subagent-announce-delivery.d.ts.map +1 -1
  109. package/dist/agents/subagent-announce-delivery.js +1 -0
  110. package/dist/agents/subagent-announce-delivery.js.map +1 -1
  111. package/dist/agents/subagent-completion-bridge.d.ts.map +1 -1
  112. package/dist/agents/subagent-completion-bridge.js +81 -0
  113. package/dist/agents/subagent-completion-bridge.js.map +1 -1
  114. package/dist/agents/subagent-spawn.d.ts.map +1 -1
  115. package/dist/agents/subagent-spawn.js +57 -4
  116. package/dist/agents/subagent-spawn.js.map +1 -1
  117. package/dist/agents/tools/discord-action-tool.d.ts +224 -0
  118. package/dist/agents/tools/discord-action-tool.d.ts.map +1 -0
  119. package/dist/agents/tools/discord-action-tool.js +848 -0
  120. package/dist/agents/tools/discord-action-tool.js.map +1 -0
  121. package/dist/agents/tools/registry.d.ts.map +1 -1
  122. package/dist/agents/tools/registry.js +21 -0
  123. package/dist/agents/tools/registry.js.map +1 -1
  124. package/dist/agents/tools/sessions/index.d.ts +8 -0
  125. package/dist/agents/tools/sessions/index.d.ts.map +1 -1
  126. package/dist/agents/tools/sessions/index.js +15 -3
  127. package/dist/agents/tools/sessions/index.js.map +1 -1
  128. package/dist/buildstamp.json +1 -1
  129. package/dist/cli/commands/channels.d.ts +2 -0
  130. package/dist/cli/commands/channels.d.ts.map +1 -1
  131. package/dist/cli/commands/channels.js +58 -1
  132. package/dist/cli/commands/channels.js.map +1 -1
  133. package/package.json +1 -1
@@ -31,7 +31,9 @@
31
31
  * reconnect must not double-run the agent).
32
32
  */
33
33
  import { type InboundMediaAttachment, type InboundReplyContext, type OutboundMedia } from "../sdk.js";
34
- import { type DiscordActionRow } from "./components.js";
34
+ import { type DiscordActionRow, type DiscordSelectSpec } from "./components.js";
35
+ import { type DiscordV2MessageSpec } from "./component-blocks.js";
36
+ import { type DiscordModalEntry } from "./modal-registry.js";
35
37
  /**
36
38
  * Jittered exponential backoff for reconnect attempt `attempt` (0-based). Thin
37
39
  * wrapper over the neutral `nextBackoffDelay` helper — kept as a named export so
@@ -87,22 +89,29 @@ export interface DiscordInboundMessage {
87
89
  * press rather than a typed message. `data` is the opaque payload the pressed
88
90
  * button declared at send time (an approval-callback codec string OR a
89
91
  * general-prefixed token); `callbackId` is the interaction id (so the press
90
- * can be acked). Undefined for ordinary messages.
92
+ * can be acked). `values` carries the chosen value(s) when the press came from
93
+ * a SELECT menu (entity selects prefix ids: `user:` / `role:` / `channel:` /
94
+ * `mentionable:`); a plain button press carries no `values`. Undefined for
95
+ * ordinary messages.
91
96
  */
92
97
  callbackQuery?: {
93
98
  data: string;
94
99
  callbackId: string;
100
+ values?: string[];
95
101
  };
96
102
  /** True when this inbound is a message edit (text carries the NEW text). */
97
103
  edited?: boolean;
98
104
  /**
99
105
  * Inbound reaction context — present ONLY when this inbound is a reaction-add.
100
106
  * `emojis` are the newly-added reaction emoji name(s); `targetMessageId` is the
101
- * message they landed on. Undefined for typed messages.
107
+ * message they landed on; `targetAuthorId` is the author of the reacted message
108
+ * (so the adapter can gate `reactionNotifications: "own"`). Undefined for typed
109
+ * messages.
102
110
  */
103
111
  reaction?: {
104
112
  emojis: string[];
105
113
  targetMessageId: string;
114
+ targetAuthorId?: string;
106
115
  };
107
116
  /** Raw discord.js object (for adapters that need more). */
108
117
  raw: unknown;
@@ -113,6 +122,21 @@ export interface DiscordInboundMessage {
113
122
  * with zero network — the runtime path builds a real `Client` and it
114
123
  * structurally satisfies this shape.
115
124
  */
125
+ /**
126
+ * The discord.js `PresenceData` shape the connection sets via
127
+ * `client.user.setPresence(...)`. `status` is the online dot; `activities` is at
128
+ * most one activity row (name + numeric `ActivityType` + optional `url` for a
129
+ * streaming activity + optional `state` for a custom activity).
130
+ */
131
+ export interface DiscordPresencePayload {
132
+ status?: "online" | "idle" | "dnd" | "invisible";
133
+ activities?: Array<{
134
+ name: string;
135
+ type: number;
136
+ url?: string;
137
+ state?: string;
138
+ }>;
139
+ }
116
140
  export interface DiscordClientLike {
117
141
  /** Subscribe a Gateway event handler (`messageCreate`, `interactionCreate`, …). */
118
142
  on(event: string, handler: (...args: never[]) => unknown): unknown;
@@ -121,10 +145,15 @@ export interface DiscordClientLike {
121
145
  login(token: string): Promise<string>;
122
146
  /** Tear down the connection + websocket. */
123
147
  destroy(): Promise<void> | void;
124
- /** The bot user once ready (carries `.id` + `.username`), else null. */
148
+ /**
149
+ * The bot user once ready (carries `.id` + `.username`), else null. discord.js
150
+ * exposes `setPresence(data)` on `client.user` once the Gateway is ready — used
151
+ * to apply the configured presence/activity (Phase 5).
152
+ */
125
153
  user: {
126
154
  id?: string;
127
155
  username?: string;
156
+ setPresence?: (data: DiscordPresencePayload) => unknown;
128
157
  } | null;
129
158
  /** REST handle for application-command registration + raw calls. */
130
159
  rest?: {
@@ -146,6 +175,12 @@ export interface DiscordClientLike {
146
175
  /** The outbound surface a resolved channel exposes (send / typing). */
147
176
  export interface DiscordSendChannelLike {
148
177
  id?: string;
178
+ /**
179
+ * discord.js `ChannelType` enum value. A `GuildForum` (15) / `GuildMedia` (16)
180
+ * channel REJECTS a plain `.send()` — the outbound path must open a thread
181
+ * (forum post) instead (Fix 2b).
182
+ */
183
+ type?: number;
149
184
  /** True for a text-capable channel (guild text, DM, thread). */
150
185
  isTextBased?: () => boolean;
151
186
  /**
@@ -154,6 +189,14 @@ export interface DiscordSendChannelLike {
154
189
  * sent message (carrying `.id`).
155
190
  */
156
191
  send(options: DiscordSendOptions): Promise<DiscordSentMessageLike>;
192
+ /**
193
+ * Thread manager — present on forum/media/text channels. `create` opens a new
194
+ * thread; for a forum/media channel it MUST carry a starter `message` (Discord
195
+ * rejects an empty forum post). Used by the forum auto-thread path (Fix 2b).
196
+ */
197
+ threads?: {
198
+ create(options: DiscordThreadCreateOptions): Promise<DiscordThreadCreateResult>;
199
+ };
157
200
  /** Fetch a message in this channel by id (for edit / delete / react). */
158
201
  messages?: {
159
202
  fetch(id: string): Promise<DiscordSentMessageLike | null>;
@@ -161,12 +204,55 @@ export interface DiscordSendChannelLike {
161
204
  /** Show the typing indicator (best-effort). */
162
205
  sendTyping?: () => Promise<unknown>;
163
206
  }
207
+ /** Forum/media post creation options (the subset the connection sets). */
208
+ export interface DiscordThreadCreateOptions {
209
+ /** Thread title (Discord caps at 100 chars). */
210
+ name: string;
211
+ /** Starter message — REQUIRED for a forum/media post. */
212
+ message: {
213
+ content?: string;
214
+ flags?: number;
215
+ };
216
+ }
217
+ /**
218
+ * The created thread handle. discord.js returns a `ThreadChannel` carrying its
219
+ * own `.id` and (on a forum post) the starter `.lastMessage` / a fetchable
220
+ * starter message; we read whichever id is available.
221
+ */
222
+ export interface DiscordThreadCreateResult {
223
+ id?: string;
224
+ /** Some discord.js versions expose the starter message directly. */
225
+ lastMessage?: {
226
+ id?: string;
227
+ } | null;
228
+ }
164
229
  /** A sent / fetched message handle the outbound path acts on. */
165
230
  export interface DiscordSentMessageLike {
166
231
  id?: string;
167
232
  edit(options: DiscordSendOptions | string): Promise<DiscordSentMessageLike>;
168
233
  delete(): Promise<unknown>;
169
234
  react(emoji: string): Promise<unknown>;
235
+ /**
236
+ * Start a thread off this message (Phase 5 autoThread). discord.js
237
+ * `message.startThread({ name, autoArchiveDuration })` returns the created
238
+ * `ThreadChannel` (carrying `.id`). Optional — a minimal fake can omit it.
239
+ */
240
+ startThread?: (options: {
241
+ name: string;
242
+ autoArchiveDuration?: number;
243
+ }) => Promise<{
244
+ id?: string;
245
+ }>;
246
+ /** Some discord.js versions surface an already-created thread on the message. */
247
+ thread?: {
248
+ id?: string;
249
+ } | null;
250
+ /** True when a thread already hangs off this message. */
251
+ hasThread?: boolean;
252
+ /** Pin this message (Fix 2e). */
253
+ pin?: () => Promise<unknown>;
254
+ /** Unpin this message (Fix 2e). */
255
+ unpin?: () => Promise<unknown>;
170
256
  /** The bot's own reactions live under `.reactions.cache`; used by removeOwnReactions. */
171
257
  reactions?: {
172
258
  cache?: Map<string, DiscordReactionLike> | Iterable<DiscordReactionLike>;
@@ -215,6 +301,11 @@ export interface DiscordSendOptions {
215
301
  failIfNotExists: boolean;
216
302
  };
217
303
  allowedMentions?: DiscordAllowedMentions;
304
+ /**
305
+ * Message flags bitfield. The connection sets `MessageFlags.SuppressNotifications`
306
+ * (1 << 12 = 4096) for a silent send (Fix 2c) so the recipient gets no push/ping.
307
+ */
308
+ flags?: number;
218
309
  }
219
310
  /**
220
311
  * The SAFE default `allowedMentions` applied to every outbound Discord send.
@@ -226,22 +317,60 @@ export interface DiscordSendOptions {
226
317
  * can't mutate the shared default.
227
318
  */
228
319
  export declare function safeDiscordAllowedMentions(): DiscordAllowedMentions;
320
+ /**
321
+ * Sanitize a string into a Discord thread name (Phase 5 autoThread): take the
322
+ * first non-empty line, strip user/role/channel mention markup, collapse
323
+ * whitespace, and truncate to Discord's 100-char limit. Falls back to
324
+ * `"Thread <id>"` when nothing usable remains.
325
+ */
326
+ export declare function sanitizeThreadName(raw: string, fallbackId: string): string;
327
+ /**
328
+ * A `buildComponentRows` entry: a classic BUTTON row (an array of button specs),
329
+ * a SELECT-row marker (Fix 3a — alone in its ActionRow), or a Components-V2
330
+ * container marker (Fix 3c). The builders dispatch on shape: an array → buttons,
331
+ * `{ row: "select" }` → a select menu, `{ row: "v2" }` → a V2 container.
332
+ */
333
+ export type DiscordComponentRow = DiscordActionRow | DiscordSelectSpec | DiscordV2MessageSpec;
229
334
  /** The builders the connection needs from discord.js (injected for tests). */
230
335
  export interface DiscordBuilders {
231
336
  /** Wrap `{ path, name }` into an `AttachmentBuilder`-shaped object. */
232
337
  buildAttachment(path: string, name: string): unknown;
233
- /** Turn a serializable button-row grid into discord.js `ActionRowBuilder[]`. */
234
- buildComponentRows(rows: DiscordActionRow[]): unknown[];
338
+ /**
339
+ * Turn a serializable component-row list into discord.js builder objects. A
340
+ * button row → `ActionRowBuilder<ButtonBuilder>`; a select marker → an
341
+ * `ActionRowBuilder<*SelectMenuBuilder>`; a V2 marker → a `ContainerBuilder`.
342
+ */
343
+ buildComponentRows(rows: DiscordComponentRow[]): unknown[];
344
+ /**
345
+ * Build a discord.js `ModalBuilder` from a registered modal entry (Fix 3b).
346
+ * Optional — a build that never opens modals (or a minimal test fake) can omit
347
+ * it; the connection guards its absence.
348
+ */
349
+ buildModal?(params: {
350
+ modalId: string;
351
+ title: string;
352
+ entry: DiscordModalEntry;
353
+ }): unknown;
235
354
  }
236
355
  /** A discord.js Interaction (the subset Brigade reads). */
237
356
  export interface DiscordInteractionLike {
238
357
  /** True for a button press (`isButton()`); a command interaction sets `isChatInputCommand()`. */
239
358
  isButton?: () => boolean;
240
359
  isChatInputCommand?: () => boolean;
241
- /** The button's `custom_id` (button interactions). */
360
+ /** Select-menu type guards (Fix 3a) — exactly one is true for a select press. */
361
+ isStringSelectMenu?: () => boolean;
362
+ isUserSelectMenu?: () => boolean;
363
+ isRoleSelectMenu?: () => boolean;
364
+ isChannelSelectMenu?: () => boolean;
365
+ isMentionableSelectMenu?: () => boolean;
366
+ /** True for a modal submission (Fix 3b). */
367
+ isModalSubmit?: () => boolean;
368
+ /** The component's `custom_id` (button / select / modal interactions). */
242
369
  customId?: string;
243
370
  /** Slash-command name (command interactions). */
244
371
  commandName?: string;
372
+ /** The chosen value(s) on a select press (raw ids/values; entity selects carry ids). */
373
+ values?: string[];
245
374
  /** The interaction id (acked via the reply/deferUpdate path). */
246
375
  id?: string;
247
376
  channelId?: string;
@@ -258,8 +387,15 @@ export interface DiscordInteractionLike {
258
387
  message?: {
259
388
  id?: string;
260
389
  };
390
+ /** Modal-submit field accessor (Fix 3b) — `getTextInputValue(id)` yields a value. */
391
+ fields?: {
392
+ getTextInputValue?: (customId: string) => string;
393
+ fields?: unknown;
394
+ };
261
395
  /** Ack a button press silently (no visible change). */
262
396
  deferUpdate?: () => Promise<unknown>;
397
+ /** Open a modal in response to a button press (Fix 3b). */
398
+ showModal?: (modal: unknown) => Promise<unknown>;
263
399
  /** Ack a slash command with an ephemeral ack. */
264
400
  reply?: (options: unknown) => Promise<unknown>;
265
401
  deferReply?: (options?: unknown) => Promise<unknown>;
@@ -312,6 +448,25 @@ export interface ConnectDiscordArgs {
312
448
  buildersFactory?: () => DiscordBuilders;
313
449
  /** TEST SEAM: skip the real backoff sleep so reconnect tests run instantly. */
314
450
  sleepImpl?: (ms: number) => Promise<void>;
451
+ /**
452
+ * Bot presence/activity to apply once the Gateway reaches READY (Phase 5). When
453
+ * set, the connection calls `client.user.setPresence(...)` on every
454
+ * (re)connect. Omitted → Discord's default presence (unchanged).
455
+ */
456
+ presence?: DiscordPresencePayload | null;
457
+ /**
458
+ * TEST SEAM: override how presence is applied. Production calls
459
+ * `client.user.setPresence(payload)`; tests inject this to assert the mapped
460
+ * activity payload without a real client. Receives the resolved payload.
461
+ */
462
+ setPresenceImpl?: (client: DiscordClientLike, payload: DiscordPresencePayload) => void;
463
+ /**
464
+ * READY-deadline in ms (Phase 5 reliability). After `login()` resolves the
465
+ * connection waits this long for `clientReady`; if it never fires the socket is
466
+ * destroyed and the supervise loop re-enters with backoff (an opened-but-never-
467
+ * READY socket is not trusted). Default ~20s; ≤0 disables the watchdog.
468
+ */
469
+ readyTimeoutMs?: number;
315
470
  }
316
471
  export interface DiscordConnection {
317
472
  /** The bot's user id once connected, else null (self id for mention/echo detection). */
@@ -335,12 +490,15 @@ export interface DiscordConnection {
335
490
  messageId: string;
336
491
  }>;
337
492
  /**
338
- * Send a message carrying component button `rows` (the native approval prompt /
339
- * general buttons). `text` is the message content; `rows` is a serializable
340
- * button grid the builders turn into ActionRows. Text is sent verbatim (no
341
- * markdown pass) so the caller controls formatting.
493
+ * Send a message carrying component `rows` — button grids (the native approval
494
+ * prompt / general buttons), SELECT-menu markers (Fix 3a), and/or a
495
+ * Components-V2 container marker (Fix 3c). `text` is the message content; the
496
+ * builders turn each row into the matching discord.js component. Text is sent
497
+ * verbatim (no markdown pass) so the caller controls formatting. When a V2
498
+ * container is present the `IsComponentsV2` flag is set and the text moves into
499
+ * a V2 text block (a V2 message cannot carry plain `content`).
342
500
  */
343
- sendInteractive(channel: string, text: string, rows: DiscordActionRow[], opts?: DiscordSendTextOpts): Promise<{
501
+ sendInteractive(channel: string, text: string, rows: DiscordComponentRow[], opts?: DiscordSendTextOpts): Promise<{
344
502
  messageId: string;
345
503
  }>;
346
504
  /** Upload a media attachment via an AttachmentBuilder. */
@@ -353,12 +511,33 @@ export interface DiscordConnection {
353
511
  editMessageText(channel: string, messageId: string, text: string): Promise<void>;
354
512
  /** Delete a message. */
355
513
  deleteMessage(channel: string, messageId: string): Promise<void>;
514
+ /** Pin a message in a channel (Fix 2e). */
515
+ pinMessage(channel: string, messageId: string): Promise<void>;
516
+ /** Unpin a previously-pinned message (Fix 2e). */
517
+ unpinMessage(channel: string, messageId: string): Promise<void>;
356
518
  /** Register the bot's application (slash) commands. Best-effort. */
357
519
  registerCommands(commands: unknown[]): Promise<void>;
358
520
  /** Show typing in a channel (Discord clears it after ~10s or on the next send). */
359
521
  setComposing(channel: string, state: "composing" | "paused"): Promise<void>;
360
522
  /** Read-receipt no-op (Discord bots can't mark-read). */
361
523
  markRead(): Promise<void>;
524
+ /**
525
+ * Apply (or re-apply) a bot presence/activity to the live client (Phase 5).
526
+ * No-op when the client isn't ready or no payload is given. Used both by the
527
+ * on-ready auto-apply and by a live `set-presence` re-application.
528
+ */
529
+ applyPresence(payload?: DiscordPresencePayload | null): void;
530
+ /**
531
+ * Create a thread off an existing message (`message.startThread` / the REST
532
+ * `POST /channels/{id}/messages/{id}/threads`) and return its id (Phase 5
533
+ * autoThread). On a create-race (another actor already threaded the message)
534
+ * it best-effort refetches the message and returns the existing thread id.
535
+ * Returns `null` when the thread can't be created.
536
+ */
537
+ createThreadFromMessage(channelId: string, messageId: string, opts: {
538
+ name: string;
539
+ autoArchiveMinutes?: number;
540
+ }): Promise<string | null>;
362
541
  /** Disconnect the Gateway + tear down. */
363
542
  close(): Promise<void>;
364
543
  }
@@ -367,10 +546,14 @@ export interface DiscordSendTextOpts {
367
546
  threadId?: string;
368
547
  /** Native reply target — the message id to reply under. */
369
548
  replyToMessageId?: string;
549
+ /** Suppress the recipient's notification (SuppressNotifications flag) (Fix 2c). */
550
+ silent?: boolean;
370
551
  }
371
552
  export interface DiscordSendMediaOpts {
372
553
  /** Thread id to upload into. */
373
554
  threadId?: string;
555
+ /** Suppress the recipient's notification (SuppressNotifications flag) (Fix 2c). */
556
+ silent?: boolean;
374
557
  }
375
558
  /**
376
559
  * A Discord auth failure → the token is wrong / revoked / reset. Re-tokening is
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/agents/channels/discord/connection.ts"],"names":[],"mappings":"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"}