code-graph-rag 0.4.19__tar.gz → 0.6.0__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 (480) hide show
  1. {code_graph_rag-0.4.19/code_graph_rag.egg-info → code_graph_rag-0.6.0}/PKG-INFO +13 -10
  2. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/PYPI_README.md +4 -4
  3. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/README.md +5 -5
  4. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0/code_graph_rag.egg-info}/PKG-INFO +13 -10
  5. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/SOURCES.txt +4 -0
  6. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/requires.txt +4 -6
  7. code_graph_rag-0.6.0/codebase_rag/__init__.py +8 -0
  8. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/cli.py +36 -14
  9. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/cli_help.py +4 -2
  10. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/config.py +17 -2
  11. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_csharp.py +50 -0
  12. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_js.py +21 -0
  13. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_python.py +7 -0
  14. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/build.py +0 -1
  15. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/cli.py +68 -4
  16. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/core.py +10 -1
  17. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/embedded_graph.py +6 -0
  18. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/mcp.py +9 -0
  19. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/security.py +36 -0
  20. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/dead_code.py +25 -0
  21. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/signature.py +74 -39
  22. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_bind.py +5 -2
  23. code_graph_rag-0.6.0/codebase_rag/editing/signature_js.py +249 -0
  24. code_graph_rag-0.6.0/codebase_rag/editing/signature_js_bind.py +265 -0
  25. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_spec.py +50 -7
  26. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/transaction.py +6 -0
  27. code_graph_rag-0.6.0/codebase_rag/embedded_graph/extension.py +32 -0
  28. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/exceptions.py +36 -0
  29. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/logs.py +4 -0
  30. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/mcp/server.py +69 -10
  31. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/mcp/tools.py +11 -0
  32. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/call_processor.py +23 -2
  33. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/call_resolver.py +24 -1
  34. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/type_inference.py +228 -12
  35. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/utils.py +196 -19
  36. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/frontend.py +5 -5
  37. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/dependency_parser.py +4 -9
  38. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/flow_access/processor.py +576 -67
  39. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/import_processor.py +44 -19
  40. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/readme_sections.py +5 -2
  41. code_graph_rag-0.6.0/codebase_rag/sensitive_paths.py +164 -0
  42. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tool_errors.py +11 -0
  43. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/file_editor.py +10 -0
  44. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/file_writer.py +5 -0
  45. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/tool_descriptions.py +2 -1
  46. code_graph_rag-0.6.0/codebase_rag/utils/safe_xml.py +50 -0
  47. code_graph_rag-0.6.0/codebase_rag/utils/toml_writer.py +23 -0
  48. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/watch.py +5 -2
  49. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/workspaces/storage.py +2 -3
  50. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/pyproject.toml +26 -12
  51. code_graph_rag-0.4.19/codebase_rag/__init__.py +0 -3
  52. code_graph_rag-0.4.19/codebase_rag/embedded_graph/extension.py +0 -22
  53. code_graph_rag-0.4.19/codebase_rag/sensitive_paths.py +0 -41
  54. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/LICENSE +0 -0
  55. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/cgr/__init__.py +0 -0
  56. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  57. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/entry_points.txt +0 -0
  58. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/top_level.txt +0 -0
  59. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/_cli_env.py +0 -0
  60. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/__init__.py +0 -0
  61. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
  62. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
  63. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
  64. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
  65. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
  66. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
  67. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
  68. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  69. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
  70. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
  71. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  72. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
  73. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
  74. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
  75. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  76. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  77. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
  78. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
  79. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
  80. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
  81. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
  82. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
  83. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  84. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
  85. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
  86. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  87. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
  88. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
  89. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
  90. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  91. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  92. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
  93. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
  94. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
  95. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
  96. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
  97. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
  98. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  99. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
  100. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
  101. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  102. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
  103. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
  104. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
  105. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  106. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  107. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/ast_cache.py +0 -0
  108. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/capture.py +0 -0
  109. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/check_isolation.py +0 -0
  110. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/checkout_state.py +0 -0
  111. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/cli_runtime.py +0 -0
  112. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/console_marks.py +0 -0
  113. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/__init__.py +0 -0
  114. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_cpp.py +0 -0
  115. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_dart.py +0 -0
  116. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_go.py +0 -0
  117. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_java.py +0 -0
  118. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_julia.py +0 -0
  119. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_lua.py +0 -0
  120. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_nodes.py +0 -0
  121. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_php.py +0 -0
  122. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_rust.py +0 -0
  123. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_scala.py +0 -0
  124. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_sql.py +0 -0
  125. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/deadcode_roots.py +0 -0
  126. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/deps.py +0 -0
  127. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/duplicates.py +0 -0
  128. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/fqn_specs.py +0 -0
  129. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/graph.py +0 -0
  130. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/health.py +0 -0
  131. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/interface.py +0 -0
  132. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/lang_tooling.py +0 -0
  133. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/languages.py +0 -0
  134. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/notebook.py +0 -0
  135. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/port.py +0 -0
  136. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/providers.py +0 -0
  137. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/sqlite_vectors.py +0 -0
  138. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/stdlib_types.py +0 -0
  139. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/structural.py +0 -0
  140. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/constants/trace.py +0 -0
  141. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/context_pruning.py +0 -0
  142. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/context_slice.py +0 -0
  143. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/crash_correlation.py +0 -0
  144. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/cypher_queries.py +0 -0
  145. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/decorators.py +0 -0
  146. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/docker-compose.yaml +0 -0
  147. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/duplicates.py +0 -0
  148. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/__init__.py +0 -0
  149. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/cli.py +0 -0
  150. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/contract.py +0 -0
  151. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/import_paths.py +0 -0
  152. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/imports.py +0 -0
  153. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/occurrences.py +0 -0
  154. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/patcher.py +0 -0
  155. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/rename.py +0 -0
  156. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_contract.py +0 -0
  157. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editing/sites.py +0 -0
  158. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/editor_links.py +0 -0
  159. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/__init__.py +0 -0
  160. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/compiler.py +0 -0
  161. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/connection.py +0 -0
  162. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/cypher_ast.py +0 -0
  163. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/executor.py +0 -0
  164. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/expressions.py +0 -0
  165. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/functions.py +0 -0
  166. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/lexer.py +0 -0
  167. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/limits.py +0 -0
  168. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/native.py +0 -0
  169. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/parser.py +0 -0
  170. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/procedures.py +0 -0
  171. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/sql.py +0 -0
  172. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/store.py +0 -0
  173. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/types.py +0 -0
  174. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/embedder.py +0 -0
  175. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/flow_verdict.py +0 -0
  176. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/function_registry.py +0 -0
  177. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/gloss.py +0 -0
  178. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/gloss_anchor.py +0 -0
  179. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/gloss_repair.py +0 -0
  180. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/graph_audit.py +0 -0
  181. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/graph_cli.py +0 -0
  182. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/graph_dialects.py +0 -0
  183. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/graph_loader.py +0 -0
  184. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/graph_query.py +0 -0
  185. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/graph_updater.py +0 -0
  186. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/instructions_trust.py +0 -0
  187. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/interface_skip.py +0 -0
  188. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/language_spec.py +0 -0
  189. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/main.py +0 -0
  190. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/mcp/__init__.py +0 -0
  191. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/mcp/client.py +0 -0
  192. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/mgclient_compat.py +0 -0
  193. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/mgclient_probe.py +0 -0
  194. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/models.py +0 -0
  195. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parser_fingerprint.py +0 -0
  196. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parser_loader.py +0 -0
  197. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/__init__.py +0 -0
  198. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/anchor_hash.py +0 -0
  199. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_fingerprint.py +0 -0
  200. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
  201. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
  202. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
  203. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
  204. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
  205. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  206. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
  207. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
  208. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_scope.py +0 -0
  209. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_tier.py +0 -0
  210. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/build_lock.py +0 -0
  211. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  212. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/base_targets.py +0 -0
  213. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  214. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/identity.py +0 -0
  215. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
  216. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/mixin.py +0 -0
  217. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  218. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/parent_extraction.py +0 -0
  219. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  220. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  221. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/contract_linking.py +0 -0
  222. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/contracts.py +0 -0
  223. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/__init__.py +0 -0
  224. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/class_macro.py +0 -0
  225. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/function_values.py +0 -0
  226. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/local_types.py +0 -0
  227. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/overloads.py +0 -0
  228. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
  229. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/trailing_annotation.py +0 -0
  230. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/type_inference.py +0 -0
  231. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/utils.py +0 -0
  232. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  233. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
  234. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/frontend.py +0 -0
  235. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
  236. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/__init__.py +0 -0
  237. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/arity.py +0 -0
  238. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  239. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  240. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  241. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  242. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/__init__.py +0 -0
  243. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/package_paths.py +0 -0
  244. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/type_inference.py +0 -0
  245. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/utils.py +0 -0
  246. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/definition_docstring.py +0 -0
  247. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/definition_processor.py +0 -0
  248. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/dispatch_registry.py +0 -0
  249. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/document_tier.py +0 -0
  250. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
  251. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/endpoint_routes.py +0 -0
  252. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/endpoints.py +0 -0
  253. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/enum_variants.py +0 -0
  254. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/export_detection.py +0 -0
  255. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/factory.py +0 -0
  256. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/field_nodes.py +0 -0
  257. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/flat_module.py +0 -0
  258. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  259. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/flow_access/constants.py +0 -0
  260. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontend_mode.py +0 -0
  261. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/__init__.py +0 -0
  262. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/cpp.py +0 -0
  263. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/csharp.py +0 -0
  264. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/go.py +0 -0
  265. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/java.py +0 -0
  266. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/protocol.py +0 -0
  267. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/python.py +0 -0
  268. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/registry.py +0 -0
  269. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/function_ingest.py +0 -0
  270. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/__init__.py +0 -0
  271. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/builds.py +0 -0
  272. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/interface_ingest.py +0 -0
  273. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/interfaces.py +0 -0
  274. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/link_state.py +0 -0
  275. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/module_paths.py +0 -0
  276. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/type_inference.py +0 -0
  277. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/utils.py +0 -0
  278. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
  279. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
  280. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
  281. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
  282. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
  283. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/__init__.py +0 -0
  284. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/base.py +0 -0
  285. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/cpp.py +0 -0
  286. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/java.py +0 -0
  287. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/js_ts.py +0 -0
  288. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/julia.py +0 -0
  289. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/lua.py +0 -0
  290. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/php.py +0 -0
  291. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/protocol.py +0 -0
  292. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/python.py +0 -0
  293. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/registry.py +0 -0
  294. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/rust.py +0 -0
  295. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/interface_fingerprint.py +0 -0
  296. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/__init__.py +0 -0
  297. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/constants.py +0 -0
  298. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/descriptor.py +0 -0
  299. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/extract.py +0 -0
  300. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/models.py +0 -0
  301. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/processor.py +0 -0
  302. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/registry.py +0 -0
  303. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/resource_names.py +0 -0
  304. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/url_folding.py +0 -0
  305. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/__init__.py +0 -0
  306. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/method_resolver.py +0 -0
  307. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/type_inference.py +0 -0
  308. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/type_resolver.py +0 -0
  309. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/utils.py +0 -0
  310. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/variable_analyzer.py +0 -0
  311. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
  312. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
  313. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
  314. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_generated.py +0 -0
  315. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_lombok.py +0 -0
  316. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  317. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/commonjs_exports.py +0 -0
  318. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/ingest.py +0 -0
  319. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
  320. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/module_system.py +0 -0
  321. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/overloads.py +0 -0
  322. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/reexports.py +0 -0
  323. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
  324. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/utils.py +0 -0
  325. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/julia/__init__.py +0 -0
  326. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/julia/utils.py +0 -0
  327. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/lua/__init__.py +0 -0
  328. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/lua/type_inference.py +0 -0
  329. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/lua/utils.py +0 -0
  330. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/module_docstring.py +0 -0
  331. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/native_trees.py +0 -0
  332. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/notebook.py +0 -0
  333. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/parameter_nodes.py +0 -0
  334. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/__init__.py +0 -0
  335. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/class_names.py +0 -0
  336. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/namespaces.py +0 -0
  337. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/utils.py +0 -0
  338. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/positional_params.py +0 -0
  339. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/__init__.py +0 -0
  340. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
  341. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/class_aliases.py +0 -0
  342. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/definition_index.py +0 -0
  343. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
  344. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/flow_bindings.py +0 -0
  345. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/forward_refs.py +0 -0
  346. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/overloads.py +0 -0
  347. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/patterns.py +0 -0
  348. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/receiver_rebinding.py +0 -0
  349. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/type_inference.py +0 -0
  350. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/utils.py +0 -0
  351. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
  352. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/with_analyzer.py +0 -0
  353. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
  354. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
  355. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/python_source_roots.py +0 -0
  356. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/rpc_exposure.py +0 -0
  357. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/__init__.py +0 -0
  358. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/cargo_semver.py +0 -0
  359. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/type_inference.py +0 -0
  360. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/utils.py +0 -0
  361. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/scala/__init__.py +0 -0
  362. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/scala/utils.py +0 -0
  363. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/semantic_call_join.py +0 -0
  364. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/sql_ddl.py +0 -0
  365. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/sql_recovery.py +0 -0
  366. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/stdlib_extractor.py +0 -0
  367. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/string_call.py +0 -0
  368. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/structure_processor.py +0 -0
  369. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/type_facts.py +0 -0
  370. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/type_inference.py +0 -0
  371. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/parsers/utils.py +0 -0
  372. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/path_filters.py +0 -0
  373. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/port_cli.py +0 -0
  374. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/port_parity.py +0 -0
  375. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/project_selection.py +0 -0
  376. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/prompts.py +0 -0
  377. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/providers/__init__.py +0 -0
  378. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/providers/base.py +0 -0
  379. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/providers/litellm.py +0 -0
  380. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/c_sharp.scm +0 -0
  381. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/dart.scm +0 -0
  382. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/java.scm +0 -0
  383. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/javascript.scm +0 -0
  384. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/julia.scm +0 -0
  385. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/php.scm +0 -0
  386. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/python.scm +0 -0
  387. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/rust.scm +0 -0
  388. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/typescript.scm +0 -0
  389. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/schema_builder.py +0 -0
  390. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/schema_parse.py +0 -0
  391. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/schemas.py +0 -0
  392. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/__init__.py +0 -0
  393. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/anthropic_token_counter.py +0 -0
  394. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/cypher_guard.py +0 -0
  395. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/filtering.py +0 -0
  396. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/gloss_cleanup.py +0 -0
  397. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/graph_diff.py +0 -0
  398. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/graph_service.py +0 -0
  399. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/llm.py +0 -0
  400. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/neo4j_driver.py +0 -0
  401. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/protobuf_service.py +0 -0
  402. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/provenance.py +0 -0
  403. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/resource_cleanup.py +0 -0
  404. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/services/usage_cost.py +0 -0
  405. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/source_checkout.py +0 -0
  406. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/sql_names.py +0 -0
  407. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/sqlite_vectors.py +0 -0
  408. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/stack/__init__.py +0 -0
  409. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/stack/cli.py +0 -0
  410. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/stack/constants.py +0 -0
  411. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/stack/health.py +0 -0
  412. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/stack/manager.py +0 -0
  413. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/structural_check.py +0 -0
  414. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/structural_delta.py +0 -0
  415. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/sync_guard.py +0 -0
  416. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/sync_lock.py +0 -0
  417. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/taint.py +0 -0
  418. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/__init__.py +0 -0
  419. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/ast_grep_service.py +0 -0
  420. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/code_retrieval.py +0 -0
  421. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/codebase_query.py +0 -0
  422. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/directory_lister.py +0 -0
  423. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/duplicate_detection.py +0 -0
  424. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/file_reader.py +0 -0
  425. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/graph_refresh.py +0 -0
  426. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/graph_rerank.py +0 -0
  427. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/health_checker.py +0 -0
  428. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/language.py +0 -0
  429. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/language_catalog.py +0 -0
  430. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/research.py +0 -0
  431. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/semantic_search.py +0 -0
  432. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/shell_command.py +0 -0
  433. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/structural_editor.py +0 -0
  434. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/structural_search.py +0 -0
  435. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tools/web_search.py +0 -0
  436. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/__init__.py +0 -0
  437. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/carry.py +0 -0
  438. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/cli.py +0 -0
  439. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/cpuprofile.py +0 -0
  440. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/dispatch_site.py +0 -0
  441. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/ebpf_pprof.py +0 -0
  442. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/ingest.py +0 -0
  443. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/instrumented.py +0 -0
  444. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/pprof.py +0 -0
  445. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/pytest_plugin.py +0 -0
  446. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/records.py +0 -0
  447. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/resolution.py +0 -0
  448. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/rust_pprof.py +0 -0
  449. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/sourcemap.py +0 -0
  450. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/speedscope.py +0 -0
  451. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/tracer.py +0 -0
  452. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/trace/xdebug.py +0 -0
  453. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/tree_sitter_point.py +0 -0
  454. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/types_defs.py +0 -0
  455. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/unixcoder.py +0 -0
  456. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/__init__.py +0 -0
  457. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/cpp_signatures.py +0 -0
  458. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/dependencies.py +0 -0
  459. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/endpoints.py +0 -0
  460. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/fqn_resolver.py +0 -0
  461. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/interruptible_thread.py +0 -0
  462. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/json_io.py +0 -0
  463. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/path_utils.py +0 -0
  464. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/process_owner.py +0 -0
  465. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/qn_markers.py +0 -0
  466. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/rich_markdown.py +0 -0
  467. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/source_encoding.py +0 -0
  468. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/source_extraction.py +0 -0
  469. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/terminal_console.py +0 -0
  470. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/utils/token_utils.py +0 -0
  471. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/vector_store.py +0 -0
  472. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/workspaces/__init__.py +0 -0
  473. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/workspaces/cli.py +0 -0
  474. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/workspaces/constants.py +0 -0
  475. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codebase_rag/workspaces/models.py +0 -0
  476. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codec/__init__.py +0 -0
  477. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codec/schema.proto +0 -0
  478. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codec/schema_pb2.py +0 -0
  479. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/codec/schema_pb2.pyi +0 -0
  480. {code_graph_rag-0.4.19 → code_graph_rag-0.6.0}/setup.cfg +0 -0
