victor-coding 0.7.2__tar.gz → 0.13.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.
Files changed (152) hide show
  1. {victor_coding-0.7.2 → victor_coding-0.13.0}/LICENSE +1 -1
  2. {victor_coding-0.7.2 → victor_coding-0.13.0}/PKG-INFO +9 -10
  3. {victor_coding-0.7.2 → victor_coding-0.13.0}/pyproject.toml +14 -17
  4. {victor_coding-0.7.2 → victor_coding-0.13.0}/tests/test_coding_capabilities.py +1 -1
  5. {victor_coding-0.7.2 → victor_coding-0.13.0}/tests/test_coding_vertical_rl.py +1 -1
  6. {victor_coding-0.7.2 → victor_coding-0.13.0}/tests/test_coding_vertical_teams.py +1 -1
  7. {victor_coding-0.7.2 → victor_coding-0.13.0}/tests/test_coding_vertical_workflows.py +1 -1
  8. {victor_coding-0.7.2 → victor_coding-0.13.0}/tests/test_enhanced_integration.py +1 -1
  9. {victor_coding-0.7.2 → victor_coding-0.13.0}/tests/test_extension_cache.py +1 -1
  10. {victor_coding-0.7.2 → victor_coding-0.13.0}/tests/test_framework_lsp_adapter.py +1 -1
  11. victor_coding-0.13.0/tests/test_graph_backend_marker.py +70 -0
  12. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/assistant.py +1 -1
  13. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/capabilities.py +1 -1
  14. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/__init__.py +1 -1
  15. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/ccg_builder.py +1 -1
  16. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/chunker.py +1 -1
  17. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/embeddings/__init__.py +1 -1
  18. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/embeddings/base.py +1 -1
  19. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/embeddings/chunker.py +1 -1
  20. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/embeddings/lancedb_provider.py +1 -1
  21. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/embeddings/models.py +1 -1
  22. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/embeddings/proximadb_provider.py +5 -14
  23. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/embeddings/registry.py +1 -1
  24. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/graph/__init__.py +1 -1
  25. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/graph/registry.py +6 -1
  26. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/ignore_patterns.py +1 -1
  27. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/indexer.py +90 -74
  28. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/query_expander.py +1 -1
  29. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/symbol_store.py +1 -1
  30. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/tree_sitter_analysis.py +72 -1
  31. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/tree_sitter_extractor.py +5 -1
  32. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/tree_sitter_manager.py +1 -1
  33. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/tree_sitter_service.py +1 -1
  34. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/unified_extractor.py +1 -1
  35. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase_analyzer.py +1 -1
  36. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/completion/__init__.py +1 -1
  37. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/completion/manager.py +1 -1
  38. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/completion/protocol.py +1 -1
  39. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/completion/provider.py +1 -1
  40. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/completion/providers/__init__.py +1 -1
  41. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/completion/providers/ai.py +1 -1
  42. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/completion/providers/lsp.py +1 -1
  43. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/completion/providers/snippet.py +1 -1
  44. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/completion/registry.py +1 -1
  45. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/composed_chains.py +1 -1
  46. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/conversation_enhanced.py +1 -1
  47. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/coverage/__init__.py +1 -1
  48. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/coverage/manager.py +1 -1
  49. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/coverage/parser.py +1 -1
  50. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/coverage/parsers/__init__.py +1 -1
  51. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/coverage/protocol.py +1 -1
  52. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/coverage/visualizer.py +1 -1
  53. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/docgen/__init__.py +1 -1
  54. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/docgen/formatter.py +1 -1
  55. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/docgen/manager.py +1 -1
  56. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/docgen/parser.py +1 -1
  57. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/docgen/protocol.py +1 -1
  58. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/editing/__init__.py +1 -1
  59. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/editing/editor.py +1 -1
  60. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/enrichment.py +1 -1
  61. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/escape_hatches.py +1 -1
  62. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/handlers.py +1 -1
  63. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/__init__.py +1 -1
  64. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/base.py +1 -1
  65. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/manager.py +1 -1
  66. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/plugins/__init__.py +1 -1
  67. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/plugins/additional.py +39 -8
  68. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/plugins/config.py +1 -1
  69. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/plugins/cpp.py +1 -1
  70. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/plugins/go.py +1 -1
  71. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/plugins/java.py +1 -1
  72. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/plugins/javascript.py +1 -1
  73. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/plugins/python.py +1 -1
  74. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/plugins/rust.py +1 -1
  75. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/plugins/typescript.py +1 -1
  76. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/registry.py +1 -1
  77. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/languages/tiers.py +1 -1
  78. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/lsp/__init__.py +1 -1
  79. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/lsp/client.py +1 -1
  80. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/lsp/config.py +1 -1
  81. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/lsp/framework_adapter.py +1 -1
  82. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/lsp/manager.py +1 -1
  83. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/middleware.py +1 -1
  84. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/mode_config.py +1 -1
  85. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/native/__init__.py +5 -5
  86. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/performance/__init__.py +1 -1
  87. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/performance/factory.py +1 -1
  88. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/performance/protocols.py +1 -1
  89. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/performance/registry.py +1 -1
  90. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/performance/service_provider.py +1 -1
  91. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/performance/settings.py +1 -1
  92. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/performance/wrappers.py +1 -1
  93. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/prompts.py +1 -1
  94. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/protocols.py +5 -17
  95. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/refactor/__init__.py +1 -1
  96. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/refactor/analyzer.py +1 -1
  97. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/refactor/manager.py +1 -1
  98. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/refactor/protocol.py +1 -1
  99. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/refactor/transforms/__init__.py +1 -1
  100. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/refactor/transforms/base.py +1 -1
  101. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/refactor/transforms/extract.py +1 -1
  102. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/refactor/transforms/rename.py +1 -1
  103. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/review/__init__.py +1 -1
  104. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/review/analyzers.py +1 -1
  105. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/review/manager.py +1 -1
  106. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/review/protocol.py +1 -1
  107. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/review/rules.py +1 -1
  108. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/rl/__init__.py +1 -1
  109. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/rl/config.py +1 -1
  110. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/rl/hooks.py +1 -1
  111. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/safety.py +1 -1
  112. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/safety_enhanced.py +1 -1
  113. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/service_provider.py +1 -1
  114. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/teams/__init__.py +1 -1
  115. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/teams/personas.py +1 -1
  116. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/teams/specs.py +1 -1
  117. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/testgen/__init__.py +1 -1
  118. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/testgen/analyzer.py +1 -1
  119. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/testgen/generator.py +1 -1
  120. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/testgen/manager.py +1 -1
  121. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/testgen/protocol.py +1 -1
  122. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/tool_dependencies.py +1 -1
  123. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/tools/code_executor_tool.py +1 -1
  124. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/tools/code_intelligence_tool.py +1 -1
  125. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/tools/code_search_tool.py +76 -244
  126. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/tools/graph_tool.py +48 -23
  127. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/workflows/__init__.py +1 -1
  128. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/workflows/bugfix.py +1 -1
  129. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/workflows/feature.py +1 -1
  130. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/workflows/provider.py +1 -1
  131. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/workflows/review.py +1 -1
  132. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding.egg-info/PKG-INFO +9 -10
  133. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding.egg-info/SOURCES.txt +1 -0
  134. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding.egg-info/requires.txt +5 -5
  135. {victor_coding-0.7.2 → victor_coding-0.13.0}/README.md +0 -0
  136. {victor_coding-0.7.2 → victor_coding-0.13.0}/setup.cfg +0 -0
  137. {victor_coding-0.7.2 → victor_coding-0.13.0}/tests/test_api_router_provider.py +0 -0
  138. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/__init__.py +0 -0
  139. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/api/__init__.py +0 -0
  140. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/api/router_provider.py +0 -0
  141. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/architecture_analyzer.py +0 -0
  142. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/graph/protocol.py +0 -0
  143. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/symbol_extractor.py +0 -0
  144. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/codebase/symbol_resolver.py +0 -0
  145. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/compat/__init__.py +0 -0
  146. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/compat/settings.py +0 -0
  147. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/plugin.py +0 -0
  148. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/skills.py +0 -0
  149. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding/tools/__init__.py +0 -0
  150. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding.egg-info/dependency_links.txt +0 -0
  151. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding.egg-info/entry_points.txt +0 -0
  152. {victor_coding-0.7.2 → victor_coding-0.13.0}/victor_coding.egg-info/top_level.txt +0 -0
