first commit

This commit is contained in:
Maksim Totmin
2026-10-01 09:50:59 +07:00
commit 4beb4b55d3
29 changed files with 3034 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
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)
}