1#ifndef YAZE_CLI_SERVICE_AGENT_TOOL_REGISTRY_H_
2#define YAZE_CLI_SERVICE_AGENT_TOOL_REGISTRY_H_
11#include "absl/status/status.h"
12#include "absl/status/statusor.h"
45 using HandlerFactory = std::function<std::unique_ptr<resources::CommandHandler>()>;
58 absl::StatusOr<std::unique_ptr<resources::CommandHandler>>
CreateHandler(
59 const std::string& tool_name)
const;
69 std::map<std::string, ToolEntry>
tools_;
73#define REGISTER_AGENT_TOOL(Name, Category, Desc, Usage, Examples, ReqRom, ReqProject, HandlerClass) \
74 static struct ToolReg_##HandlerClass { \
75 ToolReg_##HandlerClass() { \
76 yaze::cli::agent::ToolRegistry::Get().RegisterTool( \
77 {Name, Category, Desc, Usage, Examples, ReqRom, ReqProject}, \
78 []() { return std::make_unique<HandlerClass>(); } \
81 } tool_reg_##HandlerClass;