xai-review 0.31.0__tar.gz → 0.32.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 (386) hide show
  1. {xai_review-0.31.0/xai_review.egg-info → xai_review-0.32.0}/PKG-INFO +2 -2
  2. {xai_review-0.31.0 → xai_review-0.32.0}/README.md +1 -1
  3. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/pr/schema/comments.py +0 -2
  4. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/gitea/client.py +25 -34
  5. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/clients/gitea.py +0 -2
  6. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/gitea/test_client.py +11 -10
  7. {xai_review-0.31.0 → xai_review-0.32.0}/pyproject.toml +1 -1
  8. {xai_review-0.31.0 → xai_review-0.32.0/xai_review.egg-info}/PKG-INFO +2 -2
  9. {xai_review-0.31.0 → xai_review-0.32.0}/LICENSE +0 -0
  10. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/__init__.py +0 -0
  11. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/cli/__init__.py +0 -0
  12. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/cli/commands/__init__.py +0 -0
  13. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/cli/commands/run_context_review.py +0 -0
  14. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/cli/commands/run_inline_reply_review.py +0 -0
  15. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/cli/commands/run_inline_review.py +0 -0
  16. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/cli/commands/run_review.py +0 -0
  17. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/cli/commands/run_summary_reply_review.py +0 -0
  18. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/cli/commands/run_summary_review.py +0 -0
  19. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/cli/main.py +0 -0
  20. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/__init__.py +0 -0
  21. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/__init__.py +0 -0
  22. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/client.py +0 -0
  23. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/pr/__init__.py +0 -0
  24. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/pr/client.py +0 -0
  25. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/pr/schema/__init__.py +0 -0
  26. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/pr/schema/comments.py +0 -0
  27. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/pr/schema/files.py +0 -0
  28. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/pr/schema/pull_request.py +0 -0
  29. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/pr/schema/user.py +0 -0
  30. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/pr/types.py +0 -0
  31. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/bitbucket/tools.py +0 -0
  32. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/claude/__init__.py +0 -0
  33. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/claude/client.py +0 -0
  34. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/claude/schema.py +0 -0
  35. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/claude/types.py +0 -0
  36. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gemini/__init__.py +0 -0
  37. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gemini/client.py +0 -0
  38. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gemini/schema.py +0 -0
  39. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gemini/types.py +0 -0
  40. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/__init__.py +0 -0
  41. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/client.py +0 -0
  42. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/pr/__init__.py +0 -0
  43. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/pr/client.py +0 -0
  44. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/pr/schema/__init__.py +0 -0
  45. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/pr/schema/files.py +0 -0
  46. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/pr/schema/pull_request.py +0 -0
  47. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/pr/schema/user.py +0 -0
  48. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/pr/types.py +0 -0
  49. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitea/tools.py +0 -0
  50. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/__init__.py +0 -0
  51. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/client.py +0 -0
  52. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/pr/__init__.py +0 -0
  53. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/pr/client.py +0 -0
  54. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/pr/schema/__init__.py +0 -0
  55. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/pr/schema/comments.py +0 -0
  56. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/pr/schema/files.py +0 -0
  57. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/pr/schema/pull_request.py +0 -0
  58. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/pr/schema/reviews.py +0 -0
  59. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/pr/schema/user.py +0 -0
  60. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/pr/types.py +0 -0
  61. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/github/tools.py +0 -0
  62. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/__init__.py +0 -0
  63. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/client.py +0 -0
  64. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/mr/__init__.py +0 -0
  65. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/mr/client.py +0 -0
  66. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/mr/schema/__init__.py +0 -0
  67. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/mr/schema/changes.py +0 -0
  68. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/mr/schema/discussions.py +0 -0
  69. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/mr/schema/notes.py +0 -0
  70. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/mr/schema/position.py +0 -0
  71. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/mr/schema/user.py +0 -0
  72. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/mr/types.py +0 -0
  73. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/gitlab/tools.py +0 -0
  74. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/ollama/__init__.py +0 -0
  75. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/ollama/client.py +0 -0
  76. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/ollama/schema.py +0 -0
  77. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/ollama/types.py +0 -0
  78. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/openai/__init__.py +0 -0
  79. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/openai/client.py +0 -0
  80. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/openai/schema.py +0 -0
  81. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/clients/openai/types.py +0 -0
  82. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/config.py +0 -0
  83. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/__init__.py +0 -0
  84. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/asynchronous/__init__.py +0 -0
  85. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/asynchronous/gather.py +0 -0
  86. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/__init__.py +0 -0
  87. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/artifacts.py +0 -0
  88. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/base.py +0 -0
  89. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/core.py +0 -0
  90. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/http.py +0 -0
  91. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/llm/__init__.py +0 -0
  92. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/llm/base.py +0 -0
  93. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/llm/claude.py +0 -0
  94. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/llm/gemini.py +0 -0
  95. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/llm/meta.py +0 -0
  96. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/llm/ollama.py +0 -0
  97. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/llm/openai.py +0 -0
  98. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/logger.py +0 -0
  99. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/prompt.py +0 -0
  100. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/review.py +0 -0
  101. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/vcs/__init__.py +0 -0
  102. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/vcs/base.py +0 -0
  103. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/vcs/bitbucket.py +0 -0
  104. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/vcs/gitea.py +0 -0
  105. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/vcs/github.py +0 -0
  106. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/vcs/gitlab.py +0 -0
  107. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/config/vcs/pagination.py +0 -0
  108. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/constants/__init__.py +0 -0
  109. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/constants/llm_provider.py +0 -0
  110. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/constants/vcs_provider.py +0 -0
  111. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/diff/__init__.py +0 -0
  112. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/diff/models.py +0 -0
  113. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/diff/parser.py +0 -0
  114. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/diff/tools.py +0 -0
  115. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/http/__init__.py +0 -0
  116. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/http/client.py +0 -0
  117. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/http/event_hooks/__init__.py +0 -0
  118. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/http/event_hooks/base.py +0 -0
  119. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/http/event_hooks/logger.py +0 -0
  120. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/http/handlers.py +0 -0
  121. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/http/paginate.py +0 -0
  122. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/http/transports/__init__.py +0 -0
  123. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/http/transports/retry.py +0 -0
  124. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/json.py +0 -0
  125. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/llm/__init__.py +0 -0
  126. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/llm/output_json_parser.py +0 -0
  127. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/logger.py +0 -0
  128. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/resources.py +0 -0
  129. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/template/__init__.py +0 -0
  130. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/libs/template/render.py +0 -0
  131. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/__init__.py +0 -0
  132. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/default_context.md +0 -0
  133. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/default_inline.md +0 -0
  134. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/default_inline_reply.md +0 -0
  135. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/default_summary.md +0 -0
  136. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/default_summary_reply.md +0 -0
  137. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/default_system_context.md +0 -0
  138. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/default_system_inline.md +0 -0
  139. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/default_system_inline_reply.md +0 -0
  140. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/default_system_summary.md +0 -0
  141. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/prompts/default_system_summary_reply.md +0 -0
  142. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/resources/__init__.py +0 -0
  143. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/resources/pricing.yaml +0 -0
  144. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/__init__.py +0 -0
  145. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/artifacts/__init__.py +0 -0
  146. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/artifacts/schema.py +0 -0
  147. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/artifacts/service.py +0 -0
  148. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/artifacts/tools.py +0 -0
  149. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/artifacts/types.py +0 -0
  150. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/cost/__init__.py +0 -0
  151. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/cost/schema.py +0 -0
  152. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/cost/service.py +0 -0
  153. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/cost/types.py +0 -0
  154. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/diff/__init__.py +0 -0
  155. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/diff/renderers.py +0 -0
  156. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/diff/schema.py +0 -0
  157. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/diff/service.py +0 -0
  158. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/diff/tools.py +0 -0
  159. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/diff/types.py +0 -0
  160. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/git/__init__.py +0 -0
  161. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/git/service.py +0 -0
  162. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/git/types.py +0 -0
  163. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/hook/__init__.py +0 -0
  164. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/hook/constants.py +0 -0
  165. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/hook/service.py +0 -0
  166. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/hook/types.py +0 -0
  167. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/__init__.py +0 -0
  168. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/claude/__init__.py +0 -0
  169. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/claude/client.py +0 -0
  170. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/factory.py +0 -0
  171. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/gemini/__init__.py +0 -0
  172. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/gemini/client.py +0 -0
  173. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/ollama/__init__.py +0 -0
  174. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/ollama/client.py +0 -0
  175. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/openai/__init__.py +0 -0
  176. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/openai/client.py +0 -0
  177. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/llm/types.py +0 -0
  178. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/prompt/__init__.py +0 -0
  179. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/prompt/adapter.py +0 -0
  180. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/prompt/schema.py +0 -0
  181. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/prompt/service.py +0 -0
  182. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/prompt/tools.py +0 -0
  183. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/prompt/types.py +0 -0
  184. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/__init__.py +0 -0
  185. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/gateway/__init__.py +0 -0
  186. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/gateway/review_comment_gateway.py +0 -0
  187. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/gateway/review_dry_run_comment_gateway.py +0 -0
  188. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/gateway/review_llm_gateway.py +0 -0
  189. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/gateway/types.py +0 -0
  190. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/__init__.py +0 -0
  191. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/inline/__init__.py +0 -0
  192. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/inline/schema.py +0 -0
  193. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/inline/service.py +0 -0
  194. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/inline/types.py +0 -0
  195. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/inline_reply/__init__.py +0 -0
  196. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/inline_reply/schema.py +0 -0
  197. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/inline_reply/service.py +0 -0
  198. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/inline_reply/types.py +0 -0
  199. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/policy/__init__.py +0 -0
  200. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/policy/service.py +0 -0
  201. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/policy/types.py +0 -0
  202. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/summary/__init__.py +0 -0
  203. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/summary/schema.py +0 -0
  204. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/summary/service.py +0 -0
  205. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/summary/types.py +0 -0
  206. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/summary_reply/__init__.py +0 -0
  207. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/summary_reply/schema.py +0 -0
  208. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/summary_reply/service.py +0 -0
  209. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/internal/summary_reply/types.py +0 -0
  210. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/runner/__init__.py +0 -0
  211. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/runner/context.py +0 -0
  212. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/runner/inline.py +0 -0
  213. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/runner/inline_reply.py +0 -0
  214. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/runner/summary.py +0 -0
  215. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/runner/summary_reply.py +0 -0
  216. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/runner/types.py +0 -0
  217. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/review/service.py +0 -0
  218. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/__init__.py +0 -0
  219. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/bitbucket/__init__.py +0 -0
  220. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/bitbucket/adapter.py +0 -0
  221. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/bitbucket/client.py +0 -0
  222. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/factory.py +0 -0
  223. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/gitea/__init__.py +0 -0
  224. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/gitea/adapter.py +0 -0
  225. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/github/__init__.py +0 -0
  226. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/github/adapter.py +0 -0
  227. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/github/client.py +0 -0
  228. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/gitlab/__init__.py +0 -0
  229. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/gitlab/adapter.py +0 -0
  230. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/gitlab/client.py +0 -0
  231. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/services/vcs/types.py +0 -0
  232. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/__init__.py +0 -0
  233. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/__init__.py +0 -0
  234. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/clients/__init__.py +0 -0
  235. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/clients/bitbucket.py +0 -0
  236. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/clients/claude.py +0 -0
  237. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/clients/gemini.py +0 -0
  238. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/clients/github.py +0 -0
  239. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/clients/gitlab.py +0 -0
  240. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/clients/ollama.py +0 -0
  241. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/clients/openai.py +0 -0
  242. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/libs/__init__.py +0 -0
  243. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/libs/llm/__init__.py +0 -0
  244. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/libs/llm/output_json_parser.py +0 -0
  245. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/__init__.py +0 -0
  246. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/artifacts.py +0 -0
  247. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/cost.py +0 -0
  248. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/diff.py +0 -0
  249. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/git.py +0 -0
  250. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/hook.py +0 -0
  251. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/llm.py +0 -0
  252. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/prompt.py +0 -0
  253. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/__init__.py +0 -0
  254. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/base.py +0 -0
  255. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/gateway/__init__.py +0 -0
  256. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/gateway/review_comment_gateway.py +0 -0
  257. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/gateway/review_dry_run_comment_gateway.py +0 -0
  258. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/gateway/review_llm_gateway.py +0 -0
  259. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/internal/__init__.py +0 -0
  260. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/internal/inline.py +0 -0
  261. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/internal/inline_reply.py +0 -0
  262. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/internal/policy.py +0 -0
  263. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/internal/summary.py +0 -0
  264. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/internal/summary_reply.py +0 -0
  265. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/runner/__init__.py +0 -0
  266. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/runner/context.py +0 -0
  267. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/runner/inline.py +0 -0
  268. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/runner/inline_reply.py +0 -0
  269. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/runner/summary.py +0 -0
  270. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/review/runner/summary_reply.py +0 -0
  271. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/fixtures/services/vcs.py +0 -0
  272. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/__init__.py +0 -0
  273. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/cli/__init__.py +0 -0
  274. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/cli/test_main.py +0 -0
  275. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/__init__.py +0 -0
  276. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/bitbucket/__init__.py +0 -0
  277. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/bitbucket/test_client.py +0 -0
  278. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/bitbucket/test_tools.py +0 -0
  279. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/claude/__init__.py +0 -0
  280. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/claude/test_client.py +0 -0
  281. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/claude/test_schema.py +0 -0
  282. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/gemini/__init__.py +0 -0
  283. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/gemini/test_client.py +0 -0
  284. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/gemini/test_schema.py +0 -0
  285. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/gitea/__init__.py +0 -0
  286. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/gitea/test_client.py +0 -0
  287. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/gitea/test_tools.py +0 -0
  288. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/github/__init__.py +0 -0
  289. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/github/test_client.py +0 -0
  290. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/github/test_tools.py +0 -0
  291. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/gitlab/__init__.py +0 -0
  292. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/gitlab/test_client.py +0 -0
  293. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/gitlab/test_tools.py +0 -0
  294. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/ollama/__init__.py +0 -0
  295. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/ollama/test_client.py +0 -0
  296. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/ollama/test_schema.py +0 -0
  297. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/openai/__init__.py +0 -0
  298. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/openai/test_client.py +0 -0
  299. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/clients/openai/test_schema.py +0 -0
  300. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/__init__.py +0 -0
  301. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/asynchronous/__init__.py +0 -0
  302. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/asynchronous/test_gather.py +0 -0
  303. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/config/__init__.py +0 -0
  304. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/config/test_prompt.py +0 -0
  305. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/diff/__init__.py +0 -0
  306. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/diff/test_models.py +0 -0
  307. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/diff/test_parser.py +0 -0
  308. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/diff/test_tools.py +0 -0
  309. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/http/__init__.py +0 -0
  310. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/http/test_paginate.py +0 -0
  311. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/llm/__init__.py +0 -0
  312. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/llm/test_output_json_parser.py +0 -0
  313. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/template/__init__.py +0 -0
  314. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/template/test_render.py +0 -0
  315. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/libs/test_json.py +0 -0
  316. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/__init__.py +0 -0
  317. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/cost/__init__.py +0 -0
  318. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/cost/test_schema.py +0 -0
  319. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/cost/test_service.py +0 -0
  320. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/diff/__init__.py +0 -0
  321. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/diff/test_renderers.py +0 -0
  322. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/diff/test_service.py +0 -0
  323. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/diff/test_tools.py +0 -0
  324. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/hook/__init__.py +0 -0
  325. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/hook/test_service.py +0 -0
  326. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/llm/__init__.py +0 -0
  327. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/llm/claude/__init__.py +0 -0
  328. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/llm/claude/test_client.py +0 -0
  329. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/llm/gemini/__init__.py +0 -0
  330. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/llm/gemini/test_client.py +0 -0
  331. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/llm/ollama/__init__.py +0 -0
  332. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/llm/ollama/test_client.py +0 -0
  333. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/llm/openai/__init__.py +0 -0
  334. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/llm/openai/test_client.py +0 -0
  335. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/llm/test_factory.py +0 -0
  336. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/prompt/__init__.py +0 -0
  337. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/prompt/test_adapter.py +0 -0
  338. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/prompt/test_schema.py +0 -0
  339. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/prompt/test_service.py +0 -0
  340. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/prompt/test_tools.py +0 -0
  341. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/__init__.py +0 -0
  342. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/gateway/__init__.py +0 -0
  343. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/gateway/test_review_comment_gateway.py +0 -0
  344. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/gateway/test_review_dry_run_comment_gateway.py +0 -0
  345. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/gateway/test_review_llm_gateway.py +0 -0
  346. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/__init__.py +0 -0
  347. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/inline/__init__.py +0 -0
  348. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/inline/test_schema.py +0 -0
  349. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/inline/test_service.py +0 -0
  350. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/inline_reply/__init__.py +0 -0
  351. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/inline_reply/test_schema.py +0 -0
  352. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/inline_reply/test_service.py +0 -0
  353. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/policy/__init__.py +0 -0
  354. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/policy/test_service.py +0 -0
  355. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/summary/__init__.py +0 -0
  356. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/summary/test_schema.py +0 -0
  357. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/summary/test_service.py +0 -0
  358. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/summary_reply/__init__.py +0 -0
  359. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/summary_reply/test_schema.py +0 -0
  360. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/internal/summary_reply/test_service.py +0 -0
  361. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/runner/__init__.py +0 -0
  362. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/runner/test_context.py +0 -0
  363. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/runner/test_inline.py +0 -0
  364. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/runner/test_inline_reply.py +0 -0
  365. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/runner/test_summary.py +0 -0
  366. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/runner/test_summary_reply.py +0 -0
  367. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/review/test_service.py +0 -0
  368. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/__init__.py +0 -0
  369. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/bitbucket/__init__.py +0 -0
  370. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/bitbucket/test_adapter.py +0 -0
  371. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/bitbucket/test_client.py +0 -0
  372. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/gitea/__init__.py +0 -0
  373. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/gitea/test_adapter.py +0 -0
  374. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/github/__init__.py +0 -0
  375. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/github/test_adapter.py +0 -0
  376. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/github/test_client.py +0 -0
  377. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/gitlab/__init__.py +0 -0
  378. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/gitlab/test_adapter.py +0 -0
  379. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/gitlab/test_client.py +0 -0
  380. {xai_review-0.31.0 → xai_review-0.32.0}/ai_review/tests/suites/services/vcs/test_factory.py +0 -0
  381. {xai_review-0.31.0 → xai_review-0.32.0}/setup.cfg +0 -0
  382. {xai_review-0.31.0 → xai_review-0.32.0}/xai_review.egg-info/SOURCES.txt +0 -0
  383. {xai_review-0.31.0 → xai_review-0.32.0}/xai_review.egg-info/dependency_links.txt +0 -0
  384. {xai_review-0.31.0 → xai_review-0.32.0}/xai_review.egg-info/entry_points.txt +0 -0
  385. {xai_review-0.31.0 → xai_review-0.32.0}/xai_review.egg-info/requires.txt +0 -0
  386. {xai_review-0.31.0 → xai_review-0.32.0}/xai_review.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xai-review
