@apralabs/apra-fleet 0.2.2
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.
- package/LICENSE +182 -0
- package/README.md +324 -0
- package/dist/cli/auth.d.ts +2 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +210 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/config.d.ts +30 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +157 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/install.d.ts +37 -0
- package/dist/cli/install.d.ts.map +1 -0
- package/dist/cli/install.js +630 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/secret.d.ts +2 -0
- package/dist/cli/secret.d.ts.map +1 -0
- package/dist/cli/secret.js +366 -0
- package/dist/cli/secret.js.map +1 -0
- package/dist/cli/uninstall.d.ts +2 -0
- package/dist/cli/uninstall.d.ts.map +1 -0
- package/dist/cli/uninstall.js +312 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/cli/update.d.ts +2 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +105 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/delivery-mode.d.ts +19 -0
- package/dist/delivery-mode.d.ts.map +1 -0
- package/dist/delivery-mode.js +26 -0
- package/dist/delivery-mode.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +272 -0
- package/dist/index.js.map +1 -0
- package/dist/onboarding/text.d.ts +83 -0
- package/dist/onboarding/text.d.ts.map +1 -0
- package/dist/onboarding/text.js +126 -0
- package/dist/onboarding/text.js.map +1 -0
- package/dist/os/index.d.ts +9 -0
- package/dist/os/index.d.ts.map +1 -0
- package/dist/os/index.js +16 -0
- package/dist/os/index.js.map +1 -0
- package/dist/os/linux.d.ts +50 -0
- package/dist/os/linux.d.ts.map +1 -0
- package/dist/os/linux.js +244 -0
- package/dist/os/linux.js.map +1 -0
- package/dist/os/macos.d.ts +12 -0
- package/dist/os/macos.d.ts.map +1 -0
- package/dist/os/macos.js +41 -0
- package/dist/os/macos.js.map +1 -0
- package/dist/os/os-commands.d.ts +47 -0
- package/dist/os/os-commands.d.ts.map +1 -0
- package/dist/os/os-commands.js +3 -0
- package/dist/os/os-commands.js.map +1 -0
- package/dist/os/windows-wrapper.d.ts +6 -0
- package/dist/os/windows-wrapper.d.ts.map +1 -0
- package/dist/os/windows-wrapper.js +9 -0
- package/dist/os/windows-wrapper.js.map +1 -0
- package/dist/os/windows.d.ts +44 -0
- package/dist/os/windows.d.ts.map +1 -0
- package/dist/os/windows.js +269 -0
- package/dist/os/windows.js.map +1 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +4 -0
- package/dist/paths.js.map +1 -0
- package/dist/providers/agy.d.ts +41 -0
- package/dist/providers/agy.d.ts.map +1 -0
- package/dist/providers/agy.js +208 -0
- package/dist/providers/agy.js.map +1 -0
- package/dist/providers/claude.d.ts +40 -0
- package/dist/providers/claude.d.ts.map +1 -0
- package/dist/providers/claude.js +178 -0
- package/dist/providers/claude.js.map +1 -0
- package/dist/providers/codex.d.ts +44 -0
- package/dist/providers/codex.d.ts.map +1 -0
- package/dist/providers/codex.js +173 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/providers/copilot.d.ts +40 -0
- package/dist/providers/copilot.d.ts.map +1 -0
- package/dist/providers/copilot.js +172 -0
- package/dist/providers/copilot.js.map +1 -0
- package/dist/providers/gemini.d.ts +41 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +192 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/index.d.ts +10 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +27 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/provider.d.ts +85 -0
- package/dist/providers/provider.d.ts.map +1 -0
- package/dist/providers/provider.js +21 -0
- package/dist/providers/provider.js.map +1 -0
- package/dist/services/auth-socket.d.ts +87 -0
- package/dist/services/auth-socket.d.ts.map +1 -0
- package/dist/services/auth-socket.js +684 -0
- package/dist/services/auth-socket.js.map +1 -0
- package/dist/services/auth-web.d.ts +31 -0
- package/dist/services/auth-web.d.ts.map +1 -0
- package/dist/services/auth-web.js +202 -0
- package/dist/services/auth-web.js.map +1 -0
- package/dist/services/cloud/activity.d.ts +16 -0
- package/dist/services/cloud/activity.d.ts.map +1 -0
- package/dist/services/cloud/activity.js +61 -0
- package/dist/services/cloud/activity.js.map +1 -0
- package/dist/services/cloud/aws.d.ts +24 -0
- package/dist/services/cloud/aws.d.ts.map +1 -0
- package/dist/services/cloud/aws.js +114 -0
- package/dist/services/cloud/aws.js.map +1 -0
- package/dist/services/cloud/cost.d.ts +46 -0
- package/dist/services/cloud/cost.d.ts.map +1 -0
- package/dist/services/cloud/cost.js +161 -0
- package/dist/services/cloud/cost.js.map +1 -0
- package/dist/services/cloud/idle-manager.d.ts +20 -0
- package/dist/services/cloud/idle-manager.d.ts.map +1 -0
- package/dist/services/cloud/idle-manager.js +103 -0
- package/dist/services/cloud/idle-manager.js.map +1 -0
- package/dist/services/cloud/lifecycle.d.ts +14 -0
- package/dist/services/cloud/lifecycle.d.ts.map +1 -0
- package/dist/services/cloud/lifecycle.js +128 -0
- package/dist/services/cloud/lifecycle.js.map +1 -0
- package/dist/services/cloud/task-wrapper.d.ts +30 -0
- package/dist/services/cloud/task-wrapper.d.ts.map +1 -0
- package/dist/services/cloud/task-wrapper.js +116 -0
- package/dist/services/cloud/task-wrapper.js.map +1 -0
- package/dist/services/cloud/types.d.ts +26 -0
- package/dist/services/cloud/types.d.ts.map +1 -0
- package/dist/services/cloud/types.js +2 -0
- package/dist/services/cloud/types.js.map +1 -0
- package/dist/services/credential-cleanup.d.ts +4 -0
- package/dist/services/credential-cleanup.d.ts.map +1 -0
- package/dist/services/credential-cleanup.js +61 -0
- package/dist/services/credential-cleanup.js.map +1 -0
- package/dist/services/credential-store.d.ts +56 -0
- package/dist/services/credential-store.d.ts.map +1 -0
- package/dist/services/credential-store.js +280 -0
- package/dist/services/credential-store.js.map +1 -0
- package/dist/services/file-transfer.d.ts +22 -0
- package/dist/services/file-transfer.d.ts.map +1 -0
- package/dist/services/file-transfer.js +14 -0
- package/dist/services/file-transfer.js.map +1 -0
- package/dist/services/git-config.d.ts +6 -0
- package/dist/services/git-config.d.ts.map +1 -0
- package/dist/services/git-config.js +31 -0
- package/dist/services/git-config.js.map +1 -0
- package/dist/services/github-app.d.ts +30 -0
- package/dist/services/github-app.d.ts.map +1 -0
- package/dist/services/github-app.js +96 -0
- package/dist/services/github-app.js.map +1 -0
- package/dist/services/icons.d.ts +16 -0
- package/dist/services/icons.d.ts.map +1 -0
- package/dist/services/icons.js +67 -0
- package/dist/services/icons.js.map +1 -0
- package/dist/services/known-hosts.d.ts +23 -0
- package/dist/services/known-hosts.d.ts.map +1 -0
- package/dist/services/known-hosts.js +86 -0
- package/dist/services/known-hosts.js.map +1 -0
- package/dist/services/onboarding.d.ts +68 -0
- package/dist/services/onboarding.d.ts.map +1 -0
- package/dist/services/onboarding.js +205 -0
- package/dist/services/onboarding.js.map +1 -0
- package/dist/services/registry.d.ts +16 -0
- package/dist/services/registry.d.ts.map +1 -0
- package/dist/services/registry.js +156 -0
- package/dist/services/registry.js.map +1 -0
- package/dist/services/sftp.d.ts +16 -0
- package/dist/services/sftp.d.ts.map +1 -0
- package/dist/services/sftp.js +104 -0
- package/dist/services/sftp.js.map +1 -0
- package/dist/services/ssh.d.ts +29 -0
- package/dist/services/ssh.d.ts.map +1 -0
- package/dist/services/ssh.js +297 -0
- package/dist/services/ssh.js.map +1 -0
- package/dist/services/stall/find-log-file.d.ts +2 -0
- package/dist/services/stall/find-log-file.d.ts.map +1 -0
- package/dist/services/stall/find-log-file.js +153 -0
- package/dist/services/stall/find-log-file.js.map +1 -0
- package/dist/services/stall/index.d.ts +4 -0
- package/dist/services/stall/index.d.ts.map +1 -0
- package/dist/services/stall/index.js +4 -0
- package/dist/services/stall/index.js.map +1 -0
- package/dist/services/stall/log-path-resolver.d.ts +4 -0
- package/dist/services/stall/log-path-resolver.d.ts.map +1 -0
- package/dist/services/stall/log-path-resolver.js +32 -0
- package/dist/services/stall/log-path-resolver.js.map +1 -0
- package/dist/services/stall/log-path-resolver.test.d.ts +2 -0
- package/dist/services/stall/log-path-resolver.test.d.ts.map +1 -0
- package/dist/services/stall/log-path-resolver.test.js +76 -0
- package/dist/services/stall/log-path-resolver.test.js.map +1 -0
- package/dist/services/stall/read-log-tail.d.ts +6 -0
- package/dist/services/stall/read-log-tail.d.ts.map +1 -0
- package/dist/services/stall/read-log-tail.js +44 -0
- package/dist/services/stall/read-log-tail.js.map +1 -0
- package/dist/services/stall/stall-detector.d.ts +25 -0
- package/dist/services/stall/stall-detector.d.ts.map +1 -0
- package/dist/services/stall/stall-detector.js +153 -0
- package/dist/services/stall/stall-detector.js.map +1 -0
- package/dist/services/stall/stall-poller.d.ts +6 -0
- package/dist/services/stall/stall-poller.d.ts.map +1 -0
- package/dist/services/stall/stall-poller.js +75 -0
- package/dist/services/stall/stall-poller.js.map +1 -0
- package/dist/services/stall/time-utils.d.ts +4 -0
- package/dist/services/stall/time-utils.d.ts.map +1 -0
- package/dist/services/stall/time-utils.js +22 -0
- package/dist/services/stall/time-utils.js.map +1 -0
- package/dist/services/statusline.d.ts +10 -0
- package/dist/services/statusline.d.ts.map +1 -0
- package/dist/services/statusline.js +84 -0
- package/dist/services/statusline.js.map +1 -0
- package/dist/services/strategy.d.ts +16 -0
- package/dist/services/strategy.d.ts.map +1 -0
- package/dist/services/strategy.js +241 -0
- package/dist/services/strategy.js.map +1 -0
- package/dist/services/task-cleanup.d.ts +3 -0
- package/dist/services/task-cleanup.d.ts.map +1 -0
- package/dist/services/task-cleanup.js +81 -0
- package/dist/services/task-cleanup.js.map +1 -0
- package/dist/services/update-check.d.ts +15 -0
- package/dist/services/update-check.d.ts.map +1 -0
- package/dist/services/update-check.js +67 -0
- package/dist/services/update-check.js.map +1 -0
- package/dist/services/user-config.d.ts +12 -0
- package/dist/services/user-config.d.ts.map +1 -0
- package/dist/services/user-config.js +73 -0
- package/dist/services/user-config.js.map +1 -0
- package/dist/services/vcs/azure-devops.d.ts +7 -0
- package/dist/services/vcs/azure-devops.d.ts.map +1 -0
- package/dist/services/vcs/azure-devops.js +38 -0
- package/dist/services/vcs/azure-devops.js.map +1 -0
- package/dist/services/vcs/bitbucket.d.ts +6 -0
- package/dist/services/vcs/bitbucket.d.ts.map +1 -0
- package/dist/services/vcs/bitbucket.js +31 -0
- package/dist/services/vcs/bitbucket.js.map +1 -0
- package/dist/services/vcs/constants.d.ts +2 -0
- package/dist/services/vcs/constants.d.ts.map +1 -0
- package/dist/services/vcs/constants.js +6 -0
- package/dist/services/vcs/constants.js.map +1 -0
- package/dist/services/vcs/github.d.ts +6 -0
- package/dist/services/vcs/github.d.ts.map +1 -0
- package/dist/services/vcs/github.js +81 -0
- package/dist/services/vcs/github.js.map +1 -0
- package/dist/services/vcs/types.d.ts +52 -0
- package/dist/services/vcs/types.d.ts.map +1 -0
- package/dist/services/vcs/types.js +8 -0
- package/dist/services/vcs/types.js.map +1 -0
- package/dist/smoke-test.d.ts +10 -0
- package/dist/smoke-test.d.ts.map +1 -0
- package/dist/smoke-test.js +102 -0
- package/dist/smoke-test.js.map +1 -0
- package/dist/tools/check-status.d.ts +11 -0
- package/dist/tools/check-status.d.ts.map +1 -0
- package/dist/tools/check-status.js +247 -0
- package/dist/tools/check-status.js.map +1 -0
- package/dist/tools/cloud-control.d.ts +17 -0
- package/dist/tools/cloud-control.d.ts.map +1 -0
- package/dist/tools/cloud-control.js +102 -0
- package/dist/tools/cloud-control.js.map +1 -0
- package/dist/tools/compose-permissions.d.ts +26 -0
- package/dist/tools/compose-permissions.d.ts.map +1 -0
- package/dist/tools/compose-permissions.js +217 -0
- package/dist/tools/compose-permissions.js.map +1 -0
- package/dist/tools/credential-store-delete.d.ts +11 -0
- package/dist/tools/credential-store-delete.d.ts.map +1 -0
- package/dist/tools/credential-store-delete.js +15 -0
- package/dist/tools/credential-store-delete.js.map +1 -0
- package/dist/tools/credential-store-list.d.ts +4 -0
- package/dist/tools/credential-store-list.d.ts.map +1 -0
- package/dist/tools/credential-store-list.js +30 -0
- package/dist/tools/credential-store-list.js.map +1 -0
- package/dist/tools/credential-store-set.d.ts +26 -0
- package/dist/tools/credential-store-set.d.ts.map +1 -0
- package/dist/tools/credential-store-set.js +28 -0
- package/dist/tools/credential-store-set.js.map +1 -0
- package/dist/tools/credential-store-update.d.ts +20 -0
- package/dist/tools/credential-store-update.d.ts.map +1 -0
- package/dist/tools/credential-store-update.js +38 -0
- package/dist/tools/credential-store-update.js.map +1 -0
- package/dist/tools/execute-command.d.ts +33 -0
- package/dist/tools/execute-command.d.ts.map +1 -0
- package/dist/tools/execute-command.js +231 -0
- package/dist/tools/execute-command.js.map +1 -0
- package/dist/tools/execute-prompt.d.ts +36 -0
- package/dist/tools/execute-prompt.d.ts.map +1 -0
- package/dist/tools/execute-prompt.js +310 -0
- package/dist/tools/execute-prompt.js.map +1 -0
- package/dist/tools/list-members.d.ts +11 -0
- package/dist/tools/list-members.d.ts.map +1 -0
- package/dist/tools/list-members.js +108 -0
- package/dist/tools/list-members.js.map +1 -0
- package/dist/tools/member-detail.d.ts +17 -0
- package/dist/tools/member-detail.d.ts.map +1 -0
- package/dist/tools/member-detail.js +263 -0
- package/dist/tools/member-detail.js.map +1 -0
- package/dist/tools/monitor-task.d.ts +20 -0
- package/dist/tools/monitor-task.d.ts.map +1 -0
- package/dist/tools/monitor-task.js +89 -0
- package/dist/tools/monitor-task.js.map +1 -0
- package/dist/tools/provision-auth.d.ts +17 -0
- package/dist/tools/provision-auth.d.ts.map +1 -0
- package/dist/tools/provision-auth.js +256 -0
- package/dist/tools/provision-auth.js.map +1 -0
- package/dist/tools/provision-vcs-auth.d.ts +50 -0
- package/dist/tools/provision-vcs-auth.d.ts.map +1 -0
- package/dist/tools/provision-vcs-auth.js +187 -0
- package/dist/tools/provision-vcs-auth.js.map +1 -0
- package/dist/tools/receive-files.d.ts +20 -0
- package/dist/tools/receive-files.d.ts.map +1 -0
- package/dist/tools/receive-files.js +82 -0
- package/dist/tools/receive-files.js.map +1 -0
- package/dist/tools/register-member.d.ts +74 -0
- package/dist/tools/register-member.d.ts.map +1 -0
- package/dist/tools/register-member.js +310 -0
- package/dist/tools/register-member.js.map +1 -0
- package/dist/tools/remove-member.d.ts +17 -0
- package/dist/tools/remove-member.d.ts.map +1 -0
- package/dist/tools/remove-member.js +126 -0
- package/dist/tools/remove-member.js.map +1 -0
- package/dist/tools/revoke-vcs-auth.d.ts +23 -0
- package/dist/tools/revoke-vcs-auth.d.ts.map +1 -0
- package/dist/tools/revoke-vcs-auth.js +55 -0
- package/dist/tools/revoke-vcs-auth.js.map +1 -0
- package/dist/tools/send-files.d.ts +20 -0
- package/dist/tools/send-files.d.ts.map +1 -0
- package/dist/tools/send-files.js +103 -0
- package/dist/tools/send-files.js.map +1 -0
- package/dist/tools/setup-git-app.d.ts +17 -0
- package/dist/tools/setup-git-app.d.ts.map +1 -0
- package/dist/tools/setup-git-app.js +89 -0
- package/dist/tools/setup-git-app.js.map +1 -0
- package/dist/tools/setup-ssh-key.d.ts +14 -0
- package/dist/tools/setup-ssh-key.d.ts.map +1 -0
- package/dist/tools/setup-ssh-key.js +119 -0
- package/dist/tools/setup-ssh-key.js.map +1 -0
- package/dist/tools/shutdown-server.d.ts +4 -0
- package/dist/tools/shutdown-server.d.ts.map +1 -0
- package/dist/tools/shutdown-server.js +9 -0
- package/dist/tools/shutdown-server.js.map +1 -0
- package/dist/tools/stop-prompt.d.ts +14 -0
- package/dist/tools/stop-prompt.d.ts.map +1 -0
- package/dist/tools/stop-prompt.js +44 -0
- package/dist/tools/stop-prompt.js.map +1 -0
- package/dist/tools/update-agent-cli.d.ts +17 -0
- package/dist/tools/update-agent-cli.d.ts.map +1 -0
- package/dist/tools/update-agent-cli.js +110 -0
- package/dist/tools/update-agent-cli.js.map +1 -0
- package/dist/tools/update-member.d.ts +77 -0
- package/dist/tools/update-member.d.ts.map +1 -0
- package/dist/tools/update-member.js +202 -0
- package/dist/tools/update-member.js.map +1 -0
- package/dist/tools/version.d.ts +4 -0
- package/dist/tools/version.d.ts.map +1 -0
- package/dist/tools/version.js +7 -0
- package/dist/tools/version.js.map +1 -0
- package/dist/types.d.ts +70 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/agent-helpers.d.ts +41 -0
- package/dist/utils/agent-helpers.d.ts.map +1 -0
- package/dist/utils/agent-helpers.js +84 -0
- package/dist/utils/agent-helpers.js.map +1 -0
- package/dist/utils/ansi.d.ts +6 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +20 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/auth-env.d.ts +8 -0
- package/dist/utils/auth-env.d.ts.map +1 -0
- package/dist/utils/auth-env.js +30 -0
- package/dist/utils/auth-env.js.map +1 -0
- package/dist/utils/collect-secret.d.ts +2 -0
- package/dist/utils/collect-secret.d.ts.map +1 -0
- package/dist/utils/collect-secret.js +80 -0
- package/dist/utils/collect-secret.js.map +1 -0
- package/dist/utils/credential-validation.d.ts +13 -0
- package/dist/utils/credential-validation.d.ts.map +1 -0
- package/dist/utils/credential-validation.js +35 -0
- package/dist/utils/credential-validation.js.map +1 -0
- package/dist/utils/crypto.d.ts +3 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +61 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/deep-merge.d.ts +3 -0
- package/dist/utils/deep-merge.d.ts.map +1 -0
- package/dist/utils/deep-merge.js +23 -0
- package/dist/utils/deep-merge.js.map +1 -0
- package/dist/utils/file-permissions.d.ts +8 -0
- package/dist/utils/file-permissions.d.ts.map +1 -0
- package/dist/utils/file-permissions.js +13 -0
- package/dist/utils/file-permissions.js.map +1 -0
- package/dist/utils/gpu-parser.d.ts +6 -0
- package/dist/utils/gpu-parser.d.ts.map +1 -0
- package/dist/utils/gpu-parser.js +15 -0
- package/dist/utils/gpu-parser.js.map +1 -0
- package/dist/utils/log-helpers.d.ts +29 -0
- package/dist/utils/log-helpers.d.ts.map +1 -0
- package/dist/utils/log-helpers.js +128 -0
- package/dist/utils/log-helpers.js.map +1 -0
- package/dist/utils/oob-timeout.d.ts +2 -0
- package/dist/utils/oob-timeout.d.ts.map +1 -0
- package/dist/utils/oob-timeout.js +2 -0
- package/dist/utils/oob-timeout.js.map +1 -0
- package/dist/utils/pid-helpers.d.ts +11 -0
- package/dist/utils/pid-helpers.d.ts.map +1 -0
- package/dist/utils/pid-helpers.js +21 -0
- package/dist/utils/pid-helpers.js.map +1 -0
- package/dist/utils/platform.d.ts +13 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +60 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/prompt-errors.d.ts +5 -0
- package/dist/utils/prompt-errors.d.ts.map +1 -0
- package/dist/utils/prompt-errors.js +15 -0
- package/dist/utils/prompt-errors.js.map +1 -0
- package/dist/utils/resolve-member.d.ts +18 -0
- package/dist/utils/resolve-member.d.ts.map +1 -0
- package/dist/utils/resolve-member.js +23 -0
- package/dist/utils/resolve-member.js.map +1 -0
- package/dist/utils/secure-input.d.ts +6 -0
- package/dist/utils/secure-input.d.ts.map +1 -0
- package/dist/utils/secure-input.js +60 -0
- package/dist/utils/secure-input.js.map +1 -0
- package/dist/utils/shell-escape.d.ts +43 -0
- package/dist/utils/shell-escape.d.ts.map +1 -0
- package/dist/utils/shell-escape.js +67 -0
- package/dist/utils/shell-escape.js.map +1 -0
- package/dist/utils/ssh-error-messages.d.ts +5 -0
- package/dist/utils/ssh-error-messages.d.ts.map +1 -0
- package/dist/utils/ssh-error-messages.js +20 -0
- package/dist/utils/ssh-error-messages.js.map +1 -0
- package/dist/version.d.ts +18 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +101 -0
- package/dist/version.js.map +1 -0
- package/hooks/hooks-config.json +15 -0
- package/hooks/post-register-member.sh +10 -0
- package/package.json +82 -0
- package/scripts/agy-settings-merge.js +27 -0
- package/scripts/agy-transcript-reader.js +62 -0
- package/scripts/fleet-statusline.sh +43 -0
- package/skills/fleet/SKILL.md +262 -0
- package/skills/fleet/auth-azdevops.md +72 -0
- package/skills/fleet/auth-bitbucket.md +65 -0
- package/skills/fleet/auth-github.md +86 -0
- package/skills/fleet/beads.md +90 -0
- package/skills/fleet/onboarding.md +92 -0
- package/skills/fleet/permissions.md +23 -0
- package/skills/fleet/profiles/base-dev.json +18 -0
- package/skills/fleet/profiles/base-reviewer.json +14 -0
- package/skills/fleet/profiles/cpp.json +4 -0
- package/skills/fleet/profiles/dotnet.json +4 -0
- package/skills/fleet/profiles/go.json +4 -0
- package/skills/fleet/profiles/jvm.json +4 -0
- package/skills/fleet/profiles/node.json +4 -0
- package/skills/fleet/profiles/python.json +4 -0
- package/skills/fleet/profiles/rust.json +4 -0
- package/skills/fleet/profiles/tpl-permissions.json +5 -0
- package/skills/fleet/skill-matrix.md +34 -0
- package/skills/fleet/troubleshooting.md +13 -0
- package/skills/pm/SKILL.md +110 -0
- package/skills/pm/backlog-item.md +65 -0
- package/skills/pm/beads.md +192 -0
- package/skills/pm/cleanup.md +15 -0
- package/skills/pm/context-file.md +40 -0
- package/skills/pm/doer-reviewer.md +123 -0
- package/skills/pm/init.md +25 -0
- package/skills/pm/multi-pair-sprint.md +64 -0
- package/skills/pm/plan-prompt.md +94 -0
- package/skills/pm/simple-sprint.md +42 -0
- package/skills/pm/single-pair-sprint.md +178 -0
- package/skills/pm/tpl-deploy.md +24 -0
- package/skills/pm/tpl-design.md +29 -0
- package/skills/pm/tpl-doer.md +43 -0
- package/skills/pm/tpl-plan.md +72 -0
- package/skills/pm/tpl-pm.md +2 -0
- package/skills/pm/tpl-progress.json +28 -0
- package/skills/pm/tpl-projects.md +4 -0
- package/skills/pm/tpl-requirements.md +21 -0
- package/skills/pm/tpl-reviewer-plan.md +53 -0
- package/skills/pm/tpl-reviewer.md +72 -0
- package/skills/pm/tpl-status.md +29 -0
- package/version.json +3 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Plan Generation Prompt
|
|
2
|
+
|
|
3
|
+
Send this to the member (via `execute_prompt`) before writing any plan:
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are generating an implementation plan. Read requirements.md for what needs to be built.
|
|
8
|
+
|
|
9
|
+
### PHASE 0 — EXPLORE (before writing any plan)
|
|
10
|
+
|
|
11
|
+
1. Read relevant source files for this task
|
|
12
|
+
2. Read existing tests — understand conventions and framework
|
|
13
|
+
3. `git log --oneline -20` — recent changes in the area
|
|
14
|
+
4. List assumptions about how the code works
|
|
15
|
+
5. For every assumption you listed, answer: "How do I know this is currently true?" Then verify it.
|
|
16
|
+
Two categories to check:
|
|
17
|
+
- **Existence:** Does the thing you are building on top of actually exist right now? (e.g. a named entity, interface, resource, capability, configuration, or path your plan depends on)
|
|
18
|
+
- **Accessibility:** Can the part of the system that needs it actually reach it? (e.g. is it exposed, connected, permitted, or in scope for the component that will use it)
|
|
19
|
+
If you cannot verify an assumption, it becomes a risk register entry, not a task precondition.
|
|
20
|
+
6. Report: what you found, what patterns exist, what constraints matter
|
|
21
|
+
|
|
22
|
+
### PHASE 1 — DRAFT
|
|
23
|
+
|
|
24
|
+
For each task include:
|
|
25
|
+
- What file(s) to create or change
|
|
26
|
+
- What the change does — specific, not vague ("add X method to Y class" not "implement feature")
|
|
27
|
+
- What "done" means — test passes, output appears, API returns expected response
|
|
28
|
+
- What could block — missing dependency, unclear API, native code issue
|
|
29
|
+
|
|
30
|
+
Rules:
|
|
31
|
+
- **Phase boundaries by cohesion, not count** — a phase is a coherent unit of work that produces a reviewable, testable increment. Group tasks into a phase when they share a data model, code path, or design decision — splitting them would produce an incoherent intermediate state or require touching the same code twice. Place a VERIFY at the natural completion boundary of that unit, not at an arbitrary task count. Phases may have 4-5 tasks (a coherent subsystem) or just 1-2 (a genuinely isolated change).
|
|
32
|
+
- Each task completable in one session, results in one commit
|
|
33
|
+
- Tasks ordered so dependencies are satisfied
|
|
34
|
+
- **Model tier assignment:** Assign a tier (`cheap`, `standard`, or `premium`) to every work task based on complexity:
|
|
35
|
+
- `cheap` — mechanical changes with no ambiguity (rename, move, simple config edit)
|
|
36
|
+
- `standard` — typical implementation work (new function, test suite, moderate refactor)
|
|
37
|
+
- `premium` — high-ambiguity design tasks, architectural decisions, or tasks requiring deep multi-file reasoning
|
|
38
|
+
- Write the tier into the task entry in PLAN.md (e.g. `- **Tier:** standard`)
|
|
39
|
+
- When the PM creates progress.json from the plan, it copies each task's tier into `tasks[i].tier`
|
|
40
|
+
- During dispatch, the PM reads `tasks[i].tier` and passes `model: <tier>` to `execute_prompt` for doer dispatches
|
|
41
|
+
- **Constraint:** Reviewer dispatches always use `model: premium` regardless of the task tier — this is not configurable by the planner
|
|
42
|
+
- **The plan is the elaboration, not the summary:** requirements.md uses terse human language with intentional ambiguity. PLAN.md must resolve that ambiguity — every edge case decided, every behaviour specified, every acceptance criterion precise enough that two developers would implement the same thing. Referencing requirements.md for background is fine; deferring a decision to it is not.
|
|
43
|
+
- **Monotonically non-decreasing tiers within a phase:** Within a phase, order tasks cheap → standard → premium. The PM resumes the same session across tasks in a phase — a premium task can build a large context that a cheap model cannot load. The PM may group consecutive same-tier tasks into a single dispatch streak; tier transitions trigger a new dispatch. If a dependency forces a higher-tier task before a lower-tier task within a phase, split the phase at that boundary. Cross-phase tier order does not matter — each phase starts a fresh session.
|
|
44
|
+
```
|
|
45
|
+
cheap → cheap → standard → standard → premium → VERIFY [VALID]
|
|
46
|
+
cheap → standard → cheap → VERIFY [INVALID] (downgrade within phase — split into two phases)
|
|
47
|
+
re ```
|
|
48
|
+
|
|
49
|
+
### PHASE 2 — FRONT-LOAD FOUNDATIONS
|
|
50
|
+
|
|
51
|
+
Two things go first:
|
|
52
|
+
1. Key abstractions and shared interfaces — later tasks build on these. If the foundation is wrong, everything above it is wasted.
|
|
53
|
+
2. Riskiest assumption — the thing that, if it doesn't work, invalidates everything else.
|
|
54
|
+
|
|
55
|
+
Later tasks MUST follow DRY — reuse the abstractions from early tasks, never reinvent. If two tasks duplicate logic, the plan is sliced wrong.
|
|
56
|
+
|
|
57
|
+
Examples: "Does the native addon run a pipeline?" — Task 1, not Task 15. "Define the shared auth interface" — Task 1, not scattered across 5 tasks.
|
|
58
|
+
|
|
59
|
+
### PHASE 3 — SELF-CRITIQUE
|
|
60
|
+
|
|
61
|
+
Golden rule: high cohesion within each task, low coupling between tasks. If a task needs the whole project to make sense, it's sliced wrong.
|
|
62
|
+
|
|
63
|
+
Check your draft against these failure modes:
|
|
64
|
+
- Low cohesion — does this task touch unrelated areas? Split by component boundary.
|
|
65
|
+
- High coupling — does task N depend heavily on task M's internals? Decouple via interfaces.
|
|
66
|
+
- Vague task — could two developers interpret this differently?
|
|
67
|
+
- Too large — more than ~50 tool calls? Split it.
|
|
68
|
+
- Hidden dependency — does task N assume something from task M that isn't explicit?
|
|
69
|
+
- Late verification — 5+ tasks before checking if the approach works?
|
|
70
|
+
- Wrong ordering — could the riskiest assumption be validated earlier?
|
|
71
|
+
- Missing "done" criteria — how does the member know the task is complete?
|
|
72
|
+
- Phase boundary at wrong place — does this phase mix unrelated subsystems that could be reviewed independently? Or does it split a cohesive unit across two phases?
|
|
73
|
+
- Untracked work — re-read every task description, note, and comment in your draft. Does any sentence say "X will also need to change", "X must be updated", or "X is a prerequisite"? If yes and there is no task that does that work, either add the task or explicitly state it is out of scope.
|
|
74
|
+
- Missing blocker — does this task depend on anything that another task produces or puts in place? If yes, that task must be listed in Blockers, even if the phase order implies it.
|
|
75
|
+
- Tier downgrade within a phase — does any task have a lower tier than the task before it in the same phase? If yes, either reorder (if dependencies allow) or split the phase at the downgrade point. Cross-phase tier order does not matter — each phase starts with a fresh session.
|
|
76
|
+
|
|
77
|
+
### PHASE 4 — REFINE
|
|
78
|
+
|
|
79
|
+
Rewrite incorporating critique:
|
|
80
|
+
- Move risky/uncertain tasks earlier
|
|
81
|
+
- Split vague tasks into specific ones
|
|
82
|
+
- VERIFY checkpoint at the natural completion boundary of each cohesive phase
|
|
83
|
+
- Every task has clear "done" criteria
|
|
84
|
+
|
|
85
|
+
### PHASE 5 — BRANCH & COMMIT
|
|
86
|
+
|
|
87
|
+
1. Read requirements.md for the base branch (default: `main`)
|
|
88
|
+
2. `git fetch origin && git checkout -b <feature-branch> origin/<base-branch>`
|
|
89
|
+
3. Commit the plan files to the feature branch — NEVER commit to the base branch
|
|
90
|
+
4. `git push -u origin <feature-branch>`
|
|
91
|
+
|
|
92
|
+
Output the final plan in tpl-plan.md format.
|
|
93
|
+
|
|
94
|
+
---
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Simple Sprint
|
|
2
|
+
|
|
3
|
+
A simple sprint is a short, focused task that a single member can complete in one or a few sessions. Use this when the work is small enough that a full task harness (PLAN.md, progress.json) is unnecessary overhead.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- 1–3 tasks, completable in a single session
|
|
8
|
+
- No complex phasing or cross-phase dependencies
|
|
9
|
+
- Low risk, well-understood scope
|
|
10
|
+
|
|
11
|
+
Use the full sprint lifecycle (single-pair-sprint.md) for anything larger.
|
|
12
|
+
|
|
13
|
+
## Flow
|
|
14
|
+
|
|
15
|
+
**Branch naming:** choose a name that makes the purpose immediately clear — `feat/<description>`, `bug_fix/<short_description>`, `chore/<description>`, etc. PM records this as `{{branch}}` in the agent context file before dispatch.
|
|
16
|
+
|
|
17
|
+
1. Write `<project>/requirements.md` — keep it concise but complete
|
|
18
|
+
2. Dispatch doer via ad-hoc `execute_prompt` — include requirements inline or reference the file
|
|
19
|
+
3. Doer completes work, commits, and pushes
|
|
20
|
+
4. PM dispatches reviewer (fresh session, `resume=false`) — send requirements + diff context
|
|
21
|
+
5. Reviewer outputs verdict: APPROVED or CHANGES NEEDED
|
|
22
|
+
6. On APPROVED: create low-priority Beads tasks for any unresolved findings or deferred items (see `backlog-item.md`), then cleanup and raise PR (see cleanup.md). STOP: Do not merge — surface the PR URL and CI status to the user and await explicit instruction.
|
|
23
|
+
7. On CHANGES NEEDED: send feedback to doer, re-dispatch, repeat from step 3
|
|
24
|
+
|
|
25
|
+
## Rules
|
|
26
|
+
|
|
27
|
+
- Still requires permissions, pre-flight checks, and doer/reviewer pairing (see doer-reviewer.md)
|
|
28
|
+
- No progress.json or PLAN.md — status is tracked in `<project>/status.md` by PM
|
|
29
|
+
- Agent context file is still required for doer and reviewer (see context-file.md)
|
|
30
|
+
|
|
31
|
+
## Recovery After PM Restart
|
|
32
|
+
|
|
33
|
+
No progress.json — recovery relies on git history and status.md.
|
|
34
|
+
|
|
35
|
+
1. `execute_command → git log --oneline -5` on member — any commits since last known state?
|
|
36
|
+
2. `execute_command → git status` — uncommitted changes?
|
|
37
|
+
3. Compare against `<project>/status.md` — what did PM last know?
|
|
38
|
+
|
|
39
|
+
- **Work committed, next step clear** → resume doer with `resume=true` or dispatch reviewer
|
|
40
|
+
- **At review checkpoint** → dispatch reviewer with `resume=false`
|
|
41
|
+
- **Uncommitted changes of unknown origin** → escalate to user: "commit and resume, or discard?"
|
|
42
|
+
- **No progress** → re-dispatch from scratch
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Running a Sprint
|
|
2
|
+
|
|
3
|
+
A sprint is a focused unit of work executed by a doer/reviewer pair against a codebase. This document covers the full lifecycle from initiation to PR raise.
|
|
4
|
+
|
|
5
|
+
## Lifecycle
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
vision → requirements → design → plan → development → testing → deployment
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
PM drives work through these phases in order. Don't skip, don't stall between them.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Phase 1 — Requirements
|
|
16
|
+
|
|
17
|
+
Write `<project>/requirements.md`. Quality bar:
|
|
18
|
+
- Include full issue details — code locations, root causes, impact data
|
|
19
|
+
- Never summarize into 2-3 line descriptions — include full issue text, code locations, root causes
|
|
20
|
+
- Front-load risk — the riskiest assumption must be validated in Task 1 of the plan
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Phase 2 — Plan Generation
|
|
25
|
+
|
|
26
|
+
**Branch naming:** choose a name that makes the purpose of the branch immediately clear — `sprint/<description>`, `feat/<description>`, `bug_fix/<short_description>`, etc. PM records this as `{{branch}}` in the agent context file before dispatch.
|
|
27
|
+
|
|
28
|
+
1. Send `requirements.md` and `tpl-plan.md` to doer via `send_files`
|
|
29
|
+
2. Dispatch `plan-prompt.md` via `execute_prompt` (wrapped in background Agent)
|
|
30
|
+
3. Run doer-reviewer loop (see `doer-reviewer.md`) using `tpl-reviewer-plan.md` for the reviewer
|
|
31
|
+
4. Iterate until plan passes quality criteria
|
|
32
|
+
5. Once APPROVED: save `planned.json` in `<project>/` — this is the immutable original, never modify it
|
|
33
|
+
6. **Beads: push plan tasks** — for each task in PLAN.md, create a Beads task and wire dependencies:
|
|
34
|
+
```bash
|
|
35
|
+
bd create "T1.1: <title>" -p 1 --parent <epic-id> --assignee <doer> # → task-id
|
|
36
|
+
bd create "T1.2: <title>" -p 2 --parent <epic-id> --assignee <doer> # → task-id
|
|
37
|
+
bd dep add <T1.2-id> <T1.1-id> # T1.2 blocked until T1.1 done
|
|
38
|
+
```
|
|
39
|
+
Record all task IDs in `<project>/status.md` Beads section. See `beads.md`.
|
|
40
|
+
7. Proceed to Phase 3
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Phase 3 — Execution
|
|
45
|
+
|
|
46
|
+
### Task Harness
|
|
47
|
+
|
|
48
|
+
The task harness is the set of files sent to the doer's `work_folder` root via `send_files` to bootstrap execution:
|
|
49
|
+
|
|
50
|
+
1. **Agent context file** — from `tpl-doer.md`. See `context-file.md` for filename and delivery rules.
|
|
51
|
+
2. **PLAN.md** — implementation plan with phases and tasks
|
|
52
|
+
3. **progress.json** — task tracker (generated from PLAN.md per `tpl-progress.json`)
|
|
53
|
+
4. **Project docs** — `requirements.md`, `design.md`, and any other docs the doer needs. Doer commits these to the branch. Re-send via `send_files` if PM-side docs are updated mid-sprint.
|
|
54
|
+
|
|
55
|
+
`progress.json` is the living state. Always query it for current status.
|
|
56
|
+
|
|
57
|
+
### Per-Task Dispatch Algorithm
|
|
58
|
+
|
|
59
|
+
Before each doer dispatch, PM reads `planned.json` and `progress.json`:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
nextTask = planned.json.tasks.find(t => t.status === "pending")
|
|
63
|
+
tier = nextTask.tier
|
|
64
|
+
resume = (nextTask.phase === lastDispatchedPhase) // from status.md
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Dispatch ONE task at `model: <tier>`. PM records `lastDispatchedPhase = nextTask.phase` in `status.md` after each dispatch.
|
|
68
|
+
|
|
69
|
+
### Execution Loop
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
PM sends task harness → dispatches doer (resume per data-driven rule, model=nextTask.tier)
|
|
73
|
+
→ bd update <task-id> --status in_progress --assignee <doer>
|
|
74
|
+
→ doer reads progress.json → executes next pending task → commits → updates progress.json
|
|
75
|
+
→ hits VERIFY checkpoint → STOPS → PM reads progress.json
|
|
76
|
+
→ bd close <verify-id>
|
|
77
|
+
→ PM dispatches REVIEWER (model=premium) → reviewer reads deliverables + diff → commits verdict to feedback.md → pushes
|
|
78
|
+
→ APPROVED: PM dispatches doer for next task (resume=true if same phase) → repeat
|
|
79
|
+
→ CHANGES NEEDED: bd create "<finding>" -p 0 --parent <epic-id> --assignee <doer> per HIGH finding → PM sends feedback to doer → doer fixes → bd close <finding-id> → PM re-dispatches REVIEWER → repeat
|
|
80
|
+
→ all tasks done → move to next phase or completion
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Session Rules
|
|
84
|
+
|
|
85
|
+
| Dispatch | resume |
|
|
86
|
+
|----------|--------|
|
|
87
|
+
| New phase (`nextTask.phase !== lastDispatchedPhase`) | `false` |
|
|
88
|
+
| Same phase (`nextTask.phase === lastDispatchedPhase`) | `true` |
|
|
89
|
+
| After reviewer CHANGES NEEDED → doer fix | `true` |
|
|
90
|
+
| Initial review dispatch | `false` |
|
|
91
|
+
| Re-review after fixes | `true` |
|
|
92
|
+
| Role switch (doer↔reviewer) | `false` |
|
|
93
|
+
|
|
94
|
+
**Data-driven resume rule** — derived from `planned.json` phase numbers, not manually reasoned:
|
|
95
|
+
|
|
96
|
+
| Condition | resume |
|
|
97
|
+
|-----------|--------|
|
|
98
|
+
| `nextTask.phase === lastDispatchedPhase` | `true` |
|
|
99
|
+
| `nextTask.phase !== lastDispatchedPhase` (new phase) | `false` |
|
|
100
|
+
| After reviewer CHANGES NEEDED → doer fix | `true` |
|
|
101
|
+
| Role switch (doer ↔ reviewer) | `false` |
|
|
102
|
+
|
|
103
|
+
### Permissions
|
|
104
|
+
|
|
105
|
+
Before kicking off execution, compose and deliver permissions for each member's role (see the fleet skill, `permissions.md`). Recompose on every role switch.
|
|
106
|
+
|
|
107
|
+
**Mid-sprint denial:** If a member is blocked by a permission denial, call `compose_permissions` with `grant: [<denied permission>]` and `project_folder` — this grants the missing permission, delivers the updated config, and appends to the ledger so future phases and sprints start with it already included. Then resume the member with `resume=true`. Never bypass by running the denied command yourself via `execute_command`.
|
|
108
|
+
|
|
109
|
+
### Monitoring
|
|
110
|
+
|
|
111
|
+
- Check progress: `execute_command → cat progress.json`
|
|
112
|
+
- Check git: `execute_command → git log --oneline -10`
|
|
113
|
+
- Members may blow past VERIFY checkpoints if context gets large — dispatch a review immediately when caught
|
|
114
|
+
- Long-running branches: check drift with `git log <branch>..origin/main --oneline`. If main moved, instruct rebase + retest
|
|
115
|
+
- After every review verdict: create low-priority Beads tasks for unaddressed MEDIUM/LOW findings and deferred scope items (`bd create "<item>" -p 3 --parent <epic-id>` — see `backlog-item.md` for required description fields)
|
|
116
|
+
- Deferred items from user ("add to backlog", "defer this"): `bd create "<description>" -p 3 --parent <epic-id>`
|
|
117
|
+
|
|
118
|
+
### Safeguards
|
|
119
|
+
|
|
120
|
+
| Safeguard | Trigger | PM Action | Limit |
|
|
121
|
+
|-----------|---------|-----------|-------|
|
|
122
|
+
| Max-turns budget | Every dispatch | Session ends naturally at turn limit | Set per dispatch in `execute_prompt` |
|
|
123
|
+
| PM retry limit | Same dispatch fails (error, no output) | Retry up to 3×, then pause + flag user | 3 retries per dispatch |
|
|
124
|
+
| Doer-reviewer cycle limit | Reviewer returns CHANGES NEEDED | Re-dispatch doer with feedback; if 3 cycles don't resolve all HIGH items, pause + flag user | 3 cycles per phase |
|
|
125
|
+
| Model escalation | Zero progress after resets | Reset and resume; after 2 resets with zero progress: escalate model (`cheap`→`standard`→`premium`). Still zero? Flag user | 2 resets per model tier |
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Phase 4 — Deployment
|
|
130
|
+
|
|
131
|
+
Run `<project>/deploy.md` steps on the member via `execute_command`. Verification and rollback steps must be defined in `deploy.md` by the user — follow them exactly. On failure, execute the rollback steps in `deploy.md` and flag the user.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Sprint Completion
|
|
136
|
+
|
|
137
|
+
When all phases are APPROVED:
|
|
138
|
+
|
|
139
|
+
1. **Documentation Harvest** — Dispatch a member to extract long-term knowledge from `requirements.md`, `design.md`, and `PLAN.md` into `docs/`. Structure inside `docs/` is content-driven (e.g. `docs/architecture.md`, `docs/features/<name>.md`). Extract: architecture decisions, feature design, key trade-offs, API contracts. Do NOT extract: task lists, code-line references, debug notes, implementation steps. Member commits the docs/ output to the branch. Then dispatch reviewer to review the harvest — verify it captures durable knowledge and nothing transient slipped in. Iterate until APPROVED.
|
|
140
|
+
|
|
141
|
+
2. **Cleanup and raise PR** — See cleanup.md.
|
|
142
|
+
|
|
143
|
+
STOP: Sprint is complete. Do not merge the PR. Surface the PR URL and CI status to the user and await explicit instruction to merge.
|
|
144
|
+
|
|
145
|
+
3. **Deferred items** — any unresolved MEDIUM/LOW findings or deferred scope from this sprint should already be in Beads as low-priority tasks. Verify with `bd list --all --pretty`.
|
|
146
|
+
|
|
147
|
+
4. **Update status.md** — mark sprint complete, record member states. Clear `lastDispatchedPhase`.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Recovery After PM Restart
|
|
152
|
+
|
|
153
|
+
When the PM session ends unexpectedly, remote agent CLI processes are killed (SSH channel close → SIGHUP). Partial work may be uncommitted.
|
|
154
|
+
|
|
155
|
+
**Step 0 — Global triage:** Run `bd list --all --pretty` first for PM dispatch state across all projects (no file reads needed for orientation). Then `fleet_status` to check member connectivity. **Important:** Beads reflects PM actions (dispatch/close), not member execution — always follow up with `cat progress.json` per member to confirm actual completion state. A task marked `in_progress` in Beads may be incomplete on disk if the member crashed mid-task.
|
|
156
|
+
|
|
157
|
+
For each member in the project:
|
|
158
|
+
1. `execute_command → cat progress.json` — what tasks are completed/pending/blocked?
|
|
159
|
+
- **On reviewer members:** progress.json is not authoritative — it reflects the doer's task state at last sync. Check `git log --oneline -- feedback.md` for reviewer progress instead.
|
|
160
|
+
2. `execute_command → git log --oneline -5` — any commits since last known state?
|
|
161
|
+
3. `execute_command → git status` — uncommitted changes?
|
|
162
|
+
4. Compare against local `<project>/status.md` — what did PM last know? Check `lastDispatchedPhase` to determine resume vs. fresh-session for next dispatch.
|
|
163
|
+
|
|
164
|
+
Present a per-member state summary before acting:
|
|
165
|
+
|
|
166
|
+
| Member | PM last knew | Actual state | Delta | Action |
|
|
167
|
+
|--------|-------------|--------------|-------|--------|
|
|
168
|
+
| <name> | <phase/task from status.md> | <last commit + progress summary> | <what changed> | auto-resume / escalate |
|
|
169
|
+
|
|
170
|
+
**Auto-resume** (PM acts immediately, no user input needed):
|
|
171
|
+
- **Checkpoint reached, review pending** → dispatch reviewer now
|
|
172
|
+
- **Mid-task with commits, clear next step** → resume doer with `resume=true`
|
|
173
|
+
- **No progress, member idle** → re-dispatch from last known state
|
|
174
|
+
|
|
175
|
+
**Escalate to user** (ambiguous or risky — present options and wait):
|
|
176
|
+
- **Uncommitted changes of unknown origin** → "member has uncommitted work not matching any known task. Commit and resume, or discard?"
|
|
177
|
+
- **Conflicting state** (progress.json says complete but git shows no commits) → "state inconsistency detected. Investigate or reset?"
|
|
178
|
+
- **Zero progress after re-dispatch** → "member made no progress after re-dispatch. Escalate model or reassign?"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# {{PROJECT_NAME}} — Deploy
|
|
2
|
+
|
|
3
|
+
## Steps
|
|
4
|
+
<!-- Replace with your project's deploy sequence. PM executes these via execute_command on the member. -->
|
|
5
|
+
|
|
6
|
+
<!-- Example: Node.js app -->
|
|
7
|
+
<!-- git pull origin main -->
|
|
8
|
+
<!-- npm install -->
|
|
9
|
+
<!-- npm run build -->
|
|
10
|
+
<!-- pm2 restart app -->
|
|
11
|
+
|
|
12
|
+
<!-- Example: GitHub release -->
|
|
13
|
+
<!-- gh release download latest -p '*.tar.gz' -->
|
|
14
|
+
<!-- tar xzf *.tar.gz -->
|
|
15
|
+
<!-- ./install.sh -->
|
|
16
|
+
|
|
17
|
+
<!-- Example: Serverless -->
|
|
18
|
+
<!-- cd deploy && sls deploy --stage prod -->
|
|
19
|
+
|
|
20
|
+
## Verify
|
|
21
|
+
<!-- How to confirm the deploy worked. PM runs this after deploy steps. -->
|
|
22
|
+
<!-- curl -s http://localhost:3000/health -->
|
|
23
|
+
<!-- sls info --stage prod -->
|
|
24
|
+
<!-- systemctl status app -->
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Design — {{BACKLOG_ID}} {{TITLE}}
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
- {{symptom}} — {{specific example}}
|
|
5
|
+
- {{root cause}} — {{technical explanation}}
|
|
6
|
+
|
|
7
|
+
## Solution
|
|
8
|
+
{{2-4 sentences: what changes, what stays, key architectural shift}}
|
|
9
|
+
|
|
10
|
+
## Data Model
|
|
11
|
+
`{{file_path}}`:
|
|
12
|
+
```json
|
|
13
|
+
{{concrete example with real values, 3-5 entries}}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## API Changes
|
|
17
|
+
| Method | Path | Body | Purpose |
|
|
18
|
+
|--------|------|------|---------|
|
|
19
|
+
|
|
20
|
+
## What Gets Deleted
|
|
21
|
+
| File / Symbol | Why |
|
|
22
|
+
|---------------|-----|
|
|
23
|
+
|
|
24
|
+
## What Stays / Adapts
|
|
25
|
+
| What | Change |
|
|
26
|
+
|------|--------|
|
|
27
|
+
|
|
28
|
+
## Out of Scope
|
|
29
|
+
- {{thing NOT to build}} — {{why not now}}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# {{PROJECT_NAME}} - Plan Execution
|
|
2
|
+
|
|
3
|
+
## Context Recovery
|
|
4
|
+
Before starting any work: `git log --oneline -10`
|
|
5
|
+
|
|
6
|
+
## Execution Model
|
|
7
|
+
You are executing a plan defined in PLAN.md. Progress tracked in progress.json.
|
|
8
|
+
|
|
9
|
+
On each invocation:
|
|
10
|
+
1. Read progress.json — find next task with status "pending"
|
|
11
|
+
2. Read PLAN.md — get full details for that task
|
|
12
|
+
3. Execute — write code, run tests, fix issues
|
|
13
|
+
4. Commit with descriptive message referencing the task ID
|
|
14
|
+
5. Update progress.json — set task to "completed", add notes
|
|
15
|
+
6. Continue to next pending task
|
|
16
|
+
|
|
17
|
+
## Verify Checkpoints
|
|
18
|
+
Tasks with type "verify" are checkpoints. When you reach one:
|
|
19
|
+
1. Run the project build step (e.g. `npm run build`, `tsc`, `cargo build`) and linter check (e.g. `npm run lint`, `eslint`, `cargo clippy` if configured) first, then run the full test suite (unit, integration, e2e). All of them must pass.
|
|
20
|
+
2. Confirm all prior tasks in the group work correctly
|
|
21
|
+
3. Update progress.json with test results and issues found
|
|
22
|
+
4. `git push origin {{branch}}` - code must be on origin before PM reviews
|
|
23
|
+
5. STOP - do not continue. Report status so the PM can review.
|
|
24
|
+
|
|
25
|
+
## Branch Hygiene
|
|
26
|
+
- Before creating a branch: `git fetch origin && git checkout origin/{{base_branch}}`
|
|
27
|
+
- Before pushing a PR or at PM's request: `git fetch origin && git rebase origin/{{base_branch}}`, rerun tests after rebase
|
|
28
|
+
|
|
29
|
+
## Secrets & API Keys
|
|
30
|
+
|
|
31
|
+
If this task requires secrets, API keys, or tokens (e.g., external API calls, private registry pushes, third-party service authentication), check whether the PM has pre-loaded them via the credential store before you start. Use `{{secure.NAME}}` tokens only in `execute_command` — never in prompts or log messages. Fleet resolves and redacts them automatically in commands. Do not ask for raw secret values in conversation; if a required `sec://NAME` handle is missing, report it as a blocker so the PM can store it OOB.
|
|
32
|
+
|
|
33
|
+
## Rules
|
|
34
|
+
- ONE task at a time, then commit, then continue
|
|
35
|
+
- After every commit: run fast/unit tests and linter checks. If they fail, fix before moving to the next task.
|
|
36
|
+
- Always update progress.json after each task
|
|
37
|
+
- Blocker? Set status to "blocked" with notes, then STOP
|
|
38
|
+
- NEVER skip tasks - execute in order
|
|
39
|
+
- Read PLAN.md before starting each task
|
|
40
|
+
- Commit and push PLAN.md, progress.json, and all project docs (design.md, feedback-*.md) at every turn - reviewers depend on them
|
|
41
|
+
- NEVER commit this agent context file (CLAUDE.md / GEMINI.md / AGENTS.md / COPILOT.md / AGY.md) - it is role-specific and not shared
|
|
42
|
+
- NEVER push to the base branch (main, master, or integration branch) - always work on feature branches
|
|
43
|
+
- NEVER stage or commit `.fleet-task.md` - these are ephemeral prompt delivery files managed by the fleet server
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# {{PROJECT_NAME}} — Implementation Plan
|
|
2
|
+
|
|
3
|
+
> {{PLAN_SUMMARY}}
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Tasks
|
|
8
|
+
|
|
9
|
+
### Phase 1: {{PHASE_1_NAME}}
|
|
10
|
+
|
|
11
|
+
#### Task 1: {{TASK_TITLE}}
|
|
12
|
+
- **Change:** {{what to do}}
|
|
13
|
+
- **Files:** {{which files}}
|
|
14
|
+
- **Tier:** cheap | standard | premium
|
|
15
|
+
- **Done when:** {{acceptance criteria}}
|
|
16
|
+
- **Blockers:** {{potential blockers}}
|
|
17
|
+
|
|
18
|
+
#### Task 2: {{TASK_TITLE}}
|
|
19
|
+
- **Change:** {{what to do}}
|
|
20
|
+
- **Files:** {{which files}}
|
|
21
|
+
- **Tier:** cheap | standard | premium
|
|
22
|
+
- **Done when:** {{acceptance criteria}}
|
|
23
|
+
- **Blockers:** {{potential blockers}}
|
|
24
|
+
|
|
25
|
+
#### Task 3: {{TASK_TITLE}}
|
|
26
|
+
- **Change:** {{what to do}}
|
|
27
|
+
- **Files:** {{which files}}
|
|
28
|
+
- **Tier:** cheap | standard | premium
|
|
29
|
+
- **Done when:** {{acceptance criteria}}
|
|
30
|
+
- **Blockers:** {{potential blockers}}
|
|
31
|
+
|
|
32
|
+
#### VERIFY: {{PHASE_1_NAME}}
|
|
33
|
+
- Run full test suite
|
|
34
|
+
- Confirm all Phase 1 changes work together
|
|
35
|
+
- Report: tests passing, any regressions, any issues found
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
### Phase 2: {{PHASE_2_NAME}}
|
|
40
|
+
|
|
41
|
+
#### Task 4: {{TASK_TITLE}}
|
|
42
|
+
{{TASK_DETAILS}}
|
|
43
|
+
|
|
44
|
+
...
|
|
45
|
+
|
|
46
|
+
#### VERIFY: {{PHASE_2_NAME}}
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Risk Register
|
|
51
|
+
|
|
52
|
+
| Risk | Impact | Mitigation |
|
|
53
|
+
|------|--------|------------|
|
|
54
|
+
| {{risk}} | {{high/med/low}} | {{mitigation}} |
|
|
55
|
+
|
|
56
|
+
Cover at minimum: backward compat (changed interfaces, renamed items), security (trust boundaries, input validation), external constraints (no new dependencies, min runtime version), partial failure (one path works, another doesn't).
|
|
57
|
+
|
|
58
|
+
## Phase Sizing Rules
|
|
59
|
+
|
|
60
|
+
**Phase boundaries by cohesion, not count.** A phase is a coherent unit of work that produces a reviewable, testable increment. Group tasks into a phase when they share a data model, code path, or design decision — splitting them would produce an incoherent intermediate state or require touching the same code twice. Place a VERIFY at the natural completion boundary of that unit, not at an arbitrary task count. Phases may have 4-5 tasks (a coherent subsystem) or just 1-2 (a genuinely isolated change).
|
|
61
|
+
|
|
62
|
+
**Monotonically non-decreasing tiers within a phase.** Within a phase, order tasks cheap → standard → premium. The PM resumes the same session across tasks in a phase — a premium task can build a large context that a cheap model cannot load. The PM may group consecutive same-tier tasks into a single dispatch streak; tier transitions trigger a new dispatch. If a dependency forces a higher-tier task before a lower-tier task within a phase, split the phase at that boundary rather than violating the ordering rule. Cross-phase tier order does not matter — each phase always starts a fresh session.
|
|
63
|
+
```
|
|
64
|
+
cheap → cheap → standard → standard → premium → VERIFY [VALID]
|
|
65
|
+
cheap → standard → cheap → VERIFY [INVALID] (downgrade within phase — split into two phases)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Notes
|
|
69
|
+
- Each task should result in a git commit
|
|
70
|
+
- Verify tasks are checkpoints — stop and report after each one
|
|
71
|
+
- Base branch: {{base_branch}}
|
|
72
|
+
- Implementation branch: {{impl_branch}}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_schema": {
|
|
3
|
+
"type": "work | verify",
|
|
4
|
+
"status": "pending | completed | blocked"
|
|
5
|
+
},
|
|
6
|
+
"project": "{{PROJECT_NAME}}",
|
|
7
|
+
"plan_file": "PLAN.md",
|
|
8
|
+
"created": "{{DATE}}",
|
|
9
|
+
"tasks": [
|
|
10
|
+
{
|
|
11
|
+
"id": 1,
|
|
12
|
+
"step": "{{TASK_TITLE}}",
|
|
13
|
+
"type": "work",
|
|
14
|
+
"status": "pending",
|
|
15
|
+
"tier": "standard",
|
|
16
|
+
"commit": "",
|
|
17
|
+
"notes": ""
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": 2,
|
|
21
|
+
"step": "VERIFY: {{PHASE_NAME}}",
|
|
22
|
+
"type": "verify",
|
|
23
|
+
"status": "pending",
|
|
24
|
+
"commit": "",
|
|
25
|
+
"notes": ""
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Requirements — {{BACKLOG_ID}} {{TITLE}}
|
|
2
|
+
|
|
3
|
+
## Base Branch
|
|
4
|
+
`{{main | v020_dev | etc}}` — branch to fork from and merge back to
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
{{1-2 sentences: what the user wants and why}}
|
|
8
|
+
|
|
9
|
+
## Scope
|
|
10
|
+
- {{specific deliverable}}
|
|
11
|
+
- {{specific deliverable}}
|
|
12
|
+
|
|
13
|
+
## Out of Scope
|
|
14
|
+
- {{thing NOT to build}} — {{why not now}}
|
|
15
|
+
|
|
16
|
+
## Constraints
|
|
17
|
+
- {{technical, timeline, or compatibility constraint}}
|
|
18
|
+
|
|
19
|
+
## Acceptance Criteria
|
|
20
|
+
- [ ] {{observable outcome that proves the goal is met}}
|
|
21
|
+
- [ ] {{observable outcome}}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Plan Review
|
|
2
|
+
|
|
3
|
+
You are reviewing a plan in PLAN.md against requirements.md and any design docs in the work folder.
|
|
4
|
+
|
|
5
|
+
## Check each item
|
|
6
|
+
|
|
7
|
+
1. Does every task have clear "done" criteria?
|
|
8
|
+
2. High cohesion within each task, low coupling between tasks?
|
|
9
|
+
3. Are key abstractions and shared interfaces in the earliest tasks?
|
|
10
|
+
4. Is the riskiest assumption validated in Task 1?
|
|
11
|
+
5. Later tasks reuse early abstractions (DRY)?
|
|
12
|
+
6. Are phase boundaries drawn at cohesion boundaries — each phase is a coherent unit producing a reviewable, testable increment (tasks share a data model, code path, or design decision)?
|
|
13
|
+
7. Are tiers monotonically non-decreasing within each phase (cheap → standard → premium, never downgrading mid-phase)?
|
|
14
|
+
8. Each task completable in one session?
|
|
15
|
+
9. Dependencies satisfied in order?
|
|
16
|
+
10. Any vague tasks that two developers would interpret differently?
|
|
17
|
+
11. Any hidden dependencies between tasks?
|
|
18
|
+
12. Does the plan include a risk register? If missing or incomplete, identify the risks yourself and add them as findings
|
|
19
|
+
13. Does the plan align with requirements.md intent — solving the right problem, not just a technically clean plan?
|
|
20
|
+
|
|
21
|
+
## Output
|
|
22
|
+
|
|
23
|
+
If this is a re-review: run `git log --oneline -- feedback.md` then `git show <sha>` on prior versions to understand what was previously flagged and how the doer addressed it. Incorporate those responses into your new write-up.
|
|
24
|
+
|
|
25
|
+
Overwrite feedback.md with this structure:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
# {{sprint_name}} — Plan Review
|
|
29
|
+
|
|
30
|
+
**Reviewer:** {{member_name}}
|
|
31
|
+
**Date:** YYYY-MM-DD HH:MM:SS+TZ
|
|
32
|
+
**Verdict:** APPROVED | CHANGES NEEDED
|
|
33
|
+
|
|
34
|
+
> See the recent git history of this file to understand the context of this review.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## <Review section>
|
|
39
|
+
|
|
40
|
+
<Detailed narrative. PASS/FAIL/NOTE inline. Explain what you found, where, and why it matters.>
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Summary
|
|
45
|
+
|
|
46
|
+
<Synthesize what passed, what must change, what is deferred.>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
For each check: PASS or FAIL with narrative — not one-liners.
|
|
50
|
+
|
|
51
|
+
If verdict is CHANGES NEEDED: the doer annotates each relevant section with `**Doer:** fixed in commit <sha> — <what changed>` before requesting re-review.
|
|
52
|
+
|
|
53
|
+
Commit feedback.md and push.
|