code-graph-rag 0.0.945__tar.gz → 0.1.38__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 (383) hide show
  1. {code_graph_rag-0.0.945/code_graph_rag.egg-info → code_graph_rag-0.1.38}/PKG-INFO +26 -18
  2. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/PYPI_README.md +20 -12
  3. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/README.md +19 -7
  4. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38/code_graph_rag.egg-info}/PKG-INFO +26 -18
  5. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/code_graph_rag.egg-info/SOURCES.txt +16 -0
  6. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/code_graph_rag.egg-info/requires.txt +5 -5
  7. code_graph_rag-0.1.38/codebase_rag/_cli_env.py +14 -0
  8. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/ast_cache.py +47 -28
  9. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/cli.py +428 -133
  10. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/cli_help.py +27 -3
  11. code_graph_rag-0.1.38/codebase_rag/cli_runtime.py +37 -0
  12. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/config.py +86 -10
  13. code_graph_rag-0.1.38/codebase_rag/console_marks.py +59 -0
  14. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_cpp.py +7 -0
  15. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_csharp.py +158 -0
  16. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_dart.py +43 -0
  17. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_java.py +10 -0
  18. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_nodes.py +18 -0
  19. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_php.py +9 -0
  20. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_python.py +6 -0
  21. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_rust.py +7 -0
  22. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_scala.py +4 -0
  23. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/build.py +22 -2
  24. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/cli.py +106 -8
  25. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/core.py +26 -3
  26. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/graph.py +100 -6
  27. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/health.py +17 -4
  28. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/mcp.py +29 -0
  29. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/providers.py +15 -0
  30. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/security.py +228 -7
  31. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/trace.py +22 -2
  32. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/context_pruning.py +107 -16
  33. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/crash_correlation.py +5 -1
  34. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/cypher_queries.py +206 -11
  35. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/dead_code.py +347 -181
  36. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/decorators.py +47 -0
  37. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/docker-compose.yaml +15 -3
  38. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/duplicates.py +4 -12
  39. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/editing/rename.py +113 -43
  40. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/embedder.py +12 -3
  41. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/exceptions.py +45 -4
  42. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/gloss.py +55 -6
  43. code_graph_rag-0.1.38/codebase_rag/gloss_anchor.py +228 -0
  44. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/gloss_repair.py +219 -25
  45. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/graph_audit.py +9 -0
  46. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/graph_cli.py +1 -1
  47. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/graph_query.py +196 -6
  48. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/graph_updater.py +2230 -636
  49. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/language_spec.py +113 -1
  50. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/logs.py +53 -21
  51. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/main.py +215 -145
  52. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/mcp/server.py +35 -6
  53. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/mcp/tools.py +385 -10
  54. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/models.py +7 -0
  55. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/ast_grep_tier.py +43 -29
  56. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/call_processor.py +3366 -2256
  57. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/call_resolver.py +803 -163
  58. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/class_ingest/cpp_modules.py +24 -17
  59. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/class_ingest/identity.py +5 -8
  60. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/class_ingest/method_override.py +132 -86
  61. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/class_ingest/mixin.py +970 -663
  62. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/class_ingest/parent_extraction.py +168 -105
  63. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/class_ingest/relationships.py +115 -64
  64. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/contracts.py +2 -2
  65. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/cpp/preproc_recovery.py +15 -8
  66. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/cpp/type_inference.py +1 -3
  67. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/cpp/utils.py +72 -63
  68. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/csharp/type_inference.py +777 -122
  69. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/csharp/utils.py +178 -17
  70. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/csharp_frontend/frontend.py +2 -2
  71. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/dart/__init__.py +4 -0
  72. code_graph_rag-0.1.38/codebase_rag/parsers/dart/utils.py +780 -0
  73. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/definition_processor.py +208 -131
  74. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/dependency_parser.py +35 -22
  75. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/dispatch_registry.py +2 -6
  76. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/endpoints.py +47 -33
  77. code_graph_rag-0.1.38/codebase_rag/parsers/enum_variants.py +177 -0
  78. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/export_detection.py +26 -25
  79. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/factory.py +4 -0
  80. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/field_nodes.py +1 -1
  81. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/flow_access/processor.py +757 -538
  82. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/function_ingest.py +507 -409
  83. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/go/type_inference.py +2 -4
  84. code_graph_rag-0.1.38/codebase_rag/parsers/go_frontend/gotypes/go.mod +12 -0
  85. code_graph_rag-0.1.38/codebase_rag/parsers/go_frontend/gotypes/go.sum +8 -0
  86. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/go_frontend/gotypes/main.go +1 -1
  87. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/base.py +1 -3
  88. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/cpp.py +6 -5
  89. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/js_ts.py +35 -21
  90. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/php.py +10 -10
  91. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/import_processor.py +1119 -704
  92. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/io_access/extract.py +62 -47
  93. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/io_access/processor.py +38 -30
  94. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java/method_resolver.py +120 -78
  95. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java/utils.py +48 -13
  96. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java/variable_analyzer.py +45 -23
  97. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/js_ts/module_paths.py +3 -3
  98. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/js_ts/module_system.py +57 -40
  99. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/js_ts/type_inference.py +146 -104
  100. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/js_ts/utils.py +21 -13
  101. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/lua/type_inference.py +33 -25
  102. code_graph_rag-0.1.38/codebase_rag/parsers/parameter_nodes.py +843 -0
  103. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/py/ast_analyzer.py +265 -60
  104. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/py/type_inference.py +3 -2
  105. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/py/utils.py +1 -1
  106. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/py/variable_analyzer.py +35 -22
  107. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/python_source_roots.py +79 -38
  108. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/rs/type_inference.py +25 -18
  109. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/rs/utils.py +146 -100
  110. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/stdlib_extractor.py +54 -47
  111. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/type_facts.py +19 -3
  112. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/type_inference.py +59 -75
  113. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/utils.py +330 -250
  114. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/prompts.py +20 -4
  115. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/providers/base.py +78 -20
  116. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/providers/litellm.py +18 -9
  117. code_graph_rag-0.1.38/codebase_rag/queries/highlights/c_sharp.scm +3 -0
  118. code_graph_rag-0.1.38/codebase_rag/queries/highlights/dart.scm +19 -0
  119. code_graph_rag-0.1.38/codebase_rag/queries/highlights/java.scm +17 -0
  120. code_graph_rag-0.1.38/codebase_rag/queries/highlights/javascript.scm +14 -0
  121. code_graph_rag-0.1.38/codebase_rag/queries/highlights/php.scm +11 -0
  122. code_graph_rag-0.1.38/codebase_rag/queries/highlights/python.scm +5 -0
  123. code_graph_rag-0.1.38/codebase_rag/queries/highlights/rust.scm +11 -0
  124. code_graph_rag-0.1.38/codebase_rag/queries/highlights/typescript.scm +17 -0
  125. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/readme_sections.py +34 -8
  126. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/__init__.py +13 -1
  127. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/anthropic_token_counter.py +69 -48
  128. code_graph_rag-0.1.38/codebase_rag/services/cypher_guard.py +198 -0
  129. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/graph_service.py +210 -101
  130. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/llm.py +75 -34
  131. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/neo4j_driver.py +110 -25
  132. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/protobuf_service.py +28 -21
  133. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/usage_cost.py +1 -1
  134. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/stack/cli.py +1 -0
  135. code_graph_rag-0.1.38/codebase_rag/stack/constants.py +189 -0
  136. code_graph_rag-0.1.38/codebase_rag/stack/health.py +203 -0
  137. code_graph_rag-0.1.38/codebase_rag/stack/manager.py +922 -0
  138. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/structural_check.py +53 -14
  139. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/structural_delta.py +119 -17
  140. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tool_errors.py +4 -0
  141. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/code_retrieval.py +25 -25
  142. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/codebase_query.py +176 -62
  143. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/file_editor.py +104 -84
  144. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/health_checker.py +21 -7
  145. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/language.py +61 -52
  146. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/semantic_search.py +24 -13
  147. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/shell_command.py +931 -613
  148. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/tool_descriptions.py +41 -4
  149. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/cli.py +34 -2
  150. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/instrumented.py +10 -4
  151. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/pprof.py +58 -6
  152. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/resolution.py +2 -5
  153. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/types_defs.py +39 -16
  154. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/unixcoder.py +27 -28
  155. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/utils/fqn_resolver.py +28 -12
  156. code_graph_rag-0.1.38/codebase_rag/utils/json_io.py +31 -0
  157. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/utils/path_utils.py +142 -9
  158. code_graph_rag-0.1.38/codebase_rag/utils/qn_markers.py +77 -0
  159. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/utils/token_utils.py +1 -1
  160. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/vector_store.py +135 -30
  161. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/workspaces/cli.py +1 -0
  162. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/workspaces/models.py +3 -0
  163. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/workspaces/storage.py +4 -3
  164. code_graph_rag-0.1.38/codec/schema_pb2.py +93 -0
  165. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codec/schema_pb2.pyi +38 -8
  166. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/pyproject.toml +22 -15
  167. code_graph_rag-0.0.945/codebase_rag/parsers/dart/utils.py +0 -327
  168. code_graph_rag-0.0.945/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -10
  169. code_graph_rag-0.0.945/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -8
  170. code_graph_rag-0.0.945/codebase_rag/parsers/parameter_nodes.py +0 -262
  171. code_graph_rag-0.0.945/codebase_rag/stack/constants.py +0 -71
  172. code_graph_rag-0.0.945/codebase_rag/stack/health.py +0 -61
  173. code_graph_rag-0.0.945/codebase_rag/stack/manager.py +0 -365
  174. code_graph_rag-0.0.945/codec/schema_pb2.py +0 -91
  175. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/LICENSE +0 -0
  176. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/cgr/__init__.py +0 -0
  177. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  178. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/code_graph_rag.egg-info/entry_points.txt +0 -0
  179. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/code_graph_rag.egg-info/top_level.txt +0 -0
  180. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/__init__.py +0 -0
  181. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/__init__.py +0 -0
  182. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  183. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  184. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  185. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  186. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  187. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  188. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  189. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  190. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  191. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  192. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  193. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  194. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  195. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  196. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  197. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  198. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  199. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  200. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  201. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  202. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  203. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  204. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  205. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  206. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  207. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  208. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  209. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  210. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  211. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  212. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  213. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  214. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  215. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  216. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  217. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  218. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  219. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  220. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  221. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  222. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  223. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  224. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  225. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  226. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  227. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  228. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/capture.py +0 -0
  229. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/cgr_state.py +0 -0
  230. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/__init__.py +0 -0
  231. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_go.py +0 -0
  232. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_js.py +0 -0
  233. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_lua.py +0 -0
  234. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/ast_sql.py +0 -0
  235. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/deadcode_roots.py +0 -0
  236. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/deps.py +0 -0
  237. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/duplicates.py +0 -0
  238. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/fqn_specs.py +0 -0
  239. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/lang_tooling.py +0 -0
  240. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/languages.py +0 -0
  241. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/stdlib_types.py +0 -0
  242. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/constants/structural.py +0 -0
  243. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/editing/__init__.py +0 -0
  244. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/editing/cli.py +0 -0
  245. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/editing/contract.py +0 -0
  246. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/editing/imports.py +0 -0
  247. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/editing/patcher.py +0 -0
  248. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/editing/transaction.py +0 -0
  249. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/editor_links.py +0 -0
  250. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/flow_verdict.py +0 -0
  251. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/function_registry.py +0 -0
  252. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/graph_dialects.py +0 -0
  253. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/graph_loader.py +0 -0
  254. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/mcp/__init__.py +0 -0
  255. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/mcp/client.py +0 -0
  256. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parser_fingerprint.py +0 -0
  257. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parser_loader.py +0 -0
  258. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/__init__.py +0 -0
  259. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/anchor_hash.py +0 -0
  260. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/ast_fingerprint.py +0 -0
  261. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  262. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  263. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
  264. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  265. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  266. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  267. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  268. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  269. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/build_lock.py +0 -0
  270. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  271. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  272. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  273. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/contract_linking.py +0 -0
  274. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/cpp/__init__.py +0 -0
  275. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  276. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  277. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/cpp_frontend/frontend.py +0 -0
  278. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
  279. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/csharp/__init__.py +0 -0
  280. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  281. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  282. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  283. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  284. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/dart/type_inference.py +0 -0
  285. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/definition_docstring.py +0 -0
  286. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/document_tier.py +0 -0
  287. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
  288. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/endpoint_routes.py +0 -0
  289. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/flat_module.py +0 -0
  290. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  291. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/flow_access/constants.py +0 -0
  292. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/frontend_mode.py +0 -0
  293. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/frontends/__init__.py +0 -0
  294. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/frontends/cpp.py +0 -0
  295. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/frontends/csharp.py +0 -0
  296. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/frontends/go.py +0 -0
  297. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/frontends/java.py +0 -0
  298. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/frontends/protocol.py +0 -0
  299. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/frontends/python.py +0 -0
  300. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/frontends/registry.py +0 -0
  301. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/go/__init__.py +0 -0
  302. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/go/module_paths.py +0 -0
  303. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/go/utils.py +0 -0
  304. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  305. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  306. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/__init__.py +0 -0
  307. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/java.py +0 -0
  308. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/lua.py +0 -0
  309. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/protocol.py +0 -0
  310. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/python.py +0 -0
  311. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/registry.py +0 -0
  312. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/handlers/rust.py +0 -0
  313. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/io_access/__init__.py +0 -0
  314. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/io_access/constants.py +0 -0
  315. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  316. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/io_access/models.py +0 -0
  317. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/io_access/registry.py +0 -0
  318. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java/__init__.py +0 -0
  319. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java/type_inference.py +0 -0
  320. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java/type_resolver.py +0 -0
  321. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  322. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  323. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  324. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java_generated.py +0 -0
  325. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/java_lombok.py +0 -0
  326. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  327. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/js_ts/ingest.py +0 -0
  328. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/lua/__init__.py +0 -0
  329. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/lua/utils.py +0 -0
  330. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/module_docstring.py +0 -0
  331. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/py/__init__.py +0 -0
  332. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
  333. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  334. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  335. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/rpc_exposure.py +0 -0
  336. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/rs/__init__.py +0 -0
  337. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/semantic_call_join.py +0 -0
  338. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/string_call.py +0 -0
  339. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/parsers/structure_processor.py +0 -0
  340. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/path_filters.py +0 -0
  341. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/providers/__init__.py +0 -0
  342. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/schema_builder.py +0 -0
  343. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/schema_parse.py +0 -0
  344. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/schemas.py +0 -0
  345. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/filtering.py +0 -0
  346. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/gloss_cleanup.py +0 -0
  347. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/graph_diff.py +0 -0
  348. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/provenance.py +0 -0
  349. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/services/resource_cleanup.py +0 -0
  350. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/sql_names.py +0 -0
  351. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/stack/__init__.py +0 -0
  352. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/taint.py +0 -0
  353. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/__init__.py +0 -0
  354. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/ast_grep_service.py +0 -0
  355. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/directory_lister.py +0 -0
  356. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/duplicate_detection.py +0 -0
  357. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/file_reader.py +0 -0
  358. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/file_writer.py +0 -0
  359. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/graph_rerank.py +0 -0
  360. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/research.py +0 -0
  361. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/structural_editor.py +0 -0
  362. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/structural_search.py +0 -0
  363. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/tools/web_search.py +0 -0
  364. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/__init__.py +0 -0
  365. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/cpuprofile.py +0 -0
  366. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/dispatch_site.py +0 -0
  367. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/ebpf_pprof.py +0 -0
  368. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/ingest.py +0 -0
  369. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/pytest_plugin.py +0 -0
  370. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/records.py +0 -0
  371. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/rust_pprof.py +0 -0
  372. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/sourcemap.py +0 -0
  373. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/speedscope.py +0 -0
  374. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/tracer.py +0 -0
  375. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/trace/xdebug.py +0 -0
  376. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/utils/__init__.py +0 -0
  377. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/utils/dependencies.py +0 -0
  378. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/utils/rich_markdown.py +0 -0
  379. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/utils/source_extraction.py +0 -0
  380. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/workspaces/__init__.py +0 -0
  381. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codebase_rag/workspaces/constants.py +0 -0
  382. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/codec/__init__.py +0 -0
  383. {code_graph_rag-0.0.945 → code_graph_rag-0.1.38}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.0.945
