code-graph-rag 0.0.820__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 (353) hide show
  1. {code_graph_rag-0.0.820/code_graph_rag.egg-info → code_graph_rag-0.0.895}/PKG-INFO +1 -1
  2. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/README.md +6 -3
  3. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895/code_graph_rag.egg-info}/PKG-INFO +1 -1
  4. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/SOURCES.txt +7 -0
  5. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/cli.py +131 -1
  6. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/cli_help.py +59 -0
  7. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_cpp.py +0 -1
  8. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_csharp.py +2 -0
  9. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_go.py +4 -0
  10. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_lua.py +7 -0
  11. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_python.py +7 -0
  12. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/cli.py +67 -0
  13. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/core.py +44 -0
  14. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/duplicates.py +7 -0
  15. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/graph.py +143 -9
  16. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/lang_tooling.py +7 -0
  17. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/languages.py +59 -2
  18. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/mcp.py +48 -0
  19. code_graph_rag-0.0.895/codebase_rag/constants/security.py +842 -0
  20. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/cypher_queries.py +210 -1
  21. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/dead_code.py +141 -84
  22. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editing/imports.py +82 -22
  23. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editing/patcher.py +84 -5
  24. code_graph_rag-0.0.895/codebase_rag/editing/rename.py +772 -0
  25. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/function_registry.py +19 -12
  26. code_graph_rag-0.0.895/codebase_rag/graph_cli.py +176 -0
  27. code_graph_rag-0.0.895/codebase_rag/graph_query.py +526 -0
  28. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/graph_updater.py +2489 -185
  29. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/logs.py +135 -8
  30. code_graph_rag-0.0.895/codebase_rag/mcp/tools.py +2155 -0
  31. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parser_fingerprint.py +42 -1
  32. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/call_processor.py +480 -23
  33. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/call_resolver.py +431 -24
  34. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/mixin.py +23 -0
  35. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/parent_extraction.py +45 -15
  36. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/utils.py +20 -21
  37. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/frontend.py +43 -31
  38. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/qn.py +19 -1
  39. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/type_inference.py +172 -45
  40. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/definition_processor.py +101 -0
  41. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/dependency_parser.py +34 -22
  42. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoint_prefixes.py +39 -1
  43. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/factory.py +35 -0
  44. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/function_ingest.py +39 -2
  45. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/type_inference.py +20 -16
  46. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/js_ts.py +4 -3
  47. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/import_processor.py +353 -93
  48. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/type_inference.py +0 -2
  49. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/type_resolver.py +0 -2
  50. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/utils.py +0 -2
  51. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/variable_analyzer.py +6 -10
  52. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/ingest.py +7 -0
  53. code_graph_rag-0.0.895/codebase_rag/parsers/lua/utils.py +212 -0
  54. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/utils.py +58 -19
  55. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/stdlib_extractor.py +4 -1
  56. code_graph_rag-0.0.895/codebase_rag/parsers/type_facts.py +417 -0
  57. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/type_inference.py +111 -1
  58. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/utils.py +11 -5
  59. code_graph_rag-0.0.895/codebase_rag/structural_check.py +221 -0
  60. code_graph_rag-0.0.895/codebase_rag/structural_delta.py +907 -0
  61. code_graph_rag-0.0.895/codebase_rag/tools/shell_command.py +1751 -0
  62. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/structural_editor.py +11 -2
  63. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/tool_descriptions.py +121 -3
  64. code_graph_rag-0.0.895/codebase_rag/trace/dispatch_site.py +427 -0
  65. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/ingest.py +65 -3
  66. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/speedscope.py +24 -11
  67. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/types_defs.py +58 -4
  68. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/path_utils.py +177 -7
  69. code_graph_rag-0.0.895/codec/schema_pb2.py +85 -0
  70. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/pyproject.toml +27 -1
  71. code_graph_rag-0.0.820/codebase_rag/constants/security.py +0 -316
  72. code_graph_rag-0.0.820/codebase_rag/mcp/tools.py +0 -1054
  73. code_graph_rag-0.0.820/codebase_rag/parsers/lua/utils.py +0 -96
  74. code_graph_rag-0.0.820/codebase_rag/tools/shell_command.py +0 -768
  75. code_graph_rag-0.0.820/codec/schema_pb2.py +0 -85
  76. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/LICENSE +0 -0
  77. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/PYPI_README.md +0 -0
  78. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/cgr/__init__.py +0 -0
  79. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  80. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/entry_points.txt +0 -0
  81. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/requires.txt +0 -0
  82. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/top_level.txt +0 -0
  83. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/__init__.py +0 -0
  84. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/__init__.py +0 -0
  85. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  86. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  87. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  88. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  89. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  90. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  91. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  92. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  93. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  94. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  95. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  96. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  97. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  98. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  99. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  100. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  101. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  102. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  103. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  104. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  105. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  106. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  107. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  108. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  109. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  110. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  111. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  112. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  113. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  114. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  115. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  116. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  117. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  118. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  119. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  120. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  121. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  122. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  123. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  124. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  125. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  126. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  127. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  128. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  129. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  130. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  131. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/ast_cache.py +0 -0
  132. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/capture.py +0 -0
  133. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/cgr_state.py +0 -0
  134. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/config.py +0 -0
  135. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/__init__.py +0 -0
  136. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_dart.py +0 -0
  137. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_java.py +0 -0
  138. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_js.py +0 -0
  139. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_nodes.py +0 -0
  140. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_php.py +0 -0
  141. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_rust.py +0 -0
  142. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_scala.py +0 -0
  143. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_sql.py +0 -0
  144. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/build.py +0 -0
  145. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/deadcode_roots.py +0 -0
  146. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/deps.py +0 -0
  147. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/fqn_specs.py +0 -0
  148. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/health.py +0 -0
  149. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/providers.py +0 -0
  150. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/stdlib_types.py +0 -0
  151. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/structural.py +0 -0
  152. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/trace.py +0 -0
  153. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/context_pruning.py +0 -0
  154. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/crash_correlation.py +0 -0
  155. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/decorators.py +0 -0
  156. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/docker-compose.yaml +0 -0
  157. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/duplicates.py +0 -0
  158. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editing/__init__.py +0 -0
  159. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editing/cli.py +0 -0
  160. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editing/transaction.py +0 -0
  161. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editor_links.py +0 -0
  162. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/embedder.py +0 -0
  163. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/exceptions.py +0 -0
  164. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/flow_verdict.py +0 -0
  165. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/graph_audit.py +0 -0
  166. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/graph_loader.py +0 -0
  167. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/language_spec.py +0 -0
  168. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/main.py +0 -0
  169. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/mcp/__init__.py +0 -0
  170. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/mcp/client.py +0 -0
  171. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/mcp/server.py +0 -0
  172. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/models.py +0 -0
  173. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parser_loader.py +0 -0
  174. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/__init__.py +0 -0
  175. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_fingerprint.py +0 -0
  176. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  177. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  178. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
  179. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  180. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  181. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  182. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  183. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  184. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_tier.py +0 -0
  185. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/build_lock.py +0 -0
  186. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  187. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  188. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/identity.py +0 -0
  189. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
  190. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  191. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  192. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  193. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/contract_linking.py +0 -0
  194. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/contracts.py +0 -0
  195. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/__init__.py +0 -0
  196. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
  197. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/type_inference.py +0 -0
  198. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  199. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  200. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/__init__.py +0 -0
  201. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/utils.py +0 -0
  202. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  203. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
  204. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  205. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  206. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  207. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/__init__.py +0 -0
  208. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/type_inference.py +0 -0
  209. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/utils.py +0 -0
  210. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/dispatch_registry.py +0 -0
  211. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/document_tier.py +0 -0
  212. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoint_routes.py +0 -0
  213. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoints.py +0 -0
  214. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/export_detection.py +0 -0
  215. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/flat_module.py +0 -0
  216. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  217. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/constants.py +0 -0
  218. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/processor.py +0 -0
  219. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontend_mode.py +0 -0
  220. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/__init__.py +0 -0
  221. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/cpp.py +0 -0
  222. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/csharp.py +0 -0
  223. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/go.py +0 -0
  224. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/java.py +0 -0
  225. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/protocol.py +0 -0
  226. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/python.py +0 -0
  227. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/registry.py +0 -0
  228. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/__init__.py +0 -0
  229. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/module_paths.py +0 -0
  230. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/utils.py +0 -0
  231. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  232. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  233. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
  234. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
  235. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
  236. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/__init__.py +0 -0
  237. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/base.py +0 -0
  238. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/cpp.py +0 -0
  239. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/java.py +0 -0
  240. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/lua.py +0 -0
  241. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/php.py +0 -0
  242. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/protocol.py +0 -0
  243. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/python.py +0 -0
  244. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/registry.py +0 -0
  245. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/rust.py +0 -0
  246. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/__init__.py +0 -0
  247. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/constants.py +0 -0
  248. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  249. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/extract.py +0 -0
  250. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/models.py +0 -0
  251. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/processor.py +0 -0
  252. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/registry.py +0 -0
  253. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/__init__.py +0 -0
  254. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/method_resolver.py +0 -0
  255. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  256. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  257. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  258. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_generated.py +0 -0
  259. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_lombok.py +0 -0
  260. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  261. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
  262. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/module_system.py +0 -0
  263. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
  264. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/utils.py +0 -0
  265. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/lua/__init__.py +0 -0
  266. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/lua/type_inference.py +0 -0
  267. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/__init__.py +0 -0
  268. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
  269. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
  270. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/type_inference.py +0 -0
  271. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
  272. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  273. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  274. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/python_source_roots.py +0 -0
  275. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/rpc_exposure.py +0 -0
  276. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/__init__.py +0 -0
  277. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/type_inference.py +0 -0
  278. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/utils.py +0 -0
  279. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/semantic_call_join.py +0 -0
  280. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/string_call.py +0 -0
  281. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/structure_processor.py +0 -0
  282. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/path_filters.py +0 -0
  283. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/prompts.py +0 -0
  284. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/providers/__init__.py +0 -0
  285. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/providers/base.py +0 -0
  286. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/providers/litellm.py +0 -0
  287. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/readme_sections.py +0 -0
  288. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/schema_builder.py +0 -0
  289. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/schema_parse.py +0 -0
  290. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/schemas.py +0 -0
  291. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/__init__.py +0 -0
  292. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/anthropic_token_counter.py +0 -0
  293. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/filtering.py +0 -0
  294. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/graph_diff.py +0 -0
  295. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/graph_service.py +0 -0
  296. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/llm.py +0 -0
  297. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/protobuf_service.py +0 -0
  298. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/provenance.py +0 -0
  299. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/resource_cleanup.py +0 -0
  300. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/usage_cost.py +0 -0
  301. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/sql_names.py +0 -0
  302. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/stack/__init__.py +0 -0
  303. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/stack/cli.py +0 -0
  304. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/stack/constants.py +0 -0
  305. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/stack/health.py +0 -0
  306. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/stack/manager.py +0 -0
  307. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/taint.py +0 -0
  308. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tool_errors.py +0 -0
  309. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/__init__.py +0 -0
  310. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/ast_grep_service.py +0 -0
  311. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/code_retrieval.py +0 -0
  312. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/codebase_query.py +0 -0
  313. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/directory_lister.py +0 -0
  314. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/duplicate_detection.py +0 -0
  315. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/file_editor.py +0 -0
  316. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/file_reader.py +0 -0
  317. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/file_writer.py +0 -0
  318. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/graph_rerank.py +0 -0
  319. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/health_checker.py +0 -0
  320. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/language.py +0 -0
  321. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/research.py +0 -0
  322. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/semantic_search.py +0 -0
  323. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/structural_search.py +0 -0
  324. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/web_search.py +0 -0
  325. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/__init__.py +0 -0
  326. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/cli.py +0 -0
  327. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/cpuprofile.py +0 -0
  328. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/ebpf_pprof.py +0 -0
  329. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/instrumented.py +0 -0
  330. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/pprof.py +0 -0
  331. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/pytest_plugin.py +0 -0
  332. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/records.py +0 -0
  333. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/resolution.py +0 -0
  334. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/rust_pprof.py +0 -0
  335. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/sourcemap.py +0 -0
  336. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/tracer.py +0 -0
  337. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/xdebug.py +0 -0
  338. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/unixcoder.py +0 -0
  339. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/__init__.py +0 -0
  340. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/dependencies.py +0 -0
  341. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/fqn_resolver.py +0 -0
  342. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/rich_markdown.py +0 -0
  343. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/source_extraction.py +0 -0
  344. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/token_utils.py +0 -0
  345. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/vector_store.py +0 -0
  346. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/workspaces/__init__.py +0 -0
  347. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/workspaces/cli.py +0 -0
  348. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/workspaces/constants.py +0 -0
  349. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/workspaces/models.py +0 -0
  350. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/workspaces/storage.py +0 -0
  351. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codec/__init__.py +0 -0
  352. {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codec/schema_pb2.pyi +0 -0
  353. {code_graph_rag-0.0.820 → 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.820
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,9 +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
- - **Graph Indexing**: The name property is now indexed for improved graph read-path lookups. SQL routines are also indexed to resolve calls that name their target in a string.
55
- - **Duplicate Code Detection**: An AST-based duplicate code detection system has been introduced, alongside fixes for duplicate detection across multiple repositories.
56
- - **Agentic QA**: A new agentic QA benchmark harness and indexing-time benchmark have been added.
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.
57
60
  <!-- /SECTION:latest_news -->
58
61
 
59
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.820
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,
@@ -406,6 +407,7 @@ def _delete_hash_cache(repo_path: Path) -> None:
406
407
  cache_path.unlink(missing_ok=True)
407
408
  (repo_path / cs.DIR_MTIMES_FILENAME).unlink(missing_ok=True)
408
409
  (repo_path / cs.PARSER_FINGERPRINT_FILENAME).unlink(missing_ok=True)
410
+ (repo_path / cs.EXCLUSION_STATE_FILENAME).unlink(missing_ok=True)
409
411
 
410
412
 
411
413
  def _resolve_and_validate_repo(repo_path: str | None) -> Path:
@@ -1089,6 +1091,125 @@ def edits_command(ctx: typer.Context) -> None:
1089
1091
  _run_delegated_group(edits_cli, ctx)
1090
1092
 
1091
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
+
1092
1213
  @app.command(
1093
1214
  name=ch.CLICommandName.HELP,
1094
1215
  help=ch.CMD_HELP,
@@ -1313,6 +1434,7 @@ def _dead_code_config(
1313
1434
  include_classes: bool,
1314
1435
  entry_points: list[str],
1315
1436
  decorator_roots: list[str],
1437
+ min_resolution: cs.EdgeResolution | None = None,
1316
1438
  ) -> DeadCodeConfig:
1317
1439
  # test_patterns is always set: included tests become roots; excluded, it
1318
1440
  # filters test modules out of module-load roots so test-only code stays dead.
@@ -1325,6 +1447,7 @@ def _dead_code_config(
1325
1447
  ),
1326
1448
  entry_points=tuple(entry_points),
1327
1449
  test_patterns=tuple(cs.TEST_PATH_PATTERNS),
1450
+ min_resolution=str(min_resolution) if min_resolution is not None else None,
1328
1451
  )
1329
1452
 
1330
1453
 
@@ -1472,6 +1595,9 @@ def dead_code(
1472
1595
  fail_on_found: bool = typer.Option(
1473
1596
  False, "--fail-on-found", help=ch.HELP_DEADCODE_FAIL_ON_FOUND
1474
1597
  ),
1598
+ min_resolution: cs.EdgeResolution | None = typer.Option(
1599
+ None, "--min-resolution", help=ch.HELP_DEADCODE_MIN_RESOLUTION
1600
+ ),
1475
1601
  ) -> None:
1476
1602
  from .dead_code import collect_dead_code_with_coverage
1477
1603
 
@@ -1493,7 +1619,11 @@ def dead_code(
1493
1619
  ingestor,
1494
1620
  resolved,
1495
1621
  _dead_code_config(
1496
- include_tests, include_classes, entry_point, decorator_root
1622
+ include_tests,
1623
+ include_classes,
1624
+ entry_point,
1625
+ decorator_root,
1626
+ min_resolution,
1497
1627
  ),
1498
1628
  )
1499
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})"
@@ -494,6 +516,23 @@ PATCH_NOT_AN_IDENTIFIER = "{path}:{line}:{col} is not a whole identifier"
494
516
  PATCH_PARSE_FAILED = "{path} no longer parses after the patch"
