code-graph-rag 0.0.895__tar.gz → 0.0.945__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. {code_graph_rag-0.0.895/code_graph_rag.egg-info → code_graph_rag-0.0.945}/PKG-INFO +3 -1
  2. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/README.md +3 -6
  3. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945/code_graph_rag.egg-info}/PKG-INFO +3 -1
  4. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/SOURCES.txt +11 -0
  5. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/requires.txt +3 -0
  6. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/cli.py +24 -1
  7. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/config.py +45 -7
  8. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_cpp.py +1 -0
  9. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_dart.py +5 -0
  10. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_java.py +3 -0
  11. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_nodes.py +1 -0
  12. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_php.py +5 -0
  13. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_python.py +28 -0
  14. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_rust.py +1 -0
  15. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_scala.py +1 -0
  16. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/cli.py +42 -0
  17. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/core.py +20 -0
  18. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/graph.py +231 -2
  19. code_graph_rag-0.0.945/codebase_rag/constants/health.py +87 -0
  20. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/mcp.py +25 -0
  21. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/trace.py +2 -0
  22. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/cypher_queries.py +276 -27
  23. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/editing/__init__.py +18 -0
  24. code_graph_rag-0.0.945/codebase_rag/editing/contract.py +352 -0
  25. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/editing/imports.py +27 -5
  26. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/editing/rename.py +467 -9
  27. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/editing/transaction.py +17 -0
  28. code_graph_rag-0.0.945/codebase_rag/gloss.py +321 -0
  29. code_graph_rag-0.0.945/codebase_rag/gloss_repair.py +245 -0
  30. code_graph_rag-0.0.945/codebase_rag/graph_dialects.py +243 -0
  31. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/graph_query.py +18 -3
  32. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/graph_updater.py +889 -65
  33. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/language_spec.py +34 -18
  34. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/logs.py +46 -8
  35. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/main.py +157 -8
  36. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/mcp/tools.py +898 -72
  37. code_graph_rag-0.0.945/codebase_rag/parsers/anchor_hash.py +85 -0
  38. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/call_processor.py +137 -37
  39. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/call_resolver.py +201 -16
  40. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/identity.py +2 -1
  41. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/mixin.py +29 -2
  42. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/frontend.py +5 -1
  43. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp/utils.py +64 -38
  44. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/dart/utils.py +10 -9
  45. code_graph_rag-0.0.945/codebase_rag/parsers/definition_docstring.py +385 -0
  46. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/definition_processor.py +102 -10
  47. code_graph_rag-0.0.945/codebase_rag/parsers/field_nodes.py +1083 -0
  48. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/function_ingest.py +30 -4
  49. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/ingest.py +6 -4
  50. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/module_system.py +23 -4
  51. code_graph_rag-0.0.945/codebase_rag/parsers/module_docstring.py +672 -0
  52. code_graph_rag-0.0.945/codebase_rag/parsers/parameter_nodes.py +262 -0
  53. code_graph_rag-0.0.945/codebase_rag/parsers/py/ast_analyzer.py +1375 -0
  54. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/expression_analyzer.py +89 -1
  55. code_graph_rag-0.0.945/codebase_rag/parsers/py/type_inference.py +407 -0
  56. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/variable_analyzer.py +365 -13
  57. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/python_source_roots.py +85 -53
  58. code_graph_rag-0.0.945/codebase_rag/parsers/structure_processor.py +273 -0
  59. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/type_facts.py +7 -1
  60. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/type_inference.py +11 -3
  61. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/utils.py +262 -11
  62. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/prompts.py +74 -10
  63. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/readme_sections.py +36 -26
  64. code_graph_rag-0.0.945/codebase_rag/services/gloss_cleanup.py +94 -0
  65. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/services/graph_service.py +131 -42
  66. code_graph_rag-0.0.945/codebase_rag/services/neo4j_driver.py +190 -0
  67. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/services/protobuf_service.py +19 -14
  68. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/services/provenance.py +25 -14
  69. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/structural_delta.py +262 -20
  70. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/codebase_query.py +49 -3
  71. code_graph_rag-0.0.945/codebase_rag/tools/health_checker.py +378 -0
  72. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/tool_descriptions.py +42 -0
  73. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/cpuprofile.py +8 -4
  74. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/types_defs.py +124 -4
  75. code_graph_rag-0.0.945/codebase_rag/utils/token_utils.py +104 -0
  76. code_graph_rag-0.0.945/codec/schema_pb2.py +91 -0
  77. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codec/schema_pb2.pyi +118 -8
  78. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/pyproject.toml +7 -1
  79. code_graph_rag-0.0.895/codebase_rag/constants/health.py +0 -62
  80. code_graph_rag-0.0.895/codebase_rag/parsers/py/ast_analyzer.py +0 -575
  81. code_graph_rag-0.0.895/codebase_rag/parsers/py/type_inference.py +0 -116
  82. code_graph_rag-0.0.895/codebase_rag/parsers/structure_processor.py +0 -167
  83. code_graph_rag-0.0.895/codebase_rag/tools/health_checker.py +0 -258
  84. code_graph_rag-0.0.895/codebase_rag/utils/token_utils.py +0 -53
  85. code_graph_rag-0.0.895/codec/schema_pb2.py +0 -85
  86. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/LICENSE +0 -0
  87. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/PYPI_README.md +0 -0
  88. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/cgr/__init__.py +0 -0
  89. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  90. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/entry_points.txt +0 -0
  91. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/top_level.txt +0 -0
  92. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/__init__.py +0 -0
  93. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/__init__.py +0 -0
  94. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  95. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  96. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  97. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  98. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  99. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  100. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  101. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  102. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  103. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  104. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  105. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  106. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  107. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  108. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  109. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  110. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  111. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  112. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  113. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  114. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  115. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  116. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  117. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  118. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  119. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  120. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  121. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  122. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  123. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  124. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  125. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  126. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  127. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  128. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  129. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  130. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  131. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  132. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  133. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  134. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  135. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  136. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  137. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  138. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  139. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  140. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/ast_cache.py +0 -0
  141. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/capture.py +0 -0
  142. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/cgr_state.py +0 -0
  143. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/cli_help.py +0 -0
  144. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/__init__.py +0 -0
  145. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_csharp.py +0 -0
  146. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_go.py +0 -0
  147. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_js.py +0 -0
  148. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_lua.py +0 -0
  149. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_sql.py +0 -0
  150. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/build.py +0 -0
  151. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/deadcode_roots.py +0 -0
  152. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/deps.py +0 -0
  153. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/duplicates.py +0 -0
  154. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/fqn_specs.py +0 -0
  155. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/lang_tooling.py +0 -0
  156. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/languages.py +0 -0
  157. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/providers.py +0 -0
  158. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/security.py +0 -0
  159. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/stdlib_types.py +0 -0
  160. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/constants/structural.py +0 -0
  161. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/context_pruning.py +0 -0
  162. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/crash_correlation.py +0 -0
  163. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/dead_code.py +0 -0
  164. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/decorators.py +0 -0
  165. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/docker-compose.yaml +0 -0
  166. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/duplicates.py +0 -0
  167. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/editing/cli.py +0 -0
  168. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/editing/patcher.py +0 -0
  169. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/editor_links.py +0 -0
  170. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/embedder.py +0 -0
  171. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/exceptions.py +0 -0
  172. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/flow_verdict.py +0 -0
  173. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/function_registry.py +0 -0
  174. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/graph_audit.py +0 -0
  175. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/graph_cli.py +0 -0
  176. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/graph_loader.py +0 -0
  177. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/mcp/__init__.py +0 -0
  178. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/mcp/client.py +0 -0
  179. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/mcp/server.py +0 -0
  180. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/models.py +0 -0
  181. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parser_fingerprint.py +0 -0
  182. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parser_loader.py +0 -0
  183. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/__init__.py +0 -0
  184. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_fingerprint.py +0 -0
  185. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  186. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  187. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
  188. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  189. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  190. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  191. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  192. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  193. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_tier.py +0 -0
  194. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/build_lock.py +0 -0
  195. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  196. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  197. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
  198. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  199. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/parent_extraction.py +0 -0
  200. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  201. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  202. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/contract_linking.py +0 -0
  203. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/contracts.py +0 -0
  204. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/__init__.py +0 -0
  205. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
  206. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/type_inference.py +0 -0
  207. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/utils.py +0 -0
  208. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  209. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  210. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
  211. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp/__init__.py +0 -0
  212. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp/type_inference.py +0 -0
  213. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  214. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
  215. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  216. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  217. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  218. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/dart/__init__.py +0 -0
  219. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/dart/type_inference.py +0 -0
  220. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/dependency_parser.py +0 -0
  221. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/dispatch_registry.py +0 -0
  222. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/document_tier.py +0 -0
  223. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
  224. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/endpoint_routes.py +0 -0
  225. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/endpoints.py +0 -0
  226. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/export_detection.py +0 -0
  227. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/factory.py +0 -0
  228. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/flat_module.py +0 -0
  229. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  230. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/flow_access/constants.py +0 -0
  231. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/flow_access/processor.py +0 -0
  232. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontend_mode.py +0 -0
  233. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/__init__.py +0 -0
  234. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/cpp.py +0 -0
  235. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/csharp.py +0 -0
  236. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/go.py +0 -0
  237. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/java.py +0 -0
  238. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/protocol.py +0 -0
  239. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/python.py +0 -0
  240. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/registry.py +0 -0
  241. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/__init__.py +0 -0
  242. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/module_paths.py +0 -0
  243. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/type_inference.py +0 -0
  244. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/utils.py +0 -0
  245. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  246. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  247. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
  248. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
  249. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
  250. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/__init__.py +0 -0
  251. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/base.py +0 -0
  252. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/cpp.py +0 -0
  253. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/java.py +0 -0
  254. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/js_ts.py +0 -0
  255. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/lua.py +0 -0
  256. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/php.py +0 -0
  257. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/protocol.py +0 -0
  258. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/python.py +0 -0
  259. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/registry.py +0 -0
  260. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/rust.py +0 -0
  261. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/import_processor.py +0 -0
  262. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/__init__.py +0 -0
  263. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/constants.py +0 -0
  264. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  265. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/extract.py +0 -0
  266. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/models.py +0 -0
  267. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/processor.py +0 -0
  268. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/registry.py +0 -0
  269. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/__init__.py +0 -0
  270. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/method_resolver.py +0 -0
  271. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/type_inference.py +0 -0
  272. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/type_resolver.py +0 -0
  273. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/utils.py +0 -0
  274. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/variable_analyzer.py +0 -0
  275. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  276. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  277. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  278. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_generated.py +0 -0
  279. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_lombok.py +0 -0
  280. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  281. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
  282. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
  283. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/utils.py +0 -0
  284. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/lua/__init__.py +0 -0
  285. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/lua/type_inference.py +0 -0
  286. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/lua/utils.py +0 -0
  287. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/__init__.py +0 -0
  288. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/utils.py +0 -0
  289. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  290. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  291. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/rpc_exposure.py +0 -0
  292. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/rs/__init__.py +0 -0
  293. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/rs/type_inference.py +0 -0
  294. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/rs/utils.py +0 -0
  295. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/semantic_call_join.py +0 -0
  296. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/stdlib_extractor.py +0 -0
  297. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/parsers/string_call.py +0 -0
  298. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/path_filters.py +0 -0
  299. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/providers/__init__.py +0 -0
  300. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/providers/base.py +0 -0
  301. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/providers/litellm.py +0 -0
  302. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/schema_builder.py +0 -0
  303. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/schema_parse.py +0 -0
  304. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/schemas.py +0 -0
  305. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/services/__init__.py +0 -0
  306. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/services/anthropic_token_counter.py +0 -0
  307. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/services/filtering.py +0 -0
  308. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/services/graph_diff.py +0 -0
  309. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/services/llm.py +0 -0
  310. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/services/resource_cleanup.py +0 -0
  311. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/services/usage_cost.py +0 -0
  312. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/sql_names.py +0 -0
  313. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/stack/__init__.py +0 -0
  314. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/stack/cli.py +0 -0
  315. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/stack/constants.py +0 -0
  316. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/stack/health.py +0 -0
  317. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/stack/manager.py +0 -0
  318. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/structural_check.py +0 -0
  319. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/taint.py +0 -0
  320. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tool_errors.py +0 -0
  321. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/__init__.py +0 -0
  322. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/ast_grep_service.py +0 -0
  323. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/code_retrieval.py +0 -0
  324. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/directory_lister.py +0 -0
  325. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/duplicate_detection.py +0 -0
  326. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/file_editor.py +0 -0
  327. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/file_reader.py +0 -0
  328. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/file_writer.py +0 -0
  329. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/graph_rerank.py +0 -0
  330. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/language.py +0 -0
  331. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/research.py +0 -0
  332. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/semantic_search.py +0 -0
  333. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/shell_command.py +0 -0
  334. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/structural_editor.py +0 -0
  335. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/structural_search.py +0 -0
  336. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/tools/web_search.py +0 -0
  337. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/__init__.py +0 -0
  338. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/cli.py +0 -0
  339. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/dispatch_site.py +0 -0
  340. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/ebpf_pprof.py +0 -0
  341. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/ingest.py +0 -0
  342. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/instrumented.py +0 -0
  343. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/pprof.py +0 -0
  344. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/pytest_plugin.py +0 -0
  345. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/records.py +0 -0
  346. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/resolution.py +0 -0
  347. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/rust_pprof.py +0 -0
  348. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/sourcemap.py +0 -0
  349. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/speedscope.py +0 -0
  350. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/tracer.py +0 -0
  351. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/trace/xdebug.py +0 -0
  352. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/unixcoder.py +0 -0
  353. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/utils/__init__.py +0 -0
  354. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/utils/dependencies.py +0 -0
  355. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/utils/fqn_resolver.py +0 -0
  356. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/utils/path_utils.py +0 -0
  357. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/utils/rich_markdown.py +0 -0
  358. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/utils/source_extraction.py +0 -0
  359. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/vector_store.py +0 -0
  360. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/workspaces/__init__.py +0 -0
  361. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/workspaces/cli.py +0 -0
  362. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/workspaces/constants.py +0 -0
  363. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/workspaces/models.py +0 -0
  364. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codebase_rag/workspaces/storage.py +0 -0
  365. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/codec/__init__.py +0 -0
  366. {code_graph_rag-0.0.895 → code_graph_rag-0.0.945}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.0.895
