code-graph-rag 0.0.895__tar.gz → 0.0.996__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.895/code_graph_rag.egg-info → code_graph_rag-0.0.996}/PKG-INFO +10 -11
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/PYPI_README.md +7 -10
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/README.md +6 -9
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996/code_graph_rag.egg-info}/PKG-INFO +10 -11
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/code_graph_rag.egg-info/SOURCES.txt +24 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/code_graph_rag.egg-info/requires.txt +3 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/ast_cache.py +47 -28
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/cli.py +42 -3
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/cli_help.py +23 -2
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/config.py +100 -13
- code_graph_rag-0.0.996/codebase_rag/console_marks.py +59 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_cpp.py +8 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_csharp.py +7 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_dart.py +44 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_java.py +13 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_nodes.py +19 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_php.py +14 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_python.py +28 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_rust.py +8 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_scala.py +5 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/build.py +7 -1
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/cli.py +59 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/core.py +24 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/graph.py +306 -4
- code_graph_rag-0.0.996/codebase_rag/constants/health.py +100 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/mcp.py +54 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/security.py +214 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/trace.py +2 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/context_pruning.py +107 -16
- code_graph_rag-0.0.996/codebase_rag/cypher_queries.py +989 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/dead_code.py +64 -3
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/duplicates.py +4 -12
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/editing/__init__.py +18 -0
- code_graph_rag-0.0.996/codebase_rag/editing/contract.py +352 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/editing/imports.py +27 -5
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/editing/rename.py +480 -9
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/editing/transaction.py +17 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/embedder.py +5 -3
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/exceptions.py +29 -0
- code_graph_rag-0.0.996/codebase_rag/gloss.py +370 -0
- code_graph_rag-0.0.996/codebase_rag/gloss_anchor.py +228 -0
- code_graph_rag-0.0.996/codebase_rag/gloss_repair.py +439 -0
- code_graph_rag-0.0.996/codebase_rag/graph_dialects.py +243 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/graph_query.py +214 -9
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/graph_updater.py +1558 -109
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/language_spec.py +147 -19
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/logs.py +60 -13
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/main.py +247 -35
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/mcp/server.py +35 -6
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/mcp/tools.py +1283 -82
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/models.py +7 -0
- code_graph_rag-0.0.996/codebase_rag/parsers/anchor_hash.py +85 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/ast_grep_tier.py +42 -28
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/call_processor.py +339 -80
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/call_resolver.py +389 -28
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/class_ingest/identity.py +7 -9
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/class_ingest/method_override.py +2 -1
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/class_ingest/mixin.py +112 -18
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/class_ingest/parent_extraction.py +77 -65
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/cpp_frontend/frontend.py +5 -1
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/csharp/type_inference.py +288 -3
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/csharp/utils.py +230 -54
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/dart/utils.py +214 -13
- code_graph_rag-0.0.996/codebase_rag/parsers/definition_docstring.py +385 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/definition_processor.py +115 -10
- code_graph_rag-0.0.996/codebase_rag/parsers/enum_variants.py +177 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/factory.py +3 -0
- code_graph_rag-0.0.996/codebase_rag/parsers/field_nodes.py +1083 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/function_ingest.py +43 -29
- code_graph_rag-0.0.996/codebase_rag/parsers/go_frontend/gotypes/go.mod +12 -0
- code_graph_rag-0.0.996/codebase_rag/parsers/go_frontend/gotypes/go.sum +8 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/import_processor.py +36 -1
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java/utils.py +38 -4
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java/variable_analyzer.py +8 -4
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/js_ts/ingest.py +6 -4
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/js_ts/module_system.py +23 -4
- code_graph_rag-0.0.996/codebase_rag/parsers/module_docstring.py +672 -0
- code_graph_rag-0.0.996/codebase_rag/parsers/parameter_nodes.py +828 -0
- code_graph_rag-0.0.996/codebase_rag/parsers/py/ast_analyzer.py +1500 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/py/expression_analyzer.py +89 -1
- code_graph_rag-0.0.996/codebase_rag/parsers/py/type_inference.py +407 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/py/variable_analyzer.py +365 -13
- code_graph_rag-0.0.996/codebase_rag/parsers/python_source_roots.py +220 -0
- code_graph_rag-0.0.996/codebase_rag/parsers/structure_processor.py +273 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/type_facts.py +26 -4
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/type_inference.py +34 -3
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/utils.py +272 -11
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/prompts.py +91 -11
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/providers/base.py +21 -6
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/providers/litellm.py +2 -2
- code_graph_rag-0.0.996/codebase_rag/queries/highlights/c_sharp.scm +3 -0
- code_graph_rag-0.0.996/codebase_rag/queries/highlights/dart.scm +19 -0
- code_graph_rag-0.0.996/codebase_rag/queries/highlights/java.scm +17 -0
- code_graph_rag-0.0.996/codebase_rag/queries/highlights/javascript.scm +14 -0
- code_graph_rag-0.0.996/codebase_rag/queries/highlights/php.scm +11 -0
- code_graph_rag-0.0.996/codebase_rag/queries/highlights/python.scm +5 -0
- code_graph_rag-0.0.996/codebase_rag/queries/highlights/rust.scm +11 -0
- code_graph_rag-0.0.996/codebase_rag/queries/highlights/typescript.scm +17 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/readme_sections.py +37 -29
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/services/__init__.py +13 -1
- code_graph_rag-0.0.996/codebase_rag/services/cypher_guard.py +198 -0
- code_graph_rag-0.0.996/codebase_rag/services/gloss_cleanup.py +94 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/services/graph_service.py +167 -42
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/services/llm.py +61 -26
- code_graph_rag-0.0.996/codebase_rag/services/neo4j_driver.py +221 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/services/protobuf_service.py +20 -14
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/services/provenance.py +25 -14
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/structural_delta.py +381 -37
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/code_retrieval.py +12 -5
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/codebase_query.py +56 -7
- code_graph_rag-0.0.996/codebase_rag/tools/health_checker.py +389 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/semantic_search.py +18 -5
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/shell_command.py +114 -1
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/tool_descriptions.py +79 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/cpuprofile.py +8 -4
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/resolution.py +2 -5
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/types_defs.py +152 -9
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/utils/fqn_resolver.py +28 -12
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/utils/path_utils.py +65 -9
- code_graph_rag-0.0.996/codebase_rag/utils/qn_markers.py +77 -0
- code_graph_rag-0.0.996/codebase_rag/utils/token_utils.py +104 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/vector_store.py +64 -19
- code_graph_rag-0.0.996/codec/schema_pb2.py +93 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codec/schema_pb2.pyi +154 -14
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/pyproject.toml +8 -1
- code_graph_rag-0.0.895/codebase_rag/constants/health.py +0 -62
- code_graph_rag-0.0.895/codebase_rag/cypher_queries.py +0 -572
- code_graph_rag-0.0.895/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -10
- code_graph_rag-0.0.895/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -8
- code_graph_rag-0.0.895/codebase_rag/parsers/py/ast_analyzer.py +0 -575
- code_graph_rag-0.0.895/codebase_rag/parsers/py/type_inference.py +0 -116
- code_graph_rag-0.0.895/codebase_rag/parsers/python_source_roots.py +0 -147
- code_graph_rag-0.0.895/codebase_rag/parsers/structure_processor.py +0 -167
- code_graph_rag-0.0.895/codebase_rag/tools/health_checker.py +0 -258
- code_graph_rag-0.0.895/codebase_rag/utils/token_utils.py +0 -53
- code_graph_rag-0.0.895/codec/schema_pb2.py +0 -85
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/LICENSE +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/cgr/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/code_graph_rag.egg-info/dependency_links.txt +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/code_graph_rag.egg-info/entry_points.txt +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/code_graph_rag.egg-info/top_level.txt +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/capture.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/cgr_state.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_go.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_js.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_lua.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/ast_sql.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/deadcode_roots.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/deps.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/duplicates.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/fqn_specs.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/lang_tooling.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/languages.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/providers.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/stdlib_types.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/constants/structural.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/crash_correlation.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/decorators.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/docker-compose.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/editing/cli.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/editing/patcher.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/editor_links.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/flow_verdict.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/function_registry.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/graph_audit.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/graph_cli.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/graph_loader.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/mcp/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/mcp/client.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parser_fingerprint.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parser_loader.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/ast_fingerprint.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/build_lock.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/class_ingest/utils.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/contract_linking.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/contracts.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/cpp/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/cpp/type_inference.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/cpp/utils.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/csharp/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/dart/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/dart/type_inference.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/dependency_parser.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/dispatch_registry.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/document_tier.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/endpoint_routes.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/endpoints.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/export_detection.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/flat_module.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/flow_access/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/flow_access/constants.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/flow_access/processor.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/frontend_mode.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/frontends/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/frontends/cpp.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/frontends/csharp.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/frontends/go.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/frontends/java.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/frontends/protocol.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/frontends/python.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/frontends/registry.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/go/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/go/module_paths.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/go/type_inference.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/go/utils.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/base.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/cpp.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/java.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/js_ts.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/lua.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/php.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/protocol.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/python.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/registry.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/handlers/rust.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/io_access/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/io_access/constants.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/io_access/descriptor.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/io_access/extract.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/io_access/models.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/io_access/processor.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/io_access/registry.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java/method_resolver.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java/type_inference.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java/type_resolver.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java_generated.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/java_lombok.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/js_ts/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/js_ts/utils.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/lua/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/lua/type_inference.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/lua/utils.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/py/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/py/utils.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/rpc_exposure.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/rs/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/rs/type_inference.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/rs/utils.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/semantic_call_join.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/stdlib_extractor.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/parsers/string_call.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/path_filters.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/providers/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/schema_builder.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/schema_parse.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/schemas.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/services/anthropic_token_counter.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/services/filtering.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/services/graph_diff.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/services/resource_cleanup.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/services/usage_cost.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/sql_names.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/stack/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/stack/cli.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/stack/constants.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/stack/health.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/stack/manager.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/structural_check.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/taint.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tool_errors.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/ast_grep_service.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/directory_lister.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/duplicate_detection.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/file_editor.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/file_reader.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/file_writer.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/graph_rerank.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/language.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/research.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/structural_editor.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/structural_search.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/tools/web_search.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/cli.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/dispatch_site.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/ebpf_pprof.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/ingest.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/instrumented.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/pprof.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/pytest_plugin.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/records.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/rust_pprof.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/sourcemap.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/speedscope.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/tracer.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/trace/xdebug.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/unixcoder.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/utils/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/utils/dependencies.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/utils/rich_markdown.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/utils/source_extraction.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/workspaces/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/workspaces/cli.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/workspaces/constants.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/workspaces/models.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codebase_rag/workspaces/storage.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/codec/__init__.py +0 -0
- {code_graph_rag-0.0.895 → code_graph_rag-0.0.996}/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.996
|
|
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
|
|
@@ -52,6 +52,8 @@ Requires-Dist: ast-grep-py>=0.44.0; extra == "test"
|
|
|
52
52
|
Requires-Dist: pyyaml>=6.0; extra == "test"
|
|
53
53
|
Provides-Extra: cpp
|
|
54
54
|
Requires-Dist: libclang>=18.1.1; extra == "cpp"
|
|
55
|
+
Provides-Extra: neo4j
|
|
56
|
+
Requires-Dist: neo4j>=5.28.1; extra == "neo4j"
|
|
55
57
|
Provides-Extra: treesitter-full
|
|
56
58
|
Requires-Dist: tree-sitter-python>=0.23.6; extra == "treesitter-full"
|
|
57
59
|
Requires-Dist: tree-sitter-javascript>=0.23.1; extra == "treesitter-full"
|
|
@@ -83,7 +85,7 @@ Dynamic: license-file
|
|
|
83
85
|
|
|
84
86
|
# Code-Graph-RAG
|
|
85
87
|
|
|
86
|
-
Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
|
|
88
|
+
Code-Graph-RAG parses a multi-language codebase with Tree-sitter, sharpened by compiler-grade frontends and runtime traces where available, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
|
|
87
89
|
|
|
88
90
|
## What It Does
|
|
89
91
|
|
|
@@ -153,15 +155,12 @@ pip install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/c
|
|
|
153
155
|
- `cmake` (for building pymgclient)
|
|
154
156
|
- `ripgrep` (`rg`) (for shell command text searching)
|
|
155
157
|
|
|
156
|
-
The wheel is pure Python (`py3-none-any`), so
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
run `uv venv --python 3.12 --seed && source .venv/bin/activate` (uv downloads
|
|
163
|
-
3.12 automatically; `--seed` puts pip in the environment), or install CPython 3.12 yourself and use
|
|
164
|
-
`python3.12 -m pip install ...`.
|
|
158
|
+
The wheel is pure Python (`py3-none-any`), so it installs on any platform with
|
|
159
|
+
Python 3.12 or newer. Some distributions ship an older interpreter (Debian
|
|
160
|
+
Bookworm, and so Raspberry Pi OS Bookworm, ships 3.11), which also explains the
|
|
161
|
+
failed piwheels Bookworm build. On those systems, see the [installation
|
|
162
|
+
guide](https://github.com/vitali87/code-graph-rag/blob/main/docs/getting-started/installation.md#older-system-interpreters)
|
|
163
|
+
for the available interpreter-pinning alternatives.
|
|
165
164
|
|
|
166
165
|
## CLI Quick Start
|
|
167
166
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Code-Graph-RAG
|
|
2
2
|
|
|
3
|
-
Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
|
|
3
|
+
Code-Graph-RAG parses a multi-language codebase with Tree-sitter, sharpened by compiler-grade frontends and runtime traces where available, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
|
|
4
4
|
|
|
5
5
|
## What It Does
|
|
6
6
|
|
|
@@ -70,15 +70,12 @@ pip install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/c
|
|
|
70
70
|
- `cmake` (for building pymgclient)
|
|
71
71
|
- `ripgrep` (`rg`) (for shell command text searching)
|
|
72
72
|
|
|
73
|
-
The wheel is pure Python (`py3-none-any`), so
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
run `uv venv --python 3.12 --seed && source .venv/bin/activate` (uv downloads
|
|
80
|
-
3.12 automatically; `--seed` puts pip in the environment), or install CPython 3.12 yourself and use
|
|
81
|
-
`python3.12 -m pip install ...`.
|
|
73
|
+
The wheel is pure Python (`py3-none-any`), so it installs on any platform with
|
|
74
|
+
Python 3.12 or newer. Some distributions ship an older interpreter (Debian
|
|
75
|
+
Bookworm, and so Raspberry Pi OS Bookworm, ships 3.11), which also explains the
|
|
76
|
+
failed piwheels Bookworm build. On those systems, see the [installation
|
|
77
|
+
guide](https://github.com/vitali87/code-graph-rag/blob/main/docs/getting-started/installation.md#older-system-interpreters)
|
|
78
|
+
for the available interpreter-pinning alternatives.
|
|
82
79
|
|
|
83
80
|
## CLI Quick Start
|
|
84
81
|
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
|
|
43
43
|
# Code-Graph-RAG
|
|
44
44
|
|
|
45
|
-
Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
|
|
45
|
+
Code-Graph-RAG parses a multi-language codebase with Tree-sitter, sharpened by compiler-grade frontends and runtime traces where available, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
|
|
46
46
|
|
|
47
47
|
<p align="center">
|
|
48
48
|
<img src="./assets/demo.gif" alt="demo">
|
|
@@ -51,12 +51,9 @@ 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
|
-
- **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.
|
|
54
|
+
- **Code Generation**: Split Cypher response cleaning and AST-grep rule validation into smaller, more manageable helpers for improved clarity and maintainability.
|
|
55
|
+
- **Scripting Improvements**: Resolved an issue where closed pull request run associations were incorrectly reported as missing, and improved error reporting in scripts to avoid over-claiming failing checks.
|
|
56
|
+
- **Data Handling**: Enhanced the handling of CONTAINS_SECTION in the double's module subtree and refined snippet lookup to project the matched node's own path.
|
|
60
57
|
<!-- /SECTION:latest_news -->
|
|
61
58
|
|
|
62
59
|
See [NEWS.md](NEWS.md) for the full history.
|
|
@@ -77,7 +74,7 @@ Point Code-Graph-RAG at a repository and it reads every source file, extracts fu
|
|
|
77
74
|
|
|
78
75
|
The system has two components:
|
|
79
76
|
|
|
80
|
-
1. **Multi-language parser.** A Tree-sitter based parser reads the codebase and ingests functions, classes, methods, modules, and their relationships into Memgraph under a single language-agnostic schema.
|
|
77
|
+
1. **Multi-language parser.** A Tree-sitter based parser reads the codebase and ingests functions, classes, methods, modules, and their relationships into Memgraph under a single language-agnostic schema. Where a toolchain is available, compiler-grade frontends layer exact facts on top (libclang for C/C++, `go/types` for Go, and opt-in Roslyn, `javac` and Jedi for C#, Java and Python), and [dynamic tracing](docs/guide/dynamic-tracing.md) merges calls observed at runtime. Tree-sitter stays the backbone: a trace only sees code that ran, and a compiler frontend only covers what its toolchain can build.
|
|
81
78
|
2. **RAG system** (`codebase_rag/`). An interactive CLI that turns natural language into Cypher queries, retrieves matching code, and drives AI-powered editing and optimisation.
|
|
82
79
|
|
|
83
80
|
```
|
|
@@ -132,7 +129,7 @@ uv tool install "code-graph-rag[treesitter-full,semantic] @ git+https://github.c
|
|
|
132
129
|
You also need Python 3.12+, Docker (for Memgraph), `cmake`, and `ripgrep`. Full prerequisites, source installs, and environment setup are in the [Installation](docs/getting-started/installation.md) guide.
|
|
133
130
|
|
|
134
131
|
> [!NOTE]
|
|
135
|
-
> The wheel is pure Python (`py3-none-any`), so
|
|
132
|
+
> The wheel is pure Python (`py3-none-any`), so it installs on any platform with Python 3.12 or newer. Older system interpreters (Debian Bookworm ships 3.11) need the interpreter pinned explicitly; see [Installation](docs/getting-started/installation.md#older-system-interpreters) for the commands.
|
|
136
133
|
|
|
137
134
|
## Quick Start
|
|
138
135
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-graph-rag
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.996
|
|
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
|
|
@@ -52,6 +52,8 @@ Requires-Dist: ast-grep-py>=0.44.0; extra == "test"
|
|
|
52
52
|
Requires-Dist: pyyaml>=6.0; extra == "test"
|
|
53
53
|
Provides-Extra: cpp
|
|
54
54
|
Requires-Dist: libclang>=18.1.1; extra == "cpp"
|
|
55
|
+
Provides-Extra: neo4j
|
|
56
|
+
Requires-Dist: neo4j>=5.28.1; extra == "neo4j"
|
|
55
57
|
Provides-Extra: treesitter-full
|
|
56
58
|
Requires-Dist: tree-sitter-python>=0.23.6; extra == "treesitter-full"
|
|
57
59
|
Requires-Dist: tree-sitter-javascript>=0.23.1; extra == "treesitter-full"
|
|
@@ -83,7 +85,7 @@ Dynamic: license-file
|
|
|
83
85
|
|
|
84
86
|
# Code-Graph-RAG
|
|
85
87
|
|
|
86
|
-
Code-Graph-RAG parses a multi-language codebase with Tree-sitter, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
|
|
88
|
+
Code-Graph-RAG parses a multi-language codebase with Tree-sitter, sharpened by compiler-grade frontends and runtime traces where available, builds a knowledge graph of its structure in Memgraph, and lets you query, edit, and optimise that code in plain English. It works across a monorepo of mixed languages under one unified graph schema.
|
|
87
89
|
|
|
88
90
|
## What It Does
|
|
89
91
|
|
|
@@ -153,15 +155,12 @@ pip install "code-graph-rag[treesitter-full] @ git+https://github.com/vitali87/c
|
|
|
153
155
|
- `cmake` (for building pymgclient)
|
|
154
156
|
- `ripgrep` (`rg`) (for shell command text searching)
|
|
155
157
|
|
|
156
|
-
The wheel is pure Python (`py3-none-any`), so
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
run `uv venv --python 3.12 --seed && source .venv/bin/activate` (uv downloads
|
|
163
|
-
3.12 automatically; `--seed` puts pip in the environment), or install CPython 3.12 yourself and use
|
|
164
|
-
`python3.12 -m pip install ...`.
|
|
158
|
+
The wheel is pure Python (`py3-none-any`), so it installs on any platform with
|
|
159
|
+
Python 3.12 or newer. Some distributions ship an older interpreter (Debian
|
|
160
|
+
Bookworm, and so Raspberry Pi OS Bookworm, ships 3.11), which also explains the
|
|
161
|
+
failed piwheels Bookworm build. On those systems, see the [installation
|
|
162
|
+
guide](https://github.com/vitali87/code-graph-rag/blob/main/docs/getting-started/installation.md#older-system-interpreters)
|
|
163
|
+
for the available interpreter-pinning alternatives.
|
|
165
164
|
|
|
166
165
|
## CLI Quick Start
|
|
167
166
|
|
|
@@ -16,6 +16,7 @@ codebase_rag/cgr_state.py
|
|
|
16
16
|
codebase_rag/cli.py
|
|
17
17
|
codebase_rag/cli_help.py
|
|
18
18
|
codebase_rag/config.py
|
|
19
|
+
codebase_rag/console_marks.py
|
|
19
20
|
codebase_rag/context_pruning.py
|
|
20
21
|
codebase_rag/crash_correlation.py
|
|
21
22
|
codebase_rag/cypher_queries.py
|
|
@@ -28,8 +29,12 @@ codebase_rag/embedder.py
|
|
|
28
29
|
codebase_rag/exceptions.py
|
|
29
30
|
codebase_rag/flow_verdict.py
|
|
30
31
|
codebase_rag/function_registry.py
|
|
32
|
+
codebase_rag/gloss.py
|
|
33
|
+
codebase_rag/gloss_anchor.py
|
|
34
|
+
codebase_rag/gloss_repair.py
|
|
31
35
|
codebase_rag/graph_audit.py
|
|
32
36
|
codebase_rag/graph_cli.py
|
|
37
|
+
codebase_rag/graph_dialects.py
|
|
33
38
|
codebase_rag/graph_loader.py
|
|
34
39
|
codebase_rag/graph_query.py
|
|
35
40
|
codebase_rag/graph_updater.py
|
|
@@ -133,6 +138,7 @@ codebase_rag/constants/structural.py
|
|
|
133
138
|
codebase_rag/constants/trace.py
|
|
134
139
|
codebase_rag/editing/__init__.py
|
|
135
140
|
codebase_rag/editing/cli.py
|
|
141
|
+
codebase_rag/editing/contract.py
|
|
136
142
|
codebase_rag/editing/imports.py
|
|
137
143
|
codebase_rag/editing/patcher.py
|
|
138
144
|
codebase_rag/editing/rename.py
|
|
@@ -142,6 +148,7 @@ codebase_rag/mcp/client.py
|
|
|
142
148
|
codebase_rag/mcp/server.py
|
|
143
149
|
codebase_rag/mcp/tools.py
|
|
144
150
|
codebase_rag/parsers/__init__.py
|
|
151
|
+
codebase_rag/parsers/anchor_hash.py
|
|
145
152
|
codebase_rag/parsers/ast_fingerprint.py
|
|
146
153
|
codebase_rag/parsers/ast_grep_tier.py
|
|
147
154
|
codebase_rag/parsers/build_lock.py
|
|
@@ -149,6 +156,7 @@ codebase_rag/parsers/call_processor.py
|
|
|
149
156
|
codebase_rag/parsers/call_resolver.py
|
|
150
157
|
codebase_rag/parsers/contract_linking.py
|
|
151
158
|
codebase_rag/parsers/contracts.py
|
|
159
|
+
codebase_rag/parsers/definition_docstring.py
|
|
152
160
|
codebase_rag/parsers/definition_processor.py
|
|
153
161
|
codebase_rag/parsers/dependency_parser.py
|
|
154
162
|
codebase_rag/parsers/dispatch_registry.py
|
|
@@ -156,14 +164,18 @@ codebase_rag/parsers/document_tier.py
|
|
|
156
164
|
codebase_rag/parsers/endpoint_prefixes.py
|
|
157
165
|
codebase_rag/parsers/endpoint_routes.py
|
|
158
166
|
codebase_rag/parsers/endpoints.py
|
|
167
|
+
codebase_rag/parsers/enum_variants.py
|
|
159
168
|
codebase_rag/parsers/export_detection.py
|
|
160
169
|
codebase_rag/parsers/factory.py
|
|
170
|
+
codebase_rag/parsers/field_nodes.py
|
|
161
171
|
codebase_rag/parsers/flat_module.py
|
|
162
172
|
codebase_rag/parsers/frontend_mode.py
|
|
163
173
|
codebase_rag/parsers/function_ingest.py
|
|
164
174
|
codebase_rag/parsers/import_processor.py
|
|
165
175
|
codebase_rag/parsers/java_generated.py
|
|
166
176
|
codebase_rag/parsers/java_lombok.py
|
|
177
|
+
codebase_rag/parsers/module_docstring.py
|
|
178
|
+
codebase_rag/parsers/parameter_nodes.py
|
|
167
179
|
codebase_rag/parsers/python_source_roots.py
|
|
168
180
|
codebase_rag/parsers/rpc_exposure.py
|
|
169
181
|
codebase_rag/parsers/semantic_call_join.py
|
|
@@ -279,12 +291,23 @@ codebase_rag/parsers/rs/utils.py
|
|
|
279
291
|
codebase_rag/providers/__init__.py
|
|
280
292
|
codebase_rag/providers/base.py
|
|
281
293
|
codebase_rag/providers/litellm.py
|
|
294
|
+
codebase_rag/queries/highlights/c_sharp.scm
|
|
295
|
+
codebase_rag/queries/highlights/dart.scm
|
|
296
|
+
codebase_rag/queries/highlights/java.scm
|
|
297
|
+
codebase_rag/queries/highlights/javascript.scm
|
|
298
|
+
codebase_rag/queries/highlights/php.scm
|
|
299
|
+
codebase_rag/queries/highlights/python.scm
|
|
300
|
+
codebase_rag/queries/highlights/rust.scm
|
|
301
|
+
codebase_rag/queries/highlights/typescript.scm
|
|
282
302
|
codebase_rag/services/__init__.py
|
|
283
303
|
codebase_rag/services/anthropic_token_counter.py
|
|
304
|
+
codebase_rag/services/cypher_guard.py
|
|
284
305
|
codebase_rag/services/filtering.py
|
|
306
|
+
codebase_rag/services/gloss_cleanup.py
|
|
285
307
|
codebase_rag/services/graph_diff.py
|
|
286
308
|
codebase_rag/services/graph_service.py
|
|
287
309
|
codebase_rag/services/llm.py
|
|
310
|
+
codebase_rag/services/neo4j_driver.py
|
|
288
311
|
codebase_rag/services/protobuf_service.py
|
|
289
312
|
codebase_rag/services/provenance.py
|
|
290
313
|
codebase_rag/services/resource_cleanup.py
|
|
@@ -333,6 +356,7 @@ codebase_rag/utils/__init__.py
|
|
|
333
356
|
codebase_rag/utils/dependencies.py
|
|
334
357
|
codebase_rag/utils/fqn_resolver.py
|
|
335
358
|
codebase_rag/utils/path_utils.py
|
|
359
|
+
codebase_rag/utils/qn_markers.py
|
|
336
360
|
codebase_rag/utils/rich_markdown.py
|
|
337
361
|
codebase_rag/utils/source_extraction.py
|
|
338
362
|
codebase_rag/utils/token_utils.py
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# re-parses from disk via the loader so an eviction cannot lose an AST that
|
|
3
3
|
# type inference still needs (see load()).
|
|
4
4
|
|
|
5
|
-
import sys
|
|
6
5
|
from collections import OrderedDict
|
|
7
6
|
from collections.abc import Callable, ItemsView
|
|
8
7
|
from pathlib import Path
|
|
@@ -13,8 +12,24 @@ from . import constants as cs
|
|
|
13
12
|
from .config import settings
|
|
14
13
|
|
|
15
14
|
|
|
15
|
+
def _estimate_entry_bytes(value: tuple[Node, cs.SupportedLanguage]) -> int:
|
|
16
|
+
# The memory cap is measured in bytes of SOURCE the cached trees span, not
|
|
17
|
+
# the trees' true footprint: tree-sitter allocates nodes in C, invisible to
|
|
18
|
+
# sys.getsizeof (which reports ~56 bytes for any (Node, lang) tuple, so a
|
|
19
|
+
# cap summed from it never triggered). Tree size scales with source size,
|
|
20
|
+
# which makes this a stable proxy; the real heap cost is a multiple of it.
|
|
21
|
+
return value[0].end_byte
|
|
22
|
+
|
|
23
|
+
|
|
16
24
|
class BoundedASTCache:
|
|
17
|
-
__slots__ = (
|
|
25
|
+
__slots__ = (
|
|
26
|
+
"cache",
|
|
27
|
+
"entry_sizes",
|
|
28
|
+
"loader",
|
|
29
|
+
"max_entries",
|
|
30
|
+
"max_memory_bytes",
|
|
31
|
+
"total_bytes",
|
|
32
|
+
)
|
|
18
33
|
|
|
19
34
|
def __init__(
|
|
20
35
|
self,
|
|
@@ -24,6 +39,10 @@ class BoundedASTCache:
|
|
|
24
39
|
| None = None,
|
|
25
40
|
):
|
|
26
41
|
self.cache: OrderedDict[Path, tuple[Node, cs.SupportedLanguage]] = OrderedDict()
|
|
42
|
+
# Sizes are recorded at insert so eviction and the running total never
|
|
43
|
+
# rescan every entry: each insert stays O(1) plus the evictions it causes.
|
|
44
|
+
self.entry_sizes: dict[Path, int] = {}
|
|
45
|
+
self.total_bytes = 0
|
|
27
46
|
self.loader = loader
|
|
28
47
|
self.max_entries = (
|
|
29
48
|
max_entries if max_entries is not None else settings.CACHE_MAX_ENTRIES
|
|
@@ -47,11 +66,11 @@ class BoundedASTCache:
|
|
|
47
66
|
return entry
|
|
48
67
|
|
|
49
68
|
def __setitem__(self, key: Path, value: tuple[Node, cs.SupportedLanguage]) -> None:
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
69
|
+
self._remove(key)
|
|
70
|
+
size = _estimate_entry_bytes(value)
|
|
53
71
|
self.cache[key] = value
|
|
54
|
-
|
|
72
|
+
self.entry_sizes[key] = size
|
|
73
|
+
self.total_bytes += size
|
|
55
74
|
self._enforce_limits()
|
|
56
75
|
|
|
57
76
|
def __getitem__(self, key: Path) -> tuple[Node, cs.SupportedLanguage]:
|
|
@@ -60,8 +79,7 @@ class BoundedASTCache:
|
|
|
60
79
|
return value
|
|
61
80
|
|
|
62
81
|
def __delitem__(self, key: Path) -> None:
|
|
63
|
-
|
|
64
|
-
del self.cache[key]
|
|
82
|
+
self._remove(key)
|
|
65
83
|
|
|
66
84
|
def __contains__(self, key: Path) -> bool:
|
|
67
85
|
return key in self.cache
|
|
@@ -69,24 +87,25 @@ class BoundedASTCache:
|
|
|
69
87
|
def items(self) -> ItemsView[Path, tuple[Node, cs.SupportedLanguage]]:
|
|
70
88
|
return self.cache.items()
|
|
71
89
|
|
|
90
|
+
def clear(self) -> None:
|
|
91
|
+
self.cache.clear()
|
|
92
|
+
self.entry_sizes.clear()
|
|
93
|
+
self.total_bytes = 0
|
|
94
|
+
|
|
95
|
+
def _remove(self, key: Path) -> None:
|
|
96
|
+
if key in self.cache:
|
|
97
|
+
del self.cache[key]
|
|
98
|
+
self.total_bytes -= self.entry_sizes.pop(key)
|
|
99
|
+
|
|
100
|
+
def _evict_oldest(self) -> None:
|
|
101
|
+
key, _ = self.cache.popitem(last=False)
|
|
102
|
+
self.total_bytes -= self.entry_sizes.pop(key)
|
|
103
|
+
|
|
72
104
|
def _enforce_limits(self) -> None:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
)
|
|
80
|
-
for _ in range(entries_to_remove):
|
|
81
|
-
if self.cache:
|
|
82
|
-
self.cache.popitem(last=False)
|
|
83
|
-
|
|
84
|
-
def _should_evict_for_memory(self) -> bool:
|
|
85
|
-
try:
|
|
86
|
-
cache_size = sum(sys.getsizeof(v) for v in self.cache.values())
|
|
87
|
-
return cache_size > self.max_memory_bytes
|
|
88
|
-
except Exception:
|
|
89
|
-
return (
|
|
90
|
-
len(self.cache)
|
|
91
|
-
> self.max_entries * settings.CACHE_MEMORY_THRESHOLD_RATIO
|
|
92
|
-
)
|
|
105
|
+
# Evict LRU entries until both caps hold. The newest entry is kept even
|
|
106
|
+
# if it alone exceeds the memory cap: the caller just parsed it and is
|
|
107
|
+
# about to use it, and load() would only re-parse it on the next read.
|
|
108
|
+
while len(self.cache) > self.max_entries or (
|
|
109
|
+
self.total_bytes > self.max_memory_bytes and len(self.cache) > 1
|
|
110
|
+
):
|
|
111
|
+
self._evict_oldest()
|
|
@@ -27,6 +27,7 @@ from . import cypher_queries as cq
|
|
|
27
27
|
from . import logs as ls
|
|
28
28
|
from .capture import CaptureSelection, resolve_capture, split_spec
|
|
29
29
|
from .config import load_ignore_patterns, settings
|
|
30
|
+
from .console_marks import status_mark
|
|
30
31
|
from .editing.cli import cli as edits_cli
|
|
31
32
|
from .editor_links import (
|
|
32
33
|
EditorTemplateError,
|
|
@@ -953,6 +954,9 @@ def mcp_server(
|
|
|
953
954
|
),
|
|
954
955
|
host: str = typer.Option(None, help=ch.HELP_MCP_HTTP_HOST),
|
|
955
956
|
port: int = typer.Option(None, help=ch.HELP_MCP_HTTP_PORT),
|
|
957
|
+
workspace: str | None = typer.Option(
|
|
958
|
+
None, "--workspace", help=ch.HELP_MCP_WORKSPACE
|
|
959
|
+
),
|
|
956
960
|
) -> None:
|
|
957
961
|
try:
|
|
958
962
|
if transport == cs.MCPTransport.HTTP:
|
|
@@ -960,11 +964,13 @@ def mcp_server(
|
|
|
960
964
|
|
|
961
965
|
resolved_host = host or settings.MCP_HTTP_HOST
|
|
962
966
|
resolved_port = port or settings.MCP_HTTP_PORT
|
|
963
|
-
asyncio.run(
|
|
967
|
+
asyncio.run(
|
|
968
|
+
serve_http(host=resolved_host, port=resolved_port, workspace=workspace)
|
|
969
|
+
)
|
|
964
970
|
else:
|
|
965
971
|
from codebase_rag.mcp import serve_stdio
|
|
966
972
|
|
|
967
|
-
asyncio.run(serve_stdio())
|
|
973
|
+
asyncio.run(serve_stdio(workspace=workspace))
|
|
968
974
|
except KeyboardInterrupt:
|
|
969
975
|
app_context.console.print(style(cs.CLI_MSG_APP_TERMINATED, cs.Color.RED))
|
|
970
976
|
except ValueError as e:
|
|
@@ -1185,6 +1191,14 @@ def rename_command(
|
|
|
1185
1191
|
|
|
1186
1192
|
name, fetch_all, ingestor = _project_and_fetch(project, repo_path)
|
|
1187
1193
|
with ingestor: # type: ignore[attr-defined]
|
|
1194
|
+
parsers, queries = load_parsers()
|
|
1195
|
+
updater = GraphUpdater(
|
|
1196
|
+
ingestor=ingestor, # type: ignore[arg-type]
|
|
1197
|
+
repo_path=repo_path.resolve(),
|
|
1198
|
+
parsers=parsers,
|
|
1199
|
+
queries=queries,
|
|
1200
|
+
project_name=name,
|
|
1201
|
+
)
|
|
1188
1202
|
try:
|
|
1189
1203
|
report = rename(
|
|
1190
1204
|
repo_path.resolve(),
|
|
@@ -1194,6 +1208,7 @@ def rename_command(
|
|
|
1194
1208
|
new_name,
|
|
1195
1209
|
allow_heuristic=allow_heuristic,
|
|
1196
1210
|
dry_run=dry_run,
|
|
1211
|
+
reingest=updater.reingest,
|
|
1197
1212
|
)
|
|
1198
1213
|
except RenameRefused as refused:
|
|
1199
1214
|
typer.echo(str(refused), err=True)
|
|
@@ -1205,6 +1220,7 @@ def rename_command(
|
|
|
1205
1220
|
payload = dict(report._asdict())
|
|
1206
1221
|
payload[cs.KEY_SITES] = sites_for(report.sites)
|
|
1207
1222
|
payload[cs.KEY_AMBIGUOUS] = sites_for(report.ambiguous)
|
|
1223
|
+
payload["verdict"] = report.verdict._asdict() if report.verdict else None
|
|
1208
1224
|
typer.echo(json.dumps(payload, indent=cs.MCP_JSON_INDENT, sort_keys=True))
|
|
1209
1225
|
if not report.applied and not dry_run:
|
|
1210
1226
|
raise typer.Exit(code=1)
|
|
@@ -1306,8 +1322,9 @@ def doctor() -> None:
|
|
|
1306
1322
|
table = Table(show_header=False, box=None, padding=(0, 2))
|
|
1307
1323
|
table.add_column(style="cyan", no_wrap=False)
|
|
1308
1324
|
|
|
1325
|
+
encoding = app_context.console.encoding
|
|
1309
1326
|
for result in results:
|
|
1310
|
-
status =
|
|
1327
|
+
status = status_mark(result.passed, encoding)
|
|
1311
1328
|
status_color = cs.Color.GREEN if result.passed else cs.Color.RED
|
|
1312
1329
|
status_text = style(status, status_color, cs.StyleModifier.NONE)
|
|
1313
1330
|
|
|
@@ -1435,6 +1452,7 @@ def _dead_code_config(
|
|
|
1435
1452
|
entry_points: list[str],
|
|
1436
1453
|
decorator_roots: list[str],
|
|
1437
1454
|
min_resolution: cs.EdgeResolution | None = None,
|
|
1455
|
+
endpoint_roots: bool = True,
|
|
1438
1456
|
) -> DeadCodeConfig:
|
|
1439
1457
|
# test_patterns is always set: included tests become roots; excluded, it
|
|
1440
1458
|
# filters test modules out of module-load roots so test-only code stays dead.
|
|
@@ -1448,6 +1466,7 @@ def _dead_code_config(
|
|
|
1448
1466
|
entry_points=tuple(entry_points),
|
|
1449
1467
|
test_patterns=tuple(cs.TEST_PATH_PATTERNS),
|
|
1450
1468
|
min_resolution=str(min_resolution) if min_resolution is not None else None,
|
|
1469
|
+
endpoint_roots=endpoint_roots,
|
|
1451
1470
|
)
|
|
1452
1471
|
|
|
1453
1472
|
|
|
@@ -1558,6 +1577,18 @@ def _emit_dead_code(
|
|
|
1558
1577
|
app_context.console.print(style(notice, cs.Color.YELLOW))
|
|
1559
1578
|
|
|
1560
1579
|
|
|
1580
|
+
def _notice_single_project_endpoint_roots(show_progress: bool) -> None:
|
|
1581
|
+
"""Endpoint roots off on a graph holding one project: every endpoint
|
|
1582
|
+
reads as uncalled. Stdout carries the JSON payload when that format is
|
|
1583
|
+
chosen (local review P1), so the notice goes to stderr then."""
|
|
1584
|
+
if show_progress:
|
|
1585
|
+
app_context.console.print(
|
|
1586
|
+
style(cs.CLI_DEADCODE_SINGLE_PROJECT_ENDPOINTS, cs.Color.YELLOW)
|
|
1587
|
+
)
|
|
1588
|
+
else:
|
|
1589
|
+
typer.echo(cs.CLI_DEADCODE_SINGLE_PROJECT_ENDPOINTS, err=True)
|
|
1590
|
+
|
|
1591
|
+
|
|
1561
1592
|
@app.command(
|
|
1562
1593
|
name=ch.CLICommandName.DEAD_CODE,
|
|
1563
1594
|
help=ch.CMD_DEAD_CODE,
|
|
@@ -1598,6 +1629,11 @@ def dead_code(
|
|
|
1598
1629
|
min_resolution: cs.EdgeResolution | None = typer.Option(
|
|
1599
1630
|
None, "--min-resolution", help=ch.HELP_DEADCODE_MIN_RESOLUTION
|
|
1600
1631
|
),
|
|
1632
|
+
endpoint_roots: bool = typer.Option(
|
|
1633
|
+
True,
|
|
1634
|
+
"--endpoint-roots/--no-endpoint-roots",
|
|
1635
|
+
help=ch.HELP_DEADCODE_ENDPOINT_ROOTS,
|
|
1636
|
+
),
|
|
1601
1637
|
) -> None:
|
|
1602
1638
|
from .dead_code import collect_dead_code_with_coverage
|
|
1603
1639
|
|
|
@@ -1624,8 +1660,11 @@ def dead_code(
|
|
|
1624
1660
|
entry_point,
|
|
1625
1661
|
decorator_root,
|
|
1626
1662
|
min_resolution,
|
|
1663
|
+
endpoint_roots,
|
|
1627
1664
|
),
|
|
1628
1665
|
)
|
|
1666
|
+
if not endpoint_roots and len(projects) <= 1:
|
|
1667
|
+
_notice_single_project_endpoint_roots(show_progress)
|
|
1629
1668
|
except Exception as e:
|
|
1630
1669
|
app_context.console.print(
|
|
1631
1670
|
style(cs.CLI_ERR_DEADCODE_FAILED.format(error=e), cs.Color.RED)
|
|
@@ -24,6 +24,8 @@ class CLICommandName(StrEnum):
|
|
|
24
24
|
STOP = "stop"
|
|
25
25
|
STATUS = "status"
|
|
26
26
|
HELP = "help"
|
|
27
|
+
VERIFY_INDEX = "verify-index"
|
|
28
|
+
DIFF_INDEX = "diff-index"
|
|
27
29
|
|
|
28
30
|
|
|
29
31
|
APP_DESCRIPTION = (
|
|
@@ -380,6 +382,13 @@ HELP_QUERY_OUTPUT_FORMAT = "Format --ask-agent output as table or json."
|
|
|
380
382
|
HELP_MCP_TRANSPORT = "Transport to serve: stdio or http."
|
|
381
383
|
HELP_MCP_HTTP_HOST = "HTTP bind host. Used only with --transport http."
|
|
382
384
|
HELP_MCP_HTTP_PORT = "HTTP bind port. Used only with --transport http."
|
|
385
|
+
HELP_MCP_WORKSPACE = (
|
|
386
|
+
"Serve the projects of workspace NAME: `list_projects` shows them, a "
|
|
387
|
+
"`project` argument, when given, must name one (omitted, the server "
|
|
388
|
+
"takes the project rooted at its directory, or the workspace's only "
|
|
389
|
+
"one), and source is read from each repo's own root. Also read from the "
|
|
390
|
+
"MCP_WORKSPACE environment variable."
|
|
391
|
+
)
|
|
383
392
|
|
|
384
393
|
HELP_DEADCODE_PROJECT_NAME = (
|
|
385
394
|
"Project to scan. If omitted, cgr uses the only indexed project."
|
|
@@ -405,6 +414,15 @@ HELP_DEADCODE_CLASSES = (
|
|
|
405
414
|
)
|
|
406
415
|
HELP_DEADCODE_FORMAT = "Report format: table or json."
|
|
407
416
|
HELP_DEADCODE_OUTPUT = "Write the report to this file instead of stdout."
|
|
417
|
+
HELP_DEADCODE_ENDPOINT_ROOTS = (
|
|
418
|
+
"Treat a decorator-routed handler (FastAPI, Flask) as reachable by its "
|
|
419
|
+
"route decorator alone (default). With --no-endpoint-roots, such a "
|
|
420
|
+
"handler is live only if some indexed call site resolves to its endpoint "
|
|
421
|
+
"(RESOLVES_TO into it, or a direct READS_FROM/WRITES_TO for RPC and "
|
|
422
|
+
"dispatch resources), so an endpoint nobody calls is reported. A handler "
|
|
423
|
+
"registered by a call (Go HandleFunc, Express app.get) stays live "
|
|
424
|
+
"through that call."
|
|
425
|
+
)
|
|
408
426
|
HELP_DEADCODE_MIN_RESOLUTION = (
|
|
409
427
|
"Ignore call edges below this confidence when deciding liveness: "
|
|
410
428
|
"heuristic < overload < exact < trace_confirmed (dynamic counts as confirmed)."
|
|
@@ -448,6 +466,9 @@ HELP_DELETE_PROJECT_REPO_PATH = (
|
|
|
448
466
|
)
|
|
449
467
|
HELP_COMMAND = "Command path to document, such as 'start' or 'daemon logs'."
|
|
450
468
|
|
|
469
|
+
CMD_VERIFY_INDEX = "Verify a protobuf index against its provenance manifest"
|
|
470
|
+
CMD_DIFF_INDEX = "Structural diff between two protobuf index snapshots"
|
|
471
|
+
|
|
451
472
|
CLI_COMMANDS: dict[CLICommandName, str] = {
|
|
452
473
|
CLICommandName.START: CMD_START,
|
|
453
474
|
CLICommandName.OPTIMIZE: CMD_OPTIMIZE,
|
|
@@ -471,14 +492,14 @@ CLI_COMMANDS: dict[CLICommandName, str] = {
|
|
|
471
492
|
CLICommandName.STATUS: CMD_STATUS,
|
|
472
493
|
CLICommandName.DOCTOR: CMD_DOCTOR,
|
|
473
494
|
CLICommandName.HELP: CMD_HELP,
|
|
495
|
+
CLICommandName.VERIFY_INDEX: CMD_VERIFY_INDEX,
|
|
496
|
+
CLICommandName.DIFF_INDEX: CMD_DIFF_INDEX,
|
|
474
497
|
}
|
|
475
|
-
CMD_VERIFY_INDEX = "Verify a protobuf index against its provenance manifest"
|
|
476
498
|
HELP_VERIFY_INDEX_DIR = "Directory holding the index artifacts and manifest.json."
|
|
477
499
|
HELP_TRUSTED_MANIFEST_SHA = (
|
|
478
500
|
"Externally trusted sha256 of manifest.json (e.g. from an attestation); "
|
|
479
501
|
"anchors verification beyond local self-consistency."
|
|
480
502
|
)
|
|
481
|
-
CMD_DIFF_INDEX = "Structural diff between two protobuf index snapshots"
|
|
482
503
|
HELP_DIFF_OLD = "Directory holding the OLD snapshot artifacts."
|
|
483
504
|
HELP_DIFF_NEW = "Directory holding the NEW snapshot artifacts."
|
|
484
505
|
HELP_DIFF_JSON_OUT = "Write the JSON delta to FILE instead of stdout."
|