This repository has been archived on 2026-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
ollie-kde/daemon/session_manager.h

76 lines
2.5 KiB
C++

#ifndef SESSION_MANAGER_H
#define SESSION_MANAGER_H
#include <QObject>
#include <QString>
#include <QStringList>
#include <QDBusConnection>
#include <QDBusInterface>
#include <QHash>
// SessionManager is the D-Bus adaptee. The generated SessionManagerAdaptor
// (from qt6_add_dbus_adaptor) forwards D-Bus method calls to slots here.
// Signals defined here are relayed by the adaptor onto the bus.
class SessionManager : public QObject
{
Q_OBJECT
public:
explicit SessionManager(QObject *parent = nullptr);
~SessionManager() override;
public slots:
// Session lifecycle
QString CreateSession(const QString &cwd, const QString &backend,
const QString &model, const QString &agent);
QStringList ListSessions();
bool KillSession(const QString &session_id);
bool RenameSession(const QString &session_id, const QString &new_name);
// Interaction
bool Submit(const QString &session_id, const QString &prompt);
bool Interrupt(const QString &session_id);
// State queries
QString GetState(const QString &session_id);
QString GetChat(const QString &session_id, qlonglong offset, qlonglong &new_offset);
QString GetUsage(const QString &session_id);
QString GetCost(const QString &session_id);
// Config
QString GetConfig(const QString &session_id);
bool SetConfig(const QString &session_id, const QString &key, const QString &value);
// Context
QString GetContext(const QString &session_id);
// Backends/models/agents
QStringList ListBackends();
QStringList ListModels(const QString &session_id);
QStringList ListAgents();
// Peers
bool PeerAdd(const QString &session_id, const QString &peer_id);
bool PeerRemove(const QString &session_id, const QString &peer_id);
QStringList PeerList(const QString &session_id);
bool PeerSubmit(const QString &session_id, const QString &peer_id, const QString &prompt);
signals:
void SessionCreated(const QString &session_id);
void SessionKilled(const QString &session_id);
void StateChanged(const QString &session_id, const QString &new_state);
void ChatUpdated(const QString &session_id, qlonglong offset, const QString &new_text);
private:
void installCallbacks();
void sendNotification(const QString &title, const QString &body);
QHash<QString, QString> m_sessionStates;
private slots:
void handleStateChange(const QString &session_id, const QString &new_state);
};
#endif // SESSION_MANAGER_H