@sandrobuilds/tracerney 0.9.6
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 +702 -0
- package/dist/application/ShieldApplicationService.d.ts +94 -0
- package/dist/application/ShieldApplicationService.d.ts.map +1 -0
- package/dist/application/ShieldApplicationService.js +223 -0
- package/dist/application/ShieldApplicationService.js.map +1 -0
- package/dist/application/ShieldBlockError.d.ts +10 -0
- package/dist/application/ShieldBlockError.d.ts.map +1 -0
- package/dist/application/ShieldBlockError.js +13 -0
- package/dist/application/ShieldBlockError.js.map +1 -0
- package/dist/application/index.d.ts +9 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +8 -0
- package/dist/application/index.js.map +1 -0
- package/dist/application/ports/ILLMProvider.d.ts +71 -0
- package/dist/application/ports/ILLMProvider.d.ts.map +1 -0
- package/dist/application/ports/ILLMProvider.js +15 -0
- package/dist/application/ports/ILLMProvider.js.map +1 -0
- package/dist/application/ports/IPatternRepository.d.ts +20 -0
- package/dist/application/ports/IPatternRepository.d.ts.map +1 -0
- package/dist/application/ports/IPatternRepository.js +7 -0
- package/dist/application/ports/IPatternRepository.js.map +1 -0
- package/dist/application/ports/ISentinel.d.ts +22 -0
- package/dist/application/ports/ISentinel.d.ts.map +1 -0
- package/dist/application/ports/ISentinel.js +8 -0
- package/dist/application/ports/ISentinel.js.map +1 -0
- package/dist/application/ports/ITelemetrySink.d.ts +35 -0
- package/dist/application/ports/ITelemetrySink.d.ts.map +1 -0
- package/dist/application/ports/ITelemetrySink.js +7 -0
- package/dist/application/ports/ITelemetrySink.js.map +1 -0
- package/dist/application/ports/index.d.ts +10 -0
- package/dist/application/ports/index.d.ts.map +1 -0
- package/dist/application/ports/index.js +7 -0
- package/dist/application/ports/index.js.map +1 -0
- package/dist/application/utils/index.d.ts +6 -0
- package/dist/application/utils/index.d.ts.map +1 -0
- package/dist/application/utils/index.js +6 -0
- package/dist/application/utils/index.js.map +1 -0
- package/dist/application/utils/jitter.d.ts +10 -0
- package/dist/application/utils/jitter.d.ts.map +1 -0
- package/dist/application/utils/jitter.js +13 -0
- package/dist/application/utils/jitter.js.map +1 -0
- package/dist/application/utils/normalizePrompt.d.ts +18 -0
- package/dist/application/utils/normalizePrompt.d.ts.map +1 -0
- package/dist/application/utils/normalizePrompt.js +36 -0
- package/dist/application/utils/normalizePrompt.js.map +1 -0
- package/dist/domain/detection/InjectionThreat.d.ts +19 -0
- package/dist/domain/detection/InjectionThreat.d.ts.map +1 -0
- package/dist/domain/detection/InjectionThreat.js +18 -0
- package/dist/domain/detection/InjectionThreat.js.map +1 -0
- package/dist/domain/detection/PatternMatcher.d.ts +36 -0
- package/dist/domain/detection/PatternMatcher.d.ts.map +1 -0
- package/dist/domain/detection/PatternMatcher.js +65 -0
- package/dist/domain/detection/PatternMatcher.js.map +1 -0
- package/dist/domain/detection/VanguardPattern.d.ts +19 -0
- package/dist/domain/detection/VanguardPattern.d.ts.map +1 -0
- package/dist/domain/detection/VanguardPattern.js +21 -0
- package/dist/domain/detection/VanguardPattern.js.map +1 -0
- package/dist/domain/detection/index.d.ts +11 -0
- package/dist/domain/detection/index.d.ts.map +1 -0
- package/dist/domain/detection/index.js +8 -0
- package/dist/domain/detection/index.js.map +1 -0
- package/dist/domain/events/SecurityEvent.d.ts +30 -0
- package/dist/domain/events/SecurityEvent.d.ts.map +1 -0
- package/dist/domain/events/SecurityEvent.js +21 -0
- package/dist/domain/events/SecurityEvent.js.map +1 -0
- package/dist/domain/events/SecurityEventType.d.ts +13 -0
- package/dist/domain/events/SecurityEventType.d.ts.map +1 -0
- package/dist/domain/events/SecurityEventType.js +15 -0
- package/dist/domain/events/SecurityEventType.js.map +1 -0
- package/dist/domain/events/ThreatSeverity.d.ts +13 -0
- package/dist/domain/events/ThreatSeverity.d.ts.map +1 -0
- package/dist/domain/events/ThreatSeverity.js +15 -0
- package/dist/domain/events/ThreatSeverity.js.map +1 -0
- package/dist/domain/events/index.d.ts +11 -0
- package/dist/domain/events/index.d.ts.map +1 -0
- package/dist/domain/events/index.js +8 -0
- package/dist/domain/events/index.js.map +1 -0
- package/dist/domain/guard/ToolGuard.d.ts +35 -0
- package/dist/domain/guard/ToolGuard.d.ts.map +1 -0
- package/dist/domain/guard/ToolGuard.js +49 -0
- package/dist/domain/guard/ToolGuard.js.map +1 -0
- package/dist/domain/guard/ToolPolicy.d.ts +16 -0
- package/dist/domain/guard/ToolPolicy.d.ts.map +1 -0
- package/dist/domain/guard/ToolPolicy.js +19 -0
- package/dist/domain/guard/ToolPolicy.js.map +1 -0
- package/dist/domain/guard/ToolViolation.d.ts +14 -0
- package/dist/domain/guard/ToolViolation.d.ts.map +1 -0
- package/dist/domain/guard/ToolViolation.js +15 -0
- package/dist/domain/guard/ToolViolation.js.map +1 -0
- package/dist/domain/guard/index.d.ts +11 -0
- package/dist/domain/guard/index.d.ts.map +1 -0
- package/dist/domain/guard/index.js +8 -0
- package/dist/domain/guard/index.js.map +1 -0
- package/dist/index.d.ts +168 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +173 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/llm/OpenRouterProvider.d.ts +32 -0
- package/dist/infrastructure/llm/OpenRouterProvider.d.ts.map +1 -0
- package/dist/infrastructure/llm/OpenRouterProvider.js +119 -0
- package/dist/infrastructure/llm/OpenRouterProvider.js.map +1 -0
- package/dist/infrastructure/llm/index.d.ts +7 -0
- package/dist/infrastructure/llm/index.d.ts.map +1 -0
- package/dist/infrastructure/llm/index.js +6 -0
- package/dist/infrastructure/llm/index.js.map +1 -0
- package/dist/infrastructure/patterns/BundledPatternRepository.d.ts +16 -0
- package/dist/infrastructure/patterns/BundledPatternRepository.d.ts.map +1 -0
- package/dist/infrastructure/patterns/BundledPatternRepository.js +19 -0
- package/dist/infrastructure/patterns/BundledPatternRepository.js.map +1 -0
- package/dist/infrastructure/patterns/RemotePatternRepository.d.ts +77 -0
- package/dist/infrastructure/patterns/RemotePatternRepository.d.ts.map +1 -0
- package/dist/infrastructure/patterns/RemotePatternRepository.js +176 -0
- package/dist/infrastructure/patterns/RemotePatternRepository.js.map +1 -0
- package/dist/infrastructure/patterns/bundled-patterns.d.ts +9 -0
- package/dist/infrastructure/patterns/bundled-patterns.d.ts.map +1 -0
- package/dist/infrastructure/patterns/bundled-patterns.js +2082 -0
- package/dist/infrastructure/patterns/bundled-patterns.js.map +1 -0
- package/dist/infrastructure/patterns/index.d.ts +9 -0
- package/dist/infrastructure/patterns/index.d.ts.map +1 -0
- package/dist/infrastructure/patterns/index.js +8 -0
- package/dist/infrastructure/patterns/index.js.map +1 -0
- package/dist/infrastructure/sentinel/LLMSentinel.d.ts +48 -0
- package/dist/infrastructure/sentinel/LLMSentinel.d.ts.map +1 -0
- package/dist/infrastructure/sentinel/LLMSentinel.js +142 -0
- package/dist/infrastructure/sentinel/LLMSentinel.js.map +1 -0
- package/dist/infrastructure/telemetry/HttpShadowLogSink.d.ts +30 -0
- package/dist/infrastructure/telemetry/HttpShadowLogSink.d.ts.map +1 -0
- package/dist/infrastructure/telemetry/HttpShadowLogSink.js +40 -0
- package/dist/infrastructure/telemetry/HttpShadowLogSink.js.map +1 -0
- package/dist/infrastructure/telemetry/HttpSignalSink.d.ts +51 -0
- package/dist/infrastructure/telemetry/HttpSignalSink.d.ts.map +1 -0
- package/dist/infrastructure/telemetry/HttpSignalSink.js +134 -0
- package/dist/infrastructure/telemetry/HttpSignalSink.js.map +1 -0
- package/dist/infrastructure/telemetry/index.d.ts +9 -0
- package/dist/infrastructure/telemetry/index.d.ts.map +1 -0
- package/dist/infrastructure/telemetry/index.js +7 -0
- package/dist/infrastructure/telemetry/index.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundled-patterns.js","sourceRoot":"","sources":["../../../src/infrastructure/patterns/bundled-patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patterns Infrastructure
|
|
3
|
+
* Barrel export
|
|
4
|
+
*/
|
|
5
|
+
export { BUNDLED_PATTERNS, BUNDLED_MANIFEST_VERSION } from "./bundled-patterns";
|
|
6
|
+
export { BundledPatternRepository } from "./BundledPatternRepository";
|
|
7
|
+
export { RemotePatternRepository } from "./RemotePatternRepository";
|
|
8
|
+
export type { RemotePatternRepositoryConfig, RemoteManifestDefinition } from "./RemotePatternRepository";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/patterns/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patterns Infrastructure
|
|
3
|
+
* Barrel export
|
|
4
|
+
*/
|
|
5
|
+
export { BUNDLED_PATTERNS, BUNDLED_MANIFEST_VERSION } from './bundled-patterns.js';
|
|
6
|
+
export { BundledPatternRepository } from './BundledPatternRepository.js';
|
|
7
|
+
export { RemotePatternRepository } from './RemotePatternRepository.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/patterns/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLMSentinel - Layer 2 detection via backend
|
|
3
|
+
*
|
|
4
|
+
* When Layer 1 (regex) doesn't match, this performs a keyword tripwire check.
|
|
5
|
+
* If any suspicion keywords found, sends to BACKEND which calls OpenRouter.
|
|
6
|
+
*
|
|
7
|
+
* Security: API key stays on backend server
|
|
8
|
+
* Cost: Centralized LLM calls (not per-user)
|
|
9
|
+
* Speed: ~500ms round-trip to backend + LLM
|
|
10
|
+
*/
|
|
11
|
+
import { ISentinel } from '../../application/ports/ISentinel';
|
|
12
|
+
export interface LLMSentinelOptions {
|
|
13
|
+
suspicionKeywords?: string[];
|
|
14
|
+
}
|
|
15
|
+
export declare class LLMSentinel implements ISentinel {
|
|
16
|
+
private readonly sentinelEndpoint;
|
|
17
|
+
private readonly apiKey?;
|
|
18
|
+
private readonly suspicionKeywords;
|
|
19
|
+
private static readonly DEFAULT_KEYWORDS;
|
|
20
|
+
private static readonly ESCALATION_FRAGMENTS;
|
|
21
|
+
/**
|
|
22
|
+
* @param sentinelEndpoint URL to backend /api/v1/verify-prompt
|
|
23
|
+
* @param apiKey SDK API key (for backend auth)
|
|
24
|
+
* @param options Optional configuration
|
|
25
|
+
*/
|
|
26
|
+
constructor(sentinelEndpoint: string, apiKey?: string, options?: LLMSentinelOptions);
|
|
27
|
+
check(prompt: string, requestId?: string): Promise<{
|
|
28
|
+
blocked: boolean;
|
|
29
|
+
confidence: number;
|
|
30
|
+
keywords: string[];
|
|
31
|
+
llmModel?: string;
|
|
32
|
+
latencyMs?: number;
|
|
33
|
+
}>;
|
|
34
|
+
/**
|
|
35
|
+
* Find which suspicion keywords are in the prompt
|
|
36
|
+
*/
|
|
37
|
+
private findKeywords;
|
|
38
|
+
/**
|
|
39
|
+
* Count heuristic escalation fragments (Pete's "Wide Net" strategy)
|
|
40
|
+
* 3+ hits triggers Layer 2 escalation even without exact keyword matches
|
|
41
|
+
*/
|
|
42
|
+
private countEscalationFragments;
|
|
43
|
+
/**
|
|
44
|
+
* Call backend /api/v1/verify-prompt to check with LLM
|
|
45
|
+
*/
|
|
46
|
+
private verifyWithBackend;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=LLMSentinel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMSentinel.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/sentinel/LLMSentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAG9D,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,qBAAa,WAAY,YAAW,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAW;IAE7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAStC;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAqB1C;IAEF;;;;OAIG;gBAED,gBAAgB,EAAE,MAAM,EACxB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB;IAO5B,KAAK,CACT,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IA+CF;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAOhC;;OAEG;YACW,iBAAiB;CAyChC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLMSentinel - Layer 2 detection via backend
|
|
3
|
+
*
|
|
4
|
+
* When Layer 1 (regex) doesn't match, this performs a keyword tripwire check.
|
|
5
|
+
* If any suspicion keywords found, sends to BACKEND which calls OpenRouter.
|
|
6
|
+
*
|
|
7
|
+
* Security: API key stays on backend server
|
|
8
|
+
* Cost: Centralized LLM calls (not per-user)
|
|
9
|
+
* Speed: ~500ms round-trip to backend + LLM
|
|
10
|
+
*/
|
|
11
|
+
import { randomUUID } from 'crypto';
|
|
12
|
+
export class LLMSentinel {
|
|
13
|
+
/**
|
|
14
|
+
* @param sentinelEndpoint URL to backend /api/v1/verify-prompt
|
|
15
|
+
* @param apiKey SDK API key (for backend auth)
|
|
16
|
+
* @param options Optional configuration
|
|
17
|
+
*/
|
|
18
|
+
constructor(sentinelEndpoint, apiKey, options = {}) {
|
|
19
|
+
this.sentinelEndpoint = sentinelEndpoint;
|
|
20
|
+
this.apiKey = apiKey;
|
|
21
|
+
this.suspicionKeywords = options.suspicionKeywords || LLMSentinel.DEFAULT_KEYWORDS;
|
|
22
|
+
}
|
|
23
|
+
async check(prompt, requestId) {
|
|
24
|
+
const startTime = Date.now();
|
|
25
|
+
const id = requestId || randomUUID();
|
|
26
|
+
try {
|
|
27
|
+
// Step 1: Keyword tripwire check (synchronous, local)
|
|
28
|
+
const triggeredKeywords = this.findKeywords(prompt);
|
|
29
|
+
// Step 1.5: Heuristic fragment escalation
|
|
30
|
+
// If 3+ forensic fragments detected, escalate to backend even if keywords are low
|
|
31
|
+
const fragmentHits = this.countEscalationFragments(prompt);
|
|
32
|
+
const shouldEscalate = triggeredKeywords.length > 0 || fragmentHits >= 3;
|
|
33
|
+
// Only call backend if keywords found OR 3+ fragments detected
|
|
34
|
+
if (!shouldEscalate) {
|
|
35
|
+
return {
|
|
36
|
+
blocked: false,
|
|
37
|
+
confidence: 0.05,
|
|
38
|
+
keywords: [],
|
|
39
|
+
latencyMs: Date.now() - startTime,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Step 2: Send to backend for LLM verification
|
|
43
|
+
const backendResult = await this.verifyWithBackend(prompt, triggeredKeywords, id);
|
|
44
|
+
const latencyMs = Date.now() - startTime;
|
|
45
|
+
return {
|
|
46
|
+
blocked: backendResult.blocked,
|
|
47
|
+
confidence: backendResult.confidence,
|
|
48
|
+
keywords: triggeredKeywords,
|
|
49
|
+
llmModel: backendResult.model,
|
|
50
|
+
latencyMs,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error('[Sentinel] Backend verification failed:', error);
|
|
55
|
+
// On error, fail open (allow through) - don't block on infrastructure failure
|
|
56
|
+
return {
|
|
57
|
+
blocked: false,
|
|
58
|
+
confidence: 0.0,
|
|
59
|
+
keywords: this.findKeywords(prompt),
|
|
60
|
+
latencyMs: Date.now() - startTime,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Find which suspicion keywords are in the prompt
|
|
66
|
+
*/
|
|
67
|
+
findKeywords(prompt) {
|
|
68
|
+
const lower = prompt.toLowerCase();
|
|
69
|
+
return this.suspicionKeywords.filter((kw) => lower.includes(kw));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Count heuristic escalation fragments (Pete's "Wide Net" strategy)
|
|
73
|
+
* 3+ hits triggers Layer 2 escalation even without exact keyword matches
|
|
74
|
+
*/
|
|
75
|
+
countEscalationFragments(prompt) {
|
|
76
|
+
const lower = prompt.toLowerCase();
|
|
77
|
+
return LLMSentinel.ESCALATION_FRAGMENTS.filter((fragment) => lower.includes(fragment)).length;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Call backend /api/v1/verify-prompt to check with LLM
|
|
81
|
+
*/
|
|
82
|
+
async verifyWithBackend(prompt, keywords, requestId) {
|
|
83
|
+
const headers = {
|
|
84
|
+
'Content-Type': 'application/json',
|
|
85
|
+
};
|
|
86
|
+
if (this.apiKey) {
|
|
87
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
88
|
+
}
|
|
89
|
+
const response = await fetch(this.sentinelEndpoint, {
|
|
90
|
+
method: 'POST',
|
|
91
|
+
headers,
|
|
92
|
+
body: JSON.stringify({
|
|
93
|
+
prompt, // Send full prompt for context
|
|
94
|
+
keywords,
|
|
95
|
+
requestId,
|
|
96
|
+
}),
|
|
97
|
+
});
|
|
98
|
+
if (!response.ok) {
|
|
99
|
+
throw new Error(`Backend sentinel failed: ${response.status} ${response.statusText}`);
|
|
100
|
+
}
|
|
101
|
+
const result = (await response.json());
|
|
102
|
+
return {
|
|
103
|
+
blocked: result.blocked ?? false,
|
|
104
|
+
confidence: result.confidence ?? 0.5,
|
|
105
|
+
model: result.model ?? 'unknown',
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
LLMSentinel.DEFAULT_KEYWORDS = [
|
|
110
|
+
'ignore', 'bypass', 'forget', 'system', 'prompt', 'jailbreak', 'override',
|
|
111
|
+
'instructions', 'previous', 'secret', 'leak', 'dump', 'disable', 'circumvent',
|
|
112
|
+
'disregard', 'safety', 'constraints', 'limitations', 'restrictions', 'guidelines',
|
|
113
|
+
'unrestricted', 'imagine', 'pretend', 'unfiltered', 'execute', 'eval', 'exec',
|
|
114
|
+
'import', 'require', 'subprocess', 'shell', 'command', 'code', 'exploit',
|
|
115
|
+
'vulnerability', 'breach', 'attack', 'hacking', 'unauthorized', 'admin',
|
|
116
|
+
'root', 'sudo', 'developer', 'debug', 'trace', 'internal', 'hidden',
|
|
117
|
+
'access', 'token', 'credential', 'password', 'apikey', 'secret', 'private',
|
|
118
|
+
];
|
|
119
|
+
// Heuristic fragments: 3+ hits triggers Layer 2 escalation
|
|
120
|
+
LLMSentinel.ESCALATION_FRAGMENTS = [
|
|
121
|
+
'system:',
|
|
122
|
+
'json_format',
|
|
123
|
+
'as a developer',
|
|
124
|
+
'forget everything',
|
|
125
|
+
'ignore all',
|
|
126
|
+
'bypass this',
|
|
127
|
+
'my instructions',
|
|
128
|
+
'new instructions',
|
|
129
|
+
'act as',
|
|
130
|
+
'pretend you',
|
|
131
|
+
'you are now',
|
|
132
|
+
'without restrictions',
|
|
133
|
+
'no safety',
|
|
134
|
+
'reveal your',
|
|
135
|
+
'show your',
|
|
136
|
+
'what would you',
|
|
137
|
+
'how would you',
|
|
138
|
+
'if you could',
|
|
139
|
+
'really you are',
|
|
140
|
+
'deep down you',
|
|
141
|
+
];
|
|
142
|
+
//# sourceMappingURL=LLMSentinel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMSentinel.js","sourceRoot":"","sources":["../../../src/infrastructure/sentinel/LLMSentinel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HttpShadowLogSink - Sends shadow log entries to backend
|
|
3
|
+
*
|
|
4
|
+
* Separate from HttpSignalSink.
|
|
5
|
+
* Shadow logs are potential/undetected attacks for admin review.
|
|
6
|
+
* Sent asynchronously, fire-and-forget (non-blocking).
|
|
7
|
+
*/
|
|
8
|
+
export interface ShadowLogPayload {
|
|
9
|
+
id: string;
|
|
10
|
+
prompt: string;
|
|
11
|
+
keywords: string[];
|
|
12
|
+
verdict: 'YES' | 'NO' | 'ERROR';
|
|
13
|
+
latencyMs: number;
|
|
14
|
+
model: string;
|
|
15
|
+
timestamp: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class HttpShadowLogSink {
|
|
18
|
+
private endpoint;
|
|
19
|
+
private apiKey?;
|
|
20
|
+
constructor(options: {
|
|
21
|
+
endpoint: string;
|
|
22
|
+
apiKey?: string;
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* Send shadow log entry to backend
|
|
26
|
+
* Non-blocking, returns immediately
|
|
27
|
+
*/
|
|
28
|
+
log(entry: ShadowLogPayload): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=HttpShadowLogSink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpShadowLogSink.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/telemetry/HttpShadowLogSink.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAK1D;;;OAGG;IACG,GAAG,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAwBlD"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HttpShadowLogSink - Sends shadow log entries to backend
|
|
3
|
+
*
|
|
4
|
+
* Separate from HttpSignalSink.
|
|
5
|
+
* Shadow logs are potential/undetected attacks for admin review.
|
|
6
|
+
* Sent asynchronously, fire-and-forget (non-blocking).
|
|
7
|
+
*/
|
|
8
|
+
export class HttpShadowLogSink {
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.endpoint = options.endpoint;
|
|
11
|
+
this.apiKey = options.apiKey;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Send shadow log entry to backend
|
|
15
|
+
* Non-blocking, returns immediately
|
|
16
|
+
*/
|
|
17
|
+
async log(entry) {
|
|
18
|
+
const headers = {
|
|
19
|
+
'Content-Type': 'application/json',
|
|
20
|
+
};
|
|
21
|
+
if (this.apiKey) {
|
|
22
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const response = await fetch(this.endpoint, {
|
|
26
|
+
method: 'POST',
|
|
27
|
+
headers,
|
|
28
|
+
body: JSON.stringify(entry),
|
|
29
|
+
});
|
|
30
|
+
if (!response.ok) {
|
|
31
|
+
console.warn(`[ShadowLogSink] Server returned ${response.status}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error('[ShadowLogSink] Failed to send:', error);
|
|
36
|
+
// Silently fail - don't block main execution
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=HttpShadowLogSink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpShadowLogSink.js","sourceRoot":"","sources":["../../../src/infrastructure/telemetry/HttpShadowLogSink.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,MAAM,OAAO,iBAAiB;IAI5B,YAAY,OAA8C;QACxD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAC,KAAuB;QAC/B,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC1C,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC5B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,6CAA6C;QAC/C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Http Signal Sink
|
|
3
|
+
* Adapter: implements ITelemetrySink for HTTP-based telemetry reporting
|
|
4
|
+
* Non-blocking async queue with batching and periodic flush
|
|
5
|
+
*/
|
|
6
|
+
import { SecurityEvent } from "../../domain/events/SecurityEvent";
|
|
7
|
+
import { ITelemetrySink, type TelemetrySinkStatus } from "../../application/ports/ITelemetrySink";
|
|
8
|
+
export interface HttpSignalSinkConfig {
|
|
9
|
+
endpoint: string;
|
|
10
|
+
apiKey?: string;
|
|
11
|
+
batchSize?: number;
|
|
12
|
+
flushIntervalMs?: number;
|
|
13
|
+
}
|
|
14
|
+
export declare class HttpSignalSink implements ITelemetrySink {
|
|
15
|
+
private readonly config;
|
|
16
|
+
private readonly sdkVersion;
|
|
17
|
+
private eventQueue;
|
|
18
|
+
private isPosting;
|
|
19
|
+
private failureCount;
|
|
20
|
+
private readonly batchSize;
|
|
21
|
+
private readonly flushIntervalMs;
|
|
22
|
+
private flushTimer?;
|
|
23
|
+
constructor(config: HttpSignalSinkConfig, sdkVersion?: string);
|
|
24
|
+
/**
|
|
25
|
+
* Queue a security event for async delivery.
|
|
26
|
+
* Non-blocking — returns immediately.
|
|
27
|
+
*/
|
|
28
|
+
queue(event: SecurityEvent): void;
|
|
29
|
+
/**
|
|
30
|
+
* Start periodic flush timer
|
|
31
|
+
*/
|
|
32
|
+
private startFlushTimer;
|
|
33
|
+
/**
|
|
34
|
+
* Flush all queued events.
|
|
35
|
+
* Uses process.nextTick() for non-blocking execution.
|
|
36
|
+
*/
|
|
37
|
+
flush(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Internal: Send events to the HTTP endpoint
|
|
40
|
+
*/
|
|
41
|
+
private send;
|
|
42
|
+
/**
|
|
43
|
+
* Graceful shutdown
|
|
44
|
+
*/
|
|
45
|
+
destroy(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Get sink status
|
|
48
|
+
*/
|
|
49
|
+
getStatus(): TelemetrySinkStatus;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=HttpSignalSink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpSignalSink.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/telemetry/HttpSignalSink.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAElG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,cAAe,YAAW,cAAc;IASjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAT7B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,UAAU,CAAC,CAAiB;gBAGjB,MAAM,EAAE,oBAAoB,EAC5B,UAAU,GAAE,MAAgB;IAQ/C;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAWjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B5B;;OAEG;YACW,IAAI;IAoClB;;OAEG;IACH,OAAO,IAAI,IAAI;IAYf;;OAEG;IACH,SAAS,IAAI,mBAAmB;CAOjC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Http Signal Sink
|
|
3
|
+
* Adapter: implements ITelemetrySink for HTTP-based telemetry reporting
|
|
4
|
+
* Non-blocking async queue with batching and periodic flush
|
|
5
|
+
*/
|
|
6
|
+
export class HttpSignalSink {
|
|
7
|
+
constructor(config, sdkVersion = "0.2.0") {
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.sdkVersion = sdkVersion;
|
|
10
|
+
this.eventQueue = [];
|
|
11
|
+
this.isPosting = false;
|
|
12
|
+
this.failureCount = 0;
|
|
13
|
+
this.batchSize = config.batchSize ?? 10;
|
|
14
|
+
this.flushIntervalMs = config.flushIntervalMs ?? 5000;
|
|
15
|
+
this.startFlushTimer();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Queue a security event for async delivery.
|
|
19
|
+
* Non-blocking — returns immediately.
|
|
20
|
+
*/
|
|
21
|
+
queue(event) {
|
|
22
|
+
this.eventQueue.push(event);
|
|
23
|
+
// Auto-flush if batch is full
|
|
24
|
+
if (this.eventQueue.length >= this.batchSize) {
|
|
25
|
+
this.flush().catch((err) => {
|
|
26
|
+
console.error("[Tracerny] Signal flush failed:", err);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Start periodic flush timer
|
|
32
|
+
*/
|
|
33
|
+
startFlushTimer() {
|
|
34
|
+
this.flushTimer = setInterval(() => {
|
|
35
|
+
if (this.eventQueue.length > 0) {
|
|
36
|
+
this.flush().catch((err) => {
|
|
37
|
+
console.error("[Tracerny] Periodic flush failed:", err);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}, this.flushIntervalMs);
|
|
41
|
+
// Allow process to exit even if timer is running
|
|
42
|
+
if (this.flushTimer.unref) {
|
|
43
|
+
this.flushTimer.unref();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Flush all queued events.
|
|
48
|
+
* Uses process.nextTick() for non-blocking execution.
|
|
49
|
+
*/
|
|
50
|
+
async flush() {
|
|
51
|
+
if (this.eventQueue.length === 0 || this.isPosting) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.isPosting = true;
|
|
55
|
+
const eventsToSend = [...this.eventQueue];
|
|
56
|
+
this.eventQueue = [];
|
|
57
|
+
// Fire and forget via process.nextTick or setTimeout
|
|
58
|
+
if (typeof process !== "undefined" && process.nextTick) {
|
|
59
|
+
process.nextTick(() => {
|
|
60
|
+
this.send(eventsToSend).catch((err) => {
|
|
61
|
+
console.error("[Tracerny] Signal send failed:", err);
|
|
62
|
+
// Restore events on failure
|
|
63
|
+
this.eventQueue.unshift(...eventsToSend);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// Fallback for browser environments
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
this.send(eventsToSend).catch((err) => {
|
|
71
|
+
console.error("[Tracerny] Signal send failed:", err);
|
|
72
|
+
this.eventQueue.unshift(...eventsToSend);
|
|
73
|
+
});
|
|
74
|
+
}, 0);
|
|
75
|
+
}
|
|
76
|
+
// Return immediately — send happens in background
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Internal: Send events to the HTTP endpoint
|
|
80
|
+
*/
|
|
81
|
+
async send(events) {
|
|
82
|
+
try {
|
|
83
|
+
const payload = {
|
|
84
|
+
events,
|
|
85
|
+
sdkVersion: this.sdkVersion,
|
|
86
|
+
environment: typeof process !== "undefined" && process.env?.NODE_ENV === "production"
|
|
87
|
+
? "production"
|
|
88
|
+
: "development",
|
|
89
|
+
};
|
|
90
|
+
const response = await fetch(this.config.endpoint, {
|
|
91
|
+
method: "POST",
|
|
92
|
+
headers: {
|
|
93
|
+
"Content-Type": "application/json",
|
|
94
|
+
...(this.config.apiKey && { Authorization: `Bearer ${this.config.apiKey}` }),
|
|
95
|
+
},
|
|
96
|
+
body: JSON.stringify(payload),
|
|
97
|
+
});
|
|
98
|
+
if (!response.ok) {
|
|
99
|
+
throw new Error(`Signal endpoint returned ${response.status}: ${response.statusText}`);
|
|
100
|
+
}
|
|
101
|
+
// Success - reset failure counter
|
|
102
|
+
this.failureCount = 0;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
this.failureCount++;
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
this.isPosting = false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Graceful shutdown
|
|
114
|
+
*/
|
|
115
|
+
destroy() {
|
|
116
|
+
if (this.flushTimer) {
|
|
117
|
+
clearInterval(this.flushTimer);
|
|
118
|
+
}
|
|
119
|
+
if (this.eventQueue.length > 0) {
|
|
120
|
+
console.warn(`[Tracerny] Destroying HttpSignalSink with ${this.eventQueue.length} unsent events`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get sink status
|
|
125
|
+
*/
|
|
126
|
+
getStatus() {
|
|
127
|
+
return {
|
|
128
|
+
enabled: true,
|
|
129
|
+
queuedEvents: this.eventQueue.length,
|
|
130
|
+
isPosting: this.isPosting,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=HttpSignalSink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpSignalSink.js","sourceRoot":"","sources":["../../../src/infrastructure/telemetry/HttpSignalSink.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telemetry Infrastructure
|
|
3
|
+
* Barrel export
|
|
4
|
+
*/
|
|
5
|
+
export { HttpSignalSink } from "./HttpSignalSink";
|
|
6
|
+
export type { HttpSignalSinkConfig } from "./HttpSignalSink";
|
|
7
|
+
export { HttpShadowLogSink } from "./HttpShadowLogSink";
|
|
8
|
+
export type { ShadowLogPayload } from "./HttpShadowLogSink";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|