Files
omnichannel-configserver-mcp/internal/configserver/errors.go
T

47 lines
2.2 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 configserver
import (
"errors"
"fmt"
)
// Сентинельные ошибки домена. MCP-слой различает их, чтобы выбрать между
// recoverable-ответом (`errorResult`) и инфраструктурной Go-ошибкой.
var (
// ErrNoConfig — не найден ни один конфиг (ни `-config`, ни OMNI_CONFIG_DIR).
ErrNoConfig = errors.New("конфиг не найден: задайте -config или per-agent omnichannel-configserver-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...)}
}