code-graph-rag 0.0.845__tar.gz → 0.0.945__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {code_graph_rag-0.0.845/code_graph_rag.egg-info → code_graph_rag-0.0.945}/PKG-INFO +3 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/README.md +3 -6
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945/code_graph_rag.egg-info}/PKG-INFO +3 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/SOURCES.txt +18 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/requires.txt +3 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/cli.py +154 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/cli_help.py +59 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/config.py +45 -7
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_cpp.py +1 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_csharp.py +2 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_dart.py +5 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_go.py +4 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_java.py +3 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_lua.py +7 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_nodes.py +1 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_php.py +5 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_python.py +35 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_rust.py +1 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_scala.py +1 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/cli.py +92 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/core.py +57 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/duplicates.py +7 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/graph.py +365 -10
- code_graph_rag-0.0.945/codebase_rag/constants/health.py +87 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/lang_tooling.py +7 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/languages.py +37 -4
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/mcp.py +73 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/trace.py +2 -0
- code_graph_rag-0.0.945/codebase_rag/cypher_queries.py +821 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/dead_code.py +141 -84
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editing/__init__.py +18 -0
- code_graph_rag-0.0.945/codebase_rag/editing/contract.py +352 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editing/imports.py +109 -27
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editing/patcher.py +55 -5
- code_graph_rag-0.0.945/codebase_rag/editing/rename.py +1230 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editing/transaction.py +17 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/function_registry.py +19 -12
- code_graph_rag-0.0.945/codebase_rag/gloss.py +321 -0
- code_graph_rag-0.0.945/codebase_rag/gloss_repair.py +245 -0
- code_graph_rag-0.0.945/codebase_rag/graph_cli.py +176 -0
- code_graph_rag-0.0.945/codebase_rag/graph_dialects.py +243 -0
- code_graph_rag-0.0.945/codebase_rag/graph_query.py +541 -0
- code_graph_rag-0.0.945/codebase_rag/graph_updater.py +6179 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/language_spec.py +34 -18
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/logs.py +147 -13
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/main.py +157 -8
- code_graph_rag-0.0.945/codebase_rag/mcp/tools.py +2981 -0
- code_graph_rag-0.0.945/codebase_rag/parsers/anchor_hash.py +85 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/call_processor.py +617 -60
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/call_resolver.py +631 -39
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/identity.py +2 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/mixin.py +52 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/parent_extraction.py +45 -15
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/utils.py +20 -21
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/frontend.py +48 -32
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/qn.py +19 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp/type_inference.py +172 -45
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp/utils.py +64 -38
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/dart/utils.py +10 -9
- code_graph_rag-0.0.945/codebase_rag/parsers/definition_docstring.py +385 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/definition_processor.py +201 -8
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/dependency_parser.py +34 -22
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/endpoint_prefixes.py +39 -1
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/factory.py +35 -0
- code_graph_rag-0.0.945/codebase_rag/parsers/field_nodes.py +1083 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/function_ingest.py +69 -6
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/type_inference.py +20 -16
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/js_ts.py +4 -3
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/import_processor.py +353 -88
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/type_inference.py +0 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/type_resolver.py +0 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/utils.py +0 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/variable_analyzer.py +6 -10
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/ingest.py +13 -4
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/module_system.py +23 -4
- code_graph_rag-0.0.945/codebase_rag/parsers/lua/utils.py +212 -0
- code_graph_rag-0.0.945/codebase_rag/parsers/module_docstring.py +672 -0
- code_graph_rag-0.0.945/codebase_rag/parsers/parameter_nodes.py +262 -0
- code_graph_rag-0.0.945/codebase_rag/parsers/py/ast_analyzer.py +1375 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/expression_analyzer.py +89 -1
- code_graph_rag-0.0.945/codebase_rag/parsers/py/type_inference.py +407 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/utils.py +58 -19
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/variable_analyzer.py +365 -13
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/python_source_roots.py +85 -53
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/stdlib_extractor.py +4 -1
- code_graph_rag-0.0.945/codebase_rag/parsers/structure_processor.py +273 -0
- code_graph_rag-0.0.945/codebase_rag/parsers/type_facts.py +423 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/type_inference.py +122 -4
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/utils.py +272 -15
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/prompts.py +74 -10
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/readme_sections.py +36 -26
- code_graph_rag-0.0.945/codebase_rag/services/gloss_cleanup.py +94 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/graph_service.py +131 -42
- code_graph_rag-0.0.945/codebase_rag/services/neo4j_driver.py +190 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/protobuf_service.py +19 -14
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/provenance.py +25 -14
- code_graph_rag-0.0.945/codebase_rag/structural_check.py +221 -0
- code_graph_rag-0.0.945/codebase_rag/structural_delta.py +1149 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/codebase_query.py +49 -3
- code_graph_rag-0.0.945/codebase_rag/tools/health_checker.py +378 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/shell_command.py +63 -17
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/structural_editor.py +11 -2
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/tool_descriptions.py +163 -3
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/cpuprofile.py +8 -4
- code_graph_rag-0.0.945/codebase_rag/trace/dispatch_site.py +427 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/ingest.py +65 -3
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/speedscope.py +24 -11
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/types_defs.py +179 -5
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/path_utils.py +157 -8
- code_graph_rag-0.0.945/codebase_rag/utils/token_utils.py +104 -0
- code_graph_rag-0.0.945/codec/schema_pb2.py +91 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codec/schema_pb2.pyi +118 -8
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/pyproject.toml +9 -1
- code_graph_rag-0.0.845/codebase_rag/constants/health.py +0 -62
- code_graph_rag-0.0.845/codebase_rag/cypher_queries.py +0 -363
- code_graph_rag-0.0.845/codebase_rag/graph_updater.py +0 -3358
- code_graph_rag-0.0.845/codebase_rag/mcp/tools.py +0 -1077
- code_graph_rag-0.0.845/codebase_rag/parsers/lua/utils.py +0 -96
- code_graph_rag-0.0.845/codebase_rag/parsers/py/ast_analyzer.py +0 -575
- code_graph_rag-0.0.845/codebase_rag/parsers/py/type_inference.py +0 -116
- code_graph_rag-0.0.845/codebase_rag/parsers/structure_processor.py +0 -167
- code_graph_rag-0.0.845/codebase_rag/tools/health_checker.py +0 -258
- code_graph_rag-0.0.845/codebase_rag/utils/token_utils.py +0 -53
- code_graph_rag-0.0.845/codec/schema_pb2.py +0 -85
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/LICENSE +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/PYPI_README.md +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/cgr/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/dependency_links.txt +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/entry_points.txt +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/code_graph_rag.egg-info/top_level.txt +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/ast_cache.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/capture.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/cgr_state.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_js.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/ast_sql.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/build.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/deadcode_roots.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/deps.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/fqn_specs.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/providers.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/security.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/stdlib_types.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/constants/structural.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/context_pruning.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/crash_correlation.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/decorators.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/docker-compose.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/duplicates.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editing/cli.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/editor_links.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/embedder.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/exceptions.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/flow_verdict.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/graph_audit.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/graph_loader.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/mcp/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/mcp/client.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/mcp/server.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/models.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parser_fingerprint.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parser_loader.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_fingerprint.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/ast_grep_tier.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/build_lock.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/class_ingest/utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/contract_linking.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/contracts.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/dart/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/dart/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/dispatch_registry.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/document_tier.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/endpoint_routes.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/endpoints.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/export_detection.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/flat_module.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/flow_access/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/flow_access/constants.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/flow_access/processor.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontend_mode.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/cpp.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/csharp.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/go.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/java.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/protocol.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/python.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/frontends/registry.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/module_paths.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go/utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/base.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/cpp.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/java.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/lua.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/php.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/protocol.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/python.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/registry.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/handlers/rust.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/constants.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/descriptor.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/extract.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/models.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/processor.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/io_access/registry.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java/method_resolver.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_generated.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/java_lombok.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/js_ts/utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/lua/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/lua/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/rpc_exposure.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/rs/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/rs/type_inference.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/rs/utils.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/semantic_call_join.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/parsers/string_call.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/path_filters.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/providers/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/providers/base.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/providers/litellm.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/schema_builder.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/schema_parse.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/schemas.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/anthropic_token_counter.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/filtering.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/graph_diff.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/llm.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/resource_cleanup.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/services/usage_cost.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/sql_names.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/stack/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/stack/cli.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/stack/constants.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/stack/health.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/stack/manager.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/taint.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tool_errors.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/ast_grep_service.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/code_retrieval.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/directory_lister.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/duplicate_detection.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/file_editor.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/file_reader.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/file_writer.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/graph_rerank.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/language.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/research.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/semantic_search.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/structural_search.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/tools/web_search.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/cli.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/ebpf_pprof.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/instrumented.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/pprof.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/pytest_plugin.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/records.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/resolution.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/rust_pprof.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/sourcemap.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/tracer.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/trace/xdebug.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/unixcoder.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/dependencies.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/fqn_resolver.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/rich_markdown.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/utils/source_extraction.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/vector_store.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/workspaces/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/workspaces/cli.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/workspaces/constants.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/workspaces/models.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codebase_rag/workspaces/storage.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/codec/__init__.py +0 -0
- {code_graph_rag-0.0.845 → code_graph_rag-0.0.945}/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.945
|
|
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"
|
|
@@ -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
|
-
- **TypeScript Grading**: Grade TypeScript inheritance against the tsc oracle for improved accuracy.
|
|
58
|
-
- **Exclude Set Handling**: Record the exclusion set to ensure `--exclude` flags are correctly applied across runs.
|
|
59
|
-
- **MCP Indexing**: Honour `.cgrignore` and `.gitignore` in MCP index and update processes, matching the CLI.
|
|
54
|
+
- **UTF-8 Handling**: Improved handling of invalid UTF-8 bytes prevents file definitions from being dropped.
|
|
55
|
+
- **Neo4j Backend Support**: Added support for Neo4j as a graph backend through a pluggable dialect seam.
|
|
56
|
+
- **Gloss Node & Notes**: Introduced the Gloss node for agent-authored notes and enabled writing and reading Gloss notes via the MCP server.
|
|
60
57
|
<!-- /SECTION:latest_news -->
|
|
61
58
|
|
|
62
59
|
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.945
|
|
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"
|
|
@@ -28,8 +28,13 @@ codebase_rag/embedder.py
|
|
|
28
28
|
codebase_rag/exceptions.py
|
|
29
29
|
codebase_rag/flow_verdict.py
|
|
30
30
|
codebase_rag/function_registry.py
|
|
31
|
+
codebase_rag/gloss.py
|
|
32
|
+
codebase_rag/gloss_repair.py
|
|
31
33
|
codebase_rag/graph_audit.py
|
|
34
|
+
codebase_rag/graph_cli.py
|
|
35
|
+
codebase_rag/graph_dialects.py
|
|
32
36
|
codebase_rag/graph_loader.py
|
|
37
|
+
codebase_rag/graph_query.py
|
|
33
38
|
codebase_rag/graph_updater.py
|
|
34
39
|
codebase_rag/language_spec.py
|
|
35
40
|
codebase_rag/logs.py
|
|
@@ -44,6 +49,8 @@ codebase_rag/schema_builder.py
|
|
|
44
49
|
codebase_rag/schema_parse.py
|
|
45
50
|
codebase_rag/schemas.py
|
|
46
51
|
codebase_rag/sql_names.py
|
|
52
|
+
codebase_rag/structural_check.py
|
|
53
|
+
codebase_rag/structural_delta.py
|
|
47
54
|
codebase_rag/taint.py
|
|
48
55
|
codebase_rag/tool_errors.py
|
|
49
56
|
codebase_rag/types_defs.py
|
|
@@ -129,14 +136,17 @@ codebase_rag/constants/structural.py
|
|
|
129
136
|
codebase_rag/constants/trace.py
|
|
130
137
|
codebase_rag/editing/__init__.py
|
|
131
138
|
codebase_rag/editing/cli.py
|
|
139
|
+
codebase_rag/editing/contract.py
|
|
132
140
|
codebase_rag/editing/imports.py
|
|
133
141
|
codebase_rag/editing/patcher.py
|
|
142
|
+
codebase_rag/editing/rename.py
|
|
134
143
|
codebase_rag/editing/transaction.py
|
|
135
144
|
codebase_rag/mcp/__init__.py
|
|
136
145
|
codebase_rag/mcp/client.py
|
|
137
146
|
codebase_rag/mcp/server.py
|
|
138
147
|
codebase_rag/mcp/tools.py
|
|
139
148
|
codebase_rag/parsers/__init__.py
|
|
149
|
+
codebase_rag/parsers/anchor_hash.py
|
|
140
150
|
codebase_rag/parsers/ast_fingerprint.py
|
|
141
151
|
codebase_rag/parsers/ast_grep_tier.py
|
|
142
152
|
codebase_rag/parsers/build_lock.py
|
|
@@ -144,6 +154,7 @@ codebase_rag/parsers/call_processor.py
|
|
|
144
154
|
codebase_rag/parsers/call_resolver.py
|
|
145
155
|
codebase_rag/parsers/contract_linking.py
|
|
146
156
|
codebase_rag/parsers/contracts.py
|
|
157
|
+
codebase_rag/parsers/definition_docstring.py
|
|
147
158
|
codebase_rag/parsers/definition_processor.py
|
|
148
159
|
codebase_rag/parsers/dependency_parser.py
|
|
149
160
|
codebase_rag/parsers/dispatch_registry.py
|
|
@@ -153,18 +164,22 @@ codebase_rag/parsers/endpoint_routes.py
|
|
|
153
164
|
codebase_rag/parsers/endpoints.py
|
|
154
165
|
codebase_rag/parsers/export_detection.py
|
|
155
166
|
codebase_rag/parsers/factory.py
|
|
167
|
+
codebase_rag/parsers/field_nodes.py
|
|
156
168
|
codebase_rag/parsers/flat_module.py
|
|
157
169
|
codebase_rag/parsers/frontend_mode.py
|
|
158
170
|
codebase_rag/parsers/function_ingest.py
|
|
159
171
|
codebase_rag/parsers/import_processor.py
|
|
160
172
|
codebase_rag/parsers/java_generated.py
|
|
161
173
|
codebase_rag/parsers/java_lombok.py
|
|
174
|
+
codebase_rag/parsers/module_docstring.py
|
|
175
|
+
codebase_rag/parsers/parameter_nodes.py
|
|
162
176
|
codebase_rag/parsers/python_source_roots.py
|
|
163
177
|
codebase_rag/parsers/rpc_exposure.py
|
|
164
178
|
codebase_rag/parsers/semantic_call_join.py
|
|
165
179
|
codebase_rag/parsers/stdlib_extractor.py
|
|
166
180
|
codebase_rag/parsers/string_call.py
|
|
167
181
|
codebase_rag/parsers/structure_processor.py
|
|
182
|
+
codebase_rag/parsers/type_facts.py
|
|
168
183
|
codebase_rag/parsers/type_inference.py
|
|
169
184
|
codebase_rag/parsers/utils.py
|
|
170
185
|
codebase_rag/parsers/ast_grep_patterns/bash.yaml
|
|
@@ -276,9 +291,11 @@ codebase_rag/providers/litellm.py
|
|
|
276
291
|
codebase_rag/services/__init__.py
|
|
277
292
|
codebase_rag/services/anthropic_token_counter.py
|
|
278
293
|
codebase_rag/services/filtering.py
|
|
294
|
+
codebase_rag/services/gloss_cleanup.py
|
|
279
295
|
codebase_rag/services/graph_diff.py
|
|
280
296
|
codebase_rag/services/graph_service.py
|
|
281
297
|
codebase_rag/services/llm.py
|
|
298
|
+
codebase_rag/services/neo4j_driver.py
|
|
282
299
|
codebase_rag/services/protobuf_service.py
|
|
283
300
|
codebase_rag/services/provenance.py
|
|
284
301
|
codebase_rag/services/resource_cleanup.py
|
|
@@ -310,6 +327,7 @@ codebase_rag/tools/web_search.py
|
|
|
310
327
|
codebase_rag/trace/__init__.py
|
|
311
328
|
codebase_rag/trace/cli.py
|
|
312
329
|
codebase_rag/trace/cpuprofile.py
|
|
330
|
+
codebase_rag/trace/dispatch_site.py
|
|
313
331
|
codebase_rag/trace/ebpf_pprof.py
|
|
314
332
|
codebase_rag/trace/ingest.py
|
|
315
333
|
codebase_rag/trace/instrumented.py
|
|
@@ -36,6 +36,7 @@ from .editor_links import (
|
|
|
36
36
|
resolve_editor,
|
|
37
37
|
url_template_problem,
|
|
38
38
|
)
|
|
39
|
+
from .graph_cli import cli as graph_cli
|
|
39
40
|
from .graph_updater import GraphUpdater
|
|
40
41
|
from .main import (
|
|
41
42
|
_create_configuration_table,
|
|
@@ -1090,6 +1091,135 @@ def edits_command(ctx: typer.Context) -> None:
|
|
|
1090
1091
|
_run_delegated_group(edits_cli, ctx)
|
|
1091
1092
|
|
|
1092
1093
|
|
|
1094
|
+
@app.command(
|
|
1095
|
+
name=ch.CLICommandName.GRAPH,
|
|
1096
|
+
help=ch.CMD_GRAPH,
|
|
1097
|
+
short_help=ch.CMD_GRAPH,
|
|
1098
|
+
add_help_option=False,
|
|
1099
|
+
context_settings=_DELEGATED_GROUP_CONTEXT,
|
|
1100
|
+
rich_help_panel=ch.PANEL_GRAPH,
|
|
1101
|
+
)
|
|
1102
|
+
def graph_command(ctx: typer.Context) -> None:
|
|
1103
|
+
_run_delegated_group(graph_cli, ctx)
|
|
1104
|
+
|
|
1105
|
+
|
|
1106
|
+
@app.command(
|
|
1107
|
+
name=ch.CLICommandName.CHECK,
|
|
1108
|
+
help=ch.CMD_CHECK,
|
|
1109
|
+
short_help=ch.CMD_CHECK,
|
|
1110
|
+
epilog=ch.EXAMPLES_CHECK,
|
|
1111
|
+
rich_help_panel=ch.PANEL_USE,
|
|
1112
|
+
)
|
|
1113
|
+
def check_command(
|
|
1114
|
+
base: str = typer.Option("HEAD", "--base", help=ch.HELP_CHECK_BASE),
|
|
1115
|
+
repo_path: Path = typer.Option(
|
|
1116
|
+
Path(cs.MCP_DEFAULT_DIRECTORY),
|
|
1117
|
+
"--repo-path",
|
|
1118
|
+
exists=True,
|
|
1119
|
+
file_okay=False,
|
|
1120
|
+
help=ch.HELP_GRAPH_REPO_PATH,
|
|
1121
|
+
),
|
|
1122
|
+
project: str | None = typer.Option(None, "--project", help=ch.HELP_GRAPH_PROJECT),
|
|
1123
|
+
fail_on_found: bool = typer.Option(
|
|
1124
|
+
False, "--fail-on-found", help=ch.HELP_CHECK_FAIL_ON_FOUND
|
|
1125
|
+
),
|
|
1126
|
+
) -> None:
|
|
1127
|
+
from .structural_check import CheckError, indexed_scope, run_check
|
|
1128
|
+
from .structural_delta import has_findings
|
|
1129
|
+
from .utils.path_utils import derive_project_name
|
|
1130
|
+
|
|
1131
|
+
root = repo_path.resolve()
|
|
1132
|
+
name = project or derive_project_name(root)
|
|
1133
|
+
parsers, queries = load_parsers()
|
|
1134
|
+
with connect_memgraph(batch_size=settings.resolve_batch_size(None)) as ingestor:
|
|
1135
|
+
if name not in ingestor.list_projects():
|
|
1136
|
+
typer.echo(cs.CHECK_NOT_INDEXED.format(project=name), err=True)
|
|
1137
|
+
raise typer.Exit(code=1)
|
|
1138
|
+
try:
|
|
1139
|
+
exclude_paths, unignore_paths = indexed_scope(
|
|
1140
|
+
root, name, explicit=project is not None
|
|
1141
|
+
)
|
|
1142
|
+
delta = run_check(
|
|
1143
|
+
root,
|
|
1144
|
+
base,
|
|
1145
|
+
name,
|
|
1146
|
+
ingestor,
|
|
1147
|
+
parsers,
|
|
1148
|
+
queries,
|
|
1149
|
+
exclude_paths=exclude_paths,
|
|
1150
|
+
unignore_paths=unignore_paths,
|
|
1151
|
+
)
|
|
1152
|
+
except CheckError as error:
|
|
1153
|
+
typer.echo(str(error), err=True)
|
|
1154
|
+
raise typer.Exit(code=1) from error
|
|
1155
|
+
typer.echo(json.dumps(delta, indent=cs.MCP_JSON_INDENT))
|
|
1156
|
+
if fail_on_found and has_findings(delta):
|
|
1157
|
+
raise typer.Exit(code=1)
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
@app.command(
|
|
1161
|
+
name=ch.CLICommandName.RENAME,
|
|
1162
|
+
help=ch.CMD_RENAME,
|
|
1163
|
+
short_help=ch.CMD_RENAME,
|
|
1164
|
+
epilog=ch.EXAMPLES_RENAME,
|
|
1165
|
+
rich_help_panel=ch.PANEL_USE,
|
|
1166
|
+
)
|
|
1167
|
+
def rename_command(
|
|
1168
|
+
qualified_name: str = typer.Argument(..., help=ch.HELP_RENAME_QN),
|
|
1169
|
+
new_name: str = typer.Argument(..., help=ch.HELP_RENAME_NEW_NAME),
|
|
1170
|
+
repo_path: Path = typer.Option(
|
|
1171
|
+
Path(cs.MCP_DEFAULT_DIRECTORY),
|
|
1172
|
+
"--repo-path",
|
|
1173
|
+
exists=True,
|
|
1174
|
+
file_okay=False,
|
|
1175
|
+
help=ch.HELP_GRAPH_REPO_PATH,
|
|
1176
|
+
),
|
|
1177
|
+
project: str | None = typer.Option(None, "--project", help=ch.HELP_GRAPH_PROJECT),
|
|
1178
|
+
allow_heuristic: bool = typer.Option(
|
|
1179
|
+
False, "--allow-heuristic", help=ch.HELP_RENAME_ALLOW_HEURISTIC
|
|
1180
|
+
),
|
|
1181
|
+
dry_run: bool = typer.Option(False, "--dry-run", help=ch.HELP_RENAME_DRY_RUN),
|
|
1182
|
+
) -> None:
|
|
1183
|
+
from .editing.rename import RenameRefused, rename, sites_for
|
|
1184
|
+
from .graph_cli import _project_and_fetch
|
|
1185
|
+
|
|
1186
|
+
name, fetch_all, ingestor = _project_and_fetch(project, repo_path)
|
|
1187
|
+
with ingestor: # type: ignore[attr-defined]
|
|
1188
|
+
parsers, queries = load_parsers()
|
|
1189
|
+
updater = GraphUpdater(
|
|
1190
|
+
ingestor=ingestor, # type: ignore[arg-type]
|
|
1191
|
+
repo_path=repo_path.resolve(),
|
|
1192
|
+
parsers=parsers,
|
|
1193
|
+
queries=queries,
|
|
1194
|
+
project_name=name,
|
|
1195
|
+
)
|
|
1196
|
+
try:
|
|
1197
|
+
report = rename(
|
|
1198
|
+
repo_path.resolve(),
|
|
1199
|
+
fetch_all,
|
|
1200
|
+
name,
|
|
1201
|
+
qualified_name,
|
|
1202
|
+
new_name,
|
|
1203
|
+
allow_heuristic=allow_heuristic,
|
|
1204
|
+
dry_run=dry_run,
|
|
1205
|
+
reingest=updater.reingest,
|
|
1206
|
+
)
|
|
1207
|
+
except RenameRefused as refused:
|
|
1208
|
+
typer.echo(str(refused), err=True)
|
|
1209
|
+
for site in sites_for(refused.ambiguous):
|
|
1210
|
+
typer.echo(f" {site}", err=True)
|
|
1211
|
+
for entry in refused.unlocatable:
|
|
1212
|
+
typer.echo(f" {entry}", err=True)
|
|
1213
|
+
raise typer.Exit(code=1) from refused
|
|
1214
|
+
payload = dict(report._asdict())
|
|
1215
|
+
payload[cs.KEY_SITES] = sites_for(report.sites)
|
|
1216
|
+
payload[cs.KEY_AMBIGUOUS] = sites_for(report.ambiguous)
|
|
1217
|
+
payload["verdict"] = report.verdict._asdict() if report.verdict else None
|
|
1218
|
+
typer.echo(json.dumps(payload, indent=cs.MCP_JSON_INDENT, sort_keys=True))
|
|
1219
|
+
if not report.applied and not dry_run:
|
|
1220
|
+
raise typer.Exit(code=1)
|
|
1221
|
+
|
|
1222
|
+
|
|
1093
1223
|
@app.command(
|
|
1094
1224
|
name=ch.CLICommandName.HELP,
|
|
1095
1225
|
help=ch.CMD_HELP,
|
|
@@ -1171,6 +1301,18 @@ def status_command() -> None:
|
|
|
1171
1301
|
app_context.console.print(f" - {project}: last sync {ts}")
|
|
1172
1302
|
|
|
1173
1303
|
|
|
1304
|
+
def _status_mark(passed: bool, encoding: str) -> str:
|
|
1305
|
+
"""The pass/fail mark the console's stream can encode.
|
|
1306
|
+
|
|
1307
|
+
Rich substitutes ASCII box characters on a non-UTF stream but leaves
|
|
1308
|
+
text alone, so the glyph raised UnicodeEncodeError on a CP950 Windows
|
|
1309
|
+
terminal before a single check was shown (issue #1910).
|
|
1310
|
+
"""
|
|
1311
|
+
if encoding.lower().startswith(cs.ENCODING_UTF_PREFIX):
|
|
1312
|
+
return cs.HEALTH_MARK_PASS if passed else cs.HEALTH_MARK_FAIL
|
|
1313
|
+
return cs.HEALTH_MARK_PASS_ASCII if passed else cs.HEALTH_MARK_FAIL_ASCII
|
|
1314
|
+
|
|
1315
|
+
|
|
1174
1316
|
@app.command(
|
|
1175
1317
|
name=ch.CLICommandName.DOCTOR,
|
|
1176
1318
|
help=ch.CMD_DOCTOR,
|
|
@@ -1186,8 +1328,9 @@ def doctor() -> None:
|
|
|
1186
1328
|
table = Table(show_header=False, box=None, padding=(0, 2))
|
|
1187
1329
|
table.add_column(style="cyan", no_wrap=False)
|
|
1188
1330
|
|
|
1331
|
+
encoding = app_context.console.encoding
|
|
1189
1332
|
for result in results:
|
|
1190
|
-
status =
|
|
1333
|
+
status = _status_mark(result.passed, encoding)
|
|
1191
1334
|
status_color = cs.Color.GREEN if result.passed else cs.Color.RED
|
|
1192
1335
|
status_text = style(status, status_color, cs.StyleModifier.NONE)
|
|
1193
1336
|
|
|
@@ -1314,6 +1457,7 @@ def _dead_code_config(
|
|
|
1314
1457
|
include_classes: bool,
|
|
1315
1458
|
entry_points: list[str],
|
|
1316
1459
|
decorator_roots: list[str],
|
|
1460
|
+
min_resolution: cs.EdgeResolution | None = None,
|
|
1317
1461
|
) -> DeadCodeConfig:
|
|
1318
1462
|
# test_patterns is always set: included tests become roots; excluded, it
|
|
1319
1463
|
# filters test modules out of module-load roots so test-only code stays dead.
|
|
@@ -1326,6 +1470,7 @@ def _dead_code_config(
|
|
|
1326
1470
|
),
|
|
1327
1471
|
entry_points=tuple(entry_points),
|
|
1328
1472
|
test_patterns=tuple(cs.TEST_PATH_PATTERNS),
|
|
1473
|
+
min_resolution=str(min_resolution) if min_resolution is not None else None,
|
|
1329
1474
|
)
|
|
1330
1475
|
|
|
1331
1476
|
|
|
@@ -1473,6 +1618,9 @@ def dead_code(
|
|
|
1473
1618
|
fail_on_found: bool = typer.Option(
|
|
1474
1619
|
False, "--fail-on-found", help=ch.HELP_DEADCODE_FAIL_ON_FOUND
|
|
1475
1620
|
),
|
|
1621
|
+
min_resolution: cs.EdgeResolution | None = typer.Option(
|
|
1622
|
+
None, "--min-resolution", help=ch.HELP_DEADCODE_MIN_RESOLUTION
|
|
1623
|
+
),
|
|
1476
1624
|
) -> None:
|
|
1477
1625
|
from .dead_code import collect_dead_code_with_coverage
|
|
1478
1626
|
|
|
@@ -1494,7 +1642,11 @@ def dead_code(
|
|
|
1494
1642
|
ingestor,
|
|
1495
1643
|
resolved,
|
|
1496
1644
|
_dead_code_config(
|
|
1497
|
-
include_tests,
|
|
1645
|
+
include_tests,
|
|
1646
|
+
include_classes,
|
|
1647
|
+
entry_point,
|
|
1648
|
+
decorator_root,
|
|
1649
|
+
min_resolution,
|
|
1498
1650
|
),
|
|
1499
1651
|
)
|
|
1500
1652
|
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,
|
|
@@ -9,12 +9,13 @@ from typing import TypedDict, Unpack
|
|
|
9
9
|
|
|
10
10
|
from dotenv import load_dotenv
|
|
11
11
|
from loguru import logger
|
|
12
|
-
from pydantic import Field
|
|
12
|
+
from pydantic import Field, field_validator
|
|
13
13
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
14
14
|
|
|
15
15
|
from . import constants as cs
|
|
16
16
|
from . import exceptions as ex
|
|
17
17
|
from . import logs
|
|
18
|
+
from .graph_dialects import DIALECT_MEMGRAPH, available_dialects
|
|
18
19
|
from .types_defs import CgrignorePatterns, ModelConfigKwargs
|
|
19
20
|
|
|
20
21
|
# Load only the configuration file in the invocation directory. The default
|
|
@@ -103,6 +104,16 @@ def format_missing_api_key_errors(
|
|
|
103
104
|
|
|
104
105
|
LOCAL_PROVIDERS = frozenset({cs.Provider.OLLAMA})
|
|
105
106
|
|
|
107
|
+
# The provider-owned variable `validate_api_key` accepts INSTEAD of the role's
|
|
108
|
+
# own `<ROLE>_API_KEY`. Module level so `cgr doctor` can name the same variable
|
|
109
|
+
# the gate reads rather than restating the rule and drifting from it (#1910).
|
|
110
|
+
# A provider absent here is satisfied only by the role variable.
|
|
111
|
+
PROVIDER_ENV_KEYS = {
|
|
112
|
+
cs.Provider.ANTHROPIC: cs.ENV_ANTHROPIC_API_KEY,
|
|
113
|
+
cs.Provider.AZURE: cs.ENV_AZURE_API_KEY,
|
|
114
|
+
cs.Provider.MINIMAX: cs.ENV_MINIMAX_API_KEY,
|
|
115
|
+
}
|
|
116
|
+
|
|
106
117
|
|
|
107
118
|
@dataclass
|
|
108
119
|
class ModelConfig:
|
|
@@ -124,12 +135,7 @@ class ModelConfig:
|
|
|
124
135
|
|
|
125
136
|
def validate_api_key(self, role: str = cs.DEFAULT_MODEL_ROLE) -> None:
|
|
126
137
|
provider_lower = self.provider.lower()
|
|
127
|
-
|
|
128
|
-
cs.Provider.ANTHROPIC: cs.ENV_ANTHROPIC_API_KEY,
|
|
129
|
-
cs.Provider.AZURE: cs.ENV_AZURE_API_KEY,
|
|
130
|
-
cs.Provider.MINIMAX: cs.ENV_MINIMAX_API_KEY,
|
|
131
|
-
}
|
|
132
|
-
env_key = provider_env_keys.get(provider_lower)
|
|
138
|
+
env_key = PROVIDER_ENV_KEYS.get(provider_lower)
|
|
133
139
|
if (
|
|
134
140
|
provider_lower in LOCAL_PROVIDERS
|
|
135
141
|
or (
|
|
@@ -159,11 +165,24 @@ class AppConfig(BaseSettings):
|
|
|
159
165
|
case_sensitive=False,
|
|
160
166
|
)
|
|
161
167
|
|
|
168
|
+
# Which graph engine the ingestor talks to. Memgraph stays the default,
|
|
169
|
+
# so an existing install keeps its behaviour without touching config;
|
|
170
|
+
# see `graph_dialects` for what actually differs between engines.
|
|
171
|
+
GRAPH_BACKEND: str = DIALECT_MEMGRAPH
|
|
172
|
+
|
|
162
173
|
MEMGRAPH_HOST: str = "localhost"
|
|
163
174
|
MEMGRAPH_PORT: int = 7687
|
|
164
175
|
MEMGRAPH_HTTP_PORT: int = 7444
|
|
165
176
|
MEMGRAPH_USERNAME: str | None = None
|
|
166
177
|
MEMGRAPH_PASSWORD: str | None = None
|
|
178
|
+
|
|
179
|
+
# Neo4j connects by URI rather than host/port: the scheme carries the
|
|
180
|
+
# routing mode (`neo4j://` for a cluster, `bolt://` for one instance)
|
|
181
|
+
# and TLS (`+s`/`+ssc`), none of which a host/port pair can express.
|
|
182
|
+
NEO4J_URI: str = "bolt://localhost:7687"
|
|
183
|
+
NEO4J_USERNAME: str | None = None
|
|
184
|
+
NEO4J_PASSWORD: str | None = None
|
|
185
|
+
NEO4J_DATABASE: str = "neo4j"
|
|
167
186
|
LAB_PORT: int = 3000
|
|
168
187
|
MEMGRAPH_BATCH_SIZE: int = 1000
|
|
169
188
|
AGENT_RETRIES: int = 3
|
|
@@ -364,6 +383,25 @@ class AppConfig(BaseSettings):
|
|
|
364
383
|
QUERY_MEMORY_LIMIT_MB: int = Field(default=4096, gt=0)
|
|
365
384
|
QUERY_TIMEOUT_S: float = Field(default=60.0, gt=0)
|
|
366
385
|
|
|
386
|
+
@field_validator("GRAPH_BACKEND")
|
|
387
|
+
@classmethod
|
|
388
|
+
def _known_backend(cls, value: str) -> str:
|
|
389
|
+
"""Reject an unknown engine name at startup.
|
|
390
|
+
|
|
391
|
+
Defaulting an unrecognised value to Memgraph would send Memgraph
|
|
392
|
+
DDL to whatever server is actually configured, and
|
|
393
|
+
`MemgraphIngestor.ensure_constraints` swallows DDL failures -- so
|
|
394
|
+
a typo would surface much later as a graph built with no
|
|
395
|
+
constraints rather than as a startup error.
|
|
396
|
+
"""
|
|
397
|
+
normalised = value.strip().lower()
|
|
398
|
+
if normalised not in available_dialects():
|
|
399
|
+
raise ValueError(
|
|
400
|
+
f"GRAPH_BACKEND must be one of {', '.join(available_dialects())}; "
|
|
401
|
+
f"got {value!r}"
|
|
402
|
+
)
|
|
403
|
+
return normalised
|
|
404
|
+
|
|
367
405
|
OLLAMA_HEALTH_TIMEOUT: float = 5.0
|
|
368
406
|
LITELLM_HEALTH_TIMEOUT: float = 5.0
|
|
369
407
|
|
|
@@ -51,7 +51,6 @@ class CppNodeType(StrEnum):
|
|
|
51
51
|
TYPE_DESCRIPTOR = "type_descriptor"
|
|
52
52
|
|
|
53
53
|
|
|
54
|
-
CPP_MODULE_EXTENSIONS = (".ixx", ".cppm", ".ccm", ".mxx")
|
|
55
54
|
CPP_MODULE_PATH_MARKERS = frozenset({"interfaces", "modules"})
|
|
56
55
|
|
|
57
56
|
# C++ module declaration prefixes
|
|
@@ -82,6 +81,7 @@ CPP_KEYWORD_STRUCT = "struct"
|
|
|
82
81
|
# `static` storage on a declaration: internal linkage, TU-local symbol.
|
|
83
82
|
CPP_KEYWORD_STATIC = "static"
|
|
84
83
|
TS_CPP_STORAGE_CLASS_SPECIFIER = "storage_class_specifier"
|
|
84
|
+
TS_CPP_TYPE_QUALIFIER = "type_qualifier"
|
|
85
85
|
CPP_EXPORTED_CLASS_KEYWORDS = frozenset({CPP_KEYWORD_CLASS, CPP_KEYWORD_STRUCT})
|
|
86
86
|
|
|
87
87
|
# A C/C++ class/struct/union tag with no body is a forward declaration
|
|
@@ -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
|
|
@@ -81,6 +81,11 @@ DART_NESTED_SCOPE_NODE_TYPES = frozenset(
|
|
|
81
81
|
}
|
|
82
82
|
)
|
|
83
83
|
TS_DART_INITIALIZED_IDENTIFIER_LIST = "initialized_identifier_list"
|
|
84
|
+
TS_DART_STATIC_FINAL_DECLARATION_LIST = "static_final_declaration_list"
|
|
85
|
+
TS_DART_STATIC_FINAL_DECLARATION = "static_final_declaration"
|
|
86
|
+
TS_DART_CONST_BUILTIN = "const_builtin"
|
|
87
|
+
TS_DART_FINAL_BUILTIN = "final_builtin"
|
|
88
|
+
TS_DART_LATE = "late"
|
|
84
89
|
TS_DART_INITIALIZED_IDENTIFIER = "initialized_identifier"
|
|
85
90
|
TS_DART_INITIALIZED_VARIABLE_DEFINITION = "initialized_variable_definition"
|
|
86
91
|
TS_DART_FORMAL_PARAMETER = "formal_parameter"
|
|
@@ -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`).
|
|
@@ -21,6 +21,9 @@ TS_FORMAL_PARAMETER = "formal_parameter"
|
|
|
21
21
|
TS_SPREAD_PARAMETER = "spread_parameter"
|
|
22
22
|
TS_LOCAL_VARIABLE_DECLARATION = "local_variable_declaration"
|
|
23
23
|
TS_FIELD_DECLARATION = "field_declaration"
|
|
24
|
+
# An interface field. The grammar names it after what it implicitly is
|
|
25
|
+
# (`public static final`), so the keywords are usually absent from source.
|
|
26
|
+
TS_JAVA_CONSTANT_DECLARATION = "constant_declaration"
|
|
24
27
|
TS_ASSIGNMENT_EXPRESSION = "assignment_expression"
|
|
25
28
|
|
|
26
29
|
TS_OBJECT_CREATION_EXPRESSION = "object_creation_expression"
|
|
@@ -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"
|
|
@@ -32,6 +32,11 @@ TS_PHP_ATTRIBUTE_LIST = "attribute_list"
|
|
|
32
32
|
TS_PHP_ATTRIBUTE = "attribute"
|
|
33
33
|
TS_PHP_ATTRIBUTE_GROUP = "attribute_group"
|
|
34
34
|
TS_PHP_VISIBILITY_MODIFIER = "visibility_modifier"
|
|
35
|
+
TS_PHP_STATIC_MODIFIER = "static_modifier"
|
|
36
|
+
TS_PHP_PROPERTY_DECLARATION = "property_declaration"
|
|
37
|
+
TS_PHP_PROPERTY_ELEMENT = "property_element"
|
|
38
|
+
TS_PHP_DECLARATION_LIST = "declaration_list"
|
|
39
|
+
TS_PHP_VARIABLE_NAME = "variable_name"
|
|
35
40
|
TS_PHP_USE_DECLARATION = "use_declaration"
|
|
36
41
|
|
|
37
42
|
# FLOWS_TO lean-walk node types (issue #1174). PHP variables carry a `$` prefix
|