Module: Legion::Extensions::Agentic::Homeostasis::Tempo::Runners::Tempo

Includes:
Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/agentic/homeostasis/tempo/runners/tempo.rb

Instance Method Summary collapse

Instance Method Details

#adapt_tempo(domain:, target:) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/legion/extensions/agentic/homeostasis/tempo/runners/tempo.rb', line 33

def adapt_tempo(domain:, target:, **)
  record = tempo_engine.adapt_tempo(domain: domain, target: target)
  unless record
    log.debug("[cognitive_tempo] adapt: no records for domain=#{domain}")
    return { adapted: false, domain: domain }
  end

  log.debug("[cognitive_tempo] adapted: domain=#{domain} current=#{record.current_tempo.round(2)} target=#{target.round(2)}")
  { adapted: true }.merge(record.to_h)
end

#domains_in_syncObject



61
62
63
64
65
# File 'lib/legion/extensions/agentic/homeostasis/tempo/runners/tempo.rb', line 61

def domains_in_sync(**)
  result = tempo_engine.domains_in_sync
  log.debug("[cognitive_tempo] in_sync: count=#{result.size}")
  { domains: result, count: result.size }
end

#domains_mismatchedObject



67
68
69
70
71
# File 'lib/legion/extensions/agentic/homeostasis/tempo/runners/tempo.rb', line 67

def domains_mismatched(**)
  result = tempo_engine.domains_mismatched
  log.debug("[cognitive_tempo] mismatched: count=#{result.size}")
  { domains: result, count: result.size }
end

#record_tempo(domain:, current_tempo:, task_requirement:) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/legion/extensions/agentic/homeostasis/tempo/runners/tempo.rb', line 19

def record_tempo(domain:, current_tempo:, task_requirement:, **)
  record = tempo_engine.record_tempo(
    domain:           domain,
    current_tempo:    current_tempo,
    task_requirement: task_requirement
  )
  log.debug("[cognitive_tempo] recorded: domain=#{domain} " \
            "current=#{current_tempo.round(2)} " \
            "requirement=#{task_requirement.round(2)} " \
            "mismatch=#{record.mismatch.round(3)} " \
            "label=#{record.mismatch_label}")
  record.to_h
end

#set_tempo_baseline(domain:, tempo:) ⇒ Object



13
14
15
16
17
# File 'lib/legion/extensions/agentic/homeostasis/tempo/runners/tempo.rb', line 13

def set_tempo_baseline(domain:, tempo:, **)
  tempo_engine.set_baseline(domain: domain, tempo: tempo)
  log.debug("[cognitive_tempo] baseline set: domain=#{domain} tempo=#{tempo.round(2)}")
  { domain: domain, baseline: tempo }
end

#tempo_reportObject



73
74
75
76
77
# File 'lib/legion/extensions/agentic/homeostasis/tempo/runners/tempo.rb', line 73

def tempo_report(**)
  report = tempo_engine.tempo_report
  log.debug("[cognitive_tempo] report: total_records=#{report[:total_records]}")
  report
end

#tempo_status(domain: nil) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/legion/extensions/agentic/homeostasis/tempo/runners/tempo.rb', line 44

def tempo_status(domain: nil, **)
  if domain
    record = tempo_engine.records[domain]&.last
    if record
      log.debug("[cognitive_tempo] status: domain=#{domain} tempo=#{record.current_tempo.round(2)} mismatch=#{record.mismatch_label}")
      { found: true }.merge(record.to_h)
    else
      log.debug("[cognitive_tempo] status: domain=#{domain} not found")
      { found: false, domain: domain }
    end
  else
    report = tempo_engine.tempo_report
    log.debug("[cognitive_tempo] report: domains=#{report[:domains].size} avg_mismatch=#{report[:average_mismatch].round(3)}")
    report
  end
end