xai-review 0.36.0__py3-none-any.whl → 0.38.0__py3-none-any.whl

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.

Potentially problematic release.


This version of xai-review might be problematic. Click here for more details.

Files changed (73) hide show
  1. ai_review/clients/{bitbucket → bitbucket_cloud}/client.py +8 -7
  2. ai_review/clients/{bitbucket → bitbucket_cloud}/pr/client.py +51 -39
  3. ai_review/clients/bitbucket_cloud/pr/schema/comments.py +59 -0
  4. ai_review/clients/{bitbucket → bitbucket_cloud}/pr/schema/files.py +7 -7
  5. ai_review/clients/bitbucket_cloud/pr/schema/pull_request.py +34 -0
  6. ai_review/clients/{bitbucket → bitbucket_cloud}/pr/schema/user.py +1 -1
  7. ai_review/clients/bitbucket_cloud/pr/types.py +44 -0
  8. ai_review/clients/{bitbucket → bitbucket_cloud}/tools.py +1 -1
  9. ai_review/clients/bitbucket_server/client.py +32 -0
  10. ai_review/clients/bitbucket_server/pr/client.py +163 -0
  11. ai_review/clients/bitbucket_server/pr/schema/changes.py +36 -0
  12. ai_review/clients/bitbucket_server/pr/schema/comments.py +55 -0
  13. ai_review/clients/bitbucket_server/pr/schema/pull_request.py +48 -0
  14. ai_review/clients/bitbucket_server/pr/schema/user.py +13 -0
  15. ai_review/clients/bitbucket_server/pr/types.py +44 -0
  16. ai_review/clients/bitbucket_server/tools.py +6 -0
  17. ai_review/clients/claude/client.py +1 -0
  18. ai_review/clients/gemini/client.py +1 -0
  19. ai_review/clients/gitea/client.py +4 -3
  20. ai_review/clients/github/client.py +2 -1
  21. ai_review/clients/gitlab/client.py +2 -1
  22. ai_review/clients/ollama/client.py +1 -0
  23. ai_review/clients/openai/v1/client.py +1 -0
  24. ai_review/clients/openai/v2/client.py +1 -0
  25. ai_review/clients/openrouter/client.py +1 -0
  26. ai_review/libs/config/http.py +2 -1
  27. ai_review/libs/config/vcs/base.py +23 -6
  28. ai_review/libs/config/vcs/{bitbucket.py → bitbucket_cloud.py} +2 -2
  29. ai_review/libs/config/vcs/bitbucket_server.py +13 -0
  30. ai_review/libs/constants/vcs_provider.py +2 -1
  31. ai_review/libs/http/client.py +1 -1
  32. ai_review/resources/pricing.yaml +4 -0
  33. ai_review/services/vcs/bitbucket_cloud/__init__.py +0 -0
  34. ai_review/services/vcs/{bitbucket → bitbucket_cloud}/adapter.py +2 -2
  35. ai_review/services/vcs/{bitbucket → bitbucket_cloud}/client.py +24 -21
  36. ai_review/services/vcs/bitbucket_server/__init__.py +0 -0
  37. ai_review/services/vcs/bitbucket_server/adapter.py +27 -0
  38. ai_review/services/vcs/bitbucket_server/client.py +263 -0
  39. ai_review/services/vcs/factory.py +6 -3
  40. ai_review/tests/fixtures/clients/bitbucket_cloud.py +207 -0
  41. ai_review/tests/fixtures/clients/bitbucket_server.py +265 -0
  42. ai_review/tests/suites/clients/bitbucket_cloud/__init__.py +0 -0
  43. ai_review/tests/suites/clients/bitbucket_cloud/test_client.py +14 -0
  44. ai_review/tests/suites/clients/bitbucket_cloud/test_tools.py +31 -0
  45. ai_review/tests/suites/clients/bitbucket_server/__init__.py +0 -0
  46. ai_review/tests/suites/clients/bitbucket_server/test_client.py +14 -0
  47. ai_review/tests/suites/clients/bitbucket_server/test_tools.py +38 -0
  48. ai_review/tests/suites/services/vcs/bitbucket_cloud/__init__.py +0 -0
  49. ai_review/tests/suites/services/vcs/{bitbucket → bitbucket_cloud}/test_adapter.py +24 -24
  50. ai_review/tests/suites/services/vcs/{bitbucket → bitbucket_cloud}/test_client.py +51 -51
  51. ai_review/tests/suites/services/vcs/bitbucket_server/__init__.py +0 -0
  52. ai_review/tests/suites/services/vcs/bitbucket_server/test_adapter.py +115 -0
  53. ai_review/tests/suites/services/vcs/bitbucket_server/test_client.py +201 -0
  54. ai_review/tests/suites/services/vcs/test_factory.py +11 -4
  55. xai_review-0.38.0.dist-info/METADATA +519 -0
  56. {xai_review-0.36.0.dist-info → xai_review-0.38.0.dist-info}/RECORD +66 -44
  57. ai_review/clients/bitbucket/pr/schema/comments.py +0 -63
  58. ai_review/clients/bitbucket/pr/schema/pull_request.py +0 -34
  59. ai_review/clients/bitbucket/pr/types.py +0 -44
  60. ai_review/tests/fixtures/clients/bitbucket.py +0 -204
  61. ai_review/tests/suites/clients/bitbucket/test_client.py +0 -14
  62. ai_review/tests/suites/clients/bitbucket/test_tools.py +0 -31
  63. xai_review-0.36.0.dist-info/METADATA +0 -317
  64. /ai_review/clients/{bitbucket → bitbucket_cloud}/__init__.py +0 -0
  65. /ai_review/clients/{bitbucket → bitbucket_cloud}/pr/__init__.py +0 -0
  66. /ai_review/clients/{bitbucket → bitbucket_cloud}/pr/schema/__init__.py +0 -0
  67. /ai_review/{services/vcs/bitbucket → clients/bitbucket_server}/__init__.py +0 -0
  68. /ai_review/{tests/suites/clients/bitbucket → clients/bitbucket_server/pr}/__init__.py +0 -0
  69. /ai_review/{tests/suites/services/vcs/bitbucket → clients/bitbucket_server/pr/schema}/__init__.py +0 -0
  70. {xai_review-0.36.0.dist-info → xai_review-0.38.0.dist-info}/WHEEL +0 -0
  71. {xai_review-0.36.0.dist-info → xai_review-0.38.0.dist-info}/entry_points.txt +0 -0
  72. {xai_review-0.36.0.dist-info → xai_review-0.38.0.dist-info}/licenses/LICENSE +0 -0
  73. {xai_review-0.36.0.dist-info → xai_review-0.38.0.dist-info}/top_level.txt +0 -0
