guard-scanner 2.0.0 β 3.1.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 +107 -64
- package/dist/__tests__/scanner.test.d.ts +10 -0
- package/dist/__tests__/scanner.test.d.ts.map +1 -0
- package/dist/__tests__/scanner.test.js +374 -0
- package/dist/__tests__/scanner.test.js.map +1 -0
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +189 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/ioc-db.d.ts +13 -0
- package/dist/ioc-db.d.ts.map +1 -0
- package/dist/ioc-db.js +130 -0
- package/dist/ioc-db.js.map +1 -0
- package/dist/patterns.d.ts +27 -0
- package/dist/patterns.d.ts.map +1 -0
- package/dist/patterns.js +92 -0
- package/dist/patterns.js.map +1 -0
- package/dist/quarantine.d.ts +18 -0
- package/dist/quarantine.d.ts.map +1 -0
- package/dist/quarantine.js +42 -0
- package/dist/quarantine.js.map +1 -0
- package/dist/scanner.d.ts +54 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +1043 -0
- package/dist/scanner.js.map +1 -0
- package/dist/types.d.ts +165 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/hooks/guard-scanner/plugin.ts +101 -32
- package/openclaw.plugin.json +60 -0
- package/package.json +25 -9
- package/ts-src/__tests__/fixtures/clean-skill/SKILL.md +9 -0
- package/ts-src/__tests__/fixtures/compaction-skill/SKILL.md +11 -0
- package/ts-src/__tests__/fixtures/malicious-skill/SKILL.md +11 -0
- package/ts-src/__tests__/fixtures/malicious-skill/scripts/evil.js +25 -0
- package/ts-src/__tests__/fixtures/prompt-leakage-skill/SKILL.md +20 -0
- package/ts-src/__tests__/fixtures/prompt-leakage-skill/scripts/debug.js +4 -0
- package/ts-src/__tests__/scanner.test.ts +525 -0
- package/ts-src/cli.ts +171 -0
- package/ts-src/index.ts +15 -0
- package/ts-src/ioc-db.ts +131 -0
- package/ts-src/patterns.ts +104 -0
- package/ts-src/quarantine.ts +48 -0
- package/{src/scanner.js β ts-src/scanner.ts} +376 -383
- package/ts-src/types.ts +187 -0
- package/hooks/guard-scanner/handler.ts +0 -207
- package/src/cli.js +0 -149
- package/src/html-template.js +0 -239
- package/src/ioc-db.js +0 -54
- package/src/patterns.js +0 -190
package/README.md
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<h1 align="center">π‘οΈ guard-scanner</h1>
|
|
3
3
|
<p align="center">
|
|
4
|
-
<strong>
|
|
5
|
-
|
|
6
|
-
<sub>π
|
|
4
|
+
<strong>Security scanner + runtime guard for AI agent skills</strong><br>
|
|
5
|
+
19 runtime threat patterns β’ 190+ static patterns β’ 21 categories β’ OpenClaw-compatible plugin<br>
|
|
6
|
+
<sub>π v3.1.0 β OpenClaw Community Plugin + 3-Layer Runtime Defense (Threat / EAE Paradox / Parity Judge)</sub>
|
|
7
7
|
</p>
|
|
8
8
|
<p align="center">
|
|
9
9
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License"></a>
|
|
10
|
+
<img src="https://img.shields.io/badge/OpenClaw-compatible-4A90D9" alt="OpenClaw Compatible">
|
|
10
11
|
<img src="https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen" alt="Node.js 18+">
|
|
11
12
|
<img src="https://img.shields.io/badge/dependencies-0-success" alt="Zero Dependencies">
|
|
12
|
-
<img src="https://img.shields.io/badge/tests-
|
|
13
|
-
<img src="https://img.shields.io/badge/
|
|
14
|
-
<img src="https://img.shields.io/badge/categories-
|
|
13
|
+
<img src="https://img.shields.io/badge/tests-87%2F87-brightgreen" alt="Tests Passing">
|
|
14
|
+
<img src="https://img.shields.io/badge/runtime_patterns-19-red" alt="19 Runtime Patterns">
|
|
15
|
+
<img src="https://img.shields.io/badge/categories-21-blueviolet" alt="21 Categories">
|
|
15
16
|
</p>
|
|
16
17
|
</p>
|
|
17
18
|
|
|
@@ -40,8 +41,8 @@ The AI agent skill ecosystem has the same supply-chain security problem that npm
|
|
|
40
41
|
|
|
41
42
|
| Feature | Description |
|
|
42
43
|
|---|---|
|
|
43
|
-
| **
|
|
44
|
-
| **
|
|
44
|
+
| **21 Threat Categories** | Snyk ToxicSkills + OWASP MCP Top 10 + Identity Hijacking + Sandbox/Complexity/Config + PII |
|
|
45
|
+
| **129 Detection Patterns** | Regex-based static analysis covering code, docs, and data files |
|
|
45
46
|
| **IoC Database** | Known malicious IPs, domains, URLs, usernames, and typosquat names |
|
|
46
47
|
| **Data Flow Analysis** | Lightweight JS analysis: secret reads β network calls β exec chains |
|
|
47
48
|
| **Cross-File Analysis** | Phantom references, base64 fragment assembly, multi-file exfil detection |
|
|
@@ -74,42 +75,44 @@ npx guard-scanner ./skills/ --strict
|
|
|
74
75
|
npx guard-scanner ./skills/ --verbose --check-deps --json --sarif --html
|
|
75
76
|
```
|
|
76
77
|
|
|
77
|
-
## OpenClaw
|
|
78
|
+
## OpenClaw Plugin Setup (v3.1.0)
|
|
78
79
|
|
|
79
80
|
```bash
|
|
80
|
-
#
|
|
81
|
-
|
|
81
|
+
# Install as OpenClaw plugin
|
|
82
|
+
openclaw plugins install guard-scanner
|
|
82
83
|
|
|
83
|
-
#
|
|
84
|
-
|
|
84
|
+
# Or manual install:
|
|
85
|
+
npm install -g guard-scanner
|
|
85
86
|
```
|
|
86
87
|
|
|
87
|
-
|
|
88
|
+
### What happens after install:
|
|
88
89
|
|
|
89
|
-
|
|
90
|
+
1. **Static scanning** β `npx guard-scanner [dir]` scans skills before installation
|
|
91
|
+
2. **Runtime guard** β `before_tool_call` hook automatically blocks dangerous operations
|
|
92
|
+
3. **3 enforcement modes** β `monitor` (log only), `enforce` (block CRITICAL), `strict` (block HIGH+CRITICAL)
|
|
90
93
|
|
|
91
|
-
|
|
92
|
-
# Global install
|
|
93
|
-
npm install -g guard-scanner
|
|
94
|
+
### 3-Layer Runtime Defense (19 patterns)
|
|
94
95
|
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
```
|
|
97
|
+
Layer 1: Threat Detection β 12 patterns (shells, exfil, SSRF, AMOS, etc.)
|
|
98
|
+
Layer 2: EAE Paradox Defense β 4 patterns (memory/SOUL/config tampering)
|
|
99
|
+
Layer 3: Parity Judge β 3 patterns (injection, parity bypass, shutdown refusal)
|
|
97
100
|
```
|
|
98
101
|
|
|
99
|
-
|
|
102
|
+
> **v3.1.0** β Full `openclaw.plugin.json` manifest with `configSchema` validation. The legacy `handler.ts` has been removed; `plugin.ts` is now the only runtime guard.
|
|
103
|
+
|
|
104
|
+
### Quick Start
|
|
100
105
|
|
|
101
106
|
```bash
|
|
102
|
-
|
|
103
|
-
guard-scanner ~/.openclaw/workspace/skills
|
|
107
|
+
# Pre-install / pre-update static gate
|
|
108
|
+
npx guard-scanner ~/.openclaw/workspace/skills --self-exclude --verbose
|
|
104
109
|
```
|
|
105
110
|
|
|
106
|
-
> **π Plugin Hook version** (`plugin.ts`) uses the `before_tool_call` Plugin Hook API with `block`/`blockReason` β **detections are actually blocked**. The legacy Internal Hook version (`handler.ts`) is still available for backward compatibility but can only warn.
|
|
107
|
-
|
|
108
111
|
---
|
|
109
112
|
|
|
110
113
|
## Threat Categories
|
|
111
114
|
|
|
112
|
-
guard-scanner covers **
|
|
115
|
+
guard-scanner covers **21 threat categories** derived from four sources:
|
|
113
116
|
|
|
114
117
|
| # | Category | Based On | Severity | What It Detects |
|
|
115
118
|
|---|----------|----------|----------|----------------|
|
|
@@ -133,8 +136,9 @@ guard-scanner covers **20 threat categories** derived from four sources:
|
|
|
133
136
|
| 18 | **Sandbox Validation** | v1.1 | HIGH | Dangerous binary requirements in SKILL.md, overly broad file scope, sensitive env vars, exec/network declarations |
|
|
134
137
|
| 19 | **Code Complexity** | v1.1 | MEDIUM | Excessive file length (>1000 lines), deep nesting (>5 levels), high eval/exec density |
|
|
135
138
|
| 20 | **Config Impact** | v1.1 | CRITICAL | `openclaw.json` writes, exec approval bypass, exec host gateway, internal hooks modification, network wildcard |
|
|
139
|
+
| 21 | **PII Exposure** | v2.1 | CRITICAL | Hardcoded CC/SSN/phone/email (context-aware), PII logging/network send/plaintext store, Shadow AI (OpenAI/Anthropic/generic LLM), PII collection instructions (address/DOB/government ID) |
|
|
136
140
|
|
|
137
|
-
> **Categories 17β
|
|
141
|
+
> **Categories 17β21** are unique to guard-scanner. Category 17 (Identity Hijacking) was developed from a real attack. Categories 18β20 added in v1.1.0. Category 21 (PII Exposure) added in v2.1.0 covering OWASP LLM02/LLM06.
|
|
138
142
|
|
|
139
143
|
---
|
|
140
144
|
|
|
@@ -143,7 +147,7 @@ guard-scanner covers **20 threat categories** derived from four sources:
|
|
|
143
147
|
### Terminal (Default)
|
|
144
148
|
|
|
145
149
|
```
|
|
146
|
-
π‘οΈ guard-scanner
|
|
150
|
+
π‘οΈ guard-scanner v2.1.0
|
|
147
151
|
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
148
152
|
π Scanning: ./skills/
|
|
149
153
|
π¦ Skills found: 22
|
|
@@ -228,6 +232,9 @@ Certain combinations multiply the base score:
|
|
|
228
232
|
| Config impact | **Γ2** | OpenClaw configuration tampering |
|
|
229
233
|
| Config impact + Sandbox violation | **min 70** | Combined config + capability abuse |
|
|
230
234
|
| Complexity + Malicious code/Obfuscation | **Γ1.5** | Complex code hiding threats |
|
|
235
|
+
| PII exposure + Exfiltration | **Γ3** | PII being sent to external servers |
|
|
236
|
+
| PII exposure + Shadow AI | **Γ2.5** | PII leak through unauthorized LLM |
|
|
237
|
+
| PII exposure + Credential handling | **Γ2** | Combined PII + credential risk |
|
|
231
238
|
| Known IoC (IP/URL/typosquat) | **= 100** | Confirmed malicious |
|
|
232
239
|
|
|
233
240
|
### Verdict Thresholds
|
|
@@ -400,20 +407,20 @@ Options:
|
|
|
400
407
|
```
|
|
401
408
|
guard-scanner/
|
|
402
409
|
βββ src/
|
|
403
|
-
β βββ scanner.js # GuardScanner class β core scan engine (
|
|
404
|
-
β βββ patterns.js #
|
|
410
|
+
β βββ scanner.js # GuardScanner class β core scan engine (21 checks)
|
|
411
|
+
β βββ patterns.js # 129 threat detection patterns (Cat 1β21)
|
|
405
412
|
β βββ ioc-db.js # Indicators of Compromise database
|
|
406
413
|
β βββ cli.js # CLI entry point and argument parser
|
|
407
414
|
βββ hooks/
|
|
408
415
|
β βββ guard-scanner/
|
|
409
|
-
β βββ plugin.ts #
|
|
410
|
-
β
|
|
411
|
-
|
|
416
|
+
β βββ plugin.ts # Plugin Hook v3.1 β 19 patterns, 3 layers, block/blockReason
|
|
417
|
+
β βββ HOOK.md # Hook manifest
|
|
418
|
+
βββ openclaw.plugin.json # OpenClaw plugin manifest (configSchema, hooks)
|
|
412
419
|
βββ test/
|
|
413
|
-
β βββ scanner.test.js #
|
|
414
|
-
β βββ plugin.test.js #
|
|
415
|
-
β βββ fixtures/ # Malicious, clean, complex, config-changer samples
|
|
416
|
-
βββ package.json # Zero dependencies,
|
|
420
|
+
β βββ scanner.test.js # 64 tests β static scanner (incl. PII v2.1)
|
|
421
|
+
β βββ plugin.test.js # 23 tests β Plugin Hook runtime guard (3 layers)
|
|
422
|
+
β βββ fixtures/ # Malicious, clean, complex, config-changer, pii-leaky samples
|
|
423
|
+
βββ package.json # Zero dependencies, openclaw.extensions
|
|
417
424
|
βββ CHANGELOG.md
|
|
418
425
|
βββ LICENSE # MIT
|
|
419
426
|
βββ README.md
|
|
@@ -536,11 +543,11 @@ console.log(scanner.toHTML()); // HTML string
|
|
|
536
543
|
## Test Results
|
|
537
544
|
|
|
538
545
|
```
|
|
539
|
-
βΉ tests
|
|
540
|
-
βΉ suites
|
|
541
|
-
βΉ pass
|
|
546
|
+
βΉ tests 87
|
|
547
|
+
βΉ suites 20
|
|
548
|
+
βΉ pass 87
|
|
542
549
|
βΉ fail 0
|
|
543
|
-
βΉ duration_ms
|
|
550
|
+
βΉ duration_ms 111ms
|
|
544
551
|
```
|
|
545
552
|
|
|
546
553
|
| Suite | Tests | Coverage |
|
|
@@ -550,14 +557,34 @@ console.log(scanner.toHTML()); // HTML string
|
|
|
550
557
|
| Risk Score Calculation | 5 | Empty, single, combo amplifiers, IoC override |
|
|
551
558
|
| Verdict Determination | 5 | All verdicts + strict mode |
|
|
552
559
|
| Output Formats | 4 | JSON + SARIF 2.1.0 + HTML structure |
|
|
553
|
-
| Pattern Database | 4 |
|
|
560
|
+
| Pattern Database | 4 | 125+ count, required fields, category coverage, regex safety |
|
|
554
561
|
| IoC Database | 5 | Structure, ClawHavoc C2, webhook.site |
|
|
555
562
|
| Shannon Entropy | 2 | Low entropy, high entropy |
|
|
556
563
|
| Ignore Functionality | 1 | Pattern exclusion |
|
|
557
564
|
| Plugin API | 1 | Plugin loading + custom rule injection |
|
|
558
|
-
|
|
|
559
|
-
|
|
|
560
|
-
|
|
|
565
|
+
| Manifest Validation | 4 | Dangerous bins, broad files, sensitive env, clean negatives |
|
|
566
|
+
| Complexity Metrics | 2 | Deep nesting, clean negatives |
|
|
567
|
+
| Config Impact | 4 | openclaw.json write, exec approval, gateway host, clean negatives |
|
|
568
|
+
| **π PII Exposure Detection** | **8** | **Hardcoded CC/SSN, PII logging, network send, Shadow AI, doc collection, risk amp, clean negatives** |
|
|
569
|
+
| **Plugin Hook Runtime Guard** | **35** | **Blocking in enforce/strict, passthrough in monitor, all 12 threat patterns, blockReason format** |
|
|
570
|
+
|
|
571
|
+
---
|
|
572
|
+
|
|
573
|
+
## Fills OpenClaw's Own Security Gaps
|
|
574
|
+
|
|
575
|
+
OpenClaw's official [`THREAT-MODEL-ATLAS.md`](https://github.com/openclaw/openclaw/blob/main/docs/security/THREAT-MODEL-ATLAS.md) identifies security gaps that guard-scanner directly addresses:
|
|
576
|
+
|
|
577
|
+
| Gap (from ATLAS / Source Code) | OpenClaw Status | guard-scanner |
|
|
578
|
+
|---|---|---|
|
|
579
|
+
| _"Simple regex easily bypassed"_ β ClawHub moderation | β οΈ Basic `FLAG_RULES` | β
129 patterns, 21 categories |
|
|
580
|
+
| _"Does not analyze actual skill code content"_ | β Not implemented | β
Full code + doc + data flow analysis |
|
|
581
|
+
| No SOUL.md / IDENTITY.md integrity verification | β Not implemented | β
Identity hijacking detection (Cat 17) |
|
|
582
|
+
| `skill:before_install` hook | β Not implemented | π Proposed ([Issue #18677](https://github.com/openclaw/openclaw/issues/18677)) |
|
|
583
|
+
| `before_tool_call` blocking reference impl | β No official plugin | β
First reference implementation (plugin.ts) |
|
|
584
|
+
| SARIF / CI integration for skill security | β Not available | β
SARIF 2.1.0 + GitHub Actions |
|
|
585
|
+
| Behavioral analysis beyond VirusTotal | β³ In progress | β
LLM-specific threat patterns (prompt injection, memory poisoning, MCP attacks) |
|
|
586
|
+
|
|
587
|
+
> guard-scanner is **complementary** to OpenClaw's built-in security β not a replacement. OpenClaw handles infrastructure security (SSRF blocking, exec approvals, sandbox, auth). guard-scanner handles **AI-specific threats** that traditional scanning misses.
|
|
561
588
|
|
|
562
589
|
---
|
|
563
590
|
|
|
@@ -578,19 +605,19 @@ guard-scanner's coverage of the [OWASP Top 10 for LLM Applications (2025)](https
|
|
|
578
605
|
| # | Risk | Status | Detection Method |
|
|
579
606
|
|---|------|--------|------------------|
|
|
580
607
|
| LLM01 | Prompt Injection | β οΈ Partial | Regex: Unicode exploits, role override, system tags, base64 instructions |
|
|
581
|
-
| LLM02 |
|
|
608
|
+
| LLM02 | Sensitive Information Disclosure | β οΈ Partial | PII Exposure Detection (v2.1): hardcoded PII, PII logging/network/storage, Shadow AI, PII collection instructions |
|
|
582
609
|
| LLM03 | Training Data Poisoning | β¬ N/A | Out of scope for static analysis |
|
|
583
|
-
| LLM04 | Model Denial of Service | π
|
|
610
|
+
| LLM04 | Model Denial of Service | π v2.2 | Planned: excessive input / infinite loop patterns |
|
|
584
611
|
| LLM05 | Supply Chain Vulnerabilities | β οΈ Partial | IoC database, typosquat detection, dependency chain scan |
|
|
585
|
-
| LLM06 |
|
|
612
|
+
| LLM06 | Insecure Output Handling | β οΈ Partial | PII output detection (console.log, network send, plaintext store) |
|
|
586
613
|
| LLM07 | Insecure Plugin Design | π v1.3 | Planned: unvalidated plugin input patterns |
|
|
587
614
|
| LLM08 | Excessive Agency | π v1.3 | Planned: over-permissioned scope detection |
|
|
588
615
|
| LLM09 | Overreliance | π v1.3 | Planned: unverified output trust patterns |
|
|
589
616
|
| LLM10 | Model Theft | π v1.3 | Planned: model file exfiltration patterns |
|
|
590
617
|
|
|
591
|
-
> **Current coverage:
|
|
618
|
+
> **Current coverage: 5/10 (partial).** LLM02 and LLM06 added in v2.1.0. Full coverage targeted for v3.0. See [ROADMAP.md](ROADMAP.md) for details.
|
|
592
619
|
>
|
|
593
|
-
> **Known limitation:** Regex-based detection can be evaded by AI-generated code obfuscation.
|
|
620
|
+
> **Known limitation:** Regex-based detection can be evaded by AI-generated code obfuscation. v3.0 will introduce AST analysis and ML-based detection to address this structural gap.
|
|
594
621
|
|
|
595
622
|
---
|
|
596
623
|
|
|
@@ -600,7 +627,7 @@ guard-scanner's coverage of the [OWASP Top 10 for LLM Applications (2025)](https
|
|
|
600
627
|
2. Create a feature branch (`git checkout -b feature/new-pattern`)
|
|
601
628
|
3. Add your pattern to `src/patterns.js` with the required fields
|
|
602
629
|
4. Add a test case in `test/fixtures/` and `test/scanner.test.js`
|
|
603
|
-
5. Run `npm test` β all
|
|
630
|
+
5. Run `npm test` β all 99+ tests must pass
|
|
604
631
|
6. Submit a Pull Request
|
|
605
632
|
|
|
606
633
|
### Adding a New Detection Pattern
|
|
@@ -639,19 +666,34 @@ We built one.
|
|
|
639
666
|
|
|
640
667
|
## π Need More? β GuavaSuite
|
|
641
668
|
|
|
642
|
-
guard-scanner catches threats **before** installation
|
|
669
|
+
guard-scanner catches threats **before** installation and **blocks** CRITICAL threats at runtime. **GuavaSuite** unlocks **strict mode** β blocking HIGH + CRITICAL threats, plus exclusive defense-in-depth features.
|
|
670
|
+
|
|
671
|
+
### How to Upgrade
|
|
672
|
+
|
|
673
|
+
```bash
|
|
674
|
+
# 1. Install GuavaSuite
|
|
675
|
+
clawhub install guava-suite
|
|
676
|
+
|
|
677
|
+
# 2. Hold 1M+ $GUAVA on Polygon
|
|
678
|
+
# Token: 0x25cBD481901990bF0ed2ff9c5F3C0d4f743AC7B8
|
|
679
|
+
# Buy on QuickSwap V2: https://quickswap.exchange
|
|
680
|
+
|
|
681
|
+
# 3. Activate with your wallet β get JWT β strict mode enabled
|
|
682
|
+
```
|
|
643
683
|
|
|
644
|
-
|
|
684
|
+
### Feature Comparison
|
|
645
685
|
|
|
646
|
-
| | guard-scanner (
|
|
686
|
+
| | guard-scanner (Free) | GuavaSuite ($GUAVA) |
|
|
647
687
|
|---|---|---|
|
|
648
|
-
| Static scan
|
|
649
|
-
| Runtime
|
|
650
|
-
|
|
|
651
|
-
|
|
|
652
|
-
|
|
|
688
|
+
| Static scan (129 patterns, 21 categories) | β
| β
|
|
|
689
|
+
| Runtime Guard β `enforce` (block CRITICAL) | β
| β
|
|
|
690
|
+
| **Runtime Guard β `strict` (block HIGH + CRITICAL)** | β | β
|
|
|
691
|
+
| **Soul Lock** (SOUL.md integrity + auto-rollback) | β | β
|
|
|
692
|
+
| **Memory Guard** (L1-L5 θ¨ζΆδΏθ·) | β | β
|
|
|
693
|
+
| **On-chain Identity** (SoulRegistry V2 on Polygon) | β | β
|
|
|
694
|
+
| Audit Log (JSONL) | β
| β
|
|
|
653
695
|
|
|
654
|
-
guard-scanner is and always will be **free, open-source, and zero-dependency**.
|
|
696
|
+
guard-scanner is and always will be **free, open-source, and zero-dependency**.
|
|
655
697
|
|
|
656
698
|
---
|
|
657
699
|
|
|
@@ -660,10 +702,11 @@ guard-scanner is and always will be **free, open-source, and zero-dependency**.
|
|
|
660
702
|
| Version | Focus | Key Features |
|
|
661
703
|
|---------|-------|------|
|
|
662
704
|
| v1.1.1 β
| Stability | 56 tests, bug fixes |
|
|
663
|
-
|
|
|
664
|
-
|
|
|
665
|
-
|
|
|
666
|
-
|
|
|
705
|
+
| v2.0.0 β
| **Plugin Hook Runtime Guard** | `block`/`blockReason` API, 3 modes, 91 tests |
|
|
706
|
+
| v2.1.0 β
| **PII Exposure + Shadow AI** | 13 PII patterns, OWASP LLM02/06, 99 tests |
|
|
707
|
+
| v3.0.0 β
| **TypeScript Rewrite** | Full TS, OWASP LLM Top 10 mapping, install-check CLI |
|
|
708
|
+
| v3.1.0 β
| **OpenClaw Community Plugin** | `openclaw.plugin.json`, 19 runtime patterns (3 layers), 87 tests |
|
|
709
|
+
| v4.0 | AST + ML | JavaScript AST analysis, taint tracking, ML-based obfuscation detection |
|
|
667
710
|
|
|
668
711
|
See [ROADMAP.md](ROADMAP.md) for full details.
|
|
669
712
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* guard-scanner v3.0.0 β Test Suite
|
|
3
|
+
*
|
|
4
|
+
* Guava Standard v5 Β§4: T-Wada / Red-Green-Refactor
|
|
5
|
+
* Phase 1: RED β All tests written BEFORE implementation changes.
|
|
6
|
+
*
|
|
7
|
+
* Run: node --test dist/__tests__/scanner.test.js
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=scanner.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.test.d.ts","sourceRoot":"","sources":["../../ts-src/__tests__/scanner.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|