3
+ Version: 0.1.38
4
4
  Summary: The ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs
5
5
  License-Expression: MIT
6
6
  Keywords: rag,retrieval-augmented-generation,knowledge-graph,code-analysis,tree-sitter,mcp,mcp-server,llm,graph-database,semantic-search,codebase,memgraph,developer-tools,monorepo
@@ -20,14 +20,14 @@ Description-Content-Type: text/markdown
20
20
  License-File: LICENSE
21
21
  Requires-Dist: loguru>=0.7.3
22
22
  Requires-Dist: mcp>=1.28.1
23
- Requires-Dist: pydantic-ai>=2.0.0
23
+ Requires-Dist: pydantic-ai-slim[anthropic,google,openai]>=2.0.0
24
24
  Requires-Dist: pydantic-settings>=2.12.0
25
25
  Requires-Dist: pymgclient>=1.5.1
26
26
  Requires-Dist: python-dotenv>=1.2.1
27
27
  Requires-Dist: tiktoken>=0.12.0
28
- Requires-Dist: toml>=0.10.2
28
+ Requires-Dist: tomli-w>=1.2.0
29
29
  Requires-Dist: tree-sitter-python>=0.25.0
30
- Requires-Dist: tree-sitter==0.25.2
30
+ Requires-Dist: tree-sitter==0.26.0
31
31
  Requires-Dist: watchdog>=6.0.0
