Skip to content

Commit 8aabb79

Browse files
author
Chris Scott
committed
Handle session.idle event to fix resumed sessions showing as active
1 parent dc79640 commit 8aabb79

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

frontend/src/api/types.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,13 @@ export interface SSEInstallationUpdateAvailableEvent {
116116
}
117117
}
118118

119+
export interface SSESessionIdleEvent {
120+
type: 'session.idle'
121+
properties: {
122+
sessionID: string
123+
}
124+
}
125+
119126
export type SSEEvent =
120127
| SSEMessagePartUpdatedEvent
121128
| SSEMessageUpdatedEvent
@@ -124,6 +131,7 @@ export type SSEEvent =
124131
| SSESessionUpdatedEvent
125132
| SSESessionDeletedEvent
126133
| SSESessionCompactedEvent
134+
| SSESessionIdleEvent
127135
| SSETodoUpdatedEvent
128136
| SSEPermissionUpdatedEvent
129137
| SSEPermissionRepliedEvent

frontend/src/hooks/useSSE.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,30 @@ export const useSSE = (opcodeUrl: string | null | undefined, directory?: string)
240240
break
241241
}
242242

243+
case 'session.idle': {
244+
if (!('sessionID' in event.properties)) break
245+
246+
const { sessionID } = event.properties
247+
const currentData = queryClient.getQueryData<MessageListResponse>(['opencode', 'messages', opcodeUrl, sessionID, directory])
248+
if (!currentData) break
249+
250+
const now = Date.now()
251+
const updated = currentData.map(msg => {
252+
if (msg.info.role !== 'assistant') return msg
253+
if ('completed' in msg.info.time && msg.info.time.completed) return msg
254+
return {
255+
...msg,
256+
info: {
257+
...msg.info,
258+
time: { ...msg.info.time, completed: now }
259+
}
260+
}
261+
})
262+
263+
queryClient.setQueryData(['opencode', 'messages', opcodeUrl, sessionID, directory], updated)
264+
break
265+
}
266+
243267
case 'permission.updated':
244268
if ('id' in event.properties) {
245269
permissionEvents.emit({ type: 'add', permission: event.properties })

0 commit comments

Comments
 (0)