codegraphcontext 0.6.10__tar.gz → 0.6.12__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.
- {codegraphcontext-0.6.10/src/codegraphcontext.egg-info → codegraphcontext-0.6.12}/PKG-INFO +5 -3
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/README.md +2 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/pyproject.toml +3 -3
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_embedded_kuzu.py +208 -6
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/elisp.py +19 -4
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12/src/codegraphcontext.egg-info}/PKG-INFO +5 -3
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/requires.txt +2 -2
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/LICENSE +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/MANIFEST.in +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/setup.cfg +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/__init__.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/__main__.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/__init__.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/app.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/auth.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/mcp_sse.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/router.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/schemas.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/__init__.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/cli_helpers.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/config_manager.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/hook_manager.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/main.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/project_config.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/registry_commands.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/setup_macos.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/setup_wizard.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/simulator.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/visualizer.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/__init__.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/bundle_registry.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/cgc_bundle.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/cgcignore.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_falkordb.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_falkordb_remote.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_kuzu.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_ladybug.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_nornic.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/falkor_worker.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/graph_query.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/jobs.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/simulator.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/watcher.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/prompts.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/server.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/stdlibs.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tool_definitions.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/__init__.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/advanced_language_query_tool.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/code_finder.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/datasources/__init__.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/datasources/cassandra_ingester.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/datasources/mysql_ingester.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/datasources/redis_ingester.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/graph_builder.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/handlers/analysis_handlers.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/handlers/indexing_handlers.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/handlers/management_handlers.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/handlers/query_handlers.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/handlers/watcher_handlers.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/__init__.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/constants.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/discovery.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/embeddings.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/persistence/__init__.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/persistence/utils.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/persistence/writer.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/pipeline.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/pre_scan.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/resolution/__init__.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/resolution/calls.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/resolution/inheritance.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/resolution/post_resolution.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/sanitize.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/schema.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/schema_contract.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/scip_pipeline.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/vector_resolver.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/c.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/cpp.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/csharp.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/css.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/dart.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/elixir.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/go.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/gradle.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/haskell.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/html.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/java.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/javascript.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/kotlin.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/lua.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/maven.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/mybatis.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/perl.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/php.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/python.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/ruby.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/rust.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/scala.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/sfc_common.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/solidity.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/solidity_remappings.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/svelte.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/swift.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/typescript.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/typescriptjsx.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/vue.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/package_resolver.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/c_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/cpp_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/csharp_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/dart_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/elisp_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/go_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/haskell_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/java_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/javascript_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/perl_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/python_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/ruby_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/rust_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/scala_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/solidity_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/swift_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/typescript_toolkit.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/report_generator.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/scip_indexer.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/scip_pb2.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/system.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/tree_sitter_parser.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/type_utils.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/cypher_ddl.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/cypher_readonly.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/debug_log.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/gcf_encoder.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/git_utils.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/graph_shapes.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/path_ignore.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/path_sandbox.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/repo_path.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/secret_scanner.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/tool_limits.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/tree_sitter_manager.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/visualize_graph.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/__vite-browser-external-9wXp6ZBx.js +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/function-calls-BtRHrqa2.png +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/graph-total-D1fBAugo.png +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/hero-graph-2voMJp2a.jpg +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/hierarchy-DGADo0YT.png +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/index-C-187lf0.js +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/index-fNAa6jgv.css +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/parser-pyodide.worker-BgsDfaad.js +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/parser.worker-_nvrecvj.js +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/tree-sitter-qKYAACSa.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/cgcIcon.png +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/favicon.ico +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/index.html +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/logo-icon.svg +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/logo.svg +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/placeholder.svg +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/preview-image.png +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/robots.txt +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-c.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-c_sharp.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-core.js +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-cpp.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-dart.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-go.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-java.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-javascript.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-kotlin.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-perl.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-php.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-python.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-ruby.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-rust.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-swift.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-tsx.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-typescript.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/web-tree-sitter.js +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/web-tree-sitter.wasm +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/server.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/SOURCES.txt +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/dependency_links.txt +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/entry_points.txt +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/top_level.txt +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/tests/test_issue_806_fix.py +0 -0
- {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/tests/test_mcp_sse.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codegraphcontext
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.12
|
|
4
4
|
Summary: An MCP server that indexes local code into a graph database to provide context to AI assistants.
|
|
5
5
|
Author-email: Shashank Shekhar Singh <shashankshekharsingh1205@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -61,7 +61,7 @@ Requires-Dist: falkordblite<0.10,>=0.7; sys_platform != "win32" and python_versi
|
|
|
61
61
|
Requires-Dist: requests>=2.28.0
|
|
62
62
|
Requires-Dist: protobuf<3.21,>=3.20
|
|
63
63
|
Requires-Dist: kuzu; python_version < "3.14" or sys_platform == "linux"
|
|
64
|
-
Requires-Dist: ladybug; sys_platform == "win32" or (sys_platform != "win32" and python_version >= "3.10")
|
|
64
|
+
Requires-Dist: ladybug<0.20,>=0.19; sys_platform == "win32" or (sys_platform != "win32" and python_version >= "3.10")
|
|
65
65
|
Requires-Dist: mcp<2,>=1.0.0
|
|
66
66
|
Requires-Dist: fastapi>=0.100.0
|
|
67
67
|
Requires-Dist: uvicorn>=0.22.0
|
|
@@ -80,7 +80,7 @@ Requires-Dist: redis<6,>=5; extra == "falkordb-remote"
|
|
|
80
80
|
Provides-Extra: kuzu
|
|
81
81
|
Requires-Dist: kuzu; (python_version < "3.14" or sys_platform == "linux") and extra == "kuzu"
|
|
82
82
|
Provides-Extra: ladybug
|
|
83
|
-
Requires-Dist: ladybug; (sys_platform == "win32" or (sys_platform != "win32" and python_version >= "3.10")) and extra == "ladybug"
|
|
83
|
+
Requires-Dist: ladybug<0.20,>=0.19; (sys_platform == "win32" or (sys_platform != "win32" and python_version >= "3.10")) and extra == "ladybug"
|
|
84
84
|
Provides-Extra: neo4j
|
|
85
85
|
Requires-Dist: neo4j>=5.15.0; extra == "neo4j"
|
|
86
86
|
Provides-Extra: gcf
|
|
@@ -388,6 +388,8 @@ CodeGraphContext supports multiple graph database backends to suit your environm
|
|
|
388
388
|
| **Speed** | ⚡ Extremely Fast | ⚡ Fast | 🚀 Scalable | 🌐 Network-dependent |
|
|
389
389
|
| **Persistence**| Yes (to disk) | Yes (to disk) | Yes (to disk) | Yes (server-side) |
|
|
390
390
|
|
|
391
|
+
Embedded KuzuDB/LadybugDB default to a **4 GiB** buffer pool (`CGC_EMBEDDED_BUFFER_POOL_MB`). Set that env var to another MiB value, or `0` for the library default (~80% of system RAM).
|
|
392
|
+
|
|
391
393
|
---
|
|
392
394
|
|
|
393
395
|
## SCIP indexing (optional)
|
|
@@ -289,6 +289,8 @@ CodeGraphContext supports multiple graph database backends to suit your environm
|
|
|
289
289
|
| **Speed** | ⚡ Extremely Fast | ⚡ Fast | 🚀 Scalable | 🌐 Network-dependent |
|
|
290
290
|
| **Persistence**| Yes (to disk) | Yes (to disk) | Yes (to disk) | Yes (server-side) |
|
|
291
291
|
|
|
292
|
+
Embedded KuzuDB/LadybugDB default to a **4 GiB** buffer pool (`CGC_EMBEDDED_BUFFER_POOL_MB`). Set that env var to another MiB value, or `0` for the library default (~80% of system RAM).
|
|
293
|
+
|
|
292
294
|
---
|
|
293
295
|
|
|
294
296
|
## SCIP indexing (optional)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "codegraphcontext"
|
|
3
|
-
version = "0.6.
|
|
3
|
+
version = "0.6.12"
|
|
4
4
|
description = "An MCP server that indexes local code into a graph database to provide context to AI assistants."
|
|
5
5
|
authors = [{ name = "Shashank Shekhar Singh", email = "shashankshekharsingh1205@gmail.com" }]
|
|
6
6
|
readme = "README.md"
|
|
@@ -72,7 +72,7 @@ dependencies = [
|
|
|
72
72
|
# wheels for all three platforms and remains the unconditional default.
|
|
73
73
|
# ------------------------------------------------------------------
|
|
74
74
|
"kuzu; python_version < '3.14' or sys_platform == 'linux'",
|
|
75
|
-
"ladybug; sys_platform == 'win32' or (sys_platform != 'win32' and python_version >= '3.10')",
|
|
75
|
+
"ladybug>=0.19,<0.20; sys_platform == 'win32' or (sys_platform != 'win32' and python_version >= '3.10')",
|
|
76
76
|
# Cap below 2.0: the low-level `mcp.server.Server` dropped its `list_tools`
|
|
77
77
|
# and `call_tool` decorators in 2.0.0, which api/mcp_sse.py registers its
|
|
78
78
|
# handlers with. With an unbounded pin, CI resolved 2.0.0 on release day and
|
|
@@ -110,7 +110,7 @@ kuzu = [
|
|
|
110
110
|
"kuzu; python_version < '3.14' or sys_platform == 'linux'",
|
|
111
111
|
]
|
|
112
112
|
ladybug = [
|
|
113
|
-
"ladybug; sys_platform == 'win32' or (sys_platform != 'win32' and python_version >= '3.10')",
|
|
113
|
+
"ladybug>=0.19,<0.20; sys_platform == 'win32' or (sys_platform != 'win32' and python_version >= '3.10')",
|
|
114
114
|
]
|
|
115
115
|
neo4j = [
|
|
116
116
|
"neo4j>=5.15.0",
|
|
@@ -23,6 +23,64 @@ from codegraphcontext.core.graph_query import GraphQueryInterface
|
|
|
23
23
|
from ..utils.cypher_ddl import is_schema_ddl
|
|
24
24
|
from codegraphcontext.utils.debug_log import debug_log, info_logger, error_logger, warning_logger
|
|
25
25
|
|
|
26
|
+
# Default cap for ladybug/kuzu buffer pools (bytes). Both libraries otherwise
|
|
27
|
+
# default to ~80% of system RAM, which lets long-running gateways grow huge.
|
|
28
|
+
DEFAULT_EMBEDDED_BUFFER_POOL_BYTES = 4 * 1024**3
|
|
29
|
+
|
|
30
|
+
# Floor for the availability-derived default, so a briefly-busy machine does
|
|
31
|
+
# not shrink the pool into pathological territory.
|
|
32
|
+
MIN_DEFAULT_BUFFER_POOL_BYTES = 256 * 1024**2
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _available_memory_bytes():
|
|
36
|
+
"""MemAvailable from /proc/meminfo, or None where unavailable (macOS…)."""
|
|
37
|
+
try:
|
|
38
|
+
with open("/proc/meminfo") as f:
|
|
39
|
+
for line in f:
|
|
40
|
+
if line.startswith("MemAvailable:"):
|
|
41
|
+
return int(line.split()[1]) * 1024
|
|
42
|
+
except OSError:
|
|
43
|
+
pass
|
|
44
|
+
return None
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def resolve_embedded_buffer_pool_size() -> int:
|
|
48
|
+
"""
|
|
49
|
+
Resolve ``buffer_pool_size`` for embedded ``Database(...)`` constructors.
|
|
50
|
+
|
|
51
|
+
Reads ``CGC_EMBEDDED_BUFFER_POOL_MB`` (integer MiB). Unset uses an
|
|
52
|
+
adaptive default: 4 GiB, capped at half of currently-available memory
|
|
53
|
+
(floored at 256 MiB) — on a memory-constrained host (CI runners sharing
|
|
54
|
+
RAM with a Neo4j container, small VMs) a fixed 4 GiB pool made LadybugDB
|
|
55
|
+
fault natively (SIGSEGV, parity run exit -11) when the reservation could
|
|
56
|
+
not be backed. An explicit env value is always honored as-is; ``0`` opts
|
|
57
|
+
back into the library default (~80% of system memory).
|
|
58
|
+
"""
|
|
59
|
+
raw = os.getenv("CGC_EMBEDDED_BUFFER_POOL_MB")
|
|
60
|
+
if raw is None or str(raw).strip() == "":
|
|
61
|
+
available = _available_memory_bytes()
|
|
62
|
+
if available is None:
|
|
63
|
+
return DEFAULT_EMBEDDED_BUFFER_POOL_BYTES
|
|
64
|
+
adaptive = max(MIN_DEFAULT_BUFFER_POOL_BYTES, available // 2)
|
|
65
|
+
return min(DEFAULT_EMBEDDED_BUFFER_POOL_BYTES, adaptive)
|
|
66
|
+
try:
|
|
67
|
+
mb = int(str(raw).strip())
|
|
68
|
+
except ValueError:
|
|
69
|
+
warning_logger(
|
|
70
|
+
f"Invalid CGC_EMBEDDED_BUFFER_POOL_MB={raw!r}; "
|
|
71
|
+
f"using default {DEFAULT_EMBEDDED_BUFFER_POOL_BYTES} bytes"
|
|
72
|
+
)
|
|
73
|
+
return DEFAULT_EMBEDDED_BUFFER_POOL_BYTES
|
|
74
|
+
if mb < 0:
|
|
75
|
+
warning_logger(
|
|
76
|
+
f"Invalid CGC_EMBEDDED_BUFFER_POOL_MB={raw!r}; "
|
|
77
|
+
f"using default {DEFAULT_EMBEDDED_BUFFER_POOL_BYTES} bytes"
|
|
78
|
+
)
|
|
79
|
+
return DEFAULT_EMBEDDED_BUFFER_POOL_BYTES
|
|
80
|
+
if mb == 0:
|
|
81
|
+
return 0
|
|
82
|
+
return mb * 1024**2
|
|
83
|
+
|
|
26
84
|
|
|
27
85
|
@dataclass(frozen=True)
|
|
28
86
|
class EmbeddedBackendSpec:
|
|
@@ -117,8 +175,24 @@ class EmbeddedGraphManager(GraphQueryInterface):
|
|
|
117
175
|
max_retries = 5
|
|
118
176
|
for attempt in range(max_retries):
|
|
119
177
|
try:
|
|
120
|
-
|
|
121
|
-
|
|
178
|
+
buffer_pool_size = resolve_embedded_buffer_pool_size()
|
|
179
|
+
if buffer_pool_size == 0:
|
|
180
|
+
pool_msg = "library default (~80% of system memory)"
|
|
181
|
+
else:
|
|
182
|
+
pool_msg = f"{buffer_pool_size} bytes"
|
|
183
|
+
info_logger(
|
|
184
|
+
f"Initializing {spec.display_name} at {self.db_path} "
|
|
185
|
+
f"(buffer_pool_size={pool_msg})"
|
|
186
|
+
)
|
|
187
|
+
if buffer_pool_size == 0:
|
|
188
|
+
# 0 means "library default": omit the kwarg
|
|
189
|
+
# rather than trusting every backend to treat
|
|
190
|
+
# a literal 0 that way.
|
|
191
|
+
self._db = backend.Database(self.db_path)
|
|
192
|
+
else:
|
|
193
|
+
self._db = backend.Database(
|
|
194
|
+
self.db_path, buffer_pool_size=buffer_pool_size
|
|
195
|
+
)
|
|
122
196
|
|
|
123
197
|
# Initialise connection pool
|
|
124
198
|
self._pool = queue.Queue()
|
|
@@ -516,7 +590,15 @@ class EmbeddedGraphManager(GraphQueryInterface):
|
|
|
516
590
|
# Without this call the process hangs on exit because the
|
|
517
591
|
# embedded Kùzu engine keeps background threads alive.
|
|
518
592
|
try:
|
|
519
|
-
|
|
593
|
+
# kuzu exposes is_closed as a METHOD on some builds and a
|
|
594
|
+
# bool ATTRIBUTE on others (0.11.x). Calling the attribute
|
|
595
|
+
# raised "'bool' object is not callable" — which this
|
|
596
|
+
# except swallowed, so the close NEVER ran and the
|
|
597
|
+
# background threads it exists to stop stayed alive.
|
|
598
|
+
closed = self._db.is_closed
|
|
599
|
+
if callable(closed):
|
|
600
|
+
closed = closed()
|
|
601
|
+
if not closed:
|
|
520
602
|
self._db.close()
|
|
521
603
|
info_logger(f"{self.BACKEND_SPEC.display_name} database closed successfully")
|
|
522
604
|
except Exception as e:
|
|
@@ -588,16 +670,19 @@ class EmbeddedDriverWrapper:
|
|
|
588
670
|
compat_state = getattr(self, "_compat_state", None)
|
|
589
671
|
pool = getattr(self, "_pool", None)
|
|
590
672
|
display_name = getattr(self, "_display_name", "Embedded")
|
|
673
|
+
backend_id = getattr(self, "_backend_id", "embedded")
|
|
591
674
|
if pool is not None:
|
|
592
675
|
return EmbeddedSessionWrapper(
|
|
593
676
|
pool, getattr(self, "_write_lock", None),
|
|
594
677
|
compat_state=compat_state, display_name=display_name,
|
|
678
|
+
backend_id=backend_id,
|
|
595
679
|
)
|
|
596
680
|
else:
|
|
597
681
|
db = getattr(self, "db", None) or getattr(self, "conn", None)
|
|
598
682
|
write_lock = getattr(self, "_write_lock", None) or getattr(self, "_query_lock", None)
|
|
599
683
|
return EmbeddedSessionWrapper(
|
|
600
684
|
db, write_lock, compat_state=compat_state, display_name=display_name,
|
|
685
|
+
backend_id=backend_id,
|
|
601
686
|
)
|
|
602
687
|
def close(self):
|
|
603
688
|
pass
|
|
@@ -607,10 +692,12 @@ class EmbeddedDriverWrapper:
|
|
|
607
692
|
|
|
608
693
|
|
|
609
694
|
class EmbeddedSessionWrapper:
|
|
610
|
-
def __init__(self, pool_or_conn, write_lock=None, compat_state=None, display_name: str = "Embedded"
|
|
695
|
+
def __init__(self, pool_or_conn, write_lock=None, compat_state=None, display_name: str = "Embedded",
|
|
696
|
+
backend_id: str = "embedded"):
|
|
611
697
|
self._write_lock = write_lock or threading.Lock()
|
|
612
698
|
self._query_lock = self._write_lock
|
|
613
699
|
self._display_name = display_name
|
|
700
|
+
self._backend_id = backend_id
|
|
614
701
|
# Disabled-query-type state is shared via the manager's compat_state so
|
|
615
702
|
# fail-fast disabling persists across sessions. A standalone session
|
|
616
703
|
# (tests / legacy callers) gets its own private state.
|
|
@@ -623,7 +710,20 @@ class EmbeddedSessionWrapper:
|
|
|
623
710
|
# Backward compatibility check: check if it's a pool or connection
|
|
624
711
|
if hasattr(pool_or_conn, "get") and not hasattr(pool_or_conn, "execute"):
|
|
625
712
|
self._pool = pool_or_conn
|
|
626
|
-
|
|
713
|
+
try:
|
|
714
|
+
# The embedded manager is a per-subclass singleton: switching
|
|
715
|
+
# db_path closes the old database and drains its pool. A caller
|
|
716
|
+
# holding a STALE driver reference then blocked here forever
|
|
717
|
+
# with no diagnostic. Fail loudly instead.
|
|
718
|
+
self.conn = self._pool.get(timeout=30)
|
|
719
|
+
except queue.Empty:
|
|
720
|
+
raise RuntimeError(
|
|
721
|
+
"No database connection available after 30s — this driver's "
|
|
722
|
+
"connection pool is exhausted or its database manager was "
|
|
723
|
+
"closed/switched to another path. Re-acquire the driver via "
|
|
724
|
+
"get_database_manager().get_driver() instead of holding a "
|
|
725
|
+
"stale reference."
|
|
726
|
+
)
|
|
627
727
|
else:
|
|
628
728
|
self._pool = None
|
|
629
729
|
self.conn = pool_or_conn
|
|
@@ -833,6 +933,60 @@ class EmbeddedSessionWrapper:
|
|
|
833
933
|
with self._write_lock:
|
|
834
934
|
result = self.conn.execute(translated_query, translated_params)
|
|
835
935
|
|
|
936
|
+
# LadybugDB (0.19.x) state-dependently drops SOME rows of a
|
|
937
|
+
# batched relationship-only UNWIND MERGE — no error is raised,
|
|
938
|
+
# the MERGE just writes nothing for those rows (a 17-row
|
|
939
|
+
# Struct-CONTAINS batch wrote 12; #1710). Locally an immediate
|
|
940
|
+
# identical re-run bound the stragglers, but on CI the drop
|
|
941
|
+
# survives re-execution, so after the batched pass every row
|
|
942
|
+
# is replayed as a single-row batch through the SAME translated
|
|
943
|
+
# query. MERGE is idempotent, so the union is safe; only
|
|
944
|
+
# ladybug pays the cost. The generic per-row rewrite path is
|
|
945
|
+
# deliberately NOT used here — its query surgery loses ~51
|
|
946
|
+
# CONTAINS edges (the #1612 signature).
|
|
947
|
+
if (
|
|
948
|
+
getattr(self, "_backend_id", "") == "ladybugdb"
|
|
949
|
+
and "MERGE" in query
|
|
950
|
+
and ("-[" in query or "]->" in query)
|
|
951
|
+
and "RETURN" not in query.upper()
|
|
952
|
+
):
|
|
953
|
+
_u = re.search(r"UNWIND\s+\$(\w+)\s+AS\s+\w+", translated_query)
|
|
954
|
+
_rows = _u and translated_params.get(_u.group(1))
|
|
955
|
+
if isinstance(_rows, list) and len(_rows) > 1:
|
|
956
|
+
# Best-effort only: the batched pass above already
|
|
957
|
+
# wrote what it could, so a failing single must NEVER
|
|
958
|
+
# propagate — the first singles attempt let one raise
|
|
959
|
+
# and the escaping exception aborted the writer's
|
|
960
|
+
# remaining batches, costing ~51 CONTAINS edges (the
|
|
961
|
+
# union of idempotent MERGEs cannot otherwise shrink).
|
|
962
|
+
_single_failures = 0
|
|
963
|
+
_first_single_error = None
|
|
964
|
+
for _row in _rows:
|
|
965
|
+
single = dict(translated_params)
|
|
966
|
+
single[_u.group(1)] = [_row]
|
|
967
|
+
try:
|
|
968
|
+
self.conn.execute(translated_query, single)
|
|
969
|
+
except Exception as _se:
|
|
970
|
+
_single_failures += 1
|
|
971
|
+
if _first_single_error is None:
|
|
972
|
+
_first_single_error = str(_se)[:160]
|
|
973
|
+
if _single_failures:
|
|
974
|
+
debug_log(
|
|
975
|
+
f"Ladybug single-row replay: {_single_failures}/{len(_rows)} "
|
|
976
|
+
f"rows errored (first: {_first_single_error}) — batched pass "
|
|
977
|
+
f"result stands — query: {query[:90]}"
|
|
978
|
+
)
|
|
979
|
+
if os.environ.get("CGC_LBG_DIAG") and "helpers.go" in str(translated_params):
|
|
980
|
+
try:
|
|
981
|
+
_mq = re.sub(r"MERGE\s.*", "RETURN count(*)", translated_query, flags=re.S)
|
|
982
|
+
_mr = self.conn.execute(_mq, translated_params)
|
|
983
|
+
_matched = _mr.get_next()[0]
|
|
984
|
+
import sys as _sys
|
|
985
|
+
print(f"LBG_DIAG matched={_matched} batch={len(_rows)} q={translated_query[:110].strip()!r}", file=_sys.stderr, flush=True)
|
|
986
|
+
except Exception as _de:
|
|
987
|
+
import sys as _sys
|
|
988
|
+
print(f"LBG_DIAG count-err {str(_de)[:120]}", file=_sys.stderr, flush=True)
|
|
989
|
+
|
|
836
990
|
return EmbeddedResultWrapper(result)
|
|
837
991
|
except Exception as e:
|
|
838
992
|
if self._should_fail_fast(query_type, e):
|
|
@@ -879,6 +1033,8 @@ class EmbeddedSessionWrapper:
|
|
|
879
1033
|
)
|
|
880
1034
|
|
|
881
1035
|
last_result = None
|
|
1036
|
+
dropped = 0
|
|
1037
|
+
first_drop_error = None
|
|
882
1038
|
for item in batch_data:
|
|
883
1039
|
loop_params = parameters.copy()
|
|
884
1040
|
loop_params.pop(batch_param, None)
|
|
@@ -891,8 +1047,34 @@ class EmbeddedSessionWrapper:
|
|
|
891
1047
|
except Exception as nested_e:
|
|
892
1048
|
nested_err_str = str(nested_e).lower()
|
|
893
1049
|
if "binder" in nested_err_str or "cannot find a valid label" in nested_err_str:
|
|
1050
|
+
# Expected: label-pair probing legitimately
|
|
1051
|
+
# misses on schemaless shapes.
|
|
894
1052
|
continue
|
|
895
|
-
|
|
1053
|
+
# Transient failure (lock contention, buffer
|
|
1054
|
+
# pressure): retry the ROW once before dropping
|
|
1055
|
+
# it — writes are MERGE-idempotent. Silent
|
|
1056
|
+
# drops here were LadybugDB's missing-edge
|
|
1057
|
+
# signature in the parity run (#1612).
|
|
1058
|
+
try:
|
|
1059
|
+
last_result = self.run(loop_query, **loop_params)
|
|
1060
|
+
except Exception as retry_e:
|
|
1061
|
+
dropped += 1
|
|
1062
|
+
if first_drop_error is None:
|
|
1063
|
+
first_drop_error = str(retry_e)[:160]
|
|
1064
|
+
if dropped:
|
|
1065
|
+
if dropped == len(batch_data) and dropped > 0:
|
|
1066
|
+
# Every row failing is systematic breakage, not
|
|
1067
|
+
# transient pressure — raise so the caller's
|
|
1068
|
+
# own retry/failure accounting still engages.
|
|
1069
|
+
raise RuntimeError(
|
|
1070
|
+
f"Per-row fallback failed for ALL {dropped} rows "
|
|
1071
|
+
f"(first error: {first_drop_error}) — query: {query[:90]}"
|
|
1072
|
+
)
|
|
1073
|
+
warning_logger(
|
|
1074
|
+
f"Per-row fallback dropped {dropped}/{len(batch_data)} "
|
|
1075
|
+
f"rows after retry (first error: {first_drop_error}) — "
|
|
1076
|
+
f"query: {query[:90]}"
|
|
1077
|
+
)
|
|
896
1078
|
return last_result or EmbeddedResultWrapper(None)
|
|
897
1079
|
|
|
898
1080
|
|
|
@@ -981,6 +1163,26 @@ class EmbeddedSessionWrapper:
|
|
|
981
1163
|
# b) MERGE uid injection from row fields (row.name, row.line_number, …)
|
|
982
1164
|
unwind_m = re.search(r'UNWIND\s+\$(\w+)\s+AS\s+(\w+)', query)
|
|
983
1165
|
if unwind_m:
|
|
1166
|
+
# 1.5-pre: Collapse consecutive MATCH clauses into one comma-joined
|
|
1167
|
+
# MATCH. LadybugDB's planner silently yields ZERO rows for
|
|
1168
|
+
# UNWIND → MATCH (a {…}) → MATCH (b {…}) when the first MATCH is an
|
|
1169
|
+
# index-map lookup (File-by-path being the everyday case): each
|
|
1170
|
+
# MATCH works alone, chained they produce nothing — no error is
|
|
1171
|
+
# raised, so downstream MERGEs quietly write no edges. That was the
|
|
1172
|
+
# exact signature of the parity gap (all File-sourced CALLS edges
|
|
1173
|
+
# and a handful of Struct CONTAINS edges missing on ladybug only).
|
|
1174
|
+
# The comma form `MATCH (a {…}), (b {…})` is semantically identical
|
|
1175
|
+
# for non-optional patterns and both engines plan it correctly.
|
|
1176
|
+
# Only simple node patterns (no relationship arrows, no parens
|
|
1177
|
+
# inside the pattern) directly adjacent to the next MATCH are
|
|
1178
|
+
# merged, and never across OPTIONAL MATCH.
|
|
1179
|
+
_match_merge_re = re.compile(
|
|
1180
|
+
r'(?<!OPTIONAL )\bMATCH\s*(\([^()]*\)(?:\s*,\s*\([^()]*\))*)\s+MATCH\s*(?=\()'
|
|
1181
|
+
)
|
|
1182
|
+
_prev = None
|
|
1183
|
+
while _prev != query:
|
|
1184
|
+
_prev = query
|
|
1185
|
+
query = _match_merge_re.sub(r'MATCH \1, ', query, count=1)
|
|
984
1186
|
batch_param = unwind_m.group(1)
|
|
985
1187
|
row_var = unwind_m.group(2)
|
|
986
1188
|
batch_data = parameters.get(batch_param)
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/elisp.py
RENAMED
|
@@ -242,11 +242,26 @@ class ElispTreeSitterParser:
|
|
|
242
242
|
return None
|
|
243
243
|
|
|
244
244
|
def _first_symbol_in_quote(self, node: Any) -> Optional[str]:
|
|
245
|
-
|
|
245
|
+
# (quote symbol) -> symbol
|
|
246
|
+
if node.type == "quote":
|
|
247
|
+
for child in self._named_children(node):
|
|
248
|
+
if child.type == "symbol":
|
|
249
|
+
return self._get_node_text(child)
|
|
246
250
|
return None
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
251
|
+
# #'symbol (function quote): tree-sitter-elisp parses `(funcall #'fn ...)`
|
|
252
|
+
# as (special_form (symbol "function") (symbol "fn")). Without this branch
|
|
253
|
+
# funcall/apply targets are dropped, so function_calls never records them
|
|
254
|
+
# and elisp call tests fail (KeyError / missing call edges).
|
|
255
|
+
if node.type == "special_form" and self._form_head(node) == "function":
|
|
256
|
+
named = self._named_children(node)
|
|
257
|
+
if len(named) >= 2 and named[1].type == "symbol":
|
|
258
|
+
return self._get_node_text(named[1])
|
|
259
|
+
return None
|
|
260
|
+
# Some grammar builds expose #'/quote as a `quoted_symbol` node wrapping a
|
|
261
|
+
# single symbol child; cover that variant too.
|
|
262
|
+
named = self._named_children(node)
|
|
263
|
+
if len(named) == 1 and named[0].type == "symbol":
|
|
264
|
+
return self._get_node_text(named[0])
|
|
250
265
|
return None
|
|
251
266
|
|
|
252
267
|
def _quoted_symbol_argument(self, node: Any, index: int = 1) -> Optional[str]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codegraphcontext
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.12
|
|
4
4
|
Summary: An MCP server that indexes local code into a graph database to provide context to AI assistants.
|
|
5
5
|
Author-email: Shashank Shekhar Singh <shashankshekharsingh1205@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -61,7 +61,7 @@ Requires-Dist: falkordblite<0.10,>=0.7; sys_platform != "win32" and python_versi
|
|
|
61
61
|
Requires-Dist: requests>=2.28.0
|
|
62
62
|
Requires-Dist: protobuf<3.21,>=3.20
|
|
63
63
|
Requires-Dist: kuzu; python_version < "3.14" or sys_platform == "linux"
|
|
64
|
-
Requires-Dist: ladybug; sys_platform == "win32" or (sys_platform != "win32" and python_version >= "3.10")
|
|
64
|
+
Requires-Dist: ladybug<0.20,>=0.19; sys_platform == "win32" or (sys_platform != "win32" and python_version >= "3.10")
|
|
65
65
|
Requires-Dist: mcp<2,>=1.0.0
|
|
66
66
|
Requires-Dist: fastapi>=0.100.0
|
|
67
67
|
Requires-Dist: uvicorn>=0.22.0
|
|
@@ -80,7 +80,7 @@ Requires-Dist: redis<6,>=5; extra == "falkordb-remote"
|
|
|
80
80
|
Provides-Extra: kuzu
|
|
81
81
|
Requires-Dist: kuzu; (python_version < "3.14" or sys_platform == "linux") and extra == "kuzu"
|
|
82
82
|
Provides-Extra: ladybug
|
|
83
|
-
Requires-Dist: ladybug; (sys_platform == "win32" or (sys_platform != "win32" and python_version >= "3.10")) and extra == "ladybug"
|
|
83
|
+
Requires-Dist: ladybug<0.20,>=0.19; (sys_platform == "win32" or (sys_platform != "win32" and python_version >= "3.10")) and extra == "ladybug"
|
|
84
84
|
Provides-Extra: neo4j
|
|
85
85
|
Requires-Dist: neo4j>=5.15.0; extra == "neo4j"
|
|
86
86
|
Provides-Extra: gcf
|
|
@@ -388,6 +388,8 @@ CodeGraphContext supports multiple graph database backends to suit your environm
|
|
|
388
388
|
| **Speed** | ⚡ Extremely Fast | ⚡ Fast | 🚀 Scalable | 🌐 Network-dependent |
|
|
389
389
|
| **Persistence**| Yes (to disk) | Yes (to disk) | Yes (to disk) | Yes (server-side) |
|
|
390
390
|
|
|
391
|
+
Embedded KuzuDB/LadybugDB default to a **4 GiB** buffer pool (`CGC_EMBEDDED_BUFFER_POOL_MB`). Set that env var to another MiB value, or `0` for the library default (~80% of system RAM).
|
|
392
|
+
|
|
391
393
|
---
|
|
392
394
|
|
|
393
395
|
## SCIP indexing (optional)
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/requires.txt
RENAMED
|
@@ -28,7 +28,7 @@ kuzu
|
|
|
28
28
|
falkordblite<0.10,>=0.7
|
|
29
29
|
|
|
30
30
|
[:sys_platform == "win32" or (sys_platform != "win32" and python_version >= "3.10")]
|
|
31
|
-
ladybug
|
|
31
|
+
ladybug<0.20,>=0.19
|
|
32
32
|
|
|
33
33
|
[datasources]
|
|
34
34
|
pymysql
|
|
@@ -64,7 +64,7 @@ kuzu
|
|
|
64
64
|
[ladybug]
|
|
65
65
|
|
|
66
66
|
[ladybug:sys_platform == "win32" or (sys_platform != "win32" and python_version >= "3.10")]
|
|
67
|
-
ladybug
|
|
67
|
+
ladybug<0.20,>=0.19
|
|
68
68
|
|
|
69
69
|
[neo4j]
|
|
70
70
|
neo4j>=5.15.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/config_manager.py
RENAMED
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/hook_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/project_config.py
RENAMED
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/registry_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/setup_wizard.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/bundle_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_falkordb.py
RENAMED
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_kuzu.py
RENAMED
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_ladybug.py
RENAMED
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_nornic.py
RENAMED
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/falkor_worker.py
RENAMED
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/graph_query.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tool_definitions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/code_finder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/graph_builder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/__init__.py
RENAMED
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/constants.py
RENAMED
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/pipeline.py
RENAMED
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/pre_scan.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/sanitize.py
RENAMED
|
File without changes
|
{codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/schema.py
RENAMED
|
File without changes
|