@fitlab-ai/agent-infra 0.9.1 → 0.9.3
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 +24 -11
- package/README.zh-CN.md +24 -11
- package/bin/cli.ts +12 -0
- package/dist/bin/cli.js +14 -0
- package/dist/bin/internal-cli.js +30 -0
- package/dist/lib/agent-client.js +163 -0
- package/dist/lib/agent-clients/adapter.js +337 -0
- package/dist/lib/agent-clients/adapters/antigravity-cli.js +64 -0
- package/dist/lib/agent-clients/adapters/claude-code.js +71 -0
- package/dist/lib/agent-clients/adapters/codex-sandbox.js +210 -0
- package/dist/lib/agent-clients/adapters/codex.js +63 -0
- package/dist/lib/agent-clients/adapters/index.js +20 -0
- package/dist/lib/agent-clients/adapters/opencode.js +73 -0
- package/dist/lib/agent-clients/config.js +215 -0
- package/dist/lib/agent-clients/custom-tuis.js +99 -0
- package/dist/lib/agent-clients/invocation.js +9 -0
- package/dist/lib/agent-clients/next-steps.js +47 -0
- package/dist/lib/agent-clients/project-assets.js +45 -0
- package/dist/lib/agent-clients/reconcile.js +236 -0
- package/dist/lib/agent-clients/registry.js +78 -0
- package/dist/lib/agent-clients/schema.js +75 -0
- package/dist/lib/agent-clients/tokens.js +49 -0
- package/dist/lib/agent-clients/types.js +29 -0
- package/dist/lib/builtin-tuis.js +9 -14
- package/dist/lib/defaults.json +85 -73
- package/dist/lib/git/review-snapshot.js +25 -10
- package/dist/lib/git/reviewed-commit-equivalence.js +110 -0
- package/dist/lib/git/workflow.js +54 -1
- package/dist/lib/init.js +47 -91
- package/dist/lib/internal/agent-client.js +174 -0
- package/dist/lib/internal/git-workflow.js +7 -2
- package/dist/lib/internal/platform-checks.js +3 -3
- package/dist/lib/internal/platform-comment.js +29 -2
- package/dist/lib/internal/platform-issue.js +7 -0
- package/dist/lib/internal/platform-pr-review.js +132 -0
- package/dist/lib/internal/platform-pr.js +20 -2
- package/dist/lib/internal/platform-release-notes.js +52 -16
- package/dist/lib/internal/pr-review-grade.js +140 -0
- package/dist/lib/internal/release-workflow.js +82 -20
- package/dist/lib/internal/task-activity.js +73 -0
- package/dist/lib/internal/task-event.js +17 -1
- package/dist/lib/internal/task-lifecycle.js +7 -0
- package/dist/lib/internal/task-orchestration.js +196 -0
- package/dist/lib/internal/task-review.js +70 -0
- package/dist/lib/merge.js +2 -1
- package/dist/lib/platform/adapters.js +45 -1
- package/dist/lib/platform/change-request-git-evidence.js +113 -0
- package/dist/lib/platform/completion-backfill.js +122 -0
- package/dist/lib/platform/issue-comments.js +3 -2
- package/dist/lib/platform/merged-pr-equivalence.js +156 -16
- package/dist/lib/platform/pr-checks.js +101 -50
- package/dist/lib/platform/pr-review.js +166 -0
- package/dist/lib/platform/pull-requests.js +432 -7
- package/dist/lib/platform/release-notes.js +85 -3
- package/dist/lib/platform/releases.js +1 -1
- package/dist/lib/platform/verification-required.js +8 -10
- package/dist/lib/pr-review/evidence-grading.js +229 -0
- package/dist/lib/prompt.js +15 -3
- package/dist/lib/release/channels.js +4 -1
- package/dist/lib/release/workflow.js +4 -2
- package/dist/lib/remove-dir.js +25 -0
- package/dist/lib/run/tui.js +11 -7
- package/dist/lib/sandbox/agent-client-reconciler.js +234 -0
- package/dist/lib/sandbox/clipboard/linux.js +2 -1
- package/dist/lib/sandbox/commands/create.js +76 -200
- package/dist/lib/sandbox/commands/enter.js +17 -1
- package/dist/lib/sandbox/commands/prune.js +2 -2
- package/dist/lib/sandbox/commands/rm.js +3 -2
- package/dist/lib/sandbox/commands/show.js +1 -1
- package/dist/lib/sandbox/config.js +21 -4
- package/dist/lib/sandbox/constants.js +3 -0
- package/dist/lib/sandbox/dockerfile.js +2 -1
- package/dist/lib/sandbox/managed-fs.js +10 -5
- package/dist/lib/sandbox/recovery.js +52 -36
- package/dist/lib/sandbox/shell.js +1 -1
- package/dist/lib/sandbox/tool-types.js +8 -0
- package/dist/lib/sandbox/tools.js +2 -126
- package/dist/lib/task/activity-intent.js +101 -0
- package/dist/lib/task/artifact-lifecycle.js +3 -50
- package/dist/lib/task/commands/decisions.js +50 -20
- package/dist/lib/task/commands/log.js +15 -14
- package/dist/lib/task/delegation-receipts.js +128 -0
- package/dist/lib/task/events.js +146 -8
- package/dist/lib/task/finalization-artifacts.js +35 -0
- package/dist/lib/task/lifecycle-execution.js +46 -0
- package/dist/lib/task/orchestration.js +784 -0
- package/dist/lib/task/review-artifacts.js +143 -59
- package/dist/lib/task/review-finalization.js +186 -0
- package/dist/lib/task/review-fingerprint.js +4 -0
- package/dist/lib/task/task-execution-lock.js +231 -0
- package/dist/lib/task/verification-checks.js +2 -1
- package/dist/lib/task/verification-engine.js +372 -28
- package/dist/lib/task/verification-review.js +1 -1
- package/dist/lib/task/verification.js +5 -2
- package/dist/lib/task/workspace-snapshot.js +46 -0
- package/dist/lib/update.js +42 -161
- package/lib/agent-client.ts +214 -0
- package/lib/agent-clients/adapter.ts +534 -0
- package/lib/agent-clients/adapters/antigravity-cli.ts +65 -0
- package/lib/agent-clients/adapters/claude-code.ts +79 -0
- package/lib/agent-clients/adapters/codex-sandbox.ts +245 -0
- package/lib/agent-clients/adapters/codex.ts +67 -0
- package/lib/agent-clients/adapters/index.ts +27 -0
- package/lib/agent-clients/adapters/opencode.ts +75 -0
- package/lib/agent-clients/config.ts +323 -0
- package/lib/agent-clients/custom-tuis.ts +149 -0
- package/lib/agent-clients/invocation.ts +19 -0
- package/lib/agent-clients/next-steps.ts +85 -0
- package/lib/agent-clients/project-assets.ts +96 -0
- package/lib/agent-clients/reconcile.ts +325 -0
- package/lib/agent-clients/registry.ts +154 -0
- package/lib/agent-clients/schema.ts +80 -0
- package/lib/agent-clients/tokens.ts +53 -0
- package/lib/agent-clients/types.ts +92 -0
- package/lib/benchmark/schemas/v1.0.0/case-manifest.schema.json +120 -0
- package/lib/benchmark/schemas/v1.0.0/common.schema.json +109 -0
- package/lib/benchmark/schemas/v1.0.0/grader-result.schema.json +160 -0
- package/lib/benchmark/schemas/v1.0.0/run-manifest.schema.json +122 -0
- package/lib/benchmark/schemas/v1.0.0/subject.schema.json +227 -0
- package/lib/builtin-tuis.ts +16 -15
- package/lib/defaults.json +24 -12
- package/lib/git/review-snapshot.ts +39 -9
- package/lib/git/reviewed-commit-equivalence.ts +135 -0
- package/lib/git/workflow.ts +66 -2
- package/lib/init.ts +53 -121
- package/lib/internal/agent-client.ts +186 -0
- package/lib/internal/git-workflow.ts +6 -2
- package/lib/internal/platform-checks.ts +4 -4
- package/lib/internal/platform-comment.ts +17 -2
- package/lib/internal/platform-issue.ts +4 -0
- package/lib/internal/platform-pr-review.ts +104 -0
- package/lib/internal/platform-pr.ts +14 -1
- package/lib/internal/platform-release-notes.ts +59 -16
- package/lib/internal/pr-review-grade.ts +130 -0
- package/lib/internal/release-workflow.ts +79 -20
- package/lib/internal/task-activity.ts +55 -0
- package/lib/internal/task-event.ts +9 -1
- package/lib/internal/task-lifecycle.ts +4 -0
- package/lib/internal/task-orchestration.ts +171 -0
- package/lib/internal/task-review.ts +70 -0
- package/lib/merge.ts +2 -1
- package/lib/platform/adapters.ts +169 -3
- package/lib/platform/change-request-git-evidence.ts +159 -0
- package/lib/platform/completion-backfill.ts +134 -0
- package/lib/platform/issue-comments.ts +3 -2
- package/lib/platform/merged-pr-equivalence.ts +178 -19
- package/lib/platform/pr-checks.ts +121 -66
- package/lib/platform/pr-review.ts +201 -0
- package/lib/platform/pull-requests.ts +529 -27
- package/lib/platform/release-notes.ts +100 -4
- package/lib/platform/releases.ts +1 -1
- package/lib/platform/verification-required.ts +12 -10
- package/lib/pr-review/evidence-grading.ts +318 -0
- package/lib/prompt.ts +16 -3
- package/lib/release/channels.ts +4 -1
- package/lib/release/workflow.ts +4 -3
- package/lib/remove-dir.ts +28 -0
- package/lib/run/tui.ts +12 -5
- package/lib/sandbox/agent-client-reconciler.ts +378 -0
- package/lib/sandbox/clipboard/linux.ts +2 -1
- package/lib/sandbox/commands/create.ts +111 -212
- package/lib/sandbox/commands/enter.ts +23 -1
- package/lib/sandbox/commands/prune.ts +2 -2
- package/lib/sandbox/commands/rm.ts +3 -2
- package/lib/sandbox/commands/show.ts +1 -1
- package/lib/sandbox/config.ts +31 -4
- package/lib/sandbox/constants.ts +6 -0
- package/lib/sandbox/dockerfile.ts +2 -1
- package/lib/sandbox/managed-fs.ts +18 -5
- package/lib/sandbox/recovery.ts +98 -67
- package/lib/sandbox/shell.ts +1 -1
- package/lib/sandbox/tool-types.ts +143 -0
- package/lib/sandbox/tools.ts +5 -157
- package/lib/server/server.schema.json +2 -2
- package/lib/task/activity-intent.ts +128 -0
- package/lib/task/artifact-lifecycle.ts +3 -39
- package/lib/task/commands/decisions.ts +53 -20
- package/lib/task/commands/log.ts +15 -14
- package/lib/task/delegation-receipts.ts +199 -0
- package/lib/task/events.ts +164 -11
- package/lib/task/finalization-artifacts.ts +58 -0
- package/lib/task/lifecycle-execution.ts +106 -0
- package/lib/task/orchestration.ts +1022 -0
- package/lib/task/review-artifacts.ts +201 -69
- package/lib/task/review-finalization.ts +306 -0
- package/lib/task/review-fingerprint.ts +5 -0
- package/lib/task/task-execution-lock.ts +296 -0
- package/lib/task/verification-checks.ts +2 -1
- package/lib/task/verification-engine.ts +424 -28
- package/lib/task/verification-review.ts +1 -0
- package/lib/task/verification.ts +8 -3
- package/lib/task/workspace-snapshot.ts +57 -0
- package/lib/update.ts +48 -184
- package/package.json +4 -4
- package/templates/.agents/QUICKSTART.en.md +25 -8
- package/templates/.agents/QUICKSTART.zh-CN.md +25 -8
- package/templates/.agents/README.en.md +29 -25
- package/templates/.agents/README.zh-CN.md +29 -25
- package/templates/.agents/hooks/lifecycle-delegation.js +75 -0
- package/templates/.agents/rules/README.en.md +2 -0
- package/templates/.agents/rules/README.zh-CN.md +2 -0
- package/templates/.agents/rules/commit-and-pr.en.md +1 -0
- package/templates/.agents/rules/commit-and-pr.zh-CN.md +1 -0
- package/templates/.agents/rules/create-issue.github.en.md +4 -2
- package/templates/.agents/rules/create-issue.github.zh-CN.md +4 -2
- package/templates/.agents/rules/human-decision-context.en.md +14 -12
- package/templates/.agents/rules/human-decision-context.zh-CN.md +14 -12
- package/templates/.agents/rules/issue-fields.github.en.md +3 -1
- package/templates/.agents/rules/issue-fields.github.zh-CN.md +3 -1
- package/templates/.agents/rules/issue-pr-commands.en.md +5 -3
- package/templates/.agents/rules/issue-pr-commands.github.en.md +5 -3
- package/templates/.agents/rules/issue-pr-commands.github.zh-CN.md +5 -3
- package/templates/.agents/rules/issue-pr-commands.zh-CN.md +5 -3
- package/templates/.agents/rules/issue-sync.github.en.md +7 -3
- package/templates/.agents/rules/issue-sync.github.zh-CN.md +8 -4
- package/templates/.agents/rules/lifecycle-orchestration.en.md +24 -0
- package/templates/.agents/rules/lifecycle-orchestration.zh-CN.md +24 -0
- package/templates/.agents/rules/milestone-inference.github.en.md +4 -2
- package/templates/.agents/rules/milestone-inference.github.zh-CN.md +4 -2
- package/templates/.agents/rules/next-step-output.en.md +18 -0
- package/templates/.agents/rules/next-step-output.zh-CN.md +18 -0
- package/templates/.agents/rules/no-mid-flow-questions.en.md +19 -0
- package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +19 -0
- package/templates/.agents/rules/pr-checks-commands.en.md +3 -3
- package/templates/.agents/rules/pr-checks-commands.github.en.md +2 -2
- package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +2 -2
- package/templates/.agents/rules/pr-checks-commands.zh-CN.md +3 -3
- package/templates/.agents/rules/pr-sync.en.md +3 -1
- package/templates/.agents/rules/pr-sync.github.en.md +11 -1
- package/templates/.agents/rules/pr-sync.github.zh-CN.md +11 -1
- package/templates/.agents/rules/pr-sync.zh-CN.md +3 -1
- package/templates/.agents/rules/release-commands.en.md +1 -1
- package/templates/.agents/rules/release-commands.github.en.md +21 -5
- package/templates/.agents/rules/release-commands.github.zh-CN.md +21 -5
- package/templates/.agents/rules/release-commands.zh-CN.md +1 -1
- package/templates/.agents/rules/review-handshake.en.md +4 -4
- package/templates/.agents/rules/review-handshake.zh-CN.md +4 -4
- package/templates/.agents/rules/review-method.en.md +113 -0
- package/templates/.agents/rules/review-method.zh-CN.md +98 -0
- package/templates/.agents/rules/task-management.en.md +11 -0
- package/templates/.agents/rules/task-management.zh-CN.md +11 -0
- package/templates/.agents/skills/analyze-task/SKILL.en.md +15 -12
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +15 -12
- package/templates/.agents/skills/block-task/SKILL.en.md +11 -9
- package/templates/.agents/skills/block-task/SKILL.zh-CN.md +11 -9
- package/templates/.agents/skills/cancel-task/SKILL.en.md +10 -8
- package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +11 -9
- package/templates/.agents/skills/check-task/SKILL.en.md +16 -16
- package/templates/.agents/skills/check-task/SKILL.zh-CN.md +16 -16
- package/templates/.agents/skills/close-codescan/SKILL.en.md +7 -5
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +7 -5
- package/templates/.agents/skills/close-dependabot/SKILL.en.md +7 -5
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +7 -5
- package/templates/.agents/skills/code-task/SKILL.en.md +10 -7
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +13 -10
- package/templates/.agents/skills/code-task/reference/fix-mode.en.md +14 -16
- package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +14 -16
- package/templates/.agents/skills/code-task/reference/output-template.en.md +3 -3
- package/templates/.agents/skills/code-task/reference/output-template.zh-CN.md +3 -3
- package/templates/.agents/skills/commit/SKILL.en.md +13 -1
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +13 -1
- package/templates/.agents/skills/commit/reference/commit-message.en.md +1 -1
- package/templates/.agents/skills/commit/reference/commit-message.zh-CN.md +1 -1
- package/templates/.agents/skills/commit/reference/issue-metadata-sync.en.md +1 -1
- package/templates/.agents/skills/commit/reference/issue-metadata-sync.zh-CN.md +1 -1
- package/templates/.agents/skills/commit/reference/pr-summary-sync.en.md +1 -1
- package/templates/.agents/skills/commit/reference/pr-summary-sync.zh-CN.md +1 -1
- package/templates/.agents/skills/commit/reference/task-status-update.en.md +24 -28
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +24 -28
- package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +6 -4
- package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +6 -4
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.en.md +1 -1
- package/templates/.agents/skills/complete-manual-validation/reference/summary-update.zh-CN.md +1 -1
- package/templates/.agents/skills/complete-task/SKILL.en.md +23 -8
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +23 -8
- package/templates/.agents/skills/complete-task/config/verify.en.json +1 -0
- package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +1 -0
- package/templates/.agents/skills/complete-task/reference/external-delivery.en.md +17 -0
- package/templates/.agents/skills/complete-task/reference/external-delivery.zh-CN.md +17 -0
- package/templates/.agents/skills/create-pr/SKILL.en.md +13 -11
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +13 -11
- package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +1 -1
- package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +1 -1
- package/templates/.agents/skills/create-pr/reference/pr-body-template.en.md +3 -3
- package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +3 -3
- package/templates/.agents/skills/create-release-note/SKILL.en.md +17 -16
- package/templates/.agents/skills/create-release-note/SKILL.zh-CN.md +17 -16
- package/templates/.agents/skills/create-task/SKILL.en.md +16 -14
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +16 -14
- package/templates/.agents/skills/import-codescan/SKILL.en.md +5 -5
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +5 -5
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/import-issue/SKILL.en.md +10 -8
- package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +10 -8
- package/templates/.agents/skills/init-labels/SKILL.en.md +4 -4
- package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/init-milestones/SKILL.en.md +4 -4
- package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/plan-task/SKILL.en.md +13 -10
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +13 -10
- package/templates/.agents/skills/post-release/SKILL.en.md +2 -0
- package/templates/.agents/skills/post-release/SKILL.zh-CN.md +2 -0
- 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 -10
- package/templates/.agents/skills/release/SKILL.zh-CN.md +16 -10
- package/templates/.agents/skills/restore-task/SKILL.en.md +4 -1
- package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +4 -1
- package/templates/.agents/skills/review-analysis/SKILL.en.md +18 -4
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +19 -5
- package/templates/.agents/skills/review-analysis/config/verify.en.json +6 -0
- package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +6 -0
- package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +13 -15
- package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +13 -15
- package/templates/.agents/skills/review-analysis/reference/report-template.en.md +51 -5
- package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +52 -6
- package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +25 -22
- package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +25 -22
- package/templates/.agents/skills/review-code/SKILL.en.md +35 -12
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +35 -12
- package/templates/.agents/skills/review-code/config/verify.en.json +7 -0
- package/templates/.agents/skills/review-code/config/verify.zh-CN.json +7 -0
- package/templates/.agents/skills/review-code/reference/concurrency-risks.en.md +25 -0
- package/templates/.agents/skills/review-code/reference/concurrency-risks.zh-CN.md +25 -0
- package/templates/.agents/skills/review-code/reference/cross-platform-risks.en.md +27 -0
- package/templates/.agents/skills/review-code/reference/cross-platform-risks.zh-CN.md +27 -0
- package/templates/.agents/skills/review-code/reference/documentation-antipatterns.en.md +13 -0
- package/templates/.agents/skills/review-code/reference/documentation-antipatterns.zh-CN.md +13 -0
- package/templates/.agents/skills/review-code/reference/migration-risks.en.md +25 -0
- package/templates/.agents/skills/review-code/reference/migration-risks.zh-CN.md +25 -0
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +22 -24
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +22 -24
- package/templates/.agents/skills/review-code/reference/report-template.en.md +54 -7
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +54 -7
- package/templates/.agents/skills/review-code/reference/review-criteria.en.md +29 -24
- package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +29 -24
- package/templates/.agents/skills/review-code/reference/security-risks.en.md +25 -0
- package/templates/.agents/skills/review-code/reference/security-risks.zh-CN.md +25 -0
- package/templates/.agents/skills/review-plan/SKILL.en.md +18 -4
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +19 -5
- package/templates/.agents/skills/review-plan/config/verify.en.json +6 -0
- package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +6 -0
- package/templates/.agents/skills/review-plan/reference/output-templates.en.md +13 -15
- package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +13 -15
- package/templates/.agents/skills/review-plan/reference/report-template.en.md +61 -5
- package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +61 -5
- package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +21 -24
- package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +21 -24
- package/templates/.agents/skills/review-pr/SKILL.en.md +158 -0
- package/templates/.agents/skills/review-pr/SKILL.zh-CN.md +158 -0
- package/templates/.agents/skills/review-pr/config/verify.en.json +37 -0
- package/templates/.agents/skills/review-pr/config/verify.zh-CN.json +37 -0
- package/templates/.agents/skills/review-pr/reference/evidence-grading.en.md +65 -0
- package/templates/.agents/skills/review-pr/reference/evidence-grading.zh-CN.md +65 -0
- package/templates/.agents/skills/review-pr/reference/output-guidance.en.md +18 -0
- package/templates/.agents/skills/review-pr/reference/output-guidance.zh-CN.md +18 -0
- package/templates/.agents/skills/review-pr/reference/report-template.en.md +85 -0
- package/templates/.agents/skills/review-pr/reference/report-template.zh-CN.md +85 -0
- package/templates/.agents/skills/run-task/SKILL.en.md +22 -0
- package/templates/.agents/skills/run-task/SKILL.zh-CN.md +22 -0
- package/templates/.agents/skills/run-task/config/verify.en.json +10 -0
- package/templates/.agents/skills/run-task/config/verify.zh-CN.json +10 -0
- package/templates/.agents/skills/run-task/reference/host-validation.en.md +20 -0
- package/templates/.agents/skills/run-task/reference/host-validation.zh-CN.md +20 -0
- package/templates/.agents/skills/test/SKILL.en.md +4 -4
- package/templates/.agents/skills/test/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/test-integration/SKILL.en.md +4 -4
- package/templates/.agents/skills/test-integration/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/update-agent-infra/SKILL.en.md +5 -5
- package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +664 -246
- package/templates/.agents/skills/upgrade-dependency/SKILL.en.md +4 -4
- package/templates/.agents/skills/upgrade-dependency/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/watch-pr/SKILL.en.md +21 -21
- package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +21 -21
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.en.md +27 -6
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +26 -5
- package/templates/.agents/templates/task.en.md +1 -1
- package/templates/.agents/templates/task.zh-CN.md +1 -1
- package/templates/.agents/workflows/bug-fix.en.yaml +3 -3
- package/templates/.agents/workflows/bug-fix.zh-CN.yaml +3 -3
- package/templates/.agents/workflows/code-review.en.yaml +1 -1
- package/templates/.agents/workflows/code-review.zh-CN.yaml +1 -1
- package/templates/.agents/workflows/feature-development.en.yaml +4 -4
- package/templates/.agents/workflows/feature-development.zh-CN.yaml +4 -4
- package/templates/.agents/workflows/refactoring.en.yaml +3 -3
- package/templates/.agents/workflows/refactoring.zh-CN.yaml +3 -3
- package/templates/.claude/agents/agent-infra-lifecycle-executor.en.md +6 -0
- package/templates/.claude/agents/agent-infra-lifecycle-executor.zh-CN.md +6 -0
- package/templates/.claude/agents/agent-infra-lifecycle-reviewer.en.md +6 -0
- package/templates/.claude/agents/agent-infra-lifecycle-reviewer.zh-CN.md +6 -0
- package/templates/.claude/commands/post-release.en.md +1 -0
- package/templates/.claude/commands/post-release.zh-CN.md +1 -0
- package/templates/.claude/commands/review-pr.en.md +8 -0
- package/templates/.claude/commands/review-pr.zh-CN.md +8 -0
- package/templates/.claude/commands/run-task.en.md +8 -0
- package/templates/.claude/commands/run-task.zh-CN.md +8 -0
- package/templates/.claude/settings.json +24 -0
- package/templates/.codex/agents/agent-infra-lifecycle-executor.en.toml +3 -0
- package/templates/.codex/agents/agent-infra-lifecycle-executor.zh-CN.toml +3 -0
- package/templates/.codex/agents/agent-infra-lifecycle-reviewer.en.toml +3 -0
- package/templates/.codex/agents/agent-infra-lifecycle-reviewer.zh-CN.toml +3 -0
- package/templates/.gemini/commands/_project_/review-pr.en.toml +10 -0
- package/templates/.gemini/commands/_project_/review-pr.zh-CN.toml +10 -0
- package/templates/.opencode/commands/post-release.en.md +2 -0
- package/templates/.opencode/commands/post-release.zh-CN.md +2 -0
- package/templates/.opencode/commands/review-pr.en.md +11 -0
- package/templates/.opencode/commands/review-pr.zh-CN.md +11 -0
- package/templates/.opencode/commands/run-task.en.md +11 -0
- package/templates/.opencode/commands/run-task.zh-CN.md +11 -0
- package/templates/.gemini/commands/_project_/analyze-task.en.toml +0 -10
- package/templates/.gemini/commands/_project_/analyze-task.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/archive-tasks.en.toml +0 -10
- package/templates/.gemini/commands/_project_/archive-tasks.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/block-task.en.toml +0 -10
- package/templates/.gemini/commands/_project_/block-task.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/cancel-task.en.toml +0 -10
- package/templates/.gemini/commands/_project_/cancel-task.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/check-task.en.toml +0 -10
- package/templates/.gemini/commands/_project_/check-task.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/close-codescan.en.toml +0 -8
- package/templates/.gemini/commands/_project_/close-codescan.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/close-dependabot.en.toml +0 -8
- package/templates/.gemini/commands/_project_/close-dependabot.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/code-task.en.toml +0 -10
- package/templates/.gemini/commands/_project_/code-task.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/commit.en.toml +0 -10
- package/templates/.gemini/commands/_project_/commit.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/complete-manual-validation.en.toml +0 -10
- package/templates/.gemini/commands/_project_/complete-manual-validation.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/complete-task.en.toml +0 -10
- package/templates/.gemini/commands/_project_/complete-task.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/create-pr.en.toml +0 -10
- package/templates/.gemini/commands/_project_/create-pr.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/create-release-note.en.toml +0 -8
- package/templates/.gemini/commands/_project_/create-release-note.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/create-task.en.toml +0 -8
- package/templates/.gemini/commands/_project_/create-task.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/import-codescan.en.toml +0 -8
- package/templates/.gemini/commands/_project_/import-codescan.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/import-dependabot.en.toml +0 -8
- package/templates/.gemini/commands/_project_/import-dependabot.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/import-issue.en.toml +0 -8
- package/templates/.gemini/commands/_project_/import-issue.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/init-labels.en.toml +0 -8
- package/templates/.gemini/commands/_project_/init-labels.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/init-milestones.en.toml +0 -10
- package/templates/.gemini/commands/_project_/init-milestones.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/plan-task.en.toml +0 -10
- package/templates/.gemini/commands/_project_/plan-task.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/post-release.en.toml +0 -6
- package/templates/.gemini/commands/_project_/post-release.zh-CN.toml +0 -6
- package/templates/.gemini/commands/_project_/refine-title.en.toml +0 -8
- package/templates/.gemini/commands/_project_/refine-title.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/release.en.toml +0 -8
- package/templates/.gemini/commands/_project_/release.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/restore-task.en.toml +0 -8
- package/templates/.gemini/commands/_project_/restore-task.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/review-analysis.en.toml +0 -10
- package/templates/.gemini/commands/_project_/review-analysis.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/review-code.en.toml +0 -10
- package/templates/.gemini/commands/_project_/review-code.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/review-plan.en.toml +0 -10
- package/templates/.gemini/commands/_project_/review-plan.zh-CN.toml +0 -10
- package/templates/.gemini/commands/_project_/test-integration.en.toml +0 -6
- package/templates/.gemini/commands/_project_/test-integration.zh-CN.toml +0 -6
- package/templates/.gemini/commands/_project_/test.en.toml +0 -6
- package/templates/.gemini/commands/_project_/test.zh-CN.toml +0 -6
- package/templates/.gemini/commands/_project_/update-agent-infra.en.toml +0 -6
- package/templates/.gemini/commands/_project_/update-agent-infra.zh-CN.toml +0 -6
- package/templates/.gemini/commands/_project_/upgrade-dependency.en.toml +0 -8
- package/templates/.gemini/commands/_project_/upgrade-dependency.zh-CN.toml +0 -8
- package/templates/.gemini/commands/_project_/watch-pr.en.toml +0 -10
- package/templates/.gemini/commands/_project_/watch-pr.zh-CN.toml +0 -10
- package/templates/.gemini/settings.json +0 -3
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<h1 align="center">Agent Infra</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
Collaboration infrastructure for AI coding agents — skills, workflows, and sandboxes for Claude Code, Codex,
|
|
8
|
+
Collaboration infrastructure for AI coding agents — skills, workflows, and sandboxes for Claude Code, Codex, Antigravity CLI, and OpenCode.
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
|
|
29
29
|
## Why agent-infra?
|
|
30
30
|
|
|
31
|
-
Teams increasingly mix Claude Code, Codex,
|
|
31
|
+
Teams increasingly mix Claude Code, Codex, Antigravity CLI, OpenCode, and other AI TUIs in the same repository, but each tool tends to introduce its own commands, prompts, and local conventions. Without a shared layer, the result is fragmented workflows, duplicated setup, and task history that is difficult to audit.
|
|
32
32
|
|
|
33
33
|
agent-infra standardizes that shared infrastructure. It gives every supported AI TUI the same task lifecycle, the same skill vocabulary, the same project governance files, isolated development sandboxes, and the same upgrade path, so teams can switch tools without rebuilding process from scratch.
|
|
34
34
|
|
|
@@ -56,9 +56,9 @@ Once initialized, open the project in your AI TUI and install the latest skills:
|
|
|
56
56
|
```bash
|
|
57
57
|
/import-issue 42 # AI reads the issue, creates a task, extracts requirements
|
|
58
58
|
/analyze-task <task-id> # AI scans the codebase, finds the root cause, writes analysis.md
|
|
59
|
-
/review-analysis <task-id> #
|
|
59
|
+
/review-analysis <task-id> # An isolated reviewer checks the analysis
|
|
60
60
|
/plan-task <task-id> # AI proposes a fix plan
|
|
61
|
-
/review-plan <task-id> #
|
|
61
|
+
/review-plan <task-id> # A fresh isolated reviewer checks the plan
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
> **You review the plan and reply in natural language:**
|
|
@@ -72,7 +72,7 @@ Just fix it at the application layer in LoginService.
|
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
74
|
/code-task <task-id> # AI writes the fix, adds a test for user+tag@example.com — green
|
|
75
|
-
/review-code <task-id> #
|
|
75
|
+
/review-code <task-id> # A fresh isolated reviewer reports one minor finding
|
|
76
76
|
/code-task <task-id> # AI fixes the minor issue and re-validates
|
|
77
77
|
/commit
|
|
78
78
|
/create-pr <task-id> # PR opened, auto-linked to issue #42
|
|
@@ -81,11 +81,11 @@ Just fix it at the application layer in LoginService.
|
|
|
81
81
|
|
|
82
82
|
**11 commands. 1 natural-language correction. From issue to merged PR.** That is the entire SOP — programming can have a standard operating procedure too.
|
|
83
83
|
|
|
84
|
-
Every command above works the same way in Claude Code, Codex,
|
|
84
|
+
Every command above works the same way in Claude Code, Codex, Antigravity CLI, and OpenCode. Switch tools mid-task — the workflow state follows. For what each skill does under the hood, see [Built-in AI Skills](./docs/en/skills.md).
|
|
85
85
|
|
|
86
86
|
## Key Features
|
|
87
87
|
|
|
88
|
-
- **Multi-AI collaboration**: one shared operating model for Claude Code, Codex,
|
|
88
|
+
- **Multi-AI collaboration**: one shared operating model for Claude Code, Codex, Antigravity CLI, and OpenCode
|
|
89
89
|
- **Bootstrap CLI + skill-driven execution**: initialize once, then let AI skills drive day-to-day work
|
|
90
90
|
- **IM command bridge**: route Feishu messages to built-ins, read-only task views, sandbox management, and controlled lifecycle skill runs
|
|
91
91
|
- **Bilingual project docs**: English-first docs with synchronized Chinese translations
|
|
@@ -141,7 +141,7 @@ ai init
|
|
|
141
141
|
# or: agent-infra init
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
-
The CLI collects project metadata,
|
|
144
|
+
The CLI collects project metadata, lets you select the enabled Agent Clients, installs their `update-agent-infra` seed commands, and generates `.agents/.airc.json`.
|
|
145
145
|
|
|
146
146
|
> `ai` is a shorthand for `agent-infra`. Both commands are equivalent.
|
|
147
147
|
|
|
@@ -153,23 +153,36 @@ Open the project in any AI TUI and run `update-agent-infra`:
|
|
|
153
153
|
|-----|---------|
|
|
154
154
|
| Claude Code | `/update-agent-infra` |
|
|
155
155
|
| Codex | `$update-agent-infra` |
|
|
156
|
-
|
|
|
156
|
+
| Antigravity CLI | `/update-agent-infra` |
|
|
157
157
|
| OpenCode | `/update-agent-infra` |
|
|
158
158
|
|
|
159
159
|
This detects the packaged template version and renders all managed files. The same command is used both for first-time setup and for future template upgrades.
|
|
160
160
|
|
|
161
161
|
## Core Commands
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
Manage the four built-in Agent Clients independently from the project lifecycle:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
ai agent-client list
|
|
167
|
+
ai agent-client status
|
|
168
|
+
ai agent-client enable codex
|
|
169
|
+
ai agent-client disable antigravity-cli
|
|
170
|
+
ai agent-client configure
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
The most-used lifecycle commands, in delivery order. The command prefix varies by TUI (`/skill` in Claude Code/Antigravity/OpenCode and `$skill` in Codex); the workflow semantics stay the same.
|
|
164
174
|
|
|
165
175
|
| Command | Purpose |
|
|
166
176
|
|---------|---------|
|
|
167
177
|
| `create-task` / `import-issue` | Start a task from a description or a GitHub Issue |
|
|
178
|
+
| `run-task` | Resume the lifecycle with fresh isolated executors/reviewers when the selected client exposes verified actual model/effort evidence; current built-in clients, including Claude Code and Codex, fail closed before delegation because their native start events do not expose all required evidence |
|
|
168
179
|
| `analyze-task` → `review-analysis` | Capture scope and risks, then review the analysis |
|
|
169
180
|
| `plan-task` → `review-plan` | Design the approach, then review the plan |
|
|
170
181
|
| `code-task` → `review-code` | Implement and test, then run a structured code review |
|
|
171
182
|
| `commit` → `create-pr` → `complete-task` | Commit, open a PR, and archive the task |
|
|
172
183
|
|
|
184
|
+
Start with one atomic role policy, for example: `$run-task 42 --executor-model <id> --executor-reasoning-effort <value> --reviewer-model <id> --reviewer-reasoning-effort <value>`. Both roles may use the same model. With no explicit policy, `run-task` reads the current Agent Client's optional `agentClients[].orchestration`; if neither source is complete, it shows the host model-selection guidance before creating any run. Re-entry uses the persisted v2 policy.
|
|
185
|
+
|
|
173
186
|
See the full catalog — task status, release, security, and project-maintenance skills — in [Built-in AI Skills](./docs/en/skills.md).
|
|
174
187
|
|
|
175
188
|
## What You Get
|
|
@@ -185,7 +198,6 @@ my-project/
|
|
|
185
198
|
│ ├── workflows/ # 4 prebuilt workflows
|
|
186
199
|
│ └── templates/ # Task and artifact templates
|
|
187
200
|
├── .claude/ # Claude Code config and commands
|
|
188
|
-
├── .gemini/ # Gemini CLI config and commands
|
|
189
201
|
├── .opencode/ # OpenCode config and commands
|
|
190
202
|
└── AGENTS.md # Universal AI agent instructions
|
|
191
203
|
```
|
|
@@ -197,6 +209,7 @@ In-depth guides live under [`docs/en/`](./docs/en/README.md):
|
|
|
197
209
|
- [Architecture Overview](./docs/en/architecture.md) — bootstrap CLI, end-to-end flow, layered architecture
|
|
198
210
|
- [Platform Support](./docs/en/platform-support.md) — macOS, Linux, Windows; sandbox engines and resources
|
|
199
211
|
- [Sandbox](./docs/en/sandbox.md) — sandbox aliases, host-sandbox file exchange, user-level dotfiles channel
|
|
212
|
+
- [Benchmark Contract and Threat Model](./docs/en/benchmark.md) — versioned benchmark schemas, trust boundaries, and security guarantees
|
|
200
213
|
- [Feishu Bridge](./docs/en/feishu-bridge.md) — configure the Feishu long-connection adapter, command routing, permissions, and TUI selection
|
|
201
214
|
- [Built-in AI Skills](./docs/en/skills.md) — the full skill catalog by use case
|
|
202
215
|
- [Custom Skills](./docs/en/custom-skills.md) — create and sync project-specific skills
|
package/README.zh-CN.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<h1 align="center">Agent Infra</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
AI 编程代理的协作基础设施 —— 为 Claude Code、Codex、
|
|
8
|
+
AI 编程代理的协作基础设施 —— 为 Claude Code、Codex、Antigravity CLI、OpenCode 提供 skills、工作流和沙箱。
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
|
|
29
29
|
## 为什么需要 agent-infra?
|
|
30
30
|
|
|
31
|
-
越来越多的团队会在同一个仓库里混用 Claude Code、Codex、
|
|
31
|
+
越来越多的团队会在同一个仓库里混用 Claude Code、Codex、Antigravity CLI、OpenCode 等 AI TUI,但每个工具往往都会带来自己的命令体系、提示词习惯和本地约定。缺少共享层时,结果通常是工作流割裂、初始化重复、任务历史难以追踪。
|
|
32
32
|
|
|
33
33
|
agent-infra 的目标就是把这层共享基础设施标准化。它为所有支持的 AI TUI 提供统一的任务生命周期、统一的 skill 词汇、统一的项目治理文件、隔离的开发沙箱以及统一的升级路径,让团队切换工具时不必重新发明流程。
|
|
34
34
|
|
|
@@ -55,9 +55,9 @@ agent-infra 的目标就是把这层共享基础设施标准化。它为所有
|
|
|
55
55
|
```bash
|
|
56
56
|
/import-issue 42 # AI 读取 Issue,创建任务,提取需求
|
|
57
57
|
/analyze-task <task-id> # AI 扫描代码库,定位根因,输出 analysis.md
|
|
58
|
-
/review-analysis <task-id> #
|
|
58
|
+
/review-analysis <task-id> # 隔离 reviewer 审查分析产物
|
|
59
59
|
/plan-task <task-id> # AI 提出修复方案
|
|
60
|
-
/review-plan <task-id> #
|
|
60
|
+
/review-plan <task-id> # fresh 隔离 reviewer 审查方案
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
> **你审查方案后用自然语言回复:**
|
|
@@ -71,7 +71,7 @@ agent-infra 的目标就是把这层共享基础设施标准化。它为所有
|
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
73
|
/code-task <task-id> # AI 编写修复代码,添加 user+tag@example.com 测试 —— 通过
|
|
74
|
-
/review-code <task-id> #
|
|
74
|
+
/review-code <task-id> # fresh 隔离 reviewer 报告一个次要问题
|
|
75
75
|
/code-task <task-id> # AI 修复次要问题并重新验证
|
|
76
76
|
/commit
|
|
77
77
|
/create-pr <task-id> # PR 已创建,自动关联 Issue #42
|
|
@@ -80,11 +80,11 @@ agent-infra 的目标就是把这层共享基础设施标准化。它为所有
|
|
|
80
80
|
|
|
81
81
|
**11 条命令,1 次自然语言纠正,从 Issue 到合并 PR。** 这就是完整的 SOP —— 编程也可以有标准作业流程。
|
|
82
82
|
|
|
83
|
-
以上每条命令在 Claude Code、Codex、
|
|
83
|
+
以上每条命令在 Claude Code、Codex、Antigravity CLI、OpenCode 中完全通用。任务进行到一半切换工具,工作流状态照常延续。每个 skill 背后做了什么,见 [内置 AI Skills](./docs/zh-CN/skills.md)。
|
|
84
84
|
|
|
85
85
|
## 核心特性
|
|
86
86
|
|
|
87
|
-
- **多 AI 协作**:为 Claude Code、Codex、
|
|
87
|
+
- **多 AI 协作**:为 Claude Code、Codex、Antigravity CLI、OpenCode 提供统一的协作模型
|
|
88
88
|
- **引导 CLI + skill 驱动执行**:初始化一次,后续日常操作交给 AI skills
|
|
89
89
|
- **IM 命令桥接**:把飞书消息路由到内置命令、任务只读视图、沙箱管理和受控生命周期 skill 执行
|
|
90
90
|
- **双语文档**:英文为主文档,配套同步的中文版本
|
|
@@ -140,7 +140,7 @@ ai init
|
|
|
140
140
|
# 或:agent-infra init
|
|
141
141
|
```
|
|
142
142
|
|
|
143
|
-
CLI
|
|
143
|
+
CLI 会收集项目元数据,让你选择启用的 Agent Client,为其安装 `update-agent-infra` 种子命令,并生成 `.agents/.airc.json`。
|
|
144
144
|
|
|
145
145
|
> `ai` 是 `agent-infra` 的简写命令,两者等价。
|
|
146
146
|
|
|
@@ -152,23 +152,36 @@ CLI 会收集项目元数据,向所有支持的 AI TUI 安装 `update-agent-in
|
|
|
152
152
|
|-----|------|
|
|
153
153
|
| Claude Code | `/update-agent-infra` |
|
|
154
154
|
| Codex | `$update-agent-infra` |
|
|
155
|
-
|
|
|
155
|
+
| Antigravity CLI | `/update-agent-infra` |
|
|
156
156
|
| OpenCode | `/update-agent-infra` |
|
|
157
157
|
|
|
158
158
|
该命令会检测当前打包模板版本并渲染所有受管理文件。首次安装和后续升级都使用同一条命令。
|
|
159
159
|
|
|
160
160
|
## 核心命令
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
以下命令用于独立管理四个内建 Agent Client:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
ai agent-client list
|
|
166
|
+
ai agent-client status
|
|
167
|
+
ai agent-client enable codex
|
|
168
|
+
ai agent-client disable antigravity-cli
|
|
169
|
+
ai agent-client configure
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
最常用的生命周期命令,按交付顺序排列。命令前缀因 TUI 而异(Claude Code/Antigravity/OpenCode 用 `/skill`,Codex 用 `$skill`),工作流语义保持一致。
|
|
163
173
|
|
|
164
174
|
| 命令 | 用途 |
|
|
165
175
|
|------|------|
|
|
166
176
|
| `create-task` / `import-issue` | 从描述或 GitHub Issue 创建任务 |
|
|
177
|
+
| `run-task` | 当所选客户端能提供已验证的 actual model/effort 证据时,用 fresh 隔离 executor/reviewer 续跑生命周期;当前内建客户端(含 Claude Code 与 Codex)因原生 start 事件未暴露全部必需证据,会在委派前失败关闭 |
|
|
167
178
|
| `analyze-task` → `review-analysis` | 明确范围与风险,再审查分析 |
|
|
168
179
|
| `plan-task` → `review-plan` | 设计实现路径,再审查方案 |
|
|
169
180
|
| `code-task` → `review-code` | 实现并测试,再执行结构化代码审查 |
|
|
170
181
|
| `commit` → `create-pr` → `complete-task` | 提交、创建 PR、归档任务 |
|
|
171
182
|
|
|
183
|
+
启动时可提供原子角色策略,例如:`$run-task 42 --executor-model <id> --executor-reasoning-effort <值> --reviewer-model <id> --reviewer-reasoning-effort <值>`。两个角色可以使用同一模型。完全没有显式策略时,`run-task` 读取当前 Agent Client 可选的 `agentClients[].orchestration`;两个来源都不完整时,会在创建任何 run 前展示宿主模型选择指引。重入使用已持久化的 v2 策略。
|
|
184
|
+
|
|
172
185
|
完整清单(任务状态、发布、安全、项目维护等 skill)见 [内置 AI Skills](./docs/zh-CN/skills.md)。
|
|
173
186
|
|
|
174
187
|
## 安装效果
|
|
@@ -184,7 +197,6 @@ my-project/
|
|
|
184
197
|
│ ├── workflows/ # 4 个预置工作流
|
|
185
198
|
│ └── templates/ # 任务与产物模板
|
|
186
199
|
├── .claude/ # Claude Code 配置与命令
|
|
187
|
-
├── .gemini/ # Gemini CLI 配置与命令
|
|
188
200
|
├── .opencode/ # OpenCode 配置与命令
|
|
189
201
|
└── AGENTS.md # 通用 AI agent 指令
|
|
190
202
|
```
|
|
@@ -196,6 +208,7 @@ my-project/
|
|
|
196
208
|
- [架构概览](./docs/zh-CN/architecture.md) — 引导 CLI、端到端流程、分层架构
|
|
197
209
|
- [平台支持](./docs/zh-CN/platform-support.md) — macOS、Linux、Windows;沙箱引擎与资源配置
|
|
198
210
|
- [沙箱](./docs/zh-CN/sandbox.md) — 沙箱 aliases、宿主-沙箱文件交换、用户级 dotfiles 通道
|
|
211
|
+
- [Benchmark 契约与威胁模型](./docs/zh-CN/benchmark.md) — 版本化 benchmark schema、信任边界与安全保证
|
|
199
212
|
- [飞书桥接](./docs/zh-CN/feishu-bridge.md) — 配置飞书长连接 adapter、命令路由、权限和 TUI 选择
|
|
200
213
|
- [内置 AI Skills](./docs/zh-CN/skills.md) — 按使用场景分组的完整 skill 清单
|
|
201
214
|
- [自定义 Skills](./docs/zh-CN/custom-skills.md) — 创建并同步项目专属 skill
|
package/bin/cli.ts
CHANGED
|
@@ -15,6 +15,7 @@ const USAGE = `agent-infra ${VERSION} - bootstrap AI collaboration infrastructur
|
|
|
15
15
|
Usage: ai <command> [options]
|
|
16
16
|
|
|
17
17
|
Commands:
|
|
18
|
+
agent-client List, inspect, enable, disable, or configure Agent Clients
|
|
18
19
|
cp <ssh-alias> Copy local clipboard image to a remote macOS clipboard or Linux sandbox over SSH
|
|
19
20
|
decide Record a ruling; code-stage decisions require explicit implementation intent
|
|
20
21
|
help Show this help message
|
|
@@ -71,6 +72,17 @@ async function importCommand(importPath: string) {
|
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
switch (command) {
|
|
75
|
+
case 'agent-client': {
|
|
76
|
+
const imported = await importCommand('../lib/agent-client.ts');
|
|
77
|
+
if (!imported) break;
|
|
78
|
+
const { cmdAgentClient } = imported;
|
|
79
|
+
const code = await cmdAgentClient(process.argv.slice(3)).catch((e: unknown) => {
|
|
80
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
81
|
+
return 1;
|
|
82
|
+
});
|
|
83
|
+
if (code) process.exitCode = code;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
74
86
|
case 'cp': {
|
|
75
87
|
const imported = await importCommand('../lib/cp.ts');
|
|
76
88
|
if (!imported) break;
|
package/dist/bin/cli.js
CHANGED
|
@@ -19,6 +19,7 @@ const USAGE = `agent-infra ${VERSION} - bootstrap AI collaboration infrastructur
|
|
|
19
19
|
Usage: ai <command> [options]
|
|
20
20
|
|
|
21
21
|
Commands:
|
|
22
|
+
agent-client List, inspect, enable, disable, or configure Agent Clients
|
|
22
23
|
cp <ssh-alias> Copy local clipboard image to a remote macOS clipboard or Linux sandbox over SSH
|
|
23
24
|
decide Record a ruling; code-stage decisions require explicit implementation intent
|
|
24
25
|
help Show this help message
|
|
@@ -69,6 +70,19 @@ async function importCommand(importPath) {
|
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
switch (command) {
|
|
73
|
+
case 'agent-client': {
|
|
74
|
+
const imported = await importCommand('../lib/agent-client.ts');
|
|
75
|
+
if (!imported)
|
|
76
|
+
break;
|
|
77
|
+
const { cmdAgentClient } = imported;
|
|
78
|
+
const code = await cmdAgentClient(process.argv.slice(3)).catch((e) => {
|
|
79
|
+
process.stderr.write(`Error: ${errorMessage(e)}\n`);
|
|
80
|
+
return 1;
|
|
81
|
+
});
|
|
82
|
+
if (code)
|
|
83
|
+
process.exitCode = code;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
72
86
|
case 'cp': {
|
|
73
87
|
const imported = await importCommand('../lib/cp.ts');
|
|
74
88
|
if (!imported)
|
package/dist/bin/internal-cli.js
CHANGED
|
@@ -6,6 +6,11 @@ if (major < 22 || (major === 22 && minor < 9)) {
|
|
|
6
6
|
}
|
|
7
7
|
const command = process.argv[2] || '';
|
|
8
8
|
switch (command) {
|
|
9
|
+
case 'agent-client': {
|
|
10
|
+
const { agentClient } = await import('../lib/internal/agent-client.js');
|
|
11
|
+
agentClient(process.argv.slice(3));
|
|
12
|
+
break;
|
|
13
|
+
}
|
|
9
14
|
case 'git-workflow': {
|
|
10
15
|
const { gitWorkflow } = await import('../lib/internal/git-workflow.js');
|
|
11
16
|
gitWorkflow(process.argv.slice(3));
|
|
@@ -41,6 +46,16 @@ switch (command) {
|
|
|
41
46
|
platformPr(process.argv.slice(3));
|
|
42
47
|
break;
|
|
43
48
|
}
|
|
49
|
+
case 'platform-pr-review': {
|
|
50
|
+
const { platformPrReview } = await import('../lib/internal/platform-pr-review.js');
|
|
51
|
+
platformPrReview(process.argv.slice(3));
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
case 'pr-review-grade': {
|
|
55
|
+
const { prReviewGrade } = await import('../lib/internal/pr-review-grade.js');
|
|
56
|
+
prReviewGrade(process.argv.slice(3));
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
44
59
|
case 'platform-checks': {
|
|
45
60
|
const { platformChecks } = await import('../lib/internal/platform-checks.js');
|
|
46
61
|
await platformChecks(process.argv.slice(3));
|
|
@@ -61,11 +76,26 @@ switch (command) {
|
|
|
61
76
|
taskWarning(process.argv.slice(3));
|
|
62
77
|
break;
|
|
63
78
|
}
|
|
79
|
+
case 'task-activity': {
|
|
80
|
+
const { taskActivity } = await import('../lib/internal/task-activity.js');
|
|
81
|
+
taskActivity(process.argv.slice(3));
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
64
84
|
case 'task-artifact': {
|
|
65
85
|
const { taskArtifact } = await import('../lib/internal/task-artifact.js');
|
|
66
86
|
taskArtifact(process.argv.slice(3));
|
|
67
87
|
break;
|
|
68
88
|
}
|
|
89
|
+
case 'task-orchestration': {
|
|
90
|
+
const { taskOrchestration } = await import('../lib/internal/task-orchestration.js');
|
|
91
|
+
taskOrchestration(process.argv.slice(3));
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
case 'task-review': {
|
|
95
|
+
const { taskReview } = await import('../lib/internal/task-review.js');
|
|
96
|
+
taskReview(process.argv.slice(3));
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
69
99
|
case 'task-event': {
|
|
70
100
|
const { taskEvent } = await import('../lib/internal/task-event.js');
|
|
71
101
|
taskEvent(process.argv.slice(3));
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { AgentClientConfigError, normalizeAgentClients } from './agent-clients/config.js';
|
|
4
|
+
import { applyAgentClientReconciliation, planAgentClientReconciliation } from './agent-clients/reconcile.js';
|
|
5
|
+
import { listAgentClientAdapters } from './agent-clients/registry.js';
|
|
6
|
+
import { AGENT_CLIENT_IDS, isAgentClientId } from './agent-clients/types.js';
|
|
7
|
+
import { closePrompt, multiSelect } from './prompt.js';
|
|
8
|
+
import { resolveTemplateDir } from './paths.js';
|
|
9
|
+
const USAGE = `Usage: ai agent-client <operation>
|
|
10
|
+
|
|
11
|
+
Operations:
|
|
12
|
+
list List built-in Agent Clients
|
|
13
|
+
status Show project integration and sandbox state
|
|
14
|
+
enable <client-id> Enable project integration only
|
|
15
|
+
disable <client-id> Disable project integration only
|
|
16
|
+
configure Configure integration and sandbox state interactively
|
|
17
|
+
`;
|
|
18
|
+
class AgentClientCommandError extends Error {
|
|
19
|
+
code;
|
|
20
|
+
constructor(code, message) {
|
|
21
|
+
super(`${code}: ${message}`);
|
|
22
|
+
this.name = 'AgentClientCommandError';
|
|
23
|
+
this.code = code;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function readConfig(projectRoot) {
|
|
27
|
+
const configPath = path.join(projectRoot, '.agents', '.airc.json');
|
|
28
|
+
if (!fs.existsSync(configPath)) {
|
|
29
|
+
throw new AgentClientCommandError('AGENT_CLIENT_CONFIG_NOT_FOUND', 'No .agents/.airc.json found. Run "ai init" first.');
|
|
30
|
+
}
|
|
31
|
+
let parsed;
|
|
32
|
+
try {
|
|
33
|
+
parsed = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw new AgentClientCommandError('AGENT_CLIENT_CONFIG_INVALID', error instanceof Error ? error.message : String(error));
|
|
37
|
+
}
|
|
38
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
39
|
+
throw new AgentClientCommandError('AGENT_CLIENT_CONFIG_INVALID', 'configuration root must be an object');
|
|
40
|
+
}
|
|
41
|
+
return parsed;
|
|
42
|
+
}
|
|
43
|
+
function choices() {
|
|
44
|
+
return listAgentClientAdapters().map((adapter) => ({
|
|
45
|
+
id: adapter.id,
|
|
46
|
+
label: adapter.displayName
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
function selected(state, field) {
|
|
50
|
+
return AGENT_CLIENT_IDS.filter((id) => state[id][field]);
|
|
51
|
+
}
|
|
52
|
+
function workflowPlan(projectRoot, config, mutation) {
|
|
53
|
+
const templateRoot = resolveTemplateDir();
|
|
54
|
+
if (!templateRoot) {
|
|
55
|
+
throw new AgentClientCommandError('AGENT_CLIENT_TEMPLATE_NOT_FOUND', 'Template directory not found');
|
|
56
|
+
}
|
|
57
|
+
const platform = config.platform;
|
|
58
|
+
const platformType = typeof platform === 'object' && platform !== null && 'type' in platform
|
|
59
|
+
? String(platform.type ?? 'github')
|
|
60
|
+
: 'github';
|
|
61
|
+
return planAgentClientReconciliation({
|
|
62
|
+
config,
|
|
63
|
+
mutation,
|
|
64
|
+
projectRoot,
|
|
65
|
+
templateRoot,
|
|
66
|
+
platformType,
|
|
67
|
+
language: String(config.language ?? 'en')
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function printState(state) {
|
|
71
|
+
for (const adapter of listAgentClientAdapters()) {
|
|
72
|
+
const value = state[adapter.id];
|
|
73
|
+
process.stdout.write(` ${adapter.id}: enabled=${String(value.enabled)} installInSandbox=${String(value.installInSandbox)}\n`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async function cmdAgentClient(args) {
|
|
77
|
+
const operation = args[0];
|
|
78
|
+
if (!operation || operation === '--help' || operation === '-h' || operation === 'help') {
|
|
79
|
+
process.stdout.write(USAGE);
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
82
|
+
if (operation === 'list') {
|
|
83
|
+
if (args.length !== 1) {
|
|
84
|
+
throw new AgentClientCommandError('AGENT_CLIENT_ARGUMENT_INVALID', 'list accepts no arguments');
|
|
85
|
+
}
|
|
86
|
+
for (const adapter of listAgentClientAdapters()) {
|
|
87
|
+
process.stdout.write(`${adapter.id}\t${adapter.displayName}\t${adapter.invocation}\tcommands=${adapter.capabilities.commands.level}\tsandbox=${adapter.capabilities.sandbox.level}\n`);
|
|
88
|
+
}
|
|
89
|
+
return 0;
|
|
90
|
+
}
|
|
91
|
+
const projectRoot = process.cwd();
|
|
92
|
+
const config = readConfig(projectRoot);
|
|
93
|
+
try {
|
|
94
|
+
if (operation === 'status') {
|
|
95
|
+
if (args.length !== 1) {
|
|
96
|
+
throw new AgentClientCommandError('AGENT_CLIENT_ARGUMENT_INVALID', 'status accepts no arguments');
|
|
97
|
+
}
|
|
98
|
+
const plan = workflowPlan(projectRoot, config, { type: 'none' });
|
|
99
|
+
process.stdout.write(`source: ${plan.source}\n`);
|
|
100
|
+
printState(plan.desired);
|
|
101
|
+
for (const seed of plan.seedOperations) {
|
|
102
|
+
process.stdout.write(` seed ${seed.target}: ${seed.kind}\n`);
|
|
103
|
+
}
|
|
104
|
+
for (const diagnostic of plan.diagnostics) {
|
|
105
|
+
process.stdout.write(` diagnostic ${diagnostic.code} at ${diagnostic.path}\n`);
|
|
106
|
+
}
|
|
107
|
+
return 0;
|
|
108
|
+
}
|
|
109
|
+
if (operation === 'enable' || operation === 'disable') {
|
|
110
|
+
if (args.length !== 2) {
|
|
111
|
+
throw new AgentClientCommandError('AGENT_CLIENT_ARGUMENT_INVALID', `${operation} requires exactly one client id`);
|
|
112
|
+
}
|
|
113
|
+
const id = args[1];
|
|
114
|
+
if (!isAgentClientId(id)) {
|
|
115
|
+
throw new AgentClientCommandError('UNKNOWN_AGENT_CLIENT', `Unknown Agent Client '${String(id)}'`);
|
|
116
|
+
}
|
|
117
|
+
const plan = workflowPlan(projectRoot, config, {
|
|
118
|
+
type: 'set-enabled',
|
|
119
|
+
id,
|
|
120
|
+
value: operation === 'enable'
|
|
121
|
+
});
|
|
122
|
+
process.stdout.write('Before:\n');
|
|
123
|
+
printState(plan.before);
|
|
124
|
+
const result = applyAgentClientReconciliation(plan);
|
|
125
|
+
process.stdout.write('After:\n');
|
|
126
|
+
printState(plan.desired);
|
|
127
|
+
process.stdout.write(`Result: ${result.status}; applied=${result.applied.length}; protected=${result.protected.length}\n`);
|
|
128
|
+
return 0;
|
|
129
|
+
}
|
|
130
|
+
if (operation === 'configure') {
|
|
131
|
+
if (args.length !== 1) {
|
|
132
|
+
throw new AgentClientCommandError('AGENT_CLIENT_ARGUMENT_INVALID', 'configure accepts no arguments');
|
|
133
|
+
}
|
|
134
|
+
const normalized = normalizeAgentClients(config);
|
|
135
|
+
let enabled;
|
|
136
|
+
let installed;
|
|
137
|
+
try {
|
|
138
|
+
enabled = await multiSelect('Agent Client project integrations', choices(), selected(normalized.state, 'enabled'));
|
|
139
|
+
installed = await multiSelect('Agent Clients installed in sandbox', choices(), selected(normalized.state, 'installInSandbox'));
|
|
140
|
+
}
|
|
141
|
+
finally {
|
|
142
|
+
closePrompt();
|
|
143
|
+
}
|
|
144
|
+
const state = Object.fromEntries(AGENT_CLIENT_IDS.map((id) => [id, {
|
|
145
|
+
enabled: enabled.includes(id),
|
|
146
|
+
installInSandbox: installed.includes(id)
|
|
147
|
+
}]));
|
|
148
|
+
const plan = workflowPlan(projectRoot, config, { type: 'replace-state', state });
|
|
149
|
+
const result = applyAgentClientReconciliation(plan);
|
|
150
|
+
process.stdout.write(`Result: ${result.status}; applied=${result.applied.length}; protected=${result.protected.length}\n`);
|
|
151
|
+
return 0;
|
|
152
|
+
}
|
|
153
|
+
throw new AgentClientCommandError('AGENT_CLIENT_OPERATION_INVALID', `Unknown operation '${operation}'`);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
if (error instanceof AgentClientConfigError) {
|
|
157
|
+
throw new AgentClientCommandError(error.code, error.message);
|
|
158
|
+
}
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
export { AgentClientCommandError, cmdAgentClient };
|
|
163
|
+
//# sourceMappingURL=agent-client.js.map
|