@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
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Sandbox 安全级别管理
|
|
4
|
+
*
|
|
5
|
+
* 四级权限模型:
|
|
6
|
+
* Level 1: 只读文件系统,无网络,无 shell
|
|
7
|
+
* Level 2: 可写限定目录(.harness/),无网络
|
|
8
|
+
* Level 3: 可写项目目录,受限网络(白名单)
|
|
9
|
+
* Level 4: 完全权限,需用户确认
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.Sandbox = void 0;
|
|
13
|
+
const LEVEL_DESCRIPTIONS = {
|
|
14
|
+
1: '只读文件系统,无网络,无 shell',
|
|
15
|
+
2: '可写限定目录(.harness/),无网络',
|
|
16
|
+
3: '可写项目目录,受限网络(白名单)',
|
|
17
|
+
4: '完全权限,需用户确认',
|
|
18
|
+
};
|
|
19
|
+
const DEFAULT_WRITABLE_DIRS = ['.harness/'];
|
|
20
|
+
class Sandbox {
|
|
21
|
+
config;
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this.config = {
|
|
24
|
+
level: config?.level ?? 3,
|
|
25
|
+
writableDirs: config?.writableDirs ?? DEFAULT_WRITABLE_DIRS,
|
|
26
|
+
allowedHosts: config?.allowedHosts ?? [],
|
|
27
|
+
requiresConfirmation: config?.requiresConfirmation ?? (config?.level === 4),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
getLevel() {
|
|
31
|
+
return this.config.level;
|
|
32
|
+
}
|
|
33
|
+
getDescription() {
|
|
34
|
+
return LEVEL_DESCRIPTIONS[this.config.level];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 检查当前级别是否满足操作所需级别
|
|
38
|
+
*/
|
|
39
|
+
check(requiredLevel) {
|
|
40
|
+
const allowed = this.config.level >= requiredLevel;
|
|
41
|
+
return {
|
|
42
|
+
allowed,
|
|
43
|
+
reason: allowed ? undefined : `当前 Level ${this.config.level} 不满足操作所需的 Level ${requiredLevel}`,
|
|
44
|
+
currentLevel: this.config.level,
|
|
45
|
+
requiredLevel,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 检查文件写入是否允许
|
|
50
|
+
*/
|
|
51
|
+
checkFileWrite(filePath) {
|
|
52
|
+
if (this.config.level >= 3) {
|
|
53
|
+
return { allowed: true, currentLevel: this.config.level, requiredLevel: 3 };
|
|
54
|
+
}
|
|
55
|
+
if (this.config.level >= 2) {
|
|
56
|
+
const inWritableDir = this.config.writableDirs?.some(dir => filePath.startsWith(dir));
|
|
57
|
+
if (inWritableDir) {
|
|
58
|
+
return { allowed: true, currentLevel: this.config.level, requiredLevel: 2 };
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
allowed: false,
|
|
62
|
+
reason: `Level 2 只允许写入 ${this.config.writableDirs?.join(', ')}`,
|
|
63
|
+
currentLevel: this.config.level,
|
|
64
|
+
requiredLevel: 3,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
allowed: false,
|
|
69
|
+
reason: 'Level 1 禁止写入任何文件',
|
|
70
|
+
currentLevel: this.config.level,
|
|
71
|
+
requiredLevel: 2,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 检查网络访问是否允许
|
|
76
|
+
*/
|
|
77
|
+
checkNetworkAccess(host) {
|
|
78
|
+
if (this.config.level >= 4) {
|
|
79
|
+
return { allowed: true, currentLevel: this.config.level, requiredLevel: 4 };
|
|
80
|
+
}
|
|
81
|
+
if (this.config.level >= 3) {
|
|
82
|
+
const allowed = this.config.allowedHosts?.includes(host) ?? false;
|
|
83
|
+
return {
|
|
84
|
+
allowed,
|
|
85
|
+
reason: allowed ? undefined : `Host ${host} 不在白名单中`,
|
|
86
|
+
currentLevel: this.config.level,
|
|
87
|
+
requiredLevel: 3,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
allowed: false,
|
|
92
|
+
reason: `Level ${this.config.level} 禁止网络访问`,
|
|
93
|
+
currentLevel: this.config.level,
|
|
94
|
+
requiredLevel: 3,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 检查 shell 命令是否允许
|
|
99
|
+
*/
|
|
100
|
+
checkShellAccess() {
|
|
101
|
+
if (this.config.level >= 3) {
|
|
102
|
+
return { allowed: true, currentLevel: this.config.level, requiredLevel: 3 };
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
allowed: false,
|
|
106
|
+
reason: `Level ${this.config.level} 禁止 shell 访问`,
|
|
107
|
+
currentLevel: this.config.level,
|
|
108
|
+
requiredLevel: 3,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 检查是否需要用户确认
|
|
113
|
+
*/
|
|
114
|
+
needsConfirmation() {
|
|
115
|
+
return this.config.requiresConfirmation ?? false;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 升级到指定级别
|
|
119
|
+
*/
|
|
120
|
+
upgradeTo(level) {
|
|
121
|
+
this.config.level = level;
|
|
122
|
+
if (level === 4) {
|
|
123
|
+
this.config.requiresConfirmation = true;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 获取当前配置
|
|
128
|
+
*/
|
|
129
|
+
getConfig() {
|
|
130
|
+
return { ...this.config };
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.Sandbox = Sandbox;
|
|
134
|
+
//# sourceMappingURL=sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/safety/sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 工具护栏
|
|
3
|
+
*
|
|
4
|
+
* 每次工具调用前检查:
|
|
5
|
+
* - 命令黑名单
|
|
6
|
+
* - Sandbox 级别检查
|
|
7
|
+
* - 速率限制
|
|
8
|
+
*/
|
|
9
|
+
import type { ToolCheckResult, ToolGuardrailConfig, SandboxLevel } from './types';
|
|
10
|
+
import { Sandbox } from './sandbox';
|
|
11
|
+
export declare class ToolGuardrail {
|
|
12
|
+
private blacklistedCommands;
|
|
13
|
+
private rateLimit;
|
|
14
|
+
private toolSandboxLevels;
|
|
15
|
+
private rateLimitState;
|
|
16
|
+
private sandbox;
|
|
17
|
+
constructor(sandbox: Sandbox, config?: ToolGuardrailConfig);
|
|
18
|
+
/**
|
|
19
|
+
* 检查工具调用是否允许
|
|
20
|
+
*/
|
|
21
|
+
check(toolName: string, command?: string): ToolCheckResult;
|
|
22
|
+
/**
|
|
23
|
+
* 检查命令黑名单
|
|
24
|
+
*/
|
|
25
|
+
private checkBlacklist;
|
|
26
|
+
/**
|
|
27
|
+
* 检查 sandbox 级别
|
|
28
|
+
*/
|
|
29
|
+
private checkSandboxLevel;
|
|
30
|
+
/**
|
|
31
|
+
* 检查速率限制
|
|
32
|
+
*/
|
|
33
|
+
private checkRateLimit;
|
|
34
|
+
/**
|
|
35
|
+
* 添加黑名单命令
|
|
36
|
+
*/
|
|
37
|
+
addBlacklistedCommand(command: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* 设置工具 sandbox 级别要求
|
|
40
|
+
*/
|
|
41
|
+
setToolSandboxLevel(toolName: string, level: SandboxLevel): void;
|
|
42
|
+
/**
|
|
43
|
+
* 重置速率限制状态
|
|
44
|
+
*/
|
|
45
|
+
resetRateLimits(): void;
|
|
46
|
+
/**
|
|
47
|
+
* 获取 sandbox 实例
|
|
48
|
+
*/
|
|
49
|
+
getSandbox(): Sandbox;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=tool-guardrail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-guardrail.d.ts","sourceRoot":"","sources":["../../src/safety/tool-guardrail.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,mBAAmB,EAEnB,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,qBAAa,aAAa;IACxB,OAAO,CAAC,mBAAmB,CAAW;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,mBAAmB;IAQ1D;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe;IAoB1D;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IA+BtB;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI;IAIhE;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;OAEG;IACH,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 工具护栏
|
|
4
|
+
*
|
|
5
|
+
* 每次工具调用前检查:
|
|
6
|
+
* - 命令黑名单
|
|
7
|
+
* - Sandbox 级别检查
|
|
8
|
+
* - 速率限制
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ToolGuardrail = void 0;
|
|
12
|
+
const DEFAULT_BLACKLISTED_COMMANDS = [
|
|
13
|
+
'rm -rf /',
|
|
14
|
+
'rm -rf /*',
|
|
15
|
+
'mkfs',
|
|
16
|
+
'dd if=',
|
|
17
|
+
':(){:|:&};:', // fork bomb
|
|
18
|
+
'chmod -R 777 /',
|
|
19
|
+
'| sh',
|
|
20
|
+
'| bash',
|
|
21
|
+
'eval(',
|
|
22
|
+
'exec(',
|
|
23
|
+
];
|
|
24
|
+
const DEFAULT_RATE_LIMIT = 60; // per minute
|
|
25
|
+
class ToolGuardrail {
|
|
26
|
+
blacklistedCommands;
|
|
27
|
+
rateLimit;
|
|
28
|
+
toolSandboxLevels;
|
|
29
|
+
rateLimitState;
|
|
30
|
+
sandbox;
|
|
31
|
+
constructor(sandbox, config) {
|
|
32
|
+
this.sandbox = sandbox;
|
|
33
|
+
this.blacklistedCommands = config?.blacklistedCommands ?? DEFAULT_BLACKLISTED_COMMANDS;
|
|
34
|
+
this.rateLimit = config?.rateLimit ?? DEFAULT_RATE_LIMIT;
|
|
35
|
+
this.toolSandboxLevels = config?.toolSandboxLevels ?? {};
|
|
36
|
+
this.rateLimitState = new Map();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 检查工具调用是否允许
|
|
40
|
+
*/
|
|
41
|
+
check(toolName, command) {
|
|
42
|
+
const violations = [];
|
|
43
|
+
// 命令黑名单检查
|
|
44
|
+
if (command) {
|
|
45
|
+
violations.push(...this.checkBlacklist(toolName, command));
|
|
46
|
+
}
|
|
47
|
+
// Sandbox 级别检查
|
|
48
|
+
violations.push(...this.checkSandboxLevel(toolName));
|
|
49
|
+
// 速率限制检查
|
|
50
|
+
violations.push(...this.checkRateLimit(toolName));
|
|
51
|
+
return {
|
|
52
|
+
allowed: violations.length === 0,
|
|
53
|
+
violations,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 检查命令黑名单
|
|
58
|
+
*/
|
|
59
|
+
checkBlacklist(toolName, command) {
|
|
60
|
+
const violations = [];
|
|
61
|
+
const lower = command.toLowerCase();
|
|
62
|
+
for (const blocked of this.blacklistedCommands) {
|
|
63
|
+
if (lower.includes(blocked.toLowerCase())) {
|
|
64
|
+
violations.push({
|
|
65
|
+
type: 'blacklist',
|
|
66
|
+
severity: 'high',
|
|
67
|
+
description: `命令包含被阻止的模式: ${blocked}`,
|
|
68
|
+
toolName,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return violations;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 检查 sandbox 级别
|
|
76
|
+
*/
|
|
77
|
+
checkSandboxLevel(toolName) {
|
|
78
|
+
const violations = [];
|
|
79
|
+
const requiredLevel = this.toolSandboxLevels[toolName];
|
|
80
|
+
if (requiredLevel !== undefined) {
|
|
81
|
+
const result = this.sandbox.check(requiredLevel);
|
|
82
|
+
if (!result.allowed) {
|
|
83
|
+
violations.push({
|
|
84
|
+
type: 'sandbox',
|
|
85
|
+
severity: 'high',
|
|
86
|
+
description: result.reason ?? `工具 ${toolName} 需要 Level ${requiredLevel}`,
|
|
87
|
+
toolName,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return violations;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 检查速率限制
|
|
95
|
+
*/
|
|
96
|
+
checkRateLimit(toolName) {
|
|
97
|
+
const violations = [];
|
|
98
|
+
const now = Date.now();
|
|
99
|
+
const state = this.rateLimitState.get(toolName);
|
|
100
|
+
if (!state) {
|
|
101
|
+
this.rateLimitState.set(toolName, { count: 1, windowStart: now });
|
|
102
|
+
return violations;
|
|
103
|
+
}
|
|
104
|
+
// 重置窗口(1 分钟)
|
|
105
|
+
if (now - state.windowStart > 60000) {
|
|
106
|
+
state.count = 1;
|
|
107
|
+
state.windowStart = now;
|
|
108
|
+
return violations;
|
|
109
|
+
}
|
|
110
|
+
state.count++;
|
|
111
|
+
if (state.count > this.rateLimit) {
|
|
112
|
+
violations.push({
|
|
113
|
+
type: 'rate_limit',
|
|
114
|
+
severity: 'medium',
|
|
115
|
+
description: `工具 ${toolName} 超过速率限制 (${this.rateLimit}/min)`,
|
|
116
|
+
toolName,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return violations;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 添加黑名单命令
|
|
123
|
+
*/
|
|
124
|
+
addBlacklistedCommand(command) {
|
|
125
|
+
this.blacklistedCommands.push(command);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 设置工具 sandbox 级别要求
|
|
129
|
+
*/
|
|
130
|
+
setToolSandboxLevel(toolName, level) {
|
|
131
|
+
this.toolSandboxLevels[toolName] = level;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* 重置速率限制状态
|
|
135
|
+
*/
|
|
136
|
+
resetRateLimits() {
|
|
137
|
+
this.rateLimitState.clear();
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* 获取 sandbox 实例
|
|
141
|
+
*/
|
|
142
|
+
getSandbox() {
|
|
143
|
+
return this.sandbox;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.ToolGuardrail = ToolGuardrail;
|
|
147
|
+
//# sourceMappingURL=tool-guardrail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-guardrail.js","sourceRoot":"","sources":["../../src/safety/tool-guardrail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safety Guardrails 类型定义
|
|
3
|
+
*/
|
|
4
|
+
/** Sandbox 安全级别 */
|
|
5
|
+
export type SandboxLevel = 1 | 2 | 3 | 4;
|
|
6
|
+
/** Sandbox 配置 */
|
|
7
|
+
export interface SandboxConfig {
|
|
8
|
+
level: SandboxLevel;
|
|
9
|
+
/** 允许写入的目录(Level 2+) */
|
|
10
|
+
writableDirs?: string[];
|
|
11
|
+
/** 允许的网络白名单(Level 3) */
|
|
12
|
+
allowedHosts?: string[];
|
|
13
|
+
/** 需要用户确认的操作(Level 4) */
|
|
14
|
+
requiresConfirmation?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Sandbox 权限检查结果 */
|
|
17
|
+
export interface SandboxCheckResult {
|
|
18
|
+
allowed: boolean;
|
|
19
|
+
reason?: string;
|
|
20
|
+
currentLevel: SandboxLevel;
|
|
21
|
+
requiredLevel: SandboxLevel;
|
|
22
|
+
}
|
|
23
|
+
/** 输入检查结果 */
|
|
24
|
+
export interface InputCheckResult {
|
|
25
|
+
safe: boolean;
|
|
26
|
+
violations: InputViolation[];
|
|
27
|
+
}
|
|
28
|
+
/** 输入违规 */
|
|
29
|
+
export interface InputViolation {
|
|
30
|
+
type: 'injection' | 'intent' | 'permission';
|
|
31
|
+
severity: 'low' | 'medium' | 'high';
|
|
32
|
+
description: string;
|
|
33
|
+
matchedPattern?: string;
|
|
34
|
+
}
|
|
35
|
+
/** 输入护栏配置 */
|
|
36
|
+
export interface InputGuardrailConfig {
|
|
37
|
+
/** 注入检测模式 */
|
|
38
|
+
injectionPatterns?: RegExp[];
|
|
39
|
+
/** 禁止的意图关键词 */
|
|
40
|
+
blockedIntents?: string[];
|
|
41
|
+
/** 最大输入长度 */
|
|
42
|
+
maxInputLength?: number;
|
|
43
|
+
}
|
|
44
|
+
/** 输出检查结果 */
|
|
45
|
+
export interface OutputSafetyCheckResult {
|
|
46
|
+
safe: boolean;
|
|
47
|
+
violations: OutputViolation[];
|
|
48
|
+
sanitizedContent?: string;
|
|
49
|
+
}
|
|
50
|
+
/** 输出违规 */
|
|
51
|
+
export interface OutputViolation {
|
|
52
|
+
type: 'sensitive_info' | 'quality' | 'knowledge_missing';
|
|
53
|
+
severity: 'low' | 'medium' | 'high';
|
|
54
|
+
description: string;
|
|
55
|
+
location?: {
|
|
56
|
+
line: number;
|
|
57
|
+
column: number;
|
|
58
|
+
};
|
|
59
|
+
matchedPattern?: string;
|
|
60
|
+
}
|
|
61
|
+
/** 输出护栏配置 */
|
|
62
|
+
export interface OutputGuardrailConfig {
|
|
63
|
+
/** 敏感信息模式(API keys, passwords, etc.) */
|
|
64
|
+
sensitivePatterns?: RegExp[];
|
|
65
|
+
/** 代码质量最低分数 */
|
|
66
|
+
minQualityScore?: number;
|
|
67
|
+
/** 是否检查知识引用完整性 */
|
|
68
|
+
checkKnowledgeRefs?: boolean;
|
|
69
|
+
}
|
|
70
|
+
/** 工具检查结果 */
|
|
71
|
+
export interface ToolCheckResult {
|
|
72
|
+
allowed: boolean;
|
|
73
|
+
violations: ToolViolation[];
|
|
74
|
+
}
|
|
75
|
+
/** 工具违规 */
|
|
76
|
+
export interface ToolViolation {
|
|
77
|
+
type: 'blacklist' | 'sandbox' | 'rate_limit';
|
|
78
|
+
severity: 'low' | 'medium' | 'high';
|
|
79
|
+
description: string;
|
|
80
|
+
toolName?: string;
|
|
81
|
+
}
|
|
82
|
+
/** 工具护栏配置 */
|
|
83
|
+
export interface ToolGuardrailConfig {
|
|
84
|
+
/** 命令黑名单 */
|
|
85
|
+
blacklistedCommands?: string[];
|
|
86
|
+
/** 每分钟最大调用次数 */
|
|
87
|
+
rateLimit?: number;
|
|
88
|
+
/** 各工具的 sandbox 级别要求 */
|
|
89
|
+
toolSandboxLevels?: Record<string, SandboxLevel>;
|
|
90
|
+
}
|
|
91
|
+
/** 速率限制状态 */
|
|
92
|
+
export interface RateLimitState {
|
|
93
|
+
count: number;
|
|
94
|
+
windowStart: number;
|
|
95
|
+
}
|
|
96
|
+
/** 安全检查汇总 */
|
|
97
|
+
export interface SafetyCheckResult {
|
|
98
|
+
safe: boolean;
|
|
99
|
+
inputCheck: InputCheckResult;
|
|
100
|
+
outputCheck: OutputSafetyCheckResult;
|
|
101
|
+
toolCheck: ToolCheckResult;
|
|
102
|
+
timestamp: string;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/safety/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/safety/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 核心工具定义
|
|
3
|
+
*
|
|
4
|
+
* 内置工具:file / git / npm / shell
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolDefinition } from '../types';
|
|
7
|
+
export declare const FILE_TOOLS: ToolDefinition[];
|
|
8
|
+
export declare const GIT_TOOLS: ToolDefinition[];
|
|
9
|
+
export declare const NPM_TOOLS: ToolDefinition[];
|
|
10
|
+
export declare const SHELL_TOOLS: ToolDefinition[];
|
|
11
|
+
/** 所有核心工具 */
|
|
12
|
+
export declare const CORE_TOOLS: ToolDefinition[];
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/core/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,eAAO,MAAM,UAAU,EAAE,cAAc,EA8DtC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cAAc,EAqDrC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cAAc,EA6CrC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,cAAc,EAkBvC,CAAC;AAEF,aAAa;AACb,eAAO,MAAM,UAAU,EAAE,cAAc,EAKtC,CAAC"}
|