attocode-code-intel 0.1.19__tar.gz → 0.1.21__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 (756) hide show
  1. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/PKG-INFO +10 -1
  2. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/README.md +9 -0
  3. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/pyproject.toml +1 -1
  4. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/__init__.py +1 -1
  5. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/ast_service.py +19 -1
  6. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/codebase_ast.py +118 -69
  7. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/codebase_context.py +51 -0
  8. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/cross_references.py +2 -2
  9. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/semantic_search.py +49 -12
  10. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/syntax_evidence.py +5 -3
  11. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/ts_parser.py +33 -13
  12. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/service.py +4 -0
  13. attocode_code_intel-0.1.21/tests/test_capacity_experiment.py +43 -0
  14. attocode_code_intel-0.1.21/tests/test_experiment_dispatch.py +176 -0
  15. attocode_code_intel-0.1.21/tests/test_fallback_lexical.py +117 -0
  16. attocode_code_intel-0.1.21/tests/test_native_capture.py +458 -0
  17. attocode_code_intel-0.1.21/tests/test_ocaml_parser_routing.py +88 -0
  18. attocode_code_intel-0.1.21/tests/test_optional_grammar_admission.py +47 -0
  19. attocode_code_intel-0.1.21/tests/test_optional_language_depth.py +249 -0
  20. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_quality_evidence.py +1 -1
  21. attocode_code_intel-0.1.21/tests/test_search_coverage.py +237 -0
  22. attocode_code_intel-0.1.21/tests/test_search_coverage_scale.py +92 -0
  23. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_source_exclusions.py +30 -0
  24. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/.gitignore +0 -0
  25. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/LICENSE +0 -0
  26. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/README.md +0 -0
  27. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/ast_restart_probe.py +0 -0
  28. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/body_cost_probe.py +0 -0
  29. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/broad_candidate_audit.yaml +0 -0
  30. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/broad_query_cases.yaml +0 -0
  31. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/broad_query_external_cases.yaml +0 -0
  32. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/broad_query_final_holdout.yaml +0 -0
  33. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/client_comparison.py +0 -0
  34. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/client_responses.py +0 -0
  35. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/codex_repair_study.py +0 -0
  36. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/daily.py +0 -0
  37. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-13-codex-repair-diagnostic.md +0 -0
  38. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-13-r7-task-completion-pilot.md +0 -0
  39. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-14-workflow-pilot.md +0 -0
  40. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-body-file-trial.md +0 -0
  41. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-body-file-validation.json +0 -0
  42. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-expansion-ablation.md +0 -0
  43. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-expansion-development.json +0 -0
  44. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-expansion-validation.json +0 -0
  45. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-fresh-navigation-queries.json +0 -0
  46. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-headroom-retrieval-questions.json +0 -0
  47. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-15-headroom-retrieval.md +0 -0
  48. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-cross-file-questions.json +0 -0
  49. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-deep-page-questions.json +0 -0
  50. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-kotlin-test-paths.json +0 -0
  51. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-navigation-prefix-validation.json +0 -0
  52. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-navigation-prefix.json +0 -0
  53. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-negation-candidate.patch.gz +0 -0
  54. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-negation-development.json +0 -0
  55. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-negation-freeze.json +0 -0
  56. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-negation-validation.json +0 -0
  57. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/accepted.patch.gz +0 -0
  58. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/boundaries.patch.gz +0 -0
  59. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/combined.patch.gz +0 -0
  60. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/expansion.patch.gz +0 -0
  61. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/identity.patch.gz +0 -0
  62. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/manifest.json +0 -0
  63. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/negation.patch.gz +0 -0
  64. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/owner_only.patch.gz +0 -0
  65. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-candidates/owners.patch.gz +0 -0
  66. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-confirmation-freeze.json +0 -0
  67. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-confirmation.json +0 -0
  68. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-development.json +0 -0
  69. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-freeze.json +0 -0
  70. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-correctness-validation.json +0 -0
  71. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-usefulness-development.json +0 -0
  72. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-usefulness-validation.json +0 -0
  73. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-search-usefulness.json +0 -0
  74. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-16-test-intent.json +0 -0
  75. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-change-focus-candidate.patch.gz +0 -0
  76. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-change-workflow-replays.json +0 -0
  77. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-change-workflow-replays.md +0 -0
  78. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-c2f.patch.gz +0 -0
  79. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-development.json +0 -0
  80. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-freeze.json +0 -0
  81. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-t.patch.gz +0 -0
  82. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-tcf.patch.gz +0 -0
  83. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-file-coverage-validation.json +0 -0
  84. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-search-batch-candidate.patch.gz +0 -0
  85. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-search-batch-development.json +0 -0
  86. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-search-batch-freeze.json +0 -0
  87. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-search-batch-validation.json +0 -0
  88. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-candidate.json +0 -0
  89. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-development.json +0 -0
  90. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-freeze.json +0 -0
  91. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-t2.patch.gz +0 -0
  92. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-t3.patch.gz +0 -0
  93. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-17-test-source-slot-validation.json +0 -0
  94. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-candidate.json +0 -0
  95. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-development.json +0 -0
  96. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-freeze.json +0 -0
  97. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-p.patch.gz +0 -0
  98. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-pf.patch.gz +0 -0
  99. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-paired-source-validation.json +0 -0
  100. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-candidate.json +0 -0
  101. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-development.json +0 -0
  102. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-freeze.json +0 -0
  103. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-q1.patch.gz +0 -0
  104. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-q2.patch.gz +0 -0
  105. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-q3.patch.gz +0 -0
  106. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-q5.patch.gz +0 -0
  107. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-s1.patch.gz +0 -0
  108. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-s2-equivalence.json +0 -0
  109. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-s2-freeze.json +0 -0
  110. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-s2-validation.json +0 -0
  111. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-s2.patch.gz +0 -0
  112. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-18-query-source-validation.json +0 -0
  113. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-19-cpu-fn-embed-cost.json +0 -0
  114. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-20-clause-balance-validation.json +0 -0
  115. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-20-search-repair-validation.json +0 -0
  116. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-20-test-support-development.json +0 -0
  117. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-20-test-support-freeze.json +0 -0
  118. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-23-preview-windows.json +0 -0
  119. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/designs/2026-10-23-restart-fingerprints.json +0 -0
  120. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/discovery_reuse_probe.py +0 -0
  121. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/external_benchmarks.py +0 -0
  122. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/external_study.py +0 -0
  123. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/graded_blind_pack.yaml +0 -0
  124. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/lexical_sql_probe.py +0 -0
  125. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/localize_study.py +0 -0
  126. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/locbench_title_pack.yaml +0 -0
  127. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/onboarding_study.py +0 -0
  128. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/pilot.py +0 -0
  129. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/quality_scoring.py +0 -0
  130. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/quality_tasks.py +0 -0
  131. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/release_gate.py +0 -0
  132. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/repair_grading.py +0 -0
  133. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/repair_study.py +0 -0
  134. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/repair_worker.py +0 -0
  135. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/responses.py +0 -0
  136. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/restart_discovery_probe.py +0 -0
  137. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/search_evidence_audit.py +0 -0
  138. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/source_view_transfer.yaml +0 -0
  139. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/structural_write_probe.py +0 -0
  140. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/study.py +0 -0
  141. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/study_clients.py +0 -0
  142. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/study_events.py +0 -0
  143. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/study_tasks.py +0 -0
  144. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/token_overhead.py +0 -0
  145. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/understanding_scoring.py +0 -0
  146. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/understanding_study.py +0 -0
  147. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/warm_cache.py +0 -0
  148. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/evals/workflows.py +0 -0
  149. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/GUIDELINES.md +0 -0
  150. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/__init__.py +0 -0
  151. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/errors/__init__.py +0 -0
  152. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/__init__.py +0 -0
  153. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/__init__.py +0 -0
  154. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/architecture_drift.py +0 -0
  155. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/ast_chunker.py +0 -0
  156. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/ast_snapshot.py +0 -0
  157. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/blob_oid.py +0 -0
  158. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/cache_manifest.py +0 -0
  159. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/cas.py +0 -0
  160. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/code_analyzer.py +0 -0
  161. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/cross_mode.py +0 -0
  162. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/discovery_snapshot.py +0 -0
  163. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/embedding_rotation.py +0 -0
  164. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/embeddings.py +0 -0
  165. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/frecency.py +0 -0
  166. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/fuzzy.py +0 -0
  167. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/hierarchical_explorer.py +0 -0
  168. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/hydration.py +0 -0
  169. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/index_probe.py +0 -0
  170. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/index_repair.py +0 -0
  171. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/index_store.py +0 -0
  172. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/language_registry.py +0 -0
  173. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/memory_store.py +0 -0
  174. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/module_resolution.py +0 -0
  175. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/parse_diagnostics.py +0 -0
  176. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/query_constraints.py +0 -0
  177. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/query_history.py +0 -0
  178. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/reranker.py +0 -0
  179. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/systemone_ranker.py +0 -0
  180. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/temporal_coupling.py +0 -0
  181. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/trigram_index.py +0 -0
  182. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/trigram_regex.py +0 -0
  183. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/context/vector_store.py +0 -0
  184. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/feature_flags/__init__.py +0 -0
  185. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/lsp/__init__.py +0 -0
  186. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/lsp/client.py +0 -0
  187. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/mcp/__init__.py +0 -0
  188. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/mcp/client.py +0 -0
  189. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/__init__.py +0 -0
  190. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/custom_rules.py +0 -0
  191. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/dataflow.py +0 -0
  192. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/dependency_audit.py +0 -0
  193. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/matcher.py +0 -0
  194. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/patterns.py +0 -0
  195. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/security/scanner.py +0 -0
  196. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/utilities/__init__.py +0 -0
  197. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/utilities/ignore.py +0 -0
  198. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/integrations/utilities/token_estimate.py +0 -0
  199. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/tricks/__init__.py +0 -0
  200. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/tricks/recursive_context.py +0 -0
  201. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/types/__init__.py +0 -0
  202. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/types/events.py +0 -0
  203. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_internal/types/severity.py +0 -0
  204. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/_shared.py +0 -0
  205. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/analysis_coverage.py +0 -0
  206. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/__init__.py +0 -0
  207. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/access.py +0 -0
  208. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/app.py +0 -0
  209. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/__init__.py +0 -0
  210. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/api_keys.py +0 -0
  211. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/context.py +0 -0
  212. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/jwt.py +0 -0
  213. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/oauth.py +0 -0
  214. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/auth/passwords.py +0 -0
  215. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/deps.py +0 -0
  216. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/knowledge_bridge.py +0 -0
  217. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/mcp_transport.py +0 -0
  218. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/middleware.py +0 -0
  219. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/models.py +0 -0
  220. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/providers/__init__.py +0 -0
  221. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/providers/db_provider.py +0 -0
  222. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/providers/local_provider.py +0 -0
  223. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/providers/remote_provider.py +0 -0
  224. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/repository_source.py +0 -0
  225. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/__init__.py +0 -0
  226. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/_pin_helper.py +0 -0
  227. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/activity.py +0 -0
  228. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/adr.py +0 -0
  229. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/analysis.py +0 -0
  230. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/api_keys.py +0 -0
  231. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/auth.py +0 -0
  232. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/branches.py +0 -0
  233. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/cross_repo_search.py +0 -0
  234. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/embeddings.py +0 -0
  235. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/files.py +0 -0
  236. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/files_v2.py +0 -0
  237. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/gc.py +0 -0
  238. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/git_v2.py +0 -0
  239. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/graph.py +0 -0
  240. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/graph_viz.py +0 -0
  241. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/health.py +0 -0
  242. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/history.py +0 -0
  243. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/jobs.py +0 -0
  244. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/learning.py +0 -0
  245. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/lsp.py +0 -0
  246. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/notify.py +0 -0
  247. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/operations.py +0 -0
  248. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/orgs.py +0 -0
  249. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/preferences.py +0 -0
  250. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/presence.py +0 -0
  251. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/projects.py +0 -0
  252. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/repos.py +0 -0
  253. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/search.py +0 -0
  254. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/snapshots.py +0 -0
  255. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/webhooks.py +0 -0
  256. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/routes/websocket.py +0 -0
  257. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/static/graph.html +0 -0
  258. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/api/utils.py +0 -0
  259. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/artifacts/__init__.py +0 -0
  260. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/artifacts/hashing.py +0 -0
  261. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/artifacts/provenance.py +0 -0
  262. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/artifacts/retrieval_pin.py +0 -0
  263. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/audit.py +0 -0
  264. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/bug_finder.py +0 -0
  265. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/bundle.py +0 -0
  266. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/catalog.py +0 -0
  267. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/change_evidence.py +0 -0
  268. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/change_investigation.py +0 -0
  269. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/change_review.py +0 -0
  270. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/cli.py +0 -0
  271. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/community.py +0 -0
  272. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/confidence/__init__.py +0 -0
  273. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/confidence/jev.py +0 -0
  274. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/confidence/llm.py +0 -0
  275. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/confidence/redact.py +0 -0
  276. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/confidence/settings.py +0 -0
  277. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/config.py +0 -0
  278. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/crypto.py +0 -0
  279. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/db/__init__.py +0 -0
  280. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/db/base.py +0 -0
  281. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/db/engine.py +0 -0
  282. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/db/models.py +0 -0
  283. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/entrypoint.py +0 -0
  284. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/focused_evidence.py +0 -0
  285. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/freshness.py +0 -0
  286. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/gateway.py +0 -0
  287. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/git/__init__.py +0 -0
  288. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/git/credentials.py +0 -0
  289. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/git/manager.py +0 -0
  290. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/git/models.py +0 -0
  291. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/git/storage.py +0 -0
  292. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/graph_query_parser.py +0 -0
  293. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/helpers.py +0 -0
  294. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/__init__.py +0 -0
  295. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/debouncer.py +0 -0
  296. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/delta_indexer.py +0 -0
  297. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/full_indexer.py +0 -0
  298. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/incremental.py +0 -0
  299. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/parser.py +0 -0
  300. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/indexing/summarizer.py +0 -0
  301. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/installer.py +0 -0
  302. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/investigation_cli.py +0 -0
  303. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/knowledge.py +0 -0
  304. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/local_knowledge.py +0 -0
  305. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/alembic.ini +0 -0
  306. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/env.py +0 -0
  307. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/script.py.mako +0 -0
  308. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/001_initial_schema.py +0 -0
  309. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/002_branch_version_and_embeddings.py +0 -0
  310. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/003_embedding_uniqueness_and_cascade.py +0 -0
  311. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/004_audit_events.py +0 -0
  312. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/005_user_preferences.py +0 -0
  313. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/006_google_oauth.py +0 -0
  314. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/007_pgvector_embeddings.py +0 -0
  315. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/008_symbol_references.py +0 -0
  316. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/009_webhook_secret_encryption.py +0 -0
  317. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/010_add_commits_table.py +0 -0
  318. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/011_commit_changed_files.py +0 -0
  319. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/012_branch_merged_at.py +0 -0
  320. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/013_revoked_tokens.py +0 -0
  321. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/014_blame_hunks.py +0 -0
  322. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/015_commit_file_stats.py +0 -0
  323. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/016_embedding_provenance_columns.py +0 -0
  324. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/017_provenance_table.py +0 -0
  325. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/018_repo_snapshots.py +0 -0
  326. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/019_symref_caller.py +0 -0
  327. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/migrations/versions/020_shared_knowledge.py +0 -0
  328. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/onboarding.py +0 -0
  329. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/output.py +0 -0
  330. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/precision.py +0 -0
  331. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/presence.py +0 -0
  332. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/probe.py +0 -0
  333. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/project_dir.py +0 -0
  334. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/pubsub.py +0 -0
  335. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/query_ranking.py +0 -0
  336. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/readiness.py +0 -0
  337. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/redis.py +0 -0
  338. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/reference_pages.py +0 -0
  339. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/remote.py +0 -0
  340. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/repo_ranker.py +0 -0
  341. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/request_context.py +0 -0
  342. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/__init__.py +0 -0
  343. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/ci.py +0 -0
  344. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/combinators.py +0 -0
  345. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/enricher.py +0 -0
  346. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/evolution.py +0 -0
  347. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/executor.py +0 -0
  348. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/filters/__init__.py +0 -0
  349. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/filters/pipeline.py +0 -0
  350. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/formatter.py +0 -0
  351. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/hygiene.py +0 -0
  352. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/importers/__init__.py +0 -0
  353. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/importers/semgrep.py +0 -0
  354. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/loader.py +0 -0
  355. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/marketplace.py +0 -0
  356. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/metavar.py +0 -0
  357. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/model.py +0 -0
  358. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/__init__.py +0 -0
  359. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/_license_templates/Apache-2.0.txt +0 -0
  360. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/_license_templates/MIT.txt +0 -0
  361. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/LICENSE +0 -0
  362. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/NOTICE +0 -0
  363. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/PORTING.md +0 -0
  364. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/manifest.yaml +0 -0
  365. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B105-hardcoded-password.yaml +0 -0
  366. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B303-weak-md5.yaml +0 -0
  367. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B304-weak-des.yaml +0 -0
  368. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B307-use-of-eval.yaml +0 -0
  369. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B324-weak-sha1.yaml +0 -0
  370. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B501-no-cert-validation.yaml +0 -0
  371. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B602-shell-true.yaml +0 -0
  372. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/bandit-python/rules/B608-sqli.yaml +0 -0
  373. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/LICENSE +0 -0
  374. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/NOTICE +0 -0
  375. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/PORTING.md +0 -0
  376. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/manifest.yaml +0 -0
  377. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/eqeqeq.yaml +0 -0
  378. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-eval.yaml +0 -0
  379. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-implied-eval.yaml +0 -0
  380. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-new-func.yaml +0 -0
  381. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-throw-literal.yaml +0 -0
  382. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-var.yaml +0 -0
  383. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-with.yaml +0 -0
  384. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/LICENSE +0 -0
  385. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/NOTICE +0 -0
  386. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/PORTING.md +0 -0
  387. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/manifest.yaml +0 -0
  388. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G101-hardcoded-credentials.yaml +0 -0
  389. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G102-bind-all-interfaces.yaml +0 -0
  390. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G103-unsafe-block.yaml +0 -0
  391. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G201-sql-format.yaml +0 -0
  392. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G304-file-inclusion.yaml +0 -0
  393. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G401-weak-cipher.yaml +0 -0
  394. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G402-tls-min-version.yaml +0 -0
  395. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/community/gosec-go/rules/G501-md5-import.yaml +0 -0
  396. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/cpp/manifest.yaml +0 -0
  397. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/cpp/rules/security.yaml +0 -0
  398. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/cpp/rules/structural.yaml +0 -0
  399. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/csharp/manifest.yaml +0 -0
  400. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/csharp/rules/security.yaml +0 -0
  401. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/csharp/rules/structural.yaml +0 -0
  402. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/manifest.yaml +0 -0
  403. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/rules/performance.yaml +0 -0
  404. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/rules/security.yaml +0 -0
  405. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/rules/structural.yaml +0 -0
  406. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/taint/sanitizers.yaml +0 -0
  407. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/taint/sinks.yaml +0 -0
  408. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/go/taint/sources.yaml +0 -0
  409. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/java/manifest.yaml +0 -0
  410. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/java/rules/correctness.yaml +0 -0
  411. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/java/rules/structural.yaml +0 -0
  412. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/java/taint/sinks.yaml +0 -0
  413. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/java/taint/sources.yaml +0 -0
  414. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/kotlin/manifest.yaml +0 -0
  415. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/kotlin/rules/correctness.yaml +0 -0
  416. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/kotlin/rules/structural.yaml +0 -0
  417. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/php/manifest.yaml +0 -0
  418. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/php/rules/security.yaml +0 -0
  419. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/php/rules/structural.yaml +0 -0
  420. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/python/manifest.yaml +0 -0
  421. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/python/rules/performance.yaml +0 -0
  422. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/python/rules/structural.yaml +0 -0
  423. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/ruby/manifest.yaml +0 -0
  424. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/ruby/rules/security.yaml +0 -0
  425. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/ruby/rules/structural.yaml +0 -0
  426. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/rust/manifest.yaml +0 -0
  427. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/rust/rules/correctness.yaml +0 -0
  428. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/rust/rules/structural.yaml +0 -0
  429. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/typescript/manifest.yaml +0 -0
  430. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/typescript/rules/performance.yaml +0 -0
  431. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/examples/typescript/rules/structural.yaml +0 -0
  432. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/packs/pack_loader.py +0 -0
  433. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/plugins/__init__.py +0 -0
  434. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/plugins/plugin_loader.py +0 -0
  435. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/profiling.py +0 -0
  436. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/registry.py +0 -0
  437. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/sarif.py +0 -0
  438. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/synthesis.py +0 -0
  439. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/rules/testing.py +0 -0
  440. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/search_evidence.py +0 -0
  441. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/server.py +0 -0
  442. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/sharing.py +0 -0
  443. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/__init__.py +0 -0
  444. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/branch_overlay.py +0 -0
  445. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/content_store.py +0 -0
  446. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/dependency_store.py +0 -0
  447. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/diff_engine.py +0 -0
  448. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/embedding_store.py +0 -0
  449. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/provenance_store.py +0 -0
  450. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/security_scanner_db.py +0 -0
  451. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/storage/symbol_store.py +0 -0
  452. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/structural_evidence.py +0 -0
  453. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/symbol_inspection.py +0 -0
  454. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/symbol_links.py +0 -0
  455. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/telemetry.py +0 -0
  456. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/test_ranking.py +0 -0
  457. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/testing/__init__.py +0 -0
  458. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/testing/fixtures.py +0 -0
  459. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/testing/helpers.py +0 -0
  460. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/testing/mocks.py +0 -0
  461. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/__init__.py +0 -0
  462. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/adr_tools.py +0 -0
  463. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/analysis_tools.py +0 -0
  464. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/composite_tools.py +0 -0
  465. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/cross_mode_tools.py +0 -0
  466. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/dead_code_tools.py +0 -0
  467. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/distill_tools.py +0 -0
  468. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/frecency_tools.py +0 -0
  469. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/fuzzy_tools.py +0 -0
  470. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/history_tools.py +0 -0
  471. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/learning_tools.py +0 -0
  472. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/lsp_tools.py +0 -0
  473. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/maintenance_tools.py +0 -0
  474. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/navigation_tools.py +0 -0
  475. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/overlay_tools.py +0 -0
  476. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/pin_store.py +0 -0
  477. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/pin_tools.py +0 -0
  478. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/query_constraints_tools.py +0 -0
  479. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/query_history_tools.py +0 -0
  480. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/readiness_tools.py +0 -0
  481. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/rule_tools.py +0 -0
  482. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/search_tools.py +0 -0
  483. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/tools/snapshot_tools.py +0 -0
  484. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/workers/__init__.py +0 -0
  485. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/workers/job_utils.py +0 -0
  486. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/workers/jobs.py +0 -0
  487. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/workers/run.py +0 -0
  488. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/src/attocode_intel/workers/settings.py +0 -0
  489. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/.attocode/rules/team-preferences.yaml +0 -0
  490. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/go/bad_patterns.go +0 -0
  491. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/java/BadPatterns.java +0 -0
  492. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/python/bad_patterns.py +0 -0
  493. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/rust/bad_patterns.rs +0 -0
  494. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/fixtures/rule_violations/typescript/bad_patterns.ts +0 -0
  495. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/__init__.py +0 -0
  496. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/__init__.py +0 -0
  497. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/conftest.py +0 -0
  498. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/test_http_smoke.py +0 -0
  499. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/test_mcp_tools_audit.py +0 -0
  500. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/test_remote_mcp_http_integration.py +0 -0
  501. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/code_intel/test_service_integration.py +0 -0
  502. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/integration/test_rule_bench_floor_e2e.py +0 -0
  503. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_ast_snapshot.py +0 -0
  504. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_behavioral_negation.py +0 -0
  505. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_change_focus.py +0 -0
  506. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_change_investigation.py +0 -0
  507. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_chunk_identity.py +0 -0
  508. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_codex_repair_study.py +0 -0
  509. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_cold_discovery.py +0 -0
  510. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_cold_index_cost.py +0 -0
  511. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_compact_inspection.py +0 -0
  512. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_corpus_capture.py +0 -0
  513. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_daily_workflows.py +0 -0
  514. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_db_navigation_http.py +0 -0
  515. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_discovery_reuse.py +0 -0
  516. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_doctor.py +0 -0
  517. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_doctor_runtime.py +0 -0
  518. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_edit_restart.py +0 -0
  519. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_experiment_evidence.py +0 -0
  520. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_experiment_readiness.py +0 -0
  521. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_external_study.py +0 -0
  522. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_file_symbol_scope.py +0 -0
  523. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_fixture_source_alias.py +0 -0
  524. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_focused_inspection.py +0 -0
  525. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_image_budget.py +0 -0
  526. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_importance_publication.py +0 -0
  527. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_index_probe.py +0 -0
  528. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_index_processes.py +0 -0
  529. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_index_reuse.py +0 -0
  530. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_index_sequences.py +0 -0
  531. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_kotlin_test_paths.py +0 -0
  532. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_language_capabilities.py +0 -0
  533. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_lean_profile.py +0 -0
  534. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_lexical_sql_cost.py +0 -0
  535. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_local_reranker.py +0 -0
  536. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_local_workflow_evidence.py +0 -0
  537. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_localize_study.py +0 -0
  538. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_lsp_diagnostics.py +0 -0
  539. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_lsp_document_lifecycle.py +0 -0
  540. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_lsp_stderr_lifecycle.py +0 -0
  541. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_mcp_search_evaluation.py +0 -0
  542. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_mixed_workspace.py +0 -0
  543. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_module_ownership.py +0 -0
  544. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_native_experiment.py +0 -0
  545. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_navigation_evidence.py +0 -0
  546. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_navigation_prefix_trial.py +0 -0
  547. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_onboarding_study.py +0 -0
  548. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_operation_contracts.py +0 -0
  549. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_parse_recovery.py +0 -0
  550. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_parser_thread_isolation.py +0 -0
  551. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_pilot.py +0 -0
  552. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_precision_protocol.py +0 -0
  553. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_precision_recovery.py +0 -0
  554. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_preview_admission.py +0 -0
  555. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_preview_experiment.py +0 -0
  556. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_preview_sources.py +0 -0
  557. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_preview_windows.py +0 -0
  558. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_product.py +0 -0
  559. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_quality_cloud.py +0 -0
  560. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_quality_evaluation.py +0 -0
  561. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_quality_lifecycle.py +0 -0
  562. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_quality_runner.py +0 -0
  563. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_query_ranking.py +0 -0
  564. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_query_requirements.py +0 -0
  565. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_ranking_intent.py +0 -0
  566. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_real_language_server.py +0 -0
  567. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_recovery_readiness.py +0 -0
  568. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_release_verification.py +0 -0
  569. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_remote.py +0 -0
  570. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_repair_study.py +0 -0
  571. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_restart_experiment.py +0 -0
  572. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_retrieval_ablation.py +0 -0
  573. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_retrieval_audit.py +0 -0
  574. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_retrieval_body_trial.py +0 -0
  575. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_retrieval_cycle.py +0 -0
  576. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_search_budget_repair.py +0 -0
  577. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_search_evidence.py +0 -0
  578. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_search_evidence_audit.py +0 -0
  579. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_search_usefulness.py +0 -0
  580. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_snippet_budget.py +0 -0
  581. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_structural_evidence.py +0 -0
  582. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_structural_write_cost.py +0 -0
  583. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_study.py +0 -0
  584. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_symbol_order.py +0 -0
  585. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_systemone_ranker.py +0 -0
  586. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_test_intent_trial.py +0 -0
  587. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_token_overhead.py +0 -0
  588. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_trigram_workspace.py +0 -0
  589. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_understanding_evaluation.py +0 -0
  590. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_walk_order.py +0 -0
  591. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_warm_cache.py +0 -0
  592. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/test_workflow_sequences.py +0 -0
  593. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/__init__.py +0 -0
  594. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/__init__.py +0 -0
  595. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/conftest.py +0 -0
  596. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_advisory_lock.py +0 -0
  597. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_api.py +0 -0
  598. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_api_phase3a.py +0 -0
  599. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_api_v2.py +0 -0
  600. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_auth.py +0 -0
  601. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_branch_versioning.py +0 -0
  602. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_bug_finder.py +0 -0
  603. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_call_graph_tool.py +0 -0
  604. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_ci_runner.py +0 -0
  605. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cli_lifecycle.py +0 -0
  606. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cli_maintenance_local.py +0 -0
  607. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cli_ops.py +0 -0
  608. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cli_query_commands.py +0 -0
  609. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cli_remote.py +0 -0
  610. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_codex_rereview_polish.py +0 -0
  611. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_combinators.py +0 -0
  612. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_confidence.py +0 -0
  613. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_confidence_adoption.py +0 -0
  614. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_config.py +0 -0
  615. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_config_remote.py +0 -0
  616. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_cross_mode.py +0 -0
  617. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_db_security_scan.py +0 -0
  618. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_deps.py +0 -0
  619. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_diff_engine.py +0 -0
  620. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_edge_cases.py +0 -0
  621. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_frecency.py +0 -0
  622. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_fuzzy.py +0 -0
  623. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_index_store_migration.py +0 -0
  624. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_kw_index_status.py +0 -0
  625. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_lsp_call_graph.py +0 -0
  626. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_lsp_enrichment.py +0 -0
  627. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_lsp_extended_models.py +0 -0
  628. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_marketplace.py +0 -0
  629. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_metavar.py +0 -0
  630. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_middleware.py +0 -0
  631. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_notify_enhanced.py +0 -0
  632. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_org_isolation.py +0 -0
  633. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_pack_autoload.py +0 -0
  634. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_profiling.py +0 -0
  635. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_project_discovery.py +0 -0
  636. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_provenance_store.py +0 -0
  637. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_pubsub_streams.py +0 -0
  638. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_query_constraints.py +0 -0
  639. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_query_history.py +0 -0
  640. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_readiness.py +0 -0
  641. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_reindex_embeddings.py +0 -0
  642. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_remote_local_fallback.py +0 -0
  643. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_remote_provider.py +0 -0
  644. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_remote_reliability.py +0 -0
  645. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_repo_ranker.py +0 -0
  646. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rule_evolution.py +0 -0
  647. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rule_hygiene.py +0 -0
  648. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rule_synthesis.py +0 -0
  649. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rule_tools.py +0 -0
  650. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rule_violations.py +0 -0
  651. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rules_engine.py +0 -0
  652. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_rules_integration.py +0 -0
  653. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_sarif.py +0 -0
  654. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_search_tools.py +0 -0
  655. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_server_startup.py +0 -0
  656. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_service.py +0 -0
  657. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_service_mode.py +0 -0
  658. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_status_health.py +0 -0
  659. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_structural_executor.py +0 -0
  660. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_supply_chain_rules.py +0 -0
  661. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_testing_framework.py +0 -0
  662. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/test_webhook_encryption.py +0 -0
  663. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/__init__.py +0 -0
  664. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/conftest.py +0 -0
  665. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_adr_tools.py +0 -0
  666. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_analysis_tools.py +0 -0
  667. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_dead_code_tools.py +0 -0
  668. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_distill_tools.py +0 -0
  669. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_history_tools.py +0 -0
  670. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_learning_tools.py +0 -0
  671. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_lsp_tools.py +0 -0
  672. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_maintenance_tools_phase2.py +0 -0
  673. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_navigation_tools.py +0 -0
  674. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_phase2c_anchors_and_overlays.py +0 -0
  675. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_readiness_tools.py +0 -0
  676. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_search_status_mismatch.py +0 -0
  677. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_search_tools.py +0 -0
  678. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/code_intel/tools/test_server_tools.py +0 -0
  679. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/__init__.py +0 -0
  680. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_action_hash.py +0 -0
  681. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_ast_service_adapter.py +0 -0
  682. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_blob_oid.py +0 -0
  683. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_cache_manifest.py +0 -0
  684. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_cas.py +0 -0
  685. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_embedding_rotation.py +0 -0
  686. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_pagerank_restoration.py +0 -0
  687. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_provenance.py +0 -0
  688. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_retrieval_pin.py +0 -0
  689. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/context/test_vector_store_dim_safety.py +0 -0
  690. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/__init__.py +0 -0
  691. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/conftest.py +0 -0
  692. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_acc_at_k.py +0 -0
  693. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_broad_candidate_audit.py +0 -0
  694. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_calibration_demo.py +0 -0
  695. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_harness.py +0 -0
  696. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_agents.py +0 -0
  697. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_ci.py +0 -0
  698. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_datasets.py +0 -0
  699. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_dense.py +0 -0
  700. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_function_bm25.py +0 -0
  701. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_function_dense.py +0 -0
  702. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_rerank.py +0 -0
  703. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_retrieve.py +0 -0
  704. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_run.py +0 -0
  705. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_matrix_stats.py +0 -0
  706. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_mcp_bench.py +0 -0
  707. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_accuracy.py +0 -0
  708. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_config.py +0 -0
  709. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_corpus.py +0 -0
  710. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_evaluator.py +0 -0
  711. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_predicate.py +0 -0
  712. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_scoring.py +0 -0
  713. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_bench_template_engine.py +0 -0
  714. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_rule_harness_import.py +0 -0
  715. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_search_quality_reporting.py +0 -0
  716. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_search_readiness.py +0 -0
  717. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/eval/test_seed_attocode_fixtures.py +0 -0
  718. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/__init__.py +0 -0
  719. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/__init__.py +0 -0
  720. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_architecture_drift.py +0 -0
  721. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_ast_service_hydration.py +0 -0
  722. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_body_chunking.py +0 -0
  723. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_call_graph.py +0 -0
  724. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_code_analyzer.py +0 -0
  725. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_codebase_ast.py +0 -0
  726. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_codebase_context.py +0 -0
  727. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_context_stores_closed.py +0 -0
  728. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_cross_ref_search.py +0 -0
  729. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_embedder_default.py +0 -0
  730. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_embeddings.py +0 -0
  731. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_embeddings_query.py +0 -0
  732. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_go_symbols.py +0 -0
  733. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_hydration.py +0 -0
  734. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_index_store.py +0 -0
  735. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_model_mismatch.py +0 -0
  736. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_path_downweight.py +0 -0
  737. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_query_routing.py +0 -0
  738. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_semantic_search.py +0 -0
  739. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_supported_languages.py +0 -0
  740. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_temporal_coupling.py +0 -0
  741. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_trigram_index.py +0 -0
  742. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_trigram_regex.py +0 -0
  743. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/context/test_ts_parser.py +0 -0
  744. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_dataflow.py +0 -0
  745. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_feature_flags.py +0 -0
  746. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_new_security_rules.py +0 -0
  747. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_security_autofix.py +0 -0
  748. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_security_matcher.py +0 -0
  749. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/test_streaming_lsp.py +0 -0
  750. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/utilities/__init__.py +0 -0
  751. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/utilities/test_ignore.py +0 -0
  752. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/integrations/utilities/test_token_estimate.py +0 -0
  753. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/test_code_intel.py +0 -0
  754. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/test_code_intel_hydration.py +0 -0
  755. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/test_errors.py +0 -0
  756. {attocode_code_intel-0.1.19 → attocode_code_intel-0.1.21}/tests/unit/test_memory_store.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: attocode-code-intel
