Class: Cline::Session
- Inherits:
-
Object
- Object
- Cline::Session
- Extended by:
- Forwardable
- Includes:
- Cline::Serializable::Dir
- Defined in:
- lib/cline/session.rb
Overview
A session defined in a directory
Instance Attribute Summary
Attributes included from Cline::Serializable::Dir
Internal collapse
-
#initialize(cline_models:) ⇒ Session
constructor
Constructor.
Methods included from Cline::Serializable::Dir
included, #initialize_from_dir, #subpath
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
Equality check.
-
#data(create: self.create) ⇒ SessionData?
Get the session's data.
-
#messages(create: self.create) ⇒ SessionMessages?
Get the session's messages.
-
#monitor_messages(on_message:, monitoring_interval_secs: 1) { ... } ⇒ FileMonitor?
Monitor messages with a callback called when new or updated messages arrive.
Constructor Details
#initialize(cline_models:) ⇒ Session
Constructor
83 84 85 |
# File 'lib/cline/session.rb', line 83 def initialize(cline_models:) @cline_models = cline_models end |
Instance Method Details
#==(other) ⇒ Boolean
Equality check
35 36 37 38 39 |
# File 'lib/cline/session.rb', line 35 def ==(other) other.is_a?(Session) && other.data == data && other. == end |
#data(create: self.create) ⇒ SessionData?
Get the session's data
19 20 21 |
# File 'lib/cline/session.rb', line 19 def data(create: self.create) @data ||= SessionData.from_cline_data(dir, create:) end |
#messages(create: self.create) ⇒ SessionMessages?
Get the session's messages
27 28 29 |
# File 'lib/cline/session.rb', line 27 def (create: self.create) @messages ||= SessionMessages.from_cline_data(dir, cline_models: @cline_models, create:) end |
#monitor_messages(on_message:, monitoring_interval_secs: 1) { ... } ⇒ FileMonitor?
Monitor messages with a callback called when new or updated messages arrive
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/cline/session.rb', line 52 def (on_message:, monitoring_interval_secs: 1, &) # Keep messages per timestamp to detect updates = {} SessionMessages.monitor_cline_data_changes( dir, cline_models: @cline_models, on_change: proc do || # Update the messages we have @messages = if &. && !..empty? # Check for updates in all messages last_idx = ..size - 1 ..each.with_index do |, idx| ts = .ts if != [ts] .call(, idx == last_idx, [ts]) [ts] = end end end end, monitoring_interval_secs:, & ) end |