|
|
@@ -44,6 +44,10 @@ function View(props: { api: TuiPluginApi; sessionID: string }) {
|
|
|
const messages = createMemo(() => sync.data.messages[props.sessionID] ?? [])
|
|
|
const renderedMessages = createMemo(() => messages().toReversed())
|
|
|
const lastAssistant = createMemo(() => renderedMessages().findLast((message) => message.type === "assistant"))
|
|
|
+ const lastUserCreated = (index: number) =>
|
|
|
+ renderedMessages()
|
|
|
+ .slice(0, index)
|
|
|
+ .findLast((message) => message.type === "user")?.time.created
|
|
|
|
|
|
createEffect(() => {
|
|
|
void sync.session.message.sync(props.sessionID)
|
|
|
@@ -83,6 +87,7 @@ function View(props: { api: TuiPluginApi; sessionID: string }) {
|
|
|
last={lastAssistant()?.id === message.id}
|
|
|
syntax={syntax()}
|
|
|
subtleSyntax={subtleSyntax()}
|
|
|
+ start={lastUserCreated(index())}
|
|
|
/>
|
|
|
</Match>
|
|
|
<Match when={message.type === "synthetic"}>
|
|
|
@@ -294,12 +299,13 @@ function AssistantMessage(props: {
|
|
|
last: boolean
|
|
|
syntax: SyntaxStyle
|
|
|
subtleSyntax: SyntaxStyle
|
|
|
+ start?: number
|
|
|
}) {
|
|
|
const { theme } = useTheme()
|
|
|
const local = useLocal()
|
|
|
const duration = createMemo(() => {
|
|
|
if (!props.message.time.completed) return 0
|
|
|
- return props.message.time.completed - props.message.time.created
|
|
|
+ return props.message.time.completed - (props.start ?? props.message.time.created)
|
|
|
})
|
|
|
const model = createMemo(() => {
|
|
|
const variant = props.message.model.variant ? `/${props.message.model.variant}` : ""
|