3
- Version: 0.1.19
3
+ Version: 0.1.21
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,15 @@ 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.21 includes configured search-discovery coverage, OCaml interface
143
+ parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native
144
+ budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
145
+
146
+ Version 0.1.20 improves native OCaml/Perl call candidates and conservative workspace
147
+ import candidates for OCaml, Perl and Crystal. Physical paths and ambiguity remain
148
+ guarded; native limits, ranking and dependencies are unchanged. Optional grammars
149
+ must be explicitly available before analysis; navigation never downloads them.
150
+
142
151
  Version 0.1.19 restores source text into spare space after fitting a complete
143
152
  compact search page. Existing hits, visible text, source lines and continuations
144
153
  remain protected within the same response budget; ranking and retrieval are unchanged.
@@ -26,6 +26,15 @@ 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.21 includes configured search-discovery coverage, OCaml interface
30
+ parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native
31
+ budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
32
+
33
+ Version 0.1.20 improves native OCaml/Perl call candidates and conservative workspace
34
+ import candidates for OCaml, Perl and Crystal. Physical paths and ambiguity remain
35
+ guarded; native limits, ranking and dependencies are unchanged. Optional grammars
36
+ must be explicitly available before analysis; navigation never downloads them.
37
+
29
38
  Version 0.1.19 restores source text into spare space after fitting a complete
