better-code-review-graph 3.25.2__tar.gz → 3.25.4__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.
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.claude-plugin/plugin.json +1 -1
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/workflows/cd.yml +2 -3
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.jules/bolt.md +8 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/CHANGELOG.md +30 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/PKG-INFO +5 -5
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/pyproject.toml +5 -5
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/server.json +2 -2
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/exporter.py +31 -6
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_oci_publication_sunset.py +4 -4
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/uv.lock +23 -22
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.agents/skills/build-graph/SKILL.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.agents/skills/review-delta/SKILL.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.agents/skills/review-pr/SKILL.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.coderabbit.yaml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.dockerignore +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/CODEOWNERS +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/review-learnings.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/rulesets/main.json +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/workflows/bot-governance.yml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/workflows/ci.yml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/workflows/opencode.yml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.gitignore +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.infisical.json +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.jules/sentinel.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.pre-commit-config.yaml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/AGENTS.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/BREAKING_CHANGES.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/CLAUDE.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/CODE_OF_CONDUCT.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/CONTRIBUTING.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/Dockerfile +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/LICENSE +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/LICENSE-MIT +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/NOTICE +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/README.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/SECURITY.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/alembic.ini +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/docs/HANDOVER.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/hooks/_graph_state.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/hooks/branch-sync-check.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/hooks/hooks.json +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/hooks/stale-graph-check.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/migrations/README +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/migrations/env.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/migrations/script.py.mako +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/migrations/versions/001_baseline.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/migrations/versions/002_summary_columns.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/migrations/versions/003_federation.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/migrations/versions/004_security_tags.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/migrations/versions/005_temporal_columns.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/migrations/versions/006_commits_table.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/renovate.json +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/rules/heuristic/cwe-22-path-traversal.yaml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/rules/heuristic/cwe-78-shell-command-sink.yaml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/rules/heuristic/cwe-89-sql-string-format.yaml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/rules/heuristic/cwe-95-eval-on-input.yaml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/rules/heuristic/hardcoded-secret.yaml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/rules/semgrep/curated.yaml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/scripts/benchmark_row_deserialization.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/scripts/enforce-commit.sh +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/scripts/preserve-diacritics.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/scripts/test_preserve_diacritics.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/semantic-release.toml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/impact-audit/SKILL.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/onboard-repo/SKILL.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/refactor-check/SKILL.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/review-delta/SKILL.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/review-pr/SKILL.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/security-sweep/SKILL.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/smithery.yaml +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/__init__.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/__main__.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/cli.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/config.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/credential_state.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/docs/__init__.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/docs/config.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/docs/graph.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/docs/query.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/docs/recipes.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/docs/review.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/docs/security.md +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/embeddings.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/federation.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/graph.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/importer.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/incremental.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/parser.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/py.typed +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/relay_schema.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/relay_setup.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/reranker.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/resolver/__init__.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/resolver/_types.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/resolver/fallback.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/resolver/go.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/resolver/java.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/resolver/python.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/resolver/rust.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/resolver/typescript.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/security/__init__.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/security/heuristic.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/security/semgrep_engine.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/server.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/summarizer.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/temporal.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/tools.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/src/better_code_review_graph/xpia.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/__init__.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/conftest.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/conftest_e2e.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/e2e_mcp_protocol_test.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/Sample.cs +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/SampleJava.java +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/callback_refs.js +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/caller_example.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/multi_call_example.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample.c +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample.cpp +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample.kt +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample.php +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample.rb +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample.sol +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample.swift +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample_go.go +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample_python.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample_rust.rs +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/sample_typescript.ts +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/fixtures/test_sample.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/integration/__init__.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/integration/test_multi_user_remote.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_alembic_baseline.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_as_of_diff.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_auto_resolve_ambiguity.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_bare_suffix_correctness.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_callers_not_found_reason.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_callers_of_coverage.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_cli.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_cli_contracts.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_cohere_dimensions.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_commits_migration.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_config_open_relay_registered.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_coverage_gaps.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_credential_state.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_credential_state_stdio_no_fallback.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_credential_state_store_errors.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_crg_protocol_harness.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_custom_local_model.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_dynamic_dispatch_hints.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_e2e.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_embedder_retry_classification.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_embedding_migration.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_embeddings.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_embeddings_extra.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_export_graph_dispatch.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_export_graph_dispatch_path_traversal.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_exporter.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_federation.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_federation_migration.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_federation_smoke.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_full_live.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_g6_ux_status_accuracy.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_get_docs_section_error_path.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_get_review_context_no_diff.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_graph.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_graph_batch_fetch.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_graph_extra.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_graph_get_edges_by_targets_coverage.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_graph_stats_error_coverage.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_handle_not_found_coverage.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_help_recipes.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_heuristic.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_home_isolation.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_impact_payload_truncation.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_implements_edges.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_import_graph_dispatch.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_importer.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_incremental.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_incremental_extra.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_kind_filter_optimization.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_kinds_error_path.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_list_graph_stats_coverage.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_list_kinds_coverage.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_live_mcp.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_local_reranker.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_lookup_node_directly.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_multi_user.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_multi_user_dispatch.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_multilang.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_no_stale_package_name.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_oserror_coverage.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_parser.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_parser_extra.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_parser_grammar_failure.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_parser_source_text.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_path_resolution_fallback.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_payload_estimation.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_per_plugin_storage_migration.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_per_sub_graph_db.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_performance_n1.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_performance_n1_embeddings.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_phase_3_smoke.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_plugin_assets.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_pre_2_0_backup.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_relay_schema.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_relay_setup.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_renamed_in_diff.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_renamed_in_diff_exception.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_repo_filter.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_repo_filter_batching.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_repo_id_persistence.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_resolve_search_candidates.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_resolver_dispatcher.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_resolver_fallback.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_resolver_go.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_resolver_java.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_resolver_python.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_resolver_rust.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_resolver_typescript.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_response_header.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_response_payload_honesty.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_review_delta_line_shifts.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_review_languages_filter.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_reviewer_summary.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_search_edges_by_target_names.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_search_keyword_warning.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_security_injection.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_security_path_traversal.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_security_scan_batching.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_security_tags_migration.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_security_tool.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_semgrep_engine.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_server.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_server_help_coverage.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_serverinfo_version.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_setup_tool.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_shares_state_edges.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_spot_check.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_sql_security.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_stdio_direct.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_summarize_graph_dispatch.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_summarizer.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_summary_schema.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_temporal.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_temporal_migration.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_tested_by_edges.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_tools.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_tools_build_error_coverage.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_tools_full.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_tools_get_docs_section_coverage.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_typescript_coverage_gaps.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_v17_coverage_gaps.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_xpia.py +0 -0
- {better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/tests/test_xpia_adversarial.py +0 -0
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.claude-plugin/plugin.json
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "better-code-review-graph",
|
|
3
3
|
"description": "Knowledge graph for token-efficient code reviews -- semantic search and call-graph resolution across your codebase.",
|
|
4
|
-
"version": "3.25.
|
|
4
|
+
"version": "3.25.4",
|
|
5
5
|
"userConfig": {
|
|
6
6
|
"EMBEDDING_MODELS": {
|
|
7
7
|
"type": "string",
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/workflows/cd.yml
RENAMED
|
@@ -3,7 +3,6 @@ name: CD
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
branches:
|
|
6
|
-
- staging
|
|
7
6
|
- main
|
|
8
7
|
workflow_dispatch:
|
|
9
8
|
inputs:
|
|
@@ -16,9 +15,9 @@ on:
|
|
|
16
15
|
- stable
|
|
17
16
|
|
|
18
17
|
env:
|
|
19
|
-
|
|
18
|
+
# Release lane: merge to main auto-publishes stable; beta only via manual dispatch (release_type=beta).
|
|
20
19
|
# workflow_dispatch keeps release_type as an explicit override.
|
|
21
|
-
RELEASE_TYPE: ${{ github.event_name == 'push' &&
|
|
20
|
+
RELEASE_TYPE: ${{ github.event_name == 'push' && 'stable' || inputs.release_type }}
|
|
22
21
|
|
|
23
22
|
permissions:
|
|
24
23
|
contents: write
|
|
@@ -105,3 +105,11 @@ Subquery 2 is not correlated, so SQLite already hoists it behind an `OP_Once` gu
|
|
|
105
105
|
## 2026-09-05 - Optimize peak memory overhead during full graph exports
|
|
106
106
|
**Learning:** Full graph serializations (e.g., `export_graphml`, `export_jsonld` in `src/better_code_review_graph/exporter.py`) iterated over python `GraphNode` and `GraphEdge` objects via `store.get_all_nodes()` / `store.get_all_edges()`. This led to significant unnecessary memory consumption due to the construction and destruction of tens of thousands of dataclass instances for operations that only required scalar row values.
|
|
107
107
|
**Action:** Replace `for node in store.get_all_nodes():` with a direct iterator over `sqlite3.Cursor` (e.g., `for row in store._conn.execute("SELECT * FROM nodes")`), accessing data via dictionary-style keys (`row["qualified_name"]`), eliminating object materialization on hot loops that touch the whole graph.
|
|
108
|
+
|
|
109
|
+
### 2026-09-11 - Stream large JSON graph exports via generator
|
|
110
|
+
|
|
111
|
+
**Anchor:** `N/A` (to be committed)
|
|
112
|
+
|
|
113
|
+
**Learning:** When exporting the full code review graph via `export_crg`, materializing the entire graph's nodes and edges into lists of Python dictionaries before passing them to `json.dumps()` causes massive peak memory overhead, especially for large repositories.
|
|
114
|
+
|
|
115
|
+
**Action:** Replace full list materialization (`[dict(row) for row in cursor]`) with a generator that iterates over the `sqlite3.Cursor` directly. Yield incrementally-dumped JSON string chunks (`json.dumps(dict(row), indent=2).replace("\\n", "\\n ")`) to construct the final payload efficiently on-the-fly.
|
|
@@ -2,6 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v3.25.4 (2026-09-12)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- Bolt optimize memory overhead in crg export
|
|
10
|
+
([#1029](https://github.com/n24q02m/better-code-review-graph/pull/1029),
|
|
11
|
+
[`3e4d438`](https://github.com/n24q02m/better-code-review-graph/commit/3e4d438304ccd0e7c1b25050706fa8b1a7236650))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## v3.25.3 (2026-09-12)
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
- Update fastretrieval stable pin expectation
|
|
19
|
+
([#1027](https://github.com/n24q02m/better-code-review-graph/pull/1027),
|
|
20
|
+
[`79bb07a`](https://github.com/n24q02m/better-code-review-graph/commit/79bb07a2c0224754e36a57f712c5465fbc0a9aeb))
|
|
21
|
+
|
|
22
|
+
- **deps**: Update minor dependencies
|
|
23
|
+
([#1027](https://github.com/n24q02m/better-code-review-graph/pull/1027),
|
|
24
|
+
[`79bb07a`](https://github.com/n24q02m/better-code-review-graph/commit/79bb07a2c0224754e36a57f712c5465fbc0a9aeb))
|
|
25
|
+
|
|
26
|
+
### Chores
|
|
27
|
+
|
|
28
|
+
- **release**: Fix stale two-branch comment (single-main lane)
|
|
29
|
+
([`ab7b641`](https://github.com/n24q02m/better-code-review-graph/commit/ab7b641ab9f99825ffd633ffa0a98eae8e08d858))
|
|
30
|
+
|
|
31
|
+
- **release**: Single-main release lane (staging branch retired)
|
|
32
|
+
([`06b4d8e`](https://github.com/n24q02m/better-code-review-graph/commit/06b4d8e60b529df8bcd908fa4e56a639524d2ac2))
|
|
33
|
+
|
|
34
|
+
|
|
5
35
|
## v3.25.2 (2026-09-12)
|
|
6
36
|
|
|
7
37
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: better-code-review-graph
|
|
3
|
-
Version: 3.25.
|
|
3
|
+
Version: 3.25.4
|
|
4
4
|
Summary: Token-efficient code review knowledge graph: semantic search and call-graph resolution.
|
|
5
5
|
Author: n24q02m
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -13,18 +13,18 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Classifier: Topic :: Software Development :: Quality Assurance
|
|
15
15
|
Requires-Python: ==3.13.*
|
|
16
|
-
Requires-Dist: alembic<2,>=1.
|
|
16
|
+
Requires-Dist: alembic<2,>=1.20.0
|
|
17
17
|
Requires-Dist: defusedxml>=0.7.1
|
|
18
18
|
Requires-Dist: fastmcp<4,>=3.4.7
|
|
19
|
-
Requires-Dist: fastretrieval<2,>=1.2
|
|
19
|
+
Requires-Dist: fastretrieval<2,>=1.3.2
|
|
20
20
|
Requires-Dist: httpx
|
|
21
21
|
Requires-Dist: litellm>=1.100.0
|
|
22
22
|
Requires-Dist: mcp<2,>=1.30.0
|
|
23
|
-
Requires-Dist: n24q02m-mcp-core[llm]==1.
|
|
23
|
+
Requires-Dist: n24q02m-mcp-core[llm]==1.24.0
|
|
24
24
|
Requires-Dist: networkx<4,>=3.6.1
|
|
25
25
|
Requires-Dist: pydantic-settings
|
|
26
26
|
Requires-Dist: pygments>=2.21.0
|
|
27
|
-
Requires-Dist: tree-sitter-language-pack<2,>=1.
|
|
27
|
+
Requires-Dist: tree-sitter-language-pack<2,>=1.18.0
|
|
28
28
|
Requires-Dist: tree-sitter<1,>=0.26.0
|
|
29
29
|
Requires-Dist: watchdog<7,>=6.0.0
|
|
30
30
|
Provides-Extra: security
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "better-code-review-graph"
|
|
7
|
-
version = "3.25.
|
|
7
|
+
version = "3.25.4"
|
|
8
8
|
description = "Token-efficient code review knowledge graph: semantic search and call-graph resolution."
|
|
9
9
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -21,10 +21,10 @@ dependencies = [
|
|
|
21
21
|
"mcp>=1.30.0,<2",
|
|
22
22
|
"fastmcp>=3.4.7,<4",
|
|
23
23
|
"tree-sitter>=0.26.0,<1",
|
|
24
|
-
"tree-sitter-language-pack>=1.
|
|
24
|
+
"tree-sitter-language-pack>=1.18.0,<2",
|
|
25
25
|
"networkx>=3.6.1,<4",
|
|
26
26
|
"watchdog>=6.0.0,<7",
|
|
27
|
-
"fastretrieval>=1.2
|
|
27
|
+
"fastretrieval>=1.3.2,<2",
|
|
28
28
|
"httpx",
|
|
29
29
|
"pydantic-settings",
|
|
30
30
|
# Floor tracks the current mcp-core stable for cascade parity with
|
|
@@ -33,7 +33,7 @@ dependencies = [
|
|
|
33
33
|
# (this repo's slug == server_name already, so no CLI regression here).
|
|
34
34
|
# Keep this on a stable release -- a prerelease floor such as 1.20.0b2
|
|
35
35
|
# sorts below its own stable under PEP 440 and does not require it.
|
|
36
|
-
"n24q02m-mcp-core[llm]==1.
|
|
36
|
+
"n24q02m-mcp-core[llm]==1.24.0",
|
|
37
37
|
# litellm security floor (transitive via mcp-core[llm]). 1.83.x-1.87.x carry 4
|
|
38
38
|
# advisories in litellm's PROXY server: GHSA-r75f-5x8p-qvmc (SQLi in proxy key
|
|
39
39
|
# verify), GHSA-xqmj-j6mv-4862 (SSTI /prompts/test), GHSA-v4p8-mg3p-g94g (cmd-exec
|
|
@@ -44,7 +44,7 @@ dependencies = [
|
|
|
44
44
|
# floor lifts it (semgrep resolves to 1.79.x, fine for a dev-only SAST tool).
|
|
45
45
|
"litellm>=1.100.0",
|
|
46
46
|
"Pygments>=2.21.0",
|
|
47
|
-
"alembic>=1.
|
|
47
|
+
"alembic>=1.20.0,<2",
|
|
48
48
|
"defusedxml>=0.7.1",
|
|
49
49
|
]
|
|
50
50
|
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"url": "https://github.com/n24q02m/better-code-review-graph.git",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "3.25.
|
|
9
|
+
"version": "3.25.4",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "pypi",
|
|
13
13
|
"identifier": "better-code-review-graph",
|
|
14
|
-
"version": "3.25.
|
|
14
|
+
"version": "3.25.4",
|
|
15
15
|
"runtimeHint": "uvx",
|
|
16
16
|
"runtimeArgs": [
|
|
17
17
|
"--python",
|
|
@@ -269,12 +269,37 @@ def export_crg(store: GraphStore, root: Path | None = None) -> str:
|
|
|
269
269
|
from .federation import derive_repo_id
|
|
270
270
|
|
|
271
271
|
repo_id = derive_repo_id(root if root is not None else store.db_path.parent)
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
272
|
+
|
|
273
|
+
# To prevent massive memory overhead when exporting large JSON structures,
|
|
274
|
+
# stream the output by iterating over the database cursor in a Python generator
|
|
275
|
+
# and yielding incrementally-dumped string pieces instead of materializing full lists.
|
|
276
|
+
def _generate():
|
|
277
|
+
yield "{\n"
|
|
278
|
+
yield ' "schema_version": 1,\n'
|
|
279
|
+
yield f' "repo_id": {json.dumps(repo_id)},\n'
|
|
280
|
+
yield ' "nodes": [\n'
|
|
281
|
+
|
|
282
|
+
first = True
|
|
283
|
+
for row in store.iter_raw_nodes():
|
|
284
|
+
if not first:
|
|
285
|
+
yield ",\n"
|
|
286
|
+
first = False
|
|
287
|
+
yield " " + json.dumps(dict(row), indent=2).replace("\n", "\n ")
|
|
288
|
+
|
|
289
|
+
yield "\n ],\n"
|
|
290
|
+
yield ' "edges": [\n'
|
|
291
|
+
|
|
292
|
+
first = True
|
|
293
|
+
for row in store.iter_raw_edges():
|
|
294
|
+
if not first:
|
|
295
|
+
yield ",\n"
|
|
296
|
+
first = False
|
|
297
|
+
yield " " + json.dumps(dict(row), indent=2).replace("\n", "\n ")
|
|
298
|
+
|
|
299
|
+
yield "\n ]\n"
|
|
300
|
+
yield "}"
|
|
301
|
+
|
|
302
|
+
return "".join(_generate())
|
|
278
303
|
|
|
279
304
|
|
|
280
305
|
_FORMATTERS = {
|
|
@@ -88,14 +88,14 @@ def test_embedding_dependencies_and_lock_use_stable_releases():
|
|
|
88
88
|
packages = {package["name"]: package for package in lock["package"]}
|
|
89
89
|
|
|
90
90
|
requirements = project["dependencies"]
|
|
91
|
-
assert "fastretrieval>=1.2
|
|
92
|
-
assert "n24q02m-mcp-core[llm]==1.
|
|
91
|
+
assert "fastretrieval>=1.3.2,<2" in requirements
|
|
92
|
+
assert "n24q02m-mcp-core[llm]==1.24.0" in requirements
|
|
93
93
|
legacy_distribution = "qwen" + "3-embed"
|
|
94
94
|
assert not any(
|
|
95
95
|
legacy_distribution in requirement.casefold() for requirement in requirements
|
|
96
96
|
)
|
|
97
|
-
assert packages["fastretrieval"]["version"] == "1.2
|
|
98
|
-
assert packages["n24q02m-mcp-core"]["version"] == "1.
|
|
97
|
+
assert packages["fastretrieval"]["version"] == "1.3.2"
|
|
98
|
+
assert packages["n24q02m-mcp-core"]["version"] == "1.24.0"
|
|
99
99
|
assert legacy_distribution not in packages
|
|
100
100
|
|
|
101
101
|
|
|
@@ -77,16 +77,16 @@ wheels = [
|
|
|
77
77
|
|
|
78
78
|
[[package]]
|
|
79
79
|
name = "alembic"
|
|
80
|
-
version = "1.
|
|
80
|
+
version = "1.20.0"
|
|
81
81
|
source = { registry = "https://pypi.org/simple" }
|
|
82
82
|
dependencies = [
|
|
83
83
|
{ name = "mako" },
|
|
84
84
|
{ name = "sqlalchemy" },
|
|
85
85
|
{ name = "typing-extensions" },
|
|
86
86
|
]
|
|
87
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
87
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ed/aa/02910bdb8e2f1444f6654d5b296cd827d126f82209050ee7b1000f92ac4b/alembic-1.20.0.tar.gz", hash = "sha256:db505480647bc60386c5369402f4a57a506b7539c9e9ef5e270d45cbbe4939bf", size = 2093272, upload-time = "2026-09-11T19:09:11.126Z" }
|
|
88
88
|
wheels = [
|
|
89
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
89
|
+
{ url = "https://files.pythonhosted.org/packages/3f/27/78a89b55b0904d222183164e079b4ca56208e94eff1d35ad1f1ad5be9b06/alembic-1.20.0-py3-none-any.whl", hash = "sha256:77eb101048d95f982c0353e9233404889dcd7a6fc244c107836c0e2fc9cf7d9d", size = 268719, upload-time = "2026-09-11T19:09:12.88Z" },
|
|
90
90
|
]
|
|
91
91
|
|
|
92
92
|
[[package]]
|
|
@@ -159,7 +159,7 @@ wheels = [
|
|
|
159
159
|
|
|
160
160
|
[[package]]
|
|
161
161
|
name = "better-code-review-graph"
|
|
162
|
-
version = "3.25.
|
|
162
|
+
version = "3.25.2"
|
|
163
163
|
source = { editable = "." }
|
|
164
164
|
dependencies = [
|
|
165
165
|
{ name = "alembic" },
|
|
@@ -197,20 +197,20 @@ dev = [
|
|
|
197
197
|
|
|
198
198
|
[package.metadata]
|
|
199
199
|
requires-dist = [
|
|
200
|
-
{ name = "alembic", specifier = ">=1.
|
|
200
|
+
{ name = "alembic", specifier = ">=1.20.0,<2" },
|
|
201
201
|
{ name = "defusedxml", specifier = ">=0.7.1" },
|
|
202
202
|
{ name = "fastmcp", specifier = ">=3.4.7,<4" },
|
|
203
|
-
{ name = "fastretrieval", specifier = ">=1.2
|
|
203
|
+
{ name = "fastretrieval", specifier = ">=1.3.2,<2" },
|
|
204
204
|
{ name = "httpx" },
|
|
205
205
|
{ name = "litellm", specifier = ">=1.100.0" },
|
|
206
206
|
{ name = "mcp", specifier = ">=1.30.0,<2" },
|
|
207
|
-
{ name = "n24q02m-mcp-core", extras = ["llm"], specifier = "==1.
|
|
207
|
+
{ name = "n24q02m-mcp-core", extras = ["llm"], specifier = "==1.24.0" },
|
|
208
208
|
{ name = "networkx", specifier = ">=3.6.1,<4" },
|
|
209
209
|
{ name = "pydantic-settings" },
|
|
210
210
|
{ name = "pygments", specifier = ">=2.21.0" },
|
|
211
211
|
{ name = "semgrep", marker = "extra == 'security'", specifier = ">=1.0,<1.162" },
|
|
212
212
|
{ name = "tree-sitter", specifier = ">=0.26.0,<1" },
|
|
213
|
-
{ name = "tree-sitter-language-pack", specifier = ">=1.
|
|
213
|
+
{ name = "tree-sitter-language-pack", specifier = ">=1.18.0,<2" },
|
|
214
214
|
{ name = "watchdog", specifier = ">=6.0.0,<7" },
|
|
215
215
|
]
|
|
216
216
|
provides-extras = ["security"]
|
|
@@ -618,7 +618,7 @@ server = [
|
|
|
618
618
|
|
|
619
619
|
[[package]]
|
|
620
620
|
name = "fastretrieval"
|
|
621
|
-
version = "1.2
|
|
621
|
+
version = "1.3.2"
|
|
622
622
|
source = { registry = "https://pypi.org/simple" }
|
|
623
623
|
dependencies = [
|
|
624
624
|
{ name = "huggingface-hub" },
|
|
@@ -629,9 +629,9 @@ dependencies = [
|
|
|
629
629
|
{ name = "tokenizers" },
|
|
630
630
|
{ name = "tqdm" },
|
|
631
631
|
]
|
|
632
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
632
|
+
sdist = { url = "https://files.pythonhosted.org/packages/05/a0/54566f5a09cd54709c9f33b500a02566733ef324e10abbc3376f1624f8fb/fastretrieval-1.3.2.tar.gz", hash = "sha256:d9d68b494d79283f21570b45cd6141e7b506c822c943b3a5067056d43d834ca3", size = 327923, upload-time = "2026-09-12T04:48:23.251Z" }
|
|
633
633
|
wheels = [
|
|
634
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
634
|
+
{ url = "https://files.pythonhosted.org/packages/0b/a8/db251b86f12bf601e0ae3756c534f27d345bbb2516e91b4d5b8d09496c2a/fastretrieval-1.3.2-py3-none-any.whl", hash = "sha256:28ba8f843d346ac8bc75716d3006c61c1fb351a1aea78d5e318daebff967169e", size = 145556, upload-time = "2026-09-12T04:48:21.608Z" },
|
|
635
635
|
]
|
|
636
636
|
|
|
637
637
|
[[package]]
|
|
@@ -1211,7 +1211,7 @@ wheels = [
|
|
|
1211
1211
|
|
|
1212
1212
|
[[package]]
|
|
1213
1213
|
name = "n24q02m-mcp-core"
|
|
1214
|
-
version = "1.
|
|
1214
|
+
version = "1.24.0"
|
|
1215
1215
|
source = { registry = "https://pypi.org/simple" }
|
|
1216
1216
|
dependencies = [
|
|
1217
1217
|
{ name = "authlib" },
|
|
@@ -1221,15 +1221,16 @@ dependencies = [
|
|
|
1221
1221
|
{ name = "httpcore" },
|
|
1222
1222
|
{ name = "httpx" },
|
|
1223
1223
|
{ name = "loguru" },
|
|
1224
|
+
{ name = "mcp" },
|
|
1224
1225
|
{ name = "platformdirs" },
|
|
1225
1226
|
{ name = "pydantic" },
|
|
1226
1227
|
{ name = "pydantic-settings" },
|
|
1227
1228
|
{ name = "starlette" },
|
|
1228
1229
|
{ name = "tomli-w" },
|
|
1229
1230
|
]
|
|
1230
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1231
|
+
sdist = { url = "https://files.pythonhosted.org/packages/bf/b9/587e76ab01578ff8b4df48624a0b634c5e4236702232cfebaf17d68c1920/n24q02m_mcp_core-1.24.0.tar.gz", hash = "sha256:fd863cefb8b33aca716f871177312d60fd9919c6c2e0f84c5ce20da0079b6751", size = 366191, upload-time = "2026-09-11T16:33:16.434Z" }
|
|
1231
1232
|
wheels = [
|
|
1232
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1233
|
+
{ url = "https://files.pythonhosted.org/packages/56/95/fb190ebaefdda15f1800ffa71a72d046eb72f5fdba802fdfc6b35a72e674/n24q02m_mcp_core-1.24.0-py3-none-any.whl", hash = "sha256:7a90e6ad29a4ce477aaabfb71bb117f906fdda26b2038fb5b9c7e735869e507d", size = 198405, upload-time = "2026-09-11T16:33:15.016Z" },
|
|
1233
1234
|
]
|
|
1234
1235
|
|
|
1235
1236
|
[package.optional-dependencies]
|
|
@@ -2058,19 +2059,19 @@ wheels = [
|
|
|
2058
2059
|
|
|
2059
2060
|
[[package]]
|
|
2060
2061
|
name = "tree-sitter-language-pack"
|
|
2061
|
-
version = "1.
|
|
2062
|
+
version = "1.18.0"
|
|
2062
2063
|
source = { registry = "https://pypi.org/simple" }
|
|
2063
2064
|
dependencies = [
|
|
2064
2065
|
{ name = "tree-sitter" },
|
|
2065
2066
|
]
|
|
2066
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
2067
|
+
sdist = { url = "https://files.pythonhosted.org/packages/5c/8e/d2a612d42a453b1c07f526ebd809174d3cd3ae21940abfb5721b8e88a724/tree_sitter_language_pack-1.18.0.tar.gz", hash = "sha256:24f234099f8cf67c6e5fe5adec73d95efb1505e5409a17e65de0790b3480336b", size = 88630, upload-time = "2026-09-11T17:09:16.578Z" }
|
|
2067
2068
|
wheels = [
|
|
2068
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2069
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2070
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2071
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2072
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2073
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2069
|
+
{ url = "https://files.pythonhosted.org/packages/b6/8e/8f85fe93fa2e9311068b32e1db87f2001a14574d73efe1a37de1c4ec74b8/tree_sitter_language_pack-1.18.0-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:7a6842e31fe30ae30a7ca743ed535c8b28db1f5c9ca814c5f21e8206dab22017", size = 2291509, upload-time = "2026-09-11T17:09:08.522Z" },
|
|
2070
|
+
{ url = "https://files.pythonhosted.org/packages/81/7f/cef50511eddab28f5774ff3ef4db5ebbf511e357939cff8159c0c980b127/tree_sitter_language_pack-1.18.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:92021a92ad6ec65b7375a6fd5fe10c1b88462a7641484c32aee946796ee23086", size = 2180915, upload-time = "2026-09-11T17:09:10.012Z" },
|
|
2071
|
+
{ url = "https://files.pythonhosted.org/packages/69/7e/0bd772190c9e2fbb34332b3851bcf7110eb4a2baa57eb077b668013ee1df/tree_sitter_language_pack-1.18.0-cp310-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:da137e0fe277d08520b5387c56d01085882d4d1cf153e7f563323b24e1197f1c", size = 2345686, upload-time = "2026-09-11T17:09:11.275Z" },
|
|
2072
|
+
{ url = "https://files.pythonhosted.org/packages/da/d5/9ca08e61b88339aa2e06c9046131f2a846c6e9c0865cf06b120776387062/tree_sitter_language_pack-1.18.0-cp310-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9eab31adf7500ea16a4006cad44f0b71d48ad3d6c884aafbcbf56a3c6147cc39", size = 2456221, upload-time = "2026-09-11T17:09:12.625Z" },
|
|
2073
|
+
{ url = "https://files.pythonhosted.org/packages/9a/fb/fa32a8c273c5e54067b329121a838af880e41852e51c0034e9fa477c92c0/tree_sitter_language_pack-1.18.0-cp310-abi3-win_amd64.whl", hash = "sha256:905b4b56a02abdab9699ddd7c7c97adf39592ad206f3d837ea67c24150fad19b", size = 2236084, upload-time = "2026-09-11T17:09:14.08Z" },
|
|
2074
|
+
{ url = "https://files.pythonhosted.org/packages/ef/0c/01b59617a24e8fde08924a4c269158cf90c1608d8ce91114e264708f5981/tree_sitter_language_pack-1.18.0-cp310-abi3-win_arm64.whl", hash = "sha256:074ce091f4b6d54f798a350c2cca8b7c1a16d3d3504ddf3404cce180a438dcaf", size = 2138127, upload-time = "2026-09-11T17:09:15.462Z" },
|
|
2074
2075
|
]
|
|
2075
2076
|
|
|
2076
2077
|
[[package]]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/PULL_REQUEST_TEMPLATE.md
RENAMED
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/review-learnings.md
RENAMED
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/rulesets/main.json
RENAMED
|
File without changes
|
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/workflows/ci.yml
RENAMED
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/.github/workflows/opencode.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/hooks/branch-sync-check.py
RENAMED
|
File without changes
|
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/hooks/stale-graph-check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/migrations/script.py.mako
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/rules/semgrep/curated.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/scripts/enforce-commit.sh
RENAMED
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/scripts/preserve-diacritics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/impact-audit/SKILL.md
RENAMED
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/onboard-repo/SKILL.md
RENAMED
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/refactor-check/SKILL.md
RENAMED
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/review-delta/SKILL.md
RENAMED
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/review-pr/SKILL.md
RENAMED
|
File without changes
|
{better_code_review_graph-3.25.2 → better_code_review_graph-3.25.4}/skills/security-sweep/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|