Initial commit: omnichannel-mcp — MCP-сервер управления платформой Omnichannel
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package configserver
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// Сентинельные ошибки домена. MCP-слой различает их, чтобы выбрать между
|
||||
// recoverable-ответом (`errorResult`) и инфраструктурной Go-ошибкой.
|
||||
var (
|
||||
// ErrNoConfig — не найден ни один конфиг (ни `-config`, ни OMNI_CONFIG_DIR).
|
||||
ErrNoConfig = errors.New("конфиг не найден: задайте -config или per-agent omnichannel-mcp.json")
|
||||
// ErrReadOnly — модуль в режиме только-чтение, мутация запрещена.
|
||||
ErrReadOnly = errors.New("модуль в режиме read_only: изменяющие инструменты отключены")
|
||||
// ErrConfirmRequired — разрушительная операция без confirm=\"true\".
|
||||
ErrConfirmRequired = errors.New("операция требует confirm=\"true\"")
|
||||
// ErrNoFrontRoots — не заданы front_roots, загрузка фронта запрещена.
|
||||
ErrNoFrontRoots = errors.New("загрузка фронта выключена: не заданы front_roots в конфиге")
|
||||
)
|
||||
|
||||
// APIError — доменная ошибка API config_server (4xx/5xx с телом {"error": ...}).
|
||||
// Такие ошибки показываются модели (recoverable), чтобы она могла исправиться.
|
||||
type APIError struct {
|
||||
Status int
|
||||
Message string
|
||||
}
|
||||
|
||||
func (e *APIError) Error() string {
|
||||
if e.Message == "" {
|
||||
return fmt.Sprintf("config_server вернул HTTP %d", e.Status)
|
||||
}
|
||||
return fmt.Sprintf("config_server (HTTP %d): %s", e.Status, e.Message)
|
||||
}
|
||||
|
||||
// ValidationError — доменная ошибка модуля (невалидный путь, лимит, политика).
|
||||
// Тоже recoverable: модель может исправить аргументы.
|
||||
type ValidationError struct {
|
||||
Msg string
|
||||
}
|
||||
|
||||
func (e *ValidationError) Error() string { return e.Msg }
|
||||
|
||||
// validationErrorf создаёт ValidationError с форматированием.
|
||||
func validationErrorf(format string, args ...any) error {
|
||||
return &ValidationError{Msg: fmt.Sprintf(format, args...)}
|
||||
}
|
||||
Reference in New Issue
Block a user