ai-dev-cli-tools 1.0.0__tar.gz → 1.1.0__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 (283) hide show
  1. ai_dev_cli_tools-1.1.0/.github/workflows/ci.yml +120 -0
  2. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/.github/workflows/docs.yml +2 -2
  3. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/.github/workflows/publish-pypi.yml +5 -2
  4. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/.github/workflows/release.yml +10 -11
  5. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/CHANGELOG.md +22 -0
  6. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/PKG-INFO +34 -3
  7. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/README.md +30 -2
  8. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/AGENT_EFFICIENCY_ROADMAP.md +6 -2
  9. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/AGENT_INTEGRATION_CONTRACT.md +11 -9
  10. ai_dev_cli_tools-1.1.0/docs/AGENT_WORKFLOW.md +77 -0
  11. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/ARCHITECTURE.md +14 -4
  12. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/BENCHMARKS.md +15 -2
  13. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/CACHE_AND_INDEX.md +24 -0
  14. ai_dev_cli_tools-1.1.0/docs/INTEGRATIONS_AND_DASHBOARD.md +25 -0
  15. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/MCP_SERVER.md +3 -2
  16. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/REPORT_SCHEMA.md +13 -1
  17. ai_dev_cli_tools-1.1.0/examples/benchmarks/agent-corpus.json +18 -0
  18. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/pyproject.toml +14 -2
  19. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/requirements-dev.lock +1 -0
  20. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/scripts/benchmark_agent_workflow.py +73 -5
  21. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/scripts/test_installed_package.py +4 -1
  22. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/scripts/validate_ci.py +25 -2
  23. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/scripts/validate_release.py +8 -3
  24. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/scripts/verify_published_package.py +2 -0
  25. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/__init__.py +1 -1
  26. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/__main__.py +4 -0
  27. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/cli.py +144 -2
  28. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/completion.py +8 -5
  29. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/config.py +46 -0
  30. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/dashboard.py +139 -0
  31. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/index_daemon_service.py +243 -0
  32. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/integrations.py +115 -0
  33. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/mcp_server.py +51 -3
  34. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/parsers/failures.py +64 -0
  35. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/reporters/sarif.py +100 -0
  36. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/benchmark.py +239 -2
  37. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/bootstrap.py +36 -3
  38. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/check.py +87 -5
  39. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/index.py +15 -0
  40. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/runners/index_daemon.py +89 -0
  41. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/runners/plan.py +239 -0
  42. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/runners/policy.py +33 -0
  43. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runtime/runner.py +50 -5
  44. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/security/execution.py +126 -0
  45. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/semantic.py +195 -0
  46. ai_dev_cli_tools-1.1.0/src/ai_dev_tools/semantic_backends.py +253 -0
  47. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/utils/subprocess.py +4 -0
  48. ai_dev_cli_tools-1.1.0/tests/unit/test_agent_plan.py +60 -0
  49. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_benchmark.py +2 -0
  50. ai_dev_cli_tools-1.1.0/tests/unit/test_benchmark_gate.py +132 -0
  51. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_check_scheduler.py +1 -1
  52. ai_dev_cli_tools-1.1.0/tests/unit/test_execution_policy.py +50 -0
  53. ai_dev_cli_tools-1.1.0/tests/unit/test_failure_classification.py +60 -0
  54. ai_dev_cli_tools-1.1.0/tests/unit/test_index_daemon.py +62 -0
  55. ai_dev_cli_tools-1.1.0/tests/unit/test_index_daemon_service.py +132 -0
  56. ai_dev_cli_tools-1.1.0/tests/unit/test_integrations_dashboard.py +124 -0
  57. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_mcp_server.py +17 -0
  58. ai_dev_cli_tools-1.1.0/tests/unit/test_new_cli_commands.py +41 -0
  59. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_release_scripts.py +10 -2
  60. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_report.py +1 -1
  61. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_runtime_runner.py +98 -1
  62. ai_dev_cli_tools-1.1.0/tests/unit/test_sarif.py +55 -0
  63. ai_dev_cli_tools-1.1.0/tests/unit/test_semantic.py +88 -0
  64. ai_dev_cli_tools-1.1.0/tests/unit/test_semantic_backends.py +210 -0
  65. ai_dev_cli_tools-1.0.0/.github/workflows/ci.yml +0 -71
  66. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/.gitignore +0 -0
  67. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/CONTRIBUTING.md +0 -0
  68. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/LICENSE +0 -0
  69. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/Makefile +0 -0
  70. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/SECURITY.md +0 -0
  71. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/TODO.md +0 -0
  72. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/ai.ps1 +0 -0
  73. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/ai.sh +0 -0
  74. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/ADAPTIVECHESSAI_FULL_CHECK_FAILURE_2026-08-30.md +0 -0
  75. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/ADAPTIVECHESSAI_PYCHARM_HEADLESS_INSPECTION_FAILURE_2026-08-30.md +0 -0
  76. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/ADDING_A_DETECTOR.md +0 -0
  77. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/ADDING_A_RUNNER.md +0 -0
  78. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/AGENT_COORDINATION.md +0 -0
  79. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/BOOTSTRAP.md +0 -0
  80. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/CHANGED_TEST_SELECTION.md +0 -0
  81. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/CONTEXT_BUILDER.md +0 -0
  82. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/DISTRIBUTION.md +0 -0
  83. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/FLAKY_RETRIES.md +0 -0
  84. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/MONOREPO_SUPPORT.md +0 -0
  85. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/OBSERVATION_LIFECYCLE.md +0 -0
  86. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/PERFORMANCE.md +0 -0
  87. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/RELEASE_CHECKLIST.md +0 -0
  88. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/RUNTIME.md +0 -0
  89. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/SEMANTIC_COMPRESSION.md +0 -0
  90. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/TOKEN_EFFICIENCY_RESEARCH.md +0 -0
  91. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/TOOL_OUTPUT_PARSERS.md +0 -0
  92. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/WARM_ENVIRONMENT.md +0 -0
  93. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/WATCH_MODE.md +0 -0
  94. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/benchmarks/agent-workflows-windows-py314-2026-08-11.json +0 -0
  95. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/docs/report-schema.json +0 -0
  96. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/agent-affected-workflow.json +0 -0
  97. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/agent-monorepo-workflow.json +0 -0
  98. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/agent-multiturn-workflow.json +0 -0
  99. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/agent-repair-workflow.json +0 -0
  100. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/pyproject.toml +0 -0
  101. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/src/__init__.py +0 -0
  102. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/src/orders.py +0 -0
  103. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/src/pricing.py +0 -0
  104. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/__init__.py +0 -0
  105. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_orders.py +0 -0
  106. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_pricing.py +0 -0
  107. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_1.py +0 -0
  108. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_10.py +0 -0
  109. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_11.py +0 -0
  110. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_12.py +0 -0
  111. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_2.py +0 -0
  112. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_3.py +0 -0
  113. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_4.py +0 -0
  114. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_5.py +0 -0
  115. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_6.py +0 -0
  116. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_7.py +0 -0
  117. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_8.py +0 -0
  118. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_9.py +0 -0
  119. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/__init__.py +0 -0
  120. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/__init__.py +0 -0
  121. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/pyproject.toml +0 -0
  122. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/src/__init__.py +0 -0
  123. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/src/billing.py +0 -0
  124. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/tests/__init__.py +0 -0
  125. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/tests/test_billing.py +0 -0
  126. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/__init__.py +0 -0
  127. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/pyproject.toml +0 -0
  128. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/src/__init__.py +0 -0
  129. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/src/catalog.py +0 -0
  130. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/tests/__init__.py +0 -0
  131. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/tests/test_catalog.py +0 -0
  132. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/mcp-recurring-status.json +0 -0
  133. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/output-budget-smoke.json +0 -0
  134. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/benchmarks/symbol-diff-context.json +0 -0
  135. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/examples/consume_json_report.py +0 -0
  136. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/scripts/__init__.py +0 -0
  137. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/scripts/benchmark_mcp_status.py +0 -0
  138. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/scripts/benchmark_symbol_diff.py +0 -0
  139. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/cache/__init__.py +0 -0
  140. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/cache/graph.py +0 -0
  141. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/cache/prompt_layout.py +0 -0
  142. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/cache/repository.py +0 -0
  143. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/cache/validation.py +0 -0
  144. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/__init__.py +0 -0
  145. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/builder.py +0 -0
  146. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/compression.py +0 -0
  147. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/incremental.py +0 -0
  148. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/models.py +0 -0
  149. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/profiles.py +0 -0
  150. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/refinement.py +0 -0
  151. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/retrieval.py +0 -0
  152. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/selection.py +0 -0
  153. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/symbols.py +0 -0
  154. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/context/tokens.py +0 -0
  155. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/detectors/__init__.py +0 -0
  156. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/detectors/environment.py +0 -0
  157. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/detectors/project.py +0 -0
  158. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/detectors/repository_map.py +0 -0
  159. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/detectors/runtime.py +0 -0
  160. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/detectors/workspaces.py +0 -0
  161. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/git/__init__.py +0 -0
  162. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/git/inspect.py +0 -0
  163. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/git/symbol_diff.py +0 -0
  164. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/models/__init__.py +0 -0
  165. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/models/report.py +0 -0
  166. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/models/workspace.py +0 -0
  167. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/parsers/__init__.py +0 -0
  168. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/parsers/logs.py +0 -0
  169. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/parsers/registry.py +0 -0
  170. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/reporters/__init__.py +0 -0
  171. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/reporters/progressive.py +0 -0
  172. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/reporters/writer.py +0 -0
  173. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/__init__.py +0 -0
  174. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/baseline.py +0 -0
  175. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/bootstrap_models.py +0 -0
  176. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/bootstrap_strategies.py +0 -0
  177. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/cache.py +0 -0
  178. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/check_checkpoint.py +0 -0
  179. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/check_models.py +0 -0
  180. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/check_scheduler.py +0 -0
  181. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/check_selection.py +0 -0
  182. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/coordination.py +0 -0
  183. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/diagnostics.py +0 -0
  184. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/environment_state.py +0 -0
  185. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/feedback.py +0 -0
  186. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/finish.py +0 -0
  187. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/flaky.py +0 -0
  188. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/focused.py +0 -0
  189. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/observations.py +0 -0
  190. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/performance.py +0 -0
  191. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runners/watch.py +0 -0
  192. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runtime/__init__.py +0 -0
  193. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/runtime/supervisor.py +0 -0
  194. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/security/__init__.py +0 -0
  195. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/security/secrets.py +0 -0
  196. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/source_symbols.py +0 -0
  197. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/src/ai_dev_tools/utils/__init__.py +0 -0
  198. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/cargo-fail.log +0 -0
  199. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/coverage-ok.log +0 -0
  200. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/eslint-fail.log +0 -0
  201. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/gradle-ok.log +0 -0
  202. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/jest-fail.log +0 -0
  203. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/maven-fail.log +0 -0
  204. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/maven-localized-fail.log +0 -0
  205. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/mypy-fail.log +0 -0
  206. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/phpunit-fail.log +0 -0
  207. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/pytest-9-ok.log +0 -0
  208. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/pytest-fail.log +0 -0
  209. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/pytest-multiple-failures.log +0 -0
  210. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/ruff-fail.log +0 -0
  211. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/ruff-warning.log +0 -0
  212. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/tsc-fail.log +0 -0
  213. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/logs/vitest-ok.log +0 -0
  214. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/monorepo-mixed/package.json +0 -0
  215. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/monorepo-mixed/packages/api/pyproject.toml +0 -0
  216. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/monorepo-mixed/packages/api/tests/test_smoke.py +0 -0
  217. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/monorepo-mixed/packages/web/package.json +0 -0
  218. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/monorepo-mixed/packages/web/test.js +0 -0
  219. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/monorepo-mixed/services/worker/Cargo.toml +0 -0
  220. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/monorepo-mixed/services/worker/src/lib.rs +0 -0
  221. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/gradle/build.gradle +0 -0
  222. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/gradle/gradlew.bat +0 -0
  223. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/maven/mvnw.cmd +0 -0
  224. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/maven/pom.xml +0 -0
  225. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/node-npm/package-lock.json +0 -0
  226. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/node-npm/package.json +0 -0
  227. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/node-pnpm/package.json +0 -0
  228. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/node-pnpm/pnpm-lock.yaml +0 -0
  229. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/node-yarn/package.json +0 -0
  230. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/node-yarn/yarn.lock +0 -0
  231. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/php-composer/composer.json +0 -0
  232. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/python-pip/pyproject.toml +0 -0
  233. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/python-pip/requirements.txt +0 -0
  234. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/python-poetry/pyproject.toml +0 -0
  235. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/python-uv/pyproject.toml +0 -0
  236. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/python-uv/uv.lock +0 -0
  237. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/fixtures/projects/rust/Cargo.toml +0 -0
  238. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/integration/test_adaptive_chess_regression.py +0 -0
  239. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/integration/test_cli.py +0 -0
  240. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/integration/test_cross_platform_paths.py +0 -0
  241. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/integration/test_git.py +0 -0
  242. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/integration/test_toolchain_e2e.py +0 -0
  243. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_baseline.py +0 -0
  244. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_bootstrap.py +0 -0
  245. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_cache.py +0 -0
  246. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_check.py +0 -0
  247. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_check_plan.py +0 -0
  248. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_cli_more.py +0 -0
  249. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_completion.py +0 -0
  250. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_config.py +0 -0
  251. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_context_builder.py +0 -0
  252. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_context_compression.py +0 -0
  253. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_context_profiles.py +0 -0
  254. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_context_refinement.py +0 -0
  255. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_context_retrieval.py +0 -0
  256. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_context_symbols.py +0 -0
  257. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_coordination.py +0 -0
  258. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_diagnostics.py +0 -0
  259. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_doctor.py +0 -0
  260. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_environment_state.py +0 -0
  261. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_feedback.py +0 -0
  262. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_finish.py +0 -0
  263. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_flaky.py +0 -0
  264. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_logs.py +0 -0
  265. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_more_coverage.py +0 -0
  266. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_more_symbol_adapters.py +0 -0
  267. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_observations.py +0 -0
  268. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_package_smoke.py +0 -0
  269. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_performance.py +0 -0
  270. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_progressive_reports.py +0 -0
  271. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_prompt_layout.py +0 -0
  272. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_repository_map.py +0 -0
  273. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_runner_failures.py +0 -0
  274. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_runtime.py +0 -0
  275. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_runtime_supervisor.py +0 -0
  276. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_scan.py +0 -0
  277. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_secret_boundaries.py +0 -0
  278. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_secrets.py +0 -0
  279. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_symbol_diff.py +0 -0
  280. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_token_accounting.py +0 -0
  281. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_tool_parsers.py +0 -0
  282. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_watch.py +0 -0
  283. {ai_dev_cli_tools-1.0.0 → ai_dev_cli_tools-1.1.0}/tests/unit/test_workspaces.py +0 -0