@@ -175,7 +175,7 @@
175
175
 
176
176
  END OF TERMS AND CONDITIONS
177
177
 
178
- Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
178
+ Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
179
179
 
180
180
  Licensed under the Apache License, Version 2.0 (the "License");
181
181
  you may not use this file except in compliance with the License.
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: victor-coding
3
- Version: 0.7.2
3
+ Version: 0.13.0
4
4
  Summary: Coding vertical for Victor AI - Software development, debugging, and code generation
5
- Author-email: Vijaykumar Singh <singhvjd@gmail.com>
6
- Maintainer-email: Vijaykumar Singh <singhvjd@gmail.com>
5
+ Author-email: Vijaykumar Singh <vijay@anvaiops.com>
6
+ Maintainer-email: Vijaykumar Singh <vijay@anvaiops.com>
7
7
  License: Apache-2.0
8
8
  Project-URL: Homepage, https://github.com/vjsingh1984/victor-coding
9
9
  Project-URL: Repository, https://github.com/vjsingh1984/victor-coding
@@ -13,34 +13,33 @@ Keywords: victor,vertical,coding,development,debugging,refactoring
13
13
  Classifier: Development Status :: 4 - Beta
14
14
  Classifier: Intended Audience :: Developers
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.11
17
16
  Classifier: Programming Language :: Python :: 3.12