495
517
  PATCH_FORMAT_DRIFT = "{path} applied, but {tool} would reformat it"
496
518
  PATCH_OK = "{path}: {count} edit(s) applied"
519
+ # `parses is None` means no grammar was available, so the patch was checked
520
+ # by nothing. Reported apart from PATCH_OK because reporting both as OK is
521
+ # what turned an unverifiable write into an apparently verified one; the
522
+ # write itself is still allowed, since refusing would make edits a silent
523
+ # no-op on a base install where Rust and Go grammars are absent (#1580).
524
+ # The one wording for "checked by nothing", shared so the two messages that
525
+ # carry it cannot drift apart and a caller can match on either.
526
+ PATCH_UNVERIFIED_FRAGMENT = "unverified (no parser for it)"
527
+ PATCH_UNVERIFIED = "{path}: {count} edit(s) applied, " + PATCH_UNVERIFIED_FRAGMENT
528
+ # Both facts, because either alone is misleading here: drift on its own reads
529
+ # as "parsed fine, just reformat it", and a language with no grammar is
530
+ # exactly the case that also has a formatter installed (Rust, Go).
531
+ PATCH_UNVERIFIED_DRIFT = (
532
+ "{path}: {count} edit(s) applied, "
533
+ + PATCH_UNVERIFIED_FRAGMENT
534
+ + "; {tool} would also reformat it"
535
+ )
497
536
  # Edit transactions (issue #1528).
