code-graph-rag 0.2.10__tar.gz → 0.2.19__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 (460) hide show
  1. {code_graph_rag-0.2.10/code_graph_rag.egg-info → code_graph_rag-0.2.19}/PKG-INFO +6 -5
  2. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/PYPI_README.md +3 -2
  3. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/README.md +7 -5
  4. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19/code_graph_rag.egg-info}/PKG-INFO +6 -5
  5. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/code_graph_rag.egg-info/SOURCES.txt +2 -0
  6. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/code_graph_rag.egg-info/requires.txt +2 -2
  7. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/cli.py +66 -1
  8. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/cli_help.py +4 -2
  9. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_dart.py +7 -0
  10. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_python.py +2 -0
  11. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_rust.py +6 -0
  12. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/cli.py +18 -2
  13. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/core.py +9 -0
  14. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/duplicates.py +29 -1
  15. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/graph.py +46 -4
  16. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/mcp.py +20 -0
  17. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/providers.py +10 -0
  18. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/structural.py +4 -0
  19. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/trace.py +23 -0
  20. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/crash_correlation.py +269 -29
  21. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/cypher_queries.py +66 -12
  22. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/patcher.py +2 -2
  23. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/gloss_repair.py +18 -0
  24. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/graph_query.py +97 -17
  25. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/graph_updater.py +238 -6
  26. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/language_spec.py +6 -0
  27. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/logs.py +19 -0
  28. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/main.py +14 -3
  29. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/mcp/tools.py +156 -50
  30. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +1 -1
  31. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/call_processor.py +161 -50
  32. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/call_resolver.py +10 -0
  33. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/class_ingest/mixin.py +10 -1
  34. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp/type_inference.py +7 -3
  35. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/dart/__init__.py +2 -0
  36. code_graph_rag-0.2.19/codebase_rag/parsers/dart/package_paths.py +61 -0
  37. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/dart/utils.py +22 -6
  38. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/definition_processor.py +5 -0
  39. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/endpoint_prefixes.py +32 -13
  40. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/endpoint_routes.py +74 -5
  41. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/endpoints.py +33 -1
  42. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/flow_access/processor.py +6 -2
  43. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go/type_inference.py +17 -11
  44. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/import_processor.py +98 -29
  45. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/io_access/constants.py +2 -0
  46. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/io_access/processor.py +7 -4
  47. code_graph_rag-0.2.19/codebase_rag/parsers/io_access/resource_names.py +29 -0
  48. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/php/namespaces.py +16 -0
  49. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/variable_analyzer.py +40 -2
  50. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/rs/type_inference.py +36 -28
  51. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/llm.py +41 -1
  52. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/structural_check.py +35 -9
  53. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/structural_delta.py +710 -41
  54. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/ast_grep_service.py +19 -1
  55. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/tool_descriptions.py +18 -8
  56. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/cli.py +11 -7
  57. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/pprof.py +17 -7
  58. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/xdebug.py +23 -1
  59. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/types_defs.py +3 -1
  60. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/source_encoding.py +66 -8
  61. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/source_extraction.py +4 -2
  62. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/pyproject.toml +15 -4
  63. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/LICENSE +0 -0
  64. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/cgr/__init__.py +0 -0
  65. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  66. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/code_graph_rag.egg-info/entry_points.txt +0 -0
  67. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/code_graph_rag.egg-info/top_level.txt +0 -0
  68. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/__init__.py +0 -0
  69. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/_cli_env.py +0 -0
  70. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/__init__.py +0 -0
  71. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  72. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  73. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  74. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  75. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  76. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  77. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  78. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  79. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  80. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  81. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  82. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  83. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  84. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  85. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  86. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  87. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  88. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  89. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  90. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  91. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  92. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  93. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  94. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  95. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  96. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  97. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  98. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  99. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  100. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  101. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  102. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  103. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  104. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  105. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  106. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  107. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  108. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  109. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  110. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  111. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  112. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  113. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  114. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  115. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  116. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  117. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/ast_cache.py +0 -0
  118. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/capture.py +0 -0
  119. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/check_isolation.py +0 -0
  120. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/checkout_state.py +0 -0
  121. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/cli_runtime.py +0 -0
  122. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/config.py +0 -0
  123. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/console_marks.py +0 -0
  124. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/__init__.py +0 -0
  125. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_cpp.py +0 -0
  126. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_csharp.py +0 -0
  127. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_go.py +0 -0
  128. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_java.py +0 -0
  129. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_js.py +0 -0
  130. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_julia.py +0 -0
  131. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_lua.py +0 -0
  132. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_nodes.py +0 -0
  133. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_php.py +0 -0
  134. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_scala.py +0 -0
  135. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/ast_sql.py +0 -0
  136. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/build.py +0 -0
  137. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/deadcode_roots.py +0 -0
  138. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/deps.py +0 -0
  139. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/embedded_graph.py +0 -0
  140. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/fqn_specs.py +0 -0
  141. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/health.py +0 -0
  142. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/interface.py +0 -0
  143. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/lang_tooling.py +0 -0
  144. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/languages.py +0 -0
  145. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/notebook.py +0 -0
  146. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/security.py +0 -0
  147. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/sqlite_vectors.py +0 -0
  148. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/constants/stdlib_types.py +0 -0
  149. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/context_pruning.py +0 -0
  150. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/context_slice.py +0 -0
  151. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/dead_code.py +0 -0
  152. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/decorators.py +0 -0
  153. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/docker-compose.yaml +0 -0
  154. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/duplicates.py +0 -0
  155. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/__init__.py +0 -0
  156. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/cli.py +0 -0
  157. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/contract.py +0 -0
  158. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/import_paths.py +0 -0
  159. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/imports.py +0 -0
  160. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/occurrences.py +0 -0
  161. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/rename.py +0 -0
  162. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/signature_bind.py +0 -0
  163. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/signature_contract.py +0 -0
  164. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/signature_spec.py +0 -0
  165. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/sites.py +0 -0
  166. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editing/transaction.py +0 -0
  167. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/editor_links.py +0 -0
  168. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/__init__.py +0 -0
  169. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/compiler.py +0 -0
  170. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/connection.py +0 -0
  171. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/cypher_ast.py +0 -0
  172. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/executor.py +0 -0
  173. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/expressions.py +0 -0
  174. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/extension.py +0 -0
  175. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/functions.py +0 -0
  176. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/lexer.py +0 -0
  177. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/limits.py +0 -0
  178. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/native.py +0 -0
  179. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/parser.py +0 -0
  180. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/procedures.py +0 -0
  181. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/sql.py +0 -0
  182. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/store.py +0 -0
  183. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedded_graph/types.py +0 -0
  184. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/embedder.py +0 -0
  185. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/exceptions.py +0 -0
  186. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/flow_verdict.py +0 -0
  187. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/function_registry.py +0 -0
  188. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/gloss.py +0 -0
  189. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/gloss_anchor.py +0 -0
  190. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/graph_audit.py +0 -0
  191. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/graph_cli.py +0 -0
  192. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/graph_dialects.py +0 -0
  193. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/graph_loader.py +0 -0
  194. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/interface_skip.py +0 -0
  195. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/mcp/__init__.py +0 -0
  196. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/mcp/client.py +0 -0
  197. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/mcp/server.py +0 -0
  198. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/mgclient_compat.py +0 -0
  199. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/mgclient_probe.py +0 -0
  200. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/models.py +0 -0
  201. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parser_fingerprint.py +0 -0
  202. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parser_loader.py +0 -0
  203. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/__init__.py +0 -0
  204. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/anchor_hash.py +0 -0
  205. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_fingerprint.py +0 -0
  206. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  207. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  208. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  209. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  210. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  211. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  212. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  213. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_grep_scope.py +0 -0
  214. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/ast_grep_tier.py +0 -0
  215. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/build_lock.py +0 -0
  216. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  217. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/class_ingest/base_targets.py +0 -0
  218. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  219. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/class_ingest/identity.py +0 -0
  220. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
  221. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  222. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/class_ingest/parent_extraction.py +0 -0
  223. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  224. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  225. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/contract_linking.py +0 -0
  226. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/contracts.py +0 -0
  227. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp/__init__.py +0 -0
  228. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp/class_macro.py +0 -0
  229. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp/function_values.py +0 -0
  230. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp/local_types.py +0 -0
  231. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp/overloads.py +0 -0
  232. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
  233. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp/trailing_annotation.py +0 -0
  234. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp/utils.py +0 -0
  235. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  236. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  237. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp_frontend/frontend.py +0 -0
  238. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
  239. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/csharp/__init__.py +0 -0
  240. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/csharp/arity.py +0 -0
  241. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/csharp/type_inference.py +0 -0
  242. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/csharp/utils.py +0 -0
  243. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  244. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
  245. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  246. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  247. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  248. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/dart/type_inference.py +0 -0
  249. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/definition_docstring.py +0 -0
  250. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/dependency_parser.py +0 -0
  251. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/dispatch_registry.py +0 -0
  252. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/document_tier.py +0 -0
  253. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/enum_variants.py +0 -0
  254. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/export_detection.py +0 -0
  255. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/factory.py +0 -0
  256. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/field_nodes.py +0 -0
  257. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/flat_module.py +0 -0
  258. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  259. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/flow_access/constants.py +0 -0
  260. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/frontend_mode.py +0 -0
  261. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/frontends/__init__.py +0 -0
  262. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/frontends/cpp.py +0 -0
  263. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/frontends/csharp.py +0 -0
  264. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/frontends/go.py +0 -0
  265. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/frontends/java.py +0 -0
  266. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/frontends/protocol.py +0 -0
  267. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/frontends/python.py +0 -0
  268. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/frontends/registry.py +0 -0
  269. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/function_ingest.py +0 -0
  270. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go/__init__.py +0 -0
  271. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go/builds.py +0 -0
  272. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go/interface_ingest.py +0 -0
  273. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go/interfaces.py +0 -0
  274. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go/link_state.py +0 -0
  275. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go/module_paths.py +0 -0
  276. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go/utils.py +0 -0
  277. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  278. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  279. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
  280. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
  281. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
  282. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/__init__.py +0 -0
  283. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/base.py +0 -0
  284. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/cpp.py +0 -0
  285. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/java.py +0 -0
  286. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/js_ts.py +0 -0
  287. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/julia.py +0 -0
  288. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/lua.py +0 -0
  289. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/php.py +0 -0
  290. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/protocol.py +0 -0
  291. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/python.py +0 -0
  292. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/registry.py +0 -0
  293. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/handlers/rust.py +0 -0
  294. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/interface_fingerprint.py +0 -0
  295. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/io_access/__init__.py +0 -0
  296. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  297. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/io_access/extract.py +0 -0
  298. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/io_access/models.py +0 -0
  299. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/io_access/registry.py +0 -0
  300. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/io_access/url_folding.py +0 -0
  301. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java/__init__.py +0 -0
  302. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java/method_resolver.py +0 -0
  303. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java/type_inference.py +0 -0
  304. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java/type_resolver.py +0 -0
  305. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java/utils.py +0 -0
  306. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java/variable_analyzer.py +0 -0
  307. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  308. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  309. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  310. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java_generated.py +0 -0
  311. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/java_lombok.py +0 -0
  312. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  313. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/js_ts/commonjs_exports.py +0 -0
  314. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/js_ts/ingest.py +0 -0
  315. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
  316. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/js_ts/module_system.py +0 -0
  317. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/js_ts/overloads.py +0 -0
  318. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/js_ts/reexports.py +0 -0
  319. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
  320. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/js_ts/utils.py +0 -0
  321. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/julia/__init__.py +0 -0
  322. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/julia/utils.py +0 -0
  323. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/lua/__init__.py +0 -0
  324. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/lua/type_inference.py +0 -0
  325. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/lua/utils.py +0 -0
  326. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/module_docstring.py +0 -0
  327. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/notebook.py +0 -0
  328. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/parameter_nodes.py +0 -0
  329. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/php/__init__.py +0 -0
  330. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/php/class_names.py +0 -0
  331. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/php/utils.py +0 -0
  332. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/positional_params.py +0 -0
  333. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/__init__.py +0 -0
  334. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
  335. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/class_aliases.py +0 -0
  336. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
  337. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/forward_refs.py +0 -0
  338. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/overloads.py +0 -0
  339. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/receiver_rebinding.py +0 -0
  340. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/type_inference.py +0 -0
  341. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/utils.py +0 -0
  342. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py/with_analyzer.py +0 -0
  343. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  344. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  345. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/python_source_roots.py +0 -0
  346. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/rpc_exposure.py +0 -0
  347. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/rs/__init__.py +0 -0
  348. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/rs/cargo_semver.py +0 -0
  349. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/rs/utils.py +0 -0
  350. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/scala/__init__.py +0 -0
  351. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/scala/utils.py +0 -0
  352. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/semantic_call_join.py +0 -0
  353. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/stdlib_extractor.py +0 -0
  354. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/string_call.py +0 -0
  355. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/structure_processor.py +0 -0
  356. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/type_facts.py +0 -0
  357. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/type_inference.py +0 -0
  358. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/parsers/utils.py +0 -0
  359. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/path_filters.py +0 -0
  360. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/project_selection.py +0 -0
  361. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/prompts.py +0 -0
  362. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/providers/__init__.py +0 -0
  363. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/providers/base.py +0 -0
  364. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/providers/litellm.py +0 -0
  365. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/queries/highlights/c_sharp.scm +0 -0
  366. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/queries/highlights/dart.scm +0 -0
  367. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/queries/highlights/java.scm +0 -0
  368. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/queries/highlights/javascript.scm +0 -0
  369. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/queries/highlights/julia.scm +0 -0
  370. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/queries/highlights/php.scm +0 -0
  371. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/queries/highlights/python.scm +0 -0
  372. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/queries/highlights/rust.scm +0 -0
  373. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/queries/highlights/typescript.scm +0 -0
  374. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/readme_sections.py +0 -0
  375. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/schema_builder.py +0 -0
  376. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/schema_parse.py +0 -0
  377. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/schemas.py +0 -0
  378. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/__init__.py +0 -0
  379. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/anthropic_token_counter.py +0 -0
  380. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/cypher_guard.py +0 -0
  381. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/filtering.py +0 -0
  382. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/gloss_cleanup.py +0 -0
  383. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/graph_diff.py +0 -0
  384. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/graph_service.py +0 -0
  385. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/neo4j_driver.py +0 -0
  386. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/protobuf_service.py +0 -0
  387. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/provenance.py +0 -0
  388. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/resource_cleanup.py +0 -0
  389. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/services/usage_cost.py +0 -0
  390. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/sql_names.py +0 -0
  391. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/sqlite_vectors.py +0 -0
  392. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/stack/__init__.py +0 -0
  393. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/stack/cli.py +0 -0
  394. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/stack/constants.py +0 -0
  395. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/stack/health.py +0 -0
  396. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/stack/manager.py +0 -0
  397. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/sync_guard.py +0 -0
  398. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/sync_lock.py +0 -0
  399. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/taint.py +0 -0
  400. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tool_errors.py +0 -0
  401. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/__init__.py +0 -0
  402. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/code_retrieval.py +0 -0
  403. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/codebase_query.py +0 -0
  404. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/directory_lister.py +0 -0
  405. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/duplicate_detection.py +0 -0
  406. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/file_editor.py +0 -0
  407. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/file_reader.py +0 -0
  408. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/file_writer.py +0 -0
  409. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/graph_refresh.py +0 -0
  410. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/graph_rerank.py +0 -0
  411. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/health_checker.py +0 -0
  412. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/language.py +0 -0
  413. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/language_catalog.py +0 -0
  414. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/research.py +0 -0
  415. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/semantic_search.py +0 -0
  416. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/shell_command.py +0 -0
  417. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/structural_editor.py +0 -0
  418. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/structural_search.py +0 -0
  419. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tools/web_search.py +0 -0
  420. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/__init__.py +0 -0
  421. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/carry.py +0 -0
  422. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/cpuprofile.py +0 -0
  423. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/dispatch_site.py +0 -0
  424. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/ebpf_pprof.py +0 -0
  425. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/ingest.py +0 -0
  426. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/instrumented.py +0 -0
  427. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/pytest_plugin.py +0 -0
  428. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/records.py +0 -0
  429. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/resolution.py +0 -0
  430. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/rust_pprof.py +0 -0
  431. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/sourcemap.py +0 -0
  432. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/speedscope.py +0 -0
  433. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/trace/tracer.py +0 -0
  434. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/tree_sitter_point.py +0 -0
  435. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/unixcoder.py +0 -0
  436. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/__init__.py +0 -0
  437. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/cpp_signatures.py +0 -0
  438. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/dependencies.py +0 -0
  439. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/endpoints.py +0 -0
  440. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/fqn_resolver.py +0 -0
  441. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/interruptible_thread.py +0 -0
  442. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/json_io.py +0 -0
  443. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/path_utils.py +0 -0
  444. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/process_owner.py +0 -0
  445. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/qn_markers.py +0 -0
  446. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/rich_markdown.py +0 -0
  447. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/terminal_console.py +0 -0
  448. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/utils/token_utils.py +0 -0
  449. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/vector_store.py +0 -0
  450. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/watch.py +0 -0
  451. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/workspaces/__init__.py +0 -0
  452. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/workspaces/cli.py +0 -0
  453. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/workspaces/constants.py +0 -0
  454. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/workspaces/models.py +0 -0
  455. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codebase_rag/workspaces/storage.py +0 -0
  456. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codec/__init__.py +0 -0
  457. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codec/schema.proto +0 -0
  458. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codec/schema_pb2.py +0 -0
  459. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/codec/schema_pb2.pyi +0 -0
  460. {code_graph_rag-0.2.10 → code_graph_rag-0.2.19}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.2.10
