codegraph-brain 0.20.0__tar.gz → 0.21.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.
- codegraph_brain-0.21.0/.github/test-count-baseline +1 -0
- codegraph_brain-0.21.0/.release-please-manifest.json +3 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/CHANGELOG.md +20 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/PKG-INFO +24 -17
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/README.md +23 -16
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/architecture/diagrams/pipeline_flow.mermaid +13 -8
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/how-to/MCP_REFERENCE.md +5 -3
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/pyproject.toml +1 -1
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/api/mcp_server.py +19 -12
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/cli.py +32 -34
- codegraph_brain-0.21.0/src/cgis/core/js_globals.py +116 -0
- codegraph_brain-0.21.0/src/cgis/extractors/_typescript_bindings.py +155 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/typescript_extractor.py +4 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/pipeline.py +167 -35
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/resolver/engine.py +32 -9
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/resolver/indices.py +27 -1
- codegraph_brain-0.21.0/src/cgis/resolver/js_builtins.py +44 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/storage/sqlite_store.py +54 -7
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/test_annotation_calibration.py +7 -2
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/test_self_parse_ts.py +58 -1
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_cli.py +141 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_mcp_server.py +38 -0
- codegraph_brain-0.21.0/tests/unit/test_pipeline_incremental_symbols.py +332 -0
- codegraph_brain-0.21.0/tests/unit/test_resolver_js_builtins.py +230 -0
- codegraph_brain-0.21.0/tests/unit/test_resolver_language_scope.py +128 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/uv.lock +1 -1
- codegraph_brain-0.20.0/.github/test-count-baseline +0 -1
- codegraph_brain-0.20.0/.release-please-manifest.json +0 -3
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/.claude-plugin/marketplace.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/.gitattributes +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/.github/workflows/autodoc.yml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/.github/workflows/ci.yml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/.github/workflows/guardian.yml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/.github/workflows/pr-title.yml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/.github/workflows/release-please.yml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/.gitignore +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/.pre-commit-config.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/.python-version +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/CLAUDE.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/CONTRIBUTING.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/LICENSE +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/Makefile +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/PRIVACY.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/CURATION.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/calibration.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/experiments/246-cross-vendor/README.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/experiments/246-cross-vendor/free-nemotron-quota-cutoff.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/experiments/401-evidence/README.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/experiments/401-evidence/pr-399-control-rows.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/experiments/401-evidence/pr-399-recording.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/experiments/401-evidence/pr-399-treatment-rows.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/experiments/407-no-checker-appeal/README.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-directive-rows.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-prohibition-rows.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/pr-122.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/pr-140.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/pr-141.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/pr-142.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/pr-143.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/pr-144.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/pr-278.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/pr-313.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/guardian/results.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian/README.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian/cal_dot_com.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian/discourse.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian/grafana.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian/keycloak.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian/sentry.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian-judged.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian-p3-judged-run1.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian-p3-judged-run1.jsonl.corrupted-backup +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian-p3-run1.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian-p3-run2.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian-p3-run3.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian-plan.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian-repeat-judged.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian-repeat-reviews.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/benchmarks/martian-reviews.jsonl +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/data/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/AUDIT.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/CASE_STUDY.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/GUARDIAN_LOCAL_BENCH.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/GUARDIAN_REMOTE_OLLAMA.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/architecture/HOW_IT_WORKS.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/architecture/ONTOLOGY.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/architecture/PATTERNS_AND_TRIADS.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/architecture/SELF_PORTRAIT.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/architecture/health_badge.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/assets/.gitignore +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/assets/cgis-app-avatar.png +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/assets/cgis-app-avatar.svg +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/assets/generate_avatar.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/examples/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/how-to/AGENT_ONBOARDING.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/how-to/CLI_USAGE.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/lab-notes/2026-06-11-chunked-review-negative-result.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/ontology/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/ontology/core.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/ontology/domains.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/ontology/patterns.yaml +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/ontology/tolerances.lock +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/plans/2026-09-09-graph-freshness.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-09-domain-pattern-fingerprint-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-09-pattern-alphabet-motif-basis-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-10-guardian-sprint-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-11-fastapi-di-edges-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-11-guardian-chunked-review-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-11-guardian-chunker-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-11-mcp-drift-validate-fqn-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-11-resolver-split-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-11-symbol-import-edges-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-12-drift-empty-domains-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-12-gate-semantics-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-12-init-ontology-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-12-release-please-ci-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-13-suggest-packages-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-06-13-tangle-anti-pattern-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-29-guardian-skeptic-scoring-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-30-cgis-fractal-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-30-cgis-fractal-plan.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-30-chunk-source-filter-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-30-chunk-source-filter-plan.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-30-genai-client-close-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-30-genai-client-close-plan.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-30-guardian-precision-bench-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-30-guardian-precision-bench-plan.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-30-guardian-timeout-retry-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-30-guardian-timeout-retry-plan.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-07-31-finder-bug-class-taxonomy.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-08-01-aura-autoevolution-poc.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-08-11-guardian-code-review-bench.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-08-14-review-fingerprint-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-09-05-annotation-graph-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/2026-09-09-graph-freshness-design.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/BLUEPRINT.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/PRD.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/TDD.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-09-fingerprint-drift.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-10-guardian-context-skeptic-inline.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-10-guardian-structured-findings-bench.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-10-motif-basis-part-b.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-10-unified-pattern-alphabet.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-11-fastapi-di-edges.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-11-guardian-chunked-review.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-11-guardian-chunker.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-11-mcp-drift-validate-fqn.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-11-resolver-split.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-12-drift-empty-domains.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-12-gate-semantics.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-12-init-ontology.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-12-release-please-ci.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-12-symbol-import-edges.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-06-13-suggest-packages.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-07-29-guardian-skeptic-scoring.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-08-14-review-fingerprint.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-09-05-annotation-graph-pr1.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/specs/plans/2026-09-05-annotation-graph-pr2.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/main.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/plugin/.claude-plugin/plugin.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/plugin/.mcp.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/plugin/README.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/plugin/skills/cgis/SKILL.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/plugin/skills/ingest/SKILL.md +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/release-please-config.json +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/backfill_calibration_fingerprint.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/backfill_review_fingerprint.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/check_pytest_raises.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/check_test_count.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/colab_bench.sh +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/gen_ideal_graph.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/generate_health.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/generate_mcp_ref.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/generate_schema_docs.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/guardian_bench.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/guardian_calibrate.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/guardian_martian.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/guardian_replay_skeptic.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/guardian_review.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/inject_readme_graph.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/ollama_visitor.sh +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/probe_closure_gap.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/probe_tier_ladder.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/recordings_from_corpus.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/scripts/skeptic_arms.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/__init__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/__main__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/api/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/api/__init__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/core/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/core/coverage.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/core/freshness.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/core/generated.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/core/models.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/core/paths.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/_python_annotations.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/_python_ast.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/_python_classes.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/_python_functions.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/_python_imports.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/_python_types.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/base.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/python_extractor.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/extractors/registry.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/__init__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/axes.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/bench.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/calibrate.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/chunked.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/chunker.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/collector.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/core.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/diff_index.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/evidence.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/findings.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/github_poster.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/martian.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/metrics.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/prompts.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/providers/__init__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/providers/base.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/providers/gemini.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/providers/mistral.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/providers/ollama.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/providers/openrouter.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/recording.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/render.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/review_fingerprint.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/runner.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/guardian/skeptic.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/py.typed +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/analysis/__init__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/analysis/analyzer.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/analysis/anomaly.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/analysis/cohesion.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/analysis/health.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/analysis/suggest_service.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/context/__init__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/context/audit.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/context/context_service.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/context/orphans.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/context/prompt.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/context/snippet.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/drift/__init__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/drift/_scc.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/drift/drift.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/drift/drift_service.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/drift/fingerprint.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/drift/fractal.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/drift/ontology_init.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/drift/quotient.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/drift/triads.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/engine.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/fqn.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/render/__init__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/render/graph_json.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/render/mermaid.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/query/render/metrics.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/resolver/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/resolver/__init__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/resolver/symbols.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/resolver/uplift.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/src/cgis/storage/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/integration/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/__init__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/conftest.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/test_architecture.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/test_drift.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/test_fractal.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/test_init_ontology_roundtrip.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/test_receiver_resolution.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/test_self_parse.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/self_parsing/test_suggest.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/.gitkeep +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/conftest.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/guardian_stubs.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/review_path_inventory.txt +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test___main__.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_analyzer.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_annotation_edges.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_audit.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_backfill_calibration_fingerprint.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_backfill_review_fingerprint.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_check_pytest_raises.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_check_test_count.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_cohesion.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_context_service.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_di_acceptance.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_drift.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_drift_service.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_extractor_registry.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_fingerprint.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_fqn.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_fractal.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_freshness.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_gen_ideal_graph.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_generate_mcp_ref.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_generated.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_graph_json.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_axes.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_bench.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_bench_script.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_calibrate.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_calibrate_script.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_chunked.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_chunker.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_collector.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_core.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_diff_index.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_evidence.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_findings.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_martian.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_martian_script.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_martian_union.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_metrics.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_mistral_sampling.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_ollama_sampling.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_ollama_truncation.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_openrouter.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_poster.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_providers.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_providers_name.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_recording.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_render.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_replay_skeptic.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_review_script.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_runner.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_salvage.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_guardian_skeptic.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_health_scorer.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_import_acceptance.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_mermaid.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_metrics.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_models.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_name_load_positions.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_ontology_compliance.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_ontology_init.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_orphans.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_paths.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_patterns_yaml.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_pipeline.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_prompt.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_python_annotations.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_python_extractor.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_query_coverage.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_quotient.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_recordings_from_corpus.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_resolver.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_resolver_indices.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_resolver_symbols.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_review_fingerprint_closure.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_review_fingerprint_contract.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_review_fingerprint_digest.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_review_fingerprint_record.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_self_types.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_skeptic_arms.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_snippet.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_sqlite_store.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_suggest_service.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_temperature_source.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_triads.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_typescript_extractor.py +0 -0
- {codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/tests/unit/test_uplift.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2459
|
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.21.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.20.0...codegraph-brain-v0.21.0) (2026-09-16)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **resolver:** resolve JS/TS runtime globals into js_builtins.* ([#111](https://github.com/zaebee/codegraph-brain/issues/111)) ([#453](https://github.com/zaebee/codegraph-brain/issues/453)) ([84e790b](https://github.com/zaebee/codegraph-brain/commit/84e790b404f7a515e048f7a2370b8865b71912ff))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **cli:** a full ingest into a database records file hashes ([#461](https://github.com/zaebee/codegraph-brain/issues/461)) ([e0a4a5e](https://github.com/zaebee/codegraph-brain/commit/e0a4a5ec34f8b0b34220f3f318ce0edc99ed1d9b))
|
|
14
|
+
* **pipeline:** rebuild when a change alters what other files resolve against ([#38](https://github.com/zaebee/codegraph-brain/issues/38)) ([#458](https://github.com/zaebee/codegraph-brain/issues/458)) ([8126fd6](https://github.com/zaebee/codegraph-brain/commit/8126fd6377c82613f9f8a76f33253a8cd9e636f0))
|
|
15
|
+
* **resolver:** Python stdlib names are STDLIB only in Python sources ([#454](https://github.com/zaebee/codegraph-brain/issues/454)) ([#457](https://github.com/zaebee/codegraph-brain/issues/457)) ([15e7ba1](https://github.com/zaebee/codegraph-brain/commit/15e7ba17ae49e2e3c10a2ef9f6cf1f11e663edfb))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Documentation
|
|
19
|
+
|
|
20
|
+
* auto-sync architecture graph and MCP reference ([#456](https://github.com/zaebee/codegraph-brain/issues/456)) ([ae24054](https://github.com/zaebee/codegraph-brain/commit/ae24054361935dbb1a1f9471eea7b4b949ab8a10))
|
|
21
|
+
* auto-sync architecture graph and MCP reference ([#460](https://github.com/zaebee/codegraph-brain/issues/460)) ([a341063](https://github.com/zaebee/codegraph-brain/commit/a3410631511802bdc9851decadbbbf25b40d8d22))
|
|
22
|
+
|
|
3
23
|
## [0.20.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.19.0...codegraph-brain-v0.20.0) (2026-09-11)
|
|
4
24
|
|
|
5
25
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: codegraph-brain
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.21.0
|
|
4
4
|
Summary: Semantic code graph for AI agents — deterministic FQN resolution, impact analysis and architectural drift gates, exposed over MCP.
|
|
5
5
|
Project-URL: Homepage, https://github.com/zaebee/codegraph-brain
|
|
6
6
|
Project-URL: Repository, https://github.com/zaebee/codegraph-brain
|
|
@@ -202,31 +202,36 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
202
202
|
models_Node["Node (models.py:85)"]:::classNode
|
|
203
203
|
end
|
|
204
204
|
subgraph sg_pipeline["pipeline.py"]
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
205
|
+
pipeline_IngestionPipeline_cross_file_inputs_changed["_cross_file_inputs_changed (pipeline.py:249)"]:::methodNode
|
|
206
|
+
pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:384)"]:::methodNode
|
|
207
|
+
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:310)"]:::methodNode
|
|
208
|
+
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:334)"]:::methodNode
|
|
209
|
+
pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:212)"]:::methodNode
|
|
210
|
+
pipeline_IngestionPipeline_run["run (pipeline.py:99)"]:::methodNode
|
|
211
|
+
pipeline_IngestionPipeline_workspace_root["workspace_root (pipeline.py:82)"]:::methodNode
|
|
210
212
|
end
|
|
211
213
|
subgraph sg_engine["engine.py"]
|
|
212
|
-
engine_ResolverEngine["ResolverEngine (engine.py:
|
|
213
|
-
engine_ResolverEngine_resolve["resolve (engine.py:
|
|
214
|
+
engine_ResolverEngine["ResolverEngine (engine.py:20)"]:::classNode
|
|
215
|
+
engine_ResolverEngine_resolve["resolve (engine.py:37)"]:::methodNode
|
|
214
216
|
end
|
|
215
217
|
subgraph sg_uplift["uplift.py"]
|
|
216
218
|
uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:66)"]:::classNode
|
|
217
219
|
uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
|
|
218
220
|
end
|
|
219
221
|
subgraph sg_sqlite_store["sqlite_store.py"]
|
|
220
|
-
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:
|
|
222
|
+
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:42)"]:::classNode
|
|
221
223
|
end
|
|
222
224
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
|
|
223
225
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
|
|
224
226
|
pipeline_IngestionPipeline_run -->|REFERENCES| sqlite_store_SQLiteStore
|
|
227
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_workspace_root
|
|
225
228
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_get_extractor
|
|
226
229
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_process_file
|
|
227
230
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_is_noop_incremental
|
|
228
231
|
pipeline_IngestionPipeline_run -->|CALLS| engine_ResolverEngine
|
|
229
232
|
pipeline_IngestionPipeline_run -->|CALLS| engine_ResolverEngine_resolve
|
|
233
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_cross_file_inputs_changed
|
|
234
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_run
|
|
230
235
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_persist_incremental
|
|
231
236
|
pipeline_IngestionPipeline_run -->|CALLS| uplift_SemanticUpliftEngine_execute_uplift
|
|
232
237
|
pipeline_IngestionPipeline_run -->|CALLS| uplift_SemanticUpliftEngine
|
|
@@ -236,16 +241,18 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
236
241
|
|--------|------|------|
|
|
237
242
|
| `Node` | CLASS | [`models.py:85`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L85) |
|
|
238
243
|
| `Edge` | CLASS | [`models.py:142`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L142) |
|
|
239
|
-
| `
|
|
240
|
-
| `
|
|
241
|
-
| `
|
|
242
|
-
| `
|
|
243
|
-
| `
|
|
244
|
-
| `
|
|
245
|
-
| `
|
|
244
|
+
| `workspace_root` | METHOD | [`pipeline.py:82`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L82) |
|
|
245
|
+
| `run` | METHOD | [`pipeline.py:99`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L99) |
|
|
246
|
+
| `_process_file` | METHOD | [`pipeline.py:212`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L212) |
|
|
247
|
+
| `_cross_file_inputs_changed` | METHOD | [`pipeline.py:249`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L249) |
|
|
248
|
+
| `_is_noop_incremental` | METHOD | [`pipeline.py:310`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L310) |
|
|
249
|
+
| `_persist_incremental` | METHOD | [`pipeline.py:334`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L334) |
|
|
250
|
+
| `_get_extractor` | METHOD | [`pipeline.py:384`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L384) |
|
|
251
|
+
| `ResolverEngine` | CLASS | [`engine.py:20`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L20) |
|
|
252
|
+
| `resolve` | METHOD | [`engine.py:37`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L37) |
|
|
246
253
|
| `SemanticUpliftEngine` | CLASS | [`uplift.py:66`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L66) |
|
|
247
254
|
| `execute_uplift` | METHOD | [`uplift.py:91`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L91) |
|
|
248
|
-
| `SQLiteStore` | CLASS | [`sqlite_store.py:
|
|
255
|
+
| `SQLiteStore` | CLASS | [`sqlite_store.py:42`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/storage/sqlite_store.py#L42) |
|
|
249
256
|
<!-- END_CGIS_GRAPH -->
|
|
250
257
|
|
|
251
258
|
---
|
|
@@ -152,31 +152,36 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
152
152
|
models_Node["Node (models.py:85)"]:::classNode
|
|
153
153
|
end
|
|
154
154
|
subgraph sg_pipeline["pipeline.py"]
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
155
|
+
pipeline_IngestionPipeline_cross_file_inputs_changed["_cross_file_inputs_changed (pipeline.py:249)"]:::methodNode
|
|
156
|
+
pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:384)"]:::methodNode
|
|
157
|
+
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:310)"]:::methodNode
|
|
158
|
+
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:334)"]:::methodNode
|
|
159
|
+
pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:212)"]:::methodNode
|
|
160
|
+
pipeline_IngestionPipeline_run["run (pipeline.py:99)"]:::methodNode
|
|
161
|
+
pipeline_IngestionPipeline_workspace_root["workspace_root (pipeline.py:82)"]:::methodNode
|
|
160
162
|
end
|
|
161
163
|
subgraph sg_engine["engine.py"]
|
|
162
|
-
engine_ResolverEngine["ResolverEngine (engine.py:
|
|
163
|
-
engine_ResolverEngine_resolve["resolve (engine.py:
|
|
164
|
+
engine_ResolverEngine["ResolverEngine (engine.py:20)"]:::classNode
|
|
165
|
+
engine_ResolverEngine_resolve["resolve (engine.py:37)"]:::methodNode
|
|
164
166
|
end
|
|
165
167
|
subgraph sg_uplift["uplift.py"]
|
|
166
168
|
uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:66)"]:::classNode
|
|
167
169
|
uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
|
|
168
170
|
end
|
|
169
171
|
subgraph sg_sqlite_store["sqlite_store.py"]
|
|
170
|
-
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:
|
|
172
|
+
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:42)"]:::classNode
|
|
171
173
|
end
|
|
172
174
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
|
|
173
175
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
|
|
174
176
|
pipeline_IngestionPipeline_run -->|REFERENCES| sqlite_store_SQLiteStore
|
|
177
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_workspace_root
|
|
175
178
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_get_extractor
|
|
176
179
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_process_file
|
|
177
180
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_is_noop_incremental
|
|
178
181
|
pipeline_IngestionPipeline_run -->|CALLS| engine_ResolverEngine
|
|
179
182
|
pipeline_IngestionPipeline_run -->|CALLS| engine_ResolverEngine_resolve
|
|
183
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_cross_file_inputs_changed
|
|
184
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_run
|
|
180
185
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_persist_incremental
|
|
181
186
|
pipeline_IngestionPipeline_run -->|CALLS| uplift_SemanticUpliftEngine_execute_uplift
|
|
182
187
|
pipeline_IngestionPipeline_run -->|CALLS| uplift_SemanticUpliftEngine
|
|
@@ -186,16 +191,18 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
186
191
|
|--------|------|------|
|
|
187
192
|
| `Node` | CLASS | [`models.py:85`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L85) |
|
|
188
193
|
| `Edge` | CLASS | [`models.py:142`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L142) |
|
|
189
|
-
| `
|
|
190
|
-
| `
|
|
191
|
-
| `
|
|
192
|
-
| `
|
|
193
|
-
| `
|
|
194
|
-
| `
|
|
195
|
-
| `
|
|
194
|
+
| `workspace_root` | METHOD | [`pipeline.py:82`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L82) |
|
|
195
|
+
| `run` | METHOD | [`pipeline.py:99`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L99) |
|
|
196
|
+
| `_process_file` | METHOD | [`pipeline.py:212`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L212) |
|
|
197
|
+
| `_cross_file_inputs_changed` | METHOD | [`pipeline.py:249`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L249) |
|
|
198
|
+
| `_is_noop_incremental` | METHOD | [`pipeline.py:310`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L310) |
|
|
199
|
+
| `_persist_incremental` | METHOD | [`pipeline.py:334`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L334) |
|
|
200
|
+
| `_get_extractor` | METHOD | [`pipeline.py:384`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L384) |
|
|
201
|
+
| `ResolverEngine` | CLASS | [`engine.py:20`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L20) |
|
|
202
|
+
| `resolve` | METHOD | [`engine.py:37`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L37) |
|
|
196
203
|
| `SemanticUpliftEngine` | CLASS | [`uplift.py:66`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L66) |
|
|
197
204
|
| `execute_uplift` | METHOD | [`uplift.py:91`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L91) |
|
|
198
|
-
| `SQLiteStore` | CLASS | [`sqlite_store.py:
|
|
205
|
+
| `SQLiteStore` | CLASS | [`sqlite_store.py:42`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/storage/sqlite_store.py#L42) |
|
|
199
206
|
<!-- END_CGIS_GRAPH -->
|
|
200
207
|
|
|
201
208
|
---
|
{codegraph_brain-0.20.0 → codegraph_brain-0.21.0}/docs/architecture/diagrams/pipeline_flow.mermaid
RENAMED
|
@@ -12,31 +12,36 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
12
12
|
models_Node["Node (models.py:85)"]:::classNode
|
|
13
13
|
end
|
|
14
14
|
subgraph sg_pipeline["pipeline.py"]
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
pipeline_IngestionPipeline_cross_file_inputs_changed["_cross_file_inputs_changed (pipeline.py:249)"]:::methodNode
|
|
16
|
+
pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:384)"]:::methodNode
|
|
17
|
+
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:310)"]:::methodNode
|
|
18
|
+
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:334)"]:::methodNode
|
|
19
|
+
pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:212)"]:::methodNode
|
|
20
|
+
pipeline_IngestionPipeline_run["run (pipeline.py:99)"]:::methodNode
|
|
21
|
+
pipeline_IngestionPipeline_workspace_root["workspace_root (pipeline.py:82)"]:::methodNode
|
|
20
22
|
end
|
|
21
23
|
subgraph sg_engine["engine.py"]
|
|
22
|
-
engine_ResolverEngine["ResolverEngine (engine.py:
|
|
23
|
-
engine_ResolverEngine_resolve["resolve (engine.py:
|
|
24
|
+
engine_ResolverEngine["ResolverEngine (engine.py:20)"]:::classNode
|
|
25
|
+
engine_ResolverEngine_resolve["resolve (engine.py:37)"]:::methodNode
|
|
24
26
|
end
|
|
25
27
|
subgraph sg_uplift["uplift.py"]
|
|
26
28
|
uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:66)"]:::classNode
|
|
27
29
|
uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
|
|
28
30
|
end
|
|
29
31
|
subgraph sg_sqlite_store["sqlite_store.py"]
|
|
30
|
-
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:
|
|
32
|
+
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:42)"]:::classNode
|
|
31
33
|
end
|
|
32
34
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
|
|
33
35
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
|
|
34
36
|
pipeline_IngestionPipeline_run -->|REFERENCES| sqlite_store_SQLiteStore
|
|
37
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_workspace_root
|
|
35
38
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_get_extractor
|
|
36
39
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_process_file
|
|
37
40
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_is_noop_incremental
|
|
38
41
|
pipeline_IngestionPipeline_run -->|CALLS| engine_ResolverEngine
|
|
39
42
|
pipeline_IngestionPipeline_run -->|CALLS| engine_ResolverEngine_resolve
|
|
43
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_cross_file_inputs_changed
|
|
44
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_run
|
|
40
45
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_persist_incremental
|
|
41
46
|
pipeline_IngestionPipeline_run -->|CALLS| uplift_SemanticUpliftEngine_execute_uplift
|
|
42
47
|
pipeline_IngestionPipeline_run -->|CALLS| uplift_SemanticUpliftEngine
|
|
@@ -237,9 +237,11 @@ Scan a local directory, extract all symbols, resolve links, and build the graph
|
|
|
237
237
|
|
|
238
238
|
By default the ingest is **incremental**: only changed/new files are
|
|
239
239
|
re-scanned, and the summary reports both what changed this run and the
|
|
240
|
-
whole-graph total.
|
|
241
|
-
|
|
242
|
-
|
|
240
|
+
whole-graph total. When a change alters what other files resolve against — a
|
|
241
|
+
renamed, removed or added symbol, a deleted or new file, a changed base class
|
|
242
|
+
or re-export — the incremental run rebuilds the whole graph itself, so edges
|
|
243
|
+
in unchanged files never point at symbols that no longer exist. Set
|
|
244
|
+
``full_rebuild=True`` to force a re-scan of every file from scratch.
|
|
243
245
|
|
|
244
246
|
| Argument | Type | Required | Description |
|
|
245
247
|
| :--- | :--- | :---: | :--- |
|
|
@@ -7,7 +7,7 @@ packages = ["src/cgis"]
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "codegraph-brain"
|
|
10
|
-
version = "0.
|
|
10
|
+
version = "0.21.0"
|
|
11
11
|
description = "Semantic code graph for AI agents — deterministic FQN resolution, impact analysis and architectural drift gates, exposed over MCP."
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
requires-python = ">=3.12"
|
|
@@ -260,9 +260,11 @@ def cgis_ingest(project_path: str, db_path: str = _DEFAULT_DB, full_rebuild: boo
|
|
|
260
260
|
|
|
261
261
|
By default the ingest is **incremental**: only changed/new files are
|
|
262
262
|
re-scanned, and the summary reports both what changed this run and the
|
|
263
|
-
whole-graph total.
|
|
264
|
-
|
|
265
|
-
|
|
263
|
+
whole-graph total. When a change alters what other files resolve against — a
|
|
264
|
+
renamed, removed or added symbol, a deleted or new file, a changed base class
|
|
265
|
+
or re-export — the incremental run rebuilds the whole graph itself, so edges
|
|
266
|
+
in unchanged files never point at symbols that no longer exist. Set
|
|
267
|
+
``full_rebuild=True`` to force a re-scan of every file from scratch.
|
|
266
268
|
"""
|
|
267
269
|
refusal = _reject_db_path(db_path)
|
|
268
270
|
if refusal is not None:
|
|
@@ -272,13 +274,12 @@ def cgis_ingest(project_path: str, db_path: str = _DEFAULT_DB, full_rebuild: boo
|
|
|
272
274
|
pipeline = IngestionPipeline(_EXTRACTORS)
|
|
273
275
|
try:
|
|
274
276
|
with SQLiteStore(db_path) as store:
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
store.record_ingest(project_path)
|
|
277
|
+
# A rebuild replaces the stored graph in the transaction that writes the
|
|
278
|
+
# new one: deleted-file nodes and stale hashes go, uplift runs inside
|
|
279
|
+
# the pipeline, and a failure part-way leaves the old graph intact.
|
|
280
|
+
nodes, _raw, resolved = pipeline.run(project_path, store=store, rebuild=full_rebuild)
|
|
281
|
+
if nodes:
|
|
282
|
+
store.record_ingest(project_path)
|
|
282
283
|
total_nodes = store.get_node_count()
|
|
283
284
|
total_edges = store.get_edge_count()
|
|
284
285
|
except Exception as exc:
|
|
@@ -292,8 +293,14 @@ def cgis_ingest(project_path: str, db_path: str = _DEFAULT_DB, full_rebuild: boo
|
|
|
292
293
|
total_edges=total_edges,
|
|
293
294
|
db=db_path,
|
|
294
295
|
)
|
|
295
|
-
|
|
296
|
-
|
|
296
|
+
if not nodes:
|
|
297
|
+
# Nothing extracted: a rebuild kept the stored graph, and neither mode
|
|
298
|
+
# records this path as the graph's fresh root.
|
|
299
|
+
kept = "the stored graph was kept" if full_rebuild else "the graph now holds none"
|
|
300
|
+
lines = [f"⚠️ No source files extracted from {project_path} (mode: {mode}); {kept}."]
|
|
301
|
+
else:
|
|
302
|
+
lines = [f"✅ Ingested: {project_path} (mode: {mode})"]
|
|
303
|
+
if nodes and not full_rebuild and not resolved:
|
|
297
304
|
# Incremental no-op: an empty resolved set means no files changed. Say so
|
|
298
305
|
# explicitly so the stable total below doesn't read as a shrunken graph (#192).
|
|
299
306
|
lines.append("No files changed since the last ingest.")
|
|
@@ -54,7 +54,6 @@ from cgis.query.fqn import resolve_fqn
|
|
|
54
54
|
from cgis.query.render.graph_json import graph_to_json
|
|
55
55
|
from cgis.query.render.mermaid import MermaidCompiler
|
|
56
56
|
from cgis.query.render.metrics import ArchitectureReport, DuckDBAnalyzer
|
|
57
|
-
from cgis.resolver.uplift import SemanticUpliftEngine
|
|
58
57
|
from cgis.storage.sqlite_store import RAW_CALL_PREFIX, SQLiteStore
|
|
59
58
|
|
|
60
59
|
_DEFAULT_DB = "graph.db"
|
|
@@ -144,33 +143,27 @@ def main(
|
|
|
144
143
|
"""CGIS — Code Graph Intelligence System CLI."""
|
|
145
144
|
|
|
146
145
|
|
|
147
|
-
def
|
|
146
|
+
def _write_json_graph(
|
|
148
147
|
output: str,
|
|
149
148
|
source_path: str,
|
|
150
149
|
nodes: list[Node],
|
|
151
150
|
resolved_edges: list[Edge],
|
|
152
|
-
domains: str | None,
|
|
153
151
|
) -> None:
|
|
154
|
-
"""
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
"
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
_json.dump(graph_data, f, indent=2)
|
|
170
|
-
else:
|
|
171
|
-
with SQLiteStore(output) as store:
|
|
172
|
-
store.save_graph(nodes, resolved_edges, overwrite=True)
|
|
173
|
-
SemanticUpliftEngine(store, domains).execute_uplift()
|
|
152
|
+
"""Write the ingestion result as a health-enriched graph.json."""
|
|
153
|
+
enriched_nodes = HealthScorer(nodes, resolved_edges).enrich()
|
|
154
|
+
graph_data = {
|
|
155
|
+
"metadata": {
|
|
156
|
+
"source_path": source_path,
|
|
157
|
+
"node_count": len(enriched_nodes),
|
|
158
|
+
"edge_count": len(resolved_edges),
|
|
159
|
+
},
|
|
160
|
+
"nodes": [n.model_dump() for n in enriched_nodes],
|
|
161
|
+
"edges": [e.model_dump() for e in resolved_edges],
|
|
162
|
+
}
|
|
163
|
+
output_path = Path(output)
|
|
164
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
165
|
+
with output_path.open("w", encoding="utf-8") as f:
|
|
166
|
+
_json.dump(graph_data, f, indent=2)
|
|
174
167
|
|
|
175
168
|
|
|
176
169
|
@app.command()
|
|
@@ -225,11 +218,22 @@ def ingest(
|
|
|
225
218
|
)
|
|
226
219
|
incremental = False
|
|
227
220
|
|
|
221
|
+
# Anything but JSON is a database. A full ingest into one runs the
|
|
222
|
+
# store-backed pipeline as a rebuild — the path MCP `full_rebuild` takes — so
|
|
223
|
+
# the file hashes the next --incremental compares against are written, and
|
|
224
|
+
# stale hashes and deleted files' nodes go, in the one transaction that writes
|
|
225
|
+
# the new graph. Writing it with save_graph afterwards left files_state as it was.
|
|
226
|
+
to_database = not output.endswith(".json")
|
|
228
227
|
try:
|
|
229
|
-
if
|
|
228
|
+
if to_database:
|
|
229
|
+
# A bad path must not create or touch the database.
|
|
230
|
+
IngestionPipeline.workspace_root(path)
|
|
230
231
|
with SQLiteStore(output) as store:
|
|
231
|
-
nodes, raw_edges, resolved_edges = pipeline.run(
|
|
232
|
-
|
|
232
|
+
nodes, raw_edges, resolved_edges = pipeline.run(
|
|
233
|
+
path, store=store, rebuild=not incremental
|
|
234
|
+
)
|
|
235
|
+
if nodes:
|
|
236
|
+
store.record_ingest(path)
|
|
233
237
|
else:
|
|
234
238
|
nodes, raw_edges, resolved_edges = pipeline.run(path)
|
|
235
239
|
|
|
@@ -240,14 +244,8 @@ def ingest(
|
|
|
240
244
|
)
|
|
241
245
|
return
|
|
242
246
|
|
|
243
|
-
if not
|
|
244
|
-
|
|
245
|
-
# Anything but JSON is a database — `_write_graph_output` branches on
|
|
246
|
-
# exactly that, and gating on `.db` alone left `-o graph.sqlite`
|
|
247
|
-
# advising a re-ingest that would take the same branch again.
|
|
248
|
-
if not output.endswith(".json"):
|
|
249
|
-
with SQLiteStore(output) as store:
|
|
250
|
-
store.record_ingest(path)
|
|
247
|
+
if not to_database:
|
|
248
|
+
_write_json_graph(output, path, nodes, resolved_edges)
|
|
251
249
|
|
|
252
250
|
table = Table(title="Ingestion Summary")
|
|
253
251
|
table.add_column("Metric", style="cyan")
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"""The names a JavaScript runtime provides without an import (#111).
|
|
2
|
+
|
|
3
|
+
Plain data in `core` because two layers read it: the TypeScript extractor, to
|
|
4
|
+
record which of these names a file rebinds, and the resolver, to rewrite calls
|
|
5
|
+
on the ones it does not.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
#: ECMAScript standard globals plus the browser and Node host objects a UI or
|
|
9
|
+
#: server codebase calls directly. A receiver is matched by its root segment only,
|
|
10
|
+
#: so `Math.max` and `document.body.append` both qualify; `arr.map` does not.
|
|
11
|
+
JS_GLOBALS: frozenset[str] = frozenset(
|
|
12
|
+
{
|
|
13
|
+
# ECMAScript value/function globals
|
|
14
|
+
"globalThis",
|
|
15
|
+
"isFinite",
|
|
16
|
+
"isNaN",
|
|
17
|
+
"parseFloat",
|
|
18
|
+
"parseInt",
|
|
19
|
+
"encodeURI",
|
|
20
|
+
"encodeURIComponent",
|
|
21
|
+
"decodeURI",
|
|
22
|
+
"decodeURIComponent",
|
|
23
|
+
"structuredClone",
|
|
24
|
+
"queueMicrotask",
|
|
25
|
+
# ECMAScript constructors and namespaces
|
|
26
|
+
"Array",
|
|
27
|
+
"ArrayBuffer",
|
|
28
|
+
"Atomics",
|
|
29
|
+
"BigInt",
|
|
30
|
+
"Boolean",
|
|
31
|
+
"DataView",
|
|
32
|
+
"Date",
|
|
33
|
+
"Error",
|
|
34
|
+
"EvalError",
|
|
35
|
+
"Float32Array",
|
|
36
|
+
"Float64Array",
|
|
37
|
+
"Function",
|
|
38
|
+
"Int8Array",
|
|
39
|
+
"Int16Array",
|
|
40
|
+
"Int32Array",
|
|
41
|
+
"Intl",
|
|
42
|
+
"JSON",
|
|
43
|
+
"Map",
|
|
44
|
+
"Math",
|
|
45
|
+
"Number",
|
|
46
|
+
"Object",
|
|
47
|
+
"Promise",
|
|
48
|
+
"Proxy",
|
|
49
|
+
"RangeError",
|
|
50
|
+
"ReferenceError",
|
|
51
|
+
"Reflect",
|
|
52
|
+
"RegExp",
|
|
53
|
+
"Set",
|
|
54
|
+
"String",
|
|
55
|
+
"Symbol",
|
|
56
|
+
"SyntaxError",
|
|
57
|
+
"TypeError",
|
|
58
|
+
"Uint8Array",
|
|
59
|
+
"Uint8ClampedArray",
|
|
60
|
+
"Uint16Array",
|
|
61
|
+
"Uint32Array",
|
|
62
|
+
"URIError",
|
|
63
|
+
"WeakMap",
|
|
64
|
+
"WeakRef",
|
|
65
|
+
"WeakSet",
|
|
66
|
+
# Host globals shared by browsers and Node
|
|
67
|
+
"console",
|
|
68
|
+
"setTimeout",
|
|
69
|
+
"clearTimeout",
|
|
70
|
+
"setInterval",
|
|
71
|
+
"clearInterval",
|
|
72
|
+
"fetch",
|
|
73
|
+
"URL",
|
|
74
|
+
"URLSearchParams",
|
|
75
|
+
"AbortController",
|
|
76
|
+
"TextEncoder",
|
|
77
|
+
"TextDecoder",
|
|
78
|
+
"Blob",
|
|
79
|
+
"FormData",
|
|
80
|
+
"Headers",
|
|
81
|
+
"Request",
|
|
82
|
+
"Response",
|
|
83
|
+
"crypto",
|
|
84
|
+
"performance",
|
|
85
|
+
# Browser globals
|
|
86
|
+
"window",
|
|
87
|
+
"document",
|
|
88
|
+
"navigator",
|
|
89
|
+
"location",
|
|
90
|
+
"history",
|
|
91
|
+
"localStorage",
|
|
92
|
+
"sessionStorage",
|
|
93
|
+
"requestAnimationFrame",
|
|
94
|
+
"cancelAnimationFrame",
|
|
95
|
+
"getComputedStyle",
|
|
96
|
+
"matchMedia",
|
|
97
|
+
"alert",
|
|
98
|
+
"confirm",
|
|
99
|
+
"prompt",
|
|
100
|
+
"ResizeObserver",
|
|
101
|
+
"IntersectionObserver",
|
|
102
|
+
"MutationObserver",
|
|
103
|
+
"CustomEvent",
|
|
104
|
+
"Event",
|
|
105
|
+
"WebSocket",
|
|
106
|
+
"Worker",
|
|
107
|
+
"Image",
|
|
108
|
+
# Node globals
|
|
109
|
+
"global",
|
|
110
|
+
"process",
|
|
111
|
+
"Buffer",
|
|
112
|
+
"require",
|
|
113
|
+
"setImmediate",
|
|
114
|
+
"clearImmediate",
|
|
115
|
+
}
|
|
116
|
+
)
|