@@ -1,17 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.4.19
3
+ Version: 0.6.0
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
7
7
  Classifier: Development Status :: 4 - Beta
8
8
  Classifier: Environment :: Console
9
9
  Classifier: Intended Audience :: Developers
10
- Classifier: Operating System :: OS Independent
10
+ Classifier: Operating System :: MacOS
11
+ Classifier: Operating System :: Microsoft :: Windows
12
+ Classifier: Operating System :: POSIX :: Linux
11
13
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
12
14
  Classifier: Topic :: Software Development :: Code Generators
13
15
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
14
16
  Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: Implementation :: CPython
15
18
  Classifier: Programming Language :: Python :: 3.12
16
19
  Classifier: Programming Language :: Python :: 3.13
17
20
  Classifier: Programming Language :: Python :: 3.14
@@ -25,7 +28,6 @@ Requires-Dist: pydantic-ai-slim[anthropic,google,openai]>=2.0.0
25
28
  Requires-Dist: pydantic-settings>=2.12.0
26
29
  Requires-Dist: python-dotenv>=1.2.1
27
30
  Requires-Dist: tiktoken>=0.12.0
28
- Requires-Dist: tomli-w>=1.2.0
29
31
  Requires-Dist: tree-sitter-python>=0.25.0
30
32
  Requires-Dist: tree-sitter==0.26.0