3
+ Version: 0.2.19
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
@@ -49,7 +49,7 @@ Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
49
49
  Requires-Dist: testcontainers>=4.9.0; extra == "test"
50
50
  Requires-Dist: libclang>=18.1.1; extra == "test"
51
51
  Requires-Dist: filelock>=3.12; extra == "test"
52
- Requires-Dist: ast-grep-py>=0.44.0; extra == "test"
52
+ Requires-Dist: ast-grep-py>=0.51.0; extra == "test"
53
53
  Requires-Dist: pyyaml>=6.0; extra == "test"
54
54
  Requires-Dist: pymgclient>=1.6.0; extra == "test"
55
55
  Requires-Dist: sqlite-vec>=0.1.9; extra == "test"
@@ -85,7 +85,7 @@ Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
85
85
  Provides-Extra: sqlite-vec
86
86
  Requires-Dist: sqlite-vec>=0.1.9; extra == "sqlite-vec"
87
87
  Provides-Extra: ast-grep
88
- Requires-Dist: ast-grep-py>=0.44.0; extra == "ast-grep"
88
+ Requires-Dist: ast-grep-py>=0.51.0; extra == "ast-grep"
89
89
  Requires-Dist: pyyaml>=6.0; extra == "ast-grep"
90
90
  Provides-Extra: python-semantics
