Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/generators/ruby_llm/chat_ui/chat_ui_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ def create_views
template 'views/messages/_tool_calls.html.erb',
"app/views/#{message_view_path}/_tool_calls.html.erb"
template 'views/messages/_content.html.erb', "app/views/#{message_view_path}/_content.html.erb"
template 'views/messages/_content_raw.html.erb', "app/views/#{message_view_path}/_content_raw.html.erb"
template 'views/messages/_form.html.erb', "app/views/#{message_view_path}/_form.html.erb"
template 'views/messages/create.turbo_stream.erb', "app/views/#{message_view_path}/create.turbo_stream.erb"

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<details style="font-family: monospace;">
<summary style="cursor: pointer; user-select: none;">
<span style="color:#666;">
<%%= begin
keys = content.keys
shown = keys.first(4).map do |k|
v = content[k]
pv =
case v
when Hash then "{…}"
when Array then v.all? { |e| e.is_a?(Hash) } ? "[{…}, …]" : "[…]"
when NilClass then "nil"
when String then v.length > 30 ? %("#{v.truncate(30, omission: "…")}") : v.inspect
else v.to_s
end
"#{k}: #{pv}"
end
shown << "…" if keys.size > 4
"{ " + shown.join(", ") + " }"
rescue StandardError => e
"{…}"
end
%>
</span>
</summary>

<pre style="padding: 8px; border-radius: 4px; background: #eee; overflow: auto;"><%%= JSON.pretty_generate(content) -%></pre>
</details>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,13 @@
<div style="font-weight: bold; margin-bottom: 5px;">
<%%= <%= message_model_name.demodulize.underscore %>.role&.capitalize %>
</div>
<div id="<%= message_variable_name %>_<%%= <%= message_model_name.demodulize.underscore %>.id %>_content" style="white-space: pre-wrap;"><%%= <%= message_model_name.demodulize.underscore %>.content %></div>
<%% if <%= message_model_name.demodulize.underscore %>.content.present? %>
<div id="<%= message_variable_name %>_<%%= <%= message_model_name.demodulize.underscore %>.id %>_content" style="white-space: pre-wrap;"><%%= <%= message_model_name.demodulize.underscore %>.content %></div>
<%% elsif <%= message_model_name.demodulize.underscore %>.content_raw.present? && <%= message_model_name.demodulize.underscore %>.content_raw.is_a?(Hash) %>
<div id="<%= message_variable_name %>_<%%= <%= message_model_name.demodulize.underscore %>.id %>_content">
<%%= render "<%= message_model_name.underscore.pluralize %>/content_raw", content: <%= message_model_name.demodulize.underscore %>.content_raw %>
</div>
<%% end %>
<%% if <%= message_model_name.demodulize.underscore %>.tool_call? %>
<%%= render "<%= message_model_name.underscore.pluralize %>/tool_calls", <%= message_model_name.demodulize.underscore %>: <%= message_model_name.demodulize.underscore %> %>
<%% end %>
Expand Down
2 changes: 2 additions & 0 deletions spec/ruby_llm/generators/chat_ui_generator_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
# Message views
expect(File.exist?('app/views/messages/_message.html.erb')).to be true
expect(File.exist?('app/views/messages/_content.html.erb')).to be true
expect(File.exist?('app/views/messages/_content_raw.html.erb')).to be true
expect(File.exist?('app/views/messages/_form.html.erb')).to be true
expect(File.exist?('app/views/messages/create.turbo_stream.erb')).to be true

Expand Down Expand Up @@ -168,6 +169,7 @@
# Message views
expect(File.exist?('app/views/llm/messages/_message.html.erb')).to be true
expect(File.exist?('app/views/llm/messages/_content.html.erb')).to be true
expect(File.exist?('app/views/llm/messages/_content_raw.html.erb')).to be true
expect(File.exist?('app/views/llm/messages/_form.html.erb')).to be true
expect(File.exist?('app/views/llm/messages/create.turbo_stream.erb')).to be true

Expand Down