finish migration to message-store

This commit is contained in:
Shantur Rathore
2025-11-26 10:13:05 +00:00
parent 93a5c16cab
commit 27cd4515cd
7 changed files with 111 additions and 169 deletions

View File

@@ -2,8 +2,8 @@ import { For, Show, createMemo, createSignal, createEffect, onCleanup } from "so
import MessageItem from "./message-item"
import ToolCall from "./tool-call"
import Kbd from "./kbd"
import type { Message, MessageInfo, ClientPart } from "../types/message"
import { computeDisplayParts } from "../stores/session-messages"
import type { Message, MessageInfo, ClientPart, MessageDisplayParts } from "../types/message"
import { partHasRenderableText } from "../types/message"
import { getSessionInfo } from "../stores/sessions"
import { showCommandPalette } from "../stores/command-palette"
import { messageStoreBus } from "../stores/message-v2/bus"
@@ -71,6 +71,27 @@ function recordToMessage(record: MessageRecord): Message {
}
}
function computeDisplayPartsForMessage(message: Message, showThinking: boolean): MessageDisplayParts {
const text: ClientPart[] = []
const tool: ClientPart[] = []
const reasoning: ClientPart[] = []
for (const part of message.parts) {
if (part.type === "text" && !part.synthetic && partHasRenderableText(part)) {
text.push(part)
} else if (part.type === "tool") {
tool.push(part)
} else if (part.type === "reasoning" && showThinking && partHasRenderableText(part)) {
reasoning.push(part)
}
}
const combined = reasoning.length > 0 ? [...text, ...reasoning] : [...text]
const version = typeof message.version === "number" ? message.version : 0
return { text, tool, reasoning, combined, showThinking, version }
}
function hasRenderableContent(message: Message, combinedParts: ClientPart[], info?: MessageInfo): boolean {
if (message.type !== "assistant" && message.type !== "user") {
return false
@@ -156,7 +177,7 @@ export default function MessageStreamV2(props: MessageStreamV2Props) {
}
const baseMessage = recordToMessage(record)
const displayParts = computeDisplayParts(baseMessage, showThinking)
const displayParts = computeDisplayPartsForMessage(baseMessage, showThinking)
baseMessage.displayParts = displayParts
const combinedParts = displayParts.combined
const messageInfo = infoMap.get(record.id)