@dommaker/harness 0.8.3 → 0.10.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 +138 -186
- package/bin/harness.js +123 -61
- package/dist/agents/index.d.ts +3 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +19 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/lifecycle.d.ts +68 -0
- package/dist/agents/lifecycle.d.ts.map +1 -0
- package/dist/agents/lifecycle.js +181 -0
- package/dist/agents/lifecycle.js.map +1 -0
- package/dist/agents/types.d.ts +42 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +6 -0
- package/dist/agents/types.js.map +1 -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 +19 -1
- package/dist/architecture/cross-project-checker.d.ts.map +1 -1
- package/dist/architecture/cross-project-checker.js +242 -80
- package/dist/architecture/cross-project-checker.js.map +1 -1
- package/dist/cli/commands/acceptance.d.ts.map +1 -1
- package/dist/cli/commands/acceptance.js +1 -0
- package/dist/cli/commands/acceptance.js.map +1 -1
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +184 -75
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/command.d.ts +10 -3
- package/dist/cli/commands/command.d.ts.map +1 -1
- package/dist/cli/commands/command.js +7 -71
- package/dist/cli/commands/command.js.map +1 -1
- 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 +4 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +14 -3
- 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/passes-gate.d.ts.map +1 -1
- package/dist/cli/commands/passes-gate.js +2 -4
- package/dist/cli/commands/passes-gate.js.map +1 -1
- 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/review.d.ts.map +1 -1
- package/dist/cli/commands/review.js +27 -63
- package/dist/cli/commands/review.js.map +1 -1
- package/dist/cli/commands/security.d.ts +1 -1
- package/dist/cli/commands/security.d.ts.map +1 -1
- package/dist/cli/commands/security.js +42 -82
- package/dist/cli/commands/security.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +2 -2
- package/dist/cli/commands/status.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/constraints/definitions.d.ts +39 -0
- package/dist/constraints/definitions.d.ts.map +1 -0
- package/dist/constraints/definitions.js +71 -0
- package/dist/constraints/definitions.js.map +1 -0
- package/dist/constraints/index.d.ts +4 -0
- package/dist/constraints/index.d.ts.map +1 -0
- package/dist/constraints/index.js +20 -0
- package/dist/constraints/index.js.map +1 -0
- 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/quality.d.ts +11 -0
- package/dist/constraints/quality.d.ts.map +1 -0
- package/dist/constraints/quality.js +257 -0
- package/dist/constraints/quality.js.map +1 -0
- package/dist/constraints/registry.d.ts +26 -0
- package/dist/constraints/registry.d.ts.map +1 -0
- package/dist/constraints/registry.js +128 -0
- package/dist/constraints/registry.js.map +1 -0
- package/dist/constraints/safety.d.ts +13 -0
- package/dist/constraints/safety.d.ts.map +1 -0
- package/dist/constraints/safety.js +103 -0
- package/dist/constraints/safety.js.map +1 -0
- package/dist/constraints/types.d.ts +53 -0
- package/dist/constraints/types.d.ts.map +1 -0
- package/dist/constraints/types.js +8 -0
- package/dist/constraints/types.js.map +1 -0
- package/dist/context/compaction.d.ts +57 -0
- package/dist/context/compaction.d.ts.map +1 -0
- package/dist/context/compaction.js +166 -0
- package/dist/context/compaction.js.map +1 -0
- package/dist/context/file-budget.d.ts +40 -0
- package/dist/context/file-budget.d.ts.map +1 -0
- package/dist/context/file-budget.js +147 -0
- package/dist/context/file-budget.js.map +1 -0
- package/dist/context/index.d.ts +15 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +31 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/knowledge-injector.d.ts +49 -0
- package/dist/context/knowledge-injector.d.ts.map +1 -0
- package/dist/context/knowledge-injector.js +122 -0
- package/dist/context/knowledge-injector.js.map +1 -0
- package/dist/context/progressive-loader.d.ts +0 -1
- package/dist/context/progressive-loader.d.ts.map +1 -1
- package/dist/context/progressive-loader.js +15 -32
- package/dist/context/progressive-loader.js.map +1 -1
- package/dist/context/session-manager.d.ts +67 -0
- package/dist/context/session-manager.d.ts.map +1 -0
- package/dist/context/session-manager.js +275 -0
- package/dist/context/session-manager.js.map +1 -0
- package/dist/context/token-pipeline.d.ts +55 -0
- package/dist/context/token-pipeline.d.ts.map +1 -0
- package/dist/context/token-pipeline.js +220 -0
- package/dist/context/token-pipeline.js.map +1 -0
- package/dist/context/tool-output-budget.d.ts +59 -0
- package/dist/context/tool-output-budget.d.ts.map +1 -0
- package/dist/context/tool-output-budget.js +177 -0
- package/dist/context/tool-output-budget.js.map +1 -0
- package/dist/context/types.d.ts +113 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/types.js +30 -0
- package/dist/context/types.js.map +1 -0
- package/dist/core/constraints/checker.d.ts +25 -1
- package/dist/core/constraints/checker.d.ts.map +1 -1
- package/dist/core/constraints/checker.js +244 -162
- 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 +92 -10
- 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 +5 -6
- package/dist/core/constraints/interceptor.js.map +1 -1
- package/dist/core/project-config-loader.d.ts.map +1 -1
- package/dist/core/project-config-loader.js +12 -30
- package/dist/core/project-config-loader.js.map +1 -1
- package/dist/core/session/clean-state.d.ts.map +1 -1
- package/dist/core/session/clean-state.js +9 -7
- package/dist/core/session/clean-state.js.map +1 -1
- package/dist/core/session/startup.d.ts.map +1 -1
- package/dist/core/session/startup.js +3 -5
- package/dist/core/session/startup.js.map +1 -1
- package/dist/core/spec/validator.d.ts.map +1 -1
- package/dist/core/spec/validator.js +2 -4
- package/dist/core/spec/validator.js.map +1 -1
- package/dist/core/validators/checkpoint.d.ts.map +1 -1
- package/dist/core/validators/checkpoint.js +3 -5
- package/dist/core/validators/checkpoint.js.map +1 -1
- package/dist/core/validators/passes-gate.d.ts +0 -4
- package/dist/core/validators/passes-gate.d.ts.map +1 -1
- package/dist/core/validators/passes-gate.js +5 -13
- package/dist/core/validators/passes-gate.js.map +1 -1
- package/dist/dashboard/data.d.ts +39 -0
- package/dist/dashboard/data.d.ts.map +1 -0
- package/dist/dashboard/data.js +89 -0
- package/dist/dashboard/data.js.map +1 -0
- package/dist/dashboard/index.d.ts +4 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +20 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/stats.d.ts +20 -0
- package/dist/dashboard/stats.d.ts.map +1 -0
- package/dist/dashboard/stats.js +115 -0
- package/dist/dashboard/stats.js.map +1 -0
- package/dist/dashboard/types.d.ts +98 -0
- package/dist/dashboard/types.d.ts.map +1 -0
- package/dist/dashboard/types.js +8 -0
- package/dist/dashboard/types.js.map +1 -0
- package/dist/failure/recorder.d.ts +4 -0
- package/dist/failure/recorder.d.ts.map +1 -1
- package/dist/failure/recorder.js +9 -11
- package/dist/failure/recorder.js.map +1 -1
- package/dist/gates/acceptance.d.ts.map +1 -1
- package/dist/gates/acceptance.js +2 -4
- package/dist/gates/acceptance.js.map +1 -1
- package/dist/gates/contract.d.ts.map +1 -1
- package/dist/gates/contract.js +0 -3
- package/dist/gates/contract.js.map +1 -1
- package/dist/gates/performance.d.ts.map +1 -1
- package/dist/gates/performance.js +3 -5
- package/dist/gates/performance.js.map +1 -1
- package/dist/gates/review.d.ts.map +1 -1
- package/dist/gates/review.js +4 -6
- package/dist/gates/review.js.map +1 -1
- package/dist/gates/security.d.ts.map +1 -1
- package/dist/gates/security.js +2 -4
- package/dist/gates/security.js.map +1 -1
- 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 +28 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -14
- package/dist/index.js.map +1 -1
- package/dist/knowledge/import.d.ts +95 -0
- package/dist/knowledge/import.d.ts.map +1 -0
- package/dist/knowledge/import.js +429 -0
- package/dist/knowledge/import.js.map +1 -0
- package/dist/knowledge/index.d.ts +15 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +40 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/ingest.d.ts +30 -0
- package/dist/knowledge/ingest.d.ts.map +1 -0
- package/dist/knowledge/ingest.js +94 -0
- package/dist/knowledge/ingest.js.map +1 -0
- package/dist/knowledge/lifecycle-hooks.d.ts +62 -0
- package/dist/knowledge/lifecycle-hooks.d.ts.map +1 -0
- package/dist/knowledge/lifecycle-hooks.js +140 -0
- package/dist/knowledge/lifecycle-hooks.js.map +1 -0
- package/dist/knowledge/lifecycle.d.ts +43 -0
- package/dist/knowledge/lifecycle.d.ts.map +1 -0
- package/dist/knowledge/lifecycle.js +141 -0
- package/dist/knowledge/lifecycle.js.map +1 -0
- package/dist/knowledge/lint.d.ts +57 -0
- package/dist/knowledge/lint.d.ts.map +1 -0
- package/dist/knowledge/lint.js +235 -0
- package/dist/knowledge/lint.js.map +1 -0
- package/dist/knowledge/query.d.ts +33 -0
- package/dist/knowledge/query.d.ts.map +1 -0
- package/dist/knowledge/query.js +107 -0
- package/dist/knowledge/query.js.map +1 -0
- package/dist/knowledge/reference-tracker.d.ts +31 -0
- package/dist/knowledge/reference-tracker.d.ts.map +1 -0
- package/dist/knowledge/reference-tracker.js +124 -0
- package/dist/knowledge/reference-tracker.js.map +1 -0
- package/dist/knowledge/store.d.ts +42 -0
- package/dist/knowledge/store.d.ts.map +1 -0
- package/dist/knowledge/store.js +280 -0
- package/dist/knowledge/store.js.map +1 -0
- package/dist/knowledge/types.d.ts +103 -0
- package/dist/knowledge/types.d.ts.map +1 -0
- package/dist/knowledge/types.js +17 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/llm/adapter.d.ts +36 -0
- package/dist/llm/adapter.d.ts.map +1 -0
- package/dist/llm/adapter.js +118 -0
- package/dist/llm/adapter.js.map +1 -0
- package/dist/llm/index.d.ts +3 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +19 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/types.d.ts +62 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +8 -0
- package/dist/llm/types.js.map +1 -0
- 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/monitoring/context-tracker.d.ts +38 -0
- package/dist/monitoring/context-tracker.d.ts.map +1 -0
- package/dist/monitoring/context-tracker.js +162 -0
- package/dist/monitoring/context-tracker.js.map +1 -0
- package/dist/monitoring/index.d.ts +3 -0
- package/dist/monitoring/index.d.ts.map +1 -1
- package/dist/monitoring/index.js +6 -0
- package/dist/monitoring/index.js.map +1 -1
- package/dist/monitoring/knowledge-doctor.d.ts +78 -0
- package/dist/monitoring/knowledge-doctor.d.ts.map +1 -0
- package/dist/monitoring/knowledge-doctor.js +266 -0
- package/dist/monitoring/knowledge-doctor.js.map +1 -0
- package/dist/monitoring/knowledge-evolver.d.ts +72 -0
- package/dist/monitoring/knowledge-evolver.d.ts.map +1 -0
- package/dist/monitoring/knowledge-evolver.js +205 -0
- package/dist/monitoring/knowledge-evolver.js.map +1 -0
- package/dist/monitoring/performance-analyzer.d.ts.map +1 -1
- package/dist/monitoring/performance-analyzer.js +10 -4
- package/dist/monitoring/performance-analyzer.js.map +1 -1
- package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
- package/dist/monitoring/trace-analyzer.js +12 -5
- package/dist/monitoring/trace-analyzer.js.map +1 -1
- package/dist/safety/index.d.ts +6 -0
- package/dist/safety/index.d.ts.map +1 -0
- package/dist/safety/index.js +22 -0
- package/dist/safety/index.js.map +1 -0
- package/dist/safety/input-guardrail.d.ts +36 -0
- package/dist/safety/input-guardrail.d.ts.map +1 -0
- package/dist/safety/input-guardrail.js +118 -0
- package/dist/safety/input-guardrail.js.map +1 -0
- package/dist/safety/output-guardrail.d.ts +40 -0
- package/dist/safety/output-guardrail.d.ts.map +1 -0
- package/dist/safety/output-guardrail.js +150 -0
- package/dist/safety/output-guardrail.js.map +1 -0
- package/dist/safety/sandbox.d.ts +45 -0
- package/dist/safety/sandbox.d.ts.map +1 -0
- package/dist/safety/sandbox.js +134 -0
- package/dist/safety/sandbox.js.map +1 -0
- package/dist/safety/tool-guardrail.d.ts +51 -0
- package/dist/safety/tool-guardrail.d.ts.map +1 -0
- package/dist/safety/tool-guardrail.js +147 -0
- package/dist/safety/tool-guardrail.js.map +1 -0
- package/dist/safety/types.d.ts +104 -0
- package/dist/safety/types.d.ts.map +1 -0
- package/dist/safety/types.js +6 -0
- package/dist/safety/types.js.map +1 -0
- package/dist/tools/core/index.d.ts +13 -0
- package/dist/tools/core/index.d.ts.map +1 -0
- package/dist/tools/core/index.js +198 -0
- package/dist/tools/core/index.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 +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +22 -0
- package/dist/tools/index.js.map +1 -0
- 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/tools/registry.d.ts +59 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +115 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +38 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +6 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/constraint.d.ts +8 -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 +11 -1
- package/dist/utils/exec.d.ts.map +1 -1
- package/dist/utils/exec.js +56 -2
- package/dist/utils/exec.js.map +1 -1
- package/dist/verification/index.d.ts +4 -0
- package/dist/verification/index.d.ts.map +1 -0
- package/dist/verification/index.js +20 -0
- package/dist/verification/index.js.map +1 -0
- package/dist/verification/loop.d.ts +30 -0
- package/dist/verification/loop.d.ts.map +1 -0
- package/dist/verification/loop.js +114 -0
- package/dist/verification/loop.js.map +1 -0
- package/dist/verification/rules-based.d.ts +40 -0
- package/dist/verification/rules-based.d.ts.map +1 -0
- package/dist/verification/rules-based.js +130 -0
- package/dist/verification/rules-based.js.map +1 -0
- package/dist/verification/types.d.ts +69 -0
- package/dist/verification/types.d.ts.map +1 -0
- package/dist/verification/types.js +6 -0
- package/dist/verification/types.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,202 +1,181 @@
|
|
|
1
1
|
# @dommaker/harness
|
|
2
2
|
|
|
3
|
-
> AI Agent
|
|
3
|
+
> AI Agent 工程约束框架 — 从代码质量约束到知识积累引擎
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
## 🚀 快速开始
|
|
5
|
+
[](https://www.npmjs.com/package/@dommaker/harness)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
## 定位
|
|
10
9
|
|
|
11
|
-
```bash
|
|
12
|
-
npm install -g @dommaker/harness
|
|
13
10
|
```
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
# 开发前
|
|
19
|
-
harness check
|
|
20
|
-
|
|
21
|
-
# 开发 + 写测试
|
|
22
|
-
|
|
23
|
-
# 提交前
|
|
24
|
-
harness passes-gate
|
|
11
|
+
代码质量约束(补偿模型弱点)
|
|
12
|
+
↓
|
|
13
|
+
知识积累基础设施(模型做不到的事)
|
|
14
|
+
+ 最小安全护栏(模型无关的底线)
|
|
25
15
|
```
|
|
26
16
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
## 📋 CLI 命令
|
|
17
|
+
**核心理念:Harness 不是目的,知识才是护城河。**
|
|
30
18
|
|
|
31
|
-
|
|
19
|
+
Skill、Agent、工具链会随模型迭代更新,但领域知识是永恒的。
|
|
32
20
|
|
|
33
|
-
|
|
34
|
-
harness check # 检查铁律(开发前后必用)
|
|
35
|
-
harness passes-gate # 测试门控(提交前验证)
|
|
36
|
-
harness status # 查看状态(异常、统计)
|
|
37
|
-
harness flow # 一键诊断 + 提案流程
|
|
38
|
-
```
|
|
21
|
+
---
|
|
39
22
|
|
|
40
|
-
|
|
23
|
+
## 安装
|
|
41
24
|
|
|
42
25
|
```bash
|
|
43
|
-
|
|
44
|
-
harness init --print-snippets # 输出代码片段
|
|
26
|
+
npm install @dommaker/harness
|
|
45
27
|
```
|
|
46
28
|
|
|
47
|
-
###
|
|
29
|
+
### CLI
|
|
48
30
|
|
|
49
31
|
```bash
|
|
50
|
-
#
|
|
51
|
-
harness passes-gate
|
|
52
|
-
harness
|
|
53
|
-
harness
|
|
54
|
-
|
|
55
|
-
# 验收标准
|
|
56
|
-
harness acceptance --task-id TASK-001 # 检查指定任务
|
|
57
|
-
harness acceptance --check-all # 检查所有任务
|
|
58
|
-
harness acceptance list # 列出验收标准
|
|
59
|
-
harness acc # 别名
|
|
60
|
-
|
|
61
|
-
# 性能门控
|
|
62
|
-
harness performance --coverage --coverage-threshold 85 # 覆盖率检查
|
|
63
|
-
harness performance --bundle --bundle-threshold 300 # 打包大小检查
|
|
64
|
-
harness perf # 别名
|
|
65
|
-
|
|
66
|
-
# 安全门控
|
|
67
|
-
harness security # npm audit 检查
|
|
68
|
-
harness security --severity critical # 只显示 critical 级别
|
|
69
|
-
harness security audit # 详细漏洞报告
|
|
70
|
-
harness sec # 别名
|
|
71
|
-
|
|
72
|
-
# API 契约
|
|
73
|
-
harness contract # OpenAPI Schema 验证
|
|
74
|
-
harness contract validate # Schema 语法验证
|
|
75
|
-
harness contract --contract-path api/openapi.yaml
|
|
76
|
-
|
|
77
|
-
# 代码审查
|
|
78
|
-
harness review # PR 审查状态检查
|
|
79
|
-
harness review --min-reviewers 2 # 要求 2 个审批
|
|
80
|
-
harness review status # PR 详情
|
|
81
|
-
|
|
82
|
-
# 命令黑名单
|
|
83
|
-
harness command "rm -rf /" # 检查命令
|
|
84
|
-
harness command --level "DROP TABLE" # 显示风险等级
|
|
85
|
-
harness command --list # 列出所有规则
|
|
86
|
-
harness cmd # 别名
|
|
32
|
+
harness check # 检查约束(开发前后)
|
|
33
|
+
harness passes-gate # 测试门控(提交前)
|
|
34
|
+
harness status # 查看状态和异常
|
|
35
|
+
harness flow # 一键诊断 + 优化提案
|
|
36
|
+
harness init --preset standard # 初始化配置
|
|
87
37
|
```
|
|
88
38
|
|
|
89
|
-
###
|
|
39
|
+
### 作为库使用
|
|
90
40
|
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
41
|
+
```typescript
|
|
42
|
+
import {
|
|
43
|
+
// 约束系统
|
|
44
|
+
checkConstraints,
|
|
45
|
+
checkBeforeExecution,
|
|
46
|
+
interceptOperation,
|
|
47
|
+
// 知识引擎
|
|
48
|
+
KnowledgeStore,
|
|
49
|
+
KnowledgeQuery,
|
|
50
|
+
KnowledgeLinter,
|
|
51
|
+
ReferenceTracker,
|
|
52
|
+
// 安全护栏
|
|
53
|
+
InputGuardrail,
|
|
54
|
+
OutputGuardrail,
|
|
55
|
+
ToolGuardrail,
|
|
56
|
+
Sandbox,
|
|
57
|
+
// 上下文管理
|
|
58
|
+
TokenBudget,
|
|
59
|
+
SessionCompaction,
|
|
60
|
+
// Agent 生命周期
|
|
61
|
+
AgentLifecycle,
|
|
62
|
+
} from '@dommaker/harness';
|
|
96
63
|
|
|
97
|
-
|
|
64
|
+
// 约束检查
|
|
65
|
+
const result = await checkConstraints(context);
|
|
66
|
+
if (!result.passed) {
|
|
67
|
+
console.error(result.ironLaws.filter(r => !r.passed));
|
|
68
|
+
}
|
|
98
69
|
|
|
99
|
-
|
|
100
|
-
harness
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
```
|
|
70
|
+
// 知识存储与查询
|
|
71
|
+
const store = new KnowledgeStore({ baseDir: '.harness/knowledge' });
|
|
72
|
+
const query = new KnowledgeQuery(store);
|
|
73
|
+
const docs = query.search('architecture decisions');
|
|
104
74
|
|
|
105
|
-
|
|
75
|
+
// 安全护栏
|
|
76
|
+
const guardrail = new InputGuardrail();
|
|
77
|
+
await guardrail.check(userInput);
|
|
106
78
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### 诊断
|
|
79
|
+
// Token 预算
|
|
80
|
+
const budget = new TokenBudget({ model: 'claude-3', totalTokens: 200000 });
|
|
81
|
+
budget.allocate('system', 2000);
|
|
82
|
+
budget.allocate('user', 4000);
|
|
114
83
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
84
|
+
// Agent 生命周期
|
|
85
|
+
const lifecycle = new AgentLifecycle();
|
|
86
|
+
lifecycle.init({ id: 'agent-1', role: 'coder' });
|
|
118
87
|
```
|
|
119
88
|
|
|
120
89
|
---
|
|
121
90
|
|
|
122
|
-
##
|
|
91
|
+
## 核心架构
|
|
123
92
|
|
|
124
93
|
### 三层约束体系
|
|
125
94
|
|
|
126
95
|
| 层级 | 严重性 | 说明 |
|
|
127
96
|
|------|:------:|------|
|
|
128
|
-
| **Iron Law** |
|
|
129
|
-
| **Guideline** |
|
|
130
|
-
| **Tip** |
|
|
131
|
-
|
|
132
|
-
###
|
|
133
|
-
|
|
134
|
-
|
|
|
135
|
-
|
|
136
|
-
| `
|
|
137
|
-
| `
|
|
138
|
-
| `
|
|
139
|
-
| `
|
|
140
|
-
| `
|
|
141
|
-
| `
|
|
142
|
-
| `
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
|
147
|
-
|
|
148
|
-
|
|
|
149
|
-
| SpecAcceptanceGate | `acceptance` / `acc` | 验收标准检查 |
|
|
150
|
-
| PerformanceGate | `performance` / `perf` | 性能门控 |
|
|
151
|
-
| SecurityGate | `security` / `sec` | 安全检查 |
|
|
152
|
-
| ContractGate | `contract` | API 契约验证 |
|
|
153
|
-
| ReviewGate | `review` | PR 审核检查 |
|
|
154
|
-
| CommandGate | `command` / `cmd` | 命令黑名单 |
|
|
155
|
-
| CheckpointValidator | `validate` | 检查点验证 |
|
|
97
|
+
| **Iron Law** | error | 绝对禁止,无例外(8 条) |
|
|
98
|
+
| **Guideline** | warning | 推荐遵守,有例外(11 条) |
|
|
99
|
+
| **Tip** | info | 信息性提示(2 条) |
|
|
100
|
+
|
|
101
|
+
### 子系统
|
|
102
|
+
|
|
103
|
+
| 模块 | 目录 | 说明 |
|
|
104
|
+
|------|------|------|
|
|
105
|
+
| **约束引擎** | `core/`, `constraints/` | 三层约束检查、拦截器、自定义约束配置 |
|
|
106
|
+
| **知识引擎** | `knowledge/` | 存储、查询、引用追踪、质量检查、生命周期(draft→canonical→archived) |
|
|
107
|
+
| **上下文管理** | `context/` | Token 预算、会话压缩、渐进式加载、知识注入 |
|
|
108
|
+
| **安全护栏** | `safety/` | 输入/输出/工具调用安全检查、沙箱(L1-L4) |
|
|
109
|
+
| **验证循环** | `verification/` | 规则引擎 + 推理验证,支持检查点恢复 |
|
|
110
|
+
| **门禁系统** | `gates/` | 8 种门禁:测试/验收/性能/安全/契约/审查/命令/检查点 |
|
|
111
|
+
| **监控** | `monitoring/` | Trace 收集分析、约束诊断/进化、知识诊断/进化 |
|
|
112
|
+
| **Agent 管理** | `agents/` | Agent 生命周期状态机(init→running→completed) |
|
|
113
|
+
| **LLM 集成** | `llm/` | LLM 适配层,支持多 provider |
|
|
114
|
+
| **失败处理** | `failure/` | 错误分类、失败记录 |
|
|
115
|
+
| **Dashboard** | `dashboard/` | 统计面板、状态展示 |
|
|
116
|
+
| **架构约束** | `architecture/` | 架构级约束检查、跨项目依赖检查 |
|
|
117
|
+
| **Spec 检查** | `spec/` | 代码注解中的 Spec 验证 |
|
|
156
118
|
|
|
157
119
|
---
|
|
158
120
|
|
|
159
|
-
##
|
|
121
|
+
## CLI 命令
|
|
160
122
|
|
|
161
|
-
|
|
162
|
-
import {
|
|
163
|
-
IronLawChecker,
|
|
164
|
-
PassesGate,
|
|
165
|
-
CommandGate,
|
|
166
|
-
CheckpointValidator,
|
|
167
|
-
} from '@dommaker/harness';
|
|
123
|
+
### 日常
|
|
168
124
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
125
|
+
```bash
|
|
126
|
+
harness check # 约束检查
|
|
127
|
+
harness passes-gate [options] # 测试门控(别名: pg)
|
|
128
|
+
harness status [--anomalies] # 状态查看
|
|
129
|
+
harness flow [--auto-apply] [--auto-execute] # 诊断 + 提案
|
|
130
|
+
```
|
|
172
131
|
|
|
173
|
-
|
|
174
|
-
const gate = new PassesGate({ requireEvidence: true });
|
|
175
|
-
const passed = await gate.runTests();
|
|
132
|
+
### 门禁
|
|
176
133
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
134
|
+
```bash
|
|
135
|
+
harness acceptance [--task-id ID] [--check-all] # 验收标准(别名: acc)
|
|
136
|
+
harness performance [--coverage] [--bundle] # 性能门控(别名: perf)
|
|
137
|
+
harness security [--severity level] # 安全检查(别名: sec)
|
|
138
|
+
harness contract [--contract-path path] # API 契约验证
|
|
139
|
+
harness review [--min-reviewers N] # PR 审查检查
|
|
140
|
+
harness command "command string" # 命令黑名单(别名: cmd)
|
|
181
141
|
```
|
|
182
142
|
|
|
183
|
-
|
|
143
|
+
### 其他
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
harness init [--preset standard|strict|relaxed] # 初始化
|
|
147
|
+
harness validate [--strict] # 检查点验证
|
|
148
|
+
harness spec [--staged] # Spec 验证
|
|
149
|
+
harness report [-f json|markdown] [-o file] # 报告生成
|
|
150
|
+
```
|
|
184
151
|
|
|
185
152
|
---
|
|
186
153
|
|
|
154
|
+
## 配置
|
|
155
|
+
|
|
187
156
|
### .harness/config.yml
|
|
188
157
|
|
|
189
158
|
```yaml
|
|
190
|
-
preset: standard
|
|
159
|
+
preset: standard # standard | strict | relaxed
|
|
191
160
|
|
|
192
161
|
# 自定义约束例外
|
|
193
162
|
custom_constraints:
|
|
194
163
|
no_fix_without_root_cause:
|
|
195
164
|
extend_exceptions:
|
|
196
|
-
-
|
|
165
|
+
- hotfix_branch
|
|
197
166
|
```
|
|
198
167
|
|
|
199
|
-
###
|
|
168
|
+
### Presets
|
|
169
|
+
|
|
170
|
+
| Preset | 说明 |
|
|
171
|
+
|--------|------|
|
|
172
|
+
| `strict` | 全部约束启用(Iron Laws + Guidelines + Tips) |
|
|
173
|
+
| `standard` | Iron Laws + Guidelines(默认) |
|
|
174
|
+
| `relaxed` | 仅 Iron Laws |
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## CI 集成
|
|
200
179
|
|
|
201
180
|
```yaml
|
|
202
181
|
# .github/workflows/harness-check.yml
|
|
@@ -212,63 +191,36 @@ jobs:
|
|
|
212
191
|
|
|
213
192
|
---
|
|
214
193
|
|
|
215
|
-
##
|
|
194
|
+
## 日志与诊断
|
|
216
195
|
|
|
217
|
-
|
|
196
|
+
运行时状态存储在 `.harness/` 目录:
|
|
218
197
|
|
|
219
198
|
```
|
|
220
199
|
.harness/
|
|
221
|
-
├── traces/
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
200
|
+
├── traces/ # 约束检查记录(JSON Lines)
|
|
201
|
+
├── failures/ # 失败记录
|
|
202
|
+
├── diagnoses/ # 诊断报告
|
|
203
|
+
├── proposals/ # 约束优化提案
|
|
204
|
+
└── state.json # 运行状态
|
|
225
205
|
```
|
|
226
206
|
|
|
227
|
-
### 查看日志
|
|
228
|
-
|
|
229
207
|
```bash
|
|
230
|
-
#
|
|
231
|
-
harness status
|
|
232
|
-
|
|
233
|
-
# 查看详细统计
|
|
234
|
-
harness status --detail
|
|
235
|
-
|
|
236
|
-
# 只看异常
|
|
237
|
-
harness status --anomalies
|
|
238
|
-
|
|
239
|
-
# 分析最近 N 小时
|
|
240
|
-
harness status --hours 48
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
### 日志格式
|
|
244
|
-
|
|
245
|
-
**execution.log**(JSON Lines 格式):
|
|
246
|
-
```json
|
|
247
|
-
{"timestamp":"2026-04-28T15:00:00Z","constraintId":"no_bypass_checkpoint","result":"passed","duration":12}
|
|
248
|
-
{"timestamp":"2026-04-28T15:01:00Z","constraintId":"no_self_approval","result":"bypassed","reason":"hotfix"}
|
|
208
|
+
harness status --anomalies # 查看异常
|
|
209
|
+
harness status --hours 48 # 最近 48 小时统计
|
|
210
|
+
harness flow --auto-apply # 诊断 + 自动应用低风险提案
|
|
249
211
|
```
|
|
250
212
|
|
|
251
|
-
**summary.json**:
|
|
252
|
-
```json
|
|
253
|
-
{"totalChecks":150,"passRate":0.92,"bypassRate":0.08,"anomalies":2}
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
### 异常检测
|
|
257
|
-
|
|
258
|
-
当 `harness status --anomalies` 发现异常时,运行 `harness flow` 进行诊断和优化提案。
|
|
259
|
-
|
|
260
213
|
---
|
|
261
214
|
|
|
262
|
-
##
|
|
215
|
+
## 开发
|
|
263
216
|
|
|
264
217
|
```bash
|
|
265
218
|
npm install
|
|
266
|
-
npm run build
|
|
267
|
-
npm test
|
|
219
|
+
npm run build # 编译 TypeScript
|
|
220
|
+
npm test # 运行测试(覆盖率阈值 50%)
|
|
221
|
+
npm run lint # ESLint
|
|
268
222
|
```
|
|
269
223
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
## 📝 License
|
|
224
|
+
## 许可证
|
|
273
225
|
|
|
274
|
-
MIT
|
|
226
|
+
MIT
|
package/bin/harness.js
CHANGED
|
@@ -7,13 +7,14 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
const { Command } = require('commander');
|
|
10
|
-
const {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
const { version } = require('../package.json');
|
|
11
|
+
const {
|
|
12
|
+
check,
|
|
13
|
+
listLaws,
|
|
14
|
+
validate,
|
|
15
|
+
runPassesGate,
|
|
15
16
|
checkCoverage,
|
|
16
|
-
init,
|
|
17
|
+
init,
|
|
17
18
|
report,
|
|
18
19
|
status,
|
|
19
20
|
flow,
|
|
@@ -28,8 +29,16 @@ const {
|
|
|
28
29
|
validateSchema,
|
|
29
30
|
review,
|
|
30
31
|
reviewStatus,
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
executeCommand,
|
|
33
|
+
syncDocs,
|
|
34
|
+
knowledgeList,
|
|
35
|
+
knowledgeSearch,
|
|
36
|
+
knowledgeImport,
|
|
37
|
+
knowledgeDecay,
|
|
38
|
+
knowledgeStats,
|
|
39
|
+
failureList,
|
|
40
|
+
failureStats,
|
|
41
|
+
failureClear,
|
|
33
42
|
} = require('../dist/cli/commands/index');
|
|
34
43
|
|
|
35
44
|
const program = new Command();
|
|
@@ -37,7 +46,7 @@ const program = new Command();
|
|
|
37
46
|
program
|
|
38
47
|
.name('harness')
|
|
39
48
|
.description('通用工程约束框架 - 铁律系统、检查点验证、测试门控、执行追踪')
|
|
40
|
-
.version(
|
|
49
|
+
.version(version);
|
|
41
50
|
|
|
42
51
|
// ========================================
|
|
43
52
|
// harness check
|
|
@@ -102,6 +111,7 @@ program
|
|
|
102
111
|
.command('init')
|
|
103
112
|
.description('初始化项目的 harness 配置')
|
|
104
113
|
.option('-p, --preset <preset>', '预设名称 (strict/standard/relaxed)', 'standard')
|
|
114
|
+
.option('-g, --governance <level>', '治理级别 (minimal/standard/strict)')
|
|
105
115
|
.option('-t, --type <type>', '项目类型 (node-api/nextjs-app/python-api/custom)')
|
|
106
116
|
.option('--project-path <path>', '项目路径')
|
|
107
117
|
.option('--no-git-hooks', '不创建 Git hooks')
|
|
@@ -118,7 +128,7 @@ program
|
|
|
118
128
|
.command('report')
|
|
119
129
|
.description('生成检查报告')
|
|
120
130
|
.option('-o, --output <path>', '输出文件路径')
|
|
121
|
-
.option('-f, --format <format>', '输出格式 (json/markdown)', 'markdown')
|
|
131
|
+
.option('-f, --format <format>', '输出格式 (json/markdown/html)', 'markdown')
|
|
122
132
|
.option('-p, --project-path <path>', '项目路径')
|
|
123
133
|
.action(async (options) => {
|
|
124
134
|
await report(options);
|
|
@@ -262,7 +272,7 @@ program
|
|
|
262
272
|
.description('API 契约门控,检查 OpenAPI Schema')
|
|
263
273
|
.option('-p, --project-path <path>', '项目路径')
|
|
264
274
|
.option('--contract-path <path>', '契约文件路径', 'openapi.yaml')
|
|
265
|
-
.option('--strict', '
|
|
275
|
+
.option('--no-strict', '关闭严格模式')
|
|
266
276
|
.option('--allow-breaking', '允许破坏性变更', false)
|
|
267
277
|
.action(async (subcommand, options, command) => {
|
|
268
278
|
if (subcommand === 'validate') {
|
|
@@ -280,8 +290,8 @@ program
|
|
|
280
290
|
.description('代码审查门控,检查审查状态')
|
|
281
291
|
.option('-p, --project-path <path>', '项目路径')
|
|
282
292
|
.option('--min-reviewers <n>', '最少审查人数', '1')
|
|
283
|
-
.option('--require-approval', '
|
|
284
|
-
.option('--block-on-changes', '
|
|
293
|
+
.option('--no-require-approval', '不要求审批')
|
|
294
|
+
.option('--no-block-on-changes', '不阻止变更请求')
|
|
285
295
|
.option('--allowed-reviewers <list>', '允许的审查者(逗号分隔)')
|
|
286
296
|
.action(async (subcommand, options, command) => {
|
|
287
297
|
if (subcommand === 'status') {
|
|
@@ -308,58 +318,110 @@ program
|
|
|
308
318
|
.option('--list', '列出所有黑名单规则')
|
|
309
319
|
.option('--json', 'JSON 格式输出')
|
|
310
320
|
.option('--strict', '严格模式(warn 也阻止)')
|
|
311
|
-
.action(async (cmd, options
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
if (!cmd) {
|
|
332
|
-
console.error('错误:请提供要检查的命令');
|
|
333
|
-
console.error('用法:harness command "your command"');
|
|
321
|
+
.action(async (cmd, options) => {
|
|
322
|
+
await executeCommand(cmd, options);
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
// ========================================
|
|
326
|
+
// harness sync-docs
|
|
327
|
+
// ========================================
|
|
328
|
+
program
|
|
329
|
+
.command('sync-docs')
|
|
330
|
+
.description('同步项目文档(CAPABILITIES.md、CONTEXT.md、CHANGELOG.md)')
|
|
331
|
+
.option('-p, --project-path <path>', '项目路径')
|
|
332
|
+
.option('-c, --check', '只检查不修改(CI 模式)', false)
|
|
333
|
+
.option('--changelog', '生成 CHANGELOG 条目', false)
|
|
334
|
+
.option('--json', '输出 JSON 格式(供 LLM 消费)', false)
|
|
335
|
+
.action(async (options) => {
|
|
336
|
+
const ok = await syncDocs(options);
|
|
337
|
+
if (!ok && options.check) {
|
|
334
338
|
process.exit(1);
|
|
335
339
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
// ========================================
|
|
343
|
+
// harness knowledge
|
|
344
|
+
// ========================================
|
|
345
|
+
program
|
|
346
|
+
.command('knowledge [subcommand] [arg]')
|
|
347
|
+
.description('知识库管理(list/search/import/decay/stats)')
|
|
348
|
+
.alias('kb')
|
|
349
|
+
.option('-p, --project-path <path>', '项目路径')
|
|
350
|
+
.option('--type <types>', '按类型过滤(逗号分隔)')
|
|
351
|
+
.option('--maturity <levels>', '按成熟度过滤(逗号分隔)')
|
|
352
|
+
.option('--tag <tags>', '按标签过滤(逗号分隔)')
|
|
353
|
+
.option('--sources <sources>', '导入源(逗号分隔: code,git,docs)')
|
|
354
|
+
.option('--limit <n>', '结果数量限制', '20')
|
|
355
|
+
.option('--reset', '重置导入状态', false)
|
|
356
|
+
.option('--json', 'JSON 格式输出', false)
|
|
357
|
+
.action(async (subcommand, arg, options) => {
|
|
358
|
+
const opts = { projectPath: options.projectPath, json: options.json };
|
|
359
|
+
switch (subcommand) {
|
|
360
|
+
case 'list':
|
|
361
|
+
case 'ls':
|
|
362
|
+
await knowledgeList({ ...opts, type: options.type, maturity: options.maturity, tag: options.tag });
|
|
363
|
+
break;
|
|
364
|
+
case 'search':
|
|
365
|
+
case 's':
|
|
366
|
+
if (!arg) { console.error('请提供搜索关键词'); process.exit(1); }
|
|
367
|
+
await knowledgeSearch(arg, { ...opts, limit: parseInt(options.limit, 10) });
|
|
368
|
+
break;
|
|
369
|
+
case 'import':
|
|
370
|
+
case 'i':
|
|
371
|
+
await knowledgeImport({ ...opts, sources: options.sources, reset: options.reset });
|
|
372
|
+
break;
|
|
373
|
+
case 'decay':
|
|
374
|
+
case 'd':
|
|
375
|
+
await knowledgeDecay(opts);
|
|
376
|
+
break;
|
|
377
|
+
case 'stats':
|
|
378
|
+
case 'st':
|
|
379
|
+
await knowledgeStats(opts);
|
|
380
|
+
break;
|
|
381
|
+
default:
|
|
382
|
+
// 无子命令时显示帮助
|
|
383
|
+
if (!subcommand) {
|
|
384
|
+
program.commands.find(c => c.name() === 'knowledge').help();
|
|
385
|
+
} else {
|
|
386
|
+
console.error(`未知子命令: ${subcommand}`);
|
|
387
|
+
process.exit(1);
|
|
388
|
+
}
|
|
349
389
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
// ========================================
|
|
393
|
+
// harness failure
|
|
394
|
+
// ========================================
|
|
395
|
+
program
|
|
396
|
+
.command('failure [subcommand]')
|
|
397
|
+
.description('失败记录管理(list/stats/clear)')
|
|
398
|
+
.option('-p, --project-path <path>', '项目路径')
|
|
399
|
+
.option('--type <type>', '按错误类型过滤')
|
|
400
|
+
.option('--level <level>', '按失败等级过滤 (L1/L2/L3/L4)')
|
|
401
|
+
.option('--limit <n>', '结果数量限制', '20')
|
|
402
|
+
.option('--json', 'JSON 格式输出', false)
|
|
403
|
+
.action(async (subcommand, options) => {
|
|
404
|
+
const opts = { projectPath: options.projectPath, json: options.json };
|
|
405
|
+
switch (subcommand) {
|
|
406
|
+
case 'list':
|
|
407
|
+
case 'ls':
|
|
408
|
+
await failureList({ ...opts, limit: parseInt(options.limit, 10), type: options.type, level: options.level });
|
|
409
|
+
break;
|
|
410
|
+
case 'stats':
|
|
411
|
+
case 'st':
|
|
412
|
+
await failureStats(opts);
|
|
413
|
+
break;
|
|
414
|
+
case 'clear':
|
|
415
|
+
await failureClear(opts);
|
|
416
|
+
break;
|
|
417
|
+
default:
|
|
418
|
+
if (!subcommand) {
|
|
419
|
+
program.commands.find(c => c.name() === 'failure').help();
|
|
420
|
+
} else {
|
|
421
|
+
console.error(`未知子命令: ${subcommand}`);
|
|
422
|
+
process.exit(1);
|
|
423
|
+
}
|
|
360
424
|
}
|
|
361
|
-
|
|
362
|
-
process.exit(result.passed ? 0 : 1);
|
|
363
425
|
});
|
|
364
426
|
|
|
365
427
|
// 解析命令行参数
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./lifecycle"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|