18
17
  Classifier: Topic :: Software Development
19
- Requires-Python: >=3.11
18
+ Requires-Python: >=3.12
20
19
  Description-Content-Type: text/markdown
21
20
  License-File: LICENSE
22
21
  Requires-Dist: victor-contracts[yaml]<1.0,>=0.6.0
23
- Requires-Dist: numpy<2.3,>=1.24
24
22
  Requires-Dist: victor-codegraph[treesitter]>=0.1.0
25
23
  Requires-Dist: defusedxml<1.0,>=0.7
26
24
  Provides-Extra: runtime
27
25
  Requires-Dist: victor-ai<1.0,>=0.7.6; extra == "runtime"
28
26
  Provides-Extra: native
29
27
  Provides-Extra: proximadb
30
- Requires-Dist: proximadb<0.3,>=0.2; extra == "proximadb"
28
+ Requires-Dist: proximadb<0.5,>=0.4.1; extra == "proximadb"
31
29
  Provides-Extra: codegraph
32
30
  Requires-Dist: victor-codegraph<1.0,>=0.1.0; extra == "codegraph"
33
31
  Provides-Extra: dev
32
+ Requires-Dist: numpy<2.6,>=1.24; extra == "dev"
34
33
  Requires-Dist: pytest>=8.0; extra == "dev"
35
34
  Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
36
35
  Requires-Dist: pytest-cov>=4.1; extra == "dev"
37
36
  Requires-Dist: pytest-xdist>=3.0; extra == "dev"
38
37
  Requires-Dist: pytest-benchmark>=5.0; extra == "dev"
39
- Requires-Dist: black==26.1.0; extra == "dev"
38
+ Requires-Dist: black==26.10.0; extra == "dev"
40
39
  Requires-Dist: ruff>=0.5; extra == "dev"
41
- Requires-Dist: mypy>=1.10; extra == "dev"
40
+ Requires-Dist: mypy==2.4.0; extra == "dev"
42
41
  Provides-Extra: native-dev
43
- Requires-Dist: maturin<2.0,>=1.0; extra == "native-dev"
42
+ Requires-Dist: maturin<2.0,>=1.10; extra == "native-dev"
44
43
  Dynamic: license-file
45
44
 
46
45
  # victor-coding
@@ -1,22 +1,22 @@
1
1
  [build-system]
2
2
  requires = [
3
- "setuptools>=61.0",
3
+ "setuptools>=83.0.0",
4
4
  "wheel",
5
5
  ]
6
6
  build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "victor-coding"
10
- version = "0.7.2"
10
+ version = "0.13.0"
11
11
  description = "Coding vertical for Victor AI - Software development, debugging, and code generation"
12
12
  readme = "README.md"
13
- requires-python = ">=3.11"
13
+ requires-python = ">=3.12"
14
14
  license = {text = "Apache-2.0"}
15
15
  authors = [
16
- { name = "Vijaykumar Singh", email = "singhvjd@gmail.com" },
16
+ { name = "Vijaykumar Singh", email = "vijay@anvaiops.com" },
17
17
  ]
18
18
  maintainers = [
19
- { name = "Vijaykumar Singh", email = "singhvjd@gmail.com" },
19
+ { name = "Vijaykumar Singh", email = "vijay@anvaiops.com" },
20
20
  ]
