@dommaker/harness 0.9.0 → 0.11.0
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 +26 -14
- package/bin/harness.js +112 -0
- package/dist/architecture/constraint-engine.d.ts +18 -0
- package/dist/architecture/constraint-engine.d.ts.map +1 -1
- package/dist/architecture/constraint-engine.js +101 -9
- package/dist/architecture/constraint-engine.js.map +1 -1
- package/dist/architecture/cross-project-checker.d.ts +1 -1
- package/dist/architecture/cross-project-checker.d.ts.map +1 -1
- package/dist/architecture/cross-project-checker.js +247 -33
- package/dist/architecture/cross-project-checker.js.map +1 -1
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +182 -71
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/diagnose.d.ts +16 -0
- package/dist/cli/commands/diagnose.d.ts.map +1 -0
- package/dist/cli/commands/diagnose.js +195 -0
- package/dist/cli/commands/diagnose.js.map +1 -0
- package/dist/cli/commands/failure.d.ts +28 -0
- package/dist/cli/commands/failure.d.ts.map +1 -0
- package/dist/cli/commands/failure.js +132 -0
- package/dist/cli/commands/failure.js.map +1 -0
- package/dist/cli/commands/flow.d.ts +2 -0
- package/dist/cli/commands/flow.d.ts.map +1 -1
- package/dist/cli/commands/flow.js +38 -3
- package/dist/cli/commands/flow.js.map +1 -1
- package/dist/cli/commands/index.d.ts +3 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +13 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +251 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/knowledge.d.ts +41 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.js +195 -0
- package/dist/cli/commands/knowledge.js.map +1 -0
- package/dist/cli/commands/propose.d.ts +18 -0
- package/dist/cli/commands/propose.d.ts.map +1 -0
- package/dist/cli/commands/propose.js +331 -0
- package/dist/cli/commands/propose.js.map +1 -0
- package/dist/cli/commands/report.d.ts +1 -1
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +57 -70
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/security.d.ts.map +1 -1
- package/dist/cli/commands/security.js +57 -43
- package/dist/cli/commands/security.js.map +1 -1
- package/dist/cli/commands/sync-docs.d.ts +21 -0
- package/dist/cli/commands/sync-docs.d.ts.map +1 -0
- package/dist/cli/commands/sync-docs.js +564 -0
- package/dist/cli/commands/sync-docs.js.map +1 -0
- package/dist/cli/commands/traces.d.ts +15 -0
- package/dist/cli/commands/traces.d.ts.map +1 -0
- package/dist/cli/commands/traces.js +167 -0
- package/dist/cli/commands/traces.js.map +1 -0
- package/dist/constraints/index.d.ts +1 -2
- package/dist/constraints/index.d.ts.map +1 -1
- package/dist/constraints/index.js +1 -2
- package/dist/constraints/index.js.map +1 -1
- package/dist/constraints/lifecycle-runner.d.ts +52 -0
- package/dist/constraints/lifecycle-runner.d.ts.map +1 -0
- package/dist/constraints/lifecycle-runner.js +151 -0
- package/dist/constraints/lifecycle-runner.js.map +1 -0
- package/dist/constraints/registry.d.ts +2 -40
- package/dist/constraints/registry.d.ts.map +1 -1
- package/dist/constraints/registry.js +20 -59
- package/dist/constraints/registry.js.map +1 -1
- package/dist/core/constraints/checker.d.ts +32 -0
- package/dist/core/constraints/checker.d.ts.map +1 -1
- package/dist/core/constraints/checker.js +281 -8
- package/dist/core/constraints/checker.js.map +1 -1
- package/dist/core/constraints/default-executors.d.ts +10 -0
- package/dist/core/constraints/default-executors.d.ts.map +1 -0
- package/dist/core/constraints/default-executors.js +120 -0
- package/dist/core/constraints/default-executors.js.map +1 -0
- package/dist/core/constraints/definitions.d.ts.map +1 -1
- package/dist/core/constraints/definitions.js +84 -0
- package/dist/core/constraints/definitions.js.map +1 -1
- package/dist/core/constraints/interceptor.d.ts.map +1 -1
- package/dist/core/constraints/interceptor.js +3 -0
- package/dist/core/constraints/interceptor.js.map +1 -1
- package/dist/core/session/clean-state.d.ts.map +1 -1
- package/dist/core/session/clean-state.js +5 -1
- package/dist/core/session/clean-state.js.map +1 -1
- package/dist/evolution/auto-evolve.d.ts +36 -0
- package/dist/evolution/auto-evolve.d.ts.map +1 -0
- package/dist/evolution/auto-evolve.js +63 -0
- package/dist/evolution/auto-evolve.js.map +1 -0
- package/dist/evolution/index.d.ts +2 -0
- package/dist/evolution/index.d.ts.map +1 -0
- package/dist/evolution/index.js +18 -0
- package/dist/evolution/index.js.map +1 -0
- package/dist/extensions/long-running/constraints.d.ts +38 -0
- package/dist/extensions/long-running/constraints.d.ts.map +1 -0
- package/dist/extensions/long-running/constraints.js +153 -0
- package/dist/extensions/long-running/constraints.js.map +1 -0
- package/dist/extensions/long-running/index.d.ts +30 -0
- package/dist/extensions/long-running/index.d.ts.map +1 -0
- package/dist/extensions/long-running/index.js +50 -0
- package/dist/extensions/long-running/index.js.map +1 -0
- package/dist/extensions/long-running/types.d.ts +154 -0
- package/dist/extensions/long-running/types.d.ts.map +1 -0
- package/dist/extensions/long-running/types.js +9 -0
- package/dist/extensions/long-running/types.js.map +1 -0
- package/dist/governance/executor.d.ts +45 -0
- package/dist/governance/executor.d.ts.map +1 -0
- package/dist/governance/executor.js +237 -0
- package/dist/governance/executor.js.map +1 -0
- package/dist/governance/index.d.ts +9 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/index.js +13 -0
- package/dist/governance/index.js.map +1 -0
- package/dist/governance/types.d.ts +46 -0
- package/dist/governance/types.d.ts.map +1 -0
- package/dist/governance/types.js +9 -0
- package/dist/governance/types.js.map +1 -0
- package/dist/index.d.ts +26 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -13
- package/dist/index.js.map +1 -1
- package/dist/knowledge/store.d.ts.map +1 -1
- package/dist/knowledge/store.js +3 -1
- package/dist/knowledge/store.js.map +1 -1
- package/dist/monitoring/constraint-doctor.d.ts +16 -3
- package/dist/monitoring/constraint-doctor.d.ts.map +1 -1
- package/dist/monitoring/constraint-doctor.js +84 -9
- package/dist/monitoring/constraint-doctor.js.map +1 -1
- package/dist/presets/long-running.d.ts +33 -0
- package/dist/presets/long-running.d.ts.map +1 -0
- package/dist/presets/long-running.js +52 -0
- package/dist/presets/long-running.js.map +1 -0
- package/dist/tools/definitions/core/code/fingerprint.sh +273 -0
- package/dist/tools/definitions/core/code/fingerprint.yml +72 -0
- package/dist/tools/definitions/core/code/parse.yml +68 -0
- package/dist/tools/definitions/core/code/register-language.sh +475 -0
- package/dist/tools/definitions/core/code/register-language.yml +74 -0
- package/dist/tools/definitions/core/docker/build.yml +73 -0
- package/dist/tools/definitions/core/docker/run.yml +81 -0
- package/dist/tools/definitions/core/file/copy.yml +88 -0
- package/dist/tools/definitions/core/file/read.yml +69 -0
- package/dist/tools/definitions/core/file/write.yml +75 -0
- package/dist/tools/definitions/core/git/branch.yml +61 -0
- package/dist/tools/definitions/core/git/cleanup-worktree.yml +50 -0
- package/dist/tools/definitions/core/git/clone.yml +69 -0
- package/dist/tools/definitions/core/git/commit.yml +65 -0
- package/dist/tools/definitions/core/git/push.yml +79 -0
- package/dist/tools/definitions/core/git/worktree.yml +96 -0
- package/dist/tools/definitions/core/notification/notify.sh +152 -0
- package/dist/tools/definitions/core/notification/notify.yml +60 -0
- package/dist/tools/definitions/core/npm/build.yml +75 -0
- package/dist/tools/definitions/core/npm/install.yml +58 -0
- package/dist/tools/definitions/core/npm/test.yml +75 -0
- package/dist/tools/definitions/core/validation/check-reuse.yml +170 -0
- package/dist/tools/definitions/core/validation/validate-handlers.yml +118 -0
- package/dist/tools/definitions/core/validation/validate-readme-stats.yml +155 -0
- package/dist/tools/definitions/core/validation/validate-yaml-syntax.yml +134 -0
- package/dist/tools/definitions/definitions/core/code/fingerprint.sh +273 -0
- package/dist/tools/definitions/definitions/core/code/fingerprint.yml +72 -0
- package/dist/tools/definitions/definitions/core/code/parse.yml +68 -0
- package/dist/tools/definitions/definitions/core/code/register-language.sh +475 -0
- package/dist/tools/definitions/definitions/core/code/register-language.yml +74 -0
- package/dist/tools/definitions/definitions/core/docker/build.yml +73 -0
- package/dist/tools/definitions/definitions/core/docker/run.yml +81 -0
- package/dist/tools/definitions/definitions/core/file/copy.yml +88 -0
- package/dist/tools/definitions/definitions/core/file/read.yml +69 -0
- package/dist/tools/definitions/definitions/core/file/write.yml +75 -0
- package/dist/tools/definitions/definitions/core/git/branch.yml +61 -0
- package/dist/tools/definitions/definitions/core/git/cleanup-worktree.yml +50 -0
- package/dist/tools/definitions/definitions/core/git/clone.yml +69 -0
- package/dist/tools/definitions/definitions/core/git/commit.yml +65 -0
- package/dist/tools/definitions/definitions/core/git/push.yml +79 -0
- package/dist/tools/definitions/definitions/core/git/worktree.yml +96 -0
- package/dist/tools/definitions/definitions/core/notification/notify.sh +152 -0
- package/dist/tools/definitions/definitions/core/notification/notify.yml +60 -0
- package/dist/tools/definitions/definitions/core/npm/build.yml +75 -0
- package/dist/tools/definitions/definitions/core/npm/install.yml +58 -0
- package/dist/tools/definitions/definitions/core/npm/test.yml +75 -0
- package/dist/tools/definitions/definitions/core/validation/check-reuse.yml +170 -0
- package/dist/tools/definitions/definitions/core/validation/validate-handlers.yml +118 -0
- package/dist/tools/definitions/definitions/core/validation/validate-readme-stats.yml +155 -0
- package/dist/tools/definitions/definitions/core/validation/validate-yaml-syntax.yml +134 -0
- package/dist/tools/definitions/definitions/ext/browser/browser-automate.sh +255 -0
- package/dist/tools/definitions/definitions/ext/browser/browser-automate.yml +166 -0
- package/dist/tools/definitions/definitions/ext/browser/browser-close.sh +104 -0
- package/dist/tools/definitions/definitions/ext/browser/browser-close.yml +55 -0
- package/dist/tools/definitions/definitions/ext/browser/browser-mcp-debug.sh +682 -0
- package/dist/tools/definitions/definitions/ext/browser/browser-mcp-debug.yml +167 -0
- package/dist/tools/definitions/definitions/ext/browser/browser-start.sh +101 -0
- package/dist/tools/definitions/definitions/ext/browser/browser-start.yml +62 -0
- package/dist/tools/definitions/definitions/registry.json +795 -0
- package/dist/tools/definitions/definitions/std/README.md +350 -0
- package/dist/tools/definitions/definitions/std/analysis/analyze-codebase.yml +72 -0
- package/dist/tools/definitions/definitions/std/analysis/analyze-diff.yml +182 -0
- package/dist/tools/definitions/definitions/std/analysis/analyze-git-diff.yml +70 -0
- package/dist/tools/definitions/definitions/std/analysis/analyze-impact.yml +78 -0
- package/dist/tools/definitions/definitions/std/analysis/analyze-requirements.yml +105 -0
- package/dist/tools/definitions/definitions/std/analysis/brainstorm-options.yml +106 -0
- package/dist/tools/definitions/definitions/std/analysis/build-graph.yml +154 -0
- package/dist/tools/definitions/definitions/std/analysis/clarify-requirements.yml +90 -0
- package/dist/tools/definitions/definitions/std/analysis/detect-context.yml +109 -0
- package/dist/tools/definitions/definitions/std/analysis/detect-layers.yml +125 -0
- package/dist/tools/definitions/definitions/std/analysis/generate-tour.yml +102 -0
- package/dist/tools/definitions/definitions/std/analysis/search-enhance.yml +105 -0
- package/dist/tools/definitions/definitions/std/backlog/add.yml +51 -0
- package/dist/tools/definitions/definitions/std/backlog/decide.yml +39 -0
- package/dist/tools/definitions/definitions/std/backlog/github-sync.yml +161 -0
- package/dist/tools/definitions/definitions/std/backlog/list.yml +53 -0
- package/dist/tools/definitions/definitions/std/backlog/load.yml +46 -0
- package/dist/tools/definitions/definitions/std/backlog/resolve.yml +37 -0
- package/dist/tools/definitions/definitions/std/backlog/update.yml +42 -0
- package/dist/tools/definitions/definitions/std/bugfix/diagnose.yml +68 -0
- package/dist/tools/definitions/definitions/std/bugfix/fix.yml +66 -0
- package/dist/tools/definitions/definitions/std/bugfix/verify.yml +69 -0
- package/dist/tools/definitions/definitions/std/constraint/check-decomposition.yml +103 -0
- package/dist/tools/definitions/definitions/std/constraint/check-feature-list.yml +77 -0
- package/dist/tools/definitions/definitions/std/constraint/check-progress.yml +97 -0
- package/dist/tools/definitions/definitions/std/constraint/generate-report.yml +147 -0
- package/dist/tools/definitions/definitions/std/deploy/commit-push.yml +33 -0
- package/dist/tools/definitions/definitions/std/deploy/deploy-backend.yml +37 -0
- package/dist/tools/definitions/definitions/std/deploy/deploy-frontend.yml +37 -0
- package/dist/tools/definitions/definitions/std/deploy/rollback.yml +148 -0
- package/dist/tools/definitions/definitions/std/design/analyze-architecture-impact.yml +113 -0
- package/dist/tools/definitions/definitions/std/design/design-api.yml +55 -0
- package/dist/tools/definitions/definitions/std/design/design-architecture.yml +97 -0
- package/dist/tools/definitions/definitions/std/design/design-db.yml +81 -0
- package/dist/tools/definitions/definitions/std/design/generate-spec.yml +182 -0
- package/dist/tools/definitions/definitions/std/development/develop-api.yml +85 -0
- package/dist/tools/definitions/definitions/std/development/develop-backend.yml +88 -0
- package/dist/tools/definitions/definitions/std/development/develop-frontend.yml +87 -0
- package/dist/tools/definitions/definitions/std/development/develop-shared-types.yml +74 -0
- package/dist/tools/definitions/definitions/std/development/develop-task.yml +122 -0
- package/dist/tools/definitions/definitions/std/development/develop-tests.yml +76 -0
- package/dist/tools/definitions/definitions/std/development/execute-batch.yml +152 -0
- package/dist/tools/definitions/definitions/std/development/fix-issues.yml +100 -0
- package/dist/tools/definitions/definitions/std/development/implement-task.yml +124 -0
- package/dist/tools/definitions/definitions/std/development/review-fix-cycle.yml +232 -0
- package/dist/tools/definitions/definitions/std/evolution/implement.yml +125 -0
- package/dist/tools/definitions/definitions/std/evolution/prioritize.yml +112 -0
- package/dist/tools/definitions/definitions/std/evolution/report-gap.yml +166 -0
- package/dist/tools/definitions/definitions/std/file/read.yml +21 -0
- package/dist/tools/definitions/definitions/std/governance/aggregate-opinions.sh +201 -0
- package/dist/tools/definitions/definitions/std/governance/aggregate-opinions.yml +79 -0
- package/dist/tools/definitions/definitions/std/governance/audit-task.yml +178 -0
- package/dist/tools/definitions/definitions/std/governance/cast-vote.yml +129 -0
- package/dist/tools/definitions/definitions/std/governance/collect-issues.yml +16 -0
- package/dist/tools/definitions/definitions/std/governance/create-signed-document.yml +23 -0
- package/dist/tools/definitions/definitions/std/governance/create-voting-session.yml +101 -0
- package/dist/tools/definitions/definitions/std/governance/define-stance.sh +243 -0
- package/dist/tools/definitions/definitions/std/governance/define-stance.yml +82 -0
- package/dist/tools/definitions/definitions/std/governance/generate-review-report.yml +23 -0
- package/dist/tools/definitions/definitions/std/governance/impeach.yml +179 -0
- package/dist/tools/definitions/definitions/std/governance/multi-stance-review.yml +154 -0
- package/dist/tools/definitions/definitions/std/governance/prepare-artifact.yml +20 -0
- package/dist/tools/definitions/definitions/std/governance/review-spec-approval.yml +262 -0
- package/dist/tools/definitions/definitions/std/governance/rollback.yml +186 -0
- package/dist/tools/definitions/definitions/std/governance/stance-review.yml +149 -0
- package/dist/tools/definitions/definitions/std/governance/track-effect.yml +199 -0
- package/dist/tools/definitions/definitions/std/governance/vote-tally.yml +144 -0
- package/dist/tools/definitions/definitions/std/patch/execute.yml +51 -0
- package/dist/tools/definitions/definitions/std/planning/generate-tasks.yml +36 -0
- package/dist/tools/definitions/definitions/std/planning/load-tasks.yml +44 -0
- package/dist/tools/definitions/definitions/std/planning/split-batch.yml +481 -0
- package/dist/tools/definitions/definitions/std/planning/split-tasks.yml +359 -0
- package/dist/tools/definitions/definitions/std/planning/update-tasks.yml +51 -0
- package/dist/tools/definitions/definitions/std/planning/validate-tasks.yml +46 -0
- package/dist/tools/definitions/definitions/std/project/decide-next-workflow.yml +38 -0
- package/dist/tools/definitions/definitions/std/project/load-state.yml +31 -0
- package/dist/tools/definitions/definitions/std/project/save-state.yml +32 -0
- package/dist/tools/definitions/definitions/std/quality/check-quality.yml +241 -0
- package/dist/tools/definitions/definitions/std/quality/debug-systematic.yml +163 -0
- package/dist/tools/definitions/definitions/std/quality/handle-feedback.yml +108 -0
- package/dist/tools/definitions/definitions/std/quality/review-code.yml +128 -0
- package/dist/tools/definitions/definitions/std/quality/review-spec.yml +140 -0
- package/dist/tools/definitions/definitions/std/quality/review-task.yml +190 -0
- package/dist/tools/definitions/definitions/std/quality/run-tests.yml +80 -0
- package/dist/tools/definitions/definitions/std/quick/analyze.yml +56 -0
- package/dist/tools/definitions/definitions/std/quick/implement.yml +67 -0
- package/dist/tools/definitions/definitions/std/quick/verify.yml +71 -0
- package/dist/tools/definitions/definitions/std/verification/verify_completion.yml +113 -0
- package/dist/tools/definitions/definitions/std/verification/wait-condition.yml +107 -0
- package/dist/tools/definitions/ext/browser/browser-automate.sh +255 -0
- package/dist/tools/definitions/ext/browser/browser-automate.yml +166 -0
- package/dist/tools/definitions/ext/browser/browser-close.sh +104 -0
- package/dist/tools/definitions/ext/browser/browser-close.yml +55 -0
- package/dist/tools/definitions/ext/browser/browser-mcp-debug.sh +682 -0
- package/dist/tools/definitions/ext/browser/browser-mcp-debug.yml +167 -0
- package/dist/tools/definitions/ext/browser/browser-start.sh +101 -0
- package/dist/tools/definitions/ext/browser/browser-start.yml +62 -0
- package/dist/tools/definitions/registry.json +795 -0
- package/dist/tools/definitions/std/README.md +350 -0
- package/dist/tools/definitions/std/analysis/analyze-codebase.yml +72 -0
- package/dist/tools/definitions/std/analysis/analyze-diff.yml +182 -0
- package/dist/tools/definitions/std/analysis/analyze-git-diff.yml +70 -0
- package/dist/tools/definitions/std/analysis/analyze-impact.yml +78 -0
- package/dist/tools/definitions/std/analysis/analyze-requirements.yml +105 -0
- package/dist/tools/definitions/std/analysis/brainstorm-options.yml +106 -0
- package/dist/tools/definitions/std/analysis/build-graph.yml +154 -0
- package/dist/tools/definitions/std/analysis/clarify-requirements.yml +90 -0
- package/dist/tools/definitions/std/analysis/detect-context.yml +109 -0
- package/dist/tools/definitions/std/analysis/detect-layers.yml +125 -0
- package/dist/tools/definitions/std/analysis/generate-tour.yml +102 -0
- package/dist/tools/definitions/std/analysis/search-enhance.yml +105 -0
- package/dist/tools/definitions/std/backlog/add.yml +51 -0
- package/dist/tools/definitions/std/backlog/decide.yml +39 -0
- package/dist/tools/definitions/std/backlog/github-sync.yml +161 -0
- package/dist/tools/definitions/std/backlog/list.yml +53 -0
- package/dist/tools/definitions/std/backlog/load.yml +46 -0
- package/dist/tools/definitions/std/backlog/resolve.yml +37 -0
- package/dist/tools/definitions/std/backlog/update.yml +42 -0
- package/dist/tools/definitions/std/bugfix/diagnose.yml +68 -0
- package/dist/tools/definitions/std/bugfix/fix.yml +66 -0
- package/dist/tools/definitions/std/bugfix/verify.yml +69 -0
- package/dist/tools/definitions/std/constraint/check-decomposition.yml +103 -0
- package/dist/tools/definitions/std/constraint/check-feature-list.yml +77 -0
- package/dist/tools/definitions/std/constraint/check-progress.yml +97 -0
- package/dist/tools/definitions/std/constraint/generate-report.yml +147 -0
- package/dist/tools/definitions/std/deploy/commit-push.yml +33 -0
- package/dist/tools/definitions/std/deploy/deploy-backend.yml +37 -0
- package/dist/tools/definitions/std/deploy/deploy-frontend.yml +37 -0
- package/dist/tools/definitions/std/deploy/rollback.yml +148 -0
- package/dist/tools/definitions/std/design/analyze-architecture-impact.yml +113 -0
- package/dist/tools/definitions/std/design/design-api.yml +55 -0
- package/dist/tools/definitions/std/design/design-architecture.yml +97 -0
- package/dist/tools/definitions/std/design/design-db.yml +81 -0
- package/dist/tools/definitions/std/design/generate-spec.yml +182 -0
- package/dist/tools/definitions/std/development/develop-api.yml +85 -0
- package/dist/tools/definitions/std/development/develop-backend.yml +88 -0
- package/dist/tools/definitions/std/development/develop-frontend.yml +87 -0
- package/dist/tools/definitions/std/development/develop-shared-types.yml +74 -0
- package/dist/tools/definitions/std/development/develop-task.yml +122 -0
- package/dist/tools/definitions/std/development/develop-tests.yml +76 -0
- package/dist/tools/definitions/std/development/execute-batch.yml +152 -0
- package/dist/tools/definitions/std/development/fix-issues.yml +100 -0
- package/dist/tools/definitions/std/development/implement-task.yml +124 -0
- package/dist/tools/definitions/std/development/review-fix-cycle.yml +232 -0
- package/dist/tools/definitions/std/evolution/implement.yml +125 -0
- package/dist/tools/definitions/std/evolution/prioritize.yml +112 -0
- package/dist/tools/definitions/std/evolution/report-gap.yml +166 -0
- package/dist/tools/definitions/std/file/read.yml +21 -0
- package/dist/tools/definitions/std/governance/aggregate-opinions.sh +201 -0
- package/dist/tools/definitions/std/governance/aggregate-opinions.yml +79 -0
- package/dist/tools/definitions/std/governance/audit-task.yml +178 -0
- package/dist/tools/definitions/std/governance/cast-vote.yml +129 -0
- package/dist/tools/definitions/std/governance/collect-issues.yml +16 -0
- package/dist/tools/definitions/std/governance/create-signed-document.yml +23 -0
- package/dist/tools/definitions/std/governance/create-voting-session.yml +101 -0
- package/dist/tools/definitions/std/governance/define-stance.sh +243 -0
- package/dist/tools/definitions/std/governance/define-stance.yml +82 -0
- package/dist/tools/definitions/std/governance/generate-review-report.yml +23 -0
- package/dist/tools/definitions/std/governance/impeach.yml +179 -0
- package/dist/tools/definitions/std/governance/multi-stance-review.yml +154 -0
- package/dist/tools/definitions/std/governance/prepare-artifact.yml +20 -0
- package/dist/tools/definitions/std/governance/review-spec-approval.yml +262 -0
- package/dist/tools/definitions/std/governance/rollback.yml +186 -0
- package/dist/tools/definitions/std/governance/stance-review.yml +149 -0
- package/dist/tools/definitions/std/governance/track-effect.yml +199 -0
- package/dist/tools/definitions/std/governance/vote-tally.yml +144 -0
- package/dist/tools/definitions/std/patch/execute.yml +51 -0
- package/dist/tools/definitions/std/planning/generate-tasks.yml +36 -0
- package/dist/tools/definitions/std/planning/load-tasks.yml +44 -0
- package/dist/tools/definitions/std/planning/split-batch.yml +481 -0
- package/dist/tools/definitions/std/planning/split-tasks.yml +359 -0
- package/dist/tools/definitions/std/planning/update-tasks.yml +51 -0
- package/dist/tools/definitions/std/planning/validate-tasks.yml +46 -0
- package/dist/tools/definitions/std/project/decide-next-workflow.yml +38 -0
- package/dist/tools/definitions/std/project/load-state.yml +31 -0
- package/dist/tools/definitions/std/project/save-state.yml +32 -0
- package/dist/tools/definitions/std/quality/check-quality.yml +241 -0
- package/dist/tools/definitions/std/quality/debug-systematic.yml +163 -0
- package/dist/tools/definitions/std/quality/handle-feedback.yml +108 -0
- package/dist/tools/definitions/std/quality/review-code.yml +128 -0
- package/dist/tools/definitions/std/quality/review-spec.yml +140 -0
- package/dist/tools/definitions/std/quality/review-task.yml +190 -0
- package/dist/tools/definitions/std/quality/run-tests.yml +80 -0
- package/dist/tools/definitions/std/quick/analyze.yml +56 -0
- package/dist/tools/definitions/std/quick/implement.yml +67 -0
- package/dist/tools/definitions/std/quick/verify.yml +71 -0
- package/dist/tools/definitions/std/verification/verify_completion.yml +113 -0
- package/dist/tools/definitions/std/verification/wait-condition.yml +107 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/loader.d.ts +21 -0
- package/dist/tools/loader.d.ts.map +1 -0
- package/dist/tools/loader.js +199 -0
- package/dist/tools/loader.js.map +1 -0
- package/dist/tools/paths.d.ts +9 -0
- package/dist/tools/paths.d.ts.map +1 -0
- package/dist/tools/paths.js +51 -0
- package/dist/tools/paths.js.map +1 -0
- package/dist/types/constraint.d.ts +4 -0
- package/dist/types/constraint.d.ts.map +1 -1
- package/dist/types/constraint.js.map +1 -1
- package/dist/types/project-config.d.ts +57 -0
- package/dist/types/project-config.d.ts.map +1 -1
- package/dist/types/session.d.ts +6 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/utils/exec.d.ts.map +1 -1
- package/dist/utils/exec.js +37 -1
- package/dist/utils/exec.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# wait-condition.yml - 条件等待
|
|
2
|
+
# ============================================================================
|
|
3
|
+
# 能力类型: verification(工具型)
|
|
4
|
+
# 来源: Superpowers - condition-based-waiting (Technique)
|
|
5
|
+
# 版本: 2026-03-28 (需手动同步)
|
|
6
|
+
# 执行方式: 纯脚本,轮询检查条件
|
|
7
|
+
# 用途: 等待某个条件满足后再继续执行
|
|
8
|
+
# ============================================================================
|
|
9
|
+
|
|
10
|
+
name: wait-condition
|
|
11
|
+
stage: verify
|
|
12
|
+
description: 等待条件满足后再继续执行,支持轮询检查
|
|
13
|
+
|
|
14
|
+
input:
|
|
15
|
+
condition:
|
|
16
|
+
type: string
|
|
17
|
+
required: true
|
|
18
|
+
description: "等待的条件(如 file exists: /path/to/file)"
|
|
19
|
+
|
|
20
|
+
check_command:
|
|
21
|
+
type: string
|
|
22
|
+
required: true
|
|
23
|
+
description: "检查命令(返回 0 表示条件满足)"
|
|
24
|
+
|
|
25
|
+
timeout_seconds:
|
|
26
|
+
type: number
|
|
27
|
+
required: false
|
|
28
|
+
description: 超时时间(秒)
|
|
29
|
+
default: 300
|
|
30
|
+
|
|
31
|
+
interval_seconds:
|
|
32
|
+
type: number
|
|
33
|
+
required: false
|
|
34
|
+
description: 检查间隔(秒)
|
|
35
|
+
default: 5
|
|
36
|
+
|
|
37
|
+
repo_path:
|
|
38
|
+
type: path
|
|
39
|
+
required: false
|
|
40
|
+
description: 项目路径(可选)
|
|
41
|
+
default: "."
|
|
42
|
+
|
|
43
|
+
output:
|
|
44
|
+
satisfied:
|
|
45
|
+
type: boolean
|
|
46
|
+
description: 条件是否满足
|
|
47
|
+
|
|
48
|
+
elapsed_seconds:
|
|
49
|
+
type: number
|
|
50
|
+
description: 已等待时间(秒)
|
|
51
|
+
|
|
52
|
+
check_count:
|
|
53
|
+
type: number
|
|
54
|
+
description: 检查次数
|
|
55
|
+
|
|
56
|
+
script: |
|
|
57
|
+
#!/bin/bash
|
|
58
|
+
set -euo pipefail
|
|
59
|
+
|
|
60
|
+
CONDITION="{{condition}}"
|
|
61
|
+
CHECK_CMD="{{check_command}}"
|
|
62
|
+
TIMEOUT="{{timeout_seconds}}"
|
|
63
|
+
INTERVAL="{{interval_seconds}}"
|
|
64
|
+
REPO_PATH="{{repo_path}}"
|
|
65
|
+
|
|
66
|
+
cd "$REPO_PATH" 2>/dev/null || true
|
|
67
|
+
|
|
68
|
+
echo "⏳ 等待条件满足"
|
|
69
|
+
echo " 条件: $CONDITION"
|
|
70
|
+
echo " 检查命令: $CHECK_CMD"
|
|
71
|
+
echo " 超时: ${TIMEOUT}s"
|
|
72
|
+
echo " 间隔: ${INTERVAL}s"
|
|
73
|
+
echo ""
|
|
74
|
+
|
|
75
|
+
ELAPSED=0
|
|
76
|
+
CHECK_COUNT=0
|
|
77
|
+
|
|
78
|
+
while [ $ELAPSED -lt $TIMEOUT ]; do
|
|
79
|
+
CHECK_COUNT=$((CHECK_COUNT + 1))
|
|
80
|
+
|
|
81
|
+
echo "[$CHECK_COUNT] 检查条件... (已等待 ${ELAPSED}s)"
|
|
82
|
+
|
|
83
|
+
if eval "$CHECK_CMD" >/dev/null 2>&1; then
|
|
84
|
+
echo ""
|
|
85
|
+
echo "✅ 条件满足!"
|
|
86
|
+
echo " 已等待: ${ELAPSED}s"
|
|
87
|
+
echo " 检查次数: $CHECK_COUNT"
|
|
88
|
+
echo ""
|
|
89
|
+
echo "SATISFIED=true"
|
|
90
|
+
echo "ELAPSED=$ELAPSED"
|
|
91
|
+
echo "CHECK_COUNT=$CHECK_COUNT"
|
|
92
|
+
exit 0
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
sleep $INTERVAL
|
|
96
|
+
ELAPSED=$((ELAPSED + INTERVAL))
|
|
97
|
+
done
|
|
98
|
+
|
|
99
|
+
echo ""
|
|
100
|
+
echo "❌ 条件未满足,已超时"
|
|
101
|
+
echo " 已等待: ${ELAPSED}s"
|
|
102
|
+
echo " 检查次数: $CHECK_COUNT"
|
|
103
|
+
echo ""
|
|
104
|
+
echo "SATISFIED=false"
|
|
105
|
+
echo "ELAPSED=$ELAPSED"
|
|
106
|
+
echo "CHECK_COUNT=$CHECK_COUNT"
|
|
107
|
+
exit 1
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# browser-automate.sh - 浏览器自动化测试脚本
|
|
3
|
+
# 基于 agent-browser-stealth 实现(Puppeteer + 隐身增强)
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
# 参数解析
|
|
8
|
+
ACTION="${1:-test}"
|
|
9
|
+
URL="${2:-}"
|
|
10
|
+
SCRIPT="${3:-}"
|
|
11
|
+
OUTPUT_DIR="${4:-/tmp/browser-test-$(date +%s)}"
|
|
12
|
+
SESSION_NAME="browser-test-$(date +%s)"
|
|
13
|
+
HEADLESS="${HEADLESS:-true}"
|
|
14
|
+
|
|
15
|
+
# 颜色输出
|
|
16
|
+
RED='\033[0;31m'
|
|
17
|
+
GREEN='\033[0;32m'
|
|
18
|
+
YELLOW='\033[1;33m'
|
|
19
|
+
BLUE='\033[0;34m'
|
|
20
|
+
NC='\033[0m'
|
|
21
|
+
|
|
22
|
+
log_info() {
|
|
23
|
+
echo -e "${GREEN}[INFO]${NC} $1"
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
log_warn() {
|
|
27
|
+
echo -e "${YELLOW}[WARN]${NC} $1"
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
log_error() {
|
|
31
|
+
echo -e "${RED}[ERROR]${NC} $1"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
log_debug() {
|
|
35
|
+
echo -e "${BLUE}[DEBUG]${NC} $1"
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
# 检查 agent-browser-stealth 是否安装
|
|
39
|
+
check_abs() {
|
|
40
|
+
if ! command -v abs &> /dev/null; then
|
|
41
|
+
log_warn "agent-browser-stealth not found, installing..."
|
|
42
|
+
npm install -g agent-browser-stealth
|
|
43
|
+
abs install
|
|
44
|
+
fi
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
# 运行浏览器测试(使用 agent-browser-stealth)
|
|
48
|
+
run_browser_test() {
|
|
49
|
+
local url="$1"
|
|
50
|
+
local actions="$2"
|
|
51
|
+
|
|
52
|
+
log_info "Starting browser automation test (agent-browser-stealth)..."
|
|
53
|
+
log_info "URL: $url"
|
|
54
|
+
log_info "Session: $SESSION_NAME"
|
|
55
|
+
log_info "Output: $OUTPUT_DIR"
|
|
56
|
+
|
|
57
|
+
mkdir -p "$OUTPUT_DIR"
|
|
58
|
+
|
|
59
|
+
# 结果数组
|
|
60
|
+
declare -a RESULTS=()
|
|
61
|
+
|
|
62
|
+
# 检查 abs 命令
|
|
63
|
+
check_abs
|
|
64
|
+
|
|
65
|
+
# 1. 打开页面
|
|
66
|
+
log_info "Opening URL..."
|
|
67
|
+
if ! abs open "$url" --session-name "$SESSION_NAME" 2>&1 | tee -a "$OUTPUT_DIR/test.log"; then
|
|
68
|
+
log_error "Failed to open URL: $url"
|
|
69
|
+
RESULTS+=("{\"action\":\"navigate\",\"status\":\"failed\",\"url\":\"$url\"}")
|
|
70
|
+
echo "{\"results\":[$(IFS=,; echo "${RESULTS[*]}")],\"errors\":[\"Failed to open URL\"]}"
|
|
71
|
+
exit 1
|
|
72
|
+
fi
|
|
73
|
+
RESULTS+=("{\"action\":\"navigate\",\"status\":\"success\",\"url\":\"$url\"}")
|
|
74
|
+
|
|
75
|
+
# 2. 等待页面加载
|
|
76
|
+
sleep 2
|
|
77
|
+
|
|
78
|
+
# 3. 初始截图
|
|
79
|
+
abs screenshot "$OUTPUT_DIR/screenshot-initial.png" --session-name "$SESSION_NAME" 2>/dev/null || true
|
|
80
|
+
|
|
81
|
+
# 4. 获取元素映射
|
|
82
|
+
log_info "Getting element snapshot..."
|
|
83
|
+
SNAPSHOT_OUTPUT=$(abs snapshot -i --session-name "$SESSION_NAME" 2>&1) || true
|
|
84
|
+
|
|
85
|
+
# 保存 snapshot 输出供调试
|
|
86
|
+
echo "$SNAPSHOT_OUTPUT" > "$OUTPUT_DIR/snapshot.txt"
|
|
87
|
+
|
|
88
|
+
# 5. 执行测试脚本
|
|
89
|
+
if [ -n "$actions" ] && [ "$actions" != "[]" ]; then
|
|
90
|
+
log_info "Executing test actions..."
|
|
91
|
+
|
|
92
|
+
# 解析 JSON actions 并执行
|
|
93
|
+
echo "$actions" | jq -c '.[]' 2>/dev/null | while read -r action; do
|
|
94
|
+
action_type=$(echo "$action" | jq -r '.type')
|
|
95
|
+
selector=$(echo "$action" | jq -r '.selector // ""')
|
|
96
|
+
value=$(echo "$action" | jq -r '.value // ""')
|
|
97
|
+
delay=$(echo "$action" | jq -r '.delay // 500')
|
|
98
|
+
filename=$(echo "$action" | jq -r '.filename // "screenshot.png"')
|
|
99
|
+
should_exist=$(echo "$action" | jq -r '.shouldExist // true')
|
|
100
|
+
|
|
101
|
+
log_debug "Action: $action_type, Selector: $selector"
|
|
102
|
+
|
|
103
|
+
case "$action_type" in
|
|
104
|
+
click)
|
|
105
|
+
# 尝试使用 @ref 引用,否则直接使用 selector
|
|
106
|
+
if abs click "$selector" --session-name "$SESSION_NAME" 2>&1 | tee -a "$OUTPUT_DIR/test.log"; then
|
|
107
|
+
log_info "Click success: $selector"
|
|
108
|
+
sleep 0.5
|
|
109
|
+
else
|
|
110
|
+
log_warn "Click failed: $selector"
|
|
111
|
+
fi
|
|
112
|
+
;;
|
|
113
|
+
|
|
114
|
+
type)
|
|
115
|
+
if abs type "$selector" "$value" --session-name "$SESSION_NAME" 2>&1 | tee -a "$OUTPUT_DIR/test.log"; then
|
|
116
|
+
log_info "Type success: $selector"
|
|
117
|
+
else
|
|
118
|
+
log_warn "Type failed: $selector"
|
|
119
|
+
fi
|
|
120
|
+
;;
|
|
121
|
+
|
|
122
|
+
wait)
|
|
123
|
+
log_info "Waiting for: $selector"
|
|
124
|
+
sleep "${delay::-3}2" # 转换为秒
|
|
125
|
+
;;
|
|
126
|
+
|
|
127
|
+
screenshot)
|
|
128
|
+
abs screenshot "$OUTPUT_DIR/$filename" --session-name "$SESSION_NAME" 2>&1 | tee -a "$OUTPUT_DIR/test.log" || true
|
|
129
|
+
log_info "Screenshot saved: $filename"
|
|
130
|
+
;;
|
|
131
|
+
|
|
132
|
+
assert)
|
|
133
|
+
# 使用 abs eval 检查元素是否存在
|
|
134
|
+
if abs eval "document.querySelector('$selector')" --session-name "$SESSION_NAME" 2>&1 | grep -q "null"; then
|
|
135
|
+
log_warn "Element not found: $selector"
|
|
136
|
+
else
|
|
137
|
+
log_info "Element found: $selector"
|
|
138
|
+
fi
|
|
139
|
+
;;
|
|
140
|
+
|
|
141
|
+
scroll)
|
|
142
|
+
abs eval "window.scrollBy(0, ${value:-500})" --session-name "$SESSION_NAME" 2>&1 | tee -a "$OUTPUT_DIR/test.log" || true
|
|
143
|
+
log_info "Scrolled: ${value:-500}px"
|
|
144
|
+
;;
|
|
145
|
+
|
|
146
|
+
*)
|
|
147
|
+
log_warn "Unknown action: $action_type"
|
|
148
|
+
;;
|
|
149
|
+
esac
|
|
150
|
+
done
|
|
151
|
+
fi
|
|
152
|
+
|
|
153
|
+
# 6. 最终截图
|
|
154
|
+
abs screenshot "$OUTPUT_DIR/screenshot-final.png" --full-page --session-name "$SESSION_NAME" 2>/dev/null || true
|
|
155
|
+
|
|
156
|
+
# 7. 获取性能指标
|
|
157
|
+
METRICS=$(abs eval "JSON.stringify(performance.getEntriesByType('navigation')[0])" --session-name "$SESSION_NAME" 2>/dev/null || echo "{}")
|
|
158
|
+
echo "$METRICS" > "$OUTPUT_DIR/metrics.json"
|
|
159
|
+
|
|
160
|
+
# 8. 关闭浏览器
|
|
161
|
+
abs close --session-name "$SESSION_NAME" 2>/dev/null || true
|
|
162
|
+
|
|
163
|
+
# 9. 生成结果
|
|
164
|
+
log_info "Generating test results..."
|
|
165
|
+
|
|
166
|
+
# 构建结果 JSON
|
|
167
|
+
cat > "$OUTPUT_DIR/test-results.json" << EOF
|
|
168
|
+
{
|
|
169
|
+
"results": [
|
|
170
|
+
{"action": "navigate", "status": "success", "url": "$url"},
|
|
171
|
+
{"action": "session", "status": "success", "sessionName": "$SESSION_NAME"}
|
|
172
|
+
],
|
|
173
|
+
"screenshots": [
|
|
174
|
+
"$OUTPUT_DIR/screenshot-initial.png",
|
|
175
|
+
"$OUTPUT_DIR/screenshot-final.png"
|
|
176
|
+
],
|
|
177
|
+
"metrics": $METRICS,
|
|
178
|
+
"outputDir": "$OUTPUT_DIR"
|
|
179
|
+
}
|
|
180
|
+
EOF
|
|
181
|
+
|
|
182
|
+
log_info "Test completed. Results:"
|
|
183
|
+
cat "$OUTPUT_DIR/test-results.json"
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
# 交互式测试模式
|
|
187
|
+
run_interactive_test() {
|
|
188
|
+
local url="$1"
|
|
189
|
+
|
|
190
|
+
log_info "Starting interactive browser session..."
|
|
191
|
+
log_info "URL: $url"
|
|
192
|
+
log_info "Session: $SESSION_NAME"
|
|
193
|
+
log_info ""
|
|
194
|
+
log_info "Commands:"
|
|
195
|
+
log_info " abs snapshot -i # Get interactive element references"
|
|
196
|
+
log_info " abs click @e1 # Click element by reference"
|
|
197
|
+
log_info " abs type @e1 'text' # Type text"
|
|
198
|
+
log_info " abs screenshot out.png # Take screenshot"
|
|
199
|
+
log_info " abs close # Close browser"
|
|
200
|
+
log_info ""
|
|
201
|
+
|
|
202
|
+
check_abs
|
|
203
|
+
abs open "$url" --session-name "$SESSION_NAME"
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
# 示例测试脚本
|
|
207
|
+
example_login_test() {
|
|
208
|
+
cat << 'EOF'
|
|
209
|
+
[
|
|
210
|
+
{"type": "wait", "selector": "input[name='username']"},
|
|
211
|
+
{"type": "type", "selector": "input[name='username']", "value": "test@example.com"},
|
|
212
|
+
{"type": "type", "selector": "input[name='password']", "value": "password123"},
|
|
213
|
+
{"type": "click", "selector": "button[type='submit']"},
|
|
214
|
+
{"type": "wait", "selector": ".dashboard", "delay": 2000},
|
|
215
|
+
{"type": "screenshot", "filename": "dashboard.png"}
|
|
216
|
+
]
|
|
217
|
+
EOF
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
# 主函数
|
|
221
|
+
main() {
|
|
222
|
+
case "$ACTION" in
|
|
223
|
+
test)
|
|
224
|
+
if [ -z "$URL" ]; then
|
|
225
|
+
log_error "URL is required for test action"
|
|
226
|
+
echo "Usage: $0 test <url> [script]"
|
|
227
|
+
echo "Example: $0 test https://example.com '$(example_login_test)'"
|
|
228
|
+
exit 1
|
|
229
|
+
fi
|
|
230
|
+
run_browser_test "$URL" "$SCRIPT"
|
|
231
|
+
;;
|
|
232
|
+
|
|
233
|
+
interactive)
|
|
234
|
+
if [ -z "$URL" ]; then
|
|
235
|
+
log_error "URL is required for interactive mode"
|
|
236
|
+
echo "Usage: $0 interactive <url>"
|
|
237
|
+
exit 1
|
|
238
|
+
fi
|
|
239
|
+
run_interactive_test "$URL"
|
|
240
|
+
;;
|
|
241
|
+
|
|
242
|
+
example)
|
|
243
|
+
echo "Example login test script:"
|
|
244
|
+
example_login_test
|
|
245
|
+
;;
|
|
246
|
+
|
|
247
|
+
*)
|
|
248
|
+
log_error "Unknown action: $ACTION"
|
|
249
|
+
echo "Actions: test, interactive, example"
|
|
250
|
+
exit 1
|
|
251
|
+
;;
|
|
252
|
+
esac
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
main "$@"
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# browser-automate.yml - 浏览器自动化测试能力
|
|
2
|
+
name: browser-automate
|
|
3
|
+
description: 基于 agent-browser-stealth 的浏览器自动化测试(Puppeteer + 隐身增强),支持反检测、会话保持、调试能力
|
|
4
|
+
|
|
5
|
+
# 输入参数
|
|
6
|
+
input:
|
|
7
|
+
url:
|
|
8
|
+
type: string
|
|
9
|
+
required: true
|
|
10
|
+
description: 要测试的页面 URL
|
|
11
|
+
|
|
12
|
+
actions:
|
|
13
|
+
type: array
|
|
14
|
+
required: false
|
|
15
|
+
description: 测试动作列表
|
|
16
|
+
default: []
|
|
17
|
+
items:
|
|
18
|
+
type: object
|
|
19
|
+
properties:
|
|
20
|
+
type:
|
|
21
|
+
type: string
|
|
22
|
+
enum: [click, type, wait, screenshot, assert, scroll]
|
|
23
|
+
description: 动作类型
|
|
24
|
+
selector:
|
|
25
|
+
type: string
|
|
26
|
+
description: CSS 选择器
|
|
27
|
+
value:
|
|
28
|
+
type: string
|
|
29
|
+
description: 输入值(type 动作)
|
|
30
|
+
delay:
|
|
31
|
+
type: number
|
|
32
|
+
description: 延迟时间(毫秒)
|
|
33
|
+
filename:
|
|
34
|
+
type: string
|
|
35
|
+
description: 截图文件名
|
|
36
|
+
shouldExist:
|
|
37
|
+
type: boolean
|
|
38
|
+
description: 断言元素是否存在
|
|
39
|
+
|
|
40
|
+
headless:
|
|
41
|
+
type: boolean
|
|
42
|
+
required: false
|
|
43
|
+
default: true
|
|
44
|
+
description: 是否无头模式运行
|
|
45
|
+
|
|
46
|
+
timeout:
|
|
47
|
+
type: number
|
|
48
|
+
required: false
|
|
49
|
+
default: 30000
|
|
50
|
+
description: 页面加载超时时间(毫秒)
|
|
51
|
+
|
|
52
|
+
# 输出
|
|
53
|
+
output:
|
|
54
|
+
results:
|
|
55
|
+
type: array
|
|
56
|
+
description: 测试结果列表
|
|
57
|
+
|
|
58
|
+
screenshots:
|
|
59
|
+
type: array
|
|
60
|
+
description: 截图文件路径列表
|
|
61
|
+
|
|
62
|
+
metrics:
|
|
63
|
+
type: object
|
|
64
|
+
description: 页面性能指标
|
|
65
|
+
|
|
66
|
+
errors:
|
|
67
|
+
type: array
|
|
68
|
+
description: 错误列表
|
|
69
|
+
|
|
70
|
+
# 执行配置
|
|
71
|
+
timeout: 300 # 秒
|
|
72
|
+
agent: codex
|
|
73
|
+
|
|
74
|
+
# 执行脚本
|
|
75
|
+
handler: script
|
|
76
|
+
script: ./browser-automate.sh
|
|
77
|
+
|
|
78
|
+
# 示例用法
|
|
79
|
+
examples:
|
|
80
|
+
- name: 登录测试
|
|
81
|
+
input:
|
|
82
|
+
url: https://example.com/login
|
|
83
|
+
actions:
|
|
84
|
+
- type: wait
|
|
85
|
+
selector: "input[name='username']"
|
|
86
|
+
- type: type
|
|
87
|
+
selector: "input[name='username']"
|
|
88
|
+
value: "test@example.com"
|
|
89
|
+
- type: type
|
|
90
|
+
selector: "input[name='password']"
|
|
91
|
+
value: "password123"
|
|
92
|
+
- type: click
|
|
93
|
+
selector: "button[type='submit']"
|
|
94
|
+
- type: wait
|
|
95
|
+
selector: ".dashboard"
|
|
96
|
+
delay: 2000
|
|
97
|
+
- type: screenshot
|
|
98
|
+
filename: "dashboard.png"
|
|
99
|
+
- type: assert
|
|
100
|
+
selector: ".user-profile"
|
|
101
|
+
shouldExist: true
|
|
102
|
+
|
|
103
|
+
- name: 表单填写测试
|
|
104
|
+
input:
|
|
105
|
+
url: https://example.com/form
|
|
106
|
+
actions:
|
|
107
|
+
- type: wait
|
|
108
|
+
selector: "form"
|
|
109
|
+
- type: type
|
|
110
|
+
selector: "#name"
|
|
111
|
+
value: "测试用户"
|
|
112
|
+
- type: type
|
|
113
|
+
selector: "#email"
|
|
114
|
+
value: "test@example.com"
|
|
115
|
+
- type: click
|
|
116
|
+
selector: "button[type='submit']"
|
|
117
|
+
- type: wait
|
|
118
|
+
selector: ".success-message"
|
|
119
|
+
- type: screenshot
|
|
120
|
+
filename: "form-success.png"
|
|
121
|
+
|
|
122
|
+
# 与 agent-browser-stealth 集成说明
|
|
123
|
+
integration:
|
|
124
|
+
agent_browser_stealth:
|
|
125
|
+
description: |
|
|
126
|
+
本 Tool 底层已使用 agent-browser-stealth 作为引擎,提供:
|
|
127
|
+
|
|
128
|
+
1. 反检测 - 多层指纹伪装、行为人性化
|
|
129
|
+
2. 会话保持 - --session-name 支持多会话
|
|
130
|
+
3. 调试能力 - trace、profiler、console、errors
|
|
131
|
+
4. 元素引用 - snapshot -i 获取 @e1, @e2 引用
|
|
132
|
+
5. 引擎选择 - Chrome + Lightpanda
|
|
133
|
+
|
|
134
|
+
cli_commands: |
|
|
135
|
+
# 交互式使用(更灵活)
|
|
136
|
+
abs open https://example.com --session-name my-session
|
|
137
|
+
abs snapshot -i # 获取元素引用 @e1, @e2, ...
|
|
138
|
+
abs click @e1 # 点击元素
|
|
139
|
+
abs type @e2 "hello" --delay 50 # 模拟人类输入
|
|
140
|
+
abs screenshot result.png # 截图
|
|
141
|
+
abs close # 关闭
|
|
142
|
+
|
|
143
|
+
advanced: |
|
|
144
|
+
# 反检测模式
|
|
145
|
+
abs open https://example.com --risk-mode warn
|
|
146
|
+
|
|
147
|
+
# 使用 Lightpanda 引擎(更快)
|
|
148
|
+
abs open https://example.com --engine lightpanda
|
|
149
|
+
|
|
150
|
+
# 调试模式
|
|
151
|
+
abs open https://example.com --trace --verbose
|
|
152
|
+
|
|
153
|
+
# 标签
|
|
154
|
+
tags:
|
|
155
|
+
- browser
|
|
156
|
+
- e2e
|
|
157
|
+
- testing
|
|
158
|
+
- automation
|
|
159
|
+
- puppeteer
|
|
160
|
+
- stealth
|
|
161
|
+
- agent-browser-stealth
|
|
162
|
+
- dom
|
|
163
|
+
- anti-detection
|
|
164
|
+
|
|
165
|
+
# 分类
|
|
166
|
+
category: testing
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# browser-close.sh - 关闭浏览器会话
|
|
3
|
+
# ============================================================================
|
|
4
|
+
# 功能:关闭浏览器会话并清理资源
|
|
5
|
+
# 底层:使用 agent-browser-stealth (abs)
|
|
6
|
+
# 用途:E2E 测试、浏览器自动化结束后清理
|
|
7
|
+
# ============================================================================
|
|
8
|
+
|
|
9
|
+
set -e
|
|
10
|
+
|
|
11
|
+
# 参数
|
|
12
|
+
SESSION_ID="${1:-}"
|
|
13
|
+
SAVE_SCREENSHOTS="${2:-true}"
|
|
14
|
+
OUTPUT_DIR="${OUTPUT_DIR:-/tmp/browser-screenshots}"
|
|
15
|
+
|
|
16
|
+
# 颜色输出
|
|
17
|
+
RED='\033[0;31m'
|
|
18
|
+
GREEN='\033[0;32m'
|
|
19
|
+
YELLOW='\033[1;33m'
|
|
20
|
+
NC='\033[0m'
|
|
21
|
+
|
|
22
|
+
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
|
23
|
+
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
24
|
+
|
|
25
|
+
# 显示帮助
|
|
26
|
+
show_help() {
|
|
27
|
+
cat << EOF
|
|
28
|
+
关闭浏览器会话
|
|
29
|
+
|
|
30
|
+
用法:
|
|
31
|
+
$0 <session_id> [save_screenshots]
|
|
32
|
+
|
|
33
|
+
参数:
|
|
34
|
+
session_id 浏览器会话 ID
|
|
35
|
+
save_screenshots 是否保存截图 (true/false,默认 true)
|
|
36
|
+
|
|
37
|
+
环境变量:
|
|
38
|
+
OUTPUT_DIR 截图输出目录(默认 /tmp/browser-screenshots)
|
|
39
|
+
|
|
40
|
+
输出:
|
|
41
|
+
JSON 格式的关闭结果
|
|
42
|
+
|
|
43
|
+
示例:
|
|
44
|
+
$0 browser-session-123456
|
|
45
|
+
$0 browser-session-123456 true
|
|
46
|
+
EOF
|
|
47
|
+
exit 0
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
# 检查参数
|
|
51
|
+
if [[ "$1" == "-h" || "$1" == "--help" || -z "$SESSION_ID" ]]; then
|
|
52
|
+
show_help
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# 检查 abs 是否安装
|
|
56
|
+
if ! command -v abs &> /dev/null; then
|
|
57
|
+
log_error "agent-browser-stealth (abs) 未安装"
|
|
58
|
+
echo '{"success": false, "error": "abs not found"}'
|
|
59
|
+
exit 1
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
log_info "关闭浏览器会话: $SESSION_ID"
|
|
63
|
+
|
|
64
|
+
SCREENSHOTS="[]"
|
|
65
|
+
|
|
66
|
+
# 保存截图(可选)
|
|
67
|
+
if [[ "$SAVE_SCREENSHOTS" == "true" ]]; then
|
|
68
|
+
log_info "保存截图..."
|
|
69
|
+
mkdir -p "$OUTPUT_DIR"
|
|
70
|
+
|
|
71
|
+
SCREENSHOT_FILE="$OUTPUT_DIR/${SESSION_ID}-final.png"
|
|
72
|
+
|
|
73
|
+
# 尝试截图
|
|
74
|
+
if abs screenshot "$SCREENSHOT_FILE" --session-name "$SESSION_ID" 2>/dev/null; then
|
|
75
|
+
SCREENSHOTS="[\"$SCREENSHOT_FILE\"]"
|
|
76
|
+
log_info "截图已保存: $SCREENSHOT_FILE"
|
|
77
|
+
fi
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# 关闭浏览器
|
|
81
|
+
abs close --session-name "$SESSION_ID" 2>/dev/null
|
|
82
|
+
|
|
83
|
+
# 检查是否成功
|
|
84
|
+
if [[ $? -eq 0 ]]; then
|
|
85
|
+
log_info "浏览器会话已关闭"
|
|
86
|
+
|
|
87
|
+
cat << EOF
|
|
88
|
+
{
|
|
89
|
+
"success": true,
|
|
90
|
+
"session_id": "$SESSION_ID",
|
|
91
|
+
"screenshots": $SCREENSHOTS,
|
|
92
|
+
"output_dir": "$OUTPUT_DIR"
|
|
93
|
+
}
|
|
94
|
+
EOF
|
|
95
|
+
else
|
|
96
|
+
cat << EOF
|
|
97
|
+
{
|
|
98
|
+
"success": false,
|
|
99
|
+
"session_id": "$SESSION_ID",
|
|
100
|
+
"error": "Failed to close browser"
|
|
101
|
+
}
|
|
102
|
+
EOF
|
|
103
|
+
exit 1
|
|
104
|
+
fi
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# browser-close.yml - 关闭浏览器
|
|
2
|
+
# ============================================================================
|
|
3
|
+
# 工具类型: 浏览器
|
|
4
|
+
# 用途: 关闭浏览器会话
|
|
5
|
+
# ============================================================================
|
|
6
|
+
|
|
7
|
+
name: browser/browser-close
|
|
8
|
+
description: |
|
|
9
|
+
关闭浏览器会话
|
|
10
|
+
|
|
11
|
+
功能:
|
|
12
|
+
- 关闭指定会话
|
|
13
|
+
- 清理资源
|
|
14
|
+
- 可选截图保存
|
|
15
|
+
|
|
16
|
+
input:
|
|
17
|
+
- name: session_id
|
|
18
|
+
type: string
|
|
19
|
+
required: true
|
|
20
|
+
description: 浏览器会话 ID
|
|
21
|
+
|
|
22
|
+
- name: save_screenshots
|
|
23
|
+
type: boolean
|
|
24
|
+
required: false
|
|
25
|
+
default: true
|
|
26
|
+
description: 是否保存截图
|
|
27
|
+
|
|
28
|
+
output:
|
|
29
|
+
- name: success
|
|
30
|
+
type: boolean
|
|
31
|
+
description: 是否关闭成功
|
|
32
|
+
|
|
33
|
+
- name: screenshots
|
|
34
|
+
type: array
|
|
35
|
+
description: 保存的截图路径列表
|
|
36
|
+
|
|
37
|
+
# 实现说明
|
|
38
|
+
implementation:
|
|
39
|
+
type: script
|
|
40
|
+
script: ./browser-close.sh
|
|
41
|
+
note: |
|
|
42
|
+
使用 agent-browser-stealth (abs) 关闭浏览器
|
|
43
|
+
|
|
44
|
+
1. 可选保存截图
|
|
45
|
+
2. 调用 abs close 关闭会话
|
|
46
|
+
3. 清理资源
|
|
47
|
+
|
|
48
|
+
# 元数据
|
|
49
|
+
metadata:
|
|
50
|
+
author: Agent Studio
|
|
51
|
+
version: 1.0.0
|
|
52
|
+
tags:
|
|
53
|
+
- browser
|
|
54
|
+
- puppeteer
|
|
55
|
+
- e2e
|