feat: Add list project files tool

This commit is contained in:
Petr Mironychev
2025-09-22 23:37:40 +02:00
parent d0f8c1098f
commit ff750c271a
11 changed files with 248 additions and 50 deletions

View File

@ -25,37 +25,6 @@ BaseTool::BaseTool(QObject *parent)
: QObject(parent)
{}
QJsonObject BaseTool::getDefinition(ToolSchemaFormat format) const
{
QJsonObject properties;
QJsonObject filenameProperty;
filenameProperty["type"] = "string";
filenameProperty["description"] = "The filename or relative path to read";
properties["filename"] = filenameProperty;
QJsonObject definition;
definition["type"] = "object";
definition["properties"] = properties;
QJsonArray required;
required.append("filename");
definition["required"] = required;
switch (format) {
case LLMCore::ToolSchemaFormat::OpenAI:
definition = customizeForOpenAI(definition);
break;
case LLMCore::ToolSchemaFormat::Claude:
definition = customizeForClaude(definition);
break;
case LLMCore::ToolSchemaFormat::Ollama:
definition = customizeForOllama(definition);
break;
}
return definition;
}
QJsonObject BaseTool::customizeForOpenAI(const QJsonObject &baseDefinition) const
{
QJsonObject function;

View File

@ -38,7 +38,7 @@ public:
virtual QString name() const = 0;
virtual QString description() const = 0;
virtual QJsonObject getDefinition(ToolSchemaFormat format) const;
virtual QJsonObject getDefinition(ToolSchemaFormat format) const = 0;
virtual QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) = 0;

View File

@ -63,6 +63,8 @@ public:
virtual void sendRequest(const RequestID &requestId, const QUrl &url, const QJsonObject &payload)
= 0;
virtual bool supportsTools() { return false; };
HttpClient *httpClient() const;
public slots: