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.
@@ -6,11 +6,12 @@ require 'timeout'
6
6
 
7
7
  module Aireview
8
8
  class Reviewer
9
- MAX_TRANSIENT_RETRIES = 2
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
- OVERLOADED_RETRY_DELAY_RANGE = 90.0..150.0
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: rand(OVERLOADED_RETRY_DELAY_RANGE),
189
- provider_delay: nil,
190
- multiplier: nil,
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
- return ' (overloaded backoff)' if retry_delay[:strategy] == :overloaded
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(
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Aireview
3
- VERSION = '0.1.0'
3
+ VERSION = '0.2.0'
4
4
  end
data/lib/aireview.rb CHANGED
@@ -20,4 +20,5 @@ require_relative 'aireview/gitlab_client'
20
20
  require_relative 'aireview/jira_client'
21
21
  require_relative 'aireview/review_marker'
22
22
  require_relative 'aireview/publisher'
23
+ require_relative 'aireview/dry_run_report'
23
24
  require_relative 'aireview/cli'
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.1.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 00:00:00.000000000 Z
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: []