fix: render full message preview for tool calls
This commit is contained in:
@@ -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>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user