code-graph-rag 0.0.820__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.820/code_graph_rag.egg-info → code_graph_rag-0.0.895}/PKG-INFO +1 -1
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/README.md +6 -3
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895/code_graph_rag.egg-info}/PKG-INFO +1 -1
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/SOURCES.txt +7 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/cli.py +131 -1
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/cli_help.py +59 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_cpp.py +0 -1
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_csharp.py +2 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_go.py +4 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_lua.py +7 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_python.py +7 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/cli.py +67 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/core.py +44 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/duplicates.py +7 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/graph.py +143 -9
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/lang_tooling.py +7 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/languages.py +59 -2
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/mcp.py +48 -0
- code_graph_rag-0.0.895/codebase_rag/constants/security.py +842 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/cypher_queries.py +210 -1
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/dead_code.py +141 -84
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editing/imports.py +82 -22
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editing/patcher.py +84 -5
- code_graph_rag-0.0.895/codebase_rag/editing/rename.py +772 -0
- {code_graph_rag-0.0.820 → 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.820 → code_graph_rag-0.0.895}/codebase_rag/graph_updater.py +2489 -185
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/logs.py +135 -8
- code_graph_rag-0.0.895/codebase_rag/mcp/tools.py +2155 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parser_fingerprint.py +42 -1
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/call_processor.py +480 -23
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/call_resolver.py +431 -24
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/mixin.py +23 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/parent_extraction.py +45 -15
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/utils.py +20 -21
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/frontend.py +43 -31
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/qn.py +19 -1
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/type_inference.py +172 -45
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/definition_processor.py +101 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/dependency_parser.py +34 -22
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoint_prefixes.py +39 -1
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/factory.py +35 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/function_ingest.py +39 -2
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/type_inference.py +20 -16
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/js_ts.py +4 -3
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/import_processor.py +353 -93
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/type_inference.py +0 -2
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/type_resolver.py +0 -2
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/utils.py +0 -2
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/variable_analyzer.py +6 -10
- {code_graph_rag-0.0.820 → 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.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/utils.py +58 -19
- {code_graph_rag-0.0.820 → 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.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/type_inference.py +111 -1
- {code_graph_rag-0.0.820 → 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.895/codebase_rag/tools/shell_command.py +1751 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/structural_editor.py +11 -2
- {code_graph_rag-0.0.820 → 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.820 → code_graph_rag-0.0.895}/codebase_rag/trace/ingest.py +65 -3
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/speedscope.py +24 -11
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/types_defs.py +58 -4
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/path_utils.py +177 -7
- code_graph_rag-0.0.895/codec/schema_pb2.py +85 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/pyproject.toml +27 -1
- code_graph_rag-0.0.820/codebase_rag/constants/security.py +0 -316
- code_graph_rag-0.0.820/codebase_rag/mcp/tools.py +0 -1054
- code_graph_rag-0.0.820/codebase_rag/parsers/lua/utils.py +0 -96
- code_graph_rag-0.0.820/codebase_rag/tools/shell_command.py +0 -768
- code_graph_rag-0.0.820/codec/schema_pb2.py +0 -85
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/LICENSE +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/PYPI_README.md +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/cgr/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/dependency_links.txt +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/entry_points.txt +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/requires.txt +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/code_graph_rag.egg-info/top_level.txt +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/ast_cache.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/capture.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/cgr_state.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/config.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_dart.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_java.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_js.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_nodes.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_php.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_rust.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_scala.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/ast_sql.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/build.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/deadcode_roots.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/deps.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/fqn_specs.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/health.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/providers.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/stdlib_types.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/structural.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/constants/trace.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/context_pruning.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/crash_correlation.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/decorators.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/docker-compose.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/duplicates.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editing/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editing/cli.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editing/transaction.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/editor_links.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/embedder.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/exceptions.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/flow_verdict.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/graph_audit.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/graph_loader.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/language_spec.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/main.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/mcp/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/mcp/client.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/mcp/server.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/models.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parser_loader.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_fingerprint.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/ast_grep_tier.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/build_lock.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/identity.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/class_ingest/utils.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/contract_linking.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/contracts.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp/type_inference.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp/utils.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/type_inference.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/dart/utils.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/dispatch_registry.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/document_tier.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoint_routes.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/endpoints.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/export_detection.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/flat_module.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/constants.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/flow_access/processor.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontend_mode.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/cpp.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/csharp.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/go.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/java.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/protocol.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/python.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/frontends/registry.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/module_paths.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go/utils.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/base.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/cpp.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/java.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/lua.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/php.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/protocol.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/python.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/registry.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/handlers/rust.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/constants.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/descriptor.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/extract.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/models.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/processor.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/io_access/registry.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java/method_resolver.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_generated.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/java_lombok.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/module_system.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/js_ts/utils.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/lua/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/lua/type_inference.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/type_inference.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/python_source_roots.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/rpc_exposure.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/type_inference.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/rs/utils.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/semantic_call_join.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/string_call.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/parsers/structure_processor.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/path_filters.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/prompts.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/providers/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/providers/base.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/providers/litellm.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/readme_sections.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/schema_builder.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/schema_parse.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/schemas.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/anthropic_token_counter.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/filtering.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/graph_diff.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/graph_service.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/llm.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/protobuf_service.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/provenance.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/resource_cleanup.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/services/usage_cost.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/sql_names.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/stack/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/stack/cli.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/stack/constants.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/stack/health.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/stack/manager.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/taint.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tool_errors.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/ast_grep_service.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/code_retrieval.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/codebase_query.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/directory_lister.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/duplicate_detection.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/file_editor.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/file_reader.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/file_writer.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/graph_rerank.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/health_checker.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/language.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/research.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/semantic_search.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/structural_search.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/tools/web_search.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/cli.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/cpuprofile.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/ebpf_pprof.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/instrumented.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/pprof.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/pytest_plugin.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/records.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/resolution.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/rust_pprof.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/sourcemap.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/tracer.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/trace/xdebug.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/unixcoder.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/dependencies.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/fqn_resolver.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/rich_markdown.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/source_extraction.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/utils/token_utils.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/vector_store.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/workspaces/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/workspaces/cli.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/workspaces/constants.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/workspaces/models.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codebase_rag/workspaces/storage.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codec/__init__.py +0 -0
- {code_graph_rag-0.0.820 → code_graph_rag-0.0.895}/codec/schema_pb2.pyi +0 -0
- {code_graph_rag-0.0.820 → 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,9 +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
|
-
- **
|
|
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.
|
|
57
60
|
<!-- /SECTION:latest_news -->
|
|
58
61
|
|
|
59
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,
|
|
@@ -406,6 +407,7 @@ def _delete_hash_cache(repo_path: Path) -> None:
|
|
|
406
407
|
cache_path.unlink(missing_ok=True)
|
|
407
408
|
(repo_path / cs.DIR_MTIMES_FILENAME).unlink(missing_ok=True)
|
|
408
409
|
(repo_path / cs.PARSER_FINGERPRINT_FILENAME).unlink(missing_ok=True)
|
|
410
|
+
(repo_path / cs.EXCLUSION_STATE_FILENAME).unlink(missing_ok=True)
|
|
409
411
|
|
|
410
412
|
|
|
411
413
|
def _resolve_and_validate_repo(repo_path: str | None) -> Path:
|
|
@@ -1089,6 +1091,125 @@ def edits_command(ctx: typer.Context) -> None:
|
|
|
1089
1091
|
_run_delegated_group(edits_cli, ctx)
|
|
1090
1092
|
|
|
1091
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
|
+
|
|
1092
1213
|
@app.command(
|
|
1093
1214
|
name=ch.CLICommandName.HELP,
|
|
1094
1215
|
help=ch.CMD_HELP,
|
|
@@ -1313,6 +1434,7 @@ def _dead_code_config(
|
|
|
1313
1434
|
include_classes: bool,
|
|
1314
1435
|
entry_points: list[str],
|
|
1315
1436
|
decorator_roots: list[str],
|
|
1437
|
+
min_resolution: cs.EdgeResolution | None = None,
|
|
1316
1438
|
) -> DeadCodeConfig:
|
|
1317
1439
|
# test_patterns is always set: included tests become roots; excluded, it
|
|
1318
1440
|
# filters test modules out of module-load roots so test-only code stays dead.
|
|
@@ -1325,6 +1447,7 @@ def _dead_code_config(
|
|
|
1325
1447
|
),
|
|
1326
1448
|
entry_points=tuple(entry_points),
|
|
1327
1449
|
test_patterns=tuple(cs.TEST_PATH_PATTERNS),
|
|
1450
|
+
min_resolution=str(min_resolution) if min_resolution is not None else None,
|
|
1328
1451
|
)
|
|
1329
1452
|
|
|
1330
1453
|
|
|
@@ -1472,6 +1595,9 @@ def dead_code(
|
|
|
1472
1595
|
fail_on_found: bool = typer.Option(
|
|
1473
1596
|
False, "--fail-on-found", help=ch.HELP_DEADCODE_FAIL_ON_FOUND
|
|
1474
1597
|
),
|
|
1598
|
+
min_resolution: cs.EdgeResolution | None = typer.Option(
|
|
1599
|
+
None, "--min-resolution", help=ch.HELP_DEADCODE_MIN_RESOLUTION
|
|
1600
|
+
),
|
|
1475
1601
|
) -> None:
|
|
1476
1602
|
from .dead_code import collect_dead_code_with_coverage
|
|
1477
1603
|
|
|
@@ -1493,7 +1619,11 @@ def dead_code(
|
|
|
1493
1619
|
ingestor,
|
|
1494
1620
|
resolved,
|
|
1495
1621
|
_dead_code_config(
|
|
1496
|
-
include_tests,
|
|
1622
|
+
include_tests,
|
|
1623
|
+
include_classes,
|
|
1624
|
+
entry_point,
|
|
1625
|
+
decorator_root,
|
|
1626
|
+
min_resolution,
|
|
1497
1627
|
),
|
|
1498
1628
|
)
|
|
1499
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})"
|
|
@@ -494,6 +516,23 @@ PATCH_NOT_AN_IDENTIFIER = "{path}:{line}:{col} is not a whole identifier"
|
|
|
494
516
|
PATCH_PARSE_FAILED = "{path} no longer parses after the patch"
|
|
495
517
|
PATCH_FORMAT_DRIFT = "{path} applied, but {tool} would reformat it"
|
|
496
518
|
PATCH_OK = "{path}: {count} edit(s) applied"
|
|
519
|
+
# `parses is None` means no grammar was available, so the patch was checked
|
|
520
|
+
# by nothing. Reported apart from PATCH_OK because reporting both as OK is
|
|
521
|
+
# what turned an unverifiable write into an apparently verified one; the
|
|
522
|
+
# write itself is still allowed, since refusing would make edits a silent
|
|
523
|
+
# no-op on a base install where Rust and Go grammars are absent (#1580).
|
|
524
|
+
# The one wording for "checked by nothing", shared so the two messages that
|
|
525
|
+
# carry it cannot drift apart and a caller can match on either.
|
|
526
|
+
PATCH_UNVERIFIED_FRAGMENT = "unverified (no parser for it)"
|
|
527
|
+
PATCH_UNVERIFIED = "{path}: {count} edit(s) applied, " + PATCH_UNVERIFIED_FRAGMENT
|
|
528
|
+
# Both facts, because either alone is misleading here: drift on its own reads
|
|
529
|
+
# as "parsed fine, just reformat it", and a language with no grammar is
|
|
530
|
+
# exactly the case that also has a formatter installed (Rust, Go).
|
|
531
|
+
PATCH_UNVERIFIED_DRIFT = (
|
|
532
|
+
"{path}: {count} edit(s) applied, "
|
|
533
|
+
+ PATCH_UNVERIFIED_FRAGMENT
|
|
534
|
+
+ "; {tool} would also reformat it"
|
|
535
|
+
)
|
|
497
536
|
# Edit transactions (issue #1528).
|
|
498
537
|
EDIT_NOT_A_FILE = "Staged path is not a regular file: {path}"
|
|
499
538
|
EDIT_RESERVED_PATH = "Path is cgr state, not part of the tree: {path}"
|
|
@@ -511,6 +550,33 @@ EDIT_UNDO_DONE = "Undid transaction {tx} ({count} file(s))"
|
|
|
511
550
|
EDIT_UNDO_STOPPED = "Stopped at transaction {tx}: {reason}"
|
|
512
551
|
EDIT_SHOW_NONE = "No recorded edit transactions"
|
|
513
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"
|
|
514
580
|
MSG_SURGICAL_FAILED = (
|
|
515
581
|
"Failed to apply surgical replacement in {path}. "
|
|
516
582
|
"Target code not found or patches failed."
|
|
@@ -520,6 +586,7 @@ GREP_SUGGESTION = " Use 'rg' instead of 'grep' for text searching."
|
|
|
520
586
|
|
|
521
587
|
QUERY_NOT_AVAILABLE = "N/A"
|
|
522
588
|
DICT_KEY_RESULTS = "results"
|
|
589
|
+
DICT_KEY_ERROR = "error"
|
|
523
590
|
DICT_KEY_QUERY_USED = "query_used"
|
|
524
591
|
TIKTOKEN_ENCODING = "cl100k_base"
|
|
525
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,12 +147,25 @@ 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"
|
|
129
160
|
DIR_MTIMES_FILENAME = ".cgr-dir-mtimes.json"
|
|
130
161
|
PARSER_FINGERPRINT_FILENAME = ".cgr-parser-fingerprint"
|
|
131
162
|
DELOMBOK_STATE_FILENAME = ".cgr-delombok-state.json"
|
|
163
|
+
# The exclusion set the last run indexed under, covering both the excludes and
|
|
164
|
+
# the unignores (which come from `!` lines in .cgrignore/.gitignore and from
|
|
165
|
+
# interactive setup; there is no --unignore flag). Nothing on disk changes when
|
|
166
|
+
# only the CLI --exclude flags do, so without this the sync check cannot tell
|
|
167
|
+
# that the eligible set moved (issue #1606).
|
|
168
|
+
EXCLUSION_STATE_FILENAME = ".cgr-exclusion-state.json"
|
|
132
169
|
# Recorded edit transactions for `cgr edits show|undo` (issue #1528).
|
|
133
170
|
EDIT_HISTORY_FILENAME = ".cgr-edit-history.json"
|
|
134
171
|
EDIT_LOCK_FILENAME = ".cgr-edit-lock"
|
|
@@ -144,6 +181,7 @@ CGR_STATE_FILENAMES: frozenset[str] = frozenset(
|
|
|
144
181
|
DIR_MTIMES_FILENAME,
|
|
145
182
|
PARSER_FINGERPRINT_FILENAME,
|
|
146
183
|
DELOMBOK_STATE_FILENAME,
|
|
184
|
+
EXCLUSION_STATE_FILENAME,
|
|
147
185
|
EDIT_HISTORY_FILENAME,
|
|
148
186
|
EDIT_LOCK_FILENAME,
|
|
149
187
|
}
|
|
@@ -173,6 +211,12 @@ PARSER_FINGERPRINT_SOURCE_FILES: tuple[str, ...] = (
|
|
|
173
211
|
"ast_cache.py",
|
|
174
212
|
"language_spec.py",
|
|
175
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",
|
|
176
220
|
)
|
|
177
221
|
PY_SOURCE_GLOB = "*.py"
|
|
178
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"
|