ai-dev-cli-tools 1.1.0__tar.gz → 1.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/.github/workflows/ci.yml +11 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/.gitignore +1 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/CHANGELOG.md +55 -0
- ai_dev_cli_tools-1.2.1/CONTRIBUTING.md +44 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/Makefile +4 -1
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/PKG-INFO +64 -6
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/README.md +63 -5
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/TODO.md +4 -2
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/ai.ps1 +1 -1
- ai_dev_cli_tools-1.2.1/ai.sh +3 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/AGENT_EFFICIENCY_ROADMAP.md +5 -1
- ai_dev_cli_tools-1.2.1/docs/AGENT_INTEGRATION_CONTRACT.md +79 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/BENCHMARKS.md +22 -2
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/CONTEXT_BUILDER.md +18 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/DISTRIBUTION.md +8 -5
- ai_dev_cli_tools-1.2.1/docs/INTEGRATIONS_AND_DASHBOARD.md +169 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/MCP_SERVER.md +11 -2
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/OBSERVATION_LIFECYCLE.md +14 -1
- ai_dev_cli_tools-1.2.1/docs/PROJECT_COMPLETE.md +34 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/RELEASE_CHECKLIST.md +7 -1
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/REPORT_SCHEMA.md +20 -2
- ai_dev_cli_tools-1.2.1/examples/benchmarks/agent-adaptive-context.json +32 -0
- ai_dev_cli_tools-1.2.1/examples/benchmarks/agent-context-acknowledgement.json +12 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/agent-corpus.json +6 -2
- ai_dev_cli_tools-1.2.1/examples/benchmarks/agent-feedback-delta.json +32 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/pyproject.toml +1 -1
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/scripts/benchmark_agent_workflow.py +136 -2
- ai_dev_cli_tools-1.2.1/scripts/benchmark_mcp_context_ack.py +110 -0
- ai_dev_cli_tools-1.2.1/scripts/dev.py +164 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/__init__.py +1 -1
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/cli.py +177 -1
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/completion.py +13 -4
- ai_dev_cli_tools-1.2.1/src/ai_dev_tools/context/adaptive.py +143 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/builder.py +163 -4
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/incremental.py +36 -7
- ai_dev_cli_tools-1.2.1/src/ai_dev_tools/context/mcp_delta.py +111 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/models.py +1 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/selection.py +9 -5
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/tokens.py +49 -4
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/dashboard.py +71 -7
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/index_daemon_service.py +47 -13
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/integrations.py +29 -9
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/mcp_server.py +384 -7
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/reporters/progressive.py +27 -1
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/benchmark.py +68 -3
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/check_selection.py +8 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/feedback.py +73 -18
- ai_dev_cli_tools-1.2.1/src/ai_dev_tools/runners/feedback_delta.py +181 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/performance.py +5 -1
- ai_dev_cli_tools-1.2.1/src/ai_dev_tools/runners/task.py +181 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runtime/runner.py +96 -35
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runtime/supervisor.py +81 -16
- ai_dev_cli_tools-1.2.1/src/ai_dev_tools/telemetry.py +496 -0
- ai_dev_cli_tools-1.2.1/src/ai_dev_tools/telemetry_optimizer.py +509 -0
- ai_dev_cli_tools-1.2.1/src/ai_dev_tools/telemetry_policy.py +540 -0
- ai_dev_cli_tools-1.2.1/src/ai_dev_tools/token_efficiency.py +231 -0
- ai_dev_cli_tools-1.2.1/tests/unit/test_adaptive_context.py +188 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_benchmark.py +18 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_benchmark_gate.py +34 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_check.py +2 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_check_plan.py +24 -0
- ai_dev_cli_tools-1.2.1/tests/unit/test_context_mcp_delta.py +87 -0
- ai_dev_cli_tools-1.2.1/tests/unit/test_dev_launcher.py +66 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_feedback.py +32 -1
- ai_dev_cli_tools-1.2.1/tests/unit/test_feedback_delta.py +119 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_index_daemon_service.py +38 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_integrations_dashboard.py +50 -1
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_mcp_server.py +188 -0
- ai_dev_cli_tools-1.2.1/tests/unit/test_new_cli_commands.py +197 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_performance.py +3 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_progressive_reports.py +25 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_report.py +1 -1
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_runtime_runner.py +108 -8
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_runtime_supervisor.py +59 -6
- ai_dev_cli_tools-1.2.1/tests/unit/test_task.py +64 -0
- ai_dev_cli_tools-1.2.1/tests/unit/test_telemetry.py +134 -0
- ai_dev_cli_tools-1.2.1/tests/unit/test_telemetry_optimizer.py +192 -0
- ai_dev_cli_tools-1.2.1/tests/unit/test_telemetry_policy.py +335 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_token_accounting.py +6 -0
- ai_dev_cli_tools-1.1.0/CONTRIBUTING.md +0 -19
- ai_dev_cli_tools-1.1.0/ai.sh +0 -3
- ai_dev_cli_tools-1.1.0/docs/AGENT_INTEGRATION_CONTRACT.md +0 -45
- ai_dev_cli_tools-1.1.0/docs/INTEGRATIONS_AND_DASHBOARD.md +0 -25
- ai_dev_cli_tools-1.1.0/tests/unit/test_new_cli_commands.py +0 -41
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/.github/workflows/docs.yml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/.github/workflows/publish-pypi.yml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/.github/workflows/release.yml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/LICENSE +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/SECURITY.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/ADAPTIVECHESSAI_FULL_CHECK_FAILURE_2026-08-30.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/ADAPTIVECHESSAI_PYCHARM_HEADLESS_INSPECTION_FAILURE_2026-08-30.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/ADDING_A_DETECTOR.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/ADDING_A_RUNNER.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/AGENT_COORDINATION.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/AGENT_WORKFLOW.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/ARCHITECTURE.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/BOOTSTRAP.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/CACHE_AND_INDEX.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/CHANGED_TEST_SELECTION.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/FLAKY_RETRIES.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/MONOREPO_SUPPORT.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/PERFORMANCE.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/RUNTIME.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/SEMANTIC_COMPRESSION.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/TOKEN_EFFICIENCY_RESEARCH.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/TOOL_OUTPUT_PARSERS.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/WARM_ENVIRONMENT.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/WATCH_MODE.md +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/benchmarks/agent-workflows-windows-py314-2026-08-11.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/docs/report-schema.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/agent-affected-workflow.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/agent-monorepo-workflow.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/agent-multiturn-workflow.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/agent-repair-workflow.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/pyproject.toml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/src/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/src/orders.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/src/pricing.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_orders.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_pricing.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_1.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_10.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_11.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_12.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_2.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_3.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_4.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_5.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_6.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_7.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_8.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/tests/test_unrelated_9.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/pyproject.toml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/src/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/src/billing.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/tests/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/billing/tests/test_billing.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/pyproject.toml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/src/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/src/catalog.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/tests/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/fixtures/agent-workflow/workspaces/catalog/tests/test_catalog.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/mcp-recurring-status.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/output-budget-smoke.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/benchmarks/symbol-diff-context.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/examples/consume_json_report.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/requirements-dev.lock +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/scripts/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/scripts/benchmark_mcp_status.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/scripts/benchmark_symbol_diff.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/scripts/test_installed_package.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/scripts/validate_ci.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/scripts/validate_release.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/scripts/verify_published_package.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/__main__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/cache/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/cache/graph.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/cache/prompt_layout.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/cache/repository.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/cache/validation.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/config.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/compression.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/profiles.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/refinement.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/retrieval.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/context/symbols.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/detectors/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/detectors/environment.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/detectors/project.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/detectors/repository_map.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/detectors/runtime.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/detectors/workspaces.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/git/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/git/inspect.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/git/symbol_diff.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/models/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/models/report.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/models/workspace.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/parsers/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/parsers/failures.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/parsers/logs.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/parsers/registry.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/reporters/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/reporters/sarif.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/reporters/writer.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/baseline.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/bootstrap.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/bootstrap_models.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/bootstrap_strategies.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/cache.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/check.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/check_checkpoint.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/check_models.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/check_scheduler.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/coordination.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/diagnostics.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/environment_state.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/finish.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/flaky.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/focused.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/index.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/index_daemon.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/observations.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/plan.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/policy.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runners/watch.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/runtime/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/security/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/security/execution.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/security/secrets.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/semantic.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/semantic_backends.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/source_symbols.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/utils/__init__.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/src/ai_dev_tools/utils/subprocess.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/cargo-fail.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/coverage-ok.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/eslint-fail.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/gradle-ok.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/jest-fail.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/maven-fail.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/maven-localized-fail.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/mypy-fail.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/phpunit-fail.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/pytest-9-ok.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/pytest-fail.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/pytest-multiple-failures.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/ruff-fail.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/ruff-warning.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/tsc-fail.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/logs/vitest-ok.log +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/monorepo-mixed/package.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/monorepo-mixed/packages/api/pyproject.toml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/monorepo-mixed/packages/api/tests/test_smoke.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/monorepo-mixed/packages/web/package.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/monorepo-mixed/packages/web/test.js +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/monorepo-mixed/services/worker/Cargo.toml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/monorepo-mixed/services/worker/src/lib.rs +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/gradle/build.gradle +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/gradle/gradlew.bat +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/maven/mvnw.cmd +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/maven/pom.xml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/node-npm/package-lock.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/node-npm/package.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/node-pnpm/package.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/node-pnpm/pnpm-lock.yaml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/node-yarn/package.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/node-yarn/yarn.lock +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/php-composer/composer.json +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/python-pip/pyproject.toml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/python-pip/requirements.txt +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/python-poetry/pyproject.toml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/python-uv/pyproject.toml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/python-uv/uv.lock +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/fixtures/projects/rust/Cargo.toml +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/integration/test_adaptive_chess_regression.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/integration/test_cli.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/integration/test_cross_platform_paths.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/integration/test_git.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/integration/test_toolchain_e2e.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_agent_plan.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_baseline.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_bootstrap.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_cache.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_check_scheduler.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_cli_more.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_completion.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_config.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_context_builder.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_context_compression.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_context_profiles.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_context_refinement.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_context_retrieval.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_context_symbols.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_coordination.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_diagnostics.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_doctor.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_environment_state.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_execution_policy.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_failure_classification.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_finish.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_flaky.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_index_daemon.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_logs.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_more_coverage.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_more_symbol_adapters.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_observations.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_package_smoke.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_prompt_layout.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_release_scripts.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_repository_map.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_runner_failures.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_runtime.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_sarif.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_scan.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_secret_boundaries.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_secrets.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_semantic.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_semantic_backends.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_symbol_diff.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_tool_parsers.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_watch.py +0 -0
- {ai_dev_cli_tools-1.1.0 → ai_dev_cli_tools-1.2.1}/tests/unit/test_workspaces.py +0 -0
|
@@ -5,6 +5,17 @@ on:
|
|
|
5
5
|
pull_request:
|
|
6
6
|
|
|
7
7
|
jobs:
|
|
8
|
+
launcher-smoke:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
|
|
12
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
13
|
+
with:
|
|
14
|
+
python-version: "3.13"
|
|
15
|
+
- run: python scripts/dev.py --diagnose
|
|
16
|
+
- run: python scripts/dev.py --bootstrap-only
|
|
17
|
+
- run: python scripts/dev.py --no-bootstrap --version
|
|
18
|
+
|
|
8
19
|
test:
|
|
9
20
|
strategy:
|
|
10
21
|
fail-fast: false
|
|
@@ -1,5 +1,60 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 1.2.1 - 2026-09-01
|
|
6
|
+
|
|
7
|
+
- Fix the blank local dashboard by preserving JavaScript newline escapes and resolving dashboard
|
|
8
|
+
containers explicitly instead of relying on browser-created globals.
|
|
9
|
+
- Show a visible status card when the API request or response fails, tolerate partial status
|
|
10
|
+
payloads, and render all dynamic dashboard values through safe text nodes.
|
|
11
|
+
|
|
12
|
+
## 1.2.0 - 2026-09-01
|
|
13
|
+
|
|
14
|
+
- Complete the measured optimization loop with bounded latency samples, daily trends, aggregated
|
|
15
|
+
JSON/CSV export, and explicit human-approved adopt/keep/rollback benchmark decisions.
|
|
16
|
+
- Harden managed-process startup with an observable starting/failed handshake, unique retry
|
|
17
|
+
identities, bounded child-spawn backoff, and preserved masked failure diagnostics.
|
|
18
|
+
- Declare the planned product capability set complete and move the repository to compatibility,
|
|
19
|
+
security, dependency, platform, and regression maintenance.
|
|
20
|
+
|
|
21
|
+
- Add an evidence-based, read-only token optimizer with p50/p95 attribution, safe budget
|
|
22
|
+
recommendations, and accuracy-first cheaper-model routing suggestions.
|
|
23
|
+
- Allow provider usage records to include bounded phase, tool, task-kind, and boolean quality
|
|
24
|
+
evidence without storing prompts or responses.
|
|
25
|
+
- Add telemetry budgets scoped globally, per client, and per model; equal-window regression gates;
|
|
26
|
+
immediate MCP/CLI alerts; chronological session windows; and integrity-checked, versioned pricing
|
|
27
|
+
snapshots with explicit activation and cost provenance.
|
|
28
|
+
- Add bounded OpenAI, Anthropic, and generic provider-usage adapters, MCP `record_usage`,
|
|
29
|
+
idempotent JSON/JSONL imports, optional project-local pricing estimates, and per-client usage
|
|
30
|
+
totals in the CLI and loopback dashboard without storing model input or output content.
|
|
31
|
+
- Add one-shot `ai-dev task` and MCP `prepare_task` workflows that combine a bounded plan,
|
|
32
|
+
context references, validation preview, per-client acknowledgement state, and a measurable token
|
|
33
|
+
savings receipt; full file content is now an explicit opt-in on this path.
|
|
34
|
+
- Generate token-efficient Codex, Claude Code, Cursor, and generic client profiles, expose receipt
|
|
35
|
+
totals in the local dashboard, and optionally require provider-reported tokens in benchmark gates.
|
|
36
|
+
- Make performance snapshot filenames collision-resistant on coarse-resolution clocks so rapid
|
|
37
|
+
measurements remain immutable and compare against the intended baseline.
|
|
38
|
+
- Launch detached runtime supervisors through an isolated absolute-path bootstrap and preserve
|
|
39
|
+
bounded supervisor startup diagnostics instead of discarding early process failures.
|
|
40
|
+
- Add a cross-platform developer launcher with locked `.venv` bootstrapping, isolated quality gates,
|
|
41
|
+
workspace-local temp routing, and machine-readable Git/ACL/proxy diagnostics.
|
|
42
|
+
- Give detached runtime supervisors an absolute package import path so changing their working
|
|
43
|
+
directory cannot invalidate editable installs or relative `PYTHONPATH` entries.
|
|
44
|
+
- Bind managed-process startup and stop acknowledgements to the current control token, tolerate
|
|
45
|
+
slow CI startup handshakes, and release Windows project handles before publishing terminal state.
|
|
46
|
+
- Document the repository's required squash-merge workflow and post-merge `main` verification.
|
|
47
|
+
- Make benchmark corpus and comparison evidence IDs resolvable through `ai-dev explain`.
|
|
48
|
+
- Make index-daemon state writes resilient to transient Windows sharing violations and count
|
|
49
|
+
repository updates only when the indexed content fingerprint actually changes.
|
|
50
|
+
- Add explicit MCP `build_context` acknowledgements: clients can return `acknowledged_state` to
|
|
51
|
+
receive a compact unchanged-context receipt, while changed, partial, or unsafe states retain
|
|
52
|
+
the full live payload. `delta=false` always requests full context.
|
|
53
|
+
- Add deterministic adaptive context budgets and task-scoped incremental memory for agent turns.
|
|
54
|
+
- Require a configurable minimum token reduction in A/B release corpus gates.
|
|
55
|
+
- Add client-acknowledged feedback deltas that replace repeated successful validation and context
|
|
56
|
+
with fingerprinted receipts while retaining failures and warnings live.
|
|
57
|
+
|
|
3
58
|
## 1.1.0 - 2026-08-31
|
|
4
59
|
|
|
5
60
|
Stable promotion of `1.1.0rc1` after cross-platform CI, benchmark regression gates, and a clean
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Keep changes small, typed, tested, and conservative. Runtime code should avoid platform-specific assumptions and prefer `pathlib` for paths.
|
|
4
|
+
|
|
5
|
+
From a fresh checkout, one cross-platform command creates or refreshes the locked `.venv` and runs
|
|
6
|
+
every required gate without loading user-site packages:
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
python scripts/dev.py --check
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Use `python scripts/dev.py --diagnose` to classify Python, workspace-temp, Git-metadata, and proxy
|
|
13
|
+
problems without installing anything. `DEV_GIT_METADATA` means the host or sandbox must grant write
|
|
14
|
+
access to `.git`; it is distinct from an existing-ref collision. `DEV_WORKSPACE_TEMP` means process
|
|
15
|
+
tests cannot safely use the project-local temp directory in the current execution environment.
|
|
16
|
+
|
|
17
|
+
The equivalent individual commands, when already inside the locked `.venv`, are:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
python -m pip install -c requirements-dev.lock -e ".[dev]"
|
|
21
|
+
python -m ruff check .
|
|
22
|
+
python -m mypy src tests scripts
|
|
23
|
+
python -m coverage run -m pytest
|
|
24
|
+
python -m coverage report --fail-under=90
|
|
25
|
+
python -m build
|
|
26
|
+
python scripts/validate_ci.py
|
|
27
|
+
python scripts/test_installed_package.py
|
|
28
|
+
git diff --check
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The installed package smoke test must use a built wheel, a clean virtual environment, and the installed `ai-dev` entrypoint. Do not replace it with editable install or `PYTHONPATH` smoke tests.
|
|
32
|
+
|
|
33
|
+
## Pull requests
|
|
34
|
+
|
|
35
|
+
Keep each pull request focused and wait for the complete Linux, Windows, and macOS CI matrix.
|
|
36
|
+
The repository does not allow merge commits. After required checks pass, maintainers should use a
|
|
37
|
+
squash merge so `main` receives one descriptive commit, then delete the merged topic branch:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
gh pr merge <number> --squash --delete-branch
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Do not retry a rejected `--merge` operation or force-push `main`. Refresh the pull request state
|
|
44
|
+
before merging and verify the resulting squash commit's `main` CI run.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: ai-dev-cli-tools
|
|
3
|
-
Version: 1.1
|
|
3
|
+
Version: 1.2.1
|
|
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
|
|
@@ -57,7 +57,7 @@ be safe for `ai-dev` to recreate.
|
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
59
|
python -m pip install --upgrade pipx
|
|
60
|
-
pipx install ai-dev-cli-tools==1.
|
|
60
|
+
pipx install ai-dev-cli-tools==1.2.1
|
|
61
61
|
ai-dev --help
|
|
62
62
|
```
|
|
63
63
|
|
|
@@ -67,9 +67,13 @@ and upgrade policy.
|
|
|
67
67
|
For development:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
python
|
|
70
|
+
python scripts/dev.py --check
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
+
This creates a locked, repository-local `.venv`, disables ambient user-site packages, and routes
|
|
74
|
+
temporary validation files through `.ai/tmp/dev`. Run `python scripts/dev.py --diagnose` for
|
|
75
|
+
machine-readable Git metadata, temp-directory, Python, and proxy diagnostics without installation.
|
|
76
|
+
|
|
73
77
|
## Windows
|
|
74
78
|
|
|
75
79
|
```powershell
|
|
@@ -98,6 +102,7 @@ ai-dev check --mode changed --compare main
|
|
|
98
102
|
ai-dev check --mode changed --retry-flaky 1
|
|
99
103
|
ai-dev check --mode changed --retry-infra 1
|
|
100
104
|
ai-dev plan --task "implement rate limiting" --mode changed
|
|
105
|
+
ai-dev task --task "implement rate limiting" --client codex --json
|
|
101
106
|
ai-dev index update
|
|
102
107
|
ai-dev index daemon start
|
|
103
108
|
ai-dev index daemon status
|
|
@@ -114,9 +119,18 @@ ai-dev benchmark run --suite examples/benchmarks/output-budget-smoke.json --vari
|
|
|
114
119
|
ai-dev benchmark corpus --manifest examples/benchmarks/agent-corpus.json --trials 3
|
|
115
120
|
ai-dev integrations install all
|
|
116
121
|
ai-dev dashboard serve --port 8765
|
|
122
|
+
ai-dev telemetry import response.json --client codex --format openai
|
|
123
|
+
ai-dev telemetry status --json
|
|
124
|
+
ai-dev telemetry optimize --min-sessions 5 --json
|
|
125
|
+
ai-dev telemetry export --format csv --output .ai/telemetry-exports/usage.csv --json
|
|
126
|
+
ai-dev telemetry gate --json
|
|
127
|
+
ai-dev telemetry pricing import pricing.json --provider openai --version 2026-09-01
|
|
128
|
+
ai-dev telemetry pricing activate openai 2026-09-01
|
|
117
129
|
ai-dev explain issue:<id> --tail 100
|
|
118
130
|
ai-dev explain --symbol "src/app.py#Application.run" --tail 100
|
|
119
131
|
ai-dev feedback --task "fix authentication timeout"
|
|
132
|
+
ai-dev feedback --task "fix authentication timeout" --ack-state <state-fingerprint>
|
|
133
|
+
ai-dev feedback --task "fix authentication timeout" --no-delta # force the full payload
|
|
120
134
|
ai-dev watch --mode changed --debounce 500
|
|
121
135
|
ai-dev session status
|
|
122
136
|
ai-dev bootstrap --if-needed
|
|
@@ -141,7 +155,9 @@ All commands support `--project`, `--json`, `--quiet`, `--help`, and `--version`
|
|
|
141
155
|
`ai-dev mcp serve` exposes project status, implementation planning, compact feedback, bounded context, validation,
|
|
142
156
|
and progressive evidence as local structured tools for Codex-compatible MCP clients. The STDIO
|
|
143
157
|
server is dependency-free, has no network listener, fixes all calls to one project root, and
|
|
144
|
-
defaults validation to preview-only.
|
|
158
|
+
defaults validation to preview-only. After consuming a successful `build_context` response, a
|
|
159
|
+
client can return its `summary.delta.state_fingerprint` as `acknowledged_state`; an identical safe
|
|
160
|
+
state then becomes a compact receipt, while changed or unsafe context remains live.
|
|
145
161
|
|
|
146
162
|
```bash
|
|
147
163
|
codex mcp add ai-dev -- ai-dev --project "/absolute/path/to/project" mcp serve
|
|
@@ -188,6 +204,7 @@ ai-dev context build --retrieval auto --explain # explains retrieval or abstent
|
|
|
188
204
|
ai-dev context build --tokenizer o200k_base --token-budget source=8000 --token-budget diffs=2000
|
|
189
205
|
ai-dev context build --refine issue:<id> --refinement-rounds 2 --refinement-max-files 5
|
|
190
206
|
ai-dev context build --compression conservative
|
|
207
|
+
ai-dev context build --adaptive # task-aware budget; uncertainty expands, explicit limits win
|
|
191
208
|
ai-dev context build --include "src/**/*.py" --exclude "tests/fixtures/**"
|
|
192
209
|
ai-dev context build --explain --json
|
|
193
210
|
```
|
|
@@ -198,6 +215,38 @@ Selective retrieval defaults to `auto`: focused includes or changed files can ab
|
|
|
198
215
|
|
|
199
216
|
Install `ai-dev-cli-tools[tokenizers]` to enable exact local `cl100k_base` or `o200k_base` counting. Without that optional extra, accounting uses the explicit UTF-8-bytes/4 estimate and reports a fallback if an exact tokenizer was requested. Repeated `--token-budget category=N` limits source, diffs, tests, logs, maps, history, cached input, or output independently. `--provider-usage <json>` normalizes OpenAI or Anthropic usage fields from a project-local file without network access.
|
|
200
217
|
|
|
218
|
+
`ai-dev task` is the default one-shot handoff for an AI client. It combines the bounded plan,
|
|
219
|
+
selected context, and check preview while delivering file references instead of full content.
|
|
220
|
+
Use `--include-content` only when the consumer truly needs the bodies. The response includes a
|
|
221
|
+
state fingerprint and a token savings receipt; return that fingerprint with `--ack-state` only
|
|
222
|
+
after consuming the response. Explicit acknowledgements are stored per client under
|
|
223
|
+
`.ai/cache/client-state/`, so Codex, Claude Code, Cursor, and generic consumers never inherit one
|
|
224
|
+
another's assumed context. Receipts remain local under `.ai/token-efficiency/`.
|
|
225
|
+
|
|
226
|
+
Provider-reported usage can be recorded through MCP `record_usage` or imported from a bounded,
|
|
227
|
+
project-local JSON/JSONL file with `ai-dev telemetry import`. OpenAI Responses, Anthropic, and a
|
|
228
|
+
stable generic envelope for Cursor or other clients are normalized without retaining prompt or
|
|
229
|
+
response content. `telemetry status` and the loopback dashboard aggregate input, cached input,
|
|
230
|
+
output, and reasoning tokens by client. Optional cost values are local estimates computed from
|
|
231
|
+
`.ai-dev/telemetry-pricing.json`; no changing provider price is hardcoded and no value is presented
|
|
232
|
+
as a provider invoice. See `docs/INTEGRATIONS_AND_DASHBOARD.md`.
|
|
233
|
+
Project-local `.ai-dev/telemetry-budgets.json` can enforce rolling aggregate limits globally,
|
|
234
|
+
per client, and per model, and compare two chronological session windows for token or cost
|
|
235
|
+
regressions. `ai-dev telemetry gate` returns a failing report for violations, while MCP
|
|
236
|
+
`record_usage` immediately returns the active alerts and read-only `usage_status` provides a
|
|
237
|
+
compact pre-flight check.
|
|
238
|
+
|
|
239
|
+
`telemetry optimize` calculates deterministic p50/p95 usage, latency, cache share, cost, and
|
|
240
|
+
quality attribution by client, model, phase, tool, task kind, and day. It recommends rolling token ceilings
|
|
241
|
+
with an explicit safety margin. Cheaper-model recommendations appear only when both models have
|
|
242
|
+
enough local quality samples, the candidate meets the configured accuracy target, complete
|
|
243
|
+
same-currency cost evidence proves a saving, and the allowed accuracy drop is respected. It never
|
|
244
|
+
switches a model or overwrites a policy. MCP clients can call the read-only `optimize_usage` tool
|
|
245
|
+
for the same report.
|
|
246
|
+
`telemetry export` writes only this aggregated evidence as JSON or CSV inside the project. It
|
|
247
|
+
excludes request IDs, prompts, responses, and repository content and refuses to overwrite an
|
|
248
|
+
existing file.
|
|
249
|
+
|
|
201
250
|
Incremental mode stores the latest schema-versioned manifest plus up to 50 content-addressed
|
|
202
251
|
historical manifests under `.ai/cache/`, and reports changed versus reused files. Pass
|
|
203
252
|
`--since <context-id>` to compare against an explicitly retained context. Default limits are
|
|
@@ -212,7 +261,7 @@ Short reports are written to `.ai/reports/` as Markdown and JSON. Full command o
|
|
|
212
261
|
|
|
213
262
|
JSON reports use schema `1.1` with `schema_version`, `tool_version`, `command`, `status`, `exit_code`, timestamps, `project_root`, `summary`, `issues`, `artifacts`, and `metadata`.
|
|
214
263
|
|
|
215
|
-
`ai-dev feedback` combines Git changes, changed validation, incremental context, focused rerun hints, stage timings, and local session state into one compact agent protocol report.
|
|
264
|
+
`ai-dev feedback` combines Git changes, changed validation, adaptive incremental context, focused rerun hints, stage timings, and local session state into one compact agent protocol report. Adaptive context remains local and deterministic, scopes unchanged-file memory to a normalized task fingerprint, broadens uncertain requests, and never overrides explicit limits. A client may acknowledge the previous `delta.state_fingerprint` through `--ack-state`; only then can identical successful feedback become a small receipt. This prevents one AI client from inheriting another client's assumed context. Failures and warnings always remain live, and `--no-delta` forces the complete response. Its observation lifecycle replaces superseded results with content-addressed IDs expandable through `ai-dev explain`; see `docs/OBSERVATION_LIFECYCLE.md`.
|
|
216
265
|
|
|
217
266
|
Every expandable issue, check, file, snippet, diff, workspace, and artifact receives a stable local `evidence_id`. The report metadata lists references; `ai-dev explain <evidence-id> --tail 100` retrieves only that evidence. `ai-dev baseline create <name>` stores a compact local snapshot under `.ai/cache/baselines/`, and `baseline compare <name>` leads with new/resolved failures, issue codes, and status regressions. Pass `--compare <name>` to `check` or `context build` to apply that regression contract directly to the current report. Reproducible local A/B suites use benchmark run and benchmark compare; see docs/BENCHMARKS.md.
|
|
218
267
|
Research-backed context and token-efficiency recommendations are documented in `docs/TOKEN_EFFICIENCY_RESEARCH.md`.
|
|
@@ -288,6 +337,7 @@ git diff --check
|
|
|
288
337
|
| index status/update/rebuild | implemented |
|
|
289
338
|
| index daemon | implemented |
|
|
290
339
|
| plan / MCP plan_work | implemented |
|
|
340
|
+
| task / MCP prepare_task | implemented with reference-first delivery and token receipts |
|
|
291
341
|
| semantic status/index | implemented with built-in Tree-sitter, LSP, and provider plugins |
|
|
292
342
|
| policy assess / execution enforcement | implemented |
|
|
293
343
|
| sarif | implemented |
|
|
@@ -300,6 +350,10 @@ git diff --check
|
|
|
300
350
|
| benchmark run/compare/gate/corpus | implemented |
|
|
301
351
|
| integrations install | implemented for Codex, Claude Code, Cursor, and generic MCP |
|
|
302
352
|
| dashboard status/serve | implemented, loopback-only |
|
|
353
|
+
| telemetry import/status and MCP record_usage | implemented, provider-reported usage only |
|
|
354
|
+
| telemetry gate/pricing snapshots and MCP usage_status | implemented, local and fail-closed |
|
|
355
|
+
| p50/p95 token optimizer and accuracy-first model recommendations | implemented, read-only |
|
|
356
|
+
| aggregated telemetry export and latency trends | implemented, content-free |
|
|
303
357
|
| performance latest/compare | implemented |
|
|
304
358
|
| capabilities | implemented |
|
|
305
359
|
| git status | implemented |
|
|
@@ -312,6 +366,10 @@ git diff --check
|
|
|
312
366
|
|
|
313
367
|
## Scope Notes
|
|
314
368
|
|
|
369
|
+
The planned product capability set is complete as of 1.2.0. See
|
|
370
|
+
[`docs/PROJECT_COMPLETE.md`](docs/PROJECT_COMPLETE.md) for the maintenance boundary and the exact
|
|
371
|
+
acceptance evidence required for future changes.
|
|
372
|
+
|
|
315
373
|
- Monorepo/workspace detection and per-subproject command routing: implemented.
|
|
316
374
|
- Per-subproject check and bootstrap working directories: implemented.
|
|
317
375
|
- Runtime requirement detection and version validation: implemented.
|
|
@@ -320,6 +378,6 @@ git diff --check
|
|
|
320
378
|
- Auto-commit, auto-push, destructive cleanup, remote source transmission, and GUI are intentionally out of scope.
|
|
321
379
|
|
|
322
380
|
## Intentional Limits
|
|
323
|
-
Version 1.
|
|
381
|
+
Version 1.2.0 does not reset, clean, commit, push, merge, clone organizations, synchronize repositories, delete containers, publish releases, or remove user files.
|
|
324
382
|
|
|
325
383
|
Shell completion scripts are generated with `ai-dev completion bash|zsh|fish|powershell` and can be sourced or installed using the normal mechanism for the selected shell.
|
|
@@ -23,7 +23,7 @@ be safe for `ai-dev` to recreate.
|
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
python -m pip install --upgrade pipx
|
|
26
|
-
pipx install ai-dev-cli-tools==1.
|
|
26
|
+
pipx install ai-dev-cli-tools==1.2.1
|
|
27
27
|
ai-dev --help
|
|
28
28
|
```
|
|
29
29
|
|
|
@@ -33,9 +33,13 @@ and upgrade policy.
|
|
|
33
33
|
For development:
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
-
python
|
|
36
|
+
python scripts/dev.py --check
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
This creates a locked, repository-local `.venv`, disables ambient user-site packages, and routes
|
|
40
|
+
temporary validation files through `.ai/tmp/dev`. Run `python scripts/dev.py --diagnose` for
|
|
41
|
+
machine-readable Git metadata, temp-directory, Python, and proxy diagnostics without installation.
|
|
42
|
+
|
|
39
43
|
## Windows
|
|
40
44
|
|
|
41
45
|
```powershell
|
|
@@ -64,6 +68,7 @@ ai-dev check --mode changed --compare main
|
|
|
64
68
|
ai-dev check --mode changed --retry-flaky 1
|
|
65
69
|
ai-dev check --mode changed --retry-infra 1
|
|
66
70
|
ai-dev plan --task "implement rate limiting" --mode changed
|
|
71
|
+
ai-dev task --task "implement rate limiting" --client codex --json
|
|
67
72
|
ai-dev index update
|
|
68
73
|
ai-dev index daemon start
|
|
69
74
|
ai-dev index daemon status
|
|
@@ -80,9 +85,18 @@ ai-dev benchmark run --suite examples/benchmarks/output-budget-smoke.json --vari
|
|
|
80
85
|
ai-dev benchmark corpus --manifest examples/benchmarks/agent-corpus.json --trials 3
|
|
81
86
|
ai-dev integrations install all
|
|
82
87
|
ai-dev dashboard serve --port 8765
|
|
88
|
+
ai-dev telemetry import response.json --client codex --format openai
|
|
89
|
+
ai-dev telemetry status --json
|
|
90
|
+
ai-dev telemetry optimize --min-sessions 5 --json
|
|
91
|
+
ai-dev telemetry export --format csv --output .ai/telemetry-exports/usage.csv --json
|
|
92
|
+
ai-dev telemetry gate --json
|
|
93
|
+
ai-dev telemetry pricing import pricing.json --provider openai --version 2026-09-01
|
|
94
|
+
ai-dev telemetry pricing activate openai 2026-09-01
|
|
83
95
|
ai-dev explain issue:<id> --tail 100
|
|
84
96
|
ai-dev explain --symbol "src/app.py#Application.run" --tail 100
|
|
85
97
|
ai-dev feedback --task "fix authentication timeout"
|
|
98
|
+
ai-dev feedback --task "fix authentication timeout" --ack-state <state-fingerprint>
|
|
99
|
+
ai-dev feedback --task "fix authentication timeout" --no-delta # force the full payload
|
|
86
100
|
ai-dev watch --mode changed --debounce 500
|
|
87
101
|
ai-dev session status
|
|
88
102
|
ai-dev bootstrap --if-needed
|
|
@@ -107,7 +121,9 @@ All commands support `--project`, `--json`, `--quiet`, `--help`, and `--version`
|
|
|
107
121
|
`ai-dev mcp serve` exposes project status, implementation planning, compact feedback, bounded context, validation,
|
|
108
122
|
and progressive evidence as local structured tools for Codex-compatible MCP clients. The STDIO
|
|
109
123
|
server is dependency-free, has no network listener, fixes all calls to one project root, and
|
|
110
|
-
defaults validation to preview-only.
|
|
124
|
+
defaults validation to preview-only. After consuming a successful `build_context` response, a
|
|
125
|
+
client can return its `summary.delta.state_fingerprint` as `acknowledged_state`; an identical safe
|
|
126
|
+
state then becomes a compact receipt, while changed or unsafe context remains live.
|
|
111
127
|
|
|
112
128
|
```bash
|
|
113
129
|
codex mcp add ai-dev -- ai-dev --project "/absolute/path/to/project" mcp serve
|
|
@@ -154,6 +170,7 @@ ai-dev context build --retrieval auto --explain # explains retrieval or abstent
|
|
|
154
170
|
ai-dev context build --tokenizer o200k_base --token-budget source=8000 --token-budget diffs=2000
|
|
155
171
|
ai-dev context build --refine issue:<id> --refinement-rounds 2 --refinement-max-files 5
|
|
156
172
|
ai-dev context build --compression conservative
|
|
173
|
+
ai-dev context build --adaptive # task-aware budget; uncertainty expands, explicit limits win
|
|
157
174
|
ai-dev context build --include "src/**/*.py" --exclude "tests/fixtures/**"
|
|
158
175
|
ai-dev context build --explain --json
|
|
159
176
|
```
|
|
@@ -164,6 +181,38 @@ Selective retrieval defaults to `auto`: focused includes or changed files can ab
|
|
|
164
181
|
|
|
165
182
|
Install `ai-dev-cli-tools[tokenizers]` to enable exact local `cl100k_base` or `o200k_base` counting. Without that optional extra, accounting uses the explicit UTF-8-bytes/4 estimate and reports a fallback if an exact tokenizer was requested. Repeated `--token-budget category=N` limits source, diffs, tests, logs, maps, history, cached input, or output independently. `--provider-usage <json>` normalizes OpenAI or Anthropic usage fields from a project-local file without network access.
|
|
166
183
|
|
|
184
|
+
`ai-dev task` is the default one-shot handoff for an AI client. It combines the bounded plan,
|
|
185
|
+
selected context, and check preview while delivering file references instead of full content.
|
|
186
|
+
Use `--include-content` only when the consumer truly needs the bodies. The response includes a
|
|
187
|
+
state fingerprint and a token savings receipt; return that fingerprint with `--ack-state` only
|
|
188
|
+
after consuming the response. Explicit acknowledgements are stored per client under
|
|
189
|
+
`.ai/cache/client-state/`, so Codex, Claude Code, Cursor, and generic consumers never inherit one
|
|
190
|
+
another's assumed context. Receipts remain local under `.ai/token-efficiency/`.
|
|
191
|
+
|
|
192
|
+
Provider-reported usage can be recorded through MCP `record_usage` or imported from a bounded,
|
|
193
|
+
project-local JSON/JSONL file with `ai-dev telemetry import`. OpenAI Responses, Anthropic, and a
|
|
194
|
+
stable generic envelope for Cursor or other clients are normalized without retaining prompt or
|
|
195
|
+
response content. `telemetry status` and the loopback dashboard aggregate input, cached input,
|
|
196
|
+
output, and reasoning tokens by client. Optional cost values are local estimates computed from
|
|
197
|
+
`.ai-dev/telemetry-pricing.json`; no changing provider price is hardcoded and no value is presented
|
|
198
|
+
as a provider invoice. See `docs/INTEGRATIONS_AND_DASHBOARD.md`.
|
|
199
|
+
Project-local `.ai-dev/telemetry-budgets.json` can enforce rolling aggregate limits globally,
|
|
200
|
+
per client, and per model, and compare two chronological session windows for token or cost
|
|
201
|
+
regressions. `ai-dev telemetry gate` returns a failing report for violations, while MCP
|
|
202
|
+
`record_usage` immediately returns the active alerts and read-only `usage_status` provides a
|
|
203
|
+
compact pre-flight check.
|
|
204
|
+
|
|
205
|
+
`telemetry optimize` calculates deterministic p50/p95 usage, latency, cache share, cost, and
|
|
206
|
+
quality attribution by client, model, phase, tool, task kind, and day. It recommends rolling token ceilings
|
|
207
|
+
with an explicit safety margin. Cheaper-model recommendations appear only when both models have
|
|
208
|
+
enough local quality samples, the candidate meets the configured accuracy target, complete
|
|
209
|
+
same-currency cost evidence proves a saving, and the allowed accuracy drop is respected. It never
|
|
210
|
+
switches a model or overwrites a policy. MCP clients can call the read-only `optimize_usage` tool
|
|
211
|
+
for the same report.
|
|
212
|
+
`telemetry export` writes only this aggregated evidence as JSON or CSV inside the project. It
|
|
213
|
+
excludes request IDs, prompts, responses, and repository content and refuses to overwrite an
|
|
214
|
+
existing file.
|
|
215
|
+
|
|
167
216
|
Incremental mode stores the latest schema-versioned manifest plus up to 50 content-addressed
|
|
168
217
|
historical manifests under `.ai/cache/`, and reports changed versus reused files. Pass
|
|
169
218
|
`--since <context-id>` to compare against an explicitly retained context. Default limits are
|
|
@@ -178,7 +227,7 @@ Short reports are written to `.ai/reports/` as Markdown and JSON. Full command o
|
|
|
178
227
|
|
|
179
228
|
JSON reports use schema `1.1` with `schema_version`, `tool_version`, `command`, `status`, `exit_code`, timestamps, `project_root`, `summary`, `issues`, `artifacts`, and `metadata`.
|
|
180
229
|
|
|
181
|
-
`ai-dev feedback` combines Git changes, changed validation, incremental context, focused rerun hints, stage timings, and local session state into one compact agent protocol report.
|
|
230
|
+
`ai-dev feedback` combines Git changes, changed validation, adaptive incremental context, focused rerun hints, stage timings, and local session state into one compact agent protocol report. Adaptive context remains local and deterministic, scopes unchanged-file memory to a normalized task fingerprint, broadens uncertain requests, and never overrides explicit limits. A client may acknowledge the previous `delta.state_fingerprint` through `--ack-state`; only then can identical successful feedback become a small receipt. This prevents one AI client from inheriting another client's assumed context. Failures and warnings always remain live, and `--no-delta` forces the complete response. Its observation lifecycle replaces superseded results with content-addressed IDs expandable through `ai-dev explain`; see `docs/OBSERVATION_LIFECYCLE.md`.
|
|
182
231
|
|
|
183
232
|
Every expandable issue, check, file, snippet, diff, workspace, and artifact receives a stable local `evidence_id`. The report metadata lists references; `ai-dev explain <evidence-id> --tail 100` retrieves only that evidence. `ai-dev baseline create <name>` stores a compact local snapshot under `.ai/cache/baselines/`, and `baseline compare <name>` leads with new/resolved failures, issue codes, and status regressions. Pass `--compare <name>` to `check` or `context build` to apply that regression contract directly to the current report. Reproducible local A/B suites use benchmark run and benchmark compare; see docs/BENCHMARKS.md.
|
|
184
233
|
Research-backed context and token-efficiency recommendations are documented in `docs/TOKEN_EFFICIENCY_RESEARCH.md`.
|
|
@@ -254,6 +303,7 @@ git diff --check
|
|
|
254
303
|
| index status/update/rebuild | implemented |
|
|
255
304
|
| index daemon | implemented |
|
|
256
305
|
| plan / MCP plan_work | implemented |
|
|
306
|
+
| task / MCP prepare_task | implemented with reference-first delivery and token receipts |
|
|
257
307
|
| semantic status/index | implemented with built-in Tree-sitter, LSP, and provider plugins |
|
|
258
308
|
| policy assess / execution enforcement | implemented |
|
|
259
309
|
| sarif | implemented |
|
|
@@ -266,6 +316,10 @@ git diff --check
|
|
|
266
316
|
| benchmark run/compare/gate/corpus | implemented |
|
|
267
317
|
| integrations install | implemented for Codex, Claude Code, Cursor, and generic MCP |
|
|
268
318
|
| dashboard status/serve | implemented, loopback-only |
|
|
319
|
+
| telemetry import/status and MCP record_usage | implemented, provider-reported usage only |
|
|
320
|
+
| telemetry gate/pricing snapshots and MCP usage_status | implemented, local and fail-closed |
|
|
321
|
+
| p50/p95 token optimizer and accuracy-first model recommendations | implemented, read-only |
|
|
322
|
+
| aggregated telemetry export and latency trends | implemented, content-free |
|
|
269
323
|
| performance latest/compare | implemented |
|
|
270
324
|
| capabilities | implemented |
|
|
271
325
|
| git status | implemented |
|
|
@@ -278,6 +332,10 @@ git diff --check
|
|
|
278
332
|
|
|
279
333
|
## Scope Notes
|
|
280
334
|
|
|
335
|
+
The planned product capability set is complete as of 1.2.0. See
|
|
336
|
+
[`docs/PROJECT_COMPLETE.md`](docs/PROJECT_COMPLETE.md) for the maintenance boundary and the exact
|
|
337
|
+
acceptance evidence required for future changes.
|
|
338
|
+
|
|
281
339
|
- Monorepo/workspace detection and per-subproject command routing: implemented.
|
|
282
340
|
- Per-subproject check and bootstrap working directories: implemented.
|
|
283
341
|
- Runtime requirement detection and version validation: implemented.
|
|
@@ -286,6 +344,6 @@ git diff --check
|
|
|
286
344
|
- Auto-commit, auto-push, destructive cleanup, remote source transmission, and GUI are intentionally out of scope.
|
|
287
345
|
|
|
288
346
|
## Intentional Limits
|
|
289
|
-
Version 1.
|
|
347
|
+
Version 1.2.0 does not reset, clean, commit, push, merge, clone organizations, synchronize repositories, delete containers, publish releases, or remove user files.
|
|
290
348
|
|
|
291
349
|
Shell completion scripts are generated with `ai-dev completion bash|zsh|fish|powershell` and can be sourced or installed using the normal mechanism for the selected shell.
|
|
@@ -9,8 +9,10 @@ cross-platform behavior are covered where applicable.
|
|
|
9
9
|
|
|
10
10
|
## Active work
|
|
11
11
|
|
|
12
|
-
There are no known incomplete P1 or P2 implementation items for the 1.0
|
|
13
|
-
|
|
12
|
+
There are no known incomplete P1 or P2 implementation items for the 1.0-1.2 contracts. The planned
|
|
13
|
+
product capability set is complete. New work is maintenance and must be justified by a supported
|
|
14
|
+
platform change, security issue, dependency update, reproducible regression, or backward-compatible
|
|
15
|
+
integration requirement.
|
|
14
16
|
|
|
15
17
|
## Deferred or explicitly out of scope
|
|
16
18
|
|
|
@@ -46,6 +46,10 @@ and longer-term direction without presenting proposed interfaces as available co
|
|
|
46
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
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
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. |
|
|
49
|
+
| 27 | Adaptive context engine | Implemented | Task intent and local scope signals derive conservative token ceilings, explicit limits win, task-scoped incremental memory prevents cross-task omission, and the release corpus requires a measured token reduction without recall loss. |
|
|
50
|
+
| 28 | Session delta feedback | Implemented | A client-acknowledged identical success is replaced by a fingerprinted validation/context receipt with exact expansion handles; missing acknowledgement, changed content, semantic validation changes, failures, warnings, and explicit opt-out preserve the full live payload. |
|
|
51
|
+
| 29 | Evidence-based token optimizer | Implemented | Bounded p50/p95 attribution proposes token ceilings and cheaper models only after local quality and cost evidence meets explicit thresholds. |
|
|
52
|
+
| 30 | Closed optimization loop | Implemented | Provider duration, daily trends, content-free JSON/CSV export, and correctness-gated benchmark decisions advise adopt, keep, or rollback while never mutating model policy automatically. |
|
|
49
53
|
|
|
50
54
|
## Implemented supporting capabilities
|
|
51
55
|
|
|
@@ -62,7 +66,7 @@ The current foundation also includes:
|
|
|
62
66
|
|
|
63
67
|
## Active direction
|
|
64
68
|
|
|
65
|
-
The 1.0 capability set is complete. Further development should prioritize measured correctness,
|
|
69
|
+
The planned 1.0-1.2 capability set is complete. Further development is maintenance and should prioritize measured correctness,
|
|
66
70
|
backward-compatible schema evolution, parser fixtures for newly supported tool versions, and
|
|
67
71
|
cross-platform performance evidence rather than adding overlapping commands.
|
|
68
72
|
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Coding Agent Integration Contract
|
|
2
|
+
|
|
3
|
+
The supported integration surfaces are the `ai-dev` command line, report schema `1.1`, and the
|
|
4
|
+
local `ai-dev mcp serve` STDIO server.
|
|
5
|
+
Integrations must request JSON with `--json` and must not parse Markdown or terminal prose.
|
|
6
|
+
|
|
7
|
+
## Stability
|
|
8
|
+
|
|
9
|
+
- `schema_version`, `command`, `status`, `exit_code`, `summary`, `issues`, `artifacts`, and
|
|
10
|
+
`metadata` are stable top-level fields for schema 1.x.
|
|
11
|
+
- Consumers must ignore unknown fields and tolerate new enum values.
|
|
12
|
+
- Paths are native absolute paths in artifacts and project-relative paths in repository data.
|
|
13
|
+
- `success`, `partial`, and `warning` are non-error CLI outcomes; other statuses return nonzero.
|
|
14
|
+
- Breaking removals or type changes require a schema-major change.
|
|
15
|
+
|
|
16
|
+
## Recommended loop
|
|
17
|
+
|
|
18
|
+
1. Prefer MCP `prepare_task` or `ai-dev task --task "<task>" --client <client> --json` for a
|
|
19
|
+
single bounded handoff. Use `plan_work` alone only when context selection is not yet needed.
|
|
20
|
+
2. Run `ai-dev cache layout --json` once per content state and place stable sections before task-specific content at the recommended breakpoint.
|
|
21
|
+
3. Prefer `ai-dev feedback --task "<task>" --json` for the normal compact loop.
|
|
22
|
+
4. Inspect `decision`, `changes`, `validation`, `context`, `observations`, `delta`, and `performance`.
|
|
23
|
+
Pass the prior `delta.state_fingerprint` as `--ack-state` (or MCP `acknowledged_state`) only
|
|
24
|
+
after consuming that response. When `delta.reused=true`, expand only the evidence required for
|
|
25
|
+
the next decision. Use `--no-delta` when a consumer explicitly requires the repeated payload.
|
|
26
|
+
5. Use `ai-dev session status --json` after an interrupted handoff.
|
|
27
|
+
6. Read `metadata.progressive.references` and expand only the evidence needed.
|
|
28
|
+
7. Use failure signatures to deduplicate retries and optionally compare a named local baseline.
|
|
29
|
+
8. Treat flaky passes, low confidence, and recall regressions as unresolved evidence.
|
|
30
|
+
9. Before handoff, run `ai-dev finish --json` and a complete validation pass.
|
|
31
|
+
10. When the provider exposes numeric usage, call MCP `record_usage` once after the response.
|
|
32
|
+
Send total input, cache read/write, output and reasoning counts, client, and optional
|
|
33
|
+
model/request ID and optional bounded phase/tool/task-kind labels plus a boolean quality
|
|
34
|
+
outcome; never send prompt or response text. Treat `measurement=provider_reported` as the
|
|
35
|
+
provenance of counts and any
|
|
36
|
+
`cost.kind=local_pricing_estimate` as an estimate, not billed cost.
|
|
37
|
+
11. Read `summary.policy` returned by `record_usage`. Stop additional expensive work on active
|
|
38
|
+
violations unless the user explicitly changes the budget. Use read-only `usage_status` before
|
|
39
|
+
a costly phase and `ai-dev telemetry gate --json` in deterministic CI/release gates.
|
|
40
|
+
12. Call read-only `optimize_usage` after enough representative sessions. Treat budget output as
|
|
41
|
+
a proposal, never permission to overwrite policy. Never switch to a cheaper model unless the
|
|
42
|
+
recommendation includes sufficient quality samples, meets the accuracy target, proves a
|
|
43
|
+
same-currency saving, and a human or owning agent approves the change.
|
|
44
|
+
|
|
45
|
+
All acceleration state is local under `.ai/`; no command transmits repository contents or
|
|
46
|
+
metrics.
|
|
47
|
+
|
|
48
|
+
## MCP integration
|
|
49
|
+
|
|
50
|
+
Use the local MCP server when the agent supports structured tools. Tool results contain concise
|
|
51
|
+
text and machine-readable `structuredContent`; consumers should prefer the structured data.
|
|
52
|
+
|
|
53
|
+
- Call `project_status`, then `plan_work`, before broad repository work.
|
|
54
|
+
- Prefer `prepare_task` when one compact call should replace separate planning, context, and check
|
|
55
|
+
discovery calls. File bodies are references by default; request `include_content=true` only on
|
|
56
|
+
demand.
|
|
57
|
+
- Use `feedback`, `build_context`, and `run_checks` in their preview-only defaults.
|
|
58
|
+
- Set execution or artifact-writing flags only when the task requires them.
|
|
59
|
+
- Expand one stable ID with `explain_evidence` instead of requesting full logs.
|
|
60
|
+
- Treat tool names and required fields as compatibility contracts.
|
|
61
|
+
- Ignore new optional fields and new tools.
|
|
62
|
+
- Use `record_usage` only with usage returned by the provider. Do not substitute tokenizer or
|
|
63
|
+
character estimates, because estimated context savings and provider-reported consumption are
|
|
64
|
+
separate measurements.
|
|
65
|
+
- Treat `TELEMETRY_REGRESSION_INSUFFICIENT_DATA` as informational. Treat budget, cost-data, and
|
|
66
|
+
regression violations as unresolved until the policy or measured workload changes.
|
|
67
|
+
- Treat every `MODEL_ROUTING_*` gap as evidence that routing must remain unchanged. A
|
|
68
|
+
`MODEL_ROUTING_RECOMMENDATION` is advisory and never grants permission to mutate client config.
|
|
69
|
+
- Respect MCP annotations and the configured client approval policy.
|
|
70
|
+
|
|
71
|
+
For repeated `build_context` calls, return the prior `summary.delta.state_fingerprint` as
|
|
72
|
+
`acknowledged_state`. A receipt is emitted only when repository contents, request parameters, and
|
|
73
|
+
the safe successful state still match. Changed, partial, warning, error, and secret-bearing states
|
|
74
|
+
return full live context. Set `delta=false` whenever a complete refresh is required.
|
|
75
|
+
- `prepare_task` accepts `client=codex|claude|cursor|generic`. Persisted acknowledgement state is
|
|
76
|
+
updated only when the caller explicitly supplies `acknowledged_state` with `persist_ack=true`.
|
|
77
|
+
- Keep infrastructure retry separate from flaky-test retry; neither may retry code failures.
|
|
78
|
+
|
|
79
|
+
See `MCP_SERVER.md` for setup and complete safety boundaries.
|
|
@@ -35,8 +35,14 @@ ai-dev benchmark run --suite benchmarks/agent-workflows.json --variant ai-dev --
|
|
|
35
35
|
ai-dev benchmark compare .ai/benchmarks/runs/<baseline>.json .ai/benchmarks/runs/<candidate>.json
|
|
36
36
|
ai-dev benchmark gate .ai/benchmarks/runs/<baseline>.json .ai/benchmarks/runs/<candidate>.json
|
|
37
37
|
ai-dev benchmark corpus --manifest examples/benchmarks/agent-corpus.json --trials 3
|
|
38
|
+
ai-dev benchmark run --suite benchmarks/real-codex.json --variant ai-dev --client codex --trials 5
|
|
39
|
+
ai-dev benchmark gate <baseline.json> <candidate.json> --require-reported-tokens
|
|
38
40
|
~~~
|
|
39
41
|
|
|
42
|
+
The corpus includes a repeated MCP `build_context` task that compares a forced full refresh with
|
|
43
|
+
an explicitly acknowledged unchanged receipt. Both variants must retain the same outcome,
|
|
44
|
+
precision, and recall while the receipt satisfies the configured token-reduction threshold.
|
|
45
|
+
|
|
40
46
|
Cold and warm results are deliberately separate and cannot be compared with each other. A
|
|
41
47
|
comparison is valid only when the suite name, fixture version, cache state, and validated outcome
|
|
42
48
|
signatures match and every trial succeeds.
|
|
@@ -48,8 +54,11 @@ masked_utf8_bytes_divided_by_4; they are a stable approximation, not a model tok
|
|
|
48
54
|
Raw JSON and compact Markdown reports stay under `.ai/benchmarks/`.
|
|
49
55
|
|
|
50
56
|
`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.
|
|
52
|
-
|
|
57
|
+
bounds, required token reduction is not achieved, precision/recall fall below their floors, or false negatives exceed the allowance. Use
|
|
58
|
+
`--min-token-reduction PERCENT` to require a measured improvement rather than merely permitting no
|
|
59
|
+
regression. The
|
|
60
|
+
versioned corpus runs six representative agent tasks, including adaptive-off versus adaptive-on
|
|
61
|
+
context selection and full versus session-delta feedback, and applies the shared thresholds from
|
|
53
62
|
`examples/benchmarks/agent-corpus.json`; it is suitable as a CI release gate.
|
|
54
63
|
|
|
55
64
|
A suite variant may emit one private `AI_DEV_BENCHMARK_METRICS=` JSON line on stderr to
|
|
@@ -63,6 +72,17 @@ agent-visible bytes. Missing or invalid metrics safely fall back to generic meas
|
|
|
63
72
|
never presented as exact model-token counts. `selection_metric_trials` is zero when precision and
|
|
64
73
|
recall were not reported; their zero medians must not be interpreted as measured selection quality.
|
|
65
74
|
|
|
75
|
+
Use `--client codex|claude|cursor|generic` to label runs from a real client adapter. A real adapter
|
|
76
|
+
should emit `input_tokens` or `output_tokens` in its private metrics line. The
|
|
77
|
+
`--require-reported-tokens` gate fails unless every candidate trial contains provider-reported
|
|
78
|
+
usage; this prevents estimated character counts from being presented as real client token data.
|
|
79
|
+
|
|
80
|
+
Every comparison and gate is advisory and requires human approval. A passing candidate that is
|
|
81
|
+
both faster and smaller returns `adopt_candidate`; a passing tradeoff returns `keep_baseline`; any
|
|
82
|
+
correctness, recall, token, time, or reported-usage gate failure returns `rollback_candidate`.
|
|
83
|
+
Reports always set `automatic_rollback: false`, so an agent cannot reinterpret the evidence as
|
|
84
|
+
permission to change model or client configuration.
|
|
85
|
+
|
|
66
86
|
## Included suites
|
|
67
87
|
|
|
68
88
|
`examples/benchmarks/mcp-recurring-status.json` compares recurring project status collection.
|