91
91
  Requires-Dist: jedi>=0.19; extra == "python-semantics"
@@ -152,8 +152,9 @@ transformers are then not required locally.
152
152
  `pip install code-graph-rag` gives you the newest PyPI release, which is deliberately
153
153
  not the newest commit. Git tags exist for every version (one per merge), while PyPI
154
154
  uploads and GitHub Release binaries land on an every-50 cadence, so the tag on `main`
155
- usually runs ahead of the published version. A security fix is the exception: it
156
- ships immediately rather than waiting for the cadence.
155
+ usually runs ahead of the published version. A security fix, a breaking change or a
156
+ merge a maintainer labels `release now` is the exception: each ships immediately
157
+ rather than waiting for the cadence.
157
158
 
158
159
  To run code newer than the latest release, install from git with uv:
159
160
 
@@ -59,8 +59,9 @@ transformers are then not required locally.
59
59
  `pip install code-graph-rag` gives you the newest PyPI release, which is deliberately
60
60
  not the newest commit. Git tags exist for every version (one per merge), while PyPI
61
61
  uploads and GitHub Release binaries land on an every-50 cadence, so the tag on `main`
62
- usually runs ahead of the published version. A security fix is the exception: it
63
- ships immediately rather than waiting for the cadence.
62
+ usually runs ahead of the published version. A security fix, a breaking change or a
63
+ merge a maintainer labels `release now` is the exception: each ships immediately
64
+ rather than waiting for the cadence.
64
65
 
65
66
  To run code newer than the latest release, install from git with uv:
66
67
 
@@ -61,7 +61,8 @@ 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
- - **GitHub Sponsors**: Added support for GitHub Sponsors via the command line.
64
+ - **Dependency Locking**: Locked `opentelemetry-api` to version 1.45.1 for stability.
65
+ - **GHSA Security Fix**: Addressed GHSA-xcq7-p3pf-p88h vulnerability.
65
66
  <!-- /SECTION:latest_news -->
66
67
 
67
68
  See [NEWS.md](NEWS.md) for the full history.
@@ -118,13 +119,14 @@ Three version lines exist and they intentionally differ:
118
119
  | where | what it tracks |
119
120
  |---|---|
120
121
  | git tags | every version, one per merge |
