refactor: add to template agent roles

This commit is contained in:
Petr Mironychev
2026-06-04 16:21:34 +02:00
parent c151c5030b
commit 3179c0c358
113 changed files with 383 additions and 5292 deletions

View File

@@ -9,6 +9,7 @@ add_library(Session STATIC
Session.hpp Session.cpp
SessionManager.hpp SessionManager.cpp
SystemPromptBuilder.hpp SystemPromptBuilder.cpp
ToolContributorRegistry.hpp
)
target_link_libraries(Session

View File

@@ -210,7 +210,9 @@ LLMQore::RequestID Session::sendCompletion(Templates::ContextData ctx)
if (!provider->prepareRequest(payload, tmpl, ctx, /*tools=*/false, /*thinking=*/false))
return {};
const auto id = provider->sendRequest(QUrl(provider->url()), payload, cfg.endpoint);
QString endpoint = cfg.endpoint;
endpoint.replace(QStringLiteral("${MODEL}"), cfg.model);
const auto id = provider->sendRequest(QUrl(provider->url()), payload, endpoint);
if (id.isEmpty())
return {};
@@ -242,7 +244,9 @@ LLMQore::RequestID Session::dispatch(
if (!provider->prepareRequest(payload, tmpl, ctx, tools, thinking))
return {};
const auto id = provider->sendRequest(QUrl(provider->url()), payload, cfg.endpoint);
QString endpoint = cfg.endpoint;
endpoint.replace(QStringLiteral("${MODEL}"), cfg.model);
const auto id = provider->sendRequest(QUrl(provider->url()), payload, endpoint);
if (id.isEmpty())
return {};

View File

@@ -9,6 +9,8 @@
#include <QPointer>
#include <QString>
#include "ToolContributorRegistry.hpp"
namespace QodeAssist {
class AgentFactory;
@@ -41,6 +43,9 @@ public:
void cancelAll();
ToolContributorRegistry &toolContributors() noexcept { return m_toolContributors; }
const ToolContributorRegistry &toolContributors() const noexcept { return m_toolContributors; }
signals:
void sessionCreated(Session *session);
void sessionRemoved(Session *session);
@@ -48,6 +53,7 @@ signals:
private:
QPointer<AgentFactory> m_agentFactory;
QList<QPointer<Session>> m_sessions;
ToolContributorRegistry m_toolContributors;
};
} // namespace QodeAssist

View File

@@ -0,0 +1,41 @@
// Copyright (C) 2024-2026 Petr Mironychev
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <functional>
#include <utility>
#include <vector>
namespace LLMQore {
class ToolsManager;
}
namespace QodeAssist {
class ToolContributorRegistry
{
public:
using Contributor = std::function<void(LLMQore::ToolsManager *)>;
void add(Contributor contributor)
{
if (contributor)
m_contributors.push_back(std::move(contributor));
}
void contribute(LLMQore::ToolsManager *tools) const
{
if (!tools)
return;
for (const auto &contributor : m_contributors)
contributor(tools);
}
void clear() { m_contributors.clear(); }
private:
std::vector<Contributor> m_contributors;
};
} // namespace QodeAssist