Skip to content

Commit 0a8677e

Browse files
Pandah97steipete
andauthored
fix(whatsapp): keep echo tracker log truncation UTF-16 safe (#102603)
* fix(whatsapp): keep echo tracker log truncation UTF-16 safe Replace `.slice(0, 50)` with `truncateUtf16Safe(text, 50)` in echo tracker verbose log message to prevent surrogate pair corruption. Ref. lsr911 pattern — mechanical substitution, no behavior change. * test(whatsapp): cover UTF-16-safe echo previews --------- Co-authored-by: Peter Steinberger <[email protected]>
1 parent 5154fe0 commit 0a8677e

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { describe, expect, it, vi } from "vitest";
2+
import { createEchoTracker } from "./echo.js";
3+
4+
describe("createEchoTracker", () => {
5+
it("keeps verbose previews UTF-16 safe without changing the tracked text", () => {
6+
const logVerbose = vi.fn();
7+
const tracker = createEchoTracker({ logVerbose });
8+
const prefix = "x".repeat(49);
9+
const text = `${prefix}😀tail`;
10+
11+
tracker.rememberText(text, { logVerboseMessage: true });
12+
13+
expect(logVerbose).toHaveBeenCalledExactlyOnceWith(
14+
`Added to echo detection set (size now: 1): ${prefix}...`,
15+
);
16+
expect(tracker.has(text)).toBe(true);
17+
});
18+
});

extensions/whatsapp/src/auto-reply/monitor/echo.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// Whatsapp plugin module implements echo behavior.
2+
import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
23
export type EchoTracker = {
34
rememberText: (
45
text: string | undefined,
@@ -48,7 +49,7 @@ export function createEchoTracker(params: {
4849
}
4950
if (opts.logVerboseMessage) {
5051
params.logVerbose?.(
51-
`Added to echo detection set (size now: ${recentlySent.size}): ${text.slice(0, 50)}...`,
52+
`Added to echo detection set (size now: ${recentlySent.size}): ${truncateUtf16Safe(text, 50)}...`,
5253
);
5354
}
5455
trim();

0 commit comments

Comments
 (0)