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.
Files changed (696) hide show
  1. agentshore-0.3.2/.agents/skills/agentshore-calibrate-alignment/SKILL.md +181 -0
  2. agentshore-0.3.2/.agents/skills/agentshore-cleanup/SKILL.md +171 -0
  3. agentshore-0.3.2/.agents/skills/agentshore-code-review/SKILL.md +153 -0
  4. agentshore-0.3.2/.agents/skills/agentshore-design-audit/SKILL.md +126 -0
  5. agentshore-0.3.2/.agents/skills/agentshore-groom-backlog/SKILL.md +214 -0
  6. agentshore-0.3.2/.agents/skills/agentshore-issue-pickup/SKILL.md +216 -0
  7. agentshore-0.3.2/.agents/skills/agentshore-merge-pr/SKILL.md +200 -0
  8. agentshore-0.3.2/.agents/skills/agentshore-refine-tasks/SKILL.md +170 -0
  9. agentshore-0.3.2/.agents/skills/agentshore-run-qa/SKILL.md +164 -0
  10. agentshore-0.3.2/.agents/skills/agentshore-seed-project/SKILL.md +213 -0
  11. agentshore-0.3.2/.agents/skills/agentshore-systematic-debugging/SKILL.md +120 -0
  12. agentshore-0.3.2/.agents/skills/agentshore-unblock-pr/SKILL.md +193 -0
  13. agentshore-0.3.2/.agents/skills/agentshore-write-plan/SKILL.md +159 -0
  14. agentshore-0.3.2/.claude/skills/monitor_run/SKILL.md +232 -0
  15. agentshore-0.3.2/.claude/skills/monitor_run/progress.py +161 -0
  16. agentshore-0.3.2/.claude/skills/monitor_run/snapshot.py +149 -0
  17. agentshore-0.3.2/.claude/skills/prune/SKILL.md +192 -0
  18. agentshore-0.3.2/.editorconfig +27 -0
  19. agentshore-0.3.2/.github/CODEOWNERS +5 -0
  20. agentshore-0.3.2/.github/ISSUE_TEMPLATE/bug_report.yml +49 -0
  21. agentshore-0.3.2/.github/ISSUE_TEMPLATE/config.yml +1 -0
  22. agentshore-0.3.2/.github/ISSUE_TEMPLATE/feature_request.yml +35 -0
  23. agentshore-0.3.2/.github/contributors.json +3 -0
  24. agentshore-0.3.2/.github/dependabot.yml +51 -0
  25. agentshore-0.3.2/.github/pull_request_template.md +15 -0
  26. agentshore-0.3.2/.github/workflows/approve-contributor.yml +93 -0
  27. agentshore-0.3.2/.github/workflows/ci.yml +151 -0
  28. agentshore-0.3.2/.github/workflows/pr-gate.yml +130 -0
  29. agentshore-0.3.2/.github/workflows/release-macos.yml +77 -0
  30. agentshore-0.3.2/.github/workflows/release-pypi.yml +70 -0
  31. agentshore-0.3.2/.github/workflows/release-windows.yml +58 -0
  32. agentshore-0.3.2/.gitignore +240 -0
  33. agentshore-0.3.2/.npmrc +8 -0
  34. agentshore-0.3.2/.nvmrc +1 -0
  35. agentshore-0.3.2/.pre-commit-config.yaml +36 -0
  36. agentshore-0.3.2/AGENTS.md +98 -0
  37. agentshore-0.3.2/CHANGELOG.md +5 -0
  38. agentshore-0.3.2/CLAUDE.md +126 -0
  39. agentshore-0.3.2/CODE_OF_CONDUCT.md +85 -0
  40. agentshore-0.3.2/CONTRIBUTING.md +120 -0
  41. agentshore-0.3.2/LICENSE +21 -0
  42. agentshore-0.3.2/Makefile +8 -0
  43. agentshore-0.3.2/PKG-INFO +125 -0
  44. agentshore-0.3.2/README.md +85 -0
  45. agentshore-0.3.2/SECURITY.md +24 -0
  46. agentshore-0.3.2/docs/PRD.md +111 -0
  47. agentshore-0.3.2/docs/design/HLD.md +114 -0
  48. agentshore-0.3.2/docs/design/V1_CONTRACT.md +221 -0
  49. agentshore-0.3.2/docs/design/agents/DESIGN.md +104 -0
  50. agentshore-0.3.2/docs/design/build-pipeline-unification.md +190 -0
  51. agentshore-0.3.2/docs/design/config/DESIGN.md +120 -0
  52. agentshore-0.3.2/docs/design/core/DESIGN.md +92 -0
  53. agentshore-0.3.2/docs/design/dashboard/DESIGN.md +91 -0
  54. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/GRID_DARK_TILE_PALETTE.html +225 -0
  55. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/GRID_FURNITURE_MOCKUPS.html +2483 -0
  56. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/GRID_LIGHT_TILE_PALETTE.html +232 -0
  57. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/GRID_OFFICE_MOCKUPS.html +651 -0
  58. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/GRID_TOP_DOWN_FLOOR_PLAN.html +658 -0
  59. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/grid-agent-concept-dark.png +0 -0
  60. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/grid-agent-concept-light.png +0 -0
  61. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/grid-furniture-mockups/entry-turnstiles-preview.png +0 -0
  62. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/grid-furniture-mockups/science-lab-preview.png +0 -0
  63. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/grid-top-down-floor-plan.png +0 -0
  64. agentshore-0.3.2/docs/design/dashboard/grid-office-mockups/office-chrome-rotated-wall.png +0 -0
  65. agentshore-0.3.2/docs/design/data/DESIGN.md +61 -0
  66. agentshore-0.3.2/docs/design/desktop/DESIGN.md +273 -0
  67. agentshore-0.3.2/docs/design/desktop/ONBOARDING_STARTUP_MOCKUPS.html +1270 -0
  68. agentshore-0.3.2/docs/design/errors/DESIGN.md +80 -0
  69. agentshore-0.3.2/docs/design/ipc/DESIGN.md +109 -0
  70. agentshore-0.3.2/docs/design/ipc-decouple-coalesce.md +55 -0
  71. agentshore-0.3.2/docs/design/logging/DESIGN.md +18 -0
  72. agentshore-0.3.2/docs/design/metrics/DESIGN.md +27 -0
  73. agentshore-0.3.2/docs/design/plays/DESIGN.md +70 -0
  74. agentshore-0.3.2/docs/design/reports/DESIGN.md +32 -0
  75. agentshore-0.3.2/docs/design/rl/DESIGN.md +145 -0
  76. agentshore-0.3.2/docs/design/style/grid_dark_style_guide.html +134 -0
  77. agentshore-0.3.2/docs/design/style/grid_light_style_guide.html +134 -0
  78. agentshore-0.3.2/docs/design/ui/DESIGN.md +74 -0
  79. agentshore-0.3.2/docs/getting-started-cli.md +98 -0
  80. agentshore-0.3.2/docs/getting-started-desktop.md +74 -0
  81. agentshore-0.3.2/docs/identity.md +191 -0
  82. agentshore-0.3.2/docs/release/signing.md +206 -0
  83. agentshore-0.3.2/package-lock.json +2631 -0
  84. agentshore-0.3.2/package.json +13 -0
  85. agentshore-0.3.2/packaging/desktop/Distribution.xml.in +71 -0
  86. agentshore-0.3.2/packaging/desktop/README.md +129 -0
  87. agentshore-0.3.2/packaging/desktop/build_bd_sidecar.py +305 -0
  88. agentshore-0.3.2/packaging/desktop/installer-resources/EULA.rtf +19 -0
  89. agentshore-0.3.2/packaging/desktop/installer-resources/build-eula-rtf.py +92 -0
  90. agentshore-0.3.2/packaging/desktop/installer-resources/build-eula-rtf.sh +20 -0
  91. agentshore-0.3.2/packaging/desktop/installer-scripts/cli-postinstall +74 -0
  92. agentshore-0.3.2/packaging/desktop/installer-scripts/postinstall +200 -0
  93. agentshore-0.3.2/packaging/desktop/installer-scripts/timelapse-postinstall +52 -0
  94. agentshore-0.3.2/packaging/desktop/windows/AgentShore.iss.in +199 -0
  95. agentshore-0.3.2/packaging/desktop/windows/tauri.windows-installer.conf.json +8 -0
  96. agentshore-0.3.2/pyproject.toml +185 -0
  97. agentshore-0.3.2/rust-toolchain.toml +8 -0
  98. agentshore-0.3.2/scripts/__init__.py +0 -0
  99. agentshore-0.3.2/scripts/buildkit/__init__.py +13 -0
  100. agentshore-0.3.2/scripts/buildkit/__main__.py +40 -0
  101. agentshore-0.3.2/scripts/buildkit/_proc.py +98 -0
  102. agentshore-0.3.2/scripts/buildkit/_win_signing.ps1 +147 -0
  103. agentshore-0.3.2/scripts/buildkit/context.py +73 -0
  104. agentshore-0.3.2/scripts/buildkit/macos.py +417 -0
  105. agentshore-0.3.2/scripts/buildkit/phases.py +59 -0
  106. agentshore-0.3.2/scripts/buildkit/verify.py +140 -0
  107. agentshore-0.3.2/scripts/buildkit/version.py +154 -0
  108. agentshore-0.3.2/scripts/buildkit/windows.py +374 -0
  109. agentshore-0.3.2/scripts/export_bootstrap_policy.py +130 -0
  110. agentshore-0.3.2/scripts/generate_update_manifest.py +158 -0
  111. agentshore-0.3.2/scripts/install-agentshore-cli.sh +128 -0
  112. agentshore-0.3.2/scripts/install-agentshore-venv.sh +176 -0
  113. agentshore-0.3.2/scripts/install-agentshore.ps1 +130 -0
  114. agentshore-0.3.2/scripts/install-timelapse.sh +65 -0
  115. agentshore-0.3.2/src/agentshore/__init__.py +10 -0
  116. agentshore-0.3.2/src/agentshore/__main__.py +7 -0
  117. agentshore-0.3.2/src/agentshore/agents/__init__.py +14 -0
  118. agentshore-0.3.2/src/agentshore/agents/_jsonl.py +117 -0
  119. agentshore-0.3.2/src/agentshore/agents/_selection.py +247 -0
  120. agentshore-0.3.2/src/agentshore/agents/auth_probe.py +241 -0
  121. agentshore-0.3.2/src/agentshore/agents/capabilities.py +55 -0
  122. agentshore-0.3.2/src/agentshore/agents/circuit_breaker.py +116 -0
  123. agentshore-0.3.2/src/agentshore/agents/cli_agent.py +1763 -0
  124. agentshore-0.3.2/src/agentshore/agents/cli_grok.py +215 -0
  125. agentshore-0.3.2/src/agentshore/agents/context_writer.py +41 -0
  126. agentshore-0.3.2/src/agentshore/agents/costs.py +45 -0
  127. agentshore-0.3.2/src/agentshore/agents/git_auth_probe.py +293 -0
  128. agentshore-0.3.2/src/agentshore/agents/handle.py +285 -0
  129. agentshore-0.3.2/src/agentshore/agents/health.py +158 -0
  130. agentshore-0.3.2/src/agentshore/agents/identity.py +1009 -0
  131. agentshore-0.3.2/src/agentshore/agents/manager.py +627 -0
  132. agentshore-0.3.2/src/agentshore/agents/model_catalog.py +222 -0
  133. agentshore-0.3.2/src/agentshore/agents/model_tiers.py +91 -0
  134. agentshore-0.3.2/src/agentshore/agents/pricing.py +88 -0
  135. agentshore-0.3.2/src/agentshore/agents/registry.py +43 -0
  136. agentshore-0.3.2/src/agentshore/agents/worktree/__init__.py +96 -0
  137. agentshore-0.3.2/src/agentshore/agents/worktree/allocator.py +842 -0
  138. agentshore-0.3.2/src/agentshore/agents/worktree/manager.py +815 -0
  139. agentshore-0.3.2/src/agentshore/agents/worktree/reaper.py +417 -0
  140. agentshore-0.3.2/src/agentshore/agents/worktree/registry.py +158 -0
  141. agentshore-0.3.2/src/agentshore/agents/worktree/rekey.py +214 -0
  142. agentshore-0.3.2/src/agentshore/archive.py +136 -0
  143. agentshore-0.3.2/src/agentshore/availability.py +172 -0
  144. agentshore-0.3.2/src/agentshore/beads/__init__.py +769 -0
  145. agentshore-0.3.2/src/agentshore/beads/downloader.py +286 -0
  146. agentshore-0.3.2/src/agentshore/beads/setup.py +195 -0
  147. agentshore-0.3.2/src/agentshore/budget.py +233 -0
  148. agentshore-0.3.2/src/agentshore/cli/__init__.py +47 -0
  149. agentshore-0.3.2/src/agentshore/cli/agent_select.py +508 -0
  150. agentshore-0.3.2/src/agentshore/cli/caffeinate.py +53 -0
  151. agentshore-0.3.2/src/agentshore/cli/commands/__init__.py +3 -0
  152. agentshore-0.3.2/src/agentshore/cli/commands/add_budget.py +118 -0
  153. agentshore-0.3.2/src/agentshore/cli/commands/dashboard.py +137 -0
  154. agentshore-0.3.2/src/agentshore/cli/commands/identity.py +85 -0
  155. agentshore-0.3.2/src/agentshore/cli/commands/init.py +359 -0
  156. agentshore-0.3.2/src/agentshore/cli/commands/reload_config.py +43 -0
  157. agentshore-0.3.2/src/agentshore/cli/commands/start.py +373 -0
  158. agentshore-0.3.2/src/agentshore/cli/commands/stop.py +155 -0
  159. agentshore-0.3.2/src/agentshore/cli/commands/trusted_ids.py +198 -0
  160. agentshore-0.3.2/src/agentshore/cli/constants.py +36 -0
  161. agentshore-0.3.2/src/agentshore/cli/helpers.py +280 -0
  162. agentshore-0.3.2/src/agentshore/cli/identity_helpers.py +167 -0
  163. agentshore-0.3.2/src/agentshore/cli/runtime.py +750 -0
  164. agentshore-0.3.2/src/agentshore/cli_helpers.py +259 -0
  165. agentshore-0.3.2/src/agentshore/command.py +382 -0
  166. agentshore-0.3.2/src/agentshore/config/__init__.py +387 -0
  167. agentshore-0.3.2/src/agentshore/config/_parsers.py +1148 -0
  168. agentshore-0.3.2/src/agentshore/config/budget_writer.py +62 -0
  169. agentshore-0.3.2/src/agentshore/config/coerce.py +15 -0
  170. agentshore-0.3.2/src/agentshore/config/models.py +598 -0
  171. agentshore-0.3.2/src/agentshore/config/yaml_io.py +113 -0
  172. agentshore-0.3.2/src/agentshore/core/__init__.py +15 -0
  173. agentshore-0.3.2/src/agentshore/core/base.py +819 -0
  174. agentshore-0.3.2/src/agentshore/core/branch_sync.py +220 -0
  175. agentshore-0.3.2/src/agentshore/core/context.py +56 -0
  176. agentshore-0.3.2/src/agentshore/core/experience_recorder.py +244 -0
  177. agentshore-0.3.2/src/agentshore/core/git_safety.py +562 -0
  178. agentshore-0.3.2/src/agentshore/core/github_syncer.py +143 -0
  179. agentshore-0.3.2/src/agentshore/core/helpers.py +239 -0
  180. agentshore-0.3.2/src/agentshore/core/main_repo_guard.py +53 -0
  181. agentshore-0.3.2/src/agentshore/core/mixins/__init__.py +10 -0
  182. agentshore-0.3.2/src/agentshore/core/mixins/completion.py +1595 -0
  183. agentshore-0.3.2/src/agentshore/core/mixins/dispatch.py +902 -0
  184. agentshore-0.3.2/src/agentshore/core/mixins/drain.py +724 -0
  185. agentshore-0.3.2/src/agentshore/core/mixins/lifecycle.py +302 -0
  186. agentshore-0.3.2/src/agentshore/core/mixins/loop.py +1262 -0
  187. agentshore-0.3.2/src/agentshore/core/mixins/snapshots.py +580 -0
  188. agentshore-0.3.2/src/agentshore/core/mixins/state.py +614 -0
  189. agentshore-0.3.2/src/agentshore/core/orchestrator.py +484 -0
  190. agentshore-0.3.2/src/agentshore/core/override_queue.py +61 -0
  191. agentshore-0.3.2/src/agentshore/core/phases.py +1202 -0
  192. agentshore-0.3.2/src/agentshore/core/progress_monitor.py +76 -0
  193. agentshore-0.3.2/src/agentshore/core/recovery_tracker.py +77 -0
  194. agentshore-0.3.2/src/agentshore/core/session_runtime.py +169 -0
  195. agentshore-0.3.2/src/agentshore/core/tick_action.py +100 -0
  196. agentshore-0.3.2/src/agentshore/core/trunk_artifacts.py +230 -0
  197. agentshore-0.3.2/src/agentshore/core/velocity_tracker.py +122 -0
  198. agentshore-0.3.2/src/agentshore/core/wedge_signals.py +419 -0
  199. agentshore-0.3.2/src/agentshore/dashboard/__init__.py +7 -0
  200. agentshore-0.3.2/src/agentshore/dashboard/bridge.py +645 -0
  201. agentshore-0.3.2/src/agentshore/dashboard/lifecycle.py +78 -0
  202. agentshore-0.3.2/src/agentshore/dashboard/static/assets/claude-large-humanoid-BaLULVPd.png +0 -0
  203. agentshore-0.3.2/src/agentshore/dashboard/static/assets/claude-medium-humanoid-DbrJlRVD.png +0 -0
  204. agentshore-0.3.2/src/agentshore/dashboard/static/assets/claude-small-ball-D2RNLllT.png +0 -0
  205. agentshore-0.3.2/src/agentshore/dashboard/static/assets/codex-large-humanoid-xUW_cD7j.png +0 -0
  206. agentshore-0.3.2/src/agentshore/dashboard/static/assets/codex-medium-humanoid-DPb95Glt.png +0 -0
  207. agentshore-0.3.2/src/agentshore/dashboard/static/assets/codex-small-ball-De43mzci.png +0 -0
  208. agentshore-0.3.2/src/agentshore/dashboard/static/assets/gemini-large-humanoid-C58wuHUB.png +0 -0
  209. agentshore-0.3.2/src/agentshore/dashboard/static/assets/gemini-medium-humanoid-BMWHKEBk.png +0 -0
  210. agentshore-0.3.2/src/agentshore/dashboard/static/assets/gemini-small-ball-BPV5H2_p.png +0 -0
  211. agentshore-0.3.2/src/agentshore/dashboard/static/assets/grok-large-humanoid-CXhPsrU_.png +0 -0
  212. agentshore-0.3.2/src/agentshore/dashboard/static/assets/grok-medium-humanoid-B4bq4AQ8.png +0 -0
  213. agentshore-0.3.2/src/agentshore/dashboard/static/assets/grok-small-ball-nhsQ2q79.png +0 -0
  214. agentshore-0.3.2/src/agentshore/dashboard/static/assets/index-B-T4jPYV.css +1 -0
  215. agentshore-0.3.2/src/agentshore/dashboard/static/assets/index-S2Ik8eSY.js +9 -0
  216. agentshore-0.3.2/src/agentshore/dashboard/static/index.html +13 -0
  217. agentshore-0.3.2/src/agentshore/data/__init__.py +41 -0
  218. agentshore-0.3.2/src/agentshore/data/bootstrap_policy.pt +0 -0
  219. agentshore-0.3.2/src/agentshore/data/corruption_evidence.py +235 -0
  220. agentshore-0.3.2/src/agentshore/data/integrity.py +460 -0
  221. agentshore-0.3.2/src/agentshore/data/migrations/__init__.py +79 -0
  222. agentshore-0.3.2/src/agentshore/data/models.py +353 -0
  223. agentshore-0.3.2/src/agentshore/data/schema.sql +364 -0
  224. agentshore-0.3.2/src/agentshore/data/store/__init__.py +87 -0
  225. agentshore-0.3.2/src/agentshore/data/store/base.py +81 -0
  226. agentshore-0.3.2/src/agentshore/data/store/core.py +381 -0
  227. agentshore-0.3.2/src/agentshore/data/store/helpers.py +220 -0
  228. agentshore-0.3.2/src/agentshore/data/store/mixins/__init__.py +1 -0
  229. agentshore-0.3.2/src/agentshore/data/store/mixins/agents.py +135 -0
  230. agentshore-0.3.2/src/agentshore/data/store/mixins/archive.py +61 -0
  231. agentshore-0.3.2/src/agentshore/data/store/mixins/branch_activity.py +63 -0
  232. agentshore-0.3.2/src/agentshore/data/store/mixins/external_mutations.py +111 -0
  233. agentshore-0.3.2/src/agentshore/data/store/mixins/feedback.py +51 -0
  234. agentshore-0.3.2/src/agentshore/data/store/mixins/issues.py +264 -0
  235. agentshore-0.3.2/src/agentshore/data/store/mixins/learnings.py +84 -0
  236. agentshore-0.3.2/src/agentshore/data/store/mixins/plays.py +265 -0
  237. agentshore-0.3.2/src/agentshore/data/store/mixins/pull_requests.py +306 -0
  238. agentshore-0.3.2/src/agentshore/data/store/mixins/review_patterns.py +111 -0
  239. agentshore-0.3.2/src/agentshore/data/store/mixins/reviews.py +151 -0
  240. agentshore-0.3.2/src/agentshore/data/store/mixins/rl.py +129 -0
  241. agentshore-0.3.2/src/agentshore/data/store/mixins/scope.py +40 -0
  242. agentshore-0.3.2/src/agentshore/data/store/mixins/sessions.py +126 -0
  243. agentshore-0.3.2/src/agentshore/data/store/mixins/trajectory.py +60 -0
  244. agentshore-0.3.2/src/agentshore/data/store/mixins/work_claims.py +458 -0
  245. agentshore-0.3.2/src/agentshore/data/store/mixins/worktrees.py +366 -0
  246. agentshore-0.3.2/src/agentshore/data/store/rows.py +409 -0
  247. agentshore-0.3.2/src/agentshore/environment.py +17 -0
  248. agentshore-0.3.2/src/agentshore/errors.py +308 -0
  249. agentshore-0.3.2/src/agentshore/github/__init__.py +7 -0
  250. agentshore-0.3.2/src/agentshore/github/adapter.py +695 -0
  251. agentshore-0.3.2/src/agentshore/github/labels.py +86 -0
  252. agentshore-0.3.2/src/agentshore/github/pr_links.py +153 -0
  253. agentshore-0.3.2/src/agentshore/github/trust.py +103 -0
  254. agentshore-0.3.2/src/agentshore/identity_names.py +110 -0
  255. agentshore-0.3.2/src/agentshore/identity_wizard/__init__.py +30 -0
  256. agentshore-0.3.2/src/agentshore/identity_wizard/gh_accounts.py +87 -0
  257. agentshore-0.3.2/src/agentshore/identity_wizard/keychain.py +70 -0
  258. agentshore-0.3.2/src/agentshore/identity_wizard/report.py +204 -0
  259. agentshore-0.3.2/src/agentshore/identity_wizard/wizard.py +626 -0
  260. agentshore-0.3.2/src/agentshore/identity_wizard/yaml_patch.py +213 -0
  261. agentshore-0.3.2/src/agentshore/ipc/__init__.py +9 -0
  262. agentshore-0.3.2/src/agentshore/ipc/commands.py +114 -0
  263. agentshore-0.3.2/src/agentshore/ipc/provider.py +186 -0
  264. agentshore-0.3.2/src/agentshore/ipc/serializer.py +528 -0
  265. agentshore-0.3.2/src/agentshore/ipc/server.py +296 -0
  266. agentshore-0.3.2/src/agentshore/ipc/state_writer.py +255 -0
  267. agentshore-0.3.2/src/agentshore/ipc/wire.py +49 -0
  268. agentshore-0.3.2/src/agentshore/keyring_child.py +131 -0
  269. agentshore-0.3.2/src/agentshore/learnings.py +152 -0
  270. agentshore-0.3.2/src/agentshore/logging.py +136 -0
  271. agentshore-0.3.2/src/agentshore/paths.py +53 -0
  272. agentshore-0.3.2/src/agentshore/platform_compat.py +38 -0
  273. agentshore-0.3.2/src/agentshore/play_pacing.py +7 -0
  274. agentshore-0.3.2/src/agentshore/play_rules.py +80 -0
  275. agentshore-0.3.2/src/agentshore/plays/__init__.py +10 -0
  276. agentshore-0.3.2/src/agentshore/plays/_publish_reconciler.py +286 -0
  277. agentshore-0.3.2/src/agentshore/plays/base.py +146 -0
  278. agentshore-0.3.2/src/agentshore/plays/candidates.py +1466 -0
  279. agentshore-0.3.2/src/agentshore/plays/dispatch.py +464 -0
  280. agentshore-0.3.2/src/agentshore/plays/executor.py +1390 -0
  281. agentshore-0.3.2/src/agentshore/plays/internal/__init__.py +3 -0
  282. agentshore-0.3.2/src/agentshore/plays/internal/base.py +62 -0
  283. agentshore-0.3.2/src/agentshore/plays/internal/end_agent.py +116 -0
  284. agentshore-0.3.2/src/agentshore/plays/internal/end_session.py +54 -0
  285. agentshore-0.3.2/src/agentshore/plays/internal/instantiate_agent.py +225 -0
  286. agentshore-0.3.2/src/agentshore/plays/internal/reserved_action.py +49 -0
  287. agentshore-0.3.2/src/agentshore/plays/internal/take_break.py +184 -0
  288. agentshore-0.3.2/src/agentshore/plays/override.py +49 -0
  289. agentshore-0.3.2/src/agentshore/plays/registry.py +140 -0
  290. agentshore-0.3.2/src/agentshore/plays/resolver.py +707 -0
  291. agentshore-0.3.2/src/agentshore/plays/scope.py +80 -0
  292. agentshore-0.3.2/src/agentshore/plays/selector.py +54 -0
  293. agentshore-0.3.2/src/agentshore/plays/skill_backed/__init__.py +7 -0
  294. agentshore-0.3.2/src/agentshore/plays/skill_backed/_merge_reconcile.py +149 -0
  295. agentshore-0.3.2/src/agentshore/plays/skill_backed/base.py +619 -0
  296. agentshore-0.3.2/src/agentshore/plays/skill_backed/calibrate_alignment.py +45 -0
  297. agentshore-0.3.2/src/agentshore/plays/skill_backed/cleanup.py +45 -0
  298. agentshore-0.3.2/src/agentshore/plays/skill_backed/code_review.py +238 -0
  299. agentshore-0.3.2/src/agentshore/plays/skill_backed/design_audit.py +140 -0
  300. agentshore-0.3.2/src/agentshore/plays/skill_backed/gates.py +339 -0
  301. agentshore-0.3.2/src/agentshore/plays/skill_backed/groom_backlog.py +119 -0
  302. agentshore-0.3.2/src/agentshore/plays/skill_backed/issue_pickup.py +237 -0
  303. agentshore-0.3.2/src/agentshore/plays/skill_backed/merge_pr.py +256 -0
  304. agentshore-0.3.2/src/agentshore/plays/skill_backed/prune.py +57 -0
  305. agentshore-0.3.2/src/agentshore/plays/skill_backed/reconcile_state.py +83 -0
  306. agentshore-0.3.2/src/agentshore/plays/skill_backed/refine_tasks.py +60 -0
  307. agentshore-0.3.2/src/agentshore/plays/skill_backed/run_qa.py +41 -0
  308. agentshore-0.3.2/src/agentshore/plays/skill_backed/seed_project.py +196 -0
  309. agentshore-0.3.2/src/agentshore/plays/skill_backed/systematic_debugging.py +32 -0
  310. agentshore-0.3.2/src/agentshore/plays/skill_backed/unblock_pr.py +165 -0
  311. agentshore-0.3.2/src/agentshore/plays/skill_backed/write_plan.py +33 -0
  312. agentshore-0.3.2/src/agentshore/power.py +246 -0
  313. agentshore-0.3.2/src/agentshore/pr_state.py +123 -0
  314. agentshore-0.3.2/src/agentshore/reports/__init__.py +7 -0
  315. agentshore-0.3.2/src/agentshore/reports/_aggregations.py +940 -0
  316. agentshore-0.3.2/src/agentshore/reports/_loop_incidents.py +142 -0
  317. agentshore-0.3.2/src/agentshore/reports/_repo_url.py +66 -0
  318. agentshore-0.3.2/src/agentshore/reports/collector.py +279 -0
  319. agentshore-0.3.2/src/agentshore/reports/generator.py +159 -0
  320. agentshore-0.3.2/src/agentshore/reports/static/__init__.py +1 -0
  321. agentshore-0.3.2/src/agentshore/reports/static/chart.min.js +20 -0
  322. agentshore-0.3.2/src/agentshore/reports/templates/archive_comparison.html.j2 +238 -0
  323. agentshore-0.3.2/src/agentshore/reports/templates/base.html.j2 +102 -0
  324. agentshore-0.3.2/src/agentshore/reports/templates/components/charts.html.j2 +88 -0
  325. agentshore-0.3.2/src/agentshore/reports/templates/components/tables.html.j2 +195 -0
  326. agentshore-0.3.2/src/agentshore/reports/templates/end_session_report.html.j2 +742 -0
  327. agentshore-0.3.2/src/agentshore/reports/templates/progress_report.html.j2 +79 -0
  328. agentshore-0.3.2/src/agentshore/reports/templates/session_summary.html.j2 +375 -0
  329. agentshore-0.3.2/src/agentshore/reports/types.py +297 -0
  330. agentshore-0.3.2/src/agentshore/result_parser.py +315 -0
  331. agentshore-0.3.2/src/agentshore/rl/__init__.py +58 -0
  332. agentshore-0.3.2/src/agentshore/rl/action_space.py +30 -0
  333. agentshore-0.3.2/src/agentshore/rl/checkpoint_store.py +255 -0
  334. agentshore-0.3.2/src/agentshore/rl/cold_start.py +134 -0
  335. agentshore-0.3.2/src/agentshore/rl/config_head.py +65 -0
  336. agentshore-0.3.2/src/agentshore/rl/constants.py +10 -0
  337. agentshore-0.3.2/src/agentshore/rl/eligibility.py +1052 -0
  338. agentshore-0.3.2/src/agentshore/rl/experience.py +198 -0
  339. agentshore-0.3.2/src/agentshore/rl/mask.py +639 -0
  340. agentshore-0.3.2/src/agentshore/rl/mask_reason.py +129 -0
  341. agentshore-0.3.2/src/agentshore/rl/metrics.py +494 -0
  342. agentshore-0.3.2/src/agentshore/rl/observation.py +535 -0
  343. agentshore-0.3.2/src/agentshore/rl/policy.py +291 -0
  344. agentshore-0.3.2/src/agentshore/rl/replay.py +104 -0
  345. agentshore-0.3.2/src/agentshore/rl/reward.py +394 -0
  346. agentshore-0.3.2/src/agentshore/rl/selector.py +1089 -0
  347. agentshore-0.3.2/src/agentshore/rl/training.py +242 -0
  348. agentshore-0.3.2/src/agentshore/seed_input.py +122 -0
  349. agentshore-0.3.2/src/agentshore/session/__init__.py +3 -0
  350. agentshore-0.3.2/src/agentshore/session/bootstrap.py +559 -0
  351. agentshore-0.3.2/src/agentshore/session_path.py +883 -0
  352. agentshore-0.3.2/src/agentshore/sidecar/__init__.py +7 -0
  353. agentshore-0.3.2/src/agentshore/sidecar/__main__.py +7 -0
  354. agentshore-0.3.2/src/agentshore/sidecar/agent_auth.py +126 -0
  355. agentshore-0.3.2/src/agentshore/sidecar/agents.py +277 -0
  356. agentshore-0.3.2/src/agentshore/sidecar/archive_rpc.py +225 -0
  357. agentshore-0.3.2/src/agentshore/sidecar/build_id.py +58 -0
  358. agentshore-0.3.2/src/agentshore/sidecar/config.py +91 -0
  359. agentshore-0.3.2/src/agentshore/sidecar/embedded_bridge.py +133 -0
  360. agentshore-0.3.2/src/agentshore/sidecar/esr.py +56 -0
  361. agentshore-0.3.2/src/agentshore/sidecar/handshake.py +97 -0
  362. agentshore-0.3.2/src/agentshore/sidecar/identities.py +577 -0
  363. agentshore-0.3.2/src/agentshore/sidecar/identity_config.py +319 -0
  364. agentshore-0.3.2/src/agentshore/sidecar/notification_emitters.py +71 -0
  365. agentshore-0.3.2/src/agentshore/sidecar/project.py +796 -0
  366. agentshore-0.3.2/src/agentshore/sidecar/recents.py +171 -0
  367. agentshore-0.3.2/src/agentshore/sidecar/server.py +1664 -0
  368. agentshore-0.3.2/src/agentshore/sidecar/session_lifecycle.py +894 -0
  369. agentshore-0.3.2/src/agentshore/sidecar/yaml_edits.py +119 -0
  370. agentshore-0.3.2/src/agentshore/skills/__init__.py +231 -0
  371. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-calibrate-alignment/SKILL.md +58 -0
  372. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-cleanup/SKILL.md +56 -0
  373. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-code-review/SKILL.md +85 -0
  374. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-design-audit/SKILL.md +88 -0
  375. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-groom-backlog/SKILL.md +117 -0
  376. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-issue-pickup/SKILL.md +87 -0
  377. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-merge-pr/SKILL.md +36 -0
  378. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-prune/SKILL.md +57 -0
  379. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-reconcile-state/SKILL.md +97 -0
  380. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-refine-tasks/SKILL.md +93 -0
  381. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-run-qa/SKILL.md +82 -0
  382. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-seed-project/SKILL.md +111 -0
  383. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-systematic-debugging/SKILL.md +43 -0
  384. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-unblock-pr/SKILL.md +72 -0
  385. agentshore-0.3.2/src/agentshore/skills/templates/agentshore-write-plan/SKILL.md +95 -0
  386. agentshore-0.3.2/src/agentshore/state.py +915 -0
  387. agentshore-0.3.2/src/agentshore/subprocess_env.py +369 -0
  388. agentshore-0.3.2/src/agentshore/timelapse/__init__.py +192 -0
  389. agentshore-0.3.2/src/agentshore/timelapse/setup.py +487 -0
  390. agentshore-0.3.2/src/agentshore/ui/__init__.py +8 -0
  391. agentshore-0.3.2/src/agentshore/ui/agentshore.tcss +114 -0
  392. agentshore-0.3.2/src/agentshore/ui/alignment_levels.py +14 -0
  393. agentshore-0.3.2/src/agentshore/ui/app.py +461 -0
  394. agentshore-0.3.2/src/agentshore/ui/format.py +10 -0
  395. agentshore-0.3.2/src/agentshore/ui/play_labels.py +40 -0
  396. agentshore-0.3.2/src/agentshore/ui/provider.py +67 -0
  397. agentshore-0.3.2/src/agentshore/ui/screens/__init__.py +21 -0
  398. agentshore-0.3.2/src/agentshore/ui/screens/agent_detail.py +85 -0
  399. agentshore-0.3.2/src/agentshore/ui/screens/dashboard.py +191 -0
  400. agentshore-0.3.2/src/agentshore/ui/screens/escalation.py +88 -0
  401. agentshore-0.3.2/src/agentshore/ui/screens/goals.py +59 -0
  402. agentshore-0.3.2/src/agentshore/ui/screens/help.py +42 -0
  403. agentshore-0.3.2/src/agentshore/ui/screens/issues.py +114 -0
  404. agentshore-0.3.2/src/agentshore/ui/screens/shutdown.py +161 -0
  405. agentshore-0.3.2/src/agentshore/ui/screens/startup.py +105 -0
  406. agentshore-0.3.2/src/agentshore/ui/widgets/__init__.py +3 -0
  407. agentshore-0.3.2/src/agentshore/ui/widgets/agent_panel.py +165 -0
  408. agentshore-0.3.2/src/agentshore/ui/widgets/alert_bar.py +44 -0
  409. agentshore-0.3.2/src/agentshore/ui/widgets/alignment.py +67 -0
  410. agentshore-0.3.2/src/agentshore/ui/widgets/budget.py +83 -0
  411. agentshore-0.3.2/src/agentshore/ui/widgets/play_history.py +93 -0
  412. agentshore-0.3.2/src/agentshore/ui/widgets/rl_state.py +63 -0
  413. agentshore-0.3.2/src/agentshore/ui/widgets/work_queue.py +54 -0
  414. agentshore-0.3.2/src/agentshore/utils.py +10 -0
  415. agentshore-0.3.2/tests/__init__.py +1 -0
  416. agentshore-0.3.2/tests/agents/test_dispatch_learnings.py +70 -0
  417. agentshore-0.3.2/tests/agents/worktree/__init__.py +0 -0
  418. agentshore-0.3.2/tests/agents/worktree/conftest.py +135 -0
  419. agentshore-0.3.2/tests/agents/worktree/test_allocator.py +418 -0
  420. agentshore-0.3.2/tests/agents/worktree/test_codex_fixes.py +546 -0
  421. agentshore-0.3.2/tests/agents/worktree/test_manager.py +732 -0
  422. agentshore-0.3.2/tests/agents/worktree/test_reaper.py +770 -0
  423. agentshore-0.3.2/tests/agents/worktree/test_reconciliation.py +372 -0
  424. agentshore-0.3.2/tests/agents/worktree/test_registry.py +390 -0
  425. agentshore-0.3.2/tests/agents/worktree/test_rekey.py +320 -0
  426. agentshore-0.3.2/tests/agents/worktree/test_worktree_root.py +110 -0
  427. agentshore-0.3.2/tests/ci_support.py +33 -0
  428. agentshore-0.3.2/tests/cli/test_caffeinate.py +132 -0
  429. agentshore-0.3.2/tests/cli/test_platform_compat.py +62 -0
  430. agentshore-0.3.2/tests/conftest.py +54 -0
  431. agentshore-0.3.2/tests/dashboard/__init__.py +1 -0
  432. agentshore-0.3.2/tests/dashboard/test_bridge.py +794 -0
  433. agentshore-0.3.2/tests/dashboard/test_lifecycle.py +99 -0
  434. agentshore-0.3.2/tests/desktop/__init__.py +0 -0
  435. agentshore-0.3.2/tests/desktop/test_dashboard_workspace_layout.py +59 -0
  436. agentshore-0.3.2/tests/desktop/test_tauri_asset_hosting.py +226 -0
  437. agentshore-0.3.2/tests/desktop/test_tauri_signing_config.py +73 -0
  438. agentshore-0.3.2/tests/desktop/test_update_manifest.py +243 -0
  439. agentshore-0.3.2/tests/fixtures/__init__.py +1 -0
  440. agentshore-0.3.2/tests/fixtures/mock_agent.py +210 -0
  441. agentshore-0.3.2/tests/integration/__init__.py +1 -0
  442. agentshore-0.3.2/tests/integration/conftest.py +72 -0
  443. agentshore-0.3.2/tests/integration/test_agent_lifecycle.py +104 -0
  444. agentshore-0.3.2/tests/integration/test_anti_confirmation.py +107 -0
  445. agentshore-0.3.2/tests/integration/test_budget_exhaustion.py +135 -0
  446. agentshore-0.3.2/tests/integration/test_config_reload.py +163 -0
  447. agentshore-0.3.2/tests/integration/test_deterministic_replay.py +148 -0
  448. agentshore-0.3.2/tests/integration/test_dispatch_worktree.py +490 -0
  449. agentshore-0.3.2/tests/integration/test_happy_path.py +132 -0
  450. agentshore-0.3.2/tests/integration/test_loop_detection.py +165 -0
  451. agentshore-0.3.2/tests/integration/test_reaper_lifecycle.py +318 -0
  452. agentshore-0.3.2/tests/integration/test_scope_validation.py +148 -0
  453. agentshore-0.3.2/tests/ipc/__init__.py +3 -0
  454. agentshore-0.3.2/tests/ipc/test_commands.py +174 -0
  455. agentshore-0.3.2/tests/ipc/test_provider.py +314 -0
  456. agentshore-0.3.2/tests/ipc/test_serializer.py +659 -0
  457. agentshore-0.3.2/tests/ipc/test_server.py +391 -0
  458. agentshore-0.3.2/tests/ipc/test_state_writer.py +221 -0
  459. agentshore-0.3.2/tests/ipc/test_wire.py +55 -0
  460. agentshore-0.3.2/tests/orchestrator_factory.py +176 -0
  461. agentshore-0.3.2/tests/packaging/__init__.py +0 -0
  462. agentshore-0.3.2/tests/packaging/test_buildkit_macos_args.py +70 -0
  463. agentshore-0.3.2/tests/packaging/test_desktop_bundle_profile.py +26 -0
  464. agentshore-0.3.2/tests/packaging/test_desktop_postinstall.py +42 -0
  465. agentshore-0.3.2/tests/packaging/test_verify_gate.py +82 -0
  466. agentshore-0.3.2/tests/packaging/test_version_consistency.py +39 -0
  467. agentshore-0.3.2/tests/packaging/test_windows_installer.py +282 -0
  468. agentshore-0.3.2/tests/plays/test_ff_sync_call_sites.py +146 -0
  469. agentshore-0.3.2/tests/plays/test_gates.py +570 -0
  470. agentshore-0.3.2/tests/plays/test_merge_pr_close_issues.py +576 -0
  471. agentshore-0.3.2/tests/plays/test_scope_drift.py +108 -0
  472. agentshore-0.3.2/tests/reports/__init__.py +1 -0
  473. agentshore-0.3.2/tests/reports/test_collector.py +1077 -0
  474. agentshore-0.3.2/tests/reports/test_comparison.py +311 -0
  475. agentshore-0.3.2/tests/reports/test_generator.py +619 -0
  476. agentshore-0.3.2/tests/sidecar/__init__.py +0 -0
  477. agentshore-0.3.2/tests/sidecar/test_agents.py +456 -0
  478. agentshore-0.3.2/tests/sidecar/test_archives.py +155 -0
  479. agentshore-0.3.2/tests/sidecar/test_bd_sidecar.py +273 -0
  480. agentshore-0.3.2/tests/sidecar/test_build_id.py +69 -0
  481. agentshore-0.3.2/tests/sidecar/test_cold_start_imports.py +31 -0
  482. agentshore-0.3.2/tests/sidecar/test_cold_start_torch_free.py +73 -0
  483. agentshore-0.3.2/tests/sidecar/test_config.py +225 -0
  484. agentshore-0.3.2/tests/sidecar/test_embedded_bridge.py +92 -0
  485. agentshore-0.3.2/tests/sidecar/test_esr_rpc.py +214 -0
  486. agentshore-0.3.2/tests/sidecar/test_handshake.py +780 -0
  487. agentshore-0.3.2/tests/sidecar/test_identities.py +929 -0
  488. agentshore-0.3.2/tests/sidecar/test_live_budget.py +146 -0
  489. agentshore-0.3.2/tests/sidecar/test_nfr_budgets.py +266 -0
  490. agentshore-0.3.2/tests/sidecar/test_notification_emitters.py +27 -0
  491. agentshore-0.3.2/tests/sidecar/test_project.py +1491 -0
  492. agentshore-0.3.2/tests/sidecar/test_recents.py +322 -0
  493. agentshore-0.3.2/tests/sidecar/test_server_async.py +868 -0
  494. agentshore-0.3.2/tests/sidecar/test_session_completed_natural_exit.py +233 -0
  495. agentshore-0.3.2/tests/sidecar/test_session_config_path.py +48 -0
  496. agentshore-0.3.2/tests/sidecar/test_session_lifecycle.py +584 -0
  497. agentshore-0.3.2/tests/sidecar/test_session_start_bridge.py +51 -0
  498. agentshore-0.3.2/tests/sidecar/test_sidecar_preload.py +52 -0
  499. agentshore-0.3.2/tests/sidecar/test_timelapse_lifecycle.py +74 -0
  500. agentshore-0.3.2/tests/sidecar/test_trusted_sources.py +116 -0
  501. agentshore-0.3.2/tests/test_agent_capabilities.py +69 -0
  502. agentshore-0.3.2/tests/test_agent_handle.py +173 -0
  503. agentshore-0.3.2/tests/test_agent_manager.py +805 -0
  504. agentshore-0.3.2/tests/test_agent_selection.py +488 -0
  505. agentshore-0.3.2/tests/test_agent_snapshot_play_counts.py +107 -0
  506. agentshore-0.3.2/tests/test_alignment_delta_live.py +365 -0
  507. agentshore-0.3.2/tests/test_archive.py +246 -0
  508. agentshore-0.3.2/tests/test_auth_probe_spawn.py +110 -0
  509. agentshore-0.3.2/tests/test_availability_record.py +169 -0
  510. agentshore-0.3.2/tests/test_beads_fixes.py +675 -0
  511. agentshore-0.3.2/tests/test_beads_phase0.py +632 -0
  512. agentshore-0.3.2/tests/test_bootstrap_phase4.py +254 -0
  513. agentshore-0.3.2/tests/test_bootstrap_seed.py +46 -0
  514. agentshore-0.3.2/tests/test_branch_sync.py +161 -0
  515. agentshore-0.3.2/tests/test_calibrate_alignment_play.py +118 -0
  516. agentshore-0.3.2/tests/test_circuit_breaker.py +189 -0
  517. agentshore-0.3.2/tests/test_cli.py +23 -0
  518. agentshore-0.3.2/tests/test_cli_add_budget.py +255 -0
  519. agentshore-0.3.2/tests/test_cli_agent.py +2378 -0
  520. agentshore-0.3.2/tests/test_cli_config_overrides.py +209 -0
  521. agentshore-0.3.2/tests/test_cli_helpers.py +27 -0
  522. agentshore-0.3.2/tests/test_cli_identity.py +1580 -0
  523. agentshore-0.3.2/tests/test_cli_phase4.py +165 -0
  524. agentshore-0.3.2/tests/test_cli_phase5.py +960 -0
  525. agentshore-0.3.2/tests/test_cli_polish.py +826 -0
  526. agentshore-0.3.2/tests/test_cli_runtime.py +122 -0
  527. agentshore-0.3.2/tests/test_cli_seed_input.py +72 -0
  528. agentshore-0.3.2/tests/test_cli_timelapse.py +191 -0
  529. agentshore-0.3.2/tests/test_cli_typing.py +254 -0
  530. agentshore-0.3.2/tests/test_command.py +148 -0
  531. agentshore-0.3.2/tests/test_config_contract.py +394 -0
  532. agentshore-0.3.2/tests/test_config_hot_reload.py +139 -0
  533. agentshore-0.3.2/tests/test_config_identities.py +267 -0
  534. agentshore-0.3.2/tests/test_config_models.py +294 -0
  535. agentshore-0.3.2/tests/test_consecutive_timeout_bench.py +84 -0
  536. agentshore-0.3.2/tests/test_context_writer.py +83 -0
  537. agentshore-0.3.2/tests/test_core_refresh.py +526 -0
  538. agentshore-0.3.2/tests/test_core_weights_inventory.py +162 -0
  539. agentshore-0.3.2/tests/test_corruption_evidence.py +110 -0
  540. agentshore-0.3.2/tests/test_data_store.py +1810 -0
  541. agentshore-0.3.2/tests/test_data_store_phase2.py +363 -0
  542. agentshore-0.3.2/tests/test_data_store_phase3.py +354 -0
  543. agentshore-0.3.2/tests/test_data_store_phase6.py +466 -0
  544. agentshore-0.3.2/tests/test_design_audit_play.py +166 -0
  545. agentshore-0.3.2/tests/test_desktop_capabilities_acl.py +47 -0
  546. agentshore-0.3.2/tests/test_dispatch_revalidation.py +149 -0
  547. agentshore-0.3.2/tests/test_drain_esr_event.py +216 -0
  548. agentshore-0.3.2/tests/test_drain_mask.py +151 -0
  549. agentshore-0.3.2/tests/test_eligibility_authority.py +262 -0
  550. agentshore-0.3.2/tests/test_end_agent_drain_bypass.py +187 -0
  551. agentshore-0.3.2/tests/test_end_agent_play_count_gate.py +153 -0
  552. agentshore-0.3.2/tests/test_errors.py +77 -0
  553. agentshore-0.3.2/tests/test_executor_observation_play_masking.py +130 -0
  554. agentshore-0.3.2/tests/test_executor_pr_base_retarget.py +118 -0
  555. agentshore-0.3.2/tests/test_experience_recorder.py +150 -0
  556. agentshore-0.3.2/tests/test_fail_session.py +72 -0
  557. agentshore-0.3.2/tests/test_fleet_idle_persistent.py +192 -0
  558. agentshore-0.3.2/tests/test_gh_to_beads_mirror.py +339 -0
  559. agentshore-0.3.2/tests/test_git_auth_preflight.py +335 -0
  560. agentshore-0.3.2/tests/test_git_multi_identity_auth.py +248 -0
  561. agentshore-0.3.2/tests/test_git_safety_restore.py +237 -0
  562. agentshore-0.3.2/tests/test_git_safety_untrack.py +112 -0
  563. agentshore-0.3.2/tests/test_github_adapter.py +435 -0
  564. agentshore-0.3.2/tests/test_github_adapter_mutations.py +380 -0
  565. agentshore-0.3.2/tests/test_github_labels.py +92 -0
  566. agentshore-0.3.2/tests/test_github_pr_links.py +55 -0
  567. agentshore-0.3.2/tests/test_groom_backlog_play.py +320 -0
  568. agentshore-0.3.2/tests/test_health_monitor.py +289 -0
  569. agentshore-0.3.2/tests/test_identity_names.py +45 -0
  570. agentshore-0.3.2/tests/test_identity_resolver.py +1061 -0
  571. agentshore-0.3.2/tests/test_idle_backoff_progression.py +61 -0
  572. agentshore-0.3.2/tests/test_init_merge_preserves_user_keys.py +137 -0
  573. agentshore-0.3.2/tests/test_instantiate_inflight_cooldown.py +40 -0
  574. agentshore-0.3.2/tests/test_integrity.py +491 -0
  575. agentshore-0.3.2/tests/test_internal_plays.py +249 -0
  576. agentshore-0.3.2/tests/test_ipc.py +161 -0
  577. agentshore-0.3.2/tests/test_ipc_graph_serialization.py +289 -0
  578. agentshore-0.3.2/tests/test_ipc_phase6.py +150 -0
  579. agentshore-0.3.2/tests/test_issue_pickup_bd_ready.py +140 -0
  580. agentshore-0.3.2/tests/test_issue_pickup_live_graph_race.py +129 -0
  581. agentshore-0.3.2/tests/test_issue_pickup_skip_circuit.py +361 -0
  582. agentshore-0.3.2/tests/test_json_retry.py +174 -0
  583. agentshore-0.3.2/tests/test_learnings.py +452 -0
  584. agentshore-0.3.2/tests/test_live_budget_control.py +295 -0
  585. agentshore-0.3.2/tests/test_logging.py +61 -0
  586. agentshore-0.3.2/tests/test_loop_liveness_watchdog.py +140 -0
  587. agentshore-0.3.2/tests/test_loop_mask_has_plays_wait.py +264 -0
  588. agentshore-0.3.2/tests/test_loop_tick_guard.py +54 -0
  589. agentshore-0.3.2/tests/test_loop_unanswered_pause_autostop.py +95 -0
  590. agentshore-0.3.2/tests/test_loop_wedge_autostop.py +67 -0
  591. agentshore-0.3.2/tests/test_main_module.py +35 -0
  592. agentshore-0.3.2/tests/test_main_repo_branch_guard.py +362 -0
  593. agentshore-0.3.2/tests/test_main_repo_guard_unit.py +48 -0
  594. agentshore-0.3.2/tests/test_merge_pr_no_false_positive.py +151 -0
  595. agentshore-0.3.2/tests/test_model_catalog.py +327 -0
  596. agentshore-0.3.2/tests/test_model_tiers.py +106 -0
  597. agentshore-0.3.2/tests/test_no_forward_progress.py +110 -0
  598. agentshore-0.3.2/tests/test_orchestrator.py +1450 -0
  599. agentshore-0.3.2/tests/test_orchestrator_drain.py +408 -0
  600. agentshore-0.3.2/tests/test_orchestrator_idle_backoff.py +200 -0
  601. agentshore-0.3.2/tests/test_orchestrator_natural_exit.py +94 -0
  602. agentshore-0.3.2/tests/test_orchestrator_phase4.py +681 -0
  603. agentshore-0.3.2/tests/test_orchestrator_phase5a.py +526 -0
  604. agentshore-0.3.2/tests/test_override_wait_for.py +133 -0
  605. agentshore-0.3.2/tests/test_parameter_resolver.py +2330 -0
  606. agentshore-0.3.2/tests/test_phase2_e2e.py +289 -0
  607. agentshore-0.3.2/tests/test_phase2_vertical_slice.py +623 -0
  608. agentshore-0.3.2/tests/test_phase3_e2e.py +597 -0
  609. agentshore-0.3.2/tests/test_phase5_e2e.py +307 -0
  610. agentshore-0.3.2/tests/test_play_base.py +95 -0
  611. agentshore-0.3.2/tests/test_play_candidates.py +1028 -0
  612. agentshore-0.3.2/tests/test_play_dispatch.py +899 -0
  613. agentshore-0.3.2/tests/test_play_executor.py +1746 -0
  614. agentshore-0.3.2/tests/test_play_recency_breaker.py +61 -0
  615. agentshore-0.3.2/tests/test_play_registry.py +134 -0
  616. agentshore-0.3.2/tests/test_play_selector.py +70 -0
  617. agentshore-0.3.2/tests/test_play_skipped_reasons.py +157 -0
  618. agentshore-0.3.2/tests/test_play_timeout_classification.py +283 -0
  619. agentshore-0.3.2/tests/test_plays_cleanup.py +213 -0
  620. agentshore-0.3.2/tests/test_power_assertion.py +236 -0
  621. agentshore-0.3.2/tests/test_ppo_pressure_instantiate.py +257 -0
  622. agentshore-0.3.2/tests/test_pr_gate.py +329 -0
  623. agentshore-0.3.2/tests/test_pr_record_branch_propagation.py +323 -0
  624. agentshore-0.3.2/tests/test_pr_state.py +108 -0
  625. agentshore-0.3.2/tests/test_pre_dispatch_path_validation.py +173 -0
  626. agentshore-0.3.2/tests/test_preflight_cli_agent_auth.py +116 -0
  627. agentshore-0.3.2/tests/test_progress_monitor.py +84 -0
  628. agentshore-0.3.2/tests/test_project_root_escape_sweeper.py +175 -0
  629. agentshore-0.3.2/tests/test_prune_play.py +89 -0
  630. agentshore-0.3.2/tests/test_rate_limit_fleet_isolation.py +165 -0
  631. agentshore-0.3.2/tests/test_recent_applied_labels_shadow.py +103 -0
  632. agentshore-0.3.2/tests/test_recent_play_completions_merge.py +75 -0
  633. agentshore-0.3.2/tests/test_reconcile_state_play.py +325 -0
  634. agentshore-0.3.2/tests/test_reconcile_state_template.py +157 -0
  635. agentshore-0.3.2/tests/test_refine_tasks_precondition.py +89 -0
  636. agentshore-0.3.2/tests/test_registry_cooldown_plumbing.py +50 -0
  637. agentshore-0.3.2/tests/test_replay_loader.py +59 -0
  638. agentshore-0.3.2/tests/test_report_templates_no_legacy.py +36 -0
  639. agentshore-0.3.2/tests/test_result_parser.py +324 -0
  640. agentshore-0.3.2/tests/test_review_queue_store.py +277 -0
  641. agentshore-0.3.2/tests/test_rl_action_space.py +187 -0
  642. agentshore-0.3.2/tests/test_rl_cold_start.py +122 -0
  643. agentshore-0.3.2/tests/test_rl_experience.py +228 -0
  644. agentshore-0.3.2/tests/test_rl_mask.py +2194 -0
  645. agentshore-0.3.2/tests/test_rl_metrics.py +700 -0
  646. agentshore-0.3.2/tests/test_rl_observation.py +857 -0
  647. agentshore-0.3.2/tests/test_rl_policy.py +320 -0
  648. agentshore-0.3.2/tests/test_rl_reward.py +630 -0
  649. agentshore-0.3.2/tests/test_rl_reward_merge_and_instantiate.py +232 -0
  650. agentshore-0.3.2/tests/test_rl_selector.py +1201 -0
  651. agentshore-0.3.2/tests/test_rl_training.py +190 -0
  652. agentshore-0.3.2/tests/test_run_wizard_prefill.py +167 -0
  653. agentshore-0.3.2/tests/test_safe_call_phase4g.py +378 -0
  654. agentshore-0.3.2/tests/test_schema_fresh_db.py +220 -0
  655. agentshore-0.3.2/tests/test_scope_validator.py +180 -0
  656. agentshore-0.3.2/tests/test_seed_input.py +51 -0
  657. agentshore-0.3.2/tests/test_seed_project_play.py +310 -0
  658. agentshore-0.3.2/tests/test_session_path.py +900 -0
  659. agentshore-0.3.2/tests/test_skill_backed_plays.py +1810 -0
  660. agentshore-0.3.2/tests/test_skills.py +476 -0
  661. agentshore-0.3.2/tests/test_skip_category_to_reason.py +29 -0
  662. agentshore-0.3.2/tests/test_state.py +481 -0
  663. agentshore-0.3.2/tests/test_state_provider_phase4.py +223 -0
  664. agentshore-0.3.2/tests/test_store_busy_timeout.py +127 -0
  665. agentshore-0.3.2/tests/test_subprocess_env.py +170 -0
  666. agentshore-0.3.2/tests/test_subprocess_stdin_guard.py +134 -0
  667. agentshore-0.3.2/tests/test_systematic_debugging_mask.py +120 -0
  668. agentshore-0.3.2/tests/test_take_break.py +385 -0
  669. agentshore-0.3.2/tests/test_take_break_escalation.py +349 -0
  670. agentshore-0.3.2/tests/test_target_branch_pr_filter.py +86 -0
  671. agentshore-0.3.2/tests/test_time_budget.py +174 -0
  672. agentshore-0.3.2/tests/test_timelapse_driver.py +162 -0
  673. agentshore-0.3.2/tests/test_timelapse_setup.py +448 -0
  674. agentshore-0.3.2/tests/test_trunk_artifacts.py +360 -0
  675. agentshore-0.3.2/tests/test_trunk_play_git_guardrails.py +67 -0
  676. agentshore-0.3.2/tests/test_trusted_ids.py +472 -0
  677. agentshore-0.3.2/tests/test_unblock_manual_required_markers.py +232 -0
  678. agentshore-0.3.2/tests/test_utils.py +92 -0
  679. agentshore-0.3.2/tests/test_wedge_signals.py +347 -0
  680. agentshore-0.3.2/tests/test_weights_lifecycle.py +302 -0
  681. agentshore-0.3.2/tests/test_windows_layout.py +128 -0
  682. agentshore-0.3.2/tests/test_work_availability.py +253 -0
  683. agentshore-0.3.2/tests/test_worktree_failure_park.py +57 -0
  684. agentshore-0.3.2/tests/test_worktree_isolation_guard.py +133 -0
  685. agentshore-0.3.2/tests/test_write_plan_unplannable_backoff.py +118 -0
  686. agentshore-0.3.2/tests/ui/__init__.py +1 -0
  687. agentshore-0.3.2/tests/ui/test_dashboard.py +392 -0
  688. agentshore-0.3.2/tests/ui/test_forward_to_screen.py +66 -0
  689. agentshore-0.3.2/tests/ui/test_keybindings.py +184 -0
  690. agentshore-0.3.2/tests/ui/test_modals.py +237 -0
  691. agentshore-0.3.2/tests/ui/test_provider.py +183 -0
  692. agentshore-0.3.2/tests/ui/test_startup_shutdown.py +96 -0
  693. agentshore-0.3.2/tests/ui/test_tui_phase6.py +205 -0
  694. agentshore-0.3.2/tests/ui/test_widgets.py +368 -0
  695. agentshore-0.3.2/tests/ui/test_widgets_status.py +459 -0
  696. 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.