Class: RosettAi::Policy::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/rosett_ai/policy/validator.rb

Overview

Validates policy files against the policy JSON Schema.

Sanitizes all string values (ANSI/control char stripping) before schema validation to prevent injection via policy definitions.

Author:

  • hugo

  • claude

Constant Summary collapse

SCHEMA_PATH =
File.expand_path('../../../conf/schemas/policy_schema.json', __dir__)

Instance Method Summary collapse

Instance Method Details

#valid?(data) ⇒ Boolean

Returns true if data passes schema validation.

Returns:

  • (Boolean)

    true if data passes schema validation



30
31
32
# File 'lib/rosett_ai/policy/validator.rb', line 30

def valid?(data)
  validate(data).empty?
end

#validate(data) ⇒ Array<String>

Returns validation errors (empty if valid).

Returns:

  • (Array<String>)

    validation errors (empty if valid)



21
22
23
24
25
26
27
# File 'lib/rosett_ai/policy/validator.rb', line 21

def validate(data)
  sanitized = RosettAi::TextSanitizer.sanitize_for_display(data)
  schema = JSONSchemer.schema(Pathname.new(SCHEMA_PATH))
  schema.validate(sanitized).map do |error|
    "#{error['data_pointer']}: #{error['type']}"
  end
end