aireview 0.1.0 → 0.2.0
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 +4 -4
- data/CHANGELOG.md +26 -0
- data/CONTRIBUTORS.md +8 -0
- data/README.md +82 -2
- data/lib/aireview/cli.rb +9 -29
- data/lib/aireview/config.rb +12 -4
- data/lib/aireview/config_limits.rb +85 -0
- data/lib/aireview/context_budget.rb +197 -0
- data/lib/aireview/context_builder.rb +125 -39
- data/lib/aireview/diff_fetcher.rb +79 -16
- data/lib/aireview/dry_run_report.rb +64 -0
- data/lib/aireview/errors.rb +1 -0
- data/lib/aireview/prompts/critique.txt +10 -0
- data/lib/aireview/prompts/generate.txt +9 -0
- data/lib/aireview/review_pipeline.rb +24 -32
- data/lib/aireview/review_renderer.rb +55 -5
- data/lib/aireview/reviewer.rb +15 -6
- data/lib/aireview/version.rb +1 -1
- data/lib/aireview.rb +1 -0
- metadata +7 -2
data/lib/aireview/reviewer.rb
CHANGED
|
@@ -6,11 +6,12 @@ require 'timeout'
|
|
|
6
6
|
|
|
7
7
|
module Aireview
|
|
8
8
|
class Reviewer
|
|
9
|
-
MAX_TRANSIENT_RETRIES =
|
|
9
|
+
MAX_TRANSIENT_RETRIES = 3
|
|
10
10
|
TRANSIENT_RETRY_BASE_DELAY = 2.0
|
|
11
11
|
TRANSIENT_RETRY_JITTER_RANGE = 2.0..5.0
|
|
12
12
|
PROVIDER_RETRY_DELAY_MULTIPLIER_RANGE = 2.0..2.4
|
|
13
|
-
|
|
13
|
+
OVERLOADED_RETRY_DELAYS = [120.0, 300.0, 300.0].freeze
|
|
14
|
+
OVERLOADED_RETRY_JITTER_RANGE = 0.85..1.15
|
|
14
15
|
RETRY_WAIT_LOG_FORMAT = 'LLM %<stage>s request will sleep %<delay>.1fs before retry%<source>s ' \
|
|
15
16
|
'(attempt %<next_attempt>d/%<max_attempts>d, model=%<model>s)'
|
|
16
17
|
|
|
@@ -184,10 +185,12 @@ module Aireview
|
|
|
184
185
|
end
|
|
185
186
|
|
|
186
187
|
if overloaded_llm_error?(error)
|
|
188
|
+
base_delay = OVERLOADED_RETRY_DELAYS.fetch(attempt - 1, OVERLOADED_RETRY_DELAYS.last)
|
|
189
|
+
multiplier = rand(OVERLOADED_RETRY_JITTER_RANGE)
|
|
187
190
|
return {
|
|
188
|
-
delay:
|
|
189
|
-
|
|
190
|
-
multiplier:
|
|
191
|
+
delay: base_delay * multiplier,
|
|
192
|
+
base_delay: base_delay,
|
|
193
|
+
multiplier: multiplier,
|
|
191
194
|
strategy: :overloaded
|
|
192
195
|
}
|
|
193
196
|
end
|
|
@@ -202,7 +205,13 @@ module Aireview
|
|
|
202
205
|
end
|
|
203
206
|
|
|
204
207
|
def retry_delay_source(retry_delay)
|
|
205
|
-
|
|
208
|
+
if retry_delay[:strategy] == :overloaded
|
|
209
|
+
return format(
|
|
210
|
+
' (overloaded backoff %<base_delay>.0fs, multiplier %<multiplier>.2fx)',
|
|
211
|
+
base_delay: retry_delay[:base_delay],
|
|
212
|
+
multiplier: retry_delay[:multiplier]
|
|
213
|
+
)
|
|
214
|
+
end
|
|
206
215
|
return '' unless retry_delay[:provider_delay]
|
|
207
216
|
|
|
208
217
|
format(
|
data/lib/aireview/version.rb
CHANGED
data/lib/aireview.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aireview
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Denis Levenko
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
11
|
+
date: 2026-09-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dotenv
|
|
@@ -63,6 +63,7 @@ extensions: []
|
|
|
63
63
|
extra_rdoc_files: []
|
|
64
64
|
files:
|
|
65
65
|
- CHANGELOG.md
|
|
66
|
+
- CONTRIBUTORS.md
|
|
66
67
|
- LICENSE
|
|
67
68
|
- README.md
|
|
68
69
|
- bin/aireview
|
|
@@ -70,8 +71,11 @@ files:
|
|
|
70
71
|
- lib/aireview.rb
|
|
71
72
|
- lib/aireview/cli.rb
|
|
72
73
|
- lib/aireview/config.rb
|
|
74
|
+
- lib/aireview/config_limits.rb
|
|
75
|
+
- lib/aireview/context_budget.rb
|
|
73
76
|
- lib/aireview/context_builder.rb
|
|
74
77
|
- lib/aireview/diff_fetcher.rb
|
|
78
|
+
- lib/aireview/dry_run_report.rb
|
|
75
79
|
- lib/aireview/errors.rb
|
|
76
80
|
- lib/aireview/gitlab_client.rb
|
|
77
81
|
- lib/aireview/jira_client.rb
|
|
@@ -96,6 +100,7 @@ metadata:
|
|
|
96
100
|
source_code_uri: https://github.com/DenisDenis9331/aireview
|
|
97
101
|
changelog_uri: https://github.com/DenisDenis9331/aireview/blob/main/CHANGELOG.md
|
|
98
102
|
bug_tracker_uri: https://github.com/DenisDenis9331/aireview/issues
|
|
103
|
+
funding_uri: https://ko-fi.com/denis1011101
|
|
99
104
|
rubygems_mfa_required: 'true'
|
|
100
105
|
post_install_message:
|
|
101
106
|
rdoc_options: []
|