attocode-code-intel 0.1.18__tar.gz → 0.1.19__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.18 → attocode_code_intel-0.1.19}/PKG-INFO +5 -1
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/README.md +4 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/pyproject.toml +1 -1
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/__init__.py +1 -1
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/output.py +69 -1
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_search_budget_repair.py +11 -1
- attocode_code_intel-0.1.19/tests/test_snippet_budget.py +300 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/.gitignore +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/LICENSE +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/README.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/ast_restart_probe.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/body_cost_probe.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/broad_candidate_audit.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/broad_query_cases.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/broad_query_external_cases.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/broad_query_final_holdout.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/client_comparison.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/client_responses.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/codex_repair_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/daily.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-13-codex-repair-diagnostic.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-13-r7-task-completion-pilot.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-14-workflow-pilot.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-15-body-file-trial.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-15-body-file-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-15-expansion-ablation.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-15-expansion-development.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-15-expansion-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-15-fresh-navigation-queries.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-15-headroom-retrieval-questions.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-15-headroom-retrieval.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-cross-file-questions.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-deep-page-questions.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-kotlin-test-paths.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-navigation-prefix-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-navigation-prefix.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-negation-candidate.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-negation-development.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-negation-freeze.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-negation-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-candidates/accepted.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-candidates/boundaries.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-candidates/combined.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-candidates/expansion.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-candidates/identity.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-candidates/manifest.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-candidates/negation.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-candidates/owner_only.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-candidates/owners.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-confirmation-freeze.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-confirmation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-development.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-freeze.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-correctness-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-usefulness-development.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-usefulness-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-search-usefulness.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-test-intent.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-change-focus-candidate.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-change-workflow-replays.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-change-workflow-replays.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-file-coverage-c2f.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-file-coverage-development.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-file-coverage-freeze.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-file-coverage-t.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-file-coverage-tcf.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-file-coverage-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-search-batch-candidate.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-search-batch-development.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-search-batch-freeze.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-search-batch-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-test-source-slot-candidate.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-test-source-slot-development.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-test-source-slot-freeze.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-test-source-slot-t2.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-test-source-slot-t3.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-17-test-source-slot-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-paired-source-candidate.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-paired-source-development.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-paired-source-freeze.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-paired-source-p.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-paired-source-pf.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-paired-source-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-candidate.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-development.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-freeze.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-q1.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-q2.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-q3.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-q5.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-s1.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-s2-equivalence.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-s2-freeze.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-s2-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-s2.patch.gz +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-18-query-source-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-19-cpu-fn-embed-cost.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-20-clause-balance-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-20-search-repair-validation.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-20-test-support-development.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-20-test-support-freeze.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-23-preview-windows.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-23-restart-fingerprints.json +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/discovery_reuse_probe.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/external_benchmarks.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/external_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/graded_blind_pack.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/lexical_sql_probe.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/localize_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/locbench_title_pack.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/onboarding_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/pilot.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/quality_scoring.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/quality_tasks.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/release_gate.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/repair_grading.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/repair_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/repair_worker.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/responses.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/restart_discovery_probe.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/search_evidence_audit.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/source_view_transfer.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/structural_write_probe.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/study_clients.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/study_events.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/study_tasks.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/token_overhead.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/understanding_scoring.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/understanding_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/warm_cache.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/workflows.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/GUIDELINES.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/errors/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/architecture_drift.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/ast_chunker.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/ast_service.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/ast_snapshot.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/blob_oid.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/cache_manifest.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/cas.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/code_analyzer.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/codebase_ast.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/codebase_context.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/cross_mode.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/cross_references.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/discovery_snapshot.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/embedding_rotation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/embeddings.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/frecency.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/fuzzy.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/hierarchical_explorer.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/hydration.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/index_probe.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/index_repair.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/index_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/language_registry.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/memory_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/module_resolution.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/parse_diagnostics.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/query_constraints.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/query_history.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/reranker.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/semantic_search.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/syntax_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/systemone_ranker.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/temporal_coupling.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/trigram_index.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/trigram_regex.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/ts_parser.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/context/vector_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/feature_flags/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/lsp/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/lsp/client.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/mcp/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/mcp/client.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/security/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/security/custom_rules.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/security/dataflow.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/security/dependency_audit.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/security/matcher.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/security/patterns.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/security/scanner.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/utilities/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/utilities/ignore.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/integrations/utilities/token_estimate.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/tricks/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/tricks/recursive_context.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/types/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/types/events.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_internal/types/severity.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/_shared.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/analysis_coverage.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/access.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/app.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/auth/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/auth/api_keys.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/auth/context.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/auth/jwt.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/auth/oauth.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/auth/passwords.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/deps.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/knowledge_bridge.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/mcp_transport.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/middleware.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/models.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/providers/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/providers/db_provider.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/providers/local_provider.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/providers/remote_provider.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/repository_source.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/_pin_helper.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/activity.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/adr.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/analysis.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/api_keys.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/auth.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/branches.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/cross_repo_search.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/embeddings.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/files.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/files_v2.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/gc.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/git_v2.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/graph.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/graph_viz.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/health.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/history.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/jobs.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/learning.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/lsp.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/notify.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/operations.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/orgs.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/preferences.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/presence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/projects.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/repos.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/search.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/snapshots.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/webhooks.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/routes/websocket.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/static/graph.html +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/api/utils.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/artifacts/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/artifacts/hashing.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/artifacts/provenance.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/artifacts/retrieval_pin.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/audit.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/bug_finder.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/bundle.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/catalog.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/change_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/change_investigation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/change_review.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/cli.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/community.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/confidence/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/confidence/jev.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/confidence/llm.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/confidence/redact.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/confidence/settings.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/config.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/crypto.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/db/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/db/base.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/db/engine.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/db/models.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/entrypoint.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/focused_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/freshness.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/gateway.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/git/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/git/credentials.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/git/manager.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/git/models.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/git/storage.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/graph_query_parser.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/helpers.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/indexing/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/indexing/debouncer.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/indexing/delta_indexer.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/indexing/full_indexer.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/indexing/incremental.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/indexing/parser.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/indexing/summarizer.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/installer.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/investigation_cli.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/knowledge.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/local_knowledge.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/alembic.ini +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/env.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/script.py.mako +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/001_initial_schema.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/002_branch_version_and_embeddings.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/003_embedding_uniqueness_and_cascade.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/004_audit_events.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/005_user_preferences.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/006_google_oauth.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/007_pgvector_embeddings.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/008_symbol_references.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/009_webhook_secret_encryption.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/010_add_commits_table.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/011_commit_changed_files.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/012_branch_merged_at.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/013_revoked_tokens.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/014_blame_hunks.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/015_commit_file_stats.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/016_embedding_provenance_columns.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/017_provenance_table.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/018_repo_snapshots.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/019_symref_caller.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/migrations/versions/020_shared_knowledge.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/onboarding.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/precision.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/presence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/probe.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/project_dir.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/pubsub.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/query_ranking.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/readiness.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/redis.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/reference_pages.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/remote.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/repo_ranker.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/request_context.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/ci.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/combinators.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/enricher.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/evolution.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/executor.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/filters/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/filters/pipeline.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/formatter.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/hygiene.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/importers/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/importers/semgrep.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/loader.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/marketplace.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/metavar.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/model.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/_license_templates/Apache-2.0.txt +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/_license_templates/MIT.txt +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/LICENSE +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/NOTICE +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/PORTING.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/rules/B105-hardcoded-password.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/rules/B303-weak-md5.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/rules/B304-weak-des.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/rules/B307-use-of-eval.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/rules/B324-weak-sha1.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/rules/B501-no-cert-validation.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/rules/B602-shell-true.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/bandit-python/rules/B608-sqli.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/LICENSE +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/NOTICE +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/PORTING.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/eqeqeq.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-eval.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-implied-eval.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-new-func.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-throw-literal.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-var.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-with.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/LICENSE +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/NOTICE +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/PORTING.md +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/rules/G101-hardcoded-credentials.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/rules/G102-bind-all-interfaces.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/rules/G103-unsafe-block.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/rules/G201-sql-format.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/rules/G304-file-inclusion.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/rules/G401-weak-cipher.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/rules/G402-tls-min-version.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/community/gosec-go/rules/G501-md5-import.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/cpp/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/cpp/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/cpp/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/csharp/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/csharp/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/csharp/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/go/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/go/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/go/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/go/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/go/taint/sanitizers.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/go/taint/sinks.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/go/taint/sources.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/java/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/java/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/java/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/java/taint/sinks.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/java/taint/sources.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/kotlin/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/kotlin/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/kotlin/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/php/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/php/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/php/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/python/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/python/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/python/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/ruby/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/ruby/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/ruby/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/rust/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/rust/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/rust/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/typescript/manifest.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/typescript/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/examples/typescript/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/packs/pack_loader.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/plugins/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/plugins/plugin_loader.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/profiling.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/registry.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/sarif.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/synthesis.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/rules/testing.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/search_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/server.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/service.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/sharing.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/storage/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/storage/branch_overlay.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/storage/content_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/storage/dependency_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/storage/diff_engine.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/storage/embedding_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/storage/provenance_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/storage/security_scanner_db.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/storage/symbol_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/structural_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/symbol_inspection.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/symbol_links.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/telemetry.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/test_ranking.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/testing/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/testing/fixtures.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/testing/helpers.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/testing/mocks.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/adr_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/analysis_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/composite_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/cross_mode_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/dead_code_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/distill_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/frecency_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/fuzzy_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/history_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/learning_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/lsp_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/maintenance_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/navigation_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/overlay_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/pin_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/pin_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/query_constraints_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/query_history_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/readiness_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/rule_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/search_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/tools/snapshot_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/workers/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/workers/job_utils.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/workers/jobs.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/workers/run.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/src/attocode_intel/workers/settings.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/fixtures/rule_violations/.attocode/rules/team-preferences.yaml +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/fixtures/rule_violations/go/bad_patterns.go +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/fixtures/rule_violations/java/BadPatterns.java +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/fixtures/rule_violations/python/bad_patterns.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/fixtures/rule_violations/rust/bad_patterns.rs +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/fixtures/rule_violations/typescript/bad_patterns.ts +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/integration/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/integration/code_intel/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/integration/code_intel/conftest.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/integration/code_intel/test_http_smoke.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/integration/code_intel/test_mcp_tools_audit.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/integration/code_intel/test_remote_mcp_http_integration.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/integration/code_intel/test_service_integration.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/integration/test_rule_bench_floor_e2e.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_ast_snapshot.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_behavioral_negation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_change_focus.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_change_investigation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_chunk_identity.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_codex_repair_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_cold_discovery.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_cold_index_cost.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_compact_inspection.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_corpus_capture.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_daily_workflows.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_db_navigation_http.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_discovery_reuse.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_doctor.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_doctor_runtime.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_edit_restart.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_experiment_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_experiment_readiness.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_external_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_file_symbol_scope.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_fixture_source_alias.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_focused_inspection.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_image_budget.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_importance_publication.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_index_probe.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_index_processes.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_index_reuse.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_index_sequences.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_kotlin_test_paths.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_language_capabilities.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_lean_profile.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_lexical_sql_cost.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_local_reranker.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_local_workflow_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_localize_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_lsp_diagnostics.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_lsp_document_lifecycle.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_lsp_stderr_lifecycle.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_mcp_search_evaluation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_mixed_workspace.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_module_ownership.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_native_experiment.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_navigation_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_navigation_prefix_trial.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_onboarding_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_operation_contracts.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_parse_recovery.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_parser_thread_isolation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_pilot.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_precision_protocol.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_precision_recovery.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_preview_admission.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_preview_experiment.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_preview_sources.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_preview_windows.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_product.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_quality_cloud.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_quality_evaluation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_quality_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_quality_lifecycle.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_quality_runner.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_query_ranking.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_query_requirements.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_ranking_intent.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_real_language_server.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_recovery_readiness.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_release_verification.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_remote.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_repair_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_restart_experiment.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_retrieval_ablation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_retrieval_audit.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_retrieval_body_trial.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_retrieval_cycle.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_search_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_search_evidence_audit.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_search_usefulness.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_source_exclusions.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_structural_evidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_structural_write_cost.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_study.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_symbol_order.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_systemone_ranker.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_test_intent_trial.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_token_overhead.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_trigram_workspace.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_understanding_evaluation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_walk_order.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_warm_cache.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_workflow_sequences.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/conftest.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_advisory_lock.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_api.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_api_phase3a.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_api_v2.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_auth.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_branch_versioning.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_bug_finder.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_call_graph_tool.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_ci_runner.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_cli_lifecycle.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_cli_maintenance_local.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_cli_ops.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_cli_query_commands.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_cli_remote.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_codex_rereview_polish.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_combinators.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_confidence.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_confidence_adoption.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_config.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_config_remote.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_cross_mode.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_db_security_scan.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_deps.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_diff_engine.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_edge_cases.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_frecency.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_fuzzy.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_index_store_migration.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_kw_index_status.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_lsp_call_graph.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_lsp_enrichment.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_lsp_extended_models.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_marketplace.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_metavar.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_middleware.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_notify_enhanced.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_org_isolation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_pack_autoload.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_profiling.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_project_discovery.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_provenance_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_pubsub_streams.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_query_constraints.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_query_history.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_readiness.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_reindex_embeddings.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_remote_local_fallback.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_remote_provider.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_remote_reliability.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_repo_ranker.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_rule_evolution.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_rule_hygiene.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_rule_synthesis.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_rule_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_rule_violations.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_rules_engine.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_rules_integration.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_sarif.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_search_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_server_startup.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_service.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_service_mode.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_status_health.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_structural_executor.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_supply_chain_rules.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_testing_framework.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/test_webhook_encryption.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/conftest.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_adr_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_analysis_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_dead_code_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_distill_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_history_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_learning_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_lsp_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_maintenance_tools_phase2.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_navigation_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_phase2c_anchors_and_overlays.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_readiness_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_search_status_mismatch.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_search_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/code_intel/tools/test_server_tools.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/test_action_hash.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/test_ast_service_adapter.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/test_blob_oid.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/test_cache_manifest.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/test_cas.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/test_embedding_rotation.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/test_pagerank_restoration.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/test_provenance.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/test_retrieval_pin.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/context/test_vector_store_dim_safety.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/conftest.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_acc_at_k.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_broad_candidate_audit.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_calibration_demo.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_harness.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_matrix_agents.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_matrix_ci.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_matrix_datasets.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_matrix_dense.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_matrix_function_bm25.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_matrix_function_dense.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_matrix_rerank.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_matrix_retrieve.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_matrix_run.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_matrix_stats.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_mcp_bench.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_rule_accuracy.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_rule_bench_config.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_rule_bench_corpus.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_rule_bench_evaluator.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_rule_bench_predicate.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_rule_bench_scoring.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_rule_bench_template_engine.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_rule_harness_import.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_search_quality_reporting.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_search_readiness.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/eval/test_seed_attocode_fixtures.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_architecture_drift.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_ast_service_hydration.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_body_chunking.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_call_graph.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_code_analyzer.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_codebase_ast.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_codebase_context.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_context_stores_closed.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_cross_ref_search.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_embedder_default.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_embeddings.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_embeddings_query.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_go_symbols.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_hydration.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_index_store.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_model_mismatch.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_path_downweight.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_query_routing.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_semantic_search.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_supported_languages.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_temporal_coupling.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_trigram_index.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_trigram_regex.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/context/test_ts_parser.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/test_dataflow.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/test_feature_flags.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/test_new_security_rules.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/test_security_autofix.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/test_security_matcher.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/test_streaming_lsp.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/utilities/__init__.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/utilities/test_ignore.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/integrations/utilities/test_token_estimate.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/test_code_intel.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/test_code_intel_hydration.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/unit/test_errors.py +0 -0
- {attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/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.19
|
|
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,10 @@ 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.19 restores source text into spare space after fitting a complete
|
|
143
|
+
compact search page. Existing hits, visible text, source lines and continuations
|
|
144
|
+
remain protected within the same response budget; ranking and retrieval are unchanged.
|
|
145
|
+
|
|
142
146
|
Version 0.1.7 also provides `changes` and `trace` commands: investigate a diff,
|
|
143
147
|
follow source-backed caller paths, export JSON/Markdown, and check or refresh saved
|
|
144
148
|
evidence. MCP equivalents `change_context` and `trace_flow` are local full-profile
|
|
@@ -26,6 +26,10 @@ 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.19 restores source text into spare space after fitting a complete
|
|
30
|
+
compact search page. Existing hits, visible text, source lines and continuations
|
|
31
|
+
remain protected within the same response budget; ranking and retrieval are unchanged.
|
|
32
|
+
|
|
29
33
|
Version 0.1.7 also provides `changes` and `trace` commands: investigate a diff,
|
|
30
34
|
follow source-backed caller paths, export JSON/Markdown, and check or refresh saved
|
|
31
35
|
evidence. MCP equivalents `change_context` and `trace_flow` are local full-profile
|
|
@@ -140,6 +140,73 @@ def _fill_search_prefix(metadata, data, rows, total, max_tokens, *, upstream_tru
|
|
|
140
140
|
return compact_result(metadata, data)
|
|
141
141
|
|
|
142
142
|
|
|
143
|
+
|
|
144
|
+
_SEARCH_SNIPPET_PROBES = 12
|
|
145
|
+
_SNIPPET_FIELDS = ("snippet", "snippet_start_line", "snippet_end_line", "snippet_truncated")
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def _restore_search_snippets(result, originals, max_tokens, *, upstream_truncated=False):
|
|
149
|
+
"""Spend spare space without replacing any evidence on the fitted page.
|
|
150
|
+
|
|
151
|
+
BPE counts and anchored windows need not be monotone. These are bounded
|
|
152
|
+
probes, not a maximality search; every accepted page is checked in full.
|
|
153
|
+
"""
|
|
154
|
+
page = json.loads(result.content[0].text)
|
|
155
|
+
remaining = _SEARCH_SNIPPET_PROBES
|
|
156
|
+
for index, original in enumerate(originals[:len(page["data"]["results"])]):
|
|
157
|
+
if not remaining:
|
|
158
|
+
break
|
|
159
|
+
delivered = page["data"]["results"][index]
|
|
160
|
+
if (not all(key in original and key in delivered for key in _SNIPPET_FIELDS)
|
|
161
|
+
or {k: v for k, v in original.items() if k not in _SNIPPET_FIELDS}
|
|
162
|
+
!= {k: v for k, v in delivered.items() if k not in _SNIPPET_FIELDS}):
|
|
163
|
+
continue
|
|
164
|
+
body = original["snippet"]
|
|
165
|
+
if (not isinstance(body, str) or not isinstance(delivered["snippet"], str)
|
|
166
|
+
or len(body) <= len(delivered["snippet"])):
|
|
167
|
+
continue
|
|
168
|
+
|
|
169
|
+
def probe(window, *, position=index):
|
|
170
|
+
nonlocal remaining, page, result
|
|
171
|
+
remaining -= 1
|
|
172
|
+
current = page["data"]["results"][position]
|
|
173
|
+
if (len(window["snippet"]) <= len(current["snippet"])
|
|
174
|
+
or current["snippet"] not in window["snippet"]):
|
|
175
|
+
return "skip"
|
|
176
|
+
old_first, old_last = current["snippet_start_line"], current["snippet_end_line"]
|
|
177
|
+
first, last = window["snippet_start_line"], window["snippet_end_line"]
|
|
178
|
+
if old_first is None and old_last is None:
|
|
179
|
+
if first is not None or last is not None:
|
|
180
|
+
return "skip"
|
|
181
|
+
elif (not all(type(n) is int for n in (old_first, old_last, first, last))
|
|
182
|
+
or not 1 <= first <= old_first <= old_last <= last):
|
|
183
|
+
return "skip"
|
|
184
|
+
trial = deepcopy(page)
|
|
185
|
+
trial["data"]["results"][position].update(window)
|
|
186
|
+
_search_truncation(trial["metadata"], trial["data"], upstream_truncated)
|
|
187
|
+
candidate = compact_result(trial["metadata"], trial["data"])
|
|
188
|
+
if response_tokens(candidate) > max_tokens:
|
|
189
|
+
return "over"
|
|
190
|
+
page, result = trial, candidate
|
|
191
|
+
return "fit"
|
|
192
|
+
|
|
193
|
+
# The original window is the only source of additional text. Check it
|
|
194
|
+
# first, then retain the best tested larger anchored window that fits.
|
|
195
|
+
if probe({key: original[key] for key in _SNIPPET_FIELDS}) == "fit":
|
|
196
|
+
continue
|
|
197
|
+
lo, hi = len(delivered["snippet"]) + 1, len(body) - 1
|
|
198
|
+
while lo <= hi and remaining:
|
|
199
|
+
cap = (lo + hi) // 2
|
|
200
|
+
window = snippet_window(body, page["data"].get("query", ""), cap,
|
|
201
|
+
original["snippet_start_line"])
|
|
202
|
+
window["snippet_truncated"] |= original["snippet_truncated"]
|
|
203
|
+
if probe(window) == "over":
|
|
204
|
+
hi = cap - 1
|
|
205
|
+
else:
|
|
206
|
+
lo = cap + 1
|
|
207
|
+
return result
|
|
208
|
+
|
|
209
|
+
|
|
143
210
|
def bounded_search(metadata, data, max_tokens, *, all_results, follow_up=None):
|
|
144
211
|
"""Fit search delivery, reserving a progressing retry after final omissions."""
|
|
145
212
|
payload = deepcopy(data)
|
|
@@ -179,7 +246,8 @@ def bounded_search(metadata, data, max_tokens, *, all_results, follow_up=None):
|
|
|
179
246
|
and len(delivered["data"]["results"]) >= delivered["data"]["ranking"]["candidate_pool_count"]):
|
|
180
247
|
delivered["data"].pop("follow_up", None)
|
|
181
248
|
result = compact_result(delivered["metadata"], delivered["data"])
|
|
182
|
-
return result
|
|
249
|
+
return _restore_search_snippets(result, all_results, max_tokens,
|
|
250
|
+
upstream_truncated=metadata.get("truncated", False))
|
|
183
251
|
|
|
184
252
|
|
|
185
253
|
def bounded_compact(metadata: dict, data, max_tokens: int, *, search_results=None) -> types.CallToolResult:
|
{attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/tests/test_search_budget_repair.py
RENAMED
|
@@ -115,7 +115,17 @@ def test_new_follow_up_never_crowds_out_previously_delivered_evidence(path_size,
|
|
|
115
115
|
result = bounded_search(metadata, data, budget, all_results=data["results"], follow_up=follow)
|
|
116
116
|
assert response_tokens(result) <= budget
|
|
117
117
|
actual = json.loads(result.content[0].text)["data"]["results"]
|
|
118
|
-
assert
|
|
118
|
+
assert len(actual) >= len(protected)
|
|
119
|
+
preview_fields = {"snippet", "snippet_start_line", "snippet_end_line", "snippet_truncated"}
|
|
120
|
+
for before, after in zip(protected, actual, strict=False):
|
|
121
|
+
assert {k: v for k, v in before.items() if k not in preview_fields} == {
|
|
122
|
+
k: v for k, v in after.items() if k not in preview_fields}
|
|
123
|
+
assert before["snippet"] in after["snippet"]
|
|
124
|
+
if before["snippet_start_line"] is not None:
|
|
125
|
+
assert after["snippet_start_line"] <= before["snippet_start_line"]
|
|
126
|
+
assert after["snippet_end_line"] >= before["snippet_end_line"]
|
|
127
|
+
else:
|
|
128
|
+
assert after["snippet_start_line"] is after["snippet_end_line"] is None
|
|
119
129
|
|
|
120
130
|
|
|
121
131
|
@pytest.mark.asyncio
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
"""Source text discarded by coarse fitting can be restored without losing the page."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from copy import deepcopy
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
from attocode_intel.output import bounded_compact, bounded_search, compact_result, response_tokens
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def source_page(kind="unicode", workspace="/repo"):
|
|
13
|
+
body = (
|
|
14
|
+
(' needle = "' + "雪境風雷光雨山海" * 40 + '"\n')
|
|
15
|
+
if kind == "unicode"
|
|
16
|
+
else (" # needle " + '"\\\t雪"' * 64 + "\r\n")
|
|
17
|
+
)
|
|
18
|
+
row = {
|
|
19
|
+
"file_path": "src/worker.py",
|
|
20
|
+
"name": "worker",
|
|
21
|
+
"chunk_type": "function",
|
|
22
|
+
"score": 0.5,
|
|
23
|
+
"line": 9,
|
|
24
|
+
"end_line": 12,
|
|
25
|
+
"snippet": body,
|
|
26
|
+
"snippet_start_line": 10,
|
|
27
|
+
"snippet_end_line": 10,
|
|
28
|
+
"snippet_truncated": True,
|
|
29
|
+
"matched_terms": ["needle"],
|
|
30
|
+
"match_fields": ["source"],
|
|
31
|
+
}
|
|
32
|
+
return {"workspace": workspace, "truncated": True}, {
|
|
33
|
+
"query": "needle",
|
|
34
|
+
"results": [row],
|
|
35
|
+
"ranking": {"candidate_pool_count": 1, "returned_count": 1, "delivered_count": 1},
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@pytest.mark.parametrize("kind", ["unicode", "escaped"])
|
|
40
|
+
@pytest.mark.parametrize(
|
|
41
|
+
"workspace", ["/repo", "/" + "long_checkout_name/" * 30], ids=["short-root", "long-root"]
|
|
42
|
+
)
|
|
43
|
+
def test_small_overflow_preserves_more_than_three_quarters_of_source(kind, workspace):
|
|
44
|
+
metadata, data = source_page(kind, workspace)
|
|
45
|
+
budget = response_tokens(compact_result(metadata, data)) - 1
|
|
46
|
+
original = data["results"][0]["snippet"]
|
|
47
|
+
legacy = bounded_compact(metadata, data, budget, search_results=[])
|
|
48
|
+
old = json.loads(legacy.content[0].text)["data"]["results"][0]["snippet"]
|
|
49
|
+
assert len(old) <= len(original) // 2
|
|
50
|
+
actual = bounded_search(metadata, data, budget, all_results=data["results"])
|
|
51
|
+
delivered = json.loads(actual.content[0].text)["data"]["results"][0]
|
|
52
|
+
assert response_tokens(actual) <= budget
|
|
53
|
+
assert len(delivered["snippet"]) > len(original) * 3 // 4, (
|
|
54
|
+
"snippet restoration boundary: excessive source loss"
|
|
55
|
+
)
|
|
56
|
+
assert old in delivered["snippet"] and delivered["snippet"] in original
|
|
57
|
+
assert delivered["snippet_start_line"] == delivered["snippet_end_line"] == 10
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def test_fitting_search_payload_is_byte_identical():
|
|
61
|
+
metadata, data = source_page()
|
|
62
|
+
budget = response_tokens(compact_result(metadata, data)) + 1000
|
|
63
|
+
legacy = bounded_compact(metadata, data, budget, search_results=[])
|
|
64
|
+
actual = bounded_search(metadata, data, budget, all_results=data["results"])
|
|
65
|
+
assert actual.model_dump() == legacy.model_dump()
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def test_restoration_does_not_mutate_inputs():
|
|
69
|
+
metadata, data = source_page()
|
|
70
|
+
original = deepcopy((metadata, data))
|
|
71
|
+
budget = response_tokens(compact_result(metadata, data)) - 1
|
|
72
|
+
bounded_search(metadata, data, budget, all_results=data["results"])
|
|
73
|
+
assert (metadata, data) == original
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def test_delivered_floor_and_source_coordinates_remain_valid():
|
|
77
|
+
metadata, data = source_page()
|
|
78
|
+
budget = response_tokens(compact_result(metadata, data)) - 1
|
|
79
|
+
legacy = bounded_compact(metadata, data, budget, search_results=[])
|
|
80
|
+
old = json.loads(legacy.content[0].text)["data"]["results"]
|
|
81
|
+
response = bounded_search(metadata, data, budget, all_results=data["results"])
|
|
82
|
+
actual = json.loads(response.content[0].text)["data"]["results"]
|
|
83
|
+
previews = {"snippet", "snippet_start_line", "snippet_end_line", "snippet_truncated"}
|
|
84
|
+
assert len(actual) == len(old) == 1
|
|
85
|
+
for before, after in zip(old, actual, strict=True):
|
|
86
|
+
assert {k: v for k, v in before.items() if k not in previews} == {
|
|
87
|
+
k: v for k, v in after.items() if k not in previews
|
|
88
|
+
}
|
|
89
|
+
assert before["snippet"] in after["snippet"] in data["results"][0]["snippet"]
|
|
90
|
+
assert after["snippet_start_line"] == after["snippet_end_line"] == 10
|
|
91
|
+
assert response_tokens(response) <= budget
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def legacy_search(monkeypatch, metadata, data, budget, follow_up=None):
|
|
95
|
+
from attocode_intel import output
|
|
96
|
+
|
|
97
|
+
with monkeypatch.context() as patch:
|
|
98
|
+
patch.setattr(output, "_restore_search_snippets", lambda result, *args, **kwargs: result)
|
|
99
|
+
return output.bounded_search(
|
|
100
|
+
metadata, data, budget, all_results=data["results"], follow_up=follow_up
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def assert_protected_page(before, after):
|
|
105
|
+
old = json.loads(before.content[0].text)
|
|
106
|
+
new = json.loads(after.content[0].text)
|
|
107
|
+
assert len(old["data"]["results"]) == len(new["data"]["results"])
|
|
108
|
+
previews = {"snippet", "snippet_start_line", "snippet_end_line", "snippet_truncated"}
|
|
109
|
+
for previous, current in zip(old["data"]["results"], new["data"]["results"], strict=True):
|
|
110
|
+
assert {k: v for k, v in previous.items() if k not in previews} == {
|
|
111
|
+
k: v for k, v in current.items() if k not in previews
|
|
112
|
+
}
|
|
113
|
+
assert previous["snippet"] in current["snippet"]
|
|
114
|
+
if previous["snippet_start_line"] is None:
|
|
115
|
+
assert current["snippet_start_line"] is current["snippet_end_line"] is None
|
|
116
|
+
else:
|
|
117
|
+
assert current["snippet_start_line"] <= previous["snippet_start_line"]
|
|
118
|
+
assert current["snippet_end_line"] >= previous["snippet_end_line"]
|
|
119
|
+
assert {k: v for k, v in old["data"].items() if k != "results"} == {
|
|
120
|
+
k: v for k, v in new["data"].items() if k != "results"
|
|
121
|
+
}
|
|
122
|
+
assert {k: v for k, v in old["metadata"].items() if k not in {"truncated", "omitted"}} == {
|
|
123
|
+
k: v for k, v in new["metadata"].items() if k not in {"truncated", "omitted"}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def many_source_rows(count=5):
|
|
128
|
+
metadata, data = source_page()
|
|
129
|
+
row = data["results"][0]
|
|
130
|
+
data["results"] = [
|
|
131
|
+
{**deepcopy(row), "file_path": f"src/worker_{i}.py", "score": 1 - i / 100}
|
|
132
|
+
for i in range(count)
|
|
133
|
+
]
|
|
134
|
+
data["ranking"].update(candidate_pool_count=count, returned_count=count, delivered_count=count)
|
|
135
|
+
return metadata, data
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
@pytest.mark.parametrize("budget", [600, 1200, 2000, 8000])
|
|
139
|
+
def test_complete_fitted_prefix_and_continuation_are_protected(monkeypatch, budget):
|
|
140
|
+
metadata, data = many_source_rows()
|
|
141
|
+
follow = {
|
|
142
|
+
"tool": "semantic_search",
|
|
143
|
+
"arguments": {
|
|
144
|
+
"query": "needle",
|
|
145
|
+
"top_k": 10,
|
|
146
|
+
"workspace": metadata["workspace"],
|
|
147
|
+
"max_tokens": 16000,
|
|
148
|
+
},
|
|
149
|
+
"reruns_current_index": True,
|
|
150
|
+
"reason": "search_deeper",
|
|
151
|
+
}
|
|
152
|
+
before = legacy_search(monkeypatch, metadata, data, budget, follow)
|
|
153
|
+
after = bounded_search(metadata, data, budget, all_results=data["results"], follow_up=follow)
|
|
154
|
+
assert_protected_page(before, after)
|
|
155
|
+
assert response_tokens(after) <= budget
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def test_restoration_has_a_global_serialization_probe_cap(monkeypatch):
|
|
159
|
+
from attocode_intel import output
|
|
160
|
+
|
|
161
|
+
metadata, data = many_source_rows(24)
|
|
162
|
+
budget = 8000
|
|
163
|
+
before = legacy_search(monkeypatch, metadata, data, budget)
|
|
164
|
+
real_count = output.response_tokens
|
|
165
|
+
calls = []
|
|
166
|
+
|
|
167
|
+
def count(result):
|
|
168
|
+
calls.append(result)
|
|
169
|
+
return real_count(result)
|
|
170
|
+
|
|
171
|
+
monkeypatch.setattr(output, "response_tokens", count)
|
|
172
|
+
after = output._restore_search_snippets(
|
|
173
|
+
before, data["results"], budget, upstream_truncated=True
|
|
174
|
+
)
|
|
175
|
+
assert 0 < len(calls) <= 12
|
|
176
|
+
assert real_count(after) <= budget
|
|
177
|
+
assert_protected_page(before, after)
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def test_nonmonotone_probes_cannot_admit_overbudget_or_lose_text(monkeypatch):
|
|
181
|
+
from attocode_intel import output
|
|
182
|
+
|
|
183
|
+
metadata, data = source_page()
|
|
184
|
+
budget = response_tokens(compact_result(metadata, data)) - 1
|
|
185
|
+
before = legacy_search(monkeypatch, metadata, data, budget)
|
|
186
|
+
real_count = output.response_tokens
|
|
187
|
+
calls = []
|
|
188
|
+
|
|
189
|
+
def conservative_nonmonotone(result):
|
|
190
|
+
actual = real_count(result)
|
|
191
|
+
measured = max(actual, budget + 1) if len(calls) % 2 else actual
|
|
192
|
+
calls.append((actual, measured))
|
|
193
|
+
return measured
|
|
194
|
+
|
|
195
|
+
monkeypatch.setattr(output, "response_tokens", conservative_nonmonotone)
|
|
196
|
+
after = output._restore_search_snippets(
|
|
197
|
+
before, data["results"], budget, upstream_truncated=True
|
|
198
|
+
)
|
|
199
|
+
assert any(measured > actual for actual, measured in calls)
|
|
200
|
+
assert len(calls) <= 12 and real_count(after) <= budget
|
|
201
|
+
assert_protected_page(before, after)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
@pytest.mark.parametrize("upstream", [False, True])
|
|
205
|
+
@pytest.mark.parametrize("unrelated", [False, True])
|
|
206
|
+
def test_full_restoration_cleans_only_its_own_omission(upstream, unrelated):
|
|
207
|
+
from attocode_intel.output import _restore_search_snippets
|
|
208
|
+
|
|
209
|
+
metadata, data = source_page()
|
|
210
|
+
original = data["results"][0]
|
|
211
|
+
original.update(line=10, end_line=10, snippet_truncated=False)
|
|
212
|
+
rows = deepcopy(data["results"])
|
|
213
|
+
data["results"][0].update(snippet=original["snippet"][:40], snippet_truncated=True)
|
|
214
|
+
metadata["truncated"] = True
|
|
215
|
+
metadata["omitted"] = {"data.results.snippet": "shortened"}
|
|
216
|
+
if unrelated:
|
|
217
|
+
metadata["omitted"]["data.other"] = "shortened"
|
|
218
|
+
before = compact_result(metadata, data)
|
|
219
|
+
after = _restore_search_snippets(before, rows, 8000, upstream_truncated=upstream)
|
|
220
|
+
page = json.loads(after.content[0].text)
|
|
221
|
+
assert page["data"]["results"] == rows
|
|
222
|
+
assert not page["metadata"].get("omitted", {}).get("data.results.snippet")
|
|
223
|
+
assert page["metadata"]["truncated"] is (upstream or unrelated)
|
|
224
|
+
assert bool(page["metadata"].get("omitted", {}).get("data.other")) is unrelated
|
|
225
|
+
assert_protected_page(before, after)
|
|
226
|
+
assert response_tokens(after) <= 8000
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
def test_repeated_text_keeps_corresponding_source_rows():
|
|
230
|
+
from attocode_intel.output import _restore_search_snippets
|
|
231
|
+
|
|
232
|
+
metadata, data = many_source_rows(2)
|
|
233
|
+
for i, row in enumerate(data["results"]):
|
|
234
|
+
row.update(
|
|
235
|
+
file_path="src/worker.py",
|
|
236
|
+
line=10 + i * 10,
|
|
237
|
+
end_line=10 + i * 10,
|
|
238
|
+
snippet_start_line=10 + i * 10,
|
|
239
|
+
snippet_end_line=10 + i * 10,
|
|
240
|
+
snippet=row["snippet"] + f"# source marker {i}",
|
|
241
|
+
)
|
|
242
|
+
row["snippet_end_line"] += 1
|
|
243
|
+
row["end_line"] += 1
|
|
244
|
+
originals = deepcopy(data["results"])
|
|
245
|
+
for row in data["results"]:
|
|
246
|
+
row.update(snippet=row["snippet"][:32], snippet_end_line=row["snippet_start_line"])
|
|
247
|
+
before = compact_result(metadata, data)
|
|
248
|
+
after = _restore_search_snippets(before, originals, 8000, upstream_truncated=True)
|
|
249
|
+
assert json.loads(after.content[0].text)["data"]["results"] == originals
|
|
250
|
+
assert_protected_page(before, after)
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
async def test_actual_gateway_preserves_source_and_budget_after_restoration(tmp_path, monkeypatch):
|
|
254
|
+
import asyncio
|
|
255
|
+
import time
|
|
256
|
+
|
|
257
|
+
from attocode_intel.gateway import OperationGateway
|
|
258
|
+
from attocode_intel.service import CodeIntelService
|
|
259
|
+
|
|
260
|
+
monkeypatch.setenv("ATTOCODE_INTEL_RANKING_PROVIDER", "off")
|
|
261
|
+
monkeypatch.setenv("ATTOCODE_INTEL_PRECISION", "off")
|
|
262
|
+
body = 'def worker():\n needle = "' + "雪境風雷光雨山海" * 80 + '"\n return needle\n'
|
|
263
|
+
(tmp_path / "worker.py").write_text(body)
|
|
264
|
+
service = CodeIntelService(str(tmp_path))
|
|
265
|
+
manager = service._get_semantic_search()
|
|
266
|
+
manager.warm()
|
|
267
|
+
assert manager.wait_for_body_index(timeout=10)
|
|
268
|
+
gateway = OperationGateway(str(tmp_path), "daily", watch=False)
|
|
269
|
+
arguments = {"query": "needle", "top_k": 24, "max_tokens": 8000}
|
|
270
|
+
try:
|
|
271
|
+
deadline = time.monotonic() + 20
|
|
272
|
+
while True:
|
|
273
|
+
full = await gateway.execute_mcp("semantic_search", arguments)
|
|
274
|
+
assert not full.isError
|
|
275
|
+
page = json.loads(full.content[0].text)
|
|
276
|
+
if page["data"]["ranking"]["index"]["status"] == "ready":
|
|
277
|
+
break
|
|
278
|
+
assert time.monotonic() < deadline
|
|
279
|
+
await asyncio.sleep(0.05)
|
|
280
|
+
budget = response_tokens(full) - 1
|
|
281
|
+
from attocode_intel import output
|
|
282
|
+
|
|
283
|
+
with monkeypatch.context() as patch:
|
|
284
|
+
patch.setattr(output, "_restore_search_snippets", lambda result, *a, **k: result)
|
|
285
|
+
before = await gateway.execute_mcp(
|
|
286
|
+
"semantic_search", {**arguments, "max_tokens": budget}
|
|
287
|
+
)
|
|
288
|
+
after = await gateway.execute_mcp("semantic_search", {**arguments, "max_tokens": budget})
|
|
289
|
+
assert not before.isError and not after.isError
|
|
290
|
+
assert_protected_page(before, after)
|
|
291
|
+
assert response_tokens(after) <= budget
|
|
292
|
+
for hit in json.loads(after.content[0].text)["data"]["results"]:
|
|
293
|
+
assert hit["file_path"] == "worker.py"
|
|
294
|
+
lines = body.splitlines(keepends=True)
|
|
295
|
+
assert hit["snippet"] in "".join(
|
|
296
|
+
lines[hit["snippet_start_line"] - 1 : hit["snippet_end_line"]]
|
|
297
|
+
)
|
|
298
|
+
finally:
|
|
299
|
+
await gateway.close()
|
|
300
|
+
manager.close()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/broad_query_external_cases.yaml
RENAMED
|
File without changes
|
{attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/broad_query_final_holdout.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-14-workflow-pilot.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attocode_code_intel-0.1.18 → attocode_code_intel-0.1.19}/evals/designs/2026-10-16-test-intent.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|