@@ -0,0 +1,120 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ test:
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ os: [ubuntu-latest, windows-latest, macos-latest]
13
+ python-version: ["3.11", "3.12", "3.13"]
14
+ runs-on: ${{ matrix.os }}
15
+ steps:
16
+ - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
17
+ - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
18
+ with:
19
+ python-version: ${{ matrix.python-version }}
20
+ - run: python -m pip install --upgrade pip
21
+ - run: python -m pip install -c requirements-dev.lock -e ".[dev]"
22
+ - run: ruff check .
23
+ - run: mypy src tests
24
+ - run: coverage run -m pytest
25
+ - run: coverage report --fail-under=90
26
+ - run: python -m build
27
+ - run: python scripts/test_installed_package.py
28
+ - run: python scripts/validate_ci.py
29
+ - run: ai-dev --version
30
+ - run: ai-dev doctor --json
31
+ - run: ai-dev scan --json
32
+ - run: ai-dev bootstrap --explain --json
33
+ - run: ai-dev capabilities --json
34
+ - run: ai-dev context build --explain --json
35
+ - run: ai-dev git inspect --json
36
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
37
+ if: always()
38
+ with:
39
+ name: ai-dev-reports-${{ matrix.os }}-${{ matrix.python-version }}
40
+ path: |
41
+ .ai/reports
42
+ .ai/logs
43
+ if-no-files-found: ignore
44
+ toolchain-e2e:
45
+ runs-on: ubuntu-latest
46
+ steps:
47
+ - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
48
+ - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
49
+ with:
50
+ python-version: "3.13"
51
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
52
+ with:
53
+ node-version: "22"
54
+ - uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
55
+ with:
56
+ distribution: temurin
57
+ java-version: "17"
58
+ - uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable 2026-08-31
59
+ - uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2
60
+ with:
61
+ php-version: "8.3"
62
+ tools: composer
63
+ - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0
64
+ with:
65
+ gradle-version: "8.10"
66
+ - run: python -m pip install -c requirements-dev.lock -e ".[dev]"
67
+ - name: Execute real fixture toolchains
68
+ env:
69
+ RUN_TOOLCHAIN_E2E: "1"
70
+ E2E_TOOLCHAINS: python,node,rust,maven,gradle,php
71
+ run: python -m pytest tests/integration/test_toolchain_e2e.py -q
72
+
73
+ agent-corpus:
74
+ runs-on: ubuntu-latest
75
+ steps:
76
+ - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
77
+ with:
78
+ persist-credentials: false
79
+ - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
80
+ with:
81
+ python-version: "3.13"
82
+ - run: python -m pip install -c requirements-dev.lock -e ".[dev]"
83
+ - name: Run real-agent regression corpus
84
+ run: >-
85
+ ai-dev benchmark corpus
86
+ --manifest examples/benchmarks/agent-corpus.json
87
+ --trials 3
88
+ --timeout 60
89
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
90
+ if: always()
91
+ with:
92
+ name: agent-corpus-results
93
+ path: .ai/benchmarks
94
+ if-no-files-found: error
95
+
96
+ agent-report:
97
+ runs-on: ubuntu-latest
98
+ permissions:
99
+ contents: read
100
+ security-events: write
101
+ steps:
102
+ - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
103
+ with:
104
+ fetch-depth: 0
105
+ persist-credentials: false
106
+ - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
107
+ with:
108
+ python-version: "3.13"
109
+ - run: python -m pip install -c requirements-dev.lock -e ".[dev]"
110
+ - name: Build bounded agent plan
111
+ run: ai-dev plan --task "Review this commit" --json
112
+ - name: Export SARIF
113
+ run: ai-dev sarif --input .ai/reports/agent-plan.json --output .ai/reports/ai-dev.sarif
114
+ - name: Add agent plan to job summary
115
+ run: cat .ai/reports/agent-plan.md >> "$GITHUB_STEP_SUMMARY"
116
+ - name: Upload SARIF to GitHub code scanning
117
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
118
+ uses: github/codeql-action/upload-sarif@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4
119
+ with:
120
+ sarif_file: .ai/reports/ai-dev.sarif
@@ -8,8 +8,8 @@ jobs:
8
8
  docs:
9
9
  runs-on: ubuntu-latest
10
10
  steps:
11
- - uses: actions/checkout@v4
12
- - uses: actions/setup-python@v5
11
+ - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
12
+ - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
13
13
  with:
14
14
  python-version: "3.12"
15
15
  - run: python -m pip install -c requirements-dev.lock -e ".[dev]"
@@ -10,6 +10,7 @@ permissions:
10
10
 
11
11
  jobs:
12
12
  validate-release:
13
+ if: github.event.release.prerelease == false
13
14
  name: Validate manually promoted release artifacts
14
15
  runs-on: ubuntu-latest
15
16
  steps:
@@ -36,7 +37,7 @@ jobs:
36
37
  python -m twine check dist/*
37
38
  python scripts/validate_release.py --tag "$RELEASE_TAG" --dist dist
38
39
  - name: Upload validated production artifact
39
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
40
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
40
41
  with:
41
42
  name: pypi-distributions
42
43
  path: dist/
@@ -44,6 +45,7 @@ jobs:
44
45
  retention-days: 7
45
46
 
46
47
  publish-pypi:
48
+ if: github.event.release.prerelease == false
47
49
  name: Publish manually approved release to PyPI
48
50
  needs: validate-release
49
51
  runs-on: ubuntu-latest
@@ -54,7 +56,7 @@ jobs:
54
56
  id-token: write
55
57
  steps:
56
58
  - name: Download validated production artifact
57
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
59
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
58
60
  with:
59
61
  name: pypi-distributions
60
62
  path: dist/
@@ -64,6 +66,7 @@ jobs:
64
66
  packages-dir: dist/
65
67
 
66
68
  verify-pypi:
69
+ if: github.event.release.prerelease == false
67
70
  name: Verify PyPI pipx installation
68
71
  needs: publish-pypi
69
72
  runs-on: ubuntu-latest
@@ -31,7 +31,7 @@ jobs:
31
31
  python scripts/validate_release.py --tag "$GITHUB_REF_NAME" --dist dist
32
32
  python scripts/test_installed_package.py
33
33
  - name: Upload immutable distribution artifact
34
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
34
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
35
35
  with:
36
36
  name: python-package-distributions
37
37
  path: dist/
@@ -49,7 +49,7 @@ jobs:
49
49
  id-token: write
50
50
  steps:
51
51
  - name: Download distribution artifact
52
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
52
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
53
53
  with:
54
54
  name: python-package-distributions
55
55
  path: dist/
@@ -88,17 +88,16 @@ jobs:
88
88
  with:
89
89
  persist-credentials: false
90
90
  - name: Download TestPyPI-verified distribution artifact
91
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
91
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
92
92
  with:
93
93
  name: python-package-distributions
94
94
  path: dist/
95
- - name: Create draft GitHub release for manual PyPI promotion
95
+ - name: Create RC prerelease or stable promotion draft
96
96
  env:
97
97
  GH_TOKEN: ${{ github.token }}
98
- run: >-
99
- gh release create "$GITHUB_REF_NAME"
100
- dist/*
101
- --draft
102
- --verify-tag
103
- --generate-notes
104
- --title "ai-dev $GITHUB_REF_NAME"
98
+ run: |
99
+ if [[ "$GITHUB_REF_NAME" == *-rc.* ]]; then
100
+ gh release create "$GITHUB_REF_NAME" dist/* --prerelease --verify-tag --generate-notes --title "ai-dev $GITHUB_REF_NAME"
101
+ else
102
+ gh release create "$GITHUB_REF_NAME" dist/* --draft --verify-tag --generate-notes --title "ai-dev $GITHUB_REF_NAME"
103
+ fi
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.0 - 2026-08-31
4
+
5
+ Stable promotion of `1.1.0rc1` after cross-platform CI, benchmark regression gates, and a clean
6
+ TestPyPI installation smoke test.
7
+
8
+ - Add `plan` and MCP `plan_work` for bounded, preview-only implementation plans with scope,
9
+ dependencies, validation, risk, policy assessments, and stable evidence references.
10
+ - Add built-in Tree-sitter AST and LSP document-symbol backends alongside the local structural
11
+ fallback and semantic plugin contract.
12
+ - Add a detached, localhost-authenticated index daemon using native filesystem events, IPC
13
+ start/status/stop control, lifecycle state, and no periodic repository rescans.
14
+ - Classify command failures and retry only transient infrastructure failures while preserving the
15
+ first failure and recovery evidence.
16
+ - Add configurable command allow/deny prefixes and impact limits, enforced by checks, bootstrap,
17
+ and application startup, plus a preview-only `policy assess` command.
18
+ - Extend reproducible benchmarks with precision, recall, false negatives, iterations, files read,
19
+ reported token metrics, a versioned real-agent corpus, and enforceable regression gates.
20
+ - Add ready project-scoped MCP configurations for Codex, Claude Code, Cursor, and generic clients.
21
+ - Add a loopback-only local dashboard for index, semantic, cache, runtime, daemon, and error health.
22
+ - Add deterministic report-to-SARIF conversion and a GitHub Actions code-scanning summary job.
23
+ - Upgrade and SHA-pin supported GitHub Actions used by CI, docs, and publishing workflows.
24
+
3
25
  ## 1.0.0 - 2026-08-31
4
26
 
5
27
  - Stabilize the local CLI and report schema for the 1.0 release line.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ai-dev-cli-tools
3
- Version: 1.0.0
3
+ Version: 1.1.0
4
4
  Summary: Cross-platform CLI helpers that give AI coding agents concise, deterministic development reports.
5
5
  Project-URL: Homepage, https://github.com/MatthiasLew/ai-dev-cli-tools
6
6
  Project-URL: Repository, https://github.com/MatthiasLew/ai-dev-cli-tools
@@ -19,12 +19,15 @@ Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Programming Language :: Python :: 3.13
20
20
  Classifier: Topic :: Software Development :: Quality Assurance
21
21
  Requires-Python: >=3.11
22
+ Requires-Dist: watchdog<7,>=4
22
23
  Provides-Extra: dev
23
24
  Requires-Dist: build>=1.2; extra == 'dev'
24
25
  Requires-Dist: coverage[toml]>=7.6; extra == 'dev'
25
26
  Requires-Dist: mypy>=1.11; extra == 'dev'
26
27
  Requires-Dist: pytest>=8.3; extra == 'dev'
27
28
  Requires-Dist: ruff>=0.6; extra == 'dev'
29
+ Provides-Extra: semantic
30
+ Requires-Dist: tree-sitter-language-pack>=0.9; extra == 'semantic'
28
31
  Provides-Extra: tokenizers
29
32
  Requires-Dist: tiktoken>=0.7; extra == 'tokenizers'
30
33
  Description-Content-Type: text/markdown
@@ -93,12 +96,24 @@ ai-dev check --mode full --jobs 4
93
96
  ai-dev check --mode changed --policy feedback-first --resume
94
97
  ai-dev check --mode changed --compare main
95
98
  ai-dev check --mode changed --retry-flaky 1
99
+ ai-dev check --mode changed --retry-infra 1
100
+ ai-dev plan --task "implement rate limiting" --mode changed
96
101
  ai-dev index update
102
+ ai-dev index daemon start
103
+ ai-dev index daemon status
104
+ ai-dev index daemon stop
105
+ ai-dev semantic status
106
+ ai-dev semantic index --backend auto
107
+ ai-dev policy assess -- python -m pytest
108
+ ai-dev sarif --input .ai/reports/agent-plan.json
97
109
  ai-dev cache status
98
110
  ai-dev cache layout
99
111
  ai-dev baseline create main
100
112
  ai-dev baseline compare main
101
113
  ai-dev benchmark run --suite examples/benchmarks/output-budget-smoke.json --variant baseline
114
+ ai-dev benchmark corpus --manifest examples/benchmarks/agent-corpus.json --trials 3
115
+ ai-dev integrations install all
116
+ ai-dev dashboard serve --port 8765
102
117
  ai-dev explain issue:<id> --tail 100
103
118
  ai-dev explain --symbol "src/app.py#Application.run" --tail 100
104
119
  ai-dev feedback --task "fix authentication timeout"
@@ -123,7 +138,7 @@ All commands support `--project`, `--json`, `--quiet`, `--help`, and `--version`
123
138
 
124
139
  ## Local MCP server
125
140
 
126
- `ai-dev mcp serve` exposes project status, compact feedback, bounded context, validation,
141
+ `ai-dev mcp serve` exposes project status, implementation planning, compact feedback, bounded context, validation,
127
142
  and progressive evidence as local structured tools for Codex-compatible MCP clients. The STDIO
128
143
  server is dependency-free, has no network listener, fixes all calls to one project root, and
129
144
  defaults validation to preview-only.
@@ -135,6 +150,9 @@ codex mcp add ai-dev -- ai-dev --project "/absolute/path/to/project" mcp serve
135
150
  See `docs/MCP_SERVER.md` for tool schemas, approvals, project-scoped configuration, and
136
151
  security boundaries.
137
152
 
153
+ For the recommended agent loop—plan, retrieve, implement, validate, and expand only failed
154
+ evidence—see `docs/AGENT_WORKFLOW.md`.
155
+
138
156
  For agents sharing a repository, `ai-dev agents add|claim|heartbeat|release|complete|status`
139
157
  maintains an atomic local task board with expiring leases and declared-path conflict detection.
140
158
  See `docs/AGENT_COORDINATION.md` for the workflow and safety limits.
@@ -230,6 +248,12 @@ paths = ["node_modules", ".venv", "dist", "build"]
230
248
  [reports]
231
249
  directory = ".ai/reports"
232
250
  logs_directory = ".ai/logs"
251
+
252
+ [execution]
253
+ mode = "enforce"
254
+ maximum_impact = "high"
255
+ allow_prefixes = ["python -m pytest", "python -m ruff", "python -m mypy"]
256
+ deny_prefixes = ["git reset", "git clean"]
233
257
  ```
234
258
 
235
259
  Configuration takes precedence over auto detection. Invalid or unknown configuration is reported through `config_warnings` instead of crashing normal scans.
@@ -262,13 +286,20 @@ git diff --check
262
286
  | test affected | implemented |
263
287
  | test flaky / check --retry-flaky | implemented |
264
288
  | index status/update/rebuild | implemented |
289
+ | index daemon | implemented |
290
+ | plan / MCP plan_work | implemented |
291
+ | semantic status/index | implemented with built-in Tree-sitter, LSP, and provider plugins |
292
+ | policy assess / execution enforcement | implemented |
293
+ | sarif | implemented |
265
294
  | cache status/prune/clear/layout | implemented |
266
295
  | logs summarize | implemented |
267
296
  | context build | implemented |
268
297
  | diagnostics | implemented |
269
298
  | mcp serve | implemented |
270
299
  | watch | implemented |
271
- | benchmark run/compare | implemented |
300
+ | benchmark run/compare/gate/corpus | implemented |
301
+ | integrations install | implemented for Codex, Claude Code, Cursor, and generic MCP |
302
+ | dashboard status/serve | implemented, loopback-only |
272
303
  | performance latest/compare | implemented |
273
304
  | capabilities | implemented |
274
305
  | git status | implemented |
@@ -62,12 +62,24 @@ ai-dev check --mode full --jobs 4
62
62
  ai-dev check --mode changed --policy feedback-first --resume
63
63
  ai-dev check --mode changed --compare main
64
64
  ai-dev check --mode changed --retry-flaky 1
65
+ ai-dev check --mode changed --retry-infra 1
66
+ ai-dev plan --task "implement rate limiting" --mode changed
65
67
  ai-dev index update
68
+ ai-dev index daemon start
69
+ ai-dev index daemon status
70
+ ai-dev index daemon stop
71
+ ai-dev semantic status
72
+ ai-dev semantic index --backend auto
73
+ ai-dev policy assess -- python -m pytest
74
+ ai-dev sarif --input .ai/reports/agent-plan.json
66
75
  ai-dev cache status
67
76
  ai-dev cache layout
68
77
  ai-dev baseline create main
69
78
  ai-dev baseline compare main
70
79
  ai-dev benchmark run --suite examples/benchmarks/output-budget-smoke.json --variant baseline
80
+ ai-dev benchmark corpus --manifest examples/benchmarks/agent-corpus.json --trials 3
81
+ ai-dev integrations install all
82
+ ai-dev dashboard serve --port 8765
71
83
  ai-dev explain issue:<id> --tail 100
72
84
  ai-dev explain --symbol "src/app.py#Application.run" --tail 100
73
85
  ai-dev feedback --task "fix authentication timeout"
@@ -92,7 +104,7 @@ All commands support `--project`, `--json`, `--quiet`, `--help`, and `--version`
92
104
 
93
105
  ## Local MCP server
94
106
 
95
- `ai-dev mcp serve` exposes project status, compact feedback, bounded context, validation,
107
+ `ai-dev mcp serve` exposes project status, implementation planning, compact feedback, bounded context, validation,
96
108
  and progressive evidence as local structured tools for Codex-compatible MCP clients. The STDIO
97
109
  server is dependency-free, has no network listener, fixes all calls to one project root, and
98
110
  defaults validation to preview-only.
@@ -104,6 +116,9 @@ codex mcp add ai-dev -- ai-dev --project "/absolute/path/to/project" mcp serve
104
116
  See `docs/MCP_SERVER.md` for tool schemas, approvals, project-scoped configuration, and
105
117
  security boundaries.
106
118
 
119
+ For the recommended agent loop—plan, retrieve, implement, validate, and expand only failed
120
+ evidence—see `docs/AGENT_WORKFLOW.md`.
121
+
107
122
  For agents sharing a repository, `ai-dev agents add|claim|heartbeat|release|complete|status`
108
123
  maintains an atomic local task board with expiring leases and declared-path conflict detection.
109
124
  See `docs/AGENT_COORDINATION.md` for the workflow and safety limits.
@@ -199,6 +214,12 @@ paths = ["node_modules", ".venv", "dist", "build"]
199
214
  [reports]
200
215
  directory = ".ai/reports"
201
216
  logs_directory = ".ai/logs"
217
+
218
+ [execution]
219
+ mode = "enforce"
220
+ maximum_impact = "high"
221
+ allow_prefixes = ["python -m pytest", "python -m ruff", "python -m mypy"]
222
+ deny_prefixes = ["git reset", "git clean"]
202
223
  ```
203
224
 
204
225
  Configuration takes precedence over auto detection. Invalid or unknown configuration is reported through `config_warnings` instead of crashing normal scans.
@@ -231,13 +252,20 @@ git diff --check
231
252
  | test affected | implemented |
232
253
  | test flaky / check --retry-flaky | implemented |
233
254
  | index status/update/rebuild | implemented |
255
+ | index daemon | implemented |
256
+ | plan / MCP plan_work | implemented |
257
+ | semantic status/index | implemented with built-in Tree-sitter, LSP, and provider plugins |
258
+ | policy assess / execution enforcement | implemented |
259
+ | sarif | implemented |
234
260
  | cache status/prune/clear/layout | implemented |
235
261
  | logs summarize | implemented |
236
262
  | context build | implemented |
237
263
  | diagnostics | implemented |
238
264
  | mcp serve | implemented |
239
265
  | watch | implemented |
240
- | benchmark run/compare | implemented |
266
+ | benchmark run/compare/gate/corpus | implemented |
267
+ | integrations install | implemented for Codex, Claude Code, Cursor, and generic MCP |
268
+ | dashboard status/serve | implemented, loopback-only |
241
269
  | performance latest/compare | implemented |
242
270
  | capabilities | implemented |
243
271
  | git status | implemented |
@@ -33,7 +33,7 @@ and longer-term direction without presenting proposed interfaces as available co
33
33
  | 11 | Compact agent protocol | Implemented | Schema 1.1 JSON reports, stable reason codes, evidence references, bounded output, and the local MCP server provide the supported machine contract. |
34
34
  | 12 | Local session state | Implemented | Versioned local session and observation state retains task, validation, context, and unresolved failure evidence without storing a conversation transcript. |
35
35
  | 13 | Dependency-aware parallel scheduler | Implemented | `check --jobs` respects explicit check dependencies, CPU/memory/exclusive resource classes, feedback-first gates, and deterministic report order. Failed dependencies conservatively cancel their dependents. |
36
- | 14 | Persistent repository index | Implemented | `index status/update/rebuild` maintains a schema-versioned, content-addressed index under `.ai/cache/`. |
36
+ | 14 | Persistent repository index | Implemented | `index status/update/rebuild` maintains a schema-versioned, content-addressed index under `.ai/cache/`; foreground `index daemon` keeps it warm with bounded polling and lifecycle state. |
37
37
  | 15 | Watch mode | Implemented | Foreground polling, debounce, generated-root exclusion, queued changes, bounded runs, and cancellation of subprocesses owned by obsolete validations are implemented. Cancellation never targets an unrelated PID. |
38
38
  | 16 | Priority and fail-fast scheduling | Implemented | `feedback-first` and `complete` policies provide deterministic priority waves and required-failure gating. |
39
39
  | 17 | Warm environment state | Implemented | `bootstrap --if-needed` and `environment explain` reuse only revalidated executable, dependency, configuration, runtime, and plan fingerprints. |
@@ -41,7 +41,11 @@ and longer-term direction without presenting proposed interfaces as available co
41
41
  | 19 | Flaky-test awareness | Implemented | Opt-in bounded retries preserve first failures, exclude deterministic/environment failures, avoid caching flaky passes, and maintain bounded local history. |
42
42
  | 20 | Unified feedback command | Implemented | `feedback` composes Git changes, changed validation, incremental context, focused reruns, timings, observations, and session state. |
43
43
  | 21 | Performance budgets | Implemented | Schema-versioned local timing records, total/per-stage budgets, bounded retention, and `performance latest/compare` diagnostics are available. |
44
- | 22 | Reproducible workflow benchmarks | Implemented | Versioned local suites support repeated cold/warm trials, correctness gates, machine-readable results, and compact comparisons for repair, affected-test, multi-turn, and monorepo scenarios. |
44
+ | 22 | Reproducible workflow benchmarks | Implemented | Versioned local suites support repeated cold/warm trials, correctness gates, precision/recall and false-negative metrics, token/iteration/file telemetry, machine-readable results, and compact comparisons. |
45
+ | 23 | Agent execution plans | Implemented | `plan` and MCP `plan_work` emit preview-only scope, risk, dependencies, command-policy assessments, validation schedules, and stable evidence references. |
46
+ | 24 | Optional semantic providers | Implemented | A bounded local structural index is built in; explicitly selected entry-point providers can add Tree-sitter or LSP-backed semantics, while auto mode fails closed to structural parsing. |
47
+ | 25 | Execution policy | Implemented | Audit/enforce modes, allow/deny prefixes, impact ceilings, preview assessment, and enforcement cover checks, bootstrap, and managed application startup. |
48
+ | 26 | CI-native agent evidence | Implemented | Reports convert deterministically to SARIF and the pinned GitHub Actions workflow publishes a compact plan summary plus code-scanning evidence. |
45
49
 
46
50
  ## Implemented supporting capabilities
47
51
 
@@ -15,14 +15,15 @@ Integrations must request JSON with `--json` and must not parse Markdown or term
15
15
 
16
16
  ## Recommended loop
17
17
 
18
- 1. Run `ai-dev cache layout --json` once per content state and place its stable sections before task-specific content at the recommended breakpoint.
19
- 2. Prefer `ai-dev feedback --task "<task>" --json` for the normal compact loop.
20
- 3. Inspect `decision`, `changes`, `validation`, `context`, `observations`, and `performance`.
21
- 4. Use `ai-dev session status --json` after an interrupted handoff.
22
- 5. Read `metadata.progressive.references` and call `ai-dev explain <evidence-id> --json` only for needed evidence.
23
- 6. Use failure signatures to deduplicate retries and optionally compare a named local baseline.
24
- 7. Treat FLAKY_PASS and checks_flaky as unresolved warning evidence; never report them as a clean first-pass success.
25
- 8. Before handoff, run `ai-dev finish --json`.
18
+ 1. Call `plan_work` or run `ai-dev plan --task "<task>" --json` before broad edits.
19
+ 2. Run `ai-dev cache layout --json` once per content state and place stable sections before task-specific content at the recommended breakpoint.
20
+ 3. Prefer `ai-dev feedback --task "<task>" --json` for the normal compact loop.
21
+ 4. Inspect `decision`, `scope`, `changes`, `validation`, `context`, `observations`, and `performance`.
22
+ 5. Use `ai-dev session status --json` after an interrupted handoff.
23
+ 6. Read `metadata.progressive.references` and expand only the evidence needed.
24
+ 7. Use failure signatures to deduplicate retries and optionally compare a named local baseline.
25
+ 8. Treat flaky passes, low confidence, and recall regressions as unresolved evidence.
26
+ 9. Before handoff, run `ai-dev finish --json` and a complete validation pass.
26
27
 
27
28
  All acceleration state is local under `.ai/`; no command transmits repository contents or
28
29
  metrics.
@@ -32,12 +33,13 @@ metrics.
32
33
  Use the local MCP server when the agent supports structured tools. Tool results contain concise
33
34
  text and machine-readable `structuredContent`; consumers should prefer the structured data.
34
35
 
35
- - Call `project_status` before planning broad repository work.
36
+ - Call `project_status`, then `plan_work`, before broad repository work.
36
37
  - Use `feedback`, `build_context`, and `run_checks` in their preview-only defaults.
37
38
  - Set execution or artifact-writing flags only when the task requires them.
38
39
  - Expand one stable ID with `explain_evidence` instead of requesting full logs.
39
40
  - Treat tool names and required fields as compatibility contracts.
40
41
  - Ignore new optional fields and new tools.
41
42
  - Respect MCP annotations and the configured client approval policy.
43
+ - Keep infrastructure retry separate from flaky-test retry; neither may retry code failures.
42
44
 
43
45
  See `MCP_SERVER.md` for setup and complete safety boundaries.
@@ -0,0 +1,77 @@
1
+ # Agent workflow
2
+
3
+ The recommended loop gives an AI agent enough evidence to act without granting broad execution
4
+ or forcing it to reread the repository.
5
+
6
+ ## 1. Plan before editing
7
+
8
+ ```bash
9
+ ai-dev plan --task "fix authentication timeout" --mode changed --json
10
+ ```
11
+
12
+ The plan is preview-only and caps scope at 30 files, 20 symbols, and 50 evidence rows. It reports
13
+ intended scope, changed symbols, file risk, dependent actions,
14
+ selected validation commands, command-policy decisions, and stable evidence references. It writes
15
+ `.ai/reports/agent-plan.json` and `.ai/reports/agent-plan.md`. MCP clients should call
16
+ `plan_work` for the same contract.
17
+
18
+ ## 2. Retrieve bounded context
19
+
20
+ Use `context build --profile implement` for code changes and `--profile docs` for documentation.
21
+ Prefer `--incremental`, task text, or explicit evidence IDs. Expand one uncertainty with
22
+ `ai-dev explain <evidence-id>` instead of requesting a full tree or log.
23
+
24
+ The optional semantic index is local and deterministic:
25
+
26
+ ```bash
27
+ ai-dev semantic status
28
+ ai-dev semantic index --backend auto
29
+ ```
30
+
31
+ `auto` uses the built-in structural parser unless an explicitly supported provider is selected.
32
+ Third-party providers register the `ai_dev_tools.semantic_backends` entry-point group and expose
33
+ an `index(project_root, paths)` method returning bounded symbol objects. Provider code runs in the
34
+ local process and therefore must be trusted like any development dependency.
35
+
36
+ ## 3. Assess commands before execution
37
+
38
+ ```bash
39
+ ai-dev policy assess -- python -m pytest tests/unit -q --json
40
+ ```
41
+
42
+ Configure `[execution]` in `.ai-dev-tools.toml`. `audit` reports decisions without blocking;
43
+ `enforce` applies allow/deny prefixes and `maximum_impact` to checks, bootstrap, and application
44
+ startup. Argument arrays are always executed without a shell. Policy does not turn an untrusted
45
+ repository into a trusted one; review project configuration before running it.
46
+
47
+ ## 4. Validate narrowly, then completely
48
+
49
+ ```bash
50
+ ai-dev check --mode changed --policy feedback-first --retry-infra 1 --json
51
+ ai-dev check --mode full --jobs 4 --json
52
+ ```
53
+
54
+ Only failures classified as transient infrastructure are retried automatically. Code,
55
+ environment, policy, cancellation, and timeout failures are not hidden by retry. Recovered runs
56
+ retain their initial output and attempt count. Flaky-test retry remains separate and opt-in through
57
+ `--retry-flaky`.
58
+
59
+ ## 5. Publish compact evidence
60
+
61
+ ```bash
62
+ ai-dev sarif --input .ai/reports/check-latest.json --output .ai/reports/ai-dev.sarif
63
+ ```
64
+
65
+ SARIF conversion is project-scoped, secret-masked, capped at 10 MB input and 5,000 results, and
66
+ does not contact GitHub. CI may upload the result to code scanning and place the readable plan in
67
+ the job summary. Full logs remain local artifacts and should be opened only for a failed evidence
68
+ reference.
69
+
70
+ ## Recommended agent defaults
71
+
72
+ - Start with `project_status` or `plan_work`, not an unbounded repository read.
73
+ - Keep execution preview-only until the user or client policy allows it.
74
+ - Use `implement` or `docs` context profiles and stable evidence IDs.
75
+ - Treat low confidence, truncation, and recall regressions as reasons to broaden validation.
76
+ - Run a full validation pass before claiming completion.
77
+ - Never infer permission to commit, push, merge, publish, deploy, or delete from these tools.
@@ -6,17 +6,23 @@
6
6
 
7
7
  - Detectors inspect environment and project structure without changing files.
8
8
  - Runners execute existing project commands with `subprocess.run(shell=False)`, timeouts, UTF-8 output, and full log capture.
9
- - Parsers reduce raw command output into first failure, project frame, repeated warning groups, and issue lists.
10
- - Reporters write stable Markdown and JSON reports.
9
+ - Parsers reduce raw command output into first failure, project frame, repeated warning groups,
10
+ issue lists, and retry-safe failure classes.
11
+ - Reporters write stable Markdown, JSON, and project-scoped SARIF reports.
11
12
  - Git helpers inspect repository state without destructive operations.
12
- - Security helpers scan changed files for masked secret findings.
13
+ - Security helpers scan changed files for masked secret findings and assess command impact against
14
+ configurable execution policy.
13
15
  - Context builders compose detector, git, runner-plan, parser, and security outputs into bounded AI context packages.
14
16
  - The MCP adapter exposes bounded local reports as strict STDIO JSON-RPC tools without duplicating detector or runner logic.
17
+ - The semantic adapter maintains a bounded structural symbol index and loads explicitly selected
18
+ trusted providers through `ai_dev_tools.semantic_backends`.
15
19
  - Packaging smoke tests build a wheel, install it into a clean virtual environment, and verify the installed `ai-dev` entrypoint.
16
20
 
17
21
  ## Data Flow
18
22
 
19
- CLI or MCP tool -> detector/runner/context builder -> full log or bounded source selection -> parser/security masking -> `Report` model -> Markdown/JSON artifacts or concise MCP `structuredContent`.
23
+ CLI or MCP tool -> plan/detector/runner/context builder -> full log or bounded source selection ->
24
+ parser/security classification and masking -> `Report` model -> Markdown/JSON/SARIF artifacts or
25
+ concise MCP `structuredContent`.
20
26
 
21
27
  ## Extending
22
28
 
@@ -31,6 +37,10 @@ classes. CPU tasks consume one slot, memory-heavy tasks consume two, and exclusi
31
37
  alone. Results are always restored to deterministic plan order. Watch cancellation propagates an
32
38
  in-memory token only to subprocesses created by the active validation.
33
39
 
40
+ Before execution, checks are assessed against the configured command policy. Failed commands are
41
+ classified as code, environment, infrastructure, timeout, cancellation, policy, or unknown.
42
+ Only transient infrastructure failures receive the separately bounded automatic retry.
43
+
34
44
  The stable `runners.check` facade orchestrates execution and re-exports its public models and selection functions. `check_models` owns report contracts, while `check_selection` owns changed-file and affected-test strategy.
35
45
 
36
46
  ## Context Builders
@@ -33,6 +33,8 @@ from the same declared state and ends with independently checked correctness.
33
33
  ai-dev benchmark run --suite benchmarks/agent-workflows.json --variant baseline --trials 5 --cache-state cold
34
34
  ai-dev benchmark run --suite benchmarks/agent-workflows.json --variant ai-dev --trials 5 --cache-state cold
35
35
  ai-dev benchmark compare .ai/benchmarks/runs/<baseline>.json .ai/benchmarks/runs/<candidate>.json
36
+ ai-dev benchmark gate .ai/benchmarks/runs/<baseline>.json .ai/benchmarks/runs/<candidate>.json
37
+ ai-dev benchmark corpus --manifest examples/benchmarks/agent-corpus.json --trials 3
36
38
  ~~~
37
39
 
38
40
  Cold and warm results are deliberately separate and cannot be compared with each other. A
@@ -45,10 +47,21 @@ correctness, fixture identity, and a local machine profile. Token estimates use
45
47
  masked_utf8_bytes_divided_by_4; they are a stable approximation, not a model tokenizer claim.
46
48
  Raw JSON and compact Markdown reports stay under `.ai/benchmarks/`.
47
49
 
50
+ `benchmark gate` fails when correctness differs, candidate time or token regressions exceed their
51
+ bounds, precision/recall fall below their floors, or false negatives exceed the allowance. The
52
+ versioned corpus runs all four representative agent tasks and applies the shared thresholds from
53
+ `examples/benchmarks/agent-corpus.json`; it is suitable as a CI release gate.
54
+
48
55
  A suite variant may emit one private `AI_DEV_BENCHMARK_METRICS=` JSON line on stderr to
49
56
  report its real command count, validation subprocess count, and time to its first actionable
50
- result. The runner validates and removes that line before counting agent-visible bytes. Missing or
51
- invalid metrics safely fall back to the generic runner measurements.
57
+ result. It may additionally report `iterations`, `files_read`, `selected_items`,
58
+ `relevant_items`, `true_positive_items`, `false_negative_items`, `input_tokens`, and
59
+ `output_tokens`. The runner derives selection precision and recall, preserves false-negative
60
+ counts, and compares their medians. A candidate with a recall regression is rejected even when it
61
+ is faster or smaller. The runner validates and removes the private line before counting
62
+ agent-visible bytes. Missing or invalid metrics safely fall back to generic measurements and are
63
+ never presented as exact model-token counts. `selection_metric_trials` is zero when precision and
64
+ recall were not reported; their zero medians must not be interpreted as measured selection quality.
52
65
 
53
66
  ## Included suites
54
67