kodit 0.3.12__tar.gz → 0.3.13__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 kodit might be problematic. Click here for more details.

Files changed (262) hide show
  1. {kodit-0.3.12 → kodit-0.3.13}/.github/workflows/docker.yaml +2 -0
  2. {kodit-0.3.12 → kodit-0.3.13}/PKG-INFO +1 -1
  3. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/api/index.md +1 -1
  4. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/api/openapi.json +1 -1
  5. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/_version.py +2 -2
  6. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/app.py +5 -1
  7. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/config.py +12 -3
  8. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/embedding/embedding_factory.py +2 -0
  9. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/embedding/embedding_providers/openai_embedding_provider.py +7 -3
  10. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/enrichment/enrichment_factory.py +2 -0
  11. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/enrichment/openai_enrichment_provider.py +8 -2
  12. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/log.py +1 -9
  13. {kodit-0.3.12 → kodit-0.3.13}/tests/conftest.py +2 -2
  14. {kodit-0.3.12 → kodit-0.3.13}/.claude/commands/debug.md +0 -0
  15. {kodit-0.3.12 → kodit-0.3.13}/.claude/commands/new-requirement.md +0 -0
  16. {kodit-0.3.12 → kodit-0.3.13}/.claude/commands/refactor.md +0 -0
  17. {kodit-0.3.12 → kodit-0.3.13}/.claude/commands/update-docs.md +0 -0
  18. {kodit-0.3.12 → kodit-0.3.13}/.claude/settings.json +0 -0
  19. {kodit-0.3.12 → kodit-0.3.13}/.cursor/rules/kodit.mdc +0 -0
  20. {kodit-0.3.12 → kodit-0.3.13}/.cursor/rules/style.mdc +0 -0
  21. {kodit-0.3.12 → kodit-0.3.13}/.dockerignore +0 -0
  22. {kodit-0.3.12 → kodit-0.3.13}/.github/CODE_OF_CONDUCT.md +0 -0
  23. {kodit-0.3.12 → kodit-0.3.13}/.github/CONTRIBUTING.md +0 -0
  24. {kodit-0.3.12 → kodit-0.3.13}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  25. {kodit-0.3.12 → kodit-0.3.13}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  26. {kodit-0.3.12 → kodit-0.3.13}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  27. {kodit-0.3.12 → kodit-0.3.13}/.github/dependabot.yml +0 -0
  28. {kodit-0.3.12 → kodit-0.3.13}/.github/workflows/docs.yaml +0 -0
  29. {kodit-0.3.12 → kodit-0.3.13}/.github/workflows/pull_request.yaml +0 -0
  30. {kodit-0.3.12 → kodit-0.3.13}/.github/workflows/pypi-test.yaml +0 -0
  31. {kodit-0.3.12 → kodit-0.3.13}/.github/workflows/pypi.yaml +0 -0
  32. {kodit-0.3.12 → kodit-0.3.13}/.github/workflows/test.yaml +0 -0
  33. {kodit-0.3.12 → kodit-0.3.13}/.gitignore +0 -0
  34. {kodit-0.3.12 → kodit-0.3.13}/.python-version +0 -0
  35. {kodit-0.3.12 → kodit-0.3.13}/.vscode/launch.json +0 -0
  36. {kodit-0.3.12 → kodit-0.3.13}/.vscode/settings.json +0 -0
  37. {kodit-0.3.12 → kodit-0.3.13}/CLAUDE.md +0 -0
  38. {kodit-0.3.12 → kodit-0.3.13}/Dockerfile +0 -0
  39. {kodit-0.3.12 → kodit-0.3.13}/LICENSE +0 -0
  40. {kodit-0.3.12 → kodit-0.3.13}/Makefile +0 -0
  41. {kodit-0.3.12 → kodit-0.3.13}/README.md +0 -0
  42. {kodit-0.3.12 → kodit-0.3.13}/alembic.ini +0 -0
  43. {kodit-0.3.12 → kodit-0.3.13}/docs/_index.md +0 -0
  44. {kodit-0.3.12 → kodit-0.3.13}/docs/demos/_index.md +0 -0
  45. {kodit-0.3.12 → kodit-0.3.13}/docs/demos/go-simple-microservice/index.md +0 -0
  46. {kodit-0.3.12 → kodit-0.3.13}/docs/demos/knock-knock-auth/index.md +0 -0
  47. {kodit-0.3.12 → kodit-0.3.13}/docs/developer/index.md +0 -0
  48. {kodit-0.3.12 → kodit-0.3.13}/docs/getting-started/_index.md +0 -0
  49. {kodit-0.3.12 → kodit-0.3.13}/docs/getting-started/installation/index.md +0 -0
  50. {kodit-0.3.12 → kodit-0.3.13}/docs/getting-started/integration/index.md +0 -0
  51. {kodit-0.3.12 → kodit-0.3.13}/docs/getting-started/quick-start/index.md +0 -0
  52. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/_index.md +0 -0
  53. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/api/templates/_content.md.j2 +0 -0
  54. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/api/templates/_example.md.j2 +0 -0
  55. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/api/templates/_object_schema.md.j2 +0 -0
  56. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/api/templates/_security_scheme.md.j2 +0 -0
  57. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/api/templates/api_doc_template.md.j2 +0 -0
  58. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/configuration/index.md +0 -0
  59. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/deployment/docker-compose.yaml +0 -0
  60. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/deployment/index.md +0 -0
  61. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/deployment/kubernetes.yaml +0 -0
  62. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/hosted-kodit/index.md +0 -0
  63. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/indexing/index.md +0 -0
  64. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/mcp/index.md +0 -0
  65. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/sync/index.md +0 -0
  66. {kodit-0.3.12 → kodit-0.3.13}/docs/reference/telemetry/index.md +0 -0
  67. {kodit-0.3.12 → kodit-0.3.13}/pyproject.toml +0 -0
  68. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/.gitignore +0 -0
  69. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/__init__.py +0 -0
  70. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/application/__init__.py +0 -0
  71. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/application/factories/__init__.py +0 -0
  72. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/application/factories/code_indexing_factory.py +0 -0
  73. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/application/services/__init__.py +0 -0
  74. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/application/services/auto_indexing_service.py +0 -0
  75. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/application/services/code_indexing_application_service.py +0 -0
  76. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/application/services/sync_scheduler.py +0 -0
  77. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/cli.py +0 -0
  78. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/database.py +0 -0
  79. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/__init__.py +0 -0
  80. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/entities.py +0 -0
  81. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/errors.py +0 -0
  82. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/interfaces.py +0 -0
  83. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/protocols.py +0 -0
  84. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/services/__init__.py +0 -0
  85. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/services/bm25_service.py +0 -0
  86. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/services/embedding_service.py +0 -0
  87. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/services/enrichment_service.py +0 -0
  88. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/services/index_query_service.py +0 -0
  89. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/services/index_service.py +0 -0
  90. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/domain/value_objects.py +0 -0
  91. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/__init__.py +0 -0
  92. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/__init__.py +0 -0
  93. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/middleware/__init__.py +0 -0
  94. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/middleware/auth.py +0 -0
  95. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/v1/__init__.py +0 -0
  96. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/v1/dependencies.py +0 -0
  97. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/v1/routers/__init__.py +0 -0
  98. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/v1/routers/indexes.py +0 -0
  99. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/v1/routers/search.py +0 -0
  100. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/v1/schemas/__init__.py +0 -0
  101. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/v1/schemas/context.py +0 -0
  102. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/v1/schemas/index.py +0 -0
  103. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/api/v1/schemas/search.py +0 -0
  104. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/bm25/__init__.py +0 -0
  105. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/bm25/bm25_factory.py +0 -0
  106. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/bm25/local_bm25_repository.py +0 -0
  107. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/bm25/vectorchord_bm25_repository.py +0 -0
  108. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/cloning/__init__.py +0 -0
  109. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/cloning/git/__init__.py +0 -0
  110. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/cloning/git/working_copy.py +0 -0
  111. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/cloning/metadata.py +0 -0
  112. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/embedding/__init__.py +0 -0
  113. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/embedding/embedding_providers/__init__.py +0 -0
  114. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/embedding/embedding_providers/batching.py +0 -0
  115. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/embedding/embedding_providers/hash_embedding_provider.py +0 -0
  116. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/embedding/embedding_providers/local_embedding_provider.py +0 -0
  117. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/embedding/local_vector_search_repository.py +0 -0
  118. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/embedding/vectorchord_vector_search_repository.py +0 -0
  119. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/enrichment/__init__.py +0 -0
  120. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/enrichment/local_enrichment_provider.py +0 -0
  121. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/enrichment/null_enrichment_provider.py +0 -0
  122. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/git/__init__.py +0 -0
  123. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/git/git_utils.py +0 -0
  124. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/ignore/__init__.py +0 -0
  125. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/ignore/ignore_pattern_provider.py +0 -0
  126. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/indexing/__init__.py +0 -0
  127. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/indexing/fusion_service.py +0 -0
  128. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/mappers/__init__.py +0 -0
  129. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/mappers/index_mapper.py +0 -0
  130. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/slicing/__init__.py +0 -0
  131. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/slicing/language_detection_service.py +0 -0
  132. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/slicing/slicer.py +0 -0
  133. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/sqlalchemy/__init__.py +0 -0
  134. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/sqlalchemy/embedding_repository.py +0 -0
  135. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/sqlalchemy/entities.py +0 -0
  136. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/sqlalchemy/index_repository.py +0 -0
  137. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/ui/__init__.py +0 -0
  138. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/ui/progress.py +0 -0
  139. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/infrastructure/ui/spinner.py +0 -0
  140. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/mcp.py +0 -0
  141. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/middleware.py +0 -0
  142. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/README +0 -0
  143. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/__init__.py +0 -0
  144. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/env.py +0 -0
  145. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/script.py.mako +0 -0
  146. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/versions/4073b33f9436_add_file_processing_flag.py +0 -0
  147. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/versions/4552eb3f23ce_add_summary.py +0 -0
  148. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/versions/7c3bbc2ab32b_add_embeddings_table.py +0 -0
  149. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/versions/85155663351e_initial.py +0 -0
  150. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/versions/9e53ea8bb3b0_add_authors.py +0 -0
  151. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/versions/__init__.py +0 -0
  152. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/migrations/versions/c3f5137d30f5_index_all_the_things.py +0 -0
  153. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/reporting.py +0 -0
  154. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/utils/__init__.py +0 -0
  155. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/utils/dump_openapi.py +0 -0
  156. {kodit-0.3.12 → kodit-0.3.13}/src/kodit/utils/path_utils.py +0 -0
  157. {kodit-0.3.12 → kodit-0.3.13}/tests/__init__.py +0 -0
  158. {kodit-0.3.12 → kodit-0.3.13}/tests/docker-smoke.sh +0 -0
  159. {kodit-0.3.12 → kodit-0.3.13}/tests/experiments/__init__.py +0 -0
  160. {kodit-0.3.12 → kodit-0.3.13}/tests/experiments/cline_prompt_tests/__init__.py +0 -0
  161. {kodit-0.3.12 → kodit-0.3.13}/tests/experiments/cline_prompt_tests/cline_prompt.txt +0 -0
  162. {kodit-0.3.12 → kodit-0.3.13}/tests/experiments/cline_prompt_tests/cline_prompt_test.py +0 -0
  163. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/__init__.py +0 -0
  164. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/app_test.py +0 -0
  165. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/application/__init__.py +0 -0
  166. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/application/services/__init__.py +0 -0
  167. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/application/services/test_auto_indexing_service.py +0 -0
  168. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/application/services/test_sync_scheduler.py +0 -0
  169. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/application/test_code_indexing_application_service.py +0 -0
  170. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/cli_test.py +0 -0
  171. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/config_test.py +0 -0
  172. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/domain/__init__.py +0 -0
  173. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/domain/bm25_domain_service_test.py +0 -0
  174. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/domain/enrichment_domain_service_test.py +0 -0
  175. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/domain/entities_test.py +0 -0
  176. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/domain/services/__init__.py +0 -0
  177. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/domain/services/index_service_test.py +0 -0
  178. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/domain/test_embedding_service.py +0 -0
  179. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/domain/test_language_mapping.py +0 -0
  180. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/domain/test_multi_search_result.py +0 -0
  181. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/e2e.py +0 -0
  182. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/__init__.py +0 -0
  183. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/bm25/__init__.py +0 -0
  184. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/bm25/local_bm25_repository_test.py +0 -0
  185. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/bm25/vectorchord_bm25_repository_test.py +0 -0
  186. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/cloning/git_cloning/__init__.py +0 -0
  187. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/cloning/git_cloning/working_copy_test.py +0 -0
  188. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/embedding/__init__.py +0 -0
  189. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/embedding/embedding_factory_test.py +0 -0
  190. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/embedding/embedding_provider/__init__.py +0 -0
  191. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/embedding/embedding_provider/test_hash_embedding_provider.py +0 -0
  192. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/embedding/embedding_provider/test_local_embedding_provider.py +0 -0
  193. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/embedding/embedding_provider/test_openai_embedding_provider.py +0 -0
  194. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/embedding/test_batching.py +0 -0
  195. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/embedding/test_embedding_integration.py +0 -0
  196. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/embedding/test_local_vector_search_repository.py +0 -0
  197. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/embedding/test_vectorchord_vector_search_repository.py +0 -0
  198. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/enrichment/__init__.py +0 -0
  199. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/enrichment/enrichment_provider/__init__.py +0 -0
  200. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/enrichment/enrichment_provider/test_local_enrichment_provider.py +0 -0
  201. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/enrichment/enrichment_provider/test_null_enrichment_provider.py +0 -0
  202. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/enrichment/enrichment_provider/test_openai_enrichment_provider.py +0 -0
  203. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/enrichment/test_enrichment_factory.py +0 -0
  204. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/mappers/__init__.py +0 -0
  205. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/mappers/test_index_mapper.py +0 -0
  206. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/__init__.py +0 -0
  207. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/__init__.py +0 -0
  208. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/c/main.c +0 -0
  209. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/c/models.c +0 -0
  210. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/c/models.h +0 -0
  211. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/c/utils.c +0 -0
  212. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/c/utils.h +0 -0
  213. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/cpp/main.cpp +0 -0
  214. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/cpp/models.cpp +0 -0
  215. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/cpp/models.hpp +0 -0
  216. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/cpp/utils.cpp +0 -0
  217. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/cpp/utils.hpp +0 -0
  218. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/csharp/Main.cs +0 -0
  219. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/csharp/Models.cs +0 -0
  220. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/csharp/Utils.cs +0 -0
  221. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/css/components.css +0 -0
  222. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/css/main.css +0 -0
  223. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/css/utilities.css +0 -0
  224. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/go/main.go +0 -0
  225. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/go/models.go +0 -0
  226. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/go/utils.go +0 -0
  227. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/html/components.html +0 -0
  228. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/html/forms.html +0 -0
  229. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/html/main.html +0 -0
  230. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/java/Main.java +0 -0
  231. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/java/Models.java +0 -0
  232. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/java/Utils.java +0 -0
  233. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/javascript/main.js +0 -0
  234. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/javascript/models.js +0 -0
  235. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/javascript/utils.js +0 -0
  236. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/python/__init__.py +0 -0
  237. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/python/main.py +0 -0
  238. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/python/models.py +0 -0
  239. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/python/utils.py +0 -0
  240. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/rust/main.rs +0 -0
  241. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/rust/models.rs +0 -0
  242. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/data/rust/utils.rs +0 -0
  243. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/slicing/slicer_test.py +0 -0
  244. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/snippets/__init__.py +0 -0
  245. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/snippets/csharp.cs +0 -0
  246. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/snippets/golang.go +0 -0
  247. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/snippets/javascript.js +0 -0
  248. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/snippets/knock_knock_server.py +0 -0
  249. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/snippets/python.py +0 -0
  250. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/snippets/typescript.tsx +0 -0
  251. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/sqlalchemy/__init__.py +0 -0
  252. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/infrastructure/sqlalchemy/test_embedding_repository.py +0 -0
  253. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/log_test.py +0 -0
  254. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/mcp_stdio_test.py +0 -0
  255. {kodit-0.3.12 → kodit-0.3.13}/tests/kodit/mcp_test.py +0 -0
  256. {kodit-0.3.12 → kodit-0.3.13}/tests/performance/__init__.py +0 -0
  257. {kodit-0.3.12 → kodit-0.3.13}/tests/performance/similarity.py +0 -0
  258. {kodit-0.3.12 → kodit-0.3.13}/tests/smoke.sh +0 -0
  259. {kodit-0.3.12 → kodit-0.3.13}/tests/utils/__init__.py +0 -0
  260. {kodit-0.3.12 → kodit-0.3.13}/tests/utils/test_path_utils.py +0 -0
  261. {kodit-0.3.12 → kodit-0.3.13}/tests/vectorchord-smoke.sh +0 -0
  262. {kodit-0.3.12 → kodit-0.3.13}/uv.lock +0 -0
