Class: Legion::Gaia::Channels::CliAdapter
Constant Summary
collapse
- CAPABILITIES =
%i[rich_text inline_code file_attachment syntax_highlighting].freeze
Legion::Gaia::ChannelAdapter::DIRECT_ADDRESS_PATTERN
Instance Attribute Summary
#capabilities, #channel_id
Class Method Summary
collapse
Instance Method Summary
collapse
inherited, register_adapter, #start, #started?, #stop, #supports?
Constructor Details
Returns a new instance of CliAdapter.
15
16
17
18
19
|
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 15
def initialize
super(channel_id: :cli, capabilities: CAPABILITIES)
@output_buffer = []
@mutex = Mutex.new
end
|
Class Method Details
.from_settings(settings) ⇒ Object
9
10
11
12
13
|
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 9
def self.from_settings(settings)
return nil if settings&.dig(:channels, :cli, :enabled) == false
new
end
|
Instance Method Details
#deliver(rendered_content) ⇒ Object
38
39
40
41
|
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 38
def deliver(rendered_content)
@mutex.synchronize { @output_buffer << rendered_content }
rendered_content
end
|
#drain_output ⇒ Object
43
44
45
46
47
48
49
|
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 43
def drain_output
@mutex.synchronize do
output = @output_buffer.dup
@output_buffer.clear
output
end
end
|
#last_output ⇒ Object
51
52
53
|
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 51
def last_output
@mutex.synchronize { @output_buffer.last }
end
|
#output_buffer_size ⇒ Object
55
56
57
|
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 55
def output_buffer_size
@mutex.synchronize { @output_buffer.size }
end
|
#translate_inbound(raw_input) ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 21
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, direct_address: direct_address?(text) }
)
end
|
#translate_outbound(output_frame) ⇒ Object
34
35
36
|
# File 'lib/legion/gaia/channels/cli_adapter.rb', line 34
def translate_outbound(output_frame)
output_frame.content.to_s
end
|