Class: SolidAgent::AgentManifest::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_agent/agent_manifest/validator.rb

Overview

Validator provides comprehensive validation for Manifests.

Goes beyond ActiveModel validations to check semantic correctness, tool definitions, schema validity, and cross-field consistency.

Examples:

Validate a manifest

errors = Validator.validate(manifest)
if errors.empty?
  puts "Manifest is valid!"
else
  errors.each { |e| puts "Error: #{e}" }
end

Check validity

Validator.valid?(manifest) # => true/false

Validate and raise

Validator.validate!(manifest) # raises ValidationError if invalid

Constant Summary collapse

KNOWN_PROVIDERS =

Known model providers for validation

%w[anthropic openai google meta cohere mistral].freeze
RESERVED_NAMES =

Reserved names that cannot be used

%w[agent manifest config settings default system].freeze

Class Method Summary collapse

Class Method Details

.valid?(manifest, strict: false) ⇒ Boolean

Check if a manifest is valid

Parameters:

  • manifest (Manifest)

    Manifest to validate

  • strict (Boolean) (defaults to: false)

    Enable strict validation

Returns:

  • (Boolean)


58
59
60
# File 'lib/solid_agent/agent_manifest/validator.rb', line 58

def valid?(manifest, strict: false)
  validate(manifest, strict: strict).empty?
end

.validate(manifest, strict: false) ⇒ Array<String>

Validate a manifest and return array of error messages

Parameters:

  • manifest (Manifest)

    Manifest to validate

  • strict (Boolean) (defaults to: false)

    Enable strict validation

Returns:

  • (Array<String>)

    Error messages (empty if valid)



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/solid_agent/agent_manifest/validator.rb', line 37

def validate(manifest, strict: false)
  errors = []

  errors.concat(validate_meta(manifest))
  errors.concat(validate_model(manifest))
  errors.concat(validate_tools(manifest))
  errors.concat(validate_resources(manifest))
  errors.concat(validate_schemas(manifest))
  errors.concat(validate_extensions(manifest))
  errors.concat(validate_content(manifest))

  errors.concat(validate_strict(manifest)) if strict

  errors
end

.validate!(manifest, strict: false) ⇒ Manifest

Validate and raise if invalid

Parameters:

  • manifest (Manifest)

    Manifest to validate

  • strict (Boolean) (defaults to: false)

    Enable strict validation

Returns:

Raises:



68
69
70
71
72
73
# File 'lib/solid_agent/agent_manifest/validator.rb', line 68

def validate!(manifest, strict: false)
  errors = validate(manifest, strict: strict)
  raise ValidationError, "Invalid manifest: #{errors.join('; ')}" if errors.any?

  manifest
end