lex-tick 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c43d91e3e248e80edb50cd4ce88df3bf8c3ec2e5e0c3c2d61d96d593aa2d971
4
- data.tar.gz: 700731bed7b0c25f358eec18241d8b0f1265c0ce055eeffdebb9c4193f684cff
3
+ metadata.gz: 67d55a4a8a94f12d6ba0fca7937ff3597e428017e21a2ef09f6a790076316072
4
+ data.tar.gz: 80c0a4c792e8cc3648693926253bd82609326cc32a56adebd39dd9ed9acd1068
5
5
  SHA512:
6
- metadata.gz: 0b4431b0b4cee44228b8d6adb96044b219160b2415a144912d97fd3d95e24dcf245836e482d2edccd48e3e5d59dbef1201f01d86bbe7db23010db1817462fca4
7
- data.tar.gz: ebb2a1f9835e8749d23c96e24a266a78ddcbd04af712e9b77d4fb775a0e6fa84243f914ff53b529624b332ef304f94b4f7d8f179349507a0903973dc6d4bfad1
6
+ metadata.gz: ceba58abf3a0ca2e43249adc62b9e39e3a7ea2f82482778b59f68aaad522f8e766ee4e62a860c51b8d0c706bd4b1611cea4b6f8eeb50cfbadcab8b5c53e88d2c
7
+ data.tar.gz: e1257c6343e35af0dfcd264913f733cd541df4318197edf1b97461adc9d1c734987b516ab981a4fb0e1194eb665e379f4433b3e3dba55fd3fea38bfa6f80eca9
data/lex-tick.gemspec CHANGED
@@ -25,4 +25,12 @@ Gem::Specification.new do |spec|
25
25
  Dir.glob('{lib,spec}/**/*') + %w[lex-tick.gemspec Gemfile]
26
26
  end
27
27
  spec.require_paths = ['lib']
28
+
29
+ spec.add_dependency 'legion-cache', '>= 1.3.11'
30
+ spec.add_dependency 'legion-crypt', '>= 1.4.9'
31
+ spec.add_dependency 'legion-data', '>= 1.4.17'
32
+ spec.add_dependency 'legion-json', '>= 1.2.1'
33
+ spec.add_dependency 'legion-logging', '>= 1.3.2'
34
+ spec.add_dependency 'legion-settings', '>= 1.3.14'
35
+ spec.add_dependency 'legion-transport', '>= 1.3.9'
28
36
  end
@@ -27,7 +27,7 @@ module Legion
27
27
 
28
28
  # Emergency promotion
29
29
  if emergency && Helpers::Constants::EMERGENCY_TRIGGERS.include?(emergency)
30
- Legion::Logging.warn "[tick] emergency promotion triggered: #{emergency}"
30
+ log.warn "[tick] emergency promotion triggered: #{emergency}"
31
31
  state.transition_to(:full_active)
32
32
  return { transitioned: true, new_mode: :full_active, previous_mode: previous_mode, reason: :emergency }
33
33
  end
@@ -75,26 +75,26 @@ module Legion
75
75
  { transitioned: false, current_mode: state.mode }
76
76
  else
77
77
  state.transition_to(new_mode)
78
- Legion::Logging.info "[tick] mode transition: #{previous_mode} -> #{new_mode} (threshold)"
78
+ log.info "[tick] mode transition: #{previous_mode} -> #{new_mode} (threshold)"
79
79
  { transitioned: true, new_mode: new_mode, previous_mode: previous_mode, reason: :threshold }
80
80
  end
81
81
  end
82
82
 
83
83
  def tick_status(**)
84
84
  status = tick_state.to_h
85
- Legion::Logging.debug "[tick] status query: mode=#{status[:mode]} tick_count=#{status[:tick_count]}"
85
+ log.debug "[tick] status query: mode=#{status[:mode]} tick_count=#{status[:tick_count]}"
86
86
  status
87
87
  end
88
88
 
89
89
  def set_mode(mode:, **)
90
90
  unless Helpers::Constants::MODES.include?(mode)
91
- Legion::Logging.warn "[tick] invalid mode requested: #{mode}"
91
+ log.warn "[tick] invalid mode requested: #{mode}"
92
92
  return { error: :invalid_mode, valid_modes: Helpers::Constants::MODES }
93
93
  end
94
94
 
95
95
  previous = tick_state.mode
96
96
  tick_state.transition_to(mode)
97
- Legion::Logging.info "[tick] mode forced: #{previous} -> #{mode}"
97
+ log.info "[tick] mode forced: #{previous} -> #{mode}"
98
98
  { mode: mode }
99
99
  end
100
100
 
@@ -107,12 +107,10 @@ module Legion
107
107
  max_salience = signals.map { |s| s.is_a?(Hash) ? (s[:salience] || 0.0) : 0.0 }.max || 0.0
108
108
  state.record_signal(salience: max_salience) unless signals.empty?
109
109
 
110
- Legion::Logging.debug "[tick] ##{state.tick_count} starting | mode=#{state.mode} signals=#{signals.size} max_salience=#{max_salience.round(2)}"
110
+ log.debug "[tick] ##{state.tick_count} starting | mode=#{state.mode} signals=#{signals.size} max_salience=#{max_salience.round(2)}"
111
111
 
112
112
  transition = evaluate_mode_transition(signals: signals)
113
- if transition[:transitioned]
114
- Legion::Logging.info "[tick] mode transition: #{transition[:previous_mode]} -> #{transition[:new_mode]} (#{transition[:reason]})"
115
- end
113
+ log.info "[tick] mode transition: #{transition[:previous_mode]} -> #{transition[:new_mode]} (#{transition[:reason]})" if transition[:transitioned]
116
114
 
117
115
  phases = Helpers::Constants.phases_for_mode(state.mode)
118
116
  budget = Helpers::Constants.tick_budget(state.mode)
@@ -138,11 +136,11 @@ module Legion
138
136
  results = {}
139
137
  budget = ctx[:budget]
140
138
  start_time = ctx[:start_time]
141
- Legion::Logging.debug "[tick] ##{state.tick_count} running #{phases.size} phases with #{budget}s budget"
139
+ log.debug "[tick] ##{state.tick_count} running #{phases.size} phases with #{budget}s budget"
142
140
  phases.each do |phase|
143
141
  elapsed = Time.now.utc - start_time
144
142
  if elapsed >= budget
145
- Legion::Logging.debug "[tick] ##{state.tick_count} budget exhausted at #{elapsed.round(3)}s, skipping remaining phases"
143
+ log.debug "[tick] ##{state.tick_count} budget exhausted at #{elapsed.round(3)}s, skipping remaining phases"
146
144
  break
147
145
  end
148
146
 
@@ -158,15 +156,15 @@ module Legion
158
156
  result = handler ? handler.call(state: state, signals: signals, prior_results: results) : { status: :no_handler }
159
157
  phase_elapsed = ((Time.now.utc - phase_start) * 1000).round(1)
160
158
  status = result.is_a?(Hash) ? (result[:status] || :ok) : :ok
161
- Legion::Logging.debug "[tick] ##{state.tick_count} phase=#{phase} status=#{status} (#{phase_elapsed}ms)"
159
+ log.debug "[tick] ##{state.tick_count} phase=#{phase} status=#{status} (#{phase_elapsed}ms)"
162
160
  result
163
161
  end
164
162
 
165
163
  def log_tick_complete(state, results, phases, total_elapsed, skipped)
166
164
  skipped_suffix = skipped.empty? ? '' : " skipped=#{skipped}"
167
- Legion::Logging.info "[tick] ##{state.tick_count} complete | mode=#{state.mode} " \
168
- "phases=#{results.size}/#{phases.size} " \
169
- "elapsed=#{(total_elapsed * 1000).round(1)}ms#{skipped_suffix}"
165
+ log.info "[tick] ##{state.tick_count} complete | mode=#{state.mode} " \
166
+ "phases=#{results.size}/#{phases.size} " \
167
+ "elapsed=#{(total_elapsed * 1000).round(1)}ms#{skipped_suffix}"
170
168
  end
171
169
 
172
170
  def tick_state
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module Tick
6
- VERSION = '0.1.2'
6
+ VERSION = '0.1.3'
7
7
  end
8
8
  end
9
9
  end
data/spec/spec_helper.rb CHANGED
@@ -1,13 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'bundler/setup'
4
+ require 'legion/logging'
5
+ require 'legion/settings'
6
+ require 'legion/cache/helper'
7
+ require 'legion/crypt/helper'
8
+ require 'legion/data/helper'
9
+ require 'legion/json/helper'
10
+ require 'legion/transport/helper'
4
11
 
5
12
  module Legion
6
- module Logging
7
- def self.debug(_msg); end
8
- def self.info(_msg); end
9
- def self.warn(_msg); end
10
- def self.error(_msg); end
13
+ module Extensions
14
+ module Helpers
15
+ module Lex
16
+ include Legion::Logging::Helper
17
+ include Legion::Settings::Helper
18
+ include Legion::Cache::Helper
19
+ include Legion::Crypt::Helper
20
+ include Legion::Data::Helper
21
+ include Legion::JSON::Helper
22
+ include Legion::Transport::Helper
23
+ end
24
+ end
25
+
26
+ module Actors
27
+ class Every
28
+ include Helpers::Lex
29
+ end
30
+
31
+ class Once
32
+ include Helpers::Lex
33
+ end
34
+ end
11
35
  end
12
36
  end
13
37
 
metadata CHANGED
@@ -1,14 +1,112 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-tick
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
8
8
  bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: legion-cache
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 1.3.11
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 1.3.11
26
+ - !ruby/object:Gem::Dependency
27
+ name: legion-crypt
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.4.9
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.4.9
40
+ - !ruby/object:Gem::Dependency
41
+ name: legion-data
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.4.17
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.4.17
54
+ - !ruby/object:Gem::Dependency
55
+ name: legion-json
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.2.1
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 1.2.1
68
+ - !ruby/object:Gem::Dependency
69
+ name: legion-logging
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.3.2
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.3.2
82
+ - !ruby/object:Gem::Dependency
83
+ name: legion-settings
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.14
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 1.3.14
96
+ - !ruby/object:Gem::Dependency
97
+ name: legion-transport
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.3.9
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 1.3.9
12
110
  description: Atomic cognitive processing cycle (11 phases, 3 modes) for brain-modeled
13
111
  agentic AI
14
112
  email: