(role, text, toolCalls = [])
| 738 | } |
| 739 | |
| 740 | function appendMessage(role, text, toolCalls = []) { |
| 741 | const messages = document.getElementById("messages"); |
| 742 | const div = document.createElement("div"); |
| 743 | div.className = "message " + role; |
| 744 | |
| 745 | if (role === "user") { |
| 746 | div.innerHTML = '<div class="content">' + escapeHtml(text) + "</div>"; |
| 747 | } else if (text) { |
| 748 | const tb = document.createElement("div"); |
| 749 | tb.className = "content text-block markdown-body"; |
| 750 | tb.dataset.mdContent = text; |
| 751 | tb.innerHTML = renderMarkdown(text); |
| 752 | div.appendChild(tb); |
| 753 | } |
| 754 | |
| 755 | if (role === "assistant") { |
| 756 | const sendFileCalls = getVisibleSendFileToolCalls(toolCalls); |
| 757 | sendFileCalls.forEach((toolCall) => { |
| 758 | appendFileCard(div, toolCall.arguments.filePath, toolCall.arguments.caption); |
| 759 | }); |
| 760 | } |
| 761 | |
| 762 | messages.appendChild(div); |
| 763 | scrollToBottom(); |
| 764 | return div; |
| 765 | } |
| 766 | |
| 767 | function escapeHtml(text) { |
| 768 | const div = document.createElement("div"); |
no test coverage detected