cg-code-graph 0.13.0__tar.gz → 0.15.0__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 (328) hide show
  1. cg_code_graph-0.15.0/PKG-INFO +99 -0
  2. cg_code_graph-0.15.0/README.md +73 -0
  3. cg_code_graph-0.15.0/cg_code_graph.egg-info/PKG-INFO +99 -0
  4. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/cg_code_graph.egg-info/SOURCES.txt +13 -0
  5. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/cg_code_graph.egg-info/requires.txt +3 -0
  6. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/__init__.py +1 -1
  7. cg_code_graph-0.15.0/codegraph/affected.py +328 -0
  8. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/agent_rules.py +48 -6
  9. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/agents.py +16 -5
  10. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/cli.py +80 -0
  11. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/config.py +1 -1
  12. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/detect.py +3 -0
  13. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/extractors.py +58 -3
  14. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/coverage.py +3 -3
  15. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/doctor.py +23 -11
  16. cg_code_graph-0.15.0/codegraph/explore.py +481 -0
  17. cg_code_graph-0.15.0/codegraph/hooks.py +625 -0
  18. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/indexer.py +2 -1
  19. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/mcp_server.py +90 -6
  20. cg_code_graph-0.15.0/codegraph/plugins/astro/plugin.py +126 -0
  21. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/extractor/extract.mjs +73 -17
  22. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/extractor/fw.mjs +7 -6
  23. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/plugin.py +22 -12
  24. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/query.py +97 -8
  25. cg_code_graph-0.15.0/codegraph/viz/__init__.py +0 -0
  26. cg_code_graph-0.15.0/codegraph/watch.py +221 -0
  27. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/pyproject.toml +1 -0
  28. cg_code_graph-0.15.0/tests/test_affected.py +257 -0
  29. cg_code_graph-0.15.0/tests/test_agents_install.py +240 -0
  30. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_agents_md.py +1 -1
  31. cg_code_graph-0.15.0/tests/test_astro.py +235 -0
  32. cg_code_graph-0.15.0/tests/test_explore.py +160 -0
  33. cg_code_graph-0.15.0/tests/test_hooks.py +400 -0
  34. cg_code_graph-0.15.0/tests/test_js_runtime.py +182 -0
  35. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_packaging.py +1 -1
  36. cg_code_graph-0.15.0/tests/test_ts_src_tsconfig.py +90 -0
  37. cg_code_graph-0.15.0/tests/test_watch.py +331 -0
  38. cg_code_graph-0.13.0/PKG-INFO +0 -84
  39. cg_code_graph-0.13.0/README.md +0 -60
  40. cg_code_graph-0.13.0/cg_code_graph.egg-info/PKG-INFO +0 -84
  41. cg_code_graph-0.13.0/tests/test_agents_install.py +0 -123
  42. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/LICENSE +0 -0
  43. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/MANIFEST.in +0 -0
  44. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/cg_code_graph.egg-info/dependency_links.txt +0 -0
  45. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/cg_code_graph.egg-info/entry_points.txt +0 -0
  46. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/cg_code_graph.egg-info/top_level.txt +0 -0
  47. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/aitools.py +0 -0
  48. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/android_ipc.py +0 -0
  49. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/apple_ipc.py +0 -0
  50. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/apps.py +0 -0
  51. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/blindspots.py +0 -0
  52. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/bridges.py +0 -0
  53. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/brokers.py +0 -0
  54. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/concepts.py +0 -0
  55. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/__init__.py +0 -0
  56. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/cache.py +0 -0
  57. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/fsutil.py +0 -0
  58. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/generated.py +0 -0
  59. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/model.py +0 -0
  60. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/paths.py +0 -0
  61. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/plugin.py +0 -0
  62. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/store.py +0 -0
  63. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/syntax_errors.py +0 -0
  64. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/dart_isolates.py +0 -0
  65. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/external.py +0 -0
  66. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/graphql.py +0 -0
  67. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/jobs.py +0 -0
  68. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/link.py +0 -0
  69. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/lint_async.py +0 -0
  70. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/local_ipc.py +0 -0
  71. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/local_sockets.py +0 -0
  72. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/parity.py +0 -0
  73. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/parity_structure.py +0 -0
  74. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/payload.py +0 -0
  75. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plans.py +0 -0
  76. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/platform_scan.py +0 -0
  77. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/platforms.py +0 -0
  78. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/__init__.py +0 -0
  79. {cg_code_graph-0.13.0/codegraph/plugins/cfamily → cg_code_graph-0.15.0/codegraph/plugins/astro}/__init__.py +0 -0
  80. {cg_code_graph-0.13.0/codegraph/plugins/dart → cg_code_graph-0.15.0/codegraph/plugins/cfamily}/__init__.py +0 -0
  81. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/cfamily/plugin.py +0 -0
  82. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/cfamily/syntax.py +0 -0
  83. {cg_code_graph-0.13.0/codegraph/plugins/django → cg_code_graph-0.15.0/codegraph/plugins/dart}/__init__.py +0 -0
  84. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/bridges.py +0 -0
  85. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/extractor/bin/extract.dart +0 -0
  86. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/extractor/pubspec.lock +0 -0
  87. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/extractor/pubspec.yaml +0 -0
  88. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/http.py +0 -0
  89. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/models.py +0 -0
  90. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/plugin.py +0 -0
  91. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/program.py +0 -0
  92. {cg_code_graph-0.13.0/codegraph/plugins/express → cg_code_graph-0.15.0/codegraph/plugins/django}/__init__.py +0 -0
  93. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/extras.py +0 -0
  94. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/models.py +0 -0
  95. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/plugin.py +0 -0
  96. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/schemas.py +0 -0
  97. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/shapes.py +0 -0
  98. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/urls.py +0 -0
  99. {cg_code_graph-0.13.0/codegraph/plugins/flutter → cg_code_graph-0.15.0/codegraph/plugins/express}/__init__.py +0 -0
  100. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/express/plugin.py +0 -0
  101. {cg_code_graph-0.13.0/codegraph/plugins/kotlin → cg_code_graph-0.15.0/codegraph/plugins/flutter}/__init__.py +0 -0
  102. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/flutter/plugin.py +0 -0
  103. {cg_code_graph-0.13.0/codegraph/plugins/laravel → cg_code_graph-0.15.0/codegraph/plugins/kotlin}/__init__.py +0 -0
  104. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/kotlin/exact.py +0 -0
  105. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/kotlin/plugin.py +0 -0
  106. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/kotlin/reparse.py +0 -0
  107. {cg_code_graph-0.13.0/codegraph/plugins/native → cg_code_graph-0.15.0/codegraph/plugins/laravel}/__init__.py +0 -0
  108. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/laravel/broadcast.py +0 -0
  109. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/laravel/plugin.py +0 -0
  110. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/laravel/tests.py +0 -0
  111. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/laravel/values.py +0 -0
  112. {cg_code_graph-0.13.0/codegraph/plugins/nest → cg_code_graph-0.15.0/codegraph/plugins/native}/__init__.py +0 -0
  113. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/native/gates.py +0 -0
  114. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/native/runner.py +0 -0
  115. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/native/scipread.py +0 -0
  116. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/native/ts.py +0 -0
  117. {cg_code_graph-0.13.0/codegraph/plugins/nextjs → cg_code_graph-0.15.0/codegraph/plugins/nest}/__init__.py +0 -0
  118. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/nest/plugin.py +0 -0
  119. {cg_code_graph-0.13.0/codegraph/plugins/nuxt → cg_code_graph-0.15.0/codegraph/plugins/nextjs}/__init__.py +0 -0
  120. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/nextjs/plugin.py +0 -0
  121. {cg_code_graph-0.13.0/codegraph/plugins/php → cg_code_graph-0.15.0/codegraph/plugins/nuxt}/__init__.py +0 -0
  122. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/nuxt/plugin.py +0 -0
  123. {cg_code_graph-0.13.0/codegraph/plugins/python → cg_code_graph-0.15.0/codegraph/plugins/php}/__init__.py +0 -0
  124. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/external.py +0 -0
  125. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/extractor/composer.json +0 -0
  126. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/extractor/composer.lock +0 -0
  127. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/extractor/extract.php +0 -0
  128. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/gating.py +0 -0
  129. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/plugin.py +0 -0
  130. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/strings.py +0 -0
  131. {cg_code_graph-0.13.0/codegraph/plugins/pyweb → cg_code_graph-0.15.0/codegraph/plugins/python}/__init__.py +0 -0
  132. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/aitools.py +0 -0
  133. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/external.py +0 -0
  134. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/fields.py +0 -0
  135. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/plugin.py +0 -0
  136. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/refs.py +0 -0
  137. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/roots.py +0 -0
  138. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/socketio.py +0 -0
  139. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/subproc.py +0 -0
  140. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/tests.py +0 -0
  141. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/values.py +0 -0
  142. {cg_code_graph-0.13.0/codegraph/plugins/rust → cg_code_graph-0.15.0/codegraph/plugins/pyweb}/__init__.py +0 -0
  143. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/pyweb/plugin.py +0 -0
  144. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/pyweb/values.py +0 -0
  145. {cg_code_graph-0.13.0/codegraph/plugins/scip → cg_code_graph-0.15.0/codegraph/plugins/rust}/__init__.py +0 -0
  146. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/rust/cargo.py +0 -0
  147. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/rust/plugin.py +0 -0
  148. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/rust/syntax.py +0 -0
  149. {cg_code_graph-0.13.0/codegraph/plugins/stubs → cg_code_graph-0.15.0/codegraph/plugins/scip}/__init__.py +0 -0
  150. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/scip/importer.py +0 -0
  151. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/scip/scip.proto +0 -0
  152. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/scip/scip_pb2.py +0 -0
  153. {cg_code_graph-0.13.0/codegraph/plugins/swift → cg_code_graph-0.15.0/codegraph/plugins/stubs}/__init__.py +0 -0
  154. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/stubs/plugins.py +0 -0
  155. {cg_code_graph-0.13.0/codegraph/plugins/ts → cg_code_graph-0.15.0/codegraph/plugins/swift}/__init__.py +0 -0
  156. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/swift/baseurl.py +0 -0
  157. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/swift/exact.py +0 -0
  158. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/swift/indexstore.py +0 -0
  159. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/swift/packages.py +0 -0
  160. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/swift/plugin.py +0 -0
  161. {cg_code_graph-0.13.0/codegraph/plugins/tsweb → cg_code_graph-0.15.0/codegraph/plugins/ts}/__init__.py +0 -0
  162. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/baseurl.py +0 -0
  163. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/extractor/package-lock.json +0 -0
  164. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/extractor/package.json +0 -0
  165. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/nav.py +0 -0
  166. {cg_code_graph-0.13.0/codegraph/viz → cg_code_graph-0.15.0/codegraph/plugins/tsweb}/__init__.py +0 -0
  167. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/tsweb/common.py +0 -0
  168. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/tsweb/data.py +0 -0
  169. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/__init__.py +0 -0
  170. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/c_cpp.yaml +0 -0
  171. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/common.yaml +0 -0
  172. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/dart.yaml +0 -0
  173. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/django-ninja.yaml +0 -0
  174. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/django.yaml +0 -0
  175. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/djangorestframework.yaml +0 -0
  176. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/express.yaml +0 -0
  177. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/kotlin.yaml +0 -0
  178. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/laravel.yaml +0 -0
  179. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/nest.yaml +0 -0
  180. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/nextjs.yaml +0 -0
  181. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/nuxt.yaml +0 -0
  182. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/php.yaml +0 -0
  183. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/python.yaml +0 -0
  184. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/rust.yaml +0 -0
  185. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/swift.yaml +0 -0
  186. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/typescript.yaml +0 -0
  187. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/process_runs.py +0 -0
  188. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/protocols/__init__.py +0 -0
  189. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/protocols/builtin.py +0 -0
  190. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/protocols/matchers.py +0 -0
  191. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/protocols/view.py +0 -0
  192. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/realtime.py +0 -0
  193. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/realtime_events.py +0 -0
  194. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/realtime_native.py +0 -0
  195. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/realtime_ws.py +0 -0
  196. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/roundtrip.py +0 -0
  197. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/routes.py +0 -0
  198. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/rpc.py +0 -0
  199. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/sdk_systems.py +0 -0
  200. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/sockets.py +0 -0
  201. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/starters.py +0 -0
  202. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/tests_index.py +0 -0
  203. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/udp_apps.py +0 -0
  204. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/graph.py +0 -0
  205. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/server.py +0 -0
  206. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/app.css +0 -0
  207. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/app.js +0 -0
  208. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/index.html +0 -0
  209. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/layered.js +0 -0
  210. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/vendor/VERSIONS.txt +0 -0
  211. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/vendor/cose-base.js +0 -0
  212. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/vendor/cytoscape-fcose.js +0 -0
  213. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/vendor/cytoscape.min.js +0 -0
  214. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/vendor/layout-base.js +0 -0
  215. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/tools/package-lock.json +0 -0
  216. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/tools/package.json +0 -0
  217. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/tools/shoot.mjs +0 -0
  218. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/webhooks.py +0 -0
  219. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/xcode.py +0 -0
  220. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/setup.cfg +0 -0
  221. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ai_tools.py +0 -0
  222. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_android_ipc.py +0 -0
  223. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_apple_ipc.py +0 -0
  224. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_bridges.py +0 -0
  225. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_bridges_pigeon_monorepo.py +0 -0
  226. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_brokers.py +0 -0
  227. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_cache_clean.py +0 -0
  228. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_cache_invalidation.py +0 -0
  229. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_channels_tests.py +0 -0
  230. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_cli_output.py +0 -0
  231. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_completeness.py +0 -0
  232. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_config_extras.py +0 -0
  233. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_coverage.py +0 -0
  234. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_coverage_ts_hint.py +0 -0
  235. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_dart_isolates.py +0 -0
  236. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_dispatch_interfaces.py +0 -0
  237. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_django_flutter.py +0 -0
  238. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_docs_links.py +0 -0
  239. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_enum_constants.py +0 -0
  240. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_external.py +0 -0
  241. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_gating.py +0 -0
  242. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_generated.py +0 -0
  243. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_graphql.py +0 -0
  244. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_impact_overrides.py +0 -0
  245. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_index_isolation.py +0 -0
  246. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_inherited_overrides.py +0 -0
  247. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_jobs.py +0 -0
  248. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_js_refs.py +0 -0
  249. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin.py +0 -0
  250. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_binding.py +0 -0
  251. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_exact.py +0 -0
  252. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_fields.py +0 -0
  253. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_mixed.py +0 -0
  254. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_nav_consts.py +0 -0
  255. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_props.py +0 -0
  256. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_laravel_determinism.py +0 -0
  257. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_laravel_resources.py +0 -0
  258. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_lint_async.py +0 -0
  259. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_local_ipc.py +0 -0
  260. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_local_sockets.py +0 -0
  261. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_mcp.py +0 -0
  262. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_mcp_index.py +0 -0
  263. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_native_cfamily.py +0 -0
  264. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_native_concurrency.py +0 -0
  265. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_native_rust.py +0 -0
  266. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_nuxt_import_dirs.py +0 -0
  267. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_nuxt_rootsrc.py +0 -0
  268. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_parity.py +0 -0
  269. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_parity_structure.py +0 -0
  270. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_php_props.py +0 -0
  271. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_plain_js.py +0 -0
  272. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_plans.py +0 -0
  273. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_platform_gaps.py +0 -0
  274. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_platform_type_variants.py +0 -0
  275. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_platforms.py +0 -0
  276. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_platforms_apple.py +0 -0
  277. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_presets_config.py +0 -0
  278. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_process_ipc.py +0 -0
  279. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_process_runs.py +0 -0
  280. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_protocols.py +0 -0
  281. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_app_tests_module.py +0 -0
  282. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_collection_chains.py +0 -0
  283. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_compat.py +0 -0
  284. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_entry_refs.py +0 -0
  285. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_fields.py +0 -0
  286. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_infer_cycles.py +0 -0
  287. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_roots.py +0 -0
  288. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_subprocess_tests.py +0 -0
  289. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_tests.py +0 -0
  290. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_web_hosts.py +0 -0
  291. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_web_routes.py +0 -0
  292. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_web_routes_more.py +0 -0
  293. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_realtime.py +0 -0
  294. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_realtime_native.py +0 -0
  295. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_roundtrip.py +0 -0
  296. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_route_tables.py +0 -0
  297. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_routes_search_explain.py +0 -0
  298. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_rpc.py +0 -0
  299. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_scip_health.py +0 -0
  300. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_sdk_external.py +0 -0
  301. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_snippet.py +0 -0
  302. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_sockets.py +0 -0
  303. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_starters_budget.py +0 -0
  304. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift.py +0 -0
  305. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_binding.py +0 -0
  306. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_exact.py +0 -0
  307. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_facts.py +0 -0
  308. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_fields.py +0 -0
  309. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_modules.py +0 -0
  310. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_more.py +0 -0
  311. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_nav_values.py +0 -0
  312. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_parse_errors.py +0 -0
  313. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_props.py +0 -0
  314. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_sdk.py +0 -0
  315. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_testing.py +0 -0
  316. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_values.py +0 -0
  317. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_tests_scope.py +0 -0
  318. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ts_fields.py +0 -0
  319. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ts_fields_js_vue.py +0 -0
  320. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ts_file_specs.py +0 -0
  321. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ts_frameworks.py +0 -0
  322. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ts_nuxt.py +0 -0
  323. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_values.py +0 -0
  324. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_viz.py +0 -0
  325. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_vue_nav.py +0 -0
  326. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_webhooks.py +0 -0
  327. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_websockets.py +0 -0
  328. {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_workspace_link.py +0 -0
@@ -0,0 +1,99 @@
1
+ Metadata-Version: 2.4
2
+ Name: cg-code-graph
3
+ Version: 0.15.0
4
+ Summary: cg: a code graph of routes, calls, data access and platform boundaries for agents and humans (CLI + MCP server)
5
+ Author: cyberchronos00
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/cyberchronos00/code-graph
8
+ Project-URL: Changelog, https://github.com/cyberchronos00/code-graph/blob/main/CHANGELOG.md
9
+ Requires-Python: >=3.11
10
+ Description-Content-Type: text/markdown
11
+ License-File: LICENSE
12
+ Requires-Dist: mcp>=2.2
13
+ Requires-Dist: pyyaml>=6
14
+ Requires-Dist: protobuf>=4.21
15
+ Requires-Dist: tree-sitter>=0.23
16
+ Requires-Dist: tree-sitter-rust>=0.23
17
+ Requires-Dist: tree-sitter-c>=0.23
18
+ Requires-Dist: tree-sitter-cpp>=0.23
19
+ Requires-Dist: tree-sitter-kotlin>=1.0
20
+ Requires-Dist: tree-sitter-swift<0.7.4,>=0.6
21
+ Provides-Extra: dev
22
+ Requires-Dist: pytest>=8; extra == "dev"
23
+ Provides-Extra: watch
24
+ Requires-Dist: watchfiles>=0.21; extra == "watch"
25
+ Dynamic: license-file
26
+
27
+ <div align="center">
28
+
29
+ # code-graph
30
+
31
+ **See everything a change affects before you make it: a local, deterministic dependency graph of routes, calls, tables and config, with `file:line` evidence for every hop.**
32
+
33
+ For you and your AI agent (CLI + MCP). No LLM in the graph.
34
+
35
+ [![PyPI](https://img.shields.io/pypi/v/cg-code-graph)](https://pypi.org/project/cg-code-graph/) [![Downloads](https://img.shields.io/pepy/dt/cg-code-graph)](https://pepy.tech/project/cg-code-graph) [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-3776AB)](https://pypi.org/project/cg-code-graph/) [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE) [![Docs](https://img.shields.io/badge/docs-code--graph-93b600)](https://code-graph.cyberchronos00.workers.dev/)
36
+
37
+ [Docs](https://code-graph.cyberchronos00.workers.dev/) · [Quick start](https://code-graph.cyberchronos00.workers.dev/docs/quickstart) · [CLI](https://code-graph.cyberchronos00.workers.dev/docs/cli) · [MCP](https://code-graph.cyberchronos00.workers.dev/docs/mcp) · [Changelog](CHANGELOG.md)
38
+
39
+ [![cg visual view: the graph around the warehouse connection, a selected node with its evidence paths and source, then the planned-change overlay for the preorders plan](docs/media/cg-view-preview.gif)](docs/media/cg-view-demo.mp4)
40
+
41
+ </div>
42
+
43
+ ## Quick start
44
+
45
+ ```bash
46
+ pipx install cg-code-graph # or: uv tool install cg-code-graph
47
+ cg index . --db out/graph.db # prints starter queries for your repo
48
+ cg reaches table:orders --db out/graph.db # any table, connection or config key
49
+ ```
50
+
51
+ Try it on a bundled sample, link a frontend to a backend, or connect an agent over MCP: [Quick start guide](https://code-graph.cyberchronos00.workers.dev/docs/quickstart). Other install options (install.sh, Windows, exact-mode toolchains): [Install](https://code-graph.cyberchronos00.workers.dev/docs/install).
52
+
53
+ `cg reaches table:store_books` on the bundled Django sample:
54
+
55
+ ```text
56
+ dependents: 18 nodes (code: 6, entry points: 9, other: 3)
57
+ == RUNTIME (reached from http_route / ... / queue_job / listener): 5 functions/methods
58
+ catalog.api.create_book depth=1 conf=resolved http_route(1)
59
+ path: function:catalog.api.create_book
60
+ -WRITES_TABLE[resolved @ catalog/api.py:27]-> table:store_books
61
+ catalog.signals.review_saved depth=3 conf=resolved listener(1)
62
+ path: function:catalog.signals.review_saved
63
+ -DISPATCHES[exact @ catalog/signals.py:12]-> job:catalog.tasks.recompute_rating
64
+ -HANDLED_BY[exact @ catalog/tasks.py:13]-> function:catalog.tasks.recompute_rating
65
+ -READS_TABLE[resolved @ catalog/tasks.py:14]-> table:store_books
66
+ ```
67
+
68
+ [![Terminal demo: cg indexes the bundled Laravel and Nuxt sample apps, links them, then runs reaches, path, impact and plan check](docs/media/cg-terminal-demo.gif)](docs/media/cg-terminal-demo.mp4)
69
+
70
+ ## Supported languages
71
+
72
+ | Language | Frameworks and facts | Calls | Docs |
73
+ |---|---|---|---|
74
+ | ![Python](https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white) | Django (+ DRF, django-ninja), FastAPI / Starlette, Flask, Celery | exact (stdlib `ast`) | [Python](https://code-graph.cyberchronos00.workers.dev/docs/python) |
75
+ | ![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white) ![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript&logoColor=black) | Nuxt / Vue, NestJS, Next.js, Astro, Express, Fastify, Koa, Hono | exact (TypeScript compiler API) | [TS frameworks](https://code-graph.cyberchronos00.workers.dev/docs/ts-frameworks) |
76
+ | ![PHP](https://img.shields.io/badge/PHP-777BB4?logo=php&logoColor=white) | Laravel (routes and middleware, queues, broadcasting) | exact (nikic/php-parser; needs PHP 8.2+) | [PHP](https://code-graph.cyberchronos00.workers.dev/docs/php) |
77
+ | ![Dart](https://img.shields.io/badge/Dart-0175C2?logo=dart&logoColor=white) | Flutter | exact (Dart analyzer; needs the Dart SDK) | [Platforms](https://code-graph.cyberchronos00.workers.dev/docs/platforms) |
78
+ | ![Kotlin](https://img.shields.io/badge/Kotlin-7F52FF?logo=kotlin&logoColor=white) | Android, Kotlin Multiplatform | heuristic; exact with scip-java (opt-in) | [Kotlin](https://code-graph.cyberchronos00.workers.dev/docs/kotlin) |
79
+ | ![Swift](https://img.shields.io/badge/Swift-F05138?logo=swift&logoColor=white) | iOS / SwiftPM | heuristic; exact with the Swift index store (opt-in) | [Swift](https://code-graph.cyberchronos00.workers.dev/docs/swift) |
80
+ | ![Rust](https://img.shields.io/badge/Rust-000000?logo=rust&logoColor=white) ![C](https://img.shields.io/badge/C-A8B9CC?logo=c&logoColor=black) ![C++](https://img.shields.io/badge/C++-00599C?logo=cplusplus&logoColor=white) | crates / modules, entry points, FFI, `#[cfg]` / `#if` gates | heuristic; exact with rust-analyzer / scip-clang | [Rust, C and C++](https://code-graph.cyberchronos00.workers.dev/docs/native) |
81
+
82
+ Go, Java and others: import a SCIP index with `cg index --scip FILE`. Run `cg doctor` to see exact / heuristic per language on your machine.
83
+
84
+ ## What you get
85
+
86
+ - `reaches`, `impact`, `path`: every caller, route, job and page that reaches a table, config key or method.
87
+ - `cg affected --base main`: the tests and entry points a change reaches (`--quiet` feeds your test runner).
88
+ - Frontend ↔ backend: `cg link` matches client HTTP calls to server routes across repos.
89
+ - Route guards: `cg routes --writes --unguarded` lists routes that write with no auth guard.
90
+ - MCP server (`cg-mcp`) so agents query the graph instead of grepping.
91
+ - Visual view (`cg serve`) and plan checks (`cg plan check`) for planned changes.
92
+
93
+ ## Docs
94
+
95
+ [Install](https://code-graph.cyberchronos00.workers.dev/docs/install) · [Quick start](https://code-graph.cyberchronos00.workers.dev/docs/quickstart) · [CLI](https://code-graph.cyberchronos00.workers.dev/docs/cli) · [MCP](https://code-graph.cyberchronos00.workers.dev/docs/mcp) · [Configuration](https://code-graph.cyberchronos00.workers.dev/docs/configuration) · [Architecture](https://code-graph.cyberchronos00.workers.dev/docs/architecture) · [Limitations](https://code-graph.cyberchronos00.workers.dev/docs/limitations)
96
+
97
+ [Changelog](CHANGELOG.md) · [Contributing](CONTRIBUTING.md) · [Security](SECURITY.md) · MIT [License](LICENSE)
98
+
99
+ More recordings: [docs/media](docs/media).
@@ -0,0 +1,73 @@
1
+ <div align="center">
2
+
3
+ # code-graph
4
+
5
+ **See everything a change affects before you make it: a local, deterministic dependency graph of routes, calls, tables and config, with `file:line` evidence for every hop.**
6
+
7
+ For you and your AI agent (CLI + MCP). No LLM in the graph.
8
+
9
+ [![PyPI](https://img.shields.io/pypi/v/cg-code-graph)](https://pypi.org/project/cg-code-graph/) [![Downloads](https://img.shields.io/pepy/dt/cg-code-graph)](https://pepy.tech/project/cg-code-graph) [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-3776AB)](https://pypi.org/project/cg-code-graph/) [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE) [![Docs](https://img.shields.io/badge/docs-code--graph-93b600)](https://code-graph.cyberchronos00.workers.dev/)
10
+
11
+ [Docs](https://code-graph.cyberchronos00.workers.dev/) · [Quick start](https://code-graph.cyberchronos00.workers.dev/docs/quickstart) · [CLI](https://code-graph.cyberchronos00.workers.dev/docs/cli) · [MCP](https://code-graph.cyberchronos00.workers.dev/docs/mcp) · [Changelog](CHANGELOG.md)
12
+
13
+ [![cg visual view: the graph around the warehouse connection, a selected node with its evidence paths and source, then the planned-change overlay for the preorders plan](docs/media/cg-view-preview.gif)](docs/media/cg-view-demo.mp4)
14
+
15
+ </div>
16
+
17
+ ## Quick start
18
+
19
+ ```bash
20
+ pipx install cg-code-graph # or: uv tool install cg-code-graph
21
+ cg index . --db out/graph.db # prints starter queries for your repo
22
+ cg reaches table:orders --db out/graph.db # any table, connection or config key
23
+ ```
24
+
25
+ Try it on a bundled sample, link a frontend to a backend, or connect an agent over MCP: [Quick start guide](https://code-graph.cyberchronos00.workers.dev/docs/quickstart). Other install options (install.sh, Windows, exact-mode toolchains): [Install](https://code-graph.cyberchronos00.workers.dev/docs/install).
26
+
27
+ `cg reaches table:store_books` on the bundled Django sample:
28
+
29
+ ```text
30
+ dependents: 18 nodes (code: 6, entry points: 9, other: 3)
31
+ == RUNTIME (reached from http_route / ... / queue_job / listener): 5 functions/methods
32
+ catalog.api.create_book depth=1 conf=resolved http_route(1)
33
+ path: function:catalog.api.create_book
34
+ -WRITES_TABLE[resolved @ catalog/api.py:27]-> table:store_books
35
+ catalog.signals.review_saved depth=3 conf=resolved listener(1)
36
+ path: function:catalog.signals.review_saved
37
+ -DISPATCHES[exact @ catalog/signals.py:12]-> job:catalog.tasks.recompute_rating
38
+ -HANDLED_BY[exact @ catalog/tasks.py:13]-> function:catalog.tasks.recompute_rating
39
+ -READS_TABLE[resolved @ catalog/tasks.py:14]-> table:store_books
40
+ ```
41
+
42
+ [![Terminal demo: cg indexes the bundled Laravel and Nuxt sample apps, links them, then runs reaches, path, impact and plan check](docs/media/cg-terminal-demo.gif)](docs/media/cg-terminal-demo.mp4)
43
+
44
+ ## Supported languages
45
+
46
+ | Language | Frameworks and facts | Calls | Docs |
47
+ |---|---|---|---|
48
+ | ![Python](https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white) | Django (+ DRF, django-ninja), FastAPI / Starlette, Flask, Celery | exact (stdlib `ast`) | [Python](https://code-graph.cyberchronos00.workers.dev/docs/python) |
49
+ | ![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white) ![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript&logoColor=black) | Nuxt / Vue, NestJS, Next.js, Astro, Express, Fastify, Koa, Hono | exact (TypeScript compiler API) | [TS frameworks](https://code-graph.cyberchronos00.workers.dev/docs/ts-frameworks) |
50
+ | ![PHP](https://img.shields.io/badge/PHP-777BB4?logo=php&logoColor=white) | Laravel (routes and middleware, queues, broadcasting) | exact (nikic/php-parser; needs PHP 8.2+) | [PHP](https://code-graph.cyberchronos00.workers.dev/docs/php) |
51
+ | ![Dart](https://img.shields.io/badge/Dart-0175C2?logo=dart&logoColor=white) | Flutter | exact (Dart analyzer; needs the Dart SDK) | [Platforms](https://code-graph.cyberchronos00.workers.dev/docs/platforms) |
52
+ | ![Kotlin](https://img.shields.io/badge/Kotlin-7F52FF?logo=kotlin&logoColor=white) | Android, Kotlin Multiplatform | heuristic; exact with scip-java (opt-in) | [Kotlin](https://code-graph.cyberchronos00.workers.dev/docs/kotlin) |
53
+ | ![Swift](https://img.shields.io/badge/Swift-F05138?logo=swift&logoColor=white) | iOS / SwiftPM | heuristic; exact with the Swift index store (opt-in) | [Swift](https://code-graph.cyberchronos00.workers.dev/docs/swift) |
54
+ | ![Rust](https://img.shields.io/badge/Rust-000000?logo=rust&logoColor=white) ![C](https://img.shields.io/badge/C-A8B9CC?logo=c&logoColor=black) ![C++](https://img.shields.io/badge/C++-00599C?logo=cplusplus&logoColor=white) | crates / modules, entry points, FFI, `#[cfg]` / `#if` gates | heuristic; exact with rust-analyzer / scip-clang | [Rust, C and C++](https://code-graph.cyberchronos00.workers.dev/docs/native) |
55
+
56
+ Go, Java and others: import a SCIP index with `cg index --scip FILE`. Run `cg doctor` to see exact / heuristic per language on your machine.
57
+
58
+ ## What you get
59
+
60
+ - `reaches`, `impact`, `path`: every caller, route, job and page that reaches a table, config key or method.
61
+ - `cg affected --base main`: the tests and entry points a change reaches (`--quiet` feeds your test runner).
62
+ - Frontend ↔ backend: `cg link` matches client HTTP calls to server routes across repos.
63
+ - Route guards: `cg routes --writes --unguarded` lists routes that write with no auth guard.
64
+ - MCP server (`cg-mcp`) so agents query the graph instead of grepping.
65
+ - Visual view (`cg serve`) and plan checks (`cg plan check`) for planned changes.
66
+
67
+ ## Docs
68
+
69
+ [Install](https://code-graph.cyberchronos00.workers.dev/docs/install) · [Quick start](https://code-graph.cyberchronos00.workers.dev/docs/quickstart) · [CLI](https://code-graph.cyberchronos00.workers.dev/docs/cli) · [MCP](https://code-graph.cyberchronos00.workers.dev/docs/mcp) · [Configuration](https://code-graph.cyberchronos00.workers.dev/docs/configuration) · [Architecture](https://code-graph.cyberchronos00.workers.dev/docs/architecture) · [Limitations](https://code-graph.cyberchronos00.workers.dev/docs/limitations)
70
+
71
+ [Changelog](CHANGELOG.md) · [Contributing](CONTRIBUTING.md) · [Security](SECURITY.md) · MIT [License](LICENSE)
72
+
73
+ More recordings: [docs/media](docs/media).
@@ -0,0 +1,99 @@
1
+ Metadata-Version: 2.4
2
+ Name: cg-code-graph
3
+ Version: 0.15.0
4
+ Summary: cg: a code graph of routes, calls, data access and platform boundaries for agents and humans (CLI + MCP server)
5
+ Author: cyberchronos00
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/cyberchronos00/code-graph
8
+ Project-URL: Changelog, https://github.com/cyberchronos00/code-graph/blob/main/CHANGELOG.md
9
+ Requires-Python: >=3.11
10
+ Description-Content-Type: text/markdown
11
+ License-File: LICENSE
12
+ Requires-Dist: mcp>=2.2
13
+ Requires-Dist: pyyaml>=6
14
+ Requires-Dist: protobuf>=4.21
15
+ Requires-Dist: tree-sitter>=0.23
16
+ Requires-Dist: tree-sitter-rust>=0.23
17
+ Requires-Dist: tree-sitter-c>=0.23
18
+ Requires-Dist: tree-sitter-cpp>=0.23
19
+ Requires-Dist: tree-sitter-kotlin>=1.0
20
+ Requires-Dist: tree-sitter-swift<0.7.4,>=0.6
21
+ Provides-Extra: dev
22
+ Requires-Dist: pytest>=8; extra == "dev"
23
+ Provides-Extra: watch
24
+ Requires-Dist: watchfiles>=0.21; extra == "watch"
25
+ Dynamic: license-file
26
+
27
+ <div align="center">
28
+
29
+ # code-graph
30
+
31
+ **See everything a change affects before you make it: a local, deterministic dependency graph of routes, calls, tables and config, with `file:line` evidence for every hop.**
32
+
33
+ For you and your AI agent (CLI + MCP). No LLM in the graph.
34
+
35
+ [![PyPI](https://img.shields.io/pypi/v/cg-code-graph)](https://pypi.org/project/cg-code-graph/) [![Downloads](https://img.shields.io/pepy/dt/cg-code-graph)](https://pepy.tech/project/cg-code-graph) [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-3776AB)](https://pypi.org/project/cg-code-graph/) [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE) [![Docs](https://img.shields.io/badge/docs-code--graph-93b600)](https://code-graph.cyberchronos00.workers.dev/)
36
+
37
+ [Docs](https://code-graph.cyberchronos00.workers.dev/) · [Quick start](https://code-graph.cyberchronos00.workers.dev/docs/quickstart) · [CLI](https://code-graph.cyberchronos00.workers.dev/docs/cli) · [MCP](https://code-graph.cyberchronos00.workers.dev/docs/mcp) · [Changelog](CHANGELOG.md)
38
+
39
+ [![cg visual view: the graph around the warehouse connection, a selected node with its evidence paths and source, then the planned-change overlay for the preorders plan](docs/media/cg-view-preview.gif)](docs/media/cg-view-demo.mp4)
40
+
41
+ </div>
42
+
43
+ ## Quick start
44
+
45
+ ```bash
46
+ pipx install cg-code-graph # or: uv tool install cg-code-graph
47
+ cg index . --db out/graph.db # prints starter queries for your repo
48
+ cg reaches table:orders --db out/graph.db # any table, connection or config key
49
+ ```
50
+
51
+ Try it on a bundled sample, link a frontend to a backend, or connect an agent over MCP: [Quick start guide](https://code-graph.cyberchronos00.workers.dev/docs/quickstart). Other install options (install.sh, Windows, exact-mode toolchains): [Install](https://code-graph.cyberchronos00.workers.dev/docs/install).
52
+
53
+ `cg reaches table:store_books` on the bundled Django sample:
54
+
55
+ ```text
56
+ dependents: 18 nodes (code: 6, entry points: 9, other: 3)
57
+ == RUNTIME (reached from http_route / ... / queue_job / listener): 5 functions/methods
58
+ catalog.api.create_book depth=1 conf=resolved http_route(1)
59
+ path: function:catalog.api.create_book
60
+ -WRITES_TABLE[resolved @ catalog/api.py:27]-> table:store_books
61
+ catalog.signals.review_saved depth=3 conf=resolved listener(1)
62
+ path: function:catalog.signals.review_saved
63
+ -DISPATCHES[exact @ catalog/signals.py:12]-> job:catalog.tasks.recompute_rating
64
+ -HANDLED_BY[exact @ catalog/tasks.py:13]-> function:catalog.tasks.recompute_rating
65
+ -READS_TABLE[resolved @ catalog/tasks.py:14]-> table:store_books
66
+ ```
67
+
68
+ [![Terminal demo: cg indexes the bundled Laravel and Nuxt sample apps, links them, then runs reaches, path, impact and plan check](docs/media/cg-terminal-demo.gif)](docs/media/cg-terminal-demo.mp4)
69
+
70
+ ## Supported languages
71
+
72
+ | Language | Frameworks and facts | Calls | Docs |
73
+ |---|---|---|---|
74
+ | ![Python](https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white) | Django (+ DRF, django-ninja), FastAPI / Starlette, Flask, Celery | exact (stdlib `ast`) | [Python](https://code-graph.cyberchronos00.workers.dev/docs/python) |
75
+ | ![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white) ![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript&logoColor=black) | Nuxt / Vue, NestJS, Next.js, Astro, Express, Fastify, Koa, Hono | exact (TypeScript compiler API) | [TS frameworks](https://code-graph.cyberchronos00.workers.dev/docs/ts-frameworks) |
76
+ | ![PHP](https://img.shields.io/badge/PHP-777BB4?logo=php&logoColor=white) | Laravel (routes and middleware, queues, broadcasting) | exact (nikic/php-parser; needs PHP 8.2+) | [PHP](https://code-graph.cyberchronos00.workers.dev/docs/php) |
77
+ | ![Dart](https://img.shields.io/badge/Dart-0175C2?logo=dart&logoColor=white) | Flutter | exact (Dart analyzer; needs the Dart SDK) | [Platforms](https://code-graph.cyberchronos00.workers.dev/docs/platforms) |
78
+ | ![Kotlin](https://img.shields.io/badge/Kotlin-7F52FF?logo=kotlin&logoColor=white) | Android, Kotlin Multiplatform | heuristic; exact with scip-java (opt-in) | [Kotlin](https://code-graph.cyberchronos00.workers.dev/docs/kotlin) |
79
+ | ![Swift](https://img.shields.io/badge/Swift-F05138?logo=swift&logoColor=white) | iOS / SwiftPM | heuristic; exact with the Swift index store (opt-in) | [Swift](https://code-graph.cyberchronos00.workers.dev/docs/swift) |
80
+ | ![Rust](https://img.shields.io/badge/Rust-000000?logo=rust&logoColor=white) ![C](https://img.shields.io/badge/C-A8B9CC?logo=c&logoColor=black) ![C++](https://img.shields.io/badge/C++-00599C?logo=cplusplus&logoColor=white) | crates / modules, entry points, FFI, `#[cfg]` / `#if` gates | heuristic; exact with rust-analyzer / scip-clang | [Rust, C and C++](https://code-graph.cyberchronos00.workers.dev/docs/native) |
81
+
82
+ Go, Java and others: import a SCIP index with `cg index --scip FILE`. Run `cg doctor` to see exact / heuristic per language on your machine.
83
+
84
+ ## What you get
85
+
86
+ - `reaches`, `impact`, `path`: every caller, route, job and page that reaches a table, config key or method.
87
+ - `cg affected --base main`: the tests and entry points a change reaches (`--quiet` feeds your test runner).
88
+ - Frontend ↔ backend: `cg link` matches client HTTP calls to server routes across repos.
89
+ - Route guards: `cg routes --writes --unguarded` lists routes that write with no auth guard.
90
+ - MCP server (`cg-mcp`) so agents query the graph instead of grepping.
91
+ - Visual view (`cg serve`) and plan checks (`cg plan check`) for planned changes.
92
+
93
+ ## Docs
94
+
95
+ [Install](https://code-graph.cyberchronos00.workers.dev/docs/install) · [Quick start](https://code-graph.cyberchronos00.workers.dev/docs/quickstart) · [CLI](https://code-graph.cyberchronos00.workers.dev/docs/cli) · [MCP](https://code-graph.cyberchronos00.workers.dev/docs/mcp) · [Configuration](https://code-graph.cyberchronos00.workers.dev/docs/configuration) · [Architecture](https://code-graph.cyberchronos00.workers.dev/docs/architecture) · [Limitations](https://code-graph.cyberchronos00.workers.dev/docs/limitations)
96
+
97
+ [Changelog](CHANGELOG.md) · [Contributing](CONTRIBUTING.md) · [Security](SECURITY.md) · MIT [License](LICENSE)
98
+
99
+ More recordings: [docs/media](docs/media).
@@ -9,6 +9,7 @@ cg_code_graph.egg-info/entry_points.txt
9
9
  cg_code_graph.egg-info/requires.txt
10
10
  cg_code_graph.egg-info/top_level.txt
11
11
  codegraph/__init__.py
12
+ codegraph/affected.py
12
13
  codegraph/agent_rules.py
13
14
  codegraph/agents.py
14
15
  codegraph/aitools.py
@@ -24,8 +25,10 @@ codegraph/config.py
24
25
  codegraph/coverage.py
25
26
  codegraph/dart_isolates.py
26
27
  codegraph/doctor.py
28
+ codegraph/explore.py
27
29
  codegraph/external.py
28
30
  codegraph/graphql.py
31
+ codegraph/hooks.py
29
32
  codegraph/indexer.py
30
33
  codegraph/jobs.py
31
34
  codegraph/link.py
@@ -53,6 +56,7 @@ codegraph/sockets.py
53
56
  codegraph/starters.py
54
57
  codegraph/tests_index.py
55
58
  codegraph/udp_apps.py
59
+ codegraph/watch.py
56
60
  codegraph/webhooks.py
57
61
  codegraph/xcode.py
58
62
  codegraph/core/__init__.py
@@ -67,6 +71,8 @@ codegraph/core/plugin.py
67
71
  codegraph/core/store.py
68
72
  codegraph/core/syntax_errors.py
69
73
  codegraph/plugins/__init__.py
74
+ codegraph/plugins/astro/__init__.py
75
+ codegraph/plugins/astro/plugin.py
70
76
  codegraph/plugins/cfamily/__init__.py
71
77
  codegraph/plugins/cfamily/plugin.py
72
78
  codegraph/plugins/cfamily/syntax.py
@@ -196,11 +202,13 @@ codegraph/viz/static/vendor/layout-base.js
196
202
  codegraph/viz/tools/package-lock.json
197
203
  codegraph/viz/tools/package.json
198
204
  codegraph/viz/tools/shoot.mjs
205
+ tests/test_affected.py
199
206
  tests/test_agents_install.py
200
207
  tests/test_agents_md.py
201
208
  tests/test_ai_tools.py
202
209
  tests/test_android_ipc.py
203
210
  tests/test_apple_ipc.py
211
+ tests/test_astro.py
204
212
  tests/test_bridges.py
205
213
  tests/test_bridges_pigeon_monorepo.py
206
214
  tests/test_brokers.py
@@ -217,15 +225,18 @@ tests/test_dispatch_interfaces.py
217
225
  tests/test_django_flutter.py
218
226
  tests/test_docs_links.py
219
227
  tests/test_enum_constants.py
228
+ tests/test_explore.py
220
229
  tests/test_external.py
221
230
  tests/test_gating.py
222
231
  tests/test_generated.py
223
232
  tests/test_graphql.py
233
+ tests/test_hooks.py
224
234
  tests/test_impact_overrides.py
225
235
  tests/test_index_isolation.py
226
236
  tests/test_inherited_overrides.py
227
237
  tests/test_jobs.py
228
238
  tests/test_js_refs.py
239
+ tests/test_js_runtime.py
229
240
  tests/test_kotlin.py
230
241
  tests/test_kotlin_binding.py
231
242
  tests/test_kotlin_exact.py
@@ -301,9 +312,11 @@ tests/test_ts_fields_js_vue.py
301
312
  tests/test_ts_file_specs.py
302
313
  tests/test_ts_frameworks.py
303
314
  tests/test_ts_nuxt.py
315
+ tests/test_ts_src_tsconfig.py
304
316
  tests/test_values.py
305
317
  tests/test_viz.py
306
318
  tests/test_vue_nav.py
319
+ tests/test_watch.py
307
320
  tests/test_webhooks.py
308
321
  tests/test_websockets.py
309
322
  tests/test_workspace_link.py
@@ -10,3 +10,6 @@ tree-sitter-swift<0.7.4,>=0.6
10
10
 
11
11
  [dev]
12
12
  pytest>=8
13
+
14
+ [watch]
15
+ watchfiles>=0.21
@@ -1,2 +1,2 @@
1
1
  """code-graph: deterministic code knowledge graph (beta)."""
2
- __version__ = "0.13.0"
2
+ __version__ = "0.15.0"