// Copyright (C) 2024-2026 Petr Mironychev // SPDX-License-Identifier: GPL-3.0-or-later // Additional attribution terms under GPLv3 §7(b) apply — see LICENSE #pragma once #include #include "Provider.hpp" namespace LLMQore { class BaseClient; } namespace QodeAssist::Providers { class GenericProvider : public Provider { Q_OBJECT public: using ClientFactory = std::function<::LLMQore::BaseClient *(QObject *)>; GenericProvider( QString name, ProviderID id, const ClientFactory &clientFactory, QObject *parent = nullptr); QString name() const override; QFuture> getInstalledModels(const QString &url) override; ProviderID providerID() const override; ::LLMQore::BaseClient *client() const override; RequestID sendRequest( const QUrl &url, const QJsonObject &payload, const QString &endpoint) override; private: QString modelsEndpoint(const QString &url) const; QString m_name; ProviderID m_id; ::LLMQore::BaseClient *m_client; }; void registerBuiltinProviders(); } // namespace QodeAssist::Providers