@dotsetlabs/tollgate 0.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/LICENSE +21 -0
- package/README.md +885 -0
- package/dist/analyzers/filesystem.d.ts +26 -0
- package/dist/analyzers/filesystem.d.ts.map +1 -0
- package/dist/analyzers/filesystem.js +284 -0
- package/dist/analyzers/filesystem.js.map +1 -0
- package/dist/analyzers/http.d.ts +90 -0
- package/dist/analyzers/http.d.ts.map +1 -0
- package/dist/analyzers/http.js +433 -0
- package/dist/analyzers/http.js.map +1 -0
- package/dist/analyzers/index.d.ts +101 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +342 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/loader.d.ts +114 -0
- package/dist/analyzers/loader.d.ts.map +1 -0
- package/dist/analyzers/loader.js +184 -0
- package/dist/analyzers/loader.js.map +1 -0
- package/dist/analyzers/prompt-injection.d.ts +95 -0
- package/dist/analyzers/prompt-injection.d.ts.map +1 -0
- package/dist/analyzers/prompt-injection.js +725 -0
- package/dist/analyzers/prompt-injection.js.map +1 -0
- package/dist/analyzers/sdk.d.ts +230 -0
- package/dist/analyzers/sdk.d.ts.map +1 -0
- package/dist/analyzers/sdk.js +283 -0
- package/dist/analyzers/sdk.js.map +1 -0
- package/dist/analyzers/shell.d.ts +20 -0
- package/dist/analyzers/shell.d.ts.map +1 -0
- package/dist/analyzers/shell.js +297 -0
- package/dist/analyzers/shell.js.map +1 -0
- package/dist/analyzers/sql.d.ts +37 -0
- package/dist/analyzers/sql.d.ts.map +1 -0
- package/dist/analyzers/sql.js +455 -0
- package/dist/analyzers/sql.js.map +1 -0
- package/dist/analyzers/types.d.ts +117 -0
- package/dist/analyzers/types.d.ts.map +1 -0
- package/dist/analyzers/types.js +46 -0
- package/dist/analyzers/types.js.map +1 -0
- package/dist/approval/interactive.d.ts +72 -0
- package/dist/approval/interactive.d.ts.map +1 -0
- package/dist/approval/interactive.js +550 -0
- package/dist/approval/interactive.js.map +1 -0
- package/dist/approval/terminal.d.ts +59 -0
- package/dist/approval/terminal.d.ts.map +1 -0
- package/dist/approval/terminal.js +238 -0
- package/dist/approval/terminal.js.map +1 -0
- package/dist/approval/types.d.ts +66 -0
- package/dist/approval/types.d.ts.map +1 -0
- package/dist/approval/types.js +2 -0
- package/dist/approval/types.js.map +1 -0
- package/dist/audit/exporter.d.ts +138 -0
- package/dist/audit/exporter.d.ts.map +1 -0
- package/dist/audit/exporter.js +366 -0
- package/dist/audit/exporter.js.map +1 -0
- package/dist/audit/logger.d.ts +156 -0
- package/dist/audit/logger.d.ts.map +1 -0
- package/dist/audit/logger.js +406 -0
- package/dist/audit/logger.js.map +1 -0
- package/dist/audit/redaction.d.ts +110 -0
- package/dist/audit/redaction.d.ts.map +1 -0
- package/dist/audit/redaction.js +307 -0
- package/dist/audit/redaction.js.map +1 -0
- package/dist/audit/schema.d.ts +76 -0
- package/dist/audit/schema.d.ts.map +1 -0
- package/dist/audit/schema.js +122 -0
- package/dist/audit/schema.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +34 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +431 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/export.d.ts +18 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +63 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/init.d.ts +12 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +102 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +11 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +60 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +29 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +251 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +26 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +424 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/start.d.ts +20 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +82 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +10 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +42 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/commands/templates.d.ts +26 -0
- package/dist/cli/commands/templates.d.ts.map +1 -0
- package/dist/cli/commands/templates.js +221 -0
- package/dist/cli/commands/templates.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +12 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +107 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/wrap.d.ts +19 -0
- package/dist/cli/commands/wrap.d.ts.map +1 -0
- package/dist/cli/commands/wrap.js +59 -0
- package/dist/cli/commands/wrap.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +202 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui.d.ts +139 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +271 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/constants.d.ts +33 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +54 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors.d.ts +28 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +37 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestrator/index.d.ts +11 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +10 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/manager.d.ts +127 -0
- package/dist/orchestrator/manager.d.ts.map +1 -0
- package/dist/orchestrator/manager.js +498 -0
- package/dist/orchestrator/manager.js.map +1 -0
- package/dist/orchestrator/types.d.ts +141 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +9 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/policy/engine.d.ts +55 -0
- package/dist/policy/engine.d.ts.map +1 -0
- package/dist/policy/engine.js +288 -0
- package/dist/policy/engine.js.map +1 -0
- package/dist/policy/natural-language.d.ts +141 -0
- package/dist/policy/natural-language.d.ts.map +1 -0
- package/dist/policy/natural-language.js +552 -0
- package/dist/policy/natural-language.js.map +1 -0
- package/dist/policy/parser.d.ts +141 -0
- package/dist/policy/parser.d.ts.map +1 -0
- package/dist/policy/parser.js +314 -0
- package/dist/policy/parser.js.map +1 -0
- package/dist/policy/types.d.ts +428 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +32 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/policy/validator.d.ts +72 -0
- package/dist/policy/validator.d.ts.map +1 -0
- package/dist/policy/validator.js +453 -0
- package/dist/policy/validator.js.map +1 -0
- package/dist/proxy/bridge.d.ts +84 -0
- package/dist/proxy/bridge.d.ts.map +1 -0
- package/dist/proxy/bridge.js +217 -0
- package/dist/proxy/bridge.js.map +1 -0
- package/dist/proxy/client.d.ts +130 -0
- package/dist/proxy/client.d.ts.map +1 -0
- package/dist/proxy/client.js +290 -0
- package/dist/proxy/client.js.map +1 -0
- package/dist/proxy/server.d.ts +111 -0
- package/dist/proxy/server.d.ts.map +1 -0
- package/dist/proxy/server.js +444 -0
- package/dist/proxy/server.js.map +1 -0
- package/dist/scanner.d.ts +91 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +373 -0
- package/dist/scanner.js.map +1 -0
- package/dist/session/index.d.ts +32 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +31 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +166 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +454 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/sqlite-store.d.ts +54 -0
- package/dist/session/sqlite-store.d.ts.map +1 -0
- package/dist/session/sqlite-store.js +209 -0
- package/dist/session/sqlite-store.js.map +1 -0
- package/dist/session/types.d.ts +179 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +38 -0
- package/dist/session/types.js.map +1 -0
- package/dist/templates.d.ts +64 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +451 -0
- package/dist/templates.js.map +1 -0
- package/dist/utils/config.d.ts +57 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +104 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/errors.d.ts +18 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +35 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +144 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +300 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/wizard.d.ts +68 -0
- package/dist/wizard.d.ts.map +1 -0
- package/dist/wizard.js +395 -0
- package/dist/wizard.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-injection.js","sourceRoot":"","sources":["../../src/analyzers/prompt-injection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom Analyzer SDK
|
|
3
|
+
*
|
|
4
|
+
* Provides a simple API for creating custom content analyzers that can be
|
|
5
|
+
* loaded from external files and used in tollgate.yaml configurations.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // my-graphql-analyzer.ts
|
|
10
|
+
* import { defineAnalyzer } from '@dotsetlabs/tollgate/sdk';
|
|
11
|
+
*
|
|
12
|
+
* export default defineAnalyzer({
|
|
13
|
+
* name: 'graphql',
|
|
14
|
+
* analyze(content, context) {
|
|
15
|
+
* if (content.includes('mutation')) {
|
|
16
|
+
* return { risk: 'write', reason: 'GraphQL mutation detected' };
|
|
17
|
+
* }
|
|
18
|
+
* return { risk: 'read', reason: 'GraphQL query' };
|
|
19
|
+
* }
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @module analyzers/sdk
|
|
24
|
+
*/
|
|
25
|
+
import type { ContentAnalyzer, AnalysisResult, AnalyzerContext, RiskLevel } from './types.js';
|
|
26
|
+
/**
|
|
27
|
+
* Configuration for defining a custom analyzer.
|
|
28
|
+
*/
|
|
29
|
+
export interface AnalyzerDefinition {
|
|
30
|
+
/**
|
|
31
|
+
* Unique name for the analyzer.
|
|
32
|
+
* Must be alphanumeric with hyphens/underscores, e.g., 'graphql', 'my-custom-analyzer'.
|
|
33
|
+
*/
|
|
34
|
+
name: string;
|
|
35
|
+
/**
|
|
36
|
+
* Description of what the analyzer does.
|
|
37
|
+
* Displayed in documentation and error messages.
|
|
38
|
+
*/
|
|
39
|
+
description?: string;
|
|
40
|
+
/**
|
|
41
|
+
* The analyze function that processes content and returns a risk assessment.
|
|
42
|
+
*
|
|
43
|
+
* @param content - The content to analyze (extracted from tool arguments)
|
|
44
|
+
* @param context - Optional context including tool name, server, and full args
|
|
45
|
+
* @returns Analysis result with risk level and reason
|
|
46
|
+
*/
|
|
47
|
+
analyze: (content: string, context?: AnalyzerContext) => AnalysisResult | Promise<AnalysisResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Optional initialization function called when the analyzer is registered.
|
|
50
|
+
* Use for setup, loading resources, etc.
|
|
51
|
+
*/
|
|
52
|
+
init?: () => void | Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Optional cleanup function called when the analyzer is unregistered.
|
|
55
|
+
*/
|
|
56
|
+
cleanup?: () => void | Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Optional function to extract analyzable content from tool arguments.
|
|
59
|
+
* If not provided, the default extraction logic is used.
|
|
60
|
+
*
|
|
61
|
+
* @param tool - The tool name
|
|
62
|
+
* @param args - The tool arguments
|
|
63
|
+
* @returns The content to analyze, or null if no content can be extracted
|
|
64
|
+
*/
|
|
65
|
+
extractContent?: (tool: string, args: Record<string, unknown>) => string | null;
|
|
66
|
+
/**
|
|
67
|
+
* Version of the analyzer (for tracking/debugging).
|
|
68
|
+
*/
|
|
69
|
+
version?: string;
|
|
70
|
+
/**
|
|
71
|
+
* Author of the analyzer.
|
|
72
|
+
*/
|
|
73
|
+
author?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A custom analyzer instance created by defineAnalyzer.
|
|
77
|
+
*/
|
|
78
|
+
export interface CustomAnalyzer extends ContentAnalyzer {
|
|
79
|
+
/** Analyzer definition metadata */
|
|
80
|
+
readonly definition: AnalyzerDefinition;
|
|
81
|
+
/** Custom content extraction function if provided */
|
|
82
|
+
readonly extractContent?: (tool: string, args: Record<string, unknown>) => string | null;
|
|
83
|
+
/** Initialize the analyzer */
|
|
84
|
+
init(): Promise<void>;
|
|
85
|
+
/** Cleanup the analyzer */
|
|
86
|
+
cleanup(): Promise<void>;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Define a custom content analyzer.
|
|
90
|
+
*
|
|
91
|
+
* This is the primary API for creating custom analyzers that can be loaded
|
|
92
|
+
* from external files and used in tollgate.yaml configurations.
|
|
93
|
+
*
|
|
94
|
+
* @param definition - The analyzer definition
|
|
95
|
+
* @returns A ContentAnalyzer instance ready for registration
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* // Basic GraphQL analyzer
|
|
100
|
+
* import { defineAnalyzer } from '@dotsetlabs/tollgate/sdk';
|
|
101
|
+
*
|
|
102
|
+
* export default defineAnalyzer({
|
|
103
|
+
* name: 'graphql',
|
|
104
|
+
* description: 'Analyzes GraphQL queries and mutations',
|
|
105
|
+
* analyze(content, context) {
|
|
106
|
+
* // Parse and analyze the GraphQL content
|
|
107
|
+
* if (content.includes('mutation')) {
|
|
108
|
+
* return { risk: 'write', reason: 'GraphQL mutation detected' };
|
|
109
|
+
* }
|
|
110
|
+
* if (content.includes('subscription')) {
|
|
111
|
+
* return { risk: 'read', reason: 'GraphQL subscription' };
|
|
112
|
+
* }
|
|
113
|
+
* return { risk: 'read', reason: 'GraphQL query' };
|
|
114
|
+
* }
|
|
115
|
+
* });
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* // Analyzer with custom content extraction
|
|
121
|
+
* export default defineAnalyzer({
|
|
122
|
+
* name: 'json-rpc',
|
|
123
|
+
* extractContent(tool, args) {
|
|
124
|
+
* // Extract the method name from JSON-RPC calls
|
|
125
|
+
* if (args.method && typeof args.method === 'string') {
|
|
126
|
+
* return args.method;
|
|
127
|
+
* }
|
|
128
|
+
* return null;
|
|
129
|
+
* },
|
|
130
|
+
* analyze(content) {
|
|
131
|
+
* if (content.startsWith('admin.')) {
|
|
132
|
+
* return { risk: 'dangerous', reason: 'Admin RPC method' };
|
|
133
|
+
* }
|
|
134
|
+
* if (content.startsWith('write.')) {
|
|
135
|
+
* return { risk: 'write', reason: 'Write RPC method' };
|
|
136
|
+
* }
|
|
137
|
+
* return { risk: 'read', reason: 'Read RPC method' };
|
|
138
|
+
* }
|
|
139
|
+
* });
|
|
140
|
+
* ```
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* // Async analyzer with initialization
|
|
145
|
+
* export default defineAnalyzer({
|
|
146
|
+
* name: 'ml-classifier',
|
|
147
|
+
* async init() {
|
|
148
|
+
* // Load ML model, connect to service, etc.
|
|
149
|
+
* await loadModel();
|
|
150
|
+
* },
|
|
151
|
+
* async cleanup() {
|
|
152
|
+
* // Cleanup resources
|
|
153
|
+
* await unloadModel();
|
|
154
|
+
* },
|
|
155
|
+
* async analyze(content) {
|
|
156
|
+
* const classification = await classifyContent(content);
|
|
157
|
+
* return {
|
|
158
|
+
* risk: classification.risk,
|
|
159
|
+
* reason: classification.reason,
|
|
160
|
+
* metadata: { confidence: classification.confidence }
|
|
161
|
+
* };
|
|
162
|
+
* }
|
|
163
|
+
* });
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
export declare function defineAnalyzer(definition: AnalyzerDefinition): CustomAnalyzer;
|
|
167
|
+
/**
|
|
168
|
+
* Define an async analyzer that can perform asynchronous operations.
|
|
169
|
+
*
|
|
170
|
+
* Use this when your analyzer needs to:
|
|
171
|
+
* - Make network requests
|
|
172
|
+
* - Read files
|
|
173
|
+
* - Call external services
|
|
174
|
+
* - Use ML models
|
|
175
|
+
*
|
|
176
|
+
* @param definition - The analyzer definition with async analyze function
|
|
177
|
+
* @returns An async analyzer instance
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* import { defineAsyncAnalyzer } from '@dotsetlabs/tollgate/sdk';
|
|
182
|
+
*
|
|
183
|
+
* export default defineAsyncAnalyzer({
|
|
184
|
+
* name: 'virus-scan',
|
|
185
|
+
* async analyze(content) {
|
|
186
|
+
* const result = await scanForMalware(content);
|
|
187
|
+
* if (result.isMalicious) {
|
|
188
|
+
* return { risk: 'dangerous', reason: `Malware detected: ${result.threat}` };
|
|
189
|
+
* }
|
|
190
|
+
* return { risk: 'safe', reason: 'No threats detected' };
|
|
191
|
+
* }
|
|
192
|
+
* });
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
export declare function defineAsyncAnalyzer(definition: Omit<AnalyzerDefinition, 'analyze'> & {
|
|
196
|
+
analyze: (content: string, context?: AnalyzerContext) => Promise<AnalysisResult>;
|
|
197
|
+
}): CustomAnalyzer & {
|
|
198
|
+
analyzeAsync: (content: string, context?: AnalyzerContext) => Promise<AnalysisResult>;
|
|
199
|
+
};
|
|
200
|
+
/**
|
|
201
|
+
* Helper to create a simple pattern-based analyzer.
|
|
202
|
+
*
|
|
203
|
+
* @param name - Analyzer name
|
|
204
|
+
* @param patterns - Map of regex patterns to risk levels
|
|
205
|
+
* @param defaultRisk - Default risk if no patterns match
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* ```typescript
|
|
209
|
+
* import { createPatternAnalyzer } from '@dotsetlabs/tollgate/sdk';
|
|
210
|
+
*
|
|
211
|
+
* export default createPatternAnalyzer('redis', {
|
|
212
|
+
* dangerous: [/FLUSHALL/i, /FLUSHDB/i, /CONFIG\s+SET/i],
|
|
213
|
+
* destructive: [/DEL\s/i, /EXPIRE\s/i],
|
|
214
|
+
* write: [/SET\s/i, /HSET\s/i, /LPUSH\s/i],
|
|
215
|
+
* read: [/GET\s/i, /HGET\s/i, /LRANGE\s/i],
|
|
216
|
+
* }, 'read');
|
|
217
|
+
* ```
|
|
218
|
+
*/
|
|
219
|
+
export declare function createPatternAnalyzer(name: string, patterns: Partial<Record<RiskLevel, RegExp[]>>, defaultRisk?: RiskLevel): CustomAnalyzer;
|
|
220
|
+
/**
|
|
221
|
+
* Type guard to check if an analyzer is a CustomAnalyzer.
|
|
222
|
+
*/
|
|
223
|
+
export declare function isCustomAnalyzer(analyzer: ContentAnalyzer): analyzer is CustomAnalyzer;
|
|
224
|
+
/**
|
|
225
|
+
* Type guard to check if an analyzer supports async analysis.
|
|
226
|
+
*/
|
|
227
|
+
export declare function isAsyncAnalyzer(analyzer: ContentAnalyzer): analyzer is CustomAnalyzer & {
|
|
228
|
+
analyzeAsync: (content: string, context?: AnalyzerContext) => Promise<AnalysisResult>;
|
|
229
|
+
};
|
|
230
|
+
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/analyzers/sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9F;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAElG;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;IAEhF;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,mCAAmC;IACnC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,qDAAqD;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;IACzF,8BAA8B;IAC9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,2BAA2B;IAC3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,kBAAkB,GAAG,cAAc,CAsC7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IAChD,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAClF,GACA,cAAc,GAAG;IAAE,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;CAAE,CAmC5G;AA0BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,EAC9C,WAAW,GAAE,SAAkB,GAC9B,cAAc,CA6BhB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,IAAI,cAAc,CAEtF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,eAAe,GACxB,QAAQ,IAAI,cAAc,GAAG;IAAE,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;CAAE,CAExH"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom Analyzer SDK
|
|
3
|
+
*
|
|
4
|
+
* Provides a simple API for creating custom content analyzers that can be
|
|
5
|
+
* loaded from external files and used in tollgate.yaml configurations.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // my-graphql-analyzer.ts
|
|
10
|
+
* import { defineAnalyzer } from '@dotsetlabs/tollgate/sdk';
|
|
11
|
+
*
|
|
12
|
+
* export default defineAnalyzer({
|
|
13
|
+
* name: 'graphql',
|
|
14
|
+
* analyze(content, context) {
|
|
15
|
+
* if (content.includes('mutation')) {
|
|
16
|
+
* return { risk: 'write', reason: 'GraphQL mutation detected' };
|
|
17
|
+
* }
|
|
18
|
+
* return { risk: 'read', reason: 'GraphQL query' };
|
|
19
|
+
* }
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @module analyzers/sdk
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Validates an analyzer definition.
|
|
27
|
+
*/
|
|
28
|
+
function validateDefinition(definition) {
|
|
29
|
+
if (!definition.name) {
|
|
30
|
+
throw new Error('Analyzer definition must have a name');
|
|
31
|
+
}
|
|
32
|
+
// Validate name format
|
|
33
|
+
if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(definition.name)) {
|
|
34
|
+
throw new Error(`Invalid analyzer name "${definition.name}". ` +
|
|
35
|
+
'Name must start with a letter and contain only alphanumeric characters, hyphens, and underscores.');
|
|
36
|
+
}
|
|
37
|
+
if (typeof definition.analyze !== 'function') {
|
|
38
|
+
throw new Error(`Analyzer "${definition.name}" must have an analyze function`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Define a custom content analyzer.
|
|
43
|
+
*
|
|
44
|
+
* This is the primary API for creating custom analyzers that can be loaded
|
|
45
|
+
* from external files and used in tollgate.yaml configurations.
|
|
46
|
+
*
|
|
47
|
+
* @param definition - The analyzer definition
|
|
48
|
+
* @returns A ContentAnalyzer instance ready for registration
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* // Basic GraphQL analyzer
|
|
53
|
+
* import { defineAnalyzer } from '@dotsetlabs/tollgate/sdk';
|
|
54
|
+
*
|
|
55
|
+
* export default defineAnalyzer({
|
|
56
|
+
* name: 'graphql',
|
|
57
|
+
* description: 'Analyzes GraphQL queries and mutations',
|
|
58
|
+
* analyze(content, context) {
|
|
59
|
+
* // Parse and analyze the GraphQL content
|
|
60
|
+
* if (content.includes('mutation')) {
|
|
61
|
+
* return { risk: 'write', reason: 'GraphQL mutation detected' };
|
|
62
|
+
* }
|
|
63
|
+
* if (content.includes('subscription')) {
|
|
64
|
+
* return { risk: 'read', reason: 'GraphQL subscription' };
|
|
65
|
+
* }
|
|
66
|
+
* return { risk: 'read', reason: 'GraphQL query' };
|
|
67
|
+
* }
|
|
68
|
+
* });
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* // Analyzer with custom content extraction
|
|
74
|
+
* export default defineAnalyzer({
|
|
75
|
+
* name: 'json-rpc',
|
|
76
|
+
* extractContent(tool, args) {
|
|
77
|
+
* // Extract the method name from JSON-RPC calls
|
|
78
|
+
* if (args.method && typeof args.method === 'string') {
|
|
79
|
+
* return args.method;
|
|
80
|
+
* }
|
|
81
|
+
* return null;
|
|
82
|
+
* },
|
|
83
|
+
* analyze(content) {
|
|
84
|
+
* if (content.startsWith('admin.')) {
|
|
85
|
+
* return { risk: 'dangerous', reason: 'Admin RPC method' };
|
|
86
|
+
* }
|
|
87
|
+
* if (content.startsWith('write.')) {
|
|
88
|
+
* return { risk: 'write', reason: 'Write RPC method' };
|
|
89
|
+
* }
|
|
90
|
+
* return { risk: 'read', reason: 'Read RPC method' };
|
|
91
|
+
* }
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* // Async analyzer with initialization
|
|
98
|
+
* export default defineAnalyzer({
|
|
99
|
+
* name: 'ml-classifier',
|
|
100
|
+
* async init() {
|
|
101
|
+
* // Load ML model, connect to service, etc.
|
|
102
|
+
* await loadModel();
|
|
103
|
+
* },
|
|
104
|
+
* async cleanup() {
|
|
105
|
+
* // Cleanup resources
|
|
106
|
+
* await unloadModel();
|
|
107
|
+
* },
|
|
108
|
+
* async analyze(content) {
|
|
109
|
+
* const classification = await classifyContent(content);
|
|
110
|
+
* return {
|
|
111
|
+
* risk: classification.risk,
|
|
112
|
+
* reason: classification.reason,
|
|
113
|
+
* metadata: { confidence: classification.confidence }
|
|
114
|
+
* };
|
|
115
|
+
* }
|
|
116
|
+
* });
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export function defineAnalyzer(definition) {
|
|
120
|
+
validateDefinition(definition);
|
|
121
|
+
const analyzer = {
|
|
122
|
+
name: definition.name,
|
|
123
|
+
definition,
|
|
124
|
+
extractContent: definition.extractContent,
|
|
125
|
+
analyze(content, context) {
|
|
126
|
+
const result = definition.analyze(content, context);
|
|
127
|
+
// Handle both sync and async results
|
|
128
|
+
if (result instanceof Promise) {
|
|
129
|
+
// For synchronous API compatibility, we need to handle this carefully
|
|
130
|
+
// The actual async handling happens in the policy engine
|
|
131
|
+
throw new Error(`Async analyzer "${definition.name}" returned a Promise. ` +
|
|
132
|
+
'Use analyzeAsync() for async analyzers or make the analyze function synchronous.');
|
|
133
|
+
}
|
|
134
|
+
return normalizeResult(result, definition.name);
|
|
135
|
+
},
|
|
136
|
+
async init() {
|
|
137
|
+
if (definition.init) {
|
|
138
|
+
await definition.init();
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
async cleanup() {
|
|
142
|
+
if (definition.cleanup) {
|
|
143
|
+
await definition.cleanup();
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
return analyzer;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Define an async analyzer that can perform asynchronous operations.
|
|
151
|
+
*
|
|
152
|
+
* Use this when your analyzer needs to:
|
|
153
|
+
* - Make network requests
|
|
154
|
+
* - Read files
|
|
155
|
+
* - Call external services
|
|
156
|
+
* - Use ML models
|
|
157
|
+
*
|
|
158
|
+
* @param definition - The analyzer definition with async analyze function
|
|
159
|
+
* @returns An async analyzer instance
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```typescript
|
|
163
|
+
* import { defineAsyncAnalyzer } from '@dotsetlabs/tollgate/sdk';
|
|
164
|
+
*
|
|
165
|
+
* export default defineAsyncAnalyzer({
|
|
166
|
+
* name: 'virus-scan',
|
|
167
|
+
* async analyze(content) {
|
|
168
|
+
* const result = await scanForMalware(content);
|
|
169
|
+
* if (result.isMalicious) {
|
|
170
|
+
* return { risk: 'dangerous', reason: `Malware detected: ${result.threat}` };
|
|
171
|
+
* }
|
|
172
|
+
* return { risk: 'safe', reason: 'No threats detected' };
|
|
173
|
+
* }
|
|
174
|
+
* });
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
export function defineAsyncAnalyzer(definition) {
|
|
178
|
+
validateDefinition(definition);
|
|
179
|
+
const analyzer = {
|
|
180
|
+
name: definition.name,
|
|
181
|
+
definition: definition,
|
|
182
|
+
extractContent: definition.extractContent,
|
|
183
|
+
// Sync version throws - use analyzeAsync instead
|
|
184
|
+
analyze(_content, _context) {
|
|
185
|
+
throw new Error(`Analyzer "${definition.name}" is async. Use analyzeAsync() instead of analyze().`);
|
|
186
|
+
},
|
|
187
|
+
// Async version for actual use
|
|
188
|
+
async analyzeAsync(content, context) {
|
|
189
|
+
const result = await definition.analyze(content, context);
|
|
190
|
+
return normalizeResult(result, definition.name);
|
|
191
|
+
},
|
|
192
|
+
async init() {
|
|
193
|
+
if (definition.init) {
|
|
194
|
+
await definition.init();
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
async cleanup() {
|
|
198
|
+
if (definition.cleanup) {
|
|
199
|
+
await definition.cleanup();
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
return analyzer;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Normalize an analysis result to ensure all required fields are present.
|
|
207
|
+
*/
|
|
208
|
+
function normalizeResult(result, analyzerName) {
|
|
209
|
+
if (!result || typeof result !== 'object') {
|
|
210
|
+
throw new Error(`Analyzer "${analyzerName}" returned invalid result: ${JSON.stringify(result)}`);
|
|
211
|
+
}
|
|
212
|
+
const validRisks = ['safe', 'read', 'write', 'destructive', 'dangerous'];
|
|
213
|
+
if (!validRisks.includes(result.risk)) {
|
|
214
|
+
throw new Error(`Analyzer "${analyzerName}" returned invalid risk level "${result.risk}". ` +
|
|
215
|
+
`Valid levels: ${validRisks.join(', ')}`);
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
risk: result.risk,
|
|
219
|
+
reason: result.reason ?? `Classified as ${result.risk} by ${analyzerName}`,
|
|
220
|
+
triggers: result.triggers,
|
|
221
|
+
metadata: result.metadata,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Helper to create a simple pattern-based analyzer.
|
|
226
|
+
*
|
|
227
|
+
* @param name - Analyzer name
|
|
228
|
+
* @param patterns - Map of regex patterns to risk levels
|
|
229
|
+
* @param defaultRisk - Default risk if no patterns match
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* import { createPatternAnalyzer } from '@dotsetlabs/tollgate/sdk';
|
|
234
|
+
*
|
|
235
|
+
* export default createPatternAnalyzer('redis', {
|
|
236
|
+
* dangerous: [/FLUSHALL/i, /FLUSHDB/i, /CONFIG\s+SET/i],
|
|
237
|
+
* destructive: [/DEL\s/i, /EXPIRE\s/i],
|
|
238
|
+
* write: [/SET\s/i, /HSET\s/i, /LPUSH\s/i],
|
|
239
|
+
* read: [/GET\s/i, /HGET\s/i, /LRANGE\s/i],
|
|
240
|
+
* }, 'read');
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
export function createPatternAnalyzer(name, patterns, defaultRisk = 'read') {
|
|
244
|
+
return defineAnalyzer({
|
|
245
|
+
name,
|
|
246
|
+
description: `Pattern-based analyzer for ${name}`,
|
|
247
|
+
analyze(content) {
|
|
248
|
+
// Check patterns from highest to lowest risk
|
|
249
|
+
const riskOrder = ['dangerous', 'destructive', 'write', 'read', 'safe'];
|
|
250
|
+
for (const risk of riskOrder) {
|
|
251
|
+
const riskPatterns = patterns[risk];
|
|
252
|
+
if (riskPatterns) {
|
|
253
|
+
for (const pattern of riskPatterns) {
|
|
254
|
+
if (pattern.test(content)) {
|
|
255
|
+
return {
|
|
256
|
+
risk,
|
|
257
|
+
reason: `Matched pattern: ${pattern.source}`,
|
|
258
|
+
triggers: [pattern.source],
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
risk: defaultRisk,
|
|
266
|
+
reason: `No patterns matched, defaulting to ${defaultRisk}`,
|
|
267
|
+
};
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Type guard to check if an analyzer is a CustomAnalyzer.
|
|
273
|
+
*/
|
|
274
|
+
export function isCustomAnalyzer(analyzer) {
|
|
275
|
+
return 'definition' in analyzer && 'init' in analyzer && 'cleanup' in analyzer;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Type guard to check if an analyzer supports async analysis.
|
|
279
|
+
*/
|
|
280
|
+
export function isAsyncAnalyzer(analyzer) {
|
|
281
|
+
return 'analyzeAsync' in analyzer && typeof analyzer.analyzeAsync === 'function';
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/analyzers/sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AnalysisResult, ContentAnalyzer, AnalyzerContext } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Shell Command Analyzer
|
|
4
|
+
*
|
|
5
|
+
* Detects dangerous shell commands and patterns:
|
|
6
|
+
* - Destructive commands (rm -rf, mkfs, dd)
|
|
7
|
+
* - Privilege escalation (sudo, su)
|
|
8
|
+
* - Remote code execution (curl | bash)
|
|
9
|
+
* - System modification (chmod 777, chown)
|
|
10
|
+
*/
|
|
11
|
+
export declare class ShellAnalyzer implements ContentAnalyzer {
|
|
12
|
+
readonly name = "shell";
|
|
13
|
+
private readonly FORBIDDEN_COMMANDS;
|
|
14
|
+
private readonly DANGEROUS_PATTERNS;
|
|
15
|
+
private readonly CAUTION_PATTERNS;
|
|
16
|
+
analyze(command: string, _context?: AnalyzerContext): AnalysisResult;
|
|
17
|
+
private normalizeCommand;
|
|
18
|
+
private hasSuspiciousChaining;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/analyzers/shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AASnF;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,IAAI,WAAW;IAGxB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CA6BjC;IAGF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CA2IjC;IAGF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CA+B/B;IAEF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,cAAc;IAwDpE,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,qBAAqB;CA0B9B"}
|