lex-coldstart 0.1.0 → 0.1.1
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 652ebe463901fe4e6716fecd9161a16b84a4a336282b527029d831d7bede8893
|
|
4
|
+
data.tar.gz: 587549c798664f4aed65a110fa723a10f5c6454184e0b1f297fdd60d5e932a86
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b3fe74502f5433dee026f66f4237e9f1da5d4afc0d69c8f714451e42df8407a5be06fca831f85c07089cbde8fa0370e3f10b773024d7fc7f0c7259657080ab33
|
|
7
|
+
data.tar.gz: e89611a6ab69bed2a8e0b8714dfba9a07aeade0c450716d8f2d0d575d915df2af0ff27aa39082158cbeb458e24f9ae2a509101d39811c460f6e73b20cd4d973c
|
data/lex-coldstart.gemspec
CHANGED
|
@@ -25,6 +25,13 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
Dir.glob('{lib,spec}/**/*') + %w[lex-coldstart.gemspec Gemfile]
|
|
26
26
|
end
|
|
27
27
|
spec.require_paths = ['lib']
|
|
28
|
+
spec.add_dependency 'legion-cache', '>= 1.3.11'
|
|
29
|
+
spec.add_dependency 'legion-crypt', '>= 1.4.9'
|
|
30
|
+
spec.add_dependency 'legion-data', '>= 1.4.17'
|
|
31
|
+
spec.add_dependency 'legion-json', '>= 1.2.1'
|
|
32
|
+
spec.add_dependency 'legion-logging', '>= 1.3.2'
|
|
33
|
+
spec.add_dependency 'legion-settings', '>= 1.3.14'
|
|
34
|
+
spec.add_dependency 'legion-transport', '>= 1.3.9'
|
|
28
35
|
spec.add_development_dependency 'sequel', '~> 5.70'
|
|
29
36
|
spec.add_development_dependency 'sqlite3', '~> 2.0'
|
|
30
37
|
end
|
|
@@ -14,7 +14,7 @@ module Legion
|
|
|
14
14
|
dur = Helpers::Imprint::IMPRINT_DURATION
|
|
15
15
|
mul = Helpers::Imprint::IMPRINT_MULTIPLIER
|
|
16
16
|
tier = Helpers::Imprint::IMPRINT_CONSENT_TIER
|
|
17
|
-
|
|
17
|
+
log.info "[coldstart] imprint begun: duration=#{dur}s multiplier=#{mul}x consent=#{tier}"
|
|
18
18
|
{
|
|
19
19
|
started: true,
|
|
20
20
|
imprint_duration: Helpers::Imprint::IMPRINT_DURATION,
|
|
@@ -25,8 +25,8 @@ module Legion
|
|
|
25
25
|
|
|
26
26
|
def record_observation(**)
|
|
27
27
|
bootstrap.record_observation
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
log.debug "[coldstart] observation: count=#{bootstrap.observation_count} " \
|
|
29
|
+
"calibration=#{bootstrap.calibration_state} layer=#{bootstrap.current_layer}"
|
|
30
30
|
{
|
|
31
31
|
observation_count: bootstrap.observation_count,
|
|
32
32
|
calibration_state: bootstrap.calibration_state,
|
|
@@ -36,20 +36,20 @@ module Legion
|
|
|
36
36
|
|
|
37
37
|
def coldstart_progress(**)
|
|
38
38
|
progress = bootstrap.progress
|
|
39
|
-
|
|
39
|
+
log.debug "[coldstart] progress: #{progress.inspect}"
|
|
40
40
|
progress
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def imprint_active?(**) # rubocop:disable Naming/PredicateMethod
|
|
44
44
|
active = bootstrap.imprint_active?
|
|
45
|
-
|
|
45
|
+
log.debug "[coldstart] imprint_active?=#{active}"
|
|
46
46
|
{ active: active }
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def current_multiplier(**)
|
|
50
50
|
active = bootstrap.imprint_active?
|
|
51
51
|
multiplier = active ? Helpers::Imprint::IMPRINT_MULTIPLIER : 1.0
|
|
52
|
-
|
|
52
|
+
log.debug "[coldstart] multiplier=#{multiplier} imprint_active=#{active}"
|
|
53
53
|
{ multiplier: multiplier, imprint_active: active }
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -16,13 +16,13 @@ module Legion
|
|
|
16
16
|
# @return [Hash] { file:, file_type:, traces_parsed:, traces_stored:, traces: }
|
|
17
17
|
def ingest_file(file_path:, store_traces: true, **)
|
|
18
18
|
unless File.exist?(file_path)
|
|
19
|
-
|
|
19
|
+
log.warn "[coldstart:ingest] file not found: #{file_path}"
|
|
20
20
|
return { file: file_path, error: 'file not found' }
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
candidates = Helpers::ClaudeParser.parse_file(file_path)
|
|
24
24
|
file_type = Helpers::ClaudeParser.detect_file_type(file_path)
|
|
25
|
-
|
|
25
|
+
log.info "[coldstart:ingest] parsed #{candidates.size} traces from #{file_path} (#{file_type})"
|
|
26
26
|
|
|
27
27
|
stored = store_traces ? store_candidates(candidates) : []
|
|
28
28
|
|
|
@@ -43,13 +43,13 @@ module Legion
|
|
|
43
43
|
# @return [Hash] { directory:, files_found:, total_parsed:, total_stored:, files: }
|
|
44
44
|
def ingest_directory(dir_path:, pattern: '**/{CLAUDE,MEMORY}.md', store_traces: true, **)
|
|
45
45
|
unless Dir.exist?(dir_path)
|
|
46
|
-
|
|
46
|
+
log.warn "[coldstart:ingest] directory not found: #{dir_path}"
|
|
47
47
|
return { directory: dir_path, error: 'directory not found' }
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
candidates = Helpers::ClaudeParser.parse_directory(dir_path, pattern: pattern)
|
|
51
51
|
files = candidates.map { |c| c[:source_file] }.uniq
|
|
52
|
-
|
|
52
|
+
log.info "[coldstart:ingest] parsed #{candidates.size} traces from #{files.size} files in #{dir_path}"
|
|
53
53
|
|
|
54
54
|
stored = store_traces ? store_candidates(candidates) : []
|
|
55
55
|
|
|
@@ -101,14 +101,14 @@ module Legion
|
|
|
101
101
|
)
|
|
102
102
|
stored << result if result
|
|
103
103
|
rescue StandardError => e
|
|
104
|
-
|
|
104
|
+
log.warn "[coldstart:ingest] failed to store trace: #{e.message}"
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
# Flush the cache-backed store if it supports it
|
|
108
108
|
store = runner.send(:default_store)
|
|
109
109
|
store.flush if store.respond_to?(:flush)
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
log.info "[coldstart:ingest] stored #{stored.size} traces (imprint_active=#{imprint})"
|
|
112
112
|
|
|
113
113
|
# Co-activate traces from the same section to form Hebbian links
|
|
114
114
|
coactivate_section_traces(stored, candidates, runner)
|
|
@@ -163,9 +163,9 @@ module Legion
|
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
165
|
|
|
166
|
-
|
|
166
|
+
log.debug "[coldstart:ingest] co-activated #{coactivations} trace pairs across #{groups.size} sections"
|
|
167
167
|
rescue StandardError => e
|
|
168
|
-
|
|
168
|
+
log.warn "[coldstart:ingest] co-activation failed: #{e.message}"
|
|
169
169
|
end
|
|
170
170
|
end
|
|
171
171
|
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
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-coldstart
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -9,6 +9,104 @@ bindir: bin
|
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
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
|
- !ruby/object:Gem::Dependency
|
|
13
111
|
name: sequel
|
|
14
112
|
requirement: !ruby/object:Gem::Requirement
|