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.',