mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2025-11-22 02:22:44 -05:00
feat: Run for quick refactoring only reading context tools
This commit is contained in:
@ -81,7 +81,8 @@ LLMCore::BaseTool *ToolsFactory::getToolByName(const QString &name) const
|
||||
return m_tools.value(name, nullptr);
|
||||
}
|
||||
|
||||
QJsonArray ToolsFactory::getToolsDefinitions(LLMCore::ToolSchemaFormat format) const
|
||||
QJsonArray ToolsFactory::getToolsDefinitions(
|
||||
LLMCore::ToolSchemaFormat format, LLMCore::RunToolsFilter filter) const
|
||||
{
|
||||
QJsonArray toolsArray;
|
||||
const auto &settings = Settings::toolsSettings();
|
||||
@ -100,6 +101,42 @@ QJsonArray ToolsFactory::getToolsDefinitions(LLMCore::ToolSchemaFormat format) c
|
||||
}
|
||||
|
||||
const auto requiredPerms = it.value()->requiredPermissions();
|
||||
|
||||
if (filter != LLMCore::RunToolsFilter::ALL) {
|
||||
bool matchesFilter = false;
|
||||
|
||||
switch (filter) {
|
||||
case LLMCore::RunToolsFilter::OnlyRead:
|
||||
if (requiredPerms == LLMCore::ToolPermission::None
|
||||
|| requiredPerms.testFlag(LLMCore::ToolPermission::FileSystemRead)) {
|
||||
matchesFilter = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case LLMCore::RunToolsFilter::OnlyWrite:
|
||||
if (requiredPerms.testFlag(LLMCore::ToolPermission::FileSystemWrite)) {
|
||||
matchesFilter = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case LLMCore::RunToolsFilter::OnlyNetworking:
|
||||
if (requiredPerms.testFlag(LLMCore::ToolPermission::NetworkAccess)) {
|
||||
matchesFilter = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case LLMCore::RunToolsFilter::ALL:
|
||||
matchesFilter = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!matchesFilter) {
|
||||
LOG_MESSAGE(QString("Tool '%1' skipped by tools filter")
|
||||
.arg(it.value()->name()));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
bool hasPermission = true;
|
||||
|
||||
if (requiredPerms.testFlag(LLMCore::ToolPermission::FileSystemRead)) {
|
||||
|
||||
@ -34,7 +34,9 @@ public:
|
||||
|
||||
QList<LLMCore::BaseTool *> getAvailableTools() const;
|
||||
LLMCore::BaseTool *getToolByName(const QString &name) const;
|
||||
QJsonArray getToolsDefinitions(LLMCore::ToolSchemaFormat format) const;
|
||||
QJsonArray getToolsDefinitions(
|
||||
LLMCore::ToolSchemaFormat format,
|
||||
LLMCore::RunToolsFilter filter = LLMCore::RunToolsFilter::ALL) const;
|
||||
QString getStringName(const QString &name) const;
|
||||
|
||||
private:
|
||||
|
||||
@ -127,13 +127,14 @@ void ToolsManager::executeNextTool(const QString &requestId)
|
||||
LOG_MESSAGE(QString("ToolsManager: Started async execution of %1").arg(tool.name));
|
||||
}
|
||||
|
||||
QJsonArray ToolsManager::getToolsDefinitions(LLMCore::ToolSchemaFormat format) const
|
||||
QJsonArray ToolsManager::getToolsDefinitions(
|
||||
LLMCore::ToolSchemaFormat format, LLMCore::RunToolsFilter filter) const
|
||||
{
|
||||
if (!m_toolsFactory) {
|
||||
return QJsonArray();
|
||||
}
|
||||
|
||||
return m_toolsFactory->getToolsDefinitions(format);
|
||||
return m_toolsFactory->getToolsDefinitions(format, filter);
|
||||
}
|
||||
|
||||
void ToolsManager::cleanupRequest(const QString &requestId)
|
||||
|
||||
@ -59,7 +59,9 @@ public:
|
||||
const QString &toolName,
|
||||
const QJsonObject &input);
|
||||
|
||||
QJsonArray getToolsDefinitions(LLMCore::ToolSchemaFormat format) const;
|
||||
QJsonArray getToolsDefinitions(
|
||||
LLMCore::ToolSchemaFormat format,
|
||||
LLMCore::RunToolsFilter filter = LLMCore::RunToolsFilter::ALL) const;
|
||||
void cleanupRequest(const QString &requestId);
|
||||
|
||||
ToolsFactory *toolsFactory() const;
|
||||
|
||||
Reference in New Issue
Block a user