|
|
@@ -12,7 +12,7 @@ import { Spinner } from "@opencode-ai/ui/spinner"
|
|
|
import { SessionTurn } from "@opencode-ai/ui/session-turn"
|
|
|
import { ScrollView } from "@opencode-ai/ui/scroll-view"
|
|
|
import { TextField } from "@opencode-ai/ui/text-field"
|
|
|
-import type { Message as MessageType, Part, TextPart, UserMessage } from "@opencode-ai/sdk/v2"
|
|
|
+import type { AssistantMessage, Message as MessageType, Part, TextPart, UserMessage } from "@opencode-ai/sdk/v2"
|
|
|
import { showToast } from "@opencode-ai/ui/toast"
|
|
|
import { Binary } from "@opencode-ai/util/binary"
|
|
|
import { getFilename } from "@opencode-ai/util/path"
|
|
|
@@ -27,7 +27,6 @@ import { usePlatform } from "@/context/platform"
|
|
|
import { useSettings } from "@/context/settings"
|
|
|
import { useSDK } from "@/context/sdk"
|
|
|
import { useSync } from "@/context/sync"
|
|
|
-import { pending, working } from "@/pages/session/activity"
|
|
|
import { messageAgentColor } from "@/utils/agent"
|
|
|
import { parseCommentNote, readCommentMetadata } from "@/utils/comment-note"
|
|
|
|
|
|
@@ -237,13 +236,17 @@ export function MessageTimeline(props: {
|
|
|
if (!id) return emptyMessages
|
|
|
return sync.data.message[id] ?? emptyMessages
|
|
|
})
|
|
|
- const assistant = createMemo(() => pending(sessionMessages()))
|
|
|
+ const assistant = createMemo(() => {
|
|
|
+ const item = sessionMessages().findLast((item): item is AssistantMessage => item.role === "assistant")
|
|
|
+ if (!item || typeof item.time.completed === "number") return
|
|
|
+ return item
|
|
|
+ })
|
|
|
const sessionStatus = createMemo(() => {
|
|
|
const id = sessionID()
|
|
|
if (!id) return idle
|
|
|
return sync.data.session_status[id] ?? idle
|
|
|
})
|
|
|
- const busy = createMemo(() => working(sessionStatus()))
|
|
|
+ const busy = createMemo(() => sessionStatus().type !== "idle")
|
|
|
const tint = createMemo(() => messageAgentColor(sessionMessages(), sync.data.agent))
|
|
|
|
|
|
const [slot, setSlot] = createStore({
|