class RailsAiAdmin::Assistant::Transcript
Display entries for one chat, rebuilt per request. Stored tool output is never shown as is: record references are re-read through current grants and Surfaces are restored through the admin scope and policy.
Constants
- ACTIVITY
- Entry
- FAILED_ACTIVITY
-
The line for a call whose stored result is an error (RAA-018).
- FAILURE_REASONS
- LINK_LIMIT
- Link
- MESSAGE_LIMIT
Public Class Methods
Source
# File lib/rails_ai_admin/assistant/transcript.rb, line 41 def initialize(context, chat) @context, @chat = context, chat end
Public Instance Methods
Source
# File lib/rails_ai_admin/assistant/transcript.rb, line 45 def entries continuation_ids = @chat.turns.where(kind: "continuation").where.not(user_message_id: nil).pluck(:user_message_id).to_set messages = @chat.messages.where.not(role: "system").includes(:ruby_llm_tool_calls, :ruby_llm_parent_tool_call) .reorder(id: :desc).limit(MESSAGE_LIMIT).to_a.reverse @results = messages.select { |message| message.role == "tool" && message.ruby_llm_parent_tool_call } .to_h { |message| [ message.ruby_llm_parent_tool_call.id, message.content ] } persisted = messages.flat_map do |message| case message.role when "user" [ entry(continuation_ids.include?(message.id) ? :continuation : :user, message.content, message) ] when "assistant" activity = message.ruby_llm_tool_calls.map { |call| entry(:activity, activity_text(call), message) } message.content.present? ? activity + [ entry(:assistant, message.content, message) ] : activity when "tool" then tool_entries(message) else [] end end persisted + waiting end