@@ -1,317 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: xai-review
3
- Version: 0.36.0
4
- Summary: AI-powered code review tool for GitHub, GitLab, Bitbucket and Gitea — built with LLMs like OpenAI, Claude, Gemini, Ollama, and OpenRouter
5
- Author-email: Nikita Filonov <nikita.filonov@example.com>
6
- Maintainer-email: Nikita Filonov <nikita.filonov@example.com>
7
- License: Apache-2.0
8
- Project-URL: Issues, https://github.com/Nikita-Filonov/ai-review/issues
9
- Project-URL: Homepage, https://github.com/Nikita-Filonov/ai-review
10
- Project-URL: Repository, https://github.com/Nikita-Filonov/ai-review
11
- Keywords: ai,code review,llm,openai,claude,gemini,ollama,openrouter,ci/cd,gitlab,github,gitea,bitbucket
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.11
14
- Classifier: Programming Language :: Python :: 3.12
15
- Classifier: Intended Audience :: Developers
16
- Classifier: Topic :: Software Development :: Quality Assurance
17
- Classifier: Topic :: Software Development :: Testing
18
- Classifier: License :: OSI Approved :: Apache Software License
19
- Classifier: Operating System :: OS Independent
20
- Requires-Python: >=3.11
21
- Description-Content-Type: text/markdown
22
- License-File: LICENSE
23
- Requires-Dist: typer
24
- Requires-Dist: httpx
25
- Requires-Dist: pyyaml
26
- Requires-Dist: loguru
27
- Requires-Dist: aiofiles
28
- Requires-Dist: pydantic
29
- Requires-Dist: pydantic-settings
30
- Provides-Extra: test
31
- Requires-Dist: pytest; extra == "test"
32
- Requires-Dist: pytest-asyncio; extra == "test"
33
- Dynamic: license-file
34
-
35
- # AI Review
36
-
37
- AI-powered code review tool.
38
-
39
- [![CI](https://github.com/Nikita-Filonov/ai-review/actions/workflows/workflow-test.yml/badge.svg)](https://github.com/Nikita-Filonov/ai-review/actions/workflows/workflow-test.yml)
40
- [![codecov](https://codecov.io/gh/Nikita-Filonov/ai-review/branch/main/graph/badge.svg)](https://codecov.io/gh/Nikita-Filonov/ai-review)
41
- [![PyPI version](https://img.shields.io/pypi/v/xai-review.svg)](https://pypi.org/project/xai-review/)
42
- [![License](https://img.shields.io/github/license/Nikita-Filonov/ai-review)](./LICENSE)
43
- [![GitHub stars](https://img.shields.io/github/stars/Nikita-Filonov/ai-review?style=social)](https://github.com/Nikita-Filonov/ai-review/stargazers)
44
-
45
- _Made with ❤️ by [@NikitaFilonov](https://t.me/sound_right)_
46
-
47
- ---
48
-
49
- ## 📑 Table of Contents
50
-
51
- - ✨ [About](#-about)
52
- - 🧪 [Live Preview](#-live-preview)
53
- - 🚀 [Quick Start](#-quick-start)
54
- - ⚙️ [️CI/CD Integration](#-cicd-integration)
55
- - 🚀 [GitHub Actions](#-github-actions)
56
- - 🚀 [GitLab CI/CD](#-gitlab-cicd)
57
- - 📘 [Documentation](#-documentation)
58
- - ⚠️ [Privacy & Responsibility Notice](#-privacy--responsibility-notice)
59
-
60
- ---
61
-
62
- ## ✨ About
63
-
64
- **AI Review** is a developer tool that brings **AI-powered code review** directly into your workflow. It helps teams
65
- improve code quality, enforce consistency, and speed up the review process.
66
-
67
- ✨ Key features:
68
-
69
- - **Multiple LLM providers** — choose between **OpenAI**, **Claude**, **Gemini**, **Ollama**, or **OpenRouter**, and
70
- switch anytime.
71
- - **VCS integration** — works out of the box with **GitLab**, **GitHub**, **Bitbucket**, and **Gitea**.
72
- - **Customizable prompts** — adapt inline, context, and summary reviews to match your team’s coding guidelines.
73
- - **Reply modes** — AI can now **participate in existing review threads**, adding follow-up replies in both inline and
74
- summary discussions.
75
- - **Flexible configuration** — supports `YAML`, `JSON`, and `ENV`, with seamless overrides in CI/CD pipelines.
76
- - **AI Review runs fully client-side** — it never proxies or inspects your requests.
77
-
78
- AI Review runs automatically in your CI/CD pipeline and posts both **inline comments**, **summary reviews**, and now
79
- **AI-generated replies** directly inside your merge requests. This makes reviews faster, more conversational, and still
80
- fully under human control.
81
-
82
- ---
83
-
84
- ## 🧪 Live Preview
85
-
86
- Curious how **AI Review** works in practice? Here are three real Pull Requests reviewed entirely by the tool — one per
87
- mode:
88
-
89
- | Mode | Description | 🐙 GitHub | 🦊 GitLab |
90
- |------------------|----------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|----------------------------------------------------------------------------|
91
- | 🧩 Inline | Adds **line-by-line comments** directly in the diff. Focuses on specific code changes. | [View on GitHub](https://github.com/Nikita-Filonov/ai-review/pull/4) | [View on GitLab](https://gitlab.com/core8332439/review/-/merge_requests/2) |
92
- | 🧠 Context | Performs a **broader analysis across multiple files**, detecting cross-file issues and inconsistencies. | [View on GitHub](https://github.com/Nikita-Filonov/ai-review/pull/5) | [View on GitLab](https://gitlab.com/core8332439/review/-/merge_requests/3) |
93
- | 📄 Summary | Posts a **concise high-level summary** with key highlights, strengths, and major issues. | [View on GitHub](https://github.com/Nikita-Filonov/ai-review/pull/6) | [View on GitLab](https://gitlab.com/core8332439/review/-/merge_requests/4) |
94
- | 💬 Inline Reply | Generates a **context-aware reply** to an existing inline comment thread. Can clarify decisions, propose fixes, or provide code suggestions. | [View on GitHub](https://github.com/Nikita-Filonov/ai-review/pull/16) | [View on GitLab](https://gitlab.com/core8332439/review/-/merge_requests/5) |
95
- | 💬 Summary Reply | Continues the **summary-level review discussion**, responding to reviewer comments with clarifications, rationale, or actionable next steps. | [View on GitHub](https://github.com/Nikita-Filonov/ai-review/pull/17) | [View on GitLab](https://gitlab.com/core8332439/review/-/merge_requests/6) |
96
-
97
- 👉 Each review was generated automatically via GitHub Actions using the corresponding mode:
98
-
99
- ```bash
100
- ai-review run-inline
101
- ai-review run-summary
102
- ai-review run-context
103
- ai-review run-inline-reply
104
- ai-review run-summary-reply
105
- ```
106
-
107
- ---
108
-
109
- ## 🚀 Quick Start
110
-
111
- Install via **pip**:
112
-
113
- ```bash
114
- pip install xai-review
115
- ```
116
-
117
- 📦 Available on [PyPI](https://pypi.org/project/xai-review/)
118
-
119
- ---
120
-
121
- Or run directly via Docker:
122
-
123
- ```bash
124
- docker run --rm -v $(pwd):/app nikitafilonov/ai-review:latest ai-review run-summary
125
- ```
126
-
127
- 🐳 Pull from [DockerHub](https://hub.docker.com/r/nikitafilonov/ai-review)
128
-
129
- 👉 Before running, create a basic configuration file [.ai-review.yaml](./docs/configs/.ai-review.yaml) in the root of
130
- your project:
131
-
132
- ```yaml
133
- llm:
134
- provider: OPENAI
135
-
136
- meta:
137
- model: gpt-4o-mini
138
- max_tokens: 1200
139
- temperature: 0.3
140
-
141
- http_client:
142
- timeout: 120
143
- api_url: https://api.openai.com/v1
144
- api_token: ${OPENAI_API_KEY}
145
-
146
- vcs:
147
- provider: GITLAB
148
-
149
- pipeline:
150
- project_id: "1"
151
- merge_request_id: "100"
152
-
153
- http_client:
154
- timeout: 120
155
- api_url: https://gitlab.com
156
- api_token: ${GITLAB_API_TOKEN}
157
- ```
158
-
159
- 👉 This will:
160
-
161
- - Run AI Review against your codebase.
162
- - Generate inline and/or summary comments (depending on the selected mode).
163
- - Use your chosen LLM provider (OpenAI GPT-4o-mini in this example).
164
-
165
- > **Note:** Running `ai-review run` executes the full review (inline + summary).
166
- > To run only one mode, use the dedicated subcommands:
167
- > - ai-review run-inline
168
- > - ai-review run-context
169
- > - ai-review run-summary
170
- > - ai-review run-inline-reply
171
- > - ai-review run-summary-reply
172
-
173
- ---
174
-
175
- AI Review can be configured via `.ai-review.yaml`, `.ai-review.json`, or `.env`. See [./docs/configs](./docs/configs)
176
- for complete, ready-to-use examples.
177
-
178
- Key things you can customize:
179
-
180
- - **LLM provider** — OpenAI, Gemini, Claude, Ollama, or OpenRouter
181
- - **Model settings** — model name, temperature, max tokens
182
- - **VCS integration** — works out of the box with **GitLab**, **GitHub**, **Bitbucket**, and **Gitea**
183
- - **Review policy** — which files to include/exclude, review modes
184
- - **Prompts** — inline/context/summary prompt templates
185
-
186
- 👉 Minimal configuration is enough to get started. Use the full reference configs if you want fine-grained control (
187
- timeouts, artifacts, logging, etc.).
188
-
189
- ---
190
-
191
- ## ⚙️ CI/CD Integration
192
-
193
- AI Review works out-of-the-box with major CI providers.
194
- Use these snippets to run AI Review automatically on Pull/Merge Requests.
195
- Each integration uses environment variables for LLM and VCS configuration.
196
-
197
- > For full configuration details (timeouts, artifacts, logging, prompt overrides), see [./docs/configs](./docs/configs).
198
-
199
- ### 🚀 GitHub Actions
200
-
201
- Add a workflow like this (manual trigger from **Actions** tab):
202
-
203
- ```yaml
204
- name: AI Review
205
-
206
- on:
207
- workflow_dispatch:
208
- inputs:
209
- review-command:
210
- type: choice
211
- default: run
212
- options: [ run, run-inline, run-context, run-summary, run-inline-reply, run-summary-reply ]
213
- pull-request-number:
214
- type: string
215
- required: true
216
- jobs:
217
- ai-review:
218
- runs-on: ubuntu-latest
219
- steps:
220
- - uses: actions/checkout@v4
221
- with:
222
- fetch-depth: 0
223
-
224
- - uses: Nikita-Filonov/ai-review@v0.36.0
225
- with:
226
- review-command: ${{ inputs.review-command }}
227
- env:
228
- # --- LLM configuration ---
229
- LLM__PROVIDER: "OPENAI"
230
- LLM__META__MODEL: "gpt-4o-mini"
231
- LLM__META__MAX_TOKENS: "15000"
232
- LLM__META__TEMPERATURE: "0.3"
233
- LLM__HTTP_CLIENT__API_URL: "https://api.openai.com/v1"
234
- LLM__HTTP_CLIENT__API_TOKEN: ${{ secrets.OPENAI_API_KEY }}
235
-
236
- # --- GitHub integration ---
237
- VCS__PROVIDER: "GITHUB"
238
- VCS__PIPELINE__OWNER: ${{ github.repository_owner }}
239
- VCS__PIPELINE__REPO: ${{ github.event.repository.name }}
240
- VCS__PIPELINE__PULL_NUMBER: ${{ inputs.pull-request-number }}
241
- VCS__HTTP_CLIENT__API_URL: "https://api.github.com"
242
- VCS__HTTP_CLIENT__API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
243
-
244
- ```
245
-
246
- 🔗 Full example: [./docs/ci/github.yaml](./docs/ci/github.yaml)
247
-
248
- ### 🚀 GitLab CI/CD
249
-
250
- For GitLab users:
251
-
252
- ```yaml
253
- ai-review:
254
- when: manual
255
- stage: review
256
- image: nikitafilonov/ai-review:latest
257
- rules:
258
- - if: '$CI_MERGE_REQUEST_IID'
259
- script:
260
- - ai-review run
261
- variables:
262
- # --- LLM configuration ---
263
- LLM__PROVIDER: "OPENAI"
264
- LLM__META__MODEL: "gpt-4o-mini"
265
- LLM__META__MAX_TOKENS: "15000"
266
- LLM__META__TEMPERATURE: "0.3"
267
- LLM__HTTP_CLIENT__API_URL: "https://api.openai.com/v1"
268
- LLM__HTTP_CLIENT__API_TOKEN: "$OPENAI_API_KEY"
269
-
270
- # --- GitLab integration ---
271
- VCS__PROVIDER: "GITLAB"
272
- VCS__PIPELINE__PROJECT_ID: "$CI_PROJECT_ID"
273
- VCS__PIPELINE__MERGE_REQUEST_ID: "$CI_MERGE_REQUEST_IID"
274
- VCS__HTTP_CLIENT__API_URL: "$CI_SERVER_URL"
275
- VCS__HTTP_CLIENT__API_TOKEN: "$CI_JOB_TOKEN"
276
- allow_failure: true # Optional: don't block pipeline if AI review fails
277
-
278
- ```
279
-
280
- 🔗 Full example: [./docs/ci/gitlab.yaml](./docs/ci/gitlab.yaml)
281
-
282
- ---
283
-
284
- ## 📘 Documentation
285
-
286
- See these folders for reference templates and full configuration options:
287
-
288
- - [./docs/ci](./docs/ci) — CI/CD integration templates (GitHub Actions, GitLab CI)
289
- - [./docs/cli](./docs/cli) — CLI command reference and usage examples
290
- - [./docs/hooks](./docs/hooks) — hook reference and lifecycle events
291
- - [./docs/configs](./docs/configs) — full configuration examples (`.yaml`, `.json`, `.env`)
292
- - [./docs/prompts](./docs/prompts) — prompt templates for Python/Go (light & strict modes)
293
-
294
- ---
295
-
296
- ## ⚠️ Privacy & Responsibility Notice
297
-
298
- AI Review does **not store**, **log**, or **transmit** your source code to any external service other than the **LLM
299
- provider** explicitly configured in your `.ai-review.yaml`.
300
-
301
- All data is sent **directly** from your CI/CD environment to the selected LLM API endpoint (e.g. OpenAI, Gemini,
302
- Claude, OpenRouter). No intermediary servers or storage layers are involved.
303
-
304
- If you use **Ollama**, requests are sent to your **local or self-hosted Ollama runtime**
305
- (by default `http://localhost:11434`). This allows you to run reviews completely **offline**, keeping all data strictly
306
- inside your infrastructure.
307
-
308
- > ⚠️ Please ensure you use proper API tokens and avoid exposing corporate or personal secrets.
309
- > If you accidentally leak private code or credentials due to incorrect configuration (e.g., using a personal key
310
- > instead of an enterprise one), it is **your responsibility** — the tool does not retain or share any data by itself.
311
-
312
- ---
313
-
314
- 🧠 **AI Review** — open-source AI-powered code reviewer
315
-
316
- - 📦 [PyPI](https://pypi.org/project/xai-review/)
317
- - 🐳 [DockerHub](https://hub.docker.com/r/nikitafilonov/ai-review)