function addMessageToUI()

in gemini/mcp/adk_multiagent_mcp_app/static/websocketApp.js [92:142]


function addMessageToUI(messageText, senderType) {
  if (!messagesDiv) {
    console.error("Cannot add message: messagesDiv not found.");
    return;
  }

  const wrapper = document.createElement("div");
  wrapper.classList.add("message-wrapper", senderType); // 'user' or 'server'

  const iconSpan = document.createElement("span");
  iconSpan.classList.add("message-icon");

  const bubbleP = document.createElement("p");
  bubbleP.classList.add("message-bubble");

  if (senderType === "user") {
    iconSpan.classList.add("user-icon");
    iconSpan.textContent = "👤";
    bubbleP.classList.add("user-message");
    bubbleP.textContent = messageText; // Display user messages as plain text
  } else {
    // Server message
    iconSpan.classList.add("robot-icon");
    const robotImg = document.createElement("img");
    robotImg.src = ROBOT_ICON_PATH;
    robotImg.alt = "Agent icon";
    iconSpan.appendChild(robotImg);
    bubbleP.classList.add("server-message-block");

    // Attempt to render server messages as Markdown
    try {
      if (typeof marked !== "undefined") {
        bubbleP.innerHTML = marked.parse(messageText); // Use marked library
      } else {
        console.warn(
          "Marked library not loaded, displaying raw server message.",
        );
        bubbleP.textContent = messageText; // Fallback
      }
    } catch (e) {
      console.error("Error parsing server Markdown:", e);
      bubbleP.textContent = messageText; // Fallback on error
      addStatusMessage(`Markdown parsing error: ${e.message}`, "error-text");
    }
  }

  wrapper.appendChild(iconSpan);
  wrapper.appendChild(bubbleP);
  messagesDiv.appendChild(wrapper);
  messagesDiv.scrollTop = messagesDiv.scrollHeight; // Scroll down
}