Class: Brute::MessageTransport

Inherits:
Object
  • Object
show all
Defined in:
lib/brute/message_transport.rb,
lib/brute/message_transport/llm.rb,
lib/brute/message_transport/openai.rb,
lib/brute/message_transport/ruby_llm.rb,
lib/brute/message_transport/anthropic.rb,
lib/brute/message_transport/open_router.rb,
lib/brute/message_transport/ruby_open_ai.rb

Defined Under Namespace

Classes: Anthropic, LLM, OpenAI, OpenRouter, RubyLLM, RubyOpenAI

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(result) ⇒ MessageTransport

Returns a new instance of MessageTransport.



24
25
26
# File 'lib/brute/message_transport.rb', line 24

def initialize(result)
  @result = result
end

Class Method Details

.dump(message) ⇒ Object

Outbound: one Brute::Message in the library's format. Identity here.



15
16
17
# File 'lib/brute/message_transport.rb', line 15

def self.dump(message)
  message
end

.dump_all(messages) ⇒ Object

Outbound: the whole log in the library's format.



20
21
22
# File 'lib/brute/message_transport.rb', line 20

def self.dump_all(messages)
  messages.map { |message| dump(message) }
end

.wrap_each(result, &block) ⇒ Object

Convenience: Brute::MessageTransport.wrap_each(result) { |m| ... }



10
11
12
# File 'lib/brute/message_transport.rb', line 10

def self.wrap_each(result, &block)
  new(result).wrap_each(&block)
end

Instance Method Details

#messagesObject

The result normalized to a flat list of the library's messages. A single message, an array, or anything transcript-shaped (responds to #messages).



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/brute/message_transport.rb', line 40

def messages
  if @result.is_a?(Array)
    @result.compact
  else
    if @result.respond_to?(:messages)
      @result.messages
    else
      [@result].compact
    end
  end
end

#wrap_eachObject



28
29
30
31
32
33
34
35
# File 'lib/brute/message_transport.rb', line 28

def wrap_each
  if block_given?
    messages.each { |message| yield wrap(message) }
  else
    # https://docs.ruby-lang.org/en/4.0/Object.html#method-i-enum_for
    enum_for(:wrap_each)
  end
end