openclaw-weixin 3.1.6 → 3.2.1

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.
@@ -9,6 +9,7 @@ import { MessageItemType, TypingStatus } from "../api/types.js";
9
9
  import { loadWeixinAccount } from "../auth/accounts.js";
10
10
  import { readFrameworkAllowFromList } from "../auth/pairing.js";
11
11
  import { downloadRemoteImageToTemp } from "../cdn/upload.js";
12
+ import { resolveWeixinBlockStreamingEnabled } from "../config/block-streaming.js";
12
13
  import { resolveReplyProgressMessagesEnabled } from "../config/reply-progress.js";
13
14
  import { downloadMediaFromItem } from "../media/media-download.js";
14
15
  import { logger } from "../util/logger.js";
@@ -16,8 +17,9 @@ import { redactError, redactToken } from "../util/redact.js";
16
17
  import { isDebugMode } from "./debug-mode.js";
17
18
  import { sendWeixinErrorNotice } from "./error-notice.js";
18
19
  import { getContextTokenFromMsgContext, isMediaItem, weixinMessageToMsgContext } from "./inbound.js";
20
+ import { dispatchWeixinInboundTurn } from "./inbound-turn.js";
19
21
  import { StreamingMarkdownFilter } from "./markdown-filter.js";
20
- import { applyWeixinMessageSendingHook, emitWeixinMessageSent } from "./outbound-hooks.js";
22
+ import { sendWeixinWithHooks } from "./outbound-hooks.js";
21
23
  import { WeixinReplyProgressSender } from "./reply-progress-sender.js";
22
24
  import { sendMessageWeixin } from "./send.js";
23
25
  import { sendWeixinMediaFile } from "./send-media.js";
