xai-review 0.15.0__tar.gz → 0.17.0__tar.gz

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 (189) hide show
  1. xai_review-0.17.0/PKG-INFO +260 -0
  2. xai_review-0.17.0/README.md +236 -0
  3. {xai_review-0.15.0 → xai_review-0.17.0}/pyproject.toml +1 -1
  4. xai_review-0.17.0/xai_review.egg-info/PKG-INFO +260 -0
  5. xai_review-0.15.0/PKG-INFO +0 -303
  6. xai_review-0.15.0/README.md +0 -279
  7. xai_review-0.15.0/xai_review.egg-info/PKG-INFO +0 -303
  8. {xai_review-0.15.0 → xai_review-0.17.0}/LICENSE +0 -0
  9. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/__init__.py +0 -0
  10. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/cli/__init__.py +0 -0
  11. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/cli/commands/__init__.py +0 -0
  12. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/cli/commands/run_context_review.py +0 -0
  13. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/cli/commands/run_inline_review.py +0 -0
  14. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/cli/commands/run_review.py +0 -0
  15. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/cli/commands/run_summary_review.py +0 -0
  16. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/cli/main.py +0 -0
  17. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/__init__.py +0 -0
  18. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/claude/__init__.py +0 -0
  19. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/claude/client.py +0 -0
  20. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/claude/schema.py +0 -0
  21. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gemini/__init__.py +0 -0
  22. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gemini/client.py +0 -0
  23. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gemini/schema.py +0 -0
  24. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/github/__init__.py +0 -0
  25. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/github/client.py +0 -0
  26. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/github/pr/__init__.py +0 -0
  27. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/github/pr/client.py +0 -0
  28. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/github/pr/schema/__init__.py +0 -0
  29. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/github/pr/schema/comments.py +0 -0
  30. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/github/pr/schema/files.py +0 -0
  31. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/github/pr/schema/pull_request.py +0 -0
  32. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/github/pr/schema/reviews.py +0 -0
  33. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gitlab/__init__.py +0 -0
  34. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gitlab/client.py +0 -0
  35. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gitlab/mr/__init__.py +0 -0
  36. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gitlab/mr/client.py +0 -0
  37. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gitlab/mr/schema/__init__.py +0 -0
  38. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gitlab/mr/schema/changes.py +0 -0
  39. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gitlab/mr/schema/comments.py +0 -0
  40. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/gitlab/mr/schema/discussions.py +0 -0
  41. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/openai/__init__.py +0 -0
  42. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/openai/client.py +0 -0
  43. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/clients/openai/schema.py +0 -0
  44. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/config.py +0 -0
  45. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/__init__.py +0 -0
  46. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/asynchronous/__init__.py +0 -0
  47. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/asynchronous/gather.py +0 -0
  48. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/__init__.py +0 -0
  49. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/artifacts.py +0 -0
  50. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/base.py +0 -0
  51. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/claude.py +0 -0
  52. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/gemini.py +0 -0
  53. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/github.py +0 -0
  54. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/gitlab.py +0 -0
  55. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/http.py +0 -0
  56. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/llm.py +0 -0
  57. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/logger.py +0 -0
  58. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/openai.py +0 -0
  59. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/prompt.py +0 -0
  60. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/review.py +0 -0
  61. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/config/vcs.py +0 -0
  62. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/constants/__init__.py +0 -0
  63. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/constants/llm_provider.py +0 -0
  64. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/constants/vcs_provider.py +0 -0
  65. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/diff/__init__.py +0 -0
  66. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/diff/models.py +0 -0
  67. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/diff/parser.py +0 -0
  68. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/diff/tools.py +0 -0
  69. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/http/__init__.py +0 -0
  70. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/http/client.py +0 -0
  71. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/http/event_hooks/__init__.py +0 -0
  72. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/http/event_hooks/base.py +0 -0
  73. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/http/event_hooks/logger.py +0 -0
  74. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/http/handlers.py +0 -0
  75. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/http/transports/__init__.py +0 -0
  76. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/http/transports/retry.py +0 -0
  77. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/json.py +0 -0
  78. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/logger.py +0 -0
  79. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/resources.py +0 -0
  80. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/template/__init__.py +0 -0
  81. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/libs/template/render.py +0 -0
  82. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/prompts/__init__.py +0 -0
  83. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/prompts/default_context.md +0 -0
  84. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/prompts/default_inline.md +0 -0
  85. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/prompts/default_summary.md +0 -0
  86. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/prompts/default_system_context.md +0 -0
  87. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/prompts/default_system_inline.md +0 -0
  88. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/prompts/default_system_summary.md +0 -0
  89. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/resources/__init__.py +0 -0
  90. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/resources/pricing.yaml +0 -0
  91. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/__init__.py +0 -0
  92. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/artifacts/__init__.py +0 -0
  93. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/artifacts/schema.py +0 -0
  94. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/artifacts/service.py +0 -0
  95. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/artifacts/tools.py +0 -0
  96. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/cost/__init__.py +0 -0
  97. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/cost/schema.py +0 -0
  98. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/cost/service.py +0 -0
  99. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/diff/__init__.py +0 -0
  100. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/diff/renderers.py +0 -0
  101. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/diff/schema.py +0 -0
  102. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/diff/service.py +0 -0
  103. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/diff/tools.py +0 -0
  104. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/git/__init__.py +0 -0
  105. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/git/service.py +0 -0
  106. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/git/types.py +0 -0
  107. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/llm/__init__.py +0 -0
  108. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/llm/claude/__init__.py +0 -0
  109. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/llm/claude/client.py +0 -0
  110. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/llm/factory.py +0 -0
  111. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/llm/gemini/__init__.py +0 -0
  112. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/llm/gemini/client.py +0 -0
  113. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/llm/openai/__init__.py +0 -0
  114. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/llm/openai/client.py +0 -0
  115. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/llm/types.py +0 -0
  116. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/prompt/__init__.py +0 -0
  117. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/prompt/adapter.py +0 -0
  118. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/prompt/schema.py +0 -0
  119. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/prompt/service.py +0 -0
  120. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/prompt/tools.py +0 -0
  121. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/review/__init__.py +0 -0
  122. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/review/inline/__init__.py +0 -0
  123. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/review/inline/schema.py +0 -0
  124. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/review/inline/service.py +0 -0
  125. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/review/policy/__init__.py +0 -0
  126. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/review/policy/service.py +0 -0
  127. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/review/service.py +0 -0
  128. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/review/summary/__init__.py +0 -0
  129. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/review/summary/schema.py +0 -0
  130. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/review/summary/service.py +0 -0
  131. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/vcs/__init__.py +0 -0
  132. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/vcs/factory.py +0 -0
  133. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/vcs/github/__init__.py +0 -0
  134. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/vcs/github/client.py +0 -0
  135. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/vcs/gitlab/__init__.py +0 -0
  136. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/vcs/gitlab/client.py +0 -0
  137. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/services/vcs/types.py +0 -0
  138. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/__init__.py +0 -0
  139. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/fixtures/__init__.py +0 -0
  140. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/fixtures/git.py +0 -0
  141. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/__init__.py +0 -0
  142. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/__init__.py +0 -0
  143. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/claude/__init__.py +0 -0
  144. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/claude/test_client.py +0 -0
  145. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/claude/test_schema.py +0 -0
  146. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/gemini/__init__.py +0 -0
  147. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/gemini/test_client.py +0 -0
  148. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/gemini/test_schema.py +0 -0
  149. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/github/__init__.py +0 -0
  150. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/github/test_client.py +0 -0
  151. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/gitlab/__init__.py +0 -0
  152. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/gitlab/test_client.py +0 -0
  153. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/openai/__init__.py +0 -0
  154. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/openai/test_client.py +0 -0
  155. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/clients/openai/test_schema.py +0 -0
  156. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/libs/__init__.py +0 -0
  157. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/libs/config/__init__.py +0 -0
  158. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/libs/config/test_prompt.py +0 -0
  159. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/libs/diff/__init__.py +0 -0
  160. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/libs/diff/test_models.py +0 -0
  161. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/libs/diff/test_parser.py +0 -0
  162. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/libs/diff/test_tools.py +0 -0
  163. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/libs/template/__init__.py +0 -0
  164. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/libs/template/test_render.py +0 -0
  165. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/libs/test_json.py +0 -0
  166. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/__init__.py +0 -0
  167. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/diff/__init__.py +0 -0
  168. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/diff/test_renderers.py +0 -0
  169. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/diff/test_service.py +0 -0
  170. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/diff/test_tools.py +0 -0
  171. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/prompt/__init__.py +0 -0
  172. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/prompt/test_schema.py +0 -0
  173. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/prompt/test_service.py +0 -0
  174. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/prompt/test_tools.py +0 -0
  175. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/review/__init__.py +0 -0
  176. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/review/inline/__init__.py +0 -0
  177. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/review/inline/test_schema.py +0 -0
  178. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/review/inline/test_service.py +0 -0
  179. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/review/policy/__init__.py +0 -0
  180. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/review/policy/test_service.py +0 -0
  181. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/review/summary/__init__.py +0 -0
  182. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/review/summary/test_schema.py +0 -0
  183. {xai_review-0.15.0 → xai_review-0.17.0}/ai_review/tests/suites/services/review/summary/test_service.py +0 -0
  184. {xai_review-0.15.0 → xai_review-0.17.0}/setup.cfg +0 -0
  185. {xai_review-0.15.0 → xai_review-0.17.0}/xai_review.egg-info/SOURCES.txt +0 -0
  186. {xai_review-0.15.0 → xai_review-0.17.0}/xai_review.egg-info/dependency_links.txt +0 -0
  187. {xai_review-0.15.0 → xai_review-0.17.0}/xai_review.egg-info/entry_points.txt +0 -0
  188. {xai_review-0.15.0 → xai_review-0.17.0}/xai_review.egg-info/requires.txt +0 -0
  189. {xai_review-0.15.0 → xai_review-0.17.0}/xai_review.egg-info/top_level.txt +0 -0
