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

@ -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);