3
+ Version: 0.0.945
4
4
  Summary: The ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs
5
5
  License-Expression: MIT
6
6
  Keywords: rag,retrieval-augmented-generation,knowledge-graph,code-analysis,tree-sitter,mcp,mcp-server,llm,graph-database,semantic-search,codebase,memgraph,developer-tools,monorepo
@@ -52,6 +52,8 @@ Requires-Dist: ast-grep-py>=0.44.0; extra == "test"
52
52
  Requires-Dist: pyyaml>=6.0; extra == "test"
53
53
  Provides-Extra: cpp
54
54
  Requires-Dist: libclang>=18.1.1; extra == "cpp"
55
+ Provides-Extra: neo4j
56
+ Requires-Dist: neo4j>=5.28.1; extra == "neo4j"
55
57
  Provides-Extra: treesitter-full
56
58
  Requires-Dist: tree-sitter-python>=0.23.6; extra == "treesitter-full"
57
59
  Requires-Dist: tree-sitter-javascript>=0.23.1; extra == "treesitter-full"
@@ -51,12 +51,9 @@ Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowl
51
51
  ## Latest News 🔥
52
52
 
53
53
  <!-- SECTION:latest_news -->
54
- - **File System Operations**: Improved handling of file system operations with platform-neutral joins and safeguards against removing project root.
55
- - **Cache Management**: Enhanced cache management with atomic publishing, dedicated cache stamps, and improved deletion handling for orphan caches.
56
- - **Graph Querying**: Introduced deterministic graph query tools for more precise analysis of code relationships.
57
- - **Re-ingestion & Parsing**: Improved re-ingestion processes, including handling of deleted files, re-parsing of related files, and rebuilding of key data structures.
58
- - **Security & Stability**: Addressed security concerns by blocking removal of project root and improved stability by preventing skipped edits and handling orphaned caches.
59
- - **C++ & Go Integration**: Enhanced integration with C++ and Go, including parsing of module interfaces and handling of module-level class aliases.
54
+ - **UTF-8 Handling**: Improved handling of invalid UTF-8 bytes prevents file definitions from being dropped.
55
+ - **Neo4j Backend Support**: Added support for Neo4j as a graph backend through a pluggable dialect seam.
56
+ - **Gloss Node & Notes**: Introduced the Gloss node for agent-authored notes and enabled writing and reading Gloss notes via the MCP server.
60
57
  <!-- /SECTION:latest_news -->
