code-graph-rag 0.0.845__tar.gz → 0.0.945__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 (370) hide show
  1. {code_graph_rag-0.0.845/code_graph_rag.egg-info → code_graph_rag-0.0.945}/PKG-INFO +3 -1
  2. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/README.md +3 -6
  3. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945/code_graph_rag.egg-info}/PKG-INFO +3 -1
  4. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/SOURCES.txt +18 -0
  5. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/requires.txt +3 -0
  6. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/cli.py +154 -2
  7. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/cli_help.py +59 -0
  8. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/config.py +45 -7
  9. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_cpp.py +1 -1
  10. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_csharp.py +2 -0
  11. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_dart.py +5 -0
  12. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_go.py +4 -0
  13. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_java.py +3 -0
  14. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_lua.py +7 -0
  15. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_nodes.py +1 -0
  16. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_php.py +5 -0
  17. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_python.py +35 -0
  18. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_rust.py +1 -0
  19. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_scala.py +1 -0
  20. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/cli.py +92 -0
  21. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/core.py +57 -0
  22. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/duplicates.py +7 -0
  23. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/graph.py +365 -10
  24. code_graph_rag-0.0.945/codebase_rag/constants/health.py +87 -0
  25. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/lang_tooling.py +7 -0
  26. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/languages.py +37 -4
  27. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/mcp.py +73 -0
  28. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/trace.py +2 -0
  29. code_graph_rag-0.0.945/codebase_rag/cypher_queries.py +821 -0
  30. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/dead_code.py +141 -84
  31. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editing/__init__.py +18 -0
  32. code_graph_rag-0.0.945/codebase_rag/editing/contract.py +352 -0
  33. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editing/imports.py +109 -27
  34. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editing/patcher.py +55 -5
  35. code_graph_rag-0.0.945/codebase_rag/editing/rename.py +1230 -0
  36. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editing/transaction.py +17 -0
  37. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/function_registry.py +19 -12
  38. code_graph_rag-0.0.945/codebase_rag/gloss.py +321 -0
  39. code_graph_rag-0.0.945/codebase_rag/gloss_repair.py +245 -0
  40. code_graph_rag-0.0.945/codebase_rag/graph_cli.py +176 -0
  41. code_graph_rag-0.0.945/codebase_rag/graph_dialects.py +243 -0
  42. code_graph_rag-0.0.945/codebase_rag/graph_query.py +541 -0
  43. code_graph_rag-0.0.945/codebase_rag/graph_updater.py +6179 -0
  44. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/language_spec.py +34 -18
  45. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/logs.py +147 -13
  46. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/main.py +157 -8
  47. code_graph_rag-0.0.945/codebase_rag/mcp/tools.py +2981 -0
  48. code_graph_rag-0.0.945/codebase_rag/parsers/anchor_hash.py +85 -0
  49. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/call_processor.py +617 -60
  50. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/call_resolver.py +631 -39
  51. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/identity.py +2 -1
  52. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/mixin.py +52 -2
  53. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/parent_extraction.py +45 -15
  54. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/utils.py +20 -21
  55. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/frontend.py +48 -32
  56. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/qn.py +19 -1
  57. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp/type_inference.py +172 -45
  58. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp/utils.py +64 -38
  59. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/dart/utils.py +10 -9
  60. code_graph_rag-0.0.945/codebase_rag/parsers/definition_docstring.py +385 -0
  61. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/definition_processor.py +201 -8
  62. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/dependency_parser.py +34 -22
  63. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/endpoint_prefixes.py +39 -1
  64. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/factory.py +35 -0
  65. code_graph_rag-0.0.945/codebase_rag/parsers/field_nodes.py +1083 -0
  66. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/function_ingest.py +69 -6
  67. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/type_inference.py +20 -16
  68. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/js_ts.py +4 -3
  69. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/import_processor.py +353 -88
  70. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/type_inference.py +0 -2
  71. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/type_resolver.py +0 -2
  72. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/utils.py +0 -2
  73. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/variable_analyzer.py +6 -10
  74. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/ingest.py +13 -4
  75. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/module_system.py +23 -4
  76. code_graph_rag-0.0.945/codebase_rag/parsers/lua/utils.py +212 -0
  77. code_graph_rag-0.0.945/codebase_rag/parsers/module_docstring.py +672 -0
  78. code_graph_rag-0.0.945/codebase_rag/parsers/parameter_nodes.py +262 -0
  79. code_graph_rag-0.0.945/codebase_rag/parsers/py/ast_analyzer.py +1375 -0
  80. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/expression_analyzer.py +89 -1
  81. code_graph_rag-0.0.945/codebase_rag/parsers/py/type_inference.py +407 -0
  82. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/utils.py +58 -19
  83. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/variable_analyzer.py +365 -13
  84. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/python_source_roots.py +85 -53
  85. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/stdlib_extractor.py +4 -1
  86. code_graph_rag-0.0.945/codebase_rag/parsers/structure_processor.py +273 -0
  87. code_graph_rag-0.0.945/codebase_rag/parsers/type_facts.py +423 -0
  88. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/type_inference.py +122 -4
  89. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/utils.py +272 -15
  90. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/prompts.py +74 -10
  91. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/readme_sections.py +36 -26
  92. code_graph_rag-0.0.945/codebase_rag/services/gloss_cleanup.py +94 -0
  93. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/graph_service.py +131 -42
  94. code_graph_rag-0.0.945/codebase_rag/services/neo4j_driver.py +190 -0
  95. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/protobuf_service.py +19 -14
  96. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/provenance.py +25 -14
  97. code_graph_rag-0.0.945/codebase_rag/structural_check.py +221 -0
  98. code_graph_rag-0.0.945/codebase_rag/structural_delta.py +1149 -0
  99. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/codebase_query.py +49 -3
  100. code_graph_rag-0.0.945/codebase_rag/tools/health_checker.py +378 -0
  101. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/shell_command.py +63 -17
  102. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/structural_editor.py +11 -2
  103. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/tool_descriptions.py +163 -3
  104. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/cpuprofile.py +8 -4
  105. code_graph_rag-0.0.945/codebase_rag/trace/dispatch_site.py +427 -0
  106. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/ingest.py +65 -3
  107. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/speedscope.py +24 -11
  108. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/types_defs.py +179 -5
  109. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/path_utils.py +157 -8
  110. code_graph_rag-0.0.945/codebase_rag/utils/token_utils.py +104 -0
  111. code_graph_rag-0.0.945/codec/schema_pb2.py +91 -0
  112. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codec/schema_pb2.pyi +118 -8
  113. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/pyproject.toml +9 -1
  114. code_graph_rag-0.0.845/codebase_rag/constants/health.py +0 -62
  115. code_graph_rag-0.0.845/codebase_rag/cypher_queries.py +0 -363
  116. code_graph_rag-0.0.845/codebase_rag/graph_updater.py +0 -3358
  117. code_graph_rag-0.0.845/codebase_rag/mcp/tools.py +0 -1077
  118. code_graph_rag-0.0.845/codebase_rag/parsers/lua/utils.py +0 -96
  119. code_graph_rag-0.0.845/codebase_rag/parsers/py/ast_analyzer.py +0 -575
  120. code_graph_rag-0.0.845/codebase_rag/parsers/py/type_inference.py +0 -116
  121. code_graph_rag-0.0.845/codebase_rag/parsers/structure_processor.py +0 -167
  122. code_graph_rag-0.0.845/codebase_rag/tools/health_checker.py +0 -258
  123. code_graph_rag-0.0.845/codebase_rag/utils/token_utils.py +0 -53
  124. code_graph_rag-0.0.845/codec/schema_pb2.py +0 -85
  125. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/LICENSE +0 -0
  126. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/PYPI_README.md +0 -0
  127. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/cgr/__init__.py +0 -0
  128. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  129. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/entry_points.txt +0 -0
  130. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/top_level.txt +0 -0
  131. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/__init__.py +0 -0
  132. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/__init__.py +0 -0
  133. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  134. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  135. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  136. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  137. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  138. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  139. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  140. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  141. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  142. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  143. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  144. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  145. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  146. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  147. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  148. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  149. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  150. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  151. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  152. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  153. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  154. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  155. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  156. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  157. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  158. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  159. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  160. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  161. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  162. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  163. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  164. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  165. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  166. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  167. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  168. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  169. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  170. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  171. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  172. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  173. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  174. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  175. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  176. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  177. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  178. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  179. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/ast_cache.py +0 -0
  180. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/capture.py +0 -0
  181. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/cgr_state.py +0 -0
  182. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/__init__.py +0 -0
  183. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_js.py +0 -0
  184. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_sql.py +0 -0
  185. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/build.py +0 -0
  186. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/deadcode_roots.py +0 -0
  187. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/deps.py +0 -0
  188. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/fqn_specs.py +0 -0
  189. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/providers.py +0 -0
  190. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/security.py +0 -0
  191. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/stdlib_types.py +0 -0
  192. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/structural.py +0 -0
  193. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/context_pruning.py +0 -0
  194. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/crash_correlation.py +0 -0
  195. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/decorators.py +0 -0
  196. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/docker-compose.yaml +0 -0
  197. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/duplicates.py +0 -0
  198. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editing/cli.py +0 -0
  199. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editor_links.py +0 -0
  200. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/embedder.py +0 -0
  201. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/exceptions.py +0 -0
  202. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/flow_verdict.py +0 -0
  203. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/graph_audit.py +0 -0
  204. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/graph_loader.py +0 -0
  205. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/mcp/__init__.py +0 -0
  206. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/mcp/client.py +0 -0
  207. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/mcp/server.py +0 -0
  208. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/models.py +0 -0
  209. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parser_fingerprint.py +0 -0
  210. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parser_loader.py +0 -0
  211. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/__init__.py +0 -0
  212. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_fingerprint.py +0 -0
  213. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  214. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  215. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
  216. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  217. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  218. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  219. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  220. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  221. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_tier.py +0 -0
  222. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/build_lock.py +0 -0
  223. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  224. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  225. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
  226. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  227. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  228. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  229. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/contract_linking.py +0 -0
  230. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/contracts.py +0 -0
  231. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/__init__.py +0 -0
  232. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
  233. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/type_inference.py +0 -0
  234. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  235. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  236. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp/__init__.py +0 -0
  237. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  238. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
  239. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  240. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  241. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  242. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/dart/__init__.py +0 -0
  243. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/dart/type_inference.py +0 -0
  244. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/dispatch_registry.py +0 -0
  245. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/document_tier.py +0 -0
  246. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/endpoint_routes.py +0 -0
  247. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/endpoints.py +0 -0
  248. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/export_detection.py +0 -0
  249. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/flat_module.py +0 -0
  250. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  251. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/flow_access/constants.py +0 -0
  252. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/flow_access/processor.py +0 -0
  253. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontend_mode.py +0 -0
  254. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/__init__.py +0 -0
  255. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/cpp.py +0 -0
  256. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/csharp.py +0 -0
  257. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/go.py +0 -0
  258. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/java.py +0 -0
  259. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/protocol.py +0 -0
  260. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/python.py +0 -0
  261. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/registry.py +0 -0
  262. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/__init__.py +0 -0
  263. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/module_paths.py +0 -0
  264. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/utils.py +0 -0
  265. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  266. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  267. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
  268. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
  269. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
  270. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/__init__.py +0 -0
  271. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/base.py +0 -0
  272. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/cpp.py +0 -0
  273. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/java.py +0 -0
  274. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/lua.py +0 -0
  275. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/php.py +0 -0
  276. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/protocol.py +0 -0
  277. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/python.py +0 -0
  278. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/registry.py +0 -0
  279. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/rust.py +0 -0
  280. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/__init__.py +0 -0
  281. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/constants.py +0 -0
  282. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  283. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/extract.py +0 -0
  284. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/models.py +0 -0
  285. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/processor.py +0 -0
  286. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/registry.py +0 -0
  287. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/__init__.py +0 -0
  288. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/method_resolver.py +0 -0
  289. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  290. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  291. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  292. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_generated.py +0 -0
  293. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_lombok.py +0 -0
  294. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  295. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
  296. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
  297. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/utils.py +0 -0
  298. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/lua/__init__.py +0 -0
  299. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/lua/type_inference.py +0 -0
  300. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/__init__.py +0 -0
  301. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  302. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  303. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/rpc_exposure.py +0 -0
  304. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/rs/__init__.py +0 -0
  305. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/rs/type_inference.py +0 -0
  306. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/rs/utils.py +0 -0
  307. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/semantic_call_join.py +0 -0
  308. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/string_call.py +0 -0
  309. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/path_filters.py +0 -0
  310. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/providers/__init__.py +0 -0
  311. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/providers/base.py +0 -0
  312. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/providers/litellm.py +0 -0
  313. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/schema_builder.py +0 -0
  314. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/schema_parse.py +0 -0
  315. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/schemas.py +0 -0
  316. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/__init__.py +0 -0
  317. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/anthropic_token_counter.py +0 -0
  318. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/filtering.py +0 -0
  319. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/graph_diff.py +0 -0
  320. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/llm.py +0 -0
  321. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/resource_cleanup.py +0 -0
  322. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/usage_cost.py +0 -0
  323. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/sql_names.py +0 -0
  324. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/stack/__init__.py +0 -0
  325. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/stack/cli.py +0 -0
  326. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/stack/constants.py +0 -0
  327. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/stack/health.py +0 -0
  328. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/stack/manager.py +0 -0
  329. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/taint.py +0 -0
  330. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tool_errors.py +0 -0
  331. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/__init__.py +0 -0
  332. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/ast_grep_service.py +0 -0
  333. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/code_retrieval.py +0 -0
  334. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/directory_lister.py +0 -0
  335. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/duplicate_detection.py +0 -0
  336. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/file_editor.py +0 -0
  337. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/file_reader.py +0 -0
  338. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/file_writer.py +0 -0
  339. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/graph_rerank.py +0 -0
  340. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/language.py +0 -0
  341. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/research.py +0 -0
  342. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/semantic_search.py +0 -0
  343. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/structural_search.py +0 -0
  344. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/web_search.py +0 -0
  345. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/__init__.py +0 -0
  346. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/cli.py +0 -0
  347. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/ebpf_pprof.py +0 -0
  348. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/instrumented.py +0 -0
  349. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/pprof.py +0 -0
  350. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/pytest_plugin.py +0 -0
  351. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/records.py +0 -0
  352. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/resolution.py +0 -0
  353. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/rust_pprof.py +0 -0
  354. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/sourcemap.py +0 -0
  355. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/tracer.py +0 -0
  356. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/xdebug.py +0 -0
  357. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/unixcoder.py +0 -0
  358. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/__init__.py +0 -0
  359. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/dependencies.py +0 -0
  360. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/fqn_resolver.py +0 -0
  361. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/rich_markdown.py +0 -0
  362. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/source_extraction.py +0 -0
  363. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/vector_store.py +0 -0
  364. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/workspaces/__init__.py +0 -0
  365. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/workspaces/cli.py +0 -0
  366. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/workspaces/constants.py +0 -0
  367. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/workspaces/models.py +0 -0
  368. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/workspaces/storage.py +0 -0
  369. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codec/__init__.py +0 -0
  370. {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.0.845
3
+ Version: 0.0.945
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
@@ -52,6 +52,8 @@ Requires-Dist: ast-grep-py>=0.44.0; extra == "test"
52
52
  Requires-Dist: pyyaml>=6.0; extra == "test"
53
53
  Provides-Extra: cpp
54
54
  Requires-Dist: libclang>=18.1.1; extra == "cpp"
55
+ Provides-Extra: neo4j
56
+ Requires-Dist: neo4j>=5.28.1; extra == "neo4j"
55
57
  Provides-Extra: treesitter-full
56
58
  Requires-Dist: tree-sitter-python>=0.23.6; extra == "treesitter-full"
57
59
  Requires-Dist: tree-sitter-javascript>=0.23.1; extra == "treesitter-full"
@@ -51,12 +51,9 @@ Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowl
51
51
  ## Latest News 🔥
52
52
 
53
53
  <!-- SECTION:latest_news -->
54
- - **Index Consistency**: Ensure incremental deletes match clean index states.
55
- - **Patch Reporting**: Distinguish between unverifiable and verified patches in reports.
56
- - **Windows Teardown**: Clear the read-only bit when removing a temp repo for successful Windows teardown.
57
- - **TypeScript Grading**: Grade TypeScript inheritance against the tsc oracle for improved accuracy.
58
- - **Exclude Set Handling**: Record the exclusion set to ensure `--exclude` flags are correctly applied across runs.
59
- - **MCP Indexing**: Honour `.cgrignore` and `.gitignore` in MCP index and update processes, matching the CLI.
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.
60
57
  <!-- /SECTION:latest_news -->
61
58
 
62
59
  See [NEWS.md](NEWS.md) for the full history.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.0.845
3
+ Version: 0.0.945
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
@@ -52,6 +52,8 @@ Requires-Dist: ast-grep-py>=0.44.0; extra == "test"
52
52
  Requires-Dist: pyyaml>=6.0; extra == "test"
53
53
  Provides-Extra: cpp
54
54
  Requires-Dist: libclang>=18.1.1; extra == "cpp"
55
+ Provides-Extra: neo4j
56
+ Requires-Dist: neo4j>=5.28.1; extra == "neo4j"
55
57
  Provides-Extra: treesitter-full
56
58
  Requires-Dist: tree-sitter-python>=0.23.6; extra == "treesitter-full"
57
59
  Requires-Dist: tree-sitter-javascript>=0.23.1; extra == "treesitter-full"
@@ -28,8 +28,13 @@ codebase_rag/embedder.py
28
28
  codebase_rag/exceptions.py
29
29
  codebase_rag/flow_verdict.py
30
30
  codebase_rag/function_registry.py
31
+ codebase_rag/gloss.py
32
+ codebase_rag/gloss_repair.py
31
33
  codebase_rag/graph_audit.py
34
+ codebase_rag/graph_cli.py
35
+ codebase_rag/graph_dialects.py
32
36
  codebase_rag/graph_loader.py
37
+ codebase_rag/graph_query.py
33
38
  codebase_rag/graph_updater.py
34
39
  codebase_rag/language_spec.py
35
40
  codebase_rag/logs.py
@@ -44,6 +49,8 @@ codebase_rag/schema_builder.py
44
49
  codebase_rag/schema_parse.py
45
50
  codebase_rag/schemas.py
46
51
  codebase_rag/sql_names.py
52
+ codebase_rag/structural_check.py
53
+ codebase_rag/structural_delta.py
47
54
  codebase_rag/taint.py
48
55
  codebase_rag/tool_errors.py
49
56
  codebase_rag/types_defs.py
@@ -129,14 +136,17 @@ codebase_rag/constants/structural.py
129
136
  codebase_rag/constants/trace.py
130
137
  codebase_rag/editing/__init__.py
131
138
  codebase_rag/editing/cli.py
139
+ codebase_rag/editing/contract.py
132
140
  codebase_rag/editing/imports.py
133
141
  codebase_rag/editing/patcher.py
142
+ codebase_rag/editing/rename.py
134
143
  codebase_rag/editing/transaction.py
135
144
  codebase_rag/mcp/__init__.py
136
145
  codebase_rag/mcp/client.py
137
146
  codebase_rag/mcp/server.py
138
147
  codebase_rag/mcp/tools.py
139
148
  codebase_rag/parsers/__init__.py
149
+ codebase_rag/parsers/anchor_hash.py
140
150
  codebase_rag/parsers/ast_fingerprint.py
141
151
  codebase_rag/parsers/ast_grep_tier.py
142
152
  codebase_rag/parsers/build_lock.py
@@ -144,6 +154,7 @@ codebase_rag/parsers/call_processor.py
144
154
  codebase_rag/parsers/call_resolver.py
145
155
  codebase_rag/parsers/contract_linking.py
146
156
  codebase_rag/parsers/contracts.py
157
+ codebase_rag/parsers/definition_docstring.py
147
158
  codebase_rag/parsers/definition_processor.py
148
159
  codebase_rag/parsers/dependency_parser.py
149
160
  codebase_rag/parsers/dispatch_registry.py
@@ -153,18 +164,22 @@ codebase_rag/parsers/endpoint_routes.py
153
164
  codebase_rag/parsers/endpoints.py
154
165
  codebase_rag/parsers/export_detection.py
155
166
  codebase_rag/parsers/factory.py
167
+ codebase_rag/parsers/field_nodes.py
156
168
  codebase_rag/parsers/flat_module.py
157
169
  codebase_rag/parsers/frontend_mode.py
158
170
  codebase_rag/parsers/function_ingest.py
159
171
  codebase_rag/parsers/import_processor.py
160
172
  codebase_rag/parsers/java_generated.py
161
173
  codebase_rag/parsers/java_lombok.py
174
+ codebase_rag/parsers/module_docstring.py
175
+ codebase_rag/parsers/parameter_nodes.py
162
176
  codebase_rag/parsers/python_source_roots.py
163
177
  codebase_rag/parsers/rpc_exposure.py
164
178
  codebase_rag/parsers/semantic_call_join.py
165
179
  codebase_rag/parsers/stdlib_extractor.py
166
180
  codebase_rag/parsers/string_call.py
167
181
  codebase_rag/parsers/structure_processor.py
182
+ codebase_rag/parsers/type_facts.py
168
183
  codebase_rag/parsers/type_inference.py
169
184
  codebase_rag/parsers/utils.py
170
185
  codebase_rag/parsers/ast_grep_patterns/bash.yaml
@@ -276,9 +291,11 @@ codebase_rag/providers/litellm.py
276
291
  codebase_rag/services/__init__.py
277
292
  codebase_rag/services/anthropic_token_counter.py
278
293
  codebase_rag/services/filtering.py
294
+ codebase_rag/services/gloss_cleanup.py
279
295
  codebase_rag/services/graph_diff.py
280
296
  codebase_rag/services/graph_service.py
281
297
  codebase_rag/services/llm.py
298
+ codebase_rag/services/neo4j_driver.py
282
299
  codebase_rag/services/protobuf_service.py
283
300
  codebase_rag/services/provenance.py
284
301
  codebase_rag/services/resource_cleanup.py
@@ -310,6 +327,7 @@ codebase_rag/tools/web_search.py
310
327
  codebase_rag/trace/__init__.py
311
328
  codebase_rag/trace/cli.py
312
329
  codebase_rag/trace/cpuprofile.py
330
+ codebase_rag/trace/dispatch_site.py
313
331
  codebase_rag/trace/ebpf_pprof.py
314
332
  codebase_rag/trace/ingest.py
315
333
  codebase_rag/trace/instrumented.py
@@ -30,6 +30,9 @@ libclang>=18.1.1
30
30
  [milvus]
31
31
  pymilvus[milvus-lite]>=3.0.0
32
32
 
33
+ [neo4j]
34
+ neo4j>=5.28.1
35
+
33
36
  [python-semantics]
34
37
  jedi>=0.19
35
38
 
@@ -36,6 +36,7 @@ from .editor_links import (
36
36
  resolve_editor,
37
37
  url_template_problem,
38
38
  )
39
+ from .graph_cli import cli as graph_cli
39
40
  from .graph_updater import GraphUpdater
40
41
  from .main import (
41
42
  _create_configuration_table,
@@ -1090,6 +1091,135 @@ def edits_command(ctx: typer.Context) -> None:
1090
1091
  _run_delegated_group(edits_cli, ctx)
1091
1092
 
1092
1093
 
1094
+ @app.command(
1095
+ name=ch.CLICommandName.GRAPH,
1096
+ help=ch.CMD_GRAPH,
1097
+ short_help=ch.CMD_GRAPH,
1098
+ add_help_option=False,
1099
+ context_settings=_DELEGATED_GROUP_CONTEXT,
1100
+ rich_help_panel=ch.PANEL_GRAPH,
1101
+ )
1102
+ def graph_command(ctx: typer.Context) -> None:
1103
+ _run_delegated_group(graph_cli, ctx)
1104
+
1105
+
1106
+ @app.command(
1107
+ name=ch.CLICommandName.CHECK,
1108
+ help=ch.CMD_CHECK,
1109
+ short_help=ch.CMD_CHECK,
1110
+ epilog=ch.EXAMPLES_CHECK,
1111
+ rich_help_panel=ch.PANEL_USE,
1112
+ )
1113
+ def check_command(
1114
+ base: str = typer.Option("HEAD", "--base", help=ch.HELP_CHECK_BASE),
1115
+ repo_path: Path = typer.Option(
1116
+ Path(cs.MCP_DEFAULT_DIRECTORY),
1117
+ "--repo-path",
1118
+ exists=True,
1119
+ file_okay=False,
1120
+ help=ch.HELP_GRAPH_REPO_PATH,
1121
+ ),
1122
+ project: str | None = typer.Option(None, "--project", help=ch.HELP_GRAPH_PROJECT),
1123
+ fail_on_found: bool = typer.Option(
1124
+ False, "--fail-on-found", help=ch.HELP_CHECK_FAIL_ON_FOUND
1125
+ ),
1126
+ ) -> None:
1127
+ from .structural_check import CheckError, indexed_scope, run_check
1128
+ from .structural_delta import has_findings
1129
+ from .utils.path_utils import derive_project_name
1130
+
1131
+ root = repo_path.resolve()
1132
+ name = project or derive_project_name(root)
1133
+ parsers, queries = load_parsers()
1134
+ with connect_memgraph(batch_size=settings.resolve_batch_size(None)) as ingestor:
1135
+ if name not in ingestor.list_projects():
1136
+ typer.echo(cs.CHECK_NOT_INDEXED.format(project=name), err=True)
1137
+ raise typer.Exit(code=1)
1138
+ try:
1139
+ exclude_paths, unignore_paths = indexed_scope(
1140
+ root, name, explicit=project is not None
1141
+ )
1142
+ delta = run_check(
1143
+ root,
1144
+ base,
1145
+ name,
1146
+ ingestor,
1147
+ parsers,
1148
+ queries,
1149
+ exclude_paths=exclude_paths,
1150
+ unignore_paths=unignore_paths,
1151
+ )
1152
+ except CheckError as error:
1153
+ typer.echo(str(error), err=True)
1154
+ raise typer.Exit(code=1) from error
1155
+ typer.echo(json.dumps(delta, indent=cs.MCP_JSON_INDENT))
1156
+ if fail_on_found and has_findings(delta):
1157
+ raise typer.Exit(code=1)
1158
+
1159
+
1160
+ @app.command(
1161
+ name=ch.CLICommandName.RENAME,
1162
+ help=ch.CMD_RENAME,
1163
+ short_help=ch.CMD_RENAME,
1164
+ epilog=ch.EXAMPLES_RENAME,
1165
+ rich_help_panel=ch.PANEL_USE,
1166
+ )
1167
+ def rename_command(
1168
+ qualified_name: str = typer.Argument(..., help=ch.HELP_RENAME_QN),
1169
+ new_name: str = typer.Argument(..., help=ch.HELP_RENAME_NEW_NAME),
1170
+ repo_path: Path = typer.Option(
1171
+ Path(cs.MCP_DEFAULT_DIRECTORY),
1172
+ "--repo-path",
1173
+ exists=True,
1174
+ file_okay=False,
1175
+ help=ch.HELP_GRAPH_REPO_PATH,
1176
+ ),
1177
+ project: str | None = typer.Option(None, "--project", help=ch.HELP_GRAPH_PROJECT),
1178
+ allow_heuristic: bool = typer.Option(
1179
+ False, "--allow-heuristic", help=ch.HELP_RENAME_ALLOW_HEURISTIC
1180
+ ),
1181
+ dry_run: bool = typer.Option(False, "--dry-run", help=ch.HELP_RENAME_DRY_RUN),
1182
+ ) -> None:
1183
+ from .editing.rename import RenameRefused, rename, sites_for
1184
+ from .graph_cli import _project_and_fetch
1185
+
1186
+ name, fetch_all, ingestor = _project_and_fetch(project, repo_path)
1187
+ with ingestor: # type: ignore[attr-defined]
1188
+ parsers, queries = load_parsers()
1189
+ updater = GraphUpdater(
1190
+ ingestor=ingestor, # type: ignore[arg-type]
1191
+ repo_path=repo_path.resolve(),
1192
+ parsers=parsers,
1193
+ queries=queries,
1194
+ project_name=name,
1195
+ )
1196
+ try:
1197
+ report = rename(
1198
+ repo_path.resolve(),
1199
+ fetch_all,
1200
+ name,
1201
+ qualified_name,
1202
+ new_name,
1203
+ allow_heuristic=allow_heuristic,
1204
+ dry_run=dry_run,
1205
+ reingest=updater.reingest,
1206
+ )
1207
+ except RenameRefused as refused:
1208
+ typer.echo(str(refused), err=True)
1209
+ for site in sites_for(refused.ambiguous):
1210
+ typer.echo(f" {site}", err=True)
1211
+ for entry in refused.unlocatable:
1212
+ typer.echo(f" {entry}", err=True)
1213
+ raise typer.Exit(code=1) from refused
1214
+ payload = dict(report._asdict())
1215
+ payload[cs.KEY_SITES] = sites_for(report.sites)
1216
+ payload[cs.KEY_AMBIGUOUS] = sites_for(report.ambiguous)
1217
+ payload["verdict"] = report.verdict._asdict() if report.verdict else None
1218
+ typer.echo(json.dumps(payload, indent=cs.MCP_JSON_INDENT, sort_keys=True))
1219
+ if not report.applied and not dry_run:
1220
+ raise typer.Exit(code=1)
1221
+
1222
+
1093
1223
  @app.command(
1094
1224
  name=ch.CLICommandName.HELP,
1095
1225
  help=ch.CMD_HELP,
@@ -1171,6 +1301,18 @@ def status_command() -> None:
1171
1301
  app_context.console.print(f" - {project}: last sync {ts}")
1172
1302
 
1173
1303
 
1304
+ def _status_mark(passed: bool, encoding: str) -> str:
1305
+ """The pass/fail mark the console's stream can encode.
1306
+
1307
+ Rich substitutes ASCII box characters on a non-UTF stream but leaves
1308
+ text alone, so the glyph raised UnicodeEncodeError on a CP950 Windows
1309
+ terminal before a single check was shown (issue #1910).
1310
+ """
1311
+ if encoding.lower().startswith(cs.ENCODING_UTF_PREFIX):
1312
+ return cs.HEALTH_MARK_PASS if passed else cs.HEALTH_MARK_FAIL
1313
+ return cs.HEALTH_MARK_PASS_ASCII if passed else cs.HEALTH_MARK_FAIL_ASCII
1314
+
1315
+
1174
1316
  @app.command(
1175
1317
  name=ch.CLICommandName.DOCTOR,
1176
1318
  help=ch.CMD_DOCTOR,
@@ -1186,8 +1328,9 @@ def doctor() -> None:
1186
1328
  table = Table(show_header=False, box=None, padding=(0, 2))
1187
1329
  table.add_column(style="cyan", no_wrap=False)
1188
1330
 
1331
+ encoding = app_context.console.encoding
1189
1332
  for result in results:
1190
- status = "✓" if result.passed else "✗"
1333
+ status = _status_mark(result.passed, encoding)
1191
1334
  status_color = cs.Color.GREEN if result.passed else cs.Color.RED
1192
1335
  status_text = style(status, status_color, cs.StyleModifier.NONE)
1193
1336
 
@@ -1314,6 +1457,7 @@ def _dead_code_config(
1314
1457
  include_classes: bool,
1315
1458
  entry_points: list[str],
1316
1459
  decorator_roots: list[str],
1460
+ min_resolution: cs.EdgeResolution | None = None,
1317
1461
  ) -> DeadCodeConfig:
1318
1462
  # test_patterns is always set: included tests become roots; excluded, it
1319
1463
  # filters test modules out of module-load roots so test-only code stays dead.
@@ -1326,6 +1470,7 @@ def _dead_code_config(
1326
1470
  ),
1327
1471
  entry_points=tuple(entry_points),
1328
1472
  test_patterns=tuple(cs.TEST_PATH_PATTERNS),
1473
+ min_resolution=str(min_resolution) if min_resolution is not None else None,
1329
1474
  )
1330
1475
 
1331
1476
 
@@ -1473,6 +1618,9 @@ def dead_code(
1473
1618
  fail_on_found: bool = typer.Option(
1474
1619
  False, "--fail-on-found", help=ch.HELP_DEADCODE_FAIL_ON_FOUND
1475
1620
  ),
1621
+ min_resolution: cs.EdgeResolution | None = typer.Option(
1622
+ None, "--min-resolution", help=ch.HELP_DEADCODE_MIN_RESOLUTION
1623
+ ),
1476
1624
  ) -> None:
1477
1625
  from .dead_code import collect_dead_code_with_coverage
1478
1626
 
@@ -1494,7 +1642,11 @@ def dead_code(
1494
1642
  ingestor,
1495
1643
  resolved,
1496
1644
  _dead_code_config(
1497
- include_tests, include_classes, entry_point, decorator_root
1645
+ include_tests,
1646
+ include_classes,
1647
+ entry_point,
1648
+ decorator_root,
1649
+ min_resolution,
1498
1650
  ),
1499
1651
  )
1500
1652
  except Exception as e:
@@ -18,6 +18,9 @@ class CLICommandName(StrEnum):
18
18
  WORKSPACE = "workspace"
19
19
  TRACE = "trace"
20
20
  EDITS = "edits"
21
+ GRAPH = "graph"
22
+ CHECK = "check"
23
+ RENAME = "rename"
21
24
  STOP = "stop"
22
25
  STATUS = "status"
23
26
  HELP = "help"
@@ -93,6 +96,55 @@ HELP_EDITS_REPO_PATH = (
93
96
  "Repository root holding .cgr-edit-history.json (default: current directory)."
94
97
  )
95
98
  HELP_EDITS_DIFF = "Print each transaction's unified diff."
99
+ CMD_GRAPH = "Deterministic graph queries (resolve, definition, callers, callees, implementors, overrides, importers, tests-reaching) as JSON, no LLM."
100
+ CMD_GRAPH_GROUP = CMD_GRAPH
101
+ CMD_GRAPH_RESOLVE = "Resolve a name, dotted suffix, or path:line to qualified names."
102
+ CMD_GRAPH_DEFINITION = "File, span, docstring and source of one definition."
103
+ CMD_GRAPH_CALLERS = "Call sites that invoke a qualified name, one row per site."
104
+ CMD_GRAPH_CALLEES = "Call sites inside a qualified name, one row per site."
105
+ CMD_GRAPH_IMPLEMENTORS = "Types that inherit from or implement a type."
106
+ CMD_GRAPH_OVERRIDES = "Methods overriding a method, and the method it overrides."
107
+ CMD_GRAPH_IMPORTERS = (
108
+ "Modules importing a module, with each import statement's location."
109
+ )
110
+ CMD_GRAPH_TESTS_REACHING = (
111
+ "Tests from which a qualified name is reachable, with distance."
112
+ )
113
+ EPILOG_GRAPH = "Run 'cgr help graph COMMAND' for command-specific help."
114
+ HELP_GRAPH_PROJECT = "Project name in the graph (default: derived from --repo-path)."
115
+ HELP_GRAPH_REPO_PATH = (
116
+ "Repository root the project name derives from and source is read from."
117
+ )
118
+ HELP_GRAPH_DEPTH = "How many hops to follow (1 to 5)."
119
+ CMD_CHECK = (
120
+ "Report the structural delta of the working tree against a git ref: "
121
+ "dangling callers, arity findings, new duplicates, new import cycles, "
122
+ "tests reaching the edited symbols."
123
+ )
124
+ EXAMPLES_CHECK = (
125
+ "Examples:\n cgr check --base HEAD\n cgr check --base origin/main --fail-on-found"
126
+ )
127
+ HELP_CHECK_BASE = (
128
+ "Git ref the graph was indexed at; files differing from it are re-ingested."
129
+ )
130
+ HELP_CHECK_FAIL_ON_FOUND = (
131
+ "Exit with status 1 when the delta reports dangling callers, arity "
132
+ "findings, new duplicates or new import cycles."
133
+ )
134
+ CMD_RENAME = (
135
+ "Rename a definition everywhere the graph references it (definition, call "
136
+ "and reference sites, imports, overrides, __all__); refuses on guessed sites."
137
+ )
138
+ EXAMPLES_RENAME = (
139
+ "Examples:\n cgr rename myproj.pkg.util.helper assist --dry-run\n"
140
+ " cgr rename myproj.pkg.Store.get fetch --allow-heuristic"
141
+ )
142
+ HELP_RENAME_QN = "Qualified name of the definition to rename."
143
+ HELP_RENAME_NEW_NAME = "The new identifier."
144
+ HELP_RENAME_ALLOW_HEURISTIC = (
145
+ "Rewrite through heuristic, overload and trace-only sites as well."
146
+ )
147
+ HELP_RENAME_DRY_RUN = "Print the plan and diff without writing anything."
96
148
  CMD_TRACE_INGEST = "Resolve a trace file against a project and write dynamic edges"
97
149
  CMD_TRACE_CONVERT = "Convert a V8 .cpuprofile (node --cpu-prof) to a trace file"
98
150
 
@@ -353,6 +405,10 @@ HELP_DEADCODE_CLASSES = (
353
405
  )
354
406
  HELP_DEADCODE_FORMAT = "Report format: table or json."
355
407
  HELP_DEADCODE_OUTPUT = "Write the report to this file instead of stdout."
408
+ HELP_DEADCODE_MIN_RESOLUTION = (
409
+ "Ignore call edges below this confidence when deciding liveness: "
410
+ "heuristic < overload < exact < trace_confirmed (dynamic counts as confirmed)."
411
+ )
356
412
  HELP_DEADCODE_FAIL_ON_FOUND = (
357
413
  "Exit with status 1 when any candidate is found. Useful in CI."
358
414
  )
@@ -407,6 +463,9 @@ CLI_COMMANDS: dict[CLICommandName, str] = {
407
463
  CLICommandName.DAEMON: CMD_DAEMON,
408
464
  CLICommandName.TRACE: CMD_TRACE,
409
465
  CLICommandName.EDITS: CMD_EDITS,
466
+ CLICommandName.GRAPH: CMD_GRAPH,
467
+ CLICommandName.CHECK: CMD_CHECK,
468
+ CLICommandName.RENAME: CMD_RENAME,
410
469
  CLICommandName.WORKSPACE: CMD_WORKSPACE,
411
470
  CLICommandName.STOP: CMD_STOP,
412
471
  CLICommandName.STATUS: CMD_STATUS,
@@ -9,12 +9,13 @@ from typing import TypedDict, Unpack
9
9
 
10
10
  from dotenv import load_dotenv
11
11
  from loguru import logger
12
- from pydantic import Field
12
+ from pydantic import Field, field_validator
13
13
  from pydantic_settings import BaseSettings, SettingsConfigDict
14
14
 
15
15
  from . import constants as cs
16
16
  from . import exceptions as ex
17
17
  from . import logs
18
+ from .graph_dialects import DIALECT_MEMGRAPH, available_dialects
18
19
  from .types_defs import CgrignorePatterns, ModelConfigKwargs
19
20
 
20
21
  # Load only the configuration file in the invocation directory. The default
@@ -103,6 +104,16 @@ def format_missing_api_key_errors(
103
104
 
104
105
  LOCAL_PROVIDERS = frozenset({cs.Provider.OLLAMA})
105
106
 
107
+ # The provider-owned variable `validate_api_key` accepts INSTEAD of the role's
108
+ # own `<ROLE>_API_KEY`. Module level so `cgr doctor` can name the same variable
109
+ # the gate reads rather than restating the rule and drifting from it (#1910).
110
+ # A provider absent here is satisfied only by the role variable.
111
+ PROVIDER_ENV_KEYS = {
112
+ cs.Provider.ANTHROPIC: cs.ENV_ANTHROPIC_API_KEY,
113
+ cs.Provider.AZURE: cs.ENV_AZURE_API_KEY,
114
+ cs.Provider.MINIMAX: cs.ENV_MINIMAX_API_KEY,
115
+ }
116
+
106
117
 
107
118
  @dataclass
108
119
  class ModelConfig:
@@ -124,12 +135,7 @@ class ModelConfig:
124
135
 
125
136
  def validate_api_key(self, role: str = cs.DEFAULT_MODEL_ROLE) -> None:
126
137
  provider_lower = self.provider.lower()
127
- provider_env_keys = {
128
- cs.Provider.ANTHROPIC: cs.ENV_ANTHROPIC_API_KEY,
129
- cs.Provider.AZURE: cs.ENV_AZURE_API_KEY,
130
- cs.Provider.MINIMAX: cs.ENV_MINIMAX_API_KEY,
131
- }
132
- env_key = provider_env_keys.get(provider_lower)
138
+ env_key = PROVIDER_ENV_KEYS.get(provider_lower)
133
139
  if (
134
140
  provider_lower in LOCAL_PROVIDERS
135
141
  or (
@@ -159,11 +165,24 @@ class AppConfig(BaseSettings):
159
165
  case_sensitive=False,
160
166
  )
161
167
 
168
+ # Which graph engine the ingestor talks to. Memgraph stays the default,
169
+ # so an existing install keeps its behaviour without touching config;
170
+ # see `graph_dialects` for what actually differs between engines.
171
+ GRAPH_BACKEND: str = DIALECT_MEMGRAPH
172
+
162
173
  MEMGRAPH_HOST: str = "localhost"
163
174
  MEMGRAPH_PORT: int = 7687
164
175
  MEMGRAPH_HTTP_PORT: int = 7444
165
176
  MEMGRAPH_USERNAME: str | None = None
166
177
  MEMGRAPH_PASSWORD: str | None = None
178
+
179
+ # Neo4j connects by URI rather than host/port: the scheme carries the
180
+ # routing mode (`neo4j://` for a cluster, `bolt://` for one instance)
181
+ # and TLS (`+s`/`+ssc`), none of which a host/port pair can express.
182
+ NEO4J_URI: str = "bolt://localhost:7687"
183
+ NEO4J_USERNAME: str | None = None
184
+ NEO4J_PASSWORD: str | None = None
185
+ NEO4J_DATABASE: str = "neo4j"
167
186
  LAB_PORT: int = 3000
168
187
  MEMGRAPH_BATCH_SIZE: int = 1000
169
188
  AGENT_RETRIES: int = 3
@@ -364,6 +383,25 @@ class AppConfig(BaseSettings):
364
383
  QUERY_MEMORY_LIMIT_MB: int = Field(default=4096, gt=0)
365
384
  QUERY_TIMEOUT_S: float = Field(default=60.0, gt=0)
366
385
 
386
+ @field_validator("GRAPH_BACKEND")
387
+ @classmethod
388
+ def _known_backend(cls, value: str) -> str:
389
+ """Reject an unknown engine name at startup.
390
+
391
+ Defaulting an unrecognised value to Memgraph would send Memgraph
392
+ DDL to whatever server is actually configured, and
393
+ `MemgraphIngestor.ensure_constraints` swallows DDL failures -- so
394
+ a typo would surface much later as a graph built with no
395
+ constraints rather than as a startup error.
396
+ """
397
+ normalised = value.strip().lower()
398
+ if normalised not in available_dialects():
399
+ raise ValueError(
400
+ f"GRAPH_BACKEND must be one of {', '.join(available_dialects())}; "
401
+ f"got {value!r}"
402
+ )
403
+ return normalised
404
+
367
405
  OLLAMA_HEALTH_TIMEOUT: float = 5.0
368
406
  LITELLM_HEALTH_TIMEOUT: float = 5.0
369
407
 
@@ -51,7 +51,6 @@ class CppNodeType(StrEnum):
51
51
  TYPE_DESCRIPTOR = "type_descriptor"
52
52
 
53
53
 
54
- CPP_MODULE_EXTENSIONS = (".ixx", ".cppm", ".ccm", ".mxx")
55
54
  CPP_MODULE_PATH_MARKERS = frozenset({"interfaces", "modules"})
56
55
 
57
56
  # C++ module declaration prefixes
@@ -82,6 +81,7 @@ CPP_KEYWORD_STRUCT = "struct"
82
81
  # `static` storage on a declaration: internal linkage, TU-local symbol.
83
82
  CPP_KEYWORD_STATIC = "static"
84
83
  TS_CPP_STORAGE_CLASS_SPECIFIER = "storage_class_specifier"
84
+ TS_CPP_TYPE_QUALIFIER = "type_qualifier"
85
85
  CPP_EXPORTED_CLASS_KEYWORDS = frozenset({CPP_KEYWORD_CLASS, CPP_KEYWORD_STRUCT})
86
86
 
87
87
  # A C/C++ class/struct/union tag with no body is a forward declaration
@@ -145,6 +145,8 @@ TS_CSHARP_MODIFIER_PROTECTED = "protected"
145
145
  # of the parameter_list (grammar quirk), captured directly.
146
146
  TS_CSHARP_PARAMETER = "parameter"
147
147
  TS_CSHARP_ARRAY_TYPE = "array_type"
148
+ # `params T[] items` renders as the modifier plus the array type (#1527).
149
+ CSHARP_PARAMS_PREFIX = "params "
148
150
  TS_CSHARP_PARAMETER_LIST = "parameter_list"
149
151
 
150
152
  # Local/field declarations for type inference. A local is a variable_declaration
@@ -81,6 +81,11 @@ DART_NESTED_SCOPE_NODE_TYPES = frozenset(
81
81
  }
82
82
  )
83
83
  TS_DART_INITIALIZED_IDENTIFIER_LIST = "initialized_identifier_list"
84
+ TS_DART_STATIC_FINAL_DECLARATION_LIST = "static_final_declaration_list"
85
+ TS_DART_STATIC_FINAL_DECLARATION = "static_final_declaration"
86
+ TS_DART_CONST_BUILTIN = "const_builtin"
87
+ TS_DART_FINAL_BUILTIN = "final_builtin"
88
+ TS_DART_LATE = "late"
84
89
  TS_DART_INITIALIZED_IDENTIFIER = "initialized_identifier"
85
90
  TS_DART_INITIALIZED_VARIABLE_DEFINITION = "initialized_variable_definition"
86
91
  TS_DART_FORMAL_PARAMETER = "formal_parameter"
@@ -82,6 +82,10 @@ TS_GO_POINTER_TYPE = "pointer_type"
82
82
  # `pkg.Type` in a signature; kept as dotted text so a binding typed to an
83
83
  # external package's type stays TYPED (and drops) instead of trie-guessed.
84
84
  TS_GO_QUALIFIED_TYPE = "qualified_type"
85
+ TS_GO_GENERIC_TYPE = "generic_type"
86
+ # Field names of a `qualified_type` (`pkg.Name`): the package identifier and
87
+ # the type name; a `composite_literal` carries its constructed type in `type`.
88
+ FIELD_GO_PACKAGE = "package"
85
89
  # Go composite types a method may return; a chained call lands on the CONTAINER,
86
90
  # not its element, so return-type inference must not unwrap these (a `[]Command`
87
91
  # return must not resolve `.Run()` to `Command.Run`).
@@ -21,6 +21,9 @@ TS_FORMAL_PARAMETER = "formal_parameter"
21
21
  TS_SPREAD_PARAMETER = "spread_parameter"
22
22
  TS_LOCAL_VARIABLE_DECLARATION = "local_variable_declaration"
23
23
  TS_FIELD_DECLARATION = "field_declaration"
24
+ # An interface field. The grammar names it after what it implicitly is
25
+ # (`public static final`), so the keywords are usually absent from source.
26
+ TS_JAVA_CONSTANT_DECLARATION = "constant_declaration"
24
27
  TS_ASSIGNMENT_EXPRESSION = "assignment_expression"
25
28
 
26
29
  TS_OBJECT_CREATION_EXPRESSION = "object_creation_expression"
@@ -28,6 +28,13 @@ LUA_METHOD_SEPARATOR = ":"
28
28
  TS_LUA_CHUNK = "chunk"
29
29
  TS_LUA_FUNCTION_DECLARATION = "function_declaration"
30
30
  TS_LUA_FUNCTION_DEFINITION = "function_definition"
31
+ # A `key = value` entry of a table constructor (`{ f = function() end }`): the
32
+ # key is the `name` field (an identifier, or a string for `["key"] =`), the
33
+ # value the `value` field.
34
+ TS_LUA_FIELD = "field"
35
+ # The token that opens a computed or string key: `["k"] = v`, `[k] = v`.
36
+ LUA_OPEN_BRACKET = "["
37
+ TS_LUA_TABLE_CONSTRUCTOR = "table_constructor"
31
38
 
32
39
  # Import processor function names
33
40
  IMPORT_REQUIRE = "require"
@@ -217,6 +217,7 @@ TS_PRIVATE_PROPERTY_IDENTIFIER = "private_property_identifier"
217
217
 
218
218
  TS_IMPORT_DECLARATION = "import_declaration"
219
219
  TS_STATIC = "static"
220
+ TS_READONLY = "readonly"
220
221
  TS_SCOPED_IDENTIFIER = "scoped_identifier"
221
222
  TS_ASTERISK = "asterisk"
222
223
 
@@ -32,6 +32,11 @@ TS_PHP_ATTRIBUTE_LIST = "attribute_list"
32
32
  TS_PHP_ATTRIBUTE = "attribute"
33
33
  TS_PHP_ATTRIBUTE_GROUP = "attribute_group"
34
34
  TS_PHP_VISIBILITY_MODIFIER = "visibility_modifier"
35
+ TS_PHP_STATIC_MODIFIER = "static_modifier"
36
+ TS_PHP_PROPERTY_DECLARATION = "property_declaration"
37
+ TS_PHP_PROPERTY_ELEMENT = "property_element"
38
+ TS_PHP_DECLARATION_LIST = "declaration_list"
39
+ TS_PHP_VARIABLE_NAME = "variable_name"
35
40
  TS_PHP_USE_DECLARATION = "use_declaration"
36
41
 
37
42
  # FLOWS_TO lean-walk node types (issue #1174). PHP variables carry a `$` prefix