code-graph-rag 0.0.534__tar.gz → 0.0.589__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.534/code_graph_rag.egg-info → code_graph_rag-0.0.589}/PKG-INFO +6 -7
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/PYPI_README.md +4 -4
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/README.md +7 -1
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589/code_graph_rag.egg-info}/PKG-INFO +6 -7
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/code_graph_rag.egg-info/SOURCES.txt +2 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/code_graph_rag.egg-info/requires.txt +1 -2
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/cli.py +83 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/cli_help.py +8 -3
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_java.py +5 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_js.py +11 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_rust.py +130 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/cli.py +16 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/core.py +4 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/deadcode_roots.py +23 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/fqn_specs.py +12 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/graph.py +4 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/mcp.py +3 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/providers.py +2 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/dead_code.py +52 -9
- code_graph_rag-0.0.589/codebase_rag/docker-compose.yaml +31 -0
- code_graph_rag-0.0.589/codebase_rag/flow_verdict.py +120 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/function_registry.py +20 -1
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/graph_updater.py +85 -28
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/logs.py +21 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/main.py +21 -14
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/mcp/server.py +11 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/mcp/tools.py +44 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/call_processor.py +85 -18
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/call_resolver.py +229 -49
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/class_ingest/method_override.py +77 -17
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/class_ingest/mixin.py +302 -13
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/cpp_frontend/frontend.py +19 -2
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/cpp_frontend/qn.py +46 -12
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/csharp/utils.py +16 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/definition_processor.py +49 -2
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/factory.py +9 -1
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/function_ingest.py +95 -12
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/import_processor.py +1123 -88
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/io_access/__init__.py +2 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/io_access/registry.py +6 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/js_ts/ingest.py +5 -3
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/js_ts/utils.py +13 -6
- code_graph_rag-0.0.589/codebase_rag/parsers/rs/type_inference.py +828 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/rs/utils.py +255 -17
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/type_inference.py +183 -9
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/utils.py +11 -3
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/providers/base.py +7 -4
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/readme_sections.py +4 -2
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/stack/constants.py +11 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/stack/manager.py +77 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tool_errors.py +8 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/tool_descriptions.py +25 -0
- code_graph_rag-0.0.589/codebase_rag/tools/web_search.py +288 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/types_defs.py +65 -3
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/utils/dependencies.py +29 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/utils/path_utils.py +41 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codec/schema_pb2.py +26 -26
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codec/schema_pb2.pyi +4 -2
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/pyproject.toml +2 -8
- code_graph_rag-0.0.534/codebase_rag/docker-compose.yaml +0 -27
- code_graph_rag-0.0.534/codebase_rag/parsers/rs/type_inference.py +0 -329
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/LICENSE +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/cgr/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/code_graph_rag.egg-info/dependency_links.txt +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/code_graph_rag.egg-info/entry_points.txt +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/code_graph_rag.egg-info/top_level.txt +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/ast_cache.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/capture.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/cgr_state.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/config.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_cpp.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_csharp.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_dart.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_go.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_lua.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_nodes.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_php.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_python.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/ast_scala.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/build.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/deps.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/health.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/lang_tooling.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/languages.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/security.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/stdlib_types.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/constants/structural.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/cypher_queries.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/decorators.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/embedder.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/exceptions.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/graph_audit.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/graph_loader.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/language_spec.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/mcp/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/mcp/client.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/models.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parser_fingerprint.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parser_loader.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/ast_grep_tier.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/class_ingest/identity.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/class_ingest/parent_extraction.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/class_ingest/utils.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/contract_linking.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/contracts.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/cpp/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/cpp/type_inference.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/cpp/utils.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/csharp/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/csharp/type_inference.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/dart/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/dart/type_inference.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/dart/utils.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/dependency_parser.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/dispatch_registry.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/endpoint_routes.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/endpoints.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/export_detection.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/flow_access/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/flow_access/constants.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/flow_access/processor.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/go/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/go/module_paths.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/go/type_inference.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/go/utils.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/base.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/cpp.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/java.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/js_ts.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/lua.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/php.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/protocol.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/python.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/registry.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/handlers/rust.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/io_access/constants.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/io_access/descriptor.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/io_access/extract.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/io_access/models.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/io_access/processor.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/java/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/java/method_resolver.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/java/type_inference.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/java/type_resolver.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/java/utils.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/java/variable_analyzer.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/js_ts/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/js_ts/module_system.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/lua/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/lua/type_inference.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/lua/utils.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/py/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/py/type_inference.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/py/utils.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/python_source_roots.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/rpc_exposure.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/rs/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/stdlib_extractor.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/parsers/structure_processor.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/path_filters.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/prompts.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/providers/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/providers/litellm.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/schema_builder.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/schemas.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/services/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/services/anthropic_token_counter.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/services/filtering.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/services/graph_service.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/services/llm.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/services/protobuf_service.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/services/resource_cleanup.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/services/usage_cost.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/stack/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/stack/cli.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/stack/health.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/ast_grep_service.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/code_retrieval.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/codebase_query.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/directory_lister.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/file_editor.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/file_reader.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/file_writer.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/health_checker.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/language.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/semantic_search.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/shell_command.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/structural_editor.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/tools/structural_search.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/unixcoder.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/utils/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/utils/fqn_resolver.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/utils/rich_markdown.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/utils/source_extraction.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/utils/token_utils.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/vector_store.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/workspaces/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/workspaces/cli.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/workspaces/constants.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/workspaces/models.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codebase_rag/workspaces/storage.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/codec/__init__.py +0 -0
- {code_graph_rag-0.0.534 → code_graph_rag-0.0.589}/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.589
|
|
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
|
|
@@ -20,7 +20,7 @@ Description-Content-Type: text/markdown
|
|
|
20
20
|
License-File: LICENSE
|
|
21
21
|
Requires-Dist: loguru>=0.7.3
|
|
22
22
|
Requires-Dist: mcp>=1.28.1
|
|
23
|
-
Requires-Dist: pydantic-ai>=
|
|
23
|
+
Requires-Dist: pydantic-ai>=2.0.0
|
|
24
24
|
Requires-Dist: pydantic-settings>=2.12.0
|
|
25
25
|
Requires-Dist: pymgclient>=1.5.1
|
|
26
26
|
Requires-Dist: python-dotenv>=1.2.1
|
|
@@ -37,7 +37,6 @@ Requires-Dist: click>=8.3.1
|
|
|
37
37
|
Requires-Dist: protobuf>=6.33.5
|
|
38
38
|
Requires-Dist: defusedxml>=0.7.1
|
|
39
39
|
Requires-Dist: huggingface-hub[hf-xet]>=1.7.2
|
|
40
|
-
Requires-Dist: griffe<2,>=1.0
|
|
41
40
|
Requires-Dist: pathspec>=1.0.4
|
|
42
41
|
Provides-Extra: test
|
|
43
42
|
Requires-Dist: pytest>=8.4.1; extra == "test"
|
|
@@ -256,8 +255,8 @@ print(f"Embedding dimension: {len(embedding)}")
|
|
|
256
255
|
```python
|
|
257
256
|
from cgr import settings
|
|
258
257
|
|
|
259
|
-
settings.set_orchestrator("openai", "gpt-
|
|
260
|
-
settings.set_cypher("google", "gemini-
|
|
258
|
+
settings.set_orchestrator("openai", "gpt-5.6-terra", api_key="sk-...")
|
|
259
|
+
settings.set_cypher("google", "gemini-3.5-flash-lite", api_key="your-key")
|
|
261
260
|
```
|
|
262
261
|
|
|
263
262
|
## Environment Variables
|
|
@@ -269,10 +268,10 @@ Configure via `.env` or environment variables:
|
|
|
269
268
|
| `MEMGRAPH_HOST` | `localhost` | Memgraph hostname |
|
|
270
269
|
| `MEMGRAPH_PORT` | `7687` | Memgraph port |
|
|
271
270
|
| `ORCHESTRATOR_PROVIDER` | | Provider: `google`, `openai`, `anthropic`, `azure`, `ollama`, `minimax`, `litellm_proxy` |
|
|
272
|
-
| `ORCHESTRATOR_MODEL` | | Model ID (e.g. `gpt-
|
|
271
|
+
| `ORCHESTRATOR_MODEL` | | Model ID (e.g. `gpt-5.6-terra`, `gemini-3.6-flash`, `claude-sonnet-5`, `qwen2.5-coder`) |
|
|
273
272
|
| `ORCHESTRATOR_API_KEY` | | API key for the provider (not needed for `ollama`) |
|
|
274
273
|
| `CYPHER_PROVIDER` | | Provider for Cypher generation |
|
|
275
|
-
| `CYPHER_MODEL` | | Model ID for Cypher generation (e.g. `
|
|
274
|
+
| `CYPHER_MODEL` | | Model ID for Cypher generation (e.g. `qwen2.5-coder`, `gpt-5.6-luna`, `gemini-3.5-flash-lite`) |
|
|
276
275
|
| `CYPHER_API_KEY` | | API key for Cypher provider (not needed for `ollama`) |
|
|
277
276
|
| `TARGET_REPO_PATH` | `.` | Default repository path |
|
|
278
277
|
|
|
@@ -180,8 +180,8 @@ print(f"Embedding dimension: {len(embedding)}")
|
|
|
180
180
|
```python
|
|
181
181
|
from cgr import settings
|
|
182
182
|
|
|
183
|
-
settings.set_orchestrator("openai", "gpt-
|
|
184
|
-
settings.set_cypher("google", "gemini-
|
|
183
|
+
settings.set_orchestrator("openai", "gpt-5.6-terra", api_key="sk-...")
|
|
184
|
+
settings.set_cypher("google", "gemini-3.5-flash-lite", api_key="your-key")
|
|
185
185
|
```
|
|
186
186
|
|
|
187
187
|
## Environment Variables
|
|
@@ -193,10 +193,10 @@ Configure via `.env` or environment variables:
|
|
|
193
193
|
| `MEMGRAPH_HOST` | `localhost` | Memgraph hostname |
|
|
194
194
|
| `MEMGRAPH_PORT` | `7687` | Memgraph port |
|
|
195
195
|
| `ORCHESTRATOR_PROVIDER` | | Provider: `google`, `openai`, `anthropic`, `azure`, `ollama`, `minimax`, `litellm_proxy` |
|
|
196
|
-
| `ORCHESTRATOR_MODEL` | | Model ID (e.g. `gpt-
|
|
196
|
+
| `ORCHESTRATOR_MODEL` | | Model ID (e.g. `gpt-5.6-terra`, `gemini-3.6-flash`, `claude-sonnet-5`, `qwen2.5-coder`) |
|
|
197
197
|
| `ORCHESTRATOR_API_KEY` | | API key for the provider (not needed for `ollama`) |
|
|
198
198
|
| `CYPHER_PROVIDER` | | Provider for Cypher generation |
|
|
199
|
-
| `CYPHER_MODEL` | | Model ID for Cypher generation (e.g. `
|
|
199
|
+
| `CYPHER_MODEL` | | Model ID for Cypher generation (e.g. `qwen2.5-coder`, `gpt-5.6-luna`, `gemini-3.5-flash-lite`) |
|
|
200
200
|
| `CYPHER_API_KEY` | | API key for Cypher provider (not needed for `ollama`) |
|
|
201
201
|
| `TARGET_REPO_PATH` | `.` | Default repository path |
|
|
202
202
|
|
|
@@ -129,10 +129,16 @@ You also need Docker (for Memgraph), `cmake`, and `ripgrep`. Full prerequisites,
|
|
|
129
129
|
cgr daemon up
|
|
130
130
|
|
|
131
131
|
# Parse a repository into the graph, then query it
|
|
132
|
-
cgr start --repo-path /path/to/repo --update-graph
|
|
132
|
+
cgr start --repo-path /path/to/repo --update-graph
|
|
133
133
|
cgr start --repo-path /path/to/repo
|
|
134
134
|
```
|
|
135
135
|
|
|
136
|
+
Repeat the first command for each repository you want indexed; the graph is
|
|
137
|
+
shared, and syncing one project leaves the others alone. To start over from an
|
|
138
|
+
empty graph, add `--clean` — it deletes **every** project in the shared graph,
|
|
139
|
+
not just this one, and asks for confirmation first when other
|
|
140
|
+
projects would be destroyed.
|
|
141
|
+
|
|
136
142
|
The [Quick Start](docs/getting-started/quickstart.md) guide walks through parsing, querying, and exporting in five minutes.
|
|
137
143
|
|
|
138
144
|
## MCP Server
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-graph-rag
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.589
|
|
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
|
|
@@ -20,7 +20,7 @@ Description-Content-Type: text/markdown
|
|
|
20
20
|
License-File: LICENSE
|
|
21
21
|
Requires-Dist: loguru>=0.7.3
|
|
22
22
|
Requires-Dist: mcp>=1.28.1
|
|
23
|
-
Requires-Dist: pydantic-ai>=
|
|
23
|
+
Requires-Dist: pydantic-ai>=2.0.0
|
|
24
24
|
Requires-Dist: pydantic-settings>=2.12.0
|
|
25
25
|
Requires-Dist: pymgclient>=1.5.1
|
|
26
26
|
Requires-Dist: python-dotenv>=1.2.1
|
|
@@ -37,7 +37,6 @@ Requires-Dist: click>=8.3.1
|
|
|
37
37
|
Requires-Dist: protobuf>=6.33.5
|
|
38
38
|
Requires-Dist: defusedxml>=0.7.1
|
|
39
39
|
Requires-Dist: huggingface-hub[hf-xet]>=1.7.2
|
|
40
|
-
Requires-Dist: griffe<2,>=1.0
|
|
41
40
|
Requires-Dist: pathspec>=1.0.4
|
|
42
41
|
Provides-Extra: test
|
|
43
42
|
Requires-Dist: pytest>=8.4.1; extra == "test"
|
|
@@ -256,8 +255,8 @@ print(f"Embedding dimension: {len(embedding)}")
|
|
|
256
255
|
```python
|
|
257
256
|
from cgr import settings
|
|
258
257
|
|
|
259
|
-
settings.set_orchestrator("openai", "gpt-
|
|
260
|
-
settings.set_cypher("google", "gemini-
|
|
258
|
+
settings.set_orchestrator("openai", "gpt-5.6-terra", api_key="sk-...")
|
|
259
|
+
settings.set_cypher("google", "gemini-3.5-flash-lite", api_key="your-key")
|
|
261
260
|
```
|
|
262
261
|
|
|
263
262
|
## Environment Variables
|
|
@@ -269,10 +268,10 @@ Configure via `.env` or environment variables:
|
|
|
269
268
|
| `MEMGRAPH_HOST` | `localhost` | Memgraph hostname |
|
|
270
269
|
| `MEMGRAPH_PORT` | `7687` | Memgraph port |
|
|
271
270
|
| `ORCHESTRATOR_PROVIDER` | | Provider: `google`, `openai`, `anthropic`, `azure`, `ollama`, `minimax`, `litellm_proxy` |
|
|
272
|
-
| `ORCHESTRATOR_MODEL` | | Model ID (e.g. `gpt-
|
|
271
|
+
| `ORCHESTRATOR_MODEL` | | Model ID (e.g. `gpt-5.6-terra`, `gemini-3.6-flash`, `claude-sonnet-5`, `qwen2.5-coder`) |
|
|
273
272
|
| `ORCHESTRATOR_API_KEY` | | API key for the provider (not needed for `ollama`) |
|
|
274
273
|
| `CYPHER_PROVIDER` | | Provider for Cypher generation |
|
|
275
|
-
| `CYPHER_MODEL` | | Model ID for Cypher generation (e.g. `
|
|
274
|
+
| `CYPHER_MODEL` | | Model ID for Cypher generation (e.g. `qwen2.5-coder`, `gpt-5.6-luna`, `gemini-3.5-flash-lite`) |
|
|
276
275
|
| `CYPHER_API_KEY` | | API key for Cypher provider (not needed for `ollama`) |
|
|
277
276
|
| `TARGET_REPO_PATH` | `.` | Default repository path |
|
|
278
277
|
|
|
@@ -22,6 +22,7 @@ codebase_rag/decorators.py
|
|
|
22
22
|
codebase_rag/docker-compose.yaml
|
|
23
23
|
codebase_rag/embedder.py
|
|
24
24
|
codebase_rag/exceptions.py
|
|
25
|
+
codebase_rag/flow_verdict.py
|
|
25
26
|
codebase_rag/function_registry.py
|
|
26
27
|
codebase_rag/graph_audit.py
|
|
27
28
|
codebase_rag/graph_loader.py
|
|
@@ -251,6 +252,7 @@ codebase_rag/tools/shell_command.py
|
|
|
251
252
|
codebase_rag/tools/structural_editor.py
|
|
252
253
|
codebase_rag/tools/structural_search.py
|
|
253
254
|
codebase_rag/tools/tool_descriptions.py
|
|
255
|
+
codebase_rag/tools/web_search.py
|
|
254
256
|
codebase_rag/utils/__init__.py
|
|
255
257
|
codebase_rag/utils/dependencies.py
|
|
256
258
|
codebase_rag/utils/fqn_resolver.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
loguru>=0.7.3
|
|
2
2
|
mcp>=1.28.1
|
|
3
|
-
pydantic-ai>=
|
|
3
|
+
pydantic-ai>=2.0.0
|
|
4
4
|
pydantic-settings>=2.12.0
|
|
5
5
|
pymgclient>=1.5.1
|
|
6
6
|
python-dotenv>=1.2.1
|
|
@@ -17,7 +17,6 @@ click>=8.3.1
|
|
|
17
17
|
protobuf>=6.33.5
|
|
18
18
|
defusedxml>=0.7.1
|
|
19
19
|
huggingface-hub[hf-xet]>=1.7.2
|
|
20
|
-
griffe<2,>=1.0
|
|
21
20
|
pathspec>=1.0.4
|
|
22
21
|
|
|
23
22
|
[ast-grep]
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import json
|
|
5
|
+
import sys
|
|
5
6
|
import time
|
|
6
7
|
from collections.abc import Callable
|
|
7
8
|
from fnmatch import fnmatch
|
|
@@ -199,6 +200,78 @@ def _capture_selection(capture: list[str] | None) -> CaptureSelection:
|
|
|
199
200
|
return resolve_capture([*split_spec(settings.CGR_CAPTURE), *(capture or [])])
|
|
200
201
|
|
|
201
202
|
|
|
203
|
+
def _stdin_is_interactive() -> bool:
|
|
204
|
+
try:
|
|
205
|
+
return sys.stdin.isatty()
|
|
206
|
+
except (AttributeError, ValueError):
|
|
207
|
+
return False
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def _projects_in_graph(ingestor: MemgraphIngestor) -> list[str] | None:
|
|
211
|
+
"""Every project in the graph, or None when the graph cannot be read.
|
|
212
|
+
|
|
213
|
+
None is NOT an empty graph: treating a failed enumeration as "no other
|
|
214
|
+
projects" would skip the confirmation and wipe every project precisely
|
|
215
|
+
when we cannot say what would be lost.
|
|
216
|
+
"""
|
|
217
|
+
try:
|
|
218
|
+
return sorted(ingestor.list_projects())
|
|
219
|
+
except Exception as exc:
|
|
220
|
+
logger.warning(ls.MG_LIST_PROJECTS_FAILED.format(error=exc))
|
|
221
|
+
return None
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def _confirm_destructive_clean(
|
|
225
|
+
ingestor: MemgraphIngestor, project_name: str, assume_yes: bool
|
|
226
|
+
) -> None:
|
|
227
|
+
"""Abort unless the user accepts losing every other project in the graph."""
|
|
228
|
+
if assume_yes:
|
|
229
|
+
return
|
|
230
|
+
|
|
231
|
+
# `--clean` deletes the whole graph, so the prompt counts every project in
|
|
232
|
+
# it. Deriving that count from `others` would understate it by one whenever
|
|
233
|
+
# this project has not been synced yet and so is not in the graph.
|
|
234
|
+
projects = _projects_in_graph(ingestor)
|
|
235
|
+
if projects is None:
|
|
236
|
+
# Fail closed: an unreadable project list cannot show what the wipe
|
|
237
|
+
# would destroy, so it must not be read as an empty graph.
|
|
238
|
+
app_context.console.print(
|
|
239
|
+
style(cs.CLI_ERR_CLEAN_UNKNOWN_PROJECTS, cs.Color.RED)
|
|
240
|
+
)
|
|
241
|
+
raise typer.Exit(1)
|
|
242
|
+
|
|
243
|
+
others = [name for name in projects if name != project_name]
|
|
244
|
+
if not others:
|
|
245
|
+
return
|
|
246
|
+
|
|
247
|
+
app_context.console.print(
|
|
248
|
+
style(
|
|
249
|
+
cs.CLI_WARN_CLEAN_OTHER_PROJECTS.format(
|
|
250
|
+
project_name=project_name,
|
|
251
|
+
count=len(others),
|
|
252
|
+
projects=", ".join(others),
|
|
253
|
+
),
|
|
254
|
+
cs.Color.YELLOW,
|
|
255
|
+
)
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
if not _stdin_is_interactive():
|
|
259
|
+
app_context.console.print(
|
|
260
|
+
style(
|
|
261
|
+
cs.CLI_ERR_CLEAN_NEEDS_CONFIRMATION.format(project_name=project_name),
|
|
262
|
+
cs.Color.RED,
|
|
263
|
+
)
|
|
264
|
+
)
|
|
265
|
+
raise typer.Exit(1)
|
|
266
|
+
|
|
267
|
+
confirmed = typer.confirm(
|
|
268
|
+
cs.CLI_PROMPT_CLEAN_CONFIRM.format(count=len(projects)), default=False
|
|
269
|
+
)
|
|
270
|
+
if not confirmed:
|
|
271
|
+
app_context.console.print(style(cs.CLI_MSG_CLEAN_ABORTED, cs.Color.CYAN))
|
|
272
|
+
raise typer.Exit(1)
|
|
273
|
+
|
|
274
|
+
|
|
202
275
|
def _run_graph_sync(
|
|
203
276
|
repo: Path,
|
|
204
277
|
project_name: str,
|
|
@@ -209,6 +282,7 @@ def _run_graph_sync(
|
|
|
209
282
|
output: str | None = None,
|
|
210
283
|
capture: list[str] | None = None,
|
|
211
284
|
skip_embeddings: bool | None = None,
|
|
285
|
+
assume_yes: bool = False,
|
|
212
286
|
) -> None:
|
|
213
287
|
cgrignore = load_ignore_patterns(repo)
|
|
214
288
|
cli_excludes = frozenset(exclude) if exclude else frozenset()
|
|
@@ -222,6 +296,7 @@ def _run_graph_sync(
|
|
|
222
296
|
elapsed = time.monotonic()
|
|
223
297
|
with connect_memgraph(batch_size) as ingestor:
|
|
224
298
|
if clean:
|
|
299
|
+
_confirm_destructive_clean(ingestor, project_name, assume_yes)
|
|
225
300
|
_info(style(cs.CLI_MSG_CLEANING_DB, cs.Color.YELLOW))
|
|
226
301
|
ingestor.clean_database()
|
|
227
302
|
_delete_hash_cache(repo)
|
|
@@ -336,6 +411,12 @@ def start(
|
|
|
336
411
|
"--clean",
|
|
337
412
|
help=ch.HELP_CLEAN_DB,
|
|
338
413
|
),
|
|
414
|
+
yes: bool = typer.Option(
|
|
415
|
+
False,
|
|
416
|
+
"--yes",
|
|
417
|
+
"-y",
|
|
418
|
+
help=ch.HELP_ASSUME_YES,
|
|
419
|
+
),
|
|
339
420
|
output: str | None = typer.Option(
|
|
340
421
|
None,
|
|
341
422
|
"-o",
|
|
@@ -452,6 +533,7 @@ def start(
|
|
|
452
533
|
if clean and not update_graph:
|
|
453
534
|
repo_to_clean = Path(target_repo_path)
|
|
454
535
|
with connect_memgraph(effective_batch_size) as ingestor:
|
|
536
|
+
_confirm_destructive_clean(ingestor, resolved_project_name, yes)
|
|
455
537
|
_info(style(cs.CLI_MSG_CLEANING_DB, cs.Color.YELLOW))
|
|
456
538
|
ingestor.clean_database()
|
|
457
539
|
|
|
@@ -481,6 +563,7 @@ def start(
|
|
|
481
563
|
output=output,
|
|
482
564
|
capture=capture,
|
|
483
565
|
skip_embeddings=no_embeddings or None,
|
|
566
|
+
assume_yes=yes,
|
|
484
567
|
)
|
|
485
568
|
_info(style(cs.CLI_MSG_GRAPH_UPDATED, cs.Color.GREEN))
|
|
486
569
|
return
|
|
@@ -124,7 +124,7 @@ HELP_MEMGRAPH_HOST = "Memgraph host."
|
|
|
124
124
|
HELP_MEMGRAPH_PORT = "Memgraph port."
|
|
125
125
|
HELP_ORCHESTRATOR = (
|
|
126
126
|
"Model for the planning assistant, in provider:model form "
|
|
127
|
-
"(for example openai:gpt-
|
|
127
|
+
"(for example openai:gpt-5.6-terra or ollama:qwen2.5-coder)."
|
|
128
128
|
)
|
|
129
129
|
HELP_CYPHER_MODEL = "Model used to generate Cypher, in provider:model form."
|
|
130
130
|
HELP_NO_CONFIRM = "Skip edit confirmation prompts."
|
|
@@ -146,8 +146,13 @@ HELP_MAX_WAIT = (
|
|
|
146
146
|
|
|
147
147
|
HELP_UPDATE_GRAPH = "Parse the repository and sync its graph before continuing."
|
|
148
148
|
HELP_CLEAN_DB = (
|
|
149
|
-
"Delete every project from the shared graph and clear the selected
|
|
150
|
-
"sync cache. With --update-graph, rebuild after deletion."
|
|
149
|
+
"DESTRUCTIVE: Delete every project from the shared graph and clear the selected "
|
|
150
|
+
"repository's sync cache. With --update-graph, rebuild after deletion. Asks for "
|
|
151
|
+
"confirmation when other projects would be destroyed; use --yes to skip the prompt."
|
|
152
|
+
)
|
|
153
|
+
HELP_ASSUME_YES = (
|
|
154
|
+
"Answer yes to destructive confirmations, such as the one --clean asks before "
|
|
155
|
+
"deleting other projects from the shared graph."
|
|
151
156
|
)
|
|
152
157
|
HELP_OUTPUT_GRAPH = "Write the updated graph to PATH as JSON. Requires --update-graph."
|
|
153
158
|
HELP_OUTPUT_PATH = "Write the exported graph to PATH."
|
|
@@ -215,8 +215,19 @@ JS_SHORT_CIRCUIT_OPERATORS: frozenset[str] = frozenset({"||", "??", "&&"})
|
|
|
215
215
|
# (`[Symbol.iterator]`, `[Symbol.toStringTag]`) as the definition pass
|
|
216
216
|
# registers it; user symbol keys register without the `Symbol.` path.
|
|
217
217
|
JS_WELL_KNOWN_SYMBOL_NAME_PREFIX = "[Symbol."
|
|
218
|
+
JS_COMPUTED_NAME_PREFIX = "["
|
|
218
219
|
JS_COMPUTED_NAME_SUFFIX = "]"
|
|
219
220
|
JS_WELL_KNOWN_SYMBOL_BRACKET_PREFIX = "[Symbol["
|
|
221
|
+
JS_SYMBOL_FOR_PREFIX = "for("
|
|
222
|
+
JS_STRING_QUOTES = "'\""
|
|
223
|
+
# Registry symbols whose members RUNTIMES invoke themselves; an
|
|
224
|
+
# application-defined Symbol.for(...) key is reached only by visible code.
|
|
225
|
+
JS_RUNTIME_REGISTRY_SYMBOL_KEYS = frozenset(
|
|
226
|
+
{
|
|
227
|
+
"nodejs.util.inspect.custom",
|
|
228
|
+
"nodejs.rejection",
|
|
229
|
+
}
|
|
230
|
+
)
|
|
220
231
|
# `&&` alone among them cannot yield its LEFT operand as a function value.
|
|
221
232
|
JS_OPERATOR_LOGICAL_AND = "&&"
|
|
222
233
|
TS_JS_ELSE_CLAUSE = "else_clause"
|
|
@@ -4,6 +4,7 @@ from .ast_java import TS_GENERIC_TYPE
|
|
|
4
4
|
from .ast_nodes import TS_IDENTIFIER, TS_SCOPED_IDENTIFIER, TS_TYPE_IDENTIFIER
|
|
5
5
|
from .ast_scala import TS_GENERIC_FUNCTION
|
|
6
6
|
from .core import KEYWORD_SELF, KEYWORD_SUPER
|
|
7
|
+
from .graph import NodeLabel
|
|
7
8
|
|
|
8
9
|
TS_RS_SCOPED_TYPE_IDENTIFIER = "scoped_type_identifier"
|
|
9
10
|
TS_RS_PRIMITIVE_TYPE = "primitive_type"
|
|
@@ -26,6 +27,13 @@ TS_RS_IMPL_ITEM = "impl_item"
|
|
|
26
27
|
TS_RS_FUNCTION_SIGNATURE_ITEM = "function_signature_item"
|
|
27
28
|
TS_RS_CLOSURE_EXPRESSION = "closure_expression"
|
|
28
29
|
TS_RS_UNION_ITEM = "union_item"
|
|
30
|
+
TS_RS_TYPE_PARAMETERS = "type_parameters"
|
|
31
|
+
TS_RS_TYPE_PARAMETER = "type_parameter"
|
|
32
|
+
TS_RS_WHERE_CLAUSE = "where_clause"
|
|
33
|
+
TS_RS_WHERE_PREDICATE = "where_predicate"
|
|
34
|
+
# Items whose generic parameter lists and where clauses put trait bounds in
|
|
35
|
+
# scope for the calls beneath them.
|
|
36
|
+
RS_GENERIC_SCOPE_ITEMS = (TS_RS_FUNCTION_ITEM, TS_RS_IMPL_ITEM, TS_RS_TRAIT_ITEM)
|
|
29
37
|
TS_RS_USE_DECLARATION = "use_declaration"
|
|
30
38
|
TS_RS_EXTERN_CRATE_DECLARATION = "extern_crate_declaration"
|
|
31
39
|
TS_RS_CALL_EXPRESSION = "call_expression"
|
|
@@ -176,6 +184,12 @@ RS_USE_LIST_DELIMITERS = frozenset({"{", "}", ","})
|
|
|
176
184
|
RS_ENCODING_UTF8 = "utf8"
|
|
177
185
|
|
|
178
186
|
RS_WILDCARD_PREFIX = "*"
|
|
187
|
+
# Marks a `use path::{self}` entry, whose name the base path supplies rather
|
|
188
|
+
# than the source. Rust keeps types and values in separate namespaces while
|
|
189
|
+
# the import map holds one slot per name, so such a binding is WEAK: it never
|
|
190
|
+
# displaces a name another `use` in the same scope already claimed (#1054).
|
|
191
|
+
# No Rust identifier can contain the marker character.
|
|
192
|
+
RS_SELF_MODULE_PREFIX = "@"
|
|
179
193
|
|
|
180
194
|
RS_FIELD_ARGUMENT = "argument"
|
|
181
195
|
|
|
@@ -191,3 +205,119 @@ RS_MANIFEST_TARGET_SECTIONS = ("bin", "lib", "example", "test", "bench")
|
|
|
191
205
|
RS_MANIFEST_PATH_KEY = "path"
|
|
192
206
|
RS_MANIFEST_PACKAGE_KEY = "package"
|
|
193
207
|
RS_MANIFEST_BUILD_KEY = "build"
|
|
208
|
+
RS_MANIFEST_AUTOLIB_KEY = "autolib"
|
|
209
|
+
RS_MANIFEST_AUTOBINS_KEY = "autobins"
|
|
210
|
+
RS_MANIFEST_AUTOEXAMPLES_KEY = "autoexamples"
|
|
211
|
+
RS_MANIFEST_AUTOTESTS_KEY = "autotests"
|
|
212
|
+
RS_MANIFEST_AUTOBENCHES_KEY = "autobenches"
|
|
213
|
+
RS_MANIFEST_AUTO_KEYS = (
|
|
214
|
+
RS_MANIFEST_AUTOLIB_KEY,
|
|
215
|
+
RS_MANIFEST_AUTOBINS_KEY,
|
|
216
|
+
RS_MANIFEST_AUTOEXAMPLES_KEY,
|
|
217
|
+
RS_MANIFEST_AUTOTESTS_KEY,
|
|
218
|
+
RS_MANIFEST_AUTOBENCHES_KEY,
|
|
219
|
+
)
|
|
220
|
+
RS_AUTO_DIR_KEYS = {
|
|
221
|
+
"examples": RS_MANIFEST_AUTOEXAMPLES_KEY,
|
|
222
|
+
"tests": RS_MANIFEST_AUTOTESTS_KEY,
|
|
223
|
+
"benches": RS_MANIFEST_AUTOBENCHES_KEY,
|
|
224
|
+
}
|
|
225
|
+
# Candidate locations of a PATHLESS manifest target table, matched against
|
|
226
|
+
# the files that actually exist (cargo errors on an ambiguous pair, so only
|
|
227
|
+
# a single existing candidate resolves). [lib] is fixed at src/lib.rs; a bin
|
|
228
|
+
# whose name equals the package name may be src/main.rs.
|
|
229
|
+
RS_DEFAULT_LIB_PATH = "src/lib.rs"
|
|
230
|
+
RS_DEFAULT_MAIN_PATH = "src/main.rs"
|
|
231
|
+
RS_MANIFEST_BIN_SECTION = "bin"
|
|
232
|
+
RS_MANIFEST_KIND_DIRS = {
|
|
233
|
+
"bin": "src/bin",
|
|
234
|
+
"example": "examples",
|
|
235
|
+
"test": "tests",
|
|
236
|
+
"bench": "benches",
|
|
237
|
+
}
|
|
238
|
+
RS_MANIFEST_WORKSPACE_KEY = "workspace"
|
|
239
|
+
RS_MANIFEST_MEMBERS_KEY = "members"
|
|
240
|
+
RS_MANIFEST_NAME_KEY = "name"
|
|
241
|
+
RS_MANIFEST_LIB_SECTION = "lib"
|
|
242
|
+
RS_MANIFEST_DEP_SECTIONS = ("dependencies", "dev-dependencies", "build-dependencies")
|
|
243
|
+
RS_MANIFEST_TARGET_TABLE_KEY = "target"
|
|
244
|
+
# Crates shipped with the toolchain: external by construction, no
|
|
245
|
+
# manifest needed to know a use head naming one is outside the project.
|
|
246
|
+
RS_STDLIB_CRATES = frozenset({"std", "core", "alloc", "proc_macro"})
|
|
247
|
+
|
|
248
|
+
# Node labels a Rust qn segment carries when it is a TYPE the caller sits
|
|
249
|
+
# inside (an impl block), not an inline `mod`. An impl adds no module level,
|
|
250
|
+
# so `super::` inside a method counts from the file module's parent (#1093).
|
|
251
|
+
RS_TYPE_SCOPE_LABELS = frozenset(
|
|
252
|
+
{
|
|
253
|
+
NodeLabel.CLASS.value,
|
|
254
|
+
NodeLabel.INTERFACE.value,
|
|
255
|
+
NodeLabel.ENUM.value,
|
|
256
|
+
NodeLabel.TYPE.value,
|
|
257
|
+
NodeLabel.UNION.value,
|
|
258
|
+
}
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
# Traits the Rust prelude puts in scope with no `use`: an impl naming one
|
|
262
|
+
# without importing it and without a same-named first-party declaration
|
|
263
|
+
# implements the standard trait, whose dispatch lives outside the graph
|
|
264
|
+
# (issue #1048). Marker traits with no methods are omitted as pointless.
|
|
265
|
+
RS_PRELUDE_TRAITS = frozenset(
|
|
266
|
+
{
|
|
267
|
+
"AsMut",
|
|
268
|
+
"AsRef",
|
|
269
|
+
"Clone",
|
|
270
|
+
"Default",
|
|
271
|
+
"DoubleEndedIterator",
|
|
272
|
+
"Drop",
|
|
273
|
+
"ExactSizeIterator",
|
|
274
|
+
"Extend",
|
|
275
|
+
"Fn",
|
|
276
|
+
"FnMut",
|
|
277
|
+
"FnOnce",
|
|
278
|
+
"From",
|
|
279
|
+
"FromIterator",
|
|
280
|
+
"Into",
|
|
281
|
+
"IntoIterator",
|
|
282
|
+
"Iterator",
|
|
283
|
+
"Ord",
|
|
284
|
+
"PartialEq",
|
|
285
|
+
"PartialOrd",
|
|
286
|
+
"ToOwned",
|
|
287
|
+
"ToString",
|
|
288
|
+
"TryFrom",
|
|
289
|
+
"TryInto",
|
|
290
|
+
}
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
# Iterator-adaptor closure typing (issue #1045): a closure argument of one
|
|
294
|
+
# of these adaptors receives the sequence's element (by value or
|
|
295
|
+
# reference, indistinguishable for method binding), so its parameter can
|
|
296
|
+
# type from the iterated collection's element type.
|
|
297
|
+
RS_ITER_ADAPTORS = frozenset(
|
|
298
|
+
{
|
|
299
|
+
"map",
|
|
300
|
+
"filter",
|
|
301
|
+
"for_each",
|
|
302
|
+
"inspect",
|
|
303
|
+
"take_while",
|
|
304
|
+
"skip_while",
|
|
305
|
+
"filter_map",
|
|
306
|
+
"find",
|
|
307
|
+
"position",
|
|
308
|
+
"any",
|
|
309
|
+
"all",
|
|
310
|
+
}
|
|
311
|
+
)
|
|
312
|
+
# Chain hops between the collection and the adaptor that preserve the
|
|
313
|
+
# element type. Element-changing adaptors (enumerate, zip, flat_map) are
|
|
314
|
+
# deliberately absent: crossing one loses the element.
|
|
315
|
+
RS_ITER_NEUTRAL_HOPS = frozenset(
|
|
316
|
+
{"iter", "into_iter", "iter_mut", "by_ref", "rev", "cloned", "copied", "filter"}
|
|
317
|
+
)
|
|
318
|
+
# Sequence containers whose FIRST generic argument is the element type.
|
|
319
|
+
RS_ELEMENT_CONTAINERS = frozenset({"Vec", "VecDeque"})
|
|
320
|
+
RS_ITER_MAP = "map"
|
|
321
|
+
RS_ITER_COLLECT = "collect"
|
|
322
|
+
TS_RS_ARRAY_TYPE = "array_type"
|
|
323
|
+
RS_FIELD_ELEMENT = "element"
|
|
@@ -76,6 +76,22 @@ CLI_MSG_SYNC_DONE = "Knowledge graph sync done for '{project}' in {elapsed:.2f}s
|
|
|
76
76
|
CLI_MSG_CLEANING_DB = "Cleaning database..."
|
|
77
77
|
CLI_MSG_CLEANING_HASH_CACHE = "Removing hash cache: {path}"
|
|
78
78
|
CLI_MSG_CLEAN_DONE = "Clean completed successfully!"
|
|
79
|
+
CLI_WARN_CLEAN_OTHER_PROJECTS = (
|
|
80
|
+
"--clean deletes EVERY project from the shared graph, not just "
|
|
81
|
+
"'{project_name}'.\n{count} other project(s) would be destroyed: {projects}"
|
|
82
|
+
)
|
|
83
|
+
CLI_PROMPT_CLEAN_CONFIRM = "Delete all {count} project(s) from the shared graph?"
|
|
84
|
+
CLI_ERR_CLEAN_NEEDS_CONFIRMATION = (
|
|
85
|
+
"Refusing to run --clean without a terminal to confirm on. "
|
|
86
|
+
"Re-run with --yes to delete every project in the shared graph, or drop "
|
|
87
|
+
"--clean to update '{project_name}' in place."
|
|
88
|
+
)
|
|
89
|
+
CLI_ERR_CLEAN_UNKNOWN_PROJECTS = (
|
|
90
|
+
"Refusing to run --clean: the existing projects could not be listed, so "
|
|
91
|
+
"there is no way to show what the wipe would destroy. Fix the graph "
|
|
92
|
+
"connection, or pass --yes to delete everything regardless."
|
|
93
|
+
)
|
|
94
|
+
CLI_MSG_CLEAN_ABORTED = "Aborted: the graph was left untouched."
|
|
79
95
|
CLI_MSG_DELETING_PROJECT = "Deleting project '{project_name}' from the graph..."
|
|
80
96
|
CLI_MSG_PROJECT_DELETED = "Project '{project_name}' deleted successfully."
|
|
81
97
|
CLI_ERR_PROJECT_NOT_FOUND = (
|
|
@@ -21,6 +21,10 @@ SEPARATOR_SLASH = "/"
|
|
|
21
21
|
# Disambiguates definitions that share one qualified name (if/else import
|
|
22
22
|
# fallbacks, typing.overload, try/except fallbacks): "<qn>@<start_line>".
|
|
23
23
|
DUP_QN_MARKER = "@"
|
|
24
|
+
# Joined after the line when a same-named definition already holds that line,
|
|
25
|
+
# so same-line twins stay distinct (issue #1071). Every consumer splits on
|
|
26
|
+
# DUP_QN_MARKER and keeps the base, so nothing reads the suffix back.
|
|
27
|
+
DUP_QN_COLUMN_MARKER = "_"
|
|
24
28
|
|
|
25
29
|
PATH_CURRENT_DIR = "."
|
|
26
30
|
PATH_PARENT_DIR = ".."
|
|
@@ -330,3 +330,26 @@ PY_ENUM_HOOK_METHOD_NAMES: frozenset[str] = frozenset(
|
|
|
330
330
|
"_missing_",
|
|
331
331
|
}
|
|
332
332
|
)
|
|
333
|
+
|
|
334
|
+
# (H) ES well-known symbols (incl. Explicit Resource Management: dispose/asyncDispose)
|
|
335
|
+
# (H) These are invoked implicitly by the runtime (e.g. [Symbol.iterator] by for..of)
|
|
336
|
+
# (H) and never called by name, so they are dead-code liveness roots.
|
|
337
|
+
JS_WELL_KNOWN_SYMBOLS: frozenset[str] = frozenset(
|
|
338
|
+
{
|
|
339
|
+
"asyncIterator",
|
|
340
|
+
"hasInstance",
|
|
341
|
+
"isConcatSpreadable",
|
|
342
|
+
"iterator",
|
|
343
|
+
"match",
|
|
344
|
+
"matchAll",
|
|
345
|
+
"replace",
|
|
346
|
+
"search",
|
|
347
|
+
"species",
|
|
348
|
+
"split",
|
|
349
|
+
"toPrimitive",
|
|
350
|
+
"toStringTag",
|
|
351
|
+
"unscopables",
|
|
352
|
+
"dispose",
|
|
353
|
+
"asyncDispose",
|
|
354
|
+
}
|
|
355
|
+
)
|
|
@@ -140,6 +140,7 @@ from .ast_python import (
|
|
|
140
140
|
from .ast_rust import (
|
|
141
141
|
TS_RS_CALL_EXPRESSION,
|
|
142
142
|
TS_RS_CLOSURE_EXPRESSION,
|
|
143
|
+
TS_RS_CONST_ITEM,
|
|
143
144
|
TS_RS_ENUM_ITEM,
|
|
144
145
|
TS_RS_EXTERN_CRATE_DECLARATION,
|
|
145
146
|
TS_RS_FUNCTION_ITEM,
|
|
@@ -149,6 +150,7 @@ from .ast_rust import (
|
|
|
149
150
|
TS_RS_MACRO_INVOCATION,
|
|
150
151
|
TS_RS_MOD_ITEM,
|
|
151
152
|
TS_RS_SOURCE_FILE,
|
|
153
|
+
TS_RS_STATIC_ITEM,
|
|
152
154
|
TS_RS_STRUCT_ITEM,
|
|
153
155
|
TS_RS_TRAIT_ITEM,
|
|
154
156
|
TS_RS_TYPE_ITEM,
|
|
@@ -410,6 +412,16 @@ RS_TYPE_NODE_TYPES = (
|
|
|
410
412
|
)
|
|
411
413
|
RS_IDENT_NODE_TYPES = (TS_RS_FUNCTION_ITEM, TS_RS_MOD_ITEM)
|
|
412
414
|
|
|
415
|
+
# Nodes whose body holds items no path from another module can name.
|
|
416
|
+
RS_BODY_LOCAL_CONTAINERS = frozenset(
|
|
417
|
+
{
|
|
418
|
+
TS_RS_FUNCTION_ITEM,
|
|
419
|
+
TS_RS_CLOSURE_EXPRESSION,
|
|
420
|
+
TS_RS_CONST_ITEM,
|
|
421
|
+
TS_RS_STATIC_ITEM,
|
|
422
|
+
}
|
|
423
|
+
)
|
|
424
|
+
|
|
413
425
|
CPP_NAME_NODE_TYPES = (
|
|
414
426
|
CppNodeType.CLASS_SPECIFIER,
|
|
415
427
|
TS_STRUCT_SPECIFIER,
|
|
@@ -30,6 +30,10 @@ KEY_START_LINE = "start_line"
|
|
|
30
30
|
KEY_END_LINE = "end_line"
|
|
31
31
|
KEY_PATH = "path"
|
|
32
32
|
KEY_ABSOLUTE_PATH = "absolute_path"
|
|
33
|
+
# Whether flow analysis covered a Module: its language is in the source/sink
|
|
34
|
+
# registry AND the FLOWS_TO capture group was enabled at indexing. Read by
|
|
35
|
+
# the three-verdict flow reachability query (issue #1050).
|
|
36
|
+
KEY_FLOW_COVERED = "flow_covered"
|
|
33
37
|
KEY_EXTENSION = "extension"
|
|
34
38
|
KEY_MODULE_TYPE = "module_type"
|
|
35
39
|
KEY_IMPLEMENTS_MODULE = "implements_module"
|
|
@@ -19,6 +19,7 @@ class MCPToolName(StrEnum):
|
|
|
19
19
|
STRUCTURAL_SEARCH = "structural_search"
|
|
20
20
|
STRUCTURAL_REPLACE = "structural_replace"
|
|
21
21
|
ASK_AGENT = "ask_agent"
|
|
22
|
+
FLOW_VERDICT = "flow_verdict"
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
class MCPTransport(StrEnum):
|
|
@@ -64,6 +65,8 @@ class MCPParamName(StrEnum):
|
|
|
64
65
|
PATTERN = "pattern"
|
|
65
66
|
REWRITE = "rewrite"
|
|
66
67
|
LANGUAGE = "language"
|
|
68
|
+
SOURCE_QN = "source_qualified_name"
|
|
69
|
+
SINK_QN = "sink_qualified_name"
|
|
67
70
|
DRY_RUN = "dry_run"
|
|
68
71
|
|
|
69
72
|
|
|
@@ -96,6 +96,8 @@ DEFAULT_CONTEXT_WINDOW = 200_000
|
|
|
96
96
|
MODEL_CONTEXT_WINDOWS: dict[str, int] = {
|
|
97
97
|
"MiniMax-M3": 1_000_000,
|
|
98
98
|
"MiniMax-M2.7": 204_800,
|
|
99
|
+
"claude-opus-5": 1_000_000,
|
|
100
|
+
"claude-sonnet-5": 1_000_000,
|
|
99
101
|
"claude-opus-4-8": 1_000_000,
|
|
100
102
|
"claude-opus-4-7": 1_000_000,
|
|
101
103
|
"claude-opus-4-6": 200_000,
|