@clawling/clawchat-plugin-openclaw 2026.7.15-1 → 2026.7.20-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.
@@ -284,7 +284,15 @@ export function createOpenclawClawlingReplyDispatcher(options) {
284
284
  log?.info?.(`[${account.accountId}] clawchat-plugin-openclaw outbound media skipped: baseUrl not configured`);
285
285
  return [];
286
286
  }
287
- return await uploadOutboundMedia(urls, { apiClient, runtime, log });
287
+ const fragments = await uploadOutboundMedia(urls, { apiClient, runtime, log });
288
+ if (fragments.length < urls.length) {
289
+ // uploadOutboundMedia drops a failed item with only a log line. A shortfall
290
+ // means an attachment never reached the media service; surfacing it (parity
291
+ // with the adapter path in outbound.ts and with the Hermes plugin) stops a
292
+ // text-only frame from going out and reading as a successful send.
293
+ throw new Error(`clawchat-plugin-openclaw failed to upload ${urls.length - fragments.length}/${urls.length} outbound media attachment(s); message not sent`);
294
+ }
295
+ return fragments;
288
296
  }
289
297
  // ----- Reply state ------------------------------------------------------
290
298
  let reasoningText = "";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawling/clawchat-plugin-openclaw",
3
- "version": "2026.7.15-1",
3
+ "version": "2026.7.20-1",
4
4
  "description": "OpenClaw ClawChat channel plugin",
5
5
  "license": "MIT",
6
6
  "author": "CLAWLING PTE. LTD.",
@@ -418,7 +418,17 @@ export function createOpenclawClawlingReplyDispatcher(options: ReplyDispatcherOp
418
418
  );
419
419
  return [];
420
420
  }
421
- return await uploadOutboundMedia(urls, { apiClient, runtime, log });
421
+ const fragments = await uploadOutboundMedia(urls, { apiClient, runtime, log });
422
+ if (fragments.length < urls.length) {
423
+ // uploadOutboundMedia drops a failed item with only a log line. A shortfall
424
+ // means an attachment never reached the media service; surfacing it (parity
425
+ // with the adapter path in outbound.ts and with the Hermes plugin) stops a
426
+ // text-only frame from going out and reading as a successful send.
427
+ throw new Error(
428
+ `clawchat-plugin-openclaw failed to upload ${urls.length - fragments.length}/${urls.length} outbound media attachment(s); message not sent`,
429
+ );
430
+ }
431
+ return fragments;
422
432
  }
423
433
 
424
434
  // ----- Reply state ------------------------------------------------------