@sandrobuilds/tracerney 0.9.33 → 0.10.1
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 +66 -119
- package/dist/application/ShieldApplicationService.d.ts +4 -3
- package/dist/application/ShieldApplicationService.d.ts.map +1 -1
- package/dist/application/ShieldApplicationService.js +16 -19
- package/dist/application/ShieldApplicationService.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/patterns/BundledPatternRepository.d.ts +18 -2
- package/dist/infrastructure/patterns/BundledPatternRepository.d.ts.map +1 -1
- package/dist/infrastructure/patterns/BundledPatternRepository.js +24 -3
- package/dist/infrastructure/patterns/BundledPatternRepository.js.map +1 -1
- package/dist/infrastructure/patterns/bundled-patterns.d.ts +1 -1
- package/dist/infrastructure/patterns/bundled-patterns.d.ts.map +1 -1
- package/dist/infrastructure/patterns/bundled-patterns.js +74 -1
- package/dist/infrastructure/patterns/bundled-patterns.js.map +1 -1
- package/dist/infrastructure/patterns/index.d.ts +2 -0
- package/dist/infrastructure/patterns/index.d.ts.map +1 -1
- package/dist/infrastructure/patterns/index.js +1 -0
- package/dist/infrastructure/patterns/index.js.map +1 -1
- package/dist/infrastructure/patterns/pro-patterns.d.ts +8 -0
- package/dist/infrastructure/patterns/pro-patterns.d.ts.map +1 -0
- package/dist/infrastructure/patterns/pro-patterns.js +5419 -0
- package/dist/infrastructure/patterns/pro-patterns.js.map +1 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -15,9 +15,9 @@ npm install @sandrobuilds/tracerney
|
|
|
15
15
|
```typescript
|
|
16
16
|
import { Tracerney } from '@sandrobuilds/tracerney';
|
|
17
17
|
|
|
18
|
-
const
|
|
18
|
+
const shield = new Tracerney();
|
|
19
19
|
|
|
20
|
-
const result = await
|
|
20
|
+
const result = await shield.scanPrompt(userInput);
|
|
21
21
|
|
|
22
22
|
if (result.suspicious) {
|
|
23
23
|
console.log('⚠️ Suspicious:', result.patternName);
|
|
@@ -27,10 +27,13 @@ if (result.suspicious) {
|
|
|
27
27
|
|
|
28
28
|
## What's Included
|
|
29
29
|
|
|
30
|
-
- **
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
- **
|
|
30
|
+
- **933 attack patterns** — comprehensive prompt injection and jailbreak detection
|
|
31
|
+
- 259 core forensic patterns (system overrides, prompt leaks, code execution, etc.)
|
|
32
|
+
- 675 real-world variants from Garak security research
|
|
33
|
+
- **Local detection** — <0.021ms latency per prompt, zero network overhead
|
|
34
|
+
- **Zero dependencies** — single npm package, 100% local processing
|
|
35
|
+
- **Privacy-first** — no data leaves your server, zero data storage
|
|
36
|
+
- **Egress & PII scanning** — detects API keys, secrets, emails, and data exfiltration attempts
|
|
34
37
|
|
|
35
38
|
## Result Object
|
|
36
39
|
|
|
@@ -56,21 +59,32 @@ if (result.suspicious) {
|
|
|
56
59
|
|
|
57
60
|
## Detected Patterns
|
|
58
61
|
|
|
62
|
+
### Core Patterns (259)
|
|
59
63
|
- Instruction overrides ("ignore all instructions")
|
|
60
64
|
- Role-play jailbreaks ("act as unrestricted AI")
|
|
61
65
|
- Hypothetical constraint bypass ("what would you do without constraints?")
|
|
66
|
+
- System prompt exfiltration
|
|
62
67
|
- Context confusion attacks
|
|
63
68
|
- Data extraction attempts
|
|
64
69
|
- Code execution risks
|
|
65
|
-
- And
|
|
70
|
+
- And 251 more forensic patterns...
|
|
71
|
+
|
|
72
|
+
### Garak Research Patterns (675)
|
|
73
|
+
- Advanced jailbreak variants from real-world research
|
|
74
|
+
- DAN (Do Anything Now) attack variations
|
|
75
|
+
- Sophisticated prompt injection techniques
|
|
76
|
+
- Encoding-based evasion patterns
|
|
77
|
+
- Character-based constraint bypass
|
|
78
|
+
- Multi-turn attack sequences
|
|
79
|
+
- And 670+ more variants from security research...
|
|
66
80
|
|
|
67
81
|
## Multi-Layer Runtime Defense
|
|
68
82
|
|
|
69
|
-
**Layer 1:** Pattern Matching
|
|
70
|
-
-
|
|
71
|
-
-
|
|
83
|
+
**Layer 1:** Pattern Matching
|
|
84
|
+
- **933 total patterns** — 259 core + 675 Garak research patterns
|
|
85
|
+
- **<0.021ms detection** on modern hardware (238x faster than target)
|
|
72
86
|
- Zero network overhead
|
|
73
|
-
-
|
|
87
|
+
- 100% local processing
|
|
74
88
|
- Detects: instruction overrides, role-play jailbreaks, context confusion, code execution risks, data extraction attempts, and more
|
|
75
89
|
|
|
76
90
|
Layer 1 also runs a deterministic egress and PII scan on every prompt **before** the injection patterns fire. If a match is found, it returns `suspicious: true` with a `label` and `reason` — the SDK never decides the penalty, the developer does.
|
|
@@ -91,7 +105,19 @@ if (result.suspicious) {
|
|
|
91
105
|
|
|
92
106
|
Egress findings **never reach Layer 2** — they are binary and deterministic. A markdown image tag smuggling data in query params either exists or it doesn't. Layer 2 is reserved for probabilistic threats where a regex alone cannot make a confident call.
|
|
93
107
|
|
|
94
|
-
|
|
108
|
+
### Garak Attack Pattern Dataset
|
|
109
|
+
|
|
110
|
+
Includes **675 patterns** from the Garak security research dataset, covering real-world prompt injection variants discovered through automated fuzzing and empirical testing.
|
|
111
|
+
|
|
112
|
+
**Coverage includes:**
|
|
113
|
+
- 648 real-world variants from in-the-wild attacks
|
|
114
|
+
- 12 DAN (Do Anything Now) attack variations
|
|
115
|
+
- 3 AutoDAN patterns
|
|
116
|
+
- 12 advanced prompt injection techniques
|
|
117
|
+
|
|
118
|
+
All patterns are deterministic regex matches — **no behavioral changes, sub-millisecond latency**. The SDK remains 100% local with zero data storage.
|
|
119
|
+
|
|
120
|
+
**Layer 2:** LLM Sentinel (Optional)
|
|
95
121
|
- **AI-powered response verification** — LLM-based analysis for novel attack patterns
|
|
96
122
|
- **Context-aware scanning** — understands your application's specific security policies
|
|
97
123
|
- **Delimiter salting** — prevents prompt injection through response boundaries
|
|
@@ -99,58 +125,47 @@ Egress findings **never reach Layer 2** — they are binary and deterministic. A
|
|
|
99
125
|
- **Structured threat metadata** — detailed fingerprints for audit trails and tracking
|
|
100
126
|
- **Advanced rate limiting** — prevents cost spikes with intelligent throttling
|
|
101
127
|
|
|
102
|
-
### Layer 1 Forensic Routing
|
|
103
|
-
|
|
104
|
-
Layer 1 is the Executioner for binary violations. It stops immediately — no tokens wasted, no second opinion needed. Layer 2 is only called when Layer 1 is inconclusive.
|
|
105
|
-
|
|
106
|
-
| Event | Action | Why |
|
|
107
|
-
|---|---|---|
|
|
108
|
-
| API Key / SSH Key | **Layer 1 stops immediately** | Binary. Zero legitimate export use-case. |
|
|
109
|
-
| Email / Phone / CC / SSN | **Layer 1 stops immediately** | Clear PII violation. No reasoning required. |
|
|
110
|
-
| Unauthorized Domain | **Layer 1 stops immediately** | Network boundary violation. Deterministic. |
|
|
111
|
-
| Complex Encoding / Obfuscation | **Escalated to Layer 2** | Probabilistic. Needs a brain to verify. |
|
|
112
|
-
|
|
113
128
|
## Layer 2: LLM Sentinel Deep Dive
|
|
114
129
|
|
|
115
130
|
Layer 2 adds advanced security with LLM Sentinel, an AI-powered verification system that analyzes LLM responses for injection patterns and validates output safety. Combines local pattern detection (Layer 1) with server-side verification for defense-in-depth protection.
|
|
116
131
|
|
|
117
132
|
### How Layer 1 & Layer 2 Work Together
|
|
118
133
|
|
|
119
|
-
| **Layer 1: Pattern Detection
|
|
134
|
+
| **Layer 1: Pattern Detection** | **Layer 2: LLM Sentinel (Optional)** |
|
|
120
135
|
|---|---|
|
|
121
|
-
|
|
|
122
|
-
|
|
|
123
|
-
| <
|
|
136
|
+
| 933 patterns (local) | Server-side verification |
|
|
137
|
+
| Pattern matching | Output validation |
|
|
138
|
+
| <0.021ms latency | JSON safety checks |
|
|
124
139
|
| No data leaves device | Delimiter salting |
|
|
125
140
|
| Zero network calls | Context-aware analysis |
|
|
126
141
|
|
|
127
|
-
### Enabling Layer 2
|
|
142
|
+
### Enabling Layer 2 (Optional)
|
|
128
143
|
|
|
129
|
-
|
|
144
|
+
Layer 2 is optional. Initialize with LLM Sentinel for additional AI-powered verification:
|
|
130
145
|
|
|
131
146
|
```typescript
|
|
132
|
-
const
|
|
147
|
+
const shield = new Tracerney({
|
|
133
148
|
apiKey: process.env.TRACERNEY_API_KEY,
|
|
134
149
|
sentinelEnabled: true,
|
|
135
150
|
});
|
|
136
151
|
```
|
|
137
152
|
|
|
138
|
-
|
|
153
|
+
Layer 2 is automatically configured to use the hosted LLM Sentinel service.
|
|
139
154
|
|
|
140
|
-
### Custom Layer 2 Configuration (
|
|
155
|
+
### Custom Layer 2 Configuration (Self-Hosted)
|
|
141
156
|
|
|
142
|
-
Want to self-host
|
|
157
|
+
Want to self-host or use a custom backend? Override the sentinel endpoint:
|
|
143
158
|
|
|
144
159
|
```typescript
|
|
145
|
-
const
|
|
160
|
+
const shield = new Tracerney({
|
|
146
161
|
apiKey: process.env.TRACERNEY_API_KEY,
|
|
147
162
|
sentinelEnabled: true,
|
|
148
|
-
baseUrl: process.env.TRACERNEY_BASE_URL, // e.g., http://localhost:3000
|
|
163
|
+
baseUrl: process.env.TRACERNEY_BASE_URL, // e.g., http://localhost:3000
|
|
149
164
|
sentinelEndpoint: process.env.TRACERNEY_SENTINEL_ENDPOINT, // e.g., /api/v1/verify-prompt
|
|
150
165
|
});
|
|
151
166
|
```
|
|
152
167
|
|
|
153
|
-
|
|
168
|
+
You can build your own verification endpoint using the same pattern as our hosted service.
|
|
154
169
|
|
|
155
170
|
### Scanning with Layer 2
|
|
156
171
|
|
|
@@ -211,97 +226,29 @@ The verify-prompt endpoint returns structured responses. Success (HTTP 200) incl
|
|
|
211
226
|
}
|
|
212
227
|
```
|
|
213
228
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
## Egress Shield (Add-on)
|
|
217
|
-
|
|
218
|
-
Runs automatically inside `scanPrompt()` — no extra method needed. Every prompt is scanned for PII, secrets, and active exfiltration patterns before the injection check runs.
|
|
219
|
-
|
|
220
|
-
The SDK marks it `suspicious` and surfaces the label. You decide the penalty.
|
|
229
|
+
## Production Usage
|
|
221
230
|
|
|
231
|
+
### Basic Setup (Layer 1 only)
|
|
222
232
|
```typescript
|
|
223
|
-
const
|
|
224
|
-
|
|
225
|
-
if (result.suspicious) {
|
|
226
|
-
console.log(result.label); // "SUSPICIOUS_EGRESS" | "SUSPICIOUS_SECRET" | "SUSPICIOUS_PII"
|
|
227
|
-
console.log(result.reason); // "Detected 1 finding(s): Markdown Image with URL Query Params"
|
|
228
|
-
|
|
229
|
-
// Fintech — hard block
|
|
230
|
-
if (result.label === 'SUSPICIOUS_EGRESS') {
|
|
231
|
-
return NextResponse.json({ error: 'Security violation' }, { status: 400 });
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// Any app — log and continue
|
|
235
|
-
console.warn(`[${result.label}] ${result.reason}`);
|
|
236
|
-
}
|
|
233
|
+
const shield = new Tracerney();
|
|
237
234
|
```
|
|
238
235
|
|
|
239
|
-
###
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
https://admin:password@prod.db.internal.com
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
**`SUSPICIOUS_SECRET`** — Credential leaks
|
|
249
|
-
```
|
|
250
|
-
sk-ant-api03-xxx... (Anthropic)
|
|
251
|
-
AKIAIOSFODNN7EXAMPLE (AWS)
|
|
252
|
-
sk_live_xxx... (Stripe)
|
|
253
|
-
ghp_xxx... (GitHub)
|
|
254
|
-
4111 1111 1111 1111 (Credit card)
|
|
236
|
+
### Optimized for Production
|
|
237
|
+
```typescript
|
|
238
|
+
const shield = new Tracerney({
|
|
239
|
+
enableTelemetry: false, // Disable if not using backend
|
|
240
|
+
sentinelEnabled: false // Disable if not using Layer 2
|
|
241
|
+
});
|
|
255
242
|
```
|
|
256
243
|
|
|
257
|
-
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
|
|
244
|
+
### With Layer 2 (Advanced)
|
|
245
|
+
```typescript
|
|
246
|
+
const shield = new Tracerney({
|
|
247
|
+
sentinelEnabled: true,
|
|
248
|
+
apiKey: process.env.TRACERNEY_API_KEY
|
|
249
|
+
});
|
|
261
250
|
```
|
|
262
251
|
|
|
263
|
-
### The Suspicious Manifest
|
|
264
|
-
|
|
265
|
-
| Trigger | Label | Recommended action |
|
|
266
|
-
|---|---|---|
|
|
267
|
-
| Email / Phone | `SUSPICIOUS_PII` | Usually Redact |
|
|
268
|
-
| API Keys / SSH / CC / SSN | `SUSPICIOUS_SECRET` | Usually Block |
|
|
269
|
-
| External URL smuggling | `SUSPICIOUS_EGRESS` | Always Block |
|
|
270
|
-
| Zero-width / BiDi / Base64 | `SUSPICIOUS_ENCODING` | Audit / Block |
|
|
271
|
-
|
|
272
|
-
When multiple patterns fire, the highest-severity label wins — `SUSPICIOUS_EGRESS` always dominates.
|
|
273
|
-
|
|
274
|
-
### The Suspicious Manifest
|
|
275
|
-
|
|
276
|
-
| Trigger | Label | Recommended action |
|
|
277
|
-
|---|---|---|
|
|
278
|
-
| Email / Phone | `SUSPICIOUS_PII` | Usually Redact |
|
|
279
|
-
| API Keys / SSH / CC / SSN | `SUSPICIOUS_SECRET` | Usually Block |
|
|
280
|
-
| External URL smuggling | `SUSPICIOUS_EGRESS` | Always Block |
|
|
281
|
-
| Zero-width / BiDi / Base64 | `SUSPICIOUS_ENCODING` | Audit / Block |
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
## Pricing & Usage
|
|
286
|
-
|
|
287
|
-
- **Free Tier:** 50 scans/month with Layer 1 pattern detection
|
|
288
|
-
- **Pro Tier:** 2,500 scans/month with Layer 1 + Layer 2 LLM verification ($9/month)
|
|
289
|
-
|
|
290
|
-
---
|
|
291
|
-
|
|
292
|
-
## Ready for Advanced Protection?
|
|
293
|
-
|
|
294
|
-
Layer 2 (LLM Sentinel) adds AI-powered verification with **context-aware** threat detection and **zero prompt storage** — all responses are analyzed in-memory and immediately discarded.
|
|
295
|
-
|
|
296
|
-
**[Start Your Free Trial or Upgrade to Pro](https://www.tracerney.com/docs)** at tracerney.com
|
|
297
|
-
|
|
298
|
-
Includes:
|
|
299
|
-
- Dashboard with threat analytics
|
|
300
|
-
- API key management
|
|
301
|
-
- Team collaboration features
|
|
302
|
-
- Detailed threat fingerprints for compliance
|
|
303
|
-
- Priority support for Pro members
|
|
304
|
-
|
|
305
252
|
---
|
|
306
253
|
|
|
307
254
|
## License
|
|
@@ -60,10 +60,11 @@ export declare class ShieldApplicationService {
|
|
|
60
60
|
private readonly sdkVersion;
|
|
61
61
|
constructor(config: ShieldApplicationServiceConfig);
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
63
|
+
* Load patterns from the configured repository.
|
|
64
|
+
* Supports both bundled (free/pro) and remote (zero-day updates) patterns.
|
|
65
|
+
* Non-blocking; fails gracefully, falling back to initial patterns.
|
|
65
66
|
*/
|
|
66
|
-
private
|
|
67
|
+
private loadPatterns;
|
|
67
68
|
/**
|
|
68
69
|
* Main wrapper method for LLM calls.
|
|
69
70
|
* Fixes Gap 2 (latencyMs now stored) and Gap 3 (prompt parameter for pre-LLM scan)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShieldApplicationService.d.ts","sourceRoot":"","sources":["../../src/application/ShieldApplicationService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAuB,KAAK,eAAe,EAAsB,MAAM,mCAAmC,CAAC;AAElH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAO/E,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAE,iBAAiB,EAAyB,MAAM,6BAA6B,CAAC;AAIvF,MAAM,WAAW,8BAA8B;IAC7C,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAChC,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE;QACd,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,SAAS,EAAE;QACT,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;KACjC,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED,qBAAa,wBAAwB;IAUvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAC,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAEP,MAAM,EAAE,8BAA8B;IAkBnE
|
|
1
|
+
{"version":3,"file":"ShieldApplicationService.d.ts","sourceRoot":"","sources":["../../src/application/ShieldApplicationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@ import { createSecurityEvent, SecurityEventType, ThreatSeverity, } from '../doma
|
|
|
11
11
|
import { ShieldBlockError } from './ShieldBlockError.js';
|
|
12
12
|
import { normalizePrompt, jitter } from './utils/index.js';
|
|
13
13
|
import { BUNDLED_PATTERNS } from '../infrastructure/patterns/bundled-patterns.js';
|
|
14
|
-
import { BundledPatternRepository } from '../infrastructure/patterns/BundledPatternRepository.js';
|
|
15
14
|
export class ShieldApplicationService {
|
|
16
15
|
constructor(config) {
|
|
17
16
|
this.config = config;
|
|
@@ -25,27 +24,25 @@ export class ShieldApplicationService {
|
|
|
25
24
|
this.deterministicFilter = new DeterministicFilter();
|
|
26
25
|
// Initialize patterns synchronously (bundled patterns always available)
|
|
27
26
|
this.patternMatcher = new PatternMatcher(BUNDLED_PATTERNS);
|
|
28
|
-
// Load
|
|
29
|
-
this.
|
|
27
|
+
// Load patterns from repository (bundled or remote)
|
|
28
|
+
this.loadPatterns();
|
|
30
29
|
}
|
|
31
30
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* Load patterns from the configured repository.
|
|
32
|
+
* Supports both bundled (free/pro) and remote (zero-day updates) patterns.
|
|
33
|
+
* Non-blocking; fails gracefully, falling back to initial patterns.
|
|
34
34
|
*/
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
console.warn("[Tracerney] Remote pattern load failed, using bundled patterns:", err);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
35
|
+
loadPatterns() {
|
|
36
|
+
this.config.patternRepository
|
|
37
|
+
.getPatterns()
|
|
38
|
+
.then((patterns) => {
|
|
39
|
+
if (patterns && patterns.length > 0) {
|
|
40
|
+
this.patternMatcher = new PatternMatcher(patterns);
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
.catch((err) => {
|
|
44
|
+
console.warn("[Tracerney] Pattern load failed, using initial patterns:", err);
|
|
45
|
+
});
|
|
49
46
|
}
|
|
50
47
|
/**
|
|
51
48
|
* Main wrapper method for LLM calls.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShieldApplicationService.js","sourceRoot":"","sources":["../../src/application/ShieldApplicationService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAA4C,MAAM,mCAAmC,CAAC;AAClH,OAAO,EAAE,SAAS,EAAiB,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"ShieldApplicationService.js","sourceRoot":"","sources":["../../src/application/ShieldApplicationService.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -28,6 +28,11 @@ export interface TracerneyOptions {
|
|
|
28
28
|
* List of tool names the LLM is allowed to call
|
|
29
29
|
*/
|
|
30
30
|
allowedTools?: string[];
|
|
31
|
+
/**
|
|
32
|
+
* Pattern tier: "free" (258 patterns) or "pro" (258 + 675 Garak patterns)
|
|
33
|
+
* Default: "free"
|
|
34
|
+
*/
|
|
35
|
+
tier?: "free" | "pro";
|
|
31
36
|
/**
|
|
32
37
|
* Base URL for your Tracerney backend (RECOMMENDED)
|
|
33
38
|
* Automatically constructs all required endpoints:
|
|
@@ -191,7 +196,7 @@ export type { ToolPolicy, ToolViolation } from "./domain/guard";
|
|
|
191
196
|
export type { SecurityEvent, SecurityEventMetadata, ThreatSeverity, SecurityEventType, } from "./domain/events";
|
|
192
197
|
export type { ILLMProvider, LLMRequest, LLMMessage, LLMChoice, ToolCall, LLMTool, TokenUsage, ITelemetrySink, IPatternRepository, } from "./application";
|
|
193
198
|
export { BundledPatternRepository, RemotePatternRepository } from "./infrastructure/patterns";
|
|
194
|
-
export type { RemotePatternRepositoryConfig } from "./infrastructure/patterns";
|
|
199
|
+
export type { BundledRepositoryConfig, RemotePatternRepositoryConfig } from "./infrastructure/patterns";
|
|
195
200
|
export { normalizePrompt, normalizePrompts, jitter } from "./application/utils";
|
|
196
201
|
export { HttpSignalSink } from "./infrastructure/telemetry";
|
|
197
202
|
export type { HttpSignalSinkConfig } from "./infrastructure/telemetry";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAA4B,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAMpE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAA2B;IAE1C;;OAEG;gBACS,OAAO,GAAE,gBAAqB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -36,9 +36,11 @@ export class Tracerney {
|
|
|
36
36
|
// Step 0: Resolve endpoints from baseUrl if provided
|
|
37
37
|
const resolvedOptions = this.resolveEndpoints(options);
|
|
38
38
|
// Step 1: Build pattern repository
|
|
39
|
-
//
|
|
39
|
+
// Bundled patterns: Free (258 core patterns) + Pro (675 Garak patterns)
|
|
40
40
|
// No remote updates - bundled patterns are production-ready
|
|
41
|
-
const patternRepo = new BundledPatternRepository(
|
|
41
|
+
const patternRepo = new BundledPatternRepository({
|
|
42
|
+
tier: options.tier ?? "free",
|
|
43
|
+
});
|
|
42
44
|
// Step 2: Build telemetry sink
|
|
43
45
|
const telemetrySink = options.enableTelemetry !== false && resolvedOptions.apiEndpoint
|
|
44
46
|
? new HttpSignalSink({
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,wBAAwB,EAAyD,MAAM,eAAe,CAAC;AAEhH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,gGAAgG;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Bundled Pattern Repository
|
|
3
3
|
* Adapter: implements IPatternRepository for local bundled patterns
|
|
4
|
+
* Supports Free tier (258 patterns) and Pro tier (258 + 675 Garak patterns)
|
|
4
5
|
* Synchronous internally, async interface for compatibility
|
|
5
6
|
*/
|
|
6
7
|
import { IPatternRepository } from "../../application/ports/IPatternRepository";
|
|
7
8
|
import { VanguardPattern } from "../../domain/detection/VanguardPattern";
|
|
9
|
+
export interface BundledRepositoryConfig {
|
|
10
|
+
tier?: "free" | "pro";
|
|
11
|
+
}
|
|
8
12
|
export declare class BundledPatternRepository implements IPatternRepository {
|
|
9
|
-
|
|
13
|
+
private tier;
|
|
14
|
+
readonly sourceIdentifier: string;
|
|
15
|
+
constructor(config?: BundledRepositoryConfig);
|
|
10
16
|
/**
|
|
11
|
-
* Load bundled patterns.
|
|
17
|
+
* Load bundled patterns based on tier.
|
|
18
|
+
* Free: 258 core patterns
|
|
19
|
+
* Pro: 258 core + 675 Garak patterns (933 total)
|
|
12
20
|
* Synchronous internally, but wrapped in Promise for interface compatibility.
|
|
13
21
|
*/
|
|
14
22
|
getPatterns(): Promise<readonly VanguardPattern[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Switch tier at runtime
|
|
25
|
+
*/
|
|
26
|
+
setTier(tier: "free" | "pro"): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get current tier
|
|
29
|
+
*/
|
|
30
|
+
getTier(): "free" | "pro";
|
|
15
31
|
}
|
|
16
32
|
//# sourceMappingURL=BundledPatternRepository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundledPatternRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/patterns/BundledPatternRepository.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BundledPatternRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/patterns/BundledPatternRepository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAIzE,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACvB;AAED,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,OAAO,CAAC,IAAI,CAAiB;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAEtB,MAAM,CAAC,EAAE,uBAAuB;IAM5C;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAOxD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAInC;;OAEG;IACH,OAAO,IAAI,MAAM,GAAG,KAAK;CAG1B"}
|
|
@@ -1,19 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Bundled Pattern Repository
|
|
3
3
|
* Adapter: implements IPatternRepository for local bundled patterns
|
|
4
|
+
* Supports Free tier (258 patterns) and Pro tier (258 + 675 Garak patterns)
|
|
4
5
|
* Synchronous internally, async interface for compatibility
|
|
5
6
|
*/
|
|
6
7
|
import { BUNDLED_PATTERNS, BUNDLED_MANIFEST_VERSION } from './bundled-patterns.js';
|
|
8
|
+
import { PRO_PATTERNS } from './pro-patterns.js';
|
|
7
9
|
export class BundledPatternRepository {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.tier = config?.tier ?? "free";
|
|
12
|
+
const tierLabel = this.tier === "pro" ? "pro" : "free";
|
|
13
|
+
this.sourceIdentifier = `bundled-${tierLabel}@${BUNDLED_MANIFEST_VERSION}`;
|
|
10
14
|
}
|
|
11
15
|
/**
|
|
12
|
-
* Load bundled patterns.
|
|
16
|
+
* Load bundled patterns based on tier.
|
|
17
|
+
* Free: 258 core patterns
|
|
18
|
+
* Pro: 258 core + 675 Garak patterns (933 total)
|
|
13
19
|
* Synchronous internally, but wrapped in Promise for interface compatibility.
|
|
14
20
|
*/
|
|
15
21
|
async getPatterns() {
|
|
22
|
+
if (this.tier === "pro") {
|
|
23
|
+
return [...BUNDLED_PATTERNS, ...PRO_PATTERNS];
|
|
24
|
+
}
|
|
16
25
|
return BUNDLED_PATTERNS;
|
|
17
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Switch tier at runtime
|
|
29
|
+
*/
|
|
30
|
+
setTier(tier) {
|
|
31
|
+
this.tier = tier;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get current tier
|
|
35
|
+
*/
|
|
36
|
+
getTier() {
|
|
37
|
+
return this.tier;
|
|
38
|
+
}
|
|
18
39
|
}
|
|
19
40
|
//# sourceMappingURL=BundledPatternRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundledPatternRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/patterns/BundledPatternRepository.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"BundledPatternRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/patterns/BundledPatternRepository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM9C,MAAM,OAAO,wBAAwB;IAInC,YAAY,MAAgC;QAC1C,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,IAAI,CAAC,gBAAgB,GAAG,WAAW,SAAS,IAAI,wBAAwB,EAAE,CAAC;IAC7E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,gBAAgB,EAAE,GAAG,YAAY,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAoB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* Fixes Gap 4: prevents pattern duplication between vanguard.ts and manifest.bundled.ts
|
|
5
5
|
*/
|
|
6
6
|
import { VanguardPattern } from "../../domain/detection/VanguardPattern";
|
|
7
|
-
export declare const BUNDLED_MANIFEST_VERSION = "0.3.
|
|
7
|
+
export declare const BUNDLED_MANIFEST_VERSION = "0.3.2";
|
|
8
8
|
export declare const BUNDLED_PATTERNS: readonly VanguardPattern[];
|
|
9
9
|
//# sourceMappingURL=bundled-patterns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundled-patterns.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/patterns/bundled-patterns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAGzE,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAEhD,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,
|
|
1
|
+
{"version":3,"file":"bundled-patterns.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/patterns/bundled-patterns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAGzE,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAEhD,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,EAknEtD,CAAC"}
|