3
- Version: 0.31.0
3
+ Version: 0.32.0
4
4
  Summary: AI-powered code review tool
5
5
  Author-email: Nikita Filonov <nikita.filonov@example.com>
6
6
  Maintainer-email: Nikita Filonov <nikita.filonov@example.com>
@@ -220,7 +220,7 @@ jobs:
220
220
  with:
221
221
  fetch-depth: 0
222
222
 
223
- - uses: Nikita-Filonov/ai-review@v0.31.0
223
+ - uses: Nikita-Filonov/ai-review@v0.32.0
224
224
  with:
225
225
  review-command: ${{ inputs.review-command }}
226
226
  env:
@@ -186,7 +186,7 @@ jobs:
186
186
  with:
187
187
  fetch-depth: 0
188
188
 
189
- - uses: Nikita-Filonov/ai-review@v0.31.0
189
+ - uses: Nikita-Filonov/ai-review@v0.32.0
190
190
  with:
191
191
  review-command: ${{ inputs.review-command }}
192
192
  env:
@@ -28,8 +28,6 @@ class GiteaGetPRCommentsResponseSchema(RootModel[list[GiteaPRCommentSchema]]):
28
28
 
29
29
  class GiteaCreateCommentRequestSchema(BaseModel):
30
30
  body: str
