@fitlab-ai/agent-infra 0.8.5 → 0.9.1
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/README.md +6 -1
- package/README.zh-CN.md +5 -1
- package/bin/cli.ts +2 -2
- package/dist/bin/cli.js +2 -2
- package/dist/bin/internal-cli.js +103 -0
- package/dist/lib/decide.js +81 -90
- package/dist/lib/defaults.json +1 -0
- package/dist/lib/git/review-snapshot.js +79 -0
- package/dist/lib/git/workflow.js +101 -0
- package/dist/lib/internal/git-workflow.js +42 -0
- package/dist/lib/internal/platform-checks.js +119 -0
- package/dist/lib/internal/platform-comment.js +129 -0
- package/dist/lib/internal/platform-context.js +46 -0
- package/dist/lib/internal/platform-issue.js +142 -0
- package/dist/lib/internal/platform-pr.js +146 -0
- package/dist/lib/internal/platform-release-notes.js +53 -0
- package/dist/lib/internal/release-workflow.js +320 -0
- package/dist/lib/internal/task-artifact.js +67 -0
- package/dist/lib/internal/task-context.js +43 -0
- package/dist/lib/internal/task-event.js +70 -0
- package/dist/lib/internal/task-ledger.js +114 -0
- package/dist/lib/internal/task-lifecycle.js +58 -0
- package/dist/lib/internal/task-short-id.js +83 -0
- package/dist/lib/internal/task-snapshot.js +47 -0
- package/dist/lib/internal/task-verify.js +50 -0
- package/dist/lib/internal/task-warning.js +74 -0
- package/dist/lib/platform/adapters.js +14 -0
- package/dist/lib/platform/context.js +146 -0
- package/dist/lib/platform/github-client.js +124 -0
- package/dist/lib/platform/github-release-notes.js +96 -0
- package/dist/lib/platform/issue-comments.js +409 -0
- package/dist/lib/platform/issue-metadata.js +183 -0
- package/dist/lib/platform/issues.js +619 -0
- package/dist/lib/platform/merged-pr-equivalence.js +54 -0
- package/dist/lib/platform/metadata-labels.js +28 -0
- package/dist/lib/platform/pr-checks.js +216 -0
- package/dist/lib/platform/pr-summary.js +88 -0
- package/dist/lib/platform/pull-request-metadata.js +38 -0
- package/dist/lib/platform/pull-requests.js +340 -0
- package/dist/lib/platform/release-notes.js +143 -0
- package/dist/lib/platform/releases.js +82 -0
- package/dist/lib/platform/types.js +22 -0
- package/dist/lib/platform/verification-required.js +102 -0
- package/dist/lib/platform/verification-sync.js +1014 -0
- package/dist/lib/platform/verification.js +6 -0
- package/dist/lib/release/channels.js +31 -0
- package/dist/lib/release/workflow.js +32 -0
- package/dist/lib/render.js +3 -2
- package/dist/lib/run/index.js +24 -7
- package/dist/lib/sandbox/build-proxy.js +63 -0
- package/dist/lib/sandbox/capture.js +25 -3
- package/dist/lib/sandbox/commands/create.js +93 -31
- package/dist/lib/sandbox/commands/enter.js +34 -11
- package/dist/lib/sandbox/commands/list-running.js +10 -8
- package/dist/lib/sandbox/commands/rebuild.js +24 -7
- package/dist/lib/sandbox/commands/show.js +2 -2
- package/dist/lib/sandbox/commands/start.js +53 -15
- package/dist/lib/sandbox/image-build.js +2 -1
- package/dist/lib/sandbox/index.js +6 -6
- package/dist/lib/sandbox/mounts.js +36 -0
- package/dist/lib/sandbox/recovery.js +562 -0
- package/dist/lib/sandbox/runtimes/ai-tools.dockerfile +24 -3
- package/dist/lib/sandbox/runtimes/base.dockerfile +8 -1
- package/dist/lib/sandbox/runtimes/java17.dockerfile +8 -1
- package/dist/lib/sandbox/runtimes/java21.dockerfile +8 -1
- package/dist/lib/sandbox/runtimes/node20.dockerfile +8 -1
- package/dist/lib/sandbox/runtimes/node22.dockerfile +8 -1
- package/dist/lib/sandbox/runtimes/python3.dockerfile +8 -1
- package/dist/lib/sandbox/shell.js +2 -1
- package/dist/lib/sandbox/task-resolver.js +5 -1
- package/dist/lib/sandbox/tools.js +19 -0
- package/dist/lib/server/protocol.js +5 -5
- package/dist/lib/task/activity-log.js +61 -0
- package/dist/lib/task/artifact-lifecycle.js +427 -0
- package/dist/lib/task/command-options.js +30 -0
- package/dist/lib/task/commands/cat.js +36 -6
- package/dist/lib/task/commands/decisions.js +80 -46
- package/dist/lib/task/commands/files.js +21 -7
- package/dist/lib/task/commands/grep.js +55 -7
- package/dist/lib/task/commands/issue-body.js +33 -19
- package/dist/lib/task/commands/log.js +27 -70
- package/dist/lib/task/commands/show.js +20 -7
- package/dist/lib/task/commands/status.js +18 -8
- package/dist/lib/task/decision-intents.js +154 -0
- package/dist/lib/task/decision-items.js +53 -0
- package/dist/lib/task/events.js +318 -0
- package/dist/lib/task/frontmatter.js +159 -1
- package/dist/lib/task/implementation-inputs.js +117 -0
- package/dist/lib/task/index.js +12 -9
- package/dist/lib/task/issue-form.js +21 -6
- package/dist/lib/task/ledger-intents.js +185 -0
- package/dist/lib/task/ledger.js +65 -35
- package/dist/lib/task/lifecycle.js +484 -0
- package/dist/lib/task/resolve-ref.js +152 -32
- package/dist/lib/task/review-artifacts.js +101 -0
- package/dist/lib/task/review-fingerprint.js +55 -0
- package/dist/lib/task/sections.js +358 -4
- package/dist/lib/task/short-id.js +292 -7
- package/dist/lib/task/snapshot.js +95 -0
- package/dist/lib/task/verification-checks.js +8 -0
- package/dist/lib/task/verification-config.js +14 -0
- package/dist/lib/task/verification-engine.js +923 -0
- package/dist/lib/task/verification-review.js +3 -0
- package/dist/lib/task/verification-types.js +2 -0
- package/dist/lib/task/verification.js +113 -0
- package/dist/lib/task/workflow-warning-intents.js +131 -0
- package/dist/lib/task/workflow-warnings.js +10 -78
- package/dist/lib/task/write.js +241 -0
- package/lib/decide.ts +57 -97
- package/lib/defaults.json +1 -0
- package/lib/git/review-snapshot.ts +73 -0
- package/lib/git/workflow.ts +101 -0
- package/lib/internal/git-workflow.ts +37 -0
- package/lib/internal/platform-checks.ts +101 -0
- package/lib/internal/platform-comment.ts +99 -0
- package/lib/internal/platform-context.ts +33 -0
- package/lib/internal/platform-issue.ts +116 -0
- package/lib/internal/platform-pr.ts +119 -0
- package/lib/internal/platform-release-notes.ts +55 -0
- package/lib/internal/release-workflow.ts +288 -0
- package/lib/internal/task-artifact.ts +47 -0
- package/lib/internal/task-context.ts +35 -0
- package/lib/internal/task-event.ts +51 -0
- package/lib/internal/task-ledger.ts +86 -0
- package/lib/internal/task-lifecycle.ts +41 -0
- package/lib/internal/task-short-id.ts +55 -0
- package/lib/internal/task-snapshot.ts +32 -0
- package/lib/internal/task-verify.ts +33 -0
- package/lib/internal/task-warning.ts +50 -0
- package/lib/platform/adapters.ts +30 -0
- package/lib/platform/context.ts +164 -0
- package/lib/platform/github-client.ts +146 -0
- package/lib/platform/github-release-notes.ts +132 -0
- package/lib/platform/issue-comments.ts +479 -0
- package/lib/platform/issue-metadata.ts +250 -0
- package/lib/platform/issues.ts +693 -0
- package/lib/platform/merged-pr-equivalence.ts +70 -0
- package/lib/platform/metadata-labels.ts +33 -0
- package/lib/platform/pr-checks.ts +247 -0
- package/lib/platform/pr-summary.ts +90 -0
- package/lib/platform/pull-request-metadata.ts +69 -0
- package/lib/platform/pull-requests.ts +386 -0
- package/lib/platform/release-notes.ts +167 -0
- package/lib/platform/releases.ts +71 -0
- package/lib/platform/types.ts +74 -0
- package/lib/platform/verification-required.ts +109 -0
- package/{runtime/platform-adapters/platform-sync.github.js → lib/platform/verification-sync.ts} +198 -367
- package/lib/platform/verification.ts +11 -0
- package/lib/release/channels.ts +30 -0
- package/lib/release/workflow.ts +31 -0
- package/lib/render.ts +3 -2
- package/lib/run/index.ts +25 -7
- package/lib/sandbox/build-proxy.ts +94 -0
- package/lib/sandbox/capture.ts +29 -3
- package/lib/sandbox/commands/create.ts +120 -36
- package/lib/sandbox/commands/enter.ts +38 -11
- package/lib/sandbox/commands/list-running.ts +10 -8
- package/lib/sandbox/commands/rebuild.ts +29 -7
- package/lib/sandbox/commands/show.ts +2 -2
- package/lib/sandbox/commands/start.ts +50 -16
- package/lib/sandbox/image-build.ts +4 -1
- package/lib/sandbox/index.ts +6 -6
- package/lib/sandbox/mounts.ts +55 -0
- package/lib/sandbox/recovery.ts +828 -0
- package/lib/sandbox/runtimes/ai-tools.dockerfile +24 -3
- package/lib/sandbox/runtimes/base.dockerfile +8 -1
- package/lib/sandbox/runtimes/java17.dockerfile +8 -1
- package/lib/sandbox/runtimes/java21.dockerfile +8 -1
- package/lib/sandbox/runtimes/node20.dockerfile +8 -1
- package/lib/sandbox/runtimes/node22.dockerfile +8 -1
- package/lib/sandbox/runtimes/python3.dockerfile +8 -1
- package/lib/sandbox/shell.ts +3 -1
- package/lib/sandbox/task-resolver.ts +5 -1
- package/lib/sandbox/tools.ts +31 -0
- package/lib/server/protocol.ts +5 -5
- package/lib/task/activity-log.ts +62 -0
- package/lib/task/artifact-lifecycle.ts +484 -0
- package/lib/task/command-options.ts +32 -0
- package/lib/task/commands/cat.ts +22 -9
- package/lib/task/commands/decisions.ts +49 -47
- package/lib/task/commands/files.ts +14 -6
- package/lib/task/commands/grep.ts +34 -7
- package/lib/task/commands/issue-body.ts +26 -21
- package/lib/task/commands/log.ts +17 -70
- package/lib/task/commands/show.ts +14 -6
- package/lib/task/commands/status.ts +17 -7
- package/lib/task/decision-intents.ts +163 -0
- package/lib/task/decision-items.ts +64 -0
- package/lib/task/events.ts +320 -0
- package/lib/task/frontmatter.ts +202 -2
- package/lib/task/implementation-inputs.ts +137 -0
- package/lib/task/index.ts +12 -9
- package/lib/task/issue-form.ts +24 -6
- package/lib/task/ledger-intents.ts +201 -0
- package/lib/task/ledger.ts +77 -31
- package/lib/task/lifecycle.ts +458 -0
- package/lib/task/resolve-ref.ts +197 -36
- package/{templates/.agents/scripts/lib/review-artifacts.js → lib/task/review-artifacts.ts} +11 -12
- package/{templates/.agents/scripts/lib/post-review-commit.js → lib/task/review-fingerprint.ts} +26 -12
- package/lib/task/sections.ts +486 -4
- package/lib/task/short-id.ts +403 -9
- package/lib/task/snapshot.ts +143 -0
- package/lib/task/verification-checks.ts +9 -0
- package/lib/task/verification-config.ts +20 -0
- package/{templates/.agents/scripts/validate-artifact.js → lib/task/verification-engine.ts} +230 -421
- package/lib/task/verification-review.ts +10 -0
- package/lib/task/verification-types.ts +29 -0
- package/lib/task/verification.ts +156 -0
- package/lib/task/workflow-warning-intents.ts +142 -0
- package/lib/task/workflow-warnings.ts +10 -78
- package/lib/task/write.ts +468 -0
- package/package.json +4 -2
- package/templates/.agents/README.en.md +4 -3
- package/templates/.agents/README.zh-CN.md +4 -3
- package/templates/.agents/rules/README.en.md +6 -5
- package/templates/.agents/rules/README.zh-CN.md +6 -5
- package/templates/.agents/rules/create-issue.en.md +1 -1
- package/templates/.agents/rules/create-issue.github.en.md +5 -184
- package/templates/.agents/rules/create-issue.github.zh-CN.md +12 -178
- package/templates/.agents/rules/create-issue.zh-CN.md +1 -1
- package/templates/.agents/rules/human-decision-context.en.md +36 -0
- package/templates/.agents/rules/human-decision-context.zh-CN.md +36 -0
- package/templates/.agents/rules/issue-fields.github.en.md +4 -148
- package/templates/.agents/rules/issue-fields.github.zh-CN.md +9 -144
- package/templates/.agents/rules/issue-pr-commands.en.md +43 -3
- package/templates/.agents/rules/issue-pr-commands.github.en.md +15 -220
- package/templates/.agents/rules/issue-pr-commands.github.zh-CN.md +23 -213
- package/templates/.agents/rules/issue-pr-commands.zh-CN.md +45 -3
- package/templates/.agents/rules/issue-sync.en.md +1 -1
- package/templates/.agents/rules/issue-sync.github.en.md +14 -301
- package/templates/.agents/rules/issue-sync.github.zh-CN.md +36 -287
- package/templates/.agents/rules/issue-sync.zh-CN.md +1 -1
- package/templates/.agents/rules/milestone-inference.en.md +1 -1
- package/templates/.agents/rules/milestone-inference.github.en.md +7 -119
- package/templates/.agents/rules/milestone-inference.github.zh-CN.md +8 -108
- package/templates/.agents/rules/milestone-inference.zh-CN.md +1 -1
- package/templates/.agents/rules/next-step-output.en.md +12 -11
- package/templates/.agents/rules/next-step-output.zh-CN.md +12 -11
- package/templates/.agents/rules/no-mid-flow-questions.en.md +3 -3
- package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +3 -3
- package/templates/.agents/rules/pr-checks-commands.en.md +16 -3
- package/templates/.agents/rules/pr-checks-commands.github.en.md +10 -54
- package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +19 -47
- package/templates/.agents/rules/pr-checks-commands.zh-CN.md +30 -3
- package/templates/.agents/rules/pr-sync.en.md +30 -3
- package/templates/.agents/rules/pr-sync.github.en.md +12 -115
- package/templates/.agents/rules/pr-sync.github.zh-CN.md +26 -104
- package/templates/.agents/rules/pr-sync.zh-CN.md +43 -3
- package/templates/.agents/rules/release-commands.en.md +2 -2
- package/templates/.agents/rules/release-commands.github.en.md +10 -40
- package/templates/.agents/rules/release-commands.github.zh-CN.md +9 -39
- package/templates/.agents/rules/release-commands.zh-CN.md +2 -2
- package/templates/.agents/rules/review-handshake.en.md +10 -6
- package/templates/.agents/rules/review-handshake.zh-CN.md +10 -6
- package/templates/.agents/rules/task-management.en.md +11 -2
- package/templates/.agents/rules/task-management.zh-CN.md +11 -3
- package/templates/.agents/rules/task-short-id.en.md +25 -29
- package/templates/.agents/rules/task-short-id.zh-CN.md +20 -23
- package/templates/.agents/rules/testing-discipline.en.md +20 -2
- package/templates/.agents/rules/testing-discipline.zh-CN.md +20 -2
- package/templates/.agents/scripts/lib/agent-infra-package.js +1 -9
- package/templates/.agents/scripts/task-short-id.js +71 -533
- package/templates/.agents/skills/analyze-task/SKILL.en.md +26 -56
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +30 -60
- package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -3
- package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -3
- package/templates/.agents/skills/block-task/SKILL.en.md +21 -47
- package/templates/.agents/skills/block-task/SKILL.zh-CN.md +23 -47
- package/templates/.agents/skills/block-task/config/verify.json +1 -2
- package/templates/.agents/skills/cancel-task/SKILL.en.md +16 -45
- package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +16 -45
- package/templates/.agents/skills/cancel-task/config/verify.json +1 -2
- package/templates/.agents/skills/check-task/SKILL.en.md +6 -3
- package/templates/.agents/skills/check-task/SKILL.zh-CN.md +6 -3
- package/templates/.agents/skills/close-codescan/SKILL.en.md +6 -24
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +6 -24
- package/templates/.agents/skills/close-dependabot/SKILL.en.md +6 -24
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +6 -24
- package/templates/.agents/skills/code-task/SKILL.en.md +22 -35
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +28 -44
- package/templates/.agents/skills/code-task/config/verify.en.json +3 -3
- package/templates/.agents/skills/code-task/config/verify.zh-CN.json +3 -3
- package/templates/.agents/skills/code-task/reference/dual-mode.en.md +13 -9
- package/templates/.agents/skills/code-task/reference/dual-mode.zh-CN.md +13 -9
- package/templates/.agents/skills/code-task/reference/fix-mode.en.md +1 -1
- package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +1 -1
- package/templates/.agents/skills/code-task/reference/report-template.en.md +11 -1
- package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +11 -1
- package/templates/.agents/skills/commit/SKILL.en.md +13 -11
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +13 -11
- package/templates/.agents/skills/commit/config/verify.json +1 -2
- package/templates/.agents/skills/commit/reference/commit-message.en.md +1 -11
- package/templates/.agents/skills/commit/reference/commit-message.zh-CN.md +1 -11
- package/templates/.agents/skills/commit/reference/issue-metadata-sync.en.md +4 -8
- package/templates/.agents/skills/commit/reference/issue-metadata-sync.zh-CN.md +4 -8
- package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +6 -18
- package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +5 -17
- package/templates/.agents/skills/commit/reference/task-status-update.en.md +13 -0
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +13 -0
- package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +13 -36
- package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +13 -36
- package/templates/.agents/skills/complete-manual-validation/config/verify.en.json +1 -3
- package/templates/.agents/skills/complete-manual-validation/config/verify.zh-CN.json +1 -3
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +10 -54
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +10 -79
- package/templates/.agents/skills/complete-task/SKILL.en.md +59 -63
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +59 -63
- package/templates/.agents/skills/complete-task/config/verify.en.json +10 -7
- package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +10 -7
- package/templates/.agents/skills/create-pr/SKILL.en.md +19 -44
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +19 -43
- package/templates/.agents/skills/create-pr/config/verify.json +1 -2
- package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +8 -12
- package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +7 -11
- package/templates/.agents/skills/create-release-note/SKILL.en.md +17 -38
- package/templates/.agents/skills/create-release-note/SKILL.zh-CN.md +16 -37
- package/templates/.agents/skills/create-task/SKILL.en.md +16 -13
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +16 -13
- package/templates/.agents/skills/create-task/config/verify.json +1 -2
- package/templates/.agents/skills/create-task/reference/context-capture.en.md +29 -0
- package/templates/.agents/skills/create-task/reference/context-capture.zh-CN.md +29 -0
- package/templates/.agents/skills/import-codescan/SKILL.en.md +2 -2
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/import-codescan/config/verify.json +1 -2
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +2 -2
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/import-dependabot/config/verify.json +1 -2
- package/templates/.agents/skills/import-issue/SKILL.en.md +9 -13
- package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +10 -14
- package/templates/.agents/skills/import-issue/config/verify.json +1 -2
- package/templates/.agents/skills/plan-task/SKILL.en.md +17 -42
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +22 -49
- package/templates/.agents/skills/plan-task/config/verify.en.json +1 -3
- package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +1 -3
- package/templates/.agents/skills/post-release/SKILL.en.md +11 -81
- package/templates/.agents/skills/post-release/SKILL.zh-CN.md +8 -78
- package/templates/.agents/skills/refine-title/SKILL.en.md +1 -1
- package/templates/.agents/skills/refine-title/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/release/SKILL.en.md +16 -163
- package/templates/.agents/skills/release/SKILL.zh-CN.md +15 -162
- package/templates/.agents/skills/restore-task/SKILL.en.md +11 -29
- package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +11 -29
- package/templates/.agents/skills/restore-task/config/verify.json +1 -2
- package/templates/.agents/skills/review-analysis/SKILL.en.md +13 -25
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +13 -33
- package/templates/.agents/skills/review-analysis/config/verify.en.json +3 -4
- package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +3 -4
- package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +9 -12
- package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +9 -12
- package/templates/.agents/skills/review-analysis/reference/report-template.en.md +9 -2
- package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +9 -2
- package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +7 -0
- package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +7 -0
- package/templates/.agents/skills/review-code/SKILL.en.md +22 -36
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +23 -41
- package/templates/.agents/skills/review-code/config/verify.en.json +3 -4
- package/templates/.agents/skills/review-code/config/verify.zh-CN.json +3 -4
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +56 -18
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +56 -18
- package/templates/.agents/skills/review-code/reference/report-template.en.md +11 -4
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +11 -4
- package/templates/.agents/skills/review-code/reference/review-criteria.en.md +7 -0
- package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +7 -0
- package/templates/.agents/skills/review-plan/SKILL.en.md +13 -25
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +13 -33
- package/templates/.agents/skills/review-plan/config/verify.en.json +3 -4
- package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +3 -4
- package/templates/.agents/skills/review-plan/reference/output-templates.en.md +9 -12
- package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +9 -12
- package/templates/.agents/skills/review-plan/reference/report-template.en.md +9 -2
- package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +9 -2
- package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +7 -0
- package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +7 -0
- package/templates/.agents/skills/update-agent-infra/SKILL.en.md +1 -2
- package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +1 -2
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +3 -15
- package/templates/.agents/skills/watch-pr/SKILL.en.md +24 -14
- package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +25 -15
- package/templates/.agents/skills/watch-pr/config/verify.json +1 -2
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.en.md +2 -2
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +2 -2
- package/templates/.agents/templates/task.en.md +24 -1
- package/templates/.agents/templates/task.zh-CN.md +24 -1
- package/templates/.claude/commands/analyze-task.en.md +1 -1
- package/templates/.claude/commands/analyze-task.zh-CN.md +1 -1
- package/templates/.claude/commands/block-task.en.md +1 -1
- package/templates/.claude/commands/block-task.zh-CN.md +1 -1
- package/templates/.claude/commands/cancel-task.en.md +1 -1
- package/templates/.claude/commands/cancel-task.zh-CN.md +1 -1
- package/templates/.claude/commands/check-task.en.md +1 -1
- package/templates/.claude/commands/check-task.zh-CN.md +1 -1
- package/templates/.claude/commands/code-task.en.md +1 -1
- package/templates/.claude/commands/code-task.zh-CN.md +1 -1
- package/templates/.claude/commands/commit.en.md +1 -0
- package/templates/.claude/commands/commit.zh-CN.md +1 -0
- package/templates/.claude/commands/complete-manual-validation.en.md +1 -1
- package/templates/.claude/commands/complete-manual-validation.zh-CN.md +1 -1
- package/templates/.claude/commands/complete-task.en.md +1 -1
- package/templates/.claude/commands/complete-task.zh-CN.md +1 -1
- package/templates/.claude/commands/create-pr.en.md +1 -1
- package/templates/.claude/commands/create-pr.zh-CN.md +1 -1
- package/templates/.claude/commands/plan-task.en.md +1 -1
- package/templates/.claude/commands/plan-task.zh-CN.md +1 -1
- package/templates/.claude/commands/review-analysis.en.md +1 -1
- package/templates/.claude/commands/review-analysis.zh-CN.md +1 -1
- package/templates/.claude/commands/review-code.en.md +1 -1
- package/templates/.claude/commands/review-code.zh-CN.md +1 -1
- package/templates/.claude/commands/review-plan.en.md +1 -1
- package/templates/.claude/commands/review-plan.zh-CN.md +1 -1
- package/templates/.claude/commands/watch-pr.en.md +1 -1
- package/templates/.claude/commands/watch-pr.zh-CN.md +1 -1
- package/templates/.gemini/commands/_project_/analyze-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/analyze-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/block-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/block-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/cancel-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/cancel-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/check-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/check-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/code-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/code-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/commit.en.toml +4 -0
- package/templates/.gemini/commands/_project_/commit.zh-CN.toml +4 -0
- package/templates/.gemini/commands/_project_/complete-manual-validation.en.toml +2 -0
- package/templates/.gemini/commands/_project_/complete-manual-validation.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/complete-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/complete-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/create-pr.en.toml +2 -0
- package/templates/.gemini/commands/_project_/create-pr.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/plan-task.en.toml +2 -0
- package/templates/.gemini/commands/_project_/plan-task.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/review-analysis.en.toml +2 -0
- package/templates/.gemini/commands/_project_/review-analysis.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/review-code.en.toml +2 -0
- package/templates/.gemini/commands/_project_/review-code.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/review-plan.en.toml +2 -0
- package/templates/.gemini/commands/_project_/review-plan.zh-CN.toml +2 -0
- package/templates/.gemini/commands/_project_/watch-pr.en.toml +2 -0
- package/templates/.gemini/commands/_project_/watch-pr.zh-CN.toml +2 -0
- package/templates/.git-hooks/check-large-files.cjs +92 -0
- package/templates/.git-hooks/check-version-format.sh +5 -1
- package/templates/.git-hooks/pre-commit +1 -0
- package/templates/.opencode/commands/analyze-task.en.md +1 -1
- package/templates/.opencode/commands/analyze-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/check-task.en.md +1 -1
- package/templates/.opencode/commands/check-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/code-task.en.md +1 -1
- package/templates/.opencode/commands/code-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/commit.en.md +2 -0
- package/templates/.opencode/commands/commit.zh-CN.md +2 -0
- package/templates/.opencode/commands/complete-task.en.md +1 -1
- package/templates/.opencode/commands/complete-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/plan-task.en.md +1 -1
- package/templates/.opencode/commands/plan-task.zh-CN.md +1 -1
- package/templates/.opencode/commands/review-analysis.en.md +1 -1
- package/templates/.opencode/commands/review-analysis.zh-CN.md +1 -1
- package/templates/.opencode/commands/review-code.en.md +1 -1
- package/templates/.opencode/commands/review-code.zh-CN.md +1 -1
- package/templates/.opencode/commands/review-plan.en.md +1 -1
- package/templates/.opencode/commands/review-plan.zh-CN.md +1 -1
- package/templates/.agents/scripts/platform-adapters/platform-sync.github.js +0 -40
- package/templates/.agents/scripts/platform-adapters/platform-sync.js +0 -13
- package/templates/.agents/scripts/review-diff-fingerprint.js +0 -170
- package/templates/.agents/scripts/workflow-warnings.js +0 -290
- package/templates/.agents/skills/code-task/scripts/detect-mode.js +0 -257
- package/templates/.agents/skills/release/scripts/manage-milestones.github.sh +0 -80
- package/templates/.agents/skills/release/scripts/manage-milestones.sh +0 -6
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { runSafeEngine, runVerboseEngine } from '../shell.js';
|
|
5
5
|
import { resolveTaskBranch } from '../task-resolver.js';
|
|
6
|
+
import { isRemovedHashShortIdInput } from '../../task/short-id.js';
|
|
6
7
|
export function containerListFormat() {
|
|
7
8
|
return '{{.Names}}\t{{.Status}}\t{{.Labels}}';
|
|
8
9
|
}
|
|
@@ -70,13 +71,13 @@ export function fetchSandboxRows(engine, label, branchKey) {
|
|
|
70
71
|
}
|
|
71
72
|
/**
|
|
72
73
|
* Returns true iff `arg` is a syntactically valid task short reference.
|
|
73
|
-
* Accepts
|
|
74
|
+
* Accepts bare numeric ('11') task short ids.
|
|
74
75
|
* Zero IO. Callers MUST use this as the gate before constructing any context
|
|
75
76
|
* for resolveTaskShortRef — that way non-matching arguments (e.g. '#abc',
|
|
76
77
|
* '#1.5', '#') never trigger sandbox list IO.
|
|
77
78
|
*/
|
|
78
79
|
export function isTaskShortRef(arg) {
|
|
79
|
-
return
|
|
80
|
+
return /^\d+$/.test(arg);
|
|
80
81
|
}
|
|
81
82
|
/**
|
|
82
83
|
* Try to resolve a short ref against the global task-short-id registry.
|
|
@@ -91,9 +92,7 @@ function tryResolveFromRegistry(arg, repoRoot) {
|
|
|
91
92
|
const scriptPath = path.join(repoRoot, '.agents', 'scripts', 'task-short-id.js');
|
|
92
93
|
if (!fs.existsSync(scriptPath))
|
|
93
94
|
return { status: 'miss' };
|
|
94
|
-
//
|
|
95
|
-
// (Script accepts both forms, but this avoids shell quoting confusion in error
|
|
96
|
-
// messages echoed back to the user.)
|
|
95
|
+
// Forward the bare-numeric short ref to the registry script for ID resolution.
|
|
97
96
|
const result = spawnSync('node', [scriptPath, 'resolve', arg], { encoding: 'utf8', cwd: repoRoot });
|
|
98
97
|
if (result.status !== 0)
|
|
99
98
|
return { status: 'miss' };
|
|
@@ -120,7 +119,7 @@ function tryResolveFromRegistry(arg, repoRoot) {
|
|
|
120
119
|
}
|
|
121
120
|
/**
|
|
122
121
|
/**
|
|
123
|
-
* Resolve a task short reference
|
|
122
|
+
* Resolve a bare task short reference to a branch name for the
|
|
124
123
|
* sandbox entrypoint.
|
|
125
124
|
*
|
|
126
125
|
* Resolution: registry-only. Look up the short id in the global task-short-id
|
|
@@ -137,11 +136,11 @@ export function resolveTaskShortRef(arg, ctx) {
|
|
|
137
136
|
if (lookup.status === 'hit')
|
|
138
137
|
return lookup.branch;
|
|
139
138
|
throw new Error(`short ref '${arg}' is not in the active task registry. ` +
|
|
140
|
-
`
|
|
139
|
+
`bare N resolves only via the registry (not by row position in 'ai sandbox ls'); ` +
|
|
141
140
|
`use a task short id (e.g. 'ai sandbox exec 11'), a TASK-id, or a branch name.`);
|
|
142
141
|
}
|
|
143
142
|
/**
|
|
144
|
-
* Resolve a sandbox command argument (`<branch | TASK-id | N
|
|
143
|
+
* Resolve a sandbox command argument (`<branch | TASK-id | N>`) to a
|
|
145
144
|
* branch name, mirroring `ai sandbox exec` so that `start` and `exec` share one
|
|
146
145
|
* input contract. Short refs go through the registry-only resolver (which throws
|
|
147
146
|
* an actionable error on a miss); everything else flows through resolveTaskBranch
|
|
@@ -149,6 +148,9 @@ export function resolveTaskShortRef(arg, ctx) {
|
|
|
149
148
|
* Callers still run assertValidBranchName on the result.
|
|
150
149
|
*/
|
|
151
150
|
export function resolveBranchArg(arg, ctx) {
|
|
151
|
+
if (isRemovedHashShortIdInput(arg)) {
|
|
152
|
+
throw new Error(`Invalid task short id '${arg}': task short ids must use bare digits`);
|
|
153
|
+
}
|
|
152
154
|
return isTaskShortRef(arg)
|
|
153
155
|
? resolveTaskShortRef(arg, ctx)
|
|
154
156
|
: resolveTaskBranch(arg, ctx.repoRoot);
|
|
@@ -9,15 +9,17 @@ import { runEngine, runOkEngine, runSafeEngine, runVerboseEngine } from '../shel
|
|
|
9
9
|
import { pruneSandboxDanglingImages } from '../image-prune.js';
|
|
10
10
|
import { resolveTools } from '../tools.js';
|
|
11
11
|
import { buildImageSignature, buildSandboxImageArgs, parseImageLabels, parseRefreshTimestamp } from '../image-build.js';
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
import { assertBuildProxyCompatibility, buildProxyFailureHint, prepareBuildProxy, redactBuildProxyValues } from '../build-proxy.js';
|
|
13
|
+
const USAGE = `Usage: ai sandbox rebuild [--quiet] [--refresh] [--inherit-build-proxy|-B]`;
|
|
14
|
+
export function buildArgs(config, tools, dockerfilePath, imageSignature, { engine, runFn = runEngine, runSafeFn = runSafeEngine, env = process.env, refresh = false, lastRefresh, buildProxyArgs = [] } = {}) {
|
|
14
15
|
return buildSandboxImageArgs(config, tools, dockerfilePath, imageSignature, {
|
|
15
16
|
engine: engine ?? detectEngine(config),
|
|
16
17
|
runFn,
|
|
17
18
|
runSafeFn,
|
|
18
19
|
env,
|
|
19
20
|
refresh,
|
|
20
|
-
lastRefresh
|
|
21
|
+
lastRefresh,
|
|
22
|
+
buildProxyArgs
|
|
21
23
|
});
|
|
22
24
|
}
|
|
23
25
|
function readExistingLastRefresh(config, engine) {
|
|
@@ -41,6 +43,7 @@ export async function rebuild(args) {
|
|
|
41
43
|
options: {
|
|
42
44
|
refresh: { type: 'boolean' },
|
|
43
45
|
quiet: { type: 'boolean', short: 'q' },
|
|
46
|
+
'inherit-build-proxy': { type: 'boolean', short: 'B' },
|
|
44
47
|
help: { type: 'boolean', short: 'h' }
|
|
45
48
|
}
|
|
46
49
|
});
|
|
@@ -56,6 +59,12 @@ export async function rebuild(args) {
|
|
|
56
59
|
const refresh = values.refresh ?? false;
|
|
57
60
|
const engine = detectEngine(config);
|
|
58
61
|
await ensureDocker(config, undefined);
|
|
62
|
+
if (values['inherit-build-proxy'] && config.dockerfile) {
|
|
63
|
+
throw new Error('Build proxy inheritance is unavailable with a custom sandbox Dockerfile.');
|
|
64
|
+
}
|
|
65
|
+
const buildProxy = prepareBuildProxy(values['inherit-build-proxy'] ?? false, process.env, engine);
|
|
66
|
+
if (values['inherit-build-proxy'])
|
|
67
|
+
assertBuildProxyCompatibility(engine);
|
|
59
68
|
const lastRefresh = refresh ? Date.now() : readExistingLastRefresh(config, engine);
|
|
60
69
|
p.intro(pc.cyan('Rebuilding sandbox image'));
|
|
61
70
|
try {
|
|
@@ -65,9 +74,11 @@ export async function rebuild(args) {
|
|
|
65
74
|
runEngine(engine, 'docker', buildArgs(config, tools, preparedDockerfile.path, imageSignature, {
|
|
66
75
|
engine,
|
|
67
76
|
refresh,
|
|
68
|
-
lastRefresh
|
|
77
|
+
lastRefresh,
|
|
78
|
+
buildProxyArgs: buildProxy.args
|
|
69
79
|
}), {
|
|
70
|
-
cwd: config.repoRoot
|
|
80
|
+
cwd: config.repoRoot,
|
|
81
|
+
env: buildProxy.env
|
|
71
82
|
});
|
|
72
83
|
spinner.stop(pc.green('Sandbox image rebuilt'));
|
|
73
84
|
}
|
|
@@ -76,12 +87,18 @@ export async function rebuild(args) {
|
|
|
76
87
|
runVerboseEngine(engine, 'docker', buildArgs(config, tools, preparedDockerfile.path, imageSignature, {
|
|
77
88
|
engine,
|
|
78
89
|
refresh,
|
|
79
|
-
lastRefresh
|
|
80
|
-
|
|
90
|
+
lastRefresh,
|
|
91
|
+
buildProxyArgs: buildProxy.args
|
|
92
|
+
}), { cwd: config.repoRoot, env: buildProxy.env });
|
|
81
93
|
p.log.success(pc.green('Sandbox image rebuilt'));
|
|
82
94
|
}
|
|
83
95
|
pruneSandboxDanglingImages(config, engine);
|
|
84
96
|
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const message = redactBuildProxyValues(error instanceof Error ? error.message : String(error), buildProxy.redactionValues);
|
|
99
|
+
const hint = values['inherit-build-proxy'] ? `\n${buildProxyFailureHint(engine)}` : '';
|
|
100
|
+
throw new Error(`${message}${hint}`);
|
|
101
|
+
}
|
|
85
102
|
finally {
|
|
86
103
|
preparedDockerfile.cleanup();
|
|
87
104
|
}
|
|
@@ -5,12 +5,12 @@ import { loadConfig } from '../config.js';
|
|
|
5
5
|
import { assertValidBranchName, worktreeDirCandidates } from '../constants.js';
|
|
6
6
|
import { resolveBranchArg } from './list-running.js';
|
|
7
7
|
import { resolveTools, toolConfigDirCandidates } from '../tools.js';
|
|
8
|
-
const USAGE = `Usage: ai sandbox show <branch | TASK-id | N
|
|
8
|
+
const USAGE = `Usage: ai sandbox show <branch | TASK-id | N>
|
|
9
9
|
|
|
10
10
|
Shows one sandbox's worktree path and per-tool state paths (Claude Code,
|
|
11
11
|
Codex, Gemini CLI, OpenCode). The argument follows the same contract as
|
|
12
12
|
'ai sandbox exec' and 'ai sandbox start': N (bare) is the recommended form
|
|
13
|
-
for task short ids (e.g. 'ai sandbox show 11');
|
|
13
|
+
for task short ids (e.g. 'ai sandbox show 11'); a TASK-id or a plain
|
|
14
14
|
branch name are also accepted. Use 'ai sandbox ls' for the container list.`;
|
|
15
15
|
function existingDirs(candidates) {
|
|
16
16
|
const seen = new Set();
|
|
@@ -1,36 +1,74 @@
|
|
|
1
1
|
import { loadConfig } from '../config.js';
|
|
2
2
|
import { assertValidBranchName, containerNameCandidates, sandboxBranchLabel, sandboxLabel } from '../constants.js';
|
|
3
3
|
import { detectEngine } from '../engine.js';
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { ensureSandboxReady } from '../recovery.js';
|
|
5
|
+
import { fetchSandboxRows, resolveBranchArg, selectSandboxContainer, } from './list-running.js';
|
|
6
|
+
const USAGE = `Usage: ai sandbox start [--recreate] <branch | TASK-id | N>
|
|
6
7
|
|
|
7
8
|
Start an existing sandbox container that has stopped (for example after the
|
|
8
9
|
Docker daemon was restarted or replaced). The container must already exist:
|
|
9
10
|
if none is found, run 'ai sandbox create <branch>' first. A container that is
|
|
10
|
-
already running is
|
|
11
|
+
already running is checked without modifying healthy runtime state. --recreate
|
|
12
|
+
allows container-only replacement after in-place recovery fails.`;
|
|
13
|
+
export function parseStartArgs(args) {
|
|
14
|
+
let recreate = false;
|
|
15
|
+
let help = false;
|
|
16
|
+
const positionals = [];
|
|
17
|
+
for (const arg of args) {
|
|
18
|
+
if (arg === '--recreate') {
|
|
19
|
+
recreate = true;
|
|
20
|
+
}
|
|
21
|
+
else if (arg === '--help' || arg === '-h') {
|
|
22
|
+
help = true;
|
|
23
|
+
}
|
|
24
|
+
else if (arg.startsWith('-')) {
|
|
25
|
+
throw new Error(`Unknown option: ${arg}\n${USAGE}`);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
positionals.push(arg);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (!help && positionals.length !== 1) {
|
|
32
|
+
throw new Error(USAGE);
|
|
33
|
+
}
|
|
34
|
+
return { target: positionals[0] ?? '', recreate, help };
|
|
35
|
+
}
|
|
11
36
|
export async function start(args) {
|
|
12
|
-
if (args.length === 0
|
|
37
|
+
if (args.length === 0) {
|
|
38
|
+
process.stdout.write(`${USAGE}\n`);
|
|
39
|
+
process.exitCode = 1;
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const parsed = parseStartArgs(args);
|
|
43
|
+
if (parsed.help) {
|
|
13
44
|
process.stdout.write(`${USAGE}\n`);
|
|
14
|
-
if (args.length === 0) {
|
|
15
|
-
process.exitCode = 1;
|
|
16
|
-
}
|
|
17
45
|
return;
|
|
18
46
|
}
|
|
19
|
-
const [firstArg = ''] = args;
|
|
20
47
|
const config = loadConfig();
|
|
21
48
|
const engine = detectEngine(config);
|
|
22
|
-
const branch = resolveBranchArg(
|
|
49
|
+
const branch = resolveBranchArg(parsed.target, { repoRoot: config.repoRoot });
|
|
23
50
|
assertValidBranchName(branch);
|
|
24
51
|
const { running, nonRunning } = fetchSandboxRows(engine, sandboxLabel(config), sandboxBranchLabel(config));
|
|
25
52
|
const found = selectSandboxContainer([...running, ...nonRunning], containerNameCandidates(config, branch));
|
|
26
53
|
if (!found) {
|
|
27
54
|
throw new Error(`No sandbox container for branch '${branch}'. Run 'ai sandbox create ${branch}' to create one.`);
|
|
28
55
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
56
|
+
const ready = await ensureSandboxReady({
|
|
57
|
+
config,
|
|
58
|
+
engine,
|
|
59
|
+
branch,
|
|
60
|
+
row: found,
|
|
61
|
+
allowRecreate: parsed.recreate,
|
|
62
|
+
recreate: async (targetBranch) => {
|
|
63
|
+
const { create } = await import('./create.js');
|
|
64
|
+
await create([targetBranch, '--no-refresh']);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
const message = ready.path === 'healthy'
|
|
68
|
+
? `Sandbox '${ready.container}' is already running and healthy.`
|
|
69
|
+
: ready.path === 'recreated'
|
|
70
|
+
? `Recreated sandbox '${ready.container}' and verified readiness.`
|
|
71
|
+
: `Recovered sandbox '${ready.container}' and verified readiness.`;
|
|
72
|
+
process.stdout.write(`${message}\n`);
|
|
35
73
|
}
|
|
36
74
|
//# sourceMappingURL=start.js.map
|
|
@@ -14,7 +14,7 @@ export function buildImageSignature(preparedDockerfile, tools) {
|
|
|
14
14
|
.digest('hex')
|
|
15
15
|
.slice(0, 12);
|
|
16
16
|
}
|
|
17
|
-
export function buildSandboxImageArgs(config, tools, dockerfilePath, imageSignature, { engine, runFn = runEngine, runSafeFn = runSafeEngine, env = process.env, refresh = false, lastRefresh } = {}) {
|
|
17
|
+
export function buildSandboxImageArgs(config, tools, dockerfilePath, imageSignature, { engine, runFn = runEngine, runSafeFn = runSafeEngine, env = process.env, refresh = false, lastRefresh, buildProxyArgs = [] } = {}) {
|
|
18
18
|
const selectedEngine = engine ?? detectEngine({ engine: config.engine });
|
|
19
19
|
const { uid: hostUid, gid: hostGid } = resolveBuildUid({
|
|
20
20
|
engine: selectedEngine,
|
|
@@ -39,6 +39,7 @@ export function buildSandboxImageArgs(config, tools, dockerfilePath, imageSignat
|
|
|
39
39
|
'--label',
|
|
40
40
|
`${sandboxImageConfigLabel(config)}=${imageSignature}`
|
|
41
41
|
];
|
|
42
|
+
args.push(...buildProxyArgs);
|
|
42
43
|
if (lastRefresh !== undefined) {
|
|
43
44
|
args.push('--label', `${sandboxImageRefreshLabel(config)}=${lastRefresh}`);
|
|
44
45
|
}
|
|
@@ -2,14 +2,14 @@ const USAGE = `Usage: ai sandbox <command> [options]
|
|
|
2
2
|
|
|
3
3
|
Commands:
|
|
4
4
|
create <branch> [base] Create a sandbox (VM + image + worktree + container)
|
|
5
|
-
exec <branch | TASK-id | N
|
|
5
|
+
exec [--recreate] <branch | TASK-id | N> [cmd...]
|
|
6
6
|
Enter sandbox or run a command. N (bare) is the
|
|
7
7
|
recommended form for task short ids (e.g.
|
|
8
|
-
'ai sandbox exec 11')
|
|
8
|
+
'ai sandbox exec 11').
|
|
9
9
|
ls List sandboxes for the current project (the '#'
|
|
10
10
|
column is a display-only row number; the 'SHORT'
|
|
11
11
|
column shows the active task short id, '-' if none)
|
|
12
|
-
show <branch | TASK-id | N
|
|
12
|
+
show <branch | TASK-id | N>
|
|
13
13
|
Show one sandbox's worktree and per-tool state paths
|
|
14
14
|
prune [--dry-run] Remove orphaned per-branch state dirs
|
|
15
15
|
rebuild [--quiet] [--refresh]
|
|
@@ -18,9 +18,9 @@ Commands:
|
|
|
18
18
|
rm <branch> | --all | --purge
|
|
19
19
|
Remove one sandbox, all sandboxes not bound to an
|
|
20
20
|
active task (--all), or tear down everything (--purge)
|
|
21
|
-
start <branch | TASK-id | N
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
start [--recreate] <branch | TASK-id | N>
|
|
22
|
+
Verify or recover an existing sandbox container;
|
|
23
|
+
optionally replace only the container on failure
|
|
24
24
|
vm status|start|stop Manage the sandbox VM (macOS) or check the backend (Windows)
|
|
25
25
|
|
|
26
26
|
Run 'ai sandbox <command> --help' for details.`;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { shareBranchDir, shareCommonDir, shellConfigDirCandidates, worktreeDirCandidates } from './constants.js';
|
|
3
|
+
export function sandboxCoreBindMounts(config, branch, overrides = {}) {
|
|
4
|
+
return [
|
|
5
|
+
{
|
|
6
|
+
hostPaths: overrides.worktree
|
|
7
|
+
? [overrides.worktree]
|
|
8
|
+
: worktreeDirCandidates(config, branch),
|
|
9
|
+
containerPath: '/workspace',
|
|
10
|
+
readOnly: false
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
hostPaths: [path.join(config.repoRoot, '.agents', 'workspace')],
|
|
14
|
+
containerPath: '/workspace/.agents/workspace',
|
|
15
|
+
readOnly: false
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
hostPaths: [shareCommonDir(config)],
|
|
19
|
+
containerPath: '/share/common',
|
|
20
|
+
readOnly: false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
hostPaths: [shareBranchDir(config, branch)],
|
|
24
|
+
containerPath: '/share/branch',
|
|
25
|
+
readOnly: false
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
hostPaths: overrides.shellConfigHostDir
|
|
29
|
+
? [overrides.shellConfigHostDir]
|
|
30
|
+
: shellConfigDirCandidates(config, branch),
|
|
31
|
+
containerPath: '/home/devuser/.host-shell-config',
|
|
32
|
+
readOnly: true
|
|
33
|
+
}
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=mounts.js.map
|