121
- | GitHub Releases (binaries, signatures) | every 50th version, plus any security fix |
122
- | PyPI | every 50th version, plus any security fix |
122
+ | GitHub Releases (binaries, signatures) | every 50th version, plus any security fix, breaking change or merge labelled `release now` |
123
+ | PyPI | every 50th version, plus any security fix, breaking change or merge labelled `release now` |
123
124
 
124
125
  So the newest tag on `main` usually runs ahead of the newest release, often by
125
126
  tens of patch versions; they coincide only just after a release. Nothing is
126
- stuck, the cadences differ by design. A security fix does NOT wait for the
127
- cadence: it ships a release and a PyPI upload immediately.
127
+ stuck, the cadences differ by design. A security fix, a breaking change or a
128
+ merge a maintainer labels `release now` does NOT wait for the cadence: each ships
129
+ a release and a PyPI upload immediately.
128
130
 
129
131
  `uv tool install` and `pipx install` give you the newest PyPI version, which is the
130
132
  newest RELEASE, not the newest tag. Interim tags exist so every merge is
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.2.10
3
+ Version: 0.2.19
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
@@ -49,7 +49,7 @@ Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
49
49
  Requires-Dist: testcontainers>=4.9.0; extra == "test"
50
50
  Requires-Dist: libclang>=18.1.1; extra == "test"
51
51
  Requires-Dist: filelock>=3.12; extra == "test"
52
- Requires-Dist: ast-grep-py>=0.44.0; extra == "test"
52
+ Requires-Dist: ast-grep-py>=0.51.0; extra == "test"
53
53
  Requires-Dist: pyyaml>=6.0; extra == "test"
54
54
  Requires-Dist: pymgclient>=1.6.0; extra == "test"
55
55
  Requires-Dist: sqlite-vec>=0.1.9; extra == "test"
@@ -85,7 +85,7 @@ Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
85
85
  Provides-Extra: sqlite-vec
86
86
  Requires-Dist: sqlite-vec>=0.1.9; extra == "sqlite-vec"
87
87
  Provides-Extra: ast-grep
88
- Requires-Dist: ast-grep-py>=0.44.0; extra == "ast-grep"
88
+ Requires-Dist: ast-grep-py>=0.51.0; extra == "ast-grep"
89
89
  Requires-Dist: pyyaml>=6.0; extra == "ast-grep"
90
90
  Provides-Extra: python-semantics
91
91
  Requires-Dist: jedi>=0.19; extra == "python-semantics"
@@ -152,8 +152,9 @@ transformers are then not required locally.
152
152
  `pip install code-graph-rag` gives you the newest PyPI release, which is deliberately
153
153
  not the newest commit. Git tags exist for every version (one per merge), while PyPI
154
154
  uploads and GitHub Release binaries land on an every-50 cadence, so the tag on `main`
155
- usually runs ahead of the published version. A security fix is the exception: it
156
- ships immediately rather than waiting for the cadence.
155
+ usually runs ahead of the published version. A security fix, a breaking change or a
156
+ merge a maintainer labels `release now` is the exception: each ships immediately
157
+ rather than waiting for the cadence.
157
158
 
158
159
  To run code newer than the latest release, install from git with uv:
159
160
 
@@ -270,6 +270,7 @@ codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs
270
270
  codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj
271
271
  codebase_rag/parsers/csharp_frontend/roslyn/Program.cs
272
272
  codebase_rag/parsers/dart/__init__.py
273
+ codebase_rag/parsers/dart/package_paths.py
273
274
  codebase_rag/parsers/dart/type_inference.py
274
275
  codebase_rag/parsers/dart/utils.py
275
276
  codebase_rag/parsers/flow_access/__init__.py
@@ -315,6 +316,7 @@ codebase_rag/parsers/io_access/extract.py
315
316
  codebase_rag/parsers/io_access/models.py
316
317
  codebase_rag/parsers/io_access/processor.py
317
318
  codebase_rag/parsers/io_access/registry.py
319
+ codebase_rag/parsers/io_access/resource_names.py
318
320
  codebase_rag/parsers/io_access/url_folding.py
319
321
  codebase_rag/parsers/java/__init__.py
320
322
  codebase_rag/parsers/java/method_resolver.py
@@ -24,7 +24,7 @@ regex>=2024.11.6
24
24
  cgr-graph-rs<0.2,>=0.1.0
25
25
 
26
26
  [ast-grep]
27
- ast-grep-py>=0.44.0
27
+ ast-grep-py>=0.51.0
28
28
  pyyaml>=6.0
29
29
 
30
30
  [cpp]
@@ -59,7 +59,7 @@ pytest-xdist>=3.8.0
59
59
  testcontainers>=4.9.0
60
60
  libclang>=18.1.1
61
61
  filelock>=3.12
62
- ast-grep-py>=0.44.0
62
+ ast-grep-py>=0.51.0
63
63
  pyyaml>=6.0
64
64
  pymgclient>=1.6.0
65
65
  sqlite-vec>=0.1.9
@@ -60,6 +60,7 @@ from .graph_cli import cli as graph_cli
60
60
  from .graph_dialects import DIALECT_MEMGRAPH
61
61
  from .parser_loader import load_parsers
62
62
  from .project_selection import ProjectChoice, choose_project, scope_refusal
63
+ from .services.gloss_cleanup import prune_orphaned_glosses
63
64
  from .services.graph_diff import DiffError, diff_indexes, diff_is_empty
64
65
  from .services.graph_service import GraphUnavailableError, MemgraphIngestor
65
66
  from .services.protobuf_service import ProtobufFileIngestor
@@ -1069,6 +1070,28 @@ def _clear_deleted_project_markers(
1069
1070
  logger.warning(ls.CLI_DELETE_SYNC_MARKER_KEPT.format(project=project_name))
1070
1071
 
1071
1072
 
1073
+ def _sweep_glosses_after_failed_delete(
1074
+ ingestor: MemgraphIngestor, project_name: str
1075
+ ) -> None:
1076
+ """Sweep the notes of a delete that raised after the project was removed.
1077
+
1078
+ The delete commits statement by statement, so a later cleanup can raise
1079
+ once the project is already gone, and a retry then stops at "project not
1080
+ found" before any sweep. A project still listed keeps its unattached
1081
+ notes: they are LOST or AMBIGUOUS by design and readable on their old
1082
+ names. Never raises, so the delete's own error is what is reported.
1083
+ """
1084
+ try:
1085
+ still_listed = project_name in ingestor.list_projects()
1086
+ except Exception as exc:
1087
+ logger.warning(
1088
+ ls.CLI_DELETE_GLOSS_SWEEP_SKIPPED.format(project=project_name, error=exc)
1089
+ )
1090
+ return
1091
+ if not still_listed:
1092
+ prune_orphaned_glosses(ingestor, project_name)
1093
+
1094
+
1072
1095
  def _run_updater_deferring_interrupt(
1073
1096
  updater: "GraphUpdater",
1074
1097
  ) -> KeyboardInterrupt | None:
@@ -1207,10 +1230,33 @@ def _run_graph_sync(
1207
1230
  cs.StyleModifier.NONE,
1208
1231
  )
1209
1232
  )
1233
+ _report_call_pass_failures(repo, list(updater.call_pass_failures))
1210
1234
  if interrupted is not None:
1211
1235
  raise interrupted
1212
1236
 
1213
1237
 
