Files
forge-tools-lexicomai/internal/tools/registry.go
T
2026-10-01 09:50:59 +07:00

53 lines
2.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 := &registrar{s: s, m: m}
registerInventory(r)
registerConfig(r)
registerLicense(r)
registerHealth(r)
registerInstall(r)
}