autodev-ai 0.1.0a2__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.
- autodev_ai-0.1.0a2/.github/dependabot.yml +13 -0
- autodev_ai-0.1.0a2/.github/workflows/docker-publish.yml +109 -0
- autodev_ai-0.1.0a2/.github/workflows/lint.yml +28 -0
- autodev_ai-0.1.0a2/.github/workflows/release.yml +75 -0
- autodev_ai-0.1.0a2/.github/workflows/test.yml +37 -0
- autodev_ai-0.1.0a2/.gitignore +25 -0
- autodev_ai-0.1.0a2/.pre-commit-config.yaml +25 -0
- autodev_ai-0.1.0a2/CHANGELOG.md +147 -0
- autodev_ai-0.1.0a2/LICENSE +21 -0
- autodev_ai-0.1.0a2/PKG-INFO +340 -0
- autodev_ai-0.1.0a2/README.md +294 -0
- autodev_ai-0.1.0a2/docs/a2a.md +103 -0
- autodev_ai-0.1.0a2/docs/a2a_http_client.md +124 -0
- autodev_ai-0.1.0a2/docs/a2a_server.md +161 -0
- autodev_ai-0.1.0a2/docs/architecture.md +276 -0
- autodev_ai-0.1.0a2/docs/claude_code_adapter.md +16 -0
- autodev_ai-0.1.0a2/docs/codex_cli_adapter.md +13 -0
- autodev_ai-0.1.0a2/docs/configuration.md +298 -0
- autodev_ai-0.1.0a2/docs/contributing.md +51 -0
- autodev_ai-0.1.0a2/docs/crewai_flows.md +24 -0
- autodev_ai-0.1.0a2/docs/faq.md +255 -0
- autodev_ai-0.1.0a2/docs/issue_pipeline.md +19 -0
- autodev_ai-0.1.0a2/docs/mcp_server.md +83 -0
- autodev_ai-0.1.0a2/docs/multi_cli_executor.md +106 -0
- autodev_ai-0.1.0a2/docs/project_delivery.md +40 -0
- autodev_ai-0.1.0a2/docs/quality_gate.md +13 -0
- autodev_ai-0.1.0a2/docs/quickstart.md +178 -0
- autodev_ai-0.1.0a2/docs/release/pypi_0_1_0a1_publish_checklist.md +246 -0
- autodev_ai-0.1.0a2/docs/release/pypi_0_1_0a1_rollback_plan.md +249 -0
- autodev_ai-0.1.0a2/docs/release_gate.md +18 -0
- autodev_ai-0.1.0a2/docs/release_notes/v0.1.0a1.md +241 -0
- autodev_ai-0.1.0a2/docs/state_schema.md +37 -0
- autodev_ai-0.1.0a2/docs/troubleshooting.md +310 -0
- autodev_ai-0.1.0a2/docs/tutorials/01-bug-fix.md +182 -0
- autodev_ai-0.1.0a2/docs/tutorials/02-rust-project.md +156 -0
- autodev_ai-0.1.0a2/docs/tutorials/03-multi-cli-routing.md +163 -0
- autodev_ai-0.1.0a2/docs/tutorials/04-sprint-mode.md +191 -0
- autodev_ai-0.1.0a2/docs/tutorials/05-roundtable.md +152 -0
- autodev_ai-0.1.0a2/docs/tutorials/06-mcp-server.md +171 -0
- autodev_ai-0.1.0a2/docs/tutorials/07-a2a-server.md +208 -0
- autodev_ai-0.1.0a2/docs/usage.md +98 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_a2a_protocol_audit.json +39 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_a2a_protocol_audit.md +154 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_ci_quality_coverage_audit.json +180 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_ci_quality_coverage_audit.md +234 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_cli_surface_audit.json +392 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_cli_surface_audit.md +105 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_coverage_gap_prioritization.json +191 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_coverage_gap_prioritization.md +95 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_documentation_onboarding_audit.json +225 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_documentation_onboarding_audit.md +168 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_executor_boundary_audit.json +148 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_executor_boundary_audit.md +174 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_flow_agent_coverage_audit.json +516 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_flow_agent_coverage_audit.md +188 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_flow_agent_failure_coverage_audit.json +344 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_flow_agent_failure_coverage_audit.md +130 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_a2a.json +13 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_a2a.md +77 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_cli_surface.json +22 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_cli_surface.md +112 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_docs_onboarding.json +52 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_docs_onboarding.md +82 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_executor_isolation.json +88 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_executor_isolation.md +103 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_flow_agent_coverage.json +46 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_flow_agent_coverage.md +71 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_mcp.json +30 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_mcp.md +52 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_metadata.json +51 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_metadata.md +84 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_packaging.json +54 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_packaging.md +80 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_quality_ci.json +57 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_quality_ci.md +131 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_security.json +241 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_security.md +134 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_validation_reports.json +92 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_audit_validation_reports.md +121 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_pre_tag_audit_round.json +160 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_full_pre_tag_audit_round.md +205 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_installation_audit.json +135 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_installation_audit.md +155 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_mcp_server_audit.json +166 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_mcp_server_audit.md +138 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_p0_release_critical_tests.json +81 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_p0_release_critical_tests.md +92 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_p0_security_tests.json +180 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_p0_security_tests.md +110 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_p1_flow_failure_tests.json +87 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_p1_flow_failure_tests.md +107 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_p1_protocol_error_tests.json +138 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_p1_protocol_error_tests.md +87 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_packaging_artifact_audit.json +202 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_packaging_artifact_audit.md +196 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_post_publish_verification_round.json +154 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_post_publish_verification_round.md +160 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pre_tag_go_no_go.json +110 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pre_tag_go_no_go.md +107 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_protocol_coverage_audit.json +210 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_protocol_coverage_audit.md +119 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pypi_0_1_0a1_rc_publish_prep.json +158 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pypi_0_1_0a1_rc_publish_prep.md +227 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pypi_rc_artifact_build.json +64 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pypi_rc_artifact_build.md +54 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pypi_rc_metadata_freeze.json +158 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pypi_rc_metadata_freeze.md +206 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pypi_rc_release_gate_final.json +54 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pypi_rc_release_gate_final.md +63 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pypi_rc_release_workflow_audit.json +115 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_pypi_rc_release_workflow_audit.md +110 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_a2a_http_ssrf_hardening.json +129 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_a2a_http_ssrf_hardening.md +69 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_flow_test_coverage.json +57 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_flow_test_coverage.md +100 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_homebrew_metadata_closure.json +71 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_homebrew_metadata_closure.md +76 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_pypi_release_blocker_closure.json +155 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_pypi_release_blocker_closure.md +185 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_release_workflow_pytest_gate.json +55 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_release_workflow_pytest_gate.md +83 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_wheel_version_smoke.json +33 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r2_wheel_version_smoke.md +52 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_a2a_dns_rebinding_hardening.json +116 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_a2a_dns_rebinding_hardening.md +136 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_docker_digest_pinning.json +67 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_docker_digest_pinning.md +145 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_documentation_minimum_closure.json +98 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_documentation_minimum_closure.md +97 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_homebrew_publish_time_blocker.json +59 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_homebrew_publish_time_blocker.md +118 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_mcp_apply_guardrail.json +51 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_mcp_apply_guardrail.md +77 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_mypy_bridge_closure.json +39 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_mypy_bridge_closure.md +68 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_pypi_rc_final_hardening.json +175 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_pypi_rc_final_hardening.md +239 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_ruff_lint_closure.json +140 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_ruff_lint_closure.md +93 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_worker_isolator_symlink_hardening.json +90 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r3_worker_isolator_symlink_hardening.md +122 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_branch_injection_hardening.json +87 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_branch_injection_hardening.md +127 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_mcp_env_path_denial.json +53 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_mcp_env_path_denial.md +116 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_mcp_schema_enforcement.json +40 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_mcp_schema_enforcement.md +44 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_release_workflow_secret_handling.json +51 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_release_workflow_secret_handling.md +89 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_security_xfail_closure_round.json +120 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_security_xfail_closure_round.md +140 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_xfail_ledger.json +87 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_r4_xfail_ledger.md +33 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_release_critical_coverage_audit.json +581 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_release_critical_coverage_audit.md +217 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_release_hardening_round.json +368 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_release_hardening_round.md +245 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_release_readiness_gate.json +223 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_release_readiness_gate.md +175 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_release_topology_audit.json +171 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_release_topology_audit.md +182 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_security_coverage_audit.json +198 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_security_coverage_audit.md +238 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_security_secret_audit.json +249 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_security_secret_audit.md +192 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_test_coverage_baseline.json +136 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_test_coverage_baseline.md +116 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_test_coverage_expansion_round.json +171 -0
- autodev_ai-0.1.0a2/docs/validation/autodev_test_coverage_expansion_round.md +182 -0
- autodev_ai-0.1.0a2/docs/validation/coverage_gate_run.json +124 -0
- autodev_ai-0.1.0a2/docs/validation/release_readiness_gate_run.json +265 -0
- autodev_ai-0.1.0a2/examples/01-mdlines/brief.md +30 -0
- autodev_ai-0.1.0a2/examples/02-slug-rs/brief.md +32 -0
- autodev_ai-0.1.0a2/examples/03-hello-ts/brief.md +33 -0
- autodev_ai-0.1.0a2/examples/04-tinyurl/brief.md +34 -0
- autodev_ai-0.1.0a2/examples/05-kanban-board/brief.md +34 -0
- autodev_ai-0.1.0a2/examples/06-log-analyzer/brief.md +35 -0
- autodev_ai-0.1.0a2/examples/07-feed-aggregator/brief.md +36 -0
- autodev_ai-0.1.0a2/examples/08-pdf-extractor/brief.md +36 -0
- autodev_ai-0.1.0a2/examples/09-cli-wrapper/brief.md +35 -0
- autodev_ai-0.1.0a2/examples/10-prfaq-product/brief.md +43 -0
- autodev_ai-0.1.0a2/examples/README.md +28 -0
- autodev_ai-0.1.0a2/examples/scripts/run_example.sh +14 -0
- autodev_ai-0.1.0a2/packaging/desktop/README.md +71 -0
- autodev_ai-0.1.0a2/packaging/desktop/autodev-ai-open.sh +106 -0
- autodev_ai-0.1.0a2/packaging/desktop/autodev-ai.app/Contents/Info.plist +24 -0
- autodev_ai-0.1.0a2/packaging/desktop/autodev-ai.app/Contents/MacOS/launcher +18 -0
- autodev_ai-0.1.0a2/packaging/desktop/autodev-ai.app/Contents/Resources/AppIcon.icns +0 -0
- autodev_ai-0.1.0a2/packaging/desktop/install.sh +47 -0
- autodev_ai-0.1.0a2/packaging/docker/.dockerignore +15 -0
- autodev_ai-0.1.0a2/packaging/docker/Dockerfile +55 -0
- autodev_ai-0.1.0a2/packaging/docker/README.md +70 -0
- autodev_ai-0.1.0a2/packaging/docker/UPDATE.md +73 -0
- autodev_ai-0.1.0a2/packaging/docker/build.sh +20 -0
- autodev_ai-0.1.0a2/packaging/homebrew/Formula/autodev-ai.rb +75 -0
- autodev_ai-0.1.0a2/packaging/homebrew/PUBLISH_CHECKLIST.md +69 -0
- autodev_ai-0.1.0a2/packaging/homebrew/README.md +48 -0
- autodev_ai-0.1.0a2/packaging/homebrew/refresh-resources.sh +62 -0
- autodev_ai-0.1.0a2/packaging/pyinstaller/README.md +156 -0
- autodev_ai-0.1.0a2/packaging/pyinstaller/_collect_hidden_imports.py +71 -0
- autodev_ai-0.1.0a2/packaging/pyinstaller/autodev.spec +197 -0
- autodev_ai-0.1.0a2/packaging/pyinstaller/autodev_entry.py +12 -0
- autodev_ai-0.1.0a2/packaging/pyinstaller/build-universal-mac.sh +130 -0
- autodev_ai-0.1.0a2/packaging/pyinstaller/build.sh +81 -0
- autodev_ai-0.1.0a2/pyproject.toml +84 -0
- autodev_ai-0.1.0a2/scripts/coverage_gate.py +216 -0
- autodev_ai-0.1.0a2/scripts/release_readiness_gate.py +1334 -0
- autodev_ai-0.1.0a2/src/autodev/__init__.py +11 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/__init__.py +10 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/a2a/__init__.py +3 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/a2a/client.py +53 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/a2a/handlers.py +215 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/a2a/roster.py +182 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/a2a/server.py +362 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/a2a/transports/__init__.py +5 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/a2a/transports/base.py +23 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/a2a/transports/http.py +683 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/a2a/transports/local_shell.py +129 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/a2a/transports/mock.py +60 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/convention_loader.py +88 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/distillator.py +203 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/embeddings_index.py +135 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/filesystem_adapter.py +21 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/git_adapter.py +87 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/github_adapter.py +145 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/mcp_client.py +209 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/opus_adapter.py +162 -0
- autodev_ai-0.1.0a2/src/autodev/adapters/pydantic_ai_bridge.py +157 -0
- autodev_ai-0.1.0a2/src/autodev/agents/__init__.py +46 -0
- autodev_ai-0.1.0a2/src/autodev/agents/_activation.py +253 -0
- autodev_ai-0.1.0a2/src/autodev/agents/_crewai_bridge.py +67 -0
- autodev_ai-0.1.0a2/src/autodev/agents/_menu.py +67 -0
- autodev_ai-0.1.0a2/src/autodev/agents/_scaffold_verification.py +13 -0
- autodev_ai-0.1.0a2/src/autodev/agents/adversarial_reviewer.py +196 -0
- autodev_ai-0.1.0a2/src/autodev/agents/clarification_gate.py +343 -0
- autodev_ai-0.1.0a2/src/autodev/agents/code_reviewer.py +89 -0
- autodev_ai-0.1.0a2/src/autodev/agents/commit_agent.py +141 -0
- autodev_ai-0.1.0a2/src/autodev/agents/context_generator.py +504 -0
- autodev_ai-0.1.0a2/src/autodev/agents/critic.py +79 -0
- autodev_ai-0.1.0a2/src/autodev/agents/doc_writer.py +37 -0
- autodev_ai-0.1.0a2/src/autodev/agents/document_project.py +682 -0
- autodev_ai-0.1.0a2/src/autodev/agents/edge_case_hunter.py +337 -0
- autodev_ai-0.1.0a2/src/autodev/agents/editorial_reviewer.py +444 -0
- autodev_ai-0.1.0a2/src/autodev/agents/elicitation_methods.py +173 -0
- autodev_ai-0.1.0a2/src/autodev/agents/failure_cluster_reviewer.py +80 -0
- autodev_ai-0.1.0a2/src/autodev/agents/human_review_gate.py +152 -0
- autodev_ai-0.1.0a2/src/autodev/agents/implementer.py +343 -0
- autodev_ai-0.1.0a2/src/autodev/agents/input_classifier.py +78 -0
- autodev_ai-0.1.0a2/src/autodev/agents/integration_reviewer.py +73 -0
- autodev_ai-0.1.0a2/src/autodev/agents/investigator.py +396 -0
- autodev_ai-0.1.0a2/src/autodev/agents/issue_analyst.py +63 -0
- autodev_ai-0.1.0a2/src/autodev/agents/milestone_planner.py +36 -0
- autodev_ai-0.1.0a2/src/autodev/agents/navigator.py +99 -0
- autodev_ai-0.1.0a2/src/autodev/agents/next_step_advisor.py +175 -0
- autodev_ai-0.1.0a2/src/autodev/agents/opus_consult.py +32 -0
- autodev_ai-0.1.0a2/src/autodev/agents/parallel_section_reviewer.py +370 -0
- autodev_ai-0.1.0a2/src/autodev/agents/prd_writer.py +183 -0
- autodev_ai-0.1.0a2/src/autodev/agents/product_manager.py +75 -0
- autodev_ai-0.1.0a2/src/autodev/agents/property_test_designer.py +195 -0
- autodev_ai-0.1.0a2/src/autodev/agents/quality_gate.py +28 -0
- autodev_ai-0.1.0a2/src/autodev/agents/release_manager.py +29 -0
- autodev_ai-0.1.0a2/src/autodev/agents/repo_explorer.py +19 -0
- autodev_ai-0.1.0a2/src/autodev/agents/requirement_analyst.py +146 -0
- autodev_ai-0.1.0a2/src/autodev/agents/roundtable.py +374 -0
- autodev_ai-0.1.0a2/src/autodev/agents/scaffolder.py +194 -0
- autodev_ai-0.1.0a2/src/autodev/agents/security_reviewer.py +199 -0
- autodev_ai-0.1.0a2/src/autodev/agents/sprint_manager.py +52 -0
- autodev_ai-0.1.0a2/src/autodev/agents/system_architect.py +47 -0
- autodev_ai-0.1.0a2/src/autodev/agents/task_decomposer.py +49 -0
- autodev_ai-0.1.0a2/src/autodev/agents/test_designer.py +87 -0
- autodev_ai-0.1.0a2/src/autodev/agents/ux_designer.py +382 -0
- autodev_ai-0.1.0a2/src/autodev/agents/verifier.py +38 -0
- autodev_ai-0.1.0a2/src/autodev/cli.py +1042 -0
- autodev_ai-0.1.0a2/src/autodev/config.py +105 -0
- autodev_ai-0.1.0a2/src/autodev/context_providers/__init__.py +10 -0
- autodev_ai-0.1.0a2/src/autodev/context_providers/base.py +15 -0
- autodev_ai-0.1.0a2/src/autodev/context_providers/diff_provider.py +38 -0
- autodev_ai-0.1.0a2/src/autodev/context_providers/repo_map_provider.py +55 -0
- autodev_ai-0.1.0a2/src/autodev/context_providers/search_provider.py +87 -0
- autodev_ai-0.1.0a2/src/autodev/context_providers/tree_provider.py +57 -0
- autodev_ai-0.1.0a2/src/autodev/coverage_gate.py +32 -0
- autodev_ai-0.1.0a2/src/autodev/data/elicitation_methods.csv +16 -0
- autodev_ai-0.1.0a2/src/autodev/executors/__init__.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/executors/_fs_observer.py +116 -0
- autodev_ai-0.1.0a2/src/autodev/executors/base_executor.py +44 -0
- autodev_ai-0.1.0a2/src/autodev/executors/claude_code_executor.py +256 -0
- autodev_ai-0.1.0a2/src/autodev/executors/codex_cli_executor.py +289 -0
- autodev_ai-0.1.0a2/src/autodev/executors/executor_router.py +304 -0
- autodev_ai-0.1.0a2/src/autodev/executors/mock_claude_executor.py +91 -0
- autodev_ai-0.1.0a2/src/autodev/executors/mock_codex_executor.py +89 -0
- autodev_ai-0.1.0a2/src/autodev/executors/network_allowlist.py +111 -0
- autodev_ai-0.1.0a2/src/autodev/executors/patch_executor.py +59 -0
- autodev_ai-0.1.0a2/src/autodev/executors/sandboxed_executor.py +105 -0
- autodev_ai-0.1.0a2/src/autodev/executors/shell_executor.py +69 -0
- autodev_ai-0.1.0a2/src/autodev/executors/sr_edit_parser.py +108 -0
- autodev_ai-0.1.0a2/src/autodev/executors/worker_isolator.py +497 -0
- autodev_ai-0.1.0a2/src/autodev/flows/__init__.py +25 -0
- autodev_ai-0.1.0a2/src/autodev/flows/brownfield_doc_flow.py +18 -0
- autodev_ai-0.1.0a2/src/autodev/flows/bug_fix_flow.py +102 -0
- autodev_ai-0.1.0a2/src/autodev/flows/investigation_flow.py +25 -0
- autodev_ai-0.1.0a2/src/autodev/flows/issue_pipeline_crewflow.py +229 -0
- autodev_ai-0.1.0a2/src/autodev/flows/issue_pipeline_flow.py +179 -0
- autodev_ai-0.1.0a2/src/autodev/flows/milestone_flow.py +52 -0
- autodev_ai-0.1.0a2/src/autodev/flows/multi_patch_flow.py +205 -0
- autodev_ai-0.1.0a2/src/autodev/flows/project_context_flow.py +34 -0
- autodev_ai-0.1.0a2/src/autodev/flows/project_delivery_crewflow.py +219 -0
- autodev_ai-0.1.0a2/src/autodev/flows/project_delivery_flow.py +307 -0
- autodev_ai-0.1.0a2/src/autodev/flows/project_delivery_microfile.py +103 -0
- autodev_ai-0.1.0a2/src/autodev/flows/release_flow.py +22 -0
- autodev_ai-0.1.0a2/src/autodev/flows/replay_flow.py +269 -0
- autodev_ai-0.1.0a2/src/autodev/flows/sprint_flow.py +431 -0
- autodev_ai-0.1.0a2/src/autodev/flows/step_definitions/__init__.py +0 -0
- autodev_ai-0.1.0a2/src/autodev/flows/step_definitions/project_delivery_steps.py +463 -0
- autodev_ai-0.1.0a2/src/autodev/flows/step_runner.py +242 -0
- autodev_ai-0.1.0a2/src/autodev/flows/ux_design_flow.py +155 -0
- autodev_ai-0.1.0a2/src/autodev/gates/__init__.py +7 -0
- autodev_ai-0.1.0a2/src/autodev/gates/contract_diff.py +107 -0
- autodev_ai-0.1.0a2/src/autodev/gates/implementation_readiness_gate.py +358 -0
- autodev_ai-0.1.0a2/src/autodev/gates/integration_gate.py +81 -0
- autodev_ai-0.1.0a2/src/autodev/gates/post_edit_lint_gate.py +134 -0
- autodev_ai-0.1.0a2/src/autodev/gates/python_gate.py +54 -0
- autodev_ai-0.1.0a2/src/autodev/gates/release_gate.py +85 -0
- autodev_ai-0.1.0a2/src/autodev/gates/rust_gate.py +42 -0
- autodev_ai-0.1.0a2/src/autodev/gates/typescript_gate.py +43 -0
- autodev_ai-0.1.0a2/src/autodev/mcp_server/__init__.py +4 -0
- autodev_ai-0.1.0a2/src/autodev/mcp_server/path_safety.py +98 -0
- autodev_ai-0.1.0a2/src/autodev/mcp_server/server.py +220 -0
- autodev_ai-0.1.0a2/src/autodev/mcp_server/tools.py +642 -0
- autodev_ai-0.1.0a2/src/autodev/planners/__init__.py +5 -0
- autodev_ai-0.1.0a2/src/autodev/planners/_wave_explanation.py +14 -0
- autodev_ai-0.1.0a2/src/autodev/planners/dependency_planner.py +105 -0
- autodev_ai-0.1.0a2/src/autodev/planners/four_stage_planner.py +257 -0
- autodev_ai-0.1.0a2/src/autodev/planners/milestone_planner.py +98 -0
- autodev_ai-0.1.0a2/src/autodev/planners/project_planner.py +67 -0
- autodev_ai-0.1.0a2/src/autodev/planners/task_planner.py +266 -0
- autodev_ai-0.1.0a2/src/autodev/planners/task_readiness_checker.py +308 -0
- autodev_ai-0.1.0a2/src/autodev/release_readiness_gate.py +25 -0
- autodev_ai-0.1.0a2/src/autodev/reports/__init__.py +4 -0
- autodev_ai-0.1.0a2/src/autodev/reports/delivery_reporter.py +49 -0
- autodev_ai-0.1.0a2/src/autodev/reports/release_reporter.py +32 -0
- autodev_ai-0.1.0a2/src/autodev/reports/replay_ui.py +205 -0
- autodev_ai-0.1.0a2/src/autodev/reports/reporter.py +109 -0
- autodev_ai-0.1.0a2/src/autodev/scanners/__init__.py +6 -0
- autodev_ai-0.1.0a2/src/autodev/scanners/monorepo_scanner.py +38 -0
- autodev_ai-0.1.0a2/src/autodev/scanners/python_scanner.py +48 -0
- autodev_ai-0.1.0a2/src/autodev/scanners/repo_map.py +212 -0
- autodev_ai-0.1.0a2/src/autodev/scanners/repo_scanner.py +41 -0
- autodev_ai-0.1.0a2/src/autodev/scanners/rust_scanner.py +55 -0
- autodev_ai-0.1.0a2/src/autodev/scanners/typescript_scanner.py +69 -0
- autodev_ai-0.1.0a2/src/autodev/schemas.py +1587 -0
- autodev_ai-0.1.0a2/src/autodev/state.py +134 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/__init__.py +22 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/architecture_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/commit_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/documentation_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/implementation_tasks.py +15 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/input_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/issue_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/milestone_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/product_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/quality_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/release_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/requirement_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/review_tasks.py +21 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/security_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/test_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/tasks/verification_tasks.py +12 -0
- autodev_ai-0.1.0a2/src/autodev/templates/four_stage/locate.md +73 -0
- autodev_ai-0.1.0a2/src/autodev/templates/four_stage/patch.md +60 -0
- autodev_ai-0.1.0a2/src/autodev/templates/four_stage/reproduce.md +44 -0
- autodev_ai-0.1.0a2/src/autodev/templates/four_stage/verify.md +73 -0
- autodev_ai-0.1.0a2/src/autodev/templates/ux_design/complete.md +18 -0
- autodev_ai-0.1.0a2/src/autodev/templates/ux_design/components.md +19 -0
- autodev_ai-0.1.0a2/src/autodev/templates/ux_design/core_experience.md +18 -0
- autodev_ai-0.1.0a2/src/autodev/templates/ux_design/design_system.md +17 -0
- autodev_ai-0.1.0a2/src/autodev/templates/ux_design/discovery.md +17 -0
- autodev_ai-0.1.0a2/src/autodev/templates/ux_design/responsive.md +20 -0
- autodev_ai-0.1.0a2/src/autodev/templates/ux_design/ux_patterns.md +26 -0
- autodev_ai-0.1.0a2/src/autodev/tui/__init__.py +1 -0
- autodev_ai-0.1.0a2/src/autodev/tui/dashboard.py +261 -0
- autodev_ai-0.1.0a2/src/autodev/tui/loaders.py +245 -0
- autodev_ai-0.1.0a2/src/autodev/tui/widgets.py +127 -0
- autodev_ai-0.1.0a2/src/autodev/utils/__init__.py +1 -0
- autodev_ai-0.1.0a2/src/autodev/utils/command_safety.py +122 -0
- autodev_ai-0.1.0a2/src/autodev/utils/concurrency.py +76 -0
- autodev_ai-0.1.0a2/src/autodev/utils/config_stack.py +177 -0
- autodev_ai-0.1.0a2/src/autodev/utils/doc_sharder.py +143 -0
- autodev_ai-0.1.0a2/src/autodev/utils/fs.py +42 -0
- autodev_ai-0.1.0a2/src/autodev/utils/hashing.py +14 -0
- autodev_ai-0.1.0a2/src/autodev/utils/json_io.py +56 -0
- autodev_ai-0.1.0a2/src/autodev/utils/logging.py +21 -0
- autodev_ai-0.1.0a2/src/autodev/utils/secret_redaction.py +123 -0
- autodev_ai-0.1.0a2/src/autodev/utils/slug.py +20 -0
- autodev_ai-0.1.0a2/tests/conftest.py +17 -0
- autodev_ai-0.1.0a2/tests/fixtures/empty_project/.gitkeep +0 -0
- autodev_ai-0.1.0a2/tests/fixtures/issue_project/issue.md +13 -0
- autodev_ai-0.1.0a2/tests/fixtures/mixed_project/python/pyproject.toml +4 -0
- autodev_ai-0.1.0a2/tests/fixtures/mixed_project/python/src/m.py +1 -0
- autodev_ai-0.1.0a2/tests/fixtures/mixed_project/rust/Cargo.toml +7 -0
- autodev_ai-0.1.0a2/tests/fixtures/mixed_project/rust/src/lib.rs +1 -0
- autodev_ai-0.1.0a2/tests/fixtures/mixed_project/ts/package.json +1 -0
- autodev_ai-0.1.0a2/tests/fixtures/mixed_project/ts/src/index.ts +1 -0
- autodev_ai-0.1.0a2/tests/fixtures/mock_patches/feature.txt +1 -0
- autodev_ai-0.1.0a2/tests/fixtures/monorepo_project/package.json +5 -0
- autodev_ai-0.1.0a2/tests/fixtures/monorepo_project/packages/a/package.json +1 -0
- autodev_ai-0.1.0a2/tests/fixtures/monorepo_project/packages/b/package.json +1 -0
- autodev_ai-0.1.0a2/tests/fixtures/openapi/api_v1.json +14 -0
- autodev_ai-0.1.0a2/tests/fixtures/openapi/api_v2.json +27 -0
- autodev_ai-0.1.0a2/tests/fixtures/prd_project/project_brief.md +28 -0
- autodev_ai-0.1.0a2/tests/fixtures/python_project/pyproject.toml +7 -0
- autodev_ai-0.1.0a2/tests/fixtures/python_project/src/sample.py +2 -0
- autodev_ai-0.1.0a2/tests/fixtures/python_project/tests/test_sample.py +2 -0
- autodev_ai-0.1.0a2/tests/fixtures/rust_project/Cargo.toml +7 -0
- autodev_ai-0.1.0a2/tests/fixtures/rust_project/src/lib.rs +1 -0
- autodev_ai-0.1.0a2/tests/fixtures/typescript_project/package.json +14 -0
- autodev_ai-0.1.0a2/tests/fixtures/typescript_project/src/index.ts +1 -0
- autodev_ai-0.1.0a2/tests/fixtures/typescript_project/tsconfig.json +3 -0
- autodev_ai-0.1.0a2/tests/integration/__init__.py +0 -0
- autodev_ai-0.1.0a2/tests/integration/test_a2a_http_roundtrip.py +212 -0
- autodev_ai-0.1.0a2/tests/integration/test_a2a_roundtable_e2e.py +176 -0
- autodev_ai-0.1.0a2/tests/integration/test_a2a_server_cli.py +147 -0
- autodev_ai-0.1.0a2/tests/integration/test_bug_fix_flow.py +136 -0
- autodev_ai-0.1.0a2/tests/integration/test_cli_design_ux.py +59 -0
- autodev_ai-0.1.0a2/tests/integration/test_cli_document_project.py +148 -0
- autodev_ai-0.1.0a2/tests/integration/test_cli_generate_context.py +93 -0
- autodev_ai-0.1.0a2/tests/integration/test_cli_help.py +27 -0
- autodev_ai-0.1.0a2/tests/integration/test_cli_investigate.py +123 -0
- autodev_ai-0.1.0a2/tests/integration/test_cli_next.py +74 -0
- autodev_ai-0.1.0a2/tests/integration/test_cli_review_command.py +82 -0
- autodev_ai-0.1.0a2/tests/integration/test_cli_roundtable.py +93 -0
- autodev_ai-0.1.0a2/tests/integration/test_cli_sprint.py +116 -0
- autodev_ai-0.1.0a2/tests/integration/test_e2e_prompt_density.py +153 -0
- autodev_ai-0.1.0a2/tests/integration/test_escalation_hint.py +54 -0
- autodev_ai-0.1.0a2/tests/integration/test_executor_router_fail_closed.py +44 -0
- autodev_ai-0.1.0a2/tests/integration/test_executor_secret_redaction_integration.py +207 -0
- autodev_ai-0.1.0a2/tests/integration/test_implementer_loops.py +240 -0
- autodev_ai-0.1.0a2/tests/integration/test_issue_pipeline.py +47 -0
- autodev_ai-0.1.0a2/tests/integration/test_mcp_apply_guardrail.py +427 -0
- autodev_ai-0.1.0a2/tests/integration/test_mcp_path_secret_denial.py +218 -0
- autodev_ai-0.1.0a2/tests/integration/test_mcp_required_schema_enforcement.py +303 -0
- autodev_ai-0.1.0a2/tests/integration/test_mcp_serve_cli.py +76 -0
- autodev_ai-0.1.0a2/tests/integration/test_mcp_server_smoke.py +331 -0
- autodev_ai-0.1.0a2/tests/integration/test_multi_patch_flow.py +92 -0
- autodev_ai-0.1.0a2/tests/integration/test_parallel_review_5sections.py +86 -0
- autodev_ai-0.1.0a2/tests/integration/test_parallel_review_via_roundtable.py +101 -0
- autodev_ai-0.1.0a2/tests/integration/test_parallel_section_review.py +51 -0
- autodev_ai-0.1.0a2/tests/integration/test_project_delivery.py +72 -0
- autodev_ai-0.1.0a2/tests/integration/test_project_delivery_microfile.py +229 -0
- autodev_ai-0.1.0a2/tests/integration/test_push_pr_smoke.py +133 -0
- autodev_ai-0.1.0a2/tests/integration/test_scaffold_dedup.py +128 -0
- autodev_ai-0.1.0a2/tests/integration/test_security_p0_coverage.py +321 -0
- autodev_ai-0.1.0a2/tests/integration/test_wheel_cli_version_smoke.py +201 -0
- autodev_ai-0.1.0a2/tests/unit/__init__.py +0 -0
- autodev_ai-0.1.0a2/tests/unit/test_a2a_dns_rebinding_hardening.py +459 -0
- autodev_ai-0.1.0a2/tests/unit/test_a2a_handlers_coverage.py +185 -0
- autodev_ai-0.1.0a2/tests/unit/test_a2a_http_ssrf_hardening.py +220 -0
- autodev_ai-0.1.0a2/tests/unit/test_a2a_http_transport.py +339 -0
- autodev_ai-0.1.0a2/tests/unit/test_a2a_local_shell_transport.py +235 -0
- autodev_ai-0.1.0a2/tests/unit/test_a2a_roster.py +161 -0
- autodev_ai-0.1.0a2/tests/unit/test_a2a_schema.py +130 -0
- autodev_ai-0.1.0a2/tests/unit/test_a2a_server.py +276 -0
- autodev_ai-0.1.0a2/tests/unit/test_activation_hooks.py +143 -0
- autodev_ai-0.1.0a2/tests/unit/test_adversarial_reviewer.py +120 -0
- autodev_ai-0.1.0a2/tests/unit/test_agent_customize.py +128 -0
- autodev_ai-0.1.0a2/tests/unit/test_agent_menu.py +93 -0
- autodev_ai-0.1.0a2/tests/unit/test_branch_name_hardening.py +168 -0
- autodev_ai-0.1.0a2/tests/unit/test_brownfield_doc_flow.py +103 -0
- autodev_ai-0.1.0a2/tests/unit/test_budget_routing.py +135 -0
- autodev_ai-0.1.0a2/tests/unit/test_changed_files_capture.py +65 -0
- autodev_ai-0.1.0a2/tests/unit/test_clarification_3round.py +176 -0
- autodev_ai-0.1.0a2/tests/unit/test_clarification_gate.py +110 -0
- autodev_ai-0.1.0a2/tests/unit/test_cli_help_surface.py +208 -0
- autodev_ai-0.1.0a2/tests/unit/test_codex_dry_run_sandbox.py +74 -0
- autodev_ai-0.1.0a2/tests/unit/test_codex_inner_steps.py +60 -0
- autodev_ai-0.1.0a2/tests/unit/test_commit_artifacts.py +89 -0
- autodev_ai-0.1.0a2/tests/unit/test_config_stack.py +141 -0
- autodev_ai-0.1.0a2/tests/unit/test_config_stack_edge_cases.py +167 -0
- autodev_ai-0.1.0a2/tests/unit/test_context_generator.py +255 -0
- autodev_ai-0.1.0a2/tests/unit/test_context_providers.py +135 -0
- autodev_ai-0.1.0a2/tests/unit/test_contract_diff.py +132 -0
- autodev_ai-0.1.0a2/tests/unit/test_convention_loader.py +76 -0
- autodev_ai-0.1.0a2/tests/unit/test_coverage_gate.py +158 -0
- autodev_ai-0.1.0a2/tests/unit/test_crewflow_stubs.py +83 -0
- autodev_ai-0.1.0a2/tests/unit/test_critic_agent.py +81 -0
- autodev_ai-0.1.0a2/tests/unit/test_distillator.py +112 -0
- autodev_ai-0.1.0a2/tests/unit/test_doc_sharder.py +132 -0
- autodev_ai-0.1.0a2/tests/unit/test_docker_digest_pinning.py +105 -0
- autodev_ai-0.1.0a2/tests/unit/test_docs_minimum.py +97 -0
- autodev_ai-0.1.0a2/tests/unit/test_document_project.py +246 -0
- autodev_ai-0.1.0a2/tests/unit/test_edge_case_hunter.py +127 -0
- autodev_ai-0.1.0a2/tests/unit/test_editorial_reviewer.py +163 -0
- autodev_ai-0.1.0a2/tests/unit/test_elicitation_methods.py +190 -0
- autodev_ai-0.1.0a2/tests/unit/test_embeddings_index.py +62 -0
- autodev_ai-0.1.0a2/tests/unit/test_executor_boundary_smoke.py +251 -0
- autodev_ai-0.1.0a2/tests/unit/test_executor_router.py +111 -0
- autodev_ai-0.1.0a2/tests/unit/test_failure_cluster.py +85 -0
- autodev_ai-0.1.0a2/tests/unit/test_filesystem_adapter_coverage.py +70 -0
- autodev_ai-0.1.0a2/tests/unit/test_flow_executor_failure_surface.py +293 -0
- autodev_ai-0.1.0a2/tests/unit/test_flow_prd_passthrough.py +175 -0
- autodev_ai-0.1.0a2/tests/unit/test_four_stage_planner.py +128 -0
- autodev_ai-0.1.0a2/tests/unit/test_fs_observer.py +69 -0
- autodev_ai-0.1.0a2/tests/unit/test_git_adapter_coverage.py +153 -0
- autodev_ai-0.1.0a2/tests/unit/test_homebrew_formula_metadata.py +130 -0
- autodev_ai-0.1.0a2/tests/unit/test_homebrew_publish_time_blocker.py +118 -0
- autodev_ai-0.1.0a2/tests/unit/test_human_review_gate.py +81 -0
- autodev_ai-0.1.0a2/tests/unit/test_implementation_readiness_gate.py +384 -0
- autodev_ai-0.1.0a2/tests/unit/test_input_classifier.py +24 -0
- autodev_ai-0.1.0a2/tests/unit/test_investigation_flow.py +79 -0
- autodev_ai-0.1.0a2/tests/unit/test_investigator.py +213 -0
- autodev_ai-0.1.0a2/tests/unit/test_issue_analyst.py +24 -0
- autodev_ai-0.1.0a2/tests/unit/test_json_io_coverage.py +148 -0
- autodev_ai-0.1.0a2/tests/unit/test_license_metadata.py +53 -0
- autodev_ai-0.1.0a2/tests/unit/test_lint_workflow_policy.py +77 -0
- autodev_ai-0.1.0a2/tests/unit/test_mcp_client.py +92 -0
- autodev_ai-0.1.0a2/tests/unit/test_mcp_server.py +194 -0
- autodev_ai-0.1.0a2/tests/unit/test_milestone_flow.py +312 -0
- autodev_ai-0.1.0a2/tests/unit/test_mock_fixture_config.py +84 -0
- autodev_ai-0.1.0a2/tests/unit/test_mocks_and_executors.py +60 -0
- autodev_ai-0.1.0a2/tests/unit/test_multi_patch_vote.py +62 -0
- autodev_ai-0.1.0a2/tests/unit/test_navigator.py +55 -0
- autodev_ai-0.1.0a2/tests/unit/test_network_allowlist.py +81 -0
- autodev_ai-0.1.0a2/tests/unit/test_next_step_advisor.py +184 -0
- autodev_ai-0.1.0a2/tests/unit/test_opus_consult.py +116 -0
- autodev_ai-0.1.0a2/tests/unit/test_planners_and_reviews.py +75 -0
- autodev_ai-0.1.0a2/tests/unit/test_post_edit_lint_gate.py +92 -0
- autodev_ai-0.1.0a2/tests/unit/test_post_edit_lint_gate_coverage.py +134 -0
- autodev_ai-0.1.0a2/tests/unit/test_prfaq_style.py +140 -0
- autodev_ai-0.1.0a2/tests/unit/test_product_prd.py +25 -0
- autodev_ai-0.1.0a2/tests/unit/test_project_context_flow.py +88 -0
- autodev_ai-0.1.0a2/tests/unit/test_prompt_boundary_conventions.py +21 -0
- autodev_ai-0.1.0a2/tests/unit/test_property_test_designer.py +113 -0
- autodev_ai-0.1.0a2/tests/unit/test_protocol_error_paths.py +473 -0
- autodev_ai-0.1.0a2/tests/unit/test_pydantic_ai_bridge.py +97 -0
- autodev_ai-0.1.0a2/tests/unit/test_release_flow.py +236 -0
- autodev_ai-0.1.0a2/tests/unit/test_release_readiness_gate.py +656 -0
- autodev_ai-0.1.0a2/tests/unit/test_release_workflow_policy.py +151 -0
- autodev_ai-0.1.0a2/tests/unit/test_release_workflow_twine_password_policy.py +98 -0
- autodev_ai-0.1.0a2/tests/unit/test_replay_flow.py +63 -0
- autodev_ai-0.1.0a2/tests/unit/test_replay_ui.py +82 -0
- autodev_ai-0.1.0a2/tests/unit/test_repo_map.py +99 -0
- autodev_ai-0.1.0a2/tests/unit/test_report_banner.py +105 -0
- autodev_ai-0.1.0a2/tests/unit/test_roundtable_agent.py +172 -0
- autodev_ai-0.1.0a2/tests/unit/test_router_metrics.py +129 -0
- autodev_ai-0.1.0a2/tests/unit/test_sandboxed_executor.py +127 -0
- autodev_ai-0.1.0a2/tests/unit/test_scaffolder_python_layout.py +80 -0
- autodev_ai-0.1.0a2/tests/unit/test_scaffolder_verify.py +68 -0
- autodev_ai-0.1.0a2/tests/unit/test_scale_adaptive_planner.py +197 -0
- autodev_ai-0.1.0a2/tests/unit/test_scale_inference.py +148 -0
- autodev_ai-0.1.0a2/tests/unit/test_scanners.py +48 -0
- autodev_ai-0.1.0a2/tests/unit/test_secret_redaction.py +229 -0
- autodev_ai-0.1.0a2/tests/unit/test_security_doc_fp.py +98 -0
- autodev_ai-0.1.0a2/tests/unit/test_severity.py +69 -0
- autodev_ai-0.1.0a2/tests/unit/test_severity_findings_in_reviewers.py +80 -0
- autodev_ai-0.1.0a2/tests/unit/test_shell_safety.py +33 -0
- autodev_ai-0.1.0a2/tests/unit/test_sprint_flow.py +179 -0
- autodev_ai-0.1.0a2/tests/unit/test_sr_edit_parser.py +113 -0
- autodev_ai-0.1.0a2/tests/unit/test_step_runner.py +200 -0
- autodev_ai-0.1.0a2/tests/unit/test_task_planner_m2_targets.py +101 -0
- autodev_ai-0.1.0a2/tests/unit/test_task_prompt_injection.py +300 -0
- autodev_ai-0.1.0a2/tests/unit/test_task_readiness_checker.py +352 -0
- autodev_ai-0.1.0a2/tests/unit/test_three_pass_locate.py +101 -0
- autodev_ai-0.1.0a2/tests/unit/test_tui_loaders.py +403 -0
- autodev_ai-0.1.0a2/tests/unit/test_ux_design_flow.py +131 -0
- autodev_ai-0.1.0a2/tests/unit/test_ux_designer.py +111 -0
- autodev_ai-0.1.0a2/tests/unit/test_version_consistency.py +73 -0
- autodev_ai-0.1.0a2/tests/unit/test_wave_planning.py +144 -0
- autodev_ai-0.1.0a2/tests/unit/test_wave_stats.py +47 -0
- autodev_ai-0.1.0a2/tests/unit/test_worker_isolator.py +170 -0
- autodev_ai-0.1.0a2/tests/unit/test_worker_isolator_symlink_hardening.py +280 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
name: Docker — Build & Publish to GHCR
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*.*.*"
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
env:
|
|
10
|
+
REGISTRY: ghcr.io
|
|
11
|
+
IMAGE_NAME: ${{ github.repository_owner }}/autodev-ai
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
# ── Job 1: smoke-test locally before pushing ───────────────────────────────
|
|
15
|
+
test:
|
|
16
|
+
name: Local smoke test
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Set up Python
|
|
23
|
+
uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.12"
|
|
26
|
+
|
|
27
|
+
- name: Build wheel + sdist
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install --upgrade pip build
|
|
30
|
+
python -m build
|
|
31
|
+
|
|
32
|
+
- name: Set up Docker Buildx
|
|
33
|
+
uses: docker/setup-buildx-action@v3
|
|
34
|
+
|
|
35
|
+
- name: Build test image (amd64 only, no push)
|
|
36
|
+
uses: docker/build-push-action@v5
|
|
37
|
+
with:
|
|
38
|
+
context: .
|
|
39
|
+
file: packaging/docker/Dockerfile
|
|
40
|
+
platforms: linux/amd64
|
|
41
|
+
load: true
|
|
42
|
+
tags: autodev-ai:test
|
|
43
|
+
cache-from: type=gha
|
|
44
|
+
cache-to: type=gha,mode=max
|
|
45
|
+
|
|
46
|
+
- name: Smoke test — autodev --help
|
|
47
|
+
run: docker run --rm autodev-ai:test --help
|
|
48
|
+
|
|
49
|
+
- name: Smoke test — autodev --version
|
|
50
|
+
run: docker run --rm autodev-ai:test --version
|
|
51
|
+
|
|
52
|
+
# ── Job 2: multi-arch build + push to GHCR ─────────────────────────────────
|
|
53
|
+
publish:
|
|
54
|
+
name: Build & push multi-arch image
|
|
55
|
+
needs: test
|
|
56
|
+
runs-on: ubuntu-latest
|
|
57
|
+
permissions:
|
|
58
|
+
contents: read
|
|
59
|
+
packages: write
|
|
60
|
+
|
|
61
|
+
steps:
|
|
62
|
+
- name: Checkout
|
|
63
|
+
uses: actions/checkout@v4
|
|
64
|
+
|
|
65
|
+
- name: Set up Python
|
|
66
|
+
uses: actions/setup-python@v5
|
|
67
|
+
with:
|
|
68
|
+
python-version: "3.12"
|
|
69
|
+
|
|
70
|
+
- name: Build wheel + sdist
|
|
71
|
+
run: |
|
|
72
|
+
python -m pip install --upgrade pip build
|
|
73
|
+
python -m build
|
|
74
|
+
|
|
75
|
+
- name: Set up QEMU (for cross-compilation)
|
|
76
|
+
uses: docker/setup-qemu-action@v3
|
|
77
|
+
|
|
78
|
+
- name: Set up Docker Buildx
|
|
79
|
+
uses: docker/setup-buildx-action@v3
|
|
80
|
+
|
|
81
|
+
- name: Log in to GHCR
|
|
82
|
+
uses: docker/login-action@v3
|
|
83
|
+
with:
|
|
84
|
+
registry: ${{ env.REGISTRY }}
|
|
85
|
+
username: ${{ github.actor }}
|
|
86
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
87
|
+
|
|
88
|
+
- name: Extract Docker metadata (tags + labels)
|
|
89
|
+
id: meta
|
|
90
|
+
uses: docker/metadata-action@v5
|
|
91
|
+
with:
|
|
92
|
+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
93
|
+
tags: |
|
|
94
|
+
type=semver,pattern={{version}}
|
|
95
|
+
type=semver,pattern={{major}}.{{minor}}
|
|
96
|
+
type=raw,value=latest,enable={{is_default_branch}}
|
|
97
|
+
type=ref,event=tag
|
|
98
|
+
|
|
99
|
+
- name: Build and push multi-arch image
|
|
100
|
+
uses: docker/build-push-action@v5
|
|
101
|
+
with:
|
|
102
|
+
context: .
|
|
103
|
+
file: packaging/docker/Dockerfile
|
|
104
|
+
platforms: linux/amd64,linux/arm64
|
|
105
|
+
push: true
|
|
106
|
+
tags: ${{ steps.meta.outputs.tags }}
|
|
107
|
+
labels: ${{ steps.meta.outputs.labels }}
|
|
108
|
+
cache-from: type=gha
|
|
109
|
+
cache-to: type=gha,mode=max
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["**"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ["**"]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
lint:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
|
|
15
|
+
- name: Set up Python
|
|
16
|
+
uses: actions/setup-python@v5
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.12"
|
|
19
|
+
cache: pip
|
|
20
|
+
|
|
21
|
+
- name: Install dev dependencies
|
|
22
|
+
run: pip install -e ".[dev]" mypy
|
|
23
|
+
|
|
24
|
+
- name: ruff check
|
|
25
|
+
run: ruff check src tests scripts
|
|
26
|
+
|
|
27
|
+
- name: mypy
|
|
28
|
+
run: mypy src/autodev --ignore-missing-imports --no-strict-optional
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*.*.*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Set up Python
|
|
18
|
+
uses: actions/setup-python@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: "3.12"
|
|
21
|
+
cache: pip
|
|
22
|
+
|
|
23
|
+
- name: Install package with dev extras
|
|
24
|
+
run: pip install -e .[dev]
|
|
25
|
+
|
|
26
|
+
- name: Lint with ruff
|
|
27
|
+
run: ruff check .
|
|
28
|
+
|
|
29
|
+
- name: Type-check with mypy
|
|
30
|
+
run: mypy src/autodev
|
|
31
|
+
|
|
32
|
+
- name: Run pytest suite
|
|
33
|
+
run: python -m pytest tests/ -q
|
|
34
|
+
|
|
35
|
+
publish:
|
|
36
|
+
needs: test
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
steps:
|
|
39
|
+
- uses: actions/checkout@v4
|
|
40
|
+
|
|
41
|
+
- name: Set up Python
|
|
42
|
+
uses: actions/setup-python@v5
|
|
43
|
+
with:
|
|
44
|
+
python-version: "3.12"
|
|
45
|
+
cache: pip
|
|
46
|
+
|
|
47
|
+
- name: Install build tools
|
|
48
|
+
run: pip install --upgrade build twine
|
|
49
|
+
|
|
50
|
+
- name: Build wheel and sdist
|
|
51
|
+
run: python -m build
|
|
52
|
+
|
|
53
|
+
- name: Check distribution artifacts
|
|
54
|
+
run: python -m twine check dist/*
|
|
55
|
+
|
|
56
|
+
- name: Attach to GitHub Release
|
|
57
|
+
uses: softprops/action-gh-release@v2
|
|
58
|
+
with:
|
|
59
|
+
files: dist/*
|
|
60
|
+
generate_release_notes: true
|
|
61
|
+
|
|
62
|
+
# NOTE: secrets context cannot be used in step-level `if:` (GitHub Actions
|
|
63
|
+
# rejects the workflow file). Pass through env-level boolean instead.
|
|
64
|
+
- name: Detect PyPI token presence
|
|
65
|
+
id: pypi_token_check
|
|
66
|
+
env:
|
|
67
|
+
HAS_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN != '' }}
|
|
68
|
+
run: echo "has_token=$HAS_PYPI_TOKEN" >> "$GITHUB_OUTPUT"
|
|
69
|
+
|
|
70
|
+
- name: Publish to PyPI
|
|
71
|
+
if: steps.pypi_token_check.outputs.has_token == 'true'
|
|
72
|
+
env:
|
|
73
|
+
TWINE_USERNAME: __token__
|
|
74
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
75
|
+
run: python -m twine upload dist/*
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["**"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ["**"]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
fail-fast: false
|
|
14
|
+
matrix:
|
|
15
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
21
|
+
uses: actions/setup-python@v5
|
|
22
|
+
with:
|
|
23
|
+
python-version: ${{ matrix.python-version }}
|
|
24
|
+
cache: pip
|
|
25
|
+
|
|
26
|
+
- name: Install dependencies
|
|
27
|
+
run: pip install -e ".[dev]"
|
|
28
|
+
|
|
29
|
+
- name: Run pytest
|
|
30
|
+
run: pytest -q --cov=autodev --cov-report=xml --cov-report=term-missing
|
|
31
|
+
|
|
32
|
+
- name: Upload coverage
|
|
33
|
+
uses: actions/upload-artifact@v4
|
|
34
|
+
with:
|
|
35
|
+
name: coverage-${{ matrix.python-version }}
|
|
36
|
+
path: coverage.xml
|
|
37
|
+
retention-days: 7
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
.venv/
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.pyc
|
|
4
|
+
*.pyo
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
.dev-factory/
|
|
7
|
+
build/
|
|
8
|
+
dist/
|
|
9
|
+
*.egg-info/
|
|
10
|
+
.ruff_cache/
|
|
11
|
+
.mypy_cache/
|
|
12
|
+
node_modules/
|
|
13
|
+
target/
|
|
14
|
+
.autodev/
|
|
15
|
+
_autodev/
|
|
16
|
+
.coverage
|
|
17
|
+
# Secret files (defense in depth — should never be in repo)
|
|
18
|
+
.env
|
|
19
|
+
.env.*
|
|
20
|
+
!.env.example
|
|
21
|
+
credentials.json
|
|
22
|
+
secrets.toml
|
|
23
|
+
*.pem
|
|
24
|
+
*.key
|
|
25
|
+
coverage.json
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v4.6.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: trailing-whitespace
|
|
6
|
+
- id: end-of-file-fixer
|
|
7
|
+
- id: check-toml
|
|
8
|
+
- id: check-yaml
|
|
9
|
+
args: [--allow-multiple-documents]
|
|
10
|
+
|
|
11
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
12
|
+
rev: v0.4.10
|
|
13
|
+
hooks:
|
|
14
|
+
- id: ruff
|
|
15
|
+
args: [--fix]
|
|
16
|
+
types_or: [python, pyi]
|
|
17
|
+
|
|
18
|
+
- repo: local
|
|
19
|
+
hooks:
|
|
20
|
+
- id: pytest-collected-count
|
|
21
|
+
name: pytest collected count (>= 1)
|
|
22
|
+
language: system
|
|
23
|
+
entry: bash -c 'pytest --collect-only -q 2>&1 | grep -E "^[0-9]+ test" | awk "{if (\$1 < 1) {print \"No tests collected\"; exit 1}}"'
|
|
24
|
+
pass_filenames: false
|
|
25
|
+
stages: [pre-push]
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
5
|
+
|
|
6
|
+
## [Unreleased]
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## [0.1.0a2] — 2026-05-14 (Pre-Release)
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- 5 pre-publish CI blockers discovered and fixed during v0.1.0a1 tag push:
|
|
14
|
+
1. `release.yml` step-level `secrets.if` rejected by GitHub Actions schema
|
|
15
|
+
(split into detector step writing `$GITHUB_OUTPUT` + upload gating on output)
|
|
16
|
+
2. `tomllib` import broke py3.10 collection in R2-AB tests
|
|
17
|
+
(added `sys.version_info` check + `tomli` fallback + `tomli` dev dep)
|
|
18
|
+
3. `test_wheel_cli_version_smoke.py` required pre-built `dist/`
|
|
19
|
+
(added `skip_if_no_dist` marker to all 6 tests)
|
|
20
|
+
4. `mypy` missing from `[project.optional-dependencies].dev`
|
|
21
|
+
(added `mypy>=1.5` to dev extras)
|
|
22
|
+
5. `Dockerfile` hardcoded old version `dist/autodev_ai-0.1.0-*.whl`
|
|
23
|
+
(changed to glob `dist/autodev_ai-*.whl`)
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
- Security R4: `secret_redaction.py` masks pypi/anthropic/openai/github/slack
|
|
27
|
+
tokens + PEM blocks in executor stdout/stderr/logs (idempotent, preserves
|
|
28
|
+
first 4 chars for debuggability)
|
|
29
|
+
- Security R4: MCP `path_safety.py` preflight validator rejects `.env`,
|
|
30
|
+
`credentials.json`, `*.pem`, `*.key`, secret-in-basename, path traversal
|
|
31
|
+
in 6 MCP handlers (scan / deliver_project / run_issue / report /
|
|
32
|
+
release_check / list_runs)
|
|
33
|
+
- Security R4: branch-name injection rejection (11 patterns: `$()`, backtick,
|
|
34
|
+
`;`, `&&`, `||`, `|`, `>`, `<`, newline, leading `-`, whitespace) in
|
|
35
|
+
`worker_isolator` + propagated to `git_adapter` push/checkout/create_branch
|
|
36
|
+
- Security R4: MCP `_validate_required_params` pre-dispatch JSON-Schema check
|
|
37
|
+
(returns `-32602 Invalid params` if required field missing)
|
|
38
|
+
- R3: `AUTODEV_MCP_ALLOW_APPLY` and `AUTODEV_MCP_AUDIT_LOG` env vars
|
|
39
|
+
- `docs/configuration.md` — environment + TOML reference
|
|
40
|
+
- `docs/troubleshooting.md` — 12-scenario guide
|
|
41
|
+
- `CHANGELOG.md` — this file
|
|
42
|
+
- `scripts/coverage_gate.py` — 3-threshold coverage gate (overall 80 /
|
|
43
|
+
release 85 / security 90)
|
|
44
|
+
|
|
45
|
+
### Removed
|
|
46
|
+
- All 10 `pytest.mark.xfail(strict=True)` markers — each closed by a real
|
|
47
|
+
code fix (not annotation-only). See
|
|
48
|
+
`docs/validation/autodev_r4_xfail_ledger.{md,json}`.
|
|
49
|
+
|
|
50
|
+
### Internal
|
|
51
|
+
- Tests: 1062 → 1308 (+246 over 4 hardening rounds)
|
|
52
|
+
- Coverage: 79% → 80.5% line+branch
|
|
53
|
+
- 5 release-readiness rounds documented:
|
|
54
|
+
R1 release hardening · R2 PyPI blocker closure · R3 PyPI RC final
|
|
55
|
+
hardening · RC publish prep · R4 security xfail closure
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## [0.1.0a1] — 2026-05-14 (Pre-Release, superseded by 0.1.0a2)
|
|
60
|
+
|
|
61
|
+
### Added
|
|
62
|
+
|
|
63
|
+
#### Core agent pipeline
|
|
64
|
+
- CrewAI multi-agent base: 12-agent graph from `InputClassifier` through
|
|
65
|
+
`ReleaseManager` covering PRD, architecture, milestones, tasks, quality gates,
|
|
66
|
+
security review, verification, and doc writing.
|
|
67
|
+
- Full audit-trail artifact tree written under
|
|
68
|
+
`<repo>/.dev-factory/runs/<run_id>/` (input / product / architecture /
|
|
69
|
+
planning / execution / quality / verification / delivery).
|
|
70
|
+
- Run state machine: `draft → running → paused → done | failed`; runs are
|
|
71
|
+
resumable (`continue-run`) and replayable (`replay`).
|
|
72
|
+
|
|
73
|
+
#### Multi-CLI executor router
|
|
74
|
+
- `ExecutorRouter` — the single entry point for all CLI traffic; routes tasks
|
|
75
|
+
to Codex CLI, Claude Code CLI, or mock executor based on task type, risk
|
|
76
|
+
level, and file count.
|
|
77
|
+
- `CodexCliExecutor` — wraps `codex` binary, passes SAFETY BOUNDARY prompt,
|
|
78
|
+
parses JSONL `--json` output into `CodexInnerStep` records.
|
|
79
|
+
- `ClaudeCodeExecutor` — wraps `claude` binary for architecture, security,
|
|
80
|
+
long-context refactors, release roll-ups.
|
|
81
|
+
- `MockExecutor` / `MockCodexExecutor` — deterministic stand-ins that produce
|
|
82
|
+
realistic artifacts without API keys; engaged automatically when both CLIs are
|
|
83
|
+
absent or via `--allow-mock-executor true`.
|
|
84
|
+
- Executor selection: `--executor codex|claude|auto|mock`; `auto` (default)
|
|
85
|
+
picks the best CLI per task type.
|
|
86
|
+
|
|
87
|
+
#### A2A protocol and roundtable
|
|
88
|
+
- A2A HTTP transport with SSRF guard: blocks RFC-1918 / loopback addresses by
|
|
89
|
+
default; override with `AUTODEV_A2A_ALLOW_PRIVATE_NETWORKS=1` (test-only).
|
|
90
|
+
- Bearer-auth via `AUTODEV_A2A_TOKEN` environment variable.
|
|
91
|
+
- `AgentRoster` with persistent JSON file at `~/.autodev/a2a-roster.json`.
|
|
92
|
+
- `autodev a2a-serve` — JSON-RPC 2.0 HTTP server accepting tasks from external
|
|
93
|
+
agents on a configurable port.
|
|
94
|
+
- `autodev a2a-register` / `autodev a2a-call` — register a remote card and
|
|
95
|
+
dispatch tasks.
|
|
96
|
+
- `autodev roundtable` (party mode) — recruit N specialist agents by skill,
|
|
97
|
+
collect independent analyses, synthesize into a consensus report.
|
|
98
|
+
|
|
99
|
+
#### MCP server (9 tools)
|
|
100
|
+
- `autodev mcp-serve` — JSON-RPC 2.0 MCP server over stdio; compatible with
|
|
101
|
+
Claude Desktop and Claude Code.
|
|
102
|
+
- Tools: `scan`, `classify_input`, `create_prd`, `deliver_project`,
|
|
103
|
+
`run_issue`, `report`, `roundtable`, `release_check`, `list_runs`.
|
|
104
|
+
- Apply-mode gate: `mode=apply` requires both `allow_apply=true` in the request
|
|
105
|
+
**and** `AUTODEV_MCP_ALLOW_APPLY=1` in the server environment.
|
|
106
|
+
- Audit log: every tool invocation appended to `AUTODEV_MCP_AUDIT_LOG` file
|
|
107
|
+
when the env var is set.
|
|
108
|
+
|
|
109
|
+
#### BMAD sprint mode
|
|
110
|
+
- `autodev sprint-start` / `sprint-status` / `sprint-retro` / `sprint-correct`
|
|
111
|
+
— open, monitor, close, and course-correct multi-week sprints.
|
|
112
|
+
- BMAD-Sally UX workflow via `autodev design-ux`.
|
|
113
|
+
|
|
114
|
+
#### Configuration
|
|
115
|
+
- `ConfigStack` — 4-layer TOML deep-merge: user-global →
|
|
116
|
+
project-team → project-user → runtime; array-of-tables merging by `code/id`
|
|
117
|
+
key.
|
|
118
|
+
- `FACTORY_FORCE_MOCK=1` — forces deterministic mock across all executors and
|
|
119
|
+
agents.
|
|
120
|
+
- `FACTORY_LOG` — sets log level (default `INFO`).
|
|
121
|
+
|
|
122
|
+
#### CLI surface
|
|
123
|
+
- 35 CLI subcommands via Typer; every command is fully documented with
|
|
124
|
+
`--help`.
|
|
125
|
+
- Shell safety: blocks `rm -rf`, `sudo`, `cat .env`, `curl | bash`, etc. in all
|
|
126
|
+
executor modes.
|
|
127
|
+
|
|
128
|
+
#### R1 audit + R2 P0 hardening
|
|
129
|
+
- R1 documentation audit: identified CHANGELOG, configuration, and
|
|
130
|
+
troubleshooting as missing docs; recorded in
|
|
131
|
+
`docs/validation/autodev_documentation_onboarding_audit.md`.
|
|
132
|
+
- R2 P0 closure: SSRF guard on A2A HTTP transport; HMAC-signed MCP audit log
|
|
133
|
+
entries; `AUTODEV_A2A_ALLOW_PRIVATE_NETWORKS` env var; recorded in
|
|
134
|
+
`docs/validation/autodev_r2_*`.
|
|
135
|
+
|
|
136
|
+
### Notes
|
|
137
|
+
- PyPI not yet published; install from the GitHub Release wheel or source.
|
|
138
|
+
See [README § Install](README.md#install).
|
|
139
|
+
- `pip install --upgrade autodev-ai==0.1.0a1` requires the `--pre` flag
|
|
140
|
+
because `0.1.0a1` is a pre-release version marker.
|
|
141
|
+
- Homebrew tap formula is blocked until the PyPI `0.1.0a1` sha256 is available
|
|
142
|
+
after the first `twine upload`.
|
|
143
|
+
- Docker image `ghcr.io/merchloubna70-dot/autodev-ai:0.1.0-alpha` ships Codex
|
|
144
|
+
CLI and Claude Code CLI pre-installed; ~2 GB compressed.
|
|
145
|
+
|
|
146
|
+
[Unreleased]: https://github.com/merchloubna70-dot/autodev-ai/compare/v0.1.0-alpha...HEAD
|
|
147
|
+
[0.1.0a1]: https://github.com/merchloubna70-dot/autodev-ai/releases/tag/v0.1.0-alpha
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 autodev-ai contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|