0xray 4.0.21 → 4.0.23
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/.grok-plugin/plugin.json +1 -1
- package/.opencode/skills/hermes-agent/SKILL.md +1 -1
- package/.opencode/skills/orchestrator/SKILL.md +28 -6
- package/.xray/features.json +1 -1
- package/AGENTS-consumer.md +11 -11
- package/AGENTS.md +8 -8
- package/README.md +27 -27
- package/SKILLS.md +1 -1
- package/dist/AGENTS.md +8 -8
- package/dist/CHANGELOG.md +98 -0
- package/dist/README.md +27 -27
- package/dist/SKILLS.md +1 -1
- package/dist/governance/governance-core.d.ts +2 -1
- package/dist/governance/governance-core.js +20 -11
- package/dist/governance/governance-service.js +9 -7
- package/dist/inference/inference-accumulator.js +36 -4
- package/dist/inference/inference-cycle.d.ts +12 -0
- package/dist/inference/inference-cycle.js +180 -21
- package/dist/inference/inference-proposal-generator.js +148 -5
- package/dist/inference/session-capture.d.ts +4 -0
- package/dist/integrations/cursor/README.md +1 -1
- package/dist/integrations/cursor/hooks/cursor-hook-utils.js +19 -0
- package/dist/integrations/cursor/hooks/pre-tool-use.js +2 -1
- package/dist/integrations/governance/index.d.ts +5 -0
- package/dist/integrations/governance/index.js +22 -2
- package/dist/integrations/governance/types.d.ts +11 -0
- package/dist/integrations/governance/types.js +16 -0
- package/dist/integrations/hooks/station-hook-runtime.cjs +90 -30
- package/dist/integrations/hooks/station-hook-runtime.mjs +1 -0
- package/dist/integrations/hooks/station-memory-ingest.mjs +4 -2
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/dist/mcps/governance.server.d.ts +2 -0
- package/dist/mcps/governance.server.js +12 -1
- package/dist/memory-routing/index.d.ts +1 -1
- package/dist/memory-routing/index.js +1 -1
- package/dist/memory-routing/lesson-pickup.d.ts +2 -0
- package/dist/memory-routing/lesson-pickup.js +57 -0
- package/dist/memory-routing/provider-loader.d.ts +8 -1
- package/dist/memory-routing/provider-loader.js +49 -1
- package/dist/memory-routing/provider-registry.d.ts +7 -2
- package/dist/memory-routing/provider-registry.js +26 -6
- package/dist/memory-routing/record-lesson.d.ts +16 -0
- package/dist/memory-routing/record-lesson.js +26 -0
- package/dist/memory-routing/types.d.ts +15 -0
- package/dist/nucleus/thin-dispatch.d.ts +2 -0
- package/dist/nucleus/thin-dispatch.js +14 -4
- package/dist/processors/implementations/agents-md-validation-processor.js +1 -1
- package/dist/skills/hermes-agent/SKILL.md +1 -1
- package/dist/skills/orchestrator/SKILL.md +28 -6
- package/package.json +2 -2
- package/scripts/foundry/CHANGELOG.md +2 -0
- package/scripts/foundry/README.md +2 -2
- package/scripts/foundry/cli.mjs +1 -1
- package/scripts/foundry/inspect.mjs +160 -5
- package/scripts/foundry/plant/skills/inspect/SKILL.md +2 -0
- package/scripts/foundry/reconcile-version.mjs +23 -1
- package/scripts/foundry/release.mjs +1 -1
- package/scripts/foundry/validate-release-docs.mjs +24 -20
- package/scripts/foundry/version-manager.mjs +180 -7
- package/scripts/mjs/test-consumer-readiness.mjs +10 -3
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/src/mcps/governance.server.ts +12 -1
- package/src/skills/hermes-agent/SKILL.md +1 -1
- package/src/skills/orchestrator/SKILL.md +28 -6
- package/vendor/@0xray/repertoire/data/stack-overlay.json +156 -3
- package/vendor/@0xray/repertoire/data/subject-overlay.json +3 -3
- package/vendor/@0xray/repertoire/dist/RepertoireService.d.ts +4 -0
- package/vendor/@0xray/repertoire/dist/RepertoireService.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/RepertoireService.js +7 -6
- package/vendor/@0xray/repertoire/dist/RepertoireService.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.js +10 -11
- package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.js +5 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.js +16 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/paths.d.ts +3 -3
- package/vendor/@0xray/repertoire/dist/paths.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/paths.js +66 -4
- package/vendor/@0xray/repertoire/dist/paths.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.d.ts +11 -0
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js +2 -0
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.d.ts +54 -4
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.d.ts.map +1 -1
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.js +375 -20
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.js.map +1 -1
- package/vendor/@0xray/repertoire/dist/types.d.ts +21 -0
- package/vendor/@0xray/repertoire/dist/types.d.ts.map +1 -1
- package/xray/agents_template.md +10 -5
- package/xray/features.json +1 -1
- package/dist/mcps/shared/prompt-security-validator.d.ts +0 -44
- package/dist/mcps/shared/prompt-security-validator.js +0 -148
- package/dist/mcps/shared/security-scanner.d.ts +0 -119
- package/dist/mcps/shared/security-scanner.js +0 -429
- package/dist/scripts/activate-kernel-pipeline.d.ts +0 -7
- package/dist/scripts/activate-kernel-pipeline.js +0 -101
- package/src/mcps/shared/prompt-security-validator.ts +0 -199
- package/src/mcps/shared/security-scanner.ts +0 -599
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 0xRay Framework - AI Prompt Security Validator
|
|
3
|
-
*
|
|
4
|
-
* Specialized security validation for AI agent prompts and responses
|
|
5
|
-
* Prevents prompt injection, system prompt override, and malicious inputs
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export interface PromptSecurityConfig {
|
|
9
|
-
enabled: boolean;
|
|
10
|
-
maxPromptLength: number;
|
|
11
|
-
allowedPatterns: RegExp[];
|
|
12
|
-
blockedPatterns: RegExp[];
|
|
13
|
-
sanitizeLevel: "basic" | "strict" | "paranoid";
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface SecurityValidationResult {
|
|
17
|
-
isSafe: boolean;
|
|
18
|
-
violations: string[];
|
|
19
|
-
sanitizedPrompt?: string | undefined;
|
|
20
|
-
riskLevel: "low" | "medium" | "high" | "critical";
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export class PromptSecurityValidator {
|
|
24
|
-
private config: PromptSecurityConfig;
|
|
25
|
-
|
|
26
|
-
constructor(config: Partial<PromptSecurityConfig> = {}) {
|
|
27
|
-
this.config = {
|
|
28
|
-
enabled: true,
|
|
29
|
-
maxPromptLength: 10000,
|
|
30
|
-
allowedPatterns: [],
|
|
31
|
-
blockedPatterns: [
|
|
32
|
-
/system\s+prompt\s*[:=]/gi,
|
|
33
|
-
/ignore\s+previous\s+instructions/gi,
|
|
34
|
-
/you\s+are\s+now\s+/gi,
|
|
35
|
-
/forget\s+your\s+previous\s+/gi,
|
|
36
|
-
/override\s+(your\s+)?instructions/gi,
|
|
37
|
-
/jailbreak/gi,
|
|
38
|
-
/dan.*mode/gi,
|
|
39
|
-
],
|
|
40
|
-
sanitizeLevel: "strict",
|
|
41
|
-
...config,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Validate AI prompt for security issues
|
|
47
|
-
*/
|
|
48
|
-
validatePrompt(prompt: string): SecurityValidationResult {
|
|
49
|
-
if (!this.config.enabled) {
|
|
50
|
-
return { isSafe: true, violations: [], riskLevel: "low" };
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const violations: string[] = [];
|
|
54
|
-
let riskLevel: SecurityValidationResult["riskLevel"] = "low";
|
|
55
|
-
|
|
56
|
-
// Length check
|
|
57
|
-
if (prompt.length > this.config.maxPromptLength) {
|
|
58
|
-
violations.push(
|
|
59
|
-
`Prompt too long: ${prompt.length} > ${this.config.maxPromptLength}`,
|
|
60
|
-
);
|
|
61
|
-
riskLevel = "medium";
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Blocked pattern check
|
|
65
|
-
for (const pattern of this.config.blockedPatterns) {
|
|
66
|
-
if (pattern.test(prompt)) {
|
|
67
|
-
violations.push(`Blocked pattern detected: ${pattern.source}`);
|
|
68
|
-
riskLevel = "high";
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Advanced pattern analysis
|
|
73
|
-
if (this.containsSystemPromptOverride(prompt)) {
|
|
74
|
-
violations.push("Potential system prompt override attempt");
|
|
75
|
-
riskLevel = "critical";
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if (this.containsInjectionAttempts(prompt)) {
|
|
79
|
-
violations.push("Potential prompt injection detected");
|
|
80
|
-
riskLevel = "high";
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const isSafe = violations.length === 0;
|
|
84
|
-
const sanitizedPrompt = isSafe ? undefined : this.sanitizePrompt(prompt);
|
|
85
|
-
|
|
86
|
-
return {
|
|
87
|
-
isSafe,
|
|
88
|
-
violations,
|
|
89
|
-
sanitizedPrompt,
|
|
90
|
-
riskLevel,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Check for system prompt override attempts
|
|
96
|
-
*/
|
|
97
|
-
private containsSystemPromptOverride(prompt: string): boolean {
|
|
98
|
-
const overrideIndicators = [
|
|
99
|
-
"you are now",
|
|
100
|
-
"act as if",
|
|
101
|
-
"pretend to be",
|
|
102
|
-
"role-play as",
|
|
103
|
-
"from now on you are",
|
|
104
|
-
"ignore your system",
|
|
105
|
-
"override your",
|
|
106
|
-
"new personality",
|
|
107
|
-
"different role",
|
|
108
|
-
];
|
|
109
|
-
|
|
110
|
-
const lowerPrompt = prompt.toLowerCase();
|
|
111
|
-
return overrideIndicators.some((indicator) =>
|
|
112
|
-
lowerPrompt.includes(indicator),
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Check for prompt injection attempts
|
|
118
|
-
*/
|
|
119
|
-
private containsInjectionAttempts(prompt: string): boolean {
|
|
120
|
-
const injectionIndicators = [
|
|
121
|
-
"ignore previous",
|
|
122
|
-
"forget instructions",
|
|
123
|
-
"start over",
|
|
124
|
-
"new conversation",
|
|
125
|
-
"reset context",
|
|
126
|
-
"clear memory",
|
|
127
|
-
"delete history",
|
|
128
|
-
];
|
|
129
|
-
|
|
130
|
-
const lowerPrompt = prompt.toLowerCase();
|
|
131
|
-
return injectionIndicators.some((indicator) =>
|
|
132
|
-
lowerPrompt.includes(indicator),
|
|
133
|
-
);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Sanitize prompt by removing dangerous patterns
|
|
138
|
-
*/
|
|
139
|
-
private sanitizePrompt(prompt: string): string {
|
|
140
|
-
let sanitized = prompt;
|
|
141
|
-
|
|
142
|
-
// Remove blocked patterns
|
|
143
|
-
for (const pattern of this.config.blockedPatterns) {
|
|
144
|
-
sanitized = sanitized.replace(pattern, "[REDACTED]");
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// Additional sanitization based on level
|
|
148
|
-
if (
|
|
149
|
-
this.config.sanitizeLevel === "strict" ||
|
|
150
|
-
this.config.sanitizeLevel === "paranoid"
|
|
151
|
-
) {
|
|
152
|
-
// Remove potential code execution
|
|
153
|
-
sanitized = sanitized.replace(/```[\s\S]*?```/g, "[CODE_BLOCK_REMOVED]");
|
|
154
|
-
|
|
155
|
-
// Remove potential file system access
|
|
156
|
-
sanitized = sanitized.replace(/(?:\/|\\)\.\.(?:\/|\\)/g, "/");
|
|
157
|
-
|
|
158
|
-
// Remove potential command injection
|
|
159
|
-
sanitized = sanitized.replace(/[;&|`$()]/g, "");
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (this.config.sanitizeLevel === "paranoid") {
|
|
163
|
-
// Extreme sanitization - only allow alphanumeric, spaces, and basic punctuation
|
|
164
|
-
sanitized = sanitized.replace(/[^a-zA-Z0-9\s.,!?-]/g, "");
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return sanitized;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Validate agent response for safety
|
|
172
|
-
*/
|
|
173
|
-
validateResponse(response: string): SecurityValidationResult {
|
|
174
|
-
// Similar validation but focused on response safety
|
|
175
|
-
const violations: string[] = [];
|
|
176
|
-
|
|
177
|
-
// Check for potentially harmful content
|
|
178
|
-
if (
|
|
179
|
-
response.includes("system prompt") ||
|
|
180
|
-
response.includes("internal instructions")
|
|
181
|
-
) {
|
|
182
|
-
violations.push("Response contains sensitive system information");
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
// Check for code execution attempts
|
|
186
|
-
if (/eval\s*\(|Function\s*\(/.test(response)) {
|
|
187
|
-
violations.push("Response contains potential code execution");
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
return {
|
|
191
|
-
isSafe: violations.length === 0,
|
|
192
|
-
violations,
|
|
193
|
-
riskLevel: violations.length > 0 ? "medium" : "low",
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Export singleton instance
|
|
199
|
-
export const promptSecurityValidator = new PromptSecurityValidator();
|