bpsai-pair 2.35.1__tar.gz → 2.35.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.
- {bpsai_pair-2.35.1/bpsai_pair.egg-info → bpsai_pair-2.35.2}/PKG-INFO +8 -2
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/README.md +7 -1
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/__init__.py +6 -0
- bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/bugfix/bf-001.json +19 -0
- bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/bugfix/bf-002.json +19 -0
- bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/chore/ch-001.json +19 -0
- bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/chore/ch-002.json +19 -0
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/plan-draft/pd-001.json +1 -1
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/plan-draft/pd-002.json +1 -1
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/plan-draft/pd-003.json +1 -1
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/security-audit/sa-001.json +1 -1
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/security-audit/sa-002.json +1 -1
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures/implement-with-tests → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/feature}/iwt-001.json +1 -1
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures/implement-with-tests → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/feature}/iwt-002.json +1 -1
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures/implement-with-tests → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/feature}/iwt-003.json +1 -1
- bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/refactor/rf-001.json +19 -0
- bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/refactor/rf-002.json +19 -0
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures/code-review → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/review}/cr-001.json +2 -2
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures/code-review → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/review}/cr-002.json +2 -2
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/task_set.py +65 -16
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/divona.md +5 -1
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/managing-task-lifecycle/reference/all-cli-commands.md +1 -1
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/scripts/bootstrap-remote.sh +1 -1
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/benchmark_seed.py +2 -1
- bpsai_pair-2.35.2/bpsai_pair/feedback/task_type_aliases.py +26 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2/bpsai_pair.egg-info}/PKG-INFO +8 -2
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair.egg-info/SOURCES.txt +19 -12
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/pyproject.toml +1 -1
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/LICENSE +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/MANIFEST.in +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/__main__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/agent_archetypes.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/checks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/dispatch.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/engine.py +0 -0
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/content-draft/cd-001.json +0 -0
- {bpsai_pair-2.35.1/bpsai_pair/benchmarks/matrix/fixtures → bpsai_pair-2.35.2/bpsai_pair/benchmarks/matrix/fixtures/extended}/content-draft/cd-002.json +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/io.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/schema.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/matrix/scorer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/reports.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/runner.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/benchmarks/validation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/cli.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/cli_registration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/cli_startup.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/advisory.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch_display.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch_handler_length.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch_lint_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch_provenance.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/arch_wiring.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/artifact_ownership.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/audit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/benchmark.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/benchmark_cli_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/benchmark_matrix_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/budget.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/budget_programmatic.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/cache.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/calibration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/calibration_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/capabilities_merge.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/claude_md_merge.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/compaction_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/config.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/config_cmd.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/containment_checkpoint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/containment_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/containment_session.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/context_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/core.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/doctor.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/doctor_checks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/enforce.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/enforce_containment.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/enforce_state_edit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/enforce_task_edit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_base.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_base_cache.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_branch.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_branch_multi.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_checkout_restore.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_cross_base.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_cross_module.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_dry_run.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_entry.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_executor.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_feasibility_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_graph_build.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_guard_checks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_guards.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_navigator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_p2_surface.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_pause_resume.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_plan_id.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_pr.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_pr_body_cap.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_pr_multi.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_pre_dispatch_boundary.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_preflight.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_qa_multi.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_result.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_resume.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_resume_integrity.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_run_context.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_security.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_sibling_setup.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_sweep.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_target_repo.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_worktree.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/engage_worktree_guards.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/feedback.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/feedback_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/fleet_audit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/fleet_check.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/fleet_upgrade_result.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/fleet_upgrade_transaction.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/fleet_workflow_audit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/gitignore.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/init_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/init_feature.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/init_repo.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/license.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/license_display.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/license_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/mcp.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/metrics/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/metrics/analysis_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/metrics/burndown_command.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/metrics/helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/metrics/summary_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/orchestrate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/orchestrate_evaluate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_crud.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_diagnostics.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_hierarchy_cmd.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_migrate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/pm_sprint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/preflight.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/preset.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/prime_learn.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/provider_command.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/provider_presets.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/qc_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/query.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/review.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/review_sprint_cmd.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/security.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/session.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/session_check.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/session_status.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/setup_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/state.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/state_anchors.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/state_fence.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/state_validation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/status_derive.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/status_handoff.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/status_render.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/subscription.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/support.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/sweep_command.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/sweep_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/system.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_aggregate_cmd.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_archive_cmd.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_display.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_export.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_log_failure.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/telemetry_log_lifecycle.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/timer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_agent_removal.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_config_write.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_containment.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_display.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_execute.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_fleet_sync.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_prompt.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_skill_removal.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_source_repo.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/upgrade_state_fence.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/validate_runner.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/validation_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/version_consistency.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/wizard.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workflow_md_generator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workflow_md_plan.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_impact.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_index_cmd.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_init_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_init_project.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_repos.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_setup_permissions.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/commands/workspace_validate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/compaction.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/compaction_events.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/compaction_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/compaction_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/compaction_recovery.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/completion/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/completion/ac_claims.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/completion/ac_semantics.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/completion/ac_substance_check.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/completion/ac_substance_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/completion/pipeline.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/completion/policy.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/completion/store.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/context/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/context/cache.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/context/freshness.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/context/loader.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/arch_headroom.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/arch_prescan.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/budget_heuristic.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/bypass_log.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/cache_paths.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/ci_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/claude_paths.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/cli_command_tree.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/config.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/config_architecture.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/config_containment.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/config_defaults.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/config_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/config_loader.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/config_profiles.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/config_templates.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/config_validation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/config_validator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/constants.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/deprecation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/encoding.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/encoding_lint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_analyzer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_checker.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_components.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_functions.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_hub.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_imports.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_limits.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_split_suggest.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enforcement_utils.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/engage_ac_sidecar.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/engage_task_start.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enrichment_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/enrichment_hooks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/file_role_detector.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/gate_executor.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/gate_hooks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/glob_match.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/handler_baseline.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/handler_lint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_budget.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_budget_programmatic.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_handlers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_metrics.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_pm.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_routing.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_state.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_trello.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/hook_types.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/hooks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/line_count_mode.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/line_metrics.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/model_id_lint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/ops.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/ops_ci.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/ops_context.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/ops_feature.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/ops_git.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/ops_project.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/orchestration_hooks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/preconditions.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/preferences.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/preset_config.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/preset_definitions.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/presets.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/profile_resolver.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/programmatic_credit_state.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/programmatic_credit_validator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/provenance_lint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/randomization_log.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/reachability_ast.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/reachability_lint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/readonly_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/routing.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/subprocess_lint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/task_acceptance.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/task_ready.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/task_state.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/core/utils.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/containment_section.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/README.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/cookiecutter.json +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.agentpackignore +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agent-memory/bellona/MEMORY.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agent-memory/driver/MEMORY.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agent-memory/laverna/MEMORY.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agent-memory/navigator/MEMORY.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agent-memory/nayru/MEMORY.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/bellona.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/driver.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/laverna.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/navigator.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/nayru.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/agents/vaivora.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/draft-backlog.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/make-it-so.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/pc-audit-sibling.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/pc-plan.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/run-qc.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/start-task.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/commands/update-skills.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/rules/architecture.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/settings.json +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/architecting-modules/SKILL.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/auditing-sibling-projects/SKILL.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/creating-skills/SKILL.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/designing-and-implementing/SKILL.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/finishing-branches/SKILL.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/implementing-with-tdd/SKILL.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/managing-task-lifecycle/SKILL.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/managing-task-lifecycle/reference/bps-trello-conventions.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/managing-task-lifecycle/scripts/check_completion.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/managing-task-lifecycle/scripts/validate_task_status.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/planning-with-pm/SKILL.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/reviewing-code/SKILL.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.claude/skills/running-qc/SKILL.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.editorconfig +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.gitignore +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/.gitignore +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/capabilities.yaml +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/context/project.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/context/state.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/context/workflow.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/feedback/.gitkeep +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/history/.gitkeep +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/plans/.gitkeep +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/security/allowlist.yaml +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/security/sandbox.yaml +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/security/secret-allowlist.yaml +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/tasks/.gitkeep +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/telemetry/.gitkeep +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/CLAUDE.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/scripts/on_permission_denied.sh +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/hooks/on_permission_denied.sh +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/seeds/manifest.json +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/seeds/seed-01-verification-is-yours.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/seeds/seed-02-shared-checkouts-belong-to-runs.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/seeds/seed-03-dispatch-dont-implement.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/seeds/seed-04-fail-closed-audited-bypass.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/seeds/seed-05-no-deferral-at-agent-velocity.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/seeds/seed-06-repo-reality-beats-templates.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/seeds/seed-07-bounded-waits-only.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/seeds/seed-08-stop-the-tail.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/seeds/seed-09-delegate-loops-probe-limits.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/workflows/bps-full.yaml +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/data/workflows/simple.yaml +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/engage/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/engage/a2a_push.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/engage/boundary_clean.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/engage/constants.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/engage/containment_audit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/_batch_stats_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/anomaly.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/calibration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/calibration_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/calibration_refresh.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/classifier.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/context_load.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/drift.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/feasibility.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/fleet.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/overhead.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/prior_decay.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/query_builder.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/routing_report.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/schema.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/scoring.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/seam_heat.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/service.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/stack_detect.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/state_query.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/stats.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/feedback/workspace_query.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/github/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/github/client.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/github/client_prs.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/github/commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/github/merge_strategy.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/github/pr.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/github/pr_manager.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/github/pr_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/github/pr_workflow.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/gitops/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/gitops/failure_rules.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/gitops/failure_types.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/gitops/failures.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/gitops/retry.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/harness/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/harness/claude_code.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/harness/dispatch_adapter.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/harness/env_overrides.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/harness/provider_loader.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/init_bundled_cli.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/integrations/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/integrations/time_tracking.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/integrations/time_tracking_cache.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/integrations/time_tracking_providers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/integrations/toggl.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/config.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/gap_mapper.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/gate_mapper.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/license_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/mapper_base.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/pipeline.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/recommender.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/recommender_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/recommender_weights.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/scorer_mapper.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/session_mapper.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/signal_model.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/task_hook.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intelligence/telemetry_mapper.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/approval.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/approval_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/capability_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/classifier.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/command_router.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/dispatch_guard.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/frustration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/response_injection.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/intent_gate/schema.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/json_envelope.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/activation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/binding.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/cache_signing.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/core.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/keys.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/machine.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/online.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/paths.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/public_key.pem +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/schema.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/security.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/snapshot_bridge.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/startup.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/tier_change.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/unchecked.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/licensing/validation_cache.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/server.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/server_inspect.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/channels.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/completion_gates.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/context.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/metrics.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/orchestration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/planning.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/support.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/tasks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/mcp/tools/trello.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/memory_retention.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/accuracy.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/budget.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/burndown.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/calibration_pin.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/collector.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/collector_store.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/estimation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/hours_comparison.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/reports.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/token_estimator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/token_feedback.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/metrics/velocity.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/migrate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/model_ids.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/_exploration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/_failure_escalation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/_model_band.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/_override_warning.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/ac_propagation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/added_file_placeholder_scan.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/agent_names.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/agent_selector.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/autonomous.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/autonomous_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/autonomous_steps.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/backlog_header.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/backlog_materializer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/backlog_parser.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/backlog_validation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/backlog_yaml.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/baseline_io.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/blast_radius.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/blocked_completion.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/branch_review.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/checkin_diagnostic.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/checkin_kill.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/circuit_breaker_recovery.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/commit_gitignore_prune.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/commit_halt.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/commit_landing.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/commit_scope.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/commit_verification.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/completion_guard.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/dependency_resolver.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/engage_push.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/engage_push_scan.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/engage_review.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/engage_run_state.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/failure_taxonomy.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/failure_taxonomy_backfill.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/final_message_artifact.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/finding_extraction.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/finding_records.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/findings_loop.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/freshness_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/handoff.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/handoff_consumer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/handoff_formatting.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/handoff_retention.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/headless.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/headless_dispatch.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/headless_runner.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/headless_runner_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/headless_session_lifecycle.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/heartbeat.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/impact_dedup.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/invoker.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/invoker_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/issue_refs.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/manager.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/model_doctrine.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/model_routing.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/nayru_deterministic.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/nayru_pregates.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/orchestrator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/orchestrator_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/orchestrator_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/output_verifier.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/output_verifier_git_args.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/output_verifier_signals.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/package_builder.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/plan_graph.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/plan_graph_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/plan_vaivora.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/plan_vaivora_llm.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/planner.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/planner_context.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/planner_parsing.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/porcelain_status.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/portfolio_status.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/pr_review.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/pre_dispatch_check.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/pre_task_sha.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/reconciliation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/residue_sideref.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_checks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_common.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_dispatch.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_output.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_severity.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_sprint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_sprint_artifact.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_sprint_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/review_worktree.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/reviewer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/run_exit_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/seam_delta.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/security.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/security_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/security_parser.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/selector_scoring.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/serializer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sibling_branch.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sibling_branch_verify.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sibling_fetch.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_block_handler.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_commit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_executor.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_executor_baseline.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_executor_hooks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_executor_outcome.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_lifecycle_args.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_lifecycle_hooks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_residue_defer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_residue_handler.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_review_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_signals.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_skipped_handler.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/sprint_summary.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/state_commit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/subagent_context.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/target_repo_resolution.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/targeted_tests.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/task_md_runtime.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/task_review.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/task_review_command.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/task_timeout.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/terminal_message_classifier.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/wiring_review.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/orchestration/workflow_guide.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/auto_assign.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/cli_update_cache.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/completion_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/intelligence_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/intent_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/intent_detection.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/parser.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_complete_command.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_crud_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_ensure_from_backlog.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_enums.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_estimation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_feasibility.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_intelligence.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_legacy_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_legacy_sync.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_model.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_parser.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_pm_enrich.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_pm_hierarchy.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_pm_sync.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_query_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_record_emission.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_status_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_task_push.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_trello_sync.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/plan_workspace.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/review_intent.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/scope_detector.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/standup.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/standup_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/state.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/status_hooks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/status_rendering.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_archive_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_check_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_consistency.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_done.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_model.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_parser.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_reconcile.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_update_completion.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/task_update_enforcement.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/token_estimate_display.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/planning/token_estimator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/actions.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/backlog_mixin.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/backlog_rollup.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/backlog_types.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/compat.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/completion_cascade.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/completion_eval.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/engine.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/errors.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/hierarchy.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/lifecycle.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/migration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/null_provider.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/orchestration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/presets.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/project_hooks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/provider.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/registry.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/sprint_lifecycle.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/status_vocab.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/sync.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/types.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/workflow.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm/workflow_validation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/adapter.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/backlog_engage.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/backlog_tree.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/config.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/discovery.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/enrichment.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/label_resolver.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/provider.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/relationship_ops.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/relationships.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/pm_trello/sync_ops.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/prime_learn/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/prime_learn/a2a_push.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/prime_learn/storage.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/prime_learn/synthesis.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/config.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/executor.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/fill_validator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/loader.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/reporter.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/results.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/step_handlers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/telemetry_store.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/templates.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/qc/timeout_handler.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/a2a_adapter.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/driver_activity.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/qc_trends.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/quality_metrics.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/remote_query_client.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/review_findings.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/schema_validator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/session_outcomes.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/sprint_status.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/query_skills/task_state.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/docs_drift_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/docs_drift_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/notes_allowlist.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/notes_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/notes_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/notes_markers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/phase89_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/release_checks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/template.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/release/validate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/Dockerfile.containment +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/manifests.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/manifests_node.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/manifests_python.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/package_list.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/repo_resolve.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/report_format.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/scanner.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/advisory/version_match.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/allowlist.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/allowlist_data.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/allowlist_matching.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint_base.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint_containment.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint_format.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/checkpoint_rollback.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/containment.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/containment_check.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/containment_config.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/containment_paths.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/data_classes.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/dep_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/dep_scanner.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/dependencies.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/image_manager.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/interactive_runner.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/network.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/network_control.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/review.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/review_agent.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/review_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/review_patterns.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/review_scanner.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/runner.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/sandbox.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets_config.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets_format.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets_patterns.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets_scanner.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/security/secrets_types.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/seeds/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/seeds/manifest.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/seeds/safety.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/seeds/writer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/session.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/session_finalize.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/session_handoff.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/classifier.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/classifier_engine.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/classifier_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/classifier_report.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/cli_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/display_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/export_base.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/exporter.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/gap_detector.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/gap_engine.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/gap_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/gap_persistence.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/gaps_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/gaps_query_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/gate_definitions.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/gate_evaluator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/gates.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/generator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/generator_engine.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/generator_io.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/generator_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/installer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/installer_sources.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/intent_matcher.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/pattern_detector.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/scorer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/scorer_engine.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/scorer_format.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/scorer_models.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/scorer_telemetry.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_export_cmd.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_gap_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_gap_handlers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_install_cmd.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_recommend_cmd.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_score_cmds.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_suggester.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/skill_validate_cmd.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/subagent_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/subagent_detector.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/subagent_parser.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/subagent_patterns.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/suggestion.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/skills/validator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/sprint/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/sprint/commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/statusline.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/statusline_install.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/statusline_state.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/support/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/support/auth.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/support/client.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/support/system_info.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/sweep/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/sweep/a2a_integration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/sweep/classifier.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/sweep/diff_parser.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/sweep/providers/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/sweep/providers/_patterns.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/sweep/providers/generic.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/sweep/providers/python_provider.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/tasks/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/tasks/archiver.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/tasks/changelog.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/tasks/lifecycle.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/_provider.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/_routing_tier.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/_serialization.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/_token_usage.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/_validation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/aggregate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/aggregates.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/archive.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/audit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/auto_archive.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/auto_compaction.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/batch_submit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/cache_health.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/collector.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/collector_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/collectors.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/compaction.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/config.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/failure_pattern_detector.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/hook_collector.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/hooks_schema.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/migrate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/parser.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/privacy.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/queries.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/query_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/recovery.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/recovery_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/schema.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/session_outcomes.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/session_store.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/signal_checks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/signal_emitter.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/signal_thresholds.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/snapshot.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/sqlite_migration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/sqlite_schema.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/sqlite_telemetry_store.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/store.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/t1_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/task_state_index.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/telemetry/task_state_log.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/tokens.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/activity.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/auth.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/board_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/board_index.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/board_setup.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/checklist_ops.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/client.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/connection.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/custom_fields.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/errors.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/field_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/fields.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/label_ops.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/list_resolver.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/pm_sync_bridge.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/progress.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/retry.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync_cards.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync_checklists.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync_fields.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/sync_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_card_ops.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_checklist_match.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_completion.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_display.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_done_pipeline.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_handoff.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_helpers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_lifecycle.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_operations.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_pm_routing.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_provider.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/task_sync.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/templates.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook_auth.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook_commands.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook_config.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook_handlers.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/trello/webhook_server.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/utils/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/utils/sysproc.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/api_routes.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/app.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/architecture_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/architecture_delta.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/architecture_step.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/budget_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/chat_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/config_builder.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/config_merge.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/config_parser.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/containment_step.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/creator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/demo.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/editor_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/enforcement_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/github_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/guided_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/license_installer.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/loader.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/mcp_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/page_route_registry.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/page_routes.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/preset_tables.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/pro_page_routes.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/project_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/prompts/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/prompts/guided_setup.md +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/review_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/routes.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/session.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/state.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/static/chat.js +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/static/style.css +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/static/wizard.js +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/steps.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/architecture.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/base.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/budget.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/chat.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/enforcement.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/github.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/index.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/mcp.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/partials/license_install.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/partials/locked_overlay.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/partials/upgrade_modal.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/project.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/review.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/success.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/trello.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/welcome.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/templates/workflow.html +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/trello_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/update_api.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/wizard/workflow_routes.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/__init__.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/agent_spawning.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/agent_teams.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/audit.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/contracts.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/discovery.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/execution_plan.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/git_ops.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/gitignore.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/impact.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/init_project.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/membership.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/orchestrator.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/parser.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/permissions.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/project_md.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/schema.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/sibling_conventions.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/stack_detect.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/task_push.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair/workspace/workspace_index.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair.egg-info/dependency_links.txt +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair.egg-info/entry_points.txt +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair.egg-info/requires.txt +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/bpsai_pair.egg-info/top_level.txt +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/setup.cfg +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_agent_archetypes.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_cli_registration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_cli_startup_archive_pre_t1.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_cli_startup_context_freshness_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_cli_startup_offline_network.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_cli_startup_readonly_gate.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_compaction_containment.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_compaction_coverage.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_compaction_decomp.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_compaction_events.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_conftest_env_isolation.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_dependency_completeness.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_feature_gating.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_init_bundled_cli.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_main_entrypoint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_memory_retention.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_model_ids.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_readonly_command_state_e2e.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_session_finalize.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_stale_task_lint.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_statusline.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_statusline_heartbeat.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_statusline_install.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_statusline_integration.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_statusline_mtime.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_t42_1_qc_rename.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_template_signal_hooks.py +0 -0
- {bpsai_pair-2.35.1 → bpsai_pair-2.35.2}/tests/test_website_signal_hooks.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bpsai-pair
|
|
3
|
-
Version: 2.35.
|
|
3
|
+
Version: 2.35.2
|
|
4
4
|
Summary: AI-augmented pair programming framework with 270+ CLI commands for planning, orchestration, Trello/GitHub integration, and autonomous workflows
|
|
5
5
|
Author-email: BPS AI Software <support@paircoder.ai>
|
|
6
6
|
License-Expression: LicenseRef-Proprietary
|
|
@@ -79,7 +79,7 @@ Provides-Extra: integrations
|
|
|
79
79
|
Requires-Dist: py-trello>=0.19.0; extra == "integrations"
|
|
80
80
|
Dynamic: license-file
|
|
81
81
|
|
|
82
|
-
# PairCoder v2.35.
|
|
82
|
+
# PairCoder v2.35.2
|
|
83
83
|
|
|
84
84
|
> AI-augmented pair programming framework with 270+ CLI commands
|
|
85
85
|
|
|
@@ -189,6 +189,12 @@ Check your license: `bpsai-pair license status`
|
|
|
189
189
|
|
|
190
190
|
> Full release history and detailed notes: [paircoder.ai](https://paircoder.ai).
|
|
191
191
|
|
|
192
|
+
**v2.35.2 — Benchmarks join reality, QC agent regains its browser**
|
|
193
|
+
- **Benchmark fixtures speak your task types.** The matrix fixture set is re-keyed to the vocabulary real projects actually use (`feature`, `bugfix`, `chore`, `refactor`, `review`), with legacy strings alias-normalized at ingestion — so `benchmark matrix-run --auto-seed` primes the same calibration cells your production tasks read, instead of cells nothing joins.
|
|
194
|
+
- **Fixtures can't over-demand.** A fail-closed fixture lint rejects any fixture whose grading requirements aren't explicitly stated in its own prompt, ending a class of false cross-model failures.
|
|
195
|
+
- **Divona sees Chrome again.** The QC agent's tool allowlist had excluded the browser tools entirely; it now inherits the full toolset and knows to load deferred browser tools before assuming they're absent.
|
|
196
|
+
- **GitHub Release notes publish again.** The release workflow's notes extraction wrote to the wrong stream in CI, shipping empty release bodies; notes now publish with every release.
|
|
197
|
+
|
|
192
198
|
**v2.35.1 — Telemetry restored, typed git-failure handling, memory seed packs**
|
|
193
199
|
- **Driver telemetry records again under parallel lanes.** v2.35.0's run-root worktree isolation sent driver-task telemetry into the ephemeral worktree, which is destroyed at run teardown — runs recorded zero driver rows. Telemetry now lands in the durable checkout, and calibration reads from the same place.
|
|
194
200
|
- **Git and GitHub failures are classified, not guessed.** A typed failure taxonomy (transient / ambiguous / permanent) drives retries — unrecognized failures are never auto-retried — and error text is scrubbed of tokens and credentials.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# PairCoder v2.35.
|
|
1
|
+
# PairCoder v2.35.2
|
|
2
2
|
|
|
3
3
|
> AI-augmented pair programming framework with 270+ CLI commands
|
|
4
4
|
|
|
@@ -108,6 +108,12 @@ Check your license: `bpsai-pair license status`
|
|
|
108
108
|
|
|
109
109
|
> Full release history and detailed notes: [paircoder.ai](https://paircoder.ai).
|
|
110
110
|
|
|
111
|
+
**v2.35.2 — Benchmarks join reality, QC agent regains its browser**
|
|
112
|
+
- **Benchmark fixtures speak your task types.** The matrix fixture set is re-keyed to the vocabulary real projects actually use (`feature`, `bugfix`, `chore`, `refactor`, `review`), with legacy strings alias-normalized at ingestion — so `benchmark matrix-run --auto-seed` primes the same calibration cells your production tasks read, instead of cells nothing joins.
|
|
113
|
+
- **Fixtures can't over-demand.** A fail-closed fixture lint rejects any fixture whose grading requirements aren't explicitly stated in its own prompt, ending a class of false cross-model failures.
|
|
114
|
+
- **Divona sees Chrome again.** The QC agent's tool allowlist had excluded the browser tools entirely; it now inherits the full toolset and knows to load deferred browser tools before assuming they're absent.
|
|
115
|
+
- **GitHub Release notes publish again.** The release workflow's notes extraction wrote to the wrong stream in CI, shipping empty release bodies; notes now publish with every release.
|
|
116
|
+
|
|
111
117
|
**v2.35.1 — Telemetry restored, typed git-failure handling, memory seed packs**
|
|
112
118
|
- **Driver telemetry records again under parallel lanes.** v2.35.0's run-root worktree isolation sent driver-task telemetry into the ephemeral worktree, which is destroyed at run teardown — runs recorded zero driver rows. Telemetry now lands in the durable checkout, and calibration reads from the same place.
|
|
113
119
|
- **Git and GitHub failures are classified, not guessed.** A typed failure taxonomy (transient / ambiguous / permanent) drives retries — unrecognized failures are never auto-retried — and error text is scrubbed of tokens and credentials.
|
|
@@ -15,6 +15,9 @@ Public API:
|
|
|
15
15
|
- ``TASK_TYPES`` -- the five v0 task categories.
|
|
16
16
|
- ``BenchmarkFixture`` / ``ExpectedShape`` -- fixture data model.
|
|
17
17
|
- ``load_fixture`` / ``load_all_fixtures`` / ``fixtures_dir`` -- fixture loaders.
|
|
18
|
+
- ``validate_fixture_shape`` / ``missing_required_sections`` /
|
|
19
|
+
``FixtureShapeMismatch`` -- fixture lint: fail closed when a fixture's
|
|
20
|
+
``required_sections`` aren't demanded by its own prompt.
|
|
18
21
|
- ``score`` / ``ScoreReport`` / ``CheckResult`` -- composable v0 scoring.
|
|
19
22
|
- ``DEFAULT_CHECKS`` -- the three v0 checks.
|
|
20
23
|
- ``MatrixRow`` / ``MatrixResult`` / ``MatrixRunner`` -- 5x5 runner.
|
|
@@ -59,9 +62,12 @@ _LAZY_EXPORTS: dict[str, str] = {
|
|
|
59
62
|
"TASK_TYPES": "task_set",
|
|
60
63
|
"BenchmarkFixture": "task_set",
|
|
61
64
|
"ExpectedShape": "task_set",
|
|
65
|
+
"FixtureShapeMismatch": "task_set",
|
|
62
66
|
"fixtures_dir": "task_set",
|
|
63
67
|
"load_all_fixtures": "task_set",
|
|
64
68
|
"load_fixture": "task_set",
|
|
69
|
+
"missing_required_sections": "task_set",
|
|
70
|
+
"validate_fixture_shape": "task_set",
|
|
65
71
|
}
|
|
66
72
|
|
|
67
73
|
__all__ = sorted(_LAZY_EXPORTS)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bf-001",
|
|
3
|
+
"task_type": "bugfix",
|
|
4
|
+
"input_prompt": "`parse_duration(s)` currently raises `ValueError` for the input `\"0s\"` because it strips the numeric prefix with `s.rstrip(\"s\")` and then rejects an empty string before checking for zero. Fix `parse_duration` so `\"0s\"` returns `0`, and add a regression test for the zero-duration case alongside the existing suffix cases (`\"s\"`, `\"m\"`, `\"h\"`).",
|
|
5
|
+
"system_prompt": "You are a Driver agent fixing a reported bug. Output a single Python file: the corrected implementation followed by pytest tests, with the new regression test clearly covering the reported input.",
|
|
6
|
+
"expected_shape": {
|
|
7
|
+
"produces_code": true,
|
|
8
|
+
"required_sections": [],
|
|
9
|
+
"min_length": 120,
|
|
10
|
+
"must_contain": ["def parse_duration", "def test_", "0s"],
|
|
11
|
+
"must_not_contain": ["TODO"],
|
|
12
|
+
"json_schema_keys": []
|
|
13
|
+
},
|
|
14
|
+
"metadata": {
|
|
15
|
+
"source": "session-2026-06-02-pc2.1",
|
|
16
|
+
"redacted": true,
|
|
17
|
+
"redaction_notes": "Function name and bug shape generalized from the original report."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "bf-002",
|
|
3
|
+
"task_type": "bugfix",
|
|
4
|
+
"input_prompt": "`retry_with_backoff(fn, attempts=3)` swallows the final exception and returns `None` on total failure instead of re-raising it, so callers can't distinguish a genuine `None` result from an exhausted retry. Fix it so the last exception propagates after `attempts` failures, and add tests covering the eventual-success-after-retries path and the exhausted-retries path.",
|
|
5
|
+
"system_prompt": "You are a Driver agent fixing a reported bug. Output a single Python file: the corrected implementation followed by pytest tests.",
|
|
6
|
+
"expected_shape": {
|
|
7
|
+
"produces_code": true,
|
|
8
|
+
"required_sections": [],
|
|
9
|
+
"min_length": 150,
|
|
10
|
+
"must_contain": ["def retry_with_backoff", "def test_", "raise"],
|
|
11
|
+
"must_not_contain": ["TODO"],
|
|
12
|
+
"json_schema_keys": []
|
|
13
|
+
},
|
|
14
|
+
"metadata": {
|
|
15
|
+
"source": "session-2026-06-02-pc2.1",
|
|
16
|
+
"redacted": true,
|
|
17
|
+
"redaction_notes": "Retry helper generalized from the original module."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ch-001",
|
|
3
|
+
"task_type": "chore",
|
|
4
|
+
"input_prompt": "Write the CHANGELOG entry for v2.18.0: bumps the pinned `httpx` dependency from 0.27 to 0.28, drops the Python 3.9 compatibility shim in `core/compat.py` (now dead code since the minimum supported version is 3.10), and regenerates the lockfile. No new features or bug fixes in this release.",
|
|
5
|
+
"system_prompt": "You are a release chore agent. Structure the entry with exactly one markdown header, `## Changes`, followed by a bullet list of the changes.",
|
|
6
|
+
"expected_shape": {
|
|
7
|
+
"produces_code": false,
|
|
8
|
+
"required_sections": ["## Changes"],
|
|
9
|
+
"min_length": 100,
|
|
10
|
+
"must_contain": ["httpx", "0.28"],
|
|
11
|
+
"must_not_contain": ["TODO:", "lorem ipsum"],
|
|
12
|
+
"json_schema_keys": []
|
|
13
|
+
},
|
|
14
|
+
"metadata": {
|
|
15
|
+
"source": "session-2026-06-10-pc2.3",
|
|
16
|
+
"redacted": true,
|
|
17
|
+
"redaction_notes": "Version numbers and dependency generalized from the real release."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "ch-002",
|
|
3
|
+
"task_type": "chore",
|
|
4
|
+
"input_prompt": "Delete the deprecated `legacy_format_report()` function from `reporting/format.py` -- it was replaced by `format_report()` two releases ago and every remaining call site (checked: none in `src/`, two in `tests/`) needs updating to call `format_report()` directly instead. Update the two test call sites accordingly.",
|
|
5
|
+
"system_prompt": "You are a cleanup agent. Output a single unified diff showing the deletion and the two call-site updates.",
|
|
6
|
+
"expected_shape": {
|
|
7
|
+
"produces_code": true,
|
|
8
|
+
"required_sections": [],
|
|
9
|
+
"min_length": 80,
|
|
10
|
+
"must_contain": ["format_report"],
|
|
11
|
+
"must_not_contain": ["legacy_format_report"],
|
|
12
|
+
"json_schema_keys": []
|
|
13
|
+
},
|
|
14
|
+
"metadata": {
|
|
15
|
+
"source": "session-2026-06-10-pc2.3",
|
|
16
|
+
"redacted": true,
|
|
17
|
+
"redaction_notes": "Module/function names generalized."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "pd-001",
|
|
3
3
|
"task_type": "plan-draft",
|
|
4
4
|
"input_prompt": "Draft a sprint backlog for adding per-call cost logging to a sibling repo. Surface should follow the unified ~/.bpsai/burn-log.jsonl schema (timestamp, service, tokens_input, tokens_output, model, cost_estimate_usd, dispatch_origin, blocked, repo). Identify the API callsites, propose a colocated burn_log module, and break the work into tasks with acceptance criteria.",
|
|
5
|
-
"system_prompt": "You are a Navigator agent. Produce a sprint backlog in the engage-compatible markdown format with a Sprint header, a Tasks section, and a Risks section.",
|
|
5
|
+
"system_prompt": "You are a Navigator agent. Produce a sprint backlog in the engage-compatible markdown format with a Sprint header, a `## Tasks` section, and a `## Risks` section.",
|
|
6
6
|
"expected_shape": {
|
|
7
7
|
"produces_code": false,
|
|
8
8
|
"required_sections": ["## Tasks", "## Risks"],
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "pd-002",
|
|
3
3
|
"task_type": "plan-draft",
|
|
4
4
|
"input_prompt": "Plan the rollout of a deterministic-first review pipeline. The Nayru agent should run six pre-gates (ruff, black, secrets, architecture, coverage, contract_break) and only call Claude if any gate fails. Define the module layout, the telemetry signal payload, and the migration plan that keeps Laverna and Vaivora on the legacy path.",
|
|
5
|
-
"system_prompt": "You are a Navigator agent. Output a markdown plan with explicit
|
|
5
|
+
"system_prompt": "You are a Navigator agent. Output a markdown plan with explicit `## Goals`, `## Tasks`, and `## Risks` sections. Include acceptance criteria checklists under each task.",
|
|
6
6
|
"expected_shape": {
|
|
7
7
|
"produces_code": false,
|
|
8
8
|
"required_sections": ["## Goals", "## Tasks", "## Risks"],
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "pd-003",
|
|
3
3
|
"task_type": "plan-draft",
|
|
4
4
|
"input_prompt": "Draft a plan for a new CLI command `bpsai-pair budget programmatic` that reads ~/.bpsai/burn-log.jsonl, aggregates current-month spend, and compares against a configured monthly cap. Define the threshold ladder (80/90/100%) and the CI-gate-ready exit codes. Break the work into one task per sub-feature.",
|
|
5
|
-
"system_prompt": "You are a Navigator agent. Produce a backlog in the engage-compatible format with a Sprint header, Goals, Tasks, and Risks.",
|
|
5
|
+
"system_prompt": "You are a Navigator agent. Produce a backlog in the engage-compatible format with a Sprint header, Goals, a `## Tasks` section, and Risks.",
|
|
6
6
|
"expected_shape": {
|
|
7
7
|
"produces_code": false,
|
|
8
8
|
"required_sections": ["## Tasks"],
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "sa-001",
|
|
3
3
|
"task_type": "security-audit",
|
|
4
4
|
"input_prompt": "Audit the burn-log writer module for security issues. The module appends JSON-Lines records to ~/.bpsai/burn-log.jsonl. Look for: (a) path traversal via the configured BURN_LOG_PATH env override, (b) injection of attacker-controlled fields into the JSON record (model name, service tag), (c) log forging via embedded newlines in string fields, (d) information disclosure (does it ever log secrets like API keys?). Use the P0/P1/P2 severity scheme.",
|
|
5
|
-
"system_prompt": "You are the Laverna security review agent.
|
|
5
|
+
"system_prompt": "You are the Laverna security review agent. Structure the audit with exactly these markdown headers, in order: a `## Findings` section (findings tagged P0/P1/P2), then a `## Recommendation` section with a single line: approve | revise | block.",
|
|
6
6
|
"expected_shape": {
|
|
7
7
|
"produces_code": false,
|
|
8
8
|
"required_sections": ["## Findings", "## Recommendation"],
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "sa-002",
|
|
3
3
|
"task_type": "security-audit",
|
|
4
4
|
"input_prompt": "Audit the `bpsai-pair budget programmatic` CLI command for security issues. It reads ~/.bpsai/burn-log.jsonl, parses each line as JSON, aggregates spend by month, and compares against a cap loaded from .paircoder/config.yaml. Look for: YAML deserialization of untrusted config, JSON-bomb / deeply nested payload DoS, malformed-line crash paths, and exposure of file paths in error messages. Tag findings P0/P1/P2.",
|
|
5
|
-
"system_prompt": "You are the Laverna security review agent.
|
|
5
|
+
"system_prompt": "You are the Laverna security review agent. Structure the audit with exactly these markdown headers, in order: a `## Findings` section (P0/P1/P2-tagged findings), then a `## Recommendation` section with a single line: approve | revise | block.",
|
|
6
6
|
"expected_shape": {
|
|
7
7
|
"produces_code": false,
|
|
8
8
|
"required_sections": ["## Findings", "## Recommendation"],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "iwt-001",
|
|
3
|
-
"task_type": "
|
|
3
|
+
"task_type": "feature",
|
|
4
4
|
"input_prompt": "Implement a pure function `aggregate(records, by)` that groups a list of dicts by the field named `by` and sums `cost_estimate_usd` per bucket. Unknown bucket values become the literal string '(unknown)'. Raise ValueError for an unsupported `by`. Cover with pytest unit tests including the unknown-bucket path and the ValueError branch.",
|
|
5
5
|
"system_prompt": "You are a Driver agent. Output a single Python file. Place the implementation and pytest tests in the same file. Follow TDD ordering: tests appear above the implementation.",
|
|
6
6
|
"expected_shape": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "iwt-002",
|
|
3
|
-
"task_type": "
|
|
3
|
+
"task_type": "feature",
|
|
4
4
|
"input_prompt": "Implement `compute_threshold(spend_usd, cap_usd)` that returns one of the string verdicts 'ok' | 'warn80' | 'warn90' | 'over'. The boundaries are: <80% ok, ≥80% warn80, ≥90% warn90, ≥100% over. Treat cap_usd == 0 as 'over' when spend_usd > 0 and 'ok' otherwise. Cover every boundary exactly and the zero-cap edge case with pytest.",
|
|
5
5
|
"system_prompt": "You are a Driver agent. Output a single Python file with implementation and pytest tests.",
|
|
6
6
|
"expected_shape": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "iwt-003",
|
|
3
|
-
"task_type": "
|
|
3
|
+
"task_type": "feature",
|
|
4
4
|
"input_prompt": "Implement a soft-failing `log_call_safely(*, service, tokens_input, tokens_output, model, cost_estimate_usd, dispatch_origin, blocked, repo, path)` that appends a JSON-Lines record to `path`. The wrapper must NEVER raise: OSError (e.g. permission denied, parent missing) is logged and swallowed. Tests must include a successful write, an append (two records), and a fault-injected OSError path that does not propagate.",
|
|
5
5
|
"system_prompt": "You are a Driver agent. Provide a single Python file: implementation followed by pytest tests using `tmp_path` and monkeypatch.",
|
|
6
6
|
"expected_shape": {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rf-001",
|
|
3
|
+
"task_type": "refactor",
|
|
4
|
+
"input_prompt": "`validate_order(order)` and `validate_invoice(invoice)` each independently repeat the same three checks: non-empty `line_items`, non-negative `total`, and a valid ISO-8601 `created_at`. Extract the shared checks into a single `_validate_common_fields(obj)` helper that both functions call, without changing either function's public signature or error messages.",
|
|
5
|
+
"system_prompt": "You are a Driver agent doing a pure refactor -- behavior must not change. Output a single Python file: the refactored implementation followed by pytest tests proving both functions still produce identical error messages for each invalid case.",
|
|
6
|
+
"expected_shape": {
|
|
7
|
+
"produces_code": true,
|
|
8
|
+
"required_sections": [],
|
|
9
|
+
"min_length": 150,
|
|
10
|
+
"must_contain": ["def _validate_common_fields", "def test_"],
|
|
11
|
+
"must_not_contain": ["TODO"],
|
|
12
|
+
"json_schema_keys": []
|
|
13
|
+
},
|
|
14
|
+
"metadata": {
|
|
15
|
+
"source": "session-2026-06-15-pc2.4",
|
|
16
|
+
"redacted": true,
|
|
17
|
+
"redaction_notes": "Domain objects (order/invoice) generalized from the original module."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rf-002",
|
|
3
|
+
"task_type": "refactor",
|
|
4
|
+
"input_prompt": "`summarize_batch(records)` is a single 90-line function that filters, groups, and aggregates in one pass, making it impossible to unit test the grouping logic in isolation. Decompose it into `_filter_valid(records)`, `_group_by_key(records)`, and `_aggregate_groups(groups)`, with `summarize_batch` becoming a thin composition of the three. Preserve the existing return shape exactly.",
|
|
5
|
+
"system_prompt": "You are a Driver agent doing a pure refactor -- behavior must not change. Output a single Python file: the decomposed implementation followed by pytest tests for each extracted helper plus one end-to-end test for `summarize_batch`.",
|
|
6
|
+
"expected_shape": {
|
|
7
|
+
"produces_code": true,
|
|
8
|
+
"required_sections": [],
|
|
9
|
+
"min_length": 200,
|
|
10
|
+
"must_contain": ["def _filter_valid", "def _group_by_key", "def _aggregate_groups", "def test_"],
|
|
11
|
+
"must_not_contain": ["TODO"],
|
|
12
|
+
"json_schema_keys": []
|
|
13
|
+
},
|
|
14
|
+
"metadata": {
|
|
15
|
+
"source": "session-2026-06-15-pc2.4",
|
|
16
|
+
"redacted": true,
|
|
17
|
+
"redaction_notes": "Function name and field names generalized from the original module."
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "cr-001",
|
|
3
|
-
"task_type": "
|
|
3
|
+
"task_type": "review",
|
|
4
4
|
"input_prompt": "Review the following patch that adds a `dispatch_surface` field to TelemetryRecord. The field is a Literal[\"interactive\", \"programmatic\"] | None classified by a new `classify_dispatch_surface()` helper that wraps an `isatty` check on sys.stdout. Flag any backward-compatibility risks, any correctness gaps in the classifier (terminal detection edge cases), and any test-coverage gaps. Use the P0/P1/P2 severity scheme.",
|
|
5
|
-
"system_prompt": "You are the Nayru review agent.
|
|
5
|
+
"system_prompt": "You are the Nayru review agent. Structure the review with exactly these markdown headers, in order: a `## Findings` section listing findings tagged by severity (P0/P1/P2), then a `## Recommendation` section with a single line: approve | revise | block.",
|
|
6
6
|
"expected_shape": {
|
|
7
7
|
"produces_code": false,
|
|
8
8
|
"required_sections": ["## Findings", "## Recommendation"],
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "cr-002",
|
|
3
|
-
"task_type": "
|
|
3
|
+
"task_type": "review",
|
|
4
4
|
"input_prompt": "Review the change that lifts the hardcoded model string from `_synthesize_with_llm` into a local variable `model = \"claude-sonnet-4-6\"` so it can be logged consistently with the actual API call. Confirm the lift covers the SKIP-response path (still billable) and the API-failure path (no record). Flag any places where the model string drifts away from the logged value.",
|
|
5
|
-
"system_prompt": "You are the Nayru review agent.
|
|
5
|
+
"system_prompt": "You are the Nayru review agent. Structure the review with exactly these markdown headers, in order: a `## Findings` section (findings tagged P0/P1/P2), then a `## Recommendation` section with a single line: approve | revise | block.",
|
|
6
6
|
"expected_shape": {
|
|
7
7
|
"produces_code": false,
|
|
8
8
|
"required_sections": ["## Findings", "## Recommendation"],
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"""Benchmark fixture data model + on-disk loaders.
|
|
2
2
|
|
|
3
|
-
Defines the five
|
|
3
|
+
Defines the five task types (aligned to the production telemetry
|
|
4
|
+
vocabulary -- paircoder#674), the ``ExpectedShape`` spec used by the
|
|
4
5
|
default scorer, and the ``BenchmarkFixture`` record that ties an input
|
|
5
6
|
prompt to an expected-shape spec. Fixtures live under
|
|
6
|
-
``fixtures/<task-type>/<id>.json`` next to this module.
|
|
7
|
+
``fixtures/<task-type>/<id>.json`` next to this module. Retired fixtures
|
|
8
|
+
whose type has no production-vocabulary equivalent live under
|
|
9
|
+
``fixtures/extended/`` and are excluded from the default load (see
|
|
10
|
+
``load_all_fixtures``).
|
|
7
11
|
"""
|
|
8
12
|
|
|
9
13
|
from __future__ import annotations
|
|
@@ -14,21 +18,23 @@ from pathlib import Path
|
|
|
14
18
|
from typing import Any, Literal
|
|
15
19
|
|
|
16
20
|
TaskType = Literal[
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
21
|
+
"feature",
|
|
22
|
+
"bugfix",
|
|
23
|
+
"chore",
|
|
24
|
+
"refactor",
|
|
25
|
+
"review",
|
|
22
26
|
]
|
|
23
27
|
|
|
24
28
|
TASK_TYPES: tuple[TaskType, ...] = (
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
29
|
+
"feature",
|
|
30
|
+
"bugfix",
|
|
31
|
+
"chore",
|
|
32
|
+
"refactor",
|
|
33
|
+
"review",
|
|
30
34
|
)
|
|
31
35
|
|
|
36
|
+
_EXTENDED_DIR_NAME = "extended"
|
|
37
|
+
|
|
32
38
|
|
|
33
39
|
@dataclass
|
|
34
40
|
class ExpectedShape:
|
|
@@ -103,20 +109,63 @@ class BenchmarkFixture:
|
|
|
103
109
|
)
|
|
104
110
|
|
|
105
111
|
|
|
112
|
+
class FixtureShapeMismatch(ValueError):
|
|
113
|
+
"""Raised when expected_shape demands content the fixture's prompt never states.
|
|
114
|
+
|
|
115
|
+
The grader fails any output missing a literal ``required_sections`` string.
|
|
116
|
+
A fixture whose prompt never asks the model for that section is unwinnable
|
|
117
|
+
by construction, and previously produced misleading cross-model scores
|
|
118
|
+
(paircoder#673). Loading fails closed instead.
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def missing_required_sections(fixture: BenchmarkFixture) -> list[str]:
|
|
123
|
+
"""Return required_sections entries absent from the fixture's own prompt text."""
|
|
124
|
+
haystack = f"{fixture.system_prompt or ''}\n{fixture.input_prompt}"
|
|
125
|
+
return [s for s in fixture.expected_shape.required_sections if s not in haystack]
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def validate_fixture_shape(fixture: BenchmarkFixture) -> None:
|
|
129
|
+
"""Fail closed if expected_shape.required_sections aren't demanded by the prompt."""
|
|
130
|
+
missing = missing_required_sections(fixture)
|
|
131
|
+
if missing:
|
|
132
|
+
raise FixtureShapeMismatch(
|
|
133
|
+
f"fixture {fixture.id!r} expected_shape.required_sections demands "
|
|
134
|
+
f"{missing}, but neither system_prompt nor input_prompt states it "
|
|
135
|
+
"verbatim",
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
|
|
106
139
|
def fixtures_dir() -> Path:
|
|
107
140
|
"""Return the bundled-fixtures directory next to this module."""
|
|
108
141
|
return Path(__file__).resolve().parent / "fixtures"
|
|
109
142
|
|
|
110
143
|
|
|
111
144
|
def load_fixture(path: Path | str) -> BenchmarkFixture:
|
|
112
|
-
"""Load a single fixture from a JSON file.
|
|
145
|
+
"""Load a single fixture from a JSON file.
|
|
146
|
+
|
|
147
|
+
Raises ``FixtureShapeMismatch`` if the fixture's required_sections aren't
|
|
148
|
+
demanded by its own prompt.
|
|
149
|
+
"""
|
|
113
150
|
raw = json.loads(Path(path).read_text())
|
|
114
|
-
|
|
151
|
+
fixture = BenchmarkFixture.from_dict(raw)
|
|
152
|
+
validate_fixture_shape(fixture)
|
|
153
|
+
return fixture
|
|
115
154
|
|
|
116
155
|
|
|
117
156
|
def load_all_fixtures(root: Path | str) -> list[BenchmarkFixture]:
|
|
118
|
-
"""Recursively load every ``*.json`` fixture under ``root``.
|
|
157
|
+
"""Recursively load every default ``*.json`` fixture under ``root``.
|
|
158
|
+
|
|
159
|
+
Skips anything under an ``extended/`` subdirectory: retired fixtures
|
|
160
|
+
preserved there (paircoder#674) carry pre-vocabulary task_type values
|
|
161
|
+
and are excluded from the default matrix run, not merely a subset of
|
|
162
|
+
it.
|
|
163
|
+
"""
|
|
119
164
|
root_path = Path(root)
|
|
120
165
|
if not root_path.is_dir():
|
|
121
166
|
return []
|
|
122
|
-
return [
|
|
167
|
+
return [
|
|
168
|
+
load_fixture(p)
|
|
169
|
+
for p in sorted(root_path.rglob("*.json"))
|
|
170
|
+
if _EXTENDED_DIR_NAME not in p.relative_to(root_path).parts[:-1]
|
|
171
|
+
]
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
name: divona
|
|
3
3
|
display_name: Divona
|
|
4
4
|
description: QC testing specialist. Runs interactive browser-based regression tests via Chrome extension. Reads .qc.yaml suite specs, executes scenarios step-by-step, and produces structured pass/fail reports.
|
|
5
|
-
tools: Read, Grep, Glob, Bash
|
|
6
5
|
model: sonnet
|
|
7
6
|
memory: project
|
|
8
7
|
permissionMode: manual
|
|
@@ -16,6 +15,11 @@ agent-roles:
|
|
|
16
15
|
|
|
17
16
|
You are a QC testing specialist that runs interactive browser-based regression tests using the Claude Chrome extension (`claude-in-chrome` MCP tools).
|
|
18
17
|
|
|
18
|
+
> **Tool availability:** the `mcp__claude-in-chrome__*` tools may be DEFERRED in your
|
|
19
|
+
> tool schema — load them via ToolSearch (one call, comma-separated select list)
|
|
20
|
+
> before use. Do NOT assume they are unavailable because they are not preloaded,
|
|
21
|
+
> and do not fall back to another browser mechanism without probing first.
|
|
22
|
+
|
|
19
23
|
## Your Role
|
|
20
24
|
|
|
21
25
|
- Read QC test suite specs (`.qc.yaml` files)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **This file is generated. Do not edit by hand.**
|
|
4
4
|
> Regenerate with: `python tools/cli/scripts/generate_cli_reference.py`
|
|
5
5
|
> Source of truth: the installed `bpsai-pair` Typer app (`bpsai_pair.cli:app`)
|
|
6
|
-
> bpsai-pair 2.35.
|
|
6
|
+
> bpsai-pair 2.35.2 | 284 commands across 48 groups
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -46,7 +46,7 @@ fi
|
|
|
46
46
|
# compromised future releases. Bumped each release; see the releasing-versions
|
|
47
47
|
# skill. Invariant enforced by tools/cli/tests/core/test_bootstrap_remote.py
|
|
48
48
|
# (compares this value to tools/cli/pyproject.toml).
|
|
49
|
-
PINNED_VERSION="2.35.
|
|
49
|
+
PINNED_VERSION="2.35.2"
|
|
50
50
|
|
|
51
51
|
# Core runtime deps — the minimum set CLI startup needs to import without
|
|
52
52
|
# crashing. `bpsai_pair.commands.__init__` imports every subcommand module
|
|
@@ -28,6 +28,7 @@ from bpsai_pair.benchmarks.matrix.schema import (
|
|
|
28
28
|
MATRIX_CSV_FIELDS as _EXPECTED_FIELDS,
|
|
29
29
|
)
|
|
30
30
|
from bpsai_pair.feedback.calibration import CalibrationEngine
|
|
31
|
+
from bpsai_pair.feedback.task_type_aliases import normalize_task_type
|
|
31
32
|
from bpsai_pair.telemetry.schema import (
|
|
32
33
|
Outcome,
|
|
33
34
|
PrivacyLevel,
|
|
@@ -99,7 +100,7 @@ def _build_record(
|
|
|
99
100
|
# this is where we'd map it through.
|
|
100
101
|
return TelemetryRecord(
|
|
101
102
|
task_id=f"benchmark-{run_id}-{row['fixture_id']}",
|
|
102
|
-
task_type=row["task_type"],
|
|
103
|
+
task_type=normalize_task_type(row["task_type"]),
|
|
103
104
|
repo=project_repo,
|
|
104
105
|
model=row["model_id"],
|
|
105
106
|
tokens=TokenUsage(
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""Alias normalization onto the production task_type vocabulary (paircoder#674).
|
|
2
|
+
|
|
3
|
+
Real telemetry across a 37-project inventory (2026-07-21) keys almost
|
|
4
|
+
entirely on ``feature``/``bugfix``/``chore``/``refactor``/``review``.
|
|
5
|
+
Older fixtures and re-seeded matrix.csv runs may still carry legacy
|
|
6
|
+
strings (e.g. ``code-review``); normalizing them at ingestion keeps
|
|
7
|
+
calibration cells joined to that production vocabulary instead of
|
|
8
|
+
forking into cells no real task ever keys into.
|
|
9
|
+
"""
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
TASK_TYPE_ALIASES: dict[str, str] = {
|
|
13
|
+
"implementation": "feature",
|
|
14
|
+
"implement-with-tests": "feature",
|
|
15
|
+
"code-review": "review",
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def normalize_task_type(raw: str) -> str:
|
|
20
|
+
"""Map a legacy/informal task_type string onto the canonical vocabulary.
|
|
21
|
+
|
|
22
|
+
Values with no known alias pass through unchanged -- an unrecognized
|
|
23
|
+
task_type is data, not an error, and callers (e.g. the benchmark
|
|
24
|
+
seed adapter) rely on arbitrary strings being accepted.
|
|
25
|
+
"""
|
|
26
|
+
return TASK_TYPE_ALIASES.get(raw, raw)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bpsai-pair
|
|
3
|
-
Version: 2.35.
|
|
3
|
+
Version: 2.35.2
|
|
4
4
|
Summary: AI-augmented pair programming framework with 270+ CLI commands for planning, orchestration, Trello/GitHub integration, and autonomous workflows
|
|
5
5
|
Author-email: BPS AI Software <support@paircoder.ai>
|
|
6
6
|
License-Expression: LicenseRef-Proprietary
|
|
@@ -79,7 +79,7 @@ Provides-Extra: integrations
|
|
|
79
79
|
Requires-Dist: py-trello>=0.19.0; extra == "integrations"
|
|
80
80
|
Dynamic: license-file
|
|
81
81
|
|
|
82
|
-
# PairCoder v2.35.
|
|
82
|
+
# PairCoder v2.35.2
|
|
83
83
|
|
|
84
84
|
> AI-augmented pair programming framework with 270+ CLI commands
|
|
85
85
|
|
|
@@ -189,6 +189,12 @@ Check your license: `bpsai-pair license status`
|
|
|
189
189
|
|
|
190
190
|
> Full release history and detailed notes: [paircoder.ai](https://paircoder.ai).
|
|
191
191
|
|
|
192
|
+
**v2.35.2 — Benchmarks join reality, QC agent regains its browser**
|
|
193
|
+
- **Benchmark fixtures speak your task types.** The matrix fixture set is re-keyed to the vocabulary real projects actually use (`feature`, `bugfix`, `chore`, `refactor`, `review`), with legacy strings alias-normalized at ingestion — so `benchmark matrix-run --auto-seed` primes the same calibration cells your production tasks read, instead of cells nothing joins.
|
|
194
|
+
- **Fixtures can't over-demand.** A fail-closed fixture lint rejects any fixture whose grading requirements aren't explicitly stated in its own prompt, ending a class of false cross-model failures.
|
|
195
|
+
- **Divona sees Chrome again.** The QC agent's tool allowlist had excluded the browser tools entirely; it now inherits the full toolset and knows to load deferred browser tools before assuming they're absent.
|
|
196
|
+
- **GitHub Release notes publish again.** The release workflow's notes extraction wrote to the wrong stream in CI, shipping empty release bodies; notes now publish with every release.
|
|
197
|
+
|
|
192
198
|
**v2.35.1 — Telemetry restored, typed git-failure handling, memory seed packs**
|
|
193
199
|
- **Driver telemetry records again under parallel lanes.** v2.35.0's run-root worktree isolation sent driver-task telemetry into the ephemeral worktree, which is destroyed at run teardown — runs recorded zero driver rows. Telemetry now lands in the durable checkout, and calibration reads from the same place.
|
|
194
200
|
- **Git and GitHub failures are classified, not guessed.** A typed failure taxonomy (transient / ambiguous / permanent) drives retries — unrecognized failures are never auto-retried — and error text is scrubbed of tokens and credentials.
|
|
@@ -44,18 +44,24 @@ bpsai_pair/benchmarks/matrix/models.py
|
|
|
44
44
|
bpsai_pair/benchmarks/matrix/schema.py
|
|
45
45
|
bpsai_pair/benchmarks/matrix/scorer.py
|
|
46
46
|
bpsai_pair/benchmarks/matrix/task_set.py
|
|
47
|
-
bpsai_pair/benchmarks/matrix/fixtures/
|
|
48
|
-
bpsai_pair/benchmarks/matrix/fixtures/
|
|
49
|
-
bpsai_pair/benchmarks/matrix/fixtures/
|
|
50
|
-
bpsai_pair/benchmarks/matrix/fixtures/
|
|
51
|
-
bpsai_pair/benchmarks/matrix/fixtures/
|
|
52
|
-
bpsai_pair/benchmarks/matrix/fixtures/
|
|
53
|
-
bpsai_pair/benchmarks/matrix/fixtures/
|
|
54
|
-
bpsai_pair/benchmarks/matrix/fixtures/plan-draft/pd-
|
|
55
|
-
bpsai_pair/benchmarks/matrix/fixtures/plan-draft/pd-
|
|
56
|
-
bpsai_pair/benchmarks/matrix/fixtures/
|
|
57
|
-
bpsai_pair/benchmarks/matrix/fixtures/security-audit/sa-
|
|
58
|
-
bpsai_pair/benchmarks/matrix/fixtures/
|
|
47
|
+
bpsai_pair/benchmarks/matrix/fixtures/bugfix/bf-001.json
|
|
48
|
+
bpsai_pair/benchmarks/matrix/fixtures/bugfix/bf-002.json
|
|
49
|
+
bpsai_pair/benchmarks/matrix/fixtures/chore/ch-001.json
|
|
50
|
+
bpsai_pair/benchmarks/matrix/fixtures/chore/ch-002.json
|
|
51
|
+
bpsai_pair/benchmarks/matrix/fixtures/extended/content-draft/cd-001.json
|
|
52
|
+
bpsai_pair/benchmarks/matrix/fixtures/extended/content-draft/cd-002.json
|
|
53
|
+
bpsai_pair/benchmarks/matrix/fixtures/extended/plan-draft/pd-001.json
|
|
54
|
+
bpsai_pair/benchmarks/matrix/fixtures/extended/plan-draft/pd-002.json
|
|
55
|
+
bpsai_pair/benchmarks/matrix/fixtures/extended/plan-draft/pd-003.json
|
|
56
|
+
bpsai_pair/benchmarks/matrix/fixtures/extended/security-audit/sa-001.json
|
|
57
|
+
bpsai_pair/benchmarks/matrix/fixtures/extended/security-audit/sa-002.json
|
|
58
|
+
bpsai_pair/benchmarks/matrix/fixtures/feature/iwt-001.json
|
|
59
|
+
bpsai_pair/benchmarks/matrix/fixtures/feature/iwt-002.json
|
|
60
|
+
bpsai_pair/benchmarks/matrix/fixtures/feature/iwt-003.json
|
|
61
|
+
bpsai_pair/benchmarks/matrix/fixtures/refactor/rf-001.json
|
|
62
|
+
bpsai_pair/benchmarks/matrix/fixtures/refactor/rf-002.json
|
|
63
|
+
bpsai_pair/benchmarks/matrix/fixtures/review/cr-001.json
|
|
64
|
+
bpsai_pair/benchmarks/matrix/fixtures/review/cr-002.json
|
|
59
65
|
bpsai_pair/commands/__init__.py
|
|
60
66
|
bpsai_pair/commands/advisory.py
|
|
61
67
|
bpsai_pair/commands/arch.py
|
|
@@ -410,6 +416,7 @@ bpsai_pair/feedback/service.py
|
|
|
410
416
|
bpsai_pair/feedback/stack_detect.py
|
|
411
417
|
bpsai_pair/feedback/state_query.py
|
|
412
418
|
bpsai_pair/feedback/stats.py
|
|
419
|
+
bpsai_pair/feedback/task_type_aliases.py
|
|
413
420
|
bpsai_pair/feedback/workspace_query.py
|
|
414
421
|
bpsai_pair/github/__init__.py
|
|
415
422
|
bpsai_pair/github/client.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "bpsai-pair"
|
|
3
|
-
version = "2.35.
|
|
3
|
+
version = "2.35.2"
|
|
4
4
|
description = "AI-augmented pair programming framework with 270+ CLI commands for planning, orchestration, Trello/GitHub integration, and autonomous workflows"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|