wade-cli 0.48.1__tar.gz → 0.50.2__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.
- {wade_cli-0.48.1 → wade_cli-0.50.2}/.wade.yml +16 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/CHANGELOG.md +54 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/CONTRIBUTING.md +4 -3
- {wade_cli-0.48.1 → wade_cli-0.50.2}/KNOWLEDGE.md +21 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/KNOWLEDGE.ratings.jsonl +7 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/PKG-INFO +325 -170
- {wade_cli-0.48.1 → wade_cli-0.50.2}/README.md +323 -168
- {wade_cli-0.48.1 → wade_cli-0.50.2}/docs/dev/architecture.md +106 -22
- {wade_cli-0.48.1 → wade_cli-0.50.2}/docs/dev/extending.md +3 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/docs/dev/skills-system.md +30 -2
- {wade_cli-0.48.1 → wade_cli-0.50.2}/docs/dev/testing.md +25 -9
- {wade_cli-0.48.1 → wade_cli-0.50.2}/pyproject.toml +2 -2
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/__init__.py +1 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/implementation_session.py +8 -2
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/plan_session.py +5 -3
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/review_pr_comments_session.py +21 -11
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/config/loader.py +10 -2
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/git/repo.py +13 -3
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/hooks/policies.py +50 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/config.py +22 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/review.py +314 -10
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/providers/_pr_delegate.py +4 -4
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/providers/github.py +59 -6
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/batch_review_service.py +3 -2
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/check_service.py +20 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/bootstrap.py +96 -21
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/done.py +1 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/lifecycle.py +41 -3
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/sync.py +1 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/init_service/config_io.py +8 -4
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/review_delegation_service.py +61 -7
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/review_service.py +217 -23
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/task_service.py +34 -3
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/skills/installer.py +15 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/skills/pointer.py +61 -34
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/ui/prompts.py +51 -4
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/prompts/deps-analysis.md +1 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/prompts/plan-session.md +3 -3
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/prompts/review-batch.md +2 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/prompts/review-code.md +2 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/prompts/review-plan.md +2 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/prompts/review-pr-comments.md +3 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/prompts/session-start-implement.md +1 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/prompts/session-start-plan.md +1 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/prompts/session-start-review.md +1 -0
- wade_cli-0.50.2/templates/skills/_partials/review-budget.md +46 -0
- wade_cli-0.50.2/templates/skills/_partials/review-enforcement-rule.md +12 -0
- wade_cli-0.50.2/templates/skills/_partials/review-implementation-closing-step.md +25 -0
- wade_cli-0.50.2/templates/skills/_partials/review-plan-step.md +18 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/_partials/user-interaction.md +1 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/deps/SKILL.md +18 -6
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/implementation-session/SKILL.md +13 -11
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/plan-session/SKILL.md +17 -11
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/plan-session/reference/plan-format.md +1 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/review-pr-comments-session/SKILL.md +15 -8
- wade_cli-0.50.2/templates/skills/task/SKILL.md +262 -0
- wade_cli-0.50.2/templates/skills/task/examples.md +160 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/task/plan-format.md +5 -4
- wade_cli-0.50.2/templates/skills/task/reference/session-summary-format.md +105 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/_support.py +20 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/mock_gh_script.py +20 -17
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/test_review_contract.py +59 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/integration/test_skill_context_budget.py +33 -1
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/integration/test_skill_install.py +165 -6
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_config/test_bot_review_config.py +67 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_hooks/test_session_start.py +71 -0
- wade_cli-0.50.2/tests/unit/test_models/test_review_expectation.py +248 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_providers/test_github_pr.py +82 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_batch_review_service.py +40 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_poll_for_reviews.py +128 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_post_implementation_lifecycle.py +172 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_resume_autonomy.py +4 -3
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_review_delegation_service.py +211 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_review_service.py +97 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_task_service.py +43 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_tracked_managed_files.py +186 -14
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_worktree_gitignore.py +17 -2
- wade_cli-0.50.2/tests/unit/test_skills/test_pointer.py +42 -0
- wade_cli-0.50.2/tests/unit/test_skills/test_review_budget_partial.py +65 -0
- wade_cli-0.50.2/tests/unit/test_utils/test_prompts.py +92 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_yolo.py +6 -3
- wade_cli-0.48.1/templates/skills/_partials/review-enforcement-rule.md +0 -8
- wade_cli-0.48.1/templates/skills/_partials/review-implementation-closing-step.md +0 -34
- wade_cli-0.48.1/templates/skills/_partials/review-plan-step.md +0 -17
- wade_cli-0.48.1/templates/skills/task/SKILL.md +0 -196
- wade_cli-0.48.1/templates/skills/task/examples.md +0 -132
- wade_cli-0.48.1/tests/unit/test_utils/test_prompts.py +0 -48
- {wade_cli-0.48.1 → wade_cli-0.50.2}/.gitattributes +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/.github/workflows/auto-version.yml +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/.github/workflows/ci.yml +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/.github/workflows/pr-title-lint.yml +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/.github/workflows/publish.yml +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/.github/workflows/release.yml +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/.gitignore +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/.pre-commit-config.yaml +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/AGENTS.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/assets/wade.png +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/docker-compose.e2e.yml +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/docs/dev/documentation-policies.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/install.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/auto_version.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/changelog.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/check-all.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/check.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/fmt.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/hooks/pre-push +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/install-hooks.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/release.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/setup-worktree.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/test-concurrency.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/test-e2e-docker.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/test-e2e.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/test-live-ai-taskr.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/test-live-ai.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/test-live-gh.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/scripts/test.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/__main__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/admin.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/autocomplete.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/hook.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/knowledge.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/main.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/review.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/session_shared.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/task.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/cli/worktree.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/config/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/config/migrations.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/config/schema.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/git/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/git/branch.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/git/hooks.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/git/pr.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/git/stash.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/git/sync.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/git/worktree.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/hooks/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/hooks/cli.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/logging/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/logging/context.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/logging/setup.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/batch.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/delegation.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/deps.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/events.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/hooks.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/permission.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/session.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/task.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/models/worktree.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/providers/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/providers/base.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/providers/clickup.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/providers/markdown.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/providers/registry.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/ai_resolution.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/delegation_service.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/deps_service.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/_shared.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/batch.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/cleanup.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/core.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/draft_pr.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/implementation_service/usage_tracking.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/init_service/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/init_service/auth.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/init_service/commands.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/init_service/manifest.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/init_service/migrations.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/init_service/prompts_ai.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/init_service/prompts_setup.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/init_service/shell.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/knowledge_search.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/knowledge_service.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/plan_service.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/prompt_delivery.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/review_settle.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/services/smart_start.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/skills/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/skills/doc_targets.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/ui/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/ui/console.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/body_markers.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/clipboard.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/conventional.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/filelock.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/gitref.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/http.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/install.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/knowledge_file.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/markdown.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/markers.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/paths.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/plan_validation.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/process.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/slug.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/stale_base.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/templates.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/terminal.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/token_usage_markdown.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/src/wade/utils/update_check.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/agents-pointer.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/hooks/commit-msg +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/hooks/pre-commit +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/hooks/pre-push +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/prompts/implement-context.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/setup-worktree.sh.example +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/_partials/doc-update-step.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/_partials/knowledge-step.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/implementation-session/reference/doc-update.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/implementation-session/reference/new-plan.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/implementation-session/reference/pr-summary-format.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/implementation-session/reference/recovery.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/implementation-session/reference/tracking-issues.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/knowledge/SKILL.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/review-pr-comments-session/reference/doc-update.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/skills/review-pr-comments-session/reference/recovery.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/templates/statusline-command.sh +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/concurrency/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/concurrency/test_batch_multi_pr.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/concurrency/test_knowledge_merge.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/concurrency/test_lock_retry.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/concurrency/test_stash_race.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/conftest.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/conftest.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/test_admin_contract.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/test_check_contract.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/test_implement_work_done_contract.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/test_knowledge_contract.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/test_mock_gh_contract.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/test_plan_contract.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/test_smart_start_contract.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/test_task_contract.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/e2e/test_work_sync_list_contract.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/fixtures/live/taskr_header_hi_body.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/fixtures/live/taskr_header_howdy_body.md +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/fixtures/transcripts/claude_session.txt +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/fixtures/transcripts/codex_session.txt +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/fixtures/transcripts/copilot_session.txt +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/fixtures/transcripts/generic_session.txt +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/integration/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/integration/test_autostash.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/integration/test_check.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/integration/test_git.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/integration/test_implementation_lifecycle.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/integration/test_init.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/integration/test_knowledge.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/integration/test_markdown_provider.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/live/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/live/test_wade_live_ai.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/live/test_wade_live_ai_taskr.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/live/test_wade_live_gh.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/test_cli_basics.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/conftest.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_cli/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_cli/test_done_doc_pass_advisory.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_cli/test_done_review_hint.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_cli/test_knowledge_cli.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_cli/test_review_cli.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_cli/test_session_subapps.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_cli/test_shell_init.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_cli/test_task_cli.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_cli/test_work_ai_flags.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_cli/test_work_cli.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_config/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_config/test_loader.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_config/test_merge_strategy_migration.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_config/test_migrations.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_config/test_migrations_atomic.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_console.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_effort.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_all_patches_present.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_branch_list.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_branch_slugify.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_detached_worktree.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_is_merged_into.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_main_checkout_root.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_merge_count.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_pr_base.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_pr_lookup.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_pr_retry.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_pr_title.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_repo.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_reset_branch.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_scaffold_commit.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_stash_drop.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_sync_conflicted_files.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_tip_commit_is_empty.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_git/test_worktree_remove.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_hooks/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_hooks/test_hook_cli.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_hooks/test_policies.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_hooks/test_post_tool_use.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_models/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_models/test_batch.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_models/test_config_models.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_models/test_delegation.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_models/test_deps_models.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_models/test_deps_partition.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_models/test_review.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_models/test_task_models.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_permission_mode.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_providers/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_providers/test_clickup.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_providers/test_github.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_providers/test_markdown.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_ai_resolution.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_batch_build_cmd.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_batch_pr_index.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_bootstrap_allowlist.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_bootstrap_hook_timeout.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_bootstrap_post_tool_use.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_bootstrap_pre_push.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_bootstrap_session_start.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_bot_trigger.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_catchup.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_catchup_reconcile.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_check.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_cleanup_loss_guard.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_codex_worktree_launch_context.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_delegation_service.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_deps_service.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_done_gates.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_done_idempotent.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_done_plan_flag.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_done_pr_title_sync.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_draft_pr_base_fetch.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_draft_pr_retarget.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_implementation_done_sync.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_implementation_launch_context.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_implementation_service.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_implementation_service_resume.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_init.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_init_shell_integration.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_knowledge_search.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_knowledge_service.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_managed_git_hooks.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_no_direct_git.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_plan_service.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_pr_lookup_guards.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_pr_summary_path.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_pre_push_backstop.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_preserve_session_data.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_prompt_delivery.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_push_recovery.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_resolve_task_branch.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_review_status_block.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_reviewed_marker.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_smart_start.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_smart_start_resume.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_stale_base_surface.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_services/test_sync_base_branch.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_skills/test_doc_targets.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_skills/test_knowledge_attributes.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_skills/test_managed_gitignore.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/__init__.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_body_markers.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_conventional.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_filelock.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_gitref.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_http.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_install.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_markdown.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_markers.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_plan_validation.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_process.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_slug.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_stale_base.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_terminal.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_terminal_launch.py +0 -0
- {wade_cli-0.48.1 → wade_cli-0.50.2}/tests/unit/test_utils/test_update_check.py +0 -0
|
@@ -58,6 +58,22 @@ models:
|
|
|
58
58
|
effort: xhigh
|
|
59
59
|
provider:
|
|
60
60
|
name: github
|
|
61
|
+
bot_review:
|
|
62
|
+
# This repo runs CodeRabbit + Codex, not Cursor Bugbot. Bugbot is disabled so
|
|
63
|
+
# expectation-verified completion (#448) doesn't wait arrival_timeout for a
|
|
64
|
+
# review that never arrives on every review check. arrival_timeout/ack_timeout
|
|
65
|
+
# keep their defaults (300s / 900s).
|
|
66
|
+
auto_trigger: false
|
|
67
|
+
bots:
|
|
68
|
+
- name: coderabbit
|
|
69
|
+
trigger: '@coderabbitai review'
|
|
70
|
+
enabled: true
|
|
71
|
+
- name: codex
|
|
72
|
+
trigger: '@codex review'
|
|
73
|
+
enabled: true
|
|
74
|
+
- name: bugbot
|
|
75
|
+
trigger: bugbot run
|
|
76
|
+
enabled: false
|
|
61
77
|
knowledge:
|
|
62
78
|
enabled: true
|
|
63
79
|
path: KNOWLEDGE.md
|
|
@@ -4,6 +4,60 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Conventional Commits](https://conventionalcommits.org/).
|
|
6
6
|
|
|
7
|
+
## [v0.50.2] — 2026-08-19
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- list uncommitted files before the PR-merge "work will be lost" prompt (#454) (932c645)
|
|
12
|
+
|
|
13
|
+
## [v0.50.1] — 2026-08-18
|
|
14
|
+
|
|
15
|
+
### Chores
|
|
16
|
+
|
|
17
|
+
- bump crossby to v0.24.3 (#452) (403daa8)
|
|
18
|
+
|
|
19
|
+
## [v0.50.0] — 2026-08-18
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
- harden and align review-pass budget and skip guidance across workflows (#451) (cef9d99)
|
|
24
|
+
|
|
25
|
+
## [v0.49.1] — 2026-08-18
|
|
26
|
+
|
|
27
|
+
### Bug Fixes
|
|
28
|
+
|
|
29
|
+
- don't report review bots done until they've actually reviewed (#449) (01a3192)
|
|
30
|
+
|
|
31
|
+
## [v0.49.0] — 2026-08-18
|
|
32
|
+
|
|
33
|
+
### Features
|
|
34
|
+
|
|
35
|
+
- standardize WADE session summaries with emoji status and decisive dialog prompts (#444) (4c4d730)
|
|
36
|
+
|
|
37
|
+
## [v0.48.5] — 2026-08-18
|
|
38
|
+
|
|
39
|
+
### Documentation
|
|
40
|
+
|
|
41
|
+
- align installed agent guidance with the plan-driven lifecycle (#442) (d5dbcfc)
|
|
42
|
+
|
|
43
|
+
## [v0.48.4] — 2026-08-18
|
|
44
|
+
|
|
45
|
+
### Bug Fixes
|
|
46
|
+
|
|
47
|
+
- wrap long choices in interactive pickers instead of cropping (#446) (6b162b6)
|
|
48
|
+
|
|
49
|
+
## [v0.48.3] — 2026-08-18
|
|
50
|
+
|
|
51
|
+
### Documentation
|
|
52
|
+
|
|
53
|
+
- reconcile developer references with the current codebase (#440) (c20a564)
|
|
54
|
+
|
|
55
|
+
## [v0.48.2] — 2026-08-17
|
|
56
|
+
|
|
57
|
+
### Documentation
|
|
58
|
+
|
|
59
|
+
- refresh public onboarding and product positioning (#438) (3f822e2)
|
|
60
|
+
|
|
7
61
|
## [v0.48.1] — 2026-08-17
|
|
8
62
|
|
|
9
63
|
### Documentation
|
|
@@ -35,14 +35,15 @@ uv pip install -e ".[dev]"
|
|
|
35
35
|
|
|
36
36
|
```
|
|
37
37
|
CLI Layer → services, models, config, logging, ui
|
|
38
|
-
Service Layer → providers, crossby (AI tool adapters), git,
|
|
38
|
+
Service Layer → providers, crossby (AI tool adapters), git, models, config, logging
|
|
39
39
|
Provider Layer → models, config, logging (no service imports)
|
|
40
40
|
Git Layer → models, config, logging (no service imports)
|
|
41
|
-
DB Layer → models, logging (no config imports)
|
|
42
41
|
Models Layer → nothing (leaf)
|
|
43
42
|
```
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
Never import a higher layer from a lower one, and keep business logic out of `cli/`. One sanctioned exception runs the other way: services may import the lower `skills/` utility layer for skill-file management (`install_skills`, the `*_SKILLS` registries, gitignore/cross-tool constants), never the reverse.
|
|
45
|
+
|
|
46
|
+
AI tool adapters live in the external [`crossby`](https://github.com/ivanviragine/crossby) package, not this repo — wade's services import `crossby.ai_tools` and `crossby.models.ai` directly. See `docs/dev/architecture.md`.
|
|
46
47
|
|
|
47
48
|
CLI modules are thin dispatch — parse flags with Typer, call service methods. Business logic lives in `services/`, not `cli/`.
|
|
48
49
|
|
|
@@ -656,3 +656,24 @@ WADE owns zero AI-tool model catalogs — catalog models come from crossby's sta
|
|
|
656
656
|
uv.lock is gitignored in the WADE repo (.gitignore:47) and NOT tracked. A dependency bump therefore commits only pyproject.toml (and the regenerated lock stays local for reproducibility). CI uses 'uv sync --all-extras' (not --locked/--frozen), so there is no lock-freshness gate. Do not 'git add -f uv.lock' during a dependency change.
|
|
657
657
|
|
|
658
658
|
---
|
|
659
|
+
|
|
660
|
+
## 3f6332a4b61d | 2026-08-18 | implementation | tags: providers, deps, clickup | Issue #441
|
|
661
|
+
|
|
662
|
+
WADE's dependency-graph and parent-linkage automation is numeric-ID only, so opaque-ID providers (ClickUp) cannot use it. Three places all assume digits: parse_deps_output's _ARROW_RE (deps_service.py, `^\d+ -> \d+`) rejects non-numeric edges; AbstractTaskProvider.find_parent_issue defaults to returning None (providers/base.py) and ClickUpProvider does NOT override it (GitHubProvider does, providers/github.py); and _CHECKLIST_ISSUE_RE / parse_all_issue_refs (models/task.py) match only `#<digits>`. Consequence: for ClickUp, `wade task deps` produces no accepted edges and an epic's `- [ ] #id` checklist is not recognized by done/batch parent flows — the epic is a human-readable tracking doc only. Documented in templates/skills/task/SKILL.md and deps/SKILL.md scope notes (PR #442).
|
|
663
|
+
## 82ad4c583c58 | 2026-08-18 | implementation | tags: ui, prompts, questionary | Issue #445
|
|
664
|
+
|
|
665
|
+
wade's interactive pickers all funnel through src/wade/ui/prompts.py (select/menu/multi_select -> questionary select/checkbox). questionary builds the choice list as a prompt_toolkit Window(InquirerControl) with the default wrap_lines=False, which CROPS long choices to the terminal width (silently losing text). To make choices wrap, call _enable_choice_wrapping(question) BETWEEN constructing the Question and calling .ask(): it walks question.application.layout.find_all_windows() and sets win.wrap_lines = to_filter(True) on each Window whose .content is a questionary.prompts.common.InquirerControl. Done best-effort (try/except -> logger.debug("prompts.choice_wrap_failed")) because it depends on undocumented questionary internals; pyproject pins questionary>=2.0 with no ceiling. wrap_lines reflows on resize and the highlight/[SetCursorPosition] carry across wrapped rows, so selection + arrow-key scroll still work. Known limit: no hanging indent (continuation rows start at col 0). confirm()/input_prompt() left unchanged (Yes/No + free text, no long choices). Pinned by tests/unit/test_utils/test_prompts.py::TestEnableChoiceWrapping.
|
|
666
|
+
|
|
667
|
+
---
|
|
668
|
+
|
|
669
|
+
## b7e8aa32094f | 2026-08-18 | implementation | tags: ui, prompts, rich | Issue #445
|
|
670
|
+
|
|
671
|
+
The plain non-interactive Rich-printed list rows (task_service.list_tasks, implementation_service/cleanup.list_sessions/worktree list) already WRAP via Console.print defaults (no_wrap=False, overflow "fold") — verified rendering a long row at width 40. The long-choice CROP bug (#445) was ONLY ever in the questionary arrow-key picker (src/wade/ui/prompts.py), never in the Rich output path. So a "text is cropped" report about a list should be triaged to whether it came from the interactive picker vs the plain printed list.
|
|
672
|
+
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
## 3cc3b0e546d4 | 2026-08-18 | implementation | tags: review, review-polling, coderabbit, codex | Issue #448
|
|
676
|
+
|
|
677
|
+
Review completion must be *expectation-verified*, not presence-inferred: absence of a blocking bot signal does NOT mean the review is done. WADE must verify each *enabled* bot (bot_review.bots) has posted a review covering HEAD before reporting all-clear. Generalizes cc91cd11 (a CodeRabbit COMPLETED marker != done posting). Implementation (#448): models/review.py holds a pure compute_bot_arrivals() returning per-bot ARRIVED/AWAITING/ACKNOWLEDGED/MISSING, plus bot_login_matches() (verified logins: coderabbitai[bot], chatgpt-codex-connector; bugbot is a best-effort cursor/bugbot guess). review_covers_latest_commit gates on blocking_bots when expected_bots is set. The service (annotate_bot_expectations) is the ONLY layer with config+clock, so it populates expected_bots and computes the arrival map (window measured from later of commit push and a .wade/bot-triggered marker; falls back to commit push). The arrival window (arrival_timeout=300s / ack_timeout=900s config) bounds the wait so an enabled-but-not-installed bot cannot hang the session — past its window it stops blocking but is reported distinctly (never swallowed into done). A bot's PR-level reaction (Codex posts THUMBS_UP/+1, NOT a comment-level eyes as first assumed) is an ack that extends its window to ack_timeout. Every completion surface must read the map: poll_for_reviews, start(), fetch_reviews(), format_review_status_summary.
|
|
678
|
+
|
|
679
|
+
---
|
|
@@ -117,3 +117,10 @@
|
|
|
117
117
|
{"dir": "up", "id": "cc91cd11", "ts": "2026-08-16T19:08:31.215429+00:00"}
|
|
118
118
|
{"dir": "up", "id": "69f9e60c7c9f", "ts": "2026-08-17T19:57:30.614903+00:00"}
|
|
119
119
|
{"dir": "up", "id": "69f9e60c7c9f", "ts": "2026-08-17T20:16:14.514374+00:00"}
|
|
120
|
+
{"dir": "up", "id": "94ae0a8fd4c9", "ts": "2026-08-18T10:21:14.990160+00:00"}
|
|
121
|
+
{"dir": "up", "id": "69f9e60c7c9f", "ts": "2026-08-18T10:21:15.166868+00:00"}
|
|
122
|
+
{"dir": "up", "id": "702b274f", "ts": "2026-08-18T12:09:19.959012+00:00"}
|
|
123
|
+
{"dir": "up", "id": "cc91cd11", "ts": "2026-08-18T12:50:49.552087+00:00"}
|
|
124
|
+
{"dir": "up", "id": "3f6332a4b61d", "ts": "2026-08-18T13:33:29.057439+00:00"}
|
|
125
|
+
{"id": "cc91cd11", "superseded_by": "3cc3b0e546d4", "ts": "2026-08-18T14:36:50.310773+00:00"}
|
|
126
|
+
{"dir": "up", "id": "b6ca74e5", "ts": "2026-08-18T17:31:53.785409+00:00"}
|