code-graph-rag 0.3.2__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 (470) hide show
  1. {code_graph_rag-0.3.2/code_graph_rag.egg-info → code_graph_rag-0.4.5}/PKG-INFO +7 -3
  2. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/README.md +6 -1
  3. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5/code_graph_rag.egg-info}/PKG-INFO +7 -3
  4. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/code_graph_rag.egg-info/SOURCES.txt +9 -0
  5. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/code_graph_rag.egg-info/requires.txt +6 -2
  6. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/check_isolation.py +2 -2
  7. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/cli.py +239 -26
  8. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/cli_help.py +75 -2
  9. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/config.py +114 -16
  10. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/__init__.py +1 -0
  11. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_js.py +11 -0
  12. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_python.py +72 -0
  13. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_rust.py +8 -0
  14. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/cli.py +60 -0
  15. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/core.py +13 -0
  16. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/embedded_graph.py +89 -0
  17. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/graph.py +6 -1
  18. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/interface.py +12 -0
  19. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/languages.py +1 -1
  20. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/mcp.py +83 -1
  21. code_graph_rag-0.4.5/codebase_rag/constants/port.py +88 -0
  22. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/providers.py +1 -0
  23. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/security.py +100 -0
  24. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/cypher_queries.py +30 -0
  25. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/docker-compose.yaml +3 -3
  26. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/rename.py +29 -13
  27. code_graph_rag-0.4.5/codebase_rag/editing/signature.py +588 -0
  28. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/signature_bind.py +75 -3
  29. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/sites.py +5 -3
  30. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/transaction.py +3 -3
  31. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/limits.py +2 -2
  32. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/exceptions.py +5 -0
  33. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/graph_updater.py +128 -55
  34. code_graph_rag-0.4.5/codebase_rag/instructions_trust.py +65 -0
  35. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/logs.py +39 -0
  36. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/main.py +67 -1
  37. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/mcp/server.py +85 -35
  38. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/mcp/tools.py +246 -11
  39. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/anchor_hash.py +15 -0
  40. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_fingerprint.py +15 -0
  41. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +8 -0
  42. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_tier.py +20 -0
  43. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/call_processor.py +64 -3
  44. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/mixin.py +2 -1
  45. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/preproc_recovery.py +5 -0
  46. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/definition_processor.py +67 -1
  47. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/document_tier.py +8 -2
  48. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/export_detection.py +5 -0
  49. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/factory.py +1 -0
  50. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/interface_fingerprint.py +139 -1
  51. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/variable_analyzer.py +5 -3
  52. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/module_system.py +2 -3
  53. code_graph_rag-0.4.5/codebase_rag/parsers/native_trees.py +272 -0
  54. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/ast_analyzer.py +270 -159
  55. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/rs/type_inference.py +123 -4
  56. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/rs/utils.py +11 -3
  57. code_graph_rag-0.4.5/codebase_rag/parsers/sql_ddl.py +267 -0
  58. code_graph_rag-0.4.5/codebase_rag/parsers/sql_recovery.py +343 -0
  59. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/type_inference.py +6 -2
  60. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/utils.py +60 -41
  61. code_graph_rag-0.4.5/codebase_rag/port_cli.py +97 -0
  62. code_graph_rag-0.4.5/codebase_rag/port_parity.py +715 -0
  63. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/prompts.py +4 -3
  64. code_graph_rag-0.4.5/codebase_rag/sensitive_paths.py +41 -0
  65. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/__init__.py +9 -0
  66. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/protobuf_service.py +17 -0
  67. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/sqlite_vectors.py +2 -2
  68. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/stack/health.py +3 -3
  69. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/structural_check.py +3 -1
  70. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/structural_delta.py +13 -3
  71. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/sync_guard.py +127 -5
  72. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/sync_lock.py +2 -2
  73. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tool_errors.py +1 -0
  74. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/file_reader.py +35 -15
  75. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/health_checker.py +2 -2
  76. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/shell_command.py +129 -3
  77. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/tool_descriptions.py +26 -0
  78. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/types_defs.py +209 -1
  79. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/unixcoder.py +9 -1
  80. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/process_owner.py +14 -0
  81. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codec/schema.proto +82 -0
  82. code_graph_rag-0.4.5/codec/schema_pb2.py +95 -0
  83. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codec/schema_pb2.pyi +144 -20
  84. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/pyproject.toml +25 -11
  85. code_graph_rag-0.3.2/codec/schema_pb2.py +0 -95
  86. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/LICENSE +0 -0
  87. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/PYPI_README.md +0 -0
  88. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/cgr/__init__.py +0 -0
  89. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  90. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/code_graph_rag.egg-info/entry_points.txt +0 -0
  91. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/code_graph_rag.egg-info/top_level.txt +0 -0
  92. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/__init__.py +0 -0
  93. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/_cli_env.py +0 -0
  94. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/__init__.py +0 -0
  95. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  96. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  97. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  98. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  99. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  100. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  101. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  102. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  103. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  104. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  105. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  106. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  107. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  108. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  109. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  110. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  111. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  112. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  113. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  114. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  115. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  116. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  117. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  118. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  119. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  120. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  121. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  122. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  123. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  124. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  125. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  126. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  127. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  128. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  129. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  130. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  131. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  132. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  133. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  134. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  135. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  136. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  137. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  138. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  139. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  140. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  141. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/ast_cache.py +0 -0
  142. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/capture.py +0 -0
  143. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/checkout_state.py +0 -0
  144. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/cli_runtime.py +0 -0
  145. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/console_marks.py +0 -0
  146. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_cpp.py +0 -0
  147. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_csharp.py +0 -0
  148. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_dart.py +0 -0
  149. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_go.py +0 -0
  150. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_java.py +0 -0
  151. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_julia.py +0 -0
  152. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_lua.py +0 -0
  153. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_nodes.py +0 -0
  154. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_php.py +0 -0
  155. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_scala.py +0 -0
  156. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/ast_sql.py +0 -0
  157. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/build.py +0 -0
  158. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/deadcode_roots.py +0 -0
  159. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/deps.py +0 -0
  160. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/duplicates.py +0 -0
  161. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/fqn_specs.py +0 -0
  162. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/health.py +0 -0
  163. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/lang_tooling.py +0 -0
  164. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/notebook.py +0 -0
  165. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/sqlite_vectors.py +0 -0
  166. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/stdlib_types.py +0 -0
  167. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/structural.py +0 -0
  168. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/constants/trace.py +0 -0
  169. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/context_pruning.py +0 -0
  170. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/context_slice.py +0 -0
  171. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/crash_correlation.py +0 -0
  172. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/dead_code.py +0 -0
  173. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/decorators.py +0 -0
  174. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/duplicates.py +0 -0
  175. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/__init__.py +0 -0
  176. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/cli.py +0 -0
  177. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/contract.py +0 -0
  178. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/import_paths.py +0 -0
  179. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/imports.py +0 -0
  180. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/occurrences.py +0 -0
  181. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/patcher.py +0 -0
  182. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/signature_contract.py +0 -0
  183. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editing/signature_spec.py +0 -0
  184. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/editor_links.py +0 -0
  185. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/__init__.py +0 -0
  186. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/compiler.py +0 -0
  187. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/connection.py +0 -0
  188. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/cypher_ast.py +0 -0
  189. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/executor.py +0 -0
  190. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/expressions.py +0 -0
  191. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/extension.py +0 -0
  192. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/functions.py +0 -0
  193. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/lexer.py +0 -0
  194. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/native.py +0 -0
  195. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/parser.py +0 -0
  196. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/procedures.py +0 -0
  197. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/sql.py +0 -0
  198. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/store.py +0 -0
  199. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedded_graph/types.py +0 -0
  200. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/embedder.py +0 -0
  201. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/flow_verdict.py +0 -0
  202. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/function_registry.py +0 -0
  203. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/gloss.py +0 -0
  204. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/gloss_anchor.py +0 -0
  205. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/gloss_repair.py +0 -0
  206. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/graph_audit.py +0 -0
  207. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/graph_cli.py +0 -0
  208. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/graph_dialects.py +0 -0
  209. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/graph_loader.py +0 -0
  210. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/graph_query.py +0 -0
  211. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/interface_skip.py +0 -0
  212. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/language_spec.py +0 -0
  213. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/mcp/__init__.py +0 -0
  214. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/mcp/client.py +0 -0
  215. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/mgclient_compat.py +0 -0
  216. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/mgclient_probe.py +0 -0
  217. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/models.py +0 -0
  218. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parser_fingerprint.py +0 -0
  219. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parser_loader.py +0 -0
  220. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/__init__.py +0 -0
  221. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  222. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  223. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  224. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  225. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  226. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  227. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  228. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/ast_grep_scope.py +0 -0
  229. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/build_lock.py +0 -0
  230. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/call_resolver.py +0 -0
  231. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  232. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/base_targets.py +0 -0
  233. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  234. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/identity.py +0 -0
  235. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
  236. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  237. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/parent_extraction.py +0 -0
  238. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  239. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  240. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/contract_linking.py +0 -0
  241. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/contracts.py +0 -0
  242. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/__init__.py +0 -0
  243. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/class_macro.py +0 -0
  244. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/function_values.py +0 -0
  245. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/local_types.py +0 -0
  246. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/overloads.py +0 -0
  247. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/trailing_annotation.py +0 -0
  248. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/type_inference.py +0 -0
  249. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp/utils.py +0 -0
  250. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  251. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  252. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp_frontend/frontend.py +0 -0
  253. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
  254. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp/__init__.py +0 -0
  255. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp/arity.py +0 -0
  256. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp/type_inference.py +0 -0
  257. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp/utils.py +0 -0
  258. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  259. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
  260. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  261. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  262. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  263. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/dart/__init__.py +0 -0
  264. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/dart/package_paths.py +0 -0
  265. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/dart/type_inference.py +0 -0
  266. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/dart/utils.py +0 -0
  267. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/definition_docstring.py +0 -0
  268. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/dependency_parser.py +0 -0
  269. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/dispatch_registry.py +0 -0
  270. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
  271. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/endpoint_routes.py +0 -0
  272. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/endpoints.py +0 -0
  273. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/enum_variants.py +0 -0
  274. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/field_nodes.py +0 -0
  275. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/flat_module.py +0 -0
  276. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  277. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/flow_access/constants.py +0 -0
  278. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/flow_access/processor.py +0 -0
  279. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontend_mode.py +0 -0
  280. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/__init__.py +0 -0
  281. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/cpp.py +0 -0
  282. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/csharp.py +0 -0
  283. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/go.py +0 -0
  284. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/java.py +0 -0
  285. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/protocol.py +0 -0
  286. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/python.py +0 -0
  287. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/frontends/registry.py +0 -0
  288. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/function_ingest.py +0 -0
  289. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/__init__.py +0 -0
  290. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/builds.py +0 -0
  291. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/interface_ingest.py +0 -0
  292. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/interfaces.py +0 -0
  293. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/link_state.py +0 -0
  294. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/module_paths.py +0 -0
  295. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/type_inference.py +0 -0
  296. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go/utils.py +0 -0
  297. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  298. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  299. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
  300. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
  301. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
  302. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/__init__.py +0 -0
  303. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/base.py +0 -0
  304. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/cpp.py +0 -0
  305. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/java.py +0 -0
  306. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/js_ts.py +0 -0
  307. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/julia.py +0 -0
  308. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/lua.py +0 -0
  309. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/php.py +0 -0
  310. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/protocol.py +0 -0
  311. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/python.py +0 -0
  312. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/registry.py +0 -0
  313. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/handlers/rust.py +0 -0
  314. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/import_processor.py +0 -0
  315. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/__init__.py +0 -0
  316. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/constants.py +0 -0
  317. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  318. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/extract.py +0 -0
  319. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/models.py +0 -0
  320. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/processor.py +0 -0
  321. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/registry.py +0 -0
  322. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/resource_names.py +0 -0
  323. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/io_access/url_folding.py +0 -0
  324. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/__init__.py +0 -0
  325. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/method_resolver.py +0 -0
  326. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/type_inference.py +0 -0
  327. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/type_resolver.py +0 -0
  328. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java/utils.py +0 -0
  329. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  330. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  331. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  332. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java_generated.py +0 -0
  333. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/java_lombok.py +0 -0
  334. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  335. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/commonjs_exports.py +0 -0
  336. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/ingest.py +0 -0
  337. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
  338. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/overloads.py +0 -0
  339. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/reexports.py +0 -0
  340. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
  341. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/js_ts/utils.py +0 -0
  342. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/julia/__init__.py +0 -0
  343. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/julia/utils.py +0 -0
  344. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/lua/__init__.py +0 -0
  345. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/lua/type_inference.py +0 -0
  346. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/lua/utils.py +0 -0
  347. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/module_docstring.py +0 -0
  348. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/notebook.py +0 -0
  349. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/parameter_nodes.py +0 -0
  350. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/php/__init__.py +0 -0
  351. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/php/class_names.py +0 -0
  352. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/php/namespaces.py +0 -0
  353. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/php/utils.py +0 -0
  354. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/positional_params.py +0 -0
  355. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/__init__.py +0 -0
  356. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/class_aliases.py +0 -0
  357. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
  358. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/forward_refs.py +0 -0
  359. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/overloads.py +0 -0
  360. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/receiver_rebinding.py +0 -0
  361. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/type_inference.py +0 -0
  362. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/utils.py +0 -0
  363. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
  364. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py/with_analyzer.py +0 -0
  365. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  366. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  367. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/python_source_roots.py +0 -0
  368. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/rpc_exposure.py +0 -0
  369. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/rs/__init__.py +0 -0
  370. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/rs/cargo_semver.py +0 -0
  371. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/scala/__init__.py +0 -0
  372. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/scala/utils.py +0 -0
  373. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/semantic_call_join.py +0 -0
  374. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/stdlib_extractor.py +0 -0
  375. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/string_call.py +0 -0
  376. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/structure_processor.py +0 -0
  377. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/parsers/type_facts.py +0 -0
  378. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/path_filters.py +0 -0
  379. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/project_selection.py +0 -0
  380. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/providers/__init__.py +0 -0
  381. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/providers/base.py +0 -0
  382. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/providers/litellm.py +0 -0
  383. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/c_sharp.scm +0 -0
  384. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/dart.scm +0 -0
  385. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/java.scm +0 -0
  386. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/javascript.scm +0 -0
  387. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/julia.scm +0 -0
  388. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/php.scm +0 -0
  389. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/python.scm +0 -0
  390. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/rust.scm +0 -0
  391. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/queries/highlights/typescript.scm +0 -0
  392. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/readme_sections.py +0 -0
  393. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/schema_builder.py +0 -0
  394. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/schema_parse.py +0 -0
  395. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/schemas.py +0 -0
  396. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/anthropic_token_counter.py +0 -0
  397. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/cypher_guard.py +0 -0
  398. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/filtering.py +0 -0
  399. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/gloss_cleanup.py +0 -0
  400. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/graph_diff.py +0 -0
  401. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/graph_service.py +0 -0
  402. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/llm.py +0 -0
  403. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/neo4j_driver.py +0 -0
  404. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/provenance.py +0 -0
  405. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/resource_cleanup.py +0 -0
  406. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/services/usage_cost.py +0 -0
  407. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/sql_names.py +0 -0
  408. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/stack/__init__.py +0 -0
  409. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/stack/cli.py +0 -0
  410. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/stack/constants.py +0 -0
  411. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/stack/manager.py +0 -0
  412. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/taint.py +0 -0
  413. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/__init__.py +0 -0
  414. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/ast_grep_service.py +0 -0
  415. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/code_retrieval.py +0 -0
  416. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/codebase_query.py +0 -0
  417. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/directory_lister.py +0 -0
  418. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/duplicate_detection.py +0 -0
  419. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/file_editor.py +0 -0
  420. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/file_writer.py +0 -0
  421. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/graph_refresh.py +0 -0
  422. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/graph_rerank.py +0 -0
  423. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/language.py +0 -0
  424. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/language_catalog.py +0 -0
  425. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/research.py +0 -0
  426. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/semantic_search.py +0 -0
  427. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/structural_editor.py +0 -0
  428. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/structural_search.py +0 -0
  429. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tools/web_search.py +0 -0
  430. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/__init__.py +0 -0
  431. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/carry.py +0 -0
  432. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/cli.py +0 -0
  433. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/cpuprofile.py +0 -0
  434. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/dispatch_site.py +0 -0
  435. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/ebpf_pprof.py +0 -0
  436. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/ingest.py +0 -0
  437. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/instrumented.py +0 -0
  438. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/pprof.py +0 -0
  439. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/pytest_plugin.py +0 -0
  440. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/records.py +0 -0
  441. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/resolution.py +0 -0
  442. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/rust_pprof.py +0 -0
  443. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/sourcemap.py +0 -0
  444. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/speedscope.py +0 -0
  445. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/tracer.py +0 -0
  446. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/trace/xdebug.py +0 -0
  447. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/tree_sitter_point.py +0 -0
  448. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/__init__.py +0 -0
  449. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/cpp_signatures.py +0 -0
  450. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/dependencies.py +0 -0
  451. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/endpoints.py +0 -0
  452. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/fqn_resolver.py +0 -0
  453. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/interruptible_thread.py +0 -0
  454. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/json_io.py +0 -0
  455. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/path_utils.py +0 -0
  456. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/qn_markers.py +0 -0
  457. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/rich_markdown.py +0 -0
  458. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/source_encoding.py +0 -0
  459. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/source_extraction.py +0 -0
  460. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/terminal_console.py +0 -0
  461. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/utils/token_utils.py +0 -0
  462. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/vector_store.py +0 -0
  463. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/watch.py +0 -0
  464. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/workspaces/__init__.py +0 -0
  465. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/workspaces/cli.py +0 -0
  466. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/workspaces/constants.py +0 -0
  467. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/workspaces/models.py +0 -0
  468. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codebase_rag/workspaces/storage.py +0 -0
  469. {code_graph_rag-0.3.2 → code_graph_rag-0.4.5}/codec/__init__.py +0 -0
  470. {code_graph_rag-0.3.2 → 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.2
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
@@ -38,8 +39,9 @@ Requires-Dist: defusedxml>=0.7.1
38
39
  Requires-Dist: huggingface-hub[hf-xet]>=1.7.2
39
40
  Requires-Dist: pathspec>=1.0.4
40
41
  Requires-Dist: pygments>=2.20.0
42
+ Requires-Dist: certifi>=2026.10.23
41
43
  Requires-Dist: regex>=2024.11.6
42
- 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"))
43
45
  Provides-Extra: test
44
46
  Requires-Dist: jedi>=0.19; extra == "test"
45
47
  Requires-Dist: pytest>=8.4.1; extra == "test"
@@ -78,11 +80,13 @@ Requires-Dist: tree-sitter-sql>=0.3.11; extra == "treesitter-full"
78
80
  Requires-Dist: tree-sitter-markdown>=0.5.1; extra == "treesitter-full"
79
81
  Provides-Extra: semantic
80
82
  Requires-Dist: qdrant-client>=1.9.0; extra == "semantic"
83
+ Requires-Dist: grpcio>=1.84.1; extra == "semantic"
81
84
  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
85
  Requires-Dist: torch>=2.6.0; extra == "semantic"
83
86
  Requires-Dist: transformers>=5.0.0; extra == "semantic"
84
87
  Provides-Extra: milvus
85
88
  Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
89
+ Requires-Dist: grpcio>=1.84.1; extra == "milvus"
86
90
  Provides-Extra: sqlite-vec
87
91
  Requires-Dist: sqlite-vec>=0.1.9; extra == "sqlite-vec"
88
92
  Provides-Extra: ast-grep
@@ -61,7 +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
- - **SBOM**: CycloneDX SBOM and Docker image attestation published with each release.
64
+ - **MiniMax Models Added**: Current MiniMax text models have been included.
65
65
  <!-- /SECTION:latest_news -->
66
66
 
67
67
  See [NEWS.md](NEWS.md) for the full history.
@@ -188,6 +188,7 @@ Code-Graph-RAG runs as an [MCP](https://modelcontextprotocol.io) server so Claud
188
188
  - [Real-Time Updates](docs/guide/realtime-updates.md)
189
189
  - [C/C++ Semantic Mode](docs/guide/cpp-semantic-mode.md)
190
190
  - [MCP Server](docs/guide/mcp-server.md)
191
+ - [Porting Between Languages](docs/guide/porting.md)
191
192
 
192
193
  **Architecture**
193
194
  - [Overview](docs/architecture/overview.md)
@@ -229,6 +230,10 @@ For issues or questions, check the [Troubleshooting](docs/advanced/troubleshooti
229
230
 
230
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.
231
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
+
232
237
  ## License
233
238
 
234
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.2
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
@@ -38,8 +39,9 @@ Requires-Dist: defusedxml>=0.7.1
38
39
  Requires-Dist: huggingface-hub[hf-xet]>=1.7.2
39
40
  Requires-Dist: pathspec>=1.0.4
40
41
  Requires-Dist: pygments>=2.20.0
42
+ Requires-Dist: certifi>=2026.10.23
41
43
  Requires-Dist: regex>=2024.11.6
42
- 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"))
43
45
  Provides-Extra: test
44
46
  Requires-Dist: jedi>=0.19; extra == "test"
45
47
  Requires-Dist: pytest>=8.4.1; extra == "test"
@@ -78,11 +80,13 @@ Requires-Dist: tree-sitter-sql>=0.3.11; extra == "treesitter-full"
78
80
  Requires-Dist: tree-sitter-markdown>=0.5.1; extra == "treesitter-full"
79
81
  Provides-Extra: semantic
80
82
  Requires-Dist: qdrant-client>=1.9.0; extra == "semantic"
83
+ Requires-Dist: grpcio>=1.84.1; extra == "semantic"
81
84
  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
85
  Requires-Dist: torch>=2.6.0; extra == "semantic"
83
86
  Requires-Dist: transformers>=5.0.0; extra == "semantic"
84
87
  Provides-Extra: milvus
85
88
  Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
89
+ Requires-Dist: grpcio>=1.84.1; extra == "milvus"
86
90
  Provides-Extra: sqlite-vec
87
91
  Requires-Dist: sqlite-vec>=0.1.9; extra == "sqlite-vec"
88
92
  Provides-Extra: ast-grep
@@ -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
@@ -52,12 +53,15 @@ codebase_rag/models.py
52
53
  codebase_rag/parser_fingerprint.py
53
54
  codebase_rag/parser_loader.py
54
55
  codebase_rag/path_filters.py
56
+ codebase_rag/port_cli.py
57
+ codebase_rag/port_parity.py
55
58
  codebase_rag/project_selection.py
56
59
  codebase_rag/prompts.py
57
60
  codebase_rag/readme_sections.py
58
61
  codebase_rag/schema_builder.py
59
62
  codebase_rag/schema_parse.py
60
63
  codebase_rag/schemas.py
64
+ codebase_rag/sensitive_paths.py
61
65
  codebase_rag/sql_names.py
62
66
  codebase_rag/sqlite_vectors.py
63
67
  codebase_rag/structural_check.py
@@ -148,6 +152,7 @@ codebase_rag/constants/lang_tooling.py
148
152
  codebase_rag/constants/languages.py
149
153
  codebase_rag/constants/mcp.py
150
154
  codebase_rag/constants/notebook.py
155
+ codebase_rag/constants/port.py
151
156
  codebase_rag/constants/providers.py
152
157
  codebase_rag/constants/security.py
153
158
  codebase_rag/constants/sqlite_vectors.py
@@ -162,6 +167,7 @@ codebase_rag/editing/imports.py
162
167
  codebase_rag/editing/occurrences.py
163
168
  codebase_rag/editing/patcher.py
164
169
  codebase_rag/editing/rename.py
170
+ codebase_rag/editing/signature.py
165
171
  codebase_rag/editing/signature_bind.py
166
172
  codebase_rag/editing/signature_contract.py
167
173
  codebase_rag/editing/signature_spec.py
@@ -217,12 +223,15 @@ codebase_rag/parsers/interface_fingerprint.py
217
223
  codebase_rag/parsers/java_generated.py
218
224
  codebase_rag/parsers/java_lombok.py
219
225
  codebase_rag/parsers/module_docstring.py
226
+ codebase_rag/parsers/native_trees.py
220
227
  codebase_rag/parsers/notebook.py
221
228
  codebase_rag/parsers/parameter_nodes.py
222
229
  codebase_rag/parsers/positional_params.py
223
230
  codebase_rag/parsers/python_source_roots.py
224
231
  codebase_rag/parsers/rpc_exposure.py
225
232
  codebase_rag/parsers/semantic_call_join.py
233
+ codebase_rag/parsers/sql_ddl.py
234
+ codebase_rag/parsers/sql_recovery.py
226
235
  codebase_rag/parsers/stdlib_extractor.py
227
236
  codebase_rag/parsers/string_call.py
228
237
  codebase_rag/parsers/structure_processor.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
@@ -18,10 +19,11 @@ defusedxml>=0.7.1
18
19
  huggingface-hub[hf-xet]>=1.7.2
19
20
  pathspec>=1.0.4
20
21
  pygments>=2.20.0
22
+ certifi>=2026.10.23
21
23
  regex>=2024.11.6
22
24
 
23
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"))]
24
- cgr-graph-rs<0.2,>=0.1.0
26
+ cgr-graph-rs<0.2,>=0.1.4
25
27
 
26
28
  [ast-grep]
27
29
  ast-grep-py>=0.51.0
@@ -35,6 +37,7 @@ pymgclient>=1.6.0
35
37
 
36
38
  [milvus]
37
39
  pymilvus[milvus-lite]>=3.0.0
40
+ grpcio>=1.84.1
38
41
 
39
42
  [neo4j]
40
43
  neo4j>=5.28.1
@@ -44,6 +47,7 @@ jedi>=0.19
44
47
 
45
48
  [semantic]
46
49
  qdrant-client>=1.9.0
50
+ grpcio>=1.84.1
47
51
  torch>=2.6.0
48
52
  transformers>=5.0.0
49
53
 
@@ -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
@@ -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
@@ -78,7 +79,10 @@ from .sync_guard import RUNNING_SYNC_TOKENS as _RUNNING_SYNC_TOKENS
78
79
  from .sync_guard import OwnerCheck as _OwnerCheck
79
80
  from .sync_guard import SyncRefusedError, mark_sync_incomplete, release_project_claim
80
81
  from .sync_guard import clear_sync_incomplete as _clear_sync_incomplete
82
+ from .sync_guard import partial_graph_refusal as _partial_graph_refusal
81
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
82
86
  from .sync_guard import sync_marker_params as _sync_marker_params
83
87
  from .sync_guard import sync_owner as _sync_owner
84
88
  from .sync_lock import SyncLockError, repo_sync_lock
@@ -94,6 +98,7 @@ from .types_defs import (
94
98
  DuplicatesReport,
95
99
  ProjectSync,
96
100
  PropertyValue,
101
+ ReingestReport,
97
102
  ResultRow,
98
103
  ResultValue,
99
104
  )
@@ -114,6 +119,7 @@ from .workspaces.cli import cli as workspace_cli
114
119
 
115
120
  if TYPE_CHECKING:
116
121
  from .graph_updater import GraphUpdater
122
+ from .watch import WriteMarker
117
123
 
118
124
 
119
125
  def _vendored_click_exception() -> type[click.ClickException]:
@@ -570,7 +576,7 @@ def _start_active_projects(
570
576
 
571
577
 
572
578
  @contextmanager
573
- def _console_on_stderr() -> Iterator[None]:
579
+ def _console_on_stderr() -> Generator[None]:
574
580
  console = app_context.console
575
581
  app_context.console = terminal_aware_console(stderr=True)
576
582
  try:
@@ -942,7 +948,7 @@ def _release_project_claim(batch_size: int, project_name: str, repo: Path) -> No
942
948
  @contextmanager
943
949
  def _project_claim(
944
950
  batch_size: int, project_name: str, repo: Path, *, clean: bool, assume_yes: bool
945
- ) -> Iterator[list[str] | None]:
951
+ ) -> Generator[list[str] | None]:
946
952
  """Hold this sync's claim on its project name while the sync runs (#2411).
947
953
 
948
954
  Yields the roots `_mark_sync_incomplete` must still find on the Project.
@@ -980,7 +986,7 @@ def _mark_sync_incomplete(
980
986
 
981
987
 
982
988
  @contextmanager
983
- 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]:
984
990
  """Hold the checkout's sync lock for the whole sync, or stop first (#2441).
985
991
 
986
992
  Taken before the `--clean` wipe and the `:IncompleteRun` marker, so a
@@ -1103,16 +1109,17 @@ def _sweep_glosses_after_failed_delete(
1103
1109
 
1104
1110
 
1105
1111
  def _run_updater_deferring_interrupt(
1106
- updater: "GraphUpdater",
1112
+ updater: "GraphUpdater", *, rebuild: bool = False
1107
1113
  ) -> KeyboardInterrupt | None:
1108
1114
  """Run the sync's graph update; return a Ctrl+C that landed after its commit.
1109
1115
 
1110
1116
  The run stamps the sync time as part of its commit (#2444), and the
1111
1117
  caller clears its marker before re-raising what this returns; a Ctrl+C
1112
- 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.
1113
1120
  """
1114
1121
  try:
1115
- updater.run()
1122
+ updater.run(force=rebuild)
1116
1123
  except ex.EmbeddingsInterrupted as stop:
1117
1124
  # Raised only after the run committed, so the graph is whole and
1118
1125
  # the sync is recorded like any other; the interrupt then ends
@@ -1182,6 +1189,15 @@ def _run_graph_sync(
1182
1189
  # hits and can map onto unrelated nodes in the rebuilt graph.
1183
1190
  clear_all_embeddings()
1184
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
+ )
1185
1201
  # After the wipe, which would delete the marker with everything else,
1186
1202
  # and before `ensure_constraints`, whose migration can already purge.
1187
1203
  _mark_sync_incomplete(ingestor, project_name, owner, owned_roots)
@@ -1201,8 +1217,9 @@ def _run_graph_sync(
1201
1217
  capture=_capture_selection(capture),
1202
1218
  skip_embeddings=skip_embeddings,
1203
1219
  )
1204
- interrupted = _run_updater_deferring_interrupt(updater)
1220
+ interrupted = _run_updater_deferring_interrupt(updater, rebuild=bool(stranded))
1205
1221
  _clear_sync_incomplete(ingestor, project_name)
1222
+ _retire_stranded_runs(ingestor, project_name, stranded)
1206
1223
  # Taken before the export: counting it made a no-op sync of a small
1207
1224
  # repo report the time to dump the whole shared graph (issue #2440).
1208
1225
  elapsed = time.monotonic() - elapsed
@@ -2002,7 +2019,12 @@ def mcp_server(
2002
2019
  workspace: str | None = typer.Option(
2003
2020
  None, "--workspace", help=ch.HELP_MCP_WORKSPACE
2004
2021
  ),
2022
+ read_only: bool = typer.Option(False, "--read-only", help=ch.HELP_MCP_READ_ONLY),
2005
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
2006
2028
  try:
2007
2029
  if transport == cs.MCPTransport.HTTP:
2008
2030
  from codebase_rag.mcp import serve_http
@@ -2176,6 +2198,18 @@ def graph_command(ctx: typer.Context) -> None:
2176
2198
  _run_delegated_group(graph_cli, ctx)
2177
2199
 
2178
2200
 
2201
+ @app.command(
2202
+ name=ch.CLICommandName.PORT,
2203
+ help=ch.CMD_PORT,
2204
+ short_help=ch.CMD_PORT,
2205
+ add_help_option=False,
2206
+ context_settings=_DELEGATED_GROUP_CONTEXT,
2207
+ rich_help_panel=ch.PANEL_USE,
2208
+ )
2209
+ def port_command(ctx: typer.Context) -> None:
2210
+ _run_delegated_group(port_cli, ctx)
2211
+
2212
+
2179
2213
  @app.command(
2180
2214
  name=ch.CLICommandName.CHECK,
2181
2215
  help=ch.CMD_CHECK,
@@ -2235,6 +2269,75 @@ def check_command(
2235
2269
  raise typer.Exit(code=1)
2236
2270
 
2237
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
+
2238
2341
  @app.command(
2239
2342
  name=ch.CLICommandName.RENAME,
2240
2343
  help=ch.CMD_RENAME,
@@ -2275,31 +2378,141 @@ def rename_command(
2275
2378
  queries=queries,
2276
2379
  project_name=name,
2277
2380
  )
2278
- try:
2279
- report = rename(
2280
- repo_path.resolve(),
2281
- fetch_all,
2282
- name,
2283
- qualified_name,
2284
- new_name,
2285
- allow_heuristic=allow_heuristic,
2286
- dry_run=dry_run,
2287
- reingest=updater.reingest,
2288
- 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
2289
2406
  )
2290
- except RenameRefused as refused:
2291
- typer.echo(str(refused), err=True)
2292
- for site in sites_for([*refused.ambiguous, *refused.unplanned]):
2293
- typer.echo(f" {site}", err=True)
2294
- for entry in refused.unlocatable:
2295
- typer.echo(f" {entry}", err=True)
2296
- raise typer.Exit(code=1) from refused
2297
2407
  payload = dict(report._asdict())
2298
2408
  payload[cs.KEY_SITES] = sites_for(report.sites)
2299
2409
  payload[cs.KEY_AMBIGUOUS] = sites_for(report.ambiguous)
2300
2410
  payload[cs.KEY_UNPLANNED] = sites_for(report.unplanned)
2301
2411
  payload["verdict"] = report.verdict._asdict() if report.verdict else None
2302
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)
2303
2516
  if not report.applied and not dry_run:
2304
2517
  raise typer.Exit(code=1)
2305
2518