mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2026-06-30 01:59:11 -04:00
refactor: Move to agent architecture
This commit is contained in:
@@ -90,10 +90,8 @@ void ProviderInstanceFactory::reload()
|
||||
void ProviderInstanceFactory::rebuildIndexes()
|
||||
{
|
||||
m_nameIndex.clear();
|
||||
m_instanceNamesCache.clear();
|
||||
m_knownClientApisCache.clear();
|
||||
m_nameIndex.reserve(static_cast<qsizetype>(m_instances.size()));
|
||||
m_instanceNamesCache.reserve(static_cast<qsizetype>(m_instances.size()));
|
||||
|
||||
std::sort(m_instances.begin(), m_instances.end(),
|
||||
[](const ProviderInstance &a, const ProviderInstance &b) {
|
||||
@@ -104,7 +102,6 @@ void ProviderInstanceFactory::rebuildIndexes()
|
||||
for (qsizetype i = 0; i < static_cast<qsizetype>(m_instances.size()); ++i) {
|
||||
const ProviderInstance &inst = m_instances[i];
|
||||
m_nameIndex.insert(inst.name.toCaseFolded(), i);
|
||||
m_instanceNamesCache.append(inst.name);
|
||||
if (!seenApis.contains(inst.clientApi)) {
|
||||
seenApis.insert(inst.clientApi);
|
||||
m_knownClientApisCache.append(inst.clientApi);
|
||||
@@ -133,29 +130,6 @@ void ProviderInstanceFactory::rewatchUserDir()
|
||||
m_watcher->addPath(fi.absoluteFilePath());
|
||||
}
|
||||
|
||||
void ProviderInstanceFactory::registerInstance(ProviderInstance instance)
|
||||
{
|
||||
Q_ASSERT_X(QThread::currentThread() == thread(),
|
||||
Q_FUNC_INFO, "ProviderInstanceFactory must be used from its owner thread");
|
||||
const QString validation = ProviderInstance::validate(instance, knownClientApis());
|
||||
if (!validation.isEmpty()) {
|
||||
qCWarning(providerInstanceFactoryLog).noquote()
|
||||
<< "Refusing to register provider instance:" << validation;
|
||||
return;
|
||||
}
|
||||
const QString name = instance.name;
|
||||
for (auto &existing : m_instances) {
|
||||
if (existing.name == name) {
|
||||
existing = std::move(instance);
|
||||
emit instanceChanged(name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
m_instances.push_back(std::move(instance));
|
||||
rebuildIndexes();
|
||||
emit instanceChanged(name);
|
||||
}
|
||||
|
||||
const ProviderInstance *ProviderInstanceFactory::instanceByName(const QString &name) const
|
||||
{
|
||||
const auto it = m_nameIndex.constFind(name.toCaseFolded());
|
||||
@@ -164,21 +138,6 @@ const ProviderInstance *ProviderInstanceFactory::instanceByName(const QString &n
|
||||
return &m_instances[it.value()];
|
||||
}
|
||||
|
||||
QStringList ProviderInstanceFactory::instanceNames() const
|
||||
{
|
||||
return m_instanceNamesCache;
|
||||
}
|
||||
|
||||
QStringList ProviderInstanceFactory::instanceNamesForClientApi(const QString &clientApi) const
|
||||
{
|
||||
QStringList out;
|
||||
for (const auto &inst : m_instances) {
|
||||
if (inst.clientApi == clientApi)
|
||||
out.append(inst.name);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
QStringList ProviderInstanceFactory::knownClientApis() const
|
||||
{
|
||||
return m_knownClientApisCache;
|
||||
@@ -190,7 +149,6 @@ void ProviderInstanceFactory::clear()
|
||||
Q_FUNC_INFO, "ProviderInstanceFactory must be used from its owner thread");
|
||||
m_instances.clear();
|
||||
m_nameIndex.clear();
|
||||
m_instanceNamesCache.clear();
|
||||
m_knownClientApisCache.clear();
|
||||
m_errors.clear();
|
||||
m_warnings.clear();
|
||||
|
||||
@@ -31,8 +31,6 @@ public:
|
||||
[[nodiscard]] static QString userInstancesDir();
|
||||
|
||||
[[nodiscard]] const ProviderInstance *instanceByName(const QString &name) const;
|
||||
[[nodiscard]] QStringList instanceNames() const;
|
||||
[[nodiscard]] QStringList instanceNamesForClientApi(const QString &clientApi) const;
|
||||
[[nodiscard]] QStringList knownClientApis() const;
|
||||
[[nodiscard]] const std::vector<ProviderInstance> &instances() const noexcept
|
||||
{
|
||||
@@ -42,7 +40,6 @@ public:
|
||||
[[nodiscard]] QStringList lastLoadErrors() const { return m_errors; }
|
||||
[[nodiscard]] QStringList lastLoadWarnings() const { return m_warnings; }
|
||||
|
||||
void registerInstance(ProviderInstance instance);
|
||||
void clear();
|
||||
|
||||
signals:
|
||||
@@ -55,7 +52,6 @@ private:
|
||||
|
||||
std::vector<ProviderInstance> m_instances;
|
||||
QHash<QString, qsizetype> m_nameIndex;
|
||||
QStringList m_instanceNamesCache;
|
||||
QStringList m_knownClientApisCache;
|
||||
QStringList m_errors;
|
||||
QStringList m_warnings;
|
||||
|
||||
@@ -237,11 +237,6 @@ ProviderLauncher::State ProviderLauncher::state(const QString &instanceName) con
|
||||
return slot ? slot->state : Idle;
|
||||
}
|
||||
|
||||
bool ProviderLauncher::isReady(const QString &instanceName) const
|
||||
{
|
||||
return state(instanceName) == Ready;
|
||||
}
|
||||
|
||||
QString ProviderLauncher::lastError(const QString &instanceName) const
|
||||
{
|
||||
const Slot *slot = m_slots.value(instanceName, nullptr);
|
||||
@@ -254,20 +249,6 @@ QByteArray ProviderLauncher::scrollback(const QString &instanceName) const
|
||||
return slot ? slot->scrollback : QByteArray{};
|
||||
}
|
||||
|
||||
QStringList ProviderLauncher::activeInstances() const
|
||||
{
|
||||
QStringList out;
|
||||
for (auto it = m_slots.constBegin(); it != m_slots.constEnd(); ++it) {
|
||||
if (it.value()->state != Idle)
|
||||
out.append(it.key());
|
||||
}
|
||||
std::sort(out.begin(), out.end(),
|
||||
[](const QString &a, const QString &b) {
|
||||
return a.compare(b, Qt::CaseInsensitive) < 0;
|
||||
});
|
||||
return out;
|
||||
}
|
||||
|
||||
void ProviderLauncher::launchProcess(Slot *slot)
|
||||
{
|
||||
const LaunchConfig &cfg = slot->cfg;
|
||||
|
||||
@@ -48,12 +48,9 @@ public:
|
||||
void restart(const QString &instanceName, const LaunchConfig &cfg);
|
||||
|
||||
[[nodiscard]] State state(const QString &instanceName) const;
|
||||
[[nodiscard]] bool isReady(const QString &instanceName) const;
|
||||
[[nodiscard]] QString lastError(const QString &instanceName) const;
|
||||
[[nodiscard]] QByteArray scrollback(const QString &instanceName) const;
|
||||
|
||||
[[nodiscard]] QStringList activeInstances() const;
|
||||
|
||||
signals:
|
||||
void stateChanged(const QString &instanceName, State newState);
|
||||
void bytesReceived(const QString &instanceName, const QByteArray &chunk);
|
||||
|
||||
Reference in New Issue
Block a user