code-graph-rag 0.0.421__tar.gz → 0.0.484__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 (266) hide show
  1. {code_graph_rag-0.0.421/code_graph_rag.egg-info → code_graph_rag-0.0.484}/PKG-INFO +3 -3
  2. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/PYPI_README.md +2 -2
  3. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/README.md +13 -5
  4. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484/code_graph_rag.egg-info}/PKG-INFO +3 -3
  5. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/code_graph_rag.egg-info/SOURCES.txt +41 -0
  6. code_graph_rag-0.0.484/codebase_rag/__init__.py +1 -0
  7. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_analyzer.py +1 -2
  8. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +31 -0
  9. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +34 -0
  10. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +46 -0
  11. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +28 -0
  12. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +25 -0
  13. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +37 -0
  14. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +56 -0
  15. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +31 -0
  16. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +29 -0
  17. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +27 -0
  18. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +25 -0
  19. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +35 -0
  20. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +53 -0
  21. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +83 -0
  22. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +45 -0
  23. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +127 -0
  24. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +57 -0
  25. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +47 -0
  26. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +59 -0
  27. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +65 -0
  28. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +78 -0
  29. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +34 -0
  30. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +20 -0
  31. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +24 -0
  32. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +27 -0
  33. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +29 -0
  34. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +30 -0
  35. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +32 -0
  36. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +35 -0
  37. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +24 -0
  38. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +40 -0
  39. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +23 -0
  40. code_graph_rag-0.0.484/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +22 -0
  41. code_graph_rag-0.0.484/codebase_rag/ast_cache.py +92 -0
  42. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/capture.py +2 -3
  43. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/cli.py +11 -7
  44. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/cli_help.py +1 -1
  45. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/config.py +16 -19
  46. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_cpp.py +23 -9
  47. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_csharp.py +15 -18
  48. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_dart.py +59 -27
  49. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_go.py +13 -10
  50. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_js.py +16 -17
  51. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_lua.py +0 -2
  52. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_nodes.py +5 -19
  53. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_php.py +1 -2
  54. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_python.py +7 -13
  55. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_rust.py +21 -31
  56. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_scala.py +1 -2
  57. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/build.py +0 -3
  58. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/cli.py +7 -21
  59. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/core.py +8 -25
  60. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/deadcode_roots.py +7 -0
  61. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/deps.py +2 -10
  62. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/fqn_specs.py +17 -44
  63. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/graph.py +51 -15
  64. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/lang_tooling.py +0 -9
  65. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/languages.py +20 -12
  66. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/mcp.py +0 -6
  67. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/providers.py +2 -3
  68. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/security.py +1 -2
  69. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/stdlib_types.py +18 -19
  70. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/structural.py +5 -5
  71. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/cypher_queries.py +49 -3
  72. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/dead_code.py +88 -86
  73. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/embedder.py +3 -3
  74. code_graph_rag-0.0.484/codebase_rag/function_registry.py +264 -0
  75. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/graph_audit.py +5 -5
  76. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/graph_updater.py +598 -416
  77. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/language_spec.py +11 -12
  78. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/logs.py +21 -0
  79. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/main.py +72 -17
  80. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/mcp/server.py +15 -9
  81. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/mcp/tools.py +32 -26
  82. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/models.py +7 -0
  83. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parser_fingerprint.py +12 -13
  84. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parser_loader.py +10 -11
  85. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/ast_grep_tier.py +11 -8
  86. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/call_processor.py +1133 -341
  87. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/call_resolver.py +164 -82
  88. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/class_ingest/method_override.py +10 -11
  89. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/class_ingest/mixin.py +112 -26
  90. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/class_ingest/parent_extraction.py +41 -0
  91. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/cpp/preproc_recovery.py +32 -38
  92. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/cpp/type_inference.py +63 -64
  93. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/cpp/utils.py +269 -29
  94. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/cpp_frontend/constants.py +3 -3
  95. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/cpp_frontend/frontend.py +113 -58
  96. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/cpp_frontend/qn.py +5 -5
  97. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/csharp/type_inference.py +38 -40
  98. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/csharp/utils.py +2 -2
  99. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/csharp_frontend/frontend.py +5 -6
  100. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/dart/type_inference.py +7 -8
  101. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/dart/utils.py +64 -12
  102. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/definition_processor.py +25 -4
  103. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/dependency_parser.py +6 -6
  104. code_graph_rag-0.0.484/codebase_rag/parsers/endpoint_prefixes.py +490 -0
  105. code_graph_rag-0.0.484/codebase_rag/parsers/endpoint_routes.py +817 -0
  106. code_graph_rag-0.0.484/codebase_rag/parsers/endpoints.py +601 -0
  107. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/export_detection.py +13 -15
  108. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/factory.py +2 -0
  109. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/flow_access/processor.py +13 -9
  110. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/function_ingest.py +296 -184
  111. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/go/module_paths.py +10 -11
  112. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/go/type_inference.py +18 -18
  113. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/go/utils.py +11 -11
  114. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/import_processor.py +114 -107
  115. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/io_access/constants.py +17 -6
  116. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/io_access/descriptor.py +68 -55
  117. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/io_access/extract.py +200 -61
  118. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/io_access/models.py +6 -3
  119. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/io_access/processor.py +448 -129
  120. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/io_access/registry.py +84 -70
  121. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/java/method_resolver.py +26 -26
  122. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/java/type_inference.py +6 -6
  123. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/java/type_resolver.py +5 -5
  124. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/java/utils.py +8 -8
  125. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/java/variable_analyzer.py +13 -13
  126. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/js_ts/ingest.py +17 -22
  127. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/js_ts/module_system.py +3 -3
  128. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/js_ts/type_inference.py +2 -2
  129. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/py/ast_analyzer.py +17 -17
  130. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/py/expression_analyzer.py +13 -17
  131. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/py/type_inference.py +5 -6
  132. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/py/variable_analyzer.py +12 -12
  133. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/python_source_roots.py +18 -21
  134. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/rs/type_inference.py +29 -30
  135. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/rs/utils.py +7 -7
  136. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/stdlib_extractor.py +5 -6
  137. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/structure_processor.py +13 -3
  138. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/type_inference.py +57 -51
  139. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/utils.py +88 -57
  140. code_graph_rag-0.0.484/codebase_rag/path_filters.py +23 -0
  141. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/readme_sections.py +2 -2
  142. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/services/filtering.py +3 -0
  143. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/services/graph_service.py +64 -3
  144. code_graph_rag-0.0.484/codebase_rag/services/resource_cleanup.py +44 -0
  145. code_graph_rag-0.0.484/codebase_rag/services/usage_cost.py +32 -0
  146. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/stack/constants.py +2 -0
  147. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/stack/health.py +3 -2
  148. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/stack/manager.py +4 -8
  149. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tool_errors.py +5 -0
  150. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/ast_grep_service.py +5 -6
  151. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/code_retrieval.py +41 -3
  152. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/file_editor.py +9 -3
  153. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/semantic_search.py +55 -6
  154. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/shell_command.py +19 -9
  155. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/structural_editor.py +2 -3
  156. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/tool_descriptions.py +2 -1
  157. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/types_defs.py +18 -8
  158. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/unixcoder.py +4 -4
  159. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/utils/path_utils.py +39 -2
  160. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/vector_store.py +151 -34
  161. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/pyproject.toml +10 -10
  162. code_graph_rag-0.0.421/codec/__init__.py +0 -0
  163. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/LICENSE +0 -0
  164. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/cgr/__init__.py +0 -0
  165. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/code_graph_rag.egg-info/dependency_links.txt +0 -0
  166. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/code_graph_rag.egg-info/entry_points.txt +0 -0
  167. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/code_graph_rag.egg-info/requires.txt +0 -0
  168. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/code_graph_rag.egg-info/top_level.txt +0 -0
  169. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/__init__.py +0 -0
  170. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
  171. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
  172. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
  173. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
  174. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
  175. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
  176. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
  177. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
  178. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
  179. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
  180. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
  181. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
  182. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/cgr_state.py +0 -0
  183. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/__init__.py +0 -0
  184. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/ast_java.py +0 -0
  185. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/constants/health.py +0 -0
  186. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/decorators.py +0 -0
  187. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/docker-compose.yaml +0 -0
  188. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/exceptions.py +0 -0
  189. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/graph_loader.py +0 -0
  190. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/mcp/__init__.py +0 -0
  191. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/mcp/client.py +0 -0
  192. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/__init__.py +0 -0
  193. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
  194. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
  195. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
  196. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/class_ingest/identity.py +0 -0
  197. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
  198. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
  199. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/class_ingest/utils.py +0 -0
  200. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/cpp/__init__.py +0 -0
  201. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
  202. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/csharp/__init__.py +0 -0
  203. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
  204. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
  205. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
  206. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
  207. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/dart/__init__.py +0 -0
  208. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/flow_access/__init__.py +0 -0
  209. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/flow_access/constants.py +0 -0
  210. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/go/__init__.py +0 -0
  211. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/__init__.py +0 -0
  212. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/base.py +0 -0
  213. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/cpp.py +0 -0
  214. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/java.py +0 -0
  215. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/js_ts.py +0 -0
  216. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/lua.py +0 -0
  217. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/php.py +0 -0
  218. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/protocol.py +0 -0
  219. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/python.py +0 -0
  220. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/registry.py +0 -0
  221. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/handlers/rust.py +0 -0
  222. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/io_access/__init__.py +0 -0
  223. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/java/__init__.py +0 -0
  224. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/js_ts/__init__.py +0 -0
  225. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/js_ts/utils.py +0 -0
  226. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/lua/__init__.py +0 -0
  227. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/lua/type_inference.py +0 -0
  228. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/lua/utils.py +0 -0
  229. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/py/__init__.py +0 -0
  230. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/py/utils.py +0 -0
  231. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/parsers/rs/__init__.py +0 -0
  232. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/prompts.py +0 -0
  233. {code_graph_rag-0.0.421/codebase_rag → code_graph_rag-0.0.484/codebase_rag/providers}/__init__.py +0 -0
  234. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/providers/base.py +0 -0
  235. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/providers/litellm.py +0 -0
  236. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/schema_builder.py +0 -0
  237. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/schemas.py +0 -0
  238. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/services/__init__.py +0 -0
  239. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/services/anthropic_token_counter.py +0 -0
  240. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/services/llm.py +0 -0
  241. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/services/protobuf_service.py +0 -0
  242. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/stack/__init__.py +0 -0
  243. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/stack/cli.py +0 -0
  244. {code_graph_rag-0.0.421/codebase_rag/providers → code_graph_rag-0.0.484/codebase_rag/tools}/__init__.py +0 -0
  245. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/codebase_query.py +0 -0
  246. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/directory_lister.py +0 -0
  247. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/file_reader.py +0 -0
  248. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/file_writer.py +0 -0
  249. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/health_checker.py +0 -0
  250. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/language.py +0 -0
  251. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/tools/structural_search.py +0 -0
  252. {code_graph_rag-0.0.421/codebase_rag/tools → code_graph_rag-0.0.484/codebase_rag/utils}/__init__.py +0 -0
  253. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/utils/dependencies.py +0 -0
  254. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/utils/fqn_resolver.py +0 -0
  255. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/utils/rich_markdown.py +0 -0
  256. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/utils/source_extraction.py +0 -0
  257. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/utils/token_utils.py +0 -0
  258. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/workspaces/__init__.py +0 -0
  259. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/workspaces/cli.py +0 -0
  260. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/workspaces/constants.py +0 -0
  261. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/workspaces/models.py +0 -0
  262. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codebase_rag/workspaces/storage.py +0 -0
  263. {code_graph_rag-0.0.421/codebase_rag/utils → code_graph_rag-0.0.484/codec}/__init__.py +0 -0
  264. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codec/schema_pb2.py +0 -0
  265. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/codec/schema_pb2.pyi +0 -0
  266. {code_graph_rag-0.0.421 → code_graph_rag-0.0.484}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.0.421
3
+ Version: 0.0.484
4
4
  Summary: The ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs
5
5
  License-Expression: MIT
6
6
  Keywords: rag,retrieval-augmented-generation,knowledge-graph,code-analysis,tree-sitter,mcp,mcp-server,llm,graph-database,semantic-search,codebase,memgraph,developer-tools,monorepo
@@ -84,7 +84,7 @@ A graph-based RAG system that parses multi-language codebases with Tree-sitter,
84
84
  pip install code-graph-rag
85
85
  ```
86
86
 
87
- With all Tree-sitter grammars (Python, JS, TS, Rust, Go, Java, Scala, C++, Lua):
87
+ With all Tree-sitter grammars (Python, JS, TS, Rust, Go, Java, Scala, C, C++, C#, PHP, Lua, Dart):
88
88
 
89
89
  ```bash
90
90
  pip install 'code-graph-rag[treesitter-full]'
@@ -237,7 +237,7 @@ Configure via `.env` or environment variables:
237
237
  |----------|---------|-------------|
238
238
  | `MEMGRAPH_HOST` | `localhost` | Memgraph hostname |
239
239
  | `MEMGRAPH_PORT` | `7687` | Memgraph port |
240
- | `ORCHESTRATOR_PROVIDER` | | Provider: `google`, `openai`, `ollama` |
240
+ | `ORCHESTRATOR_PROVIDER` | | Provider: `google`, `openai`, `anthropic`, `azure`, `ollama`, `minimax`, `litellm_proxy` |
241
241
  | `ORCHESTRATOR_MODEL` | | Model ID (e.g. `gpt-4o`, `gemini-2.5-pro`) |
242
242
  | `ORCHESTRATOR_API_KEY` | | API key for the provider (not needed for `ollama`) |
243
243
  | `CYPHER_PROVIDER` | | Provider for Cypher generation |
@@ -8,7 +8,7 @@ A graph-based RAG system that parses multi-language codebases with Tree-sitter,
8
8
  pip install code-graph-rag
9
9
  ```
10
10
 
11
- With all Tree-sitter grammars (Python, JS, TS, Rust, Go, Java, Scala, C++, Lua):
11
+ With all Tree-sitter grammars (Python, JS, TS, Rust, Go, Java, Scala, C, C++, C#, PHP, Lua, Dart):
12
12
 
13
13
  ```bash
14
14
  pip install 'code-graph-rag[treesitter-full]'
@@ -161,7 +161,7 @@ Configure via `.env` or environment variables:
161
161
  |----------|---------|-------------|
162
162
  | `MEMGRAPH_HOST` | `localhost` | Memgraph hostname |
163
163
  | `MEMGRAPH_PORT` | `7687` | Memgraph port |
164
- | `ORCHESTRATOR_PROVIDER` | | Provider: `google`, `openai`, `ollama` |
164
+ | `ORCHESTRATOR_PROVIDER` | | Provider: `google`, `openai`, `anthropic`, `azure`, `ollama`, `minimax`, `litellm_proxy` |
165
165
  | `ORCHESTRATOR_MODEL` | | Model ID (e.g. `gpt-4o`, `gemini-2.5-pro`) |
166
166
  | `ORCHESTRATOR_API_KEY` | | API key for the provider (not needed for `ollama`) |
167
167
  | `CYPHER_PROVIDER` | | Provider for Cypher generation |
@@ -20,14 +20,15 @@
20
20
  <img src="https://img.shields.io/github/forks/vitali87/code-graph-rag?style=social" alt="GitHub forks" />
21
21
  </a>
22
22
  -->
23
- <!-- Codecov, SonarCloud, and OpenSSF Scorecard badges are fed by GitHub-side CI. Uncomment once that CI is confirmed to publish to these services again.
23
+ <a href="https://github.com/vitali87/code-graph-rag/actions/workflows/ci.yml">
24
+ <img src="https://img.shields.io/github/actions/workflow/status/vitali87/code-graph-rag/ci.yml?branch=main" alt="CI" />
25
+ </a>
24
26
  <a href="https://codecov.io/gh/vitali87/code-graph-rag">
25
27
  <img src="https://codecov.io/gh/vitali87/code-graph-rag/graph/badge.svg" alt="Codecov" />
26
28
  </a>
27
29
  <a href="https://sonarcloud.io/summary/overall?id=vitali87_code-graph-rag">
28
30
  <img src="https://sonarcloud.io/api/project_badges/measure?project=vitali87_code-graph-rag&metric=alert_status" alt="Quality Gate Status" />
29
31
  </a>
30
- -->
31
32
  <!--
32
33
  <a href="https://mseep.ai/app/vitali87-code-graph-rag">
33
34
  <img src="https://mseep.net/pr/vitali87-code-graph-rag-badge.png" alt="MseeP.ai Security Assessment" height="20" />
@@ -36,14 +37,21 @@
36
37
  <a href="https://code-graph-rag.com">
37
38
  <img src="https://img.shields.io/badge/Enterprise-Support%20%26%20Services-6366f1" alt="Enterprise Support" />
38
39
  </a>
40
+ <a href="https://pypi.org/project/code-graph-rag/">
41
+ <img src="https://img.shields.io/pypi/v/code-graph-rag" alt="PyPI Version" />
42
+ </a>
39
43
  <a href="https://pepy.tech/projects/code-graph-rag">
40
44
  <img src="https://static.pepy.tech/personalized-badge/code-graph-rag?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads" alt="PyPI Downloads" />
41
45
  </a>
42
- <!-- OpenSSF Scorecard only tracks GitHub-hosted repos. Uncomment once the Scorecard workflow is confirmed running on the authoritative GitHub repo.
46
+ <a href="https://skillsllm.com/security-check/DHsMGRb1Ysys">
47
+ <img src="https://skillsllm.com/security-check/badge.svg?owner=vitali87&repo=code-graph-rag" alt="SkillsLLM Security Check" />
48
+ </a>
43
49
  <a href="https://scorecard.dev/viewer/?uri=github.com/vitali87/code-graph-rag">
44
50
  <img src="https://api.scorecard.dev/projects/github.com/vitali87/code-graph-rag/badge" alt="OpenSSF Scorecard" />
45
51
  </a>
46
- -->
52
+ <a href="https://www.bestpractices.dev/projects/13757">
53
+ <img src="https://www.bestpractices.dev/projects/13757/badge" alt="OpenSSF Best Practices" />
54
+ </a>
47
55
  <!--
48
56
  <a href="https://gitcgr.com/vitali87/code-graph-rag">
49
57
  <img src="https://gitcgr.com/badge/vitali87/code-graph-rag.svg" alt="gitcgr" />
@@ -98,7 +106,7 @@ See the [Architecture Overview](docs/architecture/overview.md) and [Graph Schema
98
106
 
99
107
  ## Supported Languages
100
108
 
101
- Python, TypeScript, TSX, JavaScript, Rust, Go, Java, C, C++, C#, PHP, Lua, and Dart are fully supported. Scala is in development. See the [Language Support](docs/architecture/language-support.md) matrix for per-language capabilities.
109
+ Python, TypeScript, TSX, JavaScript, Rust, Go, Java, C, C++, C#, PHP, Lua, and Dart are fully supported. Scala is in development, and Ruby has structural support (modules, functions, classes, and imports) through the pluggable ast-grep tier. See the [Language Support](docs/architecture/language-support.md) matrix for per-language capabilities.
102
110
 
103
111
  ## Installation
104
112
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-graph-rag
3
- Version: 0.0.421
3
+ Version: 0.0.484
4
4
  Summary: The ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs
5
5
  License-Expression: MIT
6
6
  Keywords: rag,retrieval-augmented-generation,knowledge-graph,code-analysis,tree-sitter,mcp,mcp-server,llm,graph-database,semantic-search,codebase,memgraph,developer-tools,monorepo
@@ -84,7 +84,7 @@ A graph-based RAG system that parses multi-language codebases with Tree-sitter,
84
84
  pip install code-graph-rag
85
85
  ```
86
86
 
87
- With all Tree-sitter grammars (Python, JS, TS, Rust, Go, Java, Scala, C++, Lua):
87
+ With all Tree-sitter grammars (Python, JS, TS, Rust, Go, Java, Scala, C, C++, C#, PHP, Lua, Dart):
88
88
 
89
89
  ```bash
90
90
  pip install 'code-graph-rag[treesitter-full]'
@@ -237,7 +237,7 @@ Configure via `.env` or environment variables:
237
237
  |----------|---------|-------------|
238
238
  | `MEMGRAPH_HOST` | `localhost` | Memgraph hostname |
239
239
  | `MEMGRAPH_PORT` | `7687` | Memgraph port |
240
- | `ORCHESTRATOR_PROVIDER` | | Provider: `google`, `openai`, `ollama` |
240
+ | `ORCHESTRATOR_PROVIDER` | | Provider: `google`, `openai`, `anthropic`, `azure`, `ollama`, `minimax`, `litellm_proxy` |
241
241
  | `ORCHESTRATOR_MODEL` | | Model ID (e.g. `gpt-4o`, `gemini-2.5-pro`) |
242
242
  | `ORCHESTRATOR_API_KEY` | | API key for the provider (not needed for `ollama`) |
243
243
  | `CYPHER_PROVIDER` | | Provider for Cypher generation |
@@ -10,6 +10,7 @@ code_graph_rag.egg-info/entry_points.txt
10
10
  code_graph_rag.egg-info/requires.txt
11
11
  code_graph_rag.egg-info/top_level.txt
12
12
  codebase_rag/__init__.py
13
+ codebase_rag/ast_cache.py
13
14
  codebase_rag/capture.py
14
15
  codebase_rag/cgr_state.py
15
16
  codebase_rag/cli.py
@@ -21,6 +22,7 @@ codebase_rag/decorators.py
21
22
  codebase_rag/docker-compose.yaml
22
23
  codebase_rag/embedder.py
23
24
  codebase_rag/exceptions.py
25
+ codebase_rag/function_registry.py
24
26
  codebase_rag/graph_audit.py
25
27
  codebase_rag/graph_loader.py
26
28
  codebase_rag/graph_updater.py
@@ -30,6 +32,7 @@ codebase_rag/main.py
30
32
  codebase_rag/models.py
31
33
  codebase_rag/parser_fingerprint.py
32
34
  codebase_rag/parser_loader.py
35
+ codebase_rag/path_filters.py
33
36
  codebase_rag/prompts.py
34
37
  codebase_rag/readme_sections.py
35
38
  codebase_rag/schema_builder.py
@@ -40,16 +43,49 @@ codebase_rag/unixcoder.py
40
43
  codebase_rag/vector_store.py
41
44
  codebase_rag/analyzers/__init__.py
42
45
  codebase_rag/analyzers/ast_grep_analyzer.py
46
+ codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml
47
+ codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml
48
+ codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml
49
+ codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml
50
+ codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml
51
+ codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml
43
52
  codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml
53
+ codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml
54
+ codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml
44
55
  codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml
56
+ codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml
57
+ codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml
58
+ codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml
45
59
  codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml
46
60
  codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml
61
+ codebase_rag/analyzers/ast_grep_rules/security/c.yaml
62
+ codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml
63
+ codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml
64
+ codebase_rag/analyzers/ast_grep_rules/security/dart.yaml
65
+ codebase_rag/analyzers/ast_grep_rules/security/go.yaml
66
+ codebase_rag/analyzers/ast_grep_rules/security/java.yaml
47
67
  codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml
68
+ codebase_rag/analyzers/ast_grep_rules/security/lua.yaml
69
+ codebase_rag/analyzers/ast_grep_rules/security/php.yaml
48
70
  codebase_rag/analyzers/ast_grep_rules/security/python.yaml
71
+ codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml
72
+ codebase_rag/analyzers/ast_grep_rules/security/rust.yaml
73
+ codebase_rag/analyzers/ast_grep_rules/security/scala.yaml
49
74
  codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml
50
75
  codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml
76
+ codebase_rag/analyzers/ast_grep_rules/smells/c.yaml
77
+ codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml
78
+ codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml
79
+ codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml
80
+ codebase_rag/analyzers/ast_grep_rules/smells/go.yaml
81
+ codebase_rag/analyzers/ast_grep_rules/smells/java.yaml
51
82
  codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml
83
+ codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml
84
+ codebase_rag/analyzers/ast_grep_rules/smells/php.yaml
52
85
  codebase_rag/analyzers/ast_grep_rules/smells/python.yaml
86
+ codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml
87
+ codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml
88
+ codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml
53
89
  codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml
54
90
  codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml
55
91
  codebase_rag/constants/__init__.py
@@ -90,6 +126,9 @@ codebase_rag/parsers/call_processor.py
90
126
  codebase_rag/parsers/call_resolver.py
91
127
  codebase_rag/parsers/definition_processor.py
92
128
  codebase_rag/parsers/dependency_parser.py
129
+ codebase_rag/parsers/endpoint_prefixes.py
130
+ codebase_rag/parsers/endpoint_routes.py
131
+ codebase_rag/parsers/endpoints.py
93
132
  codebase_rag/parsers/export_detection.py
94
133
  codebase_rag/parsers/factory.py
95
134
  codebase_rag/parsers/function_ingest.py
@@ -185,6 +224,8 @@ codebase_rag/services/filtering.py
185
224
  codebase_rag/services/graph_service.py
186
225
  codebase_rag/services/llm.py
187
226
  codebase_rag/services/protobuf_service.py
227
+ codebase_rag/services/resource_cleanup.py
228
+ codebase_rag/services/usage_cost.py
188
229
  codebase_rag/stack/__init__.py
189
230
  codebase_rag/stack/cli.py
190
231
  codebase_rag/stack/constants.py
@@ -0,0 +1 @@
1
+ """Code Graph RAG: build a queryable graph of a codebase and reason over it."""
@@ -174,8 +174,7 @@ class FindingAnalyzer:
174
174
  start_line = node_range.start.line + 1
175
175
  end_line = node_range.end.line + 1
176
176
  # qn scopes the finding to file+line+column+rule so two matches of one
177
- # rule on the same line stay distinct, while re-indexing merges the
178
- # same site idempotently.
177
+ # rule on one line stay distinct, while re-indexing merges the site.
179
178
  qualified_name = cs.SEPARATOR_DOT.join(
180
179
  [module_qn, str(start_line), str(node_range.start.column), rule.rule_id]
181
180
  )
@@ -0,0 +1,31 @@
1
+ # ast-grep design-pattern rules for C (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. C has no classic OO patterns, so these are heuristic
4
+ # function-name idioms recognised via the declarator identifier.
5
+ ast_grep_id: c
6
+ extensions: [.c, .h]
7
+ rules:
8
+ - id: constructor_like
9
+ message: "Constructor idiom: function name starts with create/make/new/alloc"
10
+ rule:
11
+ kind: function_definition
12
+ has:
13
+ kind: function_declarator
14
+ stopBy: end
15
+ has: { field: declarator, kind: identifier, regex: '^(create|make|new|alloc)' }
16
+ - id: initializer_like
17
+ message: "Initializer idiom: function name starts with init"
18
+ rule:
19
+ kind: function_definition
20
+ has:
21
+ kind: function_declarator
22
+ stopBy: end
23
+ has: { field: declarator, kind: identifier, regex: '^init' }
24
+ - id: destructor_like
25
+ message: "Destructor idiom: function name starts with free/destroy/release"
26
+ rule:
27
+ kind: function_definition
28
+ has:
29
+ kind: function_declarator
30
+ stopBy: end
31
+ has: { field: declarator, kind: identifier, regex: '^(free|destroy|release)' }
@@ -0,0 +1,34 @@
1
+ # ast-grep design-pattern rules for C++ (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. Rules are heuristic and syntactic.
4
+ ast_grep_id: cpp
5
+ extensions: [.cpp, .cc, .cxx, .hpp, .hh]
6
+ rules:
7
+ - id: singleton
8
+ message: "Singleton: class exposes a static getInstance accessor"
9
+ rule:
10
+ kind: function_definition
11
+ all:
12
+ - has: { kind: storage_class_specifier, regex: '^static$', stopBy: end }
13
+ - has:
14
+ kind: function_declarator
15
+ has: { field: declarator, regex: '^getInstance$' }
16
+ stopBy: end
17
+ - id: factory_function
18
+ message: "Factory function: name starts with create/make/build"
19
+ rule:
20
+ kind: function_definition
21
+ has:
22
+ kind: function_declarator
23
+ has: { field: declarator, regex: '^(create|make|build)' }
24
+ stopBy: end
25
+ - id: abstract_class
26
+ message: "Abstract class: declares a pure virtual method (= 0)"
27
+ rule:
28
+ kind: class_specifier
29
+ has:
30
+ kind: field_declaration
31
+ all:
32
+ - has: { regex: '^virtual$', stopBy: end }
33
+ - regex: '=\s*0\s*;'
34
+ stopBy: end
@@ -0,0 +1,46 @@
1
+ # ast-grep design-pattern rules for C# (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. Rules are heuristic and syntactic.
4
+ ast_grep_id: csharp
5
+ extensions: [.cs]
6
+ rules:
7
+ - id: singleton
8
+ message: "Singleton: class exposes a static Instance member"
9
+ rule:
10
+ kind: class_declaration
11
+ has:
12
+ stopBy: end
13
+ any:
14
+ # static property named Instance / _instance
15
+ - kind: property_declaration
16
+ all:
17
+ - has: { kind: modifier, regex: '^static$', stopBy: end }
18
+ - has: { kind: identifier, regex: '^_?[Ii]nstance$', stopBy: end }
19
+ # static backing field named Instance / _instance
20
+ - kind: field_declaration
21
+ all:
22
+ - has: { kind: modifier, regex: '^static$', stopBy: end }
23
+ - has: { kind: identifier, regex: '^_?[Ii]nstance$', stopBy: end }
24
+ - id: factory_method
25
+ message: "Factory method: name starts with Create/Make/Build"
26
+ rule:
27
+ kind: method_declaration
28
+ has: { field: name, regex: '^(Create|Make|Build)' }
29
+ - id: builder
30
+ message: "Builder: class name ends with Builder"
31
+ rule:
32
+ kind: class_declaration
33
+ has: { field: name, regex: 'Builder$' }
34
+ - id: abstract_class
35
+ message: "Abstract base class: declared with the abstract modifier"
36
+ rule:
37
+ kind: class_declaration
38
+ has: { kind: modifier, regex: '^abstract$' }
39
+ - id: disposable
40
+ message: "Disposable: class defines a Dispose method"
41
+ rule:
42
+ kind: class_declaration
43
+ has:
44
+ stopBy: end
45
+ kind: method_declaration
46
+ has: { field: name, regex: '^Dispose$' }
@@ -0,0 +1,28 @@
1
+ # ast-grep design-pattern rules for Dart (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. Rules are heuristic and syntactic.
4
+ ast_grep_id: dart
5
+ extensions: [.dart]
6
+ rules:
7
+ - id: factory_constructor
8
+ message: "Factory: class exposes a factory constructor"
9
+ rule:
10
+ kind: factory_constructor_signature
11
+ - id: singleton
12
+ message: "Singleton: class holds a static instance field"
13
+ rule:
14
+ kind: class_declaration
15
+ has:
16
+ kind: static_final_declaration
17
+ stopBy: end
18
+ has: { kind: identifier, regex: '(?i)instance' }
19
+ - id: builder
20
+ message: "Builder: class name ends in Builder"
21
+ rule:
22
+ kind: class_declaration
23
+ has: { field: name, regex: 'Builder$' }
24
+ - id: abstract_class
25
+ message: "Abstract class declares an interface for subclasses"
26
+ rule:
27
+ kind: class_declaration
28
+ regex: '^abstract\s'
@@ -0,0 +1,25 @@
1
+ # ast-grep design-pattern rules for Go (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. Rules are heuristic and syntactic.
4
+ ast_grep_id: go
5
+ extensions: [.go]
6
+ rules:
7
+ - id: constructor
8
+ message: "Constructor: function name starts with New"
9
+ rule:
10
+ kind: function_declaration
11
+ has: { field: name, regex: '^New' }
12
+ - id: factory_function
13
+ message: "Factory function: name starts with New/Make/Build/Create"
14
+ rule:
15
+ kind: function_declaration
16
+ has: { field: name, regex: '^(New|Make|Build|Create)' }
17
+ - id: singleton
18
+ message: "Singleton: struct embeds sync.Once to guard one-time init"
19
+ rule:
20
+ kind: struct_type
21
+ has: { kind: qualified_type, regex: 'sync\.Once', stopBy: end }
22
+ - id: interface_declaration
23
+ message: "Interface: a behavioural contract declared for satisfaction"
24
+ rule:
25
+ kind: interface_type
@@ -0,0 +1,37 @@
1
+ # ast-grep design-pattern rules for Java (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. Rules are heuristic and syntactic.
4
+ ast_grep_id: java
5
+ extensions: [.java]
6
+ rules:
7
+ - id: singleton
8
+ message: "Singleton: class exposes a static getInstance accessor"
9
+ rule:
10
+ kind: class_declaration
11
+ has:
12
+ kind: method_declaration
13
+ stopBy: end
14
+ all:
15
+ - has: { kind: modifiers, has: { regex: '^static$' } }
16
+ - has: { field: name, regex: '^getInstance$' }
17
+ - id: factory_method
18
+ message: "Factory method: name starts with create/make/build/newInstance"
19
+ rule:
20
+ kind: method_declaration
21
+ has: { field: name, regex: '^(create|make|build|newInstance)' }
22
+ - id: builder
23
+ message: "Builder: class name ends with Builder"
24
+ rule:
25
+ kind: class_declaration
26
+ has: { field: name, regex: 'Builder$' }
27
+ - id: fluent_builder
28
+ message: "Fluent builder: instance method returns this"
29
+ rule:
30
+ kind: method_declaration
31
+ has:
32
+ kind: block
33
+ has:
34
+ kind: return_statement
35
+ has: { kind: this }
36
+ stopBy: end
37
+ stopBy: end
@@ -0,0 +1,56 @@
1
+ # ast-grep design-pattern rules for Lua (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. Rules are heuristic and syntactic.
4
+ ast_grep_id: lua
5
+ extensions: [.lua]
6
+ rules:
7
+ - id: metatable_oop
8
+ message: "Metatable OOP: setmetatable() wires a table to its class table"
9
+ rule:
10
+ kind: function_call
11
+ has: { kind: identifier, regex: '^setmetatable$' }
12
+ - id: index_metatable
13
+ message: "Class table: __index assigned for prototype-style inheritance"
14
+ rule:
15
+ kind: assignment_statement
16
+ has:
17
+ kind: dot_index_expression
18
+ has: { field: field, regex: '^__index$' }
19
+ stopBy: end
20
+ - id: factory_function
21
+ # Decide on the function NAME only. The old `stopBy: end` scanned the whole
22
+ # body, so a function merely calling `results.new(...)` was flagged. Match a
23
+ # bare name (`function create()`) or the last segment of a dotted name
24
+ # (`function results.new()`), never an identifier deep in the body.
25
+ message: "Factory function: name starts with new/create/make"
26
+ rule:
27
+ kind: function_declaration
28
+ has:
29
+ any:
30
+ - all:
31
+ - kind: identifier
32
+ - regex: '^(new|create|make)'
33
+ - all:
34
+ - kind: dot_index_expression
35
+ - has: { field: field, regex: '^(new|create|make)' }
36
+ # Colon syntax `function Class:new()` is the idiomatic Lua constructor;
37
+ # its name is a method_index_expression, not a dot_index_expression.
38
+ - all:
39
+ - kind: method_index_expression
40
+ - has: { field: method, regex: '^(new|create|make)' }
41
+ - id: module_return
42
+ # The idiomatic module export is the TOP-LEVEL trailing `return M`, not
43
+ # every `return x` inside a function; exclude returns nested in a function.
44
+ message: "Module pattern: chunk returns a single table variable"
45
+ rule:
46
+ kind: return_statement
47
+ all:
48
+ - has:
49
+ kind: expression_list
50
+ has: { kind: identifier, nthChild: 1 }
51
+ - not:
52
+ inside:
53
+ any:
54
+ - kind: function_declaration
55
+ - kind: function_definition
56
+ stopBy: end
@@ -0,0 +1,31 @@
1
+ # ast-grep design-pattern rules for PHP (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. Rules are heuristic and syntactic.
4
+ ast_grep_id: php
5
+ extensions: [.php]
6
+ rules:
7
+ - id: singleton
8
+ message: "Singleton: class exposes a static getInstance accessor"
9
+ rule:
10
+ kind: class_declaration
11
+ has:
12
+ kind: method_declaration
13
+ stopBy: end
14
+ all:
15
+ - has: { kind: static_modifier }
16
+ - has: { field: name, regex: '^getInstance$' }
17
+ - id: factory_function
18
+ message: "Factory function: name starts with create/make/build"
19
+ rule:
20
+ kind: function_definition
21
+ has: { field: name, regex: '^(create|make|build)' }
22
+ - id: factory_method
23
+ message: "Factory method: name starts with create/make/build"
24
+ rule:
25
+ kind: method_declaration
26
+ has: { field: name, regex: '^(create|make|build)' }
27
+ - id: abstract_class
28
+ message: "Abstract class: declared with the abstract modifier"
29
+ rule:
30
+ kind: class_declaration
31
+ has: { kind: abstract_modifier }
@@ -0,0 +1,29 @@
1
+ # ast-grep design-pattern rules for Ruby (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. Rules are heuristic and syntactic.
4
+ ast_grep_id: ruby
5
+ extensions: [.rb]
6
+ rules:
7
+ - id: singleton
8
+ message: "Singleton: class mixes in the Singleton module"
9
+ rule:
10
+ pattern: "include Singleton"
11
+ - id: factory_method
12
+ message: "Factory: class method named create/build/make"
13
+ rule:
14
+ any:
15
+ # def self.create ...
16
+ - kind: singleton_method
17
+ has: { field: name, regex: '^(create|build|make)' }
18
+ # class << self; def create ...
19
+ - kind: method
20
+ all:
21
+ - has: { field: name, regex: '^(create|build|make)' }
22
+ - inside: { kind: singleton_class, stopBy: end }
23
+ - id: module_mixin
24
+ message: "Module mixin: behavior shared via include/extend"
25
+ rule:
26
+ kind: call
27
+ has:
28
+ field: method
29
+ regex: '^(include|extend|prepend)$'
@@ -0,0 +1,27 @@
1
+ # ast-grep design-pattern rules for Rust (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. Rules are heuristic and syntactic.
4
+ ast_grep_id: rust
5
+ extensions: [.rs]
6
+ rules:
7
+ - id: constructor_new
8
+ message: "Constructor: associated fn new returning Self"
9
+ rule:
10
+ kind: function_item
11
+ all:
12
+ - has: { field: name, regex: '^new$' }
13
+ - has: { field: return_type, regex: '^Self$' }
14
+ - id: factory_function
15
+ message: "Factory function: name starts with new/build/create/make"
16
+ rule:
17
+ kind: function_item
18
+ has: { field: name, regex: '^(new|build|create|make)' }
19
+ - id: trait_impl
20
+ message: "Trait implementation: impl Trait for Type"
21
+ rule:
22
+ kind: impl_item
23
+ has: { field: trait, regex: '.' }
24
+ - id: trait_definition
25
+ message: "Trait definition declares an interface"
26
+ rule:
27
+ kind: trait_item
@@ -0,0 +1,25 @@
1
+ # ast-grep design-pattern rules for Scala (issue #413).
2
+ # Each match becomes a Pattern node linked to the file's Module via
3
+ # IMPLEMENTS_PATTERN. Rules are heuristic and syntactic.
4
+ ast_grep_id: scala
5
+ extensions: [.scala, .sc]
6
+ rules:
7
+ - id: singleton_object
8
+ message: "Singleton: object declares a single shared instance"
9
+ rule:
10
+ kind: object_definition
11
+ - id: case_class
12
+ message: "Case class: immutable value type with generated equality"
13
+ rule:
14
+ kind: class_definition
15
+ regex: '^case\s+class'
16
+ - id: companion_factory
17
+ message: "Factory: apply method builds instances of the type"
18
+ rule:
19
+ kind: function_definition
20
+ has: { field: name, regex: '^apply$' }
21
+ - id: factory_method
22
+ message: "Factory method: name starts with make/create/build"
23
+ rule:
24
+ kind: function_definition
25
+ has: { field: name, regex: '^(make|create|build)' }
@@ -0,0 +1,35 @@
1
+ # ast-grep security rules for C (issue #413).
2
+ # Each match becomes a SecurityIssue node linked to the file's Module via
3
+ # HAS_VULNERABILITY. Rules favour recall; treat findings as review prompts.
4
+ ast_grep_id: c
5
+ extensions: [.c, .h]
6
+ rules:
7
+ - id: dangerous_string_fn
8
+ message: "Unbounded string function (gets/strcpy/strcat/sprintf) risks buffer overflow"
9
+ rule:
10
+ kind: call_expression
11
+ has: { field: function, regex: '^(gets|strcpy|strcat|sprintf|vsprintf|scanf)$' }
12
+ - id: command_execution
13
+ message: "Possible command injection via system/popen/exec* call"
14
+ rule:
15
+ kind: call_expression
16
+ has: { field: function, regex: '^(system|popen|execl|execlp|execle|execv|execvp|execvpe)$' }
17
+ - id: hardcoded_secret
18
+ # Security rule: favour recall. Target name matches a credential word and the
19
+ # value is a non-trivial string literal (>=10 chars) that is not a printf-style
20
+ # format template. Handles both `char *password = "..."` (pointer_declarator)
21
+ # and `T token = "..."` (plain identifier) via a stopBy-end identifier probe.
22
+ message: "Hardcoded secret assigned to a credential-named variable"
23
+ rule:
24
+ kind: init_declarator
25
+ all:
26
+ - has: { stopBy: end, kind: identifier, regex: '(?i)(password|secret|api_key|token)' }
27
+ - has:
28
+ field: value
29
+ all:
30
+ - kind: string_literal
31
+ - regex: '^.{10,}$'
32
+ - not:
33
+ any:
34
+ - regex: '\{[^{}]*\}'
35
+ - regex: '%[sdrifeEgGxXoc(]'