30
39
  compact search page. Existing hits, visible text, source lines and continuations
31
40
  remain protected within the same response budget; ranking and retrieval are unchanged.
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
6
6
 
7
7
  [project]
8
8
  name = "attocode-code-intel"
9
- version = "0.1.19"
9
+ version = "0.1.21"
10
10
  description = "Local code search and navigation for coding agents and people"
11
11
  readme = "README.md"
12
12
  requires-python = ">=3.12"
@@ -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.19"
52
+ __version__ = "0.1.21"
@@ -1428,6 +1428,7 @@ class ASTService:
1428
1428
  def _index_definitions(self, rel_path: str, ast: FileAST, *, index=None) -> None:
1429
1429
  """Phase 1: Index all *definitions* (functions, classes, methods)."""
1430
1430
  index = self._index if index is None else index
1431
+ source = 'regex' if ast.language in {'go', 'rust'} and ast.parsing_tier == 'regex' else 'tree-sitter'
1431
1432
  # Top-level functions
1432
1433
  for func in ast.functions:
1433
1434
  loc = SymbolLocation(
@@ -1437,6 +1438,7 @@ class ASTService:
1437
1438
  file_path=rel_path,
1438
1439
  start_line=func.start_line,
1439
1440
  end_line=func.end_line,
1441
+ source=source,
1440
1442
  )
