Add instance tab session status indicator

Aggregate session states per instance so tabs reflect permission, compaction, and working activity.
This commit is contained in:
Shantur Rathore
2026-01-05 20:09:13 +00:00
parent 2db62b1d17
commit 06416a9eb3
2 changed files with 69 additions and 2 deletions

View File

@@ -170,6 +170,47 @@ export function getSessionStatus(instanceId: string, sessionId: string): Session
return session.status ?? deriveSessionStatusFromMessages(instanceId, sessionId)
}
export type InstanceSessionIndicatorStatus = "permission" | SessionStatus
export function getInstanceSessionIndicatorStatus(instanceId: string): InstanceSessionIndicatorStatus {
const instanceSessions = sessions().get(instanceId)
if (!instanceSessions || instanceSessions.size === 0) {
return "idle"
}
let bestRank = 0
let best: InstanceSessionIndicatorStatus = "idle"
for (const session of instanceSessions.values()) {
let rank = 0
let status: InstanceSessionIndicatorStatus = "idle"
if (session.pendingPermission) {
status = "permission"
rank = 3
} else {
const sessionStatus = getSessionStatus(instanceId, session.id)
if (sessionStatus === "compacting") {
status = "compacting"
rank = 2
} else if (sessionStatus === "working") {
status = "working"
rank = 1
}
}
if (rank > bestRank) {
bestRank = rank
best = status
if (bestRank === 3) {
break
}
}
}
return best
}
export function isSessionBusy(instanceId: string, sessionId: string): boolean {
const status = getSessionStatus(instanceId, sessionId)
return status === "working" || status === "compacting"