yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
tool_registry.cc
Go to the documentation of this file.
2
3#include "absl/strings/str_cat.h"
4
5namespace yaze {
6namespace cli {
7namespace agent {
8
10 static ToolRegistry instance;
11 return instance;
12}
13
15 tools_[def.name] = {def, std::move(factory)};
16}
17
18std::vector<ToolDefinition> ToolRegistry::GetAllTools() const {
19 std::vector<ToolDefinition> defs;
20 defs.reserve(tools_.size());
21 for (const auto& [name, entry] : tools_) {
22 defs.push_back(entry.def);
23 }
24 return defs;
25}
26
27std::optional<ToolDefinition> ToolRegistry::GetToolDefinition(const std::string& name) const {
28 auto it = tools_.find(name);
29 if (it != tools_.end()) {
30 return it->second.def;
31 }
32 return std::nullopt;
33}
34
35std::vector<ToolDefinition> ToolRegistry::GetToolsByCategory(const std::string& category) const {
36 std::vector<ToolDefinition> defs;
37 for (const auto& [name, entry] : tools_) {
38 if (entry.def.category == category) {
39 defs.push_back(entry.def);
40 }
41 }
42 return defs;
43}
44
45absl::StatusOr<std::unique_ptr<resources::CommandHandler>>
46ToolRegistry::CreateHandler(const std::string& tool_name) const {
47 auto it = tools_.find(tool_name);
48 if (it == tools_.end()) {
49 return absl::NotFoundError(absl::StrCat("Tool not found: ", tool_name));
50 }
51 return it->second.factory();
52}
53
54} // namespace agent
55} // namespace cli
56} // namespace yaze
Centralized registry for all agent tools.
void RegisterTool(const ToolDefinition &def, HandlerFactory factory)
std::function< std::unique_ptr< resources::CommandHandler >()> HandlerFactory
std::optional< ToolDefinition > GetToolDefinition(const std::string &name) const
std::map< std::string, ToolEntry > tools_
static ToolRegistry & Get()
std::vector< ToolDefinition > GetToolsByCategory(const std::string &category) const
std::vector< ToolDefinition > GetAllTools() const
absl::StatusOr< std::unique_ptr< resources::CommandHandler > > CreateHandler(const std::string &tool_name) const
Metadata describing a tool for the LLM.