Class: Legion::Extensions::Agentic::Attention::Subliminal::Helpers::SubliminalTrace

Inherits:
Object
  • Object
show all
Includes:
Constants
Defined in:
lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb

Constant Summary

Constants included from Constants

Constants::ACCUMULATION_RATE, Constants::ACTIVATION_BOOST, Constants::ACTIVATION_DECAY, Constants::ACTIVATION_LABELS, Constants::CONSCIOUS_THRESHOLD, Constants::DEFAULT_ACTIVATION, Constants::EXTINCTION_THRESHOLD, Constants::INFLUENCE_LABELS, Constants::INFLUENCE_STRENGTH, Constants::INFLUENCE_TARGETS, Constants::MAX_INFLUENCES, Constants::MAX_INFLUENCE_PER_DOMAIN, Constants::MAX_TOTAL_INFLUENCE, Constants::MAX_TRACES, Constants::SATURATION_LABELS, Constants::SUBLIMINAL_CEILING, Constants::SUBLIMINAL_FLOOR, Constants::TRACE_TYPES

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Constants

label_for

Constructor Details

#initialize(content:, trace_type: :associative, domain: :general, activation: DEFAULT_ACTIVATION, influence_target: :attention) ⇒ SubliminalTrace

Returns a new instance of SubliminalTrace.



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 18

def initialize(content:, trace_type: :associative, domain: :general, activation: DEFAULT_ACTIVATION,
               influence_target: :attention)
  @id = SecureRandom.uuid
  @content = content.to_s
  @trace_type = valid_trace_type(trace_type)
  @domain = domain.to_sym
  @activation = activation.to_f.clamp(SUBLIMINAL_FLOOR, SUBLIMINAL_CEILING).round(10)
  @original_activation = @activation
  @influence_target = valid_influence_target(influence_target)
  @influence_count = 0
  @created_at = Time.now
end

Instance Attribute Details

#activationObject

Returns the value of attribute activation.



16
17
18
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 16

def activation
  @activation
end

#contentObject (readonly)

Returns the value of attribute content.



14
15
16
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 14

def content
  @content
end

#created_atObject (readonly)

Returns the value of attribute created_at.



14
15
16
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 14

def created_at
  @created_at
end

#domainObject (readonly)

Returns the value of attribute domain.



14
15
16
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 14

def domain
  @domain
end

#idObject (readonly)

Returns the value of attribute id.



14
15
16
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 14

def id
  @id
end

#influence_countObject (readonly)

Returns the value of attribute influence_count.



14
15
16
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 14

def influence_count
  @influence_count
end

#influence_targetObject (readonly)

Returns the value of attribute influence_target.



14
15
16
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 14

def influence_target
  @influence_target
end

#original_activationObject (readonly)

Returns the value of attribute original_activation.



14
15
16
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 14

def original_activation
  @original_activation
end

#trace_typeObject (readonly)

Returns the value of attribute trace_type.



14
15
16
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 14

def trace_type
  @trace_type
end

Instance Method Details

#activation_labelObject



61
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 61

def activation_label = Constants.label_for(ACTIVATION_LABELS, @activation)

#active?Boolean

Returns:

  • (Boolean)


52
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 52

def active? = @activation >= SUBLIMINAL_FLOOR

#boost!(amount: ACTIVATION_BOOST) ⇒ Object



31
32
33
34
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 31

def boost!(amount: ACTIVATION_BOOST)
  @activation = (@activation + amount).clamp(0.0, SUBLIMINAL_CEILING).round(10)
  self
end

#breached_threshold?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 56

def breached_threshold?
  @activation >= CONSCIOUS_THRESHOLD
end

#decay!Object



36
37
38
39
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 36

def decay!
  @activation = (@activation - ACTIVATION_DECAY).clamp(0.0, 1.0).round(10)
  self
end

#exert_influence!Object



41
42
43
44
45
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 41

def exert_influence!
  @influence_count += 1
  @activation = (@activation - (INFLUENCE_STRENGTH * 0.5)).clamp(0.0, 1.0).round(10)
  influence_magnitude
end

#extinct?Boolean

Returns:

  • (Boolean)


53
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 53

def extinct? = @activation < EXTINCTION_THRESHOLD

#influence_labelObject



62
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 62

def influence_label = Constants.label_for(INFLUENCE_LABELS, influence_magnitude)

#influence_magnitudeObject



47
48
49
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 47

def influence_magnitude
  (@activation * INFLUENCE_STRENGTH).clamp(0.0, MAX_INFLUENCE_PER_DOMAIN).round(10)
end

#near_threshold?Boolean

Returns:

  • (Boolean)


51
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 51

def near_threshold? = @activation >= 0.3 && @activation < CONSCIOUS_THRESHOLD

#persistenceObject



60
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 60

def persistence = (@activation / @original_activation).clamp(0.0, 1.0).round(10)

#potent?Boolean

Returns:

  • (Boolean)


54
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 54

def potent? = @activation >= 0.2

#to_hObject



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/legion/extensions/agentic/attention/subliminal/helpers/subliminal_trace.rb', line 64

def to_h
  {
    id:                  @id,
    content:             @content,
    trace_type:          @trace_type,
    domain:              @domain,
    activation:          @activation,
    original_activation: @original_activation,
    influence_target:    @influence_target,
    influence_count:     @influence_count,
    influence_magnitude: influence_magnitude,
    near_threshold:      near_threshold?,
    active:              active?,
    extinct:             extinct?,
    activation_label:    activation_label,
    persistence:         persistence,
    created_at:          @created_at.iso8601
  }
end