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.
- cg_code_graph-0.15.0/PKG-INFO +99 -0
- cg_code_graph-0.15.0/README.md +73 -0
- cg_code_graph-0.15.0/cg_code_graph.egg-info/PKG-INFO +99 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/cg_code_graph.egg-info/SOURCES.txt +13 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/cg_code_graph.egg-info/requires.txt +3 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/__init__.py +1 -1
- cg_code_graph-0.15.0/codegraph/affected.py +328 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/agent_rules.py +48 -6
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/agents.py +16 -5
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/cli.py +80 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/config.py +1 -1
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/detect.py +3 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/extractors.py +58 -3
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/coverage.py +3 -3
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/doctor.py +23 -11
- cg_code_graph-0.15.0/codegraph/explore.py +481 -0
- cg_code_graph-0.15.0/codegraph/hooks.py +625 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/indexer.py +2 -1
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/mcp_server.py +90 -6
- cg_code_graph-0.15.0/codegraph/plugins/astro/plugin.py +126 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/extractor/extract.mjs +73 -17
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/extractor/fw.mjs +7 -6
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/plugin.py +22 -12
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/query.py +97 -8
- cg_code_graph-0.15.0/codegraph/viz/__init__.py +0 -0
- cg_code_graph-0.15.0/codegraph/watch.py +221 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/pyproject.toml +1 -0
- cg_code_graph-0.15.0/tests/test_affected.py +257 -0
- cg_code_graph-0.15.0/tests/test_agents_install.py +240 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_agents_md.py +1 -1
- cg_code_graph-0.15.0/tests/test_astro.py +235 -0
- cg_code_graph-0.15.0/tests/test_explore.py +160 -0
- cg_code_graph-0.15.0/tests/test_hooks.py +400 -0
- cg_code_graph-0.15.0/tests/test_js_runtime.py +182 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_packaging.py +1 -1
- cg_code_graph-0.15.0/tests/test_ts_src_tsconfig.py +90 -0
- cg_code_graph-0.15.0/tests/test_watch.py +331 -0
- cg_code_graph-0.13.0/PKG-INFO +0 -84
- cg_code_graph-0.13.0/README.md +0 -60
- cg_code_graph-0.13.0/cg_code_graph.egg-info/PKG-INFO +0 -84
- cg_code_graph-0.13.0/tests/test_agents_install.py +0 -123
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/LICENSE +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/MANIFEST.in +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/cg_code_graph.egg-info/dependency_links.txt +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/cg_code_graph.egg-info/entry_points.txt +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/cg_code_graph.egg-info/top_level.txt +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/aitools.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/android_ipc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/apple_ipc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/apps.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/blindspots.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/bridges.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/brokers.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/concepts.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/cache.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/fsutil.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/generated.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/model.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/paths.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/plugin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/store.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/core/syntax_errors.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/dart_isolates.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/external.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/graphql.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/jobs.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/link.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/lint_async.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/local_ipc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/local_sockets.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/parity.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/parity_structure.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/payload.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plans.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/platform_scan.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/platforms.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/__init__.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/cfamily → cg_code_graph-0.15.0/codegraph/plugins/astro}/__init__.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/dart → cg_code_graph-0.15.0/codegraph/plugins/cfamily}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/cfamily/plugin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/cfamily/syntax.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/django → cg_code_graph-0.15.0/codegraph/plugins/dart}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/bridges.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/extractor/bin/extract.dart +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/extractor/pubspec.lock +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/extractor/pubspec.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/http.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/models.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/plugin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/dart/program.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/express → cg_code_graph-0.15.0/codegraph/plugins/django}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/extras.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/models.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/plugin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/schemas.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/shapes.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/django/urls.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/flutter → cg_code_graph-0.15.0/codegraph/plugins/express}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/express/plugin.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/kotlin → cg_code_graph-0.15.0/codegraph/plugins/flutter}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/flutter/plugin.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/laravel → cg_code_graph-0.15.0/codegraph/plugins/kotlin}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/kotlin/exact.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/kotlin/plugin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/kotlin/reparse.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/native → cg_code_graph-0.15.0/codegraph/plugins/laravel}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/laravel/broadcast.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/laravel/plugin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/laravel/tests.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/laravel/values.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/nest → cg_code_graph-0.15.0/codegraph/plugins/native}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/native/gates.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/native/runner.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/native/scipread.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/native/ts.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/nextjs → cg_code_graph-0.15.0/codegraph/plugins/nest}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/nest/plugin.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/nuxt → cg_code_graph-0.15.0/codegraph/plugins/nextjs}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/nextjs/plugin.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/php → cg_code_graph-0.15.0/codegraph/plugins/nuxt}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/nuxt/plugin.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/python → cg_code_graph-0.15.0/codegraph/plugins/php}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/external.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/extractor/composer.json +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/extractor/composer.lock +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/extractor/extract.php +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/gating.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/plugin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/php/strings.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/pyweb → cg_code_graph-0.15.0/codegraph/plugins/python}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/aitools.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/external.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/fields.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/plugin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/refs.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/roots.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/socketio.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/subproc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/tests.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/python/values.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/rust → cg_code_graph-0.15.0/codegraph/plugins/pyweb}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/pyweb/plugin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/pyweb/values.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/scip → cg_code_graph-0.15.0/codegraph/plugins/rust}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/rust/cargo.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/rust/plugin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/rust/syntax.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/stubs → cg_code_graph-0.15.0/codegraph/plugins/scip}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/scip/importer.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/scip/scip.proto +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/scip/scip_pb2.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/swift → cg_code_graph-0.15.0/codegraph/plugins/stubs}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/stubs/plugins.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/ts → cg_code_graph-0.15.0/codegraph/plugins/swift}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/swift/baseurl.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/swift/exact.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/swift/indexstore.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/swift/packages.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/swift/plugin.py +0 -0
- {cg_code_graph-0.13.0/codegraph/plugins/tsweb → cg_code_graph-0.15.0/codegraph/plugins/ts}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/baseurl.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/extractor/package-lock.json +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/extractor/package.json +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/ts/nav.py +0 -0
- {cg_code_graph-0.13.0/codegraph/viz → cg_code_graph-0.15.0/codegraph/plugins/tsweb}/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/tsweb/common.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/plugins/tsweb/data.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/c_cpp.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/common.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/dart.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/django-ninja.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/django.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/djangorestframework.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/express.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/kotlin.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/laravel.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/nest.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/nextjs.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/nuxt.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/php.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/python.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/rust.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/swift.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/presets/typescript.yaml +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/process_runs.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/protocols/__init__.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/protocols/builtin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/protocols/matchers.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/protocols/view.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/realtime.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/realtime_events.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/realtime_native.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/realtime_ws.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/roundtrip.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/routes.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/rpc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/sdk_systems.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/sockets.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/starters.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/tests_index.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/udp_apps.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/graph.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/server.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/app.css +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/app.js +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/index.html +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/layered.js +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/vendor/VERSIONS.txt +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/vendor/cose-base.js +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/vendor/cytoscape-fcose.js +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/vendor/cytoscape.min.js +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/static/vendor/layout-base.js +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/tools/package-lock.json +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/tools/package.json +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/viz/tools/shoot.mjs +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/webhooks.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/codegraph/xcode.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/setup.cfg +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ai_tools.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_android_ipc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_apple_ipc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_bridges.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_bridges_pigeon_monorepo.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_brokers.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_cache_clean.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_cache_invalidation.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_channels_tests.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_cli_output.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_completeness.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_config_extras.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_coverage.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_coverage_ts_hint.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_dart_isolates.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_dispatch_interfaces.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_django_flutter.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_docs_links.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_enum_constants.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_external.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_gating.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_generated.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_graphql.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_impact_overrides.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_index_isolation.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_inherited_overrides.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_jobs.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_js_refs.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_binding.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_exact.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_fields.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_mixed.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_nav_consts.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_kotlin_props.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_laravel_determinism.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_laravel_resources.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_lint_async.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_local_ipc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_local_sockets.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_mcp.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_mcp_index.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_native_cfamily.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_native_concurrency.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_native_rust.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_nuxt_import_dirs.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_nuxt_rootsrc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_parity.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_parity_structure.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_php_props.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_plain_js.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_plans.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_platform_gaps.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_platform_type_variants.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_platforms.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_platforms_apple.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_presets_config.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_process_ipc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_process_runs.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_protocols.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_app_tests_module.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_collection_chains.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_compat.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_entry_refs.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_fields.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_infer_cycles.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_roots.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_subprocess_tests.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_tests.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_web_hosts.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_web_routes.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_python_web_routes_more.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_realtime.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_realtime_native.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_roundtrip.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_route_tables.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_routes_search_explain.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_rpc.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_scip_health.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_sdk_external.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_snippet.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_sockets.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_starters_budget.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_binding.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_exact.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_facts.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_fields.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_modules.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_more.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_nav_values.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_parse_errors.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_props.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_sdk.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_testing.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_swift_values.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_tests_scope.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ts_fields.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ts_fields_js_vue.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ts_file_specs.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ts_frameworks.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_ts_nuxt.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_values.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_viz.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_vue_nav.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_webhooks.py +0 -0
- {cg_code_graph-0.13.0 → cg_code_graph-0.15.0}/tests/test_websockets.py +0 -0
- {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
|
+
[](https://pypi.org/project/cg-code-graph/) [](https://pepy.tech/project/cg-code-graph) [](https://pypi.org/project/cg-code-graph/) [](LICENSE) [](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
|
+
[](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
|
+
[](docs/media/cg-terminal-demo.mp4)
|
|
69
|
+
|
|
70
|
+
## Supported languages
|
|
71
|
+
|
|
72
|
+
| Language | Frameworks and facts | Calls | Docs |
|
|
73
|
+
|---|---|---|---|
|
|
74
|
+
|  | Django (+ DRF, django-ninja), FastAPI / Starlette, Flask, Celery | exact (stdlib `ast`) | [Python](https://code-graph.cyberchronos00.workers.dev/docs/python) |
|
|
75
|
+
|   | 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
|
+
|  | Laravel (routes and middleware, queues, broadcasting) | exact (nikic/php-parser; needs PHP 8.2+) | [PHP](https://code-graph.cyberchronos00.workers.dev/docs/php) |
|
|
77
|
+
|  | Flutter | exact (Dart analyzer; needs the Dart SDK) | [Platforms](https://code-graph.cyberchronos00.workers.dev/docs/platforms) |
|
|
78
|
+
|  | Android, Kotlin Multiplatform | heuristic; exact with scip-java (opt-in) | [Kotlin](https://code-graph.cyberchronos00.workers.dev/docs/kotlin) |
|
|
79
|
+
|  | iOS / SwiftPM | heuristic; exact with the Swift index store (opt-in) | [Swift](https://code-graph.cyberchronos00.workers.dev/docs/swift) |
|
|
80
|
+
|    | 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
|
+
[](https://pypi.org/project/cg-code-graph/) [](https://pepy.tech/project/cg-code-graph) [](https://pypi.org/project/cg-code-graph/) [](LICENSE) [](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
|
+
[](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
|
+
[](docs/media/cg-terminal-demo.mp4)
|
|
43
|
+
|
|
44
|
+
## Supported languages
|
|
45
|
+
|
|
46
|
+
| Language | Frameworks and facts | Calls | Docs |
|
|
47
|
+
|---|---|---|---|
|
|
48
|
+
|  | Django (+ DRF, django-ninja), FastAPI / Starlette, Flask, Celery | exact (stdlib `ast`) | [Python](https://code-graph.cyberchronos00.workers.dev/docs/python) |
|
|
49
|
+
|   | 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
|
+
|  | Laravel (routes and middleware, queues, broadcasting) | exact (nikic/php-parser; needs PHP 8.2+) | [PHP](https://code-graph.cyberchronos00.workers.dev/docs/php) |
|
|
51
|
+
|  | Flutter | exact (Dart analyzer; needs the Dart SDK) | [Platforms](https://code-graph.cyberchronos00.workers.dev/docs/platforms) |
|
|
52
|
+
|  | Android, Kotlin Multiplatform | heuristic; exact with scip-java (opt-in) | [Kotlin](https://code-graph.cyberchronos00.workers.dev/docs/kotlin) |
|
|
53
|
+
|  | iOS / SwiftPM | heuristic; exact with the Swift index store (opt-in) | [Swift](https://code-graph.cyberchronos00.workers.dev/docs/swift) |
|
|
54
|
+
|    | 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
|
+
[](https://pypi.org/project/cg-code-graph/) [](https://pepy.tech/project/cg-code-graph) [](https://pypi.org/project/cg-code-graph/) [](LICENSE) [](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
|
+
[](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
|
+
[](docs/media/cg-terminal-demo.mp4)
|
|
69
|
+
|
|
70
|
+
## Supported languages
|
|
71
|
+
|
|
72
|
+
| Language | Frameworks and facts | Calls | Docs |
|
|
73
|
+
|---|---|---|---|
|
|
74
|
+
|  | Django (+ DRF, django-ninja), FastAPI / Starlette, Flask, Celery | exact (stdlib `ast`) | [Python](https://code-graph.cyberchronos00.workers.dev/docs/python) |
|
|
75
|
+
|   | 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
|
+
|  | Laravel (routes and middleware, queues, broadcasting) | exact (nikic/php-parser; needs PHP 8.2+) | [PHP](https://code-graph.cyberchronos00.workers.dev/docs/php) |
|
|
77
|
+
|  | Flutter | exact (Dart analyzer; needs the Dart SDK) | [Platforms](https://code-graph.cyberchronos00.workers.dev/docs/platforms) |
|
|
78
|
+
|  | Android, Kotlin Multiplatform | heuristic; exact with scip-java (opt-in) | [Kotlin](https://code-graph.cyberchronos00.workers.dev/docs/kotlin) |
|
|
79
|
+
|  | iOS / SwiftPM | heuristic; exact with the Swift index store (opt-in) | [Swift](https://code-graph.cyberchronos00.workers.dev/docs/swift) |
|
|
80
|
+
|    | 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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""code-graph: deterministic code knowledge graph (beta)."""
|
|
2
|
-
__version__ = "0.
|
|
2
|
+
__version__ = "0.15.0"
|