first commit
This commit is contained in:
@@ -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 := ®istrar{s: s, m: m}
|
||||
|
||||
registerInventory(r)
|
||||
registerConfig(r)
|
||||
registerLicense(r)
|
||||
registerHealth(r)
|
||||
registerInstall(r)
|
||||
}
|
||||
Reference in New Issue
Block a user