| 2297 | } |
| 2298 | |
| 2299 | private resolveActivityPaneMode(): EffectiveActivityPaneMode { |
| 2300 | if (this.state.activeDialog === 'session-picker') return 'hidden'; |
| 2301 | if (this.state.livePane.pendingApproval !== null) return 'hidden'; |
| 2302 | if (this.state.appState.isCompacting) return 'hidden'; |
| 2303 | if (this.state.livePane.pendingQuestion !== null) return 'hidden'; |
| 2304 | |
| 2305 | const streamingPhase = this.state.appState.streamingPhase; |
| 2306 | |
| 2307 | // A running `!` shell command shows the moon spinner (same as `waiting`) |
| 2308 | // until it finishes, signalling that input is busy / queued. |
| 2309 | if (streamingPhase === 'shell') return 'waiting'; |
| 2310 | |
| 2311 | if (this.state.livePane.mode === 'idle') { |
| 2312 | if (streamingPhase === 'thinking' || streamingPhase === 'composing') { |
| 2313 | return streamingPhase; |
| 2314 | } |
| 2315 | } |
| 2316 | |
| 2317 | return this.state.livePane.mode; |
| 2318 | } |
| 2319 | |
| 2320 | updateQueueDisplay(): void { |
| 2321 | this.state.queueContainer.clear(); |