1238
+ def _report_call_pass_failures(repo: Path, failed: list[Path]) -> None:
1239
+ # A file whose call pass failed lost edges while the sync still reads
1240
+ # "done": the error lines scroll away, so the summary counts them (#3173).
1241
+ if not failed:
1242
+ return
1243
+ names = sorted(
1244
+ path.relative_to(repo).as_posix() if path.is_relative_to(repo) else str(path)
1245
+ for path in failed
1246
+ )
1247
+ shown = names[: cs.CLI_CALL_PASS_FAILURES_SHOWN]
1248
+ if len(names) > len(shown):
1249
+ shown.append(cs.CLI_MSG_AND_MORE.format(count=len(names) - len(shown)))
1250
+ app_context.console.print(
1251
+ style(
1252
+ cs.CLI_MSG_CALL_PASS_FAILURES.format(
1253
+ count=len(names), files=", ".join(shown)
1254
+ ),
1255
+ cs.Color.YELLOW,
1256
+ )
1257
+ )
1258
+
1259
+
1214
1260
  def _delete_hash_cache(repo_path: Path) -> None:
1215
1261
  # Resolving the state directory also moves in what an older cgr left in
1216
1262
  # the tree, so a clean right after upgrading clears that copy too.
@@ -3519,7 +3565,26 @@ def delete_project(
3519
3565
  )
3520
3566
  )
3521
3567
  _cleanup_project_embeddings(ingestor, project_name, projects)
3522
- ingestor.delete_project(project_name)
3568
+ try:
3569
+ ingestor.delete_project(project_name)
3570
+ except Exception:
3571
+ _sweep_glosses_after_failed_delete(ingestor, project_name)
3572
+ raise
3573
+ # A Gloss is out of the delete's reach by design, which is what
3574
+ # lets it survive an index's delete-then-rebuild, so the
3575
+ # deliberate delete sweeps the project's notes, as MCP
3576
+ # `delete_project` does. Without it the next index re-attached
3577
+ # them by name (issue #3231). The sweep never raises: the delete
3578
+ # is done, and a retry would stop at "project not found".
3579
+ if not prune_orphaned_glosses(ingestor, project_name):
3580
+ app_context.console.print(
3581
+ style(
3582
+ cs.CLI_WARN_GLOSSES_NOT_PRUNED.format(
3583
+ project_name=project_name
3584
+ ),
3585
+ cs.Color.YELLOW,
3586
+ )
3587
+ )
3523
3588
  _clear_deleted_project_markers(ingestor, project_name)
3524
3589
  except typer.Exit:
3525
3590
  raise
@@ -169,8 +169,10 @@ HELP_CHECK_BASE = (
169
169
  )
170
170
  HELP_CHECK_FAIL_ON_FOUND = (
171
171
  "Exit with status 1 when the delta reports dangling callers, dangling "
172
- "importers, calls with too many arguments, new duplicates or new import "
173
- "cycles. A possibly_missing site is reported but does not fail the check."
172
+ "importers, calls with too many arguments, too few for a required "
173
+ "parameter or a keyword the callee does not accept, new duplicates or new "
174
+ "import cycles. A possibly_missing site is reported but does not fail the "
175
+ "check."
174
176
  )