61
58
 
62
59
  See [NEWS.md](NEWS.md) for the full history.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.0.895
3
+ Version: 0.0.945
4
4
  Summary: The ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs
5
5
  License-Expression: MIT
6
6
  Keywords: rag,retrieval-augmented-generation,knowledge-graph,code-analysis,tree-sitter,mcp,mcp-server,llm,graph-database,semantic-search,codebase,memgraph,developer-tools,monorepo
@@ -52,6 +52,8 @@ Requires-Dist: ast-grep-py>=0.44.0; extra == "test"
52
52
  Requires-Dist: pyyaml>=6.0; extra == "test"
53
53
  Provides-Extra: cpp
54
54
  Requires-Dist: libclang>=18.1.1; extra == "cpp"
55
+ Provides-Extra: neo4j
56
+ Requires-Dist: neo4j>=5.28.1; extra == "neo4j"
55
57
  Provides-Extra: treesitter-full
56
58
  Requires-Dist: tree-sitter-python>=0.23.6; extra == "treesitter-full"
57
59
  Requires-Dist: tree-sitter-javascript>=0.23.1; extra == "treesitter-full"
@@ -28,8 +28,11 @@ codebase_rag/embedder.py
28
28
  codebase_rag/exceptions.py
29
29
  codebase_rag/flow_verdict.py
