code-graph-rag 0.5.0__tar.gz → 0.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. {code_graph_rag-0.5.0/code_graph_rag.egg-info → code_graph_rag-0.6.0}/PKG-INFO +13 -10
  2. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/PYPI_README.md +4 -4
  3. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/README.md +5 -4
  4. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0/code_graph_rag.egg-info}/PKG-INFO +13 -10
  5. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/SOURCES.txt +2 -0
  6. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/requires.txt +4 -6
  7. code_graph_rag-0.6.0/codebase_rag/__init__.py +8 -0
  8. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/cli.py +36 -14
  9. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/cli_help.py +2 -1
  10. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_csharp.py +50 -0
  11. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_python.py +7 -0
  12. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/build.py +0 -1
  13. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/core.py +5 -0
  14. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/embedded_graph.py +6 -0
  15. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/dead_code.py +25 -0
  16. code_graph_rag-0.6.0/codebase_rag/embedded_graph/extension.py +32 -0
  17. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/exceptions.py +36 -0
  18. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/call_processor.py +23 -2
  19. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/call_resolver.py +24 -1
  20. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/type_inference.py +228 -12
  21. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/utils.py +196 -19
  22. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/frontend.py +5 -5
  23. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dependency_parser.py +4 -9
  24. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/flow_access/processor.py +576 -67
  25. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/import_processor.py +44 -19
  26. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/readme_sections.py +5 -2
  27. code_graph_rag-0.6.0/codebase_rag/utils/safe_xml.py +50 -0
  28. code_graph_rag-0.6.0/codebase_rag/utils/toml_writer.py +23 -0
  29. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/watch.py +5 -2
  30. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/workspaces/storage.py +2 -3
  31. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/pyproject.toml +24 -10
  32. code_graph_rag-0.5.0/codebase_rag/__init__.py +0 -3
  33. code_graph_rag-0.5.0/codebase_rag/embedded_graph/extension.py +0 -22
  34. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/LICENSE +0 -0
  35. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/cgr/__init__.py +0 -0
  36. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  37. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/entry_points.txt +0 -0
  38. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/top_level.txt +0 -0
  39. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/_cli_env.py +0 -0
  40. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/__init__.py +0 -0
  41. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  42. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  43. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  44. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  45. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  46. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  47. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  48. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  49. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  50. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  51. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  52. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  53. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  54. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  55. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  56. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  57. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  58. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  59. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  60. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  61. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  62. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  63. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  64. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  65. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  66. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  67. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  68. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  69. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  70. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  71. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  72. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  73. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  74. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  75. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  76. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  77. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  78. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  79. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  80. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  81. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  82. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  83. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  84. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  85. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  86. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  87. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/ast_cache.py +0 -0
  88. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/capture.py +0 -0
  89. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/check_isolation.py +0 -0
  90. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/checkout_state.py +0 -0
  91. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/cli_runtime.py +0 -0
  92. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/config.py +0 -0
  93. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/console_marks.py +0 -0
  94. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/__init__.py +0 -0
  95. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_cpp.py +0 -0
  96. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_dart.py +0 -0
  97. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_go.py +0 -0
  98. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_java.py +0 -0
  99. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_js.py +0 -0
  100. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_julia.py +0 -0
  101. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_lua.py +0 -0
  102. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_nodes.py +0 -0
  103. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_php.py +0 -0
  104. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_rust.py +0 -0
  105. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_scala.py +0 -0
  106. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_sql.py +0 -0
  107. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/cli.py +0 -0
  108. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/deadcode_roots.py +0 -0
  109. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/deps.py +0 -0
  110. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/duplicates.py +0 -0
  111. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/fqn_specs.py +0 -0
  112. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/graph.py +0 -0
  113. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/health.py +0 -0
  114. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/interface.py +0 -0
  115. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/lang_tooling.py +0 -0
  116. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/languages.py +0 -0
  117. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/mcp.py +0 -0
  118. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/notebook.py +0 -0
  119. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/port.py +0 -0
  120. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/providers.py +0 -0
  121. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/security.py +0 -0
  122. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/sqlite_vectors.py +0 -0
  123. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/stdlib_types.py +0 -0
  124. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/structural.py +0 -0
  125. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/trace.py +0 -0
  126. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/context_pruning.py +0 -0
  127. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/context_slice.py +0 -0
  128. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/crash_correlation.py +0 -0
  129. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/cypher_queries.py +0 -0
  130. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/decorators.py +0 -0
  131. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/docker-compose.yaml +0 -0
  132. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/duplicates.py +0 -0
  133. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/__init__.py +0 -0
  134. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/cli.py +0 -0
  135. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/contract.py +0 -0
  136. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/import_paths.py +0 -0
  137. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/imports.py +0 -0
  138. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/occurrences.py +0 -0
  139. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/patcher.py +0 -0
  140. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/rename.py +0 -0
  141. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature.py +0 -0
  142. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_bind.py +0 -0
  143. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_contract.py +0 -0
  144. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_js.py +0 -0
  145. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_js_bind.py +0 -0
  146. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_spec.py +0 -0
  147. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/sites.py +0 -0
  148. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/transaction.py +0 -0
  149. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editor_links.py +0 -0
  150. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/__init__.py +0 -0
  151. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/compiler.py +0 -0
  152. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/connection.py +0 -0
  153. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/cypher_ast.py +0 -0
  154. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/executor.py +0 -0
  155. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/expressions.py +0 -0
  156. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/functions.py +0 -0
  157. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/lexer.py +0 -0
  158. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/limits.py +0 -0
  159. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/native.py +0 -0
  160. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/parser.py +0 -0
  161. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/procedures.py +0 -0
  162. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/sql.py +0 -0
  163. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/store.py +0 -0
  164. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/types.py +0 -0
  165. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedder.py +0 -0
  166. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/flow_verdict.py +0 -0
  167. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/function_registry.py +0 -0
  168. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/gloss.py +0 -0
  169. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/gloss_anchor.py +0 -0
  170. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/gloss_repair.py +0 -0
  171. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_audit.py +0 -0
  172. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_cli.py +0 -0
  173. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_dialects.py +0 -0
  174. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_loader.py +0 -0
  175. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_query.py +0 -0
  176. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_updater.py +0 -0
  177. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/instructions_trust.py +0 -0
  178. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/interface_skip.py +0 -0
  179. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/language_spec.py +0 -0
  180. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/logs.py +0 -0
  181. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/main.py +0 -0
  182. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mcp/__init__.py +0 -0
  183. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mcp/client.py +0 -0
  184. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mcp/server.py +0 -0
  185. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mcp/tools.py +0 -0
  186. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mgclient_compat.py +0 -0
  187. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mgclient_probe.py +0 -0
  188. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/models.py +0 -0
  189. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parser_fingerprint.py +0 -0
  190. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parser_loader.py +0 -0
  191. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/__init__.py +0 -0
  192. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/anchor_hash.py +0 -0
  193. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_fingerprint.py +0 -0
  194. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  195. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  196. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
  197. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  198. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  199. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  200. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  201. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  202. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_scope.py +0 -0
  203. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_tier.py +0 -0
  204. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/build_lock.py +0 -0
  205. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  206. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/base_targets.py +0 -0
  207. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  208. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/identity.py +0 -0
  209. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
  210. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/mixin.py +0 -0
  211. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  212. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/parent_extraction.py +0 -0
  213. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  214. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  215. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/contract_linking.py +0 -0
  216. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/contracts.py +0 -0
  217. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/__init__.py +0 -0
  218. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/class_macro.py +0 -0
  219. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/function_values.py +0 -0
  220. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/local_types.py +0 -0
  221. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/overloads.py +0 -0
  222. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
  223. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/trailing_annotation.py +0 -0
  224. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/type_inference.py +0 -0
  225. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/utils.py +0 -0
  226. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  227. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  228. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/frontend.py +0 -0
  229. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
  230. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/__init__.py +0 -0
  231. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/arity.py +0 -0
  232. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  233. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  234. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  235. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  236. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/__init__.py +0 -0
  237. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/package_paths.py +0 -0
  238. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/type_inference.py +0 -0
  239. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/utils.py +0 -0
  240. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/definition_docstring.py +0 -0
  241. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/definition_processor.py +0 -0
  242. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dispatch_registry.py +0 -0
  243. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/document_tier.py +0 -0
  244. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
  245. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/endpoint_routes.py +0 -0
  246. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/endpoints.py +0 -0
  247. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/enum_variants.py +0 -0
  248. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/export_detection.py +0 -0
  249. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/factory.py +0 -0
  250. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/field_nodes.py +0 -0
  251. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/flat_module.py +0 -0
  252. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  253. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/flow_access/constants.py +0 -0
  254. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontend_mode.py +0 -0
  255. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/__init__.py +0 -0
  256. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/cpp.py +0 -0
  257. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/csharp.py +0 -0
  258. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/go.py +0 -0
  259. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/java.py +0 -0
  260. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/protocol.py +0 -0
  261. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/python.py +0 -0
  262. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/registry.py +0 -0
  263. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/function_ingest.py +0 -0
  264. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/__init__.py +0 -0
  265. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/builds.py +0 -0
  266. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/interface_ingest.py +0 -0
  267. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/interfaces.py +0 -0
  268. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/link_state.py +0 -0
  269. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/module_paths.py +0 -0
  270. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/type_inference.py +0 -0
  271. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/utils.py +0 -0
  272. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  273. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  274. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
  275. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
  276. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
  277. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/__init__.py +0 -0
  278. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/base.py +0 -0
  279. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/cpp.py +0 -0
  280. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/java.py +0 -0
  281. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/js_ts.py +0 -0
  282. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/julia.py +0 -0
  283. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/lua.py +0 -0
  284. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/php.py +0 -0
  285. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/protocol.py +0 -0
  286. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/python.py +0 -0
  287. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/registry.py +0 -0
  288. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/rust.py +0 -0
  289. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/interface_fingerprint.py +0 -0
  290. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/__init__.py +0 -0
  291. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/constants.py +0 -0
  292. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  293. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/extract.py +0 -0
  294. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/models.py +0 -0
  295. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/processor.py +0 -0
  296. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/registry.py +0 -0
  297. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/resource_names.py +0 -0
  298. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/url_folding.py +0 -0
  299. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/__init__.py +0 -0
  300. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/method_resolver.py +0 -0
  301. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/type_inference.py +0 -0
  302. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/type_resolver.py +0 -0
  303. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/utils.py +0 -0
  304. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/variable_analyzer.py +0 -0
  305. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  306. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  307. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  308. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_generated.py +0 -0
  309. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_lombok.py +0 -0
  310. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  311. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/commonjs_exports.py +0 -0
  312. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/ingest.py +0 -0
  313. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
  314. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/module_system.py +0 -0
  315. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/overloads.py +0 -0
  316. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/reexports.py +0 -0
  317. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
  318. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/utils.py +0 -0
  319. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/julia/__init__.py +0 -0
  320. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/julia/utils.py +0 -0
  321. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/lua/__init__.py +0 -0
  322. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/lua/type_inference.py +0 -0
  323. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/lua/utils.py +0 -0
  324. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/module_docstring.py +0 -0
  325. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/native_trees.py +0 -0
  326. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/notebook.py +0 -0
  327. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/parameter_nodes.py +0 -0
  328. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/__init__.py +0 -0
  329. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/class_names.py +0 -0
  330. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/namespaces.py +0 -0
  331. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/utils.py +0 -0
  332. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/positional_params.py +0 -0
  333. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/__init__.py +0 -0
  334. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
  335. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/class_aliases.py +0 -0
  336. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/definition_index.py +0 -0
  337. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
  338. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/flow_bindings.py +0 -0
  339. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/forward_refs.py +0 -0
  340. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/overloads.py +0 -0
  341. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/patterns.py +0 -0
  342. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/receiver_rebinding.py +0 -0
  343. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/type_inference.py +0 -0
  344. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/utils.py +0 -0
  345. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
  346. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/with_analyzer.py +0 -0
  347. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  348. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  349. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/python_source_roots.py +0 -0
  350. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/rpc_exposure.py +0 -0
  351. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/__init__.py +0 -0
  352. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/cargo_semver.py +0 -0
  353. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/type_inference.py +0 -0
  354. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/utils.py +0 -0
  355. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/scala/__init__.py +0 -0
  356. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/scala/utils.py +0 -0
  357. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/semantic_call_join.py +0 -0
  358. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/sql_ddl.py +0 -0
  359. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/sql_recovery.py +0 -0
  360. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/stdlib_extractor.py +0 -0
  361. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/string_call.py +0 -0
  362. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/structure_processor.py +0 -0
  363. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/type_facts.py +0 -0
  364. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/type_inference.py +0 -0
  365. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/utils.py +0 -0
  366. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/path_filters.py +0 -0
  367. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/port_cli.py +0 -0
  368. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/port_parity.py +0 -0
  369. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/project_selection.py +0 -0
  370. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/prompts.py +0 -0
  371. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/providers/__init__.py +0 -0
  372. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/providers/base.py +0 -0
  373. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/providers/litellm.py +0 -0
  374. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/c_sharp.scm +0 -0
  375. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/dart.scm +0 -0
  376. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/java.scm +0 -0
  377. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/javascript.scm +0 -0
  378. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/julia.scm +0 -0
  379. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/php.scm +0 -0
  380. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/python.scm +0 -0
  381. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/rust.scm +0 -0
  382. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/typescript.scm +0 -0
  383. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/schema_builder.py +0 -0
  384. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/schema_parse.py +0 -0
  385. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/schemas.py +0 -0
  386. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/sensitive_paths.py +0 -0
  387. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/__init__.py +0 -0
  388. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/anthropic_token_counter.py +0 -0
  389. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/cypher_guard.py +0 -0
  390. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/filtering.py +0 -0
  391. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/gloss_cleanup.py +0 -0
  392. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/graph_diff.py +0 -0
  393. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/graph_service.py +0 -0
  394. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/llm.py +0 -0
  395. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/neo4j_driver.py +0 -0
  396. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/protobuf_service.py +0 -0
  397. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/provenance.py +0 -0
  398. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/resource_cleanup.py +0 -0
  399. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/usage_cost.py +0 -0
  400. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/source_checkout.py +0 -0
  401. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/sql_names.py +0 -0
  402. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/sqlite_vectors.py +0 -0
  403. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/stack/__init__.py +0 -0
  404. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/stack/cli.py +0 -0
  405. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/stack/constants.py +0 -0
  406. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/stack/health.py +0 -0
  407. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/stack/manager.py +0 -0
  408. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/structural_check.py +0 -0
  409. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/structural_delta.py +0 -0
  410. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/sync_guard.py +0 -0
  411. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/sync_lock.py +0 -0
  412. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/taint.py +0 -0
  413. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tool_errors.py +0 -0
  414. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/__init__.py +0 -0
  415. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/ast_grep_service.py +0 -0
  416. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/code_retrieval.py +0 -0
  417. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/codebase_query.py +0 -0
  418. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/directory_lister.py +0 -0
  419. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/duplicate_detection.py +0 -0
  420. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/file_editor.py +0 -0
  421. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/file_reader.py +0 -0
  422. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/file_writer.py +0 -0
  423. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/graph_refresh.py +0 -0
  424. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/graph_rerank.py +0 -0
  425. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/health_checker.py +0 -0
  426. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/language.py +0 -0
  427. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/language_catalog.py +0 -0
  428. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/research.py +0 -0
  429. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/semantic_search.py +0 -0
  430. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/shell_command.py +0 -0
  431. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/structural_editor.py +0 -0
  432. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/structural_search.py +0 -0
  433. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/tool_descriptions.py +0 -0
  434. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/web_search.py +0 -0
  435. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/__init__.py +0 -0
  436. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/carry.py +0 -0
  437. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/cli.py +0 -0
  438. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/cpuprofile.py +0 -0
  439. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/dispatch_site.py +0 -0
  440. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/ebpf_pprof.py +0 -0
  441. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/ingest.py +0 -0
  442. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/instrumented.py +0 -0
  443. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/pprof.py +0 -0
  444. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/pytest_plugin.py +0 -0
  445. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/records.py +0 -0
  446. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/resolution.py +0 -0
  447. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/rust_pprof.py +0 -0
  448. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/sourcemap.py +0 -0
  449. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/speedscope.py +0 -0
  450. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/tracer.py +0 -0
  451. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/xdebug.py +0 -0
  452. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tree_sitter_point.py +0 -0
  453. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/types_defs.py +0 -0
  454. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/unixcoder.py +0 -0
  455. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/__init__.py +0 -0
  456. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/cpp_signatures.py +0 -0
  457. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/dependencies.py +0 -0
  458. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/endpoints.py +0 -0
  459. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/fqn_resolver.py +0 -0
  460. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/interruptible_thread.py +0 -0
  461. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/json_io.py +0 -0
  462. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/path_utils.py +0 -0
  463. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/process_owner.py +0 -0
  464. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/qn_markers.py +0 -0
  465. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/rich_markdown.py +0 -0
  466. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/source_encoding.py +0 -0
  467. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/source_extraction.py +0 -0
  468. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/terminal_console.py +0 -0
  469. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/token_utils.py +0 -0
  470. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/vector_store.py +0 -0
  471. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/workspaces/__init__.py +0 -0
  472. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/workspaces/cli.py +0 -0
  473. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/workspaces/constants.py +0 -0
  474. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/workspaces/models.py +0 -0
  475. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codec/__init__.py +0 -0
  476. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codec/schema.proto +0 -0
  477. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codec/schema_pb2.py +0 -0
  478. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codec/schema_pb2.pyi +0 -0
  479. {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/setup.cfg +0 -0
@@ -1,17 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.5.0
3
+ Version: 0.6.0
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
7
7
  Classifier: Development Status :: 4 - Beta
8
8
  Classifier: Environment :: Console
9
9
  Classifier: Intended Audience :: Developers
10
- Classifier: Operating System :: OS Independent
10
+ Classifier: Operating System :: MacOS
11
+ Classifier: Operating System :: Microsoft :: Windows
12
+ Classifier: Operating System :: POSIX :: Linux
11
13
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
12
14
  Classifier: Topic :: Software Development :: Code Generators
13
15
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
14
16
  Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: Implementation :: CPython
15
18
  Classifier: Programming Language :: Python :: 3.12
16
19
  Classifier: Programming Language :: Python :: 3.13
17
20
  Classifier: Programming Language :: Python :: 3.14
@@ -25,7 +28,6 @@ Requires-Dist: pydantic-ai-slim[anthropic,google,openai]>=2.0.0
25
28
  Requires-Dist: pydantic-settings>=2.12.0
26
29
  Requires-Dist: python-dotenv>=1.2.1
27
30
  Requires-Dist: tiktoken>=0.12.0
28
- Requires-Dist: tomli-w>=1.2.0
29
31
  Requires-Dist: tree-sitter-python>=0.25.0
30
32
  Requires-Dist: tree-sitter==0.26.0
31
33
  Requires-Dist: watchdog>=6.0.0
@@ -35,13 +37,13 @@ Requires-Dist: prompt-toolkit>=3.0.52
35
37
  Requires-Dist: diff-match-patch>=20241021
36
38
  Requires-Dist: click>=8.3.3
37
39
  Requires-Dist: protobuf>=6.33.5
38
- Requires-Dist: defusedxml>=0.7.1
39
- Requires-Dist: huggingface-hub[hf-xet]>=1.7.2
40
+ Requires-Dist: pyyaml>=6.0
40
41
  Requires-Dist: pathspec>=1.0.4
41
42
  Requires-Dist: pygments>=2.20.0
43
+ Requires-Dist: httpx>=0.28.1
42
44
  Requires-Dist: certifi>=2026.10.23
43
45
  Requires-Dist: regex>=2024.11.6
44
- Requires-Dist: cgr-graph-rs<0.2,>=0.1.5; platform_python_implementation == "CPython" and ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64"))
46
+ Requires-Dist: cgr-graph-rs<0.2,>=0.1.6
45
47
  Provides-Extra: test
46
48
  Requires-Dist: jedi>=0.19; extra == "test"
47
49
  Requires-Dist: pytest>=8.4.1; extra == "test"
@@ -84,6 +86,7 @@ Requires-Dist: grpcio>=1.84.1; extra == "semantic"
84
86
  Requires-Dist: sqlite-vec>=0.1.9; ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64")) and extra == "semantic"
85
87
  Requires-Dist: torch>=2.6.0; extra == "semantic"
86
88
  Requires-Dist: transformers>=5.0.0; extra == "semantic"
89
+ Requires-Dist: huggingface-hub[hf-xet]>=1.7.2; extra == "semantic"
87
90
  Provides-Extra: milvus
88
91
  Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
89
92
  Requires-Dist: grpcio>=1.84.1; extra == "milvus"
@@ -189,10 +192,10 @@ The knowledge graph is an embedded SQLite file (`~/.cgr/graph.sqlite`), so there
189
192
  is no database server to run. Memgraph and Neo4j remain available as opt-in
190
193
  backends; see [Graph Backends](https://docs.code-graph-rag.com/architecture/embedded-graph/).
191
194
 
192
- The wheel is pure Python (`py3-none-any`), so it installs on any platform with
193
- Python 3.12 or newer. On Linux (x86_64, aarch64), macOS and Windows x64 it also
194
- pulls in `cgr-graph-rs`, a native extension that speeds up the embedded graph;
195
- elsewhere the same engine runs in pure Python.
195
+ The wheel is pure Python (`py3-none-any`), and it requires `cgr-graph-rs`, the
196
+ native extension that does the work behind it, which ships for CPython 3.12 or
197
+ newer on Linux (x86_64, aarch64), macOS and Windows x64. cgr does not run
198
+ without it, so it installs on those platforms only.
196
199
 
197
200
  Some distributions ship an older interpreter (Debian Bookworm, and so Raspberry
198
201
  Pi OS Bookworm, ships 3.11), which also explains the failed piwheels Bookworm
@@ -91,10 +91,10 @@ The knowledge graph is an embedded SQLite file (`~/.cgr/graph.sqlite`), so there
91
91
  is no database server to run. Memgraph and Neo4j remain available as opt-in
92
92
  backends; see [Graph Backends](https://docs.code-graph-rag.com/architecture/embedded-graph/).
93
93
 
94
- The wheel is pure Python (`py3-none-any`), so it installs on any platform with
95
- Python 3.12 or newer. On Linux (x86_64, aarch64), macOS and Windows x64 it also
96
- pulls in `cgr-graph-rs`, a native extension that speeds up the embedded graph;
97
- elsewhere the same engine runs in pure Python.
94
+ The wheel is pure Python (`py3-none-any`), and it requires `cgr-graph-rs`, the
95
+ native extension that does the work behind it, which ships for CPython 3.12 or
96
+ newer on Linux (x86_64, aarch64), macOS and Windows x64. cgr does not run
97
+ without it, so it installs on those platforms only.
98
98
 
99
99
  Some distributions ship an older interpreter (Debian Bookworm, and so Raspberry
100
100
  Pi OS Bookworm, ships 3.11), which also explains the failed piwheels Bookworm
@@ -61,9 +61,10 @@ Code-Graph-RAG parses a multi-language codebase with Tree-sitter, sharpened by c
61
61
  ## Latest News 🔥
62
62
 
63
63
  <!-- SECTION:latest_news -->
64
- - **Rust Upgrade**: Updated Rust to version 1.99.1-slim-trixie.
65
- - **Signature Functionality**: Added support for reading and writing JavaScript headers for change signatures, including the ability to change the signature of JavaScript functions or methods.
66
- - **macOS Compatibility**: The build now leaves macOS-14 support.
64
+ - **Continuous Integration Improvements**: Enhanced release cadence tracking and ensured accurate green status for deferred releases.
65
+ - **Code Quality & Clarity**: Resolved several code style and correctness issues including foreach loop variable typing and Python method receiver handling.
66
+ - **Build Process Refinement**: Reduced the default install package count and improved makefile functionality for host/port watching.
67
+ - **Feature Control**: Prevented the use of `--no-endpoint-roots` when endpoint data is absent.
67
68
  <!-- /SECTION:latest_news -->
68
69
 
69
70
  See [NEWS.md](NEWS.md) for the full history.
@@ -144,7 +145,7 @@ To upgrade an existing install, run `uv tool upgrade code-graph-rag` (with pipx,
144
145
  You also need Python 3.12+ and `ripgrep`. The graph lives in an embedded SQLite file by default, so there is no database server to run: no Docker and no `cmake`. Memgraph and Neo4j remain available as opt-in backends ([Graph Backends](docs/architecture/embedded-graph.md)). Full prerequisites, source installs, and environment setup are in the [Installation](docs/getting-started/installation.md) guide.
145
146
 
146
147
  > [!NOTE]
147
- > The wheel is pure Python (`py3-none-any`), so it installs on any platform with Python 3.12 or newer. Older system interpreters (Debian Bookworm ships 3.11) need the interpreter pinned explicitly; see [Installation](docs/getting-started/installation.md#older-system-interpreters) for the commands.
148
+ > cgr requires its native extension, `cgr-graph-rs`, which ships for CPython 3.12 or newer on Linux (x86_64, aarch64), macOS and Windows x64, so it installs on those platforms only. Older system interpreters (Debian Bookworm ships 3.11) need the interpreter pinned explicitly; see [Installation](docs/getting-started/installation.md#older-system-interpreters) for the commands.
148
149
 
149
150
  ## Quick Start
150
151
 
@@ -1,17 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.5.0
3
+ Version: 0.6.0
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
7
7
  Classifier: Development Status :: 4 - Beta
8
8
  Classifier: Environment :: Console
9
9
  Classifier: Intended Audience :: Developers
10
- Classifier: Operating System :: OS Independent
10
+ Classifier: Operating System :: MacOS
11
+ Classifier: Operating System :: Microsoft :: Windows
12
+ Classifier: Operating System :: POSIX :: Linux
11
13
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
12
14
  Classifier: Topic :: Software Development :: Code Generators
13
15
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
14
16
  Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: Implementation :: CPython
15
18
  Classifier: Programming Language :: Python :: 3.12
16
19
  Classifier: Programming Language :: Python :: 3.13
17
20
  Classifier: Programming Language :: Python :: 3.14
@@ -25,7 +28,6 @@ Requires-Dist: pydantic-ai-slim[anthropic,google,openai]>=2.0.0
25
28
  Requires-Dist: pydantic-settings>=2.12.0
26
29
  Requires-Dist: python-dotenv>=1.2.1
27
30
  Requires-Dist: tiktoken>=0.12.0
28
- Requires-Dist: tomli-w>=1.2.0
29
31
  Requires-Dist: tree-sitter-python>=0.25.0
30
32
  Requires-Dist: tree-sitter==0.26.0
31
33
  Requires-Dist: watchdog>=6.0.0
@@ -35,13 +37,13 @@ Requires-Dist: prompt-toolkit>=3.0.52
35
37
  Requires-Dist: diff-match-patch>=20241021
36
38
  Requires-Dist: click>=8.3.3
37
39
  Requires-Dist: protobuf>=6.33.5
38
- Requires-Dist: defusedxml>=0.7.1
39
- Requires-Dist: huggingface-hub[hf-xet]>=1.7.2
40
+ Requires-Dist: pyyaml>=6.0
40
41
  Requires-Dist: pathspec>=1.0.4
41
42
  Requires-Dist: pygments>=2.20.0
43
+ Requires-Dist: httpx>=0.28.1
42
44
  Requires-Dist: certifi>=2026.10.23
43
45
  Requires-Dist: regex>=2024.11.6
44
- Requires-Dist: cgr-graph-rs<0.2,>=0.1.5; platform_python_implementation == "CPython" and ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64"))
46
+ Requires-Dist: cgr-graph-rs<0.2,>=0.1.6
45
47
  Provides-Extra: test
46
48
  Requires-Dist: jedi>=0.19; extra == "test"
47
49
  Requires-Dist: pytest>=8.4.1; extra == "test"
@@ -84,6 +86,7 @@ Requires-Dist: grpcio>=1.84.1; extra == "semantic"
84
86
  Requires-Dist: sqlite-vec>=0.1.9; ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64")) and extra == "semantic"
85
87
  Requires-Dist: torch>=2.6.0; extra == "semantic"
86
88
  Requires-Dist: transformers>=5.0.0; extra == "semantic"
89
+ Requires-Dist: huggingface-hub[hf-xet]>=1.7.2; extra == "semantic"
87
90
  Provides-Extra: milvus
88
91
  Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
89
92
  Requires-Dist: grpcio>=1.84.1; extra == "milvus"
@@ -189,10 +192,10 @@ The knowledge graph is an embedded SQLite file (`~/.cgr/graph.sqlite`), so there
189
192
  is no database server to run. Memgraph and Neo4j remain available as opt-in
190
193
  backends; see [Graph Backends](https://docs.code-graph-rag.com/architecture/embedded-graph/).
191
194
 
192
- The wheel is pure Python (`py3-none-any`), so it installs on any platform with
193
- Python 3.12 or newer. On Linux (x86_64, aarch64), macOS and Windows x64 it also
194
- pulls in `cgr-graph-rs`, a native extension that speeds up the embedded graph;
195
- elsewhere the same engine runs in pure Python.
195
+ The wheel is pure Python (`py3-none-any`), and it requires `cgr-graph-rs`, the
196
+ native extension that does the work behind it, which ships for CPython 3.12 or
197
+ newer on Linux (x86_64, aarch64), macOS and Windows x64. cgr does not run
198
+ without it, so it installs on those platforms only.
196
199
 
197
200
  Some distributions ship an older interpreter (Debian Bookworm, and so Raspberry
198
201
  Pi OS Bookworm, ships 3.11), which also explains the failed piwheels Bookworm
@@ -458,10 +458,12 @@ codebase_rag/utils/path_utils.py
458
458
  codebase_rag/utils/process_owner.py
459
459
  codebase_rag/utils/qn_markers.py
460
460
  codebase_rag/utils/rich_markdown.py
461
+ codebase_rag/utils/safe_xml.py
461
462
  codebase_rag/utils/source_encoding.py
462
463
  codebase_rag/utils/source_extraction.py
463
464
  codebase_rag/utils/terminal_console.py
464
465
  codebase_rag/utils/token_utils.py
466
+ codebase_rag/utils/toml_writer.py
465
467
  codebase_rag/workspaces/__init__.py
466
468
  codebase_rag/workspaces/cli.py
467
469
  codebase_rag/workspaces/constants.py
@@ -5,7 +5,6 @@ pydantic-ai-slim[anthropic,google,openai]>=2.0.0
5
5
  pydantic-settings>=2.12.0
6
6
  python-dotenv>=1.2.1
7
7
  tiktoken>=0.12.0
8
- tomli-w>=1.2.0
9
8
  tree-sitter-python>=0.25.0
10
9
  tree-sitter==0.26.0
11
10
  watchdog>=6.0.0
@@ -15,15 +14,13 @@ prompt-toolkit>=3.0.52
15
14
  diff-match-patch>=20241021
16
15
  click>=8.3.3
17
16
  protobuf>=6.33.5
18
- defusedxml>=0.7.1
19
- huggingface-hub[hf-xet]>=1.7.2
17
+ pyyaml>=6.0
20
18
  pathspec>=1.0.4
21
19
  pygments>=2.20.0
20
+ httpx>=0.28.1
22
21
  certifi>=2026.10.23
23
22
  regex>=2024.11.6
24
-
25
- [:platform_python_implementation == "CPython" and ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64"))]
26
- cgr-graph-rs<0.2,>=0.1.5
23
+ cgr-graph-rs<0.2,>=0.1.6
27
24
 
28
25
  [ast-grep]
29
26
  ast-grep-py>=0.51.0
@@ -50,6 +47,7 @@ qdrant-client>=1.9.0
50
47
  grpcio>=1.84.1
51
48
  torch>=2.6.0
52
49
  transformers>=5.0.0
50
+ huggingface-hub[hf-xet]>=1.7.2
53
51
 
54
52
  [semantic:(sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64")]
55
53
  sqlite-vec>=0.1.9
@@ -0,0 +1,8 @@
1
+ """Code Graph RAG: build a queryable graph of a codebase and reason over it."""
2
+
3
+ from . import tree_sitter_point as _tree_sitter_point # noqa: F401
4
+ from .embedded_graph.extension import require_rust_extension as _require_rust_extension
5
+
6
+ # The Rust extension does the work behind this package's interface, and
7
+ # there is no pure-Python stand-in: without it, nothing here runs.
8
+ _require_rust_extension()
@@ -3217,6 +3217,19 @@ def _notice_single_project_endpoint_roots(show_progress: bool) -> None:
3217
3217
  typer.echo(cs.CLI_DEADCODE_SINGLE_PROJECT_ENDPOINTS, err=True)
3218
3218
 
3219
3219
 
3220
+ def _refuse_without_endpoint_data(
3221
+ error: ex.EndpointDataMissingError, show_progress: bool
3222
+ ) -> NoReturn:
3223
+ """No verdict, rather than one that reads as nothing unreachable. A
3224
+ machine format owns stdout, so the refusal goes to stderr there, as the
3225
+ single-project notice does."""
3226
+ if show_progress:
3227
+ app_context.console.print(style(str(error), cs.Color.RED))
3228
+ else:
3229
+ typer.echo(str(error), err=True)
3230
+ raise typer.Exit(1)
3231
+
3232
+
3220
3233
  @app.command(
3221
3234
  name=ch.CLICommandName.DEAD_CODE,
3222
3235
  help=ch.DESC_DEAD_CODE,
@@ -3291,26 +3304,33 @@ def dead_code(
3291
3304
  choice = ProjectChoice(None)
3292
3305
  rows: list[ResultRow] = []
3293
3306
  structural_tier_symbols = 0
3307
+ endpoint_gap: ex.EndpointDataMissingError | None = None
3294
3308
  try:
3295
3309
  with connect_memgraph(batch_size=1) as ingestor:
3296
3310
  projects = ingestor.list_projects()
3297
3311
  choice = choose_project(chosen, repo_path, projects, ingestor)
3298
3312
  if (resolved := choice.name) is not None:
3299
3313
  logger.info(ls.DEADCODE_SCANNING.format(project_name=resolved))
3300
- rows, structural_tier_symbols = collect_dead_code_with_coverage(
3301
- ingestor,
3302
- resolved,
3303
- _dead_code_config(
3304
- include_tests,
3305
- include_classes,
3306
- entry_point,
3307
- decorator_root,
3308
- min_resolution,
3309
- endpoint_roots,
3310
- public_roots,
3311
- ),
3312
- )
3313
- if not endpoint_roots and len(projects) <= 1:
3314
+ try:
3315
+ rows, structural_tier_symbols = collect_dead_code_with_coverage(
3316
+ ingestor,
3317
+ resolved,
3318
+ _dead_code_config(
3319
+ include_tests,
3320
+ include_classes,
3321
+ entry_point,
3322
+ decorator_root,
3323
+ min_resolution,
3324
+ endpoint_roots,
3325
+ public_roots,
3326
+ ),
3327
+ )
3328
+ except ex.EndpointDataMissingError as e:
3329
+ # Held until the connection closes: a finding about the
3330
+ # project, which the service layer would log on exit as a
3331
+ # failed session with a traceback (issue #2896).
3332
+ endpoint_gap = e
3333
+ if not endpoint_roots and len(projects) <= 1 and not endpoint_gap:
3314
3334
  _notice_single_project_endpoint_roots(show_progress)
3315
3335
  except GraphUnavailableError:
3316
3336
  raise
@@ -3321,6 +3341,8 @@ def dead_code(
3321
3341
  logger.exception(ls.DEADCODE_ERROR.format(error=e))
3322
3342
  raise typer.Exit(1) from e
3323
3343
 
3344
+ if endpoint_gap is not None:
3345
+ _refuse_without_endpoint_data(endpoint_gap, show_progress)
3324
3346
  resolved = _require_project(choice)
3325
3347
 
3326
3348
  candidates = [
@@ -677,7 +677,8 @@ HELP_DEADCODE_ENDPOINT_ROOTS = (
677
677
  "(RESOLVES_TO into it, or a direct READS_FROM/WRITES_TO for RPC and "
678
678
  "dispatch resources), so an endpoint nobody calls is reported. A handler "
679
679
  "registered by a call (Go HandleFunc, Express app.get) stays live "
680
- "through that call."
680
+ "through that call. Endpoints are recorded only by the io capture group: "
681
+ "index the project with --capture io first, or the command refuses."
681
682
  )
682
683
  HELP_DEADCODE_MIN_RESOLUTION = (
683
684
  "Ignore call edges below this confidence when deciding liveness: "
@@ -170,6 +170,47 @@ TS_CSHARP_PARAMETER_LIST = "parameter_list"
170
170
  # variable_declaration; a property_declaration exposes `type` and `name` directly.
171
171
  TS_CSHARP_VARIABLE_DECLARATION = "variable_declaration"
172
172
  TS_CSHARP_FOREACH_STATEMENT = "foreach_statement"
173
+ # The declarations a field belongs to.
174
+ CSHARP_TYPE_DECLARATION_NODES = frozenset(
175
+ {
176
+ TS_CSHARP_CLASS_DECLARATION,
177
+ TS_CSHARP_STRUCT_DECLARATION,
178
+ TS_CSHARP_RECORD_DECLARATION,
179
+ TS_CSHARP_INTERFACE_DECLARATION,
180
+ }
181
+ )
182
+ # Generic collections whose one type argument is the element a `foreach`
183
+ # binds (issue #2938); any other generic (`Dictionary<K, V>`) is not read.
184
+ CSHARP_ENUMERABLE_GENERICS = frozenset(
185
+ {
186
+ "IEnumerable",
187
+ "IAsyncEnumerable",
188
+ "ICollection",
189
+ "IList",
190
+ "IReadOnlyCollection",
191
+ "IReadOnlyList",
192
+ "ISet",
193
+ "IReadOnlySet",
194
+ "List",
195
+ "HashSet",
196
+ "SortedSet",
197
+ "LinkedList",
198
+ "Queue",
199
+ "Stack",
200
+ "Collection",
201
+ "ReadOnlyCollection",
202
+ "ObservableCollection",
203
+ "ImmutableArray",
204
+ "ImmutableList",
205
+ "ImmutableHashSet",
206
+ "IImmutableList",
207
+ "IImmutableSet",
208
+ "ConcurrentBag",
209
+ "ConcurrentQueue",
210
+ "ConcurrentStack",
211
+ "BlockingCollection",
212
+ }
213
+ )
173
214
  TS_CSHARP_VARIABLE_DECLARATOR = "variable_declarator"
174
215
  TS_CSHARP_IMPLICIT_TYPE = "implicit_type"
175
216
  TS_CSHARP_FIELD_DECLARATION = "field_declaration"
@@ -221,6 +262,9 @@ TS_CSHARP_STATIC = "static"
221
262
  TS_CSHARP_GLOBAL = "global"
222
263
  # A `params T[]` tail parameter is an array type in the method signature.
223
264
  CSHARP_ARRAY_SUFFIX = "[]"
265
+ # An array type's rank specifier: `T[]`, `T[,]`.
266
+ CSHARP_ARRAY_RANK_OPEN = "["
267
+ CSHARP_ARRAY_RANK_CLOSE = "]"
224
268
 
225
269
  # The name node inside a using directive: a dotted `qualified_name` or a bare
226
270
  # `identifier` (both the imported path and, in the alias form, the alias).
@@ -370,6 +414,12 @@ TS_CSHARP_DECLARATION_PATTERN = "declaration_pattern"
370
414
  TS_CSHARP_CATCH_DECLARATION = "catch_declaration"
371
415
  TS_CSHARP_FROM_CLAUSE = "from_clause"
372
416
  TS_CSHARP_LET_CLAUSE = "let_clause"
417
+ # `o is Other[] { Length: 1 } items`, `join z in zs ...`, `... into g`, and a
418
+ # lambda written with `delegate`.
419
+ TS_CSHARP_RECURSIVE_PATTERN = "recursive_pattern"
420
+ TS_CSHARP_JOIN_CLAUSE = "join_clause"
421
+ TS_CSHARP_JOIN_INTO_CLAUSE = "join_into_clause"
422
+ TS_CSHARP_ANONYMOUS_METHOD_EXPRESSION = "anonymous_method_expression"
373
423
  TS_CSHARP_EVENT_FIELD_DECLARATION = "event_field_declaration"
374
424
  # A top-level statement (C# 9); its locals are in scope across the file.
375
425
  TS_CSHARP_GLOBAL_STATEMENT = "global_statement"
@@ -69,6 +69,13 @@ TS_PY_LIST_SPLAT = "list_splat"
69
69
  TS_PY_DICTIONARY_SPLAT = "dictionary_splat"
70
70
  TS_PY_DEFAULT_PARAMETER = "default_parameter"
71
71
  TS_PY_LIST_SPLAT_PATTERN = "list_splat_pattern"
72
+ # `from __future__ import annotations` (PEP 563) keeps every annotation in
73
+ # its module as a string that never runs.
74
+ TS_PY_FUTURE_IMPORT_STATEMENT = "future_import_statement"
75
+ PY_FUTURE_ANNOTATIONS = "annotations"
76
+ # The literal sequence values an unpacking assignment pairs its targets with
77
+ # by position (`a, b = x, y`, `(a, b) = (x, y)`, `[a, b] = [x, y]`).
78
+ PY_UNPACKING_VALUE_TYPES = frozenset({"expression_list", "tuple", "list"})
72
79
  TS_PY_DICTIONARY_SPLAT_PATTERN = "dictionary_splat_pattern"
73
80
  TS_PY_POSITIONAL_SEPARATOR = "positional_separator"
74
81
  TS_PY_KEYWORD_SEPARATOR = "keyword_separator"
@@ -88,7 +88,6 @@ PYINSTALLER_PACKAGES: list["PyInstallerPackage"] = [
88
88
  PyInstallerPackage(name="rich", collect_all=True),
89
89
  PyInstallerPackage(name="typer", collect_all=True),
90
90
  PyInstallerPackage(name="loguru", collect_all=True),
91
- PyInstallerPackage(name="tomli_w", collect_all=True),
92
91
  PyInstallerPackage(name="protobuf", collect_all=True),
93
92
  PyInstallerPackage(name="genai_prices", collect_all=True),
94
93
  # The embedded graph's Rust half, loaded by name (embedded_graph/
@@ -130,6 +130,11 @@ CONTENT_EVENT_TYPES = frozenset(
130
130
  {EventType.MODIFIED, EventType.CREATED, EventType.DELETED}
131
131
  )
132
132
 
133
+ # The events that can change an ignore rule's input. A read cannot, and
134
+ # re-reading the rules reads those very files: a watcher that followed reads
135
+ # re-read `.gitignore` forever after one `git status` (issue #3583).
136
+ RULE_INPUT_EVENT_TYPES = CONTENT_EVENT_TYPES | {EventType.MOVED, EventType.CLOSED}
137
+
133
138
 
134
139
  WATCHER_SLEEP_INTERVAL = 1
135
140
  LOG_LEVEL_INFO = "INFO"
@@ -490,6 +490,12 @@ EG_RUST_SCOPE_FACTS = "scope_facts"
490
490
  EG_RUST_INTERFACE_FINGERPRINT = "interface_fingerprint"
491
491
  EG_RUST_CALLABLE_PARAMETER_INDICES = "callable_parameter_indices"
492
492
  EG_RUST_LOCAL_ALIASES = "local_aliases"
493
+ # The file formats it reads and writes (utils/safe_xml.py,
494
+ # utils/toml_writer.py), and what reading XML raises.
495
+ EG_RUST_XML_FIND_ALL = "xml_find_all"
496
+ EG_RUST_XML_SYNTAX_ERROR = "XmlSyntaxError"
497
+ EG_RUST_XML_ENTITY_ERROR = "XmlEntityError"
498
+ EG_RUST_TOML_DUMPS = "toml_dumps"
493
499
 
494
500
 
495
501
  class TreeBridgeCheck(StrEnum):
@@ -15,6 +15,7 @@ from fnmatch import fnmatch
15
15
 
16
16
  from . import constants as cs
17
17
  from . import cypher_queries as cq
18
+ from . import exceptions as ex
18
19
  from .path_filters import matches_test_path
19
20
  from .types_defs import (
20
21
  DeadCodeConfig,
@@ -1465,6 +1466,25 @@ def _endpoint_links(
1465
1466
  return links
1466
1467
 
1467
1468
 
1469
+ def _route_handler_count(nodes: dict[_NodeId, PropertyDict]) -> int:
1470
+ """Definitions carrying a route decorator: the handlers the io group
1471
+ would link to an endpoint."""
1472
+ from .parsers.endpoints import parse_route_decorator
1473
+
1474
+ count = 0
1475
+ for props in nodes.values():
1476
+ # The io group writes no endpoint for a route in a test file (#910),
1477
+ # so one there is no sign the group was left out.
1478
+ if matches_test_path(str(props.get(cs.KEY_PATH) or "")):
1479
+ continue
1480
+ decorators = props.get(cs.KEY_DECORATORS)
1481
+ if isinstance(decorators, list) and any(
1482
+ parse_route_decorator(str(d)) for d in decorators
1483
+ ):
1484
+ count += 1
1485
+ return count
1486
+
1487
+
1468
1488
  def collect_dead_code(
1469
1489
  ingestor: GraphQueryClient, project_name: str, config: DeadCodeConfig
1470
1490
  ) -> list[ResultRow]:
@@ -1503,6 +1523,11 @@ def collect_dead_code_with_coverage(
1503
1523
  endpoint_links = (
1504
1524
  None if config.endpoint_roots else _endpoint_links(ingestor, params)
1505
1525
  )
1526
+ # No endpoint at all is what a project indexed without the io group
1527
+ # holds; the route decorator would then root every handler as if the
1528
+ # switch were on (issue #2896).
1529
+ if endpoint_links == {} and (handlers := _route_handler_count(nodes)):
1530
+ raise ex.EndpointDataMissingError(project_name, handlers)
1506
1531
  dead = dead_code_from_graph(nodes, rels, prefix, config, endpoint_links)
1507
1532
  rows = [row for row in node_rows if _row_qn(row) in dead]
1508
1533
  rows.sort(key=_row_qn)
@@ -0,0 +1,32 @@
1
+ """The Rust extension (`rust/cgr_graph_rs`), imported in one place.
2
+
3
+ cgr does not run without it: importing `codebase_rag` fails when it is
4
+ missing. `require_rust_extension` is for code with no Python implementation
5
+ at all; `rust_extension` still serves the engine parts that keep one for the
6
+ inputs their Rust half declines.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from functools import cache
12
+ from importlib import import_module
13
+ from types import ModuleType
14
+
15
+ from .. import exceptions as ex
16
+ from ..constants.embedded_graph import EG_RUST_MODULE
17
+
18
+
19
+ @cache
20
+ def rust_extension() -> ModuleType | None:
21
+ try:
22
+ return import_module(EG_RUST_MODULE)
23
+ except ImportError:
24
+ return None
25
+
26
+
27
+ def require_rust_extension() -> ModuleType:
28
+ """The extension, or ImportError saying how to get it."""
29
+ try:
30
+ return import_module(EG_RUST_MODULE)
31
+ except ImportError as error:
32
+ raise ImportError(ex.RUST_EXTENSION_MISSING.format(error=error)) from error
@@ -40,6 +40,14 @@ SEMANTIC_EXTRA = "Semantic search requires 'semantic' extra: uv sync --extra sem
40
40
  # Input errors
41
41
  JSON_TOO_DEEP = "JSON nesting exceeds the decoder's recursion limit"
42
42
 
43
+ # The Rust extension (rust/cgr_graph_rs), which cgr does not run without
44
+ RUST_EXTENSION_MISSING = (
45
+ "code-graph-rag needs its Rust extension, cgr-graph-rs, and cannot import "
46
+ "it ({error}). It ships as wheels for CPython 3.12+ on Linux (x86_64, "
47
+ "aarch64), macOS and Windows x64; reinstall code-graph-rag there, or, in a "
48
+ "checkout, run `uv sync` with a Rust toolchain on PATH to build it."
49
+ )
50
+
43
51
  # OpenAI-compatible embedding errors
44
52
  OPENAI_EMBEDDING_HTTP_ERROR = (
45
53
  "OpenAI-compatible embedding request failed with status {status}: {body}"
@@ -213,6 +221,16 @@ INGESTOR_NOT_QUERYABLE = "{kind} has no graph to read."
213
221
  ACCESS_DENIED = "Access denied: Cannot access files outside the project root."
214
222
 
215
223
 
224
+ DEADCODE_ENDPOINT_DATA_MISSING = (
225
+ "--no-endpoint-roots needs endpoint data: project '{project}' has "
226
+ "{handlers} route-decorated handler(s) but no recorded endpoint, so it was "
227
+ "indexed without the io capture group and each handler would stay live by "
228
+ "its decorator. Re-index it with --capture io (cgr start --repo-path <repo> "
229
+ "--update-graph --project-name {project} --capture io), or drop "
230
+ "--no-endpoint-roots."
231
+ )
232
+
233
+
216
234
  # Tree bridge (used with raise NotBorrowed, which the caller catches and runs
217
235
  # the Python twin)
218
236
  NO_DESCENDANT = "no node at descendant index {index}"
@@ -277,6 +295,24 @@ class RepoPathError(ValueError):
277
295
  """
278
296
 
279
297
 
298
+ class EndpointDataMissingError(Exception):
299
+ """Endpoint roots are off, but the project holds no endpoint to decide by.
300
+
301
+ Only the `io` capture group writes `EXPOSES`; without it every
302
+ route-decorated handler stays live by its decorator, so the scan would
303
+ read as a clean result on handlers it never judged (issue #2896).
304
+ """
305
+
306
+ def __init__(self, project_name: str, handlers: int) -> None:
307
+ self.project_name = project_name
308
+ self.handlers = handlers
309
+ super().__init__(
310
+ DEADCODE_ENDPOINT_DATA_MISSING.format(
311
+ project=project_name, handlers=handlers
312
+ )
313
+ )
314
+
315
+
280
316
  # Sync lock (issue #2441)
281
317
  SYNC_IN_PROGRESS = (
282
318
  "Another sync of {repo} is running ({holder}). Two syncs of one checkout at "
@@ -7209,11 +7209,17 @@ class CallProcessor:
7209
7209
  # An untyped C# MEMBER call retains the generic fallback. A
7210
7210
  # bare call has already exhausted C#'s legitimate scopes
7211
7211
  # (local function, enclosing type, and static import), so a
7212
- # miss is external rather than a name-wide guess (#2005).
7212
+ # miss is external rather than a name-wide guess (#2005). It
7213
+ # reads the method's types as this call sees them, as the C#
7214
+ # resolver did: a pattern, out or lambda variable named like a
7215
+ # field never takes the field's type (bot review on PR #2990).
7216
+ engine = self._resolver.type_inference.csharp_type_inference
7213
7217
  callee_info = ctx.resolve_func(
7214
7218
  call_name,
7215
7219
  ctx.module_qn,
7216
- call_var_types,
7220
+ None
7221
+ if call_var_types is None
7222
+ else engine.site_types(call_node, call_var_types),
7217
7223
  ctx.class_context,
7218
7224
  ctx.caller_qn,
7219
7225
  ctx.language,
@@ -9013,6 +9019,21 @@ class CallProcessor:
9013
9019
  ):
9014
9020
  self._emit_conditional_rhs_refs(value, scope)
9015
9021
  return
9022
+ if (
9023
+ value.type in _INLINE_FUNC_VALUE_TYPES
9024
+ and node.type == cs.TS_VARIABLE_DECLARATOR
9025
+ and js_ts_utils.arrow_binding_name(value) is not None
9026
+ and not js_ts_utils.name_is_body_scoped(value)
9027
+ ):
9028
+ # `const foo = () => {}` is foo's own definition, not a use of
9029
+ # it: referencing it from the scope rooted every arrow const and
9030
+ # dead-code never reported one (issue #2857). Its uses reference
9031
+ # it by name like any function's. That holds only when it is
9032
+ # registered as foo: `const run = function worker() {}` registers
9033
+ # worker and `const b = (() => {}).bind(x)` an anonymous function,
9034
+ # which calls to run or b never resolve to, so those keep the
9035
+ # reference.
9036
+ return
9016
9037
  if (
9017
9038
  value.type in _ASSIGNMENT_RHS_REF_TYPES
9018
9039
  or value.type in _INLINE_FUNC_VALUE_TYPES