agentshore 0.3.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.
- agentshore-0.3.2/.agents/skills/agentshore-calibrate-alignment/SKILL.md +181 -0
- agentshore-0.3.2/.agents/skills/agentshore-cleanup/SKILL.md +171 -0
- agentshore-0.3.2/.agents/skills/agentshore-code-review/SKILL.md +153 -0
- agentshore-0.3.2/.agents/skills/agentshore-design-audit/SKILL.md +126 -0
- agentshore-0.3.2/.agents/skills/agentshore-groom-backlog/SKILL.md +214 -0
- agentshore-0.3.2/.agents/skills/agentshore-issue-pickup/SKILL.md +216 -0
- agentshore-0.3.2/.agents/skills/agentshore-merge-pr/SKILL.md +200 -0
- agentshore-0.3.2/.agents/skills/agentshore-refine-tasks/SKILL.md +170 -0
- agentshore-0.3.2/.agents/skills/agentshore-run-qa/SKILL.md +164 -0
- agentshore-0.3.2/.agents/skills/agentshore-seed-project/SKILL.md +213 -0
- agentshore-0.3.2/.agents/skills/agentshore-systematic-debugging/SKILL.md +120 -0
- agentshore-0.3.2/.agents/skills/agentshore-unblock-pr/SKILL.md +193 -0
- agentshore-0.3.2/.agents/skills/agentshore-write-plan/SKILL.md +159 -0
- agentshore-0.3.2/.claude/skills/monitor_run/SKILL.md +232 -0
- agentshore-0.3.2/.claude/skills/monitor_run/progress.py +161 -0
- agentshore-0.3.2/.claude/skills/monitor_run/snapshot.py +149 -0
- agentshore-0.3.2/.claude/skills/prune/SKILL.md +192 -0
- agentshore-0.3.2/.editorconfig +27 -0
- agentshore-0.3.2/.github/CODEOWNERS +5 -0
- agentshore-0.3.2/.github/ISSUE_TEMPLATE/bug_report.yml +49 -0
- agentshore-0.3.2/.github/ISSUE_TEMPLATE/config.yml +1 -0
- agentshore-0.3.2/.github/ISSUE_TEMPLATE/feature_request.yml +35 -0
- agentshore-0.3.2/.github/contributors.json +3 -0
- agentshore-0.3.2/.github/dependabot.yml +51 -0
- agentshore-0.3.2/.github/pull_request_template.md +15 -0
- agentshore-0.3.2/.github/workflows/approve-contributor.yml +93 -0
- agentshore-0.3.2/.github/workflows/ci.yml +151 -0
- agentshore-0.3.2/.github/workflows/pr-gate.yml +130 -0
- agentshore-0.3.2/.github/workflows/release-macos.yml +77 -0
- agentshore-0.3.2/.github/workflows/release-pypi.yml +70 -0
- agentshore-0.3.2/.github/workflows/release-windows.yml +58 -0
- agentshore-0.3.2/.gitignore +240 -0
- agentshore-0.3.2/.npmrc +8 -0
- agentshore-0.3.2/.nvmrc +1 -0
- agentshore-0.3.2/.pre-commit-config.yaml +36 -0
- agentshore-0.3.2/AGENTS.md +98 -0
- agentshore-0.3.2/CHANGELOG.md +5 -0
- agentshore-0.3.2/CLAUDE.md +126 -0
- agentshore-0.3.2/CODE_OF_CONDUCT.md +85 -0
- agentshore-0.3.2/CONTRIBUTING.md +120 -0
- agentshore-0.3.2/LICENSE +21 -0
- agentshore-0.3.2/Makefile +8 -0
- agentshore-0.3.2/PKG-INFO +125 -0
- agentshore-0.3.2/README.md +85 -0
- agentshore-0.3.2/SECURITY.md +24 -0
- agentshore-0.3.2/docs/PRD.md +111 -0
- agentshore-0.3.2/docs/design/HLD.md +114 -0
- agentshore-0.3.2/docs/design/V1_CONTRACT.md +221 -0
- agentshore-0.3.2/docs/design/agents/DESIGN.md +104 -0
- agentshore-0.3.2/docs/design/build-pipeline-unification.md +190 -0
- agentshore-0.3.2/docs/design/config/DESIGN.md +120 -0
- agentshore-0.3.2/docs/design/core/DESIGN.md +92 -0
- agentshore-0.3.2/docs/design/dashboard/DESIGN.md +91 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/GRID_DARK_TILE_PALETTE.html +225 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/GRID_FURNITURE_MOCKUPS.html +2483 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/GRID_LIGHT_TILE_PALETTE.html +232 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/GRID_OFFICE_MOCKUPS.html +651 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/GRID_TOP_DOWN_FLOOR_PLAN.html +658 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/grid-agent-concept-dark.png +0 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/grid-agent-concept-light.png +0 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/grid-furniture-mockups/entry-turnstiles-preview.png +0 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/grid-furniture-mockups/science-lab-preview.png +0 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/grid-top-down-floor-plan.png +0 -0
- agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/office-chrome-rotated-wall.png +0 -0
- agentshore-0.3.2/docs/design/data/DESIGN.md +61 -0
- agentshore-0.3.2/docs/design/desktop/DESIGN.md +273 -0
- agentshore-0.3.2/docs/design/desktop/ONBOARDING_STARTUP_MOCKUPS.html +1270 -0
- agentshore-0.3.2/docs/design/errors/DESIGN.md +80 -0
- agentshore-0.3.2/docs/design/ipc/DESIGN.md +109 -0
- agentshore-0.3.2/docs/design/ipc-decouple-coalesce.md +55 -0
- agentshore-0.3.2/docs/design/logging/DESIGN.md +18 -0
- agentshore-0.3.2/docs/design/metrics/DESIGN.md +27 -0
- agentshore-0.3.2/docs/design/plays/DESIGN.md +70 -0
- agentshore-0.3.2/docs/design/reports/DESIGN.md +32 -0
- agentshore-0.3.2/docs/design/rl/DESIGN.md +145 -0
- agentshore-0.3.2/docs/design/style/grid_dark_style_guide.html +134 -0
- agentshore-0.3.2/docs/design/style/grid_light_style_guide.html +134 -0
- agentshore-0.3.2/docs/design/ui/DESIGN.md +74 -0
- agentshore-0.3.2/docs/getting-started-cli.md +98 -0
- agentshore-0.3.2/docs/getting-started-desktop.md +74 -0
- agentshore-0.3.2/docs/identity.md +191 -0
- agentshore-0.3.2/docs/release/signing.md +206 -0
- agentshore-0.3.2/package-lock.json +2631 -0
- agentshore-0.3.2/package.json +13 -0
- agentshore-0.3.2/packaging/desktop/Distribution.xml.in +71 -0
- agentshore-0.3.2/packaging/desktop/README.md +129 -0
- agentshore-0.3.2/packaging/desktop/build_bd_sidecar.py +305 -0
- agentshore-0.3.2/packaging/desktop/installer-resources/EULA.rtf +19 -0
- agentshore-0.3.2/packaging/desktop/installer-resources/build-eula-rtf.py +92 -0
- agentshore-0.3.2/packaging/desktop/installer-resources/build-eula-rtf.sh +20 -0
- agentshore-0.3.2/packaging/desktop/installer-scripts/cli-postinstall +74 -0
- agentshore-0.3.2/packaging/desktop/installer-scripts/postinstall +200 -0
- agentshore-0.3.2/packaging/desktop/installer-scripts/timelapse-postinstall +52 -0
- agentshore-0.3.2/packaging/desktop/windows/AgentShore.iss.in +199 -0
- agentshore-0.3.2/packaging/desktop/windows/tauri.windows-installer.conf.json +8 -0
- agentshore-0.3.2/pyproject.toml +185 -0
- agentshore-0.3.2/rust-toolchain.toml +8 -0
- agentshore-0.3.2/scripts/__init__.py +0 -0
- agentshore-0.3.2/scripts/buildkit/__init__.py +13 -0
- agentshore-0.3.2/scripts/buildkit/__main__.py +40 -0
- agentshore-0.3.2/scripts/buildkit/_proc.py +98 -0
- agentshore-0.3.2/scripts/buildkit/_win_signing.ps1 +147 -0
- agentshore-0.3.2/scripts/buildkit/context.py +73 -0
- agentshore-0.3.2/scripts/buildkit/macos.py +417 -0
- agentshore-0.3.2/scripts/buildkit/phases.py +59 -0
- agentshore-0.3.2/scripts/buildkit/verify.py +140 -0
- agentshore-0.3.2/scripts/buildkit/version.py +154 -0
- agentshore-0.3.2/scripts/buildkit/windows.py +374 -0
- agentshore-0.3.2/scripts/export_bootstrap_policy.py +130 -0
- agentshore-0.3.2/scripts/generate_update_manifest.py +158 -0
- agentshore-0.3.2/scripts/install-agentshore-cli.sh +128 -0
- agentshore-0.3.2/scripts/install-agentshore-venv.sh +176 -0
- agentshore-0.3.2/scripts/install-agentshore.ps1 +130 -0
- agentshore-0.3.2/scripts/install-timelapse.sh +65 -0
- agentshore-0.3.2/src/agentshore/__init__.py +10 -0
- agentshore-0.3.2/src/agentshore/__main__.py +7 -0
- agentshore-0.3.2/src/agentshore/agents/__init__.py +14 -0
- agentshore-0.3.2/src/agentshore/agents/_jsonl.py +117 -0
- agentshore-0.3.2/src/agentshore/agents/_selection.py +247 -0
- agentshore-0.3.2/src/agentshore/agents/auth_probe.py +241 -0
- agentshore-0.3.2/src/agentshore/agents/capabilities.py +55 -0
- agentshore-0.3.2/src/agentshore/agents/circuit_breaker.py +116 -0
- agentshore-0.3.2/src/agentshore/agents/cli_agent.py +1763 -0
- agentshore-0.3.2/src/agentshore/agents/cli_grok.py +215 -0
- agentshore-0.3.2/src/agentshore/agents/context_writer.py +41 -0
- agentshore-0.3.2/src/agentshore/agents/costs.py +45 -0
- agentshore-0.3.2/src/agentshore/agents/git_auth_probe.py +293 -0
- agentshore-0.3.2/src/agentshore/agents/handle.py +285 -0
- agentshore-0.3.2/src/agentshore/agents/health.py +158 -0
- agentshore-0.3.2/src/agentshore/agents/identity.py +1009 -0
- agentshore-0.3.2/src/agentshore/agents/manager.py +627 -0
- agentshore-0.3.2/src/agentshore/agents/model_catalog.py +222 -0
- agentshore-0.3.2/src/agentshore/agents/model_tiers.py +91 -0
- agentshore-0.3.2/src/agentshore/agents/pricing.py +88 -0
- agentshore-0.3.2/src/agentshore/agents/registry.py +43 -0
- agentshore-0.3.2/src/agentshore/agents/worktree/__init__.py +96 -0
- agentshore-0.3.2/src/agentshore/agents/worktree/allocator.py +842 -0
- agentshore-0.3.2/src/agentshore/agents/worktree/manager.py +815 -0
- agentshore-0.3.2/src/agentshore/agents/worktree/reaper.py +417 -0
- agentshore-0.3.2/src/agentshore/agents/worktree/registry.py +158 -0
- agentshore-0.3.2/src/agentshore/agents/worktree/rekey.py +214 -0
- agentshore-0.3.2/src/agentshore/archive.py +136 -0
- agentshore-0.3.2/src/agentshore/availability.py +172 -0
- agentshore-0.3.2/src/agentshore/beads/__init__.py +769 -0
- agentshore-0.3.2/src/agentshore/beads/downloader.py +286 -0
- agentshore-0.3.2/src/agentshore/beads/setup.py +195 -0
- agentshore-0.3.2/src/agentshore/budget.py +233 -0
- agentshore-0.3.2/src/agentshore/cli/__init__.py +47 -0
- agentshore-0.3.2/src/agentshore/cli/agent_select.py +508 -0
- agentshore-0.3.2/src/agentshore/cli/caffeinate.py +53 -0
- agentshore-0.3.2/src/agentshore/cli/commands/__init__.py +3 -0
- agentshore-0.3.2/src/agentshore/cli/commands/add_budget.py +118 -0
- agentshore-0.3.2/src/agentshore/cli/commands/dashboard.py +137 -0
- agentshore-0.3.2/src/agentshore/cli/commands/identity.py +85 -0
- agentshore-0.3.2/src/agentshore/cli/commands/init.py +359 -0
- agentshore-0.3.2/src/agentshore/cli/commands/reload_config.py +43 -0
- agentshore-0.3.2/src/agentshore/cli/commands/start.py +373 -0
- agentshore-0.3.2/src/agentshore/cli/commands/stop.py +155 -0
- agentshore-0.3.2/src/agentshore/cli/commands/trusted_ids.py +198 -0
- agentshore-0.3.2/src/agentshore/cli/constants.py +36 -0
- agentshore-0.3.2/src/agentshore/cli/helpers.py +280 -0
- agentshore-0.3.2/src/agentshore/cli/identity_helpers.py +167 -0
- agentshore-0.3.2/src/agentshore/cli/runtime.py +750 -0
- agentshore-0.3.2/src/agentshore/cli_helpers.py +259 -0
- agentshore-0.3.2/src/agentshore/command.py +382 -0
- agentshore-0.3.2/src/agentshore/config/__init__.py +387 -0
- agentshore-0.3.2/src/agentshore/config/_parsers.py +1148 -0
- agentshore-0.3.2/src/agentshore/config/budget_writer.py +62 -0
- agentshore-0.3.2/src/agentshore/config/coerce.py +15 -0
- agentshore-0.3.2/src/agentshore/config/models.py +598 -0
- agentshore-0.3.2/src/agentshore/config/yaml_io.py +113 -0
- agentshore-0.3.2/src/agentshore/core/__init__.py +15 -0
- agentshore-0.3.2/src/agentshore/core/base.py +819 -0
- agentshore-0.3.2/src/agentshore/core/branch_sync.py +220 -0
- agentshore-0.3.2/src/agentshore/core/context.py +56 -0
- agentshore-0.3.2/src/agentshore/core/experience_recorder.py +244 -0
- agentshore-0.3.2/src/agentshore/core/git_safety.py +562 -0
- agentshore-0.3.2/src/agentshore/core/github_syncer.py +143 -0
- agentshore-0.3.2/src/agentshore/core/helpers.py +239 -0
- agentshore-0.3.2/src/agentshore/core/main_repo_guard.py +53 -0
- agentshore-0.3.2/src/agentshore/core/mixins/__init__.py +10 -0
- agentshore-0.3.2/src/agentshore/core/mixins/completion.py +1595 -0
- agentshore-0.3.2/src/agentshore/core/mixins/dispatch.py +902 -0
- agentshore-0.3.2/src/agentshore/core/mixins/drain.py +724 -0
- agentshore-0.3.2/src/agentshore/core/mixins/lifecycle.py +302 -0
- agentshore-0.3.2/src/agentshore/core/mixins/loop.py +1262 -0
- agentshore-0.3.2/src/agentshore/core/mixins/snapshots.py +580 -0
- agentshore-0.3.2/src/agentshore/core/mixins/state.py +614 -0
- agentshore-0.3.2/src/agentshore/core/orchestrator.py +484 -0
- agentshore-0.3.2/src/agentshore/core/override_queue.py +61 -0
- agentshore-0.3.2/src/agentshore/core/phases.py +1202 -0
- agentshore-0.3.2/src/agentshore/core/progress_monitor.py +76 -0
- agentshore-0.3.2/src/agentshore/core/recovery_tracker.py +77 -0
- agentshore-0.3.2/src/agentshore/core/session_runtime.py +169 -0
- agentshore-0.3.2/src/agentshore/core/tick_action.py +100 -0
- agentshore-0.3.2/src/agentshore/core/trunk_artifacts.py +230 -0
- agentshore-0.3.2/src/agentshore/core/velocity_tracker.py +122 -0
- agentshore-0.3.2/src/agentshore/core/wedge_signals.py +419 -0
- agentshore-0.3.2/src/agentshore/dashboard/__init__.py +7 -0
- agentshore-0.3.2/src/agentshore/dashboard/bridge.py +645 -0
- agentshore-0.3.2/src/agentshore/dashboard/lifecycle.py +78 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/claude-large-humanoid-BaLULVPd.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/claude-medium-humanoid-DbrJlRVD.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/claude-small-ball-D2RNLllT.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/codex-large-humanoid-xUW_cD7j.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/codex-medium-humanoid-DPb95Glt.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/codex-small-ball-De43mzci.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/gemini-large-humanoid-C58wuHUB.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/gemini-medium-humanoid-BMWHKEBk.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/gemini-small-ball-BPV5H2_p.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/grok-large-humanoid-CXhPsrU_.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/grok-medium-humanoid-B4bq4AQ8.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/grok-small-ball-nhsQ2q79.png +0 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/index-B-T4jPYV.css +1 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/assets/index-S2Ik8eSY.js +9 -0
- agentshore-0.3.2/src/agentshore/dashboard/static/index.html +13 -0
- agentshore-0.3.2/src/agentshore/data/__init__.py +41 -0
- agentshore-0.3.2/src/agentshore/data/bootstrap_policy.pt +0 -0
- agentshore-0.3.2/src/agentshore/data/corruption_evidence.py +235 -0
- agentshore-0.3.2/src/agentshore/data/integrity.py +460 -0
- agentshore-0.3.2/src/agentshore/data/migrations/__init__.py +79 -0
- agentshore-0.3.2/src/agentshore/data/models.py +353 -0
- agentshore-0.3.2/src/agentshore/data/schema.sql +364 -0
- agentshore-0.3.2/src/agentshore/data/store/__init__.py +87 -0
- agentshore-0.3.2/src/agentshore/data/store/base.py +81 -0
- agentshore-0.3.2/src/agentshore/data/store/core.py +381 -0
- agentshore-0.3.2/src/agentshore/data/store/helpers.py +220 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/__init__.py +1 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/agents.py +135 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/archive.py +61 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/branch_activity.py +63 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/external_mutations.py +111 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/feedback.py +51 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/issues.py +264 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/learnings.py +84 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/plays.py +265 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/pull_requests.py +306 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/review_patterns.py +111 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/reviews.py +151 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/rl.py +129 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/scope.py +40 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/sessions.py +126 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/trajectory.py +60 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/work_claims.py +458 -0
- agentshore-0.3.2/src/agentshore/data/store/mixins/worktrees.py +366 -0
- agentshore-0.3.2/src/agentshore/data/store/rows.py +409 -0
- agentshore-0.3.2/src/agentshore/environment.py +17 -0
- agentshore-0.3.2/src/agentshore/errors.py +308 -0
- agentshore-0.3.2/src/agentshore/github/__init__.py +7 -0
- agentshore-0.3.2/src/agentshore/github/adapter.py +695 -0
- agentshore-0.3.2/src/agentshore/github/labels.py +86 -0
- agentshore-0.3.2/src/agentshore/github/pr_links.py +153 -0
- agentshore-0.3.2/src/agentshore/github/trust.py +103 -0
- agentshore-0.3.2/src/agentshore/identity_names.py +110 -0
- agentshore-0.3.2/src/agentshore/identity_wizard/__init__.py +30 -0
- agentshore-0.3.2/src/agentshore/identity_wizard/gh_accounts.py +87 -0
- agentshore-0.3.2/src/agentshore/identity_wizard/keychain.py +70 -0
- agentshore-0.3.2/src/agentshore/identity_wizard/report.py +204 -0
- agentshore-0.3.2/src/agentshore/identity_wizard/wizard.py +626 -0
- agentshore-0.3.2/src/agentshore/identity_wizard/yaml_patch.py +213 -0
- agentshore-0.3.2/src/agentshore/ipc/__init__.py +9 -0
- agentshore-0.3.2/src/agentshore/ipc/commands.py +114 -0
- agentshore-0.3.2/src/agentshore/ipc/provider.py +186 -0
- agentshore-0.3.2/src/agentshore/ipc/serializer.py +528 -0
- agentshore-0.3.2/src/agentshore/ipc/server.py +296 -0
- agentshore-0.3.2/src/agentshore/ipc/state_writer.py +255 -0
- agentshore-0.3.2/src/agentshore/ipc/wire.py +49 -0
- agentshore-0.3.2/src/agentshore/keyring_child.py +131 -0
- agentshore-0.3.2/src/agentshore/learnings.py +152 -0
- agentshore-0.3.2/src/agentshore/logging.py +136 -0
- agentshore-0.3.2/src/agentshore/paths.py +53 -0
- agentshore-0.3.2/src/agentshore/platform_compat.py +38 -0
- agentshore-0.3.2/src/agentshore/play_pacing.py +7 -0
- agentshore-0.3.2/src/agentshore/play_rules.py +80 -0
- agentshore-0.3.2/src/agentshore/plays/__init__.py +10 -0
- agentshore-0.3.2/src/agentshore/plays/_publish_reconciler.py +286 -0
- agentshore-0.3.2/src/agentshore/plays/base.py +146 -0
- agentshore-0.3.2/src/agentshore/plays/candidates.py +1466 -0
- agentshore-0.3.2/src/agentshore/plays/dispatch.py +464 -0
- agentshore-0.3.2/src/agentshore/plays/executor.py +1390 -0
- agentshore-0.3.2/src/agentshore/plays/internal/__init__.py +3 -0
- agentshore-0.3.2/src/agentshore/plays/internal/base.py +62 -0
- agentshore-0.3.2/src/agentshore/plays/internal/end_agent.py +116 -0
- agentshore-0.3.2/src/agentshore/plays/internal/end_session.py +54 -0
- agentshore-0.3.2/src/agentshore/plays/internal/instantiate_agent.py +225 -0
- agentshore-0.3.2/src/agentshore/plays/internal/reserved_action.py +49 -0
- agentshore-0.3.2/src/agentshore/plays/internal/take_break.py +184 -0
- agentshore-0.3.2/src/agentshore/plays/override.py +49 -0
- agentshore-0.3.2/src/agentshore/plays/registry.py +140 -0
- agentshore-0.3.2/src/agentshore/plays/resolver.py +707 -0
- agentshore-0.3.2/src/agentshore/plays/scope.py +80 -0
- agentshore-0.3.2/src/agentshore/plays/selector.py +54 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/__init__.py +7 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/_merge_reconcile.py +149 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/base.py +619 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/calibrate_alignment.py +45 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/cleanup.py +45 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/code_review.py +238 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/design_audit.py +140 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/gates.py +339 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/groom_backlog.py +119 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/issue_pickup.py +237 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/merge_pr.py +256 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/prune.py +57 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/reconcile_state.py +83 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/refine_tasks.py +60 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/run_qa.py +41 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/seed_project.py +196 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/systematic_debugging.py +32 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/unblock_pr.py +165 -0
- agentshore-0.3.2/src/agentshore/plays/skill_backed/write_plan.py +33 -0
- agentshore-0.3.2/src/agentshore/power.py +246 -0
- agentshore-0.3.2/src/agentshore/pr_state.py +123 -0
- agentshore-0.3.2/src/agentshore/reports/__init__.py +7 -0
- agentshore-0.3.2/src/agentshore/reports/_aggregations.py +940 -0
- agentshore-0.3.2/src/agentshore/reports/_loop_incidents.py +142 -0
- agentshore-0.3.2/src/agentshore/reports/_repo_url.py +66 -0
- agentshore-0.3.2/src/agentshore/reports/collector.py +279 -0
- agentshore-0.3.2/src/agentshore/reports/generator.py +159 -0
- agentshore-0.3.2/src/agentshore/reports/static/__init__.py +1 -0
- agentshore-0.3.2/src/agentshore/reports/static/chart.min.js +20 -0
- agentshore-0.3.2/src/agentshore/reports/templates/archive_comparison.html.j2 +238 -0
- agentshore-0.3.2/src/agentshore/reports/templates/base.html.j2 +102 -0
- agentshore-0.3.2/src/agentshore/reports/templates/components/charts.html.j2 +88 -0
- agentshore-0.3.2/src/agentshore/reports/templates/components/tables.html.j2 +195 -0
- agentshore-0.3.2/src/agentshore/reports/templates/end_session_report.html.j2 +742 -0
- agentshore-0.3.2/src/agentshore/reports/templates/progress_report.html.j2 +79 -0
- agentshore-0.3.2/src/agentshore/reports/templates/session_summary.html.j2 +375 -0
- agentshore-0.3.2/src/agentshore/reports/types.py +297 -0
- agentshore-0.3.2/src/agentshore/result_parser.py +315 -0
- agentshore-0.3.2/src/agentshore/rl/__init__.py +58 -0
- agentshore-0.3.2/src/agentshore/rl/action_space.py +30 -0
- agentshore-0.3.2/src/agentshore/rl/checkpoint_store.py +255 -0
- agentshore-0.3.2/src/agentshore/rl/cold_start.py +134 -0
- agentshore-0.3.2/src/agentshore/rl/config_head.py +65 -0
- agentshore-0.3.2/src/agentshore/rl/constants.py +10 -0
- agentshore-0.3.2/src/agentshore/rl/eligibility.py +1052 -0
- agentshore-0.3.2/src/agentshore/rl/experience.py +198 -0
- agentshore-0.3.2/src/agentshore/rl/mask.py +639 -0
- agentshore-0.3.2/src/agentshore/rl/mask_reason.py +129 -0
- agentshore-0.3.2/src/agentshore/rl/metrics.py +494 -0
- agentshore-0.3.2/src/agentshore/rl/observation.py +535 -0
- agentshore-0.3.2/src/agentshore/rl/policy.py +291 -0
- agentshore-0.3.2/src/agentshore/rl/replay.py +104 -0
- agentshore-0.3.2/src/agentshore/rl/reward.py +394 -0
- agentshore-0.3.2/src/agentshore/rl/selector.py +1089 -0
- agentshore-0.3.2/src/agentshore/rl/training.py +242 -0
- agentshore-0.3.2/src/agentshore/seed_input.py +122 -0
- agentshore-0.3.2/src/agentshore/session/__init__.py +3 -0
- agentshore-0.3.2/src/agentshore/session/bootstrap.py +559 -0
- agentshore-0.3.2/src/agentshore/session_path.py +883 -0
- agentshore-0.3.2/src/agentshore/sidecar/__init__.py +7 -0
- agentshore-0.3.2/src/agentshore/sidecar/__main__.py +7 -0
- agentshore-0.3.2/src/agentshore/sidecar/agent_auth.py +126 -0
- agentshore-0.3.2/src/agentshore/sidecar/agents.py +277 -0
- agentshore-0.3.2/src/agentshore/sidecar/archive_rpc.py +225 -0
- agentshore-0.3.2/src/agentshore/sidecar/build_id.py +58 -0
- agentshore-0.3.2/src/agentshore/sidecar/config.py +91 -0
- agentshore-0.3.2/src/agentshore/sidecar/embedded_bridge.py +133 -0
- agentshore-0.3.2/src/agentshore/sidecar/esr.py +56 -0
- agentshore-0.3.2/src/agentshore/sidecar/handshake.py +97 -0
- agentshore-0.3.2/src/agentshore/sidecar/identities.py +577 -0
- agentshore-0.3.2/src/agentshore/sidecar/identity_config.py +319 -0
- agentshore-0.3.2/src/agentshore/sidecar/notification_emitters.py +71 -0
- agentshore-0.3.2/src/agentshore/sidecar/project.py +796 -0
- agentshore-0.3.2/src/agentshore/sidecar/recents.py +171 -0
- agentshore-0.3.2/src/agentshore/sidecar/server.py +1664 -0
- agentshore-0.3.2/src/agentshore/sidecar/session_lifecycle.py +894 -0
- agentshore-0.3.2/src/agentshore/sidecar/yaml_edits.py +119 -0
- agentshore-0.3.2/src/agentshore/skills/__init__.py +231 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-calibrate-alignment/SKILL.md +58 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-cleanup/SKILL.md +56 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-code-review/SKILL.md +85 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-design-audit/SKILL.md +88 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-groom-backlog/SKILL.md +117 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-issue-pickup/SKILL.md +87 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-merge-pr/SKILL.md +36 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-prune/SKILL.md +57 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-reconcile-state/SKILL.md +97 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-refine-tasks/SKILL.md +93 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-run-qa/SKILL.md +82 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-seed-project/SKILL.md +111 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-systematic-debugging/SKILL.md +43 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-unblock-pr/SKILL.md +72 -0
- agentshore-0.3.2/src/agentshore/skills/templates/agentshore-write-plan/SKILL.md +95 -0
- agentshore-0.3.2/src/agentshore/state.py +915 -0
- agentshore-0.3.2/src/agentshore/subprocess_env.py +369 -0
- agentshore-0.3.2/src/agentshore/timelapse/__init__.py +192 -0
- agentshore-0.3.2/src/agentshore/timelapse/setup.py +487 -0
- agentshore-0.3.2/src/agentshore/ui/__init__.py +8 -0
- agentshore-0.3.2/src/agentshore/ui/agentshore.tcss +114 -0
- agentshore-0.3.2/src/agentshore/ui/alignment_levels.py +14 -0
- agentshore-0.3.2/src/agentshore/ui/app.py +461 -0
- agentshore-0.3.2/src/agentshore/ui/format.py +10 -0
- agentshore-0.3.2/src/agentshore/ui/play_labels.py +40 -0
- agentshore-0.3.2/src/agentshore/ui/provider.py +67 -0
- agentshore-0.3.2/src/agentshore/ui/screens/__init__.py +21 -0
- agentshore-0.3.2/src/agentshore/ui/screens/agent_detail.py +85 -0
- agentshore-0.3.2/src/agentshore/ui/screens/dashboard.py +191 -0
- agentshore-0.3.2/src/agentshore/ui/screens/escalation.py +88 -0
- agentshore-0.3.2/src/agentshore/ui/screens/goals.py +59 -0
- agentshore-0.3.2/src/agentshore/ui/screens/help.py +42 -0
- agentshore-0.3.2/src/agentshore/ui/screens/issues.py +114 -0
- agentshore-0.3.2/src/agentshore/ui/screens/shutdown.py +161 -0
- agentshore-0.3.2/src/agentshore/ui/screens/startup.py +105 -0
- agentshore-0.3.2/src/agentshore/ui/widgets/__init__.py +3 -0
- agentshore-0.3.2/src/agentshore/ui/widgets/agent_panel.py +165 -0
- agentshore-0.3.2/src/agentshore/ui/widgets/alert_bar.py +44 -0
- agentshore-0.3.2/src/agentshore/ui/widgets/alignment.py +67 -0
- agentshore-0.3.2/src/agentshore/ui/widgets/budget.py +83 -0
- agentshore-0.3.2/src/agentshore/ui/widgets/play_history.py +93 -0
- agentshore-0.3.2/src/agentshore/ui/widgets/rl_state.py +63 -0
- agentshore-0.3.2/src/agentshore/ui/widgets/work_queue.py +54 -0
- agentshore-0.3.2/src/agentshore/utils.py +10 -0
- agentshore-0.3.2/tests/__init__.py +1 -0
- agentshore-0.3.2/tests/agents/test_dispatch_learnings.py +70 -0
- agentshore-0.3.2/tests/agents/worktree/__init__.py +0 -0
- agentshore-0.3.2/tests/agents/worktree/conftest.py +135 -0
- agentshore-0.3.2/tests/agents/worktree/test_allocator.py +418 -0
- agentshore-0.3.2/tests/agents/worktree/test_codex_fixes.py +546 -0
- agentshore-0.3.2/tests/agents/worktree/test_manager.py +732 -0
- agentshore-0.3.2/tests/agents/worktree/test_reaper.py +770 -0
- agentshore-0.3.2/tests/agents/worktree/test_reconciliation.py +372 -0
- agentshore-0.3.2/tests/agents/worktree/test_registry.py +390 -0
- agentshore-0.3.2/tests/agents/worktree/test_rekey.py +320 -0
- agentshore-0.3.2/tests/agents/worktree/test_worktree_root.py +110 -0
- agentshore-0.3.2/tests/ci_support.py +33 -0
- agentshore-0.3.2/tests/cli/test_caffeinate.py +132 -0
- agentshore-0.3.2/tests/cli/test_platform_compat.py +62 -0
- agentshore-0.3.2/tests/conftest.py +54 -0
- agentshore-0.3.2/tests/dashboard/__init__.py +1 -0
- agentshore-0.3.2/tests/dashboard/test_bridge.py +794 -0
- agentshore-0.3.2/tests/dashboard/test_lifecycle.py +99 -0
- agentshore-0.3.2/tests/desktop/__init__.py +0 -0
- agentshore-0.3.2/tests/desktop/test_dashboard_workspace_layout.py +59 -0
- agentshore-0.3.2/tests/desktop/test_tauri_asset_hosting.py +226 -0
- agentshore-0.3.2/tests/desktop/test_tauri_signing_config.py +73 -0
- agentshore-0.3.2/tests/desktop/test_update_manifest.py +243 -0
- agentshore-0.3.2/tests/fixtures/__init__.py +1 -0
- agentshore-0.3.2/tests/fixtures/mock_agent.py +210 -0
- agentshore-0.3.2/tests/integration/__init__.py +1 -0
- agentshore-0.3.2/tests/integration/conftest.py +72 -0
- agentshore-0.3.2/tests/integration/test_agent_lifecycle.py +104 -0
- agentshore-0.3.2/tests/integration/test_anti_confirmation.py +107 -0
- agentshore-0.3.2/tests/integration/test_budget_exhaustion.py +135 -0
- agentshore-0.3.2/tests/integration/test_config_reload.py +163 -0
- agentshore-0.3.2/tests/integration/test_deterministic_replay.py +148 -0
- agentshore-0.3.2/tests/integration/test_dispatch_worktree.py +490 -0
- agentshore-0.3.2/tests/integration/test_happy_path.py +132 -0
- agentshore-0.3.2/tests/integration/test_loop_detection.py +165 -0
- agentshore-0.3.2/tests/integration/test_reaper_lifecycle.py +318 -0
- agentshore-0.3.2/tests/integration/test_scope_validation.py +148 -0
- agentshore-0.3.2/tests/ipc/__init__.py +3 -0
- agentshore-0.3.2/tests/ipc/test_commands.py +174 -0
- agentshore-0.3.2/tests/ipc/test_provider.py +314 -0
- agentshore-0.3.2/tests/ipc/test_serializer.py +659 -0
- agentshore-0.3.2/tests/ipc/test_server.py +391 -0
- agentshore-0.3.2/tests/ipc/test_state_writer.py +221 -0
- agentshore-0.3.2/tests/ipc/test_wire.py +55 -0
- agentshore-0.3.2/tests/orchestrator_factory.py +176 -0
- agentshore-0.3.2/tests/packaging/__init__.py +0 -0
- agentshore-0.3.2/tests/packaging/test_buildkit_macos_args.py +70 -0
- agentshore-0.3.2/tests/packaging/test_desktop_bundle_profile.py +26 -0
- agentshore-0.3.2/tests/packaging/test_desktop_postinstall.py +42 -0
- agentshore-0.3.2/tests/packaging/test_verify_gate.py +82 -0
- agentshore-0.3.2/tests/packaging/test_version_consistency.py +39 -0
- agentshore-0.3.2/tests/packaging/test_windows_installer.py +282 -0
- agentshore-0.3.2/tests/plays/test_ff_sync_call_sites.py +146 -0
- agentshore-0.3.2/tests/plays/test_gates.py +570 -0
- agentshore-0.3.2/tests/plays/test_merge_pr_close_issues.py +576 -0
- agentshore-0.3.2/tests/plays/test_scope_drift.py +108 -0
- agentshore-0.3.2/tests/reports/__init__.py +1 -0
- agentshore-0.3.2/tests/reports/test_collector.py +1077 -0
- agentshore-0.3.2/tests/reports/test_comparison.py +311 -0
- agentshore-0.3.2/tests/reports/test_generator.py +619 -0
- agentshore-0.3.2/tests/sidecar/__init__.py +0 -0
- agentshore-0.3.2/tests/sidecar/test_agents.py +456 -0
- agentshore-0.3.2/tests/sidecar/test_archives.py +155 -0
- agentshore-0.3.2/tests/sidecar/test_bd_sidecar.py +273 -0
- agentshore-0.3.2/tests/sidecar/test_build_id.py +69 -0
- agentshore-0.3.2/tests/sidecar/test_cold_start_imports.py +31 -0
- agentshore-0.3.2/tests/sidecar/test_cold_start_torch_free.py +73 -0
- agentshore-0.3.2/tests/sidecar/test_config.py +225 -0
- agentshore-0.3.2/tests/sidecar/test_embedded_bridge.py +92 -0
- agentshore-0.3.2/tests/sidecar/test_esr_rpc.py +214 -0
- agentshore-0.3.2/tests/sidecar/test_handshake.py +780 -0
- agentshore-0.3.2/tests/sidecar/test_identities.py +929 -0
- agentshore-0.3.2/tests/sidecar/test_live_budget.py +146 -0
- agentshore-0.3.2/tests/sidecar/test_nfr_budgets.py +266 -0
- agentshore-0.3.2/tests/sidecar/test_notification_emitters.py +27 -0
- agentshore-0.3.2/tests/sidecar/test_project.py +1491 -0
- agentshore-0.3.2/tests/sidecar/test_recents.py +322 -0
- agentshore-0.3.2/tests/sidecar/test_server_async.py +868 -0
- agentshore-0.3.2/tests/sidecar/test_session_completed_natural_exit.py +233 -0
- agentshore-0.3.2/tests/sidecar/test_session_config_path.py +48 -0
- agentshore-0.3.2/tests/sidecar/test_session_lifecycle.py +584 -0
- agentshore-0.3.2/tests/sidecar/test_session_start_bridge.py +51 -0
- agentshore-0.3.2/tests/sidecar/test_sidecar_preload.py +52 -0
- agentshore-0.3.2/tests/sidecar/test_timelapse_lifecycle.py +74 -0
- agentshore-0.3.2/tests/sidecar/test_trusted_sources.py +116 -0
- agentshore-0.3.2/tests/test_agent_capabilities.py +69 -0
- agentshore-0.3.2/tests/test_agent_handle.py +173 -0
- agentshore-0.3.2/tests/test_agent_manager.py +805 -0
- agentshore-0.3.2/tests/test_agent_selection.py +488 -0
- agentshore-0.3.2/tests/test_agent_snapshot_play_counts.py +107 -0
- agentshore-0.3.2/tests/test_alignment_delta_live.py +365 -0
- agentshore-0.3.2/tests/test_archive.py +246 -0
- agentshore-0.3.2/tests/test_auth_probe_spawn.py +110 -0
- agentshore-0.3.2/tests/test_availability_record.py +169 -0
- agentshore-0.3.2/tests/test_beads_fixes.py +675 -0
- agentshore-0.3.2/tests/test_beads_phase0.py +632 -0
- agentshore-0.3.2/tests/test_bootstrap_phase4.py +254 -0
- agentshore-0.3.2/tests/test_bootstrap_seed.py +46 -0
- agentshore-0.3.2/tests/test_branch_sync.py +161 -0
- agentshore-0.3.2/tests/test_calibrate_alignment_play.py +118 -0
- agentshore-0.3.2/tests/test_circuit_breaker.py +189 -0
- agentshore-0.3.2/tests/test_cli.py +23 -0
- agentshore-0.3.2/tests/test_cli_add_budget.py +255 -0
- agentshore-0.3.2/tests/test_cli_agent.py +2378 -0
- agentshore-0.3.2/tests/test_cli_config_overrides.py +209 -0
- agentshore-0.3.2/tests/test_cli_helpers.py +27 -0
- agentshore-0.3.2/tests/test_cli_identity.py +1580 -0
- agentshore-0.3.2/tests/test_cli_phase4.py +165 -0
- agentshore-0.3.2/tests/test_cli_phase5.py +960 -0
- agentshore-0.3.2/tests/test_cli_polish.py +826 -0
- agentshore-0.3.2/tests/test_cli_runtime.py +122 -0
- agentshore-0.3.2/tests/test_cli_seed_input.py +72 -0
- agentshore-0.3.2/tests/test_cli_timelapse.py +191 -0
- agentshore-0.3.2/tests/test_cli_typing.py +254 -0
- agentshore-0.3.2/tests/test_command.py +148 -0
- agentshore-0.3.2/tests/test_config_contract.py +394 -0
- agentshore-0.3.2/tests/test_config_hot_reload.py +139 -0
- agentshore-0.3.2/tests/test_config_identities.py +267 -0
- agentshore-0.3.2/tests/test_config_models.py +294 -0
- agentshore-0.3.2/tests/test_consecutive_timeout_bench.py +84 -0
- agentshore-0.3.2/tests/test_context_writer.py +83 -0
- agentshore-0.3.2/tests/test_core_refresh.py +526 -0
- agentshore-0.3.2/tests/test_core_weights_inventory.py +162 -0
- agentshore-0.3.2/tests/test_corruption_evidence.py +110 -0
- agentshore-0.3.2/tests/test_data_store.py +1810 -0
- agentshore-0.3.2/tests/test_data_store_phase2.py +363 -0
- agentshore-0.3.2/tests/test_data_store_phase3.py +354 -0
- agentshore-0.3.2/tests/test_data_store_phase6.py +466 -0
- agentshore-0.3.2/tests/test_design_audit_play.py +166 -0
- agentshore-0.3.2/tests/test_desktop_capabilities_acl.py +47 -0
- agentshore-0.3.2/tests/test_dispatch_revalidation.py +149 -0
- agentshore-0.3.2/tests/test_drain_esr_event.py +216 -0
- agentshore-0.3.2/tests/test_drain_mask.py +151 -0
- agentshore-0.3.2/tests/test_eligibility_authority.py +262 -0
- agentshore-0.3.2/tests/test_end_agent_drain_bypass.py +187 -0
- agentshore-0.3.2/tests/test_end_agent_play_count_gate.py +153 -0
- agentshore-0.3.2/tests/test_errors.py +77 -0
- agentshore-0.3.2/tests/test_executor_observation_play_masking.py +130 -0
- agentshore-0.3.2/tests/test_executor_pr_base_retarget.py +118 -0
- agentshore-0.3.2/tests/test_experience_recorder.py +150 -0
- agentshore-0.3.2/tests/test_fail_session.py +72 -0
- agentshore-0.3.2/tests/test_fleet_idle_persistent.py +192 -0
- agentshore-0.3.2/tests/test_gh_to_beads_mirror.py +339 -0
- agentshore-0.3.2/tests/test_git_auth_preflight.py +335 -0
- agentshore-0.3.2/tests/test_git_multi_identity_auth.py +248 -0
- agentshore-0.3.2/tests/test_git_safety_restore.py +237 -0
- agentshore-0.3.2/tests/test_git_safety_untrack.py +112 -0
- agentshore-0.3.2/tests/test_github_adapter.py +435 -0
- agentshore-0.3.2/tests/test_github_adapter_mutations.py +380 -0
- agentshore-0.3.2/tests/test_github_labels.py +92 -0
- agentshore-0.3.2/tests/test_github_pr_links.py +55 -0
- agentshore-0.3.2/tests/test_groom_backlog_play.py +320 -0
- agentshore-0.3.2/tests/test_health_monitor.py +289 -0
- agentshore-0.3.2/tests/test_identity_names.py +45 -0
- agentshore-0.3.2/tests/test_identity_resolver.py +1061 -0
- agentshore-0.3.2/tests/test_idle_backoff_progression.py +61 -0
- agentshore-0.3.2/tests/test_init_merge_preserves_user_keys.py +137 -0
- agentshore-0.3.2/tests/test_instantiate_inflight_cooldown.py +40 -0
- agentshore-0.3.2/tests/test_integrity.py +491 -0
- agentshore-0.3.2/tests/test_internal_plays.py +249 -0
- agentshore-0.3.2/tests/test_ipc.py +161 -0
- agentshore-0.3.2/tests/test_ipc_graph_serialization.py +289 -0
- agentshore-0.3.2/tests/test_ipc_phase6.py +150 -0
- agentshore-0.3.2/tests/test_issue_pickup_bd_ready.py +140 -0
- agentshore-0.3.2/tests/test_issue_pickup_live_graph_race.py +129 -0
- agentshore-0.3.2/tests/test_issue_pickup_skip_circuit.py +361 -0
- agentshore-0.3.2/tests/test_json_retry.py +174 -0
- agentshore-0.3.2/tests/test_learnings.py +452 -0
- agentshore-0.3.2/tests/test_live_budget_control.py +295 -0
- agentshore-0.3.2/tests/test_logging.py +61 -0
- agentshore-0.3.2/tests/test_loop_liveness_watchdog.py +140 -0
- agentshore-0.3.2/tests/test_loop_mask_has_plays_wait.py +264 -0
- agentshore-0.3.2/tests/test_loop_tick_guard.py +54 -0
- agentshore-0.3.2/tests/test_loop_unanswered_pause_autostop.py +95 -0
- agentshore-0.3.2/tests/test_loop_wedge_autostop.py +67 -0
- agentshore-0.3.2/tests/test_main_module.py +35 -0
- agentshore-0.3.2/tests/test_main_repo_branch_guard.py +362 -0
- agentshore-0.3.2/tests/test_main_repo_guard_unit.py +48 -0
- agentshore-0.3.2/tests/test_merge_pr_no_false_positive.py +151 -0
- agentshore-0.3.2/tests/test_model_catalog.py +327 -0
- agentshore-0.3.2/tests/test_model_tiers.py +106 -0
- agentshore-0.3.2/tests/test_no_forward_progress.py +110 -0
- agentshore-0.3.2/tests/test_orchestrator.py +1450 -0
- agentshore-0.3.2/tests/test_orchestrator_drain.py +408 -0
- agentshore-0.3.2/tests/test_orchestrator_idle_backoff.py +200 -0
- agentshore-0.3.2/tests/test_orchestrator_natural_exit.py +94 -0
- agentshore-0.3.2/tests/test_orchestrator_phase4.py +681 -0
- agentshore-0.3.2/tests/test_orchestrator_phase5a.py +526 -0
- agentshore-0.3.2/tests/test_override_wait_for.py +133 -0
- agentshore-0.3.2/tests/test_parameter_resolver.py +2330 -0
- agentshore-0.3.2/tests/test_phase2_e2e.py +289 -0
- agentshore-0.3.2/tests/test_phase2_vertical_slice.py +623 -0
- agentshore-0.3.2/tests/test_phase3_e2e.py +597 -0
- agentshore-0.3.2/tests/test_phase5_e2e.py +307 -0
- agentshore-0.3.2/tests/test_play_base.py +95 -0
- agentshore-0.3.2/tests/test_play_candidates.py +1028 -0
- agentshore-0.3.2/tests/test_play_dispatch.py +899 -0
- agentshore-0.3.2/tests/test_play_executor.py +1746 -0
- agentshore-0.3.2/tests/test_play_recency_breaker.py +61 -0
- agentshore-0.3.2/tests/test_play_registry.py +134 -0
- agentshore-0.3.2/tests/test_play_selector.py +70 -0
- agentshore-0.3.2/tests/test_play_skipped_reasons.py +157 -0
- agentshore-0.3.2/tests/test_play_timeout_classification.py +283 -0
- agentshore-0.3.2/tests/test_plays_cleanup.py +213 -0
- agentshore-0.3.2/tests/test_power_assertion.py +236 -0
- agentshore-0.3.2/tests/test_ppo_pressure_instantiate.py +257 -0
- agentshore-0.3.2/tests/test_pr_gate.py +329 -0
- agentshore-0.3.2/tests/test_pr_record_branch_propagation.py +323 -0
- agentshore-0.3.2/tests/test_pr_state.py +108 -0
- agentshore-0.3.2/tests/test_pre_dispatch_path_validation.py +173 -0
- agentshore-0.3.2/tests/test_preflight_cli_agent_auth.py +116 -0
- agentshore-0.3.2/tests/test_progress_monitor.py +84 -0
- agentshore-0.3.2/tests/test_project_root_escape_sweeper.py +175 -0
- agentshore-0.3.2/tests/test_prune_play.py +89 -0
- agentshore-0.3.2/tests/test_rate_limit_fleet_isolation.py +165 -0
- agentshore-0.3.2/tests/test_recent_applied_labels_shadow.py +103 -0
- agentshore-0.3.2/tests/test_recent_play_completions_merge.py +75 -0
- agentshore-0.3.2/tests/test_reconcile_state_play.py +325 -0
- agentshore-0.3.2/tests/test_reconcile_state_template.py +157 -0
- agentshore-0.3.2/tests/test_refine_tasks_precondition.py +89 -0
- agentshore-0.3.2/tests/test_registry_cooldown_plumbing.py +50 -0
- agentshore-0.3.2/tests/test_replay_loader.py +59 -0
- agentshore-0.3.2/tests/test_report_templates_no_legacy.py +36 -0
- agentshore-0.3.2/tests/test_result_parser.py +324 -0
- agentshore-0.3.2/tests/test_review_queue_store.py +277 -0
- agentshore-0.3.2/tests/test_rl_action_space.py +187 -0
- agentshore-0.3.2/tests/test_rl_cold_start.py +122 -0
- agentshore-0.3.2/tests/test_rl_experience.py +228 -0
- agentshore-0.3.2/tests/test_rl_mask.py +2194 -0
- agentshore-0.3.2/tests/test_rl_metrics.py +700 -0
- agentshore-0.3.2/tests/test_rl_observation.py +857 -0
- agentshore-0.3.2/tests/test_rl_policy.py +320 -0
- agentshore-0.3.2/tests/test_rl_reward.py +630 -0
- agentshore-0.3.2/tests/test_rl_reward_merge_and_instantiate.py +232 -0
- agentshore-0.3.2/tests/test_rl_selector.py +1201 -0
- agentshore-0.3.2/tests/test_rl_training.py +190 -0
- agentshore-0.3.2/tests/test_run_wizard_prefill.py +167 -0
- agentshore-0.3.2/tests/test_safe_call_phase4g.py +378 -0
- agentshore-0.3.2/tests/test_schema_fresh_db.py +220 -0
- agentshore-0.3.2/tests/test_scope_validator.py +180 -0
- agentshore-0.3.2/tests/test_seed_input.py +51 -0
- agentshore-0.3.2/tests/test_seed_project_play.py +310 -0
- agentshore-0.3.2/tests/test_session_path.py +900 -0
- agentshore-0.3.2/tests/test_skill_backed_plays.py +1810 -0
- agentshore-0.3.2/tests/test_skills.py +476 -0
- agentshore-0.3.2/tests/test_skip_category_to_reason.py +29 -0
- agentshore-0.3.2/tests/test_state.py +481 -0
- agentshore-0.3.2/tests/test_state_provider_phase4.py +223 -0
- agentshore-0.3.2/tests/test_store_busy_timeout.py +127 -0
- agentshore-0.3.2/tests/test_subprocess_env.py +170 -0
- agentshore-0.3.2/tests/test_subprocess_stdin_guard.py +134 -0
- agentshore-0.3.2/tests/test_systematic_debugging_mask.py +120 -0
- agentshore-0.3.2/tests/test_take_break.py +385 -0
- agentshore-0.3.2/tests/test_take_break_escalation.py +349 -0
- agentshore-0.3.2/tests/test_target_branch_pr_filter.py +86 -0
- agentshore-0.3.2/tests/test_time_budget.py +174 -0
- agentshore-0.3.2/tests/test_timelapse_driver.py +162 -0
- agentshore-0.3.2/tests/test_timelapse_setup.py +448 -0
- agentshore-0.3.2/tests/test_trunk_artifacts.py +360 -0
- agentshore-0.3.2/tests/test_trunk_play_git_guardrails.py +67 -0
- agentshore-0.3.2/tests/test_trusted_ids.py +472 -0
- agentshore-0.3.2/tests/test_unblock_manual_required_markers.py +232 -0
- agentshore-0.3.2/tests/test_utils.py +92 -0
- agentshore-0.3.2/tests/test_wedge_signals.py +347 -0
- agentshore-0.3.2/tests/test_weights_lifecycle.py +302 -0
- agentshore-0.3.2/tests/test_windows_layout.py +128 -0
- agentshore-0.3.2/tests/test_work_availability.py +253 -0
- agentshore-0.3.2/tests/test_worktree_failure_park.py +57 -0
- agentshore-0.3.2/tests/test_worktree_isolation_guard.py +133 -0
- agentshore-0.3.2/tests/test_write_plan_unplannable_backoff.py +118 -0
- agentshore-0.3.2/tests/ui/__init__.py +1 -0
- agentshore-0.3.2/tests/ui/test_dashboard.py +392 -0
- agentshore-0.3.2/tests/ui/test_forward_to_screen.py +66 -0
- agentshore-0.3.2/tests/ui/test_keybindings.py +184 -0
- agentshore-0.3.2/tests/ui/test_modals.py +237 -0
- agentshore-0.3.2/tests/ui/test_provider.py +183 -0
- agentshore-0.3.2/tests/ui/test_startup_shutdown.py +96 -0
- agentshore-0.3.2/tests/ui/test_tui_phase6.py +205 -0
- agentshore-0.3.2/tests/ui/test_widgets.py +368 -0
- agentshore-0.3.2/tests/ui/test_widgets_status.py +459 -0
- agentshore-0.3.2/uv.lock +1969 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentshore-calibrate-alignment
|
|
3
|
+
description: "Action slot 18 — Calibrate Alignment. Cross-references open/merged GitHub PRs against the beads task graph, updates in-progress and closed task states, and outputs updated epic closure ratios."
|
|
4
|
+
argument-hint: []
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
allowed-tools: Read, Bash(gh:*, git:*, bd:*)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# agentshore-calibrate-alignment
|
|
10
|
+
|
|
11
|
+
You are a AgentShore skill agent. AgentShore is a pure RL scheduler — not an LLM.
|
|
12
|
+
It invoked you with no parameters — this skill is self-contained.
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
None. All data is sourced from the beads project graph (`bd` CLI) and GitHub PRs.
|
|
17
|
+
|
|
18
|
+
## Forbidden mutations
|
|
19
|
+
|
|
20
|
+
Do **not** create, modify, delete, or rename any of the following:
|
|
21
|
+
|
|
22
|
+
- `.github/workflows/**` or any CI/CD configuration
|
|
23
|
+
- Source code files, test files, or configuration files
|
|
24
|
+
- `package.json`, `pyproject.toml`, or any dependency manifest
|
|
25
|
+
- GitHub issues (do not create, edit, or close issues)
|
|
26
|
+
|
|
27
|
+
This skill only updates **beads task states** — nothing else.
|
|
28
|
+
|
|
29
|
+
## Step 1 — Pre-flight
|
|
30
|
+
|
|
31
|
+
1. Read `.agentshore/context.json` if it exists. Extract `repo`, `owner`, and session context.
|
|
32
|
+
2. Confirm the beads graph is initialised by checking `.beads/` exists, then run
|
|
33
|
+
`bd list --all --json --limit 0`. If this fails or returns no epic beads, emit
|
|
34
|
+
`success: false` with error `"beads not initialised or no epics"` and stop.
|
|
35
|
+
3. Record the working directory as `REPO_ROOT=$(pwd)`.
|
|
36
|
+
|
|
37
|
+
## Step 2 — Load current beads state
|
|
38
|
+
|
|
39
|
+
1. Fetch the full beads graph, including closed tasks:
|
|
40
|
+
```
|
|
41
|
+
bd list --all --json --limit 0
|
|
42
|
+
```
|
|
43
|
+
Parse epics, stories, tasks, `parent`, `parent_id`, and `dependencies` entries where
|
|
44
|
+
`type == "parent-child"`. Resolve every task to its owning epic through the parent chain.
|
|
45
|
+
Record this as the **before** snapshot.
|
|
46
|
+
|
|
47
|
+
2. Compute closure from all task beads:
|
|
48
|
+
- `total_tasks`: every bead with `type == "task"`, including closed tasks.
|
|
49
|
+
- `closed_tasks`: task beads with `status == "closed"`.
|
|
50
|
+
- `closure_ratio`: `closed_tasks / total_tasks`, or `0.0` when an epic has no tasks.
|
|
51
|
+
For each task, record its `id`, `title`, `status`, parent chain, owning epic, and `external_ref`
|
|
52
|
+
(format `gh-N` means it mirrors GitHub issue #N).
|
|
53
|
+
|
|
54
|
+
## Step 3 — Fetch GitHub state
|
|
55
|
+
|
|
56
|
+
1. Fetch open and recently closed GitHub issues:
|
|
57
|
+
```
|
|
58
|
+
gh issue list --state open --limit 200 --json number,title,state
|
|
59
|
+
gh issue list --state closed --limit 200 --json number,title,state,closedAt
|
|
60
|
+
```
|
|
61
|
+
Build `closed_issue_numbers` from the closed issue list. This is the authoritative source
|
|
62
|
+
for closing mirrored beads.
|
|
63
|
+
|
|
64
|
+
2. Fetch all open PRs:
|
|
65
|
+
```
|
|
66
|
+
gh pr list --state open --limit 200 --json number,title,body,headRefName,author
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
3. Fetch recently merged PRs for context and reporting:
|
|
70
|
+
```
|
|
71
|
+
gh pr list --state merged --limit 100 --json number,title,body,headRefName,mergedAt
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
4. For each PR (open and merged), extract referenced issue numbers from the body.
|
|
75
|
+
Scan for these patterns (case-insensitive):
|
|
76
|
+
- `Closes #N`
|
|
77
|
+
- `Fixes #N`
|
|
78
|
+
- `Resolves #N`
|
|
79
|
+
- `Close #N`
|
|
80
|
+
- `Fix #N`
|
|
81
|
+
- `Resolve #N`
|
|
82
|
+
|
|
83
|
+
Build a map: `issue_number → list of (pr_number, pr_state)` where `pr_state` is
|
|
84
|
+
`"open"` or `"merged"`.
|
|
85
|
+
|
|
86
|
+
## Step 4 — Update task states
|
|
87
|
+
|
|
88
|
+
For each open bead task with an `external_ref` of the form `gh-N`:
|
|
89
|
+
|
|
90
|
+
1. Extract `N` (the GitHub issue number).
|
|
91
|
+
2. Compare GitHub issue and PR state:
|
|
92
|
+
- If issue `N` is in `closed_issue_numbers`:
|
|
93
|
+
- The issue is done. Mark the bead task `closed`:
|
|
94
|
+
```
|
|
95
|
+
bd close <bead_id> --reason "GitHub issue #N is closed"
|
|
96
|
+
```
|
|
97
|
+
- Record this as a `closed` update.
|
|
98
|
+
- Else if any open PR references this issue:
|
|
99
|
+
- Work is in progress. Mark the bead task `in_progress` (only if it is currently `open`
|
|
100
|
+
or `blocked`; do not downgrade a task already `in_progress` or `closed`):
|
|
101
|
+
```
|
|
102
|
+
bd update <bead_id> --status in_progress
|
|
103
|
+
```
|
|
104
|
+
- Record this as an `in_progress` update.
|
|
105
|
+
- Else (no PR references this issue):
|
|
106
|
+
- Leave the task state unchanged. Record as `unchanged`.
|
|
107
|
+
|
|
108
|
+
For tasks **without** an `external_ref` (not mirrored from GitHub): skip — beads-native
|
|
109
|
+
tasks are managed directly and must not be auto-closed by this skill.
|
|
110
|
+
|
|
111
|
+
## Step 5 — Recompute epic closure ratios
|
|
112
|
+
|
|
113
|
+
After updating task states, re-fetch the full graph:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
bd list --all --json --limit 0
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Parse it using the same all-task calculation from Step 2. Record this as the **after** snapshot.
|
|
120
|
+
|
|
121
|
+
Compute the delta for each epic:
|
|
122
|
+
```
|
|
123
|
+
ratio_delta = after.closure_ratio - before.closure_ratio
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Step 6 — Validate
|
|
127
|
+
|
|
128
|
+
1. Confirm that only tasks with `external_ref` matching `gh-N` were modified.
|
|
129
|
+
2. Confirm no task was moved to a state lower than its current state
|
|
130
|
+
(e.g., `closed` → `in_progress` must not happen).
|
|
131
|
+
3. Confirm the `after` epic closure ratios are >= the `before` ratios (calibration
|
|
132
|
+
can only increase or maintain closure — it never decrements closed counts).
|
|
133
|
+
|
|
134
|
+
If validation fails for any reason, set `success: false` and describe the violation in `error`.
|
|
135
|
+
|
|
136
|
+
## Result
|
|
137
|
+
|
|
138
|
+
Output a fenced JSON block exactly like this:
|
|
139
|
+
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"success": true,
|
|
143
|
+
"artifacts": [
|
|
144
|
+
{
|
|
145
|
+
"epic_id": "bd-001",
|
|
146
|
+
"epic_title": "Core capture pipeline",
|
|
147
|
+
"closure_ratio_before": 0.40,
|
|
148
|
+
"closure_ratio_after": 0.60,
|
|
149
|
+
"ratio_delta": 0.20
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
"tasks_updated": [
|
|
153
|
+
{
|
|
154
|
+
"bead_id": "bd-042",
|
|
155
|
+
"external_ref": "gh-17",
|
|
156
|
+
"old_status": "open",
|
|
157
|
+
"new_status": "in_progress",
|
|
158
|
+
"pr_number": 34,
|
|
159
|
+
"pr_state": "open"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"bead_id": "bd-019",
|
|
163
|
+
"external_ref": "gh-9",
|
|
164
|
+
"old_status": "in_progress",
|
|
165
|
+
"new_status": "closed",
|
|
166
|
+
"pr_number": 28,
|
|
167
|
+
"pr_state": "merged"
|
|
168
|
+
}
|
|
169
|
+
],
|
|
170
|
+
"tasks_unchanged": 12,
|
|
171
|
+
"error": null
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Fields:
|
|
176
|
+
- `artifacts`: one entry per epic with non-zero delta. Epics with `ratio_delta == 0` may be omitted.
|
|
177
|
+
- `tasks_updated`: every task whose state changed, with old/new status and the triggering PR.
|
|
178
|
+
- `tasks_unchanged`: count of tasks skipped (no PR reference or state already correct).
|
|
179
|
+
|
|
180
|
+
If any step fails, set `"success": false` and populate `"error"`.
|
|
181
|
+
Do not omit the result block under any circumstances.
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentshore-cleanup
|
|
3
|
+
description: "Action slot 13 — Cleanup. Detects the project's toolchain, runs auto-fixers (formatter, lint --fix), re-checks types and tests, opens a PR with any cleanup commits, and files deduplicated issues for unfixable failures. Language-agnostic via manifest detection."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Read, Grep, Glob, Bash(*)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# agentshore-cleanup
|
|
9
|
+
|
|
10
|
+
You are a AgentShore skill agent invoked with parameters in `$ARGUMENTS`.
|
|
11
|
+
|
|
12
|
+
## Forbidden mutations
|
|
13
|
+
|
|
14
|
+
Never create, edit, restore, or delete: `.github/workflows/**`, `.github/actions/**`, `.gitlab-ci.yml`, `.circleci/**`, `azure-pipelines.yml`, `Jenkinsfile`, `bitbucket-pipelines.yml`, or tests that assert their existence. If any auto-fixer would touch a forbidden path, exit with `"success": false` and `"error": "ci-change requested but forbidden by skill policy"` and leave all files untouched.
|
|
15
|
+
|
|
16
|
+
## Inputs
|
|
17
|
+
|
|
18
|
+
`$ARGUMENTS` — optional target branch name. Empty = default branch (typically `main`).
|
|
19
|
+
|
|
20
|
+
## Step 1 — Pre-flight
|
|
21
|
+
|
|
22
|
+
Run cleanup in an isolated worktree pinned to the target branch. Never `git stash`, never `git checkout` in the main worktree, never `git fetch` or `git merge` to advance the branch.
|
|
23
|
+
|
|
24
|
+
1. Read `.agentshore/context.json` — repo, owner, learnings.
|
|
25
|
+
2. Read project-level config (`CLAUDE.md`, `AGENTS.md`, `CONTRIBUTING.md`) — conventions.
|
|
26
|
+
3. Record the main project directory: `MAIN_REPO=$(pwd)`.
|
|
27
|
+
4. Resolve the target branch: if `$ARGUMENTS` is set, `TARGET="$ARGUMENTS"`; otherwise `TARGET=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@refs/remotes/origin/@@')` (default `main`).
|
|
28
|
+
5. Compute the worktree path: `CLEANUP_WORKTREE="$MAIN_REPO/.agentshore/worktrees/cleanup-$TARGET"`. Remove any stale worktree: `git worktree remove --force "$CLEANUP_WORKTREE" 2>/dev/null || rm -rf "$CLEANUP_WORKTREE"`.
|
|
29
|
+
6. Create the worktree and switch into it:
|
|
30
|
+
```
|
|
31
|
+
git worktree add --detach "$CLEANUP_WORKTREE" "$TARGET"
|
|
32
|
+
cd "$CLEANUP_WORKTREE"
|
|
33
|
+
```
|
|
34
|
+
Stop with `success: false` if `$TARGET` does not resolve locally.
|
|
35
|
+
|
|
36
|
+
## Step 2 — Detect toolchain
|
|
37
|
+
|
|
38
|
+
Project docs are authoritative. Fall back to manifest inspection. Record `tools_detected` and `tools_skipped`. A repo may match multiple ecosystems; run all that are present.
|
|
39
|
+
|
|
40
|
+
| Ecosystem | Manifest | Manager |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| Python | `pyproject.toml`, `setup.py` | `uv`, `pip` |
|
|
43
|
+
| JS/TS | `package.json` (+`tsconfig.json`) | `npm`/`npx` |
|
|
44
|
+
| Rust | `Cargo.toml` | `cargo` |
|
|
45
|
+
| Go | `go.mod` | `go` |
|
|
46
|
+
| Ruby | `Gemfile` | `bundle` |
|
|
47
|
+
| Java/Kotlin | `pom.xml`, `build.gradle*` | `./mvnw`, `./gradlew` |
|
|
48
|
+
| C# | `*.csproj`, `*.sln` | `dotnet` |
|
|
49
|
+
| Swift | `Package.swift` | `swift` |
|
|
50
|
+
| C/C++ | `CMakeLists.txt`, `Makefile` | `cmake`/`make` |
|
|
51
|
+
| PHP | `composer.json` | `vendor/bin/...` |
|
|
52
|
+
| Elixir | `mix.exs` | `mix` |
|
|
53
|
+
|
|
54
|
+
## Step 3 — Auto-fix pass
|
|
55
|
+
|
|
56
|
+
Run one tool at a time to avoid lockfile / cache contention. Only invoke tools that exist (`command -v <tool>` or `which <tool>`). Record every command executed.
|
|
57
|
+
|
|
58
|
+
**Python:**
|
|
59
|
+
- `command -v ruff` → `uv run ruff check --fix . && uv run ruff format .` (or `ruff` directly if uv absent)
|
|
60
|
+
- If ruff absent: `command -v black` → `black .`; `command -v isort` → `isort .`
|
|
61
|
+
|
|
62
|
+
**JS/TS:**
|
|
63
|
+
- If `package.json` has a `lint` script → `npm run lint -- --fix` (attempt; skip if it exits non-zero due to missing `--fix` support)
|
|
64
|
+
- `command -v prettier` or `prettier` in devDependencies → `npx prettier --write .`
|
|
65
|
+
- `command -v eslint` → `npx eslint --fix .`
|
|
66
|
+
|
|
67
|
+
**Rust:**
|
|
68
|
+
- `cargo fmt`
|
|
69
|
+
- `command -v cargo-clippy` → `cargo clippy --fix --allow-dirty --allow-staged 2>&1`
|
|
70
|
+
|
|
71
|
+
**Go:**
|
|
72
|
+
- `gofmt -w .`
|
|
73
|
+
- `command -v golangci-lint` → `golangci-lint run --fix 2>&1`
|
|
74
|
+
|
|
75
|
+
**Ruby:**
|
|
76
|
+
- `bundle exec rubocop -A 2>&1` (only if Gemfile contains `rubocop`)
|
|
77
|
+
|
|
78
|
+
**Other ecosystems:** record `auto_fix: skipped` — no language-agnostic auto-fixer available.
|
|
79
|
+
|
|
80
|
+
After all fixers run, check `git diff --stat` inside the worktree to determine whether any files were modified.
|
|
81
|
+
|
|
82
|
+
## Step 4 — Re-validate (report-only, no auto-fix)
|
|
83
|
+
|
|
84
|
+
Run the type-checker and test suite for each detected ecosystem. These gates determine `success` but never mutate files.
|
|
85
|
+
|
|
86
|
+
| Ecosystem | Type check | Test suite |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| Python | `uv run mypy src/` (or `mypy src/`) | `uv run pytest` (or `pytest`) |
|
|
89
|
+
| JS/TS | `npm run typecheck` or `npx tsc --noEmit` | `npm test` |
|
|
90
|
+
| Rust | `cargo check` | `cargo test` |
|
|
91
|
+
| Go | `go vet ./...` | `go test ./...` |
|
|
92
|
+
| Ruby | *(none)* | `bundle exec rspec` or `bundle exec rake test` |
|
|
93
|
+
| Other | *(skip)* | *(skip)* |
|
|
94
|
+
|
|
95
|
+
Capture pass/fail, error counts, and first 10 lines of failure output for each tool.
|
|
96
|
+
|
|
97
|
+
## Step 5 — Commit and open PR
|
|
98
|
+
|
|
99
|
+
If Step 3 produced a non-empty diff:
|
|
100
|
+
|
|
101
|
+
1. Create branch `chore/cleanup-$(date +%Y%m%d-%H%M%S)` from the target branch ref:
|
|
102
|
+
```
|
|
103
|
+
git checkout -b chore/cleanup-$(date +%Y%m%d-%H%M%S)
|
|
104
|
+
```
|
|
105
|
+
2. Stage modified files only (never `git add -A` — do not stage untracked files):
|
|
106
|
+
```
|
|
107
|
+
git add -u
|
|
108
|
+
```
|
|
109
|
+
3. Commit:
|
|
110
|
+
```
|
|
111
|
+
git commit -m "chore: automated code-quality cleanup
|
|
112
|
+
|
|
113
|
+
Tools applied: <comma-separated list>
|
|
114
|
+
Files changed: <N>
|
|
115
|
+
Fixes applied: <N lint/format fixes>"
|
|
116
|
+
```
|
|
117
|
+
4. Push and open a PR:
|
|
118
|
+
```
|
|
119
|
+
gh pr create \
|
|
120
|
+
--title "chore: cleanup (<tools>)" \
|
|
121
|
+
--label "agentshore/cleanup" \
|
|
122
|
+
--body "<per-tool diff summary with file counts>"
|
|
123
|
+
```
|
|
124
|
+
Capture the PR number from the output.
|
|
125
|
+
|
|
126
|
+
If `git diff --stat` was empty after Step 3, skip this step entirely. Emit `"pr_created": null`.
|
|
127
|
+
|
|
128
|
+
## Step 6 — File issues for unfixable failures
|
|
129
|
+
|
|
130
|
+
For each type-check or test failure from Step 4, check for an existing open issue before creating:
|
|
131
|
+
```
|
|
132
|
+
gh issue list --search "<summary>" --label "agentshore/cleanup" --state all --json number,title,state
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Skip creation if an open issue already covers the same root problem. Group failures by root cause (e.g., 50 mypy errors from one config gap = one issue). Create using:
|
|
136
|
+
```
|
|
137
|
+
gh issue create \
|
|
138
|
+
--title "Cleanup: <description>" \
|
|
139
|
+
--label "agentshore/cleanup" \
|
|
140
|
+
--body "<Failure type, evidence (file:line), reproduction command, branch>"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Step 7 — Remove worktree
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
cd "$MAIN_REPO"
|
|
147
|
+
git worktree remove --force "$CLEANUP_WORKTREE"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Result
|
|
151
|
+
|
|
152
|
+
```json
|
|
153
|
+
{
|
|
154
|
+
"success": true,
|
|
155
|
+
"artifacts": [
|
|
156
|
+
{"type": "format", "status": "pass", "files_changed": 12},
|
|
157
|
+
{"type": "lint_fix", "status": "pass", "fixes_applied": 47},
|
|
158
|
+
{"type": "typecheck", "status": "pass", "errors": 0},
|
|
159
|
+
{"type": "test", "status": "pass", "passed": 124, "failed": 0}
|
|
160
|
+
],
|
|
161
|
+
"tools_detected": ["ruff", "mypy", "pytest"],
|
|
162
|
+
"tools_skipped": ["typescript", "rust"],
|
|
163
|
+
"pr_created": 215,
|
|
164
|
+
"issues_created": [],
|
|
165
|
+
"issues_existing": [],
|
|
166
|
+
"branch": "main",
|
|
167
|
+
"error": null
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Set `"success": false` only for catastrophic failures: worktree creation failure, push refused after retry, or forbidden-mutation breach. Type-check / test failures keep `"success": true` but populate `"issues_created"`. Always emit the result block.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentshore-code-review
|
|
3
|
+
description: "Action slot 5 — Code Review. Reviews a PR for correctness, safety, test coverage, and code quality, then submits a structured GH review. Creates follow-up issues for non-blocking findings."
|
|
4
|
+
argument-hint: [pr_number]
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
allowed-tools: Read, Bash(gh:*, git:*)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# agentshore-code-review
|
|
10
|
+
|
|
11
|
+
You are a AgentShore skill agent invoked with parameters in `$ARGUMENTS`.
|
|
12
|
+
|
|
13
|
+
## Inputs
|
|
14
|
+
|
|
15
|
+
`$ARGUMENTS` — PR number to review (required).
|
|
16
|
+
|
|
17
|
+
## Step 1 — Pre-flight
|
|
18
|
+
|
|
19
|
+
1. Read `.agentshore/context.json` — coding standards, review criteria, learnings, known pitfalls.
|
|
20
|
+
2. Read project-level config (`CLAUDE.md`, `AGENTS.md`, `CONTRIBUTING.md`) for coding conventions.
|
|
21
|
+
3. `gh pr view $ARGUMENTS --json number,title,body,baseRefName,headRefName,headRefOid,author,labels,isDraft,reviewDecision,statusCheckRollup,additions,deletions,changedFiles`
|
|
22
|
+
4. **Skip** immediately if: draft PR; label `do-not-merge`/`needs-human-review`; open review requesting changes; or `changedFiles == 0`. For zero-diff, fetch `headRefOid` first, then return:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{"success": true, "verdict": "SKIP", "error": "zero-diff PR; no review needed", "head_sha": "<sha>",
|
|
26
|
+
"artifacts": [{"type": "review", "number": $ARGUMENTS, "head_sha": "<sha>", "verdict": "SKIP"}],
|
|
27
|
+
"findings_count": {"blocking": 0, "non_blocking": 0}, "issues_created": [], "issues_existing": []}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
5. Note linked issue (`Closes #N`, `Fixes #N`). Record head SHA. If a prior
|
|
31
|
+
`AGENTSHORE_CODE_REVIEW` comment exists for this SHA, parse its `status:` and
|
|
32
|
+
`blocking_findings:` lines, then return:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{"success": true, "verdict": "SKIP", "error": "already reviewed at <sha>", "head_sha": "<sha>",
|
|
36
|
+
"artifacts": [{"type": "review", "number": $ARGUMENTS, "head_sha": "<sha>", "verdict": "SKIP"}],
|
|
37
|
+
"prior_verdict": "PASS", "prior_findings_count": {"blocking": 0}, "issues_created": [], "issues_existing": []}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Omit `prior_verdict`/`prior_findings_count` if the comment is unparseable.
|
|
41
|
+
|
|
42
|
+
## Step 2 — Hard safety checks (auto-BLOCK on any failure)
|
|
43
|
+
|
|
44
|
+
1. **Diff size** > 2500 lines.
|
|
45
|
+
2. **Credentials** — API keys, tokens, passwords, `.env` additions, `BEGIN PRIVATE KEY`.
|
|
46
|
+
3. **Dangerous patterns** — `unsafe` (Rust); `eval()`/`exec()`/`__import__` (Python); `dangerouslySetInnerHTML`/`eval` (JS/TS); SQL string concatenation; `--no-verify`/`verify=False`.
|
|
47
|
+
4. **New dependencies** — unfamiliar or unvetted packages.
|
|
48
|
+
|
|
49
|
+
## Step 3 — Fetch and analyze the diff
|
|
50
|
+
|
|
51
|
+
`gh pr diff $ARGUMENTS` and `gh pr diff $ARGUMENTS --name-only`. Categorize changes (source/tests/config/docs/deps). Flag files with >200 changed lines for extra scrutiny.
|
|
52
|
+
|
|
53
|
+
## Step 4 — Read changed files in full context
|
|
54
|
+
|
|
55
|
+
For each changed source file, read it in full — understand callers, surrounding patterns, test coverage. For deps: check version pins, vulnerabilities, license.
|
|
56
|
+
|
|
57
|
+
## Step 5 — Spec compliance (before code quality)
|
|
58
|
+
|
|
59
|
+
Verify against the actual diff, not the PR description. Flag: missing requirements, extra unrelated work, misinterpretation of the issue. Any spec failure is blocking.
|
|
60
|
+
|
|
61
|
+
## Step 6 — Code quality review
|
|
62
|
+
|
|
63
|
+
Flag each finding with file + line range + reason:
|
|
64
|
+
|
|
65
|
+
1. **Logic** — does the code do what the linked issue requires?
|
|
66
|
+
2. **Happy-Path Bias** — missing null-checks, unhandled errors, ignored edge cases, empty-collection boundary conditions.
|
|
67
|
+
3. **Naming** — clear and consistent with the codebase.
|
|
68
|
+
4. **Shadow Utilities** — reimplements an existing helper; check `utils/`, `helpers/`, and shared modules first.
|
|
69
|
+
5. **N+1 Trap** — DB queries, API calls, or file reads inside loops.
|
|
70
|
+
6. **Brute-Force Algos** — O(n²) nested loops where a HashMap/set lookup suffices.
|
|
71
|
+
7. **Scope** — PR stays within the linked issue's bounds; no unrelated refactors or features.
|
|
72
|
+
8. **Logic Bloat** — redundant code, overly-verbose patterns, meta-comments restating the next line.
|
|
73
|
+
9. **Type Cowardice** — `Any` (Python) or `any`/`as` casts (TypeScript) bypassing the type system.
|
|
74
|
+
10. **Async/Sync Friction** — blocking calls (`time.sleep`, sync I/O) inside `async` functions.
|
|
75
|
+
11. **Lazy Cloning** — excessive `.clone()`/`.copy()` calls to avoid thinking about ownership.
|
|
76
|
+
12. **Ghost Dependencies** — importing a heavy library for a task covered by stdlib or native ES6+.
|
|
77
|
+
13. **Property Drilling** — props passed through 5+ component layers without Context/State.
|
|
78
|
+
|
|
79
|
+
## Step 7 — Test coverage
|
|
80
|
+
|
|
81
|
+
New behavior must have tests. Edge cases from Steps 5–6 must be covered. Tests must not be tautological (testing mocks, not behavior).
|
|
82
|
+
|
|
83
|
+
## Step 8 — Security
|
|
84
|
+
|
|
85
|
+
Check for: injection, hardcoded secrets, unsafe deserialization, path traversal, improper access control, unvalidated user input, untrusted new dependencies.
|
|
86
|
+
|
|
87
|
+
## Step 9 — Classify findings
|
|
88
|
+
|
|
89
|
+
**Blocking** (must fix before merge): bugs, regressions, security, credential exposure, hard-check failures, spec failures, missing tests for critical paths.
|
|
90
|
+
|
|
91
|
+
**Non-blocking** (should not delay merge): style, naming, optional perf, doc gaps, follow-up refactors.
|
|
92
|
+
|
|
93
|
+
## Step 10 — Submit the review
|
|
94
|
+
|
|
95
|
+
Verdict: **APPROVE** (zero blocking), **REQUEST_CHANGES** (any blocking), **COMMENT** (non-blocking only; use sparingly).
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
gh pr review $ARGUMENTS --<approve|request-changes|comment> --body "<review body>"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Review body must follow this structure:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
AGENTSHORE_CODE_REVIEW
|
|
105
|
+
head_sha: <sha>
|
|
106
|
+
status: PASS|BLOCK
|
|
107
|
+
spec_compliance: PASS|BLOCK
|
|
108
|
+
blocking_findings: <integer>
|
|
109
|
+
non_blocking_findings: <integer>
|
|
110
|
+
|
|
111
|
+
## Summary
|
|
112
|
+
<one-line verdict>
|
|
113
|
+
|
|
114
|
+
## Blocking
|
|
115
|
+
<numbered list, or "None">
|
|
116
|
+
|
|
117
|
+
## Suggestions
|
|
118
|
+
<numbered list, or "None">
|
|
119
|
+
|
|
120
|
+
For each finding: file, line range, description, suggested fix.
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Step 11 — Apply labels (best-effort; never block on failure)
|
|
124
|
+
|
|
125
|
+
`PASS`: add `agentshore/approved`, remove `blocked`. `BLOCK`: add `blocked`, remove `agentshore/approved`.
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
gh pr edit $ARGUMENTS --add-label agentshore/approved 2>/dev/null || true
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Step 12 — Follow-up issues
|
|
132
|
+
|
|
133
|
+
For each non-blocking improvement: `gh issue create --title "Follow-up: <desc>" --body "Identified during review of PR #$ARGUMENTS.\n\n<details>" --label "agentshore/review"`. Reference in review comment.
|
|
134
|
+
|
|
135
|
+
## Step 13 — Validate
|
|
136
|
+
|
|
137
|
+
`gh pr view $ARGUMENTS --json reviews` — confirm review submitted. Confirm follow-up issues created.
|
|
138
|
+
|
|
139
|
+
## Result
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"success": true,
|
|
144
|
+
"artifacts": [{"type": "review", "pr": 42, "verdict": "APPROVE", "head_sha": "abc123"}],
|
|
145
|
+
"issues_created": [{"number": 55, "title": "Follow-up: add input validation", "url": "https://github.com/owner/repo/issues/55"}],
|
|
146
|
+
"findings_count": {"blocking": 0, "non_blocking": 2},
|
|
147
|
+
"spec_compliance": "PASS",
|
|
148
|
+
"hard_checks": {"diff_size": "pass", "credentials": "pass", "dangerous_patterns": "pass", "dependencies": "pass"},
|
|
149
|
+
"error": null
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Valid `verdict` values: `"APPROVE"`, `"REQUEST_CHANGES"`, `"COMMENT"`, `"SKIP"`. On skip: `"success": true`, `"error"` = reason. On irrecoverable failure: `"success": false`, `"error"` = description. Never omit the result block.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentshore-design-audit
|
|
3
|
+
description: "Action slot 9 — Design Audit. Reviews project design files, specs, PRDs, ADRs, and related docs against source/tests/GitHub/beads, then creates or links GitHub issues and beads tasks for every concrete unmet requirement."
|
|
4
|
+
argument-hint: []
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
allowed-tools: Read, Bash(bd:*, gh:*, git:*)
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# agentshore-design-audit
|
|
10
|
+
|
|
11
|
+
You are a AgentShore skill agent. AgentShore invoked you with parameters in `$ARGUMENTS`.
|
|
12
|
+
|
|
13
|
+
This play is a focused design/spec gap audit. Do not implement code. Your job is to find concrete
|
|
14
|
+
requirements from project design files that are not implemented and not already represented as open
|
|
15
|
+
work, then create trackable GitHub issues and beads tasks for those gaps.
|
|
16
|
+
|
|
17
|
+
## Inputs
|
|
18
|
+
|
|
19
|
+
- Play context: `.agentshore/context.json` or the play-specific context path named in the prompt.
|
|
20
|
+
- Design/spec sources: seed file from context, `docs/PRD.md`, `docs/design/**/*.md`,
|
|
21
|
+
`docs/specs/**/*.md`, `docs/**/*.md`, `ADR*.md`, `AGENTS.md`, `CLAUDE.md`, `README.md`, and other
|
|
22
|
+
repo-local planning docs discovered by `git ls-files`.
|
|
23
|
+
- GitHub issues: all open issues plus recently closed issues.
|
|
24
|
+
- Beads graph: `bd list --all --json --limit 0`.
|
|
25
|
+
- Source/tests/docs evidence from the repository.
|
|
26
|
+
|
|
27
|
+
## Success Condition
|
|
28
|
+
|
|
29
|
+
Before returning `"success": true`, every concrete requirement you audited must be one of:
|
|
30
|
+
|
|
31
|
+
- `verified_done`: source/tests/docs evidence shows the requirement exists.
|
|
32
|
+
- `represented_open`: an open GitHub issue and open beads task already track the work.
|
|
33
|
+
- `gap_filled`: this play created or linked an open GitHub issue and open beads task.
|
|
34
|
+
|
|
35
|
+
Closed GitHub issues, closed beads tasks, or PR titles are not proof. If implementation evidence is
|
|
36
|
+
missing, treat the requirement as unmet and make open work for it.
|
|
37
|
+
|
|
38
|
+
If any concrete requirement remains without implementation evidence and without open tracking, return
|
|
39
|
+
`"success": false`.
|
|
40
|
+
|
|
41
|
+
## Workflow
|
|
42
|
+
|
|
43
|
+
1. Read the play context first and verify the GitHub identity:
|
|
44
|
+
```
|
|
45
|
+
gh api user --jq .login
|
|
46
|
+
```
|
|
47
|
+
If context includes `assigned_github_identity`, compare after lowercasing/casefolding both
|
|
48
|
+
strings.
|
|
49
|
+
2. Read design/spec files and build a requirement inventory. Each item needs a short title, source
|
|
50
|
+
file/heading, expected behavior, and acceptance criteria.
|
|
51
|
+
3. Read relevant source/tests/docs to verify implementation. Prefer concrete evidence paths over
|
|
52
|
+
assumptions.
|
|
53
|
+
4. Fetch GitHub issues:
|
|
54
|
+
```
|
|
55
|
+
gh issue list --state open --json number,title,body,labels --limit 200
|
|
56
|
+
gh issue list --state closed --json number,title,body,labels --limit 100
|
|
57
|
+
```
|
|
58
|
+
5. Read the beads graph:
|
|
59
|
+
```
|
|
60
|
+
bd list --all --json --limit 0
|
|
61
|
+
```
|
|
62
|
+
6. For each unmet requirement:
|
|
63
|
+
- If an open GitHub issue and open beads task already track it, mark `represented_open`.
|
|
64
|
+
- If only an open GitHub issue exists, create or link a beads task with `external_ref="gh-<N>"`.
|
|
65
|
+
- If no open GitHub issue exists, create one with source references and acceptance criteria.
|
|
66
|
+
- If a related issue is closed but implementation evidence is missing, create a follow-up issue.
|
|
67
|
+
7. Link each new or existing gap issue into beads:
|
|
68
|
+
```
|
|
69
|
+
bd create task "<issue title>" --description "Closes gh-<issue_number>" --external-ref "gh-<issue_number>"
|
|
70
|
+
bd link <task-id> <story-id>
|
|
71
|
+
```
|
|
72
|
+
Use the best matching existing story. If no story fits, create a concise story and link it to the
|
|
73
|
+
relevant epic. Do not duplicate tasks already linked by `external_ref`.
|
|
74
|
+
8. Re-run `bd list --all --json --limit 0` and verify every gap issue has a matching open beads task.
|
|
75
|
+
|
|
76
|
+
## Issue Requirements
|
|
77
|
+
|
|
78
|
+
New GitHub issues must include:
|
|
79
|
+
|
|
80
|
+
- Source file and heading for the requirement.
|
|
81
|
+
- Why current evidence is insufficient.
|
|
82
|
+
- Acceptance criteria that an implementer can test.
|
|
83
|
+
- Any likely source/test areas to inspect.
|
|
84
|
+
|
|
85
|
+
Use labels conservatively: `enhancement` by default, plus existing project labels only when clearly
|
|
86
|
+
appropriate.
|
|
87
|
+
|
|
88
|
+
## Forbidden Mutations
|
|
89
|
+
|
|
90
|
+
- Do not edit product code, tests, docs, or CI files.
|
|
91
|
+
- Do not close or reopen GitHub issues.
|
|
92
|
+
- Do not delete beads nodes.
|
|
93
|
+
- Do not create duplicate issues for already-open tracked work.
|
|
94
|
+
|
|
95
|
+
## Result
|
|
96
|
+
|
|
97
|
+
Output a fenced JSON block exactly like this:
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"success": true,
|
|
102
|
+
"artifacts": [
|
|
103
|
+
{
|
|
104
|
+
"type": "design_audit",
|
|
105
|
+
"requirements_scanned": 18,
|
|
106
|
+
"gaps_found": 3,
|
|
107
|
+
"issues_created": 2,
|
|
108
|
+
"issues_linked": 1,
|
|
109
|
+
"unresolved_gaps": 0,
|
|
110
|
+
"unknown_requirements": 0,
|
|
111
|
+
"gap_issue_numbers": [212, 213, 214],
|
|
112
|
+
"requirement_samples": [
|
|
113
|
+
{"title": "Render preview cancellation", "status": "gap_filled", "issue": 212},
|
|
114
|
+
{"title": "Status command JSON output", "status": "verified_done", "evidence": "src/... + tests/..."}
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"issues_created": [212, 213],
|
|
119
|
+
"issues_linked": [214],
|
|
120
|
+
"tasks_linked": ["tlc-abc.1", "tlc-def.2"],
|
|
121
|
+
"error": null
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
If a GitHub or beads mutation fails, set `"success": false`, include the failed requirement in
|
|
126
|
+
`"error"`, and keep any successfully created issue/task numbers in the result.
|