30
30
  codebase_rag/function_registry.py
31
+ codebase_rag/gloss.py
32
+ codebase_rag/gloss_repair.py
31
33
  codebase_rag/graph_audit.py
32
34
  codebase_rag/graph_cli.py
35
+ codebase_rag/graph_dialects.py
33
36
  codebase_rag/graph_loader.py
34
37
  codebase_rag/graph_query.py
35
38
  codebase_rag/graph_updater.py
@@ -133,6 +136,7 @@ codebase_rag/constants/structural.py
133
136
  codebase_rag/constants/trace.py
134
137
  codebase_rag/editing/__init__.py
135
138
  codebase_rag/editing/cli.py
139
+ codebase_rag/editing/contract.py
136
140
  codebase_rag/editing/imports.py
137
141
  codebase_rag/editing/patcher.py
138
142
  codebase_rag/editing/rename.py
@@ -142,6 +146,7 @@ codebase_rag/mcp/client.py
142
146
  codebase_rag/mcp/server.py
143
147
  codebase_rag/mcp/tools.py
144
148
  codebase_rag/parsers/__init__.py
149
+ codebase_rag/parsers/anchor_hash.py
145
150
  codebase_rag/parsers/ast_fingerprint.py
146
151
  codebase_rag/parsers/ast_grep_tier.py
147
152
  codebase_rag/parsers/build_lock.py
@@ -149,6 +154,7 @@ codebase_rag/parsers/call_processor.py
149
154
  codebase_rag/parsers/call_resolver.py
150
155
  codebase_rag/parsers/contract_linking.py
151
156
  codebase_rag/parsers/contracts.py
157
+ codebase_rag/parsers/definition_docstring.py
152
158
  codebase_rag/parsers/definition_processor.py
153
159
  codebase_rag/parsers/dependency_parser.py
154
160
  codebase_rag/parsers/dispatch_registry.py
@@ -158,12 +164,15 @@ codebase_rag/parsers/endpoint_routes.py
158
164
  codebase_rag/parsers/endpoints.py
159
165
  codebase_rag/parsers/export_detection.py
160
166
  codebase_rag/parsers/factory.py
167
+ codebase_rag/parsers/field_nodes.py
161
168
  codebase_rag/parsers/flat_module.py
162
169
  codebase_rag/parsers/frontend_mode.py
163
170
  codebase_rag/parsers/function_ingest.py
164
171
  codebase_rag/parsers/import_processor.py
165
172
  codebase_rag/parsers/java_generated.py
166
173
  codebase_rag/parsers/java_lombok.py
174
+ codebase_rag/parsers/module_docstring.py
175
+ codebase_rag/parsers/parameter_nodes.py
167
176
  codebase_rag/parsers/python_source_roots.py
168
177
  codebase_rag/parsers/rpc_exposure.py
169
178
  codebase_rag/parsers/semantic_call_join.py
@@ -282,9 +291,11 @@ codebase_rag/providers/litellm.py
282
291
  codebase_rag/services/__init__.py
283
292
  codebase_rag/services/anthropic_token_counter.py
284
293
  codebase_rag/services/filtering.py
294
+ codebase_rag/services/gloss_cleanup.py
285
295
  codebase_rag/services/graph_diff.py
286
296
  codebase_rag/services/graph_service.py
287
297
  codebase_rag/services/llm.py
298
+ codebase_rag/services/neo4j_driver.py
288
299
  codebase_rag/services/protobuf_service.py
289
300
  codebase_rag/services/provenance.py
290
301
  codebase_rag/services/resource_cleanup.py
@@ -30,6 +30,9 @@ libclang>=18.1.1
30
30
  [milvus]
31
31
  pymilvus[milvus-lite]>=3.0.0
32
32
 
33
+ [neo4j]
34
+ neo4j>=5.28.1
35
+
33
36
  [python-semantics]
34
37
  jedi>=0.19
35
38
 
