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.
Files changed (763) hide show
  1. attocode_code_intel-0.1.22/.gitignore +59 -0
  2. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/PKG-INFO +7 -2
  3. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/README.md +6 -1
  4. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/pyproject.toml +3 -3
  5. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/__init__.py +1 -1
  6. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/codebase_context.py +40 -57
  7. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/semantic_search.py +1 -3
  8. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/confidence/llm.py +47 -15
  9. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/synthesis.py +5 -21
  10. attocode_code_intel-0.1.22/tests/fixtures/sample_project/.attocode/.gitignore +2 -0
  11. attocode_code_intel-0.1.22/tests/fixtures/sample_project/main.py +34 -0
  12. attocode_code_intel-0.1.22/tests/fixtures/sample_project/models.py +25 -0
  13. attocode_code_intel-0.1.22/tests/fixtures/sample_project/utils.py +26 -0
  14. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_capacity_experiment.py +29 -0
  15. attocode_code_intel-0.1.22/tests/test_discovery_ceiling.py +120 -0
  16. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_product.py +19 -0
  17. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rule_synthesis.py +9 -15
  18. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_mcp_bench.py +1 -1
  19. attocode_code_intel-0.1.22/tests/unit/integrations/utilities/__init__.py +0 -0
  20. attocode_code_intel-0.1.21/.gitignore +0 -88
  21. attocode_code_intel-0.1.21/evals/README.md +0 -377
  22. attocode_code_intel-0.1.21/evals/ast_restart_probe.py +0 -101
  23. attocode_code_intel-0.1.21/evals/body_cost_probe.py +0 -101
  24. attocode_code_intel-0.1.21/evals/broad_candidate_audit.yaml +0 -59
  25. attocode_code_intel-0.1.21/evals/broad_query_cases.yaml +0 -89
  26. attocode_code_intel-0.1.21/evals/broad_query_external_cases.yaml +0 -79
  27. attocode_code_intel-0.1.21/evals/broad_query_final_holdout.yaml +0 -78
  28. attocode_code_intel-0.1.21/evals/client_comparison.py +0 -151
  29. attocode_code_intel-0.1.21/evals/client_responses.py +0 -152
  30. attocode_code_intel-0.1.21/evals/codex_repair_study.py +0 -415
  31. attocode_code_intel-0.1.21/evals/daily.py +0 -77
  32. attocode_code_intel-0.1.21/evals/designs/2026-10-13-codex-repair-diagnostic.md +0 -49
  33. attocode_code_intel-0.1.21/evals/designs/2026-10-13-r7-task-completion-pilot.md +0 -253
  34. attocode_code_intel-0.1.21/evals/designs/2026-10-14-workflow-pilot.md +0 -63
  35. attocode_code_intel-0.1.21/evals/designs/2026-10-15-body-file-trial.md +0 -34
  36. attocode_code_intel-0.1.21/evals/designs/2026-10-15-body-file-validation.json +0 -427
  37. attocode_code_intel-0.1.21/evals/designs/2026-10-15-expansion-ablation.md +0 -33
  38. attocode_code_intel-0.1.21/evals/designs/2026-10-15-expansion-development.json +0 -192
  39. attocode_code_intel-0.1.21/evals/designs/2026-10-15-expansion-validation.json +0 -180
  40. attocode_code_intel-0.1.21/evals/designs/2026-10-15-fresh-navigation-queries.json +0 -90
  41. attocode_code_intel-0.1.21/evals/designs/2026-10-15-headroom-retrieval-questions.json +0 -859
  42. attocode_code_intel-0.1.21/evals/designs/2026-10-15-headroom-retrieval.md +0 -17
  43. attocode_code_intel-0.1.21/evals/designs/2026-10-16-cross-file-questions.json +0 -158
  44. attocode_code_intel-0.1.21/evals/designs/2026-10-16-deep-page-questions.json +0 -160
  45. attocode_code_intel-0.1.21/evals/designs/2026-10-16-kotlin-test-paths.json +0 -106
  46. attocode_code_intel-0.1.21/evals/designs/2026-10-16-navigation-prefix-validation.json +0 -266
  47. attocode_code_intel-0.1.21/evals/designs/2026-10-16-navigation-prefix.json +0 -310
  48. attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-candidate.patch.gz +0 -0
  49. attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-development.json +0 -208
  50. attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-freeze.json +0 -48
  51. attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-validation.json +0 -208
  52. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/accepted.patch.gz +0 -0
  53. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/boundaries.patch.gz +0 -0
  54. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/combined.patch.gz +0 -0
  55. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/expansion.patch.gz +0 -0
  56. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/identity.patch.gz +0 -0
  57. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/manifest.json +0 -76
  58. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/negation.patch.gz +0 -0
  59. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/owner_only.patch.gz +0 -0
  60. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/owners.patch.gz +0 -0
  61. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-confirmation-freeze.json +0 -7
  62. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-confirmation.json +0 -206
  63. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-development.json +0 -206
  64. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-freeze.json +0 -348
  65. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-validation.json +0 -206
  66. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-usefulness-development.json +0 -285
  67. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-usefulness-validation.json +0 -285
  68. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-usefulness.json +0 -36
  69. attocode_code_intel-0.1.21/evals/designs/2026-10-16-test-intent.json +0 -210
  70. attocode_code_intel-0.1.21/evals/designs/2026-10-17-change-focus-candidate.patch.gz +0 -0
  71. attocode_code_intel-0.1.21/evals/designs/2026-10-17-change-workflow-replays.json +0 -98
  72. attocode_code_intel-0.1.21/evals/designs/2026-10-17-change-workflow-replays.md +0 -61
  73. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-c2f.patch.gz +0 -0
  74. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-development.json +0 -409
  75. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-freeze.json +0 -49
  76. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-t.patch.gz +0 -0
  77. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-tcf.patch.gz +0 -0
  78. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-validation.json +0 -394
  79. attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-candidate.patch.gz +0 -0
  80. attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-development.json +0 -328
  81. attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-freeze.json +0 -36
  82. attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-validation.json +0 -342
  83. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-candidate.json +0 -350
  84. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-development.json +0 -1467
  85. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-freeze.json +0 -43
  86. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-t2.patch.gz +0 -0
  87. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-t3.patch.gz +0 -0
  88. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-validation.json +0 -400
  89. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-candidate.json +0 -244
  90. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-development.json +0 -1844
  91. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-freeze.json +0 -47
  92. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-p.patch.gz +0 -0
  93. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-pf.patch.gz +0 -0
  94. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-validation.json +0 -410
  95. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-candidate.json +0 -422
  96. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-development.json +0 -2220
  97. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-freeze.json +0 -44
  98. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q1.patch.gz +0 -0
  99. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q2.patch.gz +0 -0
  100. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q3.patch.gz +0 -0
  101. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q5.patch.gz +0 -0
  102. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s1.patch.gz +0 -0
  103. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2-equivalence.json +0 -12
  104. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2-freeze.json +0 -51
  105. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2-validation.json +0 -536
  106. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2.patch.gz +0 -0
  107. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-validation.json +0 -558
  108. attocode_code_intel-0.1.21/evals/designs/2026-10-19-cpu-fn-embed-cost.json +0 -33
  109. attocode_code_intel-0.1.21/evals/designs/2026-10-20-clause-balance-validation.json +0 -499
  110. attocode_code_intel-0.1.21/evals/designs/2026-10-20-search-repair-validation.json +0 -419
  111. attocode_code_intel-0.1.21/evals/designs/2026-10-20-test-support-development.json +0 -294
  112. attocode_code_intel-0.1.21/evals/designs/2026-10-20-test-support-freeze.json +0 -32
  113. attocode_code_intel-0.1.21/evals/designs/2026-10-23-preview-windows.json +0 -512
  114. attocode_code_intel-0.1.21/evals/designs/2026-10-23-restart-fingerprints.json +0 -78
  115. attocode_code_intel-0.1.21/evals/discovery_reuse_probe.py +0 -63
  116. attocode_code_intel-0.1.21/evals/external_benchmarks.py +0 -132
  117. attocode_code_intel-0.1.21/evals/external_study.py +0 -409
  118. attocode_code_intel-0.1.21/evals/graded_blind_pack.yaml +0 -755
  119. attocode_code_intel-0.1.21/evals/lexical_sql_probe.py +0 -171
  120. attocode_code_intel-0.1.21/evals/localize_study.py +0 -743
  121. attocode_code_intel-0.1.21/evals/locbench_title_pack.yaml +0 -300
  122. attocode_code_intel-0.1.21/evals/onboarding_study.py +0 -205
  123. attocode_code_intel-0.1.21/evals/pilot.py +0 -206
  124. attocode_code_intel-0.1.21/evals/quality_scoring.py +0 -286
  125. attocode_code_intel-0.1.21/evals/quality_tasks.py +0 -315
  126. attocode_code_intel-0.1.21/evals/release_gate.py +0 -144
  127. attocode_code_intel-0.1.21/evals/repair_grading.py +0 -142
  128. attocode_code_intel-0.1.21/evals/repair_study.py +0 -513
  129. attocode_code_intel-0.1.21/evals/repair_worker.py +0 -442
  130. attocode_code_intel-0.1.21/evals/responses.py +0 -87
  131. attocode_code_intel-0.1.21/evals/restart_discovery_probe.py +0 -101
  132. attocode_code_intel-0.1.21/evals/search_evidence_audit.py +0 -297
  133. attocode_code_intel-0.1.21/evals/source_view_transfer.yaml +0 -58
  134. attocode_code_intel-0.1.21/evals/structural_write_probe.py +0 -83
  135. attocode_code_intel-0.1.21/evals/study.py +0 -485
  136. attocode_code_intel-0.1.21/evals/study_clients.py +0 -167
  137. attocode_code_intel-0.1.21/evals/study_events.py +0 -257
  138. attocode_code_intel-0.1.21/evals/study_tasks.py +0 -173
  139. attocode_code_intel-0.1.21/evals/token_overhead.py +0 -84
  140. attocode_code_intel-0.1.21/evals/understanding_scoring.py +0 -120
  141. attocode_code_intel-0.1.21/evals/understanding_study.py +0 -387
  142. attocode_code_intel-0.1.21/evals/warm_cache.py +0 -496
  143. attocode_code_intel-0.1.21/evals/workflows.py +0 -143
  144. attocode_code_intel-0.1.21/src/attocode_intel/_internal/tricks/recursive_context.py +0 -357
  145. attocode_code_intel-0.1.21/src/attocode_intel/_internal/types/__init__.py +0 -1
  146. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/LICENSE +0 -0
  147. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/GUIDELINES.md +0 -0
  148. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/__init__.py +0 -0
  149. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/errors/__init__.py +0 -0
  150. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/__init__.py +0 -0
  151. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/__init__.py +0 -0
  152. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/architecture_drift.py +0 -0
  153. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/ast_chunker.py +0 -0
  154. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/ast_service.py +0 -0
  155. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/ast_snapshot.py +0 -0
  156. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/blob_oid.py +0 -0
  157. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/cache_manifest.py +0 -0
  158. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/cas.py +0 -0
  159. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/code_analyzer.py +0 -0
  160. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/codebase_ast.py +0 -0
  161. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/cross_mode.py +0 -0
  162. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/cross_references.py +0 -0
  163. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/discovery_snapshot.py +0 -0
  164. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/embedding_rotation.py +0 -0
  165. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/embeddings.py +0 -0
  166. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/frecency.py +0 -0
  167. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/fuzzy.py +0 -0
  168. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/hierarchical_explorer.py +0 -0
  169. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/hydration.py +0 -0
  170. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/index_probe.py +0 -0
  171. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/index_repair.py +0 -0
  172. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/index_store.py +0 -0
  173. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/language_registry.py +0 -0
  174. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/memory_store.py +0 -0
  175. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/module_resolution.py +0 -0
  176. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/parse_diagnostics.py +0 -0
  177. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/query_constraints.py +0 -0
  178. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/query_history.py +0 -0
  179. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/reranker.py +0 -0
  180. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/syntax_evidence.py +0 -0
  181. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/systemone_ranker.py +0 -0
  182. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/temporal_coupling.py +0 -0
  183. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/trigram_index.py +0 -0
  184. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/trigram_regex.py +0 -0
  185. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/ts_parser.py +0 -0
  186. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/context/vector_store.py +0 -0
  187. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/feature_flags/__init__.py +0 -0
  188. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/lsp/__init__.py +0 -0
  189. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/lsp/client.py +0 -0
  190. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/mcp/__init__.py +0 -0
  191. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/mcp/client.py +0 -0
  192. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/__init__.py +0 -0
  193. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/custom_rules.py +0 -0
  194. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/dataflow.py +0 -0
  195. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/dependency_audit.py +0 -0
  196. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/matcher.py +0 -0
  197. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/patterns.py +0 -0
  198. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/security/scanner.py +0 -0
  199. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/utilities/__init__.py +0 -0
  200. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/utilities/ignore.py +0 -0
  201. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/integrations/utilities/token_estimate.py +0 -0
  202. {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
  203. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/types/events.py +0 -0
  204. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_internal/types/severity.py +0 -0
  205. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/_shared.py +0 -0
  206. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/analysis_coverage.py +0 -0
  207. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/__init__.py +0 -0
  208. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/access.py +0 -0
  209. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/app.py +0 -0
  210. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/__init__.py +0 -0
  211. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/api_keys.py +0 -0
  212. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/context.py +0 -0
  213. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/jwt.py +0 -0
  214. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/oauth.py +0 -0
  215. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/auth/passwords.py +0 -0
  216. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/deps.py +0 -0
  217. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/knowledge_bridge.py +0 -0
  218. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/mcp_transport.py +0 -0
  219. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/middleware.py +0 -0
  220. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/models.py +0 -0
  221. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/providers/__init__.py +0 -0
  222. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/providers/db_provider.py +0 -0
  223. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/providers/local_provider.py +0 -0
  224. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/providers/remote_provider.py +0 -0
  225. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/repository_source.py +0 -0
  226. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/__init__.py +0 -0
  227. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/_pin_helper.py +0 -0
  228. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/activity.py +0 -0
  229. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/adr.py +0 -0
  230. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/analysis.py +0 -0
  231. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/api_keys.py +0 -0
  232. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/auth.py +0 -0
  233. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/branches.py +0 -0
  234. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/cross_repo_search.py +0 -0
  235. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/embeddings.py +0 -0
  236. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/files.py +0 -0
  237. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/files_v2.py +0 -0
  238. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/gc.py +0 -0
  239. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/git_v2.py +0 -0
  240. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/graph.py +0 -0
  241. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/graph_viz.py +0 -0
  242. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/health.py +0 -0
  243. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/history.py +0 -0
  244. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/jobs.py +0 -0
  245. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/learning.py +0 -0
  246. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/lsp.py +0 -0
  247. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/notify.py +0 -0
  248. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/operations.py +0 -0
  249. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/orgs.py +0 -0
  250. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/preferences.py +0 -0
  251. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/presence.py +0 -0
  252. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/projects.py +0 -0
  253. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/repos.py +0 -0
  254. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/search.py +0 -0
  255. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/snapshots.py +0 -0
  256. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/webhooks.py +0 -0
  257. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/routes/websocket.py +0 -0
  258. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/static/graph.html +0 -0
  259. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/api/utils.py +0 -0
  260. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/artifacts/__init__.py +0 -0
  261. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/artifacts/hashing.py +0 -0
  262. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/artifacts/provenance.py +0 -0
  263. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/artifacts/retrieval_pin.py +0 -0
  264. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/audit.py +0 -0
  265. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/bug_finder.py +0 -0
  266. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/bundle.py +0 -0
  267. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/catalog.py +0 -0
  268. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/change_evidence.py +0 -0
  269. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/change_investigation.py +0 -0
  270. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/change_review.py +0 -0
  271. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/cli.py +0 -0
  272. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/community.py +0 -0
  273. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/confidence/__init__.py +0 -0
  274. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/confidence/jev.py +0 -0
  275. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/confidence/redact.py +0 -0
  276. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/confidence/settings.py +0 -0
  277. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/config.py +0 -0
  278. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/crypto.py +0 -0
  279. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/db/__init__.py +0 -0
  280. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/db/base.py +0 -0
  281. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/db/engine.py +0 -0
  282. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/db/models.py +0 -0
  283. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/entrypoint.py +0 -0
  284. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/focused_evidence.py +0 -0
  285. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/freshness.py +0 -0
  286. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/gateway.py +0 -0
  287. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/git/__init__.py +0 -0
  288. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/git/credentials.py +0 -0
  289. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/git/manager.py +0 -0
  290. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/git/models.py +0 -0
  291. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/git/storage.py +0 -0
  292. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/graph_query_parser.py +0 -0
  293. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/helpers.py +0 -0
  294. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/__init__.py +0 -0
  295. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/debouncer.py +0 -0
  296. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/delta_indexer.py +0 -0
  297. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/full_indexer.py +0 -0
  298. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/incremental.py +0 -0
  299. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/parser.py +0 -0
  300. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/indexing/summarizer.py +0 -0
  301. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/installer.py +0 -0
  302. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/investigation_cli.py +0 -0
  303. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/knowledge.py +0 -0
  304. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/local_knowledge.py +0 -0
  305. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/alembic.ini +0 -0
  306. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/env.py +0 -0
  307. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/script.py.mako +0 -0
  308. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/001_initial_schema.py +0 -0
  309. {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
  310. {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
  311. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/004_audit_events.py +0 -0
  312. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/005_user_preferences.py +0 -0
  313. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/006_google_oauth.py +0 -0
  314. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/007_pgvector_embeddings.py +0 -0
  315. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/008_symbol_references.py +0 -0
  316. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/009_webhook_secret_encryption.py +0 -0
  317. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/010_add_commits_table.py +0 -0
  318. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/011_commit_changed_files.py +0 -0
  319. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/012_branch_merged_at.py +0 -0
  320. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/013_revoked_tokens.py +0 -0
  321. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/014_blame_hunks.py +0 -0
  322. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/015_commit_file_stats.py +0 -0
  323. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/016_embedding_provenance_columns.py +0 -0
  324. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/017_provenance_table.py +0 -0
  325. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/018_repo_snapshots.py +0 -0
  326. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/019_symref_caller.py +0 -0
  327. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/migrations/versions/020_shared_knowledge.py +0 -0
  328. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/onboarding.py +0 -0
  329. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/output.py +0 -0
  330. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/precision.py +0 -0
  331. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/presence.py +0 -0
  332. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/probe.py +0 -0
  333. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/project_dir.py +0 -0
  334. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/pubsub.py +0 -0
  335. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/query_ranking.py +0 -0
  336. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/readiness.py +0 -0
  337. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/redis.py +0 -0
  338. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/reference_pages.py +0 -0
  339. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/remote.py +0 -0
  340. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/repo_ranker.py +0 -0
  341. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/request_context.py +0 -0
  342. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/__init__.py +0 -0
  343. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/ci.py +0 -0
  344. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/combinators.py +0 -0
  345. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/enricher.py +0 -0
  346. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/evolution.py +0 -0
  347. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/executor.py +0 -0
  348. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/filters/__init__.py +0 -0
  349. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/filters/pipeline.py +0 -0
  350. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/formatter.py +0 -0
  351. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/hygiene.py +0 -0
  352. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/importers/__init__.py +0 -0
  353. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/importers/semgrep.py +0 -0
  354. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/loader.py +0 -0
  355. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/marketplace.py +0 -0
  356. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/metavar.py +0 -0
  357. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/model.py +0 -0
  358. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/__init__.py +0 -0
  359. {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
  360. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/_license_templates/MIT.txt +0 -0
  361. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/bandit-python/LICENSE +0 -0
  362. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/bandit-python/NOTICE +0 -0
  363. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/bandit-python/PORTING.md +0 -0
  364. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/bandit-python/manifest.yaml +0 -0
  365. {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
  366. {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
  367. {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
  368. {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
  369. {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
  370. {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
  371. {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
  372. {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
  373. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/eslint-typescript/LICENSE +0 -0
  374. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/eslint-typescript/NOTICE +0 -0
  375. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/eslint-typescript/PORTING.md +0 -0
  376. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/eslint-typescript/manifest.yaml +0 -0
  377. {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
  378. {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
  379. {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
  380. {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
  381. {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
  382. {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
  383. {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
  384. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/gosec-go/LICENSE +0 -0
  385. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/gosec-go/NOTICE +0 -0
  386. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/gosec-go/PORTING.md +0 -0
  387. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/community/gosec-go/manifest.yaml +0 -0
  388. {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
  389. {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
  390. {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
  391. {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
  392. {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
  393. {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
  394. {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
  395. {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
  396. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/cpp/manifest.yaml +0 -0
  397. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/cpp/rules/security.yaml +0 -0
  398. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/cpp/rules/structural.yaml +0 -0
  399. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/csharp/manifest.yaml +0 -0
  400. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/csharp/rules/security.yaml +0 -0
  401. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/csharp/rules/structural.yaml +0 -0
  402. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/manifest.yaml +0 -0
  403. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/rules/performance.yaml +0 -0
  404. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/rules/security.yaml +0 -0
  405. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/rules/structural.yaml +0 -0
  406. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/taint/sanitizers.yaml +0 -0
  407. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/taint/sinks.yaml +0 -0
  408. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/go/taint/sources.yaml +0 -0
  409. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/java/manifest.yaml +0 -0
  410. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/java/rules/correctness.yaml +0 -0
  411. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/java/rules/structural.yaml +0 -0
  412. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/java/taint/sinks.yaml +0 -0
  413. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/java/taint/sources.yaml +0 -0
  414. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/kotlin/manifest.yaml +0 -0
  415. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/kotlin/rules/correctness.yaml +0 -0
  416. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/kotlin/rules/structural.yaml +0 -0
  417. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/php/manifest.yaml +0 -0
  418. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/php/rules/security.yaml +0 -0
  419. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/php/rules/structural.yaml +0 -0
  420. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/python/manifest.yaml +0 -0
  421. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/python/rules/performance.yaml +0 -0
  422. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/python/rules/structural.yaml +0 -0
  423. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/ruby/manifest.yaml +0 -0
  424. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/ruby/rules/security.yaml +0 -0
  425. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/ruby/rules/structural.yaml +0 -0
  426. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/rust/manifest.yaml +0 -0
  427. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/rust/rules/correctness.yaml +0 -0
  428. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/rust/rules/structural.yaml +0 -0
  429. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/typescript/manifest.yaml +0 -0
  430. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/typescript/rules/performance.yaml +0 -0
  431. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/examples/typescript/rules/structural.yaml +0 -0
  432. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/packs/pack_loader.py +0 -0
  433. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/plugins/__init__.py +0 -0
  434. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/plugins/plugin_loader.py +0 -0
  435. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/profiling.py +0 -0
  436. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/registry.py +0 -0
  437. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/sarif.py +0 -0
  438. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/rules/testing.py +0 -0
  439. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/search_evidence.py +0 -0
  440. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/server.py +0 -0
  441. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/service.py +0 -0
  442. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/sharing.py +0 -0
  443. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/__init__.py +0 -0
  444. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/branch_overlay.py +0 -0
  445. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/content_store.py +0 -0
  446. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/dependency_store.py +0 -0
  447. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/diff_engine.py +0 -0
  448. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/embedding_store.py +0 -0
  449. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/provenance_store.py +0 -0
  450. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/security_scanner_db.py +0 -0
  451. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/storage/symbol_store.py +0 -0
  452. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/structural_evidence.py +0 -0
  453. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/symbol_inspection.py +0 -0
  454. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/symbol_links.py +0 -0
  455. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/telemetry.py +0 -0
  456. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/test_ranking.py +0 -0
  457. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/testing/__init__.py +0 -0
  458. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/testing/fixtures.py +0 -0
  459. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/testing/helpers.py +0 -0
  460. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/testing/mocks.py +0 -0
  461. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/__init__.py +0 -0
  462. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/adr_tools.py +0 -0
  463. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/analysis_tools.py +0 -0
  464. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/composite_tools.py +0 -0
  465. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/cross_mode_tools.py +0 -0
  466. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/dead_code_tools.py +0 -0
  467. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/distill_tools.py +0 -0
  468. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/frecency_tools.py +0 -0
  469. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/fuzzy_tools.py +0 -0
  470. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/history_tools.py +0 -0
  471. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/learning_tools.py +0 -0
  472. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/lsp_tools.py +0 -0
  473. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/maintenance_tools.py +0 -0
  474. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/navigation_tools.py +0 -0
  475. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/overlay_tools.py +0 -0
  476. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/pin_store.py +0 -0
  477. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/pin_tools.py +0 -0
  478. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/query_constraints_tools.py +0 -0
  479. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/query_history_tools.py +0 -0
  480. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/readiness_tools.py +0 -0
  481. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/rule_tools.py +0 -0
  482. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/search_tools.py +0 -0
  483. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/tools/snapshot_tools.py +0 -0
  484. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/workers/__init__.py +0 -0
  485. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/workers/job_utils.py +0 -0
  486. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/workers/jobs.py +0 -0
  487. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/workers/run.py +0 -0
  488. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/src/attocode_intel/workers/settings.py +0 -0
  489. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/.attocode/rules/team-preferences.yaml +0 -0
  490. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/go/bad_patterns.go +0 -0
  491. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/java/BadPatterns.java +0 -0
  492. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/python/bad_patterns.py +0 -0
  493. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/rust/bad_patterns.rs +0 -0
  494. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/fixtures/rule_violations/typescript/bad_patterns.ts +0 -0
  495. {attocode_code_intel-0.1.21/tests/integration → attocode_code_intel-0.1.22/tests/fixtures/sample_project}/__init__.py +0 -0
  496. {attocode_code_intel-0.1.21/tests/integration/code_intel → attocode_code_intel-0.1.22/tests/integration}/__init__.py +0 -0
  497. {attocode_code_intel-0.1.21/tests/unit → attocode_code_intel-0.1.22/tests/integration/code_intel}/__init__.py +0 -0
  498. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/code_intel/conftest.py +0 -0
  499. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/code_intel/test_http_smoke.py +0 -0
  500. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/code_intel/test_mcp_tools_audit.py +0 -0
  501. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/code_intel/test_remote_mcp_http_integration.py +0 -0
  502. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/code_intel/test_service_integration.py +0 -0
  503. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/integration/test_rule_bench_floor_e2e.py +0 -0
  504. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_ast_snapshot.py +0 -0
  505. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_behavioral_negation.py +0 -0
  506. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_change_focus.py +0 -0
  507. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_change_investigation.py +0 -0
  508. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_chunk_identity.py +0 -0
  509. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_codex_repair_study.py +0 -0
  510. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_cold_discovery.py +0 -0
  511. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_cold_index_cost.py +0 -0
  512. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_compact_inspection.py +0 -0
  513. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_corpus_capture.py +0 -0
  514. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_daily_workflows.py +0 -0
  515. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_db_navigation_http.py +0 -0
  516. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_discovery_reuse.py +0 -0
  517. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_doctor.py +0 -0
  518. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_doctor_runtime.py +0 -0
  519. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_edit_restart.py +0 -0
  520. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_experiment_dispatch.py +0 -0
  521. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_experiment_evidence.py +0 -0
  522. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_experiment_readiness.py +0 -0
  523. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_external_study.py +0 -0
  524. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_fallback_lexical.py +0 -0
  525. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_file_symbol_scope.py +0 -0
  526. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_fixture_source_alias.py +0 -0
  527. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_focused_inspection.py +0 -0
  528. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_image_budget.py +0 -0
  529. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_importance_publication.py +0 -0
  530. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_index_probe.py +0 -0
  531. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_index_processes.py +0 -0
  532. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_index_reuse.py +0 -0
  533. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_index_sequences.py +0 -0
  534. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_kotlin_test_paths.py +0 -0
  535. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_language_capabilities.py +0 -0
  536. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_lean_profile.py +0 -0
  537. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_lexical_sql_cost.py +0 -0
  538. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_local_reranker.py +0 -0
  539. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_local_workflow_evidence.py +0 -0
  540. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_localize_study.py +0 -0
  541. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_lsp_diagnostics.py +0 -0
  542. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_lsp_document_lifecycle.py +0 -0
  543. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_lsp_stderr_lifecycle.py +0 -0
  544. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_mcp_search_evaluation.py +0 -0
  545. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_mixed_workspace.py +0 -0
  546. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_module_ownership.py +0 -0
  547. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_native_capture.py +0 -0
  548. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_native_experiment.py +0 -0
  549. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_navigation_evidence.py +0 -0
  550. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_navigation_prefix_trial.py +0 -0
  551. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_ocaml_parser_routing.py +0 -0
  552. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_onboarding_study.py +0 -0
  553. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_operation_contracts.py +0 -0
  554. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_optional_grammar_admission.py +0 -0
  555. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_optional_language_depth.py +0 -0
  556. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_parse_recovery.py +0 -0
  557. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_parser_thread_isolation.py +0 -0
  558. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_pilot.py +0 -0
  559. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_precision_protocol.py +0 -0
  560. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_precision_recovery.py +0 -0
  561. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_preview_admission.py +0 -0
  562. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_preview_experiment.py +0 -0
  563. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_preview_sources.py +0 -0
  564. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_preview_windows.py +0 -0
  565. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_quality_cloud.py +0 -0
  566. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_quality_evaluation.py +0 -0
  567. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_quality_evidence.py +0 -0
  568. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_quality_lifecycle.py +0 -0
  569. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_quality_runner.py +0 -0
  570. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_query_ranking.py +0 -0
  571. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_query_requirements.py +0 -0
  572. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_ranking_intent.py +0 -0
  573. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_real_language_server.py +0 -0
  574. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_recovery_readiness.py +0 -0
  575. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_release_verification.py +0 -0
  576. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_remote.py +0 -0
  577. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_repair_study.py +0 -0
  578. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_restart_experiment.py +0 -0
  579. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_retrieval_ablation.py +0 -0
  580. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_retrieval_audit.py +0 -0
  581. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_retrieval_body_trial.py +0 -0
  582. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_retrieval_cycle.py +0 -0
  583. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_budget_repair.py +0 -0
  584. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_coverage.py +0 -0
  585. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_coverage_scale.py +0 -0
  586. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_evidence.py +0 -0
  587. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_evidence_audit.py +0 -0
  588. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_search_usefulness.py +0 -0
  589. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_snippet_budget.py +0 -0
  590. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_source_exclusions.py +0 -0
  591. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_structural_evidence.py +0 -0
  592. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_structural_write_cost.py +0 -0
  593. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_study.py +0 -0
  594. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_symbol_order.py +0 -0
  595. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_systemone_ranker.py +0 -0
  596. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_test_intent_trial.py +0 -0
  597. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_token_overhead.py +0 -0
  598. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_trigram_workspace.py +0 -0
  599. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_understanding_evaluation.py +0 -0
  600. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_walk_order.py +0 -0
  601. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_warm_cache.py +0 -0
  602. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/test_workflow_sequences.py +0 -0
  603. {attocode_code_intel-0.1.21/tests/unit/code_intel → attocode_code_intel-0.1.22/tests/unit}/__init__.py +0 -0
  604. {attocode_code_intel-0.1.21/tests/unit/context → attocode_code_intel-0.1.22/tests/unit/code_intel}/__init__.py +0 -0
  605. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/conftest.py +0 -0
  606. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_advisory_lock.py +0 -0
  607. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_api.py +0 -0
  608. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_api_phase3a.py +0 -0
  609. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_api_v2.py +0 -0
  610. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_auth.py +0 -0
  611. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_branch_versioning.py +0 -0
  612. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_bug_finder.py +0 -0
  613. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_call_graph_tool.py +0 -0
  614. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_ci_runner.py +0 -0
  615. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cli_lifecycle.py +0 -0
  616. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cli_maintenance_local.py +0 -0
  617. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cli_ops.py +0 -0
  618. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cli_query_commands.py +0 -0
  619. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cli_remote.py +0 -0
  620. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_codex_rereview_polish.py +0 -0
  621. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_combinators.py +0 -0
  622. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_confidence.py +0 -0
  623. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_confidence_adoption.py +0 -0
  624. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_config.py +0 -0
  625. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_config_remote.py +0 -0
  626. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_cross_mode.py +0 -0
  627. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_db_security_scan.py +0 -0
  628. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_deps.py +0 -0
  629. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_diff_engine.py +0 -0
  630. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_edge_cases.py +0 -0
  631. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_frecency.py +0 -0
  632. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_fuzzy.py +0 -0
  633. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_index_store_migration.py +0 -0
  634. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_kw_index_status.py +0 -0
  635. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_lsp_call_graph.py +0 -0
  636. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_lsp_enrichment.py +0 -0
  637. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_lsp_extended_models.py +0 -0
  638. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_marketplace.py +0 -0
  639. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_metavar.py +0 -0
  640. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_middleware.py +0 -0
  641. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_notify_enhanced.py +0 -0
  642. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_org_isolation.py +0 -0
  643. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_pack_autoload.py +0 -0
  644. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_profiling.py +0 -0
  645. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_project_discovery.py +0 -0
  646. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_provenance_store.py +0 -0
  647. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_pubsub_streams.py +0 -0
  648. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_query_constraints.py +0 -0
  649. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_query_history.py +0 -0
  650. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_readiness.py +0 -0
  651. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_reindex_embeddings.py +0 -0
  652. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_remote_local_fallback.py +0 -0
  653. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_remote_provider.py +0 -0
  654. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_remote_reliability.py +0 -0
  655. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_repo_ranker.py +0 -0
  656. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rule_evolution.py +0 -0
  657. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rule_hygiene.py +0 -0
  658. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rule_tools.py +0 -0
  659. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rule_violations.py +0 -0
  660. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rules_engine.py +0 -0
  661. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_rules_integration.py +0 -0
  662. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_sarif.py +0 -0
  663. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_search_tools.py +0 -0
  664. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_server_startup.py +0 -0
  665. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_service.py +0 -0
  666. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_service_mode.py +0 -0
  667. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_status_health.py +0 -0
  668. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_structural_executor.py +0 -0
  669. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_supply_chain_rules.py +0 -0
  670. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_testing_framework.py +0 -0
  671. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/test_webhook_encryption.py +0 -0
  672. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/__init__.py +0 -0
  673. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/conftest.py +0 -0
  674. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_adr_tools.py +0 -0
  675. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_analysis_tools.py +0 -0
  676. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_dead_code_tools.py +0 -0
  677. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_distill_tools.py +0 -0
  678. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_history_tools.py +0 -0
  679. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_learning_tools.py +0 -0
  680. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_lsp_tools.py +0 -0
  681. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_maintenance_tools_phase2.py +0 -0
  682. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_navigation_tools.py +0 -0
  683. {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
  684. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_readiness_tools.py +0 -0
  685. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_search_status_mismatch.py +0 -0
  686. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_search_tools.py +0 -0
  687. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/code_intel/tools/test_server_tools.py +0 -0
  688. {attocode_code_intel-0.1.21/tests/unit/eval → attocode_code_intel-0.1.22/tests/unit/context}/__init__.py +0 -0
  689. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_action_hash.py +0 -0
  690. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_ast_service_adapter.py +0 -0
  691. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_blob_oid.py +0 -0
  692. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_cache_manifest.py +0 -0
  693. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_cas.py +0 -0
  694. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_embedding_rotation.py +0 -0
  695. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_pagerank_restoration.py +0 -0
  696. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_provenance.py +0 -0
  697. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_retrieval_pin.py +0 -0
  698. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/context/test_vector_store_dim_safety.py +0 -0
  699. {attocode_code_intel-0.1.21/tests/unit/integrations → attocode_code_intel-0.1.22/tests/unit/eval}/__init__.py +0 -0
  700. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/conftest.py +0 -0
  701. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_acc_at_k.py +0 -0
  702. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_broad_candidate_audit.py +0 -0
  703. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_calibration_demo.py +0 -0
  704. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_harness.py +0 -0
  705. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_agents.py +0 -0
  706. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_ci.py +0 -0
  707. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_datasets.py +0 -0
  708. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_dense.py +0 -0
  709. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_function_bm25.py +0 -0
  710. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_function_dense.py +0 -0
  711. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_rerank.py +0 -0
  712. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_retrieve.py +0 -0
  713. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_run.py +0 -0
  714. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_matrix_stats.py +0 -0
  715. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_accuracy.py +0 -0
  716. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_config.py +0 -0
  717. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_corpus.py +0 -0
  718. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_evaluator.py +0 -0
  719. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_predicate.py +0 -0
  720. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_scoring.py +0 -0
  721. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_bench_template_engine.py +0 -0
  722. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_rule_harness_import.py +0 -0
  723. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_search_quality_reporting.py +0 -0
  724. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_search_readiness.py +0 -0
  725. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/eval/test_seed_attocode_fixtures.py +0 -0
  726. {attocode_code_intel-0.1.21/tests/unit/integrations/context → attocode_code_intel-0.1.22/tests/unit/integrations}/__init__.py +0 -0
  727. {attocode_code_intel-0.1.21/tests/unit/integrations/utilities → attocode_code_intel-0.1.22/tests/unit/integrations/context}/__init__.py +0 -0
  728. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_architecture_drift.py +0 -0
  729. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_ast_service_hydration.py +0 -0
  730. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_body_chunking.py +0 -0
  731. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_call_graph.py +0 -0
  732. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_code_analyzer.py +0 -0
  733. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_codebase_ast.py +0 -0
  734. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_codebase_context.py +0 -0
  735. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_context_stores_closed.py +0 -0
  736. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_cross_ref_search.py +0 -0
  737. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_embedder_default.py +0 -0
  738. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_embeddings.py +0 -0
  739. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_embeddings_query.py +0 -0
  740. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_go_symbols.py +0 -0
  741. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_hydration.py +0 -0
  742. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_index_store.py +0 -0
  743. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_model_mismatch.py +0 -0
  744. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_path_downweight.py +0 -0
  745. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_query_routing.py +0 -0
  746. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_semantic_search.py +0 -0
  747. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_supported_languages.py +0 -0
  748. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_temporal_coupling.py +0 -0
  749. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_trigram_index.py +0 -0
  750. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_trigram_regex.py +0 -0
  751. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/context/test_ts_parser.py +0 -0
  752. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_dataflow.py +0 -0
  753. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_feature_flags.py +0 -0
  754. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_new_security_rules.py +0 -0
  755. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_security_autofix.py +0 -0
  756. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_security_matcher.py +0 -0
  757. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/test_streaming_lsp.py +0 -0
  758. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/utilities/test_ignore.py +0 -0
  759. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/integrations/utilities/test_token_estimate.py +0 -0
  760. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/test_code_intel.py +0 -0
  761. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/test_code_intel_hydration.py +0 -0
  762. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.22}/tests/unit/test_errors.py +0 -0
  763. {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.21
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.** The server reads at most 50,000 files and skips files over 1 MB. 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.
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.** The server reads at most 50,000 files and skips files over 1 MB. 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.
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.21"
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 experiment results remain available in the tagged Git repository.
146
- exclude = ["/evals/results/"]
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"
@@ -49,4 +49,4 @@ def __getattr__(name: str) -> Any:
49
49
  raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
50
50
 
51
51
  # The other copy is packages/code-intel/pyproject.toml. A test checks that both match.
52
- __version__ = "0.1.21"
52
+ __version__ = "0.1.22"
@@ -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
- if snapshot is None or not snapshot.valid_for(self):
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
- _SAFETY_CEILING = 50_000 # noqa: N806 # OOM guard for massive repos
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
- if len(files) >= _SAFETY_CEILING:
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 < _SAFETY_CEILING:
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
- # Discovery stops enumerating at50k. Counts at that boundary are
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
 
@@ -36,16 +36,50 @@ _ANTHROPIC_MODEL = "claude-haiku-4-5-20251001"
36
36
  _WORKERS = 32
37
37
 
38
38
 
39
- def _default_llm_caller() -> LLMCaller:
40
- """The project's shared client. Only importable inside this repo."""
41
- try:
42
- from eval.meta_harness._llm_client import call_llm
43
- except ModuleNotFoundError as exc: # pragma: no cover - depends on checkout
44
- raise RuntimeError(
45
- "No LLM caller available. Pass llm_caller=..., or run inside the "
46
- "attocode repo where eval.meta_harness is importable."
47
- ) from exc
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 the project .env when running inside the repo."""
57
- try:
58
- from eval.meta_harness._llm_client import load_env
59
- except ModuleNotFoundError: # pragma: no cover - depends on checkout
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:
@@ -307,27 +307,11 @@ def _validate_llm_yaml(
307
307
 
308
308
 
309
309
  def _default_llm_caller(prompt: str) -> str:
310
- """Resolve the project's shared LLM client lazily — keeps the
311
- optional ``openai``/``anthropic`` import out of the import path for
312
- callers that only want the deterministic synthesizer.
313
-
314
- The default client lives under the dev-only ``eval/meta_harness/``
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,2 @@
1
+ # Local index data of attocode-code-intel
2
+ *
@@ -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