class Riffer::Rig::Stores::Recorder
Constants
- EXTENSION_NAME
Public Class Methods
Source
# File lib/riffer/rig/stores/recorder.rb, line 72 def self.extension(recorder) Riffer::Rig::Extension.new(EXTENSION_NAME) do |registrar| registrar.on(:stream) do |event| case event when Riffer::StreamEvents::SkillActivation then recorder.skill(event) end end end end
The extension rides the build as its last extension, so its :stream hook sees the model’s skill activations. Per build, unlike the extensions in the process registry: the hook closes over this build’s recorder. @rbs recorder: Riffer::Rig::Stores::Recorder @rbs return: Riffer::Rig::Extension
(store: Riffer::Rig::Stores::_Store, ?resumed: bool, ?clock: singleton(Time)) → void
Source
# File lib/riffer/rig/stores/recorder.rb, line 20 def initialize(store:, resumed: false, clock: Time) @store = store @resumed = resumed @clock = clock @runtime = nil @header_written = false @pending = [] @last_recorded_at = nil end
@rbs store: Riffer::Rig::Stores::_Store @rbs resumed: bool @rbs clock: singleton(Time) @rbs return: void
Public Instance Methods
(Riffer::Rig::Runtime runtime) → void
Source
# File lib/riffer/rig/stores/recorder.rb, line 32 def attach(runtime) @runtime = runtime @last_recorded_at = last_recorded_at(runtime.id) if @resumed runtime.on_message { |message| message(message) } runtime.on_model_change { |model| switched(model) } runtime.on_reasoning_change { |level| switched_reasoning(level) } end
@rbs runtime: Riffer::Rig::Runtime @rbs return: void
(Riffer::Messages::Base message) → void
Source
# File lib/riffer/rig/stores/recorder.rb, line 48 def message(message) # A job notification is no prompt to title the session from, so it waits # for the header like any other entry that lands before one. write_header(message) unless @header_written || message.is_a?(Riffer::Rig::Runtime::JobNotification) record(Riffer::Rig::Stores::MessageEntry.new(message: message.to_h, recorded_at: stamp)) end
@rbs message: Riffer::Messages::Base @rbs return: void
(Riffer::StreamEvents::SkillActivation event) → void
Source
# File lib/riffer/rig/stores/recorder.rb, line 42 def skill(event) record(Riffer::Rig::Stores::SkillEntry.new(skill: event.name, recorded_at: stamp)) end
@rbs event: Riffer::StreamEvents::SkillActivation @rbs return: void
(String model) → void
Source
# File lib/riffer/rig/stores/recorder.rb, line 57 def switched(model) record(Riffer::Rig::Stores::ModelEntry.new(model: model, recorded_at: stamp)) end
@rbs model: String @rbs return: void
(String level) → void
Source
# File lib/riffer/rig/stores/recorder.rb, line 63 def switched_reasoning(level) record(Riffer::Rig::Stores::ReasoningEntry.new(reasoning: level, recorded_at: stamp)) end
@rbs level: String @rbs return: void