code-graph-rag 0.5.0__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.
- {code_graph_rag-0.5.0/code_graph_rag.egg-info → code_graph_rag-0.6.0}/PKG-INFO +13 -10
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/PYPI_README.md +4 -4
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/README.md +5 -4
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0/code_graph_rag.egg-info}/PKG-INFO +13 -10
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/SOURCES.txt +2 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/requires.txt +4 -6
- code_graph_rag-0.6.0/codebase_rag/__init__.py +8 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/cli.py +36 -14
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/cli_help.py +2 -1
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_csharp.py +50 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_python.py +7 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/build.py +0 -1
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/core.py +5 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/embedded_graph.py +6 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/dead_code.py +25 -0
- code_graph_rag-0.6.0/codebase_rag/embedded_graph/extension.py +32 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/exceptions.py +36 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/call_processor.py +23 -2
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/call_resolver.py +24 -1
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/type_inference.py +228 -12
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/utils.py +196 -19
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/frontend.py +5 -5
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dependency_parser.py +4 -9
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/flow_access/processor.py +576 -67
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/import_processor.py +44 -19
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/readme_sections.py +5 -2
- code_graph_rag-0.6.0/codebase_rag/utils/safe_xml.py +50 -0
- code_graph_rag-0.6.0/codebase_rag/utils/toml_writer.py +23 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/watch.py +5 -2
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/workspaces/storage.py +2 -3
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/pyproject.toml +24 -10
- code_graph_rag-0.5.0/codebase_rag/__init__.py +0 -3
- code_graph_rag-0.5.0/codebase_rag/embedded_graph/extension.py +0 -22
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/LICENSE +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/cgr/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/dependency_links.txt +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/entry_points.txt +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/code_graph_rag.egg-info/top_level.txt +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/_cli_env.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/ast_cache.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/capture.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/check_isolation.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/checkout_state.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/cli_runtime.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/config.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/console_marks.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_cpp.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_dart.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_go.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_java.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_js.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_julia.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_lua.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_nodes.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_php.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_rust.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_scala.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/ast_sql.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/cli.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/deadcode_roots.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/deps.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/duplicates.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/fqn_specs.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/graph.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/health.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/interface.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/lang_tooling.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/languages.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/mcp.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/notebook.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/port.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/providers.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/security.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/sqlite_vectors.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/stdlib_types.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/structural.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/constants/trace.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/context_pruning.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/context_slice.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/crash_correlation.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/cypher_queries.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/decorators.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/docker-compose.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/duplicates.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/cli.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/contract.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/import_paths.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/imports.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/occurrences.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/patcher.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/rename.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_bind.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_contract.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_js.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_js_bind.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/signature_spec.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/sites.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editing/transaction.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/editor_links.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/compiler.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/connection.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/cypher_ast.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/executor.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/expressions.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/functions.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/lexer.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/limits.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/native.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/parser.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/procedures.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/sql.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/store.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedded_graph/types.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/embedder.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/flow_verdict.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/function_registry.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/gloss.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/gloss_anchor.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/gloss_repair.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_audit.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_cli.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_dialects.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_loader.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_query.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/graph_updater.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/instructions_trust.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/interface_skip.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/language_spec.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/logs.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/main.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mcp/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mcp/client.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mcp/server.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mcp/tools.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mgclient_compat.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/mgclient_probe.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/models.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parser_fingerprint.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parser_loader.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/anchor_hash.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_fingerprint.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_scope.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/ast_grep_tier.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/build_lock.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/base_targets.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/identity.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/mixin.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/parent_extraction.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/class_ingest/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/contract_linking.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/contracts.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/class_macro.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/function_values.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/local_types.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/overloads.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/trailing_annotation.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/type_inference.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/frontend.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp/arity.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/package_paths.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/type_inference.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dart/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/definition_docstring.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/definition_processor.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/dispatch_registry.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/document_tier.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/endpoint_routes.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/endpoints.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/enum_variants.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/export_detection.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/factory.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/field_nodes.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/flat_module.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/flow_access/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/flow_access/constants.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontend_mode.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/cpp.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/csharp.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/go.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/java.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/protocol.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/python.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/frontends/registry.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/function_ingest.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/builds.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/interface_ingest.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/interfaces.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/link_state.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/module_paths.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/type_inference.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/base.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/cpp.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/java.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/js_ts.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/julia.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/lua.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/php.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/protocol.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/python.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/registry.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/handlers/rust.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/interface_fingerprint.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/constants.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/descriptor.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/extract.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/models.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/processor.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/registry.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/resource_names.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/io_access/url_folding.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/method_resolver.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/type_inference.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/type_resolver.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java/variable_analyzer.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_generated.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/java_lombok.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/commonjs_exports.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/ingest.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/module_system.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/overloads.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/reexports.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/js_ts/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/julia/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/julia/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/lua/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/lua/type_inference.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/lua/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/module_docstring.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/native_trees.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/notebook.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/parameter_nodes.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/class_names.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/namespaces.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/php/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/positional_params.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/class_aliases.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/definition_index.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/flow_bindings.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/forward_refs.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/overloads.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/patterns.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/receiver_rebinding.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/type_inference.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py/with_analyzer.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/python_source_roots.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/rpc_exposure.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/cargo_semver.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/type_inference.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/rs/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/scala/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/scala/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/semantic_call_join.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/sql_ddl.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/sql_recovery.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/stdlib_extractor.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/string_call.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/structure_processor.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/type_facts.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/type_inference.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/parsers/utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/path_filters.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/port_cli.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/port_parity.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/project_selection.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/prompts.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/providers/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/providers/base.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/providers/litellm.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/c_sharp.scm +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/dart.scm +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/java.scm +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/javascript.scm +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/julia.scm +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/php.scm +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/python.scm +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/rust.scm +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/queries/highlights/typescript.scm +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/schema_builder.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/schema_parse.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/schemas.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/sensitive_paths.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/anthropic_token_counter.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/cypher_guard.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/filtering.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/gloss_cleanup.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/graph_diff.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/graph_service.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/llm.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/neo4j_driver.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/protobuf_service.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/provenance.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/resource_cleanup.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/services/usage_cost.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/source_checkout.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/sql_names.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/sqlite_vectors.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/stack/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/stack/cli.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/stack/constants.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/stack/health.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/stack/manager.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/structural_check.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/structural_delta.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/sync_guard.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/sync_lock.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/taint.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tool_errors.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/ast_grep_service.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/code_retrieval.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/codebase_query.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/directory_lister.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/duplicate_detection.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/file_editor.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/file_reader.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/file_writer.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/graph_refresh.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/graph_rerank.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/health_checker.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/language.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/language_catalog.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/research.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/semantic_search.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/shell_command.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/structural_editor.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/structural_search.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/tool_descriptions.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tools/web_search.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/carry.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/cli.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/cpuprofile.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/dispatch_site.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/ebpf_pprof.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/ingest.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/instrumented.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/pprof.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/pytest_plugin.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/records.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/resolution.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/rust_pprof.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/sourcemap.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/speedscope.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/tracer.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/trace/xdebug.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/tree_sitter_point.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/types_defs.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/unixcoder.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/cpp_signatures.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/dependencies.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/endpoints.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/fqn_resolver.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/interruptible_thread.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/json_io.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/path_utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/process_owner.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/qn_markers.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/rich_markdown.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/source_encoding.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/source_extraction.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/terminal_console.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/utils/token_utils.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/vector_store.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/workspaces/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/workspaces/cli.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/workspaces/constants.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codebase_rag/workspaces/models.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codec/__init__.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codec/schema.proto +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codec/schema_pb2.py +0 -0
- {code_graph_rag-0.5.0 → code_graph_rag-0.6.0}/codec/schema_pb2.pyi +0 -0
- {code_graph_rag-0.5.0 → 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.
|
|
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 ::
|
|
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:
|
|
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.
|
|
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`),
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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`),
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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,9 +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
|
-
- **
|
|
65
|
-
- **
|
|
66
|
-
- **
|
|
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.
|
|
67
68
|
<!-- /SECTION:latest_news -->
|
|
68
69
|
|
|
69
70
|
See [NEWS.md](NEWS.md) for the full history.
|
|
@@ -144,7 +145,7 @@ To upgrade an existing install, run `uv tool upgrade code-graph-rag` (with pipx,
|
|
|
144
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.
|
|
145
146
|
|
|
146
147
|
> [!NOTE]
|
|
147
|
-
>
|
|
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.
|
|
148
149
|
|
|
149
150
|
## Quick Start
|
|
150
151
|
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-graph-rag
|
|
3
|
-
Version: 0.
|
|
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 ::
|
|
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:
|
|
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.
|
|
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`),
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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
|
|
@@ -458,10 +458,12 @@ codebase_rag/utils/path_utils.py
|
|
|
458
458
|
codebase_rag/utils/process_owner.py
|
|
459
459
|
codebase_rag/utils/qn_markers.py
|
|
460
460
|
codebase_rag/utils/rich_markdown.py
|
|
461
|
+
codebase_rag/utils/safe_xml.py
|
|
461
462
|
codebase_rag/utils/source_encoding.py
|
|
462
463
|
codebase_rag/utils/source_extraction.py
|
|
463
464
|
codebase_rag/utils/terminal_console.py
|
|
464
465
|
codebase_rag/utils/token_utils.py
|
|
466
|
+
codebase_rag/utils/toml_writer.py
|
|
465
467
|
codebase_rag/workspaces/__init__.py
|
|
466
468
|
codebase_rag/workspaces/cli.py
|
|
467
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
|
-
|
|
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
|
-
|
|
3301
|
-
|
|
3302
|
-
|
|
3303
|
-
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
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 = [
|
|
@@ -677,7 +677,8 @@ HELP_DEADCODE_ENDPOINT_ROOTS = (
|
|
|
677
677
|
"(RESOLVES_TO into it, or a direct READS_FROM/WRITES_TO for RPC and "
|
|
678
678
|
"dispatch resources), so an endpoint nobody calls is reported. A handler "
|
|
679
679
|
"registered by a call (Go HandleFunc, Express app.get) stays live "
|
|
680
|
-
"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."
|
|
681
682
|
)
|
|
682
683
|
HELP_DEADCODE_MIN_RESOLUTION = (
|
|
683
684
|
"Ignore call edges below this confidence when deciding liveness: "
|
|
@@ -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"
|
|
@@ -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/
|
|
@@ -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"
|
|
@@ -490,6 +490,12 @@ EG_RUST_SCOPE_FACTS = "scope_facts"
|
|
|
490
490
|
EG_RUST_INTERFACE_FINGERPRINT = "interface_fingerprint"
|
|
491
491
|
EG_RUST_CALLABLE_PARAMETER_INDICES = "callable_parameter_indices"
|
|
492
492
|
EG_RUST_LOCAL_ALIASES = "local_aliases"
|
|
493
|
+
# The file formats it reads and writes (utils/safe_xml.py,
|
|
494
|
+
# utils/toml_writer.py), and what reading XML raises.
|
|
495
|
+
EG_RUST_XML_FIND_ALL = "xml_find_all"
|
|
496
|
+
EG_RUST_XML_SYNTAX_ERROR = "XmlSyntaxError"
|
|
497
|
+
EG_RUST_XML_ENTITY_ERROR = "XmlEntityError"
|
|
498
|
+
EG_RUST_TOML_DUMPS = "toml_dumps"
|
|
493
499
|
|
|
494
500
|
|
|
495
501
|
class TreeBridgeCheck(StrEnum):
|
|
@@ -15,6 +15,7 @@ from fnmatch import fnmatch
|
|
|
15
15
|
|
|
16
16
|
from . import constants as cs
|
|
17
17
|
from . import cypher_queries as cq
|
|
18
|
+
from . import exceptions as ex
|
|
18
19
|
from .path_filters import matches_test_path
|
|
19
20
|
from .types_defs import (
|
|
20
21
|
DeadCodeConfig,
|
|
@@ -1465,6 +1466,25 @@ def _endpoint_links(
|
|
|
1465
1466
|
return links
|
|
1466
1467
|
|
|
1467
1468
|
|
|
1469
|
+
def _route_handler_count(nodes: dict[_NodeId, PropertyDict]) -> int:
|
|
1470
|
+
"""Definitions carrying a route decorator: the handlers the io group
|
|
1471
|
+
would link to an endpoint."""
|
|
1472
|
+
from .parsers.endpoints import parse_route_decorator
|
|
1473
|
+
|
|
1474
|
+
count = 0
|
|
1475
|
+
for props in nodes.values():
|
|
1476
|
+
# The io group writes no endpoint for a route in a test file (#910),
|
|
1477
|
+
# so one there is no sign the group was left out.
|
|
1478
|
+
if matches_test_path(str(props.get(cs.KEY_PATH) or "")):
|
|
1479
|
+
continue
|
|
1480
|
+
decorators = props.get(cs.KEY_DECORATORS)
|
|
1481
|
+
if isinstance(decorators, list) and any(
|
|
1482
|
+
parse_route_decorator(str(d)) for d in decorators
|
|
1483
|
+
):
|
|
1484
|
+
count += 1
|
|
1485
|
+
return count
|
|
1486
|
+
|
|
1487
|
+
|
|
1468
1488
|
def collect_dead_code(
|
|
1469
1489
|
ingestor: GraphQueryClient, project_name: str, config: DeadCodeConfig
|
|
1470
1490
|
) -> list[ResultRow]:
|
|
@@ -1503,6 +1523,11 @@ def collect_dead_code_with_coverage(
|
|
|
1503
1523
|
endpoint_links = (
|
|
1504
1524
|
None if config.endpoint_roots else _endpoint_links(ingestor, params)
|
|
1505
1525
|
)
|
|
1526
|
+
# No endpoint at all is what a project indexed without the io group
|
|
1527
|
+
# holds; the route decorator would then root every handler as if the
|
|
1528
|
+
# switch were on (issue #2896).
|
|
1529
|
+
if endpoint_links == {} and (handlers := _route_handler_count(nodes)):
|
|
1530
|
+
raise ex.EndpointDataMissingError(project_name, handlers)
|
|
1506
1531
|
dead = dead_code_from_graph(nodes, rels, prefix, config, endpoint_links)
|
|
1507
1532
|
rows = [row for row in node_rows if _row_qn(row) in dead]
|
|
1508
1533
|
rows.sort(key=_row_qn)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""The Rust extension (`rust/cgr_graph_rs`), imported in one place.
|
|
2
|
+
|
|
3
|
+
cgr does not run without it: importing `codebase_rag` fails when it is
|
|
4
|
+
missing. `require_rust_extension` is for code with no Python implementation
|
|
5
|
+
at all; `rust_extension` still serves the engine parts that keep one for the
|
|
6
|
+
inputs their Rust half declines.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from functools import cache
|
|
12
|
+
from importlib import import_module
|
|
13
|
+
from types import ModuleType
|
|
14
|
+
|
|
15
|
+
from .. import exceptions as ex
|
|
16
|
+
from ..constants.embedded_graph import EG_RUST_MODULE
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@cache
|
|
20
|
+
def rust_extension() -> ModuleType | None:
|
|
21
|
+
try:
|
|
22
|
+
return import_module(EG_RUST_MODULE)
|
|
23
|
+
except ImportError:
|
|
24
|
+
return None
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def require_rust_extension() -> ModuleType:
|
|
28
|
+
"""The extension, or ImportError saying how to get it."""
|
|
29
|
+
try:
|
|
30
|
+
return import_module(EG_RUST_MODULE)
|
|
31
|
+
except ImportError as error:
|
|
32
|
+
raise ImportError(ex.RUST_EXTENSION_MISSING.format(error=error)) from error
|
|
@@ -40,6 +40,14 @@ SEMANTIC_EXTRA = "Semantic search requires 'semantic' extra: uv sync --extra sem
|
|
|
40
40
|
# Input errors
|
|
41
41
|
JSON_TOO_DEEP = "JSON nesting exceeds the decoder's recursion limit"
|
|
42
42
|
|
|
43
|
+
# The Rust extension (rust/cgr_graph_rs), which cgr does not run without
|
|
44
|
+
RUST_EXTENSION_MISSING = (
|
|
45
|
+
"code-graph-rag needs its Rust extension, cgr-graph-rs, and cannot import "
|
|
46
|
+
"it ({error}). It ships as wheels for CPython 3.12+ on Linux (x86_64, "
|
|
47
|
+
"aarch64), macOS and Windows x64; reinstall code-graph-rag there, or, in a "
|
|
48
|
+
"checkout, run `uv sync` with a Rust toolchain on PATH to build it."
|
|
49
|
+
)
|
|
50
|
+
|
|
43
51
|
# OpenAI-compatible embedding errors
|
|
44
52
|
OPENAI_EMBEDDING_HTTP_ERROR = (
|
|
45
53
|
"OpenAI-compatible embedding request failed with status {status}: {body}"
|
|
@@ -213,6 +221,16 @@ INGESTOR_NOT_QUERYABLE = "{kind} has no graph to read."
|
|
|
213
221
|
ACCESS_DENIED = "Access denied: Cannot access files outside the project root."
|
|
214
222
|
|
|
215
223
|
|
|
224
|
+
DEADCODE_ENDPOINT_DATA_MISSING = (
|
|
225
|
+
"--no-endpoint-roots needs endpoint data: project '{project}' has "
|
|
226
|
+
"{handlers} route-decorated handler(s) but no recorded endpoint, so it was "
|
|
227
|
+
"indexed without the io capture group and each handler would stay live by "
|
|
228
|
+
"its decorator. Re-index it with --capture io (cgr start --repo-path <repo> "
|
|
229
|
+
"--update-graph --project-name {project} --capture io), or drop "
|
|
230
|
+
"--no-endpoint-roots."
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
|
|
216
234
|
# Tree bridge (used with raise NotBorrowed, which the caller catches and runs
|
|
217
235
|
# the Python twin)
|
|
218
236
|
NO_DESCENDANT = "no node at descendant index {index}"
|
|
@@ -277,6 +295,24 @@ class RepoPathError(ValueError):
|
|
|
277
295
|
"""
|
|
278
296
|
|
|
279
297
|
|
|
298
|
+
class EndpointDataMissingError(Exception):
|
|
299
|
+
"""Endpoint roots are off, but the project holds no endpoint to decide by.
|
|
300
|
+
|
|
301
|
+
Only the `io` capture group writes `EXPOSES`; without it every
|
|
302
|
+
route-decorated handler stays live by its decorator, so the scan would
|
|
303
|
+
read as a clean result on handlers it never judged (issue #2896).
|
|
304
|
+
"""
|
|
305
|
+
|
|
306
|
+
def __init__(self, project_name: str, handlers: int) -> None:
|
|
307
|
+
self.project_name = project_name
|
|
308
|
+
self.handlers = handlers
|
|
309
|
+
super().__init__(
|
|
310
|
+
DEADCODE_ENDPOINT_DATA_MISSING.format(
|
|
311
|
+
project=project_name, handlers=handlers
|
|
312
|
+
)
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
|
|
280
316
|
# Sync lock (issue #2441)
|
|
281
317
|
SYNC_IN_PROGRESS = (
|
|
282
318
|
"Another sync of {repo} is running ({holder}). Two syncs of one checkout at "
|
|
@@ -7209,11 +7209,17 @@ class CallProcessor:
|
|
|
7209
7209
|
# An untyped C# MEMBER call retains the generic fallback. A
|
|
7210
7210
|
# bare call has already exhausted C#'s legitimate scopes
|
|
7211
7211
|
# (local function, enclosing type, and static import), so a
|
|
7212
|
-
# miss is external rather than a name-wide guess (#2005).
|
|
7212
|
+
# miss is external rather than a name-wide guess (#2005). It
|
|
7213
|
+
# reads the method's types as this call sees them, as the C#
|
|
7214
|
+
# resolver did: a pattern, out or lambda variable named like a
|
|
7215
|
+
# field never takes the field's type (bot review on PR #2990).
|
|
7216
|
+
engine = self._resolver.type_inference.csharp_type_inference
|
|
7213
7217
|
callee_info = ctx.resolve_func(
|
|
7214
7218
|
call_name,
|
|
7215
7219
|
ctx.module_qn,
|
|
7216
|
-
|
|
7220
|
+
None
|
|
7221
|
+
if call_var_types is None
|
|
7222
|
+
else engine.site_types(call_node, call_var_types),
|
|
7217
7223
|
ctx.class_context,
|
|
7218
7224
|
ctx.caller_qn,
|
|
7219
7225
|
ctx.language,
|
|
@@ -9013,6 +9019,21 @@ class CallProcessor:
|
|
|
9013
9019
|
):
|
|
9014
9020
|
self._emit_conditional_rhs_refs(value, scope)
|
|
9015
9021
|
return
|
|
9022
|
+
if (
|
|
9023
|
+
value.type in _INLINE_FUNC_VALUE_TYPES
|
|
9024
|
+
and node.type == cs.TS_VARIABLE_DECLARATOR
|
|
9025
|
+
and js_ts_utils.arrow_binding_name(value) is not None
|
|
9026
|
+
and not js_ts_utils.name_is_body_scoped(value)
|
|
9027
|
+
):
|
|
9028
|
+
# `const foo = () => {}` is foo's own definition, not a use of
|
|
9029
|
+
# it: referencing it from the scope rooted every arrow const and
|
|
9030
|
+
# dead-code never reported one (issue #2857). Its uses reference
|
|
9031
|
+
# it by name like any function's. That holds only when it is
|
|
9032
|
+
# registered as foo: `const run = function worker() {}` registers
|
|
9033
|
+
# worker and `const b = (() => {}).bind(x)` an anonymous function,
|
|
9034
|
+
# which calls to run or b never resolve to, so those keep the
|
|
9035
|
+
# reference.
|
|
9036
|
+
return
|
|
9016
9037
|
if (
|
|
9017
9038
|
value.type in _ASSIGNMENT_RHS_REF_TYPES
|
|
9018
9039
|
or value.type in _INLINE_FUNC_VALUE_TYPES
|