lex-swarm-github 0.2.1 → 0.2.2
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: 36ecaacf2a816da063f7aed44196fbd2c1c784c229271e9cddf7680b387bc499
|
|
4
|
+
data.tar.gz: 7f260d77233e6026bf0c66fc50dd98bfd0286d3ebaa1ebf8b19365fe1a5af4d7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 62733f67a56f0ae47e558acdd02414666aba291af5a5727506919eba6bf22c4a8fa0e85fdbd40f963605e73f71b0c8c1528880760d68ace40ec0ed3678f12d11
|
|
7
|
+
data.tar.gz: 304f250017f4fbe5f2370ae842f30a93f3abbf1448028ec8c76fcb57ca359e4871f1eb0c4af99ed7caf63da85a517e183d2fe7832b49278e6f80cfd17ed6037d
|
data/lex-swarm-github.gemspec
CHANGED
|
@@ -25,4 +25,12 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
Dir.glob('{lib,spec}/**/*') + %w[lex-swarm-github.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
|
|
@@ -10,17 +10,17 @@ module Legion
|
|
|
10
10
|
|
|
11
11
|
def ingest_issue(repo:, issue_number:, title:, labels: [], **)
|
|
12
12
|
key = issue_tracker.track(repo: repo, issue_number: issue_number, title: title, labels: labels)
|
|
13
|
-
|
|
13
|
+
log.info "[github-swarm] ingested: key=#{key} title=#{title}"
|
|
14
14
|
{ tracked: true, key: key, state: :received }
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def claim_issue(key:, **)
|
|
18
18
|
result = issue_tracker.transition(key, :found)
|
|
19
19
|
if result == :found
|
|
20
|
-
|
|
20
|
+
log.info "[github-swarm] claimed: key=#{key}"
|
|
21
21
|
{ claimed: true, state: :found }
|
|
22
22
|
else
|
|
23
|
-
|
|
23
|
+
log.debug "[github-swarm] claim failed: key=#{key} result=#{result}"
|
|
24
24
|
{ error: result || :not_found }
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -29,10 +29,10 @@ module Legion
|
|
|
29
29
|
issue_tracker.transition(key, :fixing)
|
|
30
30
|
attempt = issue_tracker.record_fix_attempt(key)
|
|
31
31
|
if attempt && attempt > Helpers::Pipeline::MAX_FIX_ATTEMPTS
|
|
32
|
-
|
|
32
|
+
log.warn "[github-swarm] max attempts exceeded: key=#{key} attempts=#{attempt}"
|
|
33
33
|
{ error: :max_attempts_exceeded, attempts: attempt }
|
|
34
34
|
else
|
|
35
|
-
|
|
35
|
+
log.info "[github-swarm] fix started: key=#{key} attempt=#{attempt}"
|
|
36
36
|
{ fixing: true, attempt: attempt }
|
|
37
37
|
end
|
|
38
38
|
end
|
|
@@ -41,10 +41,10 @@ module Legion
|
|
|
41
41
|
consensus = issue_tracker.record_validation(key, validator: validator,
|
|
42
42
|
approved: approved, reason: reason)
|
|
43
43
|
if consensus
|
|
44
|
-
|
|
44
|
+
log.info "[github-swarm] validation: key=#{key} validator=#{validator} approved=#{approved} consensus=#{consensus}"
|
|
45
45
|
{ recorded: true, consensus: consensus }
|
|
46
46
|
else
|
|
47
|
-
|
|
47
|
+
log.debug "[github-swarm] validation failed: key=#{key} not found"
|
|
48
48
|
{ error: :not_found }
|
|
49
49
|
end
|
|
50
50
|
end
|
|
@@ -52,23 +52,23 @@ module Legion
|
|
|
52
52
|
def attach_pr(key:, pr_number:, **)
|
|
53
53
|
result = issue_tracker.attach_pr(key, pr_number: pr_number)
|
|
54
54
|
if result
|
|
55
|
-
|
|
55
|
+
log.info "[github-swarm] PR attached: key=#{key} pr=##{pr_number}"
|
|
56
56
|
{ attached: true, pr_number: pr_number }
|
|
57
57
|
else
|
|
58
|
-
|
|
58
|
+
log.debug "[github-swarm] PR attach failed: key=#{key} not found"
|
|
59
59
|
{ error: :not_found }
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
def get_issue(key:, **)
|
|
64
64
|
issue = issue_tracker.get(key)
|
|
65
|
-
|
|
65
|
+
log.debug "[github-swarm] get: key=#{key} found=#{!issue.nil?}"
|
|
66
66
|
issue ? { found: true, issue: issue } : { found: false }
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
def issues_by_state(state:, **)
|
|
70
70
|
issues = issue_tracker.by_state(state)
|
|
71
|
-
|
|
71
|
+
log.debug "[github-swarm] by_state: state=#{state} count=#{issues.size}"
|
|
72
72
|
{ issues: issues, count: issues.size }
|
|
73
73
|
end
|
|
74
74
|
|
|
@@ -77,7 +77,7 @@ module Legion
|
|
|
77
77
|
[state, issue_tracker.by_state(state).size]
|
|
78
78
|
end
|
|
79
79
|
summary = status.select { |_, v| v.positive? }.map { |k, v| "#{k}=#{v}" }.join(' ')
|
|
80
|
-
|
|
80
|
+
log.debug "[github-swarm] pipeline: total=#{issue_tracker.count} #{summary}"
|
|
81
81
|
{ states: status, total: issue_tracker.count }
|
|
82
82
|
end
|
|
83
83
|
|
|
@@ -93,7 +93,7 @@ module Legion
|
|
|
93
93
|
issue_tracker.transition(key, :stale)
|
|
94
94
|
stale_keys << key
|
|
95
95
|
end
|
|
96
|
-
|
|
96
|
+
log.debug "[swarm-github] stale check: checked=#{issue_tracker.count} stale=#{stale_keys.size}"
|
|
97
97
|
{ checked: issue_tracker.count, marked_stale: stale_keys.size, stale_keys: stale_keys }
|
|
98
98
|
end
|
|
99
99
|
|
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,14 +1,112 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-swarm-github
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
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: GitHub-specific swarm pipeline (finder/fixer/validator) for brain-modeled
|
|
13
111
|
agentic AI
|
|
14
112
|
email:
|