@@ -1185,6 +1185,14 @@ def rename_command(
1185
1185
 
1186
1186
  name, fetch_all, ingestor = _project_and_fetch(project, repo_path)
1187
1187
  with ingestor: # type: ignore[attr-defined]
1188
+ parsers, queries = load_parsers()
1189
+ updater = GraphUpdater(
1190
+ ingestor=ingestor, # type: ignore[arg-type]
1191
+ repo_path=repo_path.resolve(),
1192
+ parsers=parsers,
1193
+ queries=queries,
1194
+ project_name=name,
1195
+ )
1188
1196
  try:
1189
1197
  report = rename(
1190
1198
  repo_path.resolve(),
@@ -1194,6 +1202,7 @@ def rename_command(
1194
1202
  new_name,
1195
1203
  allow_heuristic=allow_heuristic,
1196
1204
  dry_run=dry_run,
1205
+ reingest=updater.reingest,
1197
1206
  )
1198
1207
  except RenameRefused as refused:
1199
1208
  typer.echo(str(refused), err=True)
@@ -1205,6 +1214,7 @@ def rename_command(
1205
1214
  payload = dict(report._asdict())
1206
1215
  payload[cs.KEY_SITES] = sites_for(report.sites)
1207
1216
  payload[cs.KEY_AMBIGUOUS] = sites_for(report.ambiguous)
1217
+ payload["verdict"] = report.verdict._asdict() if report.verdict else None
1208
1218
  typer.echo(json.dumps(payload, indent=cs.MCP_JSON_INDENT, sort_keys=True))
1209
1219
  if not report.applied and not dry_run:
1210
1220
  raise typer.Exit(code=1)
@@ -1291,6 +1301,18 @@ def status_command() -> None:
1291
1301
  app_context.console.print(f" - {project}: last sync {ts}")
1292
1302
 
1293
1303
 
1304
+ def _status_mark(passed: bool, encoding: str) -> str:
1305
+ """The pass/fail mark the console's stream can encode.
1306
+
1307
+ Rich substitutes ASCII box characters on a non-UTF stream but leaves
1308
+ text alone, so the glyph raised UnicodeEncodeError on a CP950 Windows
1309
+ terminal before a single check was shown (issue #1910).
1310
+ """
1311
+ if encoding.lower().startswith(cs.ENCODING_UTF_PREFIX):
1312
+ return cs.HEALTH_MARK_PASS if passed else cs.HEALTH_MARK_FAIL
1313
+ return cs.HEALTH_MARK_PASS_ASCII if passed else cs.HEALTH_MARK_FAIL_ASCII
1314
+
1315
+
1294
1316
  @app.command(
1295
1317
  name=ch.CLICommandName.DOCTOR,
1296
1318
  help=ch.CMD_DOCTOR,
@@ -1306,8 +1328,9 @@ def doctor() -> None:
1306
1328
  table = Table(show_header=False, box=None, padding=(0, 2))
1307
1329
  table.add_column(style="cyan", no_wrap=False)
1308
1330
 
1331
+ encoding = app_context.console.encoding
1309
1332
  for result in results:
1310
- status = "✓" if result.passed else "✗"
1333
+ status = _status_mark(result.passed, encoding)
1311
1334
  status_color = cs.Color.GREEN if result.passed else cs.Color.RED
1312
1335
  status_text = style(status, status_color, cs.StyleModifier.NONE)
1313
1336
 
@@ -9,12 +9,13 @@ from typing import TypedDict, Unpack
9
9
 
10
10
  from dotenv import load_dotenv
11
11
  from loguru import logger
12
- from pydantic import Field
12
+ from pydantic import Field, field_validator
13
13
  from pydantic_settings import BaseSettings, SettingsConfigDict
14
14
 
15
15
  from . import constants as cs
16
16
  from . import exceptions as ex
17
17
  from . import logs
18
+ from .graph_dialects import DIALECT_MEMGRAPH, available_dialects
18
19
  from .types_defs import CgrignorePatterns, ModelConfigKwargs
19
20
 
20
21
  # Load only the configuration file in the invocation directory. The default
@@ -103,6 +104,16 @@ def format_missing_api_key_errors(
103
104
 
104
105
  LOCAL_PROVIDERS = frozenset({cs.Provider.OLLAMA})
105
106
 
107
+ # The provider-owned variable `validate_api_key` accepts INSTEAD of the role's
108
+ # own `<ROLE>_API_KEY`. Module level so `cgr doctor` can name the same variable
109
+ # the gate reads rather than restating the rule and drifting from it (#1910).
110
+ # A provider absent here is satisfied only by the role variable.
111
+ PROVIDER_ENV_KEYS = {
112
+ cs.Provider.ANTHROPIC: cs.ENV_ANTHROPIC_API_KEY,
113
+ cs.Provider.AZURE: cs.ENV_AZURE_API_KEY,
114
+ cs.Provider.MINIMAX: cs.ENV_MINIMAX_API_KEY,
115
+ }
116
+
106
117
 
107
118
  @dataclass
108
119
  class ModelConfig:
@@ -124,12 +135,7 @@ class ModelConfig:
124
135
 
125
136
  def validate_api_key(self, role: str = cs.DEFAULT_MODEL_ROLE) -> None:
126
137
  provider_lower = self.provider.lower()
127
- provider_env_keys = {
128
- cs.Provider.ANTHROPIC: cs.ENV_ANTHROPIC_API_KEY,
129
- cs.Provider.AZURE: cs.ENV_AZURE_API_KEY,
130
- cs.Provider.MINIMAX: cs.ENV_MINIMAX_API_KEY,
131
- }
132
- env_key = provider_env_keys.get(provider_lower)
138
+ env_key = PROVIDER_ENV_KEYS.get(provider_lower)
133
139
  if (
134
140
  provider_lower in LOCAL_PROVIDERS
135
141
  or (
@@ -159,11 +165,24 @@ class AppConfig(BaseSettings):
159
165
  case_sensitive=False,
160
166
  )
161
167
 
168
+ # Which graph engine the ingestor talks to. Memgraph stays the default,
169
+ # so an existing install keeps its behaviour without touching config;
170
+ # see `graph_dialects` for what actually differs between engines.
171
+ GRAPH_BACKEND: str = DIALECT_MEMGRAPH
172
+
162
173
  MEMGRAPH_HOST: str = "localhost"
163
174
  MEMGRAPH_PORT: int = 7687
164
175
  MEMGRAPH_HTTP_PORT: int = 7444
165
176
  MEMGRAPH_USERNAME: str | None = None
166
177
  MEMGRAPH_PASSWORD: str | None = None
178
+
179
+ # Neo4j connects by URI rather than host/port: the scheme carries the
180
+ # routing mode (`neo4j://` for a cluster, `bolt://` for one instance)
181
+ # and TLS (`+s`/`+ssc`), none of which a host/port pair can express.
182
+ NEO4J_URI: str = "bolt://localhost:7687"
183
+ NEO4J_USERNAME: str | None = None
184
+ NEO4J_PASSWORD: str | None = None
185
+ NEO4J_DATABASE: str = "neo4j"
167
186
  LAB_PORT: int = 3000
168
187
  MEMGRAPH_BATCH_SIZE: int = 1000
169
188
  AGENT_RETRIES: int = 3
@@ -364,6 +383,25 @@ class AppConfig(BaseSettings):
364
383
  QUERY_MEMORY_LIMIT_MB: int = Field(default=4096, gt=0)
365
384
  QUERY_TIMEOUT_S: float = Field(default=60.0, gt=0)
366
385
 
386
+ @field_validator("GRAPH_BACKEND")
387
+ @classmethod
388
+ def _known_backend(cls, value: str) -> str:
389
+ """Reject an unknown engine name at startup.
390
+
391
+ Defaulting an unrecognised value to Memgraph would send Memgraph
392
+ DDL to whatever server is actually configured, and
393
+ `MemgraphIngestor.ensure_constraints` swallows DDL failures -- so
394
+ a typo would surface much later as a graph built with no
395
+ constraints rather than as a startup error.
396
+ """
397
+ normalised = value.strip().lower()
398
+ if normalised not in available_dialects():
399
+ raise ValueError(
400
+ f"GRAPH_BACKEND must be one of {', '.join(available_dialects())}; "
401
+ f"got {value!r}"
402
+ )
403
+ return normalised
404
+
367
405
  OLLAMA_HEALTH_TIMEOUT: float = 5.0
368
406
  LITELLM_HEALTH_TIMEOUT: float = 5.0
369
407
 
@@ -81,6 +81,7 @@ CPP_KEYWORD_STRUCT = "struct"
81
81
  # `static` storage on a declaration: internal linkage, TU-local symbol.
82
82
  CPP_KEYWORD_STATIC = "static"
83
83
  TS_CPP_STORAGE_CLASS_SPECIFIER = "storage_class_specifier"
84
+ TS_CPP_TYPE_QUALIFIER = "type_qualifier"
84
85
  CPP_EXPORTED_CLASS_KEYWORDS = frozenset({CPP_KEYWORD_CLASS, CPP_KEYWORD_STRUCT})
85
86
 
86
87
  # A C/C++ class/struct/union tag with no body is a forward declaration
@@ -81,6 +81,11 @@ DART_NESTED_SCOPE_NODE_TYPES = frozenset(
81
81
  }
82
82
  )
83
83
  TS_DART_INITIALIZED_IDENTIFIER_LIST = "initialized_identifier_list"
84
+ TS_DART_STATIC_FINAL_DECLARATION_LIST = "static_final_declaration_list"
85
+ TS_DART_STATIC_FINAL_DECLARATION = "static_final_declaration"
86
+ TS_DART_CONST_BUILTIN = "const_builtin"
87
+ TS_DART_FINAL_BUILTIN = "final_builtin"
88
+ TS_DART_LATE = "late"
84
89
  TS_DART_INITIALIZED_IDENTIFIER = "initialized_identifier"
85
90
  TS_DART_INITIALIZED_VARIABLE_DEFINITION = "initialized_variable_definition"
86
91
  TS_DART_FORMAL_PARAMETER = "formal_parameter"
@@ -21,6 +21,9 @@ TS_FORMAL_PARAMETER = "formal_parameter"
21
21
  TS_SPREAD_PARAMETER = "spread_parameter"
22
22
  TS_LOCAL_VARIABLE_DECLARATION = "local_variable_declaration"
23
23
  TS_FIELD_DECLARATION = "field_declaration"
24
+ # An interface field. The grammar names it after what it implicitly is
25
+ # (`public static final`), so the keywords are usually absent from source.
26
+ TS_JAVA_CONSTANT_DECLARATION = "constant_declaration"
24
27
  TS_ASSIGNMENT_EXPRESSION = "assignment_expression"
25
28
 
26
29
  TS_OBJECT_CREATION_EXPRESSION = "object_creation_expression"
@@ -217,6 +217,7 @@ TS_PRIVATE_PROPERTY_IDENTIFIER = "private_property_identifier"
217
217
 
218
218
  TS_IMPORT_DECLARATION = "import_declaration"
219
219
  TS_STATIC = "static"
220
+ TS_READONLY = "readonly"
220
221
  TS_SCOPED_IDENTIFIER = "scoped_identifier"
221
222
  TS_ASTERISK = "asterisk"
222
223
 
@@ -32,6 +32,11 @@ TS_PHP_ATTRIBUTE_LIST = "attribute_list"
32
32
  TS_PHP_ATTRIBUTE = "attribute"
33
33
  TS_PHP_ATTRIBUTE_GROUP = "attribute_group"
34
34
  TS_PHP_VISIBILITY_MODIFIER = "visibility_modifier"
35
+ TS_PHP_STATIC_MODIFIER = "static_modifier"
36
+ TS_PHP_PROPERTY_DECLARATION = "property_declaration"
37
+ TS_PHP_PROPERTY_ELEMENT = "property_element"
38
+ TS_PHP_DECLARATION_LIST = "declaration_list"
39
+ TS_PHP_VARIABLE_NAME = "variable_name"
35
40
  TS_PHP_USE_DECLARATION = "use_declaration"
36
41
 
37
42
  # FLOWS_TO lean-walk node types (issue #1174). PHP variables carry a `$` prefix
@@ -62,6 +62,7 @@ TS_FIELD_OPERATORS = "operators"
62
62
  TS_PY_IF_STATEMENT = "if_statement"
63
63
  TS_PY_TRY_STATEMENT = "try_statement"
64
64
  TS_PY_GLOBAL_STATEMENT = "global_statement"
65
+ TS_PY_NONLOCAL_STATEMENT = "nonlocal_statement"
65
66
  # Match statement: arms are exclusive; an UNGUARDED `case _` (empty
66
67
  # case_pattern) always matches, removing the implicit no-match path.
67
68
  TS_PY_MATCH_STATEMENT = "match_statement"
@@ -76,6 +77,11 @@ TS_PY_DOTTED_NAME = "dotted_name"
76
77
  # `a | b` case alternatives; the bare `_` alternative is an ANONYMOUS
77
78
  # node, invisible to named_children.
78
79
  TS_PY_UNION_PATTERN = "union_pattern"
80
+ # `Foo(x=<pattern>)`, `*rest` / `**rest` inside a case pattern.
81
+ TS_PY_KEYWORD_PATTERN = "keyword_pattern"
82
+ TS_PY_SPLAT_PATTERN = "splat_pattern"
83
+ # `import x as y` / `from m import x as y`; the alias is a local binding.
84
+ TS_PY_ALIASED_IMPORT = "aliased_import"
79
85
  TS_PY_WILDCARD_NODE = "_"
80
86
  TS_PY_WHILE_STATEMENT = "while_statement"
81
87
  TS_PY_ELIF_CLAUSE = "elif_clause"
@@ -84,6 +90,7 @@ TS_PY_EXCEPT_CLAUSE = "except_clause"
84
90
  TS_PY_FINALLY_CLAUSE = "finally_clause"
85
91
  TS_PY_CONDITIONAL_EXPRESSION = "conditional_expression"
86
92
  TS_PY_BOOLEAN_OPERATOR = "boolean_operator"
93
+ TS_PY_BINARY_OPERATOR = "binary_operator"
87
94
  TS_PY_NOT_OPERATOR = "not_operator"
88
95
  TS_FIELD_CONDITION = "condition"
89
96
  TS_FIELD_CONSEQUENCE = "consequence"
@@ -92,6 +99,25 @@ TS_FIELD_ARGUMENT = "argument"
92
99
  # Python operator syntax dispatches to dunder methods at runtime; these names
93
100
  # let the call extractor synthesise the implied <operand>.__dunder__ call.
94
101
  PY_OP_IN = "in"
102
+ PY_OP_AND = "and"
103
+ # `left <op> right` dispatches to `left.__dunder__`, so the expression's type is
104
+ # whatever that method returns -- which an overloaded operator can make a
105
+ # different class from either operand (`Factory / Config -> Product`).
106
+ PY_BINARY_OPERATOR_DUNDERS: dict[str, str] = {
107
+ "+": "__add__",
108
+ "-": "__sub__",
109
+ "*": "__mul__",
110
+ "/": "__truediv__",
111
+ "//": "__floordiv__",
112
+ "%": "__mod__",
113
+ "@": "__matmul__",
114
+ "**": "__pow__",
115
+ "|": "__or__",
116
+ "&": "__and__",
117
+ "^": "__xor__",
118
+ "<<": "__lshift__",
119
+ ">>": "__rshift__",
120
+ }
95
121
  PY_BUILTIN_LEN = "len"
96
122
  PY_BUILTIN_GETATTR = "getattr"
97
123
  TS_PY_STRING_CONTENT = "string_content"
@@ -138,6 +164,8 @@ PY_METHOD_INIT = "__init__"
138
164
  DECORATOR_AT = "@"
139
165
  PROPERTY_DECORATORS: frozenset[str] = frozenset({"property", "cached_property"})
140
166
  ABSTRACT_DECORATORS: frozenset[str] = frozenset({"abstractmethod", "abstractproperty"})
167
+ # A static method takes no receiver: a first parameter named `self` is explicit.
168
+ STATIC_DECORATORS: frozenset[str] = frozenset({"staticmethod"})
141
169
 
142
170
  # Eager builtins that invoke a callable argument synchronously in the caller's
143
171
  # stack frame, so the trace attributes the call to the enclosing function (no
@@ -81,6 +81,7 @@ TS_RS_MUTABLE_SPECIFIER = "mutable_specifier"
81
81
  TS_RS_STRUCT_EXPRESSION = "struct_expression"
82
82
  TS_RS_FIELD_DECLARATION_LIST = "field_declaration_list"
83
83
  TS_RS_FIELD_DECLARATION = "field_declaration"
84
+ TS_RS_VISIBILITY_MODIFIER = "visibility_modifier"
84
85
  TS_RS_FIELD_IDENTIFIER = "field_identifier"
85
86
  TS_RS_MATCH_EXPRESSION = "match_expression"
86
87
  TS_RS_MATCH_ARM = "match_arm"
@@ -34,6 +34,7 @@ TS_SCALA_BLOCK = "block"
34
34
  TS_SCALA_TEMPLATE_BODY = "template_body"
35
35
  TS_SCALA_VAL_DEFINITION = "val_definition"
36
36
  TS_SCALA_VAR_DEFINITION = "var_definition"
37
+ TS_SCALA_ACCESS_MODIFIER = "access_modifier"
37
38
  TS_SCALA_LAMBDA_EXPRESSION = "lambda_expression"
38
39
  TS_SCALA_IDENTIFIER = "identifier"
39
40
  TS_SCALA_INSTANCE_EXPRESSION = "instance_expression"
@@ -539,6 +539,10 @@ EDIT_RESERVED_PATH = "Path is cgr state, not part of the tree: {path}"
539
539
  EDIT_TRANSACTION_FINISHED = "This transaction has already been committed or rolled back"
540
540
  EDIT_CONFLICT = "File changed since it was staged; transaction refused: {path}"
541
541
  EDIT_NOTHING_STAGED = "Nothing staged; the working tree is untouched"
542
+ EDIT_NOT_NEWEST = (
543
+ "Transaction {transaction_id} is not the newest recorded edit ({newest}); "
544
+ "undo the later edit first"
545
+ )
542
546
  EDIT_VERIFICATION_FAILED = (
543
547
  "Verification failed; the working tree is untouched: {reason}"
544
548
  )
@@ -577,6 +581,44 @@ RENAME_STRUCTURAL_UNLOCATABLE = (
577
581
  )
578
582
  RENAME_PLANNED = "{count} site(s) would be rewritten"
579
583
  RENAME_PARSE_FAILED = "Rename rolled back: {files} would no longer parse"
584
+ RENAME_CONTRACT_FAILED = "Rename rolled back, postcondition failed: {reasons}"
585
+ RENAME_ROLLBACK_REFUSED = (
586
+ "Rename failed its postcondition ({reasons}) and was not rolled back "
587
+ "({error}); renamed files may remain modified; check the working tree"
588
+ )
589
+ RENAME_ROLLBACK_UNKNOWN = (
590
+ "Rename kept: its postcondition failed ({reasons}) and its transaction is "
591
+ "no longer in the edit history, so whether it was already reversed cannot "
592
+ "be told from a truncated history; check the working tree"
593
+ )
594
+ RENAME_ROLLBACK_ALREADY_UNDONE = (
595
+ "Rename rolled back: its postcondition failed ({reasons}) and its "
596
+ "transaction had already been reversed by another actor, so the files "
597
+ "were restored without this rollback doing it"
598
+ )
599
+ RENAME_ROLLBACK_UNMEASURED = (
600
+ "Rename rolled back after its postcondition failed ({reasons}), but the "
601
+ "graph could not be re-ingested afterwards ({error}); rebuild the graph "
602
+ "before the next graph-backed operation"
603
+ )
604
+ RENAME_CONTRACT_UNMEASURED = (
605
+ "Rename applied, but its postcondition could not be measured: {error}"
606
+ )
607
+ # Postcondition contract (issue #1531).
608
+ CONTRACT_OP_RENAME = "rename"
609
+ CONTRACT_OP_CHANGE_SIGNATURE = "change_signature"
610
+ CONTRACT_OP_MOVE = "move"
611
+ CONTRACT_RENAME_MISSING = "{old} was not renamed to {new}"
612
+ CONTRACT_RENAME_UNEXPECTED = "unexpected rename: {pairs}"
613
+ CONTRACT_SYMBOLS_MOVED = "symbol set changed: added {added}; removed {removed}"
614
+ CONTRACT_CALLERS_MOVED = "call site count changed: {before} before, {after} after"
615
+ CONTRACT_DANGLING = "dangling callers: {sites}"
616
+ CONTRACT_SITES_UNMAPPED = "call sites neither mapped nor listed as unmapped: {sites}"
617
+ CONTRACT_HEURISTIC_REWRITTEN = "sites resolved by guesswork were rewritten: {sites}"
618
+ CONTRACT_NEW_CYCLE = "new import cycle: {cycles}"
619
+ CONTRACT_STALE_IMPORTER = "importers still target the old module: {sites}"
620
+ CONTRACT_NEW_DUPLICATE = "new duplicate: {pairs}"
621
+ CONTRACT_PARSE_FAILED = "files no longer parse: {files}"
580
622
  MSG_SURGICAL_FAILED = (
581
623
  "Failed to apply surgical replacement in {path}. "
582
624
  "Target code not found or patches failed."
@@ -5,6 +5,18 @@ from enum import StrEnum
5
5
  INIT_PY = "__init__.py"
6
6
 
7
7
  ENCODING_UTF8 = "utf-8"
8
+ # Any UTF encoding can carry the whole of Unicode; the check Rich itself
9
+ # uses to decide whether a stream can show box-drawing characters.
10
+ ENCODING_UTF_PREFIX = "utf"
11
+ # Longest UTF-8 sequence, so a window this size either side of a name spans
12
+ # any single character that could legitimately sit next to it.
13
+ UTF8_MAX_SEQUENCE_BYTES = 4
14
+ # Sigils an ingestor prepends to a synthesized symbol name (a C# destructor
15
+ # is stored as `~Greeter` while the source leaf is `Greeter`).
16
+ SYNTHETIC_NAME_PREFIXES = "~"
17
+ # What `errors="replace"` substitutes for an undecodable byte. Its presence
18
+ # in an extracted symbol name means the name is damaged.
19
+ UNICODE_REPLACEMENT_CHAR = "\ufffd"
8
20
 
9
21
  ARG_TARGET_CODE = "target_code"
10
22
  ARG_REPLACEMENT_CODE = "replacement_code"
@@ -188,6 +200,14 @@ CGR_STATE_FILENAMES: frozenset[str] = frozenset(
188
200
  )
189
201
  # Edit transactions (issue #1528).
190
202
  EDIT_HISTORY_LIMIT = 50
203
+
204
+ # What a TransactionConflict means for a rename's rollback. Absence from the
205
+ # history is only evidence of an undo while the history has not reached its
206
+ # retention limit; at the limit an entry can have been EVICTED with its
207
+ # rename still on disk.
208
+ RENAME_UNDO_STACKED = "stacked"
209
+ RENAME_UNDO_UNDONE = "undone"
210
+ RENAME_UNDO_UNKNOWN = "unknown"
191
211
  EDIT_TRANSACTION_ID_LENGTH = 12
192
212
  EDIT_STAGING_PREFIX = "cgr-edit-"
193
213
  DIFF_DEV_NULL = "/dev/null"