mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2025-10-20 10:56:01 -04:00
feat: Add tools permissions (#238)
This commit is contained in:
@ -75,6 +75,11 @@ QJsonObject ListProjectFilesTool::getDefinition(LLMCore::ToolSchemaFormat format
|
||||
return definition;
|
||||
}
|
||||
|
||||
LLMCore::ToolPermissions ListProjectFilesTool::requiredPermissions() const
|
||||
{
|
||||
return LLMCore::ToolPermission::FileSystemRead;
|
||||
}
|
||||
|
||||
QFuture<QString> ListProjectFilesTool::executeAsync(const QJsonObject &input)
|
||||
{
|
||||
Q_UNUSED(input)
|
||||
|
@ -35,6 +35,8 @@ public:
|
||||
QString stringName() const override;
|
||||
QString description() const override;
|
||||
QJsonObject getDefinition(LLMCore::ToolSchemaFormat format) const override;
|
||||
LLMCore::ToolPermissions requiredPermissions() const override;
|
||||
|
||||
QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) override;
|
||||
|
||||
private:
|
||||
|
@ -93,6 +93,11 @@ QJsonObject ReadProjectFileByNameTool::getDefinition(LLMCore::ToolSchemaFormat f
|
||||
return definition;
|
||||
}
|
||||
|
||||
LLMCore::ToolPermissions ReadProjectFileByNameTool::requiredPermissions() const
|
||||
{
|
||||
return LLMCore::ToolPermission::FileSystemRead;
|
||||
}
|
||||
|
||||
QFuture<QString> ReadProjectFileByNameTool::executeAsync(const QJsonObject &input)
|
||||
{
|
||||
return QtConcurrent::run([this, input]() -> QString {
|
||||
|
@ -34,6 +34,8 @@ public:
|
||||
QString stringName() const override;
|
||||
QString description() const override;
|
||||
QJsonObject getDefinition(LLMCore::ToolSchemaFormat format) const override;
|
||||
LLMCore::ToolPermissions requiredPermissions() const override;
|
||||
|
||||
QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) override;
|
||||
|
||||
private:
|
||||
|
@ -73,6 +73,11 @@ QJsonObject ReadVisibleFilesTool::getDefinition(LLMCore::ToolSchemaFormat format
|
||||
return definition;
|
||||
}
|
||||
|
||||
LLMCore::ToolPermissions ReadVisibleFilesTool::requiredPermissions() const
|
||||
{
|
||||
return LLMCore::ToolPermission::FileSystemRead;
|
||||
}
|
||||
|
||||
QFuture<QString> ReadVisibleFilesTool::executeAsync(const QJsonObject &input)
|
||||
{
|
||||
Q_UNUSED(input)
|
||||
|
@ -34,6 +34,8 @@ public:
|
||||
QString stringName() const override;
|
||||
QString description() const override;
|
||||
QJsonObject getDefinition(LLMCore::ToolSchemaFormat format) const override;
|
||||
LLMCore::ToolPermissions requiredPermissions() const override;
|
||||
|
||||
QFuture<QString> executeAsync(const QJsonObject &input = QJsonObject()) override;
|
||||
|
||||
private:
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "ToolsFactory.hpp"
|
||||
|
||||
#include "logger/Logger.hpp"
|
||||
#include <settings/GeneralSettings.hpp>
|
||||
#include <QJsonArray>
|
||||
#include <QJsonObject>
|
||||
|
||||
@ -72,10 +73,39 @@ LLMCore::BaseTool *ToolsFactory::getToolByName(const QString &name) const
|
||||
QJsonArray ToolsFactory::getToolsDefinitions(LLMCore::ToolSchemaFormat format) const
|
||||
{
|
||||
QJsonArray toolsArray;
|
||||
const auto &settings = Settings::generalSettings();
|
||||
|
||||
for (auto it = m_tools.constBegin(); it != m_tools.constEnd(); ++it) {
|
||||
if (it.value()) {
|
||||
if (!it.value()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const auto requiredPerms = it.value()->requiredPermissions();
|
||||
bool hasPermission = true;
|
||||
|
||||
if (requiredPerms.testFlag(LLMCore::ToolPermission::FileSystemRead)) {
|
||||
if (!settings.allowFileSystemRead()) {
|
||||
hasPermission = false;
|
||||
}
|
||||
}
|
||||
|
||||
// if (requiredPerms.testFlag(LLMCore::ToolPermission::FileSystemWrite)) {
|
||||
// if (!settings.allowFileSystemWrite()) {
|
||||
// hasPermission = false;
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (requiredPerms.testFlag(LLMCore::ToolPermission::NetworkAccess)) {
|
||||
// if (!settings.allowNetworkAccess()) {
|
||||
// hasPermission = false;
|
||||
// }
|
||||
// }
|
||||
|
||||
if (hasPermission) {
|
||||
toolsArray.append(it.value()->getDefinition(format));
|
||||
} else {
|
||||
LOG_MESSAGE(
|
||||
QString("Tool '%1' skipped due to missing permissions").arg(it.value()->name()));
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user