package tools import ( "forge-tools-lexicomai/internal/lexicomai" "git.totmin.ru/en2zmax/forge-toolkit" "github.com/modelcontextprotocol/go-sdk/mcp" ) // registrar — тонкая обёртка регистрации: держит сервер и Manager и даёт // доменам лаконичный API. Все схемы — ручные (объявлены явно). type registrar struct { s *mcp.Server m *lexicomai.Manager } // add регистрирует read-only/безопасный инструмент (probe не требуется). // inputSchema — уже собранная схема (см. schema(...) с required). func (r *registrar) add(name, desc string, inputSchema map[string]any, h mcp.ToolHandler) { r.s.AddTool(&mcp.Tool{ Name: name, Description: desc, InputSchema: inputSchema, }, h) } // addAction регистрирует side-effecting инструмент через permission-паттерны: // хост узнаёт паттерн ДО выполнения и применяет политику одобрения. Пока не // используется (M1 — только чтение), но готово для установки/конфига/лицензии // в следующих итерациях. func (r *registrar) addAction(name, desc string, inputSchema map[string]any, patterns toolkit.PatternsFn, h mcp.ToolHandler) { toolkit.RegisterPatternTool(r.s, &mcp.Tool{ Name: name, Description: desc, InputSchema: inputSchema, }, patterns, h) } // RegisterAll — единая точка регистрации инструментов модуля. // // Каждый следующий функциональный блок добавляется сюда одной строкой, // поэтому каркас разрастается предсказуемо. func RegisterAll(s *mcp.Server, m *lexicomai.Manager) { r := ®istrar{s: s, m: m} registerInventory(r) registerConfig(r) registerLicense(r) registerHealth(r) registerInstall(r) }