class Riffer::Guardrails::Runner
rbs_inline: enabled
Attributes
Public Class Methods
Source
# File lib/riffer/guardrails/runner.rb, line 15 def initialize(guardrail_configs, phase:, context: nil, tags: {}) @guardrail_configs = guardrail_configs @phase = phase @context = context @tags = tags end
Public Instance Methods
Source
# File lib/riffer/guardrails/runner.rb, line 24 def run(data, messages: nil) current_data = data modifications = [] #: Array[Riffer::Guardrails::Modification] guardrail_configs.each do |config| guardrail = instantiate_guardrail(config) result = execute_guardrail(guardrail, current_data, messages: messages) if result.block? tripwire = Riffer::Guardrails::Tripwire.new( reason: result.data, guardrail: guardrail.class, phase: phase, metadata: result.metadata, ) return [current_data, tripwire, modifications] end if result.transform? modifications << Riffer::Guardrails::Modification.new( guardrail: guardrail.class, phase: phase, message_indices: detect_changed_indices(current_data, result.data), ) end current_data = result.data end [current_data, nil, modifications] end