31
33
  Requires-Dist: watchdog>=6.0.0
@@ -35,13 +37,13 @@ Requires-Dist: prompt-toolkit>=3.0.52
35
37
  Requires-Dist: diff-match-patch>=20241021
36
38
  Requires-Dist: click>=8.3.3
37
39
  Requires-Dist: protobuf>=6.33.5
38
- Requires-Dist: defusedxml>=0.7.1
39
- Requires-Dist: huggingface-hub[hf-xet]>=1.7.2
40
+ Requires-Dist: pyyaml>=6.0
40
41
  Requires-Dist: pathspec>=1.0.4
41
42
  Requires-Dist: pygments>=2.20.0
43
+ Requires-Dist: httpx>=0.28.1
42
44
  Requires-Dist: certifi>=2026.10.23
43
45
  Requires-Dist: regex>=2024.11.6
44
- Requires-Dist: cgr-graph-rs<0.2,>=0.1.5; 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"))
46
+ Requires-Dist: cgr-graph-rs<0.2,>=0.1.6
45
47
  Provides-Extra: test
46
48
  Requires-Dist: jedi>=0.19; extra == "test"
47
49
  Requires-Dist: pytest>=8.4.1; extra == "test"
@@ -84,6 +86,7 @@ Requires-Dist: grpcio>=1.84.1; extra == "semantic"
84
86
  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"
85
87
  Requires-Dist: torch>=2.6.0; extra == "semantic"
