attocode-code-intel 0.1.19__tar.gz → 0.1.21__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.
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/PKG-INFO +10 -1
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/README.md +9 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/pyproject.toml +1 -1
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/__init__.py +1 -1
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/ast_service.py +19 -1
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/codebase_ast.py +118 -69
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/codebase_context.py +51 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/cross_references.py +2 -2
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/semantic_search.py +49 -12
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/syntax_evidence.py +5 -3
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/ts_parser.py +33 -13
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/service.py +4 -0
- attocode_code_intel-0.1.21/tests/test_capacity_experiment.py +43 -0
- attocode_code_intel-0.1.21/tests/test_experiment_dispatch.py +176 -0
- attocode_code_intel-0.1.21/tests/test_fallback_lexical.py +117 -0
- attocode_code_intel-0.1.21/tests/test_native_capture.py +458 -0
- attocode_code_intel-0.1.21/tests/test_ocaml_parser_routing.py +88 -0
- attocode_code_intel-0.1.21/tests/test_optional_grammar_admission.py +47 -0
- attocode_code_intel-0.1.21/tests/test_optional_language_depth.py +249 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_quality_evidence.py +1 -1
- attocode_code_intel-0.1.21/tests/test_search_coverage.py +237 -0
- attocode_code_intel-0.1.21/tests/test_search_coverage_scale.py +92 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_source_exclusions.py +30 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/.gitignore +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/LICENSE +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/README.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/ast_restart_probe.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/body_cost_probe.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/broad_candidate_audit.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/broad_query_cases.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/broad_query_external_cases.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/broad_query_final_holdout.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/client_comparison.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/client_responses.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/codex_repair_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/daily.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-13-codex-repair-diagnostic.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-13-r7-task-completion-pilot.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-14-workflow-pilot.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-body-file-trial.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-body-file-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-expansion-ablation.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-expansion-development.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-expansion-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-fresh-navigation-queries.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-headroom-retrieval-questions.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-headroom-retrieval.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-cross-file-questions.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-deep-page-questions.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-kotlin-test-paths.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-navigation-prefix-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-navigation-prefix.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-negation-candidate.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-negation-development.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-negation-freeze.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-negation-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/accepted.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/boundaries.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/combined.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/expansion.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/identity.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/manifest.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/negation.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/owner_only.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/owners.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-confirmation-freeze.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-confirmation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-development.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-freeze.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-usefulness-development.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-usefulness-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-usefulness.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-test-intent.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-change-focus-candidate.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-change-workflow-replays.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-change-workflow-replays.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-c2f.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-development.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-freeze.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-t.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-tcf.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-search-batch-candidate.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-search-batch-development.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-search-batch-freeze.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-search-batch-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-candidate.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-development.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-freeze.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-t2.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-t3.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-candidate.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-development.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-freeze.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-p.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-pf.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-candidate.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-development.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-freeze.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-q1.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-q2.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-q3.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-q5.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-s1.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-s2-equivalence.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-s2-freeze.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-s2-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-s2.patch.gz +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-19-cpu-fn-embed-cost.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-20-clause-balance-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-20-search-repair-validation.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-20-test-support-development.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-20-test-support-freeze.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-23-preview-windows.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-23-restart-fingerprints.json +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/discovery_reuse_probe.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/external_benchmarks.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/external_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/graded_blind_pack.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/lexical_sql_probe.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/localize_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/locbench_title_pack.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/onboarding_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/pilot.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/quality_scoring.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/quality_tasks.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/release_gate.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/repair_grading.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/repair_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/repair_worker.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/responses.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/restart_discovery_probe.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/search_evidence_audit.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/source_view_transfer.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/structural_write_probe.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/study_clients.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/study_events.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/study_tasks.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/token_overhead.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/understanding_scoring.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/understanding_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/warm_cache.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/workflows.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/GUIDELINES.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/errors/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/architecture_drift.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/ast_chunker.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/ast_snapshot.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/blob_oid.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/cache_manifest.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/cas.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/code_analyzer.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/cross_mode.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/discovery_snapshot.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/embedding_rotation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/embeddings.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/frecency.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/fuzzy.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/hierarchical_explorer.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/hydration.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/index_probe.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/index_repair.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/index_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/language_registry.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/memory_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/module_resolution.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/parse_diagnostics.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/query_constraints.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/query_history.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/reranker.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/systemone_ranker.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/temporal_coupling.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/trigram_index.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/trigram_regex.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/vector_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/feature_flags/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/lsp/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/lsp/client.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/mcp/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/mcp/client.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/custom_rules.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/dataflow.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/dependency_audit.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/matcher.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/patterns.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/scanner.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/utilities/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/utilities/ignore.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/utilities/token_estimate.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/tricks/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/tricks/recursive_context.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/types/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/types/events.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/types/severity.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_shared.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/analysis_coverage.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/access.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/app.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/api_keys.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/context.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/jwt.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/oauth.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/passwords.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/deps.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/knowledge_bridge.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/mcp_transport.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/middleware.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/models.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/providers/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/providers/db_provider.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/providers/local_provider.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/providers/remote_provider.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/repository_source.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/_pin_helper.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/activity.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/adr.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/analysis.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/api_keys.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/auth.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/branches.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/cross_repo_search.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/embeddings.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/files.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/files_v2.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/gc.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/git_v2.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/graph.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/graph_viz.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/health.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/history.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/jobs.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/learning.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/lsp.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/notify.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/operations.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/orgs.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/preferences.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/presence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/projects.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/repos.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/search.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/snapshots.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/webhooks.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/websocket.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/static/graph.html +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/utils.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/artifacts/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/artifacts/hashing.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/artifacts/provenance.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/artifacts/retrieval_pin.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/audit.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/bug_finder.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/bundle.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/catalog.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/change_evidence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/change_investigation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/change_review.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/cli.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/community.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/confidence/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/confidence/jev.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/confidence/llm.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/confidence/redact.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/confidence/settings.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/config.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/crypto.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/db/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/db/base.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/db/engine.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/db/models.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/entrypoint.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/focused_evidence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/freshness.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/gateway.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/git/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/git/credentials.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/git/manager.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/git/models.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/git/storage.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/graph_query_parser.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/helpers.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/debouncer.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/delta_indexer.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/full_indexer.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/incremental.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/parser.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/summarizer.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/installer.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/investigation_cli.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/knowledge.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/local_knowledge.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/alembic.ini +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/env.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/script.py.mako +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/001_initial_schema.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/002_branch_version_and_embeddings.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/003_embedding_uniqueness_and_cascade.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/004_audit_events.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/005_user_preferences.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/006_google_oauth.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/007_pgvector_embeddings.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/008_symbol_references.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/009_webhook_secret_encryption.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/010_add_commits_table.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/011_commit_changed_files.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/012_branch_merged_at.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/013_revoked_tokens.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/014_blame_hunks.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/015_commit_file_stats.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/016_embedding_provenance_columns.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/017_provenance_table.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/018_repo_snapshots.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/019_symref_caller.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/020_shared_knowledge.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/onboarding.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/output.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/precision.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/presence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/probe.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/project_dir.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/pubsub.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/query_ranking.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/readiness.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/redis.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/reference_pages.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/remote.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/repo_ranker.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/request_context.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/ci.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/combinators.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/enricher.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/evolution.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/executor.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/filters/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/filters/pipeline.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/formatter.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/hygiene.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/importers/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/importers/semgrep.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/loader.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/marketplace.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/metavar.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/model.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/_license_templates/Apache-2.0.txt +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/_license_templates/MIT.txt +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/LICENSE +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/NOTICE +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/PORTING.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B105-hardcoded-password.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B303-weak-md5.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B304-weak-des.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B307-use-of-eval.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B324-weak-sha1.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B501-no-cert-validation.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B602-shell-true.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B608-sqli.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/LICENSE +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/NOTICE +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/PORTING.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/eqeqeq.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-eval.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-implied-eval.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-new-func.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-throw-literal.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-var.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-with.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/LICENSE +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/NOTICE +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/PORTING.md +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G101-hardcoded-credentials.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G102-bind-all-interfaces.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G103-unsafe-block.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G201-sql-format.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G304-file-inclusion.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G401-weak-cipher.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G402-tls-min-version.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G501-md5-import.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/cpp/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/cpp/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/cpp/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/csharp/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/csharp/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/csharp/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/taint/sanitizers.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/taint/sinks.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/taint/sources.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/java/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/java/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/java/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/java/taint/sinks.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/java/taint/sources.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/kotlin/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/kotlin/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/kotlin/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/php/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/php/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/php/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/python/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/python/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/python/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/ruby/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/ruby/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/ruby/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/rust/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/rust/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/rust/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/typescript/manifest.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/typescript/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/typescript/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/pack_loader.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/plugins/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/plugins/plugin_loader.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/profiling.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/registry.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/sarif.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/synthesis.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/testing.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/search_evidence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/server.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/sharing.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/branch_overlay.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/content_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/dependency_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/diff_engine.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/embedding_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/provenance_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/security_scanner_db.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/symbol_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/structural_evidence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/symbol_inspection.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/symbol_links.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/telemetry.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/test_ranking.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/testing/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/testing/fixtures.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/testing/helpers.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/testing/mocks.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/adr_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/analysis_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/composite_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/cross_mode_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/dead_code_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/distill_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/frecency_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/fuzzy_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/history_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/learning_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/lsp_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/maintenance_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/navigation_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/overlay_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/pin_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/pin_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/query_constraints_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/query_history_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/readiness_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/rule_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/search_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/snapshot_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/workers/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/workers/job_utils.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/workers/jobs.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/workers/run.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/workers/settings.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/.attocode/rules/team-preferences.yaml +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/go/bad_patterns.go +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/java/BadPatterns.java +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/python/bad_patterns.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/rust/bad_patterns.rs +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/typescript/bad_patterns.ts +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/conftest.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/test_http_smoke.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/test_mcp_tools_audit.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/test_remote_mcp_http_integration.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/test_service_integration.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/test_rule_bench_floor_e2e.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_ast_snapshot.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_behavioral_negation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_change_focus.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_change_investigation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_chunk_identity.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_codex_repair_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_cold_discovery.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_cold_index_cost.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_compact_inspection.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_corpus_capture.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_daily_workflows.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_db_navigation_http.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_discovery_reuse.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_doctor.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_doctor_runtime.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_edit_restart.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_experiment_evidence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_experiment_readiness.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_external_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_file_symbol_scope.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_fixture_source_alias.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_focused_inspection.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_image_budget.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_importance_publication.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_index_probe.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_index_processes.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_index_reuse.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_index_sequences.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_kotlin_test_paths.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_language_capabilities.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_lean_profile.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_lexical_sql_cost.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_local_reranker.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_local_workflow_evidence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_localize_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_lsp_diagnostics.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_lsp_document_lifecycle.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_lsp_stderr_lifecycle.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_mcp_search_evaluation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_mixed_workspace.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_module_ownership.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_native_experiment.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_navigation_evidence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_navigation_prefix_trial.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_onboarding_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_operation_contracts.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_parse_recovery.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_parser_thread_isolation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_pilot.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_precision_protocol.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_precision_recovery.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_preview_admission.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_preview_experiment.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_preview_sources.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_preview_windows.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_product.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_quality_cloud.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_quality_evaluation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_quality_lifecycle.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_quality_runner.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_query_ranking.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_query_requirements.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_ranking_intent.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_real_language_server.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_recovery_readiness.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_release_verification.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_remote.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_repair_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_restart_experiment.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_retrieval_ablation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_retrieval_audit.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_retrieval_body_trial.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_retrieval_cycle.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_search_budget_repair.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_search_evidence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_search_evidence_audit.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_search_usefulness.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_snippet_budget.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_structural_evidence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_structural_write_cost.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_study.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_symbol_order.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_systemone_ranker.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_test_intent_trial.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_token_overhead.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_trigram_workspace.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_understanding_evaluation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_walk_order.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_warm_cache.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_workflow_sequences.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/conftest.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_advisory_lock.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_api.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_api_phase3a.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_api_v2.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_auth.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_branch_versioning.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_bug_finder.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_call_graph_tool.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_ci_runner.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cli_lifecycle.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cli_maintenance_local.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cli_ops.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cli_query_commands.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cli_remote.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_codex_rereview_polish.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_combinators.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_confidence.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_confidence_adoption.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_config.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_config_remote.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cross_mode.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_db_security_scan.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_deps.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_diff_engine.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_edge_cases.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_frecency.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_fuzzy.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_index_store_migration.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_kw_index_status.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_lsp_call_graph.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_lsp_enrichment.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_lsp_extended_models.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_marketplace.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_metavar.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_middleware.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_notify_enhanced.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_org_isolation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_pack_autoload.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_profiling.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_project_discovery.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_provenance_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_pubsub_streams.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_query_constraints.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_query_history.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_readiness.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_reindex_embeddings.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_remote_local_fallback.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_remote_provider.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_remote_reliability.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_repo_ranker.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rule_evolution.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rule_hygiene.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rule_synthesis.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rule_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rule_violations.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rules_engine.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rules_integration.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_sarif.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_search_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_server_startup.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_service.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_service_mode.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_status_health.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_structural_executor.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_supply_chain_rules.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_testing_framework.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_webhook_encryption.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/conftest.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_adr_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_analysis_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_dead_code_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_distill_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_history_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_learning_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_lsp_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_maintenance_tools_phase2.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_navigation_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_phase2c_anchors_and_overlays.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_readiness_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_search_status_mismatch.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_search_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_server_tools.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_action_hash.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_ast_service_adapter.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_blob_oid.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_cache_manifest.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_cas.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_embedding_rotation.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_pagerank_restoration.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_provenance.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_retrieval_pin.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_vector_store_dim_safety.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/conftest.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_acc_at_k.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_broad_candidate_audit.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_calibration_demo.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_harness.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_agents.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_ci.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_datasets.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_dense.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_function_bm25.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_function_dense.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_rerank.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_retrieve.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_run.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_stats.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_mcp_bench.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_accuracy.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_config.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_corpus.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_evaluator.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_predicate.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_scoring.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_template_engine.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_harness_import.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_search_quality_reporting.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_search_readiness.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_seed_attocode_fixtures.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_architecture_drift.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_ast_service_hydration.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_body_chunking.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_call_graph.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_code_analyzer.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_codebase_ast.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_codebase_context.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_context_stores_closed.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_cross_ref_search.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_embedder_default.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_embeddings.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_embeddings_query.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_go_symbols.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_hydration.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_index_store.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_model_mismatch.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_path_downweight.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_query_routing.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_semantic_search.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_supported_languages.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_temporal_coupling.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_trigram_index.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_trigram_regex.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_ts_parser.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_dataflow.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_feature_flags.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_new_security_rules.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_security_autofix.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_security_matcher.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_streaming_lsp.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/utilities/__init__.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/utilities/test_ignore.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/utilities/test_token_estimate.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/test_code_intel.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/test_code_intel_hydration.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/test_errors.py +0 -0
- {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/test_memory_store.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: attocode-code-intel
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.21
|
|
4
4
|
Summary: Local code search and navigation for coding agents and people
|
|
5
5
|
Project-URL: Homepage, https://github.com/eren23/attocode
|
|
6
6
|
Project-URL: Repository, https://github.com/eren23/attocode
|
|
@@ -139,6 +139,15 @@ To use the latest source, install from a clone of this repository: `uv tool inst
|
|
|
139
139
|
|
|
140
140
|
## What your agent gets
|
|
141
141
|
|
|
142
|
+
Version 0.1.21 includes configured search-discovery coverage, OCaml interface
|
|
143
|
+
parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native
|
|
144
|
+
budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
|
|
145
|
+
|
|
146
|
+
Version 0.1.20 improves native OCaml/Perl call candidates and conservative workspace
|
|
147
|
+
import candidates for OCaml, Perl and Crystal. Physical paths and ambiguity remain
|
|
148
|
+
guarded; native limits, ranking and dependencies are unchanged. Optional grammars
|
|
149
|
+
must be explicitly available before analysis; navigation never downloads them.
|
|
150
|
+
|
|
142
151
|
Version 0.1.19 restores source text into spare space after fitting a complete
|
|
143
152
|
compact search page. Existing hits, visible text, source lines and continuations
|
|
144
153
|
remain protected within the same response budget; ranking and retrieval are unchanged.
|
|
@@ -26,6 +26,15 @@ To use the latest source, install from a clone of this repository: `uv tool inst
|
|
|
26
26
|
|
|
27
27
|
## What your agent gets
|
|
28
28
|
|
|
29
|
+
Version 0.1.21 includes configured search-discovery coverage, OCaml interface
|
|
30
|
+
parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native
|
|
31
|
+
budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
|
|
32
|
+
|
|
33
|
+
Version 0.1.20 improves native OCaml/Perl call candidates and conservative workspace
|
|
34
|
+
import candidates for OCaml, Perl and Crystal. Physical paths and ambiguity remain
|
|
35
|
+
guarded; native limits, ranking and dependencies are unchanged. Optional grammars
|
|
36
|
+
must be explicitly available before analysis; navigation never downloads them.
|
|
37
|
+
|
|
29
38
|
Version 0.1.19 restores source text into spare space after fitting a complete
|
|
30
39
|
compact search page. Existing hits, visible text, source lines and continuations
|
|
31
40
|
remain protected within the same response budget; ranking and retrieval are unchanged.
|
|
@@ -1428,6 +1428,7 @@ class ASTService:
|
|
|
1428
1428
|
def _index_definitions(self, rel_path: str, ast: FileAST, *, index=None) -> None:
|
|
1429
1429
|
"""Phase 1: Index all *definitions* (functions, classes, methods)."""
|
|
1430
1430
|
index = self._index if index is None else index
|
|
1431
|
+
source = 'regex' if ast.language in {'go', 'rust'} and ast.parsing_tier == 'regex' else 'tree-sitter'
|
|
1431
1432
|
# Top-level functions
|
|
1432
1433
|
for func in ast.functions:
|
|
1433
1434
|
loc = SymbolLocation(
|
|
@@ -1437,6 +1438,7 @@ class ASTService:
|
|
|
1437
1438
|
file_path=rel_path,
|
|
1438
1439
|
start_line=func.start_line,
|
|
1439
1440
|
end_line=func.end_line,
|
|
1441
|
+
source=source,
|
|
1440
1442
|
)
|
|
1441
1443
|
index.add_definition(loc)
|
|
1442
1444
|
|
|
@@ -1449,6 +1451,7 @@ class ASTService:
|
|
|
1449
1451
|
file_path=rel_path,
|
|
1450
1452
|
start_line=cls.start_line,
|
|
1451
1453
|
end_line=cls.end_line,
|
|
1454
|
+
source=source,
|
|
1452
1455
|
)
|
|
1453
1456
|
index.add_definition(cls_loc)
|
|
1454
1457
|
|
|
@@ -1460,6 +1463,7 @@ class ASTService:
|
|
|
1460
1463
|
file_path=rel_path,
|
|
1461
1464
|
start_line=method.start_line,
|
|
1462
1465
|
end_line=method.end_line,
|
|
1466
|
+
source=source,
|
|
1463
1467
|
)
|
|
1464
1468
|
index.add_definition(method_loc)
|
|
1465
1469
|
|
|
@@ -1472,6 +1476,7 @@ class ASTService:
|
|
|
1472
1476
|
file_path=rel_path,
|
|
1473
1477
|
start_line=0,
|
|
1474
1478
|
end_line=0,
|
|
1479
|
+
source=source,
|
|
1475
1480
|
)
|
|
1476
1481
|
index.add_definition(var_loc)
|
|
1477
1482
|
|
|
@@ -1563,6 +1568,10 @@ class ASTService:
|
|
|
1563
1568
|
# Build a regex pattern for call sites: symbol_name(
|
|
1564
1569
|
# Only scan for symbols that are actually defined somewhere.
|
|
1565
1570
|
# Skip comment lines and string literals to reduce false positives.
|
|
1571
|
+
lexical_fallback = ast.language in {'go', 'rust'}
|
|
1572
|
+
if lexical_fallback:
|
|
1573
|
+
from .codebase_ast import _mask_go_rust_source
|
|
1574
|
+
content = _mask_go_rust_source(content, ast.language)
|
|
1566
1575
|
in_multiline_string = False
|
|
1567
1576
|
for i, line in enumerate(content.split("\n"), 1):
|
|
1568
1577
|
stripped = line.lstrip()
|
|
@@ -1591,12 +1600,19 @@ class ASTService:
|
|
|
1591
1600
|
|
|
1592
1601
|
# Strip inline comments and string literals for matching
|
|
1593
1602
|
# Remove quoted strings to avoid matching inside them
|
|
1594
|
-
clean_line = re.sub(r'(["\'])(?:(?!\1).)*\1', '""', line)
|
|
1603
|
+
clean_line = line if lexical_fallback else re.sub(r'(["\'])(?:(?!\1).)*\1', '""', line)
|
|
1604
|
+
declaration = None
|
|
1605
|
+
if ast.language == 'go':
|
|
1606
|
+
declaration = re.match(r'^\s*func\s+(?:\([^)]+\)\s+)?(\w+)\s*\(', clean_line)
|
|
1607
|
+
elif ast.language == 'rust':
|
|
1608
|
+
declaration = re.match(r'^\s*(?:pub(?:\([^)]*\))?\s+)?(?:(?:async|unsafe|extern|const)\s+)*fn\s+(\w+)', clean_line)
|
|
1595
1609
|
caller = _enclosing_qname(i)
|
|
1596
1610
|
|
|
1597
1611
|
# Find function/method calls: name(
|
|
1598
1612
|
for m in re.finditer(r"(?<!\.)\b(\w+)\s*\(", clean_line):
|
|
1599
1613
|
name = m.group(1)
|
|
1614
|
+
if declaration is not None and m.start(1) == declaration.start(1):
|
|
1615
|
+
continue
|
|
1600
1616
|
if name in known_symbols and name not in ("if", "for", "while", "return", "print"):
|
|
1601
1617
|
ref = SymbolRef(
|
|
1602
1618
|
symbol_name=name,
|
|
@@ -1605,6 +1621,7 @@ class ASTService:
|
|
|
1605
1621
|
line=i,
|
|
1606
1622
|
syntax_name=name,
|
|
1607
1623
|
caller_qualified_name=caller,
|
|
1624
|
+
source='regex' if lexical_fallback else 'tree-sitter',
|
|
1608
1625
|
)
|
|
1609
1626
|
index.add_reference(ref)
|
|
1610
1627
|
|
|
@@ -1619,5 +1636,6 @@ class ASTService:
|
|
|
1619
1636
|
line=i,
|
|
1620
1637
|
syntax_name=m.group(0).rsplit("(", 1)[0].strip(),
|
|
1621
1638
|
caller_qualified_name=caller,
|
|
1639
|
+
source='regex' if lexical_fallback else 'tree-sitter',
|
|
1622
1640
|
)
|
|
1623
1641
|
index.add_reference(ref)
|
|
@@ -863,12 +863,116 @@ def parse_javascript(content: str, path: str = "") -> FileAST:
|
|
|
863
863
|
return ast
|
|
864
864
|
|
|
865
865
|
|
|
866
|
+
def _mask_go_rust_source(content: str, language: str, *, keep_quoted: bool = False) -> str:
|
|
867
|
+
"""Keep coordinates while hiding comments/literals from bounded heuristics.
|
|
868
|
+
|
|
869
|
+
keep_quoted retains ordinary double-quoted Go import paths. Raw literals
|
|
870
|
+
stay hidden in both views so their interior lines cannot become imports.
|
|
871
|
+
This is lexical filtering, not a complete language grammar.
|
|
872
|
+
"""
|
|
873
|
+
output = list(content)
|
|
874
|
+
size, i = len(content), 0
|
|
875
|
+
raw_string = re.compile(r'(?:b|c)?r(#{0,255})"')
|
|
876
|
+
rust_char = re.compile(r"'(?:\\(?:u\{[0-9a-fA-F_]+\}|x[0-9a-fA-F]{2}|[^\r\n])|[^\\'\r\n])'")
|
|
877
|
+
|
|
878
|
+
def hide(start, end):
|
|
879
|
+
for at in range(start, min(end, size)):
|
|
880
|
+
if content[at] not in '\r\n':
|
|
881
|
+
output[at] = ' '
|
|
882
|
+
|
|
883
|
+
while i < size:
|
|
884
|
+
start = i
|
|
885
|
+
if content.startswith('//', i):
|
|
886
|
+
end = content.find('\n', i + 2)
|
|
887
|
+
i = size if end < 0 else end
|
|
888
|
+
hide(start, i)
|
|
889
|
+
elif content.startswith('/*', i):
|
|
890
|
+
i, depth = i + 2, 1
|
|
891
|
+
while i < size and depth:
|
|
892
|
+
if language == 'rust' and content.startswith('/*', i):
|
|
893
|
+
depth += 1
|
|
894
|
+
i += 2
|
|
895
|
+
elif content.startswith('*/', i):
|
|
896
|
+
depth -= 1
|
|
897
|
+
i += 2
|
|
898
|
+
else:
|
|
899
|
+
i += 1
|
|
900
|
+
hide(start, i)
|
|
901
|
+
elif language == 'go' and content[i] == '`':
|
|
902
|
+
end = content.find('`', i + 1)
|
|
903
|
+
i = size if end < 0 else end + 1
|
|
904
|
+
hide(start, i)
|
|
905
|
+
elif language == 'rust' and (i == 0 or not (content[i - 1].isalnum() or content[i - 1] == '_')) and (raw := raw_string.match(content, i)):
|
|
906
|
+
closing = '"' + raw.group(1)
|
|
907
|
+
end = content.find(closing, raw.end())
|
|
908
|
+
i = size if end < 0 else end + len(closing)
|
|
909
|
+
hide(start, i)
|
|
910
|
+
elif language == 'rust' and content[i] == "'":
|
|
911
|
+
# An apostrophe also introduces a lifetime/label. Only a complete
|
|
912
|
+
# character token is hidden; &'a and 'label: stay code.
|
|
913
|
+
char = rust_char.match(content, i)
|
|
914
|
+
if char:
|
|
915
|
+
i = char.end()
|
|
916
|
+
hide(start, i)
|
|
917
|
+
else:
|
|
918
|
+
i += 1
|
|
919
|
+
elif content[i] == '"' or (language == 'go' and content[i] == "'"):
|
|
920
|
+
quote = content[i]
|
|
921
|
+
i += 1
|
|
922
|
+
while i < size:
|
|
923
|
+
if content[i] == '\\':
|
|
924
|
+
i += 2
|
|
925
|
+
elif content[i] == quote:
|
|
926
|
+
i += 1
|
|
927
|
+
break
|
|
928
|
+
else:
|
|
929
|
+
i += 1
|
|
930
|
+
if not (keep_quoted and quote == '"'):
|
|
931
|
+
hide(start, i)
|
|
932
|
+
else:
|
|
933
|
+
i += 1
|
|
934
|
+
return ''.join(output)
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
def _bounded_fallback_end(lines: list[str], start: int) -> int:
|
|
938
|
+
"""Find an ordinary declaration body within the existing500-line window."""
|
|
939
|
+
depth = parens = brackets = 0
|
|
940
|
+
opened = False
|
|
941
|
+
for number in range(start, min(start + 500, len(lines))):
|
|
942
|
+
line = lines[number]
|
|
943
|
+
if number > start and not opened and not parens and not brackets and re.match(
|
|
944
|
+
r'\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+|unsafe\s+)?(?:func|fn|struct|enum|trait|type|impl|mod|use|import|const|var)\b', line,
|
|
945
|
+
):
|
|
946
|
+
return start + 1
|
|
947
|
+
for char in line:
|
|
948
|
+
if opened:
|
|
949
|
+
depth += (char == '{') - (char == '}')
|
|
950
|
+
elif char == '(':
|
|
951
|
+
parens += 1
|
|
952
|
+
elif char == ')':
|
|
953
|
+
parens = max(0, parens - 1)
|
|
954
|
+
elif char == '[':
|
|
955
|
+
brackets += 1
|
|
956
|
+
elif char == ']':
|
|
957
|
+
brackets = max(0, brackets - 1)
|
|
958
|
+
elif not parens and not brackets:
|
|
959
|
+
if char == ';':
|
|
960
|
+
return start + 1
|
|
961
|
+
if char == '{':
|
|
962
|
+
opened, depth = True, 1
|
|
963
|
+
# A return type may close its own braces before the function body
|
|
964
|
+
# opens on the same line. Finish only after processing that line.
|
|
965
|
+
if opened and depth == 0:
|
|
966
|
+
return number + 1
|
|
967
|
+
return start + 1
|
|
968
|
+
|
|
969
|
+
|
|
866
970
|
def parse_rust(content: str, path: str = "") -> FileAST:
|
|
867
971
|
"""Parse Rust source using regex patterns.
|
|
868
972
|
|
|
869
973
|
Extracts functions, structs, enums, traits, impl blocks, imports (use/mod).
|
|
870
974
|
"""
|
|
871
|
-
lines = content.split("\n")
|
|
975
|
+
lines = _mask_go_rust_source(content, 'rust').split("\n")
|
|
872
976
|
ast = FileAST(path=path, language="rust", line_count=len(lines))
|
|
873
977
|
|
|
874
978
|
for i, line in enumerate(lines):
|
|
@@ -894,20 +998,13 @@ def parse_rust(content: str, path: str = "") -> FileAST:
|
|
|
894
998
|
|
|
895
999
|
# Functions: (pub)? (async)? fn name(...)
|
|
896
1000
|
fn_match = re.match(
|
|
897
|
-
r"^(?:pub(?:\([\w:]+\))?\s+)?(?:async\s+)?(?:unsafe\s+)?(?:extern\s
|
|
1001
|
+
r"^(?:pub(?:\([\w:]+\))?\s+)?(?:async\s+)?(?:unsafe\s+)?(?:extern\s+)?fn\s+(\w+)",
|
|
898
1002
|
stripped,
|
|
899
1003
|
)
|
|
900
1004
|
if fn_match:
|
|
901
1005
|
func_name = fn_match.group(1)
|
|
902
1006
|
# Find end via brace matching
|
|
903
|
-
end_line = i
|
|
904
|
-
brace_count = stripped.count("{") - stripped.count("}")
|
|
905
|
-
if brace_count > 0:
|
|
906
|
-
for j in range(i + 1, min(i + 500, len(lines))):
|
|
907
|
-
brace_count += lines[j].count("{") - lines[j].count("}")
|
|
908
|
-
if brace_count <= 0:
|
|
909
|
-
end_line = j + 1
|
|
910
|
-
break
|
|
1007
|
+
end_line = _bounded_fallback_end(lines, i)
|
|
911
1008
|
is_async = "async " in stripped.split("fn")[0]
|
|
912
1009
|
ast.functions.append(FunctionDef(
|
|
913
1010
|
name=func_name,
|
|
@@ -920,14 +1017,7 @@ def parse_rust(content: str, path: str = "") -> FileAST:
|
|
|
920
1017
|
# Structs: (pub)? struct Name
|
|
921
1018
|
struct_match = re.match(r"^(?:pub(?:\([\w:]+\))?\s+)?struct\s+(\w+)", stripped)
|
|
922
1019
|
if struct_match:
|
|
923
|
-
end_line = i
|
|
924
|
-
brace_count = stripped.count("{") - stripped.count("}")
|
|
925
|
-
if brace_count > 0:
|
|
926
|
-
for j in range(i + 1, min(i + 500, len(lines))):
|
|
927
|
-
brace_count += lines[j].count("{") - lines[j].count("}")
|
|
928
|
-
if brace_count <= 0:
|
|
929
|
-
end_line = j + 1
|
|
930
|
-
break
|
|
1020
|
+
end_line = _bounded_fallback_end(lines, i)
|
|
931
1021
|
ast.classes.append(ClassDef(
|
|
932
1022
|
name=struct_match.group(1),
|
|
933
1023
|
start_line=i + 1,
|
|
@@ -938,14 +1028,7 @@ def parse_rust(content: str, path: str = "") -> FileAST:
|
|
|
938
1028
|
# Enums: (pub)? enum Name
|
|
939
1029
|
enum_match = re.match(r"^(?:pub(?:\([\w:]+\))?\s+)?enum\s+(\w+)", stripped)
|
|
940
1030
|
if enum_match:
|
|
941
|
-
end_line = i
|
|
942
|
-
brace_count = stripped.count("{") - stripped.count("}")
|
|
943
|
-
if brace_count > 0:
|
|
944
|
-
for j in range(i + 1, min(i + 500, len(lines))):
|
|
945
|
-
brace_count += lines[j].count("{") - lines[j].count("}")
|
|
946
|
-
if brace_count <= 0:
|
|
947
|
-
end_line = j + 1
|
|
948
|
-
break
|
|
1031
|
+
end_line = _bounded_fallback_end(lines, i)
|
|
949
1032
|
ast.classes.append(ClassDef(
|
|
950
1033
|
name=enum_match.group(1),
|
|
951
1034
|
start_line=i + 1,
|
|
@@ -956,14 +1039,7 @@ def parse_rust(content: str, path: str = "") -> FileAST:
|
|
|
956
1039
|
# Traits: (pub)? trait Name
|
|
957
1040
|
trait_match = re.match(r"^(?:pub(?:\([\w:]+\))?\s+)?(?:unsafe\s+)?trait\s+(\w+)", stripped)
|
|
958
1041
|
if trait_match:
|
|
959
|
-
end_line = i
|
|
960
|
-
brace_count = stripped.count("{") - stripped.count("}")
|
|
961
|
-
if brace_count > 0:
|
|
962
|
-
for j in range(i + 1, min(i + 500, len(lines))):
|
|
963
|
-
brace_count += lines[j].count("{") - lines[j].count("}")
|
|
964
|
-
if brace_count <= 0:
|
|
965
|
-
end_line = j + 1
|
|
966
|
-
break
|
|
1042
|
+
end_line = _bounded_fallback_end(lines, i)
|
|
967
1043
|
ast.classes.append(ClassDef(
|
|
968
1044
|
name=trait_match.group(1),
|
|
969
1045
|
start_line=i + 1,
|
|
@@ -984,7 +1060,8 @@ def parse_go(content: str, path: str = "") -> FileAST:
|
|
|
984
1060
|
|
|
985
1061
|
Extracts functions, methods, structs, interfaces, imports.
|
|
986
1062
|
"""
|
|
987
|
-
lines = content.split("\n")
|
|
1063
|
+
lines = _mask_go_rust_source(content, 'go').split("\n")
|
|
1064
|
+
import_lines = _mask_go_rust_source(content, 'go', keep_quoted=True).split("\n")
|
|
988
1065
|
ast = FileAST(path=path, language="go", line_count=len(lines))
|
|
989
1066
|
|
|
990
1067
|
i = 0
|
|
@@ -995,7 +1072,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
|
|
|
995
1072
|
if stripped == "import (" or stripped.startswith("import ("):
|
|
996
1073
|
i += 1
|
|
997
1074
|
while i < len(lines):
|
|
998
|
-
imp_line =
|
|
1075
|
+
imp_line = import_lines[i].strip()
|
|
999
1076
|
if imp_line == ")":
|
|
1000
1077
|
break
|
|
1001
1078
|
# Parse "pkg" or alias "pkg"
|
|
@@ -1009,7 +1086,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
|
|
|
1009
1086
|
continue
|
|
1010
1087
|
|
|
1011
1088
|
# Single import: import "pkg"
|
|
1012
|
-
single_imp = re.match(r'^import\s+(?:\w+\s+)?"([^"]+)"', stripped)
|
|
1089
|
+
single_imp = re.match(r'^import\s+(?:\w+\s+)?"([^"]+)"', import_lines[i].strip()) if stripped.startswith('import') else None
|
|
1013
1090
|
if single_imp:
|
|
1014
1091
|
ast.imports.append(ImportDef(
|
|
1015
1092
|
module=single_imp.group(1), is_from=False, line=i + 1,
|
|
@@ -1021,14 +1098,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
|
|
|
1021
1098
|
method_match = re.match(r"^func\s+\([^)]+\)\s+(\w+)\s*\(", stripped)
|
|
1022
1099
|
if method_match:
|
|
1023
1100
|
func_name = method_match.group(1)
|
|
1024
|
-
end_line = i
|
|
1025
|
-
brace_count = stripped.count("{") - stripped.count("}")
|
|
1026
|
-
if brace_count > 0:
|
|
1027
|
-
for j in range(i + 1, min(i + 500, len(lines))):
|
|
1028
|
-
brace_count += lines[j].count("{") - lines[j].count("}")
|
|
1029
|
-
if brace_count <= 0:
|
|
1030
|
-
end_line = j + 1
|
|
1031
|
-
break
|
|
1101
|
+
end_line = _bounded_fallback_end(lines, i)
|
|
1032
1102
|
ast.functions.append(FunctionDef(
|
|
1033
1103
|
name=func_name,
|
|
1034
1104
|
start_line=i + 1,
|
|
@@ -1042,14 +1112,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
|
|
|
1042
1112
|
fn_match = re.match(r"^func\s+(\w+)\s*\(", stripped)
|
|
1043
1113
|
if fn_match:
|
|
1044
1114
|
func_name = fn_match.group(1)
|
|
1045
|
-
end_line = i
|
|
1046
|
-
brace_count = stripped.count("{") - stripped.count("}")
|
|
1047
|
-
if brace_count > 0:
|
|
1048
|
-
for j in range(i + 1, min(i + 500, len(lines))):
|
|
1049
|
-
brace_count += lines[j].count("{") - lines[j].count("}")
|
|
1050
|
-
if brace_count <= 0:
|
|
1051
|
-
end_line = j + 1
|
|
1052
|
-
break
|
|
1115
|
+
end_line = _bounded_fallback_end(lines, i)
|
|
1053
1116
|
ast.functions.append(FunctionDef(
|
|
1054
1117
|
name=func_name,
|
|
1055
1118
|
start_line=i + 1,
|
|
@@ -1061,14 +1124,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
|
|
|
1061
1124
|
# Struct: type Name struct {
|
|
1062
1125
|
struct_match = re.match(r"^type\s+(\w+)\s+struct\s*\{", stripped)
|
|
1063
1126
|
if struct_match:
|
|
1064
|
-
end_line = i
|
|
1065
|
-
brace_count = stripped.count("{") - stripped.count("}")
|
|
1066
|
-
if brace_count > 0:
|
|
1067
|
-
for j in range(i + 1, min(i + 500, len(lines))):
|
|
1068
|
-
brace_count += lines[j].count("{") - lines[j].count("}")
|
|
1069
|
-
if brace_count <= 0:
|
|
1070
|
-
end_line = j + 1
|
|
1071
|
-
break
|
|
1127
|
+
end_line = _bounded_fallback_end(lines, i)
|
|
1072
1128
|
ast.classes.append(ClassDef(
|
|
1073
1129
|
name=struct_match.group(1),
|
|
1074
1130
|
start_line=i + 1,
|
|
@@ -1080,14 +1136,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
|
|
|
1080
1136
|
# Interface: type Name interface {
|
|
1081
1137
|
iface_match = re.match(r"^type\s+(\w+)\s+interface\s*\{", stripped)
|
|
1082
1138
|
if iface_match:
|
|
1083
|
-
end_line = i
|
|
1084
|
-
brace_count = stripped.count("{") - stripped.count("}")
|
|
1085
|
-
if brace_count > 0:
|
|
1086
|
-
for j in range(i + 1, min(i + 500, len(lines))):
|
|
1087
|
-
brace_count += lines[j].count("{") - lines[j].count("}")
|
|
1088
|
-
if brace_count <= 0:
|
|
1089
|
-
end_line = j + 1
|
|
1090
|
-
break
|
|
1139
|
+
end_line = _bounded_fallback_end(lines, i)
|
|
1091
1140
|
ast.classes.append(ClassDef(
|
|
1092
1141
|
name=iface_match.group(1),
|
|
1093
1142
|
start_line=i + 1,
|
|
@@ -11,6 +11,7 @@ Provides intelligent code understanding through:
|
|
|
11
11
|
from __future__ import annotations
|
|
12
12
|
|
|
13
13
|
import os
|
|
14
|
+
import posixpath
|
|
14
15
|
import time
|
|
15
16
|
from dataclasses import dataclass, field
|
|
16
17
|
from functools import partial
|
|
@@ -523,6 +524,8 @@ def resolve_import_targets(language, module, source_file, file_index, *, include
|
|
|
523
524
|
return file_index.namespace_candidates(language, module)
|
|
524
525
|
if language == "go" and hasattr(file_index, "go_candidates"):
|
|
525
526
|
return file_index.go_candidates(module, source_file)
|
|
527
|
+
if language in {"ocaml", "perl", "crystal"}:
|
|
528
|
+
return _optional_import_targets(language, module, source_file, file_index)
|
|
526
529
|
resolver = IMPORT_RESOLVERS.get(language)
|
|
527
530
|
target = resolver(module, source_file, file_index) if resolver else None
|
|
528
531
|
return [target] if target else []
|
|
@@ -664,7 +667,55 @@ def _resolve_namespace_import(language, module, source_file, file_index):
|
|
|
664
667
|
return candidates[0] if len(candidates) == 1 else None
|
|
665
668
|
|
|
666
669
|
|
|
670
|
+
def _optional_import_targets(language, module, source_file, file_index):
|
|
671
|
+
"""Conservative static workspace candidates, never compiler/load-path proof."""
|
|
672
|
+
if not isinstance(module, str) or not module or any(c in module for c in "\x00\r\n\\"):
|
|
673
|
+
return []
|
|
674
|
+
source = source_file.replace("\\", "/")
|
|
675
|
+
if source.startswith("/") or posixpath.normpath(source).startswith("../"):
|
|
676
|
+
return []
|
|
677
|
+
directory = posixpath.dirname(source)
|
|
678
|
+
groups = []
|
|
679
|
+
if language == "ocaml":
|
|
680
|
+
parts = module.split(".")
|
|
681
|
+
if not all(p.isidentifier() and p[0].isupper() for p in parts):
|
|
682
|
+
return []
|
|
683
|
+
name = parts[0]
|
|
684
|
+
stems = {name, name[0].lower() + name[1:]}
|
|
685
|
+
for root in {"", directory}:
|
|
686
|
+
for stem in stems:
|
|
687
|
+
groups.append({posixpath.join(root, stem + suffix) for suffix in (".ml", ".mli")})
|
|
688
|
+
elif language == "perl":
|
|
689
|
+
parts = module.split("::")
|
|
690
|
+
if not all(p.isidentifier() for p in parts):
|
|
691
|
+
return []
|
|
692
|
+
name = "/".join(parts) + ".pm"
|
|
693
|
+
groups = [{name}, {"lib/" + name}]
|
|
694
|
+
elif language == "crystal":
|
|
695
|
+
if not module.startswith(("./", "../")) or any(c in module for c in '*?[]#"\'`') or module.endswith('/'):
|
|
696
|
+
return []
|
|
697
|
+
name = posixpath.normpath(posixpath.join(directory, module))
|
|
698
|
+
if name in {".", ".."} or name.startswith(("/", "../")):
|
|
699
|
+
return []
|
|
700
|
+
groups = [{name if name.endswith(".cr") else name + ".cr"}]
|
|
701
|
+
# A module can have an implementation and interface, but competing source
|
|
702
|
+
# roots or filename casings are ambiguous. Do not pick the first match.
|
|
703
|
+
# Python import roots add stripped aliases for every file type. Optional
|
|
704
|
+
# language conventions require the actual physical path, not those aliases.
|
|
705
|
+
matches = {tuple(sorted({file_index[key] for key in group
|
|
706
|
+
if key in file_index and file_index[key].replace("\\", "/") == key}))
|
|
707
|
+
for group in groups}
|
|
708
|
+
matches.discard(())
|
|
709
|
+
return list(next(iter(matches))) if len(matches) == 1 else []
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
def _optional_import_target(language, module, source_file, file_index):
|
|
713
|
+
targets = _optional_import_targets(language, module, source_file, file_index)
|
|
714
|
+
return targets[0] if len(targets) == 1 else None
|
|
715
|
+
|
|
716
|
+
|
|
667
717
|
IMPORT_RESOLVERS = {
|
|
718
|
+
**{language: partial(_optional_import_target, language) for language in ("ocaml", "perl", "crystal")},
|
|
668
719
|
"python": _resolve_python_import, "javascript": _resolve_js_import,
|
|
669
720
|
"typescript": _resolve_js_import, "rust": _resolve_rust_import,
|
|
670
721
|
"go": _resolve_go_import, "java": _resolve_java_import,
|
|
@@ -57,7 +57,7 @@ class SymbolRef:
|
|
|
57
57
|
ref_kind: str # "call" | "import" | "attribute"
|
|
58
58
|
file_path: str
|
|
59
59
|
line: int
|
|
60
|
-
source: str = "tree-sitter" # "tree-sitter" | "lsp"
|
|
60
|
+
source: str = "tree-sitter" # "tree-sitter" | "regex" | "lsp"
|
|
61
61
|
syntax_name: str = "" # identifier/member expression as written in source
|
|
62
62
|
# Qualified name of the function/method enclosing this reference. Empty
|
|
63
63
|
# when the reference is at module top level or the enclosing symbol
|
|
@@ -76,7 +76,7 @@ class SymbolLocation:
|
|
|
76
76
|
file_path: str
|
|
77
77
|
start_line: int
|
|
78
78
|
end_line: int
|
|
79
|
-
source: str = "tree-sitter" # "tree-sitter" | "lsp"
|
|
79
|
+
source: str = "tree-sitter" # "tree-sitter" | "regex" | "lsp"
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
@dataclass(slots=True)
|