175
177
  HELP_CHECK_ISOLATED = (
176
178
  "Measure the edit, then put the graph and the hash cache back so the "
@@ -216,6 +216,13 @@ DART_SCHEME_DART = "dart:"
216
216
  DART_SCHEME_PACKAGE = "package:"
217
217
  DART_QUOTE_CHARS = "'\""
218
218
  DART_EXT = ".dart"
219
+ # A `package:<name>/<path>` import names `<path>` under the `lib/` beside the
220
+ # pubspec whose top-level `name:` is `<name>` (issue #3278). The name is a
221
+ # Dart identifier, optionally quoted, optionally followed by a comment.
222
+ DART_PACKAGE_LIB_DIR = "lib"
223
+ DART_PUBSPEC_NAME_PATTERN = (
224
+ r"^name:[ \t]*['\"]?([A-Za-z_][A-Za-z0-9_]*)['\"]?[ \t]*(?:#.*)?$"
225
+ )
219
226
 
220
227
  # Node types whose captured signature needs the sibling-body span fix.
221
228
  DART_SIGNATURE_TYPES = frozenset(
@@ -409,6 +409,8 @@ PROPERTY_DECORATORS: frozenset[str] = frozenset({"property", "cached_property"})
409
409
  ABSTRACT_DECORATORS: frozenset[str] = frozenset({"abstractmethod", "abstractproperty"})
410
410
  # A static method takes no receiver: a first parameter named `self` is explicit.
411
411
  STATIC_DECORATORS: frozenset[str] = frozenset({"staticmethod"})
412
+ # A class method binds `cls` even when called through its class.
413
+ CLASSMETHOD_DECORATORS: frozenset[str] = frozenset({"classmethod"})
412
414
 
413
415
  # Eager builtins that invoke a callable argument synchronously in the caller's
414
416
  # stack frame, so the trace attributes the call to the enclosing function (no
@@ -156,6 +156,9 @@ RS_MACRO_RECEIVER_TYPES = RS_IDENT_OR_SELF
156
156
  # (`server . run`, `Config :: load`), and the segments a `::` path takes
157
157
  # (`Self` is an identifier token; `crate`, `super`, `self` are keywords).
158
158
  RS_MACRO_CHAIN_SEPARATORS = (TS_RS_TOKEN_DOT, TS_RS_TOKEN_SCOPE)
159
+ # How far each token moves the nesting of a turbofish's generic arguments in a
160
+ # macro token stream, where `Vec<Vec<u8>>` closes with one `>>` token.
161
+ RS_MACRO_ANGLE_DEPTH = {"<": 1, ">": -1, ">>": -2}
159
162
  RS_MACRO_PATH_SEGMENT_TYPES = (TS_IDENTIFIER, KEYWORD_SELF, TS_RS_CRATE, KEYWORD_SUPER)
160
163
  # Rust `Self` return type resolves to the enclosing impl target.
161
164
  RS_SELF_TYPE = "Self"
@@ -294,6 +297,9 @@ RS_MANIFEST_KIND_DIRS = {
294
297
  }
295
298
  RS_MANIFEST_WORKSPACE_KEY = "workspace"
296
299
  RS_MANIFEST_MEMBERS_KEY = "members"
300
+ # A workspace member that is the root package itself, and its `./` prefix.
301
+ RS_CURRENT_DIR = "."
302
+ RS_CURRENT_DIR_PREFIX = "./"
297
303
  RS_MANIFEST_NAME_KEY = "name"
298
304
  RS_MANIFEST_LIB_SECTION = "lib"
299
305
  RS_MANIFEST_DEP_SECTIONS = ("dependencies", "dev-dependencies", "build-dependencies")
@@ -170,6 +170,12 @@ MSG_SYNCING_WORKSPACE = (
170
170
  )
171
171
  CLI_MSG_SYNC_SKIPPED = "Knowledge graph already in sync for '{project}' ({elapsed:.2f}s, no changes detected)."
172
172
  CLI_MSG_SYNC_DONE = "Knowledge graph sync done for '{project}' in {elapsed:.2f}s."
173
+ CLI_MSG_CALL_PASS_FAILURES = (
174
+ "Call analysis failed in {count} file(s); their CALLS edges may be "
175
+ "incomplete (see the errors above): {files}"
176
+ )
177
+ CLI_CALL_PASS_FAILURES_SHOWN = 10
178
+ CLI_MSG_AND_MORE = "... {count} more"
173
179
  CLI_MSG_SYNC_INTERRUPTED = (
174
180
  "Interrupted: the graph for '{project}' is incomplete; re-run "
175
181
  "'cgr start --update-graph' with the same options to finish it."
@@ -249,6 +255,10 @@ CLI_ERR_CLEAN_UNKNOWN_PROJECTS = (
249
255
  CLI_MSG_CLEAN_ABORTED = "Aborted: the graph was left untouched."
250
256
  CLI_MSG_DELETING_PROJECT = "Deleting project '{project_name}' from the graph..."
251
257
  CLI_MSG_PROJECT_DELETED = "Project '{project_name}' deleted successfully."
258
+ CLI_WARN_GLOSSES_NOT_PRUNED = (
259
+ "Warning: the notes (glosses) of project '{project_name}' could not be "
260
+ "removed and remain in the graph unattached; the log has the error."
261
+ )
252
262
  CLI_WARN_DELETE_PROJECT_SHARED_ROOT = (
253
263
  "Warning: project(s) {projects} were indexed from the same directory as "
254
264
  "'{project_name}' ({root_path}). Only what '{project_name}' owns is "
@@ -355,8 +365,8 @@ CHECK_NOT_INDEXED = (
355
365
  # before rebuilding them from the edited tree, so those edges cannot be put
356
366
  # back. Refused rather than silently lost (greptile-local, #1718).
357
367
  CHECK_ISOLATED_GRAPH_HAS_IO = (
358
- "--isolated cannot restore the IO resource links this graph already "
359
- "holds ({groups}): cutting a changed file's subtree can leave a resource "
368
+ "--isolated cannot restore the IO resource links project {project}'s code "
369
+ "anchors ({groups}): cutting a changed file's subtree can leave a resource "
360
370
  "chain unanchored, and the re-ingest's repo-wide resource prune would "
361
371
  "delete it. Re-run without --isolated on a graph you can rebuild."
362
372
  )
@@ -535,6 +545,12 @@ UI_NEW_FILE_HEADER = "[bold cyan]New file: {path}[/bold cyan]"
535
545
  UI_SHELL_COMMAND_HEADER = "[bold cyan]Shell command:[/bold cyan]"
536
546
  UI_TOOL_APPROVAL = "[bold yellow]⚠️ Tool '{tool_name}' requires approval:[/bold yellow]"
537
547
  UI_FEEDBACK_PROMPT = "Feedback (why rejected, or press Enter to skip)"
548
+ # `cgr start -a` has no operator to ask: what the model is told when it asks
549
+ # for an edit or a non-read-only command without --no-confirm (issue #2657).
550
+ ASK_AGENT_APPROVAL_DENIED = (
551
+ "Edits and non-read-only commands are disabled in --ask-agent mode; "
552
+ "answer without them. The user can re-run with --no-confirm to allow them."
553
+ )
538
554
  UI_OPTIMIZATION_START = (
539
555
  "[bold green]Starting {language} optimization session...[/bold green]"
540
556
  )
@@ -10,6 +10,15 @@ PY_PACKAGE_INIT_FILES: tuple[str, ...] = (INIT_PY, INIT_PYI)
10
10
 
11
11
  ENCODING_UTF8 = "utf-8"
12
12
  ENCODING_UTF8_SIG = "utf-8-sig"
13
+ # BOM-aware: decoding picks the byte order from the mark and drops it.
14
+ ENCODING_UTF16 = "utf-16"
15
+ ENCODING_UTF32 = "utf-32"
16
+ # One byte order each, for the text after a BOM: writing that text back in
17
+ # one of these, behind the same mark, gives the file's own bytes.
18
+ ENCODING_UTF16_LE = "utf-16-le"
19
+ ENCODING_UTF16_BE = "utf-16-be"
20
+ ENCODING_UTF32_LE = "utf-32-le"
21
+ ENCODING_UTF32_BE = "utf-32-be"
13
22
  ENCODING_ASCII = "ascii"
14
23
  # Codec names (as `codecs.lookup` normalises them) whose bytes the grammar
15
24
  # already reads as they are, so a source declaring one needs no transcoding.
@@ -127,18 +127,46 @@ DELTA_ARITY_TOO_MANY = "too_many"
127
127
  DELTA_ARITY_TOO_FEW = "too_few"
128
128
  DELTA_ARITY_POSSIBLY_MISSING = "possibly_missing"
129
129
  DELTA_ARITY_UNKNOWN = "unknown"
130
+ # Definite only where the callee's header was read back (issues #2853,
131
+ # #2845): a keyword the new signature does not accept, with no `**kwargs`,
132
+ # and a required parameter no argument fills, with no splat to supply it.
133
+ DELTA_ARITY_UNEXPECTED_KEYWORD = "unexpected_keyword"
134
+ # The verdicts that fail `--fail-on-found`: each is a certain `TypeError`.
135
+ DELTA_ARITY_DEFINITE = frozenset(
136
+ {DELTA_ARITY_TOO_MANY, DELTA_ARITY_UNEXPECTED_KEYWORD, DELTA_ARITY_TOO_FEW}
137
+ )
138
+ # Decorators that hand the call to the def as written; any other may change
139
+ # what a caller must pass, so the header alone settles nothing.
140
+ PY_STATICMETHOD = "staticmethod"
141
+ PY_SIGNATURE_PRESERVING_DECORATORS = frozenset(
142
+ {
143
+ PY_STATICMETHOD,
144
+ "classmethod",
145
+ "abstractmethod",
146
+ "abc.abstractmethod",
147
+ "override",
148
+ "typing.override",
149
+ "typing_extensions.override",
150
+ }
151
+ )
130
152
 
131
153
 
132
154
  # What still names a removed or renamed symbol in a structural delta's
133
155
  # `dangling_importers` (issue #2516): an import statement binding it, or a
134
- # Python `__all__` string entry exporting it.
156
+ # Python `__all__` string entry exporting it. `module` is an import of a
157
+ # module the edit deleted or moved (issue #3266): `import pkg.signals`,
158
+ # `from pkg import util`, `export * from "./util"`.
135
159
  class DanglingImportKind(StrEnum):
136
160
  IMPORT = "import"
137
161
  ALL = "__all__"
162
+ MODULE = "module"
138
163
 
139
164
 
140
165
  # Hops the backward test-reach walk follows before giving up.
141
166
  DELTA_REACH_MAX_DEPTH = 12
167
+ # Source files whose syntax tree the arity verdicts keep while judging one
168
+ # delta's sites (issue #2899): one parse per file version, however many sites.
169
+ DELTA_PARSED_SOURCES_KEPT = 64
142
170
 
143
171
  # Cypher return alias for the not-analyzed symbol count.
144
172
  KEY_SKIPPED = "skipped"
@@ -209,6 +209,10 @@ KEY_UNRESOLVED_SPECIFIERS = "unresolved_specifiers"
209
209
  # so the modules that waited for it are re-parsed (issue #1568). Written
210
210
  # unconditionally on every parse so a resolved name clears.
211
211
  KEY_UNRESOLVED_REFERENCES = "unresolved_references"
212
+ # The dotted namespace a PHP file declares (`App.Util`), on its Module: a
213
+ # `use function App\\Util\\slug` matches it, and only a parse of the file
214
+ # gives it, so an incremental run reads it back from here (issue #3277).
215
+ KEY_PHP_NAMESPACE = "php_namespace"
212
216
  KEY_ABSOLUTE_PATH = "absolute_path"
213
217
  # Whether flow analysis covered a Module: its language is in the source/sink
214
218
  # registry AND the FLOWS_TO capture group was enabled at indexing. Read by
@@ -837,6 +841,9 @@ KEY_ANCHOR = "anchor"
837
841
  # omitted key, so a fixed link would otherwise stay listed as broken.
838
842
  KEY_BROKEN_LINKS = "broken_links"
839
843
  KEY_DECORATORS = "decorators"
844
+ # The largest line a `path:line` target is looked up at: past it no source
845
+ # file has the line, and the value would overflow a Bolt integer.
846
+ GRAPH_MAX_SOURCE_LINE = 2**31 - 1
840
847
  # Return and parameter annotations as written (issue #1527). `return_type` is
841
848
  # absent when the definition has none; `param_types` is parallel to the
842
849
  # declared parameters ("" for an unannotated one) and absent, not empty, for
@@ -991,6 +998,13 @@ MILVUS_IDS_EXPR = "{field} in {ids}"
991
998
  # Milvus answers a delete with the deleted keys or with this count.
992
999
  MILVUS_DELETE_COUNT_KEY = "delete_count"
993
1000
 
1001
+ # The ownership relations a Module's subtree hangs off, walked by the
1002
+ # re-parse delete and by the lookup of files that attach members to it.
1003
+ MODULE_SUBTREE_REL_PATTERN = (
1004
+ "DEFINES|DEFINES_METHOD|CONTAINS_SECTION|HAS_PARAMETER"
1005
+ "|HAS_FIELD|HAS_VARIANT|DEFINES_CONSTANT"
1006
+ "|IMPLEMENTS_PATTERN|HAS_SMELL|HAS_VULNERABILITY"
1007
+ )
994
1008
  CYPHER_DELETE_MODULE = (
995
1009
  # Scoped to the project: two projects in the shared graph can hold the
996
1010
  # same relative path, and a path-only match would take the sibling's
@@ -1030,9 +1044,7 @@ CYPHER_DELETE_MODULE = (
1030
1044
  # re-parse stripped its edge and left the node: an orphan per re-parse
1031
1045
  # after a sync that drops the `findings` capture group, or per finding
1032
1046
  # the edited source no longer matches (issue #2536).
1033
- "OPTIONAL MATCH (m)-[:DEFINES|DEFINES_METHOD|CONTAINS_SECTION|HAS_PARAMETER"
1034
- "|HAS_FIELD|HAS_VARIANT|DEFINES_CONSTANT"
1035
- "|IMPLEMENTS_PATTERN|HAS_SMELL|HAS_VULNERABILITY*0..]->(c) "
1047
+ f"OPTIONAL MATCH (m)-[:{MODULE_SUBTREE_REL_PATTERN}*0..]->(c) "
1036
1048
  "DETACH DELETE m, c"
1037
1049
  )
1038
1050
  # Keyed on absolute_path: the relative path is shared across same-layout
@@ -1240,7 +1252,8 @@ CYPHER_ALL_DEFINITION_QNS = (
1240
1252
  CYPHER_ALL_MODULE_QNS = (
1241
1253
  "MATCH (n) WHERE (n:Module OR n:ModuleInterface) "
1242
1254
  "AND n.qualified_name STARTS WITH $project_prefix "
1243
- "RETURN n.qualified_name AS qualified_name, head(labels(n)) AS label"
1255
+ "RETURN n.qualified_name AS qualified_name, head(labels(n)) AS label, "
1256
+ "n.php_namespace AS php_namespace"
1244
1257
  )
1245
1258
 
1246
1259
  # Inbound reference edges (from unchanged files) into symbols defined in one
@@ -1303,6 +1316,19 @@ CYPHER_INBOUND_EDGES = (
1303
1316
  # like INHERITS: an implementor in the same package holds no import edge into
1304
1317
  # its interface's file, and without this it was neither re-parsed nor
1305
1318
  # restored when that file was re-indexed (issue #1565).
1319
+ # Files that attach members to these modules' subtrees: a Go method keyed
1320
+ # under its receiver type's module whatever file declares it, a C++
1321
+ # out-of-line definition hung on its header's class. The re-parse delete
1322
+ # walks the subtree and takes them, and only their own file recreates them,
1323
+ # so they must re-parse in the same run (issue #3271).
1324
+ CYPHER_FOREIGN_MEMBER_PATHS = (
1325
+ "MATCH (m:Module) WHERE m.path IN $paths "
1326
+ "AND (m.qualified_name = $project_name "
1327
+ "OR m.qualified_name STARTS WITH $project_prefix) "
1328
+ f"MATCH (m)-[:{MODULE_SUBTREE_REL_PATTERN}*1..]->(c) "
1329
+ "WHERE c.path IS NOT NULL AND NOT c.path IN $paths "
1330
+ "RETURN DISTINCT c.path AS path"
1331
+ )
1306
1332
  CYPHER_AFFECTED_CALLER_PATHS = (
1307
1333
  "MATCH (caller)-[:CALLS|REFERENCES|INSTANTIATES|IMPORTS|INHERITS|IMPLEMENTS]->(target) "
1308
1334
  "WHERE target.path IN $paths AND caller.path IS NOT NULL "
@@ -1405,6 +1431,22 @@ CYPHER_UNRESOLVED_IMPORTER_PATHS = (
1405
1431
  "OR target.qualified_name STARTS WITH (name + '.')) "
1406
1432
  "RETURN DISTINCT importer.path AS caller_path"
1407
1433
  )
1434
+ # Every IMPORTS edge written for a `package:` URI, with where it went (issue
1435
+ # #3278 review). A Dart pubspec's `name:` decides whether `package:<name>/...`
1436
+ # is a module of the project or an external package, so adding, deleting or
1437
+ # renaming one moves those imports while the importers stay unchanged on
1438
+ # disk, and no edge leads from them to the pubspec for the dependents lookup
1439
+ # to follow. The caller resolves each URI again and keeps the moved ones.
1440
+ CYPHER_PACKAGE_URI_IMPORTS = (
1441
+ "MATCH (importer)-[r:IMPORTS]->(target) "
1442
+ "WHERE importer.path IS NOT NULL "
1443
+ "AND importer.qualified_name STARTS WITH $project_prefix "
1444
+ "AND r.imported_name STARTS WITH $uri_prefix "
1445
+ "RETURN DISTINCT importer.path AS caller_path, "
1446
+ "importer.qualified_name AS from_qn, r.imported_name AS imported_name, "
1447
+ "target.qualified_name AS to_qn"
1448
+ )
1449
+ CYPHER_PARAM_URI_PREFIX = "uri_prefix"
1408
1450
  # Modules carrying at least one unresolved relative specifier, with the
1409
1451
  # specifiers themselves. The specifier is relative to the IMPORTING module's
1410
1452
  # directory, so the match against a created file is resolved in Python rather
@@ -134,6 +134,17 @@ MCP_JSON_INDENT = 2
134
134
  MCP_LOG_LEVEL_INFO = "INFO"
135
135
  MCP_LOG_FORMAT = "<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <level>{message}</level>"
136
136
  MCP_PAGINATION_HEADER = "# Lines {start}-{end} of {total}\n"
137
+ # `read_file`'s window, refused in its own terms rather than as whatever
138
+ # `islice()` says of a negative index, or as "Lines 1001-1000 of 7"
139
+ # (issue #3244). The schema bounds them too; a direct call is checked here.
140
+ MCP_READ_OFFSET_MINIMUM = 0
141
+ MCP_READ_LIMIT_MINIMUM = 1
142
+ MCP_READ_OFFSET_NEGATIVE = "offset {offset} is negative"
143
+ MCP_READ_LIMIT_NOT_POSITIVE = "limit {limit} is not positive"
144
+ MCP_READ_PAST_END = "offset {offset} is past the end of {path} ({total} lines)"
145
+ # A `path:line` target whose line no source file can reach; sent on, it
146
+ # overflows the 64-bit Bolt integer in the driver.
147
+ MCP_RESOLVE_LINE_OUT_OF_RANGE = "Line {line} of {path} is out of range."
137
148
 
138
149
  # MCP response messages
139
150
  MCP_INDEX_SUCCESS = "Successfully indexed repository at {path}. Knowledge graph has been updated (previous data cleared)."
@@ -212,6 +223,10 @@ MCP_SEMANTIC_NOT_AVAILABLE_RESPONSE = (
212
223
  "Semantic search is not available. Install with: uv sync --extra semantic"
213
224
  )
214
225
  MCP_ASK_AGENT_ERROR = "Error running ask_agent: {error}"
226
+ MCP_ASK_AGENT_APPROVAL_DENIED = (
227
+ "ask_agent cannot edit files or run non-read-only commands; answer "
228
+ "without them. The client can make the change with the MCP edit tools."
229
+ )
215
230
  # Refused rather than answered with zero rows: an empty result for a
216
231
  # misspelled project name is indistinguishable from a genuine empty result.
217
232
  MCP_UNKNOWN_PROJECT = "Unknown project {project!r}. Indexed projects: {known}"
@@ -235,6 +250,11 @@ MCP_ROOT_NOT_INDEXED = (
235
250
  # it" / "no test reaches it" (issue #2461).
236
251
  MCP_UNKNOWN_TARGET = "{qualified_name!r} is not in the graph."
237
252
  MCP_UNKNOWN_TARGET_HINT = " `resolve` lists the qualified names a name matches."
253
+ MCP_UNKNOWN_ENDPOINT = (
254
+ "{target!r} names no endpoint project {project!r} exposes: neither a "
255
+ "handler nor an endpoint identity."
256
+ )
257
+ MCP_UNKNOWN_ENDPOINT_HINT = " `endpoints` lists the project's identities and handlers."
238
258
  # `flow_verdict` with a source or sink it cannot walk from (issue #2939).
239
259
  MCP_FLOW_SOURCE = "source"
240
260
  MCP_FLOW_SINK = "sink"
@@ -211,3 +211,13 @@ class UniXcoderMode(StrEnum):
211
211
  UNIXCODER_MASK_TOKEN = "<mask0>"
212
212
  UNIXCODER_BUFFER_BIAS = "bias"
213
213
  UNIXCODER_MAX_CONTEXT = 1024
214
+
215
+
216
+ # An agent run with no operator settles every tool approval itself (the CLI's
217
+ # `-a`, MCP's ask_agent; issue #2657). A model that asks again after every
218
+ # answer would otherwise loop forever.
219
+ NONINTERACTIVE_APPROVAL_ROUNDS = 10
220
+ NONINTERACTIVE_APPROVAL_LOOP = (
221
+ "The agent still requested tool approval after {rounds} rounds of answers; "
222
+ "stopped without a text answer."
223
+ )
@@ -59,6 +59,10 @@ AST_GREP_UNKNOWN_LANGUAGE = (
59
59
  "Unknown or unsupported language '{language}'. Supported: {supported}"
60
60
  )
61
61
  AST_GREP_INVALID_PATTERN = "Invalid ast-grep pattern '{pattern}': {error}"
62
+ # ast-grep's error carries its whole cause chain and a Rust backtrace; the
63
+ # deepest numbered cause before the backtrace is the one that says why.
64
+ AST_GREP_BACKTRACE_MARKER = "Stack backtrace:"
65
+ AST_GREP_CAUSE = re.compile(r"^\s*\d+: (?P<cause>.+)$")
62
66
  AST_GREP_TRUNCATED = (
63
67
  "Result cap of {limit} reached; narrow the pattern or raise the limit for more."
64
68
  )
@@ -105,6 +105,17 @@ TRACE_MSG_ADDRS_UNRESOLVED = (
105
105
  TRACE_ERR_BAD_XDEBUG = (
106
106
  "{path} is not an Xdebug computerized trace (expected 'File format: 4')."
107
107
  )
108
+ TRACE_ERR_BAD_XDEBUG_GZIP = (
109
+ "{path} is gzip-compressed but truncated or corrupt, so it cannot be read "
110
+ "as an Xdebug trace."
111
+ )
112
+ TRACE_ERR_XDEBUG_TOO_LARGE = (
113
+ "{path} decompresses to more than {limit} bytes; refusing to inflate it in "
114
+ "memory. If the trace is genuine, gunzip it and convert the .xt file."
115
+ )
116
+ # Xdebug >= 3.1 built with zlib compresses traces by default
117
+ # (xdebug.use_compression=1) and appends .gz to the .xt name.
118
+ TRACE_XDEBUG_SUFFIXES = (".xt", ".xt.gz")
108
119
  TRACE_XDEBUG_FORMAT_LINE = "File format: 4"
109
120
  TRACE_XDEBUG_MAIN = "{main}"
110
121
  TRACE_XDEBUG_GLUE_FUNCTIONS = frozenset(
@@ -194,6 +205,18 @@ TRACEBACK_NOTE_NOTHING_RESOLVED = (
194
205
  'e.g. {{"/app": "."}}.'
195
206
  )
196
207
 
208
+ # An ExceptionGroup's report covers the group and, under `members`, each
209
+ # sub-exception it printed (issue #3235).
210
+ TRACEBACK_NOTE_EXCEPTION_GROUP = (
211
+ "{type} with {listed} sub-exception{plural}: frames is the stack that "
212
+ "raised the group, and each sub-exception is analysed on its own under "
213
+ "members."
214
+ )
215
+ TRACEBACK_NOTE_MEMBERS_OMITTED = (
216
+ " The traceback itself left out {omitted} more, past its "
217
+ "max_group_width or max_group_depth."
218
+ )
219
+
197
220
  TRACE_ERR_BAD_HEADER = "Trace file {path} does not start with a valid cgr trace header."
198
221
  TRACE_ERR_VERSION = (
199
222
  "Trace file {path} has format version {found}; this build reads version {expected}."