86
88
  Requires-Dist: transformers>=5.0.0; extra == "semantic"
89
+ Requires-Dist: huggingface-hub[hf-xet]>=1.7.2; extra == "semantic"
87
90
  Provides-Extra: milvus
88
91
  Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
89
92
  Requires-Dist: grpcio>=1.84.1; extra == "milvus"
@@ -189,10 +192,10 @@ The knowledge graph is an embedded SQLite file (`~/.cgr/graph.sqlite`), so there
189
192
  is no database server to run. Memgraph and Neo4j remain available as opt-in
190
193
  backends; see [Graph Backends](https://docs.code-graph-rag.com/architecture/embedded-graph/).
191
194
 
192
- The wheel is pure Python (`py3-none-any`), so it installs on any platform with
193
- Python 3.12 or newer. On Linux (x86_64, aarch64), macOS and Windows x64 it also
194
- pulls in `cgr-graph-rs`, a native extension that speeds up the embedded graph;
195
- elsewhere the same engine runs in pure Python.
195
+ The wheel is pure Python (`py3-none-any`), and it requires `cgr-graph-rs`, the
196
+ native extension that does the work behind it, which ships for CPython 3.12 or
197
+ newer on Linux (x86_64, aarch64), macOS and Windows x64. cgr does not run
198
+ without it, so it installs on those platforms only.
196
199
 
197
200
  Some distributions ship an older interpreter (Debian Bookworm, and so Raspberry
198
201
  Pi OS Bookworm, ships 3.11), which also explains the failed piwheels Bookworm
@@ -91,10 +91,10 @@ The knowledge graph is an embedded SQLite file (`~/.cgr/graph.sqlite`), so there
91
91
  is no database server to run. Memgraph and Neo4j remain available as opt-in
92
92
  backends; see [Graph Backends](https://docs.code-graph-rag.com/architecture/embedded-graph/).
93
93
 
94
- The wheel is pure Python (`py3-none-any`), so it installs on any platform with
95
- Python 3.12 or newer. On Linux (x86_64, aarch64), macOS and Windows x64 it also
96
- pulls in `cgr-graph-rs`, a native extension that speeds up the embedded graph;
97
- elsewhere the same engine runs in pure Python.
94
+ The wheel is pure Python (`py3-none-any`), and it requires `cgr-graph-rs`, the
95
+ native extension that does the work behind it, which ships for CPython 3.12 or
96
+ newer on Linux (x86_64, aarch64), macOS and Windows x64. cgr does not run
97
+ without it, so it installs on those platforms only.
98
98
 
99
99
  Some distributions ship an older interpreter (Debian Bookworm, and so Raspberry
100
100
  Pi OS Bookworm, ships 3.11), which also explains the failed piwheels Bookworm
@@ -61,10 +61,10 @@ 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
- - **Quiet Mode Enhancement**: The `--quiet` flag for the CLI now suppresses the scanning line for dead code and duplicates, providing a cleaner output.
65
- - **Context Budget Fix**: The system now correctly handles cases where a target doesn't fit within the allocated budget, preventing unexpected behaviour.
66
- - **Code Quality**: Changes have been made to report decorator and modifier changes that affect method calls and to ensure submodule grammars are loaded correctly.
67
- - **CGR Prune Feature**: A new `cgr prune` functionality has been added to remove projects where the root no longer exists.
64
+ - **Continuous Integration Improvements**: Enhanced release cadence tracking and ensured accurate green status for deferred releases.
65
+ - **Code Quality & Clarity**: Resolved several code style and correctness issues including foreach loop variable typing and Python method receiver handling.
66
+ - **Build Process Refinement**: Reduced the default install package count and improved makefile functionality for host/port watching.
67
+ - **Feature Control**: Prevented the use of `--no-endpoint-roots` when endpoint data is absent.
68
68
  <!-- /SECTION:latest_news -->
69
69
 
70
70
  See [NEWS.md](NEWS.md) for the full history.
@@ -145,7 +145,7 @@ To upgrade an existing install, run `uv tool upgrade code-graph-rag` (with pipx,
145
145
  You also need Python 3.12+ and `ripgrep`. The graph lives in an embedded SQLite file by default, so there is no database server to run: no Docker and no `cmake`. Memgraph and Neo4j remain available as opt-in backends ([Graph Backends](docs/architecture/embedded-graph.md)). Full prerequisites, source installs, and environment setup are in the [Installation](docs/getting-started/installation.md) guide.
146
146
 
147
147
  > [!NOTE]
148
- > The wheel is pure Python (`py3-none-any`), so it installs on any platform with Python 3.12 or newer. Older system interpreters (Debian Bookworm ships 3.11) need the interpreter pinned explicitly; see [Installation](docs/getting-started/installation.md#older-system-interpreters) for the commands.
148
+ > cgr requires its native extension, `cgr-graph-rs`, which ships for CPython 3.12 or newer on Linux (x86_64, aarch64), macOS and Windows x64, so it installs on those platforms only. Older system interpreters (Debian Bookworm ships 3.11) need the interpreter pinned explicitly; see [Installation](docs/getting-started/installation.md#older-system-interpreters) for the commands.
149
149
 
150
150
  ## Quick Start
151
151
 
@@ -1,17 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.4.19
3
+ Version: 0.6.0
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
7
7
  Classifier: Development Status :: 4 - Beta
8
8
  Classifier: Environment :: Console
9
9
  Classifier: Intended Audience :: Developers
10
- Classifier: Operating System :: OS Independent
10
+ Classifier: Operating System :: MacOS
11
+ Classifier: Operating System :: Microsoft :: Windows
12
+ Classifier: Operating System :: POSIX :: Linux
11
13
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
12
14
  Classifier: Topic :: Software Development :: Code Generators
13
15
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
14
16
  Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: Implementation :: CPython
15
18
  Classifier: Programming Language :: Python :: 3.12
16
19
  Classifier: Programming Language :: Python :: 3.13
17
20
  Classifier: Programming Language :: Python :: 3.14
@@ -25,7 +28,6 @@ Requires-Dist: pydantic-ai-slim[anthropic,google,openai]>=2.0.0
25
28
  Requires-Dist: pydantic-settings>=2.12.0
26
29
  Requires-Dist: python-dotenv>=1.2.1
27
30
  Requires-Dist: tiktoken>=0.12.0
28
- Requires-Dist: tomli-w>=1.2.0
29
31
  Requires-Dist: tree-sitter-python>=0.25.0
30
32
  Requires-Dist: tree-sitter==0.26.0
31
33
  Requires-Dist: watchdog>=6.0.0
@@ -35,13 +37,13 @@ Requires-Dist: prompt-toolkit>=3.0.52
35
37
  Requires-Dist: diff-match-patch>=20241021
36
38
  Requires-Dist: click>=8.3.3
37
39
  Requires-Dist: protobuf>=6.33.5
38
- Requires-Dist: defusedxml>=0.7.1
39
- Requires-Dist: huggingface-hub[hf-xet]>=1.7.2
40
+ Requires-Dist: pyyaml>=6.0
40
41
  Requires-Dist: pathspec>=1.0.4
41
42
  Requires-Dist: pygments>=2.20.0
43
+ Requires-Dist: httpx>=0.28.1
42
44
  Requires-Dist: certifi>=2026.10.23
43
45
  Requires-Dist: regex>=2024.11.6
44
- Requires-Dist: cgr-graph-rs<0.2,>=0.1.5; 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"))
46
+ Requires-Dist: cgr-graph-rs<0.2,>=0.1.6
45
47
  Provides-Extra: test
46
48
  Requires-Dist: jedi>=0.19; extra == "test"
47
49
  Requires-Dist: pytest>=8.4.1; extra == "test"
@@ -84,6 +86,7 @@ Requires-Dist: grpcio>=1.84.1; extra == "semantic"
84
86
  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"
85
87
  Requires-Dist: torch>=2.6.0; extra == "semantic"
86
88
  Requires-Dist: transformers>=5.0.0; extra == "semantic"
89
+ Requires-Dist: huggingface-hub[hf-xet]>=1.7.2; extra == "semantic"
87
90
  Provides-Extra: milvus
88
91
  Requires-Dist: pymilvus[milvus-lite]>=3.0.0; extra == "milvus"
89
92
  Requires-Dist: grpcio>=1.84.1; extra == "milvus"
@@ -189,10 +192,10 @@ The knowledge graph is an embedded SQLite file (`~/.cgr/graph.sqlite`), so there
189
192
  is no database server to run. Memgraph and Neo4j remain available as opt-in
190
193
  backends; see [Graph Backends](https://docs.code-graph-rag.com/architecture/embedded-graph/).
191
194
 
192
- The wheel is pure Python (`py3-none-any`), so it installs on any platform with
193
- Python 3.12 or newer. On Linux (x86_64, aarch64), macOS and Windows x64 it also
194
- pulls in `cgr-graph-rs`, a native extension that speeds up the embedded graph;
195
- elsewhere the same engine runs in pure Python.
195
+ The wheel is pure Python (`py3-none-any`), and it requires `cgr-graph-rs`, the
196
+ native extension that does the work behind it, which ships for CPython 3.12 or
197
+ newer on Linux (x86_64, aarch64), macOS and Windows x64. cgr does not run
198
+ without it, so it installs on those platforms only.
196
199
 
197
200
  Some distributions ship an older interpreter (Debian Bookworm, and so Raspberry
198
201
  Pi OS Bookworm, ships 3.11), which also explains the failed piwheels Bookworm
@@ -171,6 +171,8 @@ codebase_rag/editing/rename.py
171
171
  codebase_rag/editing/signature.py
172
172
  codebase_rag/editing/signature_bind.py
173
173
  codebase_rag/editing/signature_contract.py
174
+ codebase_rag/editing/signature_js.py
175
+ codebase_rag/editing/signature_js_bind.py
174
176
  codebase_rag/editing/signature_spec.py
175
177
  codebase_rag/editing/sites.py
176
178
  codebase_rag/editing/transaction.py
@@ -456,10 +458,12 @@ codebase_rag/utils/path_utils.py
456
458
  codebase_rag/utils/process_owner.py
457
459
  codebase_rag/utils/qn_markers.py
458
460
  codebase_rag/utils/rich_markdown.py
461
+ codebase_rag/utils/safe_xml.py
459
462
  codebase_rag/utils/source_encoding.py
460
463
  codebase_rag/utils/source_extraction.py
461
464
  codebase_rag/utils/terminal_console.py
462
465
  codebase_rag/utils/token_utils.py
466
+ codebase_rag/utils/toml_writer.py
463
467
  codebase_rag/workspaces/__init__.py
464
468
  codebase_rag/workspaces/cli.py
465
469
  codebase_rag/workspaces/constants.py
@@ -5,7 +5,6 @@ pydantic-ai-slim[anthropic,google,openai]>=2.0.0
5
5
  pydantic-settings>=2.12.0
6
6
  python-dotenv>=1.2.1
7
7
  tiktoken>=0.12.0
8
- tomli-w>=1.2.0
9
8
  tree-sitter-python>=0.25.0
10
9
  tree-sitter==0.26.0
11
10
  watchdog>=6.0.0
@@ -15,15 +14,13 @@ prompt-toolkit>=3.0.52
15
14
  diff-match-patch>=20241021
16
15
  click>=8.3.3
17
16
  protobuf>=6.33.5
18
- defusedxml>=0.7.1
19
- huggingface-hub[hf-xet]>=1.7.2
17
+ pyyaml>=6.0
20
18
  pathspec>=1.0.4
21
19
  pygments>=2.20.0
20
+ httpx>=0.28.1
22
21
  certifi>=2026.10.23
23
22
  regex>=2024.11.6
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"))]
26
- cgr-graph-rs<0.2,>=0.1.5
23
+ cgr-graph-rs<0.2,>=0.1.6
27
24
 
28
25
  [ast-grep]
29
26
  ast-grep-py>=0.51.0
@@ -50,6 +47,7 @@ qdrant-client>=1.9.0
50
47
  grpcio>=1.84.1
51
48
  torch>=2.6.0
52
49
  transformers>=5.0.0
50
+ huggingface-hub[hf-xet]>=1.7.2
53
51
 
54
52
  [semantic:(sys_platform == "linux" and (platform_machine == "x86_64" or platform_machine == "aarch64")) or sys_platform == "darwin" or (sys_platform == "win32" and platform_machine == "AMD64")]
55
53
  sqlite-vec>=0.1.9
@@ -0,0 +1,8 @@
1
+ """Code Graph RAG: build a queryable graph of a codebase and reason over it."""
2
+
3
+ from . import tree_sitter_point as _tree_sitter_point # noqa: F401
4
+ from .embedded_graph.extension import require_rust_extension as _require_rust_extension
5
+
6
+ # The Rust extension does the work behind this package's interface, and
7
+ # there is no pure-Python stand-in: without it, nothing here runs.
8
+ _require_rust_extension()
@@ -3217,6 +3217,19 @@ def _notice_single_project_endpoint_roots(show_progress: bool) -> None:
3217
3217
  typer.echo(cs.CLI_DEADCODE_SINGLE_PROJECT_ENDPOINTS, err=True)
3218
3218
 
3219
3219
 
3220
+ def _refuse_without_endpoint_data(
3221
+ error: ex.EndpointDataMissingError, show_progress: bool
3222
+ ) -> NoReturn:
3223
+ """No verdict, rather than one that reads as nothing unreachable. A
3224
+ machine format owns stdout, so the refusal goes to stderr there, as the
3225
+ single-project notice does."""
3226
+ if show_progress:
3227
+ app_context.console.print(style(str(error), cs.Color.RED))
3228
+ else:
3229
+ typer.echo(str(error), err=True)
3230
+ raise typer.Exit(1)
3231
+
3232
+
3220
3233
  @app.command(
3221
3234
  name=ch.CLICommandName.DEAD_CODE,
3222
3235
  help=ch.DESC_DEAD_CODE,
@@ -3291,26 +3304,33 @@ def dead_code(
3291
3304
  choice = ProjectChoice(None)
3292
3305
  rows: list[ResultRow] = []
3293
3306
  structural_tier_symbols = 0
3307
+ endpoint_gap: ex.EndpointDataMissingError | None = None
3294
3308
  try:
3295
3309
  with connect_memgraph(batch_size=1) as ingestor:
3296
3310
  projects = ingestor.list_projects()
3297
3311
  choice = choose_project(chosen, repo_path, projects, ingestor)
3298
3312
  if (resolved := choice.name) is not None:
3299
3313
  logger.info(ls.DEADCODE_SCANNING.format(project_name=resolved))
3300
- rows, structural_tier_symbols = collect_dead_code_with_coverage(
3301
- ingestor,
3302
- resolved,
3303
- _dead_code_config(
3304
- include_tests,
3305
- include_classes,
3306
- entry_point,
3307
- decorator_root,
3308
- min_resolution,
3309
- endpoint_roots,
3310
- public_roots,
3311
- ),
3312
- )
3313
- if not endpoint_roots and len(projects) <= 1:
3314
+ try:
3315
+ rows, structural_tier_symbols = collect_dead_code_with_coverage(
3316
+ ingestor,
3317
+ resolved,
3318
+ _dead_code_config(
3319
+ include_tests,
3320
+ include_classes,
3321
+ entry_point,
3322
+ decorator_root,
3323
+ min_resolution,
3324
+ endpoint_roots,
3325
+ public_roots,
3326
+ ),
3327
+ )
3328
+ except ex.EndpointDataMissingError as e:
3329
+ # Held until the connection closes: a finding about the
3330
+ # project, which the service layer would log on exit as a
3331
+ # failed session with a traceback (issue #2896).
3332
+ endpoint_gap = e
3333
+ if not endpoint_roots and len(projects) <= 1 and not endpoint_gap:
3314
3334
  _notice_single_project_endpoint_roots(show_progress)
3315
3335
  except GraphUnavailableError:
3316
3336
  raise
@@ -3321,6 +3341,8 @@ def dead_code(
3321
3341
  logger.exception(ls.DEADCODE_ERROR.format(error=e))
3322
3342
  raise typer.Exit(1) from e
3323
3343
 
3344
+ if endpoint_gap is not None:
3345
+ _refuse_without_endpoint_data(endpoint_gap, show_progress)
3324
3346
  resolved = _require_project(choice)
3325
3347
 
3326
3348
  candidates = [
@@ -201,7 +201,8 @@ HELP_RENAME_ALLOW_HEURISTIC = (
201
201
  )
202
202
  HELP_RENAME_DRY_RUN = "Print the plan and diff without writing anything."
203
203
  CMD_CHANGE_SIGNATURE = (
204
- "Change a Python definition's parameter list and rewrite every call site "
204
+ "Change a Python or JavaScript definition's parameter list and rewrite "
205
+ "every call site "
205
206
  "the graph knows; sites the mapping cannot complete are listed, not touched; "
206
207
  "refuses on a graph a stopped sync left partial."
207
208
  )
@@ -676,7 +677,8 @@ HELP_DEADCODE_ENDPOINT_ROOTS = (
676
677
  "(RESOLVES_TO into it, or a direct READS_FROM/WRITES_TO for RPC and "
677
678
  "dispatch resources), so an endpoint nobody calls is reported. A handler "
678
679
  "registered by a call (Go HandleFunc, Express app.get) stays live "
679
- "through that call."
680
+ "through that call. Endpoints are recorded only by the io capture group: "
681
+ "index the project with --capture io first, or the command refuses."
680
682
  )
681
683
  HELP_DEADCODE_MIN_RESOLUTION = (
682
684
  "Ignore call edges below this confidence when deciding liveness: "
@@ -48,8 +48,12 @@ def merge_dotenv(path: Path) -> dict[str, str]:
48
48
  # value, and a reference to it in the file reads that value too.
49
49
  values = DotEnv(path, encoding=cs.ENCODING_UTF8, override=False).dict()
50
50
  refused: dict[str, str] = {}
51
+ # The file may not set a waiver in any spelling: settings match names
52
+ # without regard to case, so `cgr_allow_sensitive_reads=true` beside an
53
+ # exported `CGR_ALLOW_SENSITIVE_READS=false` won (see load_settings).
54
+ environment_only = {name.upper() for name in cs.ENVIRONMENT_ONLY_SETTINGS}
51
55
  for name, value in values.items():
52
- if value is None or name in os.environ:
56
+ if value is None or name in os.environ or name.upper() in environment_only:
53
57
  continue
54
58
  try:
55
59
  os.environ[name] = value
@@ -620,6 +624,14 @@ class AppConfig(BaseSettings):
620
624
  False, validation_alias="CGR_ALLOW_SENSITIVE_READS"
621
625
  )
622
626
 
627
+ # MCP write_file and surgical_replace_code refuse the same files: an
628
+ # overwrite destroys the secret, and an edit's refusals ("target not
629
+ # found", the lines of each match) let the client guess one character
630
+ # at a time. The CLI agent asks before every write instead.
631
+ ALLOW_SENSITIVE_WRITES: bool = Field(
632
+ False, validation_alias="CGR_ALLOW_SENSITIVE_WRITES"
633
+ )
634
+
623
635
  # A repository's .cgr.md loads only once the user approved its content
624
636
  # (issue #3456). True trusts every repository's file without asking:
625
637
  # for CI on repositories you control, never for code you did not write.
@@ -780,7 +792,10 @@ def load_settings(
780
792
  # when the user exported it: `.env` in the working directory is usually the
781
793
  # analysed repository's file, and could approve its own .cgr.md (Codex
782
794
  # review on PR #3471). Held at its default, silently, like an unset one.
783
- exported = {name.upper() for name in inherited_env}
795
+ # An empty one counts as unset: settings skip an empty variable
796
+ # (env_ignore_empty) and read `.env` in its place, so it let the
797
+ # repository's file decide.
798
+ exported = {name.upper() for name in inherited_env if os.environ.get(name)}
784
799
  waivers = {
785
800
  name for name in cs.ENVIRONMENT_ONLY_SETTINGS if name.upper() not in exported
786
801
  }
@@ -170,6 +170,47 @@ TS_CSHARP_PARAMETER_LIST = "parameter_list"
170
170
  # variable_declaration; a property_declaration exposes `type` and `name` directly.
171
171
  TS_CSHARP_VARIABLE_DECLARATION = "variable_declaration"
172
172
  TS_CSHARP_FOREACH_STATEMENT = "foreach_statement"
173
+ # The declarations a field belongs to.
174
+ CSHARP_TYPE_DECLARATION_NODES = frozenset(
175
+ {
176
+ TS_CSHARP_CLASS_DECLARATION,
177
+ TS_CSHARP_STRUCT_DECLARATION,
178
+ TS_CSHARP_RECORD_DECLARATION,
179
+ TS_CSHARP_INTERFACE_DECLARATION,
180
+ }
181
+ )
182
+ # Generic collections whose one type argument is the element a `foreach`
183
+ # binds (issue #2938); any other generic (`Dictionary<K, V>`) is not read.
184
+ CSHARP_ENUMERABLE_GENERICS = frozenset(
185
+ {
186
+ "IEnumerable",
187
+ "IAsyncEnumerable",
188
+ "ICollection",
189
+ "IList",
190
+ "IReadOnlyCollection",
191
+ "IReadOnlyList",
192
+ "ISet",
193
+ "IReadOnlySet",
194
+ "List",
195
+ "HashSet",
196
+ "SortedSet",
197
+ "LinkedList",
198
+ "Queue",
199
+ "Stack",
200
+ "Collection",
201
+ "ReadOnlyCollection",
202
+ "ObservableCollection",
203
+ "ImmutableArray",
204
+ "ImmutableList",
205
+ "ImmutableHashSet",
206
+ "IImmutableList",
207
+ "IImmutableSet",
208
+ "ConcurrentBag",
209
+ "ConcurrentQueue",
210
+ "ConcurrentStack",
211
+ "BlockingCollection",
212
+ }
213
+ )
173
214
  TS_CSHARP_VARIABLE_DECLARATOR = "variable_declarator"
174
215
  TS_CSHARP_IMPLICIT_TYPE = "implicit_type"
175
216
  TS_CSHARP_FIELD_DECLARATION = "field_declaration"
@@ -221,6 +262,9 @@ TS_CSHARP_STATIC = "static"
221
262
  TS_CSHARP_GLOBAL = "global"
222
263
  # A `params T[]` tail parameter is an array type in the method signature.
223
264
  CSHARP_ARRAY_SUFFIX = "[]"
265
+ # An array type's rank specifier: `T[]`, `T[,]`.
266
+ CSHARP_ARRAY_RANK_OPEN = "["
267
+ CSHARP_ARRAY_RANK_CLOSE = "]"
224
268
 
225
269
  # The name node inside a using directive: a dotted `qualified_name` or a bare
226
270
  # `identifier` (both the imported path and, in the alias form, the alias).
@@ -370,6 +414,12 @@ TS_CSHARP_DECLARATION_PATTERN = "declaration_pattern"
370
414
  TS_CSHARP_CATCH_DECLARATION = "catch_declaration"
371
415
  TS_CSHARP_FROM_CLAUSE = "from_clause"
372
416
  TS_CSHARP_LET_CLAUSE = "let_clause"
417
+ # `o is Other[] { Length: 1 } items`, `join z in zs ...`, `... into g`, and a
418
+ # lambda written with `delegate`.
419
+ TS_CSHARP_RECURSIVE_PATTERN = "recursive_pattern"
420
+ TS_CSHARP_JOIN_CLAUSE = "join_clause"
421
+ TS_CSHARP_JOIN_INTO_CLAUSE = "join_into_clause"
422
+ TS_CSHARP_ANONYMOUS_METHOD_EXPRESSION = "anonymous_method_expression"
373
423
  TS_CSHARP_EVENT_FIELD_DECLARATION = "event_field_declaration"
374
424
  # A top-level statement (C# 9); its locals are in scope across the file.
375
425
  TS_CSHARP_GLOBAL_STATEMENT = "global_statement"
@@ -534,3 +534,24 @@ CAPTURE_MODULE_OBJ = "module_obj"
534
534
  CAPTURE_EXPORTS_PROP = "exports_prop"
535
535
  CAPTURE_EXPORT_NAME = "export_name"
536
536
  CAPTURE_EXPORT_FUNCTION = "export_function"
537
+
538
+ # Value nodes a call argument can be without running code, and the methods
539
+ # through which a function is called with an explicit receiver, for
540
+ # change_signature (issue #1908).
541
+ TS_JS_NUMBER = "number"
542
+ TS_JS_NULL = "null"
543
+ TS_JS_UNDEFINED = "undefined"
544
+ TS_JS_ACCESSOR_KEYWORDS = frozenset({"get", "set"})
545
+ JS_RECEIVER_METHODS = frozenset({"call", "apply"})
546
+ # `\u0061` and `\u{61}` both spell the identifier `a`, and a parameter name
547
+ # written with escapes is refused; a direct `eval` reads locals named in a
548
+ # string. For change_signature (issue #1908).
549
+ JS_IDENTIFIER_ESCAPE = r"\\u\{([0-9a-fA-F]+)\}|\\u([0-9a-fA-F]{4})"
550
+ JS_ESCAPE_MARK = "\\"
551
+ JS_EVAL_NAME = "eval"
552
+ # The argument passed for a default a call skips: undefined even where the
553
+ # caller has bound the name `undefined` to something else.
554
+ JS_SKIPPED_ARGUMENT = "void 0"
555
+ # A function body opening with either of these, exactly as written, runs in
556
+ # strict mode, and JavaScript then refuses a default among its parameters.
557
+ JS_USE_STRICT_DIRECTIVES = frozenset({"'use strict'", '"use strict"'})
@@ -69,6 +69,13 @@ TS_PY_LIST_SPLAT = "list_splat"
69
69
  TS_PY_DICTIONARY_SPLAT = "dictionary_splat"
70
70
  TS_PY_DEFAULT_PARAMETER = "default_parameter"
71
71
  TS_PY_LIST_SPLAT_PATTERN = "list_splat_pattern"
72
+ # `from __future__ import annotations` (PEP 563) keeps every annotation in
73
+ # its module as a string that never runs.
74
+ TS_PY_FUTURE_IMPORT_STATEMENT = "future_import_statement"
75
+ PY_FUTURE_ANNOTATIONS = "annotations"
76
+ # The literal sequence values an unpacking assignment pairs its targets with
77
+ # by position (`a, b = x, y`, `(a, b) = (x, y)`, `[a, b] = [x, y]`).
78
+ PY_UNPACKING_VALUE_TYPES = frozenset({"expression_list", "tuple", "list"})
72
79
  TS_PY_DICTIONARY_SPLAT_PATTERN = "dictionary_splat_pattern"
73
80
  TS_PY_POSITIONAL_SEPARATOR = "positional_separator"
74
81
  TS_PY_KEYWORD_SEPARATOR = "keyword_separator"
@@ -88,7 +88,6 @@ PYINSTALLER_PACKAGES: list["PyInstallerPackage"] = [
88
88
  PyInstallerPackage(name="rich", collect_all=True),
89
89
  PyInstallerPackage(name="typer", collect_all=True),
90
90
  PyInstallerPackage(name="loguru", collect_all=True),
91
- PyInstallerPackage(name="tomli_w", collect_all=True),
92
91
  PyInstallerPackage(name="protobuf", collect_all=True),
93
92
  PyInstallerPackage(name="genai_prices", collect_all=True),
94
93
  # The embedded graph's Rust half, loaded by name (embedded_graph/
@@ -1074,9 +1074,9 @@ SIGNATURE_CLI_WRONG_ROOT = (
1074
1074
  "Project {project} was not indexed from {root}; "
1075
1075
  "pass the --repo-path it was indexed from"
1076
1076
  )
1077
- SIGNATURE_NOT_PYTHON = (
1078
- "Cannot change the signature of {qn}: {path} is not Python, and only Python "
1079
- "definitions are supported for now (issue #{issue})"
1077
+ SIGNATURE_UNSUPPORTED_LANGUAGE = (
1078
+ "Cannot change the signature of {qn}: {path} is in a language it does not "
1079
+ "support yet; Python and JavaScript are supported (issue #{issue})"
1080
1080
  )
1081
1081
  SIGNATURE_DEFINITION_UNREADABLE = (
1082
1082
  "Cannot change the signature of {qn}: its file {path} cannot be read "
@@ -1157,7 +1157,7 @@ SIGNATURE_SITE_NO_LOCATION = "site carries no location ({resolution})"
1157
1157
  SIGNATURE_SITE_GUESSED = (
1158
1158
  "site was resolved by {resolution}; pass allow_heuristic to rewrite it"
1159
1159
  )
1160
- SIGNATURE_SITE_NOT_PYTHON = "{path} is not Python"
1160
+ SIGNATURE_SITE_OTHER_LANGUAGE = "{path} is not in the definition's language"
1161
1161
  SIGNATURE_SITE_UNREADABLE_FILE = "file cannot be read ({error})"
1162
1162
  SIGNATURE_SITE_NO_CALL = "no call found at the recorded position"
1163
1163
  SIGNATURE_SITE_UNREADABLE = "arguments cannot be read positionally: `{text}`"
@@ -1176,6 +1176,70 @@ SIGNATURE_SITE_EXPLICIT_RECEIVER = (
1176
1176
  "reaches the method through its class and passes the receiver as an "
1177
1177
  "argument (`{text}`); rewrite it by hand"
1178
1178
  )
1179
+ SIGNATURE_SITE_REORDERS_EFFECTS = (
1180
+ "its arguments run code, and the new order would run them in another "
1181
+ "order: `{text}`"
1182
+ )
1183
+ SIGNATURE_JS_HEADER_PROBE = "function _{params} {{}}"
1184
+ SIGNATURE_JS_CALL_PROBE = "_({args});"
1185
+ SIGNATURE_JS_BAD_LITERAL = (
1186
+ "The value `{literal}` mapped to {name} is not one JavaScript expression; "
1187
+ "written into a call it would not be exactly one argument"
1188
+ )
1189
+ SIGNATURE_JS_UNSUPPORTED_PARAMS = (
1190
+ "Cannot change the signature of {qn}: `{text}` is not a plain parameter "
1191
+ "(a name, with or without a default), and only those can be remapped"
1192
+ )
1193
+ SIGNATURE_JS_BAD_PARAM = (
1194
+ "Not one plain parameter: `{text}` (expected `name` or `name = default`)"
1195
+ )
1196
+ SIGNATURE_JS_INVALID_HEADER = (
1197
+ "The new parameter list of {qn} is not valid JavaScript: `{text}`"
1198
+ )
1199
+ SIGNATURE_JS_CONSTRUCTOR = (
1200
+ "Cannot change the signature of {qn}: a constructor is called through `new` "
1201
+ "and `super(...)`, which are not listed as its call sites"
1202
+ )
1203
+ SIGNATURE_JS_ACCESSOR = (
1204
+ "Cannot change the signature of {qn}: a getter or setter is read or "
1205
+ "assigned, never called with arguments"
1206
+ )
1207
+ SIGNATURE_JS_CALLS_EVAL = (
1208
+ "Cannot add or drop a parameter of {qn}: its body uses `eval`, which can "
1209
+ "read any parameter through a name written in a string"
1210
+ )
1211
+ SIGNATURE_JS_READS_ARGUMENTS = (
1212
+ "Cannot change the signature of {qn}: its body reads `arguments`, which "
1213
+ "sees every value by position"
1214
+ )
1215
+ SIGNATURE_JS_RENAME = (
1216
+ "Cannot rename parameter {old} of {qn} to {new}: renaming is not supported "
1217
+ "for JavaScript yet (issue #{issue})"
1218
+ )
1219
+ SIGNATURE_JS_DROPPED_STILL_READ = (
1220
+ "Cannot drop parameter {name} of {qn}: its body still uses `{name}`, which "
1221
+ "would then reach an outer name or throw ReferenceError; remove that use by "
1222
+ "hand first"
1223
+ )
1224
+ SIGNATURE_JS_DUPLICATE_PARAM = (
1225
+ "Cannot change the signature of {qn}: it declares parameter {name} more "
1226
+ "than once, and the body sees only the last of them"
1227
+ )
1228
+ SIGNATURE_JS_REORDERS_DEFAULTS = (
1229
+ "Cannot change the signature of {qn}: the defaults of {first} and {second} "
1230
+ "would run in the other order when a call leaves both out, and one of them "
1231
+ "runs code the other can observe"
1232
+ )
1233
+ SIGNATURE_JS_DEFAULT_READS_LATER = (
1234
+ "Cannot change the signature of {qn}: the default of {name} reads `{later}`, "
1235
+ "which is not bound yet when that default runs, so a call leaving {name} "
1236
+ "out would throw ReferenceError"
1237
+ )
1238
+ SIGNATURE_JS_STRICT_DEFAULTS = (
1239
+ "Cannot change the signature of {qn}: its body opens with a 'use strict' "
1240
+ "directive, and JavaScript refuses that directive in a function with a "
1241
+ "default parameter, so the new header would not load"
1242
+ )
1179
1243
  SIGNATURE_PLANNED = "{count} site(s) would be rewritten, {skipped} left unmapped"
1180
1244
  SIGNATURE_PARSE_FAILED = "Signature change rolled back: {files} would no longer parse"
1181
1245
  SIGNATURE_CONTRACT_FAILED = (
@@ -130,6 +130,11 @@ CONTENT_EVENT_TYPES = frozenset(
130
130
  {EventType.MODIFIED, EventType.CREATED, EventType.DELETED}
131
131
  )
132
132
 
133
+ # The events that can change an ignore rule's input. A read cannot, and
134
+ # re-reading the rules reads those very files: a watcher that followed reads
135
+ # re-read `.gitignore` forever after one `git status` (issue #3583).
136
+ RULE_INPUT_EVENT_TYPES = CONTENT_EVENT_TYPES | {EventType.MOVED, EventType.CLOSED}
137
+
133
138
 
134
139
  WATCHER_SLEEP_INTERVAL = 1
135
140
  LOG_LEVEL_INFO = "INFO"
@@ -348,7 +353,11 @@ CGR_INSTRUCTIONS_SEPARATOR = "\n\n---\n\n"
348
353
  # Read only from the environment cgr starts with, never from `.env` in the
349
354
  # working directory, which usually belongs to the repository being analysed.
350
355
  ENVIRONMENT_ONLY_SETTINGS = frozenset(
351
- {"CGR_TRUST_PROJECT_INSTRUCTIONS", "CGR_ALLOW_SENSITIVE_READS"}
356
+ {
357
+ "CGR_TRUST_PROJECT_INSTRUCTIONS",
358
+ "CGR_ALLOW_SENSITIVE_READS",
359
+ "CGR_ALLOW_SENSITIVE_WRITES",
360
+ }
352
361
  )
353
362
  # Every file cgr keeps about one checkout. They live in that checkout's
354
363
  # directory under CGR_HOME / CGR_STATE_DIRNAME rather than in the working