Class: ConversationContext
- Defined in:
- lib/generators/active_matrix/install/templates/conversation_context.rb
Constant Summary collapse
- MAX_HISTORY_SIZE =
Configuration
20
Class Method Summary collapse
Instance Method Summary collapse
-
#add_message(message_data) ⇒ Object
Add a message to the history.
-
#cache_key ⇒ Object
Cache integration.
-
#prune_history! ⇒ Object
Clear old messages but keep context.
-
#recent_messages(limit = 10) ⇒ Object
Get recent messages.
- #write_to_cache ⇒ Object
Class Method Details
.cleanup_stale! ⇒ Object
69 70 71 |
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 69 def self.cleanup_stale! stale.destroy_all end |
Instance Method Details
#add_message(message_data) ⇒ Object
Add a message to the history
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 19 def () = ['messages'] || [] # Add new message << { 'event_id' => [:event_id], 'sender' => [:sender], 'content' => [:content], 'timestamp' => [:timestamp] || Time.current.to_i } # Keep only recent messages = .last(MAX_HISTORY_SIZE) # Update record self. = { 'messages' => } self. = Time.current self. = .size save! # Update cache write_to_cache end |
#cache_key ⇒ Object
Cache integration
57 58 59 |
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 57 def cache_key "conversation/#{matrix_agent_id}/#{user_id}/#{room_id}" end |
#prune_history! ⇒ Object
Clear old messages but keep context
50 51 52 53 54 |
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 50 def prune_history! = ['messages'] || [] self. = { 'messages' => .last(5) } save! end |
#recent_messages(limit = 10) ⇒ Object
Get recent messages
44 45 46 47 |
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 44 def (limit = 10) = ['messages'] || [] .last(limit) end |
#write_to_cache ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 61 def write_to_cache Rails.cache.write(cache_key, { context: context, recent_messages: , last_message_at: }, expires_in: 1.hour) end |