diff --git a/packages/pi-coding-agent/src/core/export-html/template.js b/packages/pi-coding-agent/src/core/export-html/template.js index e170d7a6b..85117bdbf 100644 --- a/packages/pi-coding-agent/src/core/export-html/template.js +++ b/packages/pi-coding-agent/src/core/export-html/template.js @@ -634,13 +634,13 @@ if (toolCall) { return labelHtml + `${escapeHtml(formatToolCall(toolCall.name, toolCall.arguments))}`; } - return labelHtml + `[${msg.toolName || 'tool'}]`; + return labelHtml + `[${escapeHtml(msg.toolName || 'tool')}]`; } if (msg.role === 'bashExecution') { const cmd = truncate(normalize(msg.command || '')); return labelHtml + `[bash]: ${escapeHtml(cmd)}`; } - return labelHtml + `[${msg.role}]`; + return labelHtml + `[${escapeHtml(msg.role)}]`; } case 'compaction': return labelHtml + `[compaction: ${Math.round(entry.tokensBefore/1000)}k tokens]`; @@ -653,11 +653,11 @@ return labelHtml + `[${escapeHtml(entry.customType)}]: ${escapeHtml(truncate(normalize(content)))}`; } case 'model_change': - return labelHtml + `[model: ${entry.modelId}]`; + return labelHtml + `[model: ${escapeHtml(entry.modelId)}]`; case 'thinking_level_change': - return labelHtml + `[thinking: ${entry.thinkingLevel}]`; + return labelHtml + `[thinking: ${escapeHtml(entry.thinkingLevel)}]`; default: - return labelHtml + `[${entry.type}]`; + return labelHtml + `[${escapeHtml(entry.type)}]`; } } @@ -880,7 +880,7 @@ const images = getResultImages(); if (images.length === 0) return ''; return '
' + - images.map(img => ``).join('') + + images.map(img => ``).join('') + '
'; }; @@ -1105,7 +1105,7 @@ * Render the copy-link button HTML for a message. */ function renderCopyLinkButton(entryId) { - return `