Class: Rixie::CLI::Renderer
- Inherits:
-
Object
- Object
- Rixie::CLI::Renderer
- Defined in:
- lib/rixie/cli/renderer.rb
Instance Method Summary collapse
- #accent(text) ⇒ Object
- #agent_error(message) ⇒ Object
- #agent_interrupted ⇒ Object
-
#agent_prefix ⇒ Object
– Agent output –.
- #bold(text) ⇒ Object
- #error(message) ⇒ Object
- #goodbye ⇒ Object
- #heading(text) ⇒ Object
- #info(label, value) ⇒ Object
-
#initialize(terminal: Terminal.new) ⇒ Renderer
constructor
A new instance of Renderer.
- #input_prompt(label) ⇒ Object
- #list(items, selected: nil) ⇒ Object
- #newline ⇒ Object
- #print_agent_prefix ⇒ Object
- #prompt(strategy_name) ⇒ Object
- #render_markdown(text) ⇒ Object
- #render_thought(text) ⇒ Object
- #render_tool_call(thought) ⇒ Object
- #render_tool_call_end(tool_call, result) ⇒ Object
- #render_tool_call_start(tool_call) ⇒ Object
-
#start_spinner ⇒ Object
– Spinner –.
- #stop_spinner ⇒ Object
- #stream_token(delta) ⇒ Object
-
#success(message) ⇒ Object
– General output –.
- #text(message) ⇒ Object
- #unknown_command(name) ⇒ Object
- #welcome(version:, provider:, model:) ⇒ Object
Constructor Details
Instance Method Details
#accent(text) ⇒ Object
85 |
# File 'lib/rixie/cli/renderer.rb', line 85 def accent(text) = @terminal.accent(text) |
#agent_error(message) ⇒ Object
61 62 63 64 |
# File 'lib/rixie/cli/renderer.rb', line 61 def agent_error() newline puts "#{@terminal.error("Error:")} #{}" end |
#agent_interrupted ⇒ Object
66 67 68 69 |
# File 'lib/rixie/cli/renderer.rb', line 66 def agent_interrupted newline puts @terminal.warn("Interrupted.") end |
#agent_prefix ⇒ Object
– Agent output –
108 109 110 |
# File 'lib/rixie/cli/renderer.rb', line 108 def agent_prefix "#{@terminal.bold("Agent:")} " end |
#bold(text) ⇒ Object
83 |
# File 'lib/rixie/cli/renderer.rb', line 83 def bold(text) = @terminal.bold(text) |
#error(message) ⇒ Object
21 22 23 |
# File 'lib/rixie/cli/renderer.rb', line 21 def error() puts_indented(@terminal.error()) end |
#goodbye ⇒ Object
52 53 54 55 |
# File 'lib/rixie/cli/renderer.rb', line 52 def goodbye newline puts @terminal.success("Goodbye!") end |
#heading(text) ⇒ Object
29 30 31 |
# File 'lib/rixie/cli/renderer.rb', line 29 def heading(text) puts_indented(@terminal.bold(text)) end |
#info(label, value) ⇒ Object
25 26 27 |
# File 'lib/rixie/cli/renderer.rb', line 25 def info(label, value) puts_indented("#{@terminal.bold("#{label}:")} #{value}") end |
#input_prompt(label) ⇒ Object
87 88 89 |
# File 'lib/rixie/cli/renderer.rb', line 87 def input_prompt(label) " #{@terminal.bold("#{label}:")} " end |
#list(items, selected: nil) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/rixie/cli/renderer.rb', line 33 def list(items, selected: nil) items.each_with_index do |item, i| marker = (item == selected) ? " #{@terminal.success("✓")}" : "" puts_indented("#{@terminal.accent("#{i + 1}.")} #{item}#{marker}", level: 2) end end |
#newline ⇒ Object
71 72 73 |
# File 'lib/rixie/cli/renderer.rb', line 71 def newline puts "\n" end |
#print_agent_prefix ⇒ Object
112 113 114 |
# File 'lib/rixie/cli/renderer.rb', line 112 def print_agent_prefix print agent_prefix end |
#prompt(strategy_name) ⇒ Object
75 76 77 78 79 80 81 |
# File 'lib/rixie/cli/renderer.rb', line 75 def prompt(strategy_name) if strategy_name == "simple" "#{@terminal.accent(">")} " else "#{@terminal.accent(">")} #{@terminal.secondary("(#{strategy_name})")} " end end |
#render_markdown(text) ⇒ Object
96 97 98 |
# File 'lib/rixie/cli/renderer.rb', line 96 def render_markdown(text) puts Markdown.render(text, terminal: @terminal) end |
#render_thought(text) ⇒ Object
100 101 102 103 104 |
# File 'lib/rixie/cli/renderer.rb', line 100 def render_thought(text) text.each_line do |line| puts_indented(@terminal.secondary(line.chomp)) end end |
#render_tool_call(thought) ⇒ Object
116 117 118 119 120 121 122 123 124 |
# File 'lib/rixie/cli/renderer.rb', line 116 def render_tool_call(thought) thought.tool_calls.each_with_index do |tc, i| result = thought.tool_results[i] frame(fmt("{{*}} Tool: #{@terminal.bold(tc.name)}"), color: :cyan) do format_tool_args(tc.arguments).each { |line| puts line } puts_indented("#{@terminal.bold("Result:")} #{result.content.to_s.lines.first&.chomp}") end end end |
#render_tool_call_end(tool_call, result) ⇒ Object
130 131 132 133 134 135 |
# File 'lib/rixie/cli/renderer.rb', line 130 def render_tool_call_end(tool_call, result) frame(fmt("{{*}} Tool: #{@terminal.bold(tool_call.name)}"), color: :cyan) do format_tool_args(tool_call.arguments).each { |line| puts line } puts_indented("#{@terminal.bold("Result:")} #{result.content.to_s.lines.first&.chomp}") end end |
#render_tool_call_start(tool_call) ⇒ Object
126 127 128 |
# File 'lib/rixie/cli/renderer.rb', line 126 def render_tool_call_start(tool_call) puts_indented("#{@terminal.accent("⠋")} Calling #{@terminal.bold(tool_call.name)}...") end |
#start_spinner ⇒ Object
– Spinner –
139 |
# File 'lib/rixie/cli/renderer.rb', line 139 def start_spinner = @spinner.start |
#stop_spinner ⇒ Object
141 |
# File 'lib/rixie/cli/renderer.rb', line 141 def stop_spinner = @spinner.stop |
#stream_token(delta) ⇒ Object
91 92 93 94 |
# File 'lib/rixie/cli/renderer.rb', line 91 def stream_token(delta) print delta $stdout.flush end |
#success(message) ⇒ Object
– General output –
17 18 19 |
# File 'lib/rixie/cli/renderer.rb', line 17 def success() puts_indented("#{@terminal.success("✓")} #{}") end |
#text(message) ⇒ Object
40 41 42 |
# File 'lib/rixie/cli/renderer.rb', line 40 def text() puts_indented() end |
#unknown_command(name) ⇒ Object
57 58 59 |
# File 'lib/rixie/cli/renderer.rb', line 57 def unknown_command(name) puts "#{@terminal.error("Unknown command:")} /#{name}" end |
#welcome(version:, provider:, model:) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/rixie/cli/renderer.rb', line 44 def welcome(version:, provider:, model:) frame("Rixie v#{version}", color: :red) do info("Provider", provider) info("Model", model) text("Type #{@terminal.warn("exit")} or press #{@terminal.warn("Ctrl+C")} to quit.") end end |