code-graph-rag 0.0.845__tar.gz → 0.0.895__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.0.845/code_graph_rag.egg-info → code_graph_rag-0.0.895}/PKG-INFO +1 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/README.md +6 -6
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895/code_graph_rag.egg-info}/PKG-INFO +1 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/SOURCES.txt +7 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/cli.py +130 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/cli_help.py +59 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_cpp.py +0 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_csharp.py +2 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_go.py +4 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_lua.py +7 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_python.py +7 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/cli.py +50 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/core.py +37 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/duplicates.py +7 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/graph.py +135 -9
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/lang_tooling.py +7 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/languages.py +37 -4
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/mcp.py +48 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/cypher_queries.py +210 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/dead_code.py +141 -84
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editing/imports.py +82 -22
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editing/patcher.py +55 -5
- code_graph_rag-0.0.895/codebase_rag/editing/rename.py +772 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/function_registry.py +19 -12
- code_graph_rag-0.0.895/codebase_rag/graph_cli.py +176 -0
- code_graph_rag-0.0.895/codebase_rag/graph_query.py +526 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/graph_updater.py +2250 -253
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/logs.py +101 -5
- code_graph_rag-0.0.895/codebase_rag/mcp/tools.py +2155 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/call_processor.py +480 -23
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/call_resolver.py +431 -24
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/mixin.py +23 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/parent_extraction.py +45 -15
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/utils.py +20 -21
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/frontend.py +43 -31
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/qn.py +19 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/type_inference.py +172 -45
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/definition_processor.py +101 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/dependency_parser.py +34 -22
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoint_prefixes.py +39 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/factory.py +35 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/function_ingest.py +39 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/type_inference.py +20 -16
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/js_ts.py +4 -3
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/import_processor.py +353 -88
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/type_inference.py +0 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/type_resolver.py +0 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/utils.py +0 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/variable_analyzer.py +6 -10
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/ingest.py +7 -0
- code_graph_rag-0.0.895/codebase_rag/parsers/lua/utils.py +212 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/utils.py +58 -19
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/stdlib_extractor.py +4 -1
- code_graph_rag-0.0.895/codebase_rag/parsers/type_facts.py +417 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/type_inference.py +111 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/utils.py +11 -5
- code_graph_rag-0.0.895/codebase_rag/structural_check.py +221 -0
- code_graph_rag-0.0.895/codebase_rag/structural_delta.py +907 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/shell_command.py +63 -17
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/structural_editor.py +11 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/tool_descriptions.py +121 -3
- code_graph_rag-0.0.895/codebase_rag/trace/dispatch_site.py +427 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/ingest.py +65 -3
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/speedscope.py +24 -11
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/types_defs.py +58 -4
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/path_utils.py +157 -8
- code_graph_rag-0.0.895/codec/schema_pb2.py +85 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/pyproject.toml +3 -1
- code_graph_rag-0.0.845/codebase_rag/mcp/tools.py +0 -1077
- code_graph_rag-0.0.845/codebase_rag/parsers/lua/utils.py +0 -96
- code_graph_rag-0.0.845/codec/schema_pb2.py +0 -85
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/LICENSE +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/PYPI_README.md +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/cgr/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/dependency_links.txt +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/entry_points.txt +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/requires.txt +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/top_level.txt +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/ast_cache.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/capture.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/cgr_state.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/config.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_dart.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_java.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_js.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_nodes.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_php.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_rust.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_scala.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_sql.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/build.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/deadcode_roots.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/deps.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/fqn_specs.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/health.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/providers.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/security.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/stdlib_types.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/structural.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/constants/trace.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/context_pruning.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/crash_correlation.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/decorators.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/docker-compose.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/duplicates.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editing/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editing/cli.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editing/transaction.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/editor_links.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/embedder.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/exceptions.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/flow_verdict.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/graph_audit.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/graph_loader.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/language_spec.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/main.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/mcp/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/mcp/client.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/mcp/server.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/models.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parser_fingerprint.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parser_loader.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_fingerprint.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_tier.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/build_lock.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/identity.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/contract_linking.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/contracts.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/dispatch_registry.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/document_tier.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoint_routes.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoints.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/export_detection.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/flat_module.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/constants.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/processor.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontend_mode.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/cpp.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/csharp.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/go.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/java.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/protocol.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/python.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/registry.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/module_paths.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/base.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/cpp.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/java.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/lua.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/php.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/protocol.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/python.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/registry.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/rust.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/constants.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/descriptor.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/extract.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/models.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/processor.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/registry.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/method_resolver.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_generated.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_lombok.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/module_system.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/lua/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/lua/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/python_source_roots.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/rpc_exposure.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/semantic_call_join.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/string_call.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/parsers/structure_processor.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/path_filters.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/prompts.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/providers/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/providers/base.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/providers/litellm.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/readme_sections.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/schema_builder.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/schema_parse.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/schemas.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/anthropic_token_counter.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/filtering.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/graph_diff.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/graph_service.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/llm.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/protobuf_service.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/provenance.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/resource_cleanup.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/services/usage_cost.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/sql_names.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/stack/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/stack/cli.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/stack/constants.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/stack/health.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/stack/manager.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/taint.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tool_errors.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/ast_grep_service.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/code_retrieval.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/codebase_query.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/directory_lister.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/duplicate_detection.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/file_editor.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/file_reader.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/file_writer.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/graph_rerank.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/health_checker.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/language.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/research.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/semantic_search.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/structural_search.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/tools/web_search.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/cli.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/cpuprofile.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/ebpf_pprof.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/instrumented.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/pprof.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/pytest_plugin.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/records.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/resolution.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/rust_pprof.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/sourcemap.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/tracer.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/trace/xdebug.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/unixcoder.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/dependencies.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/fqn_resolver.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/rich_markdown.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/source_extraction.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/utils/token_utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/vector_store.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/workspaces/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/workspaces/cli.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/workspaces/constants.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/workspaces/models.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codebase_rag/workspaces/storage.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codec/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/codec/schema_pb2.pyi +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.895}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-graph-rag
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.895
|
|
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
|
|
@@ -51,12 +51,12 @@ Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowl
|
|
|
51
51
|
## Latest News 🔥
|
|
52
52
|
|
|
53
53
|
<!-- SECTION:latest_news -->
|
|
54
|
-
- **
|
|
55
|
-
- **
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
58
|
-
- **
|
|
59
|
-
- **
|
|
54
|
+
- **File System Operations**: Improved handling of file system operations with platform-neutral joins and safeguards against removing project root.
|
|
55
|
+
- **Cache Management**: Enhanced cache management with atomic publishing, dedicated cache stamps, and improved deletion handling for orphan caches.
|
|
56
|
+
- **Graph Querying**: Introduced deterministic graph query tools for more precise analysis of code relationships.
|
|
57
|
+
- **Re-ingestion & Parsing**: Improved re-ingestion processes, including handling of deleted files, re-parsing of related files, and rebuilding of key data structures.
|
|
58
|
+
- **Security & Stability**: Addressed security concerns by blocking removal of project root and improved stability by preventing skipped edits and handling orphaned caches.
|
|
59
|
+
- **C++ & Go Integration**: Enhanced integration with C++ and Go, including parsing of module interfaces and handling of module-level class aliases.
|
|
60
60
|
<!-- /SECTION:latest_news -->
|
|
61
61
|
|
|
62
62
|
See [NEWS.md](NEWS.md) for the full history.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-graph-rag
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.895
|
|
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
|
|
@@ -29,7 +29,9 @@ codebase_rag/exceptions.py
|
|
|
29
29
|
codebase_rag/flow_verdict.py
|
|
30
30
|
codebase_rag/function_registry.py
|
|
31
31
|
codebase_rag/graph_audit.py
|
|
32
|
+
codebase_rag/graph_cli.py
|
|
32
33
|
codebase_rag/graph_loader.py
|
|
34
|
+
codebase_rag/graph_query.py
|
|
33
35
|
codebase_rag/graph_updater.py
|
|
34
36
|
codebase_rag/language_spec.py
|
|
35
37
|
codebase_rag/logs.py
|
|
@@ -44,6 +46,8 @@ codebase_rag/schema_builder.py
|
|
|
44
46
|
codebase_rag/schema_parse.py
|
|
45
47
|
codebase_rag/schemas.py
|
|
46
48
|
codebase_rag/sql_names.py
|
|
49
|
+
codebase_rag/structural_check.py
|
|
50
|
+
codebase_rag/structural_delta.py
|
|
47
51
|
codebase_rag/taint.py
|
|
48
52
|
codebase_rag/tool_errors.py
|
|
49
53
|
codebase_rag/types_defs.py
|
|
@@ -131,6 +135,7 @@ codebase_rag/editing/__init__.py
|
|
|
131
135
|
codebase_rag/editing/cli.py
|
|
132
136
|
codebase_rag/editing/imports.py
|
|
133
137
|
codebase_rag/editing/patcher.py
|
|
138
|
+
codebase_rag/editing/rename.py
|
|
134
139
|
codebase_rag/editing/transaction.py
|
|
135
140
|
codebase_rag/mcp/__init__.py
|
|
136
141
|
codebase_rag/mcp/client.py
|
|
@@ -165,6 +170,7 @@ codebase_rag/parsers/semantic_call_join.py
|
|
|
165
170
|
codebase_rag/parsers/stdlib_extractor.py
|
|
166
171
|
codebase_rag/parsers/string_call.py
|
|
167
172
|
codebase_rag/parsers/structure_processor.py
|
|
173
|
+
codebase_rag/parsers/type_facts.py
|
|
168
174
|
codebase_rag/parsers/type_inference.py
|
|
169
175
|
codebase_rag/parsers/utils.py
|
|
170
176
|
codebase_rag/parsers/ast_grep_patterns/bash.yaml
|
|
@@ -310,6 +316,7 @@ codebase_rag/tools/web_search.py
|
|
|
310
316
|
codebase_rag/trace/__init__.py
|
|
311
317
|
codebase_rag/trace/cli.py
|
|
312
318
|
codebase_rag/trace/cpuprofile.py
|
|
319
|
+
codebase_rag/trace/dispatch_site.py
|
|
313
320
|
codebase_rag/trace/ebpf_pprof.py
|
|
314
321
|
codebase_rag/trace/ingest.py
|
|
315
322
|
codebase_rag/trace/instrumented.py
|
|
@@ -36,6 +36,7 @@ from .editor_links import (
|
|
|
36
36
|
resolve_editor,
|
|
37
37
|
url_template_problem,
|
|
38
38
|
)
|
|
39
|
+
from .graph_cli import cli as graph_cli
|
|
39
40
|
from .graph_updater import GraphUpdater
|
|
40
41
|
from .main import (
|
|
41
42
|
_create_configuration_table,
|
|
@@ -1090,6 +1091,125 @@ def edits_command(ctx: typer.Context) -> None:
|
|
|
1090
1091
|
_run_delegated_group(edits_cli, ctx)
|
|
1091
1092
|
|
|
1092
1093
|
|
|
1094
|
+
@app.command(
|
|
1095
|
+
name=ch.CLICommandName.GRAPH,
|
|
1096
|
+
help=ch.CMD_GRAPH,
|
|
1097
|
+
short_help=ch.CMD_GRAPH,
|
|
1098
|
+
add_help_option=False,
|
|
1099
|
+
context_settings=_DELEGATED_GROUP_CONTEXT,
|
|
1100
|
+
rich_help_panel=ch.PANEL_GRAPH,
|
|
1101
|
+
)
|
|
1102
|
+
def graph_command(ctx: typer.Context) -> None:
|
|
1103
|
+
_run_delegated_group(graph_cli, ctx)
|
|
1104
|
+
|
|
1105
|
+
|
|
1106
|
+
@app.command(
|
|
1107
|
+
name=ch.CLICommandName.CHECK,
|
|
1108
|
+
help=ch.CMD_CHECK,
|
|
1109
|
+
short_help=ch.CMD_CHECK,
|
|
1110
|
+
epilog=ch.EXAMPLES_CHECK,
|
|
1111
|
+
rich_help_panel=ch.PANEL_USE,
|
|
1112
|
+
)
|
|
1113
|
+
def check_command(
|
|
1114
|
+
base: str = typer.Option("HEAD", "--base", help=ch.HELP_CHECK_BASE),
|
|
1115
|
+
repo_path: Path = typer.Option(
|
|
1116
|
+
Path(cs.MCP_DEFAULT_DIRECTORY),
|
|
1117
|
+
"--repo-path",
|
|
1118
|
+
exists=True,
|
|
1119
|
+
file_okay=False,
|
|
1120
|
+
help=ch.HELP_GRAPH_REPO_PATH,
|
|
1121
|
+
),
|
|
1122
|
+
project: str | None = typer.Option(None, "--project", help=ch.HELP_GRAPH_PROJECT),
|
|
1123
|
+
fail_on_found: bool = typer.Option(
|
|
1124
|
+
False, "--fail-on-found", help=ch.HELP_CHECK_FAIL_ON_FOUND
|
|
1125
|
+
),
|
|
1126
|
+
) -> None:
|
|
1127
|
+
from .structural_check import CheckError, indexed_scope, run_check
|
|
1128
|
+
from .structural_delta import has_findings
|
|
1129
|
+
from .utils.path_utils import derive_project_name
|
|
1130
|
+
|
|
1131
|
+
root = repo_path.resolve()
|
|
1132
|
+
name = project or derive_project_name(root)
|
|
1133
|
+
parsers, queries = load_parsers()
|
|
1134
|
+
with connect_memgraph(batch_size=settings.resolve_batch_size(None)) as ingestor:
|
|
1135
|
+
if name not in ingestor.list_projects():
|
|
1136
|
+
typer.echo(cs.CHECK_NOT_INDEXED.format(project=name), err=True)
|
|
1137
|
+
raise typer.Exit(code=1)
|
|
1138
|
+
try:
|
|
1139
|
+
exclude_paths, unignore_paths = indexed_scope(
|
|
1140
|
+
root, name, explicit=project is not None
|
|
1141
|
+
)
|
|
1142
|
+
delta = run_check(
|
|
1143
|
+
root,
|
|
1144
|
+
base,
|
|
1145
|
+
name,
|
|
1146
|
+
ingestor,
|
|
1147
|
+
parsers,
|
|
1148
|
+
queries,
|
|
1149
|
+
exclude_paths=exclude_paths,
|
|
1150
|
+
unignore_paths=unignore_paths,
|
|
1151
|
+
)
|
|
1152
|
+
except CheckError as error:
|
|
1153
|
+
typer.echo(str(error), err=True)
|
|
1154
|
+
raise typer.Exit(code=1) from error
|
|
1155
|
+
typer.echo(json.dumps(delta, indent=cs.MCP_JSON_INDENT))
|
|
1156
|
+
if fail_on_found and has_findings(delta):
|
|
1157
|
+
raise typer.Exit(code=1)
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
@app.command(
|
|
1161
|
+
name=ch.CLICommandName.RENAME,
|
|
1162
|
+
help=ch.CMD_RENAME,
|
|
1163
|
+
short_help=ch.CMD_RENAME,
|
|
1164
|
+
epilog=ch.EXAMPLES_RENAME,
|
|
1165
|
+
rich_help_panel=ch.PANEL_USE,
|
|
1166
|
+
)
|
|
1167
|
+
def rename_command(
|
|
1168
|
+
qualified_name: str = typer.Argument(..., help=ch.HELP_RENAME_QN),
|
|
1169
|
+
new_name: str = typer.Argument(..., help=ch.HELP_RENAME_NEW_NAME),
|
|
1170
|
+
repo_path: Path = typer.Option(
|
|
1171
|
+
Path(cs.MCP_DEFAULT_DIRECTORY),
|
|
1172
|
+
"--repo-path",
|
|
1173
|
+
exists=True,
|
|
1174
|
+
file_okay=False,
|
|
1175
|
+
help=ch.HELP_GRAPH_REPO_PATH,
|
|
1176
|
+
),
|
|
1177
|
+
project: str | None = typer.Option(None, "--project", help=ch.HELP_GRAPH_PROJECT),
|
|
1178
|
+
allow_heuristic: bool = typer.Option(
|
|
1179
|
+
False, "--allow-heuristic", help=ch.HELP_RENAME_ALLOW_HEURISTIC
|
|
1180
|
+
),
|
|
1181
|
+
dry_run: bool = typer.Option(False, "--dry-run", help=ch.HELP_RENAME_DRY_RUN),
|
|
1182
|
+
) -> None:
|
|
1183
|
+
from .editing.rename import RenameRefused, rename, sites_for
|
|
1184
|
+
from .graph_cli import _project_and_fetch
|
|
1185
|
+
|
|
1186
|
+
name, fetch_all, ingestor = _project_and_fetch(project, repo_path)
|
|
1187
|
+
with ingestor: # type: ignore[attr-defined]
|
|
1188
|
+
try:
|
|
1189
|
+
report = rename(
|
|
1190
|
+
repo_path.resolve(),
|
|
1191
|
+
fetch_all,
|
|
1192
|
+
name,
|
|
1193
|
+
qualified_name,
|
|
1194
|
+
new_name,
|
|
1195
|
+
allow_heuristic=allow_heuristic,
|
|
1196
|
+
dry_run=dry_run,
|
|
1197
|
+
)
|
|
1198
|
+
except RenameRefused as refused:
|
|
1199
|
+
typer.echo(str(refused), err=True)
|
|
1200
|
+
for site in sites_for(refused.ambiguous):
|
|
1201
|
+
typer.echo(f" {site}", err=True)
|
|
1202
|
+
for entry in refused.unlocatable:
|
|
1203
|
+
typer.echo(f" {entry}", err=True)
|
|
1204
|
+
raise typer.Exit(code=1) from refused
|
|
1205
|
+
payload = dict(report._asdict())
|
|
1206
|
+
payload[cs.KEY_SITES] = sites_for(report.sites)
|
|
1207
|
+
payload[cs.KEY_AMBIGUOUS] = sites_for(report.ambiguous)
|
|
1208
|
+
typer.echo(json.dumps(payload, indent=cs.MCP_JSON_INDENT, sort_keys=True))
|
|
1209
|
+
if not report.applied and not dry_run:
|
|
1210
|
+
raise typer.Exit(code=1)
|
|
1211
|
+
|
|
1212
|
+
|
|
1093
1213
|
@app.command(
|
|
1094
1214
|
name=ch.CLICommandName.HELP,
|
|
1095
1215
|
help=ch.CMD_HELP,
|
|
@@ -1314,6 +1434,7 @@ def _dead_code_config(
|
|
|
1314
1434
|
include_classes: bool,
|
|
1315
1435
|
entry_points: list[str],
|
|
1316
1436
|
decorator_roots: list[str],
|
|
1437
|
+
min_resolution: cs.EdgeResolution | None = None,
|
|
1317
1438
|
) -> DeadCodeConfig:
|
|
1318
1439
|
# test_patterns is always set: included tests become roots; excluded, it
|
|
1319
1440
|
# filters test modules out of module-load roots so test-only code stays dead.
|
|
@@ -1326,6 +1447,7 @@ def _dead_code_config(
|
|
|
1326
1447
|
),
|
|
1327
1448
|
entry_points=tuple(entry_points),
|
|
1328
1449
|
test_patterns=tuple(cs.TEST_PATH_PATTERNS),
|
|
1450
|
+
min_resolution=str(min_resolution) if min_resolution is not None else None,
|
|
1329
1451
|
)
|
|
1330
1452
|
|
|
1331
1453
|
|
|
@@ -1473,6 +1595,9 @@ def dead_code(
|
|
|
1473
1595
|
fail_on_found: bool = typer.Option(
|
|
1474
1596
|
False, "--fail-on-found", help=ch.HELP_DEADCODE_FAIL_ON_FOUND
|
|
1475
1597
|
),
|
|
1598
|
+
min_resolution: cs.EdgeResolution | None = typer.Option(
|
|
1599
|
+
None, "--min-resolution", help=ch.HELP_DEADCODE_MIN_RESOLUTION
|
|
1600
|
+
),
|
|
1476
1601
|
) -> None:
|
|
1477
1602
|
from .dead_code import collect_dead_code_with_coverage
|
|
1478
1603
|
|
|
@@ -1494,7 +1619,11 @@ def dead_code(
|
|
|
1494
1619
|
ingestor,
|
|
1495
1620
|
resolved,
|
|
1496
1621
|
_dead_code_config(
|
|
1497
|
-
include_tests,
|
|
1622
|
+
include_tests,
|
|
1623
|
+
include_classes,
|
|
1624
|
+
entry_point,
|
|
1625
|
+
decorator_root,
|
|
1626
|
+
min_resolution,
|
|
1498
1627
|
),
|
|
1499
1628
|
)
|
|
1500
1629
|
except Exception as e:
|
|
@@ -18,6 +18,9 @@ class CLICommandName(StrEnum):
|
|
|
18
18
|
WORKSPACE = "workspace"
|
|
19
19
|
TRACE = "trace"
|
|
20
20
|
EDITS = "edits"
|
|
21
|
+
GRAPH = "graph"
|
|
22
|
+
CHECK = "check"
|
|
23
|
+
RENAME = "rename"
|
|
21
24
|
STOP = "stop"
|
|
22
25
|
STATUS = "status"
|
|
23
26
|
HELP = "help"
|
|
@@ -93,6 +96,55 @@ HELP_EDITS_REPO_PATH = (
|
|
|
93
96
|
"Repository root holding .cgr-edit-history.json (default: current directory)."
|
|
94
97
|
)
|
|
95
98
|
HELP_EDITS_DIFF = "Print each transaction's unified diff."
|
|
99
|
+
CMD_GRAPH = "Deterministic graph queries (resolve, definition, callers, callees, implementors, overrides, importers, tests-reaching) as JSON, no LLM."
|
|
100
|
+
CMD_GRAPH_GROUP = CMD_GRAPH
|
|
101
|
+
CMD_GRAPH_RESOLVE = "Resolve a name, dotted suffix, or path:line to qualified names."
|
|
102
|
+
CMD_GRAPH_DEFINITION = "File, span, docstring and source of one definition."
|
|
103
|
+
CMD_GRAPH_CALLERS = "Call sites that invoke a qualified name, one row per site."
|
|
104
|
+
CMD_GRAPH_CALLEES = "Call sites inside a qualified name, one row per site."
|
|
105
|
+
CMD_GRAPH_IMPLEMENTORS = "Types that inherit from or implement a type."
|
|
106
|
+
CMD_GRAPH_OVERRIDES = "Methods overriding a method, and the method it overrides."
|
|
107
|
+
CMD_GRAPH_IMPORTERS = (
|
|
108
|
+
"Modules importing a module, with each import statement's location."
|
|
109
|
+
)
|
|
110
|
+
CMD_GRAPH_TESTS_REACHING = (
|
|
111
|
+
"Tests from which a qualified name is reachable, with distance."
|
|
112
|
+
)
|
|
113
|
+
EPILOG_GRAPH = "Run 'cgr help graph COMMAND' for command-specific help."
|
|
114
|
+
HELP_GRAPH_PROJECT = "Project name in the graph (default: derived from --repo-path)."
|
|
115
|
+
HELP_GRAPH_REPO_PATH = (
|
|
116
|
+
"Repository root the project name derives from and source is read from."
|
|
117
|
+
)
|
|
118
|
+
HELP_GRAPH_DEPTH = "How many hops to follow (1 to 5)."
|
|
119
|
+
CMD_CHECK = (
|
|
120
|
+
"Report the structural delta of the working tree against a git ref: "
|
|
121
|
+
"dangling callers, arity findings, new duplicates, new import cycles, "
|
|
122
|
+
"tests reaching the edited symbols."
|
|
123
|
+
)
|
|
124
|
+
EXAMPLES_CHECK = (
|
|
125
|
+
"Examples:\n cgr check --base HEAD\n cgr check --base origin/main --fail-on-found"
|
|
126
|
+
)
|
|
127
|
+
HELP_CHECK_BASE = (
|
|
128
|
+
"Git ref the graph was indexed at; files differing from it are re-ingested."
|
|
129
|
+
)
|
|
130
|
+
HELP_CHECK_FAIL_ON_FOUND = (
|
|
131
|
+
"Exit with status 1 when the delta reports dangling callers, arity "
|
|
132
|
+
"findings, new duplicates or new import cycles."
|
|
133
|
+
)
|
|
134
|
+
CMD_RENAME = (
|
|
135
|
+
"Rename a definition everywhere the graph references it (definition, call "
|
|
136
|
+
"and reference sites, imports, overrides, __all__); refuses on guessed sites."
|
|
137
|
+
)
|
|
138
|
+
EXAMPLES_RENAME = (
|
|
139
|
+
"Examples:\n cgr rename myproj.pkg.util.helper assist --dry-run\n"
|
|
140
|
+
" cgr rename myproj.pkg.Store.get fetch --allow-heuristic"
|
|
141
|
+
)
|
|
142
|
+
HELP_RENAME_QN = "Qualified name of the definition to rename."
|
|
143
|
+
HELP_RENAME_NEW_NAME = "The new identifier."
|
|
144
|
+
HELP_RENAME_ALLOW_HEURISTIC = (
|
|
145
|
+
"Rewrite through heuristic, overload and trace-only sites as well."
|
|
146
|
+
)
|
|
147
|
+
HELP_RENAME_DRY_RUN = "Print the plan and diff without writing anything."
|
|
96
148
|
CMD_TRACE_INGEST = "Resolve a trace file against a project and write dynamic edges"
|
|
97
149
|
CMD_TRACE_CONVERT = "Convert a V8 .cpuprofile (node --cpu-prof) to a trace file"
|
|
98
150
|
|
|
@@ -353,6 +405,10 @@ HELP_DEADCODE_CLASSES = (
|
|
|
353
405
|
)
|
|
354
406
|
HELP_DEADCODE_FORMAT = "Report format: table or json."
|
|
355
407
|
HELP_DEADCODE_OUTPUT = "Write the report to this file instead of stdout."
|
|
408
|
+
HELP_DEADCODE_MIN_RESOLUTION = (
|
|
409
|
+
"Ignore call edges below this confidence when deciding liveness: "
|
|
410
|
+
"heuristic < overload < exact < trace_confirmed (dynamic counts as confirmed)."
|
|
411
|
+
)
|
|
356
412
|
HELP_DEADCODE_FAIL_ON_FOUND = (
|
|
357
413
|
"Exit with status 1 when any candidate is found. Useful in CI."
|
|
358
414
|
)
|
|
@@ -407,6 +463,9 @@ CLI_COMMANDS: dict[CLICommandName, str] = {
|
|
|
407
463
|
CLICommandName.DAEMON: CMD_DAEMON,
|
|
408
464
|
CLICommandName.TRACE: CMD_TRACE,
|
|
409
465
|
CLICommandName.EDITS: CMD_EDITS,
|
|
466
|
+
CLICommandName.GRAPH: CMD_GRAPH,
|
|
467
|
+
CLICommandName.CHECK: CMD_CHECK,
|
|
468
|
+
CLICommandName.RENAME: CMD_RENAME,
|
|
410
469
|
CLICommandName.WORKSPACE: CMD_WORKSPACE,
|
|
411
470
|
CLICommandName.STOP: CMD_STOP,
|
|
412
471
|
CLICommandName.STATUS: CMD_STATUS,
|
|
@@ -145,6 +145,8 @@ TS_CSHARP_MODIFIER_PROTECTED = "protected"
|
|
|
145
145
|
# of the parameter_list (grammar quirk), captured directly.
|
|
146
146
|
TS_CSHARP_PARAMETER = "parameter"
|
|
147
147
|
TS_CSHARP_ARRAY_TYPE = "array_type"
|
|
148
|
+
# `params T[] items` renders as the modifier plus the array type (#1527).
|
|
149
|
+
CSHARP_PARAMS_PREFIX = "params "
|
|
148
150
|
TS_CSHARP_PARAMETER_LIST = "parameter_list"
|
|
149
151
|
|
|
150
152
|
# Local/field declarations for type inference. A local is a variable_declaration
|
|
@@ -82,6 +82,10 @@ TS_GO_POINTER_TYPE = "pointer_type"
|
|
|
82
82
|
# `pkg.Type` in a signature; kept as dotted text so a binding typed to an
|
|
83
83
|
# external package's type stays TYPED (and drops) instead of trie-guessed.
|
|
84
84
|
TS_GO_QUALIFIED_TYPE = "qualified_type"
|
|
85
|
+
TS_GO_GENERIC_TYPE = "generic_type"
|
|
86
|
+
# Field names of a `qualified_type` (`pkg.Name`): the package identifier and
|
|
87
|
+
# the type name; a `composite_literal` carries its constructed type in `type`.
|
|
88
|
+
FIELD_GO_PACKAGE = "package"
|
|
85
89
|
# Go composite types a method may return; a chained call lands on the CONTAINER,
|
|
86
90
|
# not its element, so return-type inference must not unwrap these (a `[]Command`
|
|
87
91
|
# return must not resolve `.Run()` to `Command.Run`).
|
|
@@ -28,6 +28,13 @@ LUA_METHOD_SEPARATOR = ":"
|
|
|
28
28
|
TS_LUA_CHUNK = "chunk"
|
|
29
29
|
TS_LUA_FUNCTION_DECLARATION = "function_declaration"
|
|
30
30
|
TS_LUA_FUNCTION_DEFINITION = "function_definition"
|
|
31
|
+
# A `key = value` entry of a table constructor (`{ f = function() end }`): the
|
|
32
|
+
# key is the `name` field (an identifier, or a string for `["key"] =`), the
|
|
33
|
+
# value the `value` field.
|
|
34
|
+
TS_LUA_FIELD = "field"
|
|
35
|
+
# The token that opens a computed or string key: `["k"] = v`, `[k] = v`.
|
|
36
|
+
LUA_OPEN_BRACKET = "["
|
|
37
|
+
TS_LUA_TABLE_CONSTRUCTOR = "table_constructor"
|
|
31
38
|
|
|
32
39
|
# Import processor function names
|
|
33
40
|
IMPORT_REQUIRE = "require"
|
|
@@ -18,6 +18,13 @@ TS_PY_LIST_COMPREHENSION = "list_comprehension"
|
|
|
18
18
|
TS_PY_FOR_STATEMENT = "for_statement"
|
|
19
19
|
TS_PY_FOR_IN_CLAUSE = "for_in_clause"
|
|
20
20
|
TS_PY_ASSIGNMENT = "assignment"
|
|
21
|
+
# Unpacking targets: `a, b = ...`, `(a, b) = ...`, `[a, b] = ...`.
|
|
22
|
+
TS_PY_PATTERN_LIST = "pattern_list"
|
|
23
|
+
TS_PY_TUPLE_PATTERN = "tuple_pattern"
|
|
24
|
+
TS_PY_LIST_PATTERN = "list_pattern"
|
|
25
|
+
PY_UNPACKING_TARGET_TYPES = frozenset(
|
|
26
|
+
{TS_PY_PATTERN_LIST, TS_PY_TUPLE_PATTERN, TS_PY_LIST_PATTERN}
|
|
27
|
+
)
|
|
21
28
|
PY_ASSIGNMENT_QUERY = "(assignment) @assignment"
|
|
22
29
|
PY_RETURN_QUERY = "(return_statement) @return_stmt"
|
|
23
30
|
TS_PY_CLASS_DEFINITION = "class_definition"
|
|
@@ -119,6 +119,13 @@ CLI_MSG_EXPORTING_DATA = "Exporting graph data..."
|
|
|
119
119
|
CLI_MSG_OPTIMIZATION_TERMINATED = "\nOptimization session terminated by user."
|
|
120
120
|
CLI_MSG_MCP_TERMINATED = "\nMCP server terminated by user."
|
|
121
121
|
PACKAGE_NAME = "code-graph-rag"
|
|
122
|
+
# How a test spawns the CLI as a subprocess. Shared so the deadline gate in
|
|
123
|
+
# test_cli_smoke can assert no other test file spawns it outside that gate
|
|
124
|
+
# (issue #1655). Both spellings pay the same startup cost, so both need the
|
|
125
|
+
# same deadline: `-m codebase_rag.cli`, and the console scripts in
|
|
126
|
+
# [project.scripts].
|
|
127
|
+
CLI_MODULE_INVOCATION = "codebase_rag.cli"
|
|
128
|
+
CLI_ENTRY_POINT_NAMES: frozenset[str] = frozenset({"cgr", PACKAGE_NAME})
|
|
122
129
|
CLI_MSG_VERSION = "{package} version {version}"
|
|
123
130
|
CLI_MSG_HINT_TARGET_REPO = (
|
|
124
131
|
"\nHint: Make sure TARGET_REPO_PATH environment variable is set."
|
|
@@ -134,6 +141,21 @@ CLI_STATS_TOTAL_NODES = "Total Nodes"
|
|
|
134
141
|
CLI_STATS_TOTAL_RELS = "Total Relationships"
|
|
135
142
|
CLI_STATS_UNKNOWN = "Unknown"
|
|
136
143
|
CLI_ERR_STATS_FAILED = "Failed to get graph statistics: {error}"
|
|
144
|
+
# `cgr check` (issue #1525).
|
|
145
|
+
CHECK_GIT_FAILED = "Cannot diff the working tree against {base}: {error}"
|
|
146
|
+
CHECK_BAD_BASE = "--base must be a git revision, not an option: {base!r}"
|
|
147
|
+
CHECK_BASE_NOT_A_COMMIT = (
|
|
148
|
+
"--base must name one commit to compare the working tree against, "
|
|
149
|
+
"not a range or an unknown revision: {base!r}"
|
|
150
|
+
)
|
|
151
|
+
CHECK_SCOPE_OF_OTHER_PROJECT = (
|
|
152
|
+
"The exclusion scope stamped in this repository belongs to project {other}, "
|
|
153
|
+
"not {project}; re-index {project} (or check {other}) before running the check"
|
|
154
|
+
)
|
|
155
|
+
CHECK_NOT_INDEXED = (
|
|
156
|
+
"Project {project} is not indexed; run 'cgr start --update-graph' at the "
|
|
157
|
+
"base ref first."
|
|
158
|
+
)
|
|
137
159
|
|
|
138
160
|
CLI_DEADCODE_CONNECTING = "Scanning for unreachable functions and methods..."
|
|
139
161
|
CLI_DEADCODE_TABLE_TITLE = "Dead Code Candidates ({project_name})"
|
|
@@ -528,6 +550,33 @@ EDIT_UNDO_DONE = "Undid transaction {tx} ({count} file(s))"
|
|
|
528
550
|
EDIT_UNDO_STOPPED = "Stopped at transaction {tx}: {reason}"
|
|
529
551
|
EDIT_SHOW_NONE = "No recorded edit transactions"
|
|
530
552
|
EDIT_SHOW_HEADER = "{tx} {at} {count} file(s) verification={ok}"
|
|
553
|
+
# Rename (issue #1532).
|
|
554
|
+
RENAME_UNKNOWN = "No definition named {qn} in the graph"
|
|
555
|
+
RENAME_NO_DEFINITION_TOKEN = "Could not locate the name of {qn} in {path}"
|
|
556
|
+
RENAME_DEFINITION_UNREADABLE = (
|
|
557
|
+
"Cannot rename {qn}: its file {path} cannot be read ({error}). "
|
|
558
|
+
"The index names a file the tree no longer has; re-index and retry."
|
|
559
|
+
)
|
|
560
|
+
RENAME_BAD_NAME = "Not a valid identifier: {name}"
|
|
561
|
+
RENAME_AMBIGUOUS = (
|
|
562
|
+
"Refusing to rename {qn}: {count} site(s) were resolved heuristically, by overload "
|
|
563
|
+
"fan-out, or only by a trace; pass allow_heuristic to rewrite through them"
|
|
564
|
+
)
|
|
565
|
+
RENAME_UNLOCATABLE_SITE = "{owner}: site cannot be located ({resolution})"
|
|
566
|
+
RENAME_SITELESS = (
|
|
567
|
+
"Cannot rename {qn}: {count} graph-known site(s) carry no rewrite location, "
|
|
568
|
+
"so the rename would leave them under the old name"
|
|
569
|
+
)
|
|
570
|
+
RENAME_WRONG_ROOT = (
|
|
571
|
+
"Project {project} was not indexed from this server's repository; "
|
|
572
|
+
"rename it from the MCP server rooted at its source tree"
|
|
573
|
+
)
|
|
574
|
+
RENAME_STRUCTURAL_UNLOCATABLE = (
|
|
575
|
+
"Cannot rename {qn}: {count} structural edge(s) (inherits, accepts, returns) "
|
|
576
|
+
"carry no rewrite site, so the rename would leave them pointing at the old name"
|
|
577
|
+
)
|
|
578
|
+
RENAME_PLANNED = "{count} site(s) would be rewritten"
|
|
579
|
+
RENAME_PARSE_FAILED = "Rename rolled back: {files} would no longer parse"
|
|
531
580
|
MSG_SURGICAL_FAILED = (
|
|
532
581
|
"Failed to apply surgical replacement in {path}. "
|
|
533
582
|
"Target code not found or patches failed."
|
|
@@ -537,6 +586,7 @@ GREP_SUGGESTION = " Use 'rg' instead of 'grep' for text searching."
|
|
|
537
586
|
|
|
538
587
|
QUERY_NOT_AVAILABLE = "N/A"
|
|
539
588
|
DICT_KEY_RESULTS = "results"
|
|
589
|
+
DICT_KEY_ERROR = "error"
|
|
540
590
|
DICT_KEY_QUERY_USED = "query_used"
|
|
541
591
|
TIKTOKEN_ENCODING = "cl100k_base"
|
|
542
592
|
QUERY_SUMMARY_SUCCESS = "Successfully retrieved {count} item(s) from the graph."
|
|
@@ -103,6 +103,30 @@ TEXT_UNKNOWN = "unknown"
|
|
|
103
103
|
|
|
104
104
|
TMP_EXTENSION = ".tmp"
|
|
105
105
|
|
|
106
|
+
# Filenames whose module IS their directory, PER LANGUAGE: an importer writes
|
|
107
|
+
# the directory name, never the file's own stem. The extension is part of the
|
|
108
|
+
# rule, not decoration -- `index.py` and `mod.py` are ordinary Python modules
|
|
109
|
+
# imported by those names, and a language-blind stem set silently gives them no
|
|
110
|
+
# importable name at all. `lib.rs`/`main.rs` are crate roots named by the
|
|
111
|
+
# manifest rather than the directory, so they are deliberately absent.
|
|
112
|
+
DIRECTORY_MODULE_STEM_BY_EXT: dict[str, str] = {
|
|
113
|
+
".py": "__init__",
|
|
114
|
+
".rs": "mod",
|
|
115
|
+
".js": "index",
|
|
116
|
+
".jsx": "index",
|
|
117
|
+
".mjs": "index",
|
|
118
|
+
".cjs": "index",
|
|
119
|
+
".ts": "index",
|
|
120
|
+
".tsx": "index",
|
|
121
|
+
# `.mts`/`.cts` are TypeScript's ESM/CJS forms and are directory entry
|
|
122
|
+
# points exactly as `.mjs`/`.cjs` are. They belong to `TS_EXTENSIONS` and
|
|
123
|
+
# to `JS_TS_MODULE_EXTENSIONS`, which is the set cgr's own directory-index
|
|
124
|
+
# resolution already searches, so omitting them here made `pkg/index.mts`
|
|
125
|
+
# derive `pkg.index` instead of `pkg` and the unresolved-importer query
|
|
126
|
+
# asked for a name no waiter had written (issue #1682 review).
|
|
127
|
+
".mts": "index",
|
|
128
|
+
".cts": "index",
|
|
129
|
+
}
|
|
106
130
|
MOD_RS = "mod.rs"
|
|
107
131
|
LIB_RS = "lib.rs"
|
|
108
132
|
MAIN_RS = "main.rs"
|
|
@@ -123,6 +147,13 @@ OPERATOR_PREFIX = "operator"
|
|
|
123
147
|
KEYWORD_SUPER = "super"
|
|
124
148
|
KEYWORD_SELF = "self"
|
|
125
149
|
KEYWORD_CONSTRUCTOR = "constructor"
|
|
150
|
+
# Receivers that name the enclosing type rather than an ordinary value, so
|
|
151
|
+
# `self.Inner()` and `cls.Inner()` are real nested-class constructions.
|
|
152
|
+
# Membership is not sufficient on its own: `self` is also a legal Go receiver
|
|
153
|
+
# name, and a spelling test alone accepted `self.Error()` for a module-level
|
|
154
|
+
# `Error`. The caller pairs this with a nesting check against the enclosing
|
|
155
|
+
# type, which is what actually distinguishes the two (issue #1641).
|
|
156
|
+
SELF_RECEIVER_KEYWORDS = frozenset({"self", "cls", "this"})
|
|
126
157
|
|
|
127
158
|
# Incremental update hash cache
|
|
128
159
|
HASH_CACHE_FILENAME = ".cgr-hash-cache.json"
|
|
@@ -180,6 +211,12 @@ PARSER_FINGERPRINT_SOURCE_FILES: tuple[str, ...] = (
|
|
|
180
211
|
"ast_cache.py",
|
|
181
212
|
"language_spec.py",
|
|
182
213
|
"parser_loader.py",
|
|
214
|
+
# `base_module_qn` lives here, and the whole graph keys on the names it
|
|
215
|
+
# derives: change the rule and every module node should be re-keyed. It
|
|
216
|
+
# was absent, so a change touching ONLY this file left existing indexes on
|
|
217
|
+
# the old identities with no staleness warning, and `utils/` is in neither
|
|
218
|
+
# of the directory globs above (issue #1720 review).
|
|
219
|
+
"utils/path_utils.py",
|
|
183
220
|
)
|
|
184
221
|
PY_SOURCE_GLOB = "*.py"
|
|
185
222
|
# The bundled Roslyn C# frontend tool is parser code too, though .cs/.csproj
|
|
@@ -112,6 +112,13 @@ DUPLICATES_MAX_SIMILAR_GROUPS = 1000
|
|
|
112
112
|
|
|
113
113
|
KIND_EXACT = "exact"
|
|
114
114
|
KIND_SIMILAR = "similar"
|
|
115
|
+
# Per-site arity verdicts in a structural delta (issue #1525).
|
|
116
|
+
DELTA_ARITY_OK = "ok"
|
|
117
|
+
DELTA_ARITY_TOO_MANY = "too_many"
|
|
118
|
+
DELTA_ARITY_POSSIBLY_MISSING = "possibly_missing"
|
|
119
|
+
DELTA_ARITY_UNKNOWN = "unknown"
|
|
120
|
+
# Hops the backward test-reach walk follows before giving up.
|
|
121
|
+
DELTA_REACH_MAX_DEPTH = 12
|
|
115
122
|
|
|
116
123
|
# Cypher return alias for the not-analyzed symbol count.
|
|
117
124
|
KEY_SKIPPED = "skipped"
|