1441
1443
  index.add_definition(loc)
1442
1444
 
@@ -1449,6 +1451,7 @@ class ASTService:
1449
1451
  file_path=rel_path,
1450
1452
  start_line=cls.start_line,
1451
1453
  end_line=cls.end_line,
1454
+ source=source,
1452
1455
  )
1453
1456
  index.add_definition(cls_loc)
1454
1457
 
@@ -1460,6 +1463,7 @@ class ASTService:
1460
1463
  file_path=rel_path,
1461
1464
  start_line=method.start_line,
1462
1465
  end_line=method.end_line,
1466
+ source=source,
1463
1467
  )
1464
1468
  index.add_definition(method_loc)
1465
1469
 
@@ -1472,6 +1476,7 @@ class ASTService:
1472
1476
  file_path=rel_path,
1473
1477
  start_line=0,
1474
1478
  end_line=0,
1479
+ source=source,
1475
1480
  )
1476
1481
  index.add_definition(var_loc)
1477
1482
 
@@ -1563,6 +1568,10 @@ class ASTService:
1563
1568
  # Build a regex pattern for call sites: symbol_name(
1564
1569
  # Only scan for symbols that are actually defined somewhere.
1565
1570
  # Skip comment lines and string literals to reduce false positives.
1571
+ lexical_fallback = ast.language in {'go', 'rust'}
1572
+ if lexical_fallback:
1573
+ from .codebase_ast import _mask_go_rust_source
1574
+ content = _mask_go_rust_source(content, ast.language)
1566
1575
  in_multiline_string = False
