fix: HTML rendering in chat + improved PROMPT.md for ramal queries
All checks were successful
Botlib CI / build (push) Successful in 4s
BotServer CI / build (push) Successful in 23s
Bottest CI / build (push) Successful in 19s
BotUI CI / build (push) Successful in 26s

- Detect HTML content (starts with <) in streaming messages and
  bypass marked.parse() to render directly as innerHTML
- marked.parse() was corrupting the LLM's raw HTML output by
  treating it as Markdown (escaping tags, wrapping in <p>, etc.)
- Updated PROMPT.md for Salesianos to be more explicit about
  returning ramal data directly from KB context without asking
  for unnecessary clarification
- Fixed ramais.bas tool (removed invalid BEGIN/END syntax)
This commit is contained in:
Rodrigo Rodriguez (Pragmatismo) 2026-04-22 20:15:21 +00:00
parent 60e3b1d83b
commit c8a02b65be

View file

@ -1371,7 +1371,9 @@
m.innerHTML = `<div class="user-message"><div class="user-message-content">${escapeHtml(content)}</div></div>`;
updateContextUsage(contextUsage + 0.05);
} else if (role === "assistant") {
m.innerHTML = `<div class="assistant-message"><div class="assistant-avatar"></div><div class="assistant-message-content markdown-content" id="${msgId || ""}">${streaming ? "" : marked.parse(content)}</div></div>`;
const isHtml = content.trim().startsWith('<');
const rendered = streaming ? "" : (isHtml ? content : marked.parse(content));
m.innerHTML = `<div class="assistant-message"><div class="assistant-avatar"></div><div class="assistant-message-content markdown-content" id="${msgId || ""}">${rendered}</div></div>`;
updateContextUsage(contextUsage + 0.03);
} else if (role === "voice") {
m.innerHTML = `<div class="assistant-message"><div class="assistant-avatar">🎤</div><div class="assistant-message-content">${content}</div></div>`;
@ -1393,7 +1395,8 @@
function updateStreamingMessage(c) {
const m = document.getElementById(streamingMessageId);
if (m) {
m.innerHTML = marked.parse(c);
const isHtmlStream = c.trim().startsWith('<');
m.innerHTML = isHtmlStream ? c : marked.parse(c);
if (!isUserScrolling) {
scrollToBottom();
}
@ -1403,7 +1406,8 @@
function finalizeStreamingMessage() {
const m = document.getElementById(streamingMessageId);
if (m) {
m.innerHTML = marked.parse(currentStreamingContent);
const isHtmlFinal = currentStreamingContent.trim().startsWith('<');
m.innerHTML = isHtmlFinal ? currentStreamingContent : marked.parse(currentStreamingContent);
m.removeAttribute("id");
if (!isUserScrolling) {
scrollToBottom();