refactor: Replace plugin tools manager to client api tools manager

This commit is contained in:
Petr Mironychev
2026-03-30 06:53:29 +02:00
parent f58fad9578
commit e55e96714b
42 changed files with 381 additions and 343 deletions

View File

@ -59,12 +59,12 @@ BuildProjectTool::~BuildProjectTool()
m_activeBuilds.clear();
}
QString BuildProjectTool::name() const
QString BuildProjectTool::id() const
{
return "build_project";
}
QString BuildProjectTool::stringName() const
QString BuildProjectTool::displayName() const
{
return "Building and running project";
}
@ -80,7 +80,7 @@ QString BuildProjectTool::description() const
"Note: This operation may take some time depending on project size.";
}
QJsonObject BuildProjectTool::getDefinition(PluginLLMCore::ToolSchemaFormat format) const
QJsonObject BuildProjectTool::parametersSchema() const
{
QJsonObject definition;
definition["type"] = "object";
@ -96,26 +96,9 @@ QJsonObject BuildProjectTool::getDefinition(PluginLLMCore::ToolSchemaFormat form
definition["properties"] = properties;
definition["required"] = QJsonArray();
switch (format) {
case PluginLLMCore::ToolSchemaFormat::OpenAI:
return customizeForOpenAI(definition);
case PluginLLMCore::ToolSchemaFormat::Claude:
return customizeForClaude(definition);
case PluginLLMCore::ToolSchemaFormat::Ollama:
return customizeForOllama(definition);
case PluginLLMCore::ToolSchemaFormat::Google:
return customizeForGoogle(definition);
}
return definition;
}
PluginLLMCore::ToolPermissions BuildProjectTool::requiredPermissions() const
{
return PluginLLMCore::ToolPermission::FileSystemRead
| PluginLLMCore::ToolPermission::FileSystemWrite;
}
QFuture<QString> BuildProjectTool::executeAsync(const QJsonObject &input)
{
auto *project = ProjectExplorer::ProjectManager::startupProject();

View File

@ -19,7 +19,7 @@
#pragma once
#include <pluginllmcore/BaseTool.hpp>
#include <LLMCore/BaseTool.hpp>
#include <QHash>
#include <QObject>
#include <QPointer>
@ -42,18 +42,17 @@ struct BuildInfo
QMetaObject::Connection buildFinishedConnection;
};
class BuildProjectTool : public PluginLLMCore::BaseTool
class BuildProjectTool : public ::LLMCore::BaseTool
{
Q_OBJECT
public:
explicit BuildProjectTool(QObject *parent = nullptr);
~BuildProjectTool() override;
QString name() const override;
QString stringName() const override;
QString id() const override;
QString displayName() const override;
QString description() const override;
QJsonObject getDefinition(PluginLLMCore::ToolSchemaFormat format) const override;
PluginLLMCore::ToolPermissions requiredPermissions() const override;
QJsonObject parametersSchema() const override;
QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) override;

View File

@ -36,12 +36,12 @@ CreateNewFileTool::CreateNewFileTool(QObject *parent)
: BaseTool(parent)
{}
QString CreateNewFileTool::name() const
QString CreateNewFileTool::id() const
{
return "create_new_file";
}
QString CreateNewFileTool::stringName() const
QString CreateNewFileTool::displayName() const
{
return {"Creating new file"};
}
@ -54,7 +54,7 @@ QString CreateNewFileTool::description() const
"to the project file";
}
QJsonObject CreateNewFileTool::getDefinition(PluginLLMCore::ToolSchemaFormat format) const
QJsonObject CreateNewFileTool::parametersSchema() const
{
QJsonObject properties;
@ -70,25 +70,9 @@ QJsonObject CreateNewFileTool::getDefinition(PluginLLMCore::ToolSchemaFormat for
required.append("filepath");
definition["required"] = required;
switch (format) {
case PluginLLMCore::ToolSchemaFormat::OpenAI:
return customizeForOpenAI(definition);
case PluginLLMCore::ToolSchemaFormat::Claude:
return customizeForClaude(definition);
case PluginLLMCore::ToolSchemaFormat::Ollama:
return customizeForOllama(definition);
case PluginLLMCore::ToolSchemaFormat::Google:
return customizeForGoogle(definition);
}
return definition;
}
PluginLLMCore::ToolPermissions CreateNewFileTool::requiredPermissions() const
{
return PluginLLMCore::ToolPermission::FileSystemWrite;
}
QFuture<QString> CreateNewFileTool::executeAsync(const QJsonObject &input)
{
return QtConcurrent::run([this, input]() -> QString {

View File

@ -19,21 +19,20 @@
#pragma once
#include <pluginllmcore/BaseTool.hpp>
#include <LLMCore/BaseTool.hpp>
namespace QodeAssist::Tools {
class CreateNewFileTool : public PluginLLMCore::BaseTool
class CreateNewFileTool : public ::LLMCore::BaseTool
{
Q_OBJECT
public:
explicit CreateNewFileTool(QObject *parent = nullptr);
QString name() const override;
QString stringName() const override;
QString id() const override;
QString displayName() const override;
QString description() const override;
QJsonObject getDefinition(PluginLLMCore::ToolSchemaFormat format) const override;
PluginLLMCore::ToolPermissions requiredPermissions() const override;
QJsonObject parametersSchema() const override;
QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) override;
};

View File

@ -39,12 +39,12 @@ EditFileTool::EditFileTool(QObject *parent)
: BaseTool(parent)
{}
QString EditFileTool::name() const
QString EditFileTool::id() const
{
return "edit_file";
}
QString EditFileTool::stringName() const
QString EditFileTool::displayName() const
{
return {"Editing file"};
}
@ -71,7 +71,7 @@ QString EditFileTool::description() const
"disabled auto-apply. DO NOT retry the same edit - wait for user action.";
}
QJsonObject EditFileTool::getDefinition(PluginLLMCore::ToolSchemaFormat format) const
QJsonObject EditFileTool::parametersSchema() const
{
QJsonObject properties;
@ -104,25 +104,9 @@ QJsonObject EditFileTool::getDefinition(PluginLLMCore::ToolSchemaFormat format)
required.append("new_content");
definition["required"] = required;
switch (format) {
case PluginLLMCore::ToolSchemaFormat::OpenAI:
return customizeForOpenAI(definition);
case PluginLLMCore::ToolSchemaFormat::Claude:
return customizeForClaude(definition);
case PluginLLMCore::ToolSchemaFormat::Ollama:
return customizeForOllama(definition);
case PluginLLMCore::ToolSchemaFormat::Google:
return customizeForGoogle(definition);
}
return definition;
}
PluginLLMCore::ToolPermissions EditFileTool::requiredPermissions() const
{
return PluginLLMCore::ToolPermission::FileSystemWrite;
}
QFuture<QString> EditFileTool::executeAsync(const QJsonObject &input)
{
return QtConcurrent::run([this, input]() -> QString {

View File

@ -19,21 +19,20 @@
#pragma once
#include <pluginllmcore/BaseTool.hpp>
#include <LLMCore/BaseTool.hpp>
namespace QodeAssist::Tools {
class EditFileTool : public PluginLLMCore::BaseTool
class EditFileTool : public ::LLMCore::BaseTool
{
Q_OBJECT
public:
explicit EditFileTool(QObject *parent = nullptr);
QString name() const override;
QString stringName() const override;
QString id() const override;
QString displayName() const override;
QString description() const override;
QJsonObject getDefinition(PluginLLMCore::ToolSchemaFormat format) const override;
PluginLLMCore::ToolPermissions requiredPermissions() const override;
QJsonObject parametersSchema() const override;
QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) override;
};

View File

@ -41,12 +41,12 @@ ExecuteTerminalCommandTool::ExecuteTerminalCommandTool(QObject *parent)
{
}
QString ExecuteTerminalCommandTool::name() const
QString ExecuteTerminalCommandTool::id() const
{
return "execute_terminal_command";
}
QString ExecuteTerminalCommandTool::stringName() const
QString ExecuteTerminalCommandTool::displayName() const
{
return "Executing terminal command";
}
@ -56,7 +56,7 @@ QString ExecuteTerminalCommandTool::description() const
return getCommandDescription();
}
QJsonObject ExecuteTerminalCommandTool::getDefinition(PluginLLMCore::ToolSchemaFormat format) const
QJsonObject ExecuteTerminalCommandTool::parametersSchema() const
{
QJsonObject definition;
definition["type"] = "object";
@ -70,34 +70,16 @@ QJsonObject ExecuteTerminalCommandTool::getDefinition(PluginLLMCore::ToolSchemaF
properties["args"] = QJsonObject{
{"type", "string"},
{"description",
{"description",
"Optional arguments for the command. Arguments with spaces should be properly quoted. "
"Example: '--file \"path with spaces.txt\" --verbose'"}};
definition["properties"] = properties;
definition["required"] = QJsonArray{"command"};
switch (format) {
case PluginLLMCore::ToolSchemaFormat::OpenAI:
return customizeForOpenAI(definition);
case PluginLLMCore::ToolSchemaFormat::Claude:
return customizeForClaude(definition);
case PluginLLMCore::ToolSchemaFormat::Ollama:
return customizeForOllama(definition);
case PluginLLMCore::ToolSchemaFormat::Google:
return customizeForGoogle(definition);
}
return definition;
}
PluginLLMCore::ToolPermissions ExecuteTerminalCommandTool::requiredPermissions() const
{
return PluginLLMCore::ToolPermission::FileSystemRead
| PluginLLMCore::ToolPermission::FileSystemWrite
| PluginLLMCore::ToolPermission::NetworkAccess;
}
QFuture<QString> ExecuteTerminalCommandTool::executeAsync(const QJsonObject &input)
{
const QString command = input.value("command").toString().trimmed();

View File

@ -19,22 +19,21 @@
#pragma once
#include <pluginllmcore/BaseTool.hpp>
#include <LLMCore/BaseTool.hpp>
#include <QObject>
namespace QodeAssist::Tools {
class ExecuteTerminalCommandTool : public PluginLLMCore::BaseTool
class ExecuteTerminalCommandTool : public ::LLMCore::BaseTool
{
Q_OBJECT
public:
explicit ExecuteTerminalCommandTool(QObject *parent = nullptr);
QString name() const override;
QString stringName() const override;
QString id() const override;
QString displayName() const override;
QString description() const override;
QJsonObject getDefinition(PluginLLMCore::ToolSchemaFormat format) const override;
PluginLLMCore::ToolPermissions requiredPermissions() const override;
QJsonObject parametersSchema() const override;
QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) override;

View File

@ -32,12 +32,12 @@ FindAndReadFileTool::FindAndReadFileTool(QObject *parent)
, m_ignoreManager(new Context::IgnoreManager(this))
{}
QString FindAndReadFileTool::name() const
QString FindAndReadFileTool::id() const
{
return "find_and_read_file";
}
QString FindAndReadFileTool::stringName() const
QString FindAndReadFileTool::displayName() const
{
return "Finding and reading file";
}
@ -48,7 +48,7 @@ QString FindAndReadFileTool::description() const
"Returns the best matching file and its content.";
}
QJsonObject FindAndReadFileTool::getDefinition(PluginLLMCore::ToolSchemaFormat format) const
QJsonObject FindAndReadFileTool::parametersSchema() const
{
QJsonObject properties;
@ -68,24 +68,9 @@ QJsonObject FindAndReadFileTool::getDefinition(PluginLLMCore::ToolSchemaFormat f
definition["properties"] = properties;
definition["required"] = QJsonArray{"query"};
switch (format) {
case PluginLLMCore::ToolSchemaFormat::OpenAI:
return customizeForOpenAI(definition);
case PluginLLMCore::ToolSchemaFormat::Claude:
return customizeForClaude(definition);
case PluginLLMCore::ToolSchemaFormat::Ollama:
return customizeForOllama(definition);
case PluginLLMCore::ToolSchemaFormat::Google:
return customizeForGoogle(definition);
}
return definition;
}
PluginLLMCore::ToolPermissions FindAndReadFileTool::requiredPermissions() const
{
return PluginLLMCore::ToolPermission::FileSystemRead;
}
QFuture<QString> FindAndReadFileTool::executeAsync(const QJsonObject &input)
{
return QtConcurrent::run([this, input]() -> QString {

View File

@ -22,25 +22,24 @@
#include "FileSearchUtils.hpp"
#include <context/IgnoreManager.hpp>
#include <pluginllmcore/BaseTool.hpp>
#include <LLMCore/BaseTool.hpp>
#include <QFuture>
#include <QJsonObject>
#include <QObject>
namespace QodeAssist::Tools {
class FindAndReadFileTool : public PluginLLMCore::BaseTool
class FindAndReadFileTool : public ::LLMCore::BaseTool
{
Q_OBJECT
public:
explicit FindAndReadFileTool(QObject *parent = nullptr);
QString name() const override;
QString stringName() const override;
QString id() const override;
QString displayName() const override;
QString description() const override;
QJsonObject getDefinition(PluginLLMCore::ToolSchemaFormat format) const override;
PluginLLMCore::ToolPermissions requiredPermissions() const override;
QJsonObject parametersSchema() const override;
QFuture<QString> executeAsync(const QJsonObject &input) override;
private:

View File

@ -121,12 +121,12 @@ GetIssuesListTool::GetIssuesListTool(QObject *parent)
IssuesTracker::instance();
}
QString GetIssuesListTool::name() const
QString GetIssuesListTool::id() const
{
return "get_issues_list";
}
QString GetIssuesListTool::stringName() const
QString GetIssuesListTool::displayName() const
{
return "Getting issues list from Qt Creator";
}
@ -138,7 +138,7 @@ QString GetIssuesListTool::description() const
"Optional severity filter: 'error', 'warning', or 'all' (default).";
}
QJsonObject GetIssuesListTool::getDefinition(PluginLLMCore::ToolSchemaFormat format) const
QJsonObject GetIssuesListTool::parametersSchema() const
{
QJsonObject definition;
definition["type"] = "object";
@ -152,25 +152,9 @@ QJsonObject GetIssuesListTool::getDefinition(PluginLLMCore::ToolSchemaFormat for
definition["properties"] = properties;
definition["required"] = QJsonArray();
switch (format) {
case PluginLLMCore::ToolSchemaFormat::OpenAI:
return customizeForOpenAI(definition);
case PluginLLMCore::ToolSchemaFormat::Claude:
return customizeForClaude(definition);
case PluginLLMCore::ToolSchemaFormat::Ollama:
return customizeForOllama(definition);
case PluginLLMCore::ToolSchemaFormat::Google:
return customizeForGoogle(definition);
}
return definition;
}
PluginLLMCore::ToolPermissions GetIssuesListTool::requiredPermissions() const
{
return PluginLLMCore::ToolPermission::FileSystemRead;
}
QFuture<QString> GetIssuesListTool::executeAsync(const QJsonObject &input)
{
return QtConcurrent::run([input]() -> QString {

View File

@ -19,7 +19,7 @@
#pragma once
#include <pluginllmcore/BaseTool.hpp>
#include <LLMCore/BaseTool.hpp>
#include <projectexplorer/task.h>
#include <QList>
#include <QMutex>
@ -46,17 +46,16 @@ private:
mutable QMutex m_mutex;
};
class GetIssuesListTool : public PluginLLMCore::BaseTool
class GetIssuesListTool : public ::LLMCore::BaseTool
{
Q_OBJECT
public:
explicit GetIssuesListTool(QObject *parent = nullptr);
QString name() const override;
QString stringName() const override;
QString id() const override;
QString displayName() const override;
QString description() const override;
QJsonObject getDefinition(PluginLLMCore::ToolSchemaFormat format) const override;
PluginLLMCore::ToolPermissions requiredPermissions() const override;
QJsonObject parametersSchema() const override;
QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) override;
};

View File

@ -37,12 +37,12 @@ ListProjectFilesTool::ListProjectFilesTool(QObject *parent)
{}
QString ListProjectFilesTool::name() const
QString ListProjectFilesTool::id() const
{
return "list_project_files";
}
QString ListProjectFilesTool::stringName() const
QString ListProjectFilesTool::displayName() const
{
return {"Reading project files list"};
}
@ -53,32 +53,16 @@ QString ListProjectFilesTool::description() const
"Useful for understanding project structure. No parameters required.";
}
QJsonObject ListProjectFilesTool::getDefinition(PluginLLMCore::ToolSchemaFormat format) const
QJsonObject ListProjectFilesTool::parametersSchema() const
{
QJsonObject definition;
definition["type"] = "object";
definition["properties"] = QJsonObject();
definition["required"] = QJsonArray();
switch (format) {
case PluginLLMCore::ToolSchemaFormat::OpenAI:
return customizeForOpenAI(definition);
case PluginLLMCore::ToolSchemaFormat::Claude:
return customizeForClaude(definition);
case PluginLLMCore::ToolSchemaFormat::Ollama:
return customizeForOllama(definition);
case PluginLLMCore::ToolSchemaFormat::Google:
return customizeForGoogle(definition);
}
return definition;
}
PluginLLMCore::ToolPermissions ListProjectFilesTool::requiredPermissions() const
{
return PluginLLMCore::ToolPermission::FileSystemRead;
}
QFuture<QString> ListProjectFilesTool::executeAsync(const QJsonObject &input)
{
Q_UNUSED(input)

View File

@ -19,23 +19,22 @@
#pragma once
#include <pluginllmcore/BaseTool.hpp>
#include <LLMCore/BaseTool.hpp>
#include <context/IgnoreManager.hpp>
namespace QodeAssist::Tools {
class ListProjectFilesTool : public PluginLLMCore::BaseTool
class ListProjectFilesTool : public ::LLMCore::BaseTool
{
Q_OBJECT
public:
explicit ListProjectFilesTool(QObject *parent = nullptr);
QString name() const override;
QString stringName() const override;
QString id() const override;
QString displayName() const override;
QString description() const override;
QJsonObject getDefinition(PluginLLMCore::ToolSchemaFormat format) const override;
PluginLLMCore::ToolPermissions requiredPermissions() const override;
QJsonObject parametersSchema() const override;
QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) override;

View File

@ -43,12 +43,12 @@ ProjectSearchTool::ProjectSearchTool(QObject *parent)
, m_ignoreManager(new Context::IgnoreManager(this))
{}
QString ProjectSearchTool::name() const
QString ProjectSearchTool::id() const
{
return "search_project";
}
QString ProjectSearchTool::stringName() const
QString ProjectSearchTool::displayName() const
{
return "Searching in project";
}
@ -60,7 +60,7 @@ QString ProjectSearchTool::description() const
"Symbol mode: finds C++ definitions (classes, functions, etc).";
}
QJsonObject ProjectSearchTool::getDefinition(PluginLLMCore::ToolSchemaFormat format) const
QJsonObject ProjectSearchTool::parametersSchema() const
{
QJsonObject properties;
@ -94,24 +94,9 @@ QJsonObject ProjectSearchTool::getDefinition(PluginLLMCore::ToolSchemaFormat for
definition["properties"] = properties;
definition["required"] = QJsonArray{"query", "search_type"};
switch (format) {
case PluginLLMCore::ToolSchemaFormat::OpenAI:
return customizeForOpenAI(definition);
case PluginLLMCore::ToolSchemaFormat::Claude:
return customizeForClaude(definition);
case PluginLLMCore::ToolSchemaFormat::Ollama:
return customizeForOllama(definition);
case PluginLLMCore::ToolSchemaFormat::Google:
return customizeForGoogle(definition);
}
return definition;
}
PluginLLMCore::ToolPermissions ProjectSearchTool::requiredPermissions() const
{
return PluginLLMCore::ToolPermission::FileSystemRead;
}
QFuture<QString> ProjectSearchTool::executeAsync(const QJsonObject &input)
{
return QtConcurrent::run([this, input]() -> QString {

View File

@ -20,25 +20,24 @@
#pragma once
#include <context/IgnoreManager.hpp>
#include <pluginllmcore/BaseTool.hpp>
#include <LLMCore/BaseTool.hpp>
#include <QFuture>
#include <QJsonObject>
#include <QObject>
namespace QodeAssist::Tools {
class ProjectSearchTool : public PluginLLMCore::BaseTool
class ProjectSearchTool : public ::LLMCore::BaseTool
{
Q_OBJECT
public:
explicit ProjectSearchTool(QObject *parent = nullptr);
QString name() const override;
QString stringName() const override;
QString id() const override;
QString displayName() const override;
QString description() const override;
QJsonObject getDefinition(PluginLLMCore::ToolSchemaFormat format) const override;
PluginLLMCore::ToolPermissions requiredPermissions() const override;
QJsonObject parametersSchema() const override;
QFuture<QString> executeAsync(const QJsonObject &input) override;
private:

View File

@ -31,12 +31,12 @@ TodoTool::TodoTool(QObject *parent)
: BaseTool(parent)
{}
QString TodoTool::name() const
QString TodoTool::id() const
{
return "todo_tool";
}
QString TodoTool::stringName() const
QString TodoTool::displayName() const
{
return "Managing TODO list for task tracking";
}
@ -53,7 +53,7 @@ QString TodoTool::description() const
"The list persists throughout the conversation.";
}
QJsonObject TodoTool::getDefinition(PluginLLMCore::ToolSchemaFormat format) const
QJsonObject TodoTool::parametersSchema() const
{
QJsonObject definition;
definition["type"] = "object";
@ -97,32 +97,15 @@ QJsonObject TodoTool::getDefinition(PluginLLMCore::ToolSchemaFormat format) cons
required.append("operation");
definition["required"] = required;
switch (format) {
case PluginLLMCore::ToolSchemaFormat::OpenAI:
return customizeForOpenAI(definition);
case PluginLLMCore::ToolSchemaFormat::Claude:
return customizeForClaude(definition);
case PluginLLMCore::ToolSchemaFormat::Ollama:
return customizeForOllama(definition);
case PluginLLMCore::ToolSchemaFormat::Google:
return customizeForGoogle(definition);
}
return definition;
}
PluginLLMCore::ToolPermissions TodoTool::requiredPermissions() const
{
return PluginLLMCore::ToolPermission::None;
}
QFuture<QString> TodoTool::executeAsync(const QJsonObject &input)
{
return QtConcurrent::run([this, input]() -> QString {
QString sessionId = input.value("session_id").toString();
if (sessionId.isEmpty()) {
sessionId = "current";
}
QMutexLocker sessionLocker(&m_mutex);
QString sessionId = m_currentSessionId.isEmpty() ? "current" : m_currentSessionId;
sessionLocker.unlock();
const QString operation = input.value("operation").toString();
@ -194,6 +177,12 @@ QFuture<QString> TodoTool::executeAsync(const QJsonObject &input)
});
}
void TodoTool::setCurrentSessionId(const QString &sessionId)
{
QMutexLocker locker(&m_mutex);
m_currentSessionId = sessionId;
}
void TodoTool::clearSession(const QString &sessionId)
{
QMutexLocker locker(&m_mutex);

View File

@ -19,7 +19,7 @@
#pragma once
#include <pluginllmcore/BaseTool.hpp>
#include <LLMCore/BaseTool.hpp>
#include <QHash>
#include <QMutex>
@ -34,21 +34,21 @@ struct TodoItem
bool completed;
};
class TodoTool : public PluginLLMCore::BaseTool
class TodoTool : public ::LLMCore::BaseTool
{
Q_OBJECT
public:
explicit TodoTool(QObject *parent = nullptr);
QString name() const override;
QString stringName() const override;
QString id() const override;
QString displayName() const override;
QString description() const override;
QJsonObject getDefinition(PluginLLMCore::ToolSchemaFormat format) const override;
PluginLLMCore::ToolPermissions requiredPermissions() const override;
QJsonObject parametersSchema() const override;
QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) override;
void setCurrentSessionId(const QString &sessionId);
void clearSession(const QString &sessionId);
private:
@ -59,6 +59,7 @@ private:
QString listRemainingTodosLocked(const QString &sessionId) const;
mutable QMutex m_mutex;
QString m_currentSessionId;
QHash<QString, QHash<int, TodoItem>> m_sessionTodos;
QHash<QString, int> m_sessionNextId;
};

View File

@ -0,0 +1,49 @@
/*
* Copyright (C) 2026 Petr Mironychev
*
* This file is part of QodeAssist.
*
* QodeAssist is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* QodeAssist is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with QodeAssist. If not, see <https://www.gnu.org/licenses/>.
*/
#include "ToolsRegistration.hpp"
#include <LLMCore/ToolsManager.hpp>
#include "BuildProjectTool.hpp"
#include "CreateNewFileTool.hpp"
#include "EditFileTool.hpp"
#include "ExecuteTerminalCommandTool.hpp"
#include "FindAndReadFileTool.hpp"
#include "GetIssuesListTool.hpp"
#include "ListProjectFilesTool.hpp"
#include "ProjectSearchTool.hpp"
#include "TodoTool.hpp"
namespace QodeAssist::Tools {
void registerQodeAssistTools(::LLMCore::ToolsManager *manager)
{
manager->addTool(new ListProjectFilesTool(manager));
manager->addTool(new GetIssuesListTool(manager));
manager->addTool(new CreateNewFileTool(manager));
manager->addTool(new EditFileTool(manager));
manager->addTool(new BuildProjectTool(manager));
manager->addTool(new ExecuteTerminalCommandTool(manager));
manager->addTool(new ProjectSearchTool(manager));
manager->addTool(new FindAndReadFileTool(manager));
manager->addTool(new TodoTool(manager));
}
} // namespace QodeAssist::Tools

View File

@ -0,0 +1,30 @@
/*
* Copyright (C) 2025 Petr Mironychev
*
* This file is part of QodeAssist.
*
* QodeAssist is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* QodeAssist is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with QodeAssist. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once
namespace LLMCore {
class ToolsManager;
}
namespace QodeAssist::Tools {
void registerQodeAssistTools(::LLMCore::ToolsManager *manager);
} // namespace QodeAssist::Tools