function scrollToBottom() {
var scrollContainer = document.getElementById('chat-box');
scrollContainer.scrollTop = scrollContainer.scrollHeight;
}
function append_message(role, text, avatarUrl) {
var message_container = $("
").addClass("message-container");
var avatar_element = $("").addClass("avatar");
var role_element = $("").addClass("role").text(role);
if (avatarUrl) {
avatar_element.css("background-image", `url(${avatarUrl})`);
} else {
avatar_element.css("background-color", "green");
}
message_container.append(role_element);
message_container.append(avatar_element);
var parsedText = role === 'System' ? parseSystemMessage(text) : parseCodeBlocks(text, role);
message_container.append(parsedText);
$("#chat-box").append(message_container);
scrollToBottom();
}
function parseCodeBlocks(text, role) {
var parts = text.split(/(```[\s\S]*?```)/g);
var parsedText = $("").addClass("message-text");
parts.forEach(part => {
if (part.startsWith("```") && role != "System") {
var trimmedBlock = part.trim();
var language = trimmedBlock.match(/^```(\w+)/);
if (language) {
language = language[1];
var codeContent = trimmedBlock.replace(/^```(\w+)/, '').replace(/```$/, '');
var codeBlockHTML = `