code-graph-rag 0.3.13__tar.gz → 0.4.5__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 (469) hide show
  1. {code_graph_rag-0.3.13/code_graph_rag.egg-info → code_graph_rag-0.4.5}/PKG-INFO +4 -3
  2. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/README.md +5 -5
  3. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5/code_graph_rag.egg-info}/PKG-INFO +4 -3
  4. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/code_graph_rag.egg-info/SOURCES.txt +4 -0
  5. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/code_graph_rag.egg-info/requires.txt +3 -2
  6. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/check_isolation.py +2 -2
  7. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/cli.py +226 -26
  8. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/cli_help.py +36 -2
  9. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/config.py +114 -16
  10. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_js.py +11 -0
  11. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_python.py +72 -0
  12. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/cli.py +60 -0
  13. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/core.py +13 -0
  14. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/embedded_graph.py +89 -0
  15. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/graph.py +6 -1
  16. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/interface.py +12 -0
  17. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/mcp.py +77 -1
  18. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/providers.py +1 -0
  19. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/security.py +100 -0
  20. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/cypher_queries.py +30 -0
  21. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/docker-compose.yaml +3 -3
  22. code_graph_rag-0.4.5/codebase_rag/editing/signature.py +588 -0
  23. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/signature_bind.py +75 -3
  24. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/transaction.py +3 -3
  25. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/limits.py +2 -2
  26. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/exceptions.py +5 -0
  27. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/graph_updater.py +2 -0
  28. code_graph_rag-0.4.5/codebase_rag/instructions_trust.py +65 -0
  29. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/logs.py +34 -0
  30. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/main.py +67 -1
  31. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/mcp/server.py +85 -35
  32. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/mcp/tools.py +211 -7
  33. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/anchor_hash.py +15 -0
  34. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_fingerprint.py +15 -0
  35. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +8 -0
  36. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_tier.py +20 -0
  37. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/mixin.py +2 -1
  38. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/definition_processor.py +3 -1
  39. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/document_tier.py +8 -2
  40. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/interface_fingerprint.py +139 -1
  41. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/variable_analyzer.py +5 -3
  42. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/module_system.py +2 -3
  43. code_graph_rag-0.4.5/codebase_rag/parsers/native_trees.py +272 -0
  44. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/ast_analyzer.py +270 -159
  45. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/utils.py +11 -41
  46. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/prompts.py +4 -3
  47. code_graph_rag-0.4.5/codebase_rag/sensitive_paths.py +41 -0
  48. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/sqlite_vectors.py +2 -2
  49. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/stack/health.py +3 -3
  50. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/structural_check.py +3 -1
  51. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/sync_guard.py +127 -5
  52. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/sync_lock.py +2 -2
  53. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tool_errors.py +1 -0
  54. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/file_reader.py +35 -15
  55. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/health_checker.py +2 -2
  56. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/shell_command.py +129 -3
  57. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/tool_descriptions.py +26 -0
  58. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/types_defs.py +209 -1
  59. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/unixcoder.py +9 -1
  60. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/process_owner.py +14 -0
  61. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/pyproject.toml +16 -11
  62. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/LICENSE +0 -0
  63. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/PYPI_README.md +0 -0
  64. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/cgr/__init__.py +0 -0
  65. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  66. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/code_graph_rag.egg-info/entry_points.txt +0 -0
  67. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/code_graph_rag.egg-info/top_level.txt +0 -0
  68. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/__init__.py +0 -0
  69. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/_cli_env.py +0 -0
  70. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/__init__.py +0 -0
  71. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  72. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  73. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  74. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  75. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  76. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  77. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  78. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  79. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  80. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  81. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  82. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  83. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  84. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  85. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  86. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  87. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  88. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  89. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  90. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  91. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  92. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  93. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  94. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  95. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  96. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  97. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  98. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  99. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  100. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  101. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  102. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  103. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  104. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  105. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  106. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  107. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  108. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  109. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  110. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  111. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  112. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  113. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  114. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  115. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  116. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  117. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/ast_cache.py +0 -0
  118. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/capture.py +0 -0
  119. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/checkout_state.py +0 -0
  120. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/cli_runtime.py +0 -0
  121. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/console_marks.py +0 -0
  122. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/__init__.py +0 -0
  123. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_cpp.py +0 -0
  124. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_csharp.py +0 -0
  125. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_dart.py +0 -0
  126. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_go.py +0 -0
  127. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_java.py +0 -0
  128. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_julia.py +0 -0
  129. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_lua.py +0 -0
  130. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_nodes.py +0 -0
  131. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_php.py +0 -0
  132. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_rust.py +0 -0
  133. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_scala.py +0 -0
  134. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_sql.py +0 -0
  135. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/build.py +0 -0
  136. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/deadcode_roots.py +0 -0
  137. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/deps.py +0 -0
  138. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/duplicates.py +0 -0
  139. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/fqn_specs.py +0 -0
  140. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/health.py +0 -0
  141. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/lang_tooling.py +0 -0
  142. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/languages.py +0 -0
  143. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/notebook.py +0 -0
  144. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/port.py +0 -0
  145. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/sqlite_vectors.py +0 -0
  146. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/stdlib_types.py +0 -0
  147. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/structural.py +0 -0
  148. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/constants/trace.py +0 -0
  149. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/context_pruning.py +0 -0
  150. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/context_slice.py +0 -0
  151. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/crash_correlation.py +0 -0
  152. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/dead_code.py +0 -0
  153. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/decorators.py +0 -0
  154. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/duplicates.py +0 -0
  155. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/__init__.py +0 -0
  156. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/cli.py +0 -0
  157. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/contract.py +0 -0
  158. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/import_paths.py +0 -0
  159. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/imports.py +0 -0
  160. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/occurrences.py +0 -0
  161. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/patcher.py +0 -0
  162. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/rename.py +0 -0
  163. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/signature_contract.py +0 -0
  164. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/signature_spec.py +0 -0
  165. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editing/sites.py +0 -0
  166. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/editor_links.py +0 -0
  167. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/__init__.py +0 -0
  168. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/compiler.py +0 -0
  169. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/connection.py +0 -0
  170. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/cypher_ast.py +0 -0
  171. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/executor.py +0 -0
  172. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/expressions.py +0 -0
  173. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/extension.py +0 -0
  174. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/functions.py +0 -0
  175. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/lexer.py +0 -0
  176. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/native.py +0 -0
  177. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/parser.py +0 -0
  178. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/procedures.py +0 -0
  179. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/sql.py +0 -0
  180. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/store.py +0 -0
  181. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/types.py +0 -0
  182. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/embedder.py +0 -0
  183. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/flow_verdict.py +0 -0
  184. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/function_registry.py +0 -0
  185. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/gloss.py +0 -0
  186. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/gloss_anchor.py +0 -0
  187. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/gloss_repair.py +0 -0
  188. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/graph_audit.py +0 -0
  189. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/graph_cli.py +0 -0
  190. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/graph_dialects.py +0 -0
  191. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/graph_loader.py +0 -0
  192. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/graph_query.py +0 -0
  193. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/interface_skip.py +0 -0
  194. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/language_spec.py +0 -0
  195. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/mcp/__init__.py +0 -0
  196. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/mcp/client.py +0 -0
  197. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/mgclient_compat.py +0 -0
  198. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/mgclient_probe.py +0 -0
  199. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/models.py +0 -0
  200. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parser_fingerprint.py +0 -0
  201. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parser_loader.py +0 -0
  202. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/__init__.py +0 -0
  203. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  204. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  205. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  206. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  207. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  208. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  209. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  210. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_scope.py +0 -0
  211. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/build_lock.py +0 -0
  212. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/call_processor.py +0 -0
  213. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/call_resolver.py +0 -0
  214. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  215. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/base_targets.py +0 -0
  216. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  217. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/identity.py +0 -0
  218. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
  219. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  220. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/parent_extraction.py +0 -0
  221. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  222. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  223. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/contract_linking.py +0 -0
  224. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/contracts.py +0 -0
  225. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/__init__.py +0 -0
  226. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/class_macro.py +0 -0
  227. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/function_values.py +0 -0
  228. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/local_types.py +0 -0
  229. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/overloads.py +0 -0
  230. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
  231. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/trailing_annotation.py +0 -0
  232. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/type_inference.py +0 -0
  233. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/utils.py +0 -0
  234. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  235. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  236. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp_frontend/frontend.py +0 -0
  237. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
  238. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp/__init__.py +0 -0
  239. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp/arity.py +0 -0
  240. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp/type_inference.py +0 -0
  241. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp/utils.py +0 -0
  242. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  243. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
  244. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  245. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  246. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  247. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/dart/__init__.py +0 -0
  248. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/dart/package_paths.py +0 -0
  249. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/dart/type_inference.py +0 -0
  250. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/dart/utils.py +0 -0
  251. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/definition_docstring.py +0 -0
  252. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/dependency_parser.py +0 -0
  253. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/dispatch_registry.py +0 -0
  254. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
  255. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/endpoint_routes.py +0 -0
  256. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/endpoints.py +0 -0
  257. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/enum_variants.py +0 -0
  258. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/export_detection.py +0 -0
  259. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/factory.py +0 -0
  260. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/field_nodes.py +0 -0
  261. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/flat_module.py +0 -0
  262. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  263. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/flow_access/constants.py +0 -0
  264. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/flow_access/processor.py +0 -0
  265. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontend_mode.py +0 -0
  266. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/__init__.py +0 -0
  267. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/cpp.py +0 -0
  268. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/csharp.py +0 -0
  269. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/go.py +0 -0
  270. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/java.py +0 -0
  271. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/protocol.py +0 -0
  272. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/python.py +0 -0
  273. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/registry.py +0 -0
  274. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/function_ingest.py +0 -0
  275. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/__init__.py +0 -0
  276. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/builds.py +0 -0
  277. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/interface_ingest.py +0 -0
  278. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/interfaces.py +0 -0
  279. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/link_state.py +0 -0
  280. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/module_paths.py +0 -0
  281. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/type_inference.py +0 -0
  282. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/utils.py +0 -0
  283. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  284. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  285. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
  286. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
  287. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
  288. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/__init__.py +0 -0
  289. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/base.py +0 -0
  290. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/cpp.py +0 -0
  291. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/java.py +0 -0
  292. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/js_ts.py +0 -0
  293. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/julia.py +0 -0
  294. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/lua.py +0 -0
  295. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/php.py +0 -0
  296. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/protocol.py +0 -0
  297. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/python.py +0 -0
  298. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/registry.py +0 -0
  299. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/rust.py +0 -0
  300. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/import_processor.py +0 -0
  301. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/__init__.py +0 -0
  302. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/constants.py +0 -0
  303. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  304. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/extract.py +0 -0
  305. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/models.py +0 -0
  306. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/processor.py +0 -0
  307. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/registry.py +0 -0
  308. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/resource_names.py +0 -0
  309. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/url_folding.py +0 -0
  310. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/__init__.py +0 -0
  311. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/method_resolver.py +0 -0
  312. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/type_inference.py +0 -0
  313. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/type_resolver.py +0 -0
  314. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/utils.py +0 -0
  315. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  316. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  317. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  318. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java_generated.py +0 -0
  319. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/java_lombok.py +0 -0
  320. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  321. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/commonjs_exports.py +0 -0
  322. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/ingest.py +0 -0
  323. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
  324. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/overloads.py +0 -0
  325. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/reexports.py +0 -0
  326. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
  327. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/utils.py +0 -0
  328. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/julia/__init__.py +0 -0
  329. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/julia/utils.py +0 -0
  330. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/lua/__init__.py +0 -0
  331. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/lua/type_inference.py +0 -0
  332. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/lua/utils.py +0 -0
  333. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/module_docstring.py +0 -0
  334. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/notebook.py +0 -0
  335. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/parameter_nodes.py +0 -0
  336. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/php/__init__.py +0 -0
  337. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/php/class_names.py +0 -0
  338. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/php/namespaces.py +0 -0
  339. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/php/utils.py +0 -0
  340. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/positional_params.py +0 -0
  341. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/__init__.py +0 -0
  342. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/class_aliases.py +0 -0
  343. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
  344. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/forward_refs.py +0 -0
  345. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/overloads.py +0 -0
  346. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/receiver_rebinding.py +0 -0
  347. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/type_inference.py +0 -0
  348. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/utils.py +0 -0
  349. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
  350. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/with_analyzer.py +0 -0
  351. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  352. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  353. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/python_source_roots.py +0 -0
  354. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/rpc_exposure.py +0 -0
  355. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/rs/__init__.py +0 -0
  356. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/rs/cargo_semver.py +0 -0
  357. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/rs/type_inference.py +0 -0
  358. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/rs/utils.py +0 -0
  359. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/scala/__init__.py +0 -0
  360. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/scala/utils.py +0 -0
  361. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/semantic_call_join.py +0 -0
  362. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/sql_ddl.py +0 -0
  363. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/sql_recovery.py +0 -0
  364. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/stdlib_extractor.py +0 -0
  365. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/string_call.py +0 -0
  366. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/structure_processor.py +0 -0
  367. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/type_facts.py +0 -0
  368. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/parsers/type_inference.py +0 -0
  369. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/path_filters.py +0 -0
  370. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/port_cli.py +0 -0
  371. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/port_parity.py +0 -0
  372. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/project_selection.py +0 -0
  373. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/providers/__init__.py +0 -0
  374. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/providers/base.py +0 -0
  375. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/providers/litellm.py +0 -0
  376. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/c_sharp.scm +0 -0
  377. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/dart.scm +0 -0
  378. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/java.scm +0 -0
  379. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/javascript.scm +0 -0
  380. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/julia.scm +0 -0
  381. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/php.scm +0 -0
  382. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/python.scm +0 -0
  383. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/rust.scm +0 -0
  384. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/typescript.scm +0 -0
  385. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/readme_sections.py +0 -0
  386. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/schema_builder.py +0 -0
  387. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/schema_parse.py +0 -0
  388. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/schemas.py +0 -0
  389. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/__init__.py +0 -0
  390. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/anthropic_token_counter.py +0 -0
  391. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/cypher_guard.py +0 -0
  392. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/filtering.py +0 -0
  393. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/gloss_cleanup.py +0 -0
  394. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/graph_diff.py +0 -0
  395. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/graph_service.py +0 -0
  396. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/llm.py +0 -0
  397. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/neo4j_driver.py +0 -0
  398. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/protobuf_service.py +0 -0
  399. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/provenance.py +0 -0
  400. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/resource_cleanup.py +0 -0
  401. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/services/usage_cost.py +0 -0
  402. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/sql_names.py +0 -0
  403. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/stack/__init__.py +0 -0
  404. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/stack/cli.py +0 -0
  405. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/stack/constants.py +0 -0
  406. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/stack/manager.py +0 -0
  407. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/structural_delta.py +0 -0
  408. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/taint.py +0 -0
  409. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/__init__.py +0 -0
  410. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/ast_grep_service.py +0 -0
  411. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/code_retrieval.py +0 -0
  412. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/codebase_query.py +0 -0
  413. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/directory_lister.py +0 -0
  414. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/duplicate_detection.py +0 -0
  415. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/file_editor.py +0 -0
  416. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/file_writer.py +0 -0
  417. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/graph_refresh.py +0 -0
  418. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/graph_rerank.py +0 -0
  419. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/language.py +0 -0
  420. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/language_catalog.py +0 -0
  421. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/research.py +0 -0
  422. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/semantic_search.py +0 -0
  423. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/structural_editor.py +0 -0
  424. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/structural_search.py +0 -0
  425. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tools/web_search.py +0 -0
  426. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/__init__.py +0 -0
  427. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/carry.py +0 -0
  428. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/cli.py +0 -0
  429. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/cpuprofile.py +0 -0
  430. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/dispatch_site.py +0 -0
  431. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/ebpf_pprof.py +0 -0
  432. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/ingest.py +0 -0
  433. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/instrumented.py +0 -0
  434. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/pprof.py +0 -0
  435. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/pytest_plugin.py +0 -0
  436. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/records.py +0 -0
  437. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/resolution.py +0 -0
  438. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/rust_pprof.py +0 -0
  439. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/sourcemap.py +0 -0
  440. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/speedscope.py +0 -0
  441. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/tracer.py +0 -0
  442. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/trace/xdebug.py +0 -0
  443. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/tree_sitter_point.py +0 -0
  444. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/__init__.py +0 -0
  445. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/cpp_signatures.py +0 -0
  446. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/dependencies.py +0 -0
  447. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/endpoints.py +0 -0
  448. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/fqn_resolver.py +0 -0
  449. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/interruptible_thread.py +0 -0
  450. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/json_io.py +0 -0
  451. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/path_utils.py +0 -0
  452. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/qn_markers.py +0 -0
  453. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/rich_markdown.py +0 -0
  454. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/source_encoding.py +0 -0
  455. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/source_extraction.py +0 -0
  456. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/terminal_console.py +0 -0
  457. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/utils/token_utils.py +0 -0
  458. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/vector_store.py +0 -0
  459. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/watch.py +0 -0
  460. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/workspaces/__init__.py +0 -0
  461. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/workspaces/cli.py +0 -0
  462. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/workspaces/constants.py +0 -0
  463. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/workspaces/models.py +0 -0
  464. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codebase_rag/workspaces/storage.py +0 -0
  465. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codec/__init__.py +0 -0
  466. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codec/schema.proto +0 -0
  467. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codec/schema_pb2.py +0 -0
  468. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/codec/schema_pb2.pyi +0 -0
  469. {code_graph_rag-0.3.13 → code_graph_rag-0.4.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.3.13
3
+ Version: 0.4.5
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
@@ -19,7 +19,8 @@ Requires-Python: >=3.12
19
19
  Description-Content-Type: text/markdown
20
20
  License-File: LICENSE
21
21
  Requires-Dist: loguru>=0.7.3
22
- Requires-Dist: mcp<2,>=1.30.0
22
+ Requires-Dist: mcp<3,>=2.3.0
23
+ Requires-Dist: jsonschema>=4.20.0
23
24
  Requires-Dist: pydantic-ai-slim[anthropic,google,openai]>=2.0.0
24
25
  Requires-Dist: pydantic-settings>=2.12.0
25
26
  Requires-Dist: python-dotenv>=1.2.1
@@ -40,7 +41,7 @@ Requires-Dist: pathspec>=1.0.4
40
41
  Requires-Dist: pygments>=2.20.0
41
42
  Requires-Dist: certifi>=2026.10.23
42
43
  Requires-Dist: regex>=2024.11.6
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"))
44
+ Requires-Dist: cgr-graph-rs<0.2,>=0.1.4; 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"))
44
45
  Provides-Extra: test
45
46
  Requires-Dist: jedi>=0.19; extra == "test"
46
47
  Requires-Dist: pytest>=8.4.1; extra == "test"
@@ -61,11 +61,7 @@ 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
- - **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.
64
+ - **MiniMax Models Added**: Current MiniMax text models have been included.
69
65
  <!-- /SECTION:latest_news -->
70
66
 
71
67
  See [NEWS.md](NEWS.md) for the full history.
@@ -234,6 +230,10 @@ For issues or questions, check the [Troubleshooting](docs/advanced/troubleshooti
234
230
 
235
231
  If cgr is useful to you, please consider pledging support on [GitHub Sponsors](https://github.com/sponsors/vitali87). cgr links the page under `cgr --version` and, in a terminal, after most commands finish; set `CGR_SPONSOR_PLEDGE=false` to hide that line.
236
232
 
233
+ ## Accessibility
234
+
235
+ [ACCESSIBILITY.md](ACCESSIBILITY.md) describes what cgr and its documentation support for people using assistive technology or alternative settings, the known limitations and their workarounds, and how to report a barrier.
236
+
237
237
  ## License
238
238
 
239
239
  MIT. See [LICENSE](LICENSE).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.3.13
3
+ Version: 0.4.5
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
@@ -19,7 +19,8 @@ Requires-Python: >=3.12
19
19
  Description-Content-Type: text/markdown
20
20
  License-File: LICENSE
21
21
  Requires-Dist: loguru>=0.7.3
22
- Requires-Dist: mcp<2,>=1.30.0
22
+ Requires-Dist: mcp<3,>=2.3.0
23
+ Requires-Dist: jsonschema>=4.20.0
23
24
  Requires-Dist: pydantic-ai-slim[anthropic,google,openai]>=2.0.0
24
25
  Requires-Dist: pydantic-settings>=2.12.0
25
26
  Requires-Dist: python-dotenv>=1.2.1
@@ -40,7 +41,7 @@ Requires-Dist: pathspec>=1.0.4
40
41
  Requires-Dist: pygments>=2.20.0
41
42
  Requires-Dist: certifi>=2026.10.23
42
43
  Requires-Dist: regex>=2024.11.6
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"))
44
+ Requires-Dist: cgr-graph-rs<0.2,>=0.1.4; 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"))
44
45
  Provides-Extra: test
45
46
  Requires-Dist: jedi>=0.19; extra == "test"
46
47
  Requires-Dist: pytest>=8.4.1; extra == "test"
@@ -42,6 +42,7 @@ codebase_rag/graph_dialects.py
42
42
  codebase_rag/graph_loader.py
43
43
  codebase_rag/graph_query.py
44
44
  codebase_rag/graph_updater.py
45
+ codebase_rag/instructions_trust.py
45
46
  codebase_rag/interface_skip.py
46
47
  codebase_rag/language_spec.py
47
48
  codebase_rag/logs.py
@@ -60,6 +61,7 @@ codebase_rag/readme_sections.py
60
61
  codebase_rag/schema_builder.py
61
62
  codebase_rag/schema_parse.py
62
63
  codebase_rag/schemas.py
64
+ codebase_rag/sensitive_paths.py
63
65
  codebase_rag/sql_names.py
64
66
  codebase_rag/sqlite_vectors.py
65
67
  codebase_rag/structural_check.py
@@ -165,6 +167,7 @@ codebase_rag/editing/imports.py
165
167
  codebase_rag/editing/occurrences.py
166
168
  codebase_rag/editing/patcher.py
167
169
  codebase_rag/editing/rename.py
170
+ codebase_rag/editing/signature.py
168
171
  codebase_rag/editing/signature_bind.py
169
172
  codebase_rag/editing/signature_contract.py
170
173
  codebase_rag/editing/signature_spec.py
@@ -220,6 +223,7 @@ codebase_rag/parsers/interface_fingerprint.py
220
223
  codebase_rag/parsers/java_generated.py
221
224
  codebase_rag/parsers/java_lombok.py
222
225
  codebase_rag/parsers/module_docstring.py
226
+ codebase_rag/parsers/native_trees.py
223
227
  codebase_rag/parsers/notebook.py
224
228
  codebase_rag/parsers/parameter_nodes.py
225
229
  codebase_rag/parsers/positional_params.py
@@ -1,5 +1,6 @@
1
1
  loguru>=0.7.3
2
- mcp<2,>=1.30.0
2
+ mcp<3,>=2.3.0
3
+ jsonschema>=4.20.0
3
4
  pydantic-ai-slim[anthropic,google,openai]>=2.0.0
4
5
  pydantic-settings>=2.12.0
5
6
  python-dotenv>=1.2.1
@@ -22,7 +23,7 @@ certifi>=2026.10.23
22
23
  regex>=2024.11.6
23
24
 
24
25
  [:platform_python_implementation == "CPython" and ((sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64"))]
25
- cgr-graph-rs<0.2,>=0.1.0
26
+ cgr-graph-rs<0.2,>=0.1.4
26
27
 
27
28
  [ast-grep]
28
29
  ast-grep-py>=0.51.0
@@ -45,7 +45,7 @@ from __future__ import annotations
45
45
 
46
46
  from collections.abc import Sequence
47
47
  from pathlib import Path
48
- from typing import Protocol, cast
48
+ from typing import Protocol
49
49
 
50
50
  from . import constants as cs
51
51
  from . import cypher_queries as cq
@@ -138,7 +138,7 @@ def _props(raw: object) -> PropertyDict | None:
138
138
  scalars), but it is the graph's own property set read back, so it is
139
139
  written back as it was read.
140
140
  """
141
- return cast(PropertyDict, dict(raw)) if isinstance(raw, dict) else None
141
+ return dict(raw) if isinstance(raw, dict) else None
142
142
 
143
143
 
144
144
  def _discard_pending(store: GraphStore) -> None:
@@ -8,7 +8,7 @@ import subprocess
8
8
  import sys
9
9
  import tempfile
10
10
  import time
11
- from collections.abc import Callable, Coroutine, Iterable, Iterator
11
+ from collections.abc import Callable, Coroutine, Generator, Iterable
12
12
  from contextlib import ExitStack, contextmanager
13
13
  from fnmatch import fnmatch
14
14
  from functools import partial, wraps
@@ -79,7 +79,10 @@ from .sync_guard import RUNNING_SYNC_TOKENS as _RUNNING_SYNC_TOKENS
79
79
  from .sync_guard import OwnerCheck as _OwnerCheck
80
80
  from .sync_guard import SyncRefusedError, mark_sync_incomplete, release_project_claim
81
81
  from .sync_guard import clear_sync_incomplete as _clear_sync_incomplete
82
+ from .sync_guard import partial_graph_refusal as _partial_graph_refusal
82
83
  from .sync_guard import project_owner_refusal as _project_owner_refusal
84
+ from .sync_guard import retire_stranded_runs as _retire_stranded_runs
85
+ from .sync_guard import stranded_runs as _stranded_runs
83
86
  from .sync_guard import sync_marker_params as _sync_marker_params
84
87
  from .sync_guard import sync_owner as _sync_owner
85
88
  from .sync_lock import SyncLockError, repo_sync_lock
@@ -95,6 +98,7 @@ from .types_defs import (
95
98
  DuplicatesReport,
96
99
  ProjectSync,
97
100
  PropertyValue,
101
+ ReingestReport,
98
102
  ResultRow,
99
103
  ResultValue,
100
104
  )
@@ -115,6 +119,7 @@ from .workspaces.cli import cli as workspace_cli
115
119
 
116
120
  if TYPE_CHECKING:
117
121
  from .graph_updater import GraphUpdater
122
+ from .watch import WriteMarker
118
123
 
119
124
 
120
125
  def _vendored_click_exception() -> type[click.ClickException]:
@@ -571,7 +576,7 @@ def _start_active_projects(
571
576
 
572
577
 
573
578
  @contextmanager
574
- def _console_on_stderr() -> Iterator[None]:
579
+ def _console_on_stderr() -> Generator[None]:
575
580
  console = app_context.console
576
581
  app_context.console = terminal_aware_console(stderr=True)
577
582
  try:
@@ -943,7 +948,7 @@ def _release_project_claim(batch_size: int, project_name: str, repo: Path) -> No
943
948
  @contextmanager
944
949
  def _project_claim(
945
950
  batch_size: int, project_name: str, repo: Path, *, clean: bool, assume_yes: bool
946
- ) -> Iterator[list[str] | None]:
951
+ ) -> Generator[list[str] | None]:
947
952
  """Hold this sync's claim on its project name while the sync runs (#2411).
948
953
 
949
954
  Yields the roots `_mark_sync_incomplete` must still find on the Project.
@@ -981,7 +986,7 @@ def _mark_sync_incomplete(
981
986
 
982
987
 
983
988
  @contextmanager
984
- def _sync_lock_or_exit(repo: Path, project_name: str) -> Iterator[None]:
989
+ def _sync_lock_or_exit(repo: Path, project_name: str) -> Generator[None]:
985
990
  """Hold the checkout's sync lock for the whole sync, or stop first (#2441).
986
991
 
987
992
  Taken before the `--clean` wipe and the `:IncompleteRun` marker, so a
@@ -1104,16 +1109,17 @@ def _sweep_glosses_after_failed_delete(
1104
1109
 
1105
1110
 
1106
1111
  def _run_updater_deferring_interrupt(
1107
- updater: "GraphUpdater",
1112
+ updater: "GraphUpdater", *, rebuild: bool = False
1108
1113
  ) -> KeyboardInterrupt | None:
1109
1114
  """Run the sync's graph update; return a Ctrl+C that landed after its commit.
1110
1115
 
1111
1116
  The run stamps the sync time as part of its commit (#2444), and the
1112
1117
  caller clears its marker before re-raising what this returns; a Ctrl+C
1113
- before the commit raises `SyncInterrupted` instead.
1118
+ before the commit raises `SyncInterrupted` instead. `rebuild` forces a
1119
+ full re-index over runs another writer left part-way.
1114
1120
  """
1115
1121
  try:
1116
- updater.run()
1122
+ updater.run(force=rebuild)
1117
1123
  except ex.EmbeddingsInterrupted as stop:
1118
1124
  # Raised only after the run committed, so the graph is whole and
1119
1125
  # the sync is recorded like any other; the interrupt then ends
@@ -1183,6 +1189,15 @@ def _run_graph_sync(
1183
1189
  # hits and can map onto unrelated nodes in the rebuilt graph.
1184
1190
  clear_all_embeddings()
1185
1191
 
1192
+ # Read before this sync marks: the runs whose markers its rebuild
1193
+ # supersedes (review of PR #3493).
1194
+ stranded = _stranded_runs(ingestor, project_name, cs.CLI_SYNC_RUN_ID)
1195
+ if stranded:
1196
+ logger.warning(
1197
+ ls.REBUILD_OVER_STRANDED_RUNS.format(
1198
+ project=project_name, count=len(stranded)
1199
+ )
1200
+ )
1186
1201
  # After the wipe, which would delete the marker with everything else,
1187
1202
  # and before `ensure_constraints`, whose migration can already purge.
1188
1203
  _mark_sync_incomplete(ingestor, project_name, owner, owned_roots)
@@ -1202,8 +1217,9 @@ def _run_graph_sync(
1202
1217
  capture=_capture_selection(capture),
1203
1218
  skip_embeddings=skip_embeddings,
1204
1219
  )
1205
- interrupted = _run_updater_deferring_interrupt(updater)
1220
+ interrupted = _run_updater_deferring_interrupt(updater, rebuild=bool(stranded))
1206
1221
  _clear_sync_incomplete(ingestor, project_name)
1222
+ _retire_stranded_runs(ingestor, project_name, stranded)
1207
1223
  # Taken before the export: counting it made a no-op sync of a small
1208
1224
  # repo report the time to dump the whole shared graph (issue #2440).
1209
1225
  elapsed = time.monotonic() - elapsed
@@ -2003,7 +2019,12 @@ def mcp_server(
2003
2019
  workspace: str | None = typer.Option(
2004
2020
  None, "--workspace", help=ch.HELP_MCP_WORKSPACE
2005
2021
  ),
2022
+ read_only: bool = typer.Option(False, "--read-only", help=ch.HELP_MCP_READ_ONLY),
2006
2023
  ) -> None:
2024
+ # `is True`: typer passes a bool, while a direct call that omits the
2025
+ # flag passes the truthy OptionInfo default, which must not turn the
2026
+ # setting on.
2027
+ settings.MCP_READ_ONLY = settings.MCP_READ_ONLY or read_only is True
2007
2028
  try:
2008
2029
  if transport == cs.MCPTransport.HTTP:
2009
2030
  from codebase_rag.mcp import serve_http
@@ -2248,6 +2269,75 @@ def check_command(
2248
2269
  raise typer.Exit(code=1)
2249
2270
 
2250
2271
 
2272
+ EditReingest = Callable[[list[str]], ReingestReport]
2273
+
2274
+
2275
+ @contextmanager
2276
+ def _guarded_edit_reingest(
2277
+ ingestor: MemgraphIngestor, updater: "GraphUpdater", project_name: str, repo: Path
2278
+ ) -> Generator[tuple[EditReingest, "WriteMarker"]]:
2279
+ """The re-ingest an applied edit is measured through, behind the marker.
2280
+
2281
+ Refuses before anything is planned when a run left the project's graph
2282
+ partial: the plan reads its call sites from the graph, so a caller a
2283
+ stopped sync deleted would be neither rewritten nor reported (Greptile
2284
+ review, PR #2164). The MCP tools refuse the same graph through
2285
+ `_guarded_rename_reingest`.
2286
+
2287
+ The checkout's sync lock is held for the whole edit, from that check to
2288
+ the marker's clear: a sync taking the checkout between the check and the
2289
+ plan would leave the plan reading a graph it is rewriting (Greptile
2290
+ review, PR #3493). It waits behind a running sync, as a scoped re-ingest
2291
+ does, and the re-ingest re-enters it.
2292
+
2293
+ The callback is `cgr watch`'s scoped re-ingest. The marker goes down from
2294
+ `before_write`, where the read-only prologue ends, and comes off once the
2295
+ re-ingest returned. A failure after the first write leaves it down, so
2296
+ the next edit, `cgr status` and the MCP server know the graph is partial;
2297
+ the edit's `graph_incomplete` alone would not outlive this process.
2298
+ """
2299
+ held = ExitStack()
2300
+ try:
2301
+ held.enter_context(repo_sync_lock(repo, project_name, wait=True))
2302
+ except SyncLockError as refused:
2303
+ typer.echo(str(refused), err=True)
2304
+ raise typer.Exit(code=1) from None
2305
+ with held:
2306
+ if (refusal := _partial_graph_refusal(ingestor, project_name)) is not None:
2307
+ typer.echo(refusal, err=True)
2308
+ raise typer.Exit(code=1)
2309
+ from .watch import WriteMarker
2310
+
2311
+ with _sync_owner() as owner:
2312
+ marker = WriteMarker(ingestor, project_name, owner, None)
2313
+
2314
+ def reingest(paths: list[str]) -> ReingestReport:
2315
+ report = updater.reingest(paths, before_write=marker.mark_scoped)
2316
+ if updater.reingest_mutated:
2317
+ marker.clear()
2318
+ return report
2319
+
2320
+ yield reingest, marker
2321
+
2322
+
2323
+ def _mark_edit_partial(marker: "WriteMarker", project_name: str) -> str | None:
2324
+ """Mark the graph partial after an edit reported `graph_incomplete`.
2325
+
2326
+ The edit's report decides, as in the MCP tools: a rollback whose
2327
+ re-ingest stopped before its first write put no marker down, yet left
2328
+ the graph describing files the rollback has since restored. Returns the
2329
+ error to print after the edit's JSON when the marker cannot go down, so
2330
+ the report of what changed is not lost.
2331
+ """
2332
+ try:
2333
+ marker.mark()
2334
+ except SyncRefusedError as refused:
2335
+ return cs.CLI_ERR_EDIT_MARKER_FAILED.format(
2336
+ project=project_name, error=refused.__cause__ or refused
2337
+ )
2338
+ return None
2339
+
2340
+
2251
2341
  @app.command(
2252
2342
  name=ch.CLICommandName.RENAME,
2253
2343
  help=ch.CMD_RENAME,
@@ -2288,31 +2378,141 @@ def rename_command(
2288
2378
  queries=queries,
2289
2379
  project_name=name,
2290
2380
  )
2291
- try:
2292
- report = rename(
2293
- repo_path.resolve(),
2294
- fetch_all,
2295
- name,
2296
- qualified_name,
2297
- new_name,
2298
- allow_heuristic=allow_heuristic,
2299
- dry_run=dry_run,
2300
- reingest=updater.reingest,
2301
- heuristic_opt_in=cs.RENAME_CLI_ALLOW_HEURISTIC,
2381
+ with _guarded_edit_reingest(ingestor, updater, name, repo_path.resolve()) as (
2382
+ reingest,
2383
+ marker,
2384
+ ):
2385
+ try:
2386
+ report = rename(
2387
+ repo_path.resolve(),
2388
+ fetch_all,
2389
+ name,
2390
+ qualified_name,
2391
+ new_name,
2392
+ allow_heuristic=allow_heuristic,
2393
+ dry_run=dry_run,
2394
+ reingest=reingest,
2395
+ heuristic_opt_in=cs.RENAME_CLI_ALLOW_HEURISTIC,
2396
+ )
2397
+ except RenameRefused as refused:
2398
+ typer.echo(str(refused), err=True)
2399
+ for site in sites_for([*refused.ambiguous, *refused.unplanned]):
2400
+ typer.echo(f" {site}", err=True)
2401
+ for entry in refused.unlocatable:
2402
+ typer.echo(f" {entry}", err=True)
2403
+ raise typer.Exit(code=1) from refused
2404
+ marker_error = (
2405
+ _mark_edit_partial(marker, name) if report.graph_incomplete else None
2302
2406
  )
2303
- except RenameRefused as refused:
2304
- typer.echo(str(refused), err=True)
2305
- for site in sites_for([*refused.ambiguous, *refused.unplanned]):
2306
- typer.echo(f" {site}", err=True)
2307
- for entry in refused.unlocatable:
2308
- typer.echo(f" {entry}", err=True)
2309
- raise typer.Exit(code=1) from refused
2310
2407
  payload = dict(report._asdict())
2311
2408
  payload[cs.KEY_SITES] = sites_for(report.sites)
2312
2409
  payload[cs.KEY_AMBIGUOUS] = sites_for(report.ambiguous)
2313
2410
  payload[cs.KEY_UNPLANNED] = sites_for(report.unplanned)
2314
2411
  payload["verdict"] = report.verdict._asdict() if report.verdict else None
2315
2412
  typer.echo(json.dumps(payload, indent=cs.MCP_JSON_INDENT, sort_keys=True))
2413
+ if marker_error is not None:
2414
+ typer.echo(marker_error, err=True)
2415
+ raise typer.Exit(code=1)
2416
+ if not report.applied and not dry_run:
2417
+ raise typer.Exit(code=1)
2418
+
2419
+
2420
+ @app.command(
2421
+ name=ch.CLICommandName.CHANGE_SIGNATURE,
2422
+ help=ch.CMD_CHANGE_SIGNATURE,
2423
+ short_help=ch.CMD_CHANGE_SIGNATURE,
2424
+ epilog=ch.EXAMPLES_CHANGE_SIGNATURE,
2425
+ rich_help_panel=ch.PANEL_USE,
2426
+ )
2427
+ def change_signature_command(
2428
+ qualified_name: str = typer.Argument(..., help=ch.HELP_CHANGE_SIGNATURE_QN),
2429
+ new_params: list[str] = typer.Argument(..., help=ch.HELP_CHANGE_SIGNATURE_PARAMS),
2430
+ repo_path: Path = typer.Option(
2431
+ Path(cs.MCP_DEFAULT_DIRECTORY),
2432
+ "--repo-path",
2433
+ exists=True,
2434
+ file_okay=False,
2435
+ help=ch.HELP_GRAPH_REPO_PATH,
2436
+ ),
2437
+ project: str | None = typer.Option(None, "--project", help=ch.HELP_GRAPH_PROJECT),
2438
+ mapping: list[str] | None = typer.Option(
2439
+ None, "--map", help=ch.HELP_CHANGE_SIGNATURE_MAP
2440
+ ),
2441
+ allow_heuristic: bool = typer.Option(
2442
+ False, "--allow-heuristic", help=ch.HELP_CHANGE_SIGNATURE_ALLOW_HEURISTIC
2443
+ ),
2444
+ dry_run: bool = typer.Option(
2445
+ False, "--dry-run", help=ch.HELP_CHANGE_SIGNATURE_DRY_RUN
2446
+ ),
2447
+ ) -> None:
2448
+ from .editing.signature import change_signature
2449
+ from .editing.signature_spec import (
2450
+ SignatureRefused,
2451
+ parse_mapping,
2452
+ sites_for,
2453
+ unmapped_for,
2454
+ )
2455
+ from .graph_cli import _project_and_fetch
2456
+ from .graph_query import source_root_for
2457
+
2458
+ try:
2459
+ parsed = parse_mapping(mapping or [])
2460
+ except SignatureRefused as refused:
2461
+ typer.echo(str(refused), err=True)
2462
+ raise typer.Exit(code=1) from refused
2463
+ name, fetch_all, ingestor = _project_and_fetch(project, repo_path)
2464
+ with ingestor:
2465
+ # An explicit --project may name a graph indexed from another
2466
+ # checkout; its repo-relative paths must not be edited under this
2467
+ # one. The MCP handler refuses the same mismatch.
2468
+ if source_root_for(fetch_all, name, repo_path) is None:
2469
+ typer.echo(
2470
+ cs.SIGNATURE_CLI_WRONG_ROOT.format(
2471
+ project=name, root=repo_path.resolve()
2472
+ ),
2473
+ err=True,
2474
+ )
2475
+ raise typer.Exit(code=1)
2476
+ parsers, queries = load_parsers()
2477
+ from .graph_updater import GraphUpdater
2478
+
2479
+ updater = GraphUpdater(
2480
+ ingestor=ingestor,
2481
+ repo_path=repo_path.resolve(),
2482
+ parsers=parsers,
2483
+ queries=queries,
2484
+ project_name=name,
2485
+ )
2486
+ with _guarded_edit_reingest(ingestor, updater, name, repo_path.resolve()) as (
2487
+ reingest,
2488
+ marker,
2489
+ ):
2490
+ try:
2491
+ report = change_signature(
2492
+ repo_path.resolve(),
2493
+ fetch_all,
2494
+ name,
2495
+ qualified_name,
2496
+ new_params,
2497
+ parsed,
2498
+ allow_heuristic=allow_heuristic,
2499
+ dry_run=dry_run,
2500
+ reingest=reingest,
2501
+ )
2502
+ except SignatureRefused as refused:
2503
+ typer.echo(str(refused), err=True)
2504
+ raise typer.Exit(code=1) from refused
2505
+ marker_error = (
2506
+ _mark_edit_partial(marker, name) if report.graph_incomplete else None
2507
+ )
2508
+ payload = dict(report._asdict())
2509
+ payload[cs.KEY_SITES] = sites_for(report.sites)
2510
+ payload[cs.KEY_UNMAPPED] = unmapped_for(report.unmapped)
2511
+ payload[cs.KEY_VERDICT] = report.verdict._asdict() if report.verdict else None
2512
+ typer.echo(json.dumps(payload, indent=cs.MCP_JSON_INDENT, sort_keys=True))
2513
+ if marker_error is not None:
2514
+ typer.echo(marker_error, err=True)
2515
+ raise typer.Exit(code=1)
2316
2516
  if not report.applied and not dry_run:
2317
2517
  raise typer.Exit(code=1)
2318
2518
 
@@ -22,6 +22,7 @@ class CLICommandName(StrEnum):
22
22
  GRAPH = "graph"
23
23
  CHECK = "check"
24
24
  RENAME = "rename"
25
+ CHANGE_SIGNATURE = "change-signature"
25
26
  CONTEXT = "context"
26
27
  PORT = "port"
27
28
  STOP = "stop"
@@ -183,8 +184,9 @@ HELP_CHECK_ISOLATED = (
183
184
  )
184
185
  CMD_RENAME = (
185
186
  "Rename a definition everywhere the graph references it (definition, call "
186
- "and reference sites, imports, overrides, __all__); refuses on guessed sites "
187
- "and on occurrences the graph has no site for."
187
+ "and reference sites, imports, overrides, __all__); refuses on guessed sites, "
188
+ "on occurrences the graph has no site for, and on a graph a stopped sync "
189
+ "left partial."
188
190
  )
189
191
  EXAMPLES_RENAME = (
190
192
  "Examples:\n cgr rename myproj.pkg.util.helper assist --dry-run\n"
@@ -197,6 +199,32 @@ HELP_RENAME_ALLOW_HEURISTIC = (
197
199
  "occurrences of the old name the graph has no site for, as well."
198
200
  )
199
201
  HELP_RENAME_DRY_RUN = "Print the plan and diff without writing anything."
202
+ CMD_CHANGE_SIGNATURE = (
203
+ "Change a Python definition's parameter list and rewrite every call site "
204
+ "the graph knows; sites the mapping cannot complete are listed, not touched; "
205
+ "refuses on a graph a stopped sync left partial."
206
+ )
207
+ EXAMPLES_CHANGE_SIGNATURE = (
208
+ "Examples:\n"
209
+ " cgr change-signature myproj.pkg.util.helper a 'n: int' b --map n==1 --dry-run\n"
210
+ " cgr change-signature myproj.pkg.util.helper b a\n"
211
+ " cgr change-signature myproj.pkg.util.helper 'times: int' 'text: str' "
212
+ "--map times=0 --map text=1"
213
+ )
214
+ HELP_CHANGE_SIGNATURE_QN = "Qualified name of the function or method to change."
215
+ HELP_CHANGE_SIGNATURE_PARAMS = (
216
+ "The new parameters in order: NAME, 'NAME: TYPE', 'NAME = DEFAULT' or "
217
+ "'NAME: TYPE = DEFAULT'; a bare old name carries it over unchanged."
218
+ )
219
+ HELP_CHANGE_SIGNATURE_MAP = (
220
+ "NEW=SOURCE, repeatable: SOURCE is an old parameter name, its 0-based "
221
+ "index, or =LITERAL to pass that text at every site (so NEW==1 inserts 1)."
222
+ )
223
+ HELP_CHANGE_SIGNATURE_ALLOW_HEURISTIC = (
224
+ "Rewrite sites the graph resolved heuristically, by overload fan-out or by "
225
+ "a trace as well, instead of listing them as unmapped."
226
+ )
227
+ HELP_CHANGE_SIGNATURE_DRY_RUN = "Print the plan and diff without writing anything."
200
228
  CMD_CONTEXT = (
201
229
  "Print a graph-ranked context slice for a symbol, location or task within "
202
230
  "a token budget: source, caller lines, callee signatures, types, tests, docs."
@@ -588,6 +616,11 @@ HELP_QUERY_OUTPUT_FORMAT = "Format --ask-agent output as table or json."
588
616
  HELP_MCP_TRANSPORT = "Transport to serve: stdio or http."
589
617
  HELP_MCP_HTTP_HOST = "HTTP bind host. Used only with --transport http."
590
618
  HELP_MCP_HTTP_PORT = "HTTP bind port. Used only with --transport http."
619
+ HELP_MCP_READ_ONLY = (
620
+ "Serve only the tools that read (graph queries, file reads, ask_agent); "
621
+ "write_file, the edit tools, indexing, annotate and the delete tools are "
622
+ "neither listed nor run. Also set by MCP_READ_ONLY=true."
623
+ )
591
624
  HELP_MCP_WORKSPACE = (
592
625
  "Serve the projects of workspace NAME: `list_projects` shows them, a "
593
626
  "`project` argument, when given, must name one (omitted, the server "
@@ -715,6 +748,7 @@ CLI_COMMANDS: dict[CLICommandName, str] = {
715
748
  CLICommandName.GRAPH: CMD_GRAPH,
716
749
  CLICommandName.CHECK: CMD_CHECK,
717
750
  CLICommandName.RENAME: CMD_RENAME,
751
+ CLICommandName.CHANGE_SIGNATURE: CMD_CHANGE_SIGNATURE,
718
752
  CLICommandName.CONTEXT: CMD_CONTEXT,
719
753
  CLICommandName.PORT: CMD_PORT,
720
754
  CLICommandName.WORKSPACE: CMD_WORKSPACE,