LemonCore.Config.Validator (lemon_core v0.1.0)

View Source

Validation utilities for Lemon configuration.

Provides functions to validate configuration values and return detailed error messages for invalid configurations.

Usage

config = LemonCore.Config.Modular.load()
case LemonCore.Config.Validator.validate(config) do
  :ok -> config
  {:error, errors} -> handle_errors(errors)
end

Validation Rules

  • Agent: valid model names, provider names
  • Gateway: valid port numbers, boolean flags
  • Telegram: token format, compaction settings
  • Discord: token format, guild/channel IDs
  • Web Dashboard: port, host, secret key base, access token
  • XMTP: wallet key, environment, API URL, max connections
  • Email: SMTP relay, inbound webhook, TLS/auth settings
  • Logging: valid log levels, writable paths
  • Providers: valid API key formats
  • Tools: valid timeout values
  • TUI: valid theme names

Summary

Functions

Validates a complete modular configuration.

Validates agent configuration.

Validates settings for deprecated sections, returning an ok/error tuple.

Validates Discord configuration.

Validates Email configuration.

Validates feature flag configuration.

Validates gateway configuration.

Validates legacy providers configuration (map format).

Validates logging configuration.

Validates providers configuration.

Validates queue configuration.

Validates Telegram configuration.

Validates tools configuration.

Validates TUI configuration.

Validates Web Dashboard configuration.

Validates XMTP configuration.

Functions

validate(config)

@spec validate(LemonCore.Config.Modular.t() | LemonCore.Config.t()) ::
  :ok | {:error, [String.t()]}

Validates a complete modular configuration.

Returns :ok if valid, or {:error, errors} with a list of validation errors.

Examples

iex> Validator.validate(config)
:ok

iex> Validator.validate(invalid_config)
{:error, [
  "agent.default_model: cannot be empty",
  "gateway.web_port: must be between 1 and 65535"
]}

validate_agent(agent, errors)

@spec validate_agent(map(), [String.t()]) :: [String.t()]

Validates agent configuration.

validate_deprecated_sections(settings)

@spec validate_deprecated_sections(map()) :: :ok | {:error, [String.t()]}

Validates settings for deprecated sections, returning an ok/error tuple.

Returns :ok if no deprecated sections are found, or {:error, errors}.

validate_discord_config(errors, discord)

@spec validate_discord_config([String.t()], map() | nil) :: [String.t()]

Validates Discord configuration.

validate_email_config(errors, email)

@spec validate_email_config([String.t()], map() | nil) :: [String.t()]

Validates Email configuration.

validate_features(features, errors)

@spec validate_features(LemonCore.Config.Features.t() | nil, [String.t()]) :: [
  String.t()
]

Validates feature flag configuration.

validate_gateway(gateway, errors)

@spec validate_gateway(map(), [String.t()]) :: [String.t()]

Validates gateway configuration.

validate_legacy_providers(providers, errors)

@spec validate_legacy_providers(map(), [String.t()]) :: [String.t()]

Validates legacy providers configuration (map format).

validate_logging(logging, errors)

@spec validate_logging(map(), [String.t()]) :: [String.t()]

Validates logging configuration.

validate_providers(providers, errors)

@spec validate_providers(map(), [String.t()]) :: [String.t()]

Validates providers configuration.

validate_queue_config(errors, queue)

@spec validate_queue_config([String.t()], map() | nil) :: [String.t()]

Validates queue configuration.

validate_telegram_config(errors, telegram)

@spec validate_telegram_config([String.t()], map() | nil) :: [String.t()]

Validates Telegram configuration.

validate_tools(tools, errors)

@spec validate_tools(map(), [String.t()]) :: [String.t()]

Validates tools configuration.

validate_tui(tui, errors)

@spec validate_tui(map(), [String.t()]) :: [String.t()]

Validates TUI configuration.

validate_web_dashboard_config(errors, web_dashboard)

@spec validate_web_dashboard_config([String.t()], map() | nil) :: [String.t()]

Validates Web Dashboard configuration.

validate_xmtp_config(errors, xmtp)

@spec validate_xmtp_config([String.t()], map() | nil) :: [String.t()]

Validates XMTP configuration.