xai-review 0.32.0__tar.gz → 0.33.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 (389) hide show
  1. {xai_review-0.32.0/xai_review.egg-info → xai_review-0.33.0}/PKG-INFO +2 -2
  2. {xai_review-0.32.0 → xai_review-0.33.0}/README.md +1 -1
  3. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/artifacts/tools.py +2 -2
  4. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/artifacts.py +6 -0
  5. xai_review-0.33.0/ai_review/tests/suites/services/artifacts/test_service.py +92 -0
  6. xai_review-0.33.0/ai_review/tests/suites/services/artifacts/test_tools.py +28 -0
  7. xai_review-0.33.0/ai_review/tests/suites/services/vcs/gitlab/__init__.py +0 -0
  8. {xai_review-0.32.0 → xai_review-0.33.0}/pyproject.toml +1 -1
  9. {xai_review-0.32.0 → xai_review-0.33.0/xai_review.egg-info}/PKG-INFO +2 -2
  10. {xai_review-0.32.0 → xai_review-0.33.0}/xai_review.egg-info/SOURCES.txt +3 -0
  11. {xai_review-0.32.0 → xai_review-0.33.0}/LICENSE +0 -0
  12. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/__init__.py +0 -0
  13. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/cli/__init__.py +0 -0
  14. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/cli/commands/__init__.py +0 -0
  15. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/cli/commands/run_context_review.py +0 -0
  16. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/cli/commands/run_inline_reply_review.py +0 -0
  17. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/cli/commands/run_inline_review.py +0 -0
  18. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/cli/commands/run_review.py +0 -0
  19. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/cli/commands/run_summary_reply_review.py +0 -0
  20. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/cli/commands/run_summary_review.py +0 -0
  21. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/cli/main.py +0 -0
  22. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/__init__.py +0 -0
  23. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/__init__.py +0 -0
  24. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/client.py +0 -0
  25. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/pr/__init__.py +0 -0
  26. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/pr/client.py +0 -0
  27. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/pr/schema/__init__.py +0 -0
  28. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/pr/schema/comments.py +0 -0
  29. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/pr/schema/files.py +0 -0
  30. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/pr/schema/pull_request.py +0 -0
  31. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/pr/schema/user.py +0 -0
  32. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/pr/types.py +0 -0
  33. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/bitbucket/tools.py +0 -0
  34. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/claude/__init__.py +0 -0
  35. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/claude/client.py +0 -0
  36. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/claude/schema.py +0 -0
  37. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/claude/types.py +0 -0
  38. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gemini/__init__.py +0 -0
  39. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gemini/client.py +0 -0
  40. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gemini/schema.py +0 -0
  41. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gemini/types.py +0 -0
  42. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/__init__.py +0 -0
  43. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/client.py +0 -0
  44. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/pr/__init__.py +0 -0
  45. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/pr/client.py +0 -0
  46. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/pr/schema/__init__.py +0 -0
  47. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/pr/schema/comments.py +0 -0
  48. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/pr/schema/files.py +0 -0
  49. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/pr/schema/pull_request.py +0 -0
  50. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/pr/schema/user.py +0 -0
  51. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/pr/types.py +0 -0
  52. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitea/tools.py +0 -0
  53. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/__init__.py +0 -0
  54. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/client.py +0 -0
  55. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/pr/__init__.py +0 -0
  56. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/pr/client.py +0 -0
  57. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/pr/schema/__init__.py +0 -0
  58. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/pr/schema/comments.py +0 -0
  59. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/pr/schema/files.py +0 -0
  60. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/pr/schema/pull_request.py +0 -0
  61. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/pr/schema/reviews.py +0 -0
  62. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/pr/schema/user.py +0 -0
  63. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/pr/types.py +0 -0
  64. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/github/tools.py +0 -0
  65. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/__init__.py +0 -0
  66. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/client.py +0 -0
  67. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/mr/__init__.py +0 -0
  68. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/mr/client.py +0 -0
  69. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/mr/schema/__init__.py +0 -0
  70. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/mr/schema/changes.py +0 -0
  71. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/mr/schema/discussions.py +0 -0
  72. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/mr/schema/notes.py +0 -0
  73. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/mr/schema/position.py +0 -0
  74. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/mr/schema/user.py +0 -0
  75. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/mr/types.py +0 -0
  76. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/gitlab/tools.py +0 -0
  77. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/ollama/__init__.py +0 -0
  78. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/ollama/client.py +0 -0
  79. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/ollama/schema.py +0 -0
  80. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/ollama/types.py +0 -0
  81. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/openai/__init__.py +0 -0
  82. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/openai/client.py +0 -0
  83. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/openai/schema.py +0 -0
  84. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/clients/openai/types.py +0 -0
  85. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/config.py +0 -0
  86. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/__init__.py +0 -0
  87. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/asynchronous/__init__.py +0 -0
  88. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/asynchronous/gather.py +0 -0
  89. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/__init__.py +0 -0
  90. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/artifacts.py +0 -0
  91. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/base.py +0 -0
  92. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/core.py +0 -0
  93. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/http.py +0 -0
  94. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/llm/__init__.py +0 -0
  95. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/llm/base.py +0 -0
  96. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/llm/claude.py +0 -0
  97. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/llm/gemini.py +0 -0
  98. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/llm/meta.py +0 -0
  99. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/llm/ollama.py +0 -0
  100. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/llm/openai.py +0 -0
  101. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/logger.py +0 -0
  102. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/prompt.py +0 -0
  103. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/review.py +0 -0
  104. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/vcs/__init__.py +0 -0
  105. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/vcs/base.py +0 -0
  106. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/vcs/bitbucket.py +0 -0
  107. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/vcs/gitea.py +0 -0
  108. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/vcs/github.py +0 -0
  109. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/vcs/gitlab.py +0 -0
  110. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/config/vcs/pagination.py +0 -0
  111. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/constants/__init__.py +0 -0
  112. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/constants/llm_provider.py +0 -0
  113. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/constants/vcs_provider.py +0 -0
  114. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/diff/__init__.py +0 -0
  115. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/diff/models.py +0 -0
  116. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/diff/parser.py +0 -0
  117. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/diff/tools.py +0 -0
  118. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/http/__init__.py +0 -0
  119. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/http/client.py +0 -0
  120. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/http/event_hooks/__init__.py +0 -0
  121. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/http/event_hooks/base.py +0 -0
  122. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/http/event_hooks/logger.py +0 -0
  123. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/http/handlers.py +0 -0
  124. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/http/paginate.py +0 -0
  125. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/http/transports/__init__.py +0 -0
  126. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/http/transports/retry.py +0 -0
  127. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/json.py +0 -0
  128. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/llm/__init__.py +0 -0
  129. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/llm/output_json_parser.py +0 -0
  130. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/logger.py +0 -0
  131. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/resources.py +0 -0
  132. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/template/__init__.py +0 -0
  133. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/libs/template/render.py +0 -0
  134. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/__init__.py +0 -0
  135. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/default_context.md +0 -0
  136. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/default_inline.md +0 -0
  137. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/default_inline_reply.md +0 -0
  138. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/default_summary.md +0 -0
  139. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/default_summary_reply.md +0 -0
  140. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/default_system_context.md +0 -0
  141. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/default_system_inline.md +0 -0
  142. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/default_system_inline_reply.md +0 -0
  143. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/default_system_summary.md +0 -0
  144. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/prompts/default_system_summary_reply.md +0 -0
  145. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/resources/__init__.py +0 -0
  146. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/resources/pricing.yaml +0 -0
  147. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/__init__.py +0 -0
  148. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/artifacts/__init__.py +0 -0
  149. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/artifacts/schema.py +0 -0
  150. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/artifacts/service.py +0 -0
  151. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/artifacts/types.py +0 -0
  152. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/cost/__init__.py +0 -0
  153. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/cost/schema.py +0 -0
  154. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/cost/service.py +0 -0
  155. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/cost/types.py +0 -0
  156. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/diff/__init__.py +0 -0
  157. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/diff/renderers.py +0 -0
  158. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/diff/schema.py +0 -0
  159. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/diff/service.py +0 -0
  160. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/diff/tools.py +0 -0
  161. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/diff/types.py +0 -0
  162. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/git/__init__.py +0 -0
  163. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/git/service.py +0 -0
  164. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/git/types.py +0 -0
  165. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/hook/__init__.py +0 -0
  166. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/hook/constants.py +0 -0
  167. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/hook/service.py +0 -0
  168. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/hook/types.py +0 -0
  169. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/__init__.py +0 -0
  170. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/claude/__init__.py +0 -0
  171. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/claude/client.py +0 -0
  172. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/factory.py +0 -0
  173. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/gemini/__init__.py +0 -0
  174. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/gemini/client.py +0 -0
  175. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/ollama/__init__.py +0 -0
  176. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/ollama/client.py +0 -0
  177. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/openai/__init__.py +0 -0
  178. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/openai/client.py +0 -0
  179. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/llm/types.py +0 -0
  180. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/prompt/__init__.py +0 -0
  181. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/prompt/adapter.py +0 -0
  182. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/prompt/schema.py +0 -0
  183. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/prompt/service.py +0 -0
  184. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/prompt/tools.py +0 -0
  185. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/prompt/types.py +0 -0
  186. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/__init__.py +0 -0
  187. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/gateway/__init__.py +0 -0
  188. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/gateway/review_comment_gateway.py +0 -0
  189. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/gateway/review_dry_run_comment_gateway.py +0 -0
  190. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/gateway/review_llm_gateway.py +0 -0
  191. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/gateway/types.py +0 -0
  192. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/__init__.py +0 -0
  193. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/inline/__init__.py +0 -0
  194. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/inline/schema.py +0 -0
  195. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/inline/service.py +0 -0
  196. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/inline/types.py +0 -0
  197. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/inline_reply/__init__.py +0 -0
  198. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/inline_reply/schema.py +0 -0
  199. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/inline_reply/service.py +0 -0
  200. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/inline_reply/types.py +0 -0
  201. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/policy/__init__.py +0 -0
  202. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/policy/service.py +0 -0
  203. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/policy/types.py +0 -0
  204. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/summary/__init__.py +0 -0
  205. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/summary/schema.py +0 -0
  206. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/summary/service.py +0 -0
  207. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/summary/types.py +0 -0
  208. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/summary_reply/__init__.py +0 -0
  209. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/summary_reply/schema.py +0 -0
  210. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/summary_reply/service.py +0 -0
  211. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/internal/summary_reply/types.py +0 -0
  212. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/runner/__init__.py +0 -0
  213. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/runner/context.py +0 -0
  214. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/runner/inline.py +0 -0
  215. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/runner/inline_reply.py +0 -0
  216. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/runner/summary.py +0 -0
  217. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/runner/summary_reply.py +0 -0
  218. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/runner/types.py +0 -0
  219. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/review/service.py +0 -0
  220. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/__init__.py +0 -0
  221. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/bitbucket/__init__.py +0 -0
  222. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/bitbucket/adapter.py +0 -0
  223. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/bitbucket/client.py +0 -0
  224. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/factory.py +0 -0
  225. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/gitea/__init__.py +0 -0
  226. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/gitea/adapter.py +0 -0
  227. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/gitea/client.py +0 -0
  228. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/github/__init__.py +0 -0
  229. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/github/adapter.py +0 -0
  230. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/github/client.py +0 -0
  231. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/gitlab/__init__.py +0 -0
  232. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/gitlab/adapter.py +0 -0
  233. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/gitlab/client.py +0 -0
  234. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/services/vcs/types.py +0 -0
  235. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/__init__.py +0 -0
  236. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/__init__.py +0 -0
  237. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/clients/__init__.py +0 -0
  238. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/clients/bitbucket.py +0 -0
  239. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/clients/claude.py +0 -0
  240. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/clients/gemini.py +0 -0
  241. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/clients/gitea.py +0 -0
  242. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/clients/github.py +0 -0
  243. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/clients/gitlab.py +0 -0
  244. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/clients/ollama.py +0 -0
  245. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/clients/openai.py +0 -0
  246. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/libs/__init__.py +0 -0
  247. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/libs/llm/__init__.py +0 -0
  248. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/libs/llm/output_json_parser.py +0 -0
  249. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/__init__.py +0 -0
  250. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/cost.py +0 -0
  251. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/diff.py +0 -0
  252. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/git.py +0 -0
  253. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/hook.py +0 -0
  254. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/llm.py +0 -0
  255. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/prompt.py +0 -0
  256. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/__init__.py +0 -0
  257. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/base.py +0 -0
  258. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/gateway/__init__.py +0 -0
  259. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/gateway/review_comment_gateway.py +0 -0
  260. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/gateway/review_dry_run_comment_gateway.py +0 -0
  261. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/gateway/review_llm_gateway.py +0 -0
  262. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/internal/__init__.py +0 -0
  263. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/internal/inline.py +0 -0
  264. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/internal/inline_reply.py +0 -0
  265. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/internal/policy.py +0 -0
  266. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/internal/summary.py +0 -0
  267. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/internal/summary_reply.py +0 -0
  268. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/runner/__init__.py +0 -0
  269. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/runner/context.py +0 -0
  270. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/runner/inline.py +0 -0
  271. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/runner/inline_reply.py +0 -0
  272. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/runner/summary.py +0 -0
  273. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/review/runner/summary_reply.py +0 -0
  274. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/fixtures/services/vcs.py +0 -0
  275. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/__init__.py +0 -0
  276. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/cli/__init__.py +0 -0
  277. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/cli/test_main.py +0 -0
  278. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/__init__.py +0 -0
  279. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/bitbucket/__init__.py +0 -0
  280. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/bitbucket/test_client.py +0 -0
  281. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/bitbucket/test_tools.py +0 -0
  282. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/claude/__init__.py +0 -0
  283. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/claude/test_client.py +0 -0
  284. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/claude/test_schema.py +0 -0
  285. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/gemini/__init__.py +0 -0
  286. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/gemini/test_client.py +0 -0
  287. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/gemini/test_schema.py +0 -0
  288. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/gitea/__init__.py +0 -0
  289. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/gitea/test_client.py +0 -0
  290. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/gitea/test_tools.py +0 -0
  291. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/github/__init__.py +0 -0
  292. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/github/test_client.py +0 -0
  293. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/github/test_tools.py +0 -0
  294. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/gitlab/__init__.py +0 -0
  295. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/gitlab/test_client.py +0 -0
  296. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/gitlab/test_tools.py +0 -0
  297. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/ollama/__init__.py +0 -0
  298. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/ollama/test_client.py +0 -0
  299. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/ollama/test_schema.py +0 -0
  300. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/openai/__init__.py +0 -0
  301. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/openai/test_client.py +0 -0
  302. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/clients/openai/test_schema.py +0 -0
  303. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/__init__.py +0 -0
  304. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/asynchronous/__init__.py +0 -0
  305. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/asynchronous/test_gather.py +0 -0
  306. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/config/__init__.py +0 -0
  307. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/config/test_prompt.py +0 -0
  308. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/diff/__init__.py +0 -0
  309. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/diff/test_models.py +0 -0
  310. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/diff/test_parser.py +0 -0
  311. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/diff/test_tools.py +0 -0
  312. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/http/__init__.py +0 -0
  313. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/http/test_paginate.py +0 -0
  314. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/llm/__init__.py +0 -0
  315. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/llm/test_output_json_parser.py +0 -0
  316. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/template/__init__.py +0 -0
  317. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/template/test_render.py +0 -0
  318. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/libs/test_json.py +0 -0
  319. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/__init__.py +0 -0
  320. {xai_review-0.32.0/ai_review/tests/suites/services/cost → xai_review-0.33.0/ai_review/tests/suites/services/artifacts}/__init__.py +0 -0
  321. {xai_review-0.32.0/ai_review/tests/suites/services/diff → xai_review-0.33.0/ai_review/tests/suites/services/cost}/__init__.py +0 -0
  322. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/cost/test_schema.py +0 -0
  323. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/cost/test_service.py +0 -0
  324. {xai_review-0.32.0/ai_review/tests/suites/services/hook → xai_review-0.33.0/ai_review/tests/suites/services/diff}/__init__.py +0 -0
  325. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/diff/test_renderers.py +0 -0
  326. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/diff/test_service.py +0 -0
  327. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/diff/test_tools.py +0 -0
  328. {xai_review-0.32.0/ai_review/tests/suites/services/llm → xai_review-0.33.0/ai_review/tests/suites/services/hook}/__init__.py +0 -0
  329. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/hook/test_service.py +0 -0
  330. {xai_review-0.32.0/ai_review/tests/suites/services/llm/claude → xai_review-0.33.0/ai_review/tests/suites/services/llm}/__init__.py +0 -0
  331. {xai_review-0.32.0/ai_review/tests/suites/services/llm/gemini → xai_review-0.33.0/ai_review/tests/suites/services/llm/claude}/__init__.py +0 -0
  332. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/llm/claude/test_client.py +0 -0
  333. {xai_review-0.32.0/ai_review/tests/suites/services/llm/ollama → xai_review-0.33.0/ai_review/tests/suites/services/llm/gemini}/__init__.py +0 -0
  334. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/llm/gemini/test_client.py +0 -0
  335. {xai_review-0.32.0/ai_review/tests/suites/services/llm/openai → xai_review-0.33.0/ai_review/tests/suites/services/llm/ollama}/__init__.py +0 -0
  336. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/llm/ollama/test_client.py +0 -0
  337. {xai_review-0.32.0/ai_review/tests/suites/services/prompt → xai_review-0.33.0/ai_review/tests/suites/services/llm/openai}/__init__.py +0 -0
  338. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/llm/openai/test_client.py +0 -0
  339. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/llm/test_factory.py +0 -0
  340. {xai_review-0.32.0/ai_review/tests/suites/services/review → xai_review-0.33.0/ai_review/tests/suites/services/prompt}/__init__.py +0 -0
  341. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/prompt/test_adapter.py +0 -0
  342. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/prompt/test_schema.py +0 -0
  343. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/prompt/test_service.py +0 -0
  344. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/prompt/test_tools.py +0 -0
  345. {xai_review-0.32.0/ai_review/tests/suites/services/review/gateway → xai_review-0.33.0/ai_review/tests/suites/services/review}/__init__.py +0 -0
  346. {xai_review-0.32.0/ai_review/tests/suites/services/review/internal → xai_review-0.33.0/ai_review/tests/suites/services/review/gateway}/__init__.py +0 -0
  347. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/gateway/test_review_comment_gateway.py +0 -0
  348. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/gateway/test_review_dry_run_comment_gateway.py +0 -0
  349. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/gateway/test_review_llm_gateway.py +0 -0
  350. {xai_review-0.32.0/ai_review/tests/suites/services/review/internal/inline → xai_review-0.33.0/ai_review/tests/suites/services/review/internal}/__init__.py +0 -0
  351. {xai_review-0.32.0/ai_review/tests/suites/services/review/internal/inline_reply → xai_review-0.33.0/ai_review/tests/suites/services/review/internal/inline}/__init__.py +0 -0
  352. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/internal/inline/test_schema.py +0 -0
  353. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/internal/inline/test_service.py +0 -0
  354. {xai_review-0.32.0/ai_review/tests/suites/services/review/internal/policy → xai_review-0.33.0/ai_review/tests/suites/services/review/internal/inline_reply}/__init__.py +0 -0
  355. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/internal/inline_reply/test_schema.py +0 -0
  356. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/internal/inline_reply/test_service.py +0 -0
  357. {xai_review-0.32.0/ai_review/tests/suites/services/review/internal/summary → xai_review-0.33.0/ai_review/tests/suites/services/review/internal/policy}/__init__.py +0 -0
  358. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/internal/policy/test_service.py +0 -0
  359. {xai_review-0.32.0/ai_review/tests/suites/services/review/internal/summary_reply → xai_review-0.33.0/ai_review/tests/suites/services/review/internal/summary}/__init__.py +0 -0
  360. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/internal/summary/test_schema.py +0 -0
  361. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/internal/summary/test_service.py +0 -0
  362. {xai_review-0.32.0/ai_review/tests/suites/services/review/runner → xai_review-0.33.0/ai_review/tests/suites/services/review/internal/summary_reply}/__init__.py +0 -0
  363. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/internal/summary_reply/test_schema.py +0 -0
  364. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/internal/summary_reply/test_service.py +0 -0
  365. {xai_review-0.32.0/ai_review/tests/suites/services/vcs → xai_review-0.33.0/ai_review/tests/suites/services/review/runner}/__init__.py +0 -0
  366. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/runner/test_context.py +0 -0
  367. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/runner/test_inline.py +0 -0
  368. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/runner/test_inline_reply.py +0 -0
  369. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/runner/test_summary.py +0 -0
  370. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/runner/test_summary_reply.py +0 -0
  371. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/review/test_service.py +0 -0
  372. {xai_review-0.32.0/ai_review/tests/suites/services/vcs/bitbucket → xai_review-0.33.0/ai_review/tests/suites/services/vcs}/__init__.py +0 -0
  373. {xai_review-0.32.0/ai_review/tests/suites/services/vcs/gitea → xai_review-0.33.0/ai_review/tests/suites/services/vcs/bitbucket}/__init__.py +0 -0
  374. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/vcs/bitbucket/test_adapter.py +0 -0
  375. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/vcs/bitbucket/test_client.py +0 -0
  376. {xai_review-0.32.0/ai_review/tests/suites/services/vcs/github → xai_review-0.33.0/ai_review/tests/suites/services/vcs/gitea}/__init__.py +0 -0
  377. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/vcs/gitea/test_adapter.py +0 -0
  378. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/vcs/gitea/test_client.py +0 -0
  379. {xai_review-0.32.0/ai_review/tests/suites/services/vcs/gitlab → xai_review-0.33.0/ai_review/tests/suites/services/vcs/github}/__init__.py +0 -0
  380. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/vcs/github/test_adapter.py +0 -0
  381. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/vcs/github/test_client.py +0 -0
  382. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/vcs/gitlab/test_adapter.py +0 -0
  383. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/vcs/gitlab/test_client.py +0 -0
  384. {xai_review-0.32.0 → xai_review-0.33.0}/ai_review/tests/suites/services/vcs/test_factory.py +0 -0
  385. {xai_review-0.32.0 → xai_review-0.33.0}/setup.cfg +0 -0
  386. {xai_review-0.32.0 → xai_review-0.33.0}/xai_review.egg-info/dependency_links.txt +0 -0
  387. {xai_review-0.32.0 → xai_review-0.33.0}/xai_review.egg-info/entry_points.txt +0 -0
  388. {xai_review-0.32.0 → xai_review-0.33.0}/xai_review.egg-info/requires.txt +0 -0
  389. {xai_review-0.32.0 → xai_review-0.33.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.32.0
3
+ Version: 0.33.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.32.0
223
+ - uses: Nikita-Filonov/ai-review@v0.33.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.32.0
189
+ - uses: Nikita-Filonov/ai-review@v0.33.0
190
190
  with:
191
191
  review-command: ${{ inputs.review-command }}
192
192
  env:
@@ -1,8 +1,8 @@
1
1
  import hashlib
2
- from datetime import datetime
2
+ from datetime import datetime, timezone
3
3
 
4
4
 
5
5
  def make_artifact_id(text: str) -> str:
6
6
  sha = hashlib.sha1(text.encode()).hexdigest()[:8]
7
- ts = datetime.utcnow().strftime("%Y.%m.%d_%H-%M-%S")
7
+ ts = datetime.now(timezone.utc).strftime("%Y.%m.%d_%H-%M-%S")
8
8
  return f"{ts}_{sha}"
@@ -2,6 +2,7 @@ from pathlib import Path
2
2
 
3
3
  import pytest
4
4
 
5
+ from ai_review.services.artifacts.service import ArtifactsService
5
6
  from ai_review.services.artifacts.types import ArtifactsServiceProtocol
6
7
 
7
8
 
@@ -49,3 +50,8 @@ class FakeArtifactsService(ArtifactsServiceProtocol):
49
50
  @pytest.fixture
50
51
  def fake_artifacts_service() -> FakeArtifactsService:
51
52
  return FakeArtifactsService()
53
+
54
+
55
+ @pytest.fixture
56
+ def artifacts_service() -> ArtifactsService:
57
+ return ArtifactsService()
@@ -0,0 +1,92 @@
1
+ import json
2
+ from pathlib import Path
3
+
4
+ import aiofiles
5
+ import pytest
6
+
7
+ from ai_review.config import settings
8
+ from ai_review.libs.config.artifacts import ArtifactsConfig
9
+ from ai_review.services.artifacts.service import ArtifactsService
10
+
11
+
12
+ @pytest.mark.asyncio
13
+ async def test_save_llm_interaction_creates_file(
14
+ tmp_path: Path,
15
+ monkeypatch: pytest.MonkeyPatch,
16
+ artifacts_service: ArtifactsService
17
+ ):
18
+ """Checks that a JSON file is created with the correct name and content when LLM saving is enabled."""
19
+ monkeypatch.setattr(settings, "artifacts", ArtifactsConfig(llm_dir=tmp_path, llm_enabled=True))
20
+
21
+ artifact_id = await artifacts_service.save_llm_interaction(
22
+ prompt="Hello world",
23
+ prompt_system="system prompt",
24
+ response="model answer"
25
+ )
26
+
27
+ assert artifact_id is not None
28
+ artifact_path = tmp_path / f"{artifact_id}.json"
29
+ assert artifact_path.exists(), "Artifact file was not created"
30
+
31
+ async with aiofiles.open(artifact_path, "r", encoding="utf-8") as file:
32
+ content = await file.read()
33
+ data = json.loads(content)
34
+ assert data["id"] == artifact_id
35
+ assert data["prompt"] == "Hello world"
36
+ assert data["response"] == "model answer"
37
+ assert data["prompt_system"] == "system prompt"
38
+
39
+
40
+ @pytest.mark.asyncio
41
+ async def test_save_llm_interaction_disabled(
42
+ monkeypatch: pytest.MonkeyPatch,
43
+ artifacts_service: ArtifactsService
44
+ ):
45
+ """Checks that the method returns None and does not create a file if LLM saving is disabled."""
46
+ monkeypatch.setattr(settings, "artifacts", ArtifactsConfig(llm_enabled=False))
47
+
48
+ artifact_id = await artifacts_service.save_llm_interaction(
49
+ prompt="ignored",
50
+ prompt_system="ignored",
51
+ response="ignored"
52
+ )
53
+
54
+ assert artifact_id is None
55
+
56
+
57
+ @pytest.mark.asyncio
58
+ async def test_save_artifact_writes_file(tmp_path: Path, artifacts_service: ArtifactsService):
59
+ """Checks that save_artifact writes content to the given file path."""
60
+ file_path = tmp_path / "test.json"
61
+ content = '{"key": "value"}'
62
+
63
+ result = await artifacts_service.save_artifact(file=file_path, content=content, kind="test")
64
+
65
+ assert result == file_path
66
+ assert file_path.exists()
67
+ async with aiofiles.open(file_path, "r", encoding="utf-8") as f:
68
+ saved_content = await f.read()
69
+ assert saved_content == content
70
+
71
+
72
+ @pytest.mark.asyncio
73
+ async def test_save_artifact_handles_exception(
74
+ monkeypatch: pytest.MonkeyPatch,
75
+ artifacts_service: ArtifactsService
76
+ ):
77
+ """Checks that save_artifact gracefully returns None on write error."""
78
+
79
+ class BrokenAsyncFile:
80
+ async def __aenter__(self):
81
+ raise OSError("disk full")
82
+
83
+ async def __aexit__(self, exc_type, exc_val, exc_tb):
84
+ return False
85
+
86
+ monkeypatch.setattr(
87
+ "ai_review.services.artifacts.service.aiofiles.open",
88
+ lambda *args, **kwargs: BrokenAsyncFile()
89
+ )
90
+
91
+ result = await artifacts_service.save_artifact(Path("/fake/path.json"), "data")
92
+ assert result is None
@@ -0,0 +1,28 @@
1
+ import hashlib
2
+ import re
3
+
4
+ import pytest
5
+
6
+ from ai_review.services.artifacts.tools import make_artifact_id
7
+
8
+
9
+ @pytest.mark.parametrize("text", ["hello", "some longer text", ""])
10
+ def test_make_artifact_id_format_and_sha(text: str):
11
+ """Checks that the function returns a valid artifact ID format and correct SHA prefix."""
12
+ artifact_id = make_artifact_id(text)
13
+
14
+ pattern = r"^\d{4}\.\d{2}\.\d{2}_\d{2}-\d{2}-\d{2}_[0-9a-f]{8}$"
15
+ assert re.match(pattern, artifact_id), f"Invalid format: {artifact_id}"
16
+
17
+ expected_sha = hashlib.sha1(text.encode()).hexdigest()[:8]
18
+ assert artifact_id.endswith(expected_sha)
19
+
20
+
21
+ def test_make_artifact_id_is_deterministic_for_same_input():
22
+ """Checks that the SHA part is deterministic (identical for the same input)."""
23
+ sha1 = hashlib.sha1("repeatable".encode()).hexdigest()[:8]
24
+ artifact_id1 = make_artifact_id("repeatable")
25
+ artifact_id2 = make_artifact_id("repeatable")
26
+
27
+ assert artifact_id1.split("_")[2] == sha1
28
+ assert artifact_id2.split("_")[2] == sha1
@@ -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.32.0"
8
+ version = "0.33.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.32.0
3
+ Version: 0.33.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.32.0
223
+ - uses: Nikita-Filonov/ai-review@v0.33.0
224
224
  with:
225
225
  review-command: ${{ inputs.review-command }}
226
226
  env:
@@ -311,6 +311,9 @@ ai_review/tests/suites/libs/llm/test_output_json_parser.py
311
311
  ai_review/tests/suites/libs/template/__init__.py
312
312
  ai_review/tests/suites/libs/template/test_render.py
313
313
  ai_review/tests/suites/services/__init__.py
314
+ ai_review/tests/suites/services/artifacts/__init__.py
315
+ ai_review/tests/suites/services/artifacts/test_service.py
316
+ ai_review/tests/suites/services/artifacts/test_tools.py
314
317
  ai_review/tests/suites/services/cost/__init__.py
315
318
  ai_review/tests/suites/services/cost/test_schema.py
316
319
  ai_review/tests/suites/services/cost/test_service.py
File without changes