fix: render full message preview for tool calls

This commit is contained in:
Shantur Rathore
2025-12-08 09:52:22 +00:00
parent 9b0e02f66f
commit 92d16084db
2 changed files with 26 additions and 15 deletions

View File

@@ -1,24 +1,36 @@
import type { Component } from "solid-js" import { createMemo, type Component } from "solid-js"
import MessageItem from "./message-item" import MessageBlock from "./message-block"
import type { MessageRecord } from "../stores/message-v2/types" import type { InstanceMessageStore } from "../stores/message-v2/instance-store"
import type { MessageInfo } from "../types/message"
interface MessagePreviewProps { interface MessagePreviewProps {
record: MessageRecord
messageInfo?: MessageInfo
instanceId: string instanceId: string
sessionId: string sessionId: string
messageId: string
store: () => InstanceMessageStore
} }
const MessagePreview: Component<MessagePreviewProps> = (props) => { const MessagePreview: Component<MessagePreviewProps> = (props) => {
const indexMap = createMemo(() => new Map([[props.messageId, 0]]))
const lastAssistantIndex = createMemo(() => {
const record = props.store().getMessage(props.messageId)
if (record?.role === "assistant") {
return 0
}
return -1
})
return ( return (
<div class="message-preview"> <div class="message-preview message-stream">
<MessageItem <MessageBlock
record={props.record} messageId={props.messageId}
messageInfo={props.messageInfo}
instanceId={props.instanceId} instanceId={props.instanceId}
sessionId={props.sessionId} sessionId={props.sessionId}
parts={props.record.partIds.map((id) => props.record.parts[id]?.data).filter((part): part is NonNullable<typeof part> => Boolean(part))} store={props.store}
messageIndexMap={indexMap}
lastAssistantIndex={lastAssistantIndex}
showThinking={() => false}
thinkingDefaultExpanded={() => false}
showUsageMetrics={() => false}
/> />
</div> </div>
) )

View File

@@ -273,8 +273,7 @@ const MessageTimeline: Component<MessageTimelineProps> = (props) => {
if (!segment) return null if (!segment) return null
const record = store().getMessage(segment.messageId) const record = store().getMessage(segment.messageId)
if (!record) return null if (!record) return null
const info = store().getMessageInfo(segment.messageId) return { messageId: segment.messageId }
return { record, info }
}) })
return ( return (
@@ -303,10 +302,10 @@ const MessageTimeline: Component<MessageTimelineProps> = (props) => {
{(data) => ( {(data) => (
<div class="message-timeline-tooltip" style={{ top: `${tooltipCoords().top}px`, left: `${tooltipCoords().left}px` }}> <div class="message-timeline-tooltip" style={{ top: `${tooltipCoords().top}px`, left: `${tooltipCoords().left}px` }}>
<MessagePreview <MessagePreview
record={data().record} messageId={data().messageId}
messageInfo={data().info}
instanceId={props.instanceId} instanceId={props.instanceId}
sessionId={props.sessionId} sessionId={props.sessionId}
store={store}
/> />
</div> </div>
)} )}