attocode-code-intel 0.1.21__tar.gz → 0.1.22__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.22/.gitignore +59 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/PKG-INFO +7 -2
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/README.md +6 -1
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/pyproject.toml +3 -3
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/__init__.py +1 -1
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/codebase_context.py +40 -57
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/semantic_search.py +1 -3
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/confidence/llm.py +47 -15
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/synthesis.py +5 -21
- attocode_code_intel-0.1.22/tests/fixtures/sample_project/.attocode/.gitignore +2 -0
- attocode_code_intel-0.1.22/tests/fixtures/sample_project/main.py +34 -0
- attocode_code_intel-0.1.22/tests/fixtures/sample_project/models.py +25 -0
- attocode_code_intel-0.1.22/tests/fixtures/sample_project/utils.py +26 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_capacity_experiment.py +29 -0
- attocode_code_intel-0.1.22/tests/test_discovery_ceiling.py +120 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_product.py +19 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rule_synthesis.py +9 -15
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_mcp_bench.py +1 -1
- attocode_code_intel-0.1.22/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.22}/LICENSE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/GUIDELINES.md +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/errors/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/architecture_drift.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/ast_chunker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/ast_service.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/ast_snapshot.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/blob_oid.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/cache_manifest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/cas.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/code_analyzer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/codebase_ast.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/cross_mode.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/cross_references.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/discovery_snapshot.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/embedding_rotation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/frecency.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/fuzzy.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/hierarchical_explorer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/hydration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/index_probe.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/index_repair.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/index_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/language_registry.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/memory_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/module_resolution.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/parse_diagnostics.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/query_constraints.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/query_history.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/reranker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/syntax_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/systemone_ranker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/temporal_coupling.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/trigram_index.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/trigram_regex.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/ts_parser.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/vector_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/feature_flags/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/lsp/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/lsp/client.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/mcp/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/mcp/client.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/custom_rules.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/dataflow.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/dependency_audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/matcher.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/patterns.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/scanner.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/utilities/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/utilities/ignore.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/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.22/src/attocode_intel/_internal/types}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/types/events.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/types/severity.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_shared.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/analysis_coverage.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/access.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/app.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/api_keys.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/context.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/jwt.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/oauth.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/passwords.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/deps.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/knowledge_bridge.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/mcp_transport.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/middleware.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/models.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/providers/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/providers/db_provider.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/providers/local_provider.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/providers/remote_provider.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/repository_source.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/_pin_helper.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/activity.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/adr.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/analysis.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/api_keys.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/auth.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/branches.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/cross_repo_search.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/files.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/files_v2.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/gc.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/git_v2.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/graph.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/graph_viz.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/health.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/history.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/jobs.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/learning.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/lsp.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/notify.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/operations.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/orgs.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/preferences.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/presence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/projects.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/repos.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/search.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/snapshots.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/webhooks.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/websocket.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/static/graph.html +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/utils.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/artifacts/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/artifacts/hashing.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/artifacts/provenance.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/artifacts/retrieval_pin.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/bug_finder.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/bundle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/catalog.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/change_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/change_investigation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/change_review.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/cli.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/community.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/confidence/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/confidence/jev.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/confidence/redact.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/confidence/settings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/config.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/crypto.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/db/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/db/base.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/db/engine.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/db/models.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/entrypoint.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/focused_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/freshness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/gateway.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/git/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/git/credentials.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/git/manager.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/git/models.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/git/storage.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/graph_query_parser.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/helpers.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/debouncer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/delta_indexer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/full_indexer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/incremental.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/parser.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/summarizer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/installer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/investigation_cli.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/knowledge.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/local_knowledge.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/alembic.ini +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/env.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/script.py.mako +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/001_initial_schema.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/002_branch_version_and_embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/003_embedding_uniqueness_and_cascade.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/004_audit_events.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/005_user_preferences.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/006_google_oauth.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/007_pgvector_embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/008_symbol_references.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/009_webhook_secret_encryption.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/010_add_commits_table.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/011_commit_changed_files.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/012_branch_merged_at.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/013_revoked_tokens.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/014_blame_hunks.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/015_commit_file_stats.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/016_embedding_provenance_columns.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/017_provenance_table.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/018_repo_snapshots.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/019_symref_caller.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/020_shared_knowledge.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/onboarding.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/output.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/precision.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/presence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/probe.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/project_dir.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/pubsub.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/query_ranking.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/readiness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/redis.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/reference_pages.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/remote.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/repo_ranker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/request_context.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/ci.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/combinators.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/enricher.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/evolution.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/executor.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/filters/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/filters/pipeline.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/formatter.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/hygiene.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/importers/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/importers/semgrep.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/loader.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/marketplace.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/metavar.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/model.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/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.22}/src/attocode_intel/rules/packs/community/_license_templates/MIT.txt +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/bandit-python/LICENSE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/bandit-python/NOTICE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/bandit-python/PORTING.md +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/bandit-python/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/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.22}/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.22}/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.22}/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.22}/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.22}/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.22}/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.22}/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.22}/src/attocode_intel/rules/packs/community/eslint-typescript/LICENSE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/eslint-typescript/NOTICE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/eslint-typescript/PORTING.md +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/eslint-typescript/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/eqeqeq.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/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.22}/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.22}/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.22}/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.22}/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.22}/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.22}/src/attocode_intel/rules/packs/community/gosec-go/LICENSE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/gosec-go/NOTICE +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/gosec-go/PORTING.md +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/gosec-go/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/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.22}/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.22}/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.22}/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.22}/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.22}/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.22}/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.22}/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.22}/src/attocode_intel/rules/packs/examples/cpp/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/cpp/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/cpp/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/csharp/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/csharp/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/csharp/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/taint/sanitizers.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/taint/sinks.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/taint/sources.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/java/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/java/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/java/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/java/taint/sinks.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/java/taint/sources.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/kotlin/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/kotlin/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/kotlin/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/php/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/php/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/php/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/python/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/python/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/python/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/ruby/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/ruby/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/ruby/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/rust/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/rust/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/rust/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/typescript/manifest.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/typescript/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/typescript/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/pack_loader.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/plugins/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/plugins/plugin_loader.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/profiling.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/registry.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/sarif.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/testing.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/search_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/server.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/service.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/sharing.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/branch_overlay.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/content_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/dependency_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/diff_engine.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/embedding_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/provenance_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/security_scanner_db.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/symbol_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/structural_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/symbol_inspection.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/symbol_links.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/telemetry.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/test_ranking.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/testing/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/testing/fixtures.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/testing/helpers.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/testing/mocks.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/adr_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/analysis_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/composite_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/cross_mode_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/dead_code_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/distill_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/frecency_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/fuzzy_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/history_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/learning_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/lsp_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/maintenance_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/navigation_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/overlay_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/pin_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/pin_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/query_constraints_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/query_history_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/readiness_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/rule_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/search_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/snapshot_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/workers/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/workers/job_utils.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/workers/jobs.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/workers/run.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/workers/settings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/.attocode/rules/team-preferences.yaml +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/go/bad_patterns.go +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/java/BadPatterns.java +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/python/bad_patterns.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/rust/bad_patterns.rs +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/typescript/bad_patterns.ts +0 -0
- {attocode_code_intel-0.1.21/tests/integration → attocode_code_intel-0.1.22/tests/fixtures/sample_project}/__init__.py +0 -0
- {attocode_code_intel-0.1.21/tests/integration/code_intel → attocode_code_intel-0.1.22/tests/integration}/__init__.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit → attocode_code_intel-0.1.22/tests/integration/code_intel}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/code_intel/conftest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/code_intel/test_http_smoke.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/code_intel/test_mcp_tools_audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/code_intel/test_remote_mcp_http_integration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/code_intel/test_service_integration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/test_rule_bench_floor_e2e.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_ast_snapshot.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_behavioral_negation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_change_focus.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_change_investigation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_chunk_identity.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_codex_repair_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_cold_discovery.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_cold_index_cost.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_compact_inspection.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_corpus_capture.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_daily_workflows.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_db_navigation_http.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_discovery_reuse.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_doctor.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_doctor_runtime.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_edit_restart.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_experiment_dispatch.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_experiment_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_experiment_readiness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_external_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_fallback_lexical.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_file_symbol_scope.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_fixture_source_alias.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_focused_inspection.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_image_budget.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_importance_publication.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_index_probe.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_index_processes.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_index_reuse.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_index_sequences.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_kotlin_test_paths.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_language_capabilities.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_lean_profile.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_lexical_sql_cost.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_local_reranker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_local_workflow_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_localize_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_lsp_diagnostics.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_lsp_document_lifecycle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_lsp_stderr_lifecycle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_mcp_search_evaluation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_mixed_workspace.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_module_ownership.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_native_capture.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_native_experiment.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_navigation_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_navigation_prefix_trial.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_ocaml_parser_routing.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_onboarding_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_operation_contracts.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_optional_grammar_admission.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_optional_language_depth.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_parse_recovery.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_parser_thread_isolation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_pilot.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_precision_protocol.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_precision_recovery.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_preview_admission.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_preview_experiment.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_preview_sources.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_preview_windows.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_quality_cloud.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_quality_evaluation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_quality_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_quality_lifecycle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_quality_runner.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_query_ranking.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_query_requirements.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_ranking_intent.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_real_language_server.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_recovery_readiness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_release_verification.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_remote.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_repair_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_restart_experiment.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_retrieval_ablation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_retrieval_audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_retrieval_body_trial.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_retrieval_cycle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_budget_repair.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_coverage.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_coverage_scale.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_evidence_audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_usefulness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_snippet_budget.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_source_exclusions.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_structural_evidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_structural_write_cost.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_study.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_symbol_order.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_systemone_ranker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_test_intent_trial.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_token_overhead.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_trigram_workspace.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_understanding_evaluation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_walk_order.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_warm_cache.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_workflow_sequences.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit/code_intel → attocode_code_intel-0.1.22/tests/unit}/__init__.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit/context → attocode_code_intel-0.1.22/tests/unit/code_intel}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/conftest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_advisory_lock.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_api.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_api_phase3a.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_api_v2.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_auth.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_branch_versioning.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_bug_finder.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_call_graph_tool.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_ci_runner.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cli_lifecycle.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cli_maintenance_local.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cli_ops.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cli_query_commands.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cli_remote.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_codex_rereview_polish.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_combinators.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_confidence.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_confidence_adoption.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_config.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_config_remote.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cross_mode.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_db_security_scan.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_deps.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_diff_engine.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_edge_cases.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_frecency.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_fuzzy.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_index_store_migration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_kw_index_status.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_lsp_call_graph.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_lsp_enrichment.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_lsp_extended_models.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_marketplace.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_metavar.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_middleware.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_notify_enhanced.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_org_isolation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_pack_autoload.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_profiling.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_project_discovery.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_provenance_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_pubsub_streams.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_query_constraints.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_query_history.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_readiness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_reindex_embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_remote_local_fallback.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_remote_provider.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_remote_reliability.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_repo_ranker.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rule_evolution.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rule_hygiene.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rule_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rule_violations.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rules_engine.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rules_integration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_sarif.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_search_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_server_startup.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_service.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_service_mode.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_status_health.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_structural_executor.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_supply_chain_rules.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_testing_framework.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_webhook_encryption.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/conftest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_adr_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_analysis_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_dead_code_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_distill_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_history_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_learning_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_lsp_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_maintenance_tools_phase2.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_navigation_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_phase2c_anchors_and_overlays.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_readiness_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_search_status_mismatch.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_search_tools.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/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.22/tests/unit/context}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_action_hash.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_ast_service_adapter.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_blob_oid.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_cache_manifest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_cas.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_embedding_rotation.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_pagerank_restoration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_provenance.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_retrieval_pin.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/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.22/tests/unit/eval}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/conftest.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_acc_at_k.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_broad_candidate_audit.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_calibration_demo.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_harness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_agents.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_ci.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_datasets.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_dense.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_function_bm25.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_function_dense.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_rerank.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_retrieve.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_run.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_stats.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_accuracy.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_config.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_corpus.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_evaluator.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_predicate.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_scoring.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_template_engine.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_harness_import.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_search_quality_reporting.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_search_readiness.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/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.22/tests/unit/integrations}/__init__.py +0 -0
- {attocode_code_intel-0.1.21/tests/unit/integrations/utilities → attocode_code_intel-0.1.22/tests/unit/integrations/context}/__init__.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_architecture_drift.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_ast_service_hydration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_body_chunking.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_call_graph.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_code_analyzer.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_codebase_ast.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_codebase_context.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_context_stores_closed.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_cross_ref_search.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_embedder_default.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_embeddings.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_embeddings_query.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_go_symbols.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_hydration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_index_store.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_model_mismatch.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_path_downweight.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_query_routing.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_semantic_search.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_supported_languages.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_temporal_coupling.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_trigram_index.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_trigram_regex.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_ts_parser.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_dataflow.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_feature_flags.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_new_security_rules.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_security_autofix.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_security_matcher.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_streaming_lsp.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/utilities/test_ignore.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/utilities/test_token_estimate.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/test_code_intel.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/test_code_intel_hydration.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/test_errors.py +0 -0
- {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/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.22
|
|
4
4
|
Summary: Local code search and navigation for coding agents and people
|
|
5
5
|
Project-URL: Homepage, https://github.com/eren23/attocode
|
|
6
6
|
Project-URL: Repository, https://github.com/eren23/attocode
|
|
@@ -139,6 +139,11 @@ To use the latest source, install from a clone of this repository: `uv tool inst
|
|
|
139
139
|
|
|
140
140
|
## What your agent gets
|
|
141
141
|
|
|
142
|
+
Version 0.1.22 adds an opt-in discovery budget of up to 100,000 files
|
|
143
|
+
(`ATTOCODE_INTEL_DISCOVERY_MAX_FILES`; the default stays 50,000). It also packages
|
|
144
|
+
the LLM client, so `ATTOCODE_FLAG_CONFIDENCE=llm` and LLM rule synthesis work from
|
|
145
|
+
a PyPI install when an OpenRouter or Anthropic key is set.
|
|
146
|
+
|
|
142
147
|
Version 0.1.21 includes configured search-discovery coverage, OCaml interface
|
|
143
148
|
parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native
|
|
144
149
|
budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
|
|
@@ -233,7 +238,7 @@ failed the frozen protocol. It provides no quality, cost or time benefit evidenc
|
|
|
233
238
|
|
|
234
239
|
- **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
240
|
- **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.**
|
|
241
|
+
- **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
242
|
- **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
243
|
- **Degraded parsing (development builds).** Selecting a missing definition in
|
|
239
244
|
a file with a recorded native parse failure permits one bounded retry for
|
|
@@ -26,6 +26,11 @@ To use the latest source, install from a clone of this repository: `uv tool inst
|
|
|
26
26
|
|
|
27
27
|
## What your agent gets
|
|
28
28
|
|
|
29
|
+
Version 0.1.22 adds an opt-in discovery budget of up to 100,000 files
|
|
30
|
+
(`ATTOCODE_INTEL_DISCOVERY_MAX_FILES`; the default stays 50,000). It also packages
|
|
31
|
+
the LLM client, so `ATTOCODE_FLAG_CONFIDENCE=llm` and LLM rule synthesis work from
|
|
32
|
+
a PyPI install when an OpenRouter or Anthropic key is set.
|
|
33
|
+
|
|
29
34
|
Version 0.1.21 includes configured search-discovery coverage, OCaml interface
|
|
30
35
|
parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native
|
|
31
36
|
budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
|
|
@@ -120,7 +125,7 @@ failed the frozen protocol. It provides no quality, cost or time benefit evidenc
|
|
|
120
125
|
|
|
121
126
|
- **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
127
|
- **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.**
|
|
128
|
+
- **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
129
|
- **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
130
|
- **Degraded parsing (development builds).** Selecting a missing definition in
|
|
126
131
|
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.22"
|
|
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
|
|
{attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/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.22}/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
|