attocode-code-intel 0.1.21__tar.gz → 0.1.23__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.23/.gitignore +59 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/PKG-INFO +26 -2
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/README.md +25 -1
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/pyproject.toml +3 -3
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/__init__.py +1 -1
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/codebase_context.py +40 -57
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/semantic_search.py +1 -3
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/systemone_ranker.py +11 -1
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/llm.py +47 -15
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/synthesis.py +5 -21
- attocode_code_intel-0.1.23/tests/fixtures/sample_project/.attocode/.gitignore +2 -0
- attocode_code_intel-0.1.23/tests/fixtures/sample_project/main.py +34 -0
- attocode_code_intel-0.1.23/tests/fixtures/sample_project/models.py +25 -0
- attocode_code_intel-0.1.23/tests/fixtures/sample_project/utils.py +26 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_capacity_experiment.py +29 -0
- attocode_code_intel-0.1.23/tests/test_discovery_ceiling.py +120 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_product.py +39 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_systemone_ranker.py +27 -4
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rule_synthesis.py +9 -15
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_mcp_bench.py +1 -1
- attocode_code_intel-0.1.23/tests/unit/integrations/utilities/__init__.py +0 -0
- attocode_code_intel-0.1.21/.gitignore +0 -88
- attocode_code_intel-0.1.21/evals/README.md +0 -377
- attocode_code_intel-0.1.21/evals/ast_restart_probe.py +0 -101
- attocode_code_intel-0.1.21/evals/body_cost_probe.py +0 -101
- attocode_code_intel-0.1.21/evals/broad_candidate_audit.yaml +0 -59
- attocode_code_intel-0.1.21/evals/broad_query_cases.yaml +0 -89
- attocode_code_intel-0.1.21/evals/broad_query_external_cases.yaml +0 -79
- attocode_code_intel-0.1.21/evals/broad_query_final_holdout.yaml +0 -78
- attocode_code_intel-0.1.21/evals/client_comparison.py +0 -151
- attocode_code_intel-0.1.21/evals/client_responses.py +0 -152
- attocode_code_intel-0.1.21/evals/codex_repair_study.py +0 -415
- attocode_code_intel-0.1.21/evals/daily.py +0 -77
- attocode_code_intel-0.1.21/evals/designs/2026-10-13-codex-repair-diagnostic.md +0 -49
- attocode_code_intel-0.1.21/evals/designs/2026-10-13-r7-task-completion-pilot.md +0 -253
- attocode_code_intel-0.1.21/evals/designs/2026-10-14-workflow-pilot.md +0 -63
- attocode_code_intel-0.1.21/evals/designs/2026-10-15-body-file-trial.md +0 -34
- attocode_code_intel-0.1.21/evals/designs/2026-10-15-body-file-validation.json +0 -427
- attocode_code_intel-0.1.21/evals/designs/2026-10-15-expansion-ablation.md +0 -33
- attocode_code_intel-0.1.21/evals/designs/2026-10-15-expansion-development.json +0 -192
- attocode_code_intel-0.1.21/evals/designs/2026-10-15-expansion-validation.json +0 -180
- attocode_code_intel-0.1.21/evals/designs/2026-10-15-fresh-navigation-queries.json +0 -90
- attocode_code_intel-0.1.21/evals/designs/2026-10-15-headroom-retrieval-questions.json +0 -859
- attocode_code_intel-0.1.21/evals/designs/2026-10-15-headroom-retrieval.md +0 -17
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-cross-file-questions.json +0 -158
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-deep-page-questions.json +0 -160
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-kotlin-test-paths.json +0 -106
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-navigation-prefix-validation.json +0 -266
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-navigation-prefix.json +0 -310
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-candidate.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-development.json +0 -208
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-freeze.json +0 -48
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-validation.json +0 -208
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/accepted.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/boundaries.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/combined.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/expansion.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/identity.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/manifest.json +0 -76
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/negation.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/owner_only.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/owners.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-confirmation-freeze.json +0 -7
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-confirmation.json +0 -206
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-development.json +0 -206
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-freeze.json +0 -348
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-validation.json +0 -206
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-usefulness-development.json +0 -285
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-usefulness-validation.json +0 -285
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-usefulness.json +0 -36
- attocode_code_intel-0.1.21/evals/designs/2026-10-16-test-intent.json +0 -210
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-change-focus-candidate.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-change-workflow-replays.json +0 -98
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-change-workflow-replays.md +0 -61
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-c2f.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-development.json +0 -409
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-freeze.json +0 -49
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-t.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-tcf.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-validation.json +0 -394
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-candidate.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-development.json +0 -328
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-freeze.json +0 -36
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-validation.json +0 -342
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-candidate.json +0 -350
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-development.json +0 -1467
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-freeze.json +0 -43
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-t2.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-t3.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-validation.json +0 -400
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-candidate.json +0 -244
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-development.json +0 -1844
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-freeze.json +0 -47
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-p.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-pf.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-validation.json +0 -410
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-candidate.json +0 -422
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-development.json +0 -2220
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-freeze.json +0 -44
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q1.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q2.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q3.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q5.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s1.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2-equivalence.json +0 -12
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2-freeze.json +0 -51
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2-validation.json +0 -536
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2.patch.gz +0 -0
- attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-validation.json +0 -558
- attocode_code_intel-0.1.21/evals/designs/2026-10-19-cpu-fn-embed-cost.json +0 -33
- attocode_code_intel-0.1.21/evals/designs/2026-10-20-clause-balance-validation.json +0 -499
- attocode_code_intel-0.1.21/evals/designs/2026-10-20-search-repair-validation.json +0 -419
- attocode_code_intel-0.1.21/evals/designs/2026-10-20-test-support-development.json +0 -294
- attocode_code_intel-0.1.21/evals/designs/2026-10-20-test-support-freeze.json +0 -32
- attocode_code_intel-0.1.21/evals/designs/2026-10-23-preview-windows.json +0 -512
- attocode_code_intel-0.1.21/evals/designs/2026-10-23-restart-fingerprints.json +0 -78
- attocode_code_intel-0.1.21/evals/discovery_reuse_probe.py +0 -63
- attocode_code_intel-0.1.21/evals/external_benchmarks.py +0 -132
- attocode_code_intel-0.1.21/evals/external_study.py +0 -409
- attocode_code_intel-0.1.21/evals/graded_blind_pack.yaml +0 -755
- attocode_code_intel-0.1.21/evals/lexical_sql_probe.py +0 -171
- attocode_code_intel-0.1.21/evals/localize_study.py +0 -743
- attocode_code_intel-0.1.21/evals/locbench_title_pack.yaml +0 -300
- attocode_code_intel-0.1.21/evals/onboarding_study.py +0 -205
- attocode_code_intel-0.1.21/evals/pilot.py +0 -206
- attocode_code_intel-0.1.21/evals/quality_scoring.py +0 -286
- attocode_code_intel-0.1.21/evals/quality_tasks.py +0 -315
- attocode_code_intel-0.1.21/evals/release_gate.py +0 -144
- attocode_code_intel-0.1.21/evals/repair_grading.py +0 -142
- attocode_code_intel-0.1.21/evals/repair_study.py +0 -513
- attocode_code_intel-0.1.21/evals/repair_worker.py +0 -442
- attocode_code_intel-0.1.21/evals/responses.py +0 -87
- attocode_code_intel-0.1.21/evals/restart_discovery_probe.py +0 -101
- attocode_code_intel-0.1.21/evals/search_evidence_audit.py +0 -297
- attocode_code_intel-0.1.21/evals/source_view_transfer.yaml +0 -58
- attocode_code_intel-0.1.21/evals/structural_write_probe.py +0 -83
- attocode_code_intel-0.1.21/evals/study.py +0 -485
- attocode_code_intel-0.1.21/evals/study_clients.py +0 -167
- attocode_code_intel-0.1.21/evals/study_events.py +0 -257
- attocode_code_intel-0.1.21/evals/study_tasks.py +0 -173
- attocode_code_intel-0.1.21/evals/token_overhead.py +0 -84
- attocode_code_intel-0.1.21/evals/understanding_scoring.py +0 -120
- attocode_code_intel-0.1.21/evals/understanding_study.py +0 -387
- attocode_code_intel-0.1.21/evals/warm_cache.py +0 -496
- attocode_code_intel-0.1.21/evals/workflows.py +0 -143
- attocode_code_intel-0.1.21/src/attocode_intel/_internal/tricks/recursive_context.py +0 -357
- attocode_code_intel-0.1.21/src/attocode_intel/_internal/types/__init__.py +0 -1
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/LICENSE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/GUIDELINES.md +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/errors/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/architecture_drift.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/ast_chunker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/ast_service.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/ast_snapshot.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/blob_oid.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/cache_manifest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/cas.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/code_analyzer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/codebase_ast.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/cross_mode.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/cross_references.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/discovery_snapshot.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/embedding_rotation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/frecency.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/fuzzy.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/hierarchical_explorer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/hydration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/index_probe.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/index_repair.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/index_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/language_registry.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/memory_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/module_resolution.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/parse_diagnostics.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/query_constraints.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/query_history.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/reranker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/syntax_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/temporal_coupling.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/trigram_index.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/trigram_regex.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/ts_parser.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/vector_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/feature_flags/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/lsp/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/lsp/client.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/mcp/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/mcp/client.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/custom_rules.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/dataflow.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/dependency_audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/matcher.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/patterns.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/scanner.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/utilities/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/utilities/ignore.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/utilities/token_estimate.py +0 -0
- {attocode_code_intel-0.1.21/src/attocode_intel/_internal/tricks → attocode_code_intel-0.1.23/src/attocode_intel/_internal/types}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/types/events.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/types/severity.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_shared.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/analysis_coverage.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/access.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/app.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/api_keys.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/context.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/jwt.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/oauth.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/passwords.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/deps.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/knowledge_bridge.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/mcp_transport.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/middleware.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/models.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/providers/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/providers/db_provider.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/providers/local_provider.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/providers/remote_provider.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/repository_source.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/_pin_helper.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/activity.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/adr.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/analysis.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/api_keys.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/auth.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/branches.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/cross_repo_search.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/files.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/files_v2.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/gc.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/git_v2.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/graph.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/graph_viz.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/health.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/history.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/jobs.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/learning.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/lsp.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/notify.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/operations.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/orgs.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/preferences.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/presence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/projects.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/repos.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/search.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/snapshots.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/webhooks.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/websocket.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/static/graph.html +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/utils.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/artifacts/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/artifacts/hashing.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/artifacts/provenance.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/artifacts/retrieval_pin.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/bug_finder.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/bundle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/catalog.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/change_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/change_investigation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/change_review.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/cli.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/community.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/jev.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/redact.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/settings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/config.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/crypto.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/db/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/db/base.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/db/engine.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/db/models.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/entrypoint.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/focused_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/freshness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/gateway.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/git/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/git/credentials.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/git/manager.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/git/models.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/git/storage.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/graph_query_parser.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/helpers.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/debouncer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/delta_indexer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/full_indexer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/incremental.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/parser.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/summarizer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/installer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/investigation_cli.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/knowledge.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/local_knowledge.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/alembic.ini +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/env.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/script.py.mako +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/001_initial_schema.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/002_branch_version_and_embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/003_embedding_uniqueness_and_cascade.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/004_audit_events.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/005_user_preferences.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/006_google_oauth.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/007_pgvector_embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/008_symbol_references.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/009_webhook_secret_encryption.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/010_add_commits_table.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/011_commit_changed_files.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/012_branch_merged_at.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/013_revoked_tokens.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/014_blame_hunks.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/015_commit_file_stats.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/016_embedding_provenance_columns.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/017_provenance_table.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/018_repo_snapshots.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/019_symref_caller.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/020_shared_knowledge.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/onboarding.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/output.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/precision.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/presence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/probe.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/project_dir.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/pubsub.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/query_ranking.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/readiness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/redis.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/reference_pages.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/remote.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/repo_ranker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/request_context.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/ci.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/combinators.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/enricher.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/evolution.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/executor.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/filters/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/filters/pipeline.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/formatter.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/hygiene.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/importers/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/importers/semgrep.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/loader.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/marketplace.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/metavar.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/model.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/_license_templates/Apache-2.0.txt +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/_license_templates/MIT.txt +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/LICENSE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/NOTICE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/PORTING.md +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B105-hardcoded-password.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B303-weak-md5.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B304-weak-des.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B307-use-of-eval.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B324-weak-sha1.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B501-no-cert-validation.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B602-shell-true.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B608-sqli.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/LICENSE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/NOTICE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/PORTING.md +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/eqeqeq.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-eval.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-implied-eval.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-new-func.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-throw-literal.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-var.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-with.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/LICENSE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/NOTICE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/PORTING.md +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G101-hardcoded-credentials.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G102-bind-all-interfaces.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G103-unsafe-block.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G201-sql-format.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G304-file-inclusion.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G401-weak-cipher.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G402-tls-min-version.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G501-md5-import.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/cpp/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/cpp/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/cpp/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/csharp/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/csharp/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/csharp/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/taint/sanitizers.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/taint/sinks.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/taint/sources.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/java/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/java/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/java/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/java/taint/sinks.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/java/taint/sources.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/kotlin/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/kotlin/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/kotlin/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/php/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/php/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/php/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/python/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/python/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/python/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/ruby/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/ruby/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/ruby/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/rust/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/rust/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/rust/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/typescript/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/typescript/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/typescript/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/pack_loader.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/plugins/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/plugins/plugin_loader.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/profiling.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/registry.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/sarif.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/testing.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/search_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/server.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/service.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/sharing.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/branch_overlay.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/content_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/dependency_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/diff_engine.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/embedding_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/provenance_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/security_scanner_db.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/symbol_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/structural_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/symbol_inspection.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/symbol_links.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/telemetry.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/test_ranking.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/testing/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/testing/fixtures.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/testing/helpers.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/testing/mocks.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/adr_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/analysis_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/composite_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/cross_mode_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/dead_code_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/distill_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/frecency_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/fuzzy_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/history_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/learning_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/lsp_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/maintenance_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/navigation_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/overlay_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/pin_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/pin_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/query_constraints_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/query_history_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/readiness_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/rule_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/search_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/snapshot_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/workers/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/workers/job_utils.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/workers/jobs.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/workers/run.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/workers/settings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/.attocode/rules/team-preferences.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/go/bad_patterns.go +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/java/BadPatterns.java +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/python/bad_patterns.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/rust/bad_patterns.rs +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/typescript/bad_patterns.ts +0 -0
- {attocode_code_intel-0.1.21/tests/integration → attocode_code_intel-0.1.23/tests/fixtures/sample_project}/__init__.py +0 -0
- {attocode_code_intel-0.1.21/tests/integration/code_intel → attocode_code_intel-0.1.23/tests/integration}/__init__.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit → attocode_code_intel-0.1.23/tests/integration/code_intel}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/code_intel/conftest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/code_intel/test_http_smoke.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/code_intel/test_mcp_tools_audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/code_intel/test_remote_mcp_http_integration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/code_intel/test_service_integration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/test_rule_bench_floor_e2e.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_ast_snapshot.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_behavioral_negation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_change_focus.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_change_investigation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_chunk_identity.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_codex_repair_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_cold_discovery.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_cold_index_cost.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_compact_inspection.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_corpus_capture.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_daily_workflows.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_db_navigation_http.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_discovery_reuse.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_doctor.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_doctor_runtime.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_edit_restart.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_experiment_dispatch.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_experiment_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_experiment_readiness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_external_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_fallback_lexical.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_file_symbol_scope.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_fixture_source_alias.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_focused_inspection.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_image_budget.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_importance_publication.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_index_probe.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_index_processes.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_index_reuse.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_index_sequences.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_kotlin_test_paths.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_language_capabilities.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_lean_profile.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_lexical_sql_cost.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_local_reranker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_local_workflow_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_localize_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_lsp_diagnostics.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_lsp_document_lifecycle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_lsp_stderr_lifecycle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_mcp_search_evaluation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_mixed_workspace.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_module_ownership.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_native_capture.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_native_experiment.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_navigation_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_navigation_prefix_trial.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_ocaml_parser_routing.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_onboarding_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_operation_contracts.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_optional_grammar_admission.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_optional_language_depth.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_parse_recovery.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_parser_thread_isolation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_pilot.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_precision_protocol.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_precision_recovery.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_preview_admission.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_preview_experiment.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_preview_sources.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_preview_windows.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_quality_cloud.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_quality_evaluation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_quality_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_quality_lifecycle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_quality_runner.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_query_ranking.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_query_requirements.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_ranking_intent.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_real_language_server.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_recovery_readiness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_release_verification.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_remote.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_repair_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_restart_experiment.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_retrieval_ablation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_retrieval_audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_retrieval_body_trial.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_retrieval_cycle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_budget_repair.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_coverage.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_coverage_scale.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_evidence_audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_usefulness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_snippet_budget.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_source_exclusions.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_structural_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_structural_write_cost.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_symbol_order.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_test_intent_trial.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_token_overhead.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_trigram_workspace.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_understanding_evaluation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_walk_order.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_warm_cache.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_workflow_sequences.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit/code_intel → attocode_code_intel-0.1.23/tests/unit}/__init__.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit/context → attocode_code_intel-0.1.23/tests/unit/code_intel}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/conftest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_advisory_lock.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_api.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_api_phase3a.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_api_v2.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_auth.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_branch_versioning.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_bug_finder.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_call_graph_tool.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_ci_runner.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cli_lifecycle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cli_maintenance_local.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cli_ops.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cli_query_commands.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cli_remote.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_codex_rereview_polish.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_combinators.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_confidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_confidence_adoption.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_config.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_config_remote.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cross_mode.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_db_security_scan.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_deps.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_diff_engine.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_edge_cases.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_frecency.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_fuzzy.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_index_store_migration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_kw_index_status.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_lsp_call_graph.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_lsp_enrichment.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_lsp_extended_models.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_marketplace.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_metavar.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_middleware.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_notify_enhanced.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_org_isolation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_pack_autoload.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_profiling.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_project_discovery.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_provenance_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_pubsub_streams.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_query_constraints.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_query_history.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_readiness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_reindex_embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_remote_local_fallback.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_remote_provider.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_remote_reliability.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_repo_ranker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rule_evolution.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rule_hygiene.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rule_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rule_violations.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rules_engine.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rules_integration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_sarif.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_search_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_server_startup.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_service.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_service_mode.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_status_health.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_structural_executor.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_supply_chain_rules.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_testing_framework.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_webhook_encryption.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/conftest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_adr_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_analysis_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_dead_code_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_distill_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_history_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_learning_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_lsp_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_maintenance_tools_phase2.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_navigation_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_phase2c_anchors_and_overlays.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_readiness_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_search_status_mismatch.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_search_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_server_tools.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit/eval → attocode_code_intel-0.1.23/tests/unit/context}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_action_hash.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_ast_service_adapter.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_blob_oid.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_cache_manifest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_cas.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_embedding_rotation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_pagerank_restoration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_provenance.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_retrieval_pin.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_vector_store_dim_safety.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit/integrations → attocode_code_intel-0.1.23/tests/unit/eval}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/conftest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_acc_at_k.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_broad_candidate_audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_calibration_demo.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_harness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_agents.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_ci.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_datasets.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_dense.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_function_bm25.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_function_dense.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_rerank.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_retrieve.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_run.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_stats.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_accuracy.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_config.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_corpus.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_evaluator.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_predicate.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_scoring.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_template_engine.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_harness_import.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_search_quality_reporting.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_search_readiness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_seed_attocode_fixtures.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit/integrations/context → attocode_code_intel-0.1.23/tests/unit/integrations}/__init__.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit/integrations/utilities → attocode_code_intel-0.1.23/tests/unit/integrations/context}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_architecture_drift.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_ast_service_hydration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_body_chunking.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_call_graph.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_code_analyzer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_codebase_ast.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_codebase_context.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_context_stores_closed.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_cross_ref_search.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_embedder_default.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_embeddings_query.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_go_symbols.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_hydration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_index_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_model_mismatch.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_path_downweight.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_query_routing.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_semantic_search.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_supported_languages.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_temporal_coupling.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_trigram_index.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_trigram_regex.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_ts_parser.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_dataflow.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_feature_flags.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_new_security_rules.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_security_autofix.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_security_matcher.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_streaming_lsp.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/utilities/test_ignore.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/utilities/test_token_estimate.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/test_code_intel.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/test_code_intel_hydration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/test_errors.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/test_memory_store.py +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
dist/
|
|
3
|
+
__pycache__/
|
|
4
|
+
.venv/
|
|
5
|
+
*.egg-info/
|
|
6
|
+
*.db
|
|
7
|
+
*.db-shm
|
|
8
|
+
*.db-wal
|
|
9
|
+
*.jsonl
|
|
10
|
+
.mypy_cache/
|
|
11
|
+
.pytest_cache/
|
|
12
|
+
.ruff_cache/
|
|
13
|
+
|
|
14
|
+
# Node
|
|
15
|
+
node_modules/
|
|
16
|
+
*.tsbuildinfo
|
|
17
|
+
|
|
18
|
+
# Environment
|
|
19
|
+
.env
|
|
20
|
+
|
|
21
|
+
# Claude/Agent
|
|
22
|
+
.claude/
|
|
23
|
+
.agent/
|
|
24
|
+
.traces/
|
|
25
|
+
.production-agent-sessions/
|
|
26
|
+
.test-sandbox/
|
|
27
|
+
|
|
28
|
+
# Attocode index, caches and private quality runs
|
|
29
|
+
/.attocode/
|
|
30
|
+
|
|
31
|
+
docs/superpowers/
|
|
32
|
+
eval/charts/
|
|
33
|
+
eval/*.md
|
|
34
|
+
eval/*.log
|
|
35
|
+
eval/*.json
|
|
36
|
+
|
|
37
|
+
# Build outputs
|
|
38
|
+
*.vsix
|
|
39
|
+
site/
|
|
40
|
+
snapshot_report.html
|
|
41
|
+
.internal
|
|
42
|
+
|
|
43
|
+
# scripts
|
|
44
|
+
scripts/*
|
|
45
|
+
!scripts/check_pack_licenses.py
|
|
46
|
+
.DS_Store
|
|
47
|
+
|
|
48
|
+
#playwright
|
|
49
|
+
.playwright-mcp
|
|
50
|
+
|
|
51
|
+
#gsd
|
|
52
|
+
.gsd/
|
|
53
|
+
.bg-shell/
|
|
54
|
+
|
|
55
|
+
#cursor
|
|
56
|
+
.cursor/
|
|
57
|
+
|
|
58
|
+
# search-quality sweep scratch output
|
|
59
|
+
eval/sweep_out/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: attocode-code-intel
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.23
|
|
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
|
|
@@ -111,6 +111,8 @@ Provides-Extra: tree-sitter-all
|
|
|
111
111
|
Requires-Dist: tree-sitter-language-pack>=0.6; extra == 'tree-sitter-all'
|
|
112
112
|
Description-Content-Type: text/markdown
|
|
113
113
|
|
|
114
|
+
<!-- mcp-name: io.github.eren23/attocode-code-intel -->
|
|
115
|
+
|
|
114
116
|
# attocode-code-intel
|
|
115
117
|
|
|
116
118
|
Local code search and navigation for coding agents and for people. It runs as an MCP server for Codex, Claude Code, Cursor and other MCP clients, and as a command in your terminal. It needs no model, no API key and no network.
|
|
@@ -135,10 +137,32 @@ that new probe. An already running client session must be checked separately.
|
|
|
135
137
|
|
|
136
138
|
For other clients (VS Code, Zed, Windsurf, Claude Desktop and more), run `attocode-code-intel install <target>`. `attocode-code-intel commands` lists the targets.
|
|
137
139
|
|
|
140
|
+
To run the server without an installation, use `uvx`. This is a configuration for any MCP client that starts a local command:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"mcpServers": {
|
|
145
|
+
"attocode-code-intel": {
|
|
146
|
+
"command": "uvx",
|
|
147
|
+
"args": ["attocode-code-intel", "--project", "/absolute/path/to/your/project"]
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
You can omit `--project` if the client sends one workspace root. Otherwise the server looks for a repository marker such as `.git` in the working folder and its parents, but never selects your home folder. If it finds no repository, it stops with an error.
|
|
154
|
+
|
|
138
155
|
To use the latest source, install from a clone of this repository: `uv tool install /path/to/attocode/packages/code-intel`.
|
|
139
156
|
|
|
140
157
|
## What your agent gets
|
|
141
158
|
|
|
159
|
+
Version 0.1.23 is listed in the official MCP Registry and documents a `uvx` quick start. The opt-in hosted rerank now accepts the dated model ID that OpenRouter returns; see [Hosted rerank](https://github.com/eren23/attocode/blob/main/docs/intelligence-search.md#hosted-rerank-experimental). Rerank stays off by default.
|
|
160
|
+
|
|
161
|
+
Version 0.1.22 adds an opt-in discovery budget of up to 100,000 files
|
|
162
|
+
(`ATTOCODE_INTEL_DISCOVERY_MAX_FILES`; the default stays 50,000). It also packages
|
|
163
|
+
the LLM client, so `ATTOCODE_FLAG_CONFIDENCE=llm` and LLM rule synthesis work from
|
|
164
|
+
a PyPI install when an OpenRouter or Anthropic key is set.
|
|
165
|
+
|
|
142
166
|
Version 0.1.21 includes configured search-discovery coverage, OCaml interface
|
|
143
167
|
parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native
|
|
144
168
|
budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
|
|
@@ -233,7 +257,7 @@ failed the frozen protocol. It provides no quality, cost or time benefit evidenc
|
|
|
233
257
|
|
|
234
258
|
- **First search.** The first tool call starts the index build. A search waits up to 15 seconds for the index. On a large repository, a search can report that the index is warming. Then search again. An empty result during warm-up does not prove that the code is absent.
|
|
235
259
|
- **Index location.** The index is in `.attocode/` in your project. When the server makes that folder, it adds a `.gitignore`, so the index stays out of commits.
|
|
236
|
-
- **What the index reads.**
|
|
260
|
+
- **What the index reads.** By default the server discovers at most 50,000 eligible files and skips files over 1 MB. From 0.1.22, the [discovery budget setting](https://github.com/eren23/attocode/blob/main/docs/intelligence-discovery.md) allows an explicit limit up to 100,000; the selected index can be smaller under its independent file limit. It skips files that `.gitignore` ignores, and folders that start with a dot. It also skips folders named `dist`, `build`, `out`, `output`, `target`, `env`, `tmp`, `vendor` or `coverage`, and binary, media and lock files. If a build-named folder contains real source, explicitly re-include it with a root `.gitignore` entry such as `!dist/`; discovery and edit refresh honor that override.
|
|
237
261
|
- **Languages.** The base install parses Bash, C, C#, C++, CSS, Elixir, Go, HCL, HTML, Java, JavaScript, JSON, Kotlin, Lua, PHP, Python, Ruby, Rust, Scala, Swift, TOML, TypeScript, YAML and Zig. Optional grammars are loaded only when already installed or cached; installing the `tree-sitter-all` extra does not trigger grammar downloads during navigation. A slow grammar falls back after a 100 ms parse budget. Static imports and references are partial evidence, not compiler/type resolution.
|
|
238
262
|
- **Degraded parsing (development builds).** Selecting a missing definition in
|
|
239
263
|
a file with a recorded native parse failure permits one bounded retry for
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- mcp-name: io.github.eren23/attocode-code-intel -->
|
|
2
|
+
|
|
1
3
|
# attocode-code-intel
|
|
2
4
|
|
|
3
5
|
Local code search and navigation for coding agents and for people. It runs as an MCP server for Codex, Claude Code, Cursor and other MCP clients, and as a command in your terminal. It needs no model, no API key and no network.
|
|
@@ -22,10 +24,32 @@ that new probe. An already running client session must be checked separately.
|
|
|
22
24
|
|
|
23
25
|
For other clients (VS Code, Zed, Windsurf, Claude Desktop and more), run `attocode-code-intel install <target>`. `attocode-code-intel commands` lists the targets.
|
|
24
26
|
|
|
27
|
+
To run the server without an installation, use `uvx`. This is a configuration for any MCP client that starts a local command:
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"mcpServers": {
|
|
32
|
+
"attocode-code-intel": {
|
|
33
|
+
"command": "uvx",
|
|
34
|
+
"args": ["attocode-code-intel", "--project", "/absolute/path/to/your/project"]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
You can omit `--project` if the client sends one workspace root. Otherwise the server looks for a repository marker such as `.git` in the working folder and its parents, but never selects your home folder. If it finds no repository, it stops with an error.
|
|
41
|
+
|
|
25
42
|
To use the latest source, install from a clone of this repository: `uv tool install /path/to/attocode/packages/code-intel`.
|
|
26
43
|
|
|
27
44
|
## What your agent gets
|
|
28
45
|
|
|
46
|
+
Version 0.1.23 is listed in the official MCP Registry and documents a `uvx` quick start. The opt-in hosted rerank now accepts the dated model ID that OpenRouter returns; see [Hosted rerank](https://github.com/eren23/attocode/blob/main/docs/intelligence-search.md#hosted-rerank-experimental). Rerank stays off by default.
|
|
47
|
+
|
|
48
|
+
Version 0.1.22 adds an opt-in discovery budget of up to 100,000 files
|
|
49
|
+
(`ATTOCODE_INTEL_DISCOVERY_MAX_FILES`; the default stays 50,000). It also packages
|
|
50
|
+
the LLM client, so `ATTOCODE_FLAG_CONFIDENCE=llm` and LLM rule synthesis work from
|
|
51
|
+
a PyPI install when an OpenRouter or Anthropic key is set.
|
|
52
|
+
|
|
29
53
|
Version 0.1.21 includes configured search-discovery coverage, OCaml interface
|
|
30
54
|
parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native
|
|
31
55
|
budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
|
|
@@ -120,7 +144,7 @@ failed the frozen protocol. It provides no quality, cost or time benefit evidenc
|
|
|
120
144
|
|
|
121
145
|
- **First search.** The first tool call starts the index build. A search waits up to 15 seconds for the index. On a large repository, a search can report that the index is warming. Then search again. An empty result during warm-up does not prove that the code is absent.
|
|
122
146
|
- **Index location.** The index is in `.attocode/` in your project. When the server makes that folder, it adds a `.gitignore`, so the index stays out of commits.
|
|
123
|
-
- **What the index reads.**
|
|
147
|
+
- **What the index reads.** By default the server discovers at most 50,000 eligible files and skips files over 1 MB. From 0.1.22, the [discovery budget setting](https://github.com/eren23/attocode/blob/main/docs/intelligence-discovery.md) allows an explicit limit up to 100,000; the selected index can be smaller under its independent file limit. It skips files that `.gitignore` ignores, and folders that start with a dot. It also skips folders named `dist`, `build`, `out`, `output`, `target`, `env`, `tmp`, `vendor` or `coverage`, and binary, media and lock files. If a build-named folder contains real source, explicitly re-include it with a root `.gitignore` entry such as `!dist/`; discovery and edit refresh honor that override.
|
|
124
148
|
- **Languages.** The base install parses Bash, C, C#, C++, CSS, Elixir, Go, HCL, HTML, Java, JavaScript, JSON, Kotlin, Lua, PHP, Python, Ruby, Rust, Scala, Swift, TOML, TypeScript, YAML and Zig. Optional grammars are loaded only when already installed or cached; installing the `tree-sitter-all` extra does not trigger grammar downloads during navigation. A slow grammar falls back after a 100 ms parse budget. Static imports and references are partial evidence, not compiler/type resolution.
|
|
125
149
|
- **Degraded parsing (development builds).** Selecting a missing definition in
|
|
126
150
|
a file with a recorded native parse failure permits one bounded retry for
|
|
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "attocode-code-intel"
|
|
9
|
-
version = "0.1.
|
|
9
|
+
version = "0.1.23"
|
|
10
10
|
description = "Local code search and navigation for coding agents and people"
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
requires-python = ">=3.12"
|
|
@@ -142,8 +142,8 @@ packages = [
|
|
|
142
142
|
]
|
|
143
143
|
|
|
144
144
|
[tool.hatch.build.targets.sdist]
|
|
145
|
-
# Frozen
|
|
146
|
-
exclude = ["/evals/
|
|
145
|
+
# Frozen study designs and results remain available in the tagged Git repository.
|
|
146
|
+
exclude = ["/evals/"]
|
|
147
147
|
|
|
148
148
|
[tool.pytest.ini_options]
|
|
149
149
|
asyncio_mode = "auto"
|
|
@@ -821,6 +821,27 @@ def build_dependency_graph(
|
|
|
821
821
|
return graph
|
|
822
822
|
|
|
823
823
|
|
|
824
|
+
_DISCOVERY_ENV = "ATTOCODE_INTEL_DISCOVERY_MAX_FILES"
|
|
825
|
+
_DEFAULT_DISCOVERY_MAX_FILES = 50_000
|
|
826
|
+
_HARD_DISCOVERY_MAX_FILES = 100_000
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
def _validate_discovery_max_files(value: int) -> int:
|
|
830
|
+
if type(value) is not int or not 1 <= value <= _HARD_DISCOVERY_MAX_FILES:
|
|
831
|
+
raise ValueError(f"discovery_max_files must be an integer from 1 to {_HARD_DISCOVERY_MAX_FILES}")
|
|
832
|
+
return value
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
def _discovery_max_files_from_env() -> int:
|
|
836
|
+
raw = os.environ.get(_DISCOVERY_ENV)
|
|
837
|
+
if raw is None:
|
|
838
|
+
return _DEFAULT_DISCOVERY_MAX_FILES
|
|
839
|
+
try:
|
|
840
|
+
return _validate_discovery_max_files(int(raw))
|
|
841
|
+
except ValueError as exc:
|
|
842
|
+
raise ValueError(f"{_DISCOVERY_ENV} must be an integer from 1 to {_HARD_DISCOVERY_MAX_FILES}") from exc
|
|
843
|
+
|
|
844
|
+
|
|
824
845
|
@dataclass
|
|
825
846
|
class CodebaseContextManager:
|
|
826
847
|
"""Manages codebase context for intelligent code understanding.
|
|
@@ -853,6 +874,12 @@ class CodebaseContextManager:
|
|
|
853
874
|
_ignored_checkout_dirs_capped: bool = field(default=False, repr=False)
|
|
854
875
|
cancelled: Callable[[], bool] | None = field(default=None, repr=False, compare=False)
|
|
855
876
|
_discovery_snapshot: Any = field(default=None, repr=False, compare=False)
|
|
877
|
+
# Separate from max_files, which caps selection after importance scoring.
|
|
878
|
+
# Capture the environment per instance; preserve existing positional fields.
|
|
879
|
+
discovery_max_files: int = field(default_factory=_discovery_max_files_from_env, kw_only=True)
|
|
880
|
+
|
|
881
|
+
def __post_init__(self) -> None:
|
|
882
|
+
_validate_discovery_max_files(self.discovery_max_files)
|
|
856
883
|
|
|
857
884
|
def _check_cancelled(self) -> None:
|
|
858
885
|
if self.cancelled is not None and self.cancelled():
|
|
@@ -906,7 +933,8 @@ class CodebaseContextManager:
|
|
|
906
933
|
directory/file and the ignore-file identity must still match. A failed
|
|
907
934
|
validation leaves this context empty so its normal fresh discovery runs.
|
|
908
935
|
"""
|
|
909
|
-
|
|
936
|
+
scan_limit = _validate_discovery_max_files(self.discovery_max_files)
|
|
937
|
+
if snapshot is None or len(snapshot.files) > scan_limit or not snapshot.valid_for(self):
|
|
910
938
|
return False
|
|
911
939
|
files = [FileInfo(*row) for row in snapshot.files]
|
|
912
940
|
cap = _compute_dynamic_cap(files, self.max_files)
|
|
@@ -927,6 +955,7 @@ class CodebaseContextManager:
|
|
|
927
955
|
Returns:
|
|
928
956
|
List of FileInfo objects for discovered files.
|
|
929
957
|
"""
|
|
958
|
+
scan_limit = _validate_discovery_max_files(self.discovery_max_files)
|
|
930
959
|
root = Path(self.root_dir)
|
|
931
960
|
resolved_root = root.resolve()
|
|
932
961
|
from attocode_intel._internal.integrations.context.discovery_snapshot import (
|
|
@@ -962,7 +991,7 @@ class CodebaseContextManager:
|
|
|
962
991
|
guard(root / ".gitignore", missing_ok=True)
|
|
963
992
|
ignore = IgnoreManager(root, default_dirs=self.ignore_patterns)
|
|
964
993
|
files: list[FileInfo] = []
|
|
965
|
-
|
|
994
|
+
scan_truncated = False
|
|
966
995
|
self._ignored_checkout_dirs = []
|
|
967
996
|
self._ignored_checkout_dirs_capped = False
|
|
968
997
|
|
|
@@ -1028,6 +1057,12 @@ class CodebaseContextManager:
|
|
|
1028
1057
|
if size > 1_000_000: # 1MB
|
|
1029
1058
|
continue
|
|
1030
1059
|
|
|
1060
|
+
# One further eligible file proves overflow. Excluded files do
|
|
1061
|
+
# not, and no descriptor/content is allocated for this lookahead.
|
|
1062
|
+
if len(files) >= scan_limit:
|
|
1063
|
+
scan_truncated = True
|
|
1064
|
+
break
|
|
1065
|
+
|
|
1031
1066
|
is_test = any(p in rel_path.lower() for p in TEST_PATTERNS)
|
|
1032
1067
|
is_config = any(p in rel_path.lower() for p in CONFIG_PATTERNS)
|
|
1033
1068
|
|
|
@@ -1050,10 +1085,7 @@ class CodebaseContextManager:
|
|
|
1050
1085
|
line_count=line_count,
|
|
1051
1086
|
))
|
|
1052
1087
|
|
|
1053
|
-
|
|
1054
|
-
break
|
|
1055
|
-
|
|
1056
|
-
if len(files) >= _SAFETY_CEILING:
|
|
1088
|
+
if scan_truncated:
|
|
1057
1089
|
break
|
|
1058
1090
|
|
|
1059
1091
|
# Score importance
|
|
@@ -1084,14 +1116,14 @@ class CodebaseContextManager:
|
|
|
1084
1116
|
# Truncate to dynamic cap AFTER scoring (smart truncation)
|
|
1085
1117
|
cap = _compute_dynamic_cap(files, self.max_files)
|
|
1086
1118
|
self.discovered_file_count = len(files)
|
|
1087
|
-
self.discovery_truncated = len(files) > cap
|
|
1119
|
+
self.discovery_truncated = scan_truncated or len(files) > cap
|
|
1088
1120
|
if len(files) > cap:
|
|
1089
1121
|
files = files[:cap]
|
|
1090
1122
|
|
|
1091
1123
|
self._files = files
|
|
1092
1124
|
self.refresh_excluded_checkout_roots()
|
|
1093
1125
|
self._last_refresh_time = time.monotonic()
|
|
1094
|
-
if snapshot_safe and not self.discovery_truncated and self.discovered_file_count <
|
|
1126
|
+
if snapshot_safe and not self.discovery_truncated and self.discovered_file_count < scan_limit:
|
|
1095
1127
|
self._discovery_snapshot = DiscoverySnapshot(
|
|
1096
1128
|
os.path.abspath(self.root_dir), frozenset(self.ignore_patterns),
|
|
1097
1129
|
self._last_refresh_time,
|
|
@@ -1375,55 +1407,6 @@ class CodebaseContextManager:
|
|
|
1375
1407
|
|
|
1376
1408
|
return result
|
|
1377
1409
|
|
|
1378
|
-
# --- Recursive context retrieval ---
|
|
1379
|
-
|
|
1380
|
-
def get_recursive_context(
|
|
1381
|
-
self,
|
|
1382
|
-
seed_files: list[str],
|
|
1383
|
-
token_budget: int = 20_000,
|
|
1384
|
-
max_depth: int = 3,
|
|
1385
|
-
max_files: int = 15,
|
|
1386
|
-
) -> str:
|
|
1387
|
-
"""Gather context by recursively following imports from seed files.
|
|
1388
|
-
|
|
1389
|
-
Uses the RecursiveContextRetriever to mechanically follow Python/JS
|
|
1390
|
-
imports starting from seed files, gathering content up to a depth
|
|
1391
|
-
and token budget. Zero LLM cost.
|
|
1392
|
-
|
|
1393
|
-
Args:
|
|
1394
|
-
seed_files: Files to start traversal from.
|
|
1395
|
-
token_budget: Maximum tokens to gather.
|
|
1396
|
-
max_depth: Maximum import-following depth.
|
|
1397
|
-
max_files: Maximum files to visit.
|
|
1398
|
-
|
|
1399
|
-
Returns:
|
|
1400
|
-
Combined content from all gathered files.
|
|
1401
|
-
"""
|
|
1402
|
-
from attocode_intel._internal.tricks.recursive_context import RecursiveContextRetriever
|
|
1403
|
-
|
|
1404
|
-
class _FileProvider:
|
|
1405
|
-
def __init__(self, root: str) -> None:
|
|
1406
|
-
self._root = os.path.realpath(root)
|
|
1407
|
-
|
|
1408
|
-
def get_content(self, path: str) -> str | None:
|
|
1409
|
-
candidate = os.path.normpath(os.path.join(self._root, path))
|
|
1410
|
-
if not candidate.startswith(self._root):
|
|
1411
|
-
return None # Path traversal rejected
|
|
1412
|
-
try:
|
|
1413
|
-
with open(candidate, encoding="utf-8", errors="replace") as f:
|
|
1414
|
-
return f.read()
|
|
1415
|
-
except (OSError, UnicodeDecodeError):
|
|
1416
|
-
return None
|
|
1417
|
-
|
|
1418
|
-
retriever = RecursiveContextRetriever(
|
|
1419
|
-
_FileProvider(self.root_dir),
|
|
1420
|
-
max_depth=max_depth,
|
|
1421
|
-
token_budget=token_budget,
|
|
1422
|
-
max_files=max_files,
|
|
1423
|
-
)
|
|
1424
|
-
result = retriever.retrieve(seed_files)
|
|
1425
|
-
return result.content
|
|
1426
|
-
|
|
1427
1410
|
# --- Incremental update API ---
|
|
1428
1411
|
|
|
1429
1412
|
def mark_file_dirty(self, file_path: str) -> None:
|
|
@@ -2598,9 +2598,7 @@ class SemanticSearchManager:
|
|
|
2598
2598
|
"discovery_max_files": discovery_limit,
|
|
2599
2599
|
"discovery_discovered_files": discovered,
|
|
2600
2600
|
"discovery_selected_files": selected,
|
|
2601
|
-
|
|
2602
|
-
# lower bounds, even when the later composition cap keeps them all.
|
|
2603
|
-
"discovery_truncated": bool(getattr(ctx, "discovery_truncated", False)) or discovered >= 50_000,
|
|
2601
|
+
"discovery_truncated": bool(getattr(ctx, "discovery_truncated", False)),
|
|
2604
2602
|
})
|
|
2605
2603
|
self._kw_index_built = True
|
|
2606
2604
|
|
|
@@ -214,7 +214,17 @@ class SystemOneChoiceReranker:
|
|
|
214
214
|
def predict() -> None:
|
|
215
215
|
try:
|
|
216
216
|
response = self._post(body, headers)
|
|
217
|
-
|
|
217
|
+
# Hosted routers answer with a dated snapshot of the pinned model,
|
|
218
|
+
# for example typesafe/jev-1.13-20260917 for typesafe/jev-1.13.
|
|
219
|
+
returned = response.get("model")
|
|
220
|
+
if (
|
|
221
|
+
self.model
|
|
222
|
+
and returned is not None
|
|
223
|
+
and not (
|
|
224
|
+
isinstance(returned, str)
|
|
225
|
+
and re.fullmatch(re.escape(self.model) + r"(?:-\d{8})?", returned)
|
|
226
|
+
)
|
|
227
|
+
):
|
|
218
228
|
raise ValueError("unexpected ranking model")
|
|
219
229
|
output.append(("ok", self._scores(response, len(bounded))))
|
|
220
230
|
except ValueError:
|
{attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/llm.py
RENAMED
|
@@ -36,16 +36,50 @@ _ANTHROPIC_MODEL = "claude-haiku-4-5-20251001"
|
|
|
36
36
|
_WORKERS = 32
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
def
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
39
|
+
def call_llm(prompt: str, model: str = "", max_tokens: int = 4096) -> str:
|
|
40
|
+
"""Send one prompt through OpenRouter or Anthropic and return the text.
|
|
41
|
+
|
|
42
|
+
OpenRouter is used when ``OPENROUTER_API_KEY`` is set, otherwise
|
|
43
|
+
``ANTHROPIC_API_KEY``. The SDKs are optional and imported on demand.
|
|
44
|
+
"""
|
|
45
|
+
import os
|
|
46
|
+
|
|
47
|
+
or_key = os.environ.get("OPENROUTER_API_KEY", "")
|
|
48
|
+
anthropic_key = os.environ.get("ANTHROPIC_API_KEY", "")
|
|
49
|
+
|
|
50
|
+
if or_key:
|
|
51
|
+
import openai
|
|
52
|
+
|
|
53
|
+
client = openai.OpenAI(base_url="https://openrouter.ai/api/v1", api_key=or_key)
|
|
54
|
+
response = client.chat.completions.create(
|
|
55
|
+
model=model or "anthropic/claude-sonnet-5",
|
|
56
|
+
max_tokens=max_tokens,
|
|
57
|
+
messages=[{"role": "user", "content": prompt}],
|
|
58
|
+
)
|
|
59
|
+
return response.choices[0].message.content or ""
|
|
60
|
+
|
|
61
|
+
if anthropic_key:
|
|
62
|
+
import anthropic
|
|
48
63
|
|
|
64
|
+
model = model or "claude-sonnet-5"
|
|
65
|
+
# Sonnet 5 and Opus 5 think when `thinking` is omitted; keep thinking off.
|
|
66
|
+
extra = {"thinking": {"type": "disabled"}} if model in ("claude-sonnet-5", "claude-opus-5") else {}
|
|
67
|
+
response = anthropic.Anthropic(api_key=anthropic_key).messages.create(
|
|
68
|
+
model=model,
|
|
69
|
+
max_tokens=max_tokens,
|
|
70
|
+
messages=[{"role": "user", "content": prompt}],
|
|
71
|
+
**extra,
|
|
72
|
+
)
|
|
73
|
+
# Thinking blocks can come first, so read the first text block.
|
|
74
|
+
return next((b.text for b in response.content if b.type == "text"), "")
|
|
75
|
+
|
|
76
|
+
raise RuntimeError(
|
|
77
|
+
"No API key found. Set OPENROUTER_API_KEY or ANTHROPIC_API_KEY "
|
|
78
|
+
"in environment or .env file."
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def _default_llm_caller() -> LLMCaller:
|
|
49
83
|
def call(prompt: str, model: str, max_tokens: int) -> str:
|
|
50
84
|
return call_llm(prompt, model=model, max_tokens=max_tokens)
|
|
51
85
|
|
|
@@ -53,12 +87,10 @@ def _default_llm_caller() -> LLMCaller:
|
|
|
53
87
|
|
|
54
88
|
|
|
55
89
|
def _load_env() -> None:
|
|
56
|
-
"""Populate keys from
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return
|
|
61
|
-
load_env()
|
|
90
|
+
"""Populate keys from .env and ~/.jev/env (same loader as the jev scorer)."""
|
|
91
|
+
from attocode_intel.confidence.jev import _load_env as load
|
|
92
|
+
|
|
93
|
+
load()
|
|
62
94
|
|
|
63
95
|
|
|
64
96
|
def _cheap_model() -> str:
|
{attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/synthesis.py
RENAMED
|
@@ -307,27 +307,11 @@ def _validate_llm_yaml(
|
|
|
307
307
|
|
|
308
308
|
|
|
309
309
|
def _default_llm_caller(prompt: str) -> str:
|
|
310
|
-
"""
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
tree, which isn't bundled with the installed wheel. When that path
|
|
316
|
-
is unavailable we surface a clear error so the synthesizer's
|
|
317
|
-
``except`` arm can attach it as a diagnostic, instead of letting an
|
|
318
|
-
opaque ``ModuleNotFoundError`` bubble out of the MCP tool.
|
|
319
|
-
"""
|
|
320
|
-
try:
|
|
321
|
-
from eval.meta_harness._llm_client import call_llm, load_env
|
|
322
|
-
except ModuleNotFoundError as exc:
|
|
323
|
-
raise RuntimeError(
|
|
324
|
-
"LLM synthesis requested but no llm_caller was configured "
|
|
325
|
-
"and the dev meta-harness client is not importable from this "
|
|
326
|
-
"process. Pass llm_caller=... explicitly when calling "
|
|
327
|
-
"synthesize_rule(mode='llm' or 'auto') from production."
|
|
328
|
-
) from exc
|
|
329
|
-
|
|
330
|
-
load_env()
|
|
310
|
+
"""Call the packaged LLM client. A missing key or SDK raises, and the
|
|
311
|
+
synthesizer's ``except`` arm reports it as a diagnostic."""
|
|
312
|
+
from attocode_intel.confidence.llm import _load_env, call_llm
|
|
313
|
+
|
|
314
|
+
_load_env()
|
|
331
315
|
return call_llm(prompt, max_tokens=2048)
|
|
332
316
|
|
|
333
317
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""Sample application entry point for integration tests."""
|
|
2
|
+
|
|
3
|
+
from utils import parse_config, validate_input
|
|
4
|
+
from models import User, Config
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class App:
|
|
8
|
+
"""Main application class."""
|
|
9
|
+
|
|
10
|
+
def __init__(self, config: Config) -> None:
|
|
11
|
+
self.config = config
|
|
12
|
+
self.users: list[User] = []
|
|
13
|
+
|
|
14
|
+
def add_user(self, name: str, email: str) -> User:
|
|
15
|
+
"""Create and register a new user."""
|
|
16
|
+
validate_input(name)
|
|
17
|
+
user = User(name=name, email=email)
|
|
18
|
+
self.users.append(user)
|
|
19
|
+
return user
|
|
20
|
+
|
|
21
|
+
def run(self) -> None:
|
|
22
|
+
"""Start the application."""
|
|
23
|
+
settings = parse_config(self.config.path)
|
|
24
|
+
print(f"Running with {len(settings)} settings")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def main() -> None:
|
|
28
|
+
config = Config(path="config.yaml", debug=True)
|
|
29
|
+
app = App(config)
|
|
30
|
+
app.run()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
if __name__ == "__main__":
|
|
34
|
+
main()
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""Data models for the sample project."""
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@dataclass
|
|
7
|
+
class User:
|
|
8
|
+
"""Represents an application user."""
|
|
9
|
+
|
|
10
|
+
name: str
|
|
11
|
+
email: str
|
|
12
|
+
active: bool = True
|
|
13
|
+
|
|
14
|
+
def deactivate(self) -> None:
|
|
15
|
+
self.active = False
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@dataclass
|
|
19
|
+
class Config:
|
|
20
|
+
"""Application configuration."""
|
|
21
|
+
|
|
22
|
+
path: str
|
|
23
|
+
debug: bool = False
|
|
24
|
+
max_retries: int = 3
|
|
25
|
+
tags: list[str] = field(default_factory=list)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""Utility functions for the sample project."""
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import json
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def parse_config(path: str) -> dict:
|
|
8
|
+
"""Parse a configuration file and return settings."""
|
|
9
|
+
if not os.path.exists(path):
|
|
10
|
+
return {"default": True}
|
|
11
|
+
with open(path) as f:
|
|
12
|
+
return json.load(f)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def validate_input(value: str) -> bool:
|
|
16
|
+
"""Validate that input is non-empty and reasonable length."""
|
|
17
|
+
if not value or not value.strip():
|
|
18
|
+
raise ValueError("Input cannot be empty")
|
|
19
|
+
if len(value) > 255:
|
|
20
|
+
raise ValueError("Input too long")
|
|
21
|
+
return True
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def format_output(data: dict) -> str:
|
|
25
|
+
"""Format data dictionary as a readable string."""
|
|
26
|
+
return "\n".join(f"{k}: {v}" for k, v in sorted(data.items()))
|
|
@@ -41,3 +41,32 @@ async def test_capacity_phase_validates_actual_delivered_search_sources(tmp_path
|
|
|
41
41
|
source_rows = [row for value in validations for row in value if row.get('kind') == 'source']
|
|
42
42
|
assert len(source_rows) >= 3
|
|
43
43
|
assert any(row.get('policy', {}).get('producer') for row in source_rows)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
async def test_capacity_phase_expands_same_persisted_index_under_new_scan_policy(tmp_path, monkeypatch):
|
|
47
|
+
monkeypatch.setenv('ATTOCODE_INTEL_MAX_FILES', '100000')
|
|
48
|
+
monkeypatch.setenv('ATTOCODE_INTEL_RANKING_PROVIDER', 'off')
|
|
49
|
+
tree = tmp_path / 'project'
|
|
50
|
+
generate(tree, 3)
|
|
51
|
+
previous = None
|
|
52
|
+
for name, budget, selected, truncated in [('default', '2', 2, True),
|
|
53
|
+
('expanded', '3', 3, False),
|
|
54
|
+
('restart', '3', 3, False)]:
|
|
55
|
+
monkeypatch.setenv('ATTOCODE_INTEL_DISCOVERY_MAX_FILES', budget)
|
|
56
|
+
output = tmp_path / name
|
|
57
|
+
spec = {'tree': str(tree), 'size': 3, 'phase': name, 'seconds': 40,
|
|
58
|
+
'discovery_env': budget, 'expected_selected': selected,
|
|
59
|
+
'expected_truncated': truncated,
|
|
60
|
+
'expected_outcome': 'limited' if truncated else 'passed',
|
|
61
|
+
'persisted_before': previous is not None}
|
|
62
|
+
result = await phase(spec, output)
|
|
63
|
+
assert result['complete'] and result['closed']
|
|
64
|
+
assert result['expected_selected_files'] == selected
|
|
65
|
+
assert result['discovery_truncated'] is truncated
|
|
66
|
+
assert result['discovery_env'] == budget and result['outcome'] == spec['expected_outcome']
|
|
67
|
+
if previous is not None:
|
|
68
|
+
assert result['databases_before'] == previous['databases_after']
|
|
69
|
+
identities = json.loads((output / 'candidate-identities.json').read_bytes())
|
|
70
|
+
expected = [f'module_{n:06d}.py' for n in range(selected)]
|
|
71
|
+
assert identities['keyword_paths'] == identities['body_paths'] == expected
|
|
72
|
+
previous = result
|