Class: Legion::Gaia::Channels::CliAdapter

Inherits:
Legion::Gaia::ChannelAdapter show all
Defined in:
lib/legion/gaia/channels/cli_adapter.rb

Constant Summary collapse

CAPABILITIES =
%i[rich_text inline_code file_attachment syntax_highlighting].freeze

Instance Attribute Summary

Attributes inherited from Legion::Gaia::ChannelAdapter

#capabilities, #channel_id

Instance Method Summary collapse

Methods inherited from Legion::Gaia::ChannelAdapter

#start, #started?, #stop, #supports?

Constructor Details

#initializeCliAdapter

Returns a new instance of CliAdapter.



9
10
11
12
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 9

def initialize
  super(channel_id: :cli, capabilities: CAPABILITIES)
  @output_buffer = []
end

Instance Method Details

#deliver(rendered_content) ⇒ Object



31
32
33
34
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 31

def deliver(rendered_content)
  @output_buffer << rendered_content
  rendered_content
end

#drain_outputObject



36
37
38
39
40
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 36

def drain_output
  output = @output_buffer.dup
  @output_buffer.clear
  output
end

#last_outputObject



42
43
44
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 42

def last_output
  @output_buffer.last
end

#output_buffer_sizeObject



46
47
48
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 46

def output_buffer_size
  @output_buffer.size
end

#translate_inbound(raw_input) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 14

def translate_inbound(raw_input)
  text = raw_input.is_a?(String) ? raw_input : raw_input.to_s

  InputFrame.new(
    content: text,
    channel_id: :cli,
    content_type: :text,
    channel_capabilities: CAPABILITIES,
    device_context: { platform: :desktop, input_method: :keyboard },
    metadata: { source_type: :human_direct, salience: 0.9 }
  )
end

#translate_outbound(output_frame) ⇒ Object



27
28
29
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 27

def translate_outbound(output_frame)
  output_frame.content.to_s
end