Module: ConsoleAgent::SessionLogger
- Defined in:
- lib/console_agent/session_logger.rb
Class Method Summary collapse
Class Method Details
.find_by_slack_thread(thread_ts) ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/console_agent/session_logger.rb', line 36 def find_by_slack_thread(thread_ts) return nil unless ConsoleAgent.configuration.session_logging return nil unless table_exists? session_class.where(slack_thread_ts: thread_ts).order(created_at: :desc).first rescue => e ConsoleAgent.logger.warn("ConsoleAgent: session lookup failed: #{e.class}: #{e.}") nil end |
.log(attrs) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/console_agent/session_logger.rb', line 4 def log(attrs) return unless ConsoleAgent.configuration.session_logging return unless table_exists? create_attrs = { query: attrs[:query], conversation: Array(attrs[:conversation]).to_json, input_tokens: attrs[:input_tokens] || 0, output_tokens: attrs[:output_tokens] || 0, user_name: attrs[:user_name] || current_user_name, mode: attrs[:mode].to_s, name: attrs[:name], code_executed: attrs[:code_executed], code_output: attrs[:code_output], code_result: attrs[:code_result], console_output: attrs[:console_output], executed: attrs[:executed] || false, provider: ConsoleAgent.configuration.provider.to_s, model: ConsoleAgent.configuration.resolved_model, duration_ms: attrs[:duration_ms], created_at: Time.respond_to?(:current) ? Time.current : Time.now } create_attrs[:slack_thread_ts] = attrs[:slack_thread_ts] if attrs[:slack_thread_ts] record = session_class.create!(create_attrs) record.id rescue => e msg = "ConsoleAgent: session logging failed: #{e.class}: #{e.}" $stderr.puts "\e[33m#{msg}\e[0m" if $stderr.respond_to?(:puts) ConsoleAgent.logger.warn(msg) nil end |
.update(id, attrs) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/console_agent/session_logger.rb', line 45 def update(id, attrs) return unless id return unless ConsoleAgent.configuration.session_logging return unless table_exists? updates = {} updates[:conversation] = Array(attrs[:conversation]).to_json if attrs.key?(:conversation) updates[:input_tokens] = attrs[:input_tokens] if attrs.key?(:input_tokens) updates[:output_tokens] = attrs[:output_tokens] if attrs.key?(:output_tokens) updates[:code_executed] = attrs[:code_executed] if attrs.key?(:code_executed) updates[:code_output] = attrs[:code_output] if attrs.key?(:code_output) updates[:code_result] = attrs[:code_result] if attrs.key?(:code_result) updates[:console_output] = attrs[:console_output] if attrs.key?(:console_output) updates[:executed] = attrs[:executed] if attrs.key?(:executed) updates[:duration_ms] = attrs[:duration_ms] if attrs.key?(:duration_ms) updates[:name] = attrs[:name] if attrs.key?(:name) session_class.where(id: id).update_all(updates) unless updates.empty? rescue => e msg = "ConsoleAgent: session update failed: #{e.class}: #{e.}" $stderr.puts "\e[33m#{msg}\e[0m" if $stderr.respond_to?(:puts) ConsoleAgent.logger.warn(msg) nil end |