From 141de12b62ab10e315834e40417028b9758ad756 Mon Sep 17 00:00:00 2001 From: Algorithm5838 <108630393+Algorithm5838@users.noreply.github.com> Date: Thu, 9 Apr 2026 14:23:33 +0300 Subject: [PATCH] perf: pre-lex details inner content at tokenize time --- .../chat/Messages/Markdown/MarkdownTokens.svelte | 6 +++--- src/lib/utils/marked/extension.ts | 13 +++++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte index 961b731924..e060428290 100644 --- a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte +++ b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte @@ -6,7 +6,7 @@ import fileSaver from 'file-saver'; const { saveAs } = fileSaver; - import { marked, type Token } from 'marked'; + import { type Token } from 'marked'; import { copyToClipboard, unescapeHtml } from '$lib/utils'; import { WEBUI_BASE_URL } from '$lib/constants'; @@ -396,7 +396,7 @@
const detailsRegex = /^]*)?>\n/; const summaryRegex = /^(.*?)<\/summary>\n/; @@ -49,11 +52,17 @@ function detailsTokenizer(src: string) { content = content.slice(summaryMatch[0].length).trim(); } + const tokens: any[] = []; + if (attributes?.type !== 'tool_calls') { + this.lexer.blockTokens(decode(content), tokens); + } + return { type: 'details', raw: fullMatch, summary: summary, text: content, + tokens, attributes: attributes // Include extracted attributes from
}; } @@ -89,6 +98,6 @@ function detailsExtension() { export default function (options = {}) { return { - extensions: [detailsExtension(options)] + extensions: [detailsExtension()] }; }