class Riffer::Rig::Runtime::RequestGuardrail
riffer runs its before guardrails once per run, just ahead of the first request; the Runtimeโs on_message observer covers the requests after it.
Public Class Methods
(hooks: Riffer::Rig::Runtime::Hooks) → void
Source
# File lib/riffer/rig/runtime/request_guardrail.rb, line 10 def initialize(hooks:) super() @hooks = hooks end
@rbs hooks: Riffer::Rig::Runtime::Hooks @rbs return: void
Calls superclass method
Public Instance Methods
(Array[Riffer::Messages::Base] messages, context: untyped) → Riffer::Guardrails::Result
Source
# File lib/riffer/rig/runtime/request_guardrail.rb, line 18 def process_input(messages, context:) verdict = Thread.handle_interrupt(Riffer::Rig::Runtime::Abort::SHIELD) { @hooks.before_request(messages) } return block(verdict.reason) if verdict.is_a?(Riffer::Rig::Runtime::Blocked) verdict.equal?(messages) ? pass(messages) : transform(verdict.dup) end
@rbs messages: Array @rbs context: untyped @rbs return: Riffer::Guardrails::Result