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.
Files changed (191) hide show
  1. {codegraphcontext-0.6.10/src/codegraphcontext.egg-info → codegraphcontext-0.6.12}/PKG-INFO +5 -3
  2. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/README.md +2 -0
  3. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/pyproject.toml +3 -3
  4. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_embedded_kuzu.py +208 -6
  5. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/elisp.py +19 -4
  6. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12/src/codegraphcontext.egg-info}/PKG-INFO +5 -3
  7. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/requires.txt +2 -2
  8. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/LICENSE +0 -0
  9. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/MANIFEST.in +0 -0
  10. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/setup.cfg +0 -0
  11. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/__init__.py +0 -0
  12. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/__main__.py +0 -0
  13. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/__init__.py +0 -0
  14. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/app.py +0 -0
  15. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/auth.py +0 -0
  16. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/mcp_sse.py +0 -0
  17. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/router.py +0 -0
  18. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/api/schemas.py +0 -0
  19. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/__init__.py +0 -0
  20. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/cli_helpers.py +0 -0
  21. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/config_manager.py +0 -0
  22. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/hook_manager.py +0 -0
  23. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/main.py +0 -0
  24. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/project_config.py +0 -0
  25. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/registry_commands.py +0 -0
  26. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/setup_macos.py +0 -0
  27. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/setup_wizard.py +0 -0
  28. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/simulator.py +0 -0
  29. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/cli/visualizer.py +0 -0
  30. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/__init__.py +0 -0
  31. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/bundle_registry.py +0 -0
  32. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/cgc_bundle.py +0 -0
  33. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/cgcignore.py +0 -0
  34. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database.py +0 -0
  35. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_falkordb.py +0 -0
  36. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_falkordb_remote.py +0 -0
  37. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_kuzu.py +0 -0
  38. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_ladybug.py +0 -0
  39. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/database_nornic.py +0 -0
  40. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/falkor_worker.py +0 -0
  41. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/graph_query.py +0 -0
  42. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/jobs.py +0 -0
  43. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/simulator.py +0 -0
  44. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/core/watcher.py +0 -0
  45. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/prompts.py +0 -0
  46. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/server.py +0 -0
  47. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/stdlibs.py +0 -0
  48. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tool_definitions.py +0 -0
  49. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/__init__.py +0 -0
  50. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/advanced_language_query_tool.py +0 -0
  51. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/code_finder.py +0 -0
  52. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/datasources/__init__.py +0 -0
  53. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/datasources/cassandra_ingester.py +0 -0
  54. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/datasources/mysql_ingester.py +0 -0
  55. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/datasources/redis_ingester.py +0 -0
  56. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/graph_builder.py +0 -0
  57. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/handlers/analysis_handlers.py +0 -0
  58. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/handlers/indexing_handlers.py +0 -0
  59. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/handlers/management_handlers.py +0 -0
  60. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/handlers/query_handlers.py +0 -0
  61. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/handlers/watcher_handlers.py +0 -0
  62. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/__init__.py +0 -0
  63. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/constants.py +0 -0
  64. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/discovery.py +0 -0
  65. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/embeddings.py +0 -0
  66. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/persistence/__init__.py +0 -0
  67. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/persistence/utils.py +0 -0
  68. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/persistence/writer.py +0 -0
  69. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/pipeline.py +0 -0
  70. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/pre_scan.py +0 -0
  71. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/resolution/__init__.py +0 -0
  72. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/resolution/calls.py +0 -0
  73. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/resolution/inheritance.py +0 -0
  74. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/resolution/post_resolution.py +0 -0
  75. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/sanitize.py +0 -0
  76. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/schema.py +0 -0
  77. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/schema_contract.py +0 -0
  78. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/scip_pipeline.py +0 -0
  79. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/indexing/vector_resolver.py +0 -0
  80. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/c.py +0 -0
  81. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/cpp.py +0 -0
  82. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/csharp.py +0 -0
  83. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/css.py +0 -0
  84. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/dart.py +0 -0
  85. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/elixir.py +0 -0
  86. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/go.py +0 -0
  87. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/gradle.py +0 -0
  88. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/haskell.py +0 -0
  89. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/html.py +0 -0
  90. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/java.py +0 -0
  91. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/javascript.py +0 -0
  92. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/kotlin.py +0 -0
  93. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/lua.py +0 -0
  94. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/maven.py +0 -0
  95. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/mybatis.py +0 -0
  96. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/perl.py +0 -0
  97. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/php.py +0 -0
  98. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/python.py +0 -0
  99. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/ruby.py +0 -0
  100. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/rust.py +0 -0
  101. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/scala.py +0 -0
  102. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/sfc_common.py +0 -0
  103. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/solidity.py +0 -0
  104. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/solidity_remappings.py +0 -0
  105. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/svelte.py +0 -0
  106. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/swift.py +0 -0
  107. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/typescript.py +0 -0
  108. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/typescriptjsx.py +0 -0
  109. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/languages/vue.py +0 -0
  110. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/package_resolver.py +0 -0
  111. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/c_toolkit.py +0 -0
  112. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/cpp_toolkit.py +0 -0
  113. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/csharp_toolkit.py +0 -0
  114. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/dart_toolkit.py +0 -0
  115. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/elisp_toolkit.py +0 -0
  116. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/go_toolkit.py +0 -0
  117. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/haskell_toolkit.py +0 -0
  118. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/java_toolkit.py +0 -0
  119. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/javascript_toolkit.py +0 -0
  120. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/perl_toolkit.py +0 -0
  121. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/python_toolkit.py +0 -0
  122. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/ruby_toolkit.py +0 -0
  123. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/rust_toolkit.py +0 -0
  124. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/scala_toolkit.py +0 -0
  125. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/solidity_toolkit.py +0 -0
  126. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/swift_toolkit.py +0 -0
  127. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/query_tool_languages/typescript_toolkit.py +0 -0
  128. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/report_generator.py +0 -0
  129. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/scip_indexer.py +0 -0
  130. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/scip_pb2.py +0 -0
  131. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/system.py +0 -0
  132. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/tree_sitter_parser.py +0 -0
  133. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/tools/type_utils.py +0 -0
  134. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/cypher_ddl.py +0 -0
  135. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/cypher_readonly.py +0 -0
  136. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/debug_log.py +0 -0
  137. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/gcf_encoder.py +0 -0
  138. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/git_utils.py +0 -0
  139. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/graph_shapes.py +0 -0
  140. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/path_ignore.py +0 -0
  141. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/path_sandbox.py +0 -0
  142. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/repo_path.py +0 -0
  143. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/secret_scanner.py +0 -0
  144. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/tool_limits.py +0 -0
  145. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/tree_sitter_manager.py +0 -0
  146. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/utils/visualize_graph.py +0 -0
  147. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/__vite-browser-external-9wXp6ZBx.js +0 -0
  148. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/function-calls-BtRHrqa2.png +0 -0
  149. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/graph-total-D1fBAugo.png +0 -0
  150. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/hero-graph-2voMJp2a.jpg +0 -0
  151. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/hierarchy-DGADo0YT.png +0 -0
  152. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/index-C-187lf0.js +0 -0
  153. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/index-fNAa6jgv.css +0 -0
  154. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/parser-pyodide.worker-BgsDfaad.js +0 -0
  155. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/parser.worker-_nvrecvj.js +0 -0
  156. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/assets/tree-sitter-qKYAACSa.wasm +0 -0
  157. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/cgcIcon.png +0 -0
  158. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/favicon.ico +0 -0
  159. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/index.html +0 -0
  160. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/logo-icon.svg +0 -0
  161. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/logo.svg +0 -0
  162. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/placeholder.svg +0 -0
  163. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/preview-image.png +0 -0
  164. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/robots.txt +0 -0
  165. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-c.wasm +0 -0
  166. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-c_sharp.wasm +0 -0
  167. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-core.js +0 -0
  168. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-cpp.wasm +0 -0
  169. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-dart.wasm +0 -0
  170. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-go.wasm +0 -0
  171. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-java.wasm +0 -0
  172. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-javascript.wasm +0 -0
  173. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-kotlin.wasm +0 -0
  174. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-perl.wasm +0 -0
  175. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-php.wasm +0 -0
  176. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-python.wasm +0 -0
  177. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-ruby.wasm +0 -0
  178. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-rust.wasm +0 -0
  179. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-swift.wasm +0 -0
  180. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-tsx.wasm +0 -0
  181. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter-typescript.wasm +0 -0
  182. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/tree-sitter.wasm +0 -0
  183. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/web-tree-sitter.js +0 -0
  184. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/dist/wasm/web-tree-sitter.wasm +0 -0
  185. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext/viz/server.py +0 -0
  186. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/SOURCES.txt +0 -0
  187. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/dependency_links.txt +0 -0
  188. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/entry_points.txt +0 -0
  189. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/src/codegraphcontext.egg-info/top_level.txt +0 -0
  190. {codegraphcontext-0.6.10 → codegraphcontext-0.6.12}/tests/test_issue_806_fix.py +0 -0
  191. {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.10
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.10"
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
- info_logger(f"Initializing {spec.display_name} at {self.db_path}")
121
- self._db = backend.Database(self.db_path)
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
- if not self._db.is_closed():
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
- self.conn = self._pool.get()
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
- raise nested_e
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)
@@ -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
- if node.type != "quote":
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
- for child in self._named_children(node):
248
- if child.type == "symbol":
249
- return self._get_node_text(child)
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.10
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)
@@ -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