aireview 2.1.0 → 2.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.
@@ -26,7 +26,8 @@ module Aireview
26
26
  primary = ModelCandidate.new(
27
27
  provider: settings.fetch(:provider).to_s,
28
28
  model: settings[:model],
29
- max_prompt_chars: settings.fetch(:max_prompt_chars)
29
+ max_prompt_chars: settings.fetch(:max_prompt_chars),
30
+ api_base: ModelCandidate.api_base(settings[:api_base], "llm.#{stage}.api_base")
30
31
  )
31
32
  return [primary] if only_primary
32
33
 
@@ -34,7 +35,8 @@ module Aireview
34
35
  end
35
36
 
36
37
  # A reserve without a provider inherits the stage provider, without a
37
- # limit its limit.
38
+ # limit its limit. The address is not inherited: a reserve on another
39
+ # server names its own.
38
40
  def self.fallbacks(stage, items, primary)
39
41
  items.each_with_index.map do |item, index|
40
42
  item = ModelCandidate.parse_item(item)
@@ -46,7 +48,8 @@ module Aireview
46
48
  ModelCandidate.new(
47
49
  provider: (item['provider'] || primary.provider).to_s,
48
50
  model: item['model'].to_s,
49
- max_prompt_chars: limit.nil? ? primary.max_prompt_chars : positive_limit(limit, name)
51
+ max_prompt_chars: limit.nil? ? primary.max_prompt_chars : positive_limit(limit, name),
52
+ api_base: ModelCandidate.api_base(item['api_base'], "#{name}.api_base")
50
53
  )
51
54
  end
52
55
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Aireview
3
- VERSION = '2.1.0'
3
+ VERSION = '2.2.0'
4
4
  end
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: 2.1.0
4
+ version: 2.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-25 00:00:00.000000000 Z
11
+ date: 2026-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -60,8 +60,9 @@ dependencies:
60
60
  version: 2.0.0
61
61
  description: 'Reviews self-hosted GitLab merge requests with a two-pass LLM pipeline:
62
62
  the first pass finds candidate findings, the second one critiques them and drops
63
- the weak ones. Supports Gemini and local Ollama, optional Jira context and posting
64
- a single updatable review note back to the merge request.'
63
+ the weak ones. Supports Gemini, Ollama, OpenAI, Anthropic, OpenRouter and OpenAI-compatible
64
+ servers, Jev as the critic, optional Jira context and posting a single updatable
65
+ review note back to the merge request.'
65
66
  email:
66
67
  executables:
67
68
  - aireview
@@ -80,15 +81,21 @@ files:
80
81
  - lib/aireview/cli.rb
81
82
  - lib/aireview/config.rb
82
83
  - lib/aireview/config_fallbacks.rb
84
+ - lib/aireview/config_jev.rb
83
85
  - lib/aireview/config_layers.rb
84
86
  - lib/aireview/config_limits.rb
85
87
  - lib/aireview/config_loader.rb
86
88
  - lib/aireview/context_budget.rb
87
89
  - lib/aireview/context_builder.rb
88
90
  - lib/aireview/diff_fetcher.rb
91
+ - lib/aireview/dry_run_prompts.rb
89
92
  - lib/aireview/dry_run_report.rb
90
93
  - lib/aireview/errors.rb
91
94
  - lib/aireview/gitlab_client.rb
95
+ - lib/aireview/jev_client.rb
96
+ - lib/aireview/jev_critic.rb
97
+ - lib/aireview/jev_shadow.rb
98
+ - lib/aireview/jev_stage.rb
92
99
  - lib/aireview/jira_client.rb
93
100
  - lib/aireview/llm_client.rb
94
101
  - lib/aireview/llm_failure.rb
@@ -101,6 +108,7 @@ files:
101
108
  - lib/aireview/output_schemas.rb
102
109
  - lib/aireview/prompts/critique.txt
103
110
  - lib/aireview/prompts/generate.txt
111
+ - lib/aireview/prompts/jev_questions.yml
104
112
  - lib/aireview/publisher.rb
105
113
  - lib/aireview/result_parser.rb
106
114
  - lib/aireview/review_marker.rb