1567
1576
  for i, line in enumerate(content.split("\n"), 1):
1568
1577
  stripped = line.lstrip()
@@ -1591,12 +1600,19 @@ class ASTService:
1591
1600
 
1592
1601
  # Strip inline comments and string literals for matching
1593
1602
  # Remove quoted strings to avoid matching inside them
1594
- clean_line = re.sub(r'(["\'])(?:(?!\1).)*\1', '""', line)
1603
+ clean_line = line if lexical_fallback else re.sub(r'(["\'])(?:(?!\1).)*\1', '""', line)
1604
+ declaration = None
1605
+ if ast.language == 'go':
1606
+ declaration = re.match(r'^\s*func\s+(?:\([^)]+\)\s+)?(\w+)\s*\(', clean_line)
1607
+ elif ast.language == 'rust':
1608
+ declaration = re.match(r'^\s*(?:pub(?:\([^)]*\))?\s+)?(?:(?:async|unsafe|extern|const)\s+)*fn\s+(\w+)', clean_line)
1595
1609
  caller = _enclosing_qname(i)
1596
1610
 
1597
1611
  # Find function/method calls: name(
1598
1612
  for m in re.finditer(r"(?<!\.)\b(\w+)\s*\(", clean_line):
1599
1613
  name = m.group(1)
