gui: make switchAgent the only stream-start path

- setActiveSessionId remains session-only and never starts streams
- setActiveAgentId now clears any existing per-agent streams and only
  updates selection/state
- switchAgent is explicitly the only place that starts chat/statewait
- onStateFinished only reopens for the current explicit selection
This commit is contained in:
Levi Neely 2026-08-01 21:20:52 +02:00
parent 22e58b348f
commit 38cd1313ec
1 changed files with 9 additions and 1 deletions

View File

@ -196,7 +196,12 @@ QStringList Ollie9pClient::getAgents(const QString &sessionId)
void Ollie9pClient::setActiveAgentId(const QString &agentId)
{
if (m_agentId == agentId) return;
stopStreams();
m_agentId = agentId;
m_activeState = "idle";
emit activeAgentIdChanged();
emit activeStateChanged();
}
void Ollie9pClient::switchAgent(const QString &sessionId, const QString &agentId)
@ -218,6 +223,7 @@ void Ollie9pClient::switchAgent(const QString &sessionId, const QString &agentId
emit activeAgentIdChanged();
emit activeStateChanged();
// switchAgent is the ONLY path that starts per-agent streams.
startChatStream();
startStateStream();
}
@ -504,7 +510,9 @@ void Ollie9pClient::onStateFinished(int, QProcess::ExitStatus)
{
m_stateProc->deleteLater();
m_stateProc = nullptr;
startStateStream();
// Reopen only for the current explicit agent selection.
if (!m_activeSessionId.isEmpty() && !m_agentId.isEmpty())
startStateStream();
}
void Ollie9pClient::startEventStream()