C++ / fmt (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 9s
JS/TS / lint (pull_request) Successful in 9s
JS/TS / fmt (pull_request) Successful in 16s
C++ / clang-tidy (pull_request) Failing after 43s
Python / static (pull_request) Failing after 57s
Rust / fmt (pull_request) Successful in 1m30s
Rust / build (pull_request) Successful in 2m5s
Rust / clippy (pull_request) Successful in 1m55s
Python / verify (pull_request) Successful in 2m23s
56 lines
1.3 KiB
C++
56 lines
1.3 KiB
C++
#include "tool.hpp"
|
|
|
|
namespace ZShell::llm {
|
|
|
|
LlmTool::LlmTool(QObject* parent) : QObject(parent) {}
|
|
|
|
LlmTool::~LlmTool() = default;
|
|
|
|
void LlmTool::cancel() {}
|
|
|
|
QJsonObject LlmTool::specification() const {
|
|
QJsonObject function;
|
|
function[QStringLiteral("name")] = name();
|
|
function[QStringLiteral("description")] = description();
|
|
function[QStringLiteral("parameters")] = parameters();
|
|
QJsonObject spec;
|
|
spec[QStringLiteral("type")] = QStringLiteral("function");
|
|
spec[QStringLiteral("function")] = function;
|
|
return spec;
|
|
}
|
|
|
|
ToolRegistry::ToolRegistry(QObject* parent) : QObject(parent) {}
|
|
|
|
void ToolRegistry::setEnabled(bool value) {
|
|
if (m_enabled == value) return;
|
|
m_enabled = value;
|
|
Q_EMIT enabledChanged();
|
|
}
|
|
|
|
void ToolRegistry::registerTool(LlmTool* tool) {
|
|
if (!tool || m_tools.contains(tool)) return;
|
|
tool->setParent(this);
|
|
m_tools.append(tool);
|
|
}
|
|
|
|
LlmTool* ToolRegistry::tool(const QString& name) const {
|
|
for (const auto* tool : m_tools)
|
|
if (tool->name() == name) return const_cast<LlmTool*>(tool);
|
|
return nullptr;
|
|
}
|
|
|
|
QJsonArray ToolRegistry::specifications() const {
|
|
if (!m_enabled) return {};
|
|
QJsonArray specs;
|
|
for (const auto* tool : m_tools)
|
|
specs.append(tool->specification());
|
|
return specs;
|
|
}
|
|
|
|
void ToolRegistry::cancelAll() {
|
|
for (auto* tool : m_tools)
|
|
tool->cancel();
|
|
}
|
|
|
|
} // namespace ZShell::llm
|