@@ -140,7 +142,6 @@ export async function processOneMessage(full, deps) {
140
142
  const ctx = weixinMessageToMsgContext(full, deps.accountId, mediaOpts);
141
143
  // --- Framework command authorization ---
142
144
  const rawBody = textBody.trim() || (ctx.Body?.trim() ?? "");
143
- ctx.CommandBody = rawBody;
144
145
  const { senderAllowedForCommands, commandAuthorized } = await resolveSenderCommandAuthorizationWithRuntime({
145
146
  cfg: deps.config,
146
147
  rawBody,
@@ -169,108 +170,76 @@ export async function processOneMessage(full, deps) {
169
170
  logger.info(`authorization: dropping message from=${redactToken(senderId)} outcome=${directDmOutcome}`);
170
171
  return;
171
172
  }
172
- ctx.CommandAuthorized = commandAuthorized;
173
173
  logger.debug(`authorization: senderId=${redactToken(senderId, 6)} commandAuthorized=${String(commandAuthorized)} senderAllowed=${String(senderAllowedForCommands)}`);
174
174
  if (debug) {
175
175
  debugTrace.push("── 鉴权 ──", `│ auth: cmdAuthorized=${String(commandAuthorized)} senderAllowed=${String(senderAllowedForCommands)}`);
176
176
  debugTs.preDispatch = Date.now();
177
177
  }
178
- // Note: `route` was resolved earlier so downloadMedia could pick the
179
- // per-agent subdirectory. Session/storePath/dispatch below reuse the same
180
- // resolved object; no second routing call is needed.
181
- // Propagate the resolved session key into ctx so dispatchReplyFromConfig uses
182
- // the correct session (matching the dmScope from config) instead of falling back
183
- // to agent:main:main.
184
- ctx.SessionKey = route.sessionKey;
185
- const storePath = deps.channelRuntime.session.resolveStorePath(deps.config.session?.store, {
178
+ if (typeof deps.channelRuntime.inbound?.buildContext !== "function") {
179
+ throw new Error("weixin: host inbound.buildContext is missing");
180
+ }
181
+ const contextRoute = {
186
182
  agentId: route.agentId,
183
+ routeSessionKey: route.sessionKey,
184
+ ...("dmScope" in route ? { dmScope: route.dmScope } : {}),
185
+ };
186
+ const finalized = deps.channelRuntime.inbound.buildContext({
187
+ channel: "openclaw-weixin",
188
+ accountId: deps.accountId,
189
+ from: ctx.From,
190
+ sender: { id: senderId },
191
+ conversation: { kind: "direct", id: ctx.To },
192
+ route: contextRoute,
193
+ reply: { to: ctx.To },
194
+ message: { body: ctx.Body, rawBody: ctx.Body, bodyForAgent: ctx.Body, commandBody: rawBody },
195
+ messageId: ctx.MessageSid,
196
+ timestamp: ctx.Timestamp,
197
+ access: { commands: { authorized: commandAuthorized === true } },
198
+ media: ctx.MediaPath || ctx.MediaUrl
199
+ ? [{ path: ctx.MediaPath, url: ctx.MediaUrl, contentType: ctx.MediaType }]
200
+ : undefined,
187
201
  });
188
- const finalized = deps.channelRuntime.reply.finalizeInboundContext({
189
- ...ctx,
190
- BodyForAgent: ctx.Body,
191
- });
192
- logger.info(`inbound: from=${redactToken(finalized.From)} to=${redactToken(finalized.To)} bodyLen=${(finalized.Body ?? "").length} hasMedia=${Boolean(finalized.MediaPath ?? finalized.MediaUrl)}`);
193
- await deps.channelRuntime.session.recordInboundSession({
194
- storePath,
195
- sessionKey: route.sessionKey,
196
- ctx: finalized,
197
- updateLastRoute: {
198
- sessionKey: route.mainSessionKey,
199
- channel: "openclaw-weixin",
200
- to: ctx.To,
201
- accountId: deps.accountId,
202
- },
203
- onRecordError: (err) => deps.errLog(`recordInboundSession: ${redactError(err)}`),
204
- });
205
- logger.debug(`recordInboundSession: done sessionKey=${redactToken(route.sessionKey, 6)}`);
202
+ logger.info(`inbound: from=${redactToken(finalized.From)} to=${redactToken(finalized.To)} bodyLen=${(finalized.Body ?? "").length} hasMedia=${Boolean(ctx.MediaPath ?? ctx.MediaUrl)}`);
206
203
  const contextToken = getContextTokenFromMsgContext(ctx);
207
204
  const runId = randomUUID();
208
- const replyProgressSender = resolveReplyProgressMessagesEnabled(deps.config)
209
- ? new WeixinReplyProgressSender({
210
- runId,
211
- to: ctx.To,
212
- accountId: deps.accountId,
213
- opts: {
214
- baseUrl: deps.baseUrl,
215
- token: deps.token,
216
- contextToken,
217
- },
218
- })
219
- : undefined;
205
+ const sendOptions = { baseUrl: deps.baseUrl, token: deps.token, contextToken, runId };
220
206
  const humanDelay = deps.channelRuntime.reply.resolveHumanDelayConfig(deps.config, route.agentId);
221
207
  const typingTicket = deps.typingTicket;
222
- const typingCallbacks = createTypingCallbacks({
223
- start: typingTicket
224
- ? () => sendTyping({
208
+ const updateTyping = async (status) => {
209
+ if (typingTicket) {
210
+ await sendTyping({
225
211
  baseUrl: deps.baseUrl,
226
212
  token: deps.token,
227
- body: {
228
- ilink_user_id: ctx.To,
229
- typing_ticket: typingTicket,
230
- status: TypingStatus.TYPING,
231
- },
232
- })
233
- : async () => { },
234
- stop: typingTicket
235
- ? () => sendTyping({
236
- baseUrl: deps.baseUrl,
237
- token: deps.token,
238
- body: {
239
- ilink_user_id: ctx.To,
240
- typing_ticket: typingTicket,
241
- status: TypingStatus.CANCEL,
242
- },
243
- })
244
- : async () => { },
213
+ body: { ilink_user_id: ctx.To, typing_ticket: typingTicket, status },
214
+ });
215
+ }
216
+ };
217
+ const typingCallbacks = createTypingCallbacks({
218
+ start: () => updateTyping(TypingStatus.TYPING),
219
+ stop: () => updateTyping(TypingStatus.CANCEL),
245
220
  onStartError: (err) => deps.log(`[weixin] typing send error: ${redactError(err)}`),
246
221
  onStopError: (err) => deps.log(`[weixin] typing cancel error: ${redactError(err)}`),
247
222
  keepaliveIntervalMs: 5000,
248
223
  });
224
+ const replyProgressSender = resolveReplyProgressMessagesEnabled(deps.config)
225
+ ? new WeixinReplyProgressSender({
226
+ runId,
227
+ to: ctx.To,
228
+ accountId: deps.accountId,
229
+ opts: sendOptions,
230
+ })
231
+ : undefined;
249
232
  /** Delivery records populated synchronously at deliver() entry, safe to read in finally. */
250
233
  const debugDeliveries = [];
251
- const { dispatcher, replyOptions, markDispatchIdle } = deps.channelRuntime.reply.createReplyDispatcherWithTyping({
252
- humanDelay,
253
- typingCallbacks,
234
+ const delivery = {
235
+ preparePayload: (payload) => {
236
+ const filter = new StreamingMarkdownFilter();
237
+ return { ...payload, text: filter.feed(payload.text ?? "") + filter.flush() };
238
+ },
254
239
  deliver: async (payload) => {
255
- const rawText = payload.text ?? "";
256
- let text = (() => {
257
- const f = new StreamingMarkdownFilter();
258
- return f.feed(rawText) + f.flush();
259
- })();
240
+ const text = payload.text ?? "";
260
241
  const mediaUrl = payload.mediaUrl ?? payload.mediaUrls?.[0];
261
242
  logger.info(`outbound: to=${redactToken(ctx.To)} contextToken=${redactToken(contextToken)} textLen=${text.length} mediaUrl=${mediaUrl ? "present" : "none"}`);
262
- const sendingResult = await applyWeixinMessageSendingHook({
263
- to: ctx.To,
264
- text,
265
- accountId: deps.accountId,
266
- mediaUrl,
267
- runId,
268
- });
269
- if (sendingResult.cancelled) {
270
- logger.info(`outbound: cancelled by message_sending hook to=${redactToken(ctx.To)}`);
271
- return;
272
- }
273
- text = sendingResult.text;
274
243
  if (debug) {
275
244
  debugDeliveries.push({
276
245
  textLen: text.length,
@@ -279,76 +248,39 @@ export async function processOneMessage(full, deps) {
279
248
  });
280
249
  }
281
250
  try {
282
- if (mediaUrl) {
283
- let filePath;
284
- if (!mediaUrl.includes("://") || mediaUrl.startsWith("file://")) {
285
- if (mediaUrl.startsWith("file://")) {
286
- filePath = new URL(mediaUrl).pathname;
287
- }
288
- else if (!path.isAbsolute(mediaUrl)) {
289
- filePath = path.resolve(mediaUrl);
290
- }
291
- else {
292
- filePath = mediaUrl;
293
- }
294
- logger.debug("outbound: local media path resolved");
295
- }
296
- else if (mediaUrl.startsWith("http://") || mediaUrl.startsWith("https://")) {
251
+ const remote = mediaUrl?.startsWith("http://") || mediaUrl?.startsWith("https://");
252
+ let result;
253
+ if (mediaUrl && (!mediaUrl.includes("://") || mediaUrl.startsWith("file://") || remote)) {
254
+ let filePath = mediaUrl;
255
+ if (remote) {
297
256
  logger.debug("outbound: downloading remote media");
298
257
  filePath = await downloadRemoteImageToTemp(mediaUrl, MEDIA_OUTBOUND_TEMP_DIR);
299
258
  logger.debug("outbound: remote media downloaded");
300
259
  }
301
- else {
302
- logger.warn("outbound: unrecognized media URL scheme, sending text only");
303
- await sendMessageWeixin({
304
- to: ctx.To,
305
- text,
306
- opts: {
307
- baseUrl: deps.baseUrl,
308
- token: deps.token,
309
- contextToken,
310
- runId,
311
- },
312
- });
313
- emitWeixinMessageSent({ to: ctx.To, content: text, success: true, accountId: deps.accountId, runId });
314
- logger.info(`outbound: text sent to=${redactToken(ctx.To)}`);
315
- return;
260
+ else if (mediaUrl.startsWith("file://")) {
261
+ filePath = new URL(mediaUrl).pathname;
262
+ }
263
+ else if (!path.isAbsolute(mediaUrl)) {
264
+ filePath = path.resolve(mediaUrl);
316
265
  }
317
- await sendWeixinMediaFile({
266
+ result = await sendWeixinMediaFile({
318
267
  filePath,
319
268
  to: ctx.To,
320
269
  text,
321
- opts: { baseUrl: deps.baseUrl, token: deps.token, contextToken, runId },
270
+ opts: sendOptions,
322
271
  cdnBaseUrl: deps.cdnBaseUrl,
323
272
  });
324
- emitWeixinMessageSent({ to: ctx.To, content: text, success: true, accountId: deps.accountId, runId });
325
273
  logger.info(`outbound: media sent OK to=${redactToken(ctx.To)}`);
326
274
  }
327
275
  else {
328
- logger.debug(`outbound: sending text message to=${redactToken(ctx.To, 6)}`);
329
- await sendMessageWeixin({
330
- to: ctx.To,
331
- text,
332
- opts: {
333
- baseUrl: deps.baseUrl,
334
- token: deps.token,
335
- contextToken,
336
- runId,
337
- },
338
- });
339
- emitWeixinMessageSent({ to: ctx.To, content: text, success: true, accountId: deps.accountId, runId });
276
+ if (mediaUrl)
277
+ logger.warn("outbound: unrecognized media URL scheme, sending text only");
278
+ result = await sendMessageWeixin({ to: ctx.To, text, opts: sendOptions });
340
279
  logger.info(`outbound: text sent OK to=${redactToken(ctx.To)}`);
341
280
  }
281
+ return { messageIds: [result.messageId], content: text };
342
282
  }
343
283
  catch (err) {
344
- emitWeixinMessageSent({
345
- to: ctx.To,
346
- content: text,
347
- success: false,
348
- error: redactError(err),
349
- accountId: deps.accountId,
350
- runId,
351
- });
352
284
  logger.error(`outbound: FAILED to=${redactToken(ctx.To)} hasMedia=${Boolean(mediaUrl)} err=${redactError(err)}`);
353
285
  throw err;
354
286
  }
@@ -376,42 +308,46 @@ export async function processOneMessage(full, deps) {
376
308
  errLog: deps.errLog,
377
309
  });
378
310
  },
379
- });
311
+ };
380
312
  let queuedFollowup = false;
381
- const dispatchReplyOptions = {
382
- ...replyOptions,
383
- ...(replyProgressSender?.replyOptions ?? {}),
384
- // Newer hosts use this marker for active-run admission; older hosts ignore it.
385
- queuedFollowupLifecycle: {
386
- onEnqueued: () => {
313
+ try {
314
+ logger.debug(`inbound.dispatch: starting agentId=${redactToken(route.agentId, 6)}`);
315
+ await dispatchWeixinInboundTurn({
316
+ channelRuntime: deps.channelRuntime,
317
+ channel: "openclaw-weixin",
318
+ accountId: deps.accountId,
319
+ cfg: deps.config,
320
+ route,
321
+ ctxPayload: finalized,
322
+ record: {
323
+ updateLastRoute: {
324
+ sessionKey: route.mainSessionKey,
325
+ channel: "openclaw-weixin",
326
+ to: ctx.To,
327
+ accountId: deps.accountId,
328
+ },
329
+ onRecordError: (err) => deps.errLog(`recordInboundSession: ${redactError(err)}`),
330
+ },
331
+ delivery,
332
+ dispatcherOptions: { humanDelay, typingCallbacks },
333
+ replyOptions: {
334
+ ...(replyProgressSender?.replyOptions ?? {}),
335
+ runId,
336
+ disableBlockStreaming: !resolveWeixinBlockStreamingEnabled(deps.config, routeAccountId, deps.accountId),
337
+ },
338
+ onReplyAdmitted: deps.onReplyAdmitted,
339
+ onReplyDeferred: () => {
387
340
  queuedFollowup = true;
388
- deps.onReplyAdmitted?.();
389
341
  },
390
- onComplete: () => void replyProgressSender?.finalize(),
391
- },
392
- onAgentRunStart: () => deps.onReplyAdmitted?.(),
393
- onTurnAdopted: deps.onReplyAdmitted,
394
- disableBlockStreaming: true,
395
- };
396
- logger.debug(`dispatchReplyFromConfig: starting agentId=${redactToken(route.agentId, 6)}`);
397
- try {
398
- await deps.channelRuntime.reply.withReplyDispatcher({
399
- dispatcher,
400
- run: () => deps.channelRuntime.reply.dispatchReplyFromConfig({
401
- ctx: finalized,
402
- cfg: deps.config,
403
- dispatcher,
404
- replyOptions: dispatchReplyOptions,
405
- }),
342
+ onDeferredComplete: () => void replyProgressSender?.finalize(),
406
343
  });
407
- logger.debug(`dispatchReplyFromConfig: done agentId=${redactToken(route.agentId, 6)}`);
344
+ logger.debug(`inbound.dispatch: done agentId=${redactToken(route.agentId, 6)}`);
408
345
  }
409
346
  catch (err) {
410
- logger.error(`dispatchReplyFromConfig: error agentId=${redactToken(route.agentId)} err=${redactError(err)}`);
347
+ logger.error(`inbound.dispatch: error agentId=${redactToken(route.agentId)} err=${redactError(err)}`);
411
348
  throw err;
412
349
  }
413
350
  finally {
414
- markDispatchIdle();
415
351
  if (!queuedFollowup)
416
352
  await replyProgressSender?.finalize();
417
353
  logger.info(`debug-check: account=${redactToken(deps.accountId)} debug=${String(debug)} hasContextToken=${Boolean(contextToken)}`);
@@ -436,45 +372,14 @@ export async function processOneMessage(full, deps) {
436
372
  debugTrace.push("── 耗时 ──", `├ 平台→插件: ${platformDelay}`, `├ 入站处理(auth+route+media): ${inboundProcessMs}ms (mediaDownload: ${mediaDownloadMs}ms)`, `├ AI生成+回复: ${aiMs}ms`, `├ 总耗时: ${totalTime}`, `└ eventTime: ${eventTs > 0 ? new Date(eventTs).toISOString() : "N/A"}`);
437
373
  const timingText = `⏱ Debug 全链路\n${debugTrace.join("\n")}`;
438
374
  logger.info(`debug-timing: sending to=${redactToken(ctx.To)}`);
439
- let debugSentContent;
440
375
  try {
441
- const debugSendingResult = await applyWeixinMessageSendingHook({
442
- to: ctx.To,
443
- text: timingText,
444
- accountId: deps.accountId,
445
- runId,
376
+ const result = await sendWeixinWithHooks({ to: ctx.To, text: timingText, accountId: deps.accountId, runId }, async (text) => {
377
+ await sendMessageWeixin({ to: ctx.To, text, opts: sendOptions });
446
378
  });
447
- if (debugSendingResult.cancelled) {
448
- logger.info(`debug-timing: cancelled by message_sending hook to=${redactToken(ctx.To)}`);
449
- }
450
- else {
451
- debugSentContent = debugSendingResult.text;
452
- await sendMessageWeixin({
453
- to: ctx.To,
454
- text: debugSentContent,
455
- opts: { baseUrl: deps.baseUrl, token: deps.token, contextToken, runId },
456
- });
457
- emitWeixinMessageSent({
458
- to: ctx.To,
459
- content: debugSentContent,
460
- success: true,
461
- accountId: deps.accountId,
462
- runId,
463
- });
379
+ if (result?.visibleReplySent !== false)
464
380
  logger.info(`debug-timing: sent OK`);
465
- }
466
381
  }
467
382
  catch (debugErr) {
468
- if (debugSentContent !== undefined) {
469
- emitWeixinMessageSent({
470
- to: ctx.To,
471
- content: debugSentContent,
472
- success: false,
473
- error: redactError(debugErr),
474
- accountId: deps.accountId,
475
- runId,
476
- });
477
- }
478
383
  logger.error(`debug-timing: send FAILED err=${redactError(debugErr)}`);
479
384
  }
480
385
  }
@@ -1 +1 @@
1
- {"version":3,"file":"process-message.js","sourceRoot":"","sources":["../../../src/messaging/process-message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-message.js","sourceRoot":"","sources":["../../../src/messaging/process-message.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ const BACKOFF_DELAY_MS = 30_000;
14
14
  const RETRY_DELAY_MS = 2_000;
15
15
  const PLUGIN_APPROVAL_RE = /^\/approve\s+plugin:/i;
16
16
  /**
17
- * Long-poll loop: getUpdates -> dispatchReplyFromConfig.
17
+ * Long-poll loop: getUpdates -> public inbound turn dispatch.
18
18
  * Runs until abort.
19
19
  */
20
20
  export async function monitorWeixinProvider(opts) {
@@ -19,7 +19,8 @@ The wire-level endpoint and message shapes are documented in the
19
19
  | `src/auth/` | QR login, account persistence, ID compatibility, and pairing |
20
20
  | `src/api/` | Build authenticated backend requests and classify failures |
21
21
  | `src/monitor/monitor.ts` | Poll updates, persist cursors, and schedule inbound work |
22
- | `src/messaging/process-message.ts` | Authorize, route, record, and dispatch one inbound message |
22
+ | `src/messaging/process-message.ts` | Authorize, route, prepare context/media, and deliver one inbound message |
23
+ | `src/messaging/inbound-turn.ts` | Select the public host dispatch contract and adapt hook/lifecycle ownership |
23
24
  | `src/messaging/send*.ts` | Convert outbound text/media to backend message items |
24
25
  | `src/cdn/`, `src/media/` | Encrypt, upload, download, decrypt, and transcode media |
25
26
  | `src/storage/` | Resolve state paths and persist the polling cursor |
@@ -61,8 +62,8 @@ sequenceDiagram
61
62
  Monitor->>Processor: schedule message
62
63
  Processor->>Processor: handle slash command or download media
63
64
  Processor->>Runtime: authorize sender and resolve agent route
64
- Processor->>Runtime: record inbound session
65
- Processor->>Runtime: dispatch reply
65
+ Processor->>Runtime: build public inbound context and dispatch turn
66
+ Runtime->>Runtime: record session and manage reply dispatcher
66
67
  Runtime-->>Processor: text, media, and item lifecycle events
67
68
  ```
68
69
 
@@ -70,26 +71,39 @@ Ordinary messages are serialized until OpenClaw accepts the turn, after which
70
71
  polling can admit the next message. Plugin approval commands use a separate lane
71
72
  so an active ordinary turn cannot block approval.
72
73
 
74
+ `inbound-turn.ts` uses `inbound.buildContext` and selects `inbound.dispatch`, or
75
+ the public legacy `inbound.dispatchReply` only when `dispatch` is absent. Both
76
+ delegate session recording and dispatcher cleanup to the host; errors never
77
+ trigger a retry through the other contract. The OpenClaw 2026.6.1 minimum and
78
+ account-scoped state remain unchanged. Deferred replies retain their progress
79
+ sender until the host's completion callback, not merely the initial dispatch
80
+ return.
81
+
73
82
  ## Outbound flow
74
83
 
75
84
  ```mermaid
76
85
  flowchart LR
77
- A[OpenClaw outbound request] --> B{Account ID supplied?}
86
+ A[OpenClaw outbound request] --> F[Host message_sending hook]
87
+ F -->|cancelled| G[Return without adapter or backend send]
88
+ F -->|continue| B{Account ID supplied?}
78
89
  B -->|yes| C[Resolve configured account]
79
90
  B -->|no| D[Resolve by account-scoped context token]
80
91
  D --> C
81
92
  C --> E[Check active session]
82
- E --> F[Run message_sending hook]
83
- F -->|cancelled| G[Return without backend send]
84
- F -->|continue| H{Text or media?}
93
+ E --> H{Text or media?}
85
94
  H -->|text| I[Filter markdown and call sendMessage]
86
95
  H -->|media| J[Download if remote]
87
96
  J --> K[Encrypt and upload to CDN]
88
97
  K --> L[Build media message item]
89
- I --> M[Emit message_sent hook]
98
+ I --> M[Host message_sent observation]
90
99
  L --> M
91
100
  ```
92
101
 
102
+ Modern inbound and direct outbound sends use host-owned hooks. Legacy inbound
103
+ and independent debug sends retain local hooks; the legacy identity
104
+ `beforeDeliver` disables the SDK's duplicate text modifier. Raw delivery returns
105
+ existing client message IDs and never re-enters another hook-owning send path.
106
+
93
107
  With multiple accounts, an omitted account ID is valid only when exactly one
94
108
  account can be selected. Ambiguous or missing context must fail rather than risk
95
109
  sending from the wrong bot.