show reasoning in frontend

This commit is contained in:
2026-09-21 19:50:16 +02:00
parent 8c13f50bd1
commit ceb3c752ff
12 changed files with 104 additions and 40 deletions
+13 -8
View File
@@ -195,8 +195,9 @@ export function createRepositories(db, config) {
insertChatMessage: db.prepare("INSERT INTO chat_messages (chat_id, role, content, model_name, retry_variants, retry_active_index, retry_retries_used, retry_prompt_message_id, delivery_status, error_message, parent_message_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"),
updateChatMessageDelivery: db.prepare("UPDATE chat_messages SET delivery_status = ?, error_message = ? WHERE id = ? AND chat_id = ?"),
updateChatMessageSources: db.prepare("UPDATE chat_messages SET sources = ? WHERE id = ? AND chat_id = ?"),
updateChatMessageThinking: db.prepare("UPDATE chat_messages SET thinking = ? WHERE id = ? AND chat_id = ?"),
getChatMessages: db.prepare(`
SELECT sources, id, role, content, model_name, retry_variants, retry_active_index, retry_retries_used, retry_prompt_message_id, delivery_status, error_message, parent_message_id, created_at
SELECT thinking, sources, id, role, content, model_name, retry_variants, retry_active_index, retry_retries_used, retry_prompt_message_id, delivery_status, error_message, parent_message_id, created_at
FROM chat_messages
WHERE chat_id = ?
ORDER BY id
@@ -236,7 +237,7 @@ export function createRepositories(db, config) {
JOIN branch child ON child.parent_message_id = parent.id
)
SELECT id, role, content, model_name, retry_variants, retry_active_index, retry_retries_used,
retry_prompt_message_id, delivery_status, error_message, parent_message_id, created_at, sources
retry_prompt_message_id, delivery_status, error_message, parent_message_id, created_at, sources, thinking
FROM branch
WHERE delivery_status = 'complete'
ORDER BY id
@@ -252,7 +253,7 @@ export function createRepositories(db, config) {
JOIN branch child ON child.parent_message_id = parent.id
)
SELECT id, role, content, model_name, retry_variants, retry_active_index, retry_retries_used,
retry_prompt_message_id, delivery_status, error_message, parent_message_id, created_at, sources
retry_prompt_message_id, delivery_status, error_message, parent_message_id, created_at, sources, thinking
FROM branch ORDER BY id
`),
getSiblingChatMessages: db.prepare(`
@@ -271,13 +272,13 @@ export function createRepositories(db, config) {
SELECT cm.* FROM chat_messages cm JOIN descendants d ON d.id = cm.id ORDER BY cm.id DESC LIMIT 1
`),
getChatMessageById: db.prepare(`
SELECT sources, id, role, content, model_name, retry_variants, retry_active_index, retry_retries_used, retry_prompt_message_id, delivery_status, error_message, parent_message_id, created_at
SELECT thinking, sources, id, role, content, model_name, retry_variants, retry_active_index, retry_retries_used, retry_prompt_message_id, delivery_status, error_message, parent_message_id, created_at
FROM chat_messages
WHERE id = ?
AND chat_id = ?
`),
getChatMessageByIndex: db.prepare(`
SELECT sources, id, role, content, model_name, retry_variants, retry_active_index, retry_retries_used, retry_prompt_message_id, delivery_status, error_message, parent_message_id, created_at
SELECT thinking, sources, id, role, content, model_name, retry_variants, retry_active_index, retry_retries_used, retry_prompt_message_id, delivery_status, error_message, parent_message_id, created_at
FROM chat_messages
WHERE chat_id = ?
ORDER BY id
@@ -738,7 +739,7 @@ export function createRepositories(db, config) {
return statements.deleteUser.run(username);
});
const completeChatTurnTransaction = db.transaction((chatId, userMessageId, assistantContent, retryState, modelName, sources) => {
const completeChatTurnTransaction = db.transaction((chatId, userMessageId, assistantContent, retryState, modelName, sources, thinking) => {
const assistantResult = statements.insertChatMessage.run(
chatId,
"bot",
@@ -754,6 +755,7 @@ export function createRepositories(db, config) {
);
statements.updateChatMessageDelivery.run("complete", null, userMessageId, chatId);
if (sources) statements.updateChatMessageSources.run(JSON.stringify(sources), assistantResult.lastInsertRowid, chatId);
if (thinking) statements.updateChatMessageThinking.run(thinking, assistantResult.lastInsertRowid, chatId);
statements.setChatActiveLeafById.run(assistantResult.lastInsertRowid, chatId);
return assistantResult;
});
@@ -866,6 +868,7 @@ export function createRepositories(db, config) {
);
if (message.sourceId != null) importedMessageIds.set(message.sourceId, Number(result.lastInsertRowid));
if (message.sources) statements.updateChatMessageSources.run(JSON.stringify(message.sources), result.lastInsertRowid, chatId);
if (message.thinking) statements.updateChatMessageThinking.run(message.thinking, result.lastInsertRowid, chatId);
}
statements.updateChatGenerationSettings.run(
chat.preferred_model ?? null,
@@ -1015,8 +1018,10 @@ export function createRepositories(db, config) {
insertBranchChatMessageTransaction(chatId, role, content, retryState, modelName, deliveryStatus, errorMessage, parentMessageId),
updateChatMessageDelivery: (chatId, messageId, deliveryStatus, errorMessage = null) =>
statements.updateChatMessageDelivery.run(deliveryStatus, errorMessage, messageId, chatId),
completeChatTurn: (chatId, userMessageId, assistantContent, retryState, modelName = null, sources = null) =>
completeChatTurnTransaction(chatId, userMessageId, assistantContent, retryState, modelName, sources),
completeChatTurn: (chatId, userMessageId, assistantContent, retryState, modelName = null, sources = null, thinking = null) =>
completeChatTurnTransaction(chatId, userMessageId, assistantContent, retryState, modelName, sources, thinking),
updateChatMessageThinking: (chatId, messageId, thinking) =>
statements.updateChatMessageThinking.run(thinking, messageId, chatId),
updateChatMessageSources: (chatId, messageId, sources) =>
statements.updateChatMessageSources.run(JSON.stringify(sources), messageId, chatId),
failChatTurn: (chatId, userMessageId, errorMessage, parentMessageId = null) =>
+1
View File
@@ -274,6 +274,7 @@ export function runMigrations(db, {dropLegacyChats = true} = {}) {
const chatMessageColumns = db.prepare("PRAGMA table_info(chat_messages)").all();
ensureColumn("chat_messages", chatMessageColumns, "sources", "ALTER TABLE chat_messages ADD COLUMN sources TEXT");
ensureColumn("chat_messages", chatMessageColumns, "thinking", "ALTER TABLE chat_messages ADD COLUMN thinking TEXT");
const hadParentMessageId = chatMessageColumns.some((column) => column.name === "parent_message_id");
ensureColumn("chat_messages", chatMessageColumns, "model_name", "ALTER TABLE chat_messages ADD COLUMN model_name TEXT");
ensureColumn("chat_messages", chatMessageColumns, "retry_variants", "ALTER TABLE chat_messages ADD COLUMN retry_variants TEXT");