attocode-code-intel 0.1.0__tar.gz → 0.1.1__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.0 → attocode_code_intel-0.1.1}/PKG-INFO +2 -2
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/README.md +1 -1
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/onboarding_study.py +1 -1
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/pyproject.toml +1 -1
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/__init__.py +1 -1
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/ast_service.py +11 -7
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/codebase_context.py +10 -6
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/index_repair.py +2 -1
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/index_store.py +5 -2
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/freshness.py +2 -1
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/onboarding.py +4 -2
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_daily_workflows.py +2 -1
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_edit_restart.py +5 -5
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_focused_inspection.py +24 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_index_reuse.py +3 -2
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/.gitignore +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/LICENSE +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/README.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/broad_candidate_audit.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/broad_query_cases.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/broad_query_external_cases.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/broad_query_final_holdout.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/client_comparison.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/client_responses.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/daily.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/external_benchmarks.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/external_study.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/graded_blind_pack.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/localize_study.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/locbench_title_pack.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/pilot.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/quality_scoring.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/quality_tasks.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/release_gate.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/responses.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-09-05-macos.json +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-04-broad-query-ranking.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-04-decision-reranker-trial.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-04-systemone-http-local-trial.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-05-broad-candidate-audit.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-05-source-view-transfer.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-08-blind-graded-rerank.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-08-locbench-560.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-09-locbench-560-first-stage.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-10-agent-pilot.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-10-agent-r3.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-10-matrix-r1.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/README.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/source_view_transfer.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/study.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/study_clients.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/study_events.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/study_tasks.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/token_overhead.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/understanding_scoring.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/understanding_study.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/warm_cache.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/workflows.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/GUIDELINES.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/errors/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/architecture_drift.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/ast_chunker.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/blob_oid.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/cache_manifest.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/cas.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/code_analyzer.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/codebase_ast.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/cross_mode.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/cross_references.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/embedding_rotation.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/embeddings.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/frecency.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/fuzzy.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/hierarchical_explorer.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/hydration.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/memory_store.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/module_resolution.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/query_constraints.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/query_history.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/reranker.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/semantic_search.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/syntax_evidence.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/systemone_ranker.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/temporal_coupling.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/trigram_index.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/trigram_regex.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/ts_parser.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/context/vector_store.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/feature_flags/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/lsp/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/lsp/client.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/mcp/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/mcp/client.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/security/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/security/custom_rules.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/security/dataflow.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/security/dependency_audit.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/security/matcher.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/security/patterns.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/security/scanner.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/utilities/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/utilities/ignore.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/integrations/utilities/token_estimate.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/tricks/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/tricks/recursive_context.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/types/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/types/events.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/types/severity.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_shared.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/analysis_coverage.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/access.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/app.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/auth/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/auth/api_keys.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/auth/context.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/auth/jwt.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/auth/oauth.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/auth/passwords.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/deps.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/knowledge_bridge.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/mcp_transport.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/middleware.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/models.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/providers/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/providers/db_provider.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/providers/local_provider.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/providers/remote_provider.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/repository_source.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/_pin_helper.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/activity.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/adr.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/analysis.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/api_keys.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/auth.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/branches.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/cross_repo_search.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/embeddings.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/files.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/files_v2.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/gc.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/git_v2.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/graph.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/graph_viz.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/health.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/history.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/jobs.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/learning.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/lsp.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/notify.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/operations.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/orgs.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/preferences.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/presence.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/projects.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/repos.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/search.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/snapshots.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/webhooks.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/routes/websocket.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/static/graph.html +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/api/utils.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/artifacts/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/artifacts/hashing.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/artifacts/provenance.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/artifacts/retrieval_pin.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/audit.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/bug_finder.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/bundle.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/catalog.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/change_review.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/cli.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/community.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/confidence/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/confidence/jev.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/confidence/llm.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/confidence/redact.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/confidence/settings.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/config.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/crypto.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/db/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/db/base.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/db/engine.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/db/models.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/entrypoint.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/focused_evidence.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/gateway.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/git/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/git/credentials.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/git/manager.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/git/models.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/git/storage.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/graph_query_parser.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/helpers.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/indexing/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/indexing/debouncer.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/indexing/delta_indexer.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/indexing/full_indexer.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/indexing/incremental.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/indexing/parser.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/indexing/summarizer.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/installer.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/knowledge.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/local_knowledge.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/alembic.ini +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/env.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/script.py.mako +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/001_initial_schema.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/002_branch_version_and_embeddings.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/003_embedding_uniqueness_and_cascade.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/004_audit_events.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/005_user_preferences.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/006_google_oauth.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/007_pgvector_embeddings.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/008_symbol_references.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/009_webhook_secret_encryption.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/010_add_commits_table.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/011_commit_changed_files.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/012_branch_merged_at.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/013_revoked_tokens.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/014_blame_hunks.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/015_commit_file_stats.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/016_embedding_provenance_columns.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/017_provenance_table.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/018_repo_snapshots.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/019_symref_caller.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/migrations/versions/020_shared_knowledge.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/output.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/precision.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/presence.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/probe.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/project_dir.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/pubsub.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/query_ranking.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/readiness.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/redis.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/reference_pages.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/remote.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/repo_ranker.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/request_context.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/ci.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/combinators.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/enricher.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/evolution.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/executor.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/filters/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/filters/pipeline.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/formatter.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/hygiene.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/importers/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/importers/semgrep.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/loader.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/marketplace.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/metavar.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/model.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/_license_templates/Apache-2.0.txt +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/_license_templates/MIT.txt +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/LICENSE +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/NOTICE +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/PORTING.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/rules/B105-hardcoded-password.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/rules/B303-weak-md5.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/rules/B304-weak-des.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/rules/B307-use-of-eval.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/rules/B324-weak-sha1.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/rules/B501-no-cert-validation.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/rules/B602-shell-true.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/bandit-python/rules/B608-sqli.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/LICENSE +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/NOTICE +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/PORTING.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/eqeqeq.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-eval.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-implied-eval.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-new-func.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-throw-literal.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-var.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-with.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/LICENSE +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/NOTICE +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/PORTING.md +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/rules/G101-hardcoded-credentials.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/rules/G102-bind-all-interfaces.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/rules/G103-unsafe-block.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/rules/G201-sql-format.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/rules/G304-file-inclusion.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/rules/G401-weak-cipher.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/rules/G402-tls-min-version.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/community/gosec-go/rules/G501-md5-import.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/cpp/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/cpp/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/cpp/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/csharp/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/csharp/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/csharp/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/go/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/go/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/go/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/go/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/go/taint/sanitizers.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/go/taint/sinks.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/go/taint/sources.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/java/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/java/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/java/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/java/taint/sinks.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/java/taint/sources.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/kotlin/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/kotlin/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/kotlin/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/php/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/php/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/php/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/python/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/python/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/python/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/ruby/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/ruby/rules/security.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/ruby/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/rust/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/rust/rules/correctness.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/rust/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/typescript/manifest.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/typescript/rules/performance.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/examples/typescript/rules/structural.yaml +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/packs/pack_loader.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/plugins/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/plugins/plugin_loader.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/profiling.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/registry.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/sarif.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/synthesis.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/rules/testing.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/server.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/service.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/sharing.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/storage/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/storage/branch_overlay.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/storage/content_store.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/storage/dependency_store.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/storage/diff_engine.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/storage/embedding_store.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/storage/provenance_store.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/storage/security_scanner_db.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/storage/symbol_store.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/structural_evidence.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/symbol_inspection.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/symbol_links.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/telemetry.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/test_ranking.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/testing/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/testing/fixtures.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/testing/helpers.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/testing/mocks.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/adr_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/analysis_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/composite_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/cross_mode_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/dead_code_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/distill_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/frecency_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/fuzzy_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/history_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/learning_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/lsp_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/maintenance_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/navigation_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/overlay_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/pin_store.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/pin_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/query_constraints_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/query_history_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/readiness_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/rule_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/search_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/tools/snapshot_tools.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/workers/__init__.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/workers/job_utils.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/workers/jobs.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/workers/run.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/workers/settings.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_cold_discovery.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_compact_inspection.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_doctor.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_external_study.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_language_capabilities.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_local_reranker.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_localize_study.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_navigation_evidence.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_onboarding_study.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_pilot.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_precision_protocol.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_product.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_quality_evaluation.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_query_ranking.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_ranking_intent.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_remote.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_structural_evidence.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_study.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_systemone_ranker.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_token_overhead.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_understanding_evaluation.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_walk_order.py +0 -0
- {attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/tests/test_warm_cache.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: attocode-code-intel
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
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
|
|
@@ -132,7 +132,7 @@ To check the setup, run `attocode-code-intel doctor`. It starts the configured s
|
|
|
132
132
|
|
|
133
133
|
For other clients (VS Code, Zed, Windsurf, Claude Desktop and more), run `attocode-code-intel install <target>`. `attocode-code-intel commands` lists the targets.
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
To use the latest source, install from a clone of this repository: `uv tool install /path/to/attocode/packages/code-intel`.
|
|
136
136
|
|
|
137
137
|
## What your agent gets
|
|
138
138
|
|
|
@@ -20,7 +20,7 @@ To check the setup, run `attocode-code-intel doctor`. It starts the configured s
|
|
|
20
20
|
|
|
21
21
|
For other clients (VS Code, Zed, Windsurf, Claude Desktop and more), run `attocode-code-intel install <target>`. `attocode-code-intel commands` lists the targets.
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
To use the latest source, install from a clone of this repository: `uv tool install /path/to/attocode/packages/code-intel`.
|
|
24
24
|
|
|
25
25
|
## What your agent gets
|
|
26
26
|
|
|
@@ -80,7 +80,7 @@ def configure_setup(manifest, study, root, lane, stage_dir, client):
|
|
|
80
80
|
"env": {"PYTHONPATH": str(study / "engine"), "ATTOCODE_INTEL_PRECISION": "off",
|
|
81
81
|
"ATTOCODE_INTEL_TRACE": str(stage_dir / "engine.jsonl")}}
|
|
82
82
|
audit["servers"] = {NAME: entry}
|
|
83
|
-
guidance =
|
|
83
|
+
guidance = root / GUIDANCE[client]
|
|
84
84
|
# The installer writes no guidance file for Claude: Claude Code shows the server instructions.
|
|
85
85
|
audit["installed_guidance_sha256"] = (hashlib.sha256(guidance.read_bytes()).hexdigest()
|
|
86
86
|
if guidance.exists() else None)
|
|
@@ -42,7 +42,11 @@ from attocode_intel._internal.integrations.context.hydration import (
|
|
|
42
42
|
classify_tier,
|
|
43
43
|
skeleton_budget,
|
|
44
44
|
)
|
|
45
|
-
from attocode_intel._internal.integrations.context.index_store import
|
|
45
|
+
from attocode_intel._internal.integrations.context.index_store import (
|
|
46
|
+
SNAPSHOT_KEY,
|
|
47
|
+
IndexStore,
|
|
48
|
+
StoredFile,
|
|
49
|
+
)
|
|
46
50
|
|
|
47
51
|
logger = logging.getLogger(__name__)
|
|
48
52
|
|
|
@@ -210,7 +214,7 @@ class ASTService:
|
|
|
210
214
|
loads cached symbols/refs from SQLite and only re-parses files whose
|
|
211
215
|
mtime has changed (incremental mode). Otherwise does a full scan.
|
|
212
216
|
"""
|
|
213
|
-
self._store.set_meta(
|
|
217
|
+
self._store.set_meta(SNAPSHOT_KEY, "")
|
|
214
218
|
self._snapshot_start = None
|
|
215
219
|
from attocode_intel.telemetry import measure
|
|
216
220
|
with measure("discovery"):
|
|
@@ -404,7 +408,7 @@ class ASTService:
|
|
|
404
408
|
self._initialized = True
|
|
405
409
|
return state
|
|
406
410
|
# A partial or interrupted rebuild must never be restored as complete.
|
|
407
|
-
self._store.set_meta(
|
|
411
|
+
self._store.set_meta(SNAPSHOT_KEY, "")
|
|
408
412
|
self._store.clear_all()
|
|
409
413
|
|
|
410
414
|
to_parse = parseable[:budget]
|
|
@@ -473,7 +477,7 @@ class ASTService:
|
|
|
473
477
|
expensive reference extraction and persistence are reused. Older caches
|
|
474
478
|
without the completion record are rebuilt once.
|
|
475
479
|
"""
|
|
476
|
-
raw = self._store.get_meta(
|
|
480
|
+
raw = self._store.get_meta(SNAPSHOT_KEY)
|
|
477
481
|
if not raw:
|
|
478
482
|
return False
|
|
479
483
|
try:
|
|
@@ -533,7 +537,7 @@ class ASTService:
|
|
|
533
537
|
(source, target) for source, targets in self._index.file_dependencies.items()
|
|
534
538
|
for target in targets
|
|
535
539
|
])
|
|
536
|
-
self._store.set_meta(
|
|
540
|
+
self._store.set_meta(SNAPSHOT_KEY, json.dumps({
|
|
537
541
|
"identity": self._snapshot_start,
|
|
538
542
|
"discovered": sorted(fi.relative_path for fi in self._context_mgr._files),
|
|
539
543
|
"parsed": sorted(self._ast_cache),
|
|
@@ -727,7 +731,7 @@ class ASTService:
|
|
|
727
731
|
on large repositories. Files are parsed in batches of
|
|
728
732
|
*batch_size* concurrently.
|
|
729
733
|
"""
|
|
730
|
-
self._store.set_meta(
|
|
734
|
+
self._store.set_meta(SNAPSHOT_KEY, "")
|
|
731
735
|
self._snapshot_start = None
|
|
732
736
|
from attocode_intel.telemetry import measure
|
|
733
737
|
with measure("discovery"):
|
|
@@ -793,7 +797,7 @@ class ASTService:
|
|
|
793
797
|
|
|
794
798
|
rel = self._to_rel(path)
|
|
795
799
|
abs_path = os.path.join(self._root_dir, rel)
|
|
796
|
-
self._store.set_meta(
|
|
800
|
+
self._store.set_meta(SNAPSHOT_KEY, "")
|
|
797
801
|
self._snapshot_start = None
|
|
798
802
|
|
|
799
803
|
# Handle deletion
|
|
@@ -295,9 +295,8 @@ def _detect_source_prefixes(root_dir: str) -> list[str]:
|
|
|
295
295
|
.get("packages", [])
|
|
296
296
|
)
|
|
297
297
|
for pkg in hatch_packages:
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
prefixes.add(parts[0] + "/")
|
|
298
|
+
if len(Path(pkg).parts) >= 2:
|
|
299
|
+
prefixes.add(Path(pkg).parent.as_posix() + "/")
|
|
301
300
|
|
|
302
301
|
# Setuptools: [tool.setuptools] package-dir = {"" = "src"}
|
|
303
302
|
setup_pkg_dir = (
|
|
@@ -367,12 +366,17 @@ def _build_file_index(
|
|
|
367
366
|
normalized = f.relative_path.replace(os.sep, "/")
|
|
368
367
|
file_index[normalized] = f.relative_path
|
|
369
368
|
|
|
370
|
-
# Detect source prefixes and add stripped alternate keys
|
|
371
|
-
|
|
369
|
+
# Detect source prefixes and add stripped alternate keys. A package below
|
|
370
|
+
# any src/ folder adds that folder too, as in packages/<name>/src/ of a monorepo.
|
|
371
|
+
source_prefixes = set(_detect_source_prefixes(root_dir))
|
|
372
|
+
for normalized in file_index:
|
|
373
|
+
path = "/" + normalized
|
|
374
|
+
if normalized.endswith("/__init__.py") and "/src/" in path:
|
|
375
|
+
source_prefixes.add(path[1:path.index("/src/") + 5])
|
|
372
376
|
if source_prefixes:
|
|
373
377
|
extra: dict[str, str] = {}
|
|
374
378
|
for normalized, rel_path in file_index.items():
|
|
375
|
-
for prefix in source_prefixes:
|
|
379
|
+
for prefix in sorted(source_prefixes):
|
|
376
380
|
if normalized.startswith(prefix):
|
|
377
381
|
stripped = normalized[len(prefix):]
|
|
378
382
|
# Don't override direct matches
|
|
@@ -7,6 +7,7 @@ from pathlib import Path
|
|
|
7
7
|
|
|
8
8
|
from .codebase_context import build_dependency_graph
|
|
9
9
|
from .cross_references import CrossRefIndex
|
|
10
|
+
from .index_store import SNAPSHOT_KEY
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
def changed_paths(before: dict, after: dict) -> set[str]:
|
|
@@ -54,7 +55,7 @@ def repair_index(service, asts: dict, identity: dict, changed: set[str]) -> dict
|
|
|
54
55
|
|
|
55
56
|
# Invalidate before the first write: a crash cannot bless a partial update.
|
|
56
57
|
store = service._store
|
|
57
|
-
store.set_meta(
|
|
58
|
+
store.set_meta(SNAPSHOT_KEY, "")
|
|
58
59
|
removed = {row.path for row in store.get_all_files()} - asts.keys()
|
|
59
60
|
for path in sorted(removed):
|
|
60
61
|
store.remove_file(path)
|
|
@@ -21,6 +21,9 @@ from filelock import FileLock
|
|
|
21
21
|
logger = logging.getLogger(__name__)
|
|
22
22
|
|
|
23
23
|
SCHEMA_VERSION = "6"
|
|
24
|
+
# Bump the suffix when a change alters the saved graph edges, for example import resolution.
|
|
25
|
+
# Stores keep their tables, and the next start rebuilds the index once.
|
|
26
|
+
SNAPSHOT_KEY = "structural_snapshot_v2"
|
|
24
27
|
SQLITE_BUSY_TIMEOUT_MS = 30_000
|
|
25
28
|
INDEX_INIT_LOCK_TIMEOUT_SECONDS = 30
|
|
26
29
|
|
|
@@ -544,12 +547,12 @@ class IndexStore:
|
|
|
544
547
|
"""Drop all data (keeps schema)."""
|
|
545
548
|
conn = self._get_conn()
|
|
546
549
|
with self._lock:
|
|
547
|
-
conn.executescript("""
|
|
550
|
+
conn.executescript(f"""
|
|
548
551
|
DELETE FROM refs;
|
|
549
552
|
DELETE FROM symbols;
|
|
550
553
|
DELETE FROM dependencies;
|
|
551
554
|
DELETE FROM files;
|
|
552
|
-
DELETE FROM metadata WHERE key = '
|
|
555
|
+
DELETE FROM metadata WHERE key = '{SNAPSHOT_KEY}';
|
|
553
556
|
""")
|
|
554
557
|
conn.commit()
|
|
555
558
|
|
|
@@ -7,6 +7,7 @@ import os
|
|
|
7
7
|
import threading
|
|
8
8
|
from pathlib import Path
|
|
9
9
|
|
|
10
|
+
from attocode_intel._internal.integrations.context.index_store import SNAPSHOT_KEY
|
|
10
11
|
from attocode_intel._internal.integrations.utilities.ignore import IgnoreManager
|
|
11
12
|
|
|
12
13
|
|
|
@@ -104,7 +105,7 @@ class FreshnessTracker:
|
|
|
104
105
|
ast._context_mgr.discover_files()
|
|
105
106
|
for path in changed:
|
|
106
107
|
if path not in manifest:
|
|
107
|
-
ast._store.set_meta(
|
|
108
|
+
ast._store.set_meta(SNAPSHOT_KEY, "")
|
|
108
109
|
ast._snapshot_start = None
|
|
109
110
|
ast._index.remove_file(path)
|
|
110
111
|
ast._ast_cache.pop(path, None)
|
|
@@ -165,13 +165,15 @@ def configure_client(
|
|
|
165
165
|
# in every request. Claude gets no managed block, and an old block is removed.
|
|
166
166
|
drop = client == "claude" or (remove and not any(name in servers for name in (NAME, REMOTE_NAME)))
|
|
167
167
|
instruction = _instruction_text(guidance, client, remove=drop)
|
|
168
|
+
# Report the guidance file only when it holds the managed block.
|
|
169
|
+
guidance_file = str(guidance) if START in instruction else None
|
|
168
170
|
# Prepare everything before writing either file; previews contain no credential values.
|
|
169
171
|
if dry_run:
|
|
170
172
|
return {
|
|
171
173
|
"config": str(config),
|
|
172
174
|
"entry": entry_name,
|
|
173
175
|
"configuration": servers.get(entry_name),
|
|
174
|
-
"guidance":
|
|
176
|
+
"guidance": guidance_file,
|
|
175
177
|
"instructions": instruction,
|
|
176
178
|
}
|
|
177
179
|
atomic_write(config, output)
|
|
@@ -182,7 +184,7 @@ def configure_client(
|
|
|
182
184
|
atomic_write(state_path, json.dumps(state, indent=2) + "\n")
|
|
183
185
|
if old_state and old_state.exists():
|
|
184
186
|
old_state.unlink()
|
|
185
|
-
return {"client": client, "config": str(config), "guidance":
|
|
187
|
+
return {"client": client, "config": str(config), "guidance": guidance_file, "removed": remove}
|
|
186
188
|
|
|
187
189
|
|
|
188
190
|
async def diagnose(client, project=".", *, global_scope=False, remote=False):
|
|
@@ -213,8 +213,9 @@ def test_local_and_remote_config_coexist_and_restore_existing(tmp_path, client,
|
|
|
213
213
|
|
|
214
214
|
def test_claude_install_writes_no_claude_md_copy_and_removes_an_old_one(tmp_path):
|
|
215
215
|
# Claude Code shows the server instructions, so a copy in CLAUDE.md is a duplicate.
|
|
216
|
-
configure_client("claude", str(tmp_path))
|
|
216
|
+
assert configure_client("claude", str(tmp_path))["guidance"] is None
|
|
217
217
|
assert not (tmp_path / "CLAUDE.md").exists()
|
|
218
|
+
assert configure_client("codex", str(tmp_path))["guidance"] == str(tmp_path / "AGENTS.md")
|
|
218
219
|
guidance = tmp_path / "CLAUDE.md"
|
|
219
220
|
guidance.write_text("# Mine\n\n<!-- attocode-code-intel:start -->\nold\n<!-- attocode-code-intel:end -->\n")
|
|
220
221
|
configure_client("claude", str(tmp_path))
|
|
@@ -6,7 +6,7 @@ from unittest.mock import patch
|
|
|
6
6
|
|
|
7
7
|
import pytest
|
|
8
8
|
from attocode_intel._internal.integrations.context.ast_service import ASTService
|
|
9
|
-
from attocode_intel._internal.integrations.context.index_store import IndexStore
|
|
9
|
+
from attocode_intel._internal.integrations.context.index_store import SNAPSHOT_KEY, IndexStore
|
|
10
10
|
from attocode_intel.freshness import FreshnessTracker
|
|
11
11
|
|
|
12
12
|
|
|
@@ -65,7 +65,7 @@ def test_edit_restart_matches_clean_index(tmp_path, online, kind):
|
|
|
65
65
|
if online:
|
|
66
66
|
assert first.repair_changed_files()
|
|
67
67
|
assert first._last_snapshot_repair["reused_reference_files"] > 0
|
|
68
|
-
assert first._store.get_meta(
|
|
68
|
+
assert first._store.get_meta(SNAPSHOT_KEY)
|
|
69
69
|
first._store.close()
|
|
70
70
|
|
|
71
71
|
reopened = ASTService(str(tmp_path))
|
|
@@ -100,7 +100,7 @@ def test_interrupted_repair_cannot_restore_partial_store(tmp_path):
|
|
|
100
100
|
with (patch.object(IndexStore, "save_files_batch", side_effect=OSError("interrupted write")),
|
|
101
101
|
pytest.raises(OSError, match="interrupted write")):
|
|
102
102
|
first.repair_changed_files()
|
|
103
|
-
assert not first._store.get_meta(
|
|
103
|
+
assert not first._store.get_meta(SNAPSHOT_KEY)
|
|
104
104
|
finally:
|
|
105
105
|
first._store.close()
|
|
106
106
|
reopened = ASTService(str(tmp_path))
|
|
@@ -109,7 +109,7 @@ def test_interrupted_repair_cannot_restore_partial_store(tmp_path):
|
|
|
109
109
|
state = reopened.initialize_skeleton()
|
|
110
110
|
assert state.phase == "ready"
|
|
111
111
|
assert extract.call_count == state.total_files
|
|
112
|
-
assert reopened._store.get_meta(
|
|
112
|
+
assert reopened._store.get_meta(SNAPSHOT_KEY)
|
|
113
113
|
finally:
|
|
114
114
|
reopened._store.close()
|
|
115
115
|
|
|
@@ -132,7 +132,7 @@ def test_failed_live_repair_retries_filesystem_changes(tmp_path):
|
|
|
132
132
|
assert tracker.manifest != before
|
|
133
133
|
assert ast.find_symbol("renamed")
|
|
134
134
|
assert not ast.find_symbol("helper")
|
|
135
|
-
assert ast._store.get_meta(
|
|
135
|
+
assert ast._store.get_meta(SNAPSHOT_KEY)
|
|
136
136
|
finally:
|
|
137
137
|
ast._store.close()
|
|
138
138
|
|
|
@@ -283,3 +283,27 @@ async def test_hint_does_not_hide_the_tail_of_a_short_function(tmp_path, monkeyp
|
|
|
283
283
|
assert data["follow_up"]["next_source"] is None
|
|
284
284
|
finally:
|
|
285
285
|
await gateway.close()
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
async def test_workspace_member_src_layout_links_its_tests(tmp_path, monkeypatch):
|
|
289
|
+
# A monorepo: the root config names only its own package, and a member package uses src/.
|
|
290
|
+
monkeypatch.setenv("ATTOCODE_INTEL_PRECISION", "off")
|
|
291
|
+
(tmp_path / "pyproject.toml").write_text('[tool.hatch.build.targets.wheel]\npackages = ["src/app"]\n')
|
|
292
|
+
(tmp_path / "src/app").mkdir(parents=True)
|
|
293
|
+
(tmp_path / "src/app/__init__.py").write_text("")
|
|
294
|
+
member = tmp_path / "packages/lib"
|
|
295
|
+
(member / "src/mylib").mkdir(parents=True)
|
|
296
|
+
(member / "src/mylib/__init__.py").write_text("")
|
|
297
|
+
(member / "src/mylib/core.py").write_text("def target(): return 1\n")
|
|
298
|
+
(member / "tests").mkdir()
|
|
299
|
+
(member / "tests/test_core.py").write_text("from mylib.core import target\ndef test_core(): assert target() == 1\n")
|
|
300
|
+
(tmp_path / "tests").mkdir()
|
|
301
|
+
(tmp_path / "tests/test_target_words.py").write_text("def test_target_words(): assert True\n")
|
|
302
|
+
gateway = OperationGateway(str(tmp_path), "daily", watch=False)
|
|
303
|
+
try:
|
|
304
|
+
bundle = decode(await gateway.execute_mcp("inspect_symbol", {
|
|
305
|
+
"symbol_name": "target", "file_path": "packages/lib/src/mylib/core.py"}))
|
|
306
|
+
assert bundle["tests"][0]["file_path"] == "packages/lib/tests/test_core.py"
|
|
307
|
+
assert bundle["tests"][0]["evidence"]["selected_symbol_reference"]
|
|
308
|
+
finally:
|
|
309
|
+
await gateway.close()
|
|
@@ -11,6 +11,7 @@ import pytest
|
|
|
11
11
|
from attocode_intel._internal.integrations.context import ast_service
|
|
12
12
|
from attocode_intel._internal.integrations.context.ast_service import ASTService
|
|
13
13
|
from attocode_intel._internal.integrations.context.index_store import (
|
|
14
|
+
SNAPSHOT_KEY,
|
|
14
15
|
SQLITE_BUSY_TIMEOUT_MS,
|
|
15
16
|
IndexSchemaVersionError,
|
|
16
17
|
IndexStore,
|
|
@@ -77,7 +78,7 @@ def test_restart_restores_complete_index_beyond_skeleton_budget(tmp_path, monkey
|
|
|
77
78
|
first._run_hydration()
|
|
78
79
|
expected = first._store.stats()
|
|
79
80
|
assert expected["dependencies"] > 0
|
|
80
|
-
assert first._store.get_meta(
|
|
81
|
+
assert first._store.get_meta(SNAPSHOT_KEY)
|
|
81
82
|
close(first)
|
|
82
83
|
second = ASTService(str(tmp_path))
|
|
83
84
|
try:
|
|
@@ -140,7 +141,7 @@ def test_incomplete_cache_is_not_restored(tmp_path, monkeypatch):
|
|
|
140
141
|
second = ASTService(str(tmp_path))
|
|
141
142
|
try:
|
|
142
143
|
assert second.initialize_skeleton().phase == "skeleton"
|
|
143
|
-
assert not second._store.get_meta(
|
|
144
|
+
assert not second._store.get_meta(SNAPSHOT_KEY)
|
|
144
145
|
finally:
|
|
145
146
|
close(second)
|
|
146
147
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/broad_query_external_cases.yaml
RENAMED
|
File without changes
|
{attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/broad_query_final_holdout.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-08-locbench-560.md
RENAMED
|
File without changes
|
|
File without changes
|
{attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-10-agent-pilot.md
RENAMED
|
File without changes
|
{attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-10-agent-r3.md
RENAMED
|
File without changes
|
{attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/evals/results/2026-10-10-matrix-r1.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/_internal/types/events.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attocode_code_intel-0.1.0 → attocode_code_intel-0.1.1}/src/attocode_intel/analysis_coverage.py
RENAMED
|
File without changes
|