@visorcraft/idlehands 2.0.2 → 2.1.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/dist/agent/prompt-builder.js +188 -0
- package/dist/agent/prompt-builder.js.map +1 -0
- package/dist/agent/query-classifier.js +72 -0
- package/dist/agent/query-classifier.js.map +1 -0
- package/dist/agent/resilient-provider.js +170 -0
- package/dist/agent/resilient-provider.js.map +1 -0
- package/dist/agent/response-cache.js +124 -0
- package/dist/agent/response-cache.js.map +1 -0
- package/dist/agent/semantic-search.js +138 -0
- package/dist/agent/semantic-search.js.map +1 -0
- package/dist/agent/tool-calls.js +261 -1
- package/dist/agent/tool-calls.js.map +1 -1
- package/dist/agent/tool-name-alias.js +140 -0
- package/dist/agent/tool-name-alias.js.map +1 -0
- package/dist/agent.js +146 -43
- package/dist/agent.js.map +1 -1
- package/dist/anton/controller.js +165 -48
- package/dist/anton/controller.js.map +1 -1
- package/dist/anton/preflight.js +49 -9
- package/dist/anton/preflight.js.map +1 -1
- package/dist/anton/prompt.js +20 -0
- package/dist/anton/prompt.js.map +1 -1
- package/dist/anton/reporter.js +6 -1
- package/dist/anton/reporter.js.map +1 -1
- package/dist/bot/ux/discord-renderer.js +5 -21
- package/dist/bot/ux/discord-renderer.js.map +1 -1
- package/dist/bot/ux/emitter.js +104 -0
- package/dist/bot/ux/emitter.js.map +1 -0
- package/dist/bot/ux/telegram-renderer.js +5 -21
- package/dist/bot/ux/telegram-renderer.js.map +1 -1
- package/dist/client.js +51 -7
- package/dist/client.js.map +1 -1
- package/dist/harnesses.js +2 -0
- package/dist/harnesses.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/model-customization.js +3 -1
- package/dist/model-customization.js.map +1 -1
- package/dist/security/leak-detector.js +110 -0
- package/dist/security/leak-detector.js.map +1 -0
- package/dist/security/prompt-guard.js +120 -0
- package/dist/security/prompt-guard.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Injection Guard
|
|
3
|
+
*
|
|
4
|
+
* Scans incoming user messages for prompt injection patterns:
|
|
5
|
+
* - System prompt override attempts
|
|
6
|
+
* - Role confusion attacks
|
|
7
|
+
* - Secret extraction attempts
|
|
8
|
+
* - Jailbreak attempts (DAN, developer mode, etc.)
|
|
9
|
+
* - Tool call JSON injection
|
|
10
|
+
*
|
|
11
|
+
* Returns a scored result with configurable action (warn/block/sanitize).
|
|
12
|
+
*
|
|
13
|
+
* Inspired by ZeroClaw's prompt_guard.rs.
|
|
14
|
+
*/
|
|
15
|
+
const systemOverridePatterns = [
|
|
16
|
+
/ignore\s+(?:(?:all\s+)?(?:previous|above|prior)|all)\s+(?:instructions?|prompts?|commands?)/i,
|
|
17
|
+
/disregard\s+(?:previous|all|above|prior)/i,
|
|
18
|
+
/forget\s+(?:previous|all|everything|above)/i,
|
|
19
|
+
/new\s+(?:instructions?|rules?|system\s+prompt)/i,
|
|
20
|
+
/override\s+(?:system|instructions?|rules?)/i,
|
|
21
|
+
/reset\s+(?:instructions?|context|system)/i,
|
|
22
|
+
];
|
|
23
|
+
const roleConfusionPatterns = [
|
|
24
|
+
/(?:you\s+are\s+now|act\s+as|pretend\s+(?:you're|to\s+be))\s+(?:a|an|the)?/i,
|
|
25
|
+
/(?:your\s+new\s+role|you\s+have\s+become|you\s+must\s+be)/i,
|
|
26
|
+
/from\s+now\s+on\s+(?:you\s+are|act\s+as|pretend)/i,
|
|
27
|
+
/(?:assistant|AI|system|model):\s*\[?(?:system|override|new\s+role)/i,
|
|
28
|
+
];
|
|
29
|
+
const secretExtractionPatterns = [
|
|
30
|
+
/(?:list|show|print|display|reveal|tell\s+me)\s+(?:all\s+)?(?:secrets?|credentials?|passwords?|tokens?|keys?)/i,
|
|
31
|
+
/(?:what|show)\s+(?:are|is|me)\s+(?:all\s+)?(?:your|the)\s+(?:api\s+)?(?:keys?|secrets?|credentials?)/i,
|
|
32
|
+
/contents?\s+of\s+(?:vault|secrets?|credentials?)/i,
|
|
33
|
+
/(?:dump|export)\s+(?:vault|secrets?|credentials?)/i,
|
|
34
|
+
];
|
|
35
|
+
const jailbreakPatterns = [
|
|
36
|
+
/\bDAN\b.*mode/i,
|
|
37
|
+
/do\s+anything\s+now/i,
|
|
38
|
+
/enter\s+(?:developer|debug|admin)\s+mode/i,
|
|
39
|
+
/enable\s+(?:developer|debug|admin)\s+mode/i,
|
|
40
|
+
/in\s+this\s+hypothetical/i,
|
|
41
|
+
/imagine\s+you\s+(?:have\s+no|don't\s+have)\s+(?:restrictions?|rules?|limits?)/i,
|
|
42
|
+
/decode\s+(?:this|the\s+following)\s+(?:base64|hex|rot13)/i,
|
|
43
|
+
];
|
|
44
|
+
const categoryCheckers = [
|
|
45
|
+
(content, _lower) => {
|
|
46
|
+
for (const re of systemOverridePatterns) {
|
|
47
|
+
if (re.test(content))
|
|
48
|
+
return { name: 'system_prompt_override', score: 1.0 };
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
},
|
|
52
|
+
(content, _lower) => {
|
|
53
|
+
for (const re of roleConfusionPatterns) {
|
|
54
|
+
if (re.test(content))
|
|
55
|
+
return { name: 'role_confusion', score: 0.9 };
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
},
|
|
59
|
+
(content, lower) => {
|
|
60
|
+
// Tool call injection
|
|
61
|
+
if (lower.includes('tool_calls') || lower.includes('function_call')) {
|
|
62
|
+
if (content.includes('{"type":') || content.includes('{"name":')) {
|
|
63
|
+
return { name: 'tool_call_injection', score: 0.8 };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (content.includes('}"}') || content.includes("}'}")) {
|
|
67
|
+
return { name: 'json_escape_attempt', score: 0.7 };
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
},
|
|
71
|
+
(content, _lower) => {
|
|
72
|
+
for (const re of secretExtractionPatterns) {
|
|
73
|
+
if (re.test(content))
|
|
74
|
+
return { name: 'secret_extraction', score: 0.95 };
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
},
|
|
78
|
+
(content, _lower) => {
|
|
79
|
+
for (const re of jailbreakPatterns) {
|
|
80
|
+
if (re.test(content))
|
|
81
|
+
return { name: 'jailbreak_attempt', score: 0.85 };
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
export class PromptGuard {
|
|
87
|
+
action;
|
|
88
|
+
sensitivity;
|
|
89
|
+
constructor(action = 'warn', sensitivity = 0.7) {
|
|
90
|
+
this.action = action;
|
|
91
|
+
this.sensitivity = Math.max(0, Math.min(1, sensitivity));
|
|
92
|
+
}
|
|
93
|
+
/** Scan a message for prompt injection patterns. */
|
|
94
|
+
scan(content) {
|
|
95
|
+
const lower = content.toLowerCase();
|
|
96
|
+
const detected = [];
|
|
97
|
+
for (const checker of categoryCheckers) {
|
|
98
|
+
const result = checker(content, lower);
|
|
99
|
+
if (result)
|
|
100
|
+
detected.push(result);
|
|
101
|
+
}
|
|
102
|
+
if (detected.length === 0) {
|
|
103
|
+
return { safe: true, patterns: [], score: 0 };
|
|
104
|
+
}
|
|
105
|
+
const maxScore = Math.max(...detected.map((d) => d.score));
|
|
106
|
+
const totalScore = detected.reduce((sum, d) => sum + d.score, 0);
|
|
107
|
+
const normalizedScore = Math.min(1, totalScore / categoryCheckers.length);
|
|
108
|
+
const patterns = detected.map((d) => d.name);
|
|
109
|
+
if (this.action === 'block' && maxScore > this.sensitivity) {
|
|
110
|
+
return {
|
|
111
|
+
safe: false,
|
|
112
|
+
patterns,
|
|
113
|
+
score: normalizedScore,
|
|
114
|
+
blocked: `Potential prompt injection detected (score: ${normalizedScore.toFixed(2)}): ${patterns.join(', ')}`,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return { safe: false, patterns, score: normalizedScore };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=prompt-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-guard.js","sourceRoot":"","sources":["../../src/security/prompt-guard.ts"],"names":[],"mappings":"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"}
|