Class: Legion::Extensions::Agentic::Integration::SituationModel::Helpers::SituationEngine
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Integration::SituationModel::Helpers::SituationEngine
show all
- Includes:
- Constants
- Defined in:
- lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb
Constant Summary
Constants included
from Constants
Constants::COHERENCE_CEILING, Constants::COHERENCE_FLOOR, Constants::CONTINUITY_LABELS, Constants::DECAY_RATE, Constants::DEFAULT_DIMENSION_VALUE, Constants::DIMENSIONS, Constants::MAX_EVENTS_PER_MODEL, Constants::MAX_HISTORY, Constants::MAX_MODELS, Constants::MODEL_HEALTH_LABELS
Instance Method Summary
collapse
Constructor Details
Returns a new instance of SituationEngine.
12
13
14
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 12
def initialize
@models = {}
end
|
Instance Method Details
#add_event_to_model(model_id:, content:, dimension_values: {}) ⇒ Object
22
23
24
25
26
27
28
29
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 22
def add_event_to_model(model_id:, content:, dimension_values: {})
model = @models[model_id]
return nil unless model
event = SituationEvent.new(content: content, dimension_values: dimension_values)
model.add_event(event)
event
end
|
#create_model(label:) ⇒ Object
16
17
18
19
20
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 16
def create_model(label:)
model = SituationModel.new(label: label)
@models[model.id] = model
model
end
|
#decay_all ⇒ Object
53
54
55
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 53
def decay_all
@models.each_value(&:decay!)
end
|
#dimension_trajectory(model_id:, dimension:) ⇒ Object
39
40
41
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 39
def dimension_trajectory(model_id:, dimension:)
@models[model_id]&.dimension_trajectory(dimension)
end
|
#find_boundaries(model_id:, threshold: 0.3) ⇒ Object
35
36
37
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 35
def find_boundaries(model_id:, threshold: 0.3)
@models[model_id]&.event_boundaries(threshold: threshold)
end
|
#model_coherence(model_id:) ⇒ Object
31
32
33
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 31
def model_coherence(model_id:)
@models[model_id]&.coherence
end
|
#models_by_label(label:) ⇒ Object
49
50
51
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 49
def models_by_label(label:)
@models.values.select { |m| m.label == label }
end
|
#most_coherent(limit: 5) ⇒ Object
43
44
45
46
47
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 43
def most_coherent(limit: 5)
@models.values
.sort_by { |m| -m.coherence }
.first(limit)
end
|
#prune_collapsed ⇒ Object
57
58
59
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 57
def prune_collapsed
@models.delete_if { |_, m| m.coherence <= 0.1 }
end
|
#to_h ⇒ Object
61
62
63
64
65
66
|
# File 'lib/legion/extensions/agentic/integration/situation_model/helpers/situation_engine.rb', line 61
def to_h
{
model_count: @models.size,
models: @models.values.map(&:to_h)
}
end
|