Class: Ace::LLM::Atoms::ProviderConfigValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/llm/atoms/provider_config_validator.rb

Overview

ProviderConfigValidator validates provider configuration structure and content

Defined Under Namespace

Classes: ValidationResult

Constant Summary collapse

REQUIRED_FIELDS =

Required fields for any provider configuration

%w[name class gem].freeze
OPTIONAL_FIELDS =

Optional fields with expected types

{
  "models" => Array,
  "api_key" => [Hash, NilClass],
  "capabilities" => Array,
  "default_options" => Hash,
  "endpoint" => String,
  "version" => String,
  "aliases" => Hash
}.freeze
VALID_CAPABILITIES =

Valid capability values

%w[
  text_generation
  streaming
  function_calling
  vision
  embeddings
  code_generation
  chat_completion
].freeze

Instance Method Summary collapse

Instance Method Details

#validate(config) ⇒ ValidationResult

Validate a provider configuration

Parameters:

  • config (Hash)

    Provider configuration to validate

Returns:



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/ace/llm/atoms/provider_config_validator.rb', line 47

def validate(config)
  errors = []
  warnings = []

  # Check that config is a Hash
  unless config.is_a?(Hash)
    errors << "Configuration must be a Hash, got #{config.class}"
    return ValidationResult.new(false, errors, warnings)
  end

  # Validate required fields
  REQUIRED_FIELDS.each do |field|
    if config[field].nil? || config[field].to_s.strip.empty?
      errors << "Missing required field: '#{field}'"
    end
  end

  # Validate field types
  validate_field_types(config, errors, warnings)

  # Validate specific field content
  validate_name(config["name"], errors) if config["name"]
  validate_class(config["class"], errors) if config["class"]
  validate_gem(config["gem"], errors) if config["gem"]
  validate_models(config["models"], warnings) if config["models"]
  validate_api_key(config["api_key"], errors, warnings) if config["api_key"]
  validate_capabilities(config["capabilities"], warnings) if config["capabilities"]
  validate_default_options(config["default_options"], warnings) if config["default_options"]
  validate_aliases(config["aliases"], errors, warnings) if config["aliases"]

  # Return validation result
  ValidationResult.new(errors.empty?, errors, warnings)
end

#validate_batch(configs) ⇒ Hash

Validate a batch of configurations

Parameters:

  • configs (Array<Hash>)

    Array of provider configurations

Returns:

  • (Hash)

    Map of config name to validation result



84
85
86
87
88
89
90
91
92
93
# File 'lib/ace/llm/atoms/provider_config_validator.rb', line 84

def validate_batch(configs)
  results = {}

  configs.each do |config|
    name = config["name"] || "unnamed"
    results[name] = validate(config)
  end

  results
end