1614
+ if declaration is not None and m.start(1) == declaration.start(1):
1615
+ continue
1600
1616
  if name in known_symbols and name not in ("if", "for", "while", "return", "print"):
1601
1617
  ref = SymbolRef(
1602
1618
  symbol_name=name,
@@ -1605,6 +1621,7 @@ class ASTService:
1605
1621
  line=i,
1606
1622
  syntax_name=name,
1607
1623
  caller_qualified_name=caller,
1624
+ source='regex' if lexical_fallback else 'tree-sitter',
1608
1625
  )
1609
1626
  index.add_reference(ref)
1610
1627
 
@@ -1619,5 +1636,6 @@ class ASTService:
1619
1636
  line=i,
1620
1637
  syntax_name=m.group(0).rsplit("(", 1)[0].strip(),
1621
1638
  caller_qualified_name=caller,
1639
+ source='regex' if lexical_fallback else 'tree-sitter',
1622
1640
  )
1623
1641
  index.add_reference(ref)
@@ -863,12 +863,116 @@ def parse_javascript(content: str, path: str = "") -> FileAST:
863
863
  return ast
864
864
 
865
865
 
866
+ def _mask_go_rust_source(content: str, language: str, *, keep_quoted: bool = False) -> str:
867
+ """Keep coordinates while hiding comments/literals from bounded heuristics.
868
+
869
+ keep_quoted retains ordinary double-quoted Go import paths. Raw literals
870
+ stay hidden in both views so their interior lines cannot become imports.
871
+ This is lexical filtering, not a complete language grammar.
872
+ """
873
+ output = list(content)
874
+ size, i = len(content), 0
875
+ raw_string = re.compile(r'(?:b|c)?r(#{0,255})"')
876
+ rust_char = re.compile(r"'(?:\\(?:u\{[0-9a-fA-F_]+\}|x[0-9a-fA-F]{2}|[^\r\n])|[^\\'\r\n])'")
877
+
878
+ def hide(start, end):
879
+ for at in range(start, min(end, size)):
880
+ if content[at] not in '\r\n':
881
+ output[at] = ' '
882
+
883
+ while i < size:
884
+ start = i
885
+ if content.startswith('//', i):
886
+ end = content.find('\n', i + 2)
887
+ i = size if end < 0 else end
888
+ hide(start, i)
889
+ elif content.startswith('/*', i):
890
+ i, depth = i + 2, 1
891
+ while i < size and depth:
892
+ if language == 'rust' and content.startswith('/*', i):
893
+ depth += 1
894
+ i += 2
895
+ elif content.startswith('*/', i):
896
+ depth -= 1
897
+ i += 2
898
+ else:
899
+ i += 1
900
+ hide(start, i)
901
+ elif language == 'go' and content[i] == '`':
902
+ end = content.find('`', i + 1)
903
+ i = size if end < 0 else end + 1
904
+ hide(start, i)
905
+ elif language == 'rust' and (i == 0 or not (content[i - 1].isalnum() or content[i - 1] == '_')) and (raw := raw_string.match(content, i)):
906
+ closing = '"' + raw.group(1)
907
+ end = content.find(closing, raw.end())
908
+ i = size if end < 0 else end + len(closing)
909
+ hide(start, i)
910
+ elif language == 'rust' and content[i] == "'":
911
+ # An apostrophe also introduces a lifetime/label. Only a complete
912
+ # character token is hidden; &'a and 'label: stay code.
913
+ char = rust_char.match(content, i)
914
+ if char:
915
+ i = char.end()
916
+ hide(start, i)
917
+ else:
918
+ i += 1
919
+ elif content[i] == '"' or (language == 'go' and content[i] == "'"):
920
+ quote = content[i]
921
+ i += 1
922
+ while i < size:
923
+ if content[i] == '\\':
924
+ i += 2
925
+ elif content[i] == quote:
926
+ i += 1
927
+ break
928
+ else:
929
+ i += 1
930
+ if not (keep_quoted and quote == '"'):
931
+ hide(start, i)
932
+ else:
933
+ i += 1
934
+ return ''.join(output)
935
+
936
+
937
+ def _bounded_fallback_end(lines: list[str], start: int) -> int:
938
+ """Find an ordinary declaration body within the existing500-line window."""
939
+ depth = parens = brackets = 0
940
+ opened = False
941
+ for number in range(start, min(start + 500, len(lines))):
942
+ line = lines[number]
943
+ if number > start and not opened and not parens and not brackets and re.match(
944
+ r'\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+|unsafe\s+)?(?:func|fn|struct|enum|trait|type|impl|mod|use|import|const|var)\b', line,
945
+ ):
946
+ return start + 1
947
+ for char in line:
948
+ if opened:
949
+ depth += (char == '{') - (char == '}')
950
+ elif char == '(':
951
+ parens += 1
952
+ elif char == ')':
953
+ parens = max(0, parens - 1)
954
+ elif char == '[':
955
+ brackets += 1
956
+ elif char == ']':
957
+ brackets = max(0, brackets - 1)
958
+ elif not parens and not brackets:
959
+ if char == ';':
960
+ return start + 1
961
+ if char == '{':
962
+ opened, depth = True, 1
963
+ # A return type may close its own braces before the function body
964
+ # opens on the same line. Finish only after processing that line.
965
+ if opened and depth == 0:
966
+ return number + 1
967
+ return start + 1
968
+
969
+
866
970
  def parse_rust(content: str, path: str = "") -> FileAST:
