Class: Cline::Task
- Inherits:
-
Object
- Object
- Cline::Task
- Includes:
- Serializable::Dir
- Defined in:
- lib/cline/task.rb
Overview
A task defined in a directory
Instance Attribute Summary
Attributes included from Serializable::Dir
Internal collapse
-
#initialize(cline_models:) ⇒ Task
constructor
Constructor.
Methods included from Serializable::Dir
included, #initialize_from_dir, #subpath
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
Equality check.
-
#messages(create: self.create) ⇒ TaskMessages?
Get the task's messages.
-
#monitor_messages(on_message:, ignore_partials: false, monitoring_interval_secs: 1) { ... } ⇒ FileMonitor?
Monitor messages with a callback called when new or updated messages arrive.
Constructor Details
#initialize(cline_models:) ⇒ Task
Constructor
71 72 73 |
# File 'lib/cline/task.rb', line 71 def initialize(cline_models:) @cline_models = cline_models end |
Instance Method Details
#==(other) ⇒ Boolean
Equality check
20 21 22 23 |
# File 'lib/cline/task.rb', line 20 def ==(other) other.is_a?(Task) && other. == end |
#messages(create: self.create) ⇒ TaskMessages?
Get the task's messages
12 13 14 |
# File 'lib/cline/task.rb', line 12 def (create: self.create) @messages ||= TaskMessages.from_cline_data(dir, cline_models: @cline_models, create:) end |
#monitor_messages(on_message:, ignore_partials: false, monitoring_interval_secs: 1) { ... } ⇒ FileMonitor?
Monitor messages with a callback called when new or updated messages arrive
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/cline/task.rb', line 38 def (on_message:, ignore_partials: false, monitoring_interval_secs: 1, &) # Keep messages per timestamp to detect updates = {} TaskMessages.monitor_cline_data_changes( dir, cline_models: @cline_models, on_change: proc do || # Update the messages we have @messages = if && !.empty? # Filter unwanted messages = .reject(&:partial) if ignore_partials # 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 |