(
sessionId: string,
config: {
permissionMode?: PermissionMode
model?: string | null
modelReasoningEffort?: string | null
effort?: string | null
collaborationMode?: CodexCollaborationMode
}
)
| 401 | } |
| 402 | |
| 403 | applySessionConfig( |
| 404 | sessionId: string, |
| 405 | config: { |
| 406 | permissionMode?: PermissionMode |
| 407 | model?: string | null |
| 408 | modelReasoningEffort?: string | null |
| 409 | effort?: string | null |
| 410 | collaborationMode?: CodexCollaborationMode |
| 411 | } |
| 412 | ): void { |
| 413 | const session = this.sessions.get(sessionId) ?? this.refreshSession(sessionId) |
| 414 | if (!session) { |
| 415 | return |
| 416 | } |
| 417 | |
| 418 | const appliedAt = Date.now() |
| 419 | if (config.permissionMode !== undefined) { |
| 420 | session.permissionMode = config.permissionMode |
| 421 | this.persistPreferredPermissionMode(session, config.permissionMode) |
| 422 | this.markRuntimeConfigUpdated(sessionId, 'permissionMode', appliedAt) |
| 423 | } |
| 424 | if (config.model !== undefined) { |
| 425 | if (config.model !== session.model) { |
| 426 | const updated = this.store.sessions.setSessionModel(sessionId, config.model, session.namespace, { |
| 427 | touchUpdatedAt: false |
| 428 | }) |
| 429 | if (!updated) { |
| 430 | throw new Error('Failed to update session model') |
| 431 | } |
| 432 | } |
| 433 | session.model = config.model |
| 434 | this.markRuntimeConfigUpdated(sessionId, 'model', appliedAt) |
| 435 | } |
| 436 | if (config.modelReasoningEffort !== undefined) { |
| 437 | if (config.modelReasoningEffort !== session.modelReasoningEffort) { |
| 438 | const updated = this.store.sessions.setSessionModelReasoningEffort(sessionId, config.modelReasoningEffort, session.namespace, { |
| 439 | touchUpdatedAt: false |
| 440 | }) |
| 441 | if (!updated) { |
| 442 | throw new Error('Failed to update session model reasoning effort') |
| 443 | } |
| 444 | } |
| 445 | session.modelReasoningEffort = config.modelReasoningEffort |
| 446 | this.markRuntimeConfigUpdated(sessionId, 'modelReasoningEffort', appliedAt) |
| 447 | } |
| 448 | if (config.effort !== undefined) { |
| 449 | if (config.effort !== session.effort) { |
| 450 | const updated = this.store.sessions.setSessionEffort(sessionId, config.effort, session.namespace, { |
| 451 | touchUpdatedAt: false |
| 452 | }) |
| 453 | if (!updated) { |
| 454 | throw new Error('Failed to update session effort') |
| 455 | } |
| 456 | } |
| 457 | session.effort = config.effort |
| 458 | this.markRuntimeConfigUpdated(sessionId, 'effort', appliedAt) |
| 459 | } |
| 460 | if (config.collaborationMode !== undefined) { |
nothing calls this directly
no test coverage detected