31
- path: str | None = None
32
- line: int | None = None
33
31
 
34
32
 
35
33
  class GiteaCreateCommentResponseSchema(BaseModel):
@@ -2,7 +2,10 @@ from ai_review.clients.gitea.client import get_gitea_http_client
2
2
  from ai_review.clients.gitea.pr.schema.comments import GiteaCreateCommentRequestSchema
3
3
  from ai_review.config import settings
4
4
  from ai_review.libs.logger import get_logger
5
- from ai_review.services.vcs.gitea.adapter import get_review_comment_from_gitea_comment, get_user_from_gitea_user
5
+ from ai_review.services.vcs.gitea.adapter import (
6
+ get_user_from_gitea_user,
7
+ get_review_comment_from_gitea_comment,
8
+ )
6
9
  from ai_review.services.vcs.types import (
7
10
  VCSClientProtocol,
8
11
  ThreadKind,
@@ -67,12 +70,13 @@ class GiteaVCSClient(VCSClientProtocol):
67
70
  return []
68
71
 
69
72
  async def get_inline_comments(self) -> list[ReviewCommentSchema]:
70
- try:
71
- comments = await self.get_general_comments()
72
- return [comment for comment in comments if comment.file]
73
- except Exception as error:
74
- logger.exception(f"Failed to fetch inline comments for {self.pull_request_ref}: {error}")
75
- return []
73
+ comments = await self.get_general_comments()
74
+ if comments:
75
+ logger.warning(
76
+ f"Gitea API does not support inline comments — "
77
+ f"returning {len(comments)} general comments as fallback inline comments"
78
+ )
79
+ return comments
76
80
 
77
81
  async def create_general_comment(self, message: str) -> None:
78
82
  try:
@@ -90,25 +94,15 @@ class GiteaVCSClient(VCSClientProtocol):
90
94
  raise
91
95
 
92
96
  async def create_inline_comment(self, file: str, line: int, message: str) -> None:
93
- try:
94
- logger.info(f"Posting inline comment to {self.pull_request_ref} at {file}:{line}")
95
- request = GiteaCreateCommentRequestSchema(
96
- body=message,
97
- path=file,
98
- line=line,
99
- )
100
- await self.http_client.pr.create_comment(
101
- owner=self.owner,
102
- repo=self.repo,
103
- pull_number=self.pull_number,
104
- request=request,
105
- )
106
- logger.info(f"Created inline comment in {self.pull_request_ref} at {file}:{line}")
107
- except Exception as error:
108
- logger.exception(f"Failed to create inline comment in {self.pull_request_ref} at {file}:{line}: {error}")
109
- raise
97
+ fallback_message = f"[{file}:{line}] {message}"
98
+ logger.warning(
99
+ f"Gitea does not support inline comments. "
100
+ f"Falling back to general comment: {fallback_message}"
101
+ )
102
+ await self.create_general_comment(fallback_message)
110
103
 
111
104
  async def create_inline_reply(self, thread_id: int | str, message: str) -> None:
105
+ logger.warning("Gitea does not support threaded replies — posting new general comment instead")
112
106
  await self.create_general_comment(message)
113
107
 
114
108
  async def create_summary_reply(self, thread_id: int | str, message: str) -> None:
@@ -118,17 +112,15 @@ class GiteaVCSClient(VCSClientProtocol):
118
112
  async def get_inline_threads(self) -> list[ReviewThreadSchema]:
119
113
  try:
120
114
  comments = await self.get_inline_comments()
121
- threads = {comment.thread_id: [comment] for comment in comments}
122
-
123
115
  return [
124
116
  ReviewThreadSchema(
125
- id=thread_id,
117
+ id=comment.thread_id,
126
118
  kind=ThreadKind.INLINE,
127
- file=thread[0].file,
128
- line=thread[0].line,
129
- comments=thread,
119
+ file=comment.file,
120
+ line=comment.line,
121
+ comments=[comment],
130
122
  )
131
- for thread_id, thread in threads.items()
123
+ for comment in comments
132
124
  ]
133
125
  except Exception as error:
134
126
  logger.exception(f"Failed to build inline threads for {self.pull_request_ref}: {error}")
@@ -137,15 +129,14 @@ class GiteaVCSClient(VCSClientProtocol):
137
129
  async def get_general_threads(self) -> list[ReviewThreadSchema]:
138
130
  try:
139
131
  comments = await self.get_general_comments()
140
- threads = [
132
+ return [
141
133
  ReviewThreadSchema(
142
134
  id=comment.thread_id,
143
135
  kind=ThreadKind.SUMMARY,
144
- comments=[comment]
136
+ comments=[comment],
145
137
  )
146
138
  for comment in comments
147
139
  ]
148
- return threads
149
140
  except Exception as error:
150
141
  logger.exception(f"Failed to build general threads for {self.pull_request_ref}: {error}")
151
142
  return []
@@ -45,13 +45,11 @@ class FakeGiteaPullRequestsHTTPClient(GiteaPullRequestsHTTPClientProtocol):
45
45
  return GiteaGetPRFilesResponseSchema(
46
46
  root=[
47
47
  GiteaPRFileSchema(
48
- sha="abc",
49
48
  status="modified",
50
49
  filename="src/main.py",
51
50
  patch="@@ -1,2 +1,2 @@\n- old\n+ new",
52
51
  ),
53
52
  GiteaPRFileSchema(
54
- sha="def",
55
53
  status="added",
56
54
  filename="utils/helper.py",
57
55
  patch="+ print('Hello')",
@@ -29,19 +29,20 @@ async def test_get_general_comments_returns_list(
29
29
  fake_gitea_pull_requests_http_client: FakeGiteaPullRequestsHTTPClient,
30
30
  ):
31
31
  comments = await gitea_vcs_client.get_general_comments()
32
- assert all(isinstance(c, ReviewCommentSchema) for c in comments)
32
+ assert all(isinstance(comment, ReviewCommentSchema) for comment in comments)
33
33
  assert len(comments) > 0
34
34
 
35
35
 
36
36
  @pytest.mark.asyncio
37
37
  @pytest.mark.usefixtures("gitea_http_client_config")
38
- async def test_get_inline_comments_filters_by_file(
38
+ async def test_get_inline_comments_returns_fallback_general_comments(
39
39
  gitea_vcs_client: GiteaVCSClient,
40
40
  fake_gitea_pull_requests_http_client: FakeGiteaPullRequestsHTTPClient,
41
41
  ):
42
42
  comments = await gitea_vcs_client.get_inline_comments()
43
- assert all(c.file for c in comments)
44
- assert all(isinstance(c, ReviewCommentSchema) for c in comments)
43
+ assert isinstance(comments, list)
44
+ assert all(isinstance(comment, ReviewCommentSchema) for comment in comments)
45
+ assert len(comments) > 0
45
46
 
46
47
 
47
48
  @pytest.mark.asyncio
@@ -57,11 +58,11 @@ async def test_create_general_comment_posts_comment(
57
58
 
58
59
  @pytest.mark.asyncio
59
60
  @pytest.mark.usefixtures("gitea_http_client_config")
60
- async def test_create_inline_comment_posts_comment(
61
+ async def test_create_inline_comment_falls_back_to_general_comment(
61
62
  gitea_vcs_client: GiteaVCSClient,
62
63
  fake_gitea_pull_requests_http_client: FakeGiteaPullRequestsHTTPClient,
63
64
  ):
64
- await gitea_vcs_client.create_inline_comment("src/main.py", 10, "Inline comment")
65
+ await gitea_vcs_client.create_inline_comment(file="src/main.py", line=10, message="Inline comment")
65
66
  calls = [name for name, _ in fake_gitea_pull_requests_http_client.calls]
66
67
  assert "create_comment" in calls
67
68
 
@@ -72,8 +73,8 @@ async def test_get_inline_threads_groups_by_comment(
72
73
  gitea_vcs_client: GiteaVCSClient,
73
74
  ):
74
75
  threads = await gitea_vcs_client.get_inline_threads()
75
- assert all(isinstance(t, ReviewThreadSchema) for t in threads)
76
- assert all(t.kind == ThreadKind.INLINE for t in threads)
76
+ assert all(isinstance(thread, ReviewThreadSchema) for thread in threads)
77
+ assert all(thread.kind == ThreadKind.INLINE for thread in threads)
77
78
 
78
79
 
79
80
  @pytest.mark.asyncio
@@ -82,5 +83,5 @@ async def test_get_general_threads_wraps_comments(
82
83
  gitea_vcs_client: GiteaVCSClient,
83
84
  ):
84
85
  threads = await gitea_vcs_client.get_general_threads()
85
- assert all(isinstance(t, ReviewThreadSchema) for t in threads)
86
- assert all(t.kind == ThreadKind.SUMMARY for t in threads)
86
+ assert all(isinstance(thread, ReviewThreadSchema) for thread in threads)
87
+ assert all(thread.kind == ThreadKind.SUMMARY for thread in threads)
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "xai-review"
7
7
  readme = { file = "README.md", content-type = "text/markdown" }
8
- version = "0.31.0"
8
+ version = "0.32.0"
9
9
  license = { text = "Apache-2.0" }
10
10
  authors = [
11
11
  { name = "Nikita Filonov", email = "nikita.filonov@example.com" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xai-review
3
- Version: 0.31.0
3
+ Version: 0.32.0
4
4
  Summary: AI-powered code review tool
5
5
  Author-email: Nikita Filonov <nikita.filonov@example.com>
6
6
  Maintainer-email: Nikita Filonov <nikita.filonov@example.com>
@@ -220,7 +220,7 @@ jobs:
220
220
  with:
221
221
  fetch-depth: 0
222
222
 
223
- - uses: Nikita-Filonov/ai-review@v0.31.0
223
+ - uses: Nikita-Filonov/ai-review@v0.32.0
224
224
  with:
225
225
  review-command: ${{ inputs.review-command }}
226
226
  env:
File without changes