21
21
  keywords = [
22
22
  "victor",
@@ -30,13 +30,11 @@ classifiers = [
30
30
  "Development Status :: 4 - Beta",
31
31
  "Intended Audience :: Developers",
32
32
  "Programming Language :: Python :: 3",
33
- "Programming Language :: Python :: 3.11",
34
33
  "Programming Language :: Python :: 3.12",
35
34
  "Topic :: Software Development",
36
35
  ]
37
36
  dependencies = [
38
37
  "victor-contracts[yaml]>=0.6.0,<1.0", # Definition-layer contract for external verticals
39
- "numpy>=1.24,<2.3", # Required by victor.storage.embeddings; numba-compatible
40
38
  "victor-codegraph[treesitter]>=0.1.0", # Shared code->CPG chunker (ADR-014); [treesitter] supplies the grammars the delegation parses JS/Go/TS/Rust with
41
39
  "defusedxml>=0.7,<1.0", # XXE-hardened XML parsing for coverage reports
42
40
  ]
@@ -46,16 +44,15 @@ runtime = [
46
44
  "victor-ai>=0.7.6,<1.0", # Runtime support - optional, contract-first architecture
47
45
  ]
48
46
  native = [
49
- # Native extensions are handled by maturin
50
- # Install with: pip install -e .[native]
51
- # or build with: maturin develop --release
47
+ # Compatibility extra. Build the separate distribution from ./native;
48
+ # see native/README.md. Installing this empty extra does not build Rust.
52
49
  ]
53
50
  # ProximaDB embedding provider (optional backend).
54
51
  # Imported lazily with graceful ImportError fallback in
55
52
  # victor_coding/codebase/embeddings/proximadb_provider.py. Pin kept identical
56
53
  # to victor-ai's proximadb extra so the backend version stays aligned.
57
54
  proximadb = [
58
- "proximadb>=0.2,<0.3",
55
+ "proximadb>=0.4.1,<0.5",
59
56
  ]
60
57
  # Shared code->CPG chunker (ADR-014). Opt-in: when installed AND
61
58
  # VICTOR_CODING_USE_CODEGRAPH=1, CodeChunker delegates to it. Published on PyPI
@@ -64,17 +61,18 @@ codegraph = [
64
61
  "victor-codegraph>=0.1.0,<1.0",
65
62
  ]
66
63
  dev = [
64
+ "numpy>=1.24,<2.6", # Synthetic embeddings in indexer tests
67
65
  "pytest>=8.0",
68
66
  "pytest-asyncio>=0.23",
69
67
  "pytest-cov>=4.1",
70
68
  "pytest-xdist>=3.0",
71
69
  "pytest-benchmark>=5.0",
72
- "black==26.1.0",
70
+ "black==26.10.0",
73
71
  "ruff>=0.5",
74
- "mypy>=1.10",
72
+ "mypy==2.4.0",
75
73
  ]
76
74
  native-dev = [
77
- "maturin>=1.0,<2.0", # Build Rust extensions
75
+ "maturin>=1.10,<2.0", # Build Rust extensions
78
76
  ]
79
77
 
80
78
  [project.urls]
@@ -156,13 +154,12 @@ exclude = ["tests*", "docs*", "native*"]
156
154
  [tool.black]
157
155
  line-length = 100
158
156
  target-version = [
159
- "py311",
160
157
  "py312",
161
158
  ]
162
159
 
163
160
  [tool.ruff]
164
161
  line-length = 100
165
- target-version = "py311"
162
+ target-version = "py312"
166
163
 
167
164
  [tool.ruff.lint]
168
165
  select = ["E", "W", "F", "B", "C4"]
@@ -187,5 +184,5 @@ ignore = [
187
184
  "__init__.py" = ["F401"]
188
185
  "tests/**/*.py" = ["B017", "B018", "E741", "F841"]
189
186
  [tool.mypy]
190
- python_version = "3.11"
187
+ python_version = "3.12"
191
188
  warn_return_any = true
@@ -1,4 +1,4 @@
1
- # Copyright 2026 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2026 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2026 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2026 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -0,0 +1,70 @@
1
+ # Copyright 2026 Vijaykumar Singh <vijay@anvaiops.com>
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """The graph tool and index shim must honor `.victor/graph_backend`.
16
+
17
+ Previously: the `graph` tool probed project.db's sqlite tables (dropping the
18
+ tool from the LLM schema on marker'd repos whose graph lives elsewhere) and
19
+ hardcoded SqliteGraphStore; the indexer accepted `graph_store_name` and
20
+ silently dropped it; the shim defaulted to sqlite. A repo flipped to another
21
+ backend got sqlite everywhere.
22
+ """
23
+
24
+ from pathlib import Path
25
+
26
+ from victor_coding.tools.graph_tool import (
27
+ _project_graph_has_data,
28
+ _resolved_graph_backend,
29
+ )
30
+
31
+
32
+ def _mark(tmp_path: Path, backend: str) -> Path:
33
+ marker_dir = tmp_path / ".victor"
34
+ marker_dir.mkdir(exist_ok=True)
35
+ (marker_dir / "graph_backend").write_text(backend)
36
+ return tmp_path
37
+
38
+
39
+ def test_resolved_backend_reads_marker(tmp_path: Path):
40
+ assert _resolved_graph_backend(tmp_path) == "sqlite"
41
+ _mark(tmp_path, "proxima")
42
+ assert _resolved_graph_backend(tmp_path) == "proxima"
43
+
44
+
45
+ def test_has_data_advertises_tool_on_marked_repos(tmp_path: Path):
46
+ # A proxima-marked repo must not be probed via project.db's sqlite
47
+ # tables (which are legitimately empty there) — the tool stays
48
+ # advertised and the load path constructs the real store.
49
+ _mark(tmp_path, "proxima")
50
+ assert _project_graph_has_data(tmp_path) is True
51
+
52
+
53
+ def test_shim_default_is_auto():
54
+ import inspect
55
+
56
+ from victor_coding.codebase.graph.registry import create_graph_store
57
+
58
+ sig = inspect.signature(create_graph_store)
59
+ assert sig.parameters["name"].default == "auto"
60
+
61
+
62
+ def test_indexer_threads_graph_store_name():
63
+ import inspect
64
+
65
+ from victor_coding.codebase.indexer import CodebaseIndex
66
+
67
+ src = inspect.getsource(CodebaseIndex.__init__)
68
+ assert (
69
+ 'name=graph_store_name or "auto"' in src
70
+ ), "graph_store_name must reach create_graph_store, not be dropped"
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  """Embedding system for Victor codebase intelligence.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -154,9 +154,7 @@ class ProximaDBProvider(BaseEmbeddingProvider):
154
154
  )
155
155
 
156
156
  # Create or get collection
157
- collection_name = self.config.extra_config.get(
158
- "collection_name", "code_embeddings"
159
- )
157
+ collection_name = self.config.extra_config.get("collection_name", "code_embeddings")
160
158
  await self._ensure_collection(collection_name, dimension)
161
159
 
162
160
  self._initialized = True
@@ -271,10 +269,7 @@ class ProximaDBProvider(BaseEmbeddingProvider):
271
269
  elif "null_value" in sql_value:
272
270
  return None
273
271
  elif "array_value" in sql_value:
274
- return [
275
- self._extract_sql_value(v)
276
- for v in sql_value["array_value"].get("values", [])
277
- ]
272
+ return [self._extract_sql_value(v) for v in sql_value["array_value"].get("values", [])]
278
273
  return sql_value
279
274
 
280
275
  def _extract_metadata(self, metadata: Dict[str, Any]) -> Dict[str, Any]:
@@ -462,9 +457,7 @@ class ProximaDBProvider(BaseEmbeddingProvider):
462
457
  content=metadata.get("content", ""),
463
458
  score=score,
464
459
  line_number=metadata.get("line_number"),
465
- metadata={
466
- k: v for k, v in metadata.items() if k not in ["content"]
467
- },
460
+ metadata={k: v for k, v in metadata.items() if k not in ["content"]},
468
461
  )
469
462
  )
470
463
 
@@ -551,9 +544,7 @@ class ProximaDBProvider(BaseEmbeddingProvider):
551
544
  "total_documents": count,
552
545
  "embedding_model_type": self.config.embedding_model_type,
553
546
  "embedding_model_name": self.config.embedding_model_name,
554
- "dimension": (
555
- self.embedding_model.get_dimension() if self.embedding_model else 384
556
- ),
547
+ "dimension": (self.embedding_model.get_dimension() if self.embedding_model else 384),
557
548
  "distance_metric": self.config.distance_metric,
558
549
  "collection_name": self._collection_name,
559
550
  "persist_directory": str(self._data_dir),
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  """Graph storage module for codebase analysis.
@@ -27,7 +27,7 @@ except ImportError:
27
27
 
28
28
 
29
29
  def create_graph_store(
30
- name: str = "sqlite",
30
+ name: str = "auto",
31
31
  project_path: Optional[str] = None,
32
32
  *,
33
33
  backend: Optional[str] = None,
@@ -35,6 +35,11 @@ def create_graph_store(
35
35
  ) -> Optional[Any]:
36
36
  """Create a graph store via victor's registry.
37
37
 
38
+ Default is ``"auto"``: victor resolves the per-repo
39
+ ``.victor/graph_backend`` marker (sqlite when absent), so a repo flipped
40
+ to another backend is honored by every default construction instead of
41
+ silently landing on sqlite.
42
+
38
43
  Returns None if victor-ai is not installed.
39
44
  """
40
45
  if not _VICTOR_AVAILABLE:
@@ -1,4 +1,4 @@
1
- # Copyright 2025 Vijaykumar Singh <singhvjd@gmail.com>
1
+ # Copyright 2025 Vijaykumar Singh <vijay@anvaiops.com>
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.