32
32
  Requires-Dist: typer>=0.21.1
33
33
  Requires-Dist: rich>=14.2.0
@@ -67,13 +67,13 @@ Requires-Dist: tree-sitter-cpp>=0.23.0; extra == "treesitter-full"
67
67
  Requires-Dist: tree-sitter-lua>=0.0.19; extra == "treesitter-full"
68
68
  Requires-Dist: tree-sitter-php>=0.24.1; extra == "treesitter-full"
69
69
  Requires-Dist: tree-sitter-c-sharp>=0.23.5; extra == "treesitter-full"
70
- Requires-Dist: tree-sitter-dart>=0.1.0; extra == "treesitter-full"
70
+ Requires-Dist: tree-sitter-dart==0.1.0; extra == "treesitter-full"
71
71
  Requires-Dist: tree-sitter-sql>=0.3.11; extra == "treesitter-full"
72
72
  Requires-Dist: tree-sitter-markdown>=0.5.1; extra == "treesitter-full"
73
73
  Provides-Extra: semantic
74
74
  Requires-Dist: qdrant-client>=1.9.0; extra == "semantic"
75
75
  Requires-Dist: torch>=2.6.0; extra == "semantic"
76
- Requires-Dist: transformers>=4.0.0; extra == "semantic"
76
+ Requires-Dist: transformers>=5.0.0; extra == "semantic"
77
77
  Provides-Extra: milvus