@@ -91,6 +91,8 @@ jobs:
91
91
  type=sha,enable=${{ steps.pyver.outputs.ENABLE_DEFAULT }}
92
92
  type=sha,suffix=-py${{ steps.pyver.outputs.SHORT_PY }}
93
93
  type=raw,value=latest,enable=${{ steps.pyver.outputs.ENABLE_DEFAULT && startsWith(github.ref, 'refs/tags/') }}
94
+ flavor: |
95
+ latest=false
94
96
 
95
97
  - name: Build and push Docker image
96
98
  id: push
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kodit
3
- Version: 0.3.12
3
+ Version: 0.3.13
4
4
  Summary: Code indexing for better AI code generation
5
5
  Project-URL: Homepage, https://docs.helixml.tech/kodit/
6
6
  Project-URL: Documentation, https://docs.helixml.tech/kodit/
@@ -12,7 +12,7 @@ look at the [hosted version](https://kodit.helix.ml/docs).
12
12
  This is the REST API for the Kodit server. Please refer to the
13
13
  [Kodit documentation](https://docs.helix.ml/kodit/) for more information.
14
14
 
15
- Current version: 0.3.12
15
+ Current version: 0.3.13
16
16
 
17
17
  ## Authentication
18
18
 
@@ -3,7 +3,7 @@
3
3
  "info": {
4
4
  "title": "kodit API",
5
5
  "description": "\nThis is the REST API for the Kodit server. Please refer to the\n[Kodit documentation](https://docs.helix.ml/kodit/) for more information.\n ",
6
- "version": "0.3.12"
6
+ "version": "0.3.13"
7
7
  },
8
8
  "paths": {
9
9
  "/healthz": {
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.3.12'
21
- __version_tuple__ = version_tuple = (0, 3, 12)
20
+ __version__ = version = '0.3.13'
21
+ __version_tuple__ = version_tuple = (0, 3, 13)
@@ -13,6 +13,7 @@ from kodit.application.services.sync_scheduler import SyncSchedulerService
13
13
  from kodit.config import AppContext
14
14
  from kodit.infrastructure.api.v1.routers import indexes_router, search_router
15
15
  from kodit.infrastructure.api.v1.schemas.context import AppLifespanState
16
+ from kodit.log import configure_logging, configure_telemetry
16
17
  from kodit.mcp import mcp
17
18
  from kodit.middleware import ASGICancelledErrorMiddleware, logging_middleware
18
19
 
@@ -26,10 +27,13 @@ async def app_lifespan(_: FastAPI) -> AsyncIterator[AppLifespanState]:
26
27
  """Manage application lifespan for auto-indexing and sync."""
27
28
  global _auto_indexing_service, _sync_scheduler_service # noqa: PLW0603
28
29
 
30
+ # Setup app_context and implement logging and telemetry
29
31
  app_context = AppContext()
30
- db = await app_context.get_db()
32
+ configure_logging(app_context)
33
+ configure_telemetry(app_context)
31
34
 
32
35
  # Start auto-indexing service
36
+ db = await app_context.get_db()
33
37
  _auto_indexing_service = AutoIndexingService(
34
38
  app_context=app_context,
35
39
  session_factory=db.session_factory,
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import asyncio
6
+ from enum import Enum
6
7
  from functools import wraps
7
8
  from pathlib import Path
8
9
  from typing import TYPE_CHECKING, Annotated, Any, Literal, TypeVar
@@ -18,15 +19,22 @@ from pydantic_settings import (
18
19
  SettingsConfigDict,
19
20
  )
20
21
 
22
+ from kodit.database import Database
23
+
21
24
  if TYPE_CHECKING:
22
25
  from collections.abc import Callable, Coroutine
23
26
 
24
27
 
25
- from kodit.database import Database
28
+ class LogFormat(Enum):
29
+ """The format of the log output."""
30
+
31
+ PRETTY = "pretty"
32
+ JSON = "json"
33
+
26
34
 
27
35
  DEFAULT_BASE_DIR = Path.home() / ".kodit"
28
36
  DEFAULT_LOG_LEVEL = "INFO"
29
- DEFAULT_LOG_FORMAT = "pretty"
37
+ DEFAULT_LOG_FORMAT = LogFormat.PRETTY
30
38
  DEFAULT_DISABLE_TELEMETRY = False
31
39
  T = TypeVar("T")
32
40
 
@@ -40,6 +48,7 @@ class Endpoint(BaseModel):
40
48
  base_url: str | None = None
41
49
  model: str | None = None
42
50
  api_key: str | None = None
51
+ num_parallel_tasks: int | None = None
43
52
 
44
53
 
45
54
  class Search(BaseModel):
@@ -165,7 +174,7 @@ class AppContext(BaseSettings):
165
174
  default_factory=lambda data: f"sqlite+aiosqlite:///{data['data_dir']}/kodit.db"
166
175
  )
167
176
  log_level: str = Field(default=DEFAULT_LOG_LEVEL)
168
- log_format: str = Field(default=DEFAULT_LOG_FORMAT)
177
+ log_format: LogFormat = Field(default=DEFAULT_LOG_FORMAT)
169
178
  disable_telemetry: bool = Field(default=DEFAULT_DISABLE_TELEMETRY)
170
179
  default_endpoint: Endpoint | None = Field(
171
180
  default=None,
@@ -14,6 +14,7 @@ from kodit.infrastructure.embedding.embedding_providers.local_embedding_provider
14
14
  LocalEmbeddingProvider,
15
15
  )
16
16
  from kodit.infrastructure.embedding.embedding_providers.openai_embedding_provider import ( # noqa: E501
17
+ OPENAI_NUM_PARALLEL_TASKS,
17
18
  OpenAIEmbeddingProvider,
18
19
  )
19
20
  from kodit.infrastructure.embedding.local_vector_search_repository import (
@@ -55,6 +56,7 @@ def embedding_domain_service_factory(
55
56
  max_retries=2,
56
57
  ),
57
58
  model_name=endpoint.model or "text-embedding-3-small",
59
+ num_parallel_tasks=endpoint.num_parallel_tasks or OPENAI_NUM_PARALLEL_TASKS,
58
60
  )
59
61
  else:
60
62
  log_event("kodit.embedding", {"provider": "local"})
@@ -18,14 +18,17 @@ MAX_TOKENS = 8192 # Conservative token limit for the embedding model
18
18
  BATCH_SIZE = (
19
19
  10 # Maximum number of items per API call (keeps existing test expectations)
20
20
  )
21
- OPENAI_NUM_PARALLEL_TASKS = 25 # Semaphore limit for concurrent OpenAI requests
21
+ OPENAI_NUM_PARALLEL_TASKS = 10 # Semaphore limit for concurrent OpenAI requests
22
22
 
23
23
 
24
24
  class OpenAIEmbeddingProvider(EmbeddingProvider):
25
25
  """OpenAI embedding provider that uses OpenAI's embedding API."""
26
26
 
27
27
  def __init__(
28
- self, openai_client: AsyncOpenAI, model_name: str = "text-embedding-3-small"
28
+ self,
29
+ openai_client: AsyncOpenAI,
30
+ model_name: str = "text-embedding-3-small",
31
+ num_parallel_tasks: int = OPENAI_NUM_PARALLEL_TASKS,
29
32
  ) -> None:
30
33
  """Initialize the OpenAI embedding provider.
31
34
 
@@ -36,6 +39,7 @@ class OpenAIEmbeddingProvider(EmbeddingProvider):
36
39
  """
37
40
  self.openai_client = openai_client
38
41
  self.model_name = model_name
42
+ self.num_parallel_tasks = num_parallel_tasks
39
43
  self.log = structlog.get_logger(__name__)
40
44
 
41
45
  # Lazily initialised token encoding
@@ -78,7 +82,7 @@ class OpenAIEmbeddingProvider(EmbeddingProvider):
78
82
  # Process batches concurrently (but bounded by a semaphore)
79
83
  # -----------------------------------------------------------------
80
84
 
81
- sem = asyncio.Semaphore(OPENAI_NUM_PARALLEL_TASKS)
85
+ sem = asyncio.Semaphore(self.num_parallel_tasks)
82
86
 
83
87
  async def _process_batch(
84
88
  batch: list[EmbeddingRequest],
@@ -9,6 +9,7 @@ from kodit.infrastructure.enrichment.local_enrichment_provider import (
9
9
  LocalEnrichmentProvider,
10
10
  )
11
11
  from kodit.infrastructure.enrichment.openai_enrichment_provider import (
12
+ OPENAI_NUM_PARALLEL_TASKS,
12
13
  OpenAIEnrichmentProvider,
13
14
  )
14
15
  from kodit.log import log_event
@@ -54,6 +55,7 @@ def enrichment_domain_service_factory(
54
55
  max_retries=2,
55
56
  ),
56
57
  model_name=endpoint.model or "gpt-4o-mini",
58
+ num_parallel_tasks=endpoint.num_parallel_tasks or OPENAI_NUM_PARALLEL_TASKS,
57
59
  )
58
60
  else:
59
61
  log_event("kodit.enrichment", {"provider": "local"})
@@ -21,7 +21,12 @@ OPENAI_NUM_PARALLEL_TASKS = 40
21
21
  class OpenAIEnrichmentProvider(EnrichmentProvider):
22
22
  """OpenAI enrichment provider implementation."""
23
23
 
24
- def __init__(self, openai_client: Any, model_name: str = "gpt-4o-mini") -> None:
24
+ def __init__(
25
+ self,
26
+ openai_client: Any,
27
+ model_name: str = "gpt-4o-mini",
28
+ num_parallel_tasks: int = OPENAI_NUM_PARALLEL_TASKS,
29
+ ) -> None:
25
30
  """Initialize the OpenAI enrichment provider.
26
31
 
27
32
  Args:
@@ -32,6 +37,7 @@ class OpenAIEnrichmentProvider(EnrichmentProvider):
32
37
  self.log = structlog.get_logger(__name__)
33
38
  self.openai_client = openai_client
34
39
  self.model_name = model_name
40
+ self.num_parallel_tasks = num_parallel_tasks
35
41
 
36
42
  async def enrich(
37
43
  self, requests: list[EnrichmentRequest]
@@ -50,7 +56,7 @@ class OpenAIEnrichmentProvider(EnrichmentProvider):
50
56
  return
51
57
 
52
58
  # Process batches in parallel with a semaphore to limit concurrent requests
53
- sem = asyncio.Semaphore(OPENAI_NUM_PARALLEL_TASKS)
59
+ sem = asyncio.Semaphore(self.num_parallel_tasks)
54
60
 
55
61
  async def process_request(request: EnrichmentRequest) -> EnrichmentResponse:
56
62
  async with sem:
@@ -7,7 +7,6 @@ import shutil
7
7
  import subprocess
8
8
  import sys
9
9
  import uuid
10
- from enum import Enum
11
10
  from functools import lru_cache
12
11
  from pathlib import Path
13
12
  from typing import Any
@@ -17,7 +16,7 @@ import structlog
17
16
  from structlog.types import EventDict
18
17
 
19
18
  from kodit import _version
20
- from kodit.config import AppContext
19
+ from kodit.config import AppContext, LogFormat
21
20
 
22
21
  _MAC_RE = re.compile(r"(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}")
23
22
 
@@ -35,13 +34,6 @@ def drop_color_message_key(_, __, event_dict: EventDict) -> EventDict: # noqa:
35
34
  return event_dict
36
35
 
37
36
 
38
- class LogFormat(Enum):
39
- """The format of the log output."""
40
-
41
- PRETTY = "pretty"
42
- JSON = "json"
43
-
44
-
45
37
  def configure_logging(app_context: AppContext) -> None:
46
38
  """Configure logging for the application."""
47
39
  timestamper = structlog.processors.TimeStamper(fmt="iso")
@@ -14,7 +14,7 @@ from sqlalchemy.ext.asyncio import (
14
14
  create_async_engine,
15
15
  )
16
16
 
17
- from kodit.config import AppContext
17
+ from kodit.config import AppContext, LogFormat
18
18
 
19
19
  # Need to import these models to create the tables
20
20
  from kodit.infrastructure.sqlalchemy.entities import (
@@ -86,7 +86,7 @@ def app_context() -> Generator[AppContext, None, None]:
86
86
  data_dir=Path(data_dir),
87
87
  db_url="sqlite+aiosqlite:///:memory:",
88
88
  log_level="DEBUG",
89
- log_format="json",
89
+ log_format=LogFormat.JSON,
90
90
  disable_telemetry=True,
91
91
  _env_file=None, # type: ignore[call-arg]
92
92
  )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes