cg-code-graph 0.13.0__tar.gz → 0.14.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 (324) hide show
  1. cg_code_graph-0.14.0/PKG-INFO +99 -0
  2. cg_code_graph-0.14.0/README.md +73 -0
  3. cg_code_graph-0.14.0/cg_code_graph.egg-info/PKG-INFO +99 -0
  4. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/cg_code_graph.egg-info/SOURCES.txt +9 -0
  5. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/cg_code_graph.egg-info/requires.txt +3 -0
  6. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/__init__.py +1 -1
  7. cg_code_graph-0.14.0/codegraph/affected.py +328 -0
  8. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/agent_rules.py +48 -6
  9. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/agents.py +16 -5
  10. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/cli.py +80 -0
  11. cg_code_graph-0.14.0/codegraph/explore.py +481 -0
  12. cg_code_graph-0.14.0/codegraph/hooks.py +625 -0
  13. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/mcp_server.py +90 -6
  14. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/ts/plugin.py +7 -3
  15. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/query.py +97 -8
  16. cg_code_graph-0.14.0/codegraph/watch.py +221 -0
  17. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/pyproject.toml +1 -0
  18. cg_code_graph-0.14.0/tests/test_affected.py +257 -0
  19. cg_code_graph-0.14.0/tests/test_agents_install.py +240 -0
  20. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_agents_md.py +1 -1
  21. cg_code_graph-0.14.0/tests/test_explore.py +160 -0
  22. cg_code_graph-0.14.0/tests/test_hooks.py +400 -0
  23. cg_code_graph-0.14.0/tests/test_ts_src_tsconfig.py +90 -0
  24. cg_code_graph-0.14.0/tests/test_watch.py +331 -0
  25. cg_code_graph-0.13.0/PKG-INFO +0 -84
  26. cg_code_graph-0.13.0/README.md +0 -60
  27. cg_code_graph-0.13.0/cg_code_graph.egg-info/PKG-INFO +0 -84
  28. cg_code_graph-0.13.0/tests/test_agents_install.py +0 -123
  29. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/LICENSE +0 -0
  30. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/MANIFEST.in +0 -0
  31. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/cg_code_graph.egg-info/dependency_links.txt +0 -0
  32. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/cg_code_graph.egg-info/entry_points.txt +0 -0
  33. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/cg_code_graph.egg-info/top_level.txt +0 -0
  34. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/aitools.py +0 -0
  35. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/android_ipc.py +0 -0
  36. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/apple_ipc.py +0 -0
  37. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/apps.py +0 -0
  38. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/blindspots.py +0 -0
  39. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/bridges.py +0 -0
  40. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/brokers.py +0 -0
  41. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/concepts.py +0 -0
  42. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/config.py +0 -0
  43. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/__init__.py +0 -0
  44. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/cache.py +0 -0
  45. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/detect.py +0 -0
  46. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/extractors.py +0 -0
  47. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/fsutil.py +0 -0
  48. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/generated.py +0 -0
  49. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/model.py +0 -0
  50. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/paths.py +0 -0
  51. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/plugin.py +0 -0
  52. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/store.py +0 -0
  53. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/core/syntax_errors.py +0 -0
  54. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/coverage.py +0 -0
  55. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/dart_isolates.py +0 -0
  56. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/doctor.py +0 -0
  57. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/external.py +0 -0
  58. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/graphql.py +0 -0
  59. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/indexer.py +0 -0
  60. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/jobs.py +0 -0
  61. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/link.py +0 -0
  62. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/lint_async.py +0 -0
  63. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/local_ipc.py +0 -0
  64. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/local_sockets.py +0 -0
  65. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/parity.py +0 -0
  66. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/parity_structure.py +0 -0
  67. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/payload.py +0 -0
  68. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plans.py +0 -0
  69. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/platform_scan.py +0 -0
  70. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/platforms.py +0 -0
  71. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/__init__.py +0 -0
  72. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/cfamily/__init__.py +0 -0
  73. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/cfamily/plugin.py +0 -0
  74. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/cfamily/syntax.py +0 -0
  75. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/dart/__init__.py +0 -0
  76. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/dart/bridges.py +0 -0
  77. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/dart/extractor/bin/extract.dart +0 -0
  78. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/dart/extractor/pubspec.lock +0 -0
  79. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/dart/extractor/pubspec.yaml +0 -0
  80. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/dart/http.py +0 -0
  81. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/dart/models.py +0 -0
  82. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/dart/plugin.py +0 -0
  83. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/dart/program.py +0 -0
  84. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/django/__init__.py +0 -0
  85. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/django/extras.py +0 -0
  86. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/django/models.py +0 -0
  87. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/django/plugin.py +0 -0
  88. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/django/schemas.py +0 -0
  89. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/django/shapes.py +0 -0
  90. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/django/urls.py +0 -0
  91. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/express/__init__.py +0 -0
  92. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/express/plugin.py +0 -0
  93. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/flutter/__init__.py +0 -0
  94. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/flutter/plugin.py +0 -0
  95. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/kotlin/__init__.py +0 -0
  96. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/kotlin/exact.py +0 -0
  97. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/kotlin/plugin.py +0 -0
  98. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/kotlin/reparse.py +0 -0
  99. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/laravel/__init__.py +0 -0
  100. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/laravel/broadcast.py +0 -0
  101. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/laravel/plugin.py +0 -0
  102. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/laravel/tests.py +0 -0
  103. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/laravel/values.py +0 -0
  104. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/native/__init__.py +0 -0
  105. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/native/gates.py +0 -0
  106. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/native/runner.py +0 -0
  107. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/native/scipread.py +0 -0
  108. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/native/ts.py +0 -0
  109. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/nest/__init__.py +0 -0
  110. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/nest/plugin.py +0 -0
  111. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/nextjs/__init__.py +0 -0
  112. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/nextjs/plugin.py +0 -0
  113. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/nuxt/__init__.py +0 -0
  114. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/nuxt/plugin.py +0 -0
  115. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/php/__init__.py +0 -0
  116. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/php/external.py +0 -0
  117. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/php/extractor/composer.json +0 -0
  118. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/php/extractor/composer.lock +0 -0
  119. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/php/extractor/extract.php +0 -0
  120. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/php/gating.py +0 -0
  121. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/php/plugin.py +0 -0
  122. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/php/strings.py +0 -0
  123. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/__init__.py +0 -0
  124. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/aitools.py +0 -0
  125. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/external.py +0 -0
  126. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/fields.py +0 -0
  127. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/plugin.py +0 -0
  128. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/refs.py +0 -0
  129. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/roots.py +0 -0
  130. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/socketio.py +0 -0
  131. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/subproc.py +0 -0
  132. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/tests.py +0 -0
  133. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/python/values.py +0 -0
  134. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/pyweb/__init__.py +0 -0
  135. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/pyweb/plugin.py +0 -0
  136. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/pyweb/values.py +0 -0
  137. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/rust/__init__.py +0 -0
  138. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/rust/cargo.py +0 -0
  139. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/rust/plugin.py +0 -0
  140. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/rust/syntax.py +0 -0
  141. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/scip/__init__.py +0 -0
  142. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/scip/importer.py +0 -0
  143. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/scip/scip.proto +0 -0
  144. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/scip/scip_pb2.py +0 -0
  145. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/stubs/__init__.py +0 -0
  146. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/stubs/plugins.py +0 -0
  147. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/swift/__init__.py +0 -0
  148. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/swift/baseurl.py +0 -0
  149. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/swift/exact.py +0 -0
  150. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/swift/indexstore.py +0 -0
  151. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/swift/packages.py +0 -0
  152. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/swift/plugin.py +0 -0
  153. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/ts/__init__.py +0 -0
  154. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/ts/baseurl.py +0 -0
  155. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/ts/extractor/extract.mjs +0 -0
  156. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/ts/extractor/fw.mjs +0 -0
  157. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/ts/extractor/package-lock.json +0 -0
  158. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/ts/extractor/package.json +0 -0
  159. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/ts/nav.py +0 -0
  160. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/tsweb/__init__.py +0 -0
  161. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/tsweb/common.py +0 -0
  162. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/plugins/tsweb/data.py +0 -0
  163. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/__init__.py +0 -0
  164. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/c_cpp.yaml +0 -0
  165. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/common.yaml +0 -0
  166. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/dart.yaml +0 -0
  167. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/django-ninja.yaml +0 -0
  168. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/django.yaml +0 -0
  169. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/djangorestframework.yaml +0 -0
  170. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/express.yaml +0 -0
  171. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/kotlin.yaml +0 -0
  172. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/laravel.yaml +0 -0
  173. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/nest.yaml +0 -0
  174. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/nextjs.yaml +0 -0
  175. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/nuxt.yaml +0 -0
  176. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/php.yaml +0 -0
  177. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/python.yaml +0 -0
  178. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/rust.yaml +0 -0
  179. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/swift.yaml +0 -0
  180. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/presets/typescript.yaml +0 -0
  181. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/process_runs.py +0 -0
  182. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/protocols/__init__.py +0 -0
  183. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/protocols/builtin.py +0 -0
  184. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/protocols/matchers.py +0 -0
  185. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/protocols/view.py +0 -0
  186. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/realtime.py +0 -0
  187. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/realtime_events.py +0 -0
  188. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/realtime_native.py +0 -0
  189. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/realtime_ws.py +0 -0
  190. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/roundtrip.py +0 -0
  191. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/routes.py +0 -0
  192. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/rpc.py +0 -0
  193. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/sdk_systems.py +0 -0
  194. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/sockets.py +0 -0
  195. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/starters.py +0 -0
  196. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/tests_index.py +0 -0
  197. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/udp_apps.py +0 -0
  198. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/__init__.py +0 -0
  199. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/graph.py +0 -0
  200. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/server.py +0 -0
  201. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/static/app.css +0 -0
  202. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/static/app.js +0 -0
  203. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/static/index.html +0 -0
  204. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/static/layered.js +0 -0
  205. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/static/vendor/VERSIONS.txt +0 -0
  206. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/static/vendor/cose-base.js +0 -0
  207. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/static/vendor/cytoscape-fcose.js +0 -0
  208. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/static/vendor/cytoscape.min.js +0 -0
  209. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/static/vendor/layout-base.js +0 -0
  210. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/tools/package-lock.json +0 -0
  211. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/tools/package.json +0 -0
  212. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/viz/tools/shoot.mjs +0 -0
  213. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/webhooks.py +0 -0
  214. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/codegraph/xcode.py +0 -0
  215. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/setup.cfg +0 -0
  216. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_ai_tools.py +0 -0
  217. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_android_ipc.py +0 -0
  218. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_apple_ipc.py +0 -0
  219. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_bridges.py +0 -0
  220. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_bridges_pigeon_monorepo.py +0 -0
  221. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_brokers.py +0 -0
  222. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_cache_clean.py +0 -0
  223. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_cache_invalidation.py +0 -0
  224. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_channels_tests.py +0 -0
  225. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_cli_output.py +0 -0
  226. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_completeness.py +0 -0
  227. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_config_extras.py +0 -0
  228. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_coverage.py +0 -0
  229. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_coverage_ts_hint.py +0 -0
  230. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_dart_isolates.py +0 -0
  231. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_dispatch_interfaces.py +0 -0
  232. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_django_flutter.py +0 -0
  233. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_docs_links.py +0 -0
  234. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_enum_constants.py +0 -0
  235. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_external.py +0 -0
  236. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_gating.py +0 -0
  237. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_generated.py +0 -0
  238. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_graphql.py +0 -0
  239. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_impact_overrides.py +0 -0
  240. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_index_isolation.py +0 -0
  241. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_inherited_overrides.py +0 -0
  242. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_jobs.py +0 -0
  243. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_js_refs.py +0 -0
  244. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_kotlin.py +0 -0
  245. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_kotlin_binding.py +0 -0
  246. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_kotlin_exact.py +0 -0
  247. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_kotlin_fields.py +0 -0
  248. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_kotlin_mixed.py +0 -0
  249. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_kotlin_nav_consts.py +0 -0
  250. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_kotlin_props.py +0 -0
  251. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_laravel_determinism.py +0 -0
  252. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_laravel_resources.py +0 -0
  253. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_lint_async.py +0 -0
  254. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_local_ipc.py +0 -0
  255. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_local_sockets.py +0 -0
  256. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_mcp.py +0 -0
  257. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_mcp_index.py +0 -0
  258. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_native_cfamily.py +0 -0
  259. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_native_concurrency.py +0 -0
  260. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_native_rust.py +0 -0
  261. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_nuxt_import_dirs.py +0 -0
  262. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_nuxt_rootsrc.py +0 -0
  263. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_packaging.py +0 -0
  264. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_parity.py +0 -0
  265. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_parity_structure.py +0 -0
  266. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_php_props.py +0 -0
  267. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_plain_js.py +0 -0
  268. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_plans.py +0 -0
  269. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_platform_gaps.py +0 -0
  270. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_platform_type_variants.py +0 -0
  271. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_platforms.py +0 -0
  272. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_platforms_apple.py +0 -0
  273. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_presets_config.py +0 -0
  274. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_process_ipc.py +0 -0
  275. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_process_runs.py +0 -0
  276. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_protocols.py +0 -0
  277. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_app_tests_module.py +0 -0
  278. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_collection_chains.py +0 -0
  279. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_compat.py +0 -0
  280. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_entry_refs.py +0 -0
  281. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_fields.py +0 -0
  282. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_infer_cycles.py +0 -0
  283. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_roots.py +0 -0
  284. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_subprocess_tests.py +0 -0
  285. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_tests.py +0 -0
  286. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_web_hosts.py +0 -0
  287. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_web_routes.py +0 -0
  288. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_python_web_routes_more.py +0 -0
  289. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_realtime.py +0 -0
  290. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_realtime_native.py +0 -0
  291. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_roundtrip.py +0 -0
  292. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_route_tables.py +0 -0
  293. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_routes_search_explain.py +0 -0
  294. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_rpc.py +0 -0
  295. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_scip_health.py +0 -0
  296. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_sdk_external.py +0 -0
  297. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_snippet.py +0 -0
  298. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_sockets.py +0 -0
  299. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_starters_budget.py +0 -0
  300. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift.py +0 -0
  301. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_binding.py +0 -0
  302. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_exact.py +0 -0
  303. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_facts.py +0 -0
  304. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_fields.py +0 -0
  305. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_modules.py +0 -0
  306. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_more.py +0 -0
  307. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_nav_values.py +0 -0
  308. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_parse_errors.py +0 -0
  309. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_props.py +0 -0
  310. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_sdk.py +0 -0
  311. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_testing.py +0 -0
  312. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_swift_values.py +0 -0
  313. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_tests_scope.py +0 -0
  314. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_ts_fields.py +0 -0
  315. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_ts_fields_js_vue.py +0 -0
  316. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_ts_file_specs.py +0 -0
  317. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_ts_frameworks.py +0 -0
  318. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_ts_nuxt.py +0 -0
  319. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_values.py +0 -0
  320. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_viz.py +0 -0
  321. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_vue_nav.py +0 -0
  322. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_webhooks.py +0 -0
  323. {cg_code_graph-0.13.0 → cg_code_graph-0.14.0}/tests/test_websockets.py +0 -0
  324. {cg_code_graph-0.13.0 → cg_code_graph-0.14.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.14.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, 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, 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.14.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, 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
@@ -196,6 +200,7 @@ codegraph/viz/static/vendor/layout-base.js
196
200
  codegraph/viz/tools/package-lock.json
197
201
  codegraph/viz/tools/package.json
198
202
  codegraph/viz/tools/shoot.mjs
203
+ tests/test_affected.py
199
204
  tests/test_agents_install.py
200
205
  tests/test_agents_md.py
201
206
  tests/test_ai_tools.py
@@ -217,10 +222,12 @@ tests/test_dispatch_interfaces.py
217
222
  tests/test_django_flutter.py
218
223
  tests/test_docs_links.py
219
224
  tests/test_enum_constants.py
225
+ tests/test_explore.py
220
226
  tests/test_external.py
221
227
  tests/test_gating.py
222
228
  tests/test_generated.py
223
229
  tests/test_graphql.py
230
+ tests/test_hooks.py
224
231
  tests/test_impact_overrides.py
225
232
  tests/test_index_isolation.py
226
233
  tests/test_inherited_overrides.py
@@ -301,9 +308,11 @@ tests/test_ts_fields_js_vue.py
301
308
  tests/test_ts_file_specs.py
302
309
  tests/test_ts_frameworks.py
303
310
  tests/test_ts_nuxt.py
311
+ tests/test_ts_src_tsconfig.py
304
312
  tests/test_values.py
305
313
  tests/test_viz.py
306
314
  tests/test_vue_nav.py
315
+ tests/test_watch.py
307
316
  tests/test_webhooks.py
308
317
  tests/test_websockets.py
309
318
  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.14.0"