code-graph-rag 0.0.845__tar.gz → 0.0.895__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 (351) hide show
  1. {code_graph_rag-0.0.845/code_graph_rag.egg-info → code_graph_rag-0.0.895}/PKG-INFO +1 -1
  2. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/README.md +6 -6
  3. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895/code_graph_rag.egg-info}/PKG-INFO +1 -1
  4. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/SOURCES.txt +7 -0
  5. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/cli.py +130 -1
  6. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/cli_help.py +59 -0
  7. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_cpp.py +0 -1
  8. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_csharp.py +2 -0
  9. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_go.py +4 -0
  10. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_lua.py +7 -0
  11. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_python.py +7 -0
  12. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/cli.py +50 -0
  13. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/core.py +37 -0
  14. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/duplicates.py +7 -0
  15. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/graph.py +135 -9
  16. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/lang_tooling.py +7 -0
  17. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/languages.py +37 -4
  18. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/mcp.py +48 -0
  19. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/cypher_queries.py +210 -1
  20. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/dead_code.py +141 -84
  21. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editing/imports.py +82 -22
  22. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editing/patcher.py +55 -5
  23. code_graph_rag-0.0.895/codebase_rag/editing/rename.py +772 -0
  24. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/function_registry.py +19 -12
  25. code_graph_rag-0.0.895/codebase_rag/graph_cli.py +176 -0
  26. code_graph_rag-0.0.895/codebase_rag/graph_query.py +526 -0
  27. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/graph_updater.py +2250 -253
  28. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/logs.py +101 -5
  29. code_graph_rag-0.0.895/codebase_rag/mcp/tools.py +2155 -0
  30. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/call_processor.py +480 -23
  31. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/call_resolver.py +431 -24
  32. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/mixin.py +23 -0
  33. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/parent_extraction.py +45 -15
  34. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/utils.py +20 -21
  35. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/frontend.py +43 -31
  36. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/qn.py +19 -1
  37. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/type_inference.py +172 -45
  38. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/definition_processor.py +101 -0
  39. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/dependency_parser.py +34 -22
  40. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoint_prefixes.py +39 -1
  41. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/factory.py +35 -0
  42. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/function_ingest.py +39 -2
  43. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/type_inference.py +20 -16
  44. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/js_ts.py +4 -3
  45. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/import_processor.py +353 -88
  46. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/type_inference.py +0 -2
  47. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/type_resolver.py +0 -2
  48. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/utils.py +0 -2
  49. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/variable_analyzer.py +6 -10
  50. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/ingest.py +7 -0
  51. code_graph_rag-0.0.895/codebase_rag/parsers/lua/utils.py +212 -0
  52. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/utils.py +58 -19
  53. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/stdlib_extractor.py +4 -1
  54. code_graph_rag-0.0.895/codebase_rag/parsers/type_facts.py +417 -0
  55. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/type_inference.py +111 -1
  56. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/utils.py +11 -5
  57. code_graph_rag-0.0.895/codebase_rag/structural_check.py +221 -0
  58. code_graph_rag-0.0.895/codebase_rag/structural_delta.py +907 -0
  59. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/shell_command.py +63 -17
  60. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/structural_editor.py +11 -2
  61. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/tool_descriptions.py +121 -3
  62. code_graph_rag-0.0.895/codebase_rag/trace/dispatch_site.py +427 -0
  63. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/ingest.py +65 -3
  64. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/speedscope.py +24 -11
  65. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/types_defs.py +58 -4
  66. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/path_utils.py +157 -8
  67. code_graph_rag-0.0.895/codec/schema_pb2.py +85 -0
  68. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/pyproject.toml +3 -1
  69. code_graph_rag-0.0.845/codebase_rag/mcp/tools.py +0 -1077
  70. code_graph_rag-0.0.845/codebase_rag/parsers/lua/utils.py +0 -96
  71. code_graph_rag-0.0.845/codec/schema_pb2.py +0 -85
  72. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/LICENSE +0 -0
  73. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/PYPI_README.md +0 -0
  74. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/cgr/__init__.py +0 -0
  75. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  76. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/entry_points.txt +0 -0
  77. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/requires.txt +0 -0
  78. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/top_level.txt +0 -0
  79. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/__init__.py +0 -0
  80. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/__init__.py +0 -0
  81. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  82. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  83. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  84. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  85. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  86. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  87. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  88. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  89. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  90. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  91. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  92. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  93. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  94. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  95. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  96. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  97. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  98. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  99. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  100. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  101. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  102. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  103. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  104. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  105. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  106. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  107. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  108. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  109. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  110. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  111. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  112. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  113. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  114. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  115. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  116. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  117. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  118. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  119. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  120. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  121. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  122. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  123. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  124. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  125. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  126. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  127. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/ast_cache.py +0 -0
  128. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/capture.py +0 -0
  129. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/cgr_state.py +0 -0
  130. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/config.py +0 -0
  131. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/__init__.py +0 -0
  132. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_dart.py +0 -0
  133. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_java.py +0 -0
  134. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_js.py +0 -0
  135. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_nodes.py +0 -0
  136. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_php.py +0 -0
  137. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_rust.py +0 -0
  138. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_scala.py +0 -0
  139. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_sql.py +0 -0
  140. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/build.py +0 -0
  141. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/deadcode_roots.py +0 -0
  142. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/deps.py +0 -0
  143. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/fqn_specs.py +0 -0
  144. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/health.py +0 -0
  145. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/providers.py +0 -0
  146. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/security.py +0 -0
  147. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/stdlib_types.py +0 -0
  148. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/structural.py +0 -0
  149. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/trace.py +0 -0
  150. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/context_pruning.py +0 -0
  151. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/crash_correlation.py +0 -0
  152. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/decorators.py +0 -0
  153. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/docker-compose.yaml +0 -0
  154. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/duplicates.py +0 -0
  155. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editing/__init__.py +0 -0
  156. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editing/cli.py +0 -0
  157. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editing/transaction.py +0 -0
  158. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editor_links.py +0 -0
  159. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/embedder.py +0 -0
  160. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/exceptions.py +0 -0
  161. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/flow_verdict.py +0 -0
  162. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/graph_audit.py +0 -0
  163. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/graph_loader.py +0 -0
  164. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/language_spec.py +0 -0
  165. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/main.py +0 -0
  166. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/mcp/__init__.py +0 -0
  167. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/mcp/client.py +0 -0
  168. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/mcp/server.py +0 -0
  169. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/models.py +0 -0
  170. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parser_fingerprint.py +0 -0
  171. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parser_loader.py +0 -0
  172. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/__init__.py +0 -0
  173. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_fingerprint.py +0 -0
  174. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  175. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  176. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
  177. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  178. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  179. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  180. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  181. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  182. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_tier.py +0 -0
  183. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/build_lock.py +0 -0
  184. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  185. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  186. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/identity.py +0 -0
  187. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
  188. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  189. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  190. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  191. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/contract_linking.py +0 -0
  192. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/contracts.py +0 -0
  193. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/__init__.py +0 -0
  194. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
  195. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/type_inference.py +0 -0
  196. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  197. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  198. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/__init__.py +0 -0
  199. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/utils.py +0 -0
  200. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  201. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
  202. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  203. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  204. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  205. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/__init__.py +0 -0
  206. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/type_inference.py +0 -0
  207. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/utils.py +0 -0
  208. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/dispatch_registry.py +0 -0
  209. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/document_tier.py +0 -0
  210. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoint_routes.py +0 -0
  211. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoints.py +0 -0
  212. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/export_detection.py +0 -0
  213. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/flat_module.py +0 -0
  214. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  215. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/constants.py +0 -0
  216. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/processor.py +0 -0
  217. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontend_mode.py +0 -0
  218. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/__init__.py +0 -0
  219. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/cpp.py +0 -0
  220. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/csharp.py +0 -0
  221. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/go.py +0 -0
  222. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/java.py +0 -0
  223. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/protocol.py +0 -0
  224. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/python.py +0 -0
  225. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/registry.py +0 -0
  226. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/__init__.py +0 -0
  227. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/module_paths.py +0 -0
  228. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/utils.py +0 -0
  229. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  230. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  231. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
  232. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
  233. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
  234. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/__init__.py +0 -0
  235. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/base.py +0 -0
  236. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/cpp.py +0 -0
  237. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/java.py +0 -0
  238. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/lua.py +0 -0
  239. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/php.py +0 -0
  240. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/protocol.py +0 -0
  241. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/python.py +0 -0
  242. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/registry.py +0 -0
  243. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/rust.py +0 -0
  244. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/__init__.py +0 -0
  245. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/constants.py +0 -0
  246. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  247. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/extract.py +0 -0
  248. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/models.py +0 -0
  249. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/processor.py +0 -0
  250. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/registry.py +0 -0
  251. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/__init__.py +0 -0
  252. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/method_resolver.py +0 -0
  253. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  254. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  255. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  256. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_generated.py +0 -0
  257. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_lombok.py +0 -0
  258. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  259. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
  260. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/module_system.py +0 -0
  261. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
  262. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/utils.py +0 -0
  263. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/lua/__init__.py +0 -0
  264. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/lua/type_inference.py +0 -0
  265. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/__init__.py +0 -0
  266. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
  267. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
  268. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/type_inference.py +0 -0
  269. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
  270. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  271. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  272. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/python_source_roots.py +0 -0
  273. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/rpc_exposure.py +0 -0
  274. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/__init__.py +0 -0
  275. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/type_inference.py +0 -0
  276. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/utils.py +0 -0
  277. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/semantic_call_join.py +0 -0
  278. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/string_call.py +0 -0
  279. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/structure_processor.py +0 -0
  280. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/path_filters.py +0 -0
  281. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/prompts.py +0 -0
  282. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/providers/__init__.py +0 -0
  283. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/providers/base.py +0 -0
  284. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/providers/litellm.py +0 -0
  285. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/readme_sections.py +0 -0
  286. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/schema_builder.py +0 -0
  287. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/schema_parse.py +0 -0
  288. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/schemas.py +0 -0
  289. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/__init__.py +0 -0
  290. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/anthropic_token_counter.py +0 -0
  291. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/filtering.py +0 -0
  292. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/graph_diff.py +0 -0
  293. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/graph_service.py +0 -0
  294. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/llm.py +0 -0
  295. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/protobuf_service.py +0 -0
  296. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/provenance.py +0 -0
  297. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/resource_cleanup.py +0 -0
  298. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/usage_cost.py +0 -0
  299. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/sql_names.py +0 -0
  300. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/stack/__init__.py +0 -0
  301. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/stack/cli.py +0 -0
  302. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/stack/constants.py +0 -0
  303. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/stack/health.py +0 -0
  304. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/stack/manager.py +0 -0
  305. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/taint.py +0 -0
  306. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tool_errors.py +0 -0
  307. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/__init__.py +0 -0
  308. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/ast_grep_service.py +0 -0
  309. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/code_retrieval.py +0 -0
  310. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/codebase_query.py +0 -0
  311. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/directory_lister.py +0 -0
  312. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/duplicate_detection.py +0 -0
  313. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/file_editor.py +0 -0
  314. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/file_reader.py +0 -0
  315. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/file_writer.py +0 -0
  316. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/graph_rerank.py +0 -0
  317. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/health_checker.py +0 -0
  318. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/language.py +0 -0
  319. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/research.py +0 -0
  320. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/semantic_search.py +0 -0
  321. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/structural_search.py +0 -0
  322. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/web_search.py +0 -0
  323. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/__init__.py +0 -0
  324. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/cli.py +0 -0
  325. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/cpuprofile.py +0 -0
  326. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/ebpf_pprof.py +0 -0
  327. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/instrumented.py +0 -0
  328. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/pprof.py +0 -0
  329. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/pytest_plugin.py +0 -0
  330. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/records.py +0 -0
  331. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/resolution.py +0 -0
  332. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/rust_pprof.py +0 -0
  333. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/sourcemap.py +0 -0
  334. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/tracer.py +0 -0
  335. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/xdebug.py +0 -0
  336. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/unixcoder.py +0 -0
  337. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/__init__.py +0 -0
  338. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/dependencies.py +0 -0
  339. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/fqn_resolver.py +0 -0
  340. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/rich_markdown.py +0 -0
  341. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/source_extraction.py +0 -0
  342. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/token_utils.py +0 -0
  343. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/vector_store.py +0 -0
  344. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/workspaces/__init__.py +0 -0
  345. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/workspaces/cli.py +0 -0
  346. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/workspaces/constants.py +0 -0
  347. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/workspaces/models.py +0 -0
  348. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/workspaces/storage.py +0 -0
  349. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codec/__init__.py +0 -0
  350. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codec/schema_pb2.pyi +0 -0
  351. {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/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.895
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
@@ -51,12 +51,12 @@ 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
+ - **File System Operations**: Improved handling of file system operations with platform-neutral joins and safeguards against removing project root.
55
+ - **Cache Management**: Enhanced cache management with atomic publishing, dedicated cache stamps, and improved deletion handling for orphan caches.
56
+ - **Graph Querying**: Introduced deterministic graph query tools for more precise analysis of code relationships.
57
+ - **Re-ingestion & Parsing**: Improved re-ingestion processes, including handling of deleted files, re-parsing of related files, and rebuilding of key data structures.
58
+ - **Security & Stability**: Addressed security concerns by blocking removal of project root and improved stability by preventing skipped edits and handling orphaned caches.
59
+ - **C++ & Go Integration**: Enhanced integration with C++ and Go, including parsing of module interfaces and handling of module-level class aliases.
60
60
  <!-- /SECTION:latest_news -->
61
61
 
62
62
  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.895
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
@@ -29,7 +29,9 @@ codebase_rag/exceptions.py
29
29
  codebase_rag/flow_verdict.py
30
30
  codebase_rag/function_registry.py
31
31
  codebase_rag/graph_audit.py
32
+ codebase_rag/graph_cli.py
32
33
  codebase_rag/graph_loader.py
34
+ codebase_rag/graph_query.py
33
35
  codebase_rag/graph_updater.py
34
36
  codebase_rag/language_spec.py
35
37
  codebase_rag/logs.py
@@ -44,6 +46,8 @@ codebase_rag/schema_builder.py
44
46
  codebase_rag/schema_parse.py
45
47
  codebase_rag/schemas.py
46
48
  codebase_rag/sql_names.py
49
+ codebase_rag/structural_check.py
50
+ codebase_rag/structural_delta.py
47
51
  codebase_rag/taint.py
48
52
  codebase_rag/tool_errors.py
49
53
  codebase_rag/types_defs.py
@@ -131,6 +135,7 @@ codebase_rag/editing/__init__.py
131
135
  codebase_rag/editing/cli.py
132
136
  codebase_rag/editing/imports.py
133
137
  codebase_rag/editing/patcher.py
138
+ codebase_rag/editing/rename.py
134
139
  codebase_rag/editing/transaction.py
135
140
  codebase_rag/mcp/__init__.py
136
141
  codebase_rag/mcp/client.py
@@ -165,6 +170,7 @@ codebase_rag/parsers/semantic_call_join.py
165
170
  codebase_rag/parsers/stdlib_extractor.py
166
171
  codebase_rag/parsers/string_call.py
167
172
  codebase_rag/parsers/structure_processor.py
173
+ codebase_rag/parsers/type_facts.py
168
174
  codebase_rag/parsers/type_inference.py
169
175
  codebase_rag/parsers/utils.py
170
176
  codebase_rag/parsers/ast_grep_patterns/bash.yaml
@@ -310,6 +316,7 @@ codebase_rag/tools/web_search.py
310
316
  codebase_rag/trace/__init__.py
311
317
  codebase_rag/trace/cli.py
312
318
  codebase_rag/trace/cpuprofile.py
319
+ codebase_rag/trace/dispatch_site.py
313
320
  codebase_rag/trace/ebpf_pprof.py
314
321
  codebase_rag/trace/ingest.py
315
322
  codebase_rag/trace/instrumented.py
@@ -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,125 @@ 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
+ try:
1189
+ report = rename(
1190
+ repo_path.resolve(),
1191
+ fetch_all,
1192
+ name,
1193
+ qualified_name,
1194
+ new_name,
1195
+ allow_heuristic=allow_heuristic,
1196
+ dry_run=dry_run,
1197
+ )
1198
+ except RenameRefused as refused:
1199
+ typer.echo(str(refused), err=True)
1200
+ for site in sites_for(refused.ambiguous):
1201
+ typer.echo(f" {site}", err=True)
1202
+ for entry in refused.unlocatable:
1203
+ typer.echo(f" {entry}", err=True)
1204
+ raise typer.Exit(code=1) from refused
1205
+ payload = dict(report._asdict())
1206
+ payload[cs.KEY_SITES] = sites_for(report.sites)
1207
+ payload[cs.KEY_AMBIGUOUS] = sites_for(report.ambiguous)
1208
+ typer.echo(json.dumps(payload, indent=cs.MCP_JSON_INDENT, sort_keys=True))
1209
+ if not report.applied and not dry_run:
1210
+ raise typer.Exit(code=1)
1211
+
1212
+
1093
1213
  @app.command(
1094
1214
  name=ch.CLICommandName.HELP,
1095
1215
  help=ch.CMD_HELP,
@@ -1314,6 +1434,7 @@ def _dead_code_config(
1314
1434
  include_classes: bool,
1315
1435
  entry_points: list[str],
1316
1436
  decorator_roots: list[str],
1437
+ min_resolution: cs.EdgeResolution | None = None,
1317
1438
  ) -> DeadCodeConfig:
1318
1439
  # test_patterns is always set: included tests become roots; excluded, it
1319
1440
  # filters test modules out of module-load roots so test-only code stays dead.
@@ -1326,6 +1447,7 @@ def _dead_code_config(
1326
1447
  ),
1327
1448
  entry_points=tuple(entry_points),
1328
1449
  test_patterns=tuple(cs.TEST_PATH_PATTERNS),
1450
+ min_resolution=str(min_resolution) if min_resolution is not None else None,
1329
1451
  )
1330
1452
 
1331
1453
 
@@ -1473,6 +1595,9 @@ def dead_code(
1473
1595
  fail_on_found: bool = typer.Option(
1474
1596
  False, "--fail-on-found", help=ch.HELP_DEADCODE_FAIL_ON_FOUND
1475
1597
  ),
1598
+ min_resolution: cs.EdgeResolution | None = typer.Option(
1599
+ None, "--min-resolution", help=ch.HELP_DEADCODE_MIN_RESOLUTION
1600
+ ),
1476
1601
  ) -> None:
1477
1602
  from .dead_code import collect_dead_code_with_coverage
1478
1603
 
@@ -1494,7 +1619,11 @@ def dead_code(
1494
1619
  ingestor,
1495
1620
  resolved,
1496
1621
  _dead_code_config(
1497
- include_tests, include_classes, entry_point, decorator_root
1622
+ include_tests,
1623
+ include_classes,
1624
+ entry_point,
1625
+ decorator_root,
1626
+ min_resolution,
1498
1627
  ),
1499
1628
  )
1500
1629
  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,
@@ -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
@@ -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
@@ -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`).
@@ -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"
@@ -18,6 +18,13 @@ TS_PY_LIST_COMPREHENSION = "list_comprehension"
18
18
  TS_PY_FOR_STATEMENT = "for_statement"
19
19
  TS_PY_FOR_IN_CLAUSE = "for_in_clause"
20
20
  TS_PY_ASSIGNMENT = "assignment"
21
+ # Unpacking targets: `a, b = ...`, `(a, b) = ...`, `[a, b] = ...`.
22
+ TS_PY_PATTERN_LIST = "pattern_list"
23
+ TS_PY_TUPLE_PATTERN = "tuple_pattern"
24
+ TS_PY_LIST_PATTERN = "list_pattern"
25
+ PY_UNPACKING_TARGET_TYPES = frozenset(
26
+ {TS_PY_PATTERN_LIST, TS_PY_TUPLE_PATTERN, TS_PY_LIST_PATTERN}
27
+ )
21
28
  PY_ASSIGNMENT_QUERY = "(assignment) @assignment"
22
29
  PY_RETURN_QUERY = "(return_statement) @return_stmt"
23
30
  TS_PY_CLASS_DEFINITION = "class_definition"
@@ -119,6 +119,13 @@ CLI_MSG_EXPORTING_DATA = "Exporting graph data..."
119
119
  CLI_MSG_OPTIMIZATION_TERMINATED = "\nOptimization session terminated by user."
120
120
  CLI_MSG_MCP_TERMINATED = "\nMCP server terminated by user."
121
121
  PACKAGE_NAME = "code-graph-rag"
122
+ # How a test spawns the CLI as a subprocess. Shared so the deadline gate in
123
+ # test_cli_smoke can assert no other test file spawns it outside that gate
124
+ # (issue #1655). Both spellings pay the same startup cost, so both need the
125
+ # same deadline: `-m codebase_rag.cli`, and the console scripts in
126
+ # [project.scripts].
127
+ CLI_MODULE_INVOCATION = "codebase_rag.cli"
128
+ CLI_ENTRY_POINT_NAMES: frozenset[str] = frozenset({"cgr", PACKAGE_NAME})
122
129
  CLI_MSG_VERSION = "{package} version {version}"
123
130
  CLI_MSG_HINT_TARGET_REPO = (
124
131
  "\nHint: Make sure TARGET_REPO_PATH environment variable is set."
@@ -134,6 +141,21 @@ CLI_STATS_TOTAL_NODES = "Total Nodes"
134
141
  CLI_STATS_TOTAL_RELS = "Total Relationships"
135
142
  CLI_STATS_UNKNOWN = "Unknown"
136
143
  CLI_ERR_STATS_FAILED = "Failed to get graph statistics: {error}"
144
+ # `cgr check` (issue #1525).
145
+ CHECK_GIT_FAILED = "Cannot diff the working tree against {base}: {error}"
146
+ CHECK_BAD_BASE = "--base must be a git revision, not an option: {base!r}"
147
+ CHECK_BASE_NOT_A_COMMIT = (
148
+ "--base must name one commit to compare the working tree against, "
149
+ "not a range or an unknown revision: {base!r}"
150
+ )
151
+ CHECK_SCOPE_OF_OTHER_PROJECT = (
152
+ "The exclusion scope stamped in this repository belongs to project {other}, "
153
+ "not {project}; re-index {project} (or check {other}) before running the check"
154
+ )
155
+ CHECK_NOT_INDEXED = (
156
+ "Project {project} is not indexed; run 'cgr start --update-graph' at the "
157
+ "base ref first."
158
+ )
137
159
 
138
160
  CLI_DEADCODE_CONNECTING = "Scanning for unreachable functions and methods..."
139
161
  CLI_DEADCODE_TABLE_TITLE = "Dead Code Candidates ({project_name})"
@@ -528,6 +550,33 @@ EDIT_UNDO_DONE = "Undid transaction {tx} ({count} file(s))"
528
550
  EDIT_UNDO_STOPPED = "Stopped at transaction {tx}: {reason}"
529
551
  EDIT_SHOW_NONE = "No recorded edit transactions"
530
552
  EDIT_SHOW_HEADER = "{tx} {at} {count} file(s) verification={ok}"
553
+ # Rename (issue #1532).
554
+ RENAME_UNKNOWN = "No definition named {qn} in the graph"
555
+ RENAME_NO_DEFINITION_TOKEN = "Could not locate the name of {qn} in {path}"
556
+ RENAME_DEFINITION_UNREADABLE = (
557
+ "Cannot rename {qn}: its file {path} cannot be read ({error}). "
558
+ "The index names a file the tree no longer has; re-index and retry."
559
+ )
560
+ RENAME_BAD_NAME = "Not a valid identifier: {name}"
561
+ RENAME_AMBIGUOUS = (
562
+ "Refusing to rename {qn}: {count} site(s) were resolved heuristically, by overload "
563
+ "fan-out, or only by a trace; pass allow_heuristic to rewrite through them"
564
+ )
565
+ RENAME_UNLOCATABLE_SITE = "{owner}: site cannot be located ({resolution})"
566
+ RENAME_SITELESS = (
567
+ "Cannot rename {qn}: {count} graph-known site(s) carry no rewrite location, "
568
+ "so the rename would leave them under the old name"
569
+ )
570
+ RENAME_WRONG_ROOT = (
571
+ "Project {project} was not indexed from this server's repository; "
572
+ "rename it from the MCP server rooted at its source tree"
573
+ )
574
+ RENAME_STRUCTURAL_UNLOCATABLE = (
575
+ "Cannot rename {qn}: {count} structural edge(s) (inherits, accepts, returns) "
576
+ "carry no rewrite site, so the rename would leave them pointing at the old name"
577
+ )
578
+ RENAME_PLANNED = "{count} site(s) would be rewritten"
579
+ RENAME_PARSE_FAILED = "Rename rolled back: {files} would no longer parse"
531
580
  MSG_SURGICAL_FAILED = (
532
581
  "Failed to apply surgical replacement in {path}. "
533
582
  "Target code not found or patches failed."
@@ -537,6 +586,7 @@ GREP_SUGGESTION = " Use 'rg' instead of 'grep' for text searching."
537
586
 
538
587
  QUERY_NOT_AVAILABLE = "N/A"
539
588
  DICT_KEY_RESULTS = "results"
589
+ DICT_KEY_ERROR = "error"
540
590
  DICT_KEY_QUERY_USED = "query_used"
541
591
  TIKTOKEN_ENCODING = "cl100k_base"
542
592
  QUERY_SUMMARY_SUCCESS = "Successfully retrieved {count} item(s) from the graph."
@@ -103,6 +103,30 @@ TEXT_UNKNOWN = "unknown"
103
103
 
104
104
  TMP_EXTENSION = ".tmp"
105
105
 
106
+ # Filenames whose module IS their directory, PER LANGUAGE: an importer writes
107
+ # the directory name, never the file's own stem. The extension is part of the
108
+ # rule, not decoration -- `index.py` and `mod.py` are ordinary Python modules
109
+ # imported by those names, and a language-blind stem set silently gives them no
110
+ # importable name at all. `lib.rs`/`main.rs` are crate roots named by the
111
+ # manifest rather than the directory, so they are deliberately absent.
112
+ DIRECTORY_MODULE_STEM_BY_EXT: dict[str, str] = {
113
+ ".py": "__init__",
114
+ ".rs": "mod",
115
+ ".js": "index",
116
+ ".jsx": "index",
117
+ ".mjs": "index",
118
+ ".cjs": "index",
119
+ ".ts": "index",
120
+ ".tsx": "index",
121
+ # `.mts`/`.cts` are TypeScript's ESM/CJS forms and are directory entry
122
+ # points exactly as `.mjs`/`.cjs` are. They belong to `TS_EXTENSIONS` and
123
+ # to `JS_TS_MODULE_EXTENSIONS`, which is the set cgr's own directory-index
124
+ # resolution already searches, so omitting them here made `pkg/index.mts`
125
+ # derive `pkg.index` instead of `pkg` and the unresolved-importer query
126
+ # asked for a name no waiter had written (issue #1682 review).
127
+ ".mts": "index",
128
+ ".cts": "index",
129
+ }
106
130
  MOD_RS = "mod.rs"
107
131
  LIB_RS = "lib.rs"
108
132
  MAIN_RS = "main.rs"
@@ -123,6 +147,13 @@ OPERATOR_PREFIX = "operator"
123
147
  KEYWORD_SUPER = "super"
124
148
  KEYWORD_SELF = "self"
125
149
  KEYWORD_CONSTRUCTOR = "constructor"
150
+ # Receivers that name the enclosing type rather than an ordinary value, so
151
+ # `self.Inner()` and `cls.Inner()` are real nested-class constructions.
152
+ # Membership is not sufficient on its own: `self` is also a legal Go receiver
153
+ # name, and a spelling test alone accepted `self.Error()` for a module-level
154
+ # `Error`. The caller pairs this with a nesting check against the enclosing
155
+ # type, which is what actually distinguishes the two (issue #1641).
156
+ SELF_RECEIVER_KEYWORDS = frozenset({"self", "cls", "this"})
126
157
 
127
158
  # Incremental update hash cache
128
159
  HASH_CACHE_FILENAME = ".cgr-hash-cache.json"
@@ -180,6 +211,12 @@ PARSER_FINGERPRINT_SOURCE_FILES: tuple[str, ...] = (
180
211
  "ast_cache.py",
181
212
  "language_spec.py",
182
213
  "parser_loader.py",
214
+ # `base_module_qn` lives here, and the whole graph keys on the names it
215
+ # derives: change the rule and every module node should be re-keyed. It
216
+ # was absent, so a change touching ONLY this file left existing indexes on
217
+ # the old identities with no staleness warning, and `utils/` is in neither
218
+ # of the directory globs above (issue #1720 review).
219
+ "utils/path_utils.py",
183
220
  )
184
221
  PY_SOURCE_GLOB = "*.py"
185
222
  # The bundled Roslyn C# frontend tool is parser code too, though .cs/.csproj
@@ -112,6 +112,13 @@ DUPLICATES_MAX_SIMILAR_GROUPS = 1000
112
112
 
113
113
  KIND_EXACT = "exact"
114
114
  KIND_SIMILAR = "similar"
115
+ # Per-site arity verdicts in a structural delta (issue #1525).
116
+ DELTA_ARITY_OK = "ok"
117
+ DELTA_ARITY_TOO_MANY = "too_many"
118
+ DELTA_ARITY_POSSIBLY_MISSING = "possibly_missing"
119
+ DELTA_ARITY_UNKNOWN = "unknown"
120
+ # Hops the backward test-reach walk follows before giving up.
121
+ DELTA_REACH_MAX_DEPTH = 12
115
122
 
116
123
  # Cypher return alias for the not-analyzed symbol count.
117
124
  KEY_SKIPPED = "skipped"