498
537
  EDIT_NOT_A_FILE = "Staged path is not a regular file: {path}"
499
538
  EDIT_RESERVED_PATH = "Path is cgr state, not part of the tree: {path}"
@@ -511,6 +550,33 @@ EDIT_UNDO_DONE = "Undid transaction {tx} ({count} file(s))"
511
550
  EDIT_UNDO_STOPPED = "Stopped at transaction {tx}: {reason}"
512
551
  EDIT_SHOW_NONE = "No recorded edit transactions"
513
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"
514
580
  MSG_SURGICAL_FAILED = (
515
581
  "Failed to apply surgical replacement in {path}. "
516
582
  "Target code not found or patches failed."
@@ -520,6 +586,7 @@ GREP_SUGGESTION = " Use 'rg' instead of 'grep' for text searching."
520
586
 
521
587
  QUERY_NOT_AVAILABLE = "N/A"
522
588
  DICT_KEY_RESULTS = "results"
589
+ DICT_KEY_ERROR = "error"
523
590
  DICT_KEY_QUERY_USED = "query_used"
524
591
  TIKTOKEN_ENCODING = "cl100k_base"
525
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,12 +147,25 @@ 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"
129
160
  DIR_MTIMES_FILENAME = ".cgr-dir-mtimes.json"
130
161
  PARSER_FINGERPRINT_FILENAME = ".cgr-parser-fingerprint"
131
162
  DELOMBOK_STATE_FILENAME = ".cgr-delombok-state.json"
163
+ # The exclusion set the last run indexed under, covering both the excludes and
164
+ # the unignores (which come from `!` lines in .cgrignore/.gitignore and from
165
+ # interactive setup; there is no --unignore flag). Nothing on disk changes when
166
+ # only the CLI --exclude flags do, so without this the sync check cannot tell
167
+ # that the eligible set moved (issue #1606).
168
+ EXCLUSION_STATE_FILENAME = ".cgr-exclusion-state.json"
132
169
  # Recorded edit transactions for `cgr edits show|undo` (issue #1528).
133
170
  EDIT_HISTORY_FILENAME = ".cgr-edit-history.json"
134
171
  EDIT_LOCK_FILENAME = ".cgr-edit-lock"
@@ -144,6 +181,7 @@ CGR_STATE_FILENAMES: frozenset[str] = frozenset(
144
181
  DIR_MTIMES_FILENAME,
145
182
  PARSER_FINGERPRINT_FILENAME,
146
183
  DELOMBOK_STATE_FILENAME,
184
+ EXCLUSION_STATE_FILENAME,
147
185
  EDIT_HISTORY_FILENAME,
148
186
  EDIT_LOCK_FILENAME,
149
187
  }
@@ -173,6 +211,12 @@ PARSER_FINGERPRINT_SOURCE_FILES: tuple[str, ...] = (
173
211
  "ast_cache.py",
174
212
  "language_spec.py",
175
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",
176
220
  )
177
221
  PY_SOURCE_GLOB = "*.py"
178
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"