gui: deduplicate sessions from multi-agent index, fix field mapping

- Deduplicate session entries in refreshSessions and onEventReadyRead
  using QSet to skip duplicate session IDs from multi-agent index.
- Fix field mapping: index format is name\tstate\tcwd\tbackend\tmodel\tagent
- Added QSet include
This commit is contained in:
Levi Neely 2026-08-01 20:53:07 +02:00
parent 5fc4ebe64e
commit ef03cdc7f3
1 changed files with 58 additions and 45 deletions

View File

@ -1,6 +1,7 @@
#include "ollie9pclient.h"
#include <QDir>
#include <QSet>
#include <QStandardPaths>
#include <QDebug>
@ -89,16 +90,22 @@ void Ollie9pClient::refreshSessions()
QString raw = QString::fromUtf8(out);
m_sessions.clear();
QSet<QString> seen;
if (!raw.isEmpty()) {
for (const QString &line : raw.split('\n', Qt::SkipEmptyParts)) {
QStringList parts = line.split('\t');
// Skip lines where the first field (session name) is empty
if (parts.isEmpty() || parts[0].isEmpty()) continue;
QString sid = parts[0];
if (seen.contains(sid)) continue; // already added (multi-agent)
seen.insert(sid);
QVariantMap session;
session["id"] = parts[0];
session["id"] = sid;
session["state"] = parts.size() > 1 ? parts[1] : "";
session["model"] = parts.size() > 2 ? parts[2] : "";
session["agent"] = parts.size() > 3 ? parts[3] : "";
session["cwd"] = parts.size() > 2 ? parts[2] : "";
session["backend"] = parts.size() > 3 ? parts[3] : "";
session["model"] = parts.size() > 4 ? parts[4] : "";
session["agent"] = parts.size() > 5 ? parts[5] : "";
m_sessions.append(session);
}
}
@ -541,16 +548,22 @@ void Ollie9pClient::onEventReadyRead()
QString raw = QString::fromUtf8(data);
m_sessions.clear();
QSet<QString> seen;
if (!raw.isEmpty()) {
for (const QString &line : raw.split('\n', Qt::SkipEmptyParts)) {
QStringList parts = line.split('\t');
// Skip lines where the first field (session name) is empty
if (parts.isEmpty() || parts[0].isEmpty()) continue;
QString sid = parts[0];
if (seen.contains(sid)) continue; // already added (multi-agent)
seen.insert(sid);
QVariantMap session;
session["id"] = parts[0];
session["id"] = sid;
session["state"] = parts.size() > 1 ? parts[1] : "";
session["model"] = parts.size() > 2 ? parts[2] : "";
session["agent"] = parts.size() > 3 ? parts[3] : "";
session["cwd"] = parts.size() > 2 ? parts[2] : "";
session["backend"] = parts.size() > 3 ? parts[3] : "";
session["model"] = parts.size() > 4 ? parts[4] : "";
session["agent"] = parts.size() > 5 ? parts[5] : "";
m_sessions.append(session);
}
}