78
78
  Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
79
79
  Provides-Extra: ast-grep
@@ -85,7 +85,7 @@ Dynamic: license-file
85
85
 
86
86
  # Code-Graph-RAG
87
87
 
88
- Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
88
+ Code-Graph-RAG parses a multi-language codebase with Tree-sitter, sharpened by compiler-grade frontends and runtime traces where available, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
89
89
 
90
90
  ## What It Does
91
91
 
@@ -142,12 +142,23 @@ uploads and GitHub Release binaries land on an every-50 cadence, so the tag on `
142
142
  usually runs ahead of the published version. A security fix is the exception: it
143
143
  ships immediately rather than waiting for the cadence.
144
144
 
145
- To run code newer than the latest release, install from git:
145
+ To run code newer than the latest release, install from git with uv:
146
146
 
147
147
  ```bash
148
- pip install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/code-graph-rag@main"
148
+ uv tool install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/code-graph-rag@main"
149
149
  ```
150
150
 
151
+ Use uv for this: it applies the project's `[tool.uv.sources]`, which build the C
152
+ and C++ grammars from forks that keep the declarations upstream drops after a
153
+ `#define` whose value contains a block comment. `pip` ignores those sources and
154
+ installs the upstream grammars.
155
+
156
+ To upgrade, rerun the install with `--upgrade` and the extras you chose, for
157
+ example `pip install --upgrade 'code-graph-rag[treesitter-full]'`. With uv or pipx,
158
+ run `uv tool upgrade code-graph-rag` or `pipx upgrade code-graph-rag` instead; see the
159
+ [installation guide](https://github.com/vitali87/code-graph-rag/blob/main/docs/getting-started/installation.md#upgrade)
160
+ for git installs and the other methods.
161
+
151
162
  ### Prerequisites
152
163
 
153
164
  - Python 3.12+
@@ -155,15 +166,12 @@ pip install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/c
155
166
  - `cmake` (for building pymgclient)
156
167
  - `ripgrep` (`rg`) (for shell command text searching)
157
168
 
158
- The wheel is pure Python (`py3-none-any`), so the package itself installs on
159
- any platform with Python 3.12 or newer (dependencies may still need platform
160
- wheels or build tools, such as `cmake` for `pymgclient`). The piwheels build for Debian Bookworm shows as failed
161
- because Bookworm's system Python is 3.11, which is below our floor. On
162
- Raspberry Pi OS Bookworm, install into a Python 3.12 environment so the pip
163
- commands above actually run under 3.12: with [uv](https://docs.astral.sh/uv/)
164
- run `uv venv --python 3.12 --seed && source .venv/bin/activate` (uv downloads
165
- 3.12 automatically; `--seed` puts pip in the environment), or install CPython 3.12 yourself and use
166
- `python3.12 -m pip install ...`.
169
+ The wheel is pure Python (`py3-none-any`), so it installs on any platform with
170
+ Python 3.12 or newer. Some distributions ship an older interpreter (Debian
171
+ Bookworm, and so Raspberry Pi OS Bookworm, ships 3.11), which also explains the
172
+ failed piwheels Bookworm build. On those systems, see the [installation
173
+ guide](https://github.com/vitali87/code-graph-rag/blob/main/docs/getting-started/installation.md#older-system-interpreters)
174
+ for the available interpreter-pinning alternatives.
167
175
 
168
176
  ## CLI Quick Start
169
177
 
@@ -1,6 +1,6 @@
1
1
  # Code-Graph-RAG
2
2
 
3
- Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
3
+ Code-Graph-RAG parses a multi-language codebase with Tree-sitter, sharpened by compiler-grade frontends and runtime traces where available, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
4
4
 
5
5
  ## What It Does
6
6
 
@@ -57,12 +57,23 @@ uploads and GitHub Release binaries land on an every-50 cadence, so the tag on `
57
57
  usually runs ahead of the published version. A security fix is the exception: it
58
58
  ships immediately rather than waiting for the cadence.
59
59
 
60
- To run code newer than the latest release, install from git:
60
+ To run code newer than the latest release, install from git with uv:
61
61
 
62
62
  ```bash
63
- pip install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/code-graph-rag@main"
63
+ uv tool install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/code-graph-rag@main"
64
64
  ```
65
65
 
66
+ Use uv for this: it applies the project's `[tool.uv.sources]`, which build the C
67
+ and C++ grammars from forks that keep the declarations upstream drops after a
68
+ `#define` whose value contains a block comment. `pip` ignores those sources and
69
+ installs the upstream grammars.
70
+
71
+ To upgrade, rerun the install with `--upgrade` and the extras you chose, for
72
+ example `pip install --upgrade 'code-graph-rag[treesitter-full]'`. With uv or pipx,
73
+ run `uv tool upgrade code-graph-rag` or `pipx upgrade code-graph-rag` instead; see the
74
+ [installation guide](https://github.com/vitali87/code-graph-rag/blob/main/docs/getting-started/installation.md#upgrade)
75
+ for git installs and the other methods.
76
+
66
77
  ### Prerequisites
67
78
 
68
79
  - Python 3.12+
@@ -70,15 +81,12 @@ pip install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/c
70
81
  - `cmake` (for building pymgclient)
71
82
  - `ripgrep` (`rg`) (for shell command text searching)
72
83
 
73
- The wheel is pure Python (`py3-none-any`), so the package itself installs on
74
- any platform with Python 3.12 or newer (dependencies may still need platform
75
- wheels or build tools, such as `cmake` for `pymgclient`). The piwheels build for Debian Bookworm shows as failed
76
- because Bookworm's system Python is 3.11, which is below our floor. On
77
- Raspberry Pi OS Bookworm, install into a Python 3.12 environment so the pip
78
- commands above actually run under 3.12: with [uv](https://docs.astral.sh/uv/)
79
- run `uv venv --python 3.12 --seed && source .venv/bin/activate` (uv downloads
80
- 3.12 automatically; `--seed` puts pip in the environment), or install CPython 3.12 yourself and use
81
- `python3.12 -m pip install ...`.
84
+ The wheel is pure Python (`py3-none-any`), so it installs on any platform with
85
+ Python 3.12 or newer. Some distributions ship an older interpreter (Debian
86
+ Bookworm, and so Raspberry Pi OS Bookworm, ships 3.11), which also explains the
87
+ failed piwheels Bookworm build. On those systems, see the [installation
88
+ guide](https://github.com/vitali87/code-graph-rag/blob/main/docs/getting-started/installation.md#older-system-interpreters)
89
+ for the available interpreter-pinning alternatives.
82
90
 
83
91
  ## CLI Quick Start
84
92
 
@@ -42,18 +42,26 @@
42
42
 
43
43
  # Code-Graph-RAG
44
44
 
45
- Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
45
+ Code-Graph-RAG parses a multi-language codebase with Tree-sitter, sharpened by compiler-grade frontends and runtime traces where available, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
46
46
 
47
47
  <p align="center">
48
- <img src="./assets/demo.gif" alt="demo">
48
+ <b>1. Index:</b> <code>cgr start --update-graph</code> parses a repository into a knowledge graph (sped up)
49
+ </p>
50
+ <p align="center">
51
+ <img src="./assets/demo-indexing.gif" alt="cgr parsing the code-graph-rag repository into a Memgraph knowledge graph, then printing node and relationship counts">
52
+ </p>
53
+
54
+ <p align="center">
55
+ <b>2. Ask:</b> <code>cgr start</code> answers questions and edits code, grounded in that graph
56
+ </p>
57
+ <p align="center">
58
+ <img src="./assets/demo.gif" alt="cgr agent answering questions about the indexed repository">
49
59
  </p>
50
60
 
51
61
  ## Latest News 🔥
52
62
 
53
63
  <!-- SECTION:latest_news -->
54
- - **UTF-8 Handling**: Improved handling of invalid UTF-8 bytes prevents file definitions from being dropped.
55
- - **Neo4j Backend Support**: Added support for Neo4j as a graph backend through a pluggable dialect seam.
56
- - **Gloss Node & Notes**: Introduced the Gloss node for agent-authored notes and enabled writing and reading Gloss notes via the MCP server.
64
+ - **Incremental Indexing**: Improved handling of same-stem sibling matches and skipped EXPOSES cleanups during incremental updates.
57
65
  <!-- /SECTION:latest_news -->
58
66
 
59
67
  See [NEWS.md](NEWS.md) for the full history.
@@ -74,7 +82,7 @@ Point Code-Graph-RAG at a repository and it reads every source file, extracts fu
74
82
 
75
83
  The system has two components:
76
84
 
77
- 1. **Multi-language parser.** A Tree-sitter based parser reads the codebase and ingests functions, classes, methods, modules, and their relationships into Memgraph under a single language-agnostic schema.
85
+ 1. **Multi-language parser.** A Tree-sitter based parser reads the codebase and ingests functions, classes, methods, modules, and their relationships into Memgraph under a single language-agnostic schema. Where a toolchain is available, compiler-grade frontends layer exact facts on top (libclang for C/C++, `go/types` for Go, and opt-in Roslyn, `javac` and Jedi for C#, Java and Python), and [dynamic tracing](docs/guide/dynamic-tracing.md) merges calls observed at runtime. Tree-sitter stays the backbone: a trace only sees code that ran, and a compiler frontend only covers what its toolchain can build.
78
86
  2. **RAG system** (`codebase_rag/`). An interactive CLI that turns natural language into Cypher queries, retrieves matching code, and drives AI-powered editing and optimisation.
79
87
 
80
88
  ```
@@ -126,10 +134,12 @@ To run code newer than the latest release, install from git:
126
134
  uv tool install "code-graph-rag[treesitter-full,semantic] @ git+https://github.com/vitali87/code-graph-rag@main"
127
135
  ```
128
136
 
137
+ To upgrade an existing install, run `uv tool upgrade code-graph-rag` (with pipx, `pipx upgrade code-graph-rag`, or `pipx reinstall code-graph-rag` for a git install). [Upgrade](docs/getting-started/installation.md#upgrade) covers the other install methods.
138
+
129
139
  You also need Python 3.12+, Docker (for Memgraph), `cmake`, and `ripgrep`. Full prerequisites, source installs, and environment setup are in the [Installation](docs/getting-started/installation.md) guide.
130
140
 
131
141
  > [!NOTE]
132
- > The wheel is pure Python (`py3-none-any`), so the package itself installs on any platform with Python 3.12 or newer (dependencies may still need platform wheels or build tools, such as `cmake` for `pymgclient`). The [piwheels](https://www.piwheels.org/project/code-graph-rag/) build for Debian Bookworm shows as failed because Bookworm's system Python is 3.11, which is below our floor. On Raspberry Pi OS Bookworm, pin the interpreter explicitly, for example `uv tool install --python 3.12 "code-graph-rag[treesitter-full,semantic]"`; uv downloads Python 3.12 automatically and the PyPI wheel installs normally.
142
+ > The wheel is pure Python (`py3-none-any`), so it installs on any platform with Python 3.12 or newer. Older system interpreters (Debian Bookworm ships 3.11) need the interpreter pinned explicitly; see [Installation](docs/getting-started/installation.md#older-system-interpreters) for the commands.
133
143
 
134
144
  ## Quick Start
135
145
 
@@ -212,3 +222,5 @@ For issues or questions, check the [Troubleshooting](docs/advanced/troubleshooti
212
222
  ## License
213
223
 
214
224
  MIT. See [LICENSE](LICENSE).
225
+
226
+ Third-party components and their licences are credited on the [Credits page](https://docs.code-graph-rag.com/credits/).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.0.945
3
+ Version: 0.1.38
4
4
  Summary: The ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs
5
5
  License-Expression: MIT
6
6
  Keywords: rag,retrieval-augmented-generation,knowledge-graph,code-analysis,tree-sitter,mcp,mcp-server,llm,graph-database,semantic-search,codebase,memgraph,developer-tools,monorepo
@@ -20,14 +20,14 @@ Description-Content-Type: text/markdown
20
20
  License-File: LICENSE
21
21
  Requires-Dist: loguru>=0.7.3
22
22
  Requires-Dist: mcp>=1.28.1
23
- Requires-Dist: pydantic-ai>=2.0.0
23
+ Requires-Dist: pydantic-ai-slim[anthropic,google,openai]>=2.0.0
24
24
  Requires-Dist: pydantic-settings>=2.12.0
25
25
  Requires-Dist: pymgclient>=1.5.1
26
26
  Requires-Dist: python-dotenv>=1.2.1
27
27
  Requires-Dist: tiktoken>=0.12.0
28
- Requires-Dist: toml>=0.10.2
28
+ Requires-Dist: tomli-w>=1.2.0
29
29
  Requires-Dist: tree-sitter-python>=0.25.0
30
- Requires-Dist: tree-sitter==0.25.2
30
+ Requires-Dist: tree-sitter==0.26.0
31
31
  Requires-Dist: watchdog>=6.0.0
32
32
  Requires-Dist: typer>=0.21.1
33
33
  Requires-Dist: rich>=14.2.0
@@ -67,13 +67,13 @@ Requires-Dist: tree-sitter-cpp>=0.23.0; extra == "treesitter-full"
67
67
  Requires-Dist: tree-sitter-lua>=0.0.19; extra == "treesitter-full"
68
68
  Requires-Dist: tree-sitter-php>=0.24.1; extra == "treesitter-full"
69
69
  Requires-Dist: tree-sitter-c-sharp>=0.23.5; extra == "treesitter-full"
70
- Requires-Dist: tree-sitter-dart>=0.1.0; extra == "treesitter-full"
70
+ Requires-Dist: tree-sitter-dart==0.1.0; extra == "treesitter-full"
71
71
  Requires-Dist: tree-sitter-sql>=0.3.11; extra == "treesitter-full"
72
72
  Requires-Dist: tree-sitter-markdown>=0.5.1; extra == "treesitter-full"
73
73
  Provides-Extra: semantic
74
74
  Requires-Dist: qdrant-client>=1.9.0; extra == "semantic"
75
75
  Requires-Dist: torch>=2.6.0; extra == "semantic"
76
- Requires-Dist: transformers>=4.0.0; extra == "semantic"
76
+ Requires-Dist: transformers>=5.0.0; extra == "semantic"
77
77
  Provides-Extra: milvus
78
78
  Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
79
79
  Provides-Extra: ast-grep
@@ -85,7 +85,7 @@ Dynamic: license-file
85
85
 
86
86
  # Code-Graph-RAG
87
87
 
88
- Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
88
+ Code-Graph-RAG parses a multi-language codebase with Tree-sitter, sharpened by compiler-grade frontends and runtime traces where available, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
89
89
 
90
90
  ## What It Does
91
91
 
@@ -142,12 +142,23 @@ uploads and GitHub Release binaries land on an every-50 cadence, so the tag on `
142
142
  usually runs ahead of the published version. A security fix is the exception: it
143
143
  ships immediately rather than waiting for the cadence.
144
144
 
145
- To run code newer than the latest release, install from git:
145
+ To run code newer than the latest release, install from git with uv:
146
146
 
147
147
  ```bash
148
- pip install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/code-graph-rag@main"
148
+ uv tool install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/code-graph-rag@main"
149
149
  ```
150
150
 
151
+ Use uv for this: it applies the project's `[tool.uv.sources]`, which build the C
152
+ and C++ grammars from forks that keep the declarations upstream drops after a
153
+ `#define` whose value contains a block comment. `pip` ignores those sources and
154
+ installs the upstream grammars.
155
+
156
+ To upgrade, rerun the install with `--upgrade` and the extras you chose, for
157
+ example `pip install --upgrade 'code-graph-rag[treesitter-full]'`. With uv or pipx,
158
+ run `uv tool upgrade code-graph-rag` or `pipx upgrade code-graph-rag` instead; see the
159
+ [installation guide](https://github.com/vitali87/code-graph-rag/blob/main/docs/getting-started/installation.md#upgrade)
160
+ for git installs and the other methods.
161
+
151
162
  ### Prerequisites
152
163
 
153
164
  - Python 3.12+
@@ -155,15 +166,12 @@ pip install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/c
155
166
  - `cmake` (for building pymgclient)
156
167
  - `ripgrep` (`rg`) (for shell command text searching)
157
168
 
158
- The wheel is pure Python (`py3-none-any`), so the package itself installs on
159
- any platform with Python 3.12 or newer (dependencies may still need platform
160
- wheels or build tools, such as `cmake` for `pymgclient`). The piwheels build for Debian Bookworm shows as failed
161
- because Bookworm's system Python is 3.11, which is below our floor. On
162
- Raspberry Pi OS Bookworm, install into a Python 3.12 environment so the pip
163
- commands above actually run under 3.12: with [uv](https://docs.astral.sh/uv/)
164
- run `uv venv --python 3.12 --seed && source .venv/bin/activate` (uv downloads
165
- 3.12 automatically; `--seed` puts pip in the environment), or install CPython 3.12 yourself and use
166
- `python3.12 -m pip install ...`.
169
+ The wheel is pure Python (`py3-none-any`), so it installs on any platform with
170
+ Python 3.12 or newer. Some distributions ship an older interpreter (Debian
171
+ Bookworm, and so Raspberry Pi OS Bookworm, ships 3.11), which also explains the
172
+ failed piwheels Bookworm build. On those systems, see the [installation
173
+ guide](https://github.com/vitali87/code-graph-rag/blob/main/docs/getting-started/installation.md#older-system-interpreters)
174
+ for the available interpreter-pinning alternatives.
167
175
 
168
176
  ## CLI Quick Start
169
177
 
@@ -10,12 +10,15 @@ code_graph_rag.egg-info/entry_points.txt
10
10
  code_graph_rag.egg-info/requires.txt
11
11
  code_graph_rag.egg-info/top_level.txt
12
12
  codebase_rag/__init__.py
13
+ codebase_rag/_cli_env.py
13
14
  codebase_rag/ast_cache.py
14
15
  codebase_rag/capture.py
15
16
  codebase_rag/cgr_state.py
16
17
  codebase_rag/cli.py
17
18
  codebase_rag/cli_help.py
19
+ codebase_rag/cli_runtime.py
18
20
  codebase_rag/config.py
21
+ codebase_rag/console_marks.py
19
22
  codebase_rag/context_pruning.py
20
23
  codebase_rag/crash_correlation.py
21
24
  codebase_rag/cypher_queries.py
@@ -29,6 +32,7 @@ codebase_rag/exceptions.py
29
32
  codebase_rag/flow_verdict.py
30
33
  codebase_rag/function_registry.py
31
34
  codebase_rag/gloss.py
35
+ codebase_rag/gloss_anchor.py
32
36
  codebase_rag/gloss_repair.py
33
37
  codebase_rag/graph_audit.py
34
38
  codebase_rag/graph_cli.py
@@ -162,6 +166,7 @@ codebase_rag/parsers/document_tier.py
162
166
  codebase_rag/parsers/endpoint_prefixes.py
163
167
  codebase_rag/parsers/endpoint_routes.py
164
168
  codebase_rag/parsers/endpoints.py
169
+ codebase_rag/parsers/enum_variants.py
165
170
  codebase_rag/parsers/export_detection.py
166
171
  codebase_rag/parsers/factory.py
167
172
  codebase_rag/parsers/field_nodes.py
@@ -288,8 +293,17 @@ codebase_rag/parsers/rs/utils.py
288
293
  codebase_rag/providers/__init__.py
289
294
  codebase_rag/providers/base.py
290
295
  codebase_rag/providers/litellm.py
296
+ codebase_rag/queries/highlights/c_sharp.scm
297
+ codebase_rag/queries/highlights/dart.scm
298
+ codebase_rag/queries/highlights/java.scm
299
+ codebase_rag/queries/highlights/javascript.scm
300
+ codebase_rag/queries/highlights/php.scm
301
+ codebase_rag/queries/highlights/python.scm
302
+ codebase_rag/queries/highlights/rust.scm
303
+ codebase_rag/queries/highlights/typescript.scm
291
304
  codebase_rag/services/__init__.py
292
305
  codebase_rag/services/anthropic_token_counter.py
306
+ codebase_rag/services/cypher_guard.py
293
307
  codebase_rag/services/filtering.py
294
308
  codebase_rag/services/gloss_cleanup.py
295
309
  codebase_rag/services/graph_diff.py
@@ -343,7 +357,9 @@ codebase_rag/trace/xdebug.py
343
357
  codebase_rag/utils/__init__.py
344
358
  codebase_rag/utils/dependencies.py
345
359
  codebase_rag/utils/fqn_resolver.py
360
+ codebase_rag/utils/json_io.py
346
361
  codebase_rag/utils/path_utils.py
362
+ codebase_rag/utils/qn_markers.py
347
363
  codebase_rag/utils/rich_markdown.py
348
364
  codebase_rag/utils/source_extraction.py
349
365
  codebase_rag/utils/token_utils.py
@@ -1,13 +1,13 @@
1
1
  loguru>=0.7.3
2
2
  mcp>=1.28.1
3
- pydantic-ai>=2.0.0
3
+ pydantic-ai-slim[anthropic,google,openai]>=2.0.0
4
4
  pydantic-settings>=2.12.0
5
5
  pymgclient>=1.5.1
6
6
  python-dotenv>=1.2.1
7
7
  tiktoken>=0.12.0
8
- toml>=0.10.2
8
+ tomli-w>=1.2.0
9
9
  tree-sitter-python>=0.25.0
10
- tree-sitter==0.25.2
10
+ tree-sitter==0.26.0
11
11
  watchdog>=6.0.0
12
12
  typer>=0.21.1
13
13
  rich>=14.2.0
@@ -39,7 +39,7 @@ jedi>=0.19
39
39
  [semantic]
40
40
  qdrant-client>=1.9.0
41
41
  torch>=2.6.0
42
- transformers>=4.0.0
42
+ transformers>=5.0.0
43
43
 
44
44
  [test]
45
45
  jedi>=0.19
@@ -66,6 +66,6 @@ tree-sitter-cpp>=0.23.0
66
66
  tree-sitter-lua>=0.0.19
67
67
  tree-sitter-php>=0.24.1
68
68
  tree-sitter-c-sharp>=0.23.5
69
- tree-sitter-dart>=0.1.0
69
+ tree-sitter-dart==0.1.0
70
70
  tree-sitter-sql>=0.3.11
71
71
  tree-sitter-markdown>=0.5.1
@@ -0,0 +1,14 @@
1
+ """Process defaults for the `cgr` command, applied before any settings load.
2
+
3
+ `codebase_rag.cli` imports this first among its own modules. pydantic-ai
4
+ depends on logfire, whose pydantic plugin pydantic loads the first time a
5
+ model or settings class is built; that imports OpenTelemetry and friends
6
+ (~0.13 s) on every start, and cgr never uses logfire (issue #2253). The
7
+ default applies to the CLI process only, so an application embedding
8
+ codebase_rag keeps its own plugins. A value the user set, including an empty
9
+ one that keeps every plugin, is left alone.
10
+ """
11
+
12
+ import os
13
+
14
+ os.environ.setdefault("PYDANTIC_DISABLE_PLUGINS", "logfire-plugin")
@@ -2,7 +2,6 @@
2
2
  # re-parses from disk via the loader so an eviction cannot lose an AST that
3
3
  # type inference still needs (see load()).
4
4
 
5
- import sys
6
5
  from collections import OrderedDict
7
6
  from collections.abc import Callable, ItemsView
8
7
  from pathlib import Path
@@ -13,8 +12,24 @@ from . import constants as cs
13
12
  from .config import settings
14
13
 
15
14
 
15
+ def _estimate_entry_bytes(value: tuple[Node, cs.SupportedLanguage]) -> int:
16
+ # The memory cap is measured in bytes of SOURCE the cached trees span, not
17
+ # the trees' true footprint: tree-sitter allocates nodes in C, invisible to
18
+ # sys.getsizeof (which reports ~56 bytes for any (Node, lang) tuple, so a
19
+ # cap summed from it never triggered). Tree size scales with source size,
20
+ # which makes this a stable proxy; the real heap cost is a multiple of it.
21
+ return value[0].end_byte
22
+
23
+
16
24
  class BoundedASTCache:
17
- __slots__ = ("cache", "loader", "max_entries", "max_memory_bytes")
25
+ __slots__ = (
26
+ "cache",
27
+ "entry_sizes",
28
+ "loader",
29
+ "max_entries",
30
+ "max_memory_bytes",
31
+ "total_bytes",
32
+ )
18
33
 
19
34
  def __init__(
20
35
  self,
@@ -24,6 +39,10 @@ class BoundedASTCache:
24
39
  | None = None,
25
40
  ):
26
41
  self.cache: OrderedDict[Path, tuple[Node, cs.SupportedLanguage]] = OrderedDict()
42
+ # Sizes are recorded at insert so eviction and the running total never
43
+ # rescan every entry: each insert stays O(1) plus the evictions it causes.
44
+ self.entry_sizes: dict[Path, int] = {}
45
+ self.total_bytes = 0
27
46
  self.loader = loader
28
47
  self.max_entries = (
29
48
  max_entries if max_entries is not None else settings.CACHE_MAX_ENTRIES
@@ -47,11 +66,11 @@ class BoundedASTCache:
47
66
  return entry
48
67
 
49
68
  def __setitem__(self, key: Path, value: tuple[Node, cs.SupportedLanguage]) -> None:
50
- if key in self.cache:
51
- del self.cache[key]
52
-
69
+ self._remove(key)
70
+ size = _estimate_entry_bytes(value)
53
71
  self.cache[key] = value
54
-
72
+ self.entry_sizes[key] = size
73
+ self.total_bytes += size
55
74
  self._enforce_limits()
56
75
 
57
76
  def __getitem__(self, key: Path) -> tuple[Node, cs.SupportedLanguage]:
@@ -60,8 +79,7 @@ class BoundedASTCache:
60
79
  return value
61
80
 
62
81
  def __delitem__(self, key: Path) -> None:
63
- if key in self.cache:
64
- del self.cache[key]
82
+ self._remove(key)
65
83
 
66
84
  def __contains__(self, key: Path) -> bool:
67
85
  return key in self.cache
@@ -69,24 +87,25 @@ class BoundedASTCache:
69
87
  def items(self) -> ItemsView[Path, tuple[Node, cs.SupportedLanguage]]:
70
88
  return self.cache.items()
71
89
 
90
+ def clear(self) -> None:
91
+ self.cache.clear()
92
+ self.entry_sizes.clear()
93
+ self.total_bytes = 0
94
+
95
+ def _remove(self, key: Path) -> None:
96
+ if key in self.cache:
97
+ del self.cache[key]
98
+ self.total_bytes -= self.entry_sizes.pop(key)
99
+
100
+ def _evict_oldest(self) -> None:
101
+ key, _ = self.cache.popitem(last=False)
102
+ self.total_bytes -= self.entry_sizes.pop(key)
103
+
72
104
  def _enforce_limits(self) -> None:
73
- while len(self.cache) > self.max_entries:
74
- self.cache.popitem(last=False)
75
-
76
- if self._should_evict_for_memory():
77
- entries_to_remove = max(
78
- 1, len(self.cache) // settings.CACHE_EVICTION_DIVISOR
79
- )
80
- for _ in range(entries_to_remove):
81
- if self.cache:
82
- self.cache.popitem(last=False)
83
-
84
- def _should_evict_for_memory(self) -> bool:
85
- try:
86
- cache_size = sum(sys.getsizeof(v) for v in self.cache.values())
87
- return cache_size > self.max_memory_bytes
88
- except Exception:
89
- return (
90
- len(self.cache)
91
- > self.max_entries * settings.CACHE_MEMORY_THRESHOLD_RATIO
92
- )
105
+ # Evict LRU entries until both caps hold. The newest entry is kept even
106
+ # if it alone exceeds the memory cap: the caller just parsed it and is
107
+ # about to use it, and load() would only re-parse it on the next read.
108
+ while len(self.cache) > self.max_entries or (
109
+ self.total_bytes > self.max_memory_bytes and len(self.cache) > 1
110
+ ):
111
+ self._evict_oldest()