@@ -0,0 +1,260 @@
1
+ Metadata-Version: 2.4
2
+ Name: xai-review
3
+ Version: 0.17.0
4
+ Summary: AI-powered code review tool
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
12
+ Requires-Python: >=3.11
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Requires-Dist: typer
16
+ Requires-Dist: httpx
17
+ Requires-Dist: pyyaml
18
+ Requires-Dist: pytest
19
+ Requires-Dist: loguru
20
+ Requires-Dist: aiofiles
21
+ Requires-Dist: pydantic
22
+ Requires-Dist: pydantic-settings
23
+ Dynamic: license-file
24
+
25
+ # AI Review
26
+
27
+ AI-powered code review tool.
28
+
29
+ [![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)
30
+ [![codecov](https://codecov.io/gh/Nikita-Filonov/ai-review/branch/main/graph/badge.svg)](https://codecov.io/gh/Nikita-Filonov/ai-review)
31
+ [![PyPI version](https://img.shields.io/pypi/v/xai-review.svg)](https://pypi.org/project/xai-review/)
32
+ [![License](https://img.shields.io/github/license/Nikita-Filonov/ai-review)](./LICENSE)
33
+ [![GitHub stars](https://img.shields.io/github/stars/Nikita-Filonov/ai-review?style=social)](https://github.com/Nikita-Filonov/ai-review/stargazers)
34
+
35
+ _Made with ❤️ by [@NikitaFilonov](https://t.me/sound_right)_
36
+
37
+ ---
38
+
39
+ ## 📑 Table of Contents
40
+
41
+ - ✨ [About](#-about)
42
+ - 🚀 [Quick Start](#-quick-start)
43
+ - ⚙️ [️CI/CD Integration](#-cicd-integration)
44
+ - 🚀 [GitHub Actions](#-github-actions)
45
+ - 🚀 [GitLab CI/CD](#-gitlab-cicd)
46
+ - 📘 [Documentation](#-documentation)
47
+ - ⚠️ [Privacy & Responsibility Notice](#-privacy--responsibility-notice)
48
+
49
+ ---
50
+
51
+ ## ✨ About
52
+
53
+ **AI Review** is a developer tool that brings **AI-powered code review** directly into your workflow. It helps teams
54
+ improve code quality, enforce consistency, and speed up the review process.
55
+
56
+ ✨ Key features:
57
+
58
+ - **Multiple LLM providers** — choose between **OpenAI**, **Claude**, and **Gemini**, or switch anytime.
59
+ - **VCS integration** — works out of the box with GitLab, GitHub (more providers coming).
60
+ - **Customizable prompts** — adapt inline, context, and summary reviews to match your team’s coding guidelines.
61
+ - **Flexible configuration** — supports `YAML`, `JSON`, and `ENV`, with seamless overrides in CI/CD pipelines.
62
+ - **AI Review runs fully client-side** — it never proxies or inspects your requests.
63
+
64
+ AI Review runs automatically in your CI/CD pipeline and posts both **inline comments** and **summary reviews** right
65
+ inside your merge requests. This makes reviews faster, more consistent, and less error-prone — while still leaving the
66
+ final decision to human reviewers.
67
+
68
+ ---
69
+
70
+ ## 🚀 Quick Start
71
+
72
+ Install via **pip**:
73
+
74
+ ```bash
75
+ pip install xai-review
76
+ ```
77
+
78
+ Or run directly via Docker:
79
+
80
+ ```bash
81
+ docker run --rm -v $(pwd):/app nikitafilonov/ai-review:latest run-summary
82
+ ```
83
+
84
+ 👉 Before running, create a basic configuration file [.ai-review.yaml](./docs/configs/.ai-review.yaml) in the root of
85
+ your project:
86
+
87
+ ```yaml
88
+ llm:
89
+ provider: OPENAI
90
+
91
+ meta:
92
+ model: gpt-4o-mini
93
+ max_tokens: 1200
94
+ temperature: 0.3
95
+
96
+ http_client:
97
+ timeout: 120
98
+ api_url: https://api.openai.com/v1
99
+ api_token: ${OPENAI_API_KEY}
100
+
101
+ vcs:
102
+ provider: GITLAB
103
+
104
+ pipeline:
105
+ project_id: 1
106
+ merge_request_id: 100
107
+
108
+ http_client:
109
+ timeout: 120
110
+ api_url: https://gitlab.com
111
+ api_token: ${GITLAB_API_TOKEN}
112
+ ```
113
+
114
+ 👉 This will:
115
+
116
+ - Run AI Review against your codebase.
117
+ - Generate inline and/or summary comments (depending on the selected mode).
118
+ - Use your chosen LLM provider (OpenAI GPT-4o-mini in this example).
119
+
120
+ > **Note:** Running `ai-review run` executes the full review (inline + summary).
121
+ > To run only one mode, use the dedicated subcommands:
122
+ > - ai-review run-inline
123
+ > - ai-review run-summary
124
+ > - ai-review run-context
125
+
126
+ ---
127
+
128
+ AI Review can be configured via `.ai-review.yaml`, `.ai-review.json`, or `.env`. See [./docs/configs](./docs/configs)
129
+ for complete, ready-to-use examples.
130
+
131
+ Key things you can customize:
132
+
133
+ - **LLM provider** — OpenAI, Gemini, or Claude
134
+ - **Model settings** — model name, temperature, max tokens
135
+ - **VCS integration** — GitLab (currently supported) with project/MR context
136
+ - **Review policy** — which files to include/exclude, review modes
137
+ - **Prompts** — inline/context/summary prompt templates
138
+
139
+ 👉 Minimal configuration is enough to get started. Use the full reference configs if you want fine-grained control (
140
+ timeouts, artifacts, logging, etc.).
141
+
142
+ ---
143
+
144
+ ## ⚙️ CI/CD Integration
145
+
146
+ AI Review works out-of-the-box with major CI providers.
147
+ Use these snippets to run AI Review automatically on Pull/Merge Requests.
148
+ Each integration uses environment variables for LLM and VCS configuration.
149
+
150
+ > For full configuration details (timeouts, artifacts, logging, prompt overrides), see [./docs/configs](./docs/configs).
151
+
152
+ ### 🚀 GitHub Actions
153
+
154
+ Add a workflow like this (manual trigger from **Actions** tab):
155
+
156
+ ```yaml
157
+ name: AI Review
158
+ on:
159
+ workflow_dispatch:
160
+ inputs:
161
+ review-command:
162
+ type: choice
163
+ default: run
164
+ options: [ run, run-inline, run-context, run-summary ]
165
+ pull-request-number:
166
+ type: string
167
+ required: true
168
+ jobs:
169
+ ai-review:
170
+ runs-on: ubuntu-latest
171
+ steps:
172
+ - uses: actions/checkout@v4
173
+ - uses: Nikita-Filonov/ai-review@v0.17.0
174
+ with:
175
+ review-command: ${{ inputs.review-command }}
176
+ env:
177
+ # --- LLM configuration ---
178
+ LLM__PROVIDER: "OPENAI"
179
+ LLM__META__MODEL: "gpt-4o-mini"
180
+ LLM__META__MAX_TOKENS: "15000"
181
+ LLM__META__TEMPERATURE: "0.3"
182
+ LLM__HTTP_CLIENT__API_URL: "https://api.openai.com/v1"
183
+ LLM__HTTP_CLIENT__API_TOKEN: ${{ secrets.OPENAI_API_KEY }}
184
+
185
+ # --- GitHub integration ---
186
+ VCS__PROVIDER: "GITHUB"
187
+ VCS__PIPELINE__OWNER: ${{ github.repository_owner }}
188
+ VCS__PIPELINE__REPO: ${{ github.event.repository.name }}
189
+ VCS__PIPELINE__PULL_NUMBER: ${{ inputs.pull-request-number }}
190
+ VCS__HTTP_CLIENT__API_URL: "https://api.github.com"
191
+ VCS__HTTP_CLIENT__API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
192
+
193
+ ```
194
+
195
+ 🔗 Full example: [./docs/ci/github.yaml](./docs/ci/github.yaml)
196
+
197
+ ### 🚀 GitLab CI/CD
198
+
199
+ For GitLab users:
200
+
201
+ ```yaml
202
+ ai-review:
203
+ when: manual
204
+ stage: review
205
+ image: nikitafilonov/ai-review:latest
206
+ rules:
207
+ - if: '$CI_MERGE_REQUEST_IID'
208
+ script:
209
+ - ai-review run
210
+ variables:
211
+ # --- LLM configuration ---
212
+ LLM__PROVIDER: "OPENAI"
213
+ LLM__META__MODEL: "gpt-4o-mini"
214
+ LLM__META__MAX_TOKENS: "15000"
215
+ LLM__META__TEMPERATURE: "0.3"
216
+ LLM__HTTP_CLIENT__API_URL: "https://api.openai.com/v1"
217
+ LLM__HTTP_CLIENT__API_TOKEN: "$OPENAI_API_KEY"
218
+
219
+ # --- GitLab integration ---
220
+ VCS__PROVIDER: "GITLAB"
221
+ VCS__PIPELINE__PROJECT_ID: "$CI_PROJECT_ID"
222
+ VCS__PIPELINE__MERGE_REQUEST_ID: "$CI_MERGE_REQUEST_IID"
223
+ VCS__HTTP_CLIENT__API_URL: "$CI_SERVER_URL"
224
+ VCS__HTTP_CLIENT__API_TOKEN: "$CI_JOB_TOKEN"
225
+ allow_failure: true # Optional: don't block pipeline if AI review fails
226
+
227
+ ```
228
+
229
+ 🔗 Full example: [./docs/ci/gitlab.yaml](./docs/ci/gitlab.yaml)
230
+
231
+ ---
232
+
233
+ ## 📘 Documentation
234
+
235
+ See these folders for reference templates and full configuration options:
236
+
237
+ - [./docs/ci](./docs/ci) — CI/CD integration templates (GitHub Actions, GitLab CI)
238
+ - [./docs/configs](./docs/configs) — full configuration examples (`.yaml`, `.json`, `.env`)
239
+ - [./docs/prompts](./docs/prompts) — prompt templates for Python/Go (light & strict modes)
240
+
241
+ ---
242
+
243
+ ## ⚠️ Privacy & Responsibility Notice
244
+
245
+ AI Review does **not store**, **log**, or **transmit** your source code to any external service other than the **LLM
246
+ provider** explicitly configured in your `.ai-review.yaml`.
247
+
248
+ All data is sent **directly** from your CI/CD environment to the selected LLM API endpoint (e.g. OpenAI, Gemini,
249
+ Claude). No intermediary servers or storage layers are involved.
250
+
251
+ > ⚠️ Please ensure you use proper API tokens and avoid exposing corporate or personal secrets.
252
+ > If you accidentally leak private code or credentials due to incorrect configuration (e.g., using a personal key
253
+ > instead of an enterprise one), it is **your responsibility** — the tool does not retain or share any data by itself.
254
+
255
+ ---
256
+
257
+ 🧠 **AI Review** — open-source AI-powered code reviewer
258
+
259
+ - 📦 [PyPI](https://pypi.org/project/xai-review/)
260
+ - 🐳 [DockerHub](https://hub.docker.com/r/nikitafilonov/ai-review)
@@ -0,0 +1,236 @@
1
+ # AI Review
2
+
3
+ AI-powered code review tool.
4
+
5
+ [![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)
6
+ [![codecov](https://codecov.io/gh/Nikita-Filonov/ai-review/branch/main/graph/badge.svg)](https://codecov.io/gh/Nikita-Filonov/ai-review)
7
+ [![PyPI version](https://img.shields.io/pypi/v/xai-review.svg)](https://pypi.org/project/xai-review/)
8
+ [![License](https://img.shields.io/github/license/Nikita-Filonov/ai-review)](./LICENSE)
9
+ [![GitHub stars](https://img.shields.io/github/stars/Nikita-Filonov/ai-review?style=social)](https://github.com/Nikita-Filonov/ai-review/stargazers)
10
+
11
+ _Made with ❤️ by [@NikitaFilonov](https://t.me/sound_right)_
12
+
13
+ ---
14
+
15
+ ## 📑 Table of Contents
16
+
17
+ - ✨ [About](#-about)
18
+ - 🚀 [Quick Start](#-quick-start)
19
+ - ⚙️ [️CI/CD Integration](#-cicd-integration)
20
+ - 🚀 [GitHub Actions](#-github-actions)
21
+ - 🚀 [GitLab CI/CD](#-gitlab-cicd)
22
+ - 📘 [Documentation](#-documentation)
23
+ - ⚠️ [Privacy & Responsibility Notice](#-privacy--responsibility-notice)
24
+
25
+ ---
26
+
27
+ ## ✨ About
28
+
29
+ **AI Review** is a developer tool that brings **AI-powered code review** directly into your workflow. It helps teams
30
+ improve code quality, enforce consistency, and speed up the review process.
31
+
32
+ ✨ Key features:
33
+
34
+ - **Multiple LLM providers** — choose between **OpenAI**, **Claude**, and **Gemini**, or switch anytime.
35
+ - **VCS integration** — works out of the box with GitLab, GitHub (more providers coming).
36
+ - **Customizable prompts** — adapt inline, context, and summary reviews to match your team’s coding guidelines.
37
+ - **Flexible configuration** — supports `YAML`, `JSON`, and `ENV`, with seamless overrides in CI/CD pipelines.
38
+ - **AI Review runs fully client-side** — it never proxies or inspects your requests.
39
+
40
+ AI Review runs automatically in your CI/CD pipeline and posts both **inline comments** and **summary reviews** right
41
+ inside your merge requests. This makes reviews faster, more consistent, and less error-prone — while still leaving the
42
+ final decision to human reviewers.
43
+
44
+ ---
45
+
46
+ ## 🚀 Quick Start
47
+
48
+ Install via **pip**:
49
+
50
+ ```bash
51
+ pip install xai-review
52
+ ```
53
+
54
+ Or run directly via Docker:
55
+
56
+ ```bash
57
+ docker run --rm -v $(pwd):/app nikitafilonov/ai-review:latest run-summary
58
+ ```
59
+
60
+ 👉 Before running, create a basic configuration file [.ai-review.yaml](./docs/configs/.ai-review.yaml) in the root of
61
+ your project:
62
+
63
+ ```yaml
64
+ llm:
65
+ provider: OPENAI
66
+
67
+ meta:
68
+ model: gpt-4o-mini
69
+ max_tokens: 1200
70
+ temperature: 0.3
71
+
72
+ http_client:
73
+ timeout: 120
74
+ api_url: https://api.openai.com/v1
75
+ api_token: ${OPENAI_API_KEY}
76
+
77
+ vcs:
78
+ provider: GITLAB
79
+
80
+ pipeline:
81
+ project_id: 1
82
+ merge_request_id: 100
83
+
84
+ http_client:
85
+ timeout: 120
86
+ api_url: https://gitlab.com
87
+ api_token: ${GITLAB_API_TOKEN}
88
+ ```
89
+
90
+ 👉 This will:
91
+
92
+ - Run AI Review against your codebase.
93
+ - Generate inline and/or summary comments (depending on the selected mode).
94
+ - Use your chosen LLM provider (OpenAI GPT-4o-mini in this example).
95
+
96
+ > **Note:** Running `ai-review run` executes the full review (inline + summary).
97
+ > To run only one mode, use the dedicated subcommands:
98
+ > - ai-review run-inline
99
+ > - ai-review run-summary
100
+ > - ai-review run-context
101
+
102
+ ---
103
+
104
+ AI Review can be configured via `.ai-review.yaml`, `.ai-review.json`, or `.env`. See [./docs/configs](./docs/configs)
105
+ for complete, ready-to-use examples.
106
+
107
+ Key things you can customize:
108
+
109
+ - **LLM provider** — OpenAI, Gemini, or Claude
110
+ - **Model settings** — model name, temperature, max tokens
111
+ - **VCS integration** — GitLab (currently supported) with project/MR context
112
+ - **Review policy** — which files to include/exclude, review modes
113
+ - **Prompts** — inline/context/summary prompt templates
114
+
115
+ 👉 Minimal configuration is enough to get started. Use the full reference configs if you want fine-grained control (
116
+ timeouts, artifacts, logging, etc.).
117
+
118
+ ---
119
+
120
+ ## ⚙️ CI/CD Integration
121
+
122
+ AI Review works out-of-the-box with major CI providers.
123
+ Use these snippets to run AI Review automatically on Pull/Merge Requests.
124
+ Each integration uses environment variables for LLM and VCS configuration.
125
+
126
+ > For full configuration details (timeouts, artifacts, logging, prompt overrides), see [./docs/configs](./docs/configs).
127
+
128
+ ### 🚀 GitHub Actions
129
+
130
+ Add a workflow like this (manual trigger from **Actions** tab):
131
+
132
+ ```yaml
133
+ name: AI Review
134
+ on:
135
+ workflow_dispatch:
136
+ inputs:
137
+ review-command:
138
+ type: choice
139
+ default: run
140
+ options: [ run, run-inline, run-context, run-summary ]
141
+ pull-request-number:
142
+ type: string
143
+ required: true
144
+ jobs:
145
+ ai-review:
146
+ runs-on: ubuntu-latest
147
+ steps:
148
+ - uses: actions/checkout@v4
149
+ - uses: Nikita-Filonov/ai-review@v0.17.0
150
+ with:
151
+ review-command: ${{ inputs.review-command }}
152
+ env:
153
+ # --- LLM configuration ---
154
+ LLM__PROVIDER: "OPENAI"
155
+ LLM__META__MODEL: "gpt-4o-mini"
156
+ LLM__META__MAX_TOKENS: "15000"
157
+ LLM__META__TEMPERATURE: "0.3"
158
+ LLM__HTTP_CLIENT__API_URL: "https://api.openai.com/v1"
159
+ LLM__HTTP_CLIENT__API_TOKEN: ${{ secrets.OPENAI_API_KEY }}
160
+
161
+ # --- GitHub integration ---
162
+ VCS__PROVIDER: "GITHUB"
163
+ VCS__PIPELINE__OWNER: ${{ github.repository_owner }}
164
+ VCS__PIPELINE__REPO: ${{ github.event.repository.name }}
165
+ VCS__PIPELINE__PULL_NUMBER: ${{ inputs.pull-request-number }}
166
+ VCS__HTTP_CLIENT__API_URL: "https://api.github.com"
167
+ VCS__HTTP_CLIENT__API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
168
+
169
+ ```
170
+
171
+ 🔗 Full example: [./docs/ci/github.yaml](./docs/ci/github.yaml)
172
+
173
+ ### 🚀 GitLab CI/CD
174
+
175
+ For GitLab users:
176
+
177
+ ```yaml
178
+ ai-review:
179
+ when: manual
180
+ stage: review
181
+ image: nikitafilonov/ai-review:latest
182
+ rules:
183
+ - if: '$CI_MERGE_REQUEST_IID'
184
+ script:
185
+ - ai-review run
186
+ variables:
187
+ # --- LLM configuration ---
188
+ LLM__PROVIDER: "OPENAI"
189
+ LLM__META__MODEL: "gpt-4o-mini"
190
+ LLM__META__MAX_TOKENS: "15000"
191
+ LLM__META__TEMPERATURE: "0.3"
192
+ LLM__HTTP_CLIENT__API_URL: "https://api.openai.com/v1"
193
+ LLM__HTTP_CLIENT__API_TOKEN: "$OPENAI_API_KEY"
194
+
195
+ # --- GitLab integration ---
196
+ VCS__PROVIDER: "GITLAB"
197
+ VCS__PIPELINE__PROJECT_ID: "$CI_PROJECT_ID"
198
+ VCS__PIPELINE__MERGE_REQUEST_ID: "$CI_MERGE_REQUEST_IID"
199
+ VCS__HTTP_CLIENT__API_URL: "$CI_SERVER_URL"
200
+ VCS__HTTP_CLIENT__API_TOKEN: "$CI_JOB_TOKEN"
201
+ allow_failure: true # Optional: don't block pipeline if AI review fails
202
+
203
+ ```
204
+
205
+ 🔗 Full example: [./docs/ci/gitlab.yaml](./docs/ci/gitlab.yaml)
206
+
207
+ ---
208
+
209
+ ## 📘 Documentation
210
+
211
+ See these folders for reference templates and full configuration options:
212
+
213
+ - [./docs/ci](./docs/ci) — CI/CD integration templates (GitHub Actions, GitLab CI)
214
+ - [./docs/configs](./docs/configs) — full configuration examples (`.yaml`, `.json`, `.env`)
215
+ - [./docs/prompts](./docs/prompts) — prompt templates for Python/Go (light & strict modes)
216
+
217
+ ---
218
+
219
+ ## ⚠️ Privacy & Responsibility Notice
220
+
221
+ AI Review does **not store**, **log**, or **transmit** your source code to any external service other than the **LLM
222
+ provider** explicitly configured in your `.ai-review.yaml`.
223
+
224
+ All data is sent **directly** from your CI/CD environment to the selected LLM API endpoint (e.g. OpenAI, Gemini,
225
+ Claude). No intermediary servers or storage layers are involved.
226
+
227
+ > ⚠️ Please ensure you use proper API tokens and avoid exposing corporate or personal secrets.
228
+ > If you accidentally leak private code or credentials due to incorrect configuration (e.g., using a personal key
229
+ > instead of an enterprise one), it is **your responsibility** — the tool does not retain or share any data by itself.
230
+
231
+ ---
232
+
233
+ 🧠 **AI Review** — open-source AI-powered code reviewer
234
+
235
+ - 📦 [PyPI](https://pypi.org/project/xai-review/)
236
+ - 🐳 [DockerHub](https://hub.docker.com/r/nikitafilonov/ai-review)
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "xai-review"
7
7
  readme = "README.md"
8
- version = "0.15.0"
8
+ version = "0.17.0"
9
9
  license = { text = "Apache-2.0" }
10
10
  authors = [
11
11
  { name = "Nikita Filonov", email = "nikita.filonov@example.com" }