867
971
  """Parse Rust source using regex patterns.
868
972
 
869
973
  Extracts functions, structs, enums, traits, impl blocks, imports (use/mod).
870
974
  """
871
- lines = content.split("\n")
975
+ lines = _mask_go_rust_source(content, 'rust').split("\n")
872
976
  ast = FileAST(path=path, language="rust", line_count=len(lines))
873
977
 
874
978
  for i, line in enumerate(lines):
@@ -894,20 +998,13 @@ def parse_rust(content: str, path: str = "") -> FileAST:
894
998
 
895
999
  # Functions: (pub)? (async)? fn name(...)
896
1000
  fn_match = re.match(
897
- r"^(?:pub(?:\([\w:]+\))?\s+)?(?:async\s+)?(?:unsafe\s+)?(?:extern\s+\"[^\"]*\"\s+)?fn\s+(\w+)",
1001
+ r"^(?:pub(?:\([\w:]+\))?\s+)?(?:async\s+)?(?:unsafe\s+)?(?:extern\s+)?fn\s+(\w+)",
898
1002
  stripped,
899
1003
  )
900
1004
  if fn_match:
901
1005
  func_name = fn_match.group(1)
902
1006
  # Find end via brace matching
903
- end_line = i + 1
904
- brace_count = stripped.count("{") - stripped.count("}")
905
- if brace_count > 0:
906
- for j in range(i + 1, min(i + 500, len(lines))):
907
- brace_count += lines[j].count("{") - lines[j].count("}")
908
- if brace_count <= 0:
909
- end_line = j + 1
910
- break
1007
+ end_line = _bounded_fallback_end(lines, i)
911
1008
  is_async = "async " in stripped.split("fn")[0]
912
1009
  ast.functions.append(FunctionDef(
913
1010
  name=func_name,
@@ -920,14 +1017,7 @@ def parse_rust(content: str, path: str = "") -> FileAST:
920
1017
  # Structs: (pub)? struct Name
921
1018
  struct_match = re.match(r"^(?:pub(?:\([\w:]+\))?\s+)?struct\s+(\w+)", stripped)
922
1019
  if struct_match:
923
- end_line = i + 1
924
- brace_count = stripped.count("{") - stripped.count("}")
925
- if brace_count > 0:
926
- for j in range(i + 1, min(i + 500, len(lines))):
927
- brace_count += lines[j].count("{") - lines[j].count("}")
928
- if brace_count <= 0:
929
- end_line = j + 1
930
- break
1020
+ end_line = _bounded_fallback_end(lines, i)
931
1021
  ast.classes.append(ClassDef(
932
1022
  name=struct_match.group(1),
933
1023
  start_line=i + 1,
@@ -938,14 +1028,7 @@ def parse_rust(content: str, path: str = "") -> FileAST:
938
1028
  # Enums: (pub)? enum Name
939
1029
  enum_match = re.match(r"^(?:pub(?:\([\w:]+\))?\s+)?enum\s+(\w+)", stripped)
940
1030
  if enum_match:
941
- end_line = i + 1
942
- brace_count = stripped.count("{") - stripped.count("}")
943
- if brace_count > 0:
944
- for j in range(i + 1, min(i + 500, len(lines))):
945
- brace_count += lines[j].count("{") - lines[j].count("}")
946
- if brace_count <= 0:
947
- end_line = j + 1
948
- break
1031
+ end_line = _bounded_fallback_end(lines, i)
949
1032
  ast.classes.append(ClassDef(
950
1033
  name=enum_match.group(1),
951
1034
  start_line=i + 1,
@@ -956,14 +1039,7 @@ def parse_rust(content: str, path: str = "") -> FileAST:
956
1039
  # Traits: (pub)? trait Name
957
1040
  trait_match = re.match(r"^(?:pub(?:\([\w:]+\))?\s+)?(?:unsafe\s+)?trait\s+(\w+)", stripped)
958
1041
  if trait_match:
959
- end_line = i + 1
960
- brace_count = stripped.count("{") - stripped.count("}")
961
- if brace_count > 0:
962
- for j in range(i + 1, min(i + 500, len(lines))):
963
- brace_count += lines[j].count("{") - lines[j].count("}")
964
- if brace_count <= 0:
965
- end_line = j + 1
966
- break
1042
+ end_line = _bounded_fallback_end(lines, i)
967
1043
  ast.classes.append(ClassDef(
968
1044
  name=trait_match.group(1),
969
1045
  start_line=i + 1,
@@ -984,7 +1060,8 @@ def parse_go(content: str, path: str = "") -> FileAST:
984
1060
 
985
1061
  Extracts functions, methods, structs, interfaces, imports.
986
1062
  """
987
- lines = content.split("\n")
1063
+ lines = _mask_go_rust_source(content, 'go').split("\n")
1064
+ import_lines = _mask_go_rust_source(content, 'go', keep_quoted=True).split("\n")
988
1065
  ast = FileAST(path=path, language="go", line_count=len(lines))
989
1066
 
990
1067
  i = 0
@@ -995,7 +1072,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
995
1072
  if stripped == "import (" or stripped.startswith("import ("):
996
1073
  i += 1
997
1074
  while i < len(lines):
998
- imp_line = lines[i].strip()
1075
+ imp_line = import_lines[i].strip()
999
1076
  if imp_line == ")":
1000
1077
  break
1001
1078
  # Parse "pkg" or alias "pkg"
@@ -1009,7 +1086,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
1009
1086
  continue
1010
1087
 
1011
1088
  # Single import: import "pkg"
1012
- single_imp = re.match(r'^import\s+(?:\w+\s+)?"([^"]+)"', stripped)
1089
+ single_imp = re.match(r'^import\s+(?:\w+\s+)?"([^"]+)"', import_lines[i].strip()) if stripped.startswith('import') else None
1013
1090
  if single_imp:
1014
1091
  ast.imports.append(ImportDef(
1015
1092
  module=single_imp.group(1), is_from=False, line=i + 1,
@@ -1021,14 +1098,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
1021
1098
  method_match = re.match(r"^func\s+\([^)]+\)\s+(\w+)\s*\(", stripped)
1022
1099
  if method_match:
1023
1100
  func_name = method_match.group(1)
1024
- end_line = i + 1
1025
- brace_count = stripped.count("{") - stripped.count("}")
1026
- if brace_count > 0:
1027
- for j in range(i + 1, min(i + 500, len(lines))):
1028
- brace_count += lines[j].count("{") - lines[j].count("}")
1029
- if brace_count <= 0:
1030
- end_line = j + 1
1031
- break
1101
+ end_line = _bounded_fallback_end(lines, i)
1032
1102
  ast.functions.append(FunctionDef(
1033
1103
  name=func_name,
1034
1104
  start_line=i + 1,
@@ -1042,14 +1112,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
1042
1112
  fn_match = re.match(r"^func\s+(\w+)\s*\(", stripped)
1043
1113
  if fn_match:
1044
1114
  func_name = fn_match.group(1)
1045
- end_line = i + 1
1046
- brace_count = stripped.count("{") - stripped.count("}")
1047
- if brace_count > 0:
1048
- for j in range(i + 1, min(i + 500, len(lines))):
1049
- brace_count += lines[j].count("{") - lines[j].count("}")
1050
- if brace_count <= 0:
1051
- end_line = j + 1
1052
- break
1115
+ end_line = _bounded_fallback_end(lines, i)
1053
1116
  ast.functions.append(FunctionDef(
1054
1117
  name=func_name,
1055
1118
  start_line=i + 1,
@@ -1061,14 +1124,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
1061
1124
  # Struct: type Name struct {
1062
1125
  struct_match = re.match(r"^type\s+(\w+)\s+struct\s*\{", stripped)
1063
1126
  if struct_match:
1064
- end_line = i + 1
1065
- brace_count = stripped.count("{") - stripped.count("}")
1066
- if brace_count > 0:
1067
- for j in range(i + 1, min(i + 500, len(lines))):
1068
- brace_count += lines[j].count("{") - lines[j].count("}")
1069
- if brace_count <= 0:
1070
- end_line = j + 1
1071
- break
1127
+ end_line = _bounded_fallback_end(lines, i)
1072
1128
  ast.classes.append(ClassDef(
1073
1129
  name=struct_match.group(1),
1074
1130
  start_line=i + 1,
@@ -1080,14 +1136,7 @@ def parse_go(content: str, path: str = "") -> FileAST:
1080
1136
  # Interface: type Name interface {
1081
1137
  iface_match = re.match(r"^type\s+(\w+)\s+interface\s*\{", stripped)
1082
1138
  if iface_match:
1083
- end_line = i + 1
1084
- brace_count = stripped.count("{") - stripped.count("}")
1085
- if brace_count > 0:
1086
- for j in range(i + 1, min(i + 500, len(lines))):
1087
- brace_count += lines[j].count("{") - lines[j].count("}")
1088
- if brace_count <= 0:
1089
- end_line = j + 1
1090
- break
1139
+ end_line = _bounded_fallback_end(lines, i)
1091
1140
  ast.classes.append(ClassDef(
1092
1141
  name=iface_match.group(1),
1093
1142
  start_line=i + 1,
@@ -11,6 +11,7 @@ Provides intelligent code understanding through:
11
11
  from __future__ import annotations
12
12
 
13
13
  import os
14
+ import posixpath
14
15
  import time
15
16
  from dataclasses import dataclass, field
16
17
  from functools import partial
@@ -523,6 +524,8 @@ def resolve_import_targets(language, module, source_file, file_index, *, include
523
524
  return file_index.namespace_candidates(language, module)
524
525
  if language == "go" and hasattr(file_index, "go_candidates"):
525
526
  return file_index.go_candidates(module, source_file)
527
+ if language in {"ocaml", "perl", "crystal"}:
528
+ return _optional_import_targets(language, module, source_file, file_index)
526
529
  resolver = IMPORT_RESOLVERS.get(language)
527
530
  target = resolver(module, source_file, file_index) if resolver else None
528
531
  return [target] if target else []
@@ -664,7 +667,55 @@ def _resolve_namespace_import(language, module, source_file, file_index):
664
667
  return candidates[0] if len(candidates) == 1 else None
665
668
 
666
669
 
670
+ def _optional_import_targets(language, module, source_file, file_index):
671
+ """Conservative static workspace candidates, never compiler/load-path proof."""
672
+ if not isinstance(module, str) or not module or any(c in module for c in "\x00\r\n\\"):
673
+ return []
674
+ source = source_file.replace("\\", "/")
675
+ if source.startswith("/") or posixpath.normpath(source).startswith("../"):
676
+ return []
677
+ directory = posixpath.dirname(source)
678
+ groups = []
679
+ if language == "ocaml":
680
+ parts = module.split(".")
681
+ if not all(p.isidentifier() and p[0].isupper() for p in parts):
682
+ return []
683
+ name = parts[0]
684
+ stems = {name, name[0].lower() + name[1:]}
685
+ for root in {"", directory}:
686
+ for stem in stems:
687
+ groups.append({posixpath.join(root, stem + suffix) for suffix in (".ml", ".mli")})
688
+ elif language == "perl":
689
+ parts = module.split("::")
690
+ if not all(p.isidentifier() for p in parts):
691
+ return []
692
+ name = "/".join(parts) + ".pm"
693
+ groups = [{name}, {"lib/" + name}]
694
+ elif language == "crystal":
695
+ if not module.startswith(("./", "../")) or any(c in module for c in '*?[]#"\'`') or module.endswith('/'):
696
+ return []
697
+ name = posixpath.normpath(posixpath.join(directory, module))
698
+ if name in {".", ".."} or name.startswith(("/", "../")):
699
+ return []
700
+ groups = [{name if name.endswith(".cr") else name + ".cr"}]
701
+ # A module can have an implementation and interface, but competing source
702
+ # roots or filename casings are ambiguous. Do not pick the first match.
703
+ # Python import roots add stripped aliases for every file type. Optional
704
+ # language conventions require the actual physical path, not those aliases.
705
+ matches = {tuple(sorted({file_index[key] for key in group
706
+ if key in file_index and file_index[key].replace("\\", "/") == key}))
707
+ for group in groups}
708
+ matches.discard(())
709
+ return list(next(iter(matches))) if len(matches) == 1 else []
710
+
711
+
712
+ def _optional_import_target(language, module, source_file, file_index):
713
+ targets = _optional_import_targets(language, module, source_file, file_index)
714
+ return targets[0] if len(targets) == 1 else None
715
+
716
+
667
717
  IMPORT_RESOLVERS = {
718
+ **{language: partial(_optional_import_target, language) for language in ("ocaml", "perl", "crystal")},
668
719
  "python": _resolve_python_import, "javascript": _resolve_js_import,
669
720
  "typescript": _resolve_js_import, "rust": _resolve_rust_import,
670
721
  "go": _resolve_go_import, "java": _resolve_java_import,
@@ -57,7 +57,7 @@ class SymbolRef:
57
57
  ref_kind: str # "call" | "import" | "attribute"
58
58
  file_path: str
59
59
  line: int
60
- source: str = "tree-sitter" # "tree-sitter" | "lsp"
60
+ source: str = "tree-sitter" # "tree-sitter" | "regex" | "lsp"
61
61
  syntax_name: str = "" # identifier/member expression as written in source
62
62
  # Qualified name of the function/method enclosing this reference. Empty
63
63
  # when the reference is at module top level or the enclosing symbol
@@ -76,7 +76,7 @@ class SymbolLocation:
76
76
  file_path: str
77
77
  start_line: int
78
78
  end_line: int
79
- source: str = "tree-sitter" # "tree-sitter" | "lsp"
79
+ source: str = "tree-sitter" # "tree-sitter" | "regex" | "lsp"
80
80
 
81
81
 
82
82
  @dataclass(slots=True)