code-graph-rag 0.3.2__tar.gz → 0.3.13__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 (466) hide show
  1. {code_graph_rag-0.3.2/code_graph_rag.egg-info → code_graph_rag-0.3.13}/PKG-INFO +4 -1
  2. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/README.md +6 -1
  3. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13/code_graph_rag.egg-info}/PKG-INFO +4 -1
  4. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/code_graph_rag.egg-info/SOURCES.txt +5 -0
  5. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/code_graph_rag.egg-info/requires.txt +3 -0
  6. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/cli.py +13 -0
  7. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/cli_help.py +39 -0
  8. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/__init__.py +1 -0
  9. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_rust.py +8 -0
  10. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/languages.py +1 -1
  11. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/mcp.py +6 -0
  12. code_graph_rag-0.3.13/codebase_rag/constants/port.py +88 -0
  13. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/rename.py +29 -13
  14. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/sites.py +5 -3
  15. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/graph_updater.py +126 -55
  16. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/logs.py +5 -0
  17. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/mcp/tools.py +35 -4
  18. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/call_processor.py +64 -3
  19. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp/preproc_recovery.py +5 -0
  20. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/definition_processor.py +64 -0
  21. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/export_detection.py +5 -0
  22. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/factory.py +1 -0
  23. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/rs/type_inference.py +123 -4
  24. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/rs/utils.py +11 -3
  25. code_graph_rag-0.3.13/codebase_rag/parsers/sql_ddl.py +267 -0
  26. code_graph_rag-0.3.13/codebase_rag/parsers/sql_recovery.py +343 -0
  27. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/type_inference.py +6 -2
  28. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/utils.py +49 -0
  29. code_graph_rag-0.3.13/codebase_rag/port_cli.py +97 -0
  30. code_graph_rag-0.3.13/codebase_rag/port_parity.py +715 -0
  31. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/__init__.py +9 -0
  32. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/protobuf_service.py +17 -0
  33. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/structural_delta.py +13 -3
  34. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codec/schema.proto +82 -0
  35. code_graph_rag-0.3.13/codec/schema_pb2.py +95 -0
  36. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codec/schema_pb2.pyi +144 -20
  37. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/pyproject.toml +10 -1
  38. code_graph_rag-0.3.2/codec/schema_pb2.py +0 -95
  39. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/LICENSE +0 -0
  40. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/PYPI_README.md +0 -0
  41. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/cgr/__init__.py +0 -0
  42. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  43. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/code_graph_rag.egg-info/entry_points.txt +0 -0
  44. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/code_graph_rag.egg-info/top_level.txt +0 -0
  45. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/__init__.py +0 -0
  46. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/_cli_env.py +0 -0
  47. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/__init__.py +0 -0
  48. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  49. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  50. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  51. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  52. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  53. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  54. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  55. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  56. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  57. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  58. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  59. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  60. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  61. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  62. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  63. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  64. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  65. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  66. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  67. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  68. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  69. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  70. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  71. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  72. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  73. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  74. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  75. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  76. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  77. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  78. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  79. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  80. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  81. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  82. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  83. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  84. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  85. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  86. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  87. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  88. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  89. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  90. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  91. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  92. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  93. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  94. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/ast_cache.py +0 -0
  95. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/capture.py +0 -0
  96. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/check_isolation.py +0 -0
  97. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/checkout_state.py +0 -0
  98. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/cli_runtime.py +0 -0
  99. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/config.py +0 -0
  100. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/console_marks.py +0 -0
  101. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_cpp.py +0 -0
  102. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_csharp.py +0 -0
  103. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_dart.py +0 -0
  104. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_go.py +0 -0
  105. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_java.py +0 -0
  106. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_js.py +0 -0
  107. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_julia.py +0 -0
  108. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_lua.py +0 -0
  109. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_nodes.py +0 -0
  110. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_php.py +0 -0
  111. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_python.py +0 -0
  112. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_scala.py +0 -0
  113. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/ast_sql.py +0 -0
  114. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/build.py +0 -0
  115. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/cli.py +0 -0
  116. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/core.py +0 -0
  117. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/deadcode_roots.py +0 -0
  118. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/deps.py +0 -0
  119. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/duplicates.py +0 -0
  120. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/embedded_graph.py +0 -0
  121. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/fqn_specs.py +0 -0
  122. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/graph.py +0 -0
  123. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/health.py +0 -0
  124. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/interface.py +0 -0
  125. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/lang_tooling.py +0 -0
  126. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/notebook.py +0 -0
  127. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/providers.py +0 -0
  128. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/security.py +0 -0
  129. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/sqlite_vectors.py +0 -0
  130. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/stdlib_types.py +0 -0
  131. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/structural.py +0 -0
  132. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/constants/trace.py +0 -0
  133. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/context_pruning.py +0 -0
  134. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/context_slice.py +0 -0
  135. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/crash_correlation.py +0 -0
  136. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/cypher_queries.py +0 -0
  137. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/dead_code.py +0 -0
  138. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/decorators.py +0 -0
  139. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/docker-compose.yaml +0 -0
  140. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/duplicates.py +0 -0
  141. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/__init__.py +0 -0
  142. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/cli.py +0 -0
  143. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/contract.py +0 -0
  144. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/import_paths.py +0 -0
  145. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/imports.py +0 -0
  146. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/occurrences.py +0 -0
  147. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/patcher.py +0 -0
  148. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/signature_bind.py +0 -0
  149. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/signature_contract.py +0 -0
  150. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/signature_spec.py +0 -0
  151. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editing/transaction.py +0 -0
  152. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/editor_links.py +0 -0
  153. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/__init__.py +0 -0
  154. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/compiler.py +0 -0
  155. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/connection.py +0 -0
  156. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/cypher_ast.py +0 -0
  157. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/executor.py +0 -0
  158. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/expressions.py +0 -0
  159. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/extension.py +0 -0
  160. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/functions.py +0 -0
  161. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/lexer.py +0 -0
  162. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/limits.py +0 -0
  163. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/native.py +0 -0
  164. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/parser.py +0 -0
  165. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/procedures.py +0 -0
  166. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/sql.py +0 -0
  167. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/store.py +0 -0
  168. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedded_graph/types.py +0 -0
  169. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/embedder.py +0 -0
  170. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/exceptions.py +0 -0
  171. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/flow_verdict.py +0 -0
  172. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/function_registry.py +0 -0
  173. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/gloss.py +0 -0
  174. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/gloss_anchor.py +0 -0
  175. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/gloss_repair.py +0 -0
  176. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/graph_audit.py +0 -0
  177. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/graph_cli.py +0 -0
  178. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/graph_dialects.py +0 -0
  179. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/graph_loader.py +0 -0
  180. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/graph_query.py +0 -0
  181. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/interface_skip.py +0 -0
  182. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/language_spec.py +0 -0
  183. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/main.py +0 -0
  184. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/mcp/__init__.py +0 -0
  185. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/mcp/client.py +0 -0
  186. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/mcp/server.py +0 -0
  187. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/mgclient_compat.py +0 -0
  188. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/mgclient_probe.py +0 -0
  189. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/models.py +0 -0
  190. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parser_fingerprint.py +0 -0
  191. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parser_loader.py +0 -0
  192. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/__init__.py +0 -0
  193. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/anchor_hash.py +0 -0
  194. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_fingerprint.py +0 -0
  195. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  196. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  197. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
  198. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  199. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  200. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  201. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  202. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  203. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_grep_scope.py +0 -0
  204. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/ast_grep_tier.py +0 -0
  205. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/build_lock.py +0 -0
  206. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/call_resolver.py +0 -0
  207. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  208. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/class_ingest/base_targets.py +0 -0
  209. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  210. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/class_ingest/identity.py +0 -0
  211. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
  212. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/class_ingest/mixin.py +0 -0
  213. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  214. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/class_ingest/parent_extraction.py +0 -0
  215. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  216. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  217. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/contract_linking.py +0 -0
  218. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/contracts.py +0 -0
  219. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp/__init__.py +0 -0
  220. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp/class_macro.py +0 -0
  221. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp/function_values.py +0 -0
  222. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp/local_types.py +0 -0
  223. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp/overloads.py +0 -0
  224. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp/trailing_annotation.py +0 -0
  225. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp/type_inference.py +0 -0
  226. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp/utils.py +0 -0
  227. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  228. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  229. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp_frontend/frontend.py +0 -0
  230. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
  231. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/csharp/__init__.py +0 -0
  232. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/csharp/arity.py +0 -0
  233. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/csharp/type_inference.py +0 -0
  234. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/csharp/utils.py +0 -0
  235. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  236. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
  237. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  238. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  239. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  240. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/dart/__init__.py +0 -0
  241. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/dart/package_paths.py +0 -0
  242. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/dart/type_inference.py +0 -0
  243. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/dart/utils.py +0 -0
  244. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/definition_docstring.py +0 -0
  245. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/dependency_parser.py +0 -0
  246. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/dispatch_registry.py +0 -0
  247. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/document_tier.py +0 -0
  248. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
  249. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/endpoint_routes.py +0 -0
  250. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/endpoints.py +0 -0
  251. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/enum_variants.py +0 -0
  252. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/field_nodes.py +0 -0
  253. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/flat_module.py +0 -0
  254. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  255. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/flow_access/constants.py +0 -0
  256. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/flow_access/processor.py +0 -0
  257. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/frontend_mode.py +0 -0
  258. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/frontends/__init__.py +0 -0
  259. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/frontends/cpp.py +0 -0
  260. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/frontends/csharp.py +0 -0
  261. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/frontends/go.py +0 -0
  262. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/frontends/java.py +0 -0
  263. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/frontends/protocol.py +0 -0
  264. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/frontends/python.py +0 -0
  265. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/frontends/registry.py +0 -0
  266. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/function_ingest.py +0 -0
  267. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go/__init__.py +0 -0
  268. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go/builds.py +0 -0
  269. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go/interface_ingest.py +0 -0
  270. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go/interfaces.py +0 -0
  271. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go/link_state.py +0 -0
  272. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go/module_paths.py +0 -0
  273. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go/type_inference.py +0 -0
  274. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go/utils.py +0 -0
  275. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  276. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  277. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
  278. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
  279. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
  280. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/__init__.py +0 -0
  281. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/base.py +0 -0
  282. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/cpp.py +0 -0
  283. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/java.py +0 -0
  284. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/js_ts.py +0 -0
  285. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/julia.py +0 -0
  286. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/lua.py +0 -0
  287. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/php.py +0 -0
  288. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/protocol.py +0 -0
  289. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/python.py +0 -0
  290. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/registry.py +0 -0
  291. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/handlers/rust.py +0 -0
  292. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/import_processor.py +0 -0
  293. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/interface_fingerprint.py +0 -0
  294. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/io_access/__init__.py +0 -0
  295. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/io_access/constants.py +0 -0
  296. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  297. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/io_access/extract.py +0 -0
  298. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/io_access/models.py +0 -0
  299. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/io_access/processor.py +0 -0
  300. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/io_access/registry.py +0 -0
  301. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/io_access/resource_names.py +0 -0
  302. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/io_access/url_folding.py +0 -0
  303. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java/__init__.py +0 -0
  304. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java/method_resolver.py +0 -0
  305. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java/type_inference.py +0 -0
  306. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java/type_resolver.py +0 -0
  307. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java/utils.py +0 -0
  308. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java/variable_analyzer.py +0 -0
  309. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  310. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  311. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  312. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java_generated.py +0 -0
  313. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/java_lombok.py +0 -0
  314. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  315. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/js_ts/commonjs_exports.py +0 -0
  316. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/js_ts/ingest.py +0 -0
  317. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
  318. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/js_ts/module_system.py +0 -0
  319. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/js_ts/overloads.py +0 -0
  320. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/js_ts/reexports.py +0 -0
  321. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
  322. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/js_ts/utils.py +0 -0
  323. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/julia/__init__.py +0 -0
  324. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/julia/utils.py +0 -0
  325. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/lua/__init__.py +0 -0
  326. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/lua/type_inference.py +0 -0
  327. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/lua/utils.py +0 -0
  328. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/module_docstring.py +0 -0
  329. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/notebook.py +0 -0
  330. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/parameter_nodes.py +0 -0
  331. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/php/__init__.py +0 -0
  332. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/php/class_names.py +0 -0
  333. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/php/namespaces.py +0 -0
  334. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/php/utils.py +0 -0
  335. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/positional_params.py +0 -0
  336. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/__init__.py +0 -0
  337. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
  338. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/class_aliases.py +0 -0
  339. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
  340. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/forward_refs.py +0 -0
  341. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/overloads.py +0 -0
  342. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/receiver_rebinding.py +0 -0
  343. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/type_inference.py +0 -0
  344. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/utils.py +0 -0
  345. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
  346. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py/with_analyzer.py +0 -0
  347. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  348. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  349. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/python_source_roots.py +0 -0
  350. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/rpc_exposure.py +0 -0
  351. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/rs/__init__.py +0 -0
  352. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/rs/cargo_semver.py +0 -0
  353. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/scala/__init__.py +0 -0
  354. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/scala/utils.py +0 -0
  355. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/semantic_call_join.py +0 -0
  356. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/stdlib_extractor.py +0 -0
  357. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/string_call.py +0 -0
  358. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/structure_processor.py +0 -0
  359. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/parsers/type_facts.py +0 -0
  360. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/path_filters.py +0 -0
  361. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/project_selection.py +0 -0
  362. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/prompts.py +0 -0
  363. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/providers/__init__.py +0 -0
  364. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/providers/base.py +0 -0
  365. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/providers/litellm.py +0 -0
  366. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/queries/highlights/c_sharp.scm +0 -0
  367. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/queries/highlights/dart.scm +0 -0
  368. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/queries/highlights/java.scm +0 -0
  369. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/queries/highlights/javascript.scm +0 -0
  370. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/queries/highlights/julia.scm +0 -0
  371. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/queries/highlights/php.scm +0 -0
  372. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/queries/highlights/python.scm +0 -0
  373. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/queries/highlights/rust.scm +0 -0
  374. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/queries/highlights/typescript.scm +0 -0
  375. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/readme_sections.py +0 -0
  376. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/schema_builder.py +0 -0
  377. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/schema_parse.py +0 -0
  378. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/schemas.py +0 -0
  379. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/anthropic_token_counter.py +0 -0
  380. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/cypher_guard.py +0 -0
  381. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/filtering.py +0 -0
  382. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/gloss_cleanup.py +0 -0
  383. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/graph_diff.py +0 -0
  384. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/graph_service.py +0 -0
  385. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/llm.py +0 -0
  386. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/neo4j_driver.py +0 -0
  387. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/provenance.py +0 -0
  388. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/resource_cleanup.py +0 -0
  389. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/services/usage_cost.py +0 -0
  390. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/sql_names.py +0 -0
  391. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/sqlite_vectors.py +0 -0
  392. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/stack/__init__.py +0 -0
  393. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/stack/cli.py +0 -0
  394. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/stack/constants.py +0 -0
  395. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/stack/health.py +0 -0
  396. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/stack/manager.py +0 -0
  397. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/structural_check.py +0 -0
  398. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/sync_guard.py +0 -0
  399. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/sync_lock.py +0 -0
  400. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/taint.py +0 -0
  401. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tool_errors.py +0 -0
  402. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/__init__.py +0 -0
  403. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/ast_grep_service.py +0 -0
  404. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/code_retrieval.py +0 -0
  405. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/codebase_query.py +0 -0
  406. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/directory_lister.py +0 -0
  407. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/duplicate_detection.py +0 -0
  408. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/file_editor.py +0 -0
  409. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/file_reader.py +0 -0
  410. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/file_writer.py +0 -0
  411. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/graph_refresh.py +0 -0
  412. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/graph_rerank.py +0 -0
  413. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/health_checker.py +0 -0
  414. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/language.py +0 -0
  415. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/language_catalog.py +0 -0
  416. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/research.py +0 -0
  417. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/semantic_search.py +0 -0
  418. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/shell_command.py +0 -0
  419. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/structural_editor.py +0 -0
  420. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/structural_search.py +0 -0
  421. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/tool_descriptions.py +0 -0
  422. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tools/web_search.py +0 -0
  423. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/__init__.py +0 -0
  424. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/carry.py +0 -0
  425. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/cli.py +0 -0
  426. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/cpuprofile.py +0 -0
  427. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/dispatch_site.py +0 -0
  428. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/ebpf_pprof.py +0 -0
  429. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/ingest.py +0 -0
  430. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/instrumented.py +0 -0
  431. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/pprof.py +0 -0
  432. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/pytest_plugin.py +0 -0
  433. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/records.py +0 -0
  434. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/resolution.py +0 -0
  435. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/rust_pprof.py +0 -0
  436. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/sourcemap.py +0 -0
  437. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/speedscope.py +0 -0
  438. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/tracer.py +0 -0
  439. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/trace/xdebug.py +0 -0
  440. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/tree_sitter_point.py +0 -0
  441. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/types_defs.py +0 -0
  442. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/unixcoder.py +0 -0
  443. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/__init__.py +0 -0
  444. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/cpp_signatures.py +0 -0
  445. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/dependencies.py +0 -0
  446. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/endpoints.py +0 -0
  447. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/fqn_resolver.py +0 -0
  448. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/interruptible_thread.py +0 -0
  449. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/json_io.py +0 -0
  450. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/path_utils.py +0 -0
  451. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/process_owner.py +0 -0
  452. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/qn_markers.py +0 -0
  453. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/rich_markdown.py +0 -0
  454. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/source_encoding.py +0 -0
  455. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/source_extraction.py +0 -0
  456. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/terminal_console.py +0 -0
  457. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/utils/token_utils.py +0 -0
  458. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/vector_store.py +0 -0
  459. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/watch.py +0 -0
  460. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/workspaces/__init__.py +0 -0
  461. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/workspaces/cli.py +0 -0
  462. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/workspaces/constants.py +0 -0
  463. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/workspaces/models.py +0 -0
  464. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codebase_rag/workspaces/storage.py +0 -0
  465. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/codec/__init__.py +0 -0
  466. {code_graph_rag-0.3.2 → code_graph_rag-0.3.13}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.3.2
3
+ Version: 0.3.13
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
@@ -38,6 +38,7 @@ Requires-Dist: defusedxml>=0.7.1
38
38
  Requires-Dist: huggingface-hub[hf-xet]>=1.7.2
39
39
  Requires-Dist: pathspec>=1.0.4
40
40
  Requires-Dist: pygments>=2.20.0
41
+ Requires-Dist: certifi>=2026.10.23
41
42
  Requires-Dist: regex>=2024.11.6
42
43
  Requires-Dist: cgr-graph-rs<0.2,>=0.1.0; platform_python_implementation == "CPython" and ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64"))
43
44
  Provides-Extra: test
@@ -78,11 +79,13 @@ Requires-Dist: tree-sitter-sql>=0.3.11; extra == "treesitter-full"
78
79
  Requires-Dist: tree-sitter-markdown>=0.5.1; extra == "treesitter-full"
79
80
  Provides-Extra: semantic
80
81
  Requires-Dist: qdrant-client>=1.9.0; extra == "semantic"
82
+ Requires-Dist: grpcio>=1.84.1; extra == "semantic"
81
83
  Requires-Dist: sqlite-vec>=0.1.9; ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64")) and extra == "semantic"
82
84
  Requires-Dist: torch>=2.6.0; extra == "semantic"
83
85
  Requires-Dist: transformers>=5.0.0; extra == "semantic"
84
86
  Provides-Extra: milvus
85
87
  Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
88
+ Requires-Dist: grpcio>=1.84.1; extra == "milvus"
86
89
  Provides-Extra: sqlite-vec
87
90
  Requires-Dist: sqlite-vec>=0.1.9; extra == "sqlite-vec"
88
91
  Provides-Extra: ast-grep
@@ -61,7 +61,11 @@ 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
- - **SBOM**: CycloneDX SBOM and Docker image attestation published with each release.
64
+ - **Security Enhancements**: Incorporates an OSS Scanner build image and threat model.
65
+ - **Data Export**: Ensures all node properties within the graph are exported.
66
+ - **SQL Fixes**: Addresses several SQL-related issues including grammar errors and dead-code roots.
67
+ - **Rust Fixes**: Improves indexing of methods and handling of types in Rust code.
68
+ - **Build Fixes**: Repairs build issues related to eMudhra root certificates and distrusted components.
65
69
  <!-- /SECTION:latest_news -->
66
70
 
67
71
  See [NEWS.md](NEWS.md) for the full history.
@@ -188,6 +192,7 @@ Code-Graph-RAG runs as an [MCP](https://modelcontextprotocol.io) server so Claud
188
192
  - [Real-Time Updates](docs/guide/realtime-updates.md)
189
193
  - [C/C++ Semantic Mode](docs/guide/cpp-semantic-mode.md)
190
194
  - [MCP Server](docs/guide/mcp-server.md)
195
+ - [Porting Between Languages](docs/guide/porting.md)
191
196
 
192
197
  **Architecture**
193
198
  - [Overview](docs/architecture/overview.md)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.3.2
3
+ Version: 0.3.13
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
@@ -38,6 +38,7 @@ Requires-Dist: defusedxml>=0.7.1
38
38
  Requires-Dist: huggingface-hub[hf-xet]>=1.7.2
39
39
  Requires-Dist: pathspec>=1.0.4
40
40
  Requires-Dist: pygments>=2.20.0
41
+ Requires-Dist: certifi>=2026.10.23
41
42
  Requires-Dist: regex>=2024.11.6
42
43
  Requires-Dist: cgr-graph-rs<0.2,>=0.1.0; platform_python_implementation == "CPython" and ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64"))
43
44
  Provides-Extra: test
@@ -78,11 +79,13 @@ Requires-Dist: tree-sitter-sql>=0.3.11; extra == "treesitter-full"
78
79
  Requires-Dist: tree-sitter-markdown>=0.5.1; extra == "treesitter-full"
79
80
  Provides-Extra: semantic
80
81
  Requires-Dist: qdrant-client>=1.9.0; extra == "semantic"
82
+ Requires-Dist: grpcio>=1.84.1; extra == "semantic"
81
83
  Requires-Dist: sqlite-vec>=0.1.9; ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64")) and extra == "semantic"
82
84
  Requires-Dist: torch>=2.6.0; extra == "semantic"
83
85
  Requires-Dist: transformers>=5.0.0; extra == "semantic"
84
86
  Provides-Extra: milvus
85
87
  Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
88
+ Requires-Dist: grpcio>=1.84.1; extra == "milvus"
86
89
  Provides-Extra: sqlite-vec
87
90
  Requires-Dist: sqlite-vec>=0.1.9; extra == "sqlite-vec"
88
91
  Provides-Extra: ast-grep
@@ -52,6 +52,8 @@ codebase_rag/models.py
52
52
  codebase_rag/parser_fingerprint.py
53
53
  codebase_rag/parser_loader.py
54
54
  codebase_rag/path_filters.py
55
+ codebase_rag/port_cli.py
56
+ codebase_rag/port_parity.py
55
57
  codebase_rag/project_selection.py
56
58
  codebase_rag/prompts.py
57
59
  codebase_rag/readme_sections.py
@@ -148,6 +150,7 @@ codebase_rag/constants/lang_tooling.py
148
150
  codebase_rag/constants/languages.py
149
151
  codebase_rag/constants/mcp.py
150
152
  codebase_rag/constants/notebook.py
153
+ codebase_rag/constants/port.py
151
154
  codebase_rag/constants/providers.py
152
155
  codebase_rag/constants/security.py
153
156
  codebase_rag/constants/sqlite_vectors.py
@@ -223,6 +226,8 @@ codebase_rag/parsers/positional_params.py
223
226
  codebase_rag/parsers/python_source_roots.py
224
227
  codebase_rag/parsers/rpc_exposure.py
225
228
  codebase_rag/parsers/semantic_call_join.py
229
+ codebase_rag/parsers/sql_ddl.py
230
+ codebase_rag/parsers/sql_recovery.py
226
231
  codebase_rag/parsers/stdlib_extractor.py
227
232
  codebase_rag/parsers/string_call.py
228
233
  codebase_rag/parsers/structure_processor.py
@@ -18,6 +18,7 @@ defusedxml>=0.7.1
18
18
  huggingface-hub[hf-xet]>=1.7.2
19
19
  pathspec>=1.0.4
20
20
  pygments>=2.20.0
21
+ certifi>=2026.10.23
21
22
  regex>=2024.11.6
22
23
 
23
24
  [:platform_python_implementation == "CPython" and ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64"))]
@@ -35,6 +36,7 @@ pymgclient>=1.6.0
35
36
 
36
37
  [milvus]
37
38
  pymilvus[milvus-lite]>=3.0.0
39
+ grpcio>=1.84.1
38
40
 
39
41
  [neo4j]
40
42
  neo4j>=5.28.1
@@ -44,6 +46,7 @@ jedi>=0.19
44
46
 
45
47
  [semantic]
46
48
  qdrant-client>=1.9.0
49
+ grpcio>=1.84.1
47
50
  torch>=2.6.0
48
51
  transformers>=5.0.0
49
52
 
@@ -59,6 +59,7 @@ from .editor_links import (
59
59
  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
+ from .port_cli import cli as port_cli
62
63
  from .project_selection import ProjectChoice, choose_project, scope_refusal
63
64
  from .services.gloss_cleanup import prune_orphaned_glosses
64
65
  from .services.graph_diff import DiffError, diff_indexes, diff_is_empty
@@ -2176,6 +2177,18 @@ def graph_command(ctx: typer.Context) -> None:
2176
2177
  _run_delegated_group(graph_cli, ctx)
2177
2178
 
2178
2179
 
2180
+ @app.command(
2181
+ name=ch.CLICommandName.PORT,
2182
+ help=ch.CMD_PORT,
2183
+ short_help=ch.CMD_PORT,
2184
+ add_help_option=False,
2185
+ context_settings=_DELEGATED_GROUP_CONTEXT,
2186
+ rich_help_panel=ch.PANEL_USE,
2187
+ )
2188
+ def port_command(ctx: typer.Context) -> None:
2189
+ _run_delegated_group(port_cli, ctx)
2190
+
2191
+
2179
2192
  @app.command(
2180
2193
  name=ch.CLICommandName.CHECK,
2181
2194
  help=ch.CMD_CHECK,
@@ -23,6 +23,7 @@ class CLICommandName(StrEnum):
23
23
  CHECK = "check"
24
24
  RENAME = "rename"
25
25
  CONTEXT = "context"
26
+ PORT = "port"
26
27
  STOP = "stop"
27
28
  STATUS = "status"
28
29
  HELP = "help"
@@ -206,6 +207,43 @@ EXAMPLES_CONTEXT = (
206
207
  )
207
208
  HELP_CONTEXT_TARGET = "Qualified name, bare name, path:line, or a free-text task."
208
209
  HELP_CONTEXT_BUDGET = "Token budget for the slice."
210
+ CMD_PORT = "Judge a port between languages: pair the functions of two implementations and compare their calls and arity, as JSON, no LLM."
211
+ CMD_PORT_GROUP = CMD_PORT
212
+ CMD_PORT_CHECK = (
213
+ "Pair the functions and methods under OLD_SCOPE with those under "
214
+ "NEW_SCOPE (paths relative to the repository root) and judge each pair "
215
+ "MATCH, DIFFERS or UNKNOWN on the first-party calls it makes and its "
216
+ "positional arity; unpaired and ambiguous definitions are listed."
217
+ )
218
+ EPILOG_PORT = "Run 'cgr help port COMMAND' for command-specific help."
219
+ # `\b` opens a paragraph click prints as written instead of rewrapping it,
220
+ # which keeps one example per line.
221
+ EPILOG_PORT_CHECK = (
222
+ "\b\nExamples:\n cgr port check src/legacy src/rewrite\n"
223
+ " cgr port check codebase_rag/embedded_graph rust/cgr_graph_rs/src "
224
+ "--fail-on-found\n"
225
+ " cgr port check py rs --pair py.lexer._lex=rs.lexer.tokenize\n\n"
226
+ "Exit status: 0 with the JSON report; 1 with --fail-on-found when a pair "
227
+ "DIFFERS; 2 when the scopes overlap or a --pair is malformed or repeated; "
228
+ "3 when a project is not indexed; 4 when a scope holds no function or "
229
+ "method, or a --pair names none or several."
230
+ )
231
+ HELP_PORT_NEW_PROJECT = (
232
+ "Project holding NEW_SCOPE, when the new implementation was indexed as a "
233
+ "project of its own (default: the project of OLD_SCOPE)."
234
+ )
235
+ HELP_PORT_PAIR = (
236
+ "Pair two definitions explicitly, OLD=NEW, each a qualified name or a "
237
+ "dotted suffix naming exactly one definition of its side. Repeatable."
238
+ )
239
+ HELP_PORT_INCLUDE_TESTS = (
240
+ "Pair test functions too; by default they are left out, classified as "
241
+ "tests-reaching classifies them."
242
+ )
243
+ HELP_PORT_FAIL_ON_FOUND = (
244
+ "Exit with status 1 when any pair DIFFERS. UNKNOWN pairs and unpaired "
245
+ "definitions do not fail the check."
246
+ )
209
247
  CMD_TRACE_INGEST = "Resolve a trace file against a project and write dynamic edges"
210
248
  CMD_TRACE_CONVERT = "Convert a V8 .cpuprofile (node --cpu-prof) to a trace file"
211
249
 
@@ -678,6 +716,7 @@ CLI_COMMANDS: dict[CLICommandName, str] = {
678
716
  CLICommandName.CHECK: CMD_CHECK,
679
717
  CLICommandName.RENAME: CMD_RENAME,
680
718
  CLICommandName.CONTEXT: CMD_CONTEXT,
719
+ CLICommandName.PORT: CMD_PORT,
681
720
  CLICommandName.WORKSPACE: CMD_WORKSPACE,
682
721
  CLICommandName.STOP: CMD_STOP,
683
722
  CLICommandName.STATUS: CMD_STATUS,
@@ -30,6 +30,7 @@ from .lang_tooling import * # noqa: F403
30
30
  from .languages import * # noqa: F403
31
31
  from .mcp import * # noqa: F403
32
32
  from .notebook import * # noqa: F403
33
+ from .port import * # noqa: F403
33
34
  from .providers import * # noqa: F403
34
35
  from .security import * # noqa: F403
35
36
  from .sqlite_vectors import * # noqa: F403
@@ -113,6 +113,14 @@ TS_RS_LOOP_EXPRESSION = "loop_expression"
113
113
  # A Rust call node whose callee is descended for chain flattening: a plain call
114
114
  # or a turbofish generic_function (`f::<T>()`).
115
115
  RS_CALL_OR_GENERIC_FN = (TS_RS_CALL_EXPRESSION, TS_GENERIC_FUNCTION)
116
+ TS_RS_GENERIC_TYPE_WITH_TURBOFISH = "generic_type_with_turbofish"
117
+ # A constructor path with type arguments: `Tree::<u8>::Leaf`'s qualifier,
118
+ # `Wrapper::<u8> { .. }`'s name, `Pair::<u8>(..)`'s callee.
119
+ RS_GENERIC_CONSTRUCTOR_PATHS = (
120
+ TS_GENERIC_TYPE,
121
+ TS_RS_GENERIC_TYPE_WITH_TURBOFISH,
122
+ TS_GENERIC_FUNCTION,
123
+ )
116
124
  TS_RS_TUPLE_STRUCT_PATTERN = "tuple_struct_pattern"
117
125
  TS_RS_TYPE_ARGUMENTS = "type_arguments"
118
126
  TS_RS_TRY_EXPRESSION = "try_expression"
@@ -401,7 +401,7 @@ LANGUAGE_METADATA: dict[SupportedLanguage, LanguageMetadata] = {
401
401
  ),
402
402
  SupportedLanguage.SQL: LanguageMetadata(
403
403
  LanguageStatus.DEV,
404
- "Stored functions (CREATE FUNCTION), schema-qualified names, invocations between routines. CREATE PROCEDURE and in-depth PL/pgSQL bodies await upstream grammar support: the published grammar parses plain SQL statements only",
404
+ "Stored functions (CREATE FUNCTION), each one a dead-code root, schema-qualified names, invocations between routines, and the DDL that runs a routine by name (trigger EXECUTE FUNCTION, aggregate SFUNC/FINALFUNC, cast WITH FUNCTION, operator FUNCTION, type INPUT/OUTPUT, HANDLER/VALIDATOR, SUPPORT). CREATE PROCEDURE and in-depth PL/pgSQL bodies await upstream grammar support: the published grammar parses plain SQL statements only",
405
405
  "SQL (PostgreSQL)",
406
406
  ),
407
407
  SupportedLanguage.JULIA: LanguageMetadata(
@@ -246,6 +246,12 @@ MCP_ROOT_NOT_INDEXED = (
246
246
  "No project is indexed for this server's root {path}; run "
247
247
  "index_repository or update_repository first, or pass `project`."
248
248
  )
249
+ # flow_verdict, explain_traceback and rank_root_causes take no `project`, so
250
+ # their refusal cannot advise passing one (issue #3193).
251
+ MCP_FIXED_ROOT_NOT_INDEXED = (
252
+ "No project is indexed for this server's root {path}; run "
253
+ "index_repository or update_repository first."
254
+ )
249
255
  # An empty answer for a name the graph does not hold read as "nothing calls
250
256
  # it" / "no test reaches it" (issue #2461).
251
257
  MCP_UNKNOWN_TARGET = "{qualified_name!r} is not in the graph."
@@ -0,0 +1,88 @@
1
+ # Cross-language parity (`cgr port check`, epic #3413): how two
2
+ # implementations of the same code are paired and judged.
3
+
4
+ from enum import StrEnum
5
+
6
+ from .graph import EdgeResolution, NodeLabel
7
+
8
+
9
+ class ParityVerdict(StrEnum):
10
+ """A dimension's or a pair's verdict. `UNKNOWN` is what the graph cannot
11
+ settle (an edge it only guessed, a signature it did not record), and is
12
+ never reported as `MATCH`."""
13
+
14
+ MATCH = "MATCH"
15
+ DIFFERS = "DIFFERS"
16
+ UNKNOWN = "UNKNOWN"
17
+
18
+
19
+ # A pair's verdict is the worst of its dimensions'.
20
+ PARITY_VERDICT_RANK: dict[ParityVerdict, int] = {
21
+ ParityVerdict.MATCH: 0,
22
+ ParityVerdict.UNKNOWN: 1,
23
+ ParityVerdict.DIFFERS: 2,
24
+ }
25
+
26
+
27
+ class PairedBy(StrEnum):
28
+ """How a pair was found, strongest first: a `--pair` the user gave; the
29
+ same normalised name at the same module path relative to each scope (and
30
+ in the same class, for a method); the same name in the same container
31
+ (the class, or the module file's stem) when the layouts differ; or the
32
+ same name alone with the containers differing, which is the pairing to
33
+ verify."""
34
+
35
+ EXPLICIT = "explicit"
36
+ MODULE = "module"
37
+ CONTAINER = "container"
38
+ NAME = "name"
39
+
40
+
41
+ # The automatic tiers, tried in this order on what the previous one left.
42
+ PORT_PAIRING_TIERS = (PairedBy.MODULE, PairedBy.CONTAINER, PairedBy.NAME)
43
+
44
+
45
+ PORT_CALLABLE_LABELS = frozenset({NodeLabel.FUNCTION.value, NodeLabel.METHOD.value})
46
+
47
+ # Edges the resolver only guessed: a difference resting on them alone is
48
+ # UNKNOWN, since the other side may simply have bound the same call exactly.
49
+ PORT_UNCERTAIN_RESOLUTIONS = frozenset(
50
+ {EdgeResolution.HEURISTIC.value, EdgeResolution.OVERLOAD.value}
51
+ )
52
+
53
+ # Folded before names are compared, so `_read_number`, `readNumber` and
54
+ # `ReadNumber` agree. The boundary pattern splits camelCase and the end of an
55
+ # acronym (`HTTPServer` -> `HTTP_Server`).
56
+ PORT_NAME_STRIP_CHARS = "_"
57
+ PORT_CAMEL_BOUNDARY_PATTERN = r"(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])"
58
+ PORT_NAME_JOIN = "_"
59
+
60
+ # File stems that name a package rather than its contents (`__init__.py`,
61
+ # Rust `mod.rs` and `lib.rs`, `index.ts`): a function's container is then the
62
+ # directory holding the file.
63
+ PORT_PACKAGE_ENTRY_STEMS = frozenset({"__init__", "mod", "lib", "main", "index"})
64
+
65
+ PORT_PAIR_SEPARATOR = "="
66
+ PORT_SCOPE_ROOTS = frozenset({"", "."})
67
+
68
+ # Overlapping scopes and a malformed or repeated `--pair` are usage errors,
69
+ # reported under click's own status for one; a scope or pair naming nothing
70
+ # in the graph exits with GRAPH_EXIT_UNKNOWN_TARGET like `cgr graph`.
71
+ PORT_EXIT_USAGE = 2
72
+ PORT_EXIT_DIFFERS = 1
73
+
74
+ PORT_ERR_EMPTY_SCOPE = (
75
+ "No function or method of project '{project}' lies under '{scope}'. "
76
+ "A scope is a path relative to the repository root, as `cgr graph "
77
+ "definition` prints it."
78
+ )
79
+ PORT_ERR_OVERLAPPING_SCOPES = (
80
+ "The scopes '{old}' and '{new}' overlap in project '{project}': each "
81
+ "definition must belong to one side."
82
+ )
83
+ PORT_ERR_PAIR_FORMAT = "--pair takes OLD=NEW, got '{value}'."
84
+ PORT_ERR_PAIR_TARGET = (
85
+ "--pair: '{target}' names {count} definitions under '{scope}'; give a "
86
+ "qualified name, or a dotted suffix of one, that names exactly one."
87
+ )
88
+ PORT_ERR_PAIR_TWICE = "--pair: '{qualified_name}' is paired more than once."
@@ -471,25 +471,39 @@ def _chain_links(
471
471
  if parser is None:
472
472
  return []
473
473
  root = parser.parse(source).root_node
474
+ # Each link's own site starts at its name (issue #3166); the links of
475
+ # its chain are the calls that start where the site's call starts.
476
+ starts = {call.start_point for call in calls_starting_at(root, line - 1, col)}
477
+ starts = starts or {(line - 1, col)}
474
478
  found: list[tuple[int, int]] = []
475
479
  stack: list[Node] = [root]
476
480
  while stack:
477
481
  node = stack.pop()
478
- if node.start_point == (line - 1, col):
479
- func = node.child_by_field_name(cs.FIELD_FUNCTION)
480
- member = func.children[-1] if func is not None and func.children else None
481
- if (
482
- member is not None
483
- and member.type in _MEMBER_NAME_TYPES
484
- and member.text is not None
485
- and member.text.decode(cs.ENCODING_UTF8, errors="replace") == name
486
- ):
487
- found.append((member.start_point[0] + 1, member.start_point[1]))
488
- if node.start_point[0] <= line - 1 <= node.end_point[0]:
482
+ if (
483
+ node.start_point in starts
484
+ and (member := _called_member(node, name)) is not None
485
+ ):
486
+ found.append((member.start_point[0] + 1, member.start_point[1]))
487
+ if any(node.start_point[0] <= row <= node.end_point[0] for row, _ in starts):
489
488
  stack.extend(node.children)
490
489
  return sorted(found)
491
490
 
492
491
 
492
+ def _called_member(call: Node, name: str) -> Node | None:
493
+ # The member name a call invokes (`name` in `obj.name(...)`), if it is
494
+ # `name`; None for a bare call or another member.
495
+ func = call.child_by_field_name(cs.FIELD_FUNCTION)
496
+ member = func.children[-1] if func is not None and func.children else None
497
+ if (
498
+ member is not None
499
+ and member.type in _MEMBER_NAME_TYPES
500
+ and member.text is not None
501
+ and member.text.decode(cs.ENCODING_UTF8, errors="replace") == name
502
+ ):
503
+ return member
504
+ return None
505
+
506
+
493
507
  def _jsx_closing_token(
494
508
  source: bytes,
495
509
  language: cs.SupportedLanguage | None,
@@ -614,8 +628,10 @@ def _last_identifier(
614
628
  # (a grammar whose call node has no `function` field, such as Java's
615
629
  # method_invocation) keeps the fallback.
616
630
  return _STALE_CALL
617
- if callee is not None and callee[0] == start:
618
- start, end = callee
631
+ if callee is not None and callee[0] <= start < callee[1]:
632
+ # The callee ends the token search, whether the site starts with it
633
+ # or at its member name (issue #3166): never inside the arguments.
634
+ end = callee[1]
619
635
  text = source[start:end].decode(cs.ENCODING_UTF8, errors="replace")
620
636
  if callee is None:
621
637
  # No grammar: cut at the last opening parenthesis so the arguments
@@ -17,6 +17,7 @@ from .. import constants as cs
17
17
  from .. import cypher_queries as cq
18
18
  from .. import graph_query
19
19
  from ..graph_query import QueryFn
20
+ from ..parsers.utils import call_site_start
20
21
 
21
22
  # Resolutions that bound a site by guesswork: an operation rewrites through
22
23
  # them only when the caller accepts the risk with `allow_heuristic`.
@@ -123,13 +124,14 @@ def call_node_at(
123
124
 
124
125
 
125
126
  def calls_starting_at(root: Node, row: int, col: int) -> list[Node]:
127
+ # A member call's site starts at its name (issue #3166); a graph indexed
128
+ # before that recorded the call node's own start, so both name the call.
126
129
  calls: list[Node] = []
127
130
  stack: list[Node] = [root]
128
131
  while stack:
129
132
  node = stack.pop()
130
- if (
131
- node.start_point == (row, col)
132
- and node.child_by_field_name(cs.FIELD_FUNCTION) is not None
133
+ if node.child_by_field_name(cs.FIELD_FUNCTION) is not None and (
134
+ node.start_point == (row, col) or call_site_start(node) == (row, col)
133
135
  ):
134
136
  calls.append(node)
135
137
  if node.start_point[0] <= row <= node.end_point[0]: