mirror of
https://github.com/sst/opencode.git
synced 2025-12-23 10:11:41 +00:00
tui: keep assistant footer from crashing after compaction
This commit is contained in:
parent
37bb07e7a3
commit
e03a41144a
1 changed files with 12 additions and 11 deletions
|
|
@ -860,11 +860,6 @@ export function Session() {
|
|||
</Match>
|
||||
<Match when={message.role === "assistant"}>
|
||||
<AssistantMessage
|
||||
user={
|
||||
messages().findLast(
|
||||
(item) => item.id === (message as AssistantMessage).parentID,
|
||||
) as UserMessage
|
||||
}
|
||||
last={lastAssistant()?.id === message.id}
|
||||
message={message as AssistantMessage}
|
||||
parts={sync.data.part[message.id] ?? []}
|
||||
|
|
@ -998,10 +993,19 @@ function UserMessage(props: {
|
|||
)
|
||||
}
|
||||
|
||||
function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; last: boolean; user: UserMessage }) {
|
||||
function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; last: boolean }) {
|
||||
const local = useLocal()
|
||||
const { theme } = useTheme()
|
||||
const ctx = use()
|
||||
const sync = useSync()
|
||||
const messages = createMemo(() => sync.data.message[props.message.sessionID] ?? [])
|
||||
|
||||
const duration = createMemo(() => {
|
||||
if (!props.message.time.completed) return 0
|
||||
const user = messages().find((x) => x.role === "user" && x.id === props.message.parentID)
|
||||
if (!user) return 0
|
||||
return props.message.time.completed - user.time.created
|
||||
})
|
||||
|
||||
return (
|
||||
<>
|
||||
<For each={props.parts}>
|
||||
|
|
@ -1047,10 +1051,7 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las
|
|||
<span style={{ fg: theme.text }}>{Locale.titlecase(props.message.mode)}</span>{" "}
|
||||
<span style={{ fg: theme.textMuted }}>⬝{props.message.modelID}</span>
|
||||
<Show when={props.message.time.completed}>
|
||||
<span style={{ fg: theme.textMuted }}>
|
||||
{" "}
|
||||
⬝{Locale.duration(props.message.time.completed! - props.user.time.created)}
|
||||
</span>
|
||||
<span style={{ fg: theme.textMuted }}> ⬝{Locale.duration(duration())}</span>
|
||||
</Show>
|
||||
</text>
|
||||
</box>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue