@@ -41,6 +41,7 @@ import { RepoLspDialog } from "@/components/repo/RepoLspDialog";
4141import { RepoSkillsDialog } from "@/components/repo/RepoSkillsDialog" ;
4242import { createOpenCodeClient } from "@/api/opencode" ;
4343import { usePermissions , useQuestions } from "@/contexts/EventContext" ;
44+ import { useSessionStatusForSession } from "@/stores/sessionStatusStore" ;
4445import type { QuestionRequest } from "@/api/types" ;
4546import { QuestionPrompt } from "@/components/session/QuestionPrompt" ;
4647import { MinimizedQuestionIndicator } from "@/components/session/MinimizedQuestionIndicator" ;
@@ -162,6 +163,7 @@ export function SessionDetail() {
162163 const isEditingMessage = useUIState ( ( state ) => state . isEditingMessage ) ;
163164 const setActivePromptFileBasePath = useUIState ( ( state ) => state . setActivePromptFileBasePath ) ;
164165 const { isEnabled : ttsEnabled } = useTTS ( ) ;
166+ const sessionStatus = useSessionStatusForSession ( sessionId ) ;
165167 const { syncForSession : syncPermissionsForSession } = usePermissions ( ) ;
166168 const { current : currentQuestion , reply : replyToQuestion , reject : rejectQuestion , syncForSession : syncQuestionsForSession } = useQuestions ( ) ;
167169
@@ -171,12 +173,10 @@ export function SessionDetail() {
171173
172174 const isSessionActive = useMemo ( ( ) => {
173175 if ( session ?. time ?. compacting ) return true
174- if ( ! messages || messages . length === 0 ) return false
175- const last = messages [ messages . length - 1 ]
176- if ( last . info . role === 'user' ) return true
177- if ( last . info . role === 'assistant' && ! ( 'completed' in last . info . time ) ) return true
176+ if ( sessionStatus . type !== 'idle' ) return true
177+ if ( lastAssistantMessage && ! ( 'completed' in lastAssistantMessage . info . time ) ) return true
178178 return false
179- } , [ messages , session ?. time ?. compacting ] )
179+ } , [ lastAssistantMessage , session ?. time ?. compacting , sessionStatus . type ] )
180180 const hasIncompleteMessages = lastAssistantMessage ? ! ( 'completed' in lastAssistantMessage . info . time && lastAssistantMessage . info . time . completed ) : false ;
181181 const isStreamingResponse = hasIncompleteMessages && isSessionActive ;
182182 const assistantFileBasePath = assistantMode ?. directory . split ( '/' ) . filter ( Boolean ) . at ( - 1 ) ;
0 commit comments