(payload: {
sid: string
time: number
thinking?: boolean
mode?: 'local' | 'remote'
permissionMode?: PermissionMode
model?: string | null
modelReasoningEffort?: string | null
effort?: string | null
collaborationMode?: CodexCollaborationMode
})
| 165 | } |
| 166 | |
| 167 | handleSessionAlive(payload: { |
| 168 | sid: string |
| 169 | time: number |
| 170 | thinking?: boolean |
| 171 | mode?: 'local' | 'remote' |
| 172 | permissionMode?: PermissionMode |
| 173 | model?: string | null |
| 174 | modelReasoningEffort?: string | null |
| 175 | effort?: string | null |
| 176 | collaborationMode?: CodexCollaborationMode |
| 177 | }): void { |
| 178 | const t = clampAliveTime(payload.time) |
| 179 | if (!t) return |
| 180 | |
| 181 | const session = this.sessions.get(payload.sid) ?? this.refreshSession(payload.sid) |
| 182 | if (!session) return |
| 183 | |
| 184 | const wasActive = session.active |
| 185 | const wasThinking = session.thinking |
| 186 | const previousPermissionMode = session.permissionMode |
| 187 | const previousModel = session.model |
| 188 | const previousModelReasoningEffort = session.modelReasoningEffort |
| 189 | const previousEffort = session.effort |
| 190 | const previousCollaborationMode = session.collaborationMode |
| 191 | const pendingThinkingUntil = this.pendingThinkingUntilBySessionId.get(session.id) ?? 0 |
| 192 | const requestedThinking = Boolean(payload.thinking) |
| 193 | const hubNow = Date.now() |
| 194 | const preserveQueuedThinking = !requestedThinking && pendingThinkingUntil > hubNow |
| 195 | |
| 196 | session.active = true |
| 197 | session.activeAt = Math.max(session.activeAt, t) |
| 198 | session.thinking = requestedThinking || preserveQueuedThinking |
| 199 | session.thinkingAt = t |
| 200 | if (requestedThinking || pendingThinkingUntil <= hubNow) { |
| 201 | this.pendingThinkingUntilBySessionId.delete(session.id) |
| 202 | } |
| 203 | if (payload.permissionMode !== undefined && !this.isStaleRuntimeKeepAlive(session.id, 'permissionMode', t)) { |
| 204 | session.permissionMode = payload.permissionMode |
| 205 | this.persistPreferredPermissionMode(session, payload.permissionMode) |
| 206 | } |
| 207 | if (payload.model !== undefined && !this.isStaleRuntimeKeepAlive(session.id, 'model', t)) { |
| 208 | if (payload.model !== session.model) { |
| 209 | this.store.sessions.setSessionModel(payload.sid, payload.model, session.namespace, { |
| 210 | touchUpdatedAt: false |
| 211 | }) |
| 212 | } |
| 213 | session.model = payload.model |
| 214 | } |
| 215 | if (payload.modelReasoningEffort !== undefined && !this.isStaleRuntimeKeepAlive(session.id, 'modelReasoningEffort', t)) { |
| 216 | if (payload.modelReasoningEffort !== session.modelReasoningEffort) { |
| 217 | this.store.sessions.setSessionModelReasoningEffort(payload.sid, payload.modelReasoningEffort, session.namespace, { |
| 218 | touchUpdatedAt: false |
| 219 | }) |
| 220 | } |
| 221 | session.modelReasoningEffort = payload.modelReasoningEffort |
| 222 | } |
| 223 | if (payload.effort !== undefined && !this.isStaleRuntimeKeepAlive(session.id, 'effort', t)) { |
| 224 | if (payload.effort !== session.effort) { |
nothing calls this directly
no test coverage detected