| 501 | } |
| 502 | |
| 503 | void ChatModel::addThinkingBlock( |
| 504 | const QString &requestId, const QString &thinking, const QString &signature) |
| 505 | { |
| 506 | LOG_MESSAGE(QString("Adding thinking block: requestId=%1, thinking length=%2, signature length=%3") |
| 507 | .arg(requestId) |
| 508 | .arg(thinking.length()) |
| 509 | .arg(signature.length())); |
| 510 | |
| 511 | QString displayContent = thinking; |
| 512 | if (!signature.isEmpty()) { |
| 513 | displayContent += "\n[Signature: " + signature.left(40) + "...]"; |
| 514 | } |
| 515 | |
| 516 | for (int i = 0; i < m_messages.size(); ++i) { |
| 517 | if (m_messages[i].role == ChatRole::Thinking && m_messages[i].id == requestId) { |
| 518 | m_messages[i].content = displayContent; |
| 519 | m_messages[i].signature = signature; |
| 520 | emit dataChanged(index(i), index(i)); |
| 521 | LOG_MESSAGE(QString("Updated existing thinking message at index %1").arg(i)); |
| 522 | return; |
| 523 | } |
| 524 | } |
| 525 | |
| 526 | beginInsertRows(QModelIndex(), m_messages.size(), m_messages.size()); |
| 527 | Message thinkingMessage; |
| 528 | thinkingMessage.role = ChatRole::Thinking; |
| 529 | thinkingMessage.content = displayContent; |
| 530 | thinkingMessage.id = requestId; |
| 531 | thinkingMessage.isRedacted = false; |
| 532 | thinkingMessage.signature = signature; |
| 533 | m_messages.append(thinkingMessage); |
| 534 | endInsertRows(); |
| 535 | LOG_MESSAGE(QString("Added thinking message at index %1 with signature length=%2") |
| 536 | .arg(m_messages.size() - 1).arg(signature.length())); |
| 537 | } |
| 538 | |
| 539 | void ChatModel::addRedactedThinkingBlock(const QString &requestId, const QString &signature) |
| 540 | { |
no test coverage detected