Module: Riffer::Agent::Run

Extended by:
Run
Includes:
Messages::Converter
Included in:
Run
Defined in:
lib/riffer/agent/run.rb

Overview

Riffer::Agent::Run is the generation loop. A pure module of functions over an agent — Agent owns every per-call value (provider, model, tools, tool runtime, structured output, session, context); Run just orchestrates.

Tools and user code see the agent’s context (a Riffer::Agent::Context) unchanged through the loop, so downstream tool runtimes can read caller-provided keys via context[:agent] / context.dig(:key), or the framework built-ins via context.skills. Cumulative token usage is updated into agent.context.token_usage as the loop progresses.

Riffer::Agent::Run.generate(agent: my_agent, prompt: "Hello")
Riffer::Agent::Run.stream(agent: my_agent, prompt: "Hello")

Instance Method Summary collapse

Methods included from Messages::Converter

#convert_to_file_part, #convert_to_message_object

Instance Method Details

#generate(agent:, prompt: nil, files: nil) ⇒ Object

Runs the generate loop for the given agent. See Riffer::Agent#generate for prompt/files semantics.

– : (agent: Riffer::Agent, ?prompt: String?, ?files: Array[Hash[Symbol, untyped] | Riffer::Messages::FilePart]?) -> Riffer::Agent::Response



27
28
29
30
# File 'lib/riffer/agent/run.rb', line 27

def generate(agent:, prompt: nil, files: nil)
  append_user_message(agent, prompt, files: files)
  run_loop(agent)
end

#stream(agent:, prompt: nil, files: nil) ⇒ Object

Runs the streaming loop for the given agent. See Riffer::Agent#stream for prompt/files semantics.

– : (agent: Riffer::Agent, ?prompt: String?, ?files: Array[Hash[Symbol, untyped] | Riffer::Messages::FilePart]?) -> Enumerator[Riffer::StreamEvents::Base, void]



37
38
39
40
# File 'lib/riffer/agent/run.rb', line 37

def stream(agent:, prompt: nil, files: nil)
  append_user_message(agent, prompt, files: files)
  Enumerator.new { |stream_yielder| run_loop(agent, stream_yielder: stream_yielder) }
end