From 2f89757b9f46581498e1e27b5d264e89df218b70 Mon Sep 17 00:00:00 2001 From: Isaac Sanchez-Hawkins <266845420+isanchez404@users.noreply.github.com> Date: Tue, 19 May 2026 10:30:32 -0400 Subject: [PATCH] fix: strip code before TTS markdown cleanup (#1327) Co-authored-by: Isaac Sanchez --- packages/web/server/lib/text/summarization.js | 4 ++-- packages/web/server/lib/text/summarization.test.js | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/web/server/lib/text/summarization.js b/packages/web/server/lib/text/summarization.js index 6a2e54d3..03a6d571 100644 --- a/packages/web/server/lib/text/summarization.js +++ b/packages/web/server/lib/text/summarization.js @@ -11,9 +11,9 @@ export function sanitizeForTTS(text) { if (!text || typeof text !== 'string') return ''; return text + .replace(/```[\s\S]*?```/g, ' ') + .replace(/`[^`]*`/g, ' ') .replace(/[*_~`#]/g, '') - .replace(/```[\s\S]*?```/g, '') - .replace(/`[^`]*`/g, '') .replace(/^\s*[$#>]\s*/gm, '') .replace(/[|&;<>]/g, ' ') .replace(/\\/g, '') diff --git a/packages/web/server/lib/text/summarization.test.js b/packages/web/server/lib/text/summarization.test.js index 4ea04836..744437b1 100644 --- a/packages/web/server/lib/text/summarization.test.js +++ b/packages/web/server/lib/text/summarization.test.js @@ -1,8 +1,13 @@ import { describe, expect, it } from 'vitest'; -import { summarizeText } from './summarization.js'; +import { sanitizeForTTS, summarizeText } from './summarization.js'; describe('text summarization stubs', () => { + it('removes code from TTS text before stripping markdown punctuation', () => { + expect(sanitizeForTTS('Read `const value = 1` aloud')).toBe('Read aloud'); + expect(sanitizeForTTS('Before\n```js\nconst value = 1\n```\nAfter')).toBe('Before After'); + }); + it('does not call the retired zen provider', async () => { const result = await summarizeText({ text: 'The implementation now correctly loads notification templates before dispatching the notification. It also fetches the latest assistant message when the event payload does not include message parts. This should make completion notifications match user settings.',