Class: Roast::Cogs::Agent::Providers::Pi

Inherits:
Roast::Cogs::Agent::Provider show all
Defined in:
lib/roast/cogs/agent/providers/pi.rb,
lib/roast/cogs/agent/providers/pi/pi_invocation.rb,
lib/roast/cogs/agent/providers/pi/messages/tool_call_message.rb,
lib/roast/cogs/agent/providers/pi/messages/tool_result_message.rb

Defined Under Namespace

Modules: Messages Classes: Output, PiInvocation

Instance Method Summary collapse

Methods inherited from Roast::Cogs::Agent::Provider

#initialize

Constructor Details

This class inherits a constructor from Roast::Cogs::Agent::Provider

Instance Method Details

#invoke(input) ⇒ Object

: (Agent::Input) -> Agent::Output



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/roast/cogs/agent/providers/pi.rb', line 20

def invoke(input)
  invocations = [] #: Array[PiInvocation]
  input.prompts.each do |prompt|
    previous_session = invocations.last&.result&.session
    invocation = PiInvocation.new(
      @config,
      prompt,
      previous_session || input.session,
    )
    invocation.run!
    invocations << invocation
    break unless invocation.result.success
  end
  final_result = invocations.last.not_nil!.result
  final_result.stats = invocations.filter_map { |i| i.result.stats }.reduce(:+) if invocations.size > 1
  Output.new(final_result)
end