@guava-parity/guard-scanner 13.0.0 → 15.0.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 +42 -253
- package/SECURITY.md +12 -4
- package/SKILL.md +121 -59
- package/dist/openclaw-plugin.mjs +41 -0
- package/docs/EVIDENCE_DRIVEN.md +182 -0
- package/docs/banner.png +0 -0
- package/docs/data/corpus-metrics.json +11 -0
- package/docs/data/latest.json +25837 -2481
- package/docs/generated/npm-audit-20260312.json +96 -0
- package/docs/generated/openclaw-upstream-status.json +25 -0
- package/docs/glossary.md +46 -0
- package/docs/index.html +1085 -496
- package/docs/logo.png +0 -0
- package/docs/openclaw-compatibility-audit.md +44 -0
- package/docs/openclaw-continuous-compatibility-plan.md +36 -0
- package/docs/rules/a2a-contagion.md +68 -0
- package/docs/rules/advanced-exfil.md +52 -0
- package/docs/rules/agent-protocol.md +108 -0
- package/docs/rules/api-abuse.md +68 -0
- package/docs/rules/autonomous-risk.md +92 -0
- package/docs/rules/config-impact.md +132 -0
- package/docs/rules/credential-handling.md +100 -0
- package/docs/rules/cve-patterns.md +332 -0
- package/docs/rules/data-exposure.md +84 -0
- package/docs/rules/exfiltration.md +36 -0
- package/docs/rules/financial-access.md +84 -0
- package/docs/rules/identity-hijack.md +140 -0
- package/docs/rules/inference-manipulation.md +60 -0
- package/docs/rules/leaky-skills.md +52 -0
- package/docs/rules/malicious-code.md +108 -0
- package/docs/rules/mcp-security.md +148 -0
- package/docs/rules/memory-poisoning.md +84 -0
- package/docs/rules/model-poisoning.md +44 -0
- package/docs/rules/obfuscation.md +60 -0
- package/docs/rules/persistence.md +108 -0
- package/docs/rules/pii-exposure.md +116 -0
- package/docs/rules/prompt-injection.md +148 -0
- package/docs/rules/prompt-worm.md +44 -0
- package/docs/rules/safeguard-bypass.md +44 -0
- package/docs/rules/sandbox-escape.md +100 -0
- package/docs/rules/secret-detection.md +44 -0
- package/docs/rules/supply-chain-v2.md +92 -0
- package/docs/rules/suspicious-download.md +60 -0
- package/docs/rules/trust-boundary.md +76 -0
- package/docs/rules/trust-exploitation.md +92 -0
- package/docs/rules/unverifiable-deps.md +84 -0
- package/docs/rules/vdb-injection.md +84 -0
- package/docs/security-vulnerability-report-20260312.md +53 -0
- package/docs/spec/PRD_V2_ARCHITECTURE.md +55 -0
- package/docs/spec/capabilities.json +42 -0
- package/docs/spec/finding.schema.json +104 -0
- package/docs/spec/integration-manifest.md +39 -0
- package/docs/spec/sbom.json +33 -0
- package/docs/threat-model.md +65 -0
- package/docs/v13-architecture-manifest.md +55 -0
- package/hooks/context.js +305 -0
- package/hooks/guard-scanner/plugin.ts +24 -1
- package/openclaw-plugin.mts +91 -0
- package/openclaw.plugin.json +30 -53
- package/package.json +23 -8
- package/src/cli.js +174 -34
- package/src/core/content-loader.js +42 -0
- package/src/core/inventory.js +73 -0
- package/src/core/report-adapters.js +171 -0
- package/src/core/risk-engine.js +93 -0
- package/src/core/rule-registry.js +73 -0
- package/src/core/semantic-validators.js +85 -0
- package/src/finding-schema.js +191 -0
- package/src/hooks/context.ts +49 -0
- package/src/html-template.js +2 -2
- package/src/mcp-server.js +24 -73
- package/src/openclaw-upstream.js +128 -0
- package/src/patterns.js +371 -353
- package/src/policy-engine.js +32 -0
- package/src/runtime-guard.js +40 -2
- package/src/scanner.js +101 -216
- package/src/skill-crawler.js +254 -0
- package/src/threat-model.js +50 -0
- package/src/validation-layer.js +39 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Evidence-Driven Metrics
|
|
2
|
+
|
|
3
|
+
guard-scanner uses a **single source of truth (SSoT)** architecture for all public metrics. This ensures that numbers in README, documentation, and tests are always in sync with the implementation.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
┌─────────────────────────────────────┐
|
|
9
|
+
│ Source Code (patterns.js, etc.) │
|
|
10
|
+
└──────────────┬──────────────────────┘
|
|
11
|
+
│
|
|
12
|
+
▼
|
|
13
|
+
┌─────────────────────────────────────┐
|
|
14
|
+
│ generate-capabilities.js │
|
|
15
|
+
│ Generates: docs/spec/capabilities.json
|
|
16
|
+
└──────────────┬──────────────────────┘
|
|
17
|
+
│
|
|
18
|
+
▼
|
|
19
|
+
┌─────────────────────────────────────┐
|
|
20
|
+
│ capabilities.json (SSoT) │
|
|
21
|
+
│ - static_pattern_count: 352 │
|
|
22
|
+
│ - threat_category_count: 32 │
|
|
23
|
+
│ - runtime_check_count: 26 │
|
|
24
|
+
│ - mcp_tools: [...] │
|
|
25
|
+
└──────┬───────────────────────┬──────┘
|
|
26
|
+
│ │
|
|
27
|
+
▼ ▼
|
|
28
|
+
┌──────────────┐ ┌────────────────┐
|
|
29
|
+
│ generate- │ │ verify- │
|
|
30
|
+
│ readme- │ │ capabilities.js│
|
|
31
|
+
│ metrics.js │ │ (CI check) │
|
|
32
|
+
└──────┬───────┘ └────────────────┘
|
|
33
|
+
│
|
|
34
|
+
▼
|
|
35
|
+
┌─────────────────────────────────────┐
|
|
36
|
+
│ README.md │
|
|
37
|
+
│ (Auto-updated metrics) │
|
|
38
|
+
└─────────────────────────────────────┘
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Scripts
|
|
42
|
+
|
|
43
|
+
### 1. `generate-capabilities.js`
|
|
44
|
+
|
|
45
|
+
**Purpose:** Generate `docs/spec/capabilities.json` from source code.
|
|
46
|
+
|
|
47
|
+
**Runs:**
|
|
48
|
+
- Counts patterns from `src/patterns.js`
|
|
49
|
+
- Counts runtime checks from `src/runtime-guard.js`
|
|
50
|
+
- Lists MCP tools from `src/mcp-server.js`
|
|
51
|
+
- Reads versions from `package.json` and `openclaw.plugin.json`
|
|
52
|
+
|
|
53
|
+
**Usage:**
|
|
54
|
+
```bash
|
|
55
|
+
node scripts/generate-capabilities.js
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Output:** `docs/spec/capabilities.json`
|
|
59
|
+
|
|
60
|
+
### 2. `generate-readme-metrics.js`
|
|
61
|
+
|
|
62
|
+
**Purpose:** Inject metrics from `capabilities.json` into `README.md`.
|
|
63
|
+
|
|
64
|
+
**Updates:**
|
|
65
|
+
- Header metrics line (categories, patterns, checks)
|
|
66
|
+
- Dependency badge
|
|
67
|
+
- Capability table entries
|
|
68
|
+
- MCP tool descriptions
|
|
69
|
+
|
|
70
|
+
**Usage:**
|
|
71
|
+
```bash
|
|
72
|
+
# Update README
|
|
73
|
+
node scripts/generate-readme-metrics.js
|
|
74
|
+
|
|
75
|
+
# CI mode: fail if drift detected
|
|
76
|
+
node scripts/generate-readme-metrics.js --check
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 3. `generate-readme-stats.js`
|
|
80
|
+
|
|
81
|
+
**Purpose:** Inject test counts from `npm test` output into README.
|
|
82
|
+
|
|
83
|
+
**Updates:**
|
|
84
|
+
- Test badge: `tests-336%20passed`
|
|
85
|
+
- Test results block
|
|
86
|
+
|
|
87
|
+
**Usage:**
|
|
88
|
+
```bash
|
|
89
|
+
# Update README
|
|
90
|
+
node scripts/generate-readme-stats.js
|
|
91
|
+
|
|
92
|
+
# CI mode: fail if drift detected
|
|
93
|
+
node scripts/generate-readme-stats.js --check
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 4. `verify-capabilities.js`
|
|
97
|
+
|
|
98
|
+
**Purpose:** Verify all documentation matches `capabilities.json`.
|
|
99
|
+
|
|
100
|
+
**Checks:**
|
|
101
|
+
- README.md metrics
|
|
102
|
+
- README_ja.md metrics
|
|
103
|
+
- SKILL.md metrics
|
|
104
|
+
- package.json version
|
|
105
|
+
- openclaw.plugin.json version
|
|
106
|
+
- Test file count
|
|
107
|
+
|
|
108
|
+
**Usage:**
|
|
109
|
+
```bash
|
|
110
|
+
node scripts/verify-capabilities.js
|
|
111
|
+
# Exits 1 if any drift detected
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## CI Integration
|
|
115
|
+
|
|
116
|
+
The CI workflow enforces zero-tolerance for drift:
|
|
117
|
+
|
|
118
|
+
```yaml
|
|
119
|
+
# .github/workflows/ci.yml
|
|
120
|
+
- name: Generate capabilities manifest
|
|
121
|
+
run: node scripts/generate-capabilities.js
|
|
122
|
+
|
|
123
|
+
- name: Check README metrics drift
|
|
124
|
+
run: |
|
|
125
|
+
node scripts/generate-readme-metrics.js --check
|
|
126
|
+
node scripts/generate-readme-stats.js --check
|
|
127
|
+
|
|
128
|
+
- name: Verify all capability claims
|
|
129
|
+
run: node scripts/verify-capabilities.js
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Local Development
|
|
133
|
+
|
|
134
|
+
**Sync all README metrics:**
|
|
135
|
+
```bash
|
|
136
|
+
npm run sync:readme
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
This runs:
|
|
140
|
+
1. `generate-capabilities.js` (update SSoT)
|
|
141
|
+
2. `generate-readme-metrics.js` (update metrics)
|
|
142
|
+
3. `generate-readme-stats.js` (update test counts)
|
|
143
|
+
|
|
144
|
+
## Adding New Metrics
|
|
145
|
+
|
|
146
|
+
1. **Add to source code:** Update `patterns.js`, `runtime-guard.js`, etc.
|
|
147
|
+
2. **Update generator:** Edit `generate-capabilities.js` to extract new metric
|
|
148
|
+
3. **Update README generator:** Edit `generate-readme-metrics.js` to inject into README
|
|
149
|
+
4. **Update verifier:** Edit `verify-capabilities.js` to check for drift
|
|
150
|
+
5. **Run sync:** `npm run sync:readme`
|
|
151
|
+
6. **Commit changes:** Include updated `capabilities.json` and `README.md`
|
|
152
|
+
|
|
153
|
+
## Philosophy
|
|
154
|
+
|
|
155
|
+
**Why evidence-driven?**
|
|
156
|
+
|
|
157
|
+
- **Trust:** Users can verify claims match implementation
|
|
158
|
+
- **Marketing-first avoidance:** Numbers come from code, not marketing
|
|
159
|
+
- **Drift prevention:** CI blocks PRs with mismatched numbers
|
|
160
|
+
- **Single source of truth:** One canonical source (`capabilities.json`)
|
|
161
|
+
- **Audit trail:** All changes go through generators
|
|
162
|
+
|
|
163
|
+
**Zero tolerance for hardcoded numbers in public docs.**
|
|
164
|
+
|
|
165
|
+
## MCP Integration
|
|
166
|
+
|
|
167
|
+
The `get_stats` MCP tool reads from `capabilities.json`:
|
|
168
|
+
|
|
169
|
+
```javascript
|
|
170
|
+
function handleGetStats() {
|
|
171
|
+
const runtimeStats = getCheckStats();
|
|
172
|
+
return successResult(
|
|
173
|
+
`🛡️ guard-scanner v${VERSION}\n\n` +
|
|
174
|
+
`Static Analysis:\n` +
|
|
175
|
+
` • ${STATIC_SUMMARY}\n` + // from capabilities.json
|
|
176
|
+
` • ${runtimeStats.total} checks across ${Object.keys(runtimeStats.byLayer).length} layers\n` +
|
|
177
|
+
// ...
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
This ensures MCP clients always get accurate, up-to-date metrics.
|
package/docs/banner.png
CHANGED
|
Binary file
|