codegraphcontext 0.6.6__tar.gz → 0.6.8__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 (190) hide show
  1. {codegraphcontext-0.6.6/src/codegraphcontext.egg-info → codegraphcontext-0.6.8}/PKG-INFO +1 -1
  2. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/pyproject.toml +1 -1
  3. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/cli_helpers.py +27 -1
  4. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/graph_builder.py +10 -1
  5. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/schema.py +16 -0
  6. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/scip_pipeline.py +53 -1
  7. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/kotlin.py +15 -2
  8. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/php.py +13 -2
  9. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/ruby.py +20 -5
  10. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8/src/codegraphcontext.egg-info}/PKG-INFO +1 -1
  11. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/LICENSE +0 -0
  12. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/MANIFEST.in +0 -0
  13. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/README.md +0 -0
  14. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/setup.cfg +0 -0
  15. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/__init__.py +0 -0
  16. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/__main__.py +0 -0
  17. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/api/__init__.py +0 -0
  18. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/api/app.py +0 -0
  19. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/api/auth.py +0 -0
  20. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/api/mcp_sse.py +0 -0
  21. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/api/router.py +0 -0
  22. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/api/schemas.py +0 -0
  23. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/__init__.py +0 -0
  24. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/config_manager.py +0 -0
  25. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/hook_manager.py +0 -0
  26. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/main.py +0 -0
  27. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/project_config.py +0 -0
  28. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/registry_commands.py +0 -0
  29. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/setup_macos.py +0 -0
  30. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/setup_wizard.py +0 -0
  31. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/simulator.py +0 -0
  32. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/cli/visualizer.py +0 -0
  33. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/__init__.py +0 -0
  34. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/bundle_registry.py +0 -0
  35. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/cgc_bundle.py +0 -0
  36. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/cgcignore.py +0 -0
  37. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/database.py +0 -0
  38. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/database_embedded_kuzu.py +0 -0
  39. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/database_falkordb.py +0 -0
  40. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/database_falkordb_remote.py +0 -0
  41. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/database_kuzu.py +0 -0
  42. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/database_ladybug.py +0 -0
  43. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/database_nornic.py +0 -0
  44. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/falkor_worker.py +0 -0
  45. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/graph_query.py +0 -0
  46. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/jobs.py +0 -0
  47. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/simulator.py +0 -0
  48. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/core/watcher.py +0 -0
  49. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/prompts.py +0 -0
  50. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/server.py +0 -0
  51. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/stdlibs.py +0 -0
  52. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tool_definitions.py +0 -0
  53. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/__init__.py +0 -0
  54. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/advanced_language_query_tool.py +0 -0
  55. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/code_finder.py +0 -0
  56. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/datasources/__init__.py +0 -0
  57. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/datasources/cassandra_ingester.py +0 -0
  58. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/datasources/mysql_ingester.py +0 -0
  59. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/datasources/redis_ingester.py +0 -0
  60. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/handlers/analysis_handlers.py +0 -0
  61. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/handlers/indexing_handlers.py +0 -0
  62. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/handlers/management_handlers.py +0 -0
  63. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/handlers/query_handlers.py +0 -0
  64. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/handlers/watcher_handlers.py +0 -0
  65. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/__init__.py +0 -0
  66. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/constants.py +0 -0
  67. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/discovery.py +0 -0
  68. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/embeddings.py +0 -0
  69. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/persistence/__init__.py +0 -0
  70. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/persistence/utils.py +0 -0
  71. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/persistence/writer.py +0 -0
  72. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/pipeline.py +0 -0
  73. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/pre_scan.py +0 -0
  74. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/resolution/__init__.py +0 -0
  75. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/resolution/calls.py +0 -0
  76. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/resolution/inheritance.py +0 -0
  77. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/resolution/post_resolution.py +0 -0
  78. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/sanitize.py +0 -0
  79. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/schema_contract.py +0 -0
  80. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/indexing/vector_resolver.py +0 -0
  81. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/c.py +0 -0
  82. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/cpp.py +0 -0
  83. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/csharp.py +0 -0
  84. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/css.py +0 -0
  85. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/dart.py +0 -0
  86. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/elisp.py +0 -0
  87. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/elixir.py +0 -0
  88. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/go.py +0 -0
  89. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/gradle.py +0 -0
  90. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/haskell.py +0 -0
  91. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/html.py +0 -0
  92. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/java.py +0 -0
  93. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/javascript.py +0 -0
  94. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/lua.py +0 -0
  95. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/maven.py +0 -0
  96. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/mybatis.py +0 -0
  97. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/perl.py +0 -0
  98. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/python.py +0 -0
  99. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/rust.py +0 -0
  100. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/scala.py +0 -0
  101. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/sfc_common.py +0 -0
  102. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/solidity.py +0 -0
  103. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/solidity_remappings.py +0 -0
  104. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/svelte.py +0 -0
  105. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/swift.py +0 -0
  106. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/typescript.py +0 -0
  107. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/typescriptjsx.py +0 -0
  108. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/languages/vue.py +0 -0
  109. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/package_resolver.py +0 -0
  110. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/c_toolkit.py +0 -0
  111. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/cpp_toolkit.py +0 -0
  112. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/csharp_toolkit.py +0 -0
  113. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/dart_toolkit.py +0 -0
  114. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/elisp_toolkit.py +0 -0
  115. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/go_toolkit.py +0 -0
  116. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/haskell_toolkit.py +0 -0
  117. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/java_toolkit.py +0 -0
  118. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/javascript_toolkit.py +0 -0
  119. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/perl_toolkit.py +0 -0
  120. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/python_toolkit.py +0 -0
  121. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/ruby_toolkit.py +0 -0
  122. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/rust_toolkit.py +0 -0
  123. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/scala_toolkit.py +0 -0
  124. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/solidity_toolkit.py +0 -0
  125. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/swift_toolkit.py +0 -0
  126. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/query_tool_languages/typescript_toolkit.py +0 -0
  127. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/report_generator.py +0 -0
  128. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/scip_indexer.py +0 -0
  129. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/scip_pb2.py +0 -0
  130. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/system.py +0 -0
  131. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/tree_sitter_parser.py +0 -0
  132. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/tools/type_utils.py +0 -0
  133. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/cypher_ddl.py +0 -0
  134. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/cypher_readonly.py +0 -0
  135. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/debug_log.py +0 -0
  136. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/gcf_encoder.py +0 -0
  137. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/git_utils.py +0 -0
  138. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/path_ignore.py +0 -0
  139. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/path_sandbox.py +0 -0
  140. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/repo_path.py +0 -0
  141. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/secret_scanner.py +0 -0
  142. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/tool_limits.py +0 -0
  143. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/tree_sitter_manager.py +0 -0
  144. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/utils/visualize_graph.py +0 -0
  145. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/assets/__vite-browser-external-9wXp6ZBx.js +0 -0
  146. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/assets/function-calls-BtRHrqa2.png +0 -0
  147. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/assets/graph-total-D1fBAugo.png +0 -0
  148. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/assets/hero-graph-2voMJp2a.jpg +0 -0
  149. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/assets/hierarchy-DGADo0YT.png +0 -0
  150. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/assets/index-C-187lf0.js +0 -0
  151. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/assets/index-fNAa6jgv.css +0 -0
  152. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/assets/parser-pyodide.worker-BgsDfaad.js +0 -0
  153. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/assets/parser.worker-_nvrecvj.js +0 -0
  154. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/assets/tree-sitter-qKYAACSa.wasm +0 -0
  155. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/cgcIcon.png +0 -0
  156. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/favicon.ico +0 -0
  157. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/index.html +0 -0
  158. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/logo-icon.svg +0 -0
  159. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/logo.svg +0 -0
  160. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/placeholder.svg +0 -0
  161. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/preview-image.png +0 -0
  162. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/robots.txt +0 -0
  163. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-c.wasm +0 -0
  164. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-c_sharp.wasm +0 -0
  165. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-core.js +0 -0
  166. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-cpp.wasm +0 -0
  167. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-dart.wasm +0 -0
  168. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-go.wasm +0 -0
  169. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-java.wasm +0 -0
  170. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-javascript.wasm +0 -0
  171. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-kotlin.wasm +0 -0
  172. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-perl.wasm +0 -0
  173. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-php.wasm +0 -0
  174. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-python.wasm +0 -0
  175. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-ruby.wasm +0 -0
  176. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-rust.wasm +0 -0
  177. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-swift.wasm +0 -0
  178. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-tsx.wasm +0 -0
  179. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter-typescript.wasm +0 -0
  180. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/tree-sitter.wasm +0 -0
  181. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/web-tree-sitter.js +0 -0
  182. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/dist/wasm/web-tree-sitter.wasm +0 -0
  183. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext/viz/server.py +0 -0
  184. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext.egg-info/SOURCES.txt +0 -0
  185. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext.egg-info/dependency_links.txt +0 -0
  186. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext.egg-info/entry_points.txt +0 -0
  187. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext.egg-info/requires.txt +0 -0
  188. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/src/codegraphcontext.egg-info/top_level.txt +0 -0
  189. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/tests/test_issue_806_fix.py +0 -0
  190. {codegraphcontext-0.6.6 → codegraphcontext-0.6.8}/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.6
3
+ Version: 0.6.8
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "codegraphcontext"
3
- version = "0.6.6"
3
+ version = "0.6.8"
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"
@@ -351,7 +351,7 @@ def index_helper(path: str, context: Optional[str] = None, no_progress: bool = F
351
351
  file_count = record["file_count"] if record else 0
352
352
 
353
353
  if file_count > 0:
354
- expected = graph_builder.estimate_processing_time(path_obj) if path_obj.is_dir() else None
354
+ expected = graph_builder.estimate_processing_time(path_obj, cgcignore_path=ctx.cgcignore_path) if path_obj.is_dir() else None
355
355
  expected_file_count = expected[0] if expected else None
356
356
  if expected_file_count is None or file_count >= expected_file_count:
357
357
  console.print(f"[yellow]Repository '{path}' is already indexed with {file_count} files. Skipping.[/yellow]")
@@ -361,6 +361,32 @@ def index_helper(path: str, context: Optional[str] = None, no_progress: bool = F
361
361
  console.print(
362
362
  f"[yellow]Repository '{path}' has only {file_count} of {expected_file_count} files indexed. Continuing.[/yellow]"
363
363
  )
364
+ # Name the gap: without this, a pipeline that can never
365
+ # produce nodes for some files loops on the message above
366
+ # forever with nothing actionable (#1673).
367
+ try:
368
+ from codegraphcontext.tools.indexing.discovery import discover_files_to_index
369
+ discovered, _ = discover_files_to_index(
370
+ path_obj,
371
+ cgcignore_path=ctx.cgcignore_path,
372
+ supported_extensions=set(graph_builder.parsers.keys()),
373
+ )
374
+ with db_manager.get_driver().session() as s2:
375
+ res2 = s2.run(
376
+ "MATCH (r:Repository {path: $path})-[:CONTAINS*]->(f:File) RETURN DISTINCT f.path AS p",
377
+ path=repo_path_str,
378
+ )
379
+ have = {row["p"] for row in res2 if row.get("p")}
380
+ missing = [
381
+ str(f) for f in discovered
382
+ if str(f.resolve()) not in have and f.resolve().as_posix() not in have
383
+ ]
384
+ if missing:
385
+ shown = ", ".join(Path(m).name for m in missing[:5])
386
+ more = f" (+{len(missing) - 5} more)" if len(missing) > 5 else ""
387
+ console.print(f"[dim]Missing: {shown}{more}[/dim]")
388
+ except Exception:
389
+ pass
364
390
  else:
365
391
  console.print(f"[yellow]Repository '{path}' exists but has no files (likely interrupted). Re-indexing...[/yellow]")
366
392
  except Exception as e:
@@ -534,7 +534,7 @@ class GraphBuilder:
534
534
  # still reports "Successfully finished indexing".
535
535
  return {"path": str(path), "error": str(e), "parse_failed": True}
536
536
 
537
- def estimate_processing_time(self, path: Path) -> Optional[Tuple[int, float]]:
537
+ def estimate_processing_time(self, path: Path, cgcignore_path: Optional[str] = None) -> Optional[Tuple[int, float]]:
538
538
  """Estimate the time required to index a repository.
539
539
 
540
540
  Parameters
@@ -550,8 +550,13 @@ class GraphBuilder:
550
550
  try:
551
551
  from codegraphcontext.tools.indexing.discovery import discover_files_to_index
552
552
  supported_extensions = set(self.parsers.keys())
553
+ # cgcignore_path must match what the indexing pipelines use:
554
+ # counting files a context-specific ignore excludes made the
555
+ # resume check expect more files than indexing will ever produce
556
+ # ("only N of M files indexed" on every run, #1673).
553
557
  files, _ = discover_files_to_index(
554
558
  path,
559
+ cgcignore_path=cgcignore_path,
555
560
  supported_extensions=supported_extensions,
556
561
  )
557
562
  total_files = len(files)
@@ -566,6 +571,9 @@ class GraphBuilder:
566
571
  ):
567
572
  from . import scip_indexer
568
573
 
574
+ # Reset here too: without it a SCIP run left (and printed) the
575
+ # PREVIOUS Tree-sitter run's summary from the same process (#1673).
576
+ self.last_index_summary = {}
569
577
  await run_scip_index_async(
570
578
  path,
571
579
  is_dependency,
@@ -577,6 +585,7 @@ class GraphBuilder:
577
585
  self.get_parser,
578
586
  scip_indexer,
579
587
  cgcignore_path,
588
+ index_summary=self.last_index_summary,
580
589
  )
581
590
 
582
591
  def _name_from_symbol(self, symbol: str) -> str:
@@ -166,6 +166,22 @@ def create_graph_schema(driver: Any, db_manager: Any) -> None:
166
166
  f"CREATE INDEX {_label.lower()}_name_path IF NOT EXISTS "
167
167
  f"FOR ({_var}:{_label}) ON ({_var}.name, {_var}.path)"
168
168
  )
169
+ # EnumMember, Object, Mixin, Extension and Parameter had index
170
+ # statements only in the is_falkordb branch, so on Neo4j the
171
+ # writer's `MATCH (m:EnumMember {name: …, path: …})` (and the
172
+ # per-label CONTAINS linking generally) was an unavoidable
173
+ # label scan — found while auditing #1653's lookup sites.
174
+ for _extra_label, _extra_var in (
175
+ ("EnumMember", "em"),
176
+ ("Object", "o"),
177
+ ("Mixin", "mx"),
178
+ ("Extension", "ex"),
179
+ ("Parameter", "p"),
180
+ ):
181
+ ddl.run(
182
+ f"CREATE INDEX {_extra_label.lower()}_name_path IF NOT EXISTS "
183
+ f"FOR ({_extra_var}:{_extra_label}) ON ({_extra_var}.name, {_extra_var}.path)"
184
+ )
169
185
 
170
186
  ddl.run("CREATE INDEX function_lang IF NOT EXISTS FOR (f:Function) ON (f.lang)")
171
187
  ddl.run("CREATE INDEX class_lang IF NOT EXISTS FOR (c:Class) ON (c.lang)")
@@ -42,6 +42,7 @@ async def run_scip_index_async(
42
42
  get_parser: Callable[[str], Any],
43
43
  scip_indexer_mod: Any,
44
44
  cgcignore_path: Optional[str] = None,
45
+ index_summary: Optional[dict] = None,
45
46
  ) -> None:
46
47
  """Run SCIP CLI, write graph, supplement with Tree-sitter, write SCIP CALLS edges."""
47
48
  ScipIndexer = scip_indexer_mod.ScipIndexer
@@ -171,7 +172,18 @@ async def run_scip_index_async(
171
172
  except Exception as e:
172
173
  debug_log(f"Tree-sitter supplement failed for {abs_path_str}: {e}")
173
174
 
174
- writer.add_file_to_graph(file_data, repo_name, imports_map)
175
+ try:
176
+ writer.add_file_to_graph(file_data, repo_name, imports_map)
177
+ except Exception as e:
178
+ # One unwritable file must not abort the run, and it must
179
+ # still be accounted for — otherwise the graph stays short of
180
+ # the discovery census and `cgc index` reports "only N of M
181
+ # files indexed. Continuing." on every run, forever (#1673).
182
+ warning_logger(f"SCIP file write failed for {abs_path_str}: {e}; recording minimal node")
183
+ try:
184
+ writer.add_minimal_file_node(Path(abs_path_str), index_root, is_dependency)
185
+ except Exception as e2:
186
+ debug_log(f"Minimal node fallback also failed for {abs_path_str}: {e2}")
175
187
 
176
188
  processed += 1
177
189
  if job_id:
@@ -236,6 +248,14 @@ async def run_scip_index_async(
236
248
  try:
237
249
  ts_data = ts_parser.parse(repo_file, is_dependency, index_source=True)
238
250
  if "error" in ts_data:
251
+ # Same accounting rule as the Tree-sitter pipeline: a file
252
+ # that failed to parse still gets a minimal File node so
253
+ # the graph count converges with discovery (#1673).
254
+ await asyncio.to_thread(
255
+ writer.add_minimal_file_node, repo_file, index_root, is_dependency
256
+ )
257
+ minimal_nodes += 1
258
+ processed += 1
239
259
  continue
240
260
  ts_data["repo_path"] = str(index_root)
241
261
  ts_data.setdefault("function_calls_scip", [])
@@ -251,6 +271,14 @@ async def run_scip_index_async(
251
271
  )
252
272
  except Exception as e:
253
273
  debug_log(f"Tree-sitter supplement (non-SCIP file) failed for {abs_str}: {e}")
274
+ try:
275
+ await asyncio.to_thread(
276
+ writer.add_minimal_file_node, repo_file, index_root, is_dependency
277
+ )
278
+ minimal_nodes += 1
279
+ processed += 1
280
+ except Exception as e2:
281
+ debug_log(f"Minimal node fallback also failed for {abs_str}: {e2}")
254
282
  if supplemented:
255
283
  # Re-run pre_scan with the expanded file list so imports_map is complete
256
284
  all_paths = [Path(p) for p in files_data.keys() if Path(p).exists()]
@@ -284,6 +312,30 @@ async def run_scip_index_async(
284
312
 
285
313
  writer.write_scip_call_edges(files_data, name_from_symbol)
286
314
 
315
+ # CLI-facing summary — the SCIP path never populated one, so
316
+ # `cgc index` finished silently with no file/function/class report
317
+ # at all (#1673).
318
+ if index_summary is not None:
319
+ from collections import Counter
320
+ extension_counts = Counter()
321
+ for fp in files_data.keys():
322
+ suffix = Path(fp).suffix or Path(fp).name
323
+ extension_counts[suffix] += 1
324
+ index_summary.clear()
325
+ index_summary.update({
326
+ "total_scanned_files": len(files_data) + minimal_nodes,
327
+ "files_by_extension": dict(extension_counts),
328
+ "function_nodes": sum(
329
+ 1 for fd in all_file_data for fn in fd.get("functions", [])
330
+ if fn.get("name") != "<module>"
331
+ ),
332
+ "class_nodes": sum(len(fd.get("classes", [])) for fd in all_file_data),
333
+ "call_edges": sum(len(g) for g in resolved_calls),
334
+ "serialization_seconds": 0.0,
335
+ "failed_files": 0,
336
+ "minimal_file_nodes": minimal_nodes,
337
+ })
338
+
287
339
  if job_id:
288
340
  job_manager.update_job(job_id, status=JobStatus.COMPLETED, end_time=datetime.now())
289
341
 
@@ -169,7 +169,10 @@ class KotlinTreeSitterParser:
169
169
  return (
170
170
  self._get_node_text(name_node) if name_node else None,
171
171
  curr.type,
172
- curr.start_point[0] + 1,
172
+ # The name node's line, not the node's: an annotated
173
+ # declaration starts at its annotation, and consumers join
174
+ # this against the function's line_number (#1660).
175
+ (name_node.start_point[0] + 1) if name_node else (curr.start_point[0] + 1),
173
176
  )
174
177
  if curr.type in ("class_declaration", "interface_declaration", "object_declaration"):
175
178
  for child in curr.children:
@@ -177,7 +180,7 @@ class KotlinTreeSitterParser:
177
180
  return (
178
181
  self._get_node_text(child),
179
182
  curr.type,
180
- curr.start_point[0] + 1,
183
+ child.start_point[0] + 1,
181
184
  )
182
185
  # Check for secondary constructors
183
186
  if curr.type == "secondary_constructor":
@@ -1330,6 +1333,12 @@ class KotlinTreeSitterParser:
1330
1333
 
1331
1334
  if name_node:
1332
1335
  func_name = self._get_node_text(name_node)
1336
+ # Annotations/modifiers are children of the declaration
1337
+ # node, so node.start_point is the ANNOTATION line for
1338
+ # any annotated function. The name node sits on the
1339
+ # declaration proper — the established convention
1340
+ # (python decorated_definition, csharp #1659, #1660).
1341
+ start_line = name_node.start_point[0] + 1
1333
1342
 
1334
1343
  params_node = None
1335
1344
  for child in node.children:
@@ -1457,6 +1466,10 @@ class KotlinTreeSitterParser:
1457
1466
  for child in node.children:
1458
1467
  if child.type in ("type_identifier", "simple_identifier"):
1459
1468
  class_name = self._get_node_text(child)
1469
+ # Same convention as functions: an annotated
1470
+ # class node starts at its annotation line;
1471
+ # report the declaration line (#1660).
1472
+ start_line = child.start_point[0] + 1
1460
1473
  break
1461
1474
 
1462
1475
  source_text = self._get_node_text(node)
@@ -162,7 +162,10 @@ class PhpTreeSitterParser:
162
162
  return (
163
163
  self._get_node_text(name_node) if name_node else None,
164
164
  curr.type,
165
- curr.start_point[0] + 1,
165
+ # Name-node line: attributed declarations start at their
166
+ # #[Attribute], and consumers join this against the
167
+ # declaration's line_number (#1660).
168
+ (name_node.start_point[0] + 1) if name_node else (curr.start_point[0] + 1),
166
169
  )
167
170
  curr = curr.parent
168
171
  return None, None, None
@@ -189,7 +192,7 @@ class PhpTreeSitterParser:
189
192
  if curr.type in ("class_declaration", "interface_declaration", "trait_declaration", "enum_declaration"):
190
193
  name_node = curr.child_by_field_name("name")
191
194
  name = self._get_node_text(name_node) if name_node else None
192
- return (name, curr.start_point[0] + 1) if name else None
195
+ return (name, name_node.start_point[0] + 1) if name else None
193
196
  curr = curr.parent
194
197
  return None
195
198
 
@@ -245,6 +248,11 @@ class PhpTreeSitterParser:
245
248
  name_node = node.child_by_field_name("name")
246
249
  if name_node:
247
250
  func_name = self._get_node_text(name_node)
251
+ # #[Attribute] lines are part of the declaration node,
252
+ # so node.start_point is the attribute line; report the
253
+ # declaration proper (python/csharp/kotlin convention,
254
+ # #1660).
255
+ start_line = name_node.start_point[0] + 1
248
256
 
249
257
  params_node = node.child_by_field_name("parameters")
250
258
  parameters = []
@@ -321,6 +329,9 @@ class PhpTreeSitterParser:
321
329
  name_node = node.child_by_field_name("name")
322
330
  if name_node:
323
331
  type_name = self._get_node_text(name_node)
332
+ # Same convention as functions: attributes are children
333
+ # of the declaration node (#1660).
334
+ start_line = name_node.start_point[0] + 1
324
335
  source_text = self._get_node_text(node)
325
336
 
326
337
  bases = []
@@ -49,6 +49,14 @@ RUBY_QUERIES = {
49
49
  left: (instance_variable) @name
50
50
  right: (_) @value
51
51
  )
52
+ (assignment
53
+ left: (class_variable) @name
54
+ right: (_) @value
55
+ )
56
+ (assignment
57
+ left: (global_variable) @name
58
+ right: (_) @value
59
+ )
52
60
  """,
53
61
  "comments": """
54
62
  (comment) @comment
@@ -537,7 +545,12 @@ class RubyTreeSitterParser:
537
545
  while current and current.type != 'assignment':
538
546
  current = current.parent
539
547
  if current:
540
- assignment_id = id(current)
548
+ # id() of a tree-sitter node is a fresh wrapper each
549
+ # access (n1 == n2 while id(n1) != id(n2)), which split
550
+ # the @name/@value captures of ONE assignment into two
551
+ # buckets — value was always None (#1660). Key on the
552
+ # node's span instead.
553
+ assignment_id = (current.start_byte, current.end_byte)
541
554
  if assignment_id not in captures_by_assignment:
542
555
  captures_by_assignment[assignment_id] = {'node': current, 'name': None, 'value': None}
543
556
  captures_by_assignment[assignment_id]['name'] = self._get_node_text(node)
@@ -547,7 +560,7 @@ class RubyTreeSitterParser:
547
560
  while current and current.type != 'assignment':
548
561
  current = current.parent
549
562
  if current:
550
- assignment_id = id(current)
563
+ assignment_id = (current.start_byte, current.end_byte)
551
564
  if assignment_id not in captures_by_assignment:
552
565
  captures_by_assignment[assignment_id] = {'node': current, 'name': None, 'value': None}
553
566
  captures_by_assignment[assignment_id]['value'] = self._get_node_text(node)
@@ -560,10 +573,12 @@ class RubyTreeSitterParser:
560
573
  if name:
561
574
  # Determine variable type based on name prefix
562
575
  var_type = "local"
563
- if name.startswith("@"):
564
- var_type = "instance"
565
- elif name.startswith("@@"):
576
+ # @@ must be tested before @: startswith("@") matches
577
+ # "@@count" too, which left the class branch dead (#1660).
578
+ if name.startswith("@@"):
566
579
  var_type = "class"
580
+ elif name.startswith("@"):
581
+ var_type = "instance"
567
582
  elif name.startswith("$"):
568
583
  var_type = "global"
569
584
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codegraphcontext
3
- Version: 0.6.6
3
+ Version: 0.6.8
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