@holokai/sdk 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 +396 -0
- package/dist/core/api/base.controller.d.ts +8 -0
- package/dist/core/api/base.controller.d.ts.map +1 -0
- package/dist/core/api/base.controller.js +41 -0
- package/dist/core/api/base.controller.js.map +1 -0
- package/dist/core/api/index.d.ts +3 -0
- package/dist/core/api/index.d.ts.map +1 -0
- package/dist/core/api/index.js +3 -0
- package/dist/core/api/index.js.map +1 -0
- package/dist/core/api/types.d.ts +19 -0
- package/dist/core/api/types.d.ts.map +1 -0
- package/dist/core/api/types.js +2 -0
- package/dist/core/api/types.js.map +1 -0
- package/dist/core/entities/analysisResult.d.ts +8 -0
- package/dist/core/entities/analysisResult.d.ts.map +1 -0
- package/dist/core/entities/analysisResult.js +2 -0
- package/dist/core/entities/analysisResult.js.map +1 -0
- package/dist/core/entities/application.d.ts +12 -0
- package/dist/core/entities/application.d.ts.map +1 -0
- package/dist/core/entities/application.js +2 -0
- package/dist/core/entities/application.js.map +1 -0
- package/dist/core/entities/base.d.ts +8 -0
- package/dist/core/entities/base.d.ts.map +1 -0
- package/dist/core/entities/base.js +2 -0
- package/dist/core/entities/base.js.map +1 -0
- package/dist/core/entities/evaluator.d.ts +13 -0
- package/dist/core/entities/evaluator.d.ts.map +1 -0
- package/dist/core/entities/evaluator.data.d.ts +9 -0
- package/dist/core/entities/evaluator.data.d.ts.map +1 -0
- package/dist/core/entities/evaluator.data.js +2 -0
- package/dist/core/entities/evaluator.data.js.map +1 -0
- package/dist/core/entities/evaluator.js +2 -0
- package/dist/core/entities/evaluator.js.map +1 -0
- package/dist/core/entities/index.d.ts +11 -0
- package/dist/core/entities/index.d.ts.map +1 -0
- package/dist/core/entities/index.js +3 -0
- package/dist/core/entities/index.js.map +1 -0
- package/dist/core/entities/llm.request.d.ts +19 -0
- package/dist/core/entities/llm.request.d.ts.map +1 -0
- package/dist/core/entities/llm.request.js +2 -0
- package/dist/core/entities/llm.request.js.map +1 -0
- package/dist/core/entities/llm.response.d.ts +24 -0
- package/dist/core/entities/llm.response.d.ts.map +1 -0
- package/dist/core/entities/llm.response.js +3 -0
- package/dist/core/entities/llm.response.js.map +1 -0
- package/dist/core/entities/llm.status.d.ts +9 -0
- package/dist/core/entities/llm.status.d.ts.map +1 -0
- package/dist/core/entities/llm.status.js +11 -0
- package/dist/core/entities/llm.status.js.map +1 -0
- package/dist/core/entities/model.d.ts +14 -0
- package/dist/core/entities/model.d.ts.map +1 -0
- package/dist/core/entities/model.js +2 -0
- package/dist/core/entities/model.js.map +1 -0
- package/dist/core/entities/provider.d.ts +12 -0
- package/dist/core/entities/provider.d.ts.map +1 -0
- package/dist/core/entities/provider.js +2 -0
- package/dist/core/entities/provider.js.map +1 -0
- package/dist/core/id/index.d.ts +2 -0
- package/dist/core/id/index.d.ts.map +1 -0
- package/dist/core/id/index.js +13 -0
- package/dist/core/id/index.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger/holo-logger-factory.d.ts +6 -0
- package/dist/core/logger/holo-logger-factory.d.ts.map +1 -0
- package/dist/core/logger/holo-logger-factory.js +16 -0
- package/dist/core/logger/holo-logger-factory.js.map +1 -0
- package/dist/core/logger/index.d.ts +4 -0
- package/dist/core/logger/index.d.ts.map +1 -0
- package/dist/core/logger/index.js +4 -0
- package/dist/core/logger/index.js.map +1 -0
- package/dist/core/logger/logger.d.ts +24 -0
- package/dist/core/logger/logger.d.ts.map +1 -0
- package/dist/core/logger/logger.js +16 -0
- package/dist/core/logger/logger.js.map +1 -0
- package/dist/core/logger/mixin.d.ts +29 -0
- package/dist/core/logger/mixin.d.ts.map +1 -0
- package/dist/core/logger/mixin.js +29 -0
- package/dist/core/logger/mixin.js.map +1 -0
- package/dist/core/mixins/constructor.d.ts +2 -0
- package/dist/core/mixins/constructor.d.ts.map +1 -0
- package/dist/core/mixins/constructor.js +2 -0
- package/dist/core/mixins/constructor.js.map +1 -0
- package/dist/core/mixins/index.d.ts +2 -0
- package/dist/core/mixins/index.d.ts.map +1 -0
- package/dist/core/mixins/index.js +2 -0
- package/dist/core/mixins/index.js.map +1 -0
- package/dist/core/parsers/find-last.d.ts +3 -0
- package/dist/core/parsers/find-last.d.ts.map +1 -0
- package/dist/core/parsers/find-last.js +22 -0
- package/dist/core/parsers/find-last.js.map +1 -0
- package/dist/core/parsers/index.d.ts +6 -0
- package/dist/core/parsers/index.d.ts.map +1 -0
- package/dist/core/parsers/index.js +6 -0
- package/dist/core/parsers/index.js.map +1 -0
- package/dist/core/parsers/parsers.d.ts +6 -0
- package/dist/core/parsers/parsers.d.ts.map +1 -0
- package/dist/core/parsers/parsers.js +32 -0
- package/dist/core/parsers/parsers.js.map +1 -0
- package/dist/core/parsers/pick-defined.d.ts +2 -0
- package/dist/core/parsers/pick-defined.d.ts.map +1 -0
- package/dist/core/parsers/pick-defined.js +4 -0
- package/dist/core/parsers/pick-defined.js.map +1 -0
- package/dist/core/parsers/pick-headers.d.ts +3 -0
- package/dist/core/parsers/pick-headers.d.ts.map +1 -0
- package/dist/core/parsers/pick-headers.js +41 -0
- package/dist/core/parsers/pick-headers.js.map +1 -0
- package/dist/core/parsers/safe-parse.d.ts +2 -0
- package/dist/core/parsers/safe-parse.d.ts.map +1 -0
- package/dist/core/parsers/safe-parse.js +12 -0
- package/dist/core/parsers/safe-parse.js.map +1 -0
- package/dist/core/routes.d.ts +19 -0
- package/dist/core/routes.d.ts.map +1 -0
- package/dist/core/routes.js +8 -0
- package/dist/core/routes.js.map +1 -0
- package/dist/core/worker/envelopes.d.ts +27 -0
- package/dist/core/worker/envelopes.d.ts.map +1 -0
- package/dist/core/worker/envelopes.js +2 -0
- package/dist/core/worker/envelopes.js.map +1 -0
- package/dist/core/worker/index.d.ts +5 -0
- package/dist/core/worker/index.d.ts.map +1 -0
- package/dist/core/worker/index.js +5 -0
- package/dist/core/worker/index.js.map +1 -0
- package/dist/core/worker/prompt.d.ts +9 -0
- package/dist/core/worker/prompt.d.ts.map +1 -0
- package/dist/core/worker/prompt.js +2 -0
- package/dist/core/worker/prompt.js.map +1 -0
- package/dist/core/worker/request.d.ts +33 -0
- package/dist/core/worker/request.d.ts.map +1 -0
- package/dist/core/worker/request.js +2 -0
- package/dist/core/worker/request.js.map +1 -0
- package/dist/core/worker/response.d.ts +18 -0
- package/dist/core/worker/response.d.ts.map +1 -0
- package/dist/core/worker/response.js +2 -0
- package/dist/core/worker/response.js.map +1 -0
- package/dist/holo/content.d.ts +14 -0
- package/dist/holo/content.d.ts.map +1 -0
- package/dist/holo/content.js +7 -0
- package/dist/holo/content.js.map +1 -0
- package/dist/holo/factories/index.d.ts +3 -0
- package/dist/holo/factories/index.d.ts.map +1 -0
- package/dist/holo/factories/index.js +3 -0
- package/dist/holo/factories/index.js.map +1 -0
- package/dist/holo/factories/request-factory.d.ts +3 -0
- package/dist/holo/factories/request-factory.d.ts.map +1 -0
- package/dist/holo/factories/request-factory.js +8 -0
- package/dist/holo/factories/request-factory.js.map +1 -0
- package/dist/holo/factories/response-factory.d.ts +7 -0
- package/dist/holo/factories/response-factory.d.ts.map +1 -0
- package/dist/holo/factories/response-factory.js +64 -0
- package/dist/holo/factories/response-factory.js.map +1 -0
- package/dist/holo/index.d.ts +17 -0
- package/dist/holo/index.d.ts.map +1 -0
- package/dist/holo/index.js +19 -0
- package/dist/holo/index.js.map +1 -0
- package/dist/holo/messages.d.ts +10 -0
- package/dist/holo/messages.d.ts.map +1 -0
- package/dist/holo/messages.js +2 -0
- package/dist/holo/messages.js.map +1 -0
- package/dist/holo/requests.d.ts +32 -0
- package/dist/holo/requests.d.ts.map +1 -0
- package/dist/holo/requests.js +7 -0
- package/dist/holo/requests.js.map +1 -0
- package/dist/holo/responses.d.ts +57 -0
- package/dist/holo/responses.d.ts.map +1 -0
- package/dist/holo/responses.js +2 -0
- package/dist/holo/responses.js.map +1 -0
- package/dist/holo/tools.d.ts +25 -0
- package/dist/holo/tools.d.ts.map +1 -0
- package/dist/holo/tools.js +2 -0
- package/dist/holo/tools.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin/base.d.ts +109 -0
- package/dist/plugin/base.d.ts.map +1 -0
- package/dist/plugin/base.js +131 -0
- package/dist/plugin/base.js.map +1 -0
- package/dist/plugin/context.d.ts +21 -0
- package/dist/plugin/context.d.ts.map +1 -0
- package/dist/plugin/context.js +2 -0
- package/dist/plugin/context.js.map +1 -0
- package/dist/plugin/errors.d.ts +24 -0
- package/dist/plugin/errors.d.ts.map +1 -0
- package/dist/plugin/errors.js +31 -0
- package/dist/plugin/errors.js.map +1 -0
- package/dist/plugin/evaluator.d.ts +243 -0
- package/dist/plugin/evaluator.d.ts.map +1 -0
- package/dist/plugin/evaluator.js +2 -0
- package/dist/plugin/evaluator.js.map +1 -0
- package/dist/plugin/guard.d.ts +307 -0
- package/dist/plugin/guard.d.ts.map +1 -0
- package/dist/plugin/guard.js +46 -0
- package/dist/plugin/guard.js.map +1 -0
- package/dist/plugin/index.d.ts +14 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +14 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/manifest.d.ts +349 -0
- package/dist/plugin/manifest.d.ts.map +1 -0
- package/dist/plugin/manifest.js +6 -0
- package/dist/plugin/manifest.js.map +1 -0
- package/dist/plugin/provider.d.ts +55 -0
- package/dist/plugin/provider.d.ts.map +1 -0
- package/dist/plugin/provider.js +2 -0
- package/dist/plugin/provider.js.map +1 -0
- package/dist/plugin/registry.d.ts +7 -0
- package/dist/plugin/registry.d.ts.map +1 -0
- package/dist/plugin/registry.js +2 -0
- package/dist/plugin/registry.js.map +1 -0
- package/dist/provider/auditor/base.d.ts +21 -0
- package/dist/provider/auditor/base.d.ts.map +1 -0
- package/dist/provider/auditor/base.js +58 -0
- package/dist/provider/auditor/base.js.map +1 -0
- package/dist/provider/auditor/index.d.ts +2 -0
- package/dist/provider/auditor/index.d.ts.map +1 -0
- package/dist/provider/auditor/index.js +2 -0
- package/dist/provider/auditor/index.js.map +1 -0
- package/dist/provider/base.d.ts +39 -0
- package/dist/provider/base.d.ts.map +1 -0
- package/dist/provider/base.js +169 -0
- package/dist/provider/base.js.map +1 -0
- package/dist/provider/index.d.ts +6 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/index.js +6 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/provider/translator/base.d.ts +32 -0
- package/dist/provider/translator/base.d.ts.map +1 -0
- package/dist/provider/translator/base.js +33 -0
- package/dist/provider/translator/base.js.map +1 -0
- package/dist/provider/translator/index.d.ts +3 -0
- package/dist/provider/translator/index.d.ts.map +1 -0
- package/dist/provider/translator/index.js +3 -0
- package/dist/provider/translator/index.js.map +1 -0
- package/dist/provider/translator/stream.d.ts +24 -0
- package/dist/provider/translator/stream.d.ts.map +1 -0
- package/dist/provider/translator/stream.js +50 -0
- package/dist/provider/translator/stream.js.map +1 -0
- package/dist/provider/types.d.ts +107 -0
- package/dist/provider/types.d.ts.map +1 -0
- package/dist/provider/types.js +38 -0
- package/dist/provider/types.js.map +1 -0
- package/dist/provider/wire/base.d.ts +50 -0
- package/dist/provider/wire/base.d.ts.map +1 -0
- package/dist/provider/wire/base.js +99 -0
- package/dist/provider/wire/base.js.map +1 -0
- package/dist/provider/wire/index.d.ts +2 -0
- package/dist/provider/wire/index.d.ts.map +1 -0
- package/dist/provider/wire/index.js +2 -0
- package/dist/provider/wire/index.js.map +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { IPlugin } from "./base";
|
|
2
|
+
/**
|
|
3
|
+
* Types of guards
|
|
4
|
+
*/
|
|
5
|
+
export declare enum GuardType {
|
|
6
|
+
CONTENT_FILTER = "content_filter",
|
|
7
|
+
RATE_LIMITER = "rate_limiter",
|
|
8
|
+
TOKEN_LIMITER = "token_limiter",
|
|
9
|
+
PII_DETECTOR = "pii_detector",
|
|
10
|
+
PROMPT_INJECTION = "prompt_injection",
|
|
11
|
+
CUSTOM = "custom"
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Guard rule condition for matching requests/responses
|
|
15
|
+
*/
|
|
16
|
+
export interface GuardCondition {
|
|
17
|
+
/**
|
|
18
|
+
* Field to check (e.g., 'content', 'headers.authorization', 'model')
|
|
19
|
+
*/
|
|
20
|
+
field: string;
|
|
21
|
+
/**
|
|
22
|
+
* Operator for comparison
|
|
23
|
+
*/
|
|
24
|
+
operator: 'equals' | 'contains' | 'regex' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'not_in';
|
|
25
|
+
/**
|
|
26
|
+
* Value(s) to compare against
|
|
27
|
+
*/
|
|
28
|
+
value: string | number | boolean | string[] | number[];
|
|
29
|
+
/**
|
|
30
|
+
* Case sensitivity for string comparisons
|
|
31
|
+
*/
|
|
32
|
+
caseSensitive?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Negate the condition
|
|
35
|
+
*/
|
|
36
|
+
negate?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Guard rule definition
|
|
40
|
+
*/
|
|
41
|
+
export interface GuardRule {
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
description?: string;
|
|
45
|
+
enabled: boolean;
|
|
46
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
47
|
+
action: 'allow' | 'block' | 'redact' | 'warn';
|
|
48
|
+
/**
|
|
49
|
+
* Conditions that must be met for this rule to apply
|
|
50
|
+
* If multiple conditions, all must match (AND logic)
|
|
51
|
+
*/
|
|
52
|
+
conditions?: GuardCondition[];
|
|
53
|
+
/**
|
|
54
|
+
* Logical operator for multiple conditions
|
|
55
|
+
*/
|
|
56
|
+
conditionOperator?: 'AND' | 'OR';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Details about a guard rule violation
|
|
60
|
+
*/
|
|
61
|
+
export interface GuardViolation {
|
|
62
|
+
/**
|
|
63
|
+
* ID of the rule that was violated
|
|
64
|
+
*/
|
|
65
|
+
rule: string;
|
|
66
|
+
/**
|
|
67
|
+
* Severity of the violation
|
|
68
|
+
*/
|
|
69
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
70
|
+
/**
|
|
71
|
+
* Human-readable message about the violation
|
|
72
|
+
*/
|
|
73
|
+
message: string;
|
|
74
|
+
/**
|
|
75
|
+
* Field/location where violation occurred
|
|
76
|
+
*/
|
|
77
|
+
field?: string;
|
|
78
|
+
/**
|
|
79
|
+
* The value that caused the violation (for debugging)
|
|
80
|
+
*/
|
|
81
|
+
offendingValue?: string | number | boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Suggested remediation action
|
|
84
|
+
*/
|
|
85
|
+
remediation?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Guard processing metadata
|
|
89
|
+
*/
|
|
90
|
+
export interface GuardMetadata {
|
|
91
|
+
/**
|
|
92
|
+
* Time taken to process in milliseconds
|
|
93
|
+
*/
|
|
94
|
+
processingTimeMs?: number;
|
|
95
|
+
/**
|
|
96
|
+
* Number of rules evaluated
|
|
97
|
+
*/
|
|
98
|
+
rulesEvaluated?: number;
|
|
99
|
+
/**
|
|
100
|
+
* Guard plugin that performed the validation
|
|
101
|
+
*/
|
|
102
|
+
guardPlugin?: string;
|
|
103
|
+
/**
|
|
104
|
+
* Additional plugin-specific metadata
|
|
105
|
+
*/
|
|
106
|
+
[key: string]: string | number | boolean | undefined;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Result of guard validation
|
|
110
|
+
*/
|
|
111
|
+
export interface GuardResult {
|
|
112
|
+
passed: boolean;
|
|
113
|
+
violations?: GuardViolation[];
|
|
114
|
+
/**
|
|
115
|
+
* Content that was redacted/sanitized (if action was 'redact')
|
|
116
|
+
* Contains the sanitized version of the original content
|
|
117
|
+
*/
|
|
118
|
+
redactedContent?: string | object;
|
|
119
|
+
/**
|
|
120
|
+
* Processing metadata
|
|
121
|
+
*/
|
|
122
|
+
metadata?: GuardMetadata;
|
|
123
|
+
errors?: string[];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Rate limiting configuration
|
|
127
|
+
*/
|
|
128
|
+
export interface RateLimiting {
|
|
129
|
+
/**
|
|
130
|
+
* Max requests per time window
|
|
131
|
+
*/
|
|
132
|
+
maxRequests: number;
|
|
133
|
+
/**
|
|
134
|
+
* Time window in seconds
|
|
135
|
+
*/
|
|
136
|
+
windowSeconds: number;
|
|
137
|
+
/**
|
|
138
|
+
* Rate limit per user or global
|
|
139
|
+
*/
|
|
140
|
+
scope: 'user' | 'global' | 'ip';
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Custom pattern for PII detection
|
|
144
|
+
*/
|
|
145
|
+
export interface CustomPattern {
|
|
146
|
+
name: string;
|
|
147
|
+
pattern: string;
|
|
148
|
+
flags?: string;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* PII detection settings
|
|
152
|
+
*/
|
|
153
|
+
export interface PIIDetection {
|
|
154
|
+
/**
|
|
155
|
+
* Types of PII to detect
|
|
156
|
+
*/
|
|
157
|
+
detectTypes: Array<'email' | 'phone' | 'ssn' | 'credit_card' | 'ip_address' | 'custom'>;
|
|
158
|
+
/**
|
|
159
|
+
* Custom regex patterns for PII detection
|
|
160
|
+
*/
|
|
161
|
+
customPatterns?: CustomPattern[];
|
|
162
|
+
/**
|
|
163
|
+
* Action when PII is detected
|
|
164
|
+
*/
|
|
165
|
+
action: 'block' | 'redact' | 'warn';
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Content filtering settings
|
|
169
|
+
*/
|
|
170
|
+
export interface ContentFiltering {
|
|
171
|
+
/**
|
|
172
|
+
* Blocked keywords/phrases
|
|
173
|
+
*/
|
|
174
|
+
blockedTerms?: string[];
|
|
175
|
+
/**
|
|
176
|
+
* Allowed domains for URLs
|
|
177
|
+
*/
|
|
178
|
+
allowedDomains?: string[];
|
|
179
|
+
/**
|
|
180
|
+
* Maximum content length
|
|
181
|
+
*/
|
|
182
|
+
maxContentLength?: number;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Configuration for guard plugins
|
|
186
|
+
*/
|
|
187
|
+
export interface GuardConfig {
|
|
188
|
+
enabled: boolean;
|
|
189
|
+
rules: GuardRule[];
|
|
190
|
+
mode: 'blocking' | 'monitoring';
|
|
191
|
+
/**
|
|
192
|
+
* Rate limiting configuration (if applicable)
|
|
193
|
+
*/
|
|
194
|
+
rateLimiting?: RateLimiting;
|
|
195
|
+
/**
|
|
196
|
+
* PII detection settings (if applicable)
|
|
197
|
+
*/
|
|
198
|
+
piiDetection?: PIIDetection;
|
|
199
|
+
/**
|
|
200
|
+
* Content filtering settings (if applicable)
|
|
201
|
+
*/
|
|
202
|
+
contentFiltering?: ContentFiltering;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Guard plugin interface for request/response validation and security.
|
|
206
|
+
* @template TRequest The type of requests validated by this guard.
|
|
207
|
+
* @template TResponse The type of responses validated by this guard.
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* ```typescript
|
|
211
|
+
* class ContentFilterPlugin
|
|
212
|
+
* extends BasePlugin
|
|
213
|
+
* implements IGuardPlugin<unknown, unknown>
|
|
214
|
+
* {
|
|
215
|
+
* async validateRequest(request: unknown): Promise<GuardResult> {
|
|
216
|
+
* const violations = await this.checkContent(request);
|
|
217
|
+
* return {
|
|
218
|
+
* passed: violations.length === 0,
|
|
219
|
+
* violations
|
|
220
|
+
* };
|
|
221
|
+
* }
|
|
222
|
+
*
|
|
223
|
+
* async validateResponse(response: unknown): Promise<GuardResult> {
|
|
224
|
+
* return { passed: true };
|
|
225
|
+
* }
|
|
226
|
+
*
|
|
227
|
+
* getGuardType(): GuardType {
|
|
228
|
+
* return GuardType.CONTENT_FILTER;
|
|
229
|
+
* }
|
|
230
|
+
*
|
|
231
|
+
* getRules(): GuardRule[] {
|
|
232
|
+
* return this.currentRules;
|
|
233
|
+
* }
|
|
234
|
+
*
|
|
235
|
+
* async configure(config: Partial<GuardConfig>): Promise<void> {
|
|
236
|
+
* Object.assign(this.config, config);
|
|
237
|
+
* }
|
|
238
|
+
* }
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
export interface IGuardPlugin<TRequest = unknown, TResponse = unknown> extends IPlugin {
|
|
242
|
+
/**
|
|
243
|
+
* Validate an incoming request.
|
|
244
|
+
* @param request The request to validate (typed per guard).
|
|
245
|
+
* @returns Validation result with pass/fail and violations.
|
|
246
|
+
*/
|
|
247
|
+
validateRequest(request: TRequest): Promise<GuardResult>;
|
|
248
|
+
/**
|
|
249
|
+
* Validate an outgoing response.
|
|
250
|
+
* @param response The response to validate (typed per guard).
|
|
251
|
+
* @returns Validation result with pass/fail and violations.
|
|
252
|
+
*/
|
|
253
|
+
validateResponse(response: TResponse): Promise<GuardResult>;
|
|
254
|
+
/**
|
|
255
|
+
* Get the type of guard.
|
|
256
|
+
* @returns The guard type.
|
|
257
|
+
*/
|
|
258
|
+
getGuardType(): GuardType;
|
|
259
|
+
/**
|
|
260
|
+
* Get configured rules.
|
|
261
|
+
* @returns Array of guard rules.
|
|
262
|
+
*/
|
|
263
|
+
getRules(): GuardRule[];
|
|
264
|
+
/**
|
|
265
|
+
* Configure the guard. Implementations may merge with existing config.
|
|
266
|
+
* @param config Guard configuration (partial updates allowed).
|
|
267
|
+
*/
|
|
268
|
+
configure(config: Partial<GuardConfig>): Promise<void>;
|
|
269
|
+
}
|
|
270
|
+
export declare const GuardResultSchema: {
|
|
271
|
+
$schema: string;
|
|
272
|
+
type: string;
|
|
273
|
+
properties: {
|
|
274
|
+
passed: {
|
|
275
|
+
type: string;
|
|
276
|
+
};
|
|
277
|
+
errors: {
|
|
278
|
+
type: string;
|
|
279
|
+
items: {
|
|
280
|
+
type: string;
|
|
281
|
+
};
|
|
282
|
+
};
|
|
283
|
+
};
|
|
284
|
+
required: string[];
|
|
285
|
+
if: {
|
|
286
|
+
properties: {
|
|
287
|
+
passed: {
|
|
288
|
+
const: boolean;
|
|
289
|
+
};
|
|
290
|
+
};
|
|
291
|
+
};
|
|
292
|
+
then: {
|
|
293
|
+
required: string[];
|
|
294
|
+
properties: {
|
|
295
|
+
errors: {
|
|
296
|
+
minItems: number;
|
|
297
|
+
};
|
|
298
|
+
};
|
|
299
|
+
};
|
|
300
|
+
else: {
|
|
301
|
+
properties: {
|
|
302
|
+
errors: boolean;
|
|
303
|
+
};
|
|
304
|
+
};
|
|
305
|
+
additionalProperties: boolean;
|
|
306
|
+
};
|
|
307
|
+
//# sourceMappingURL=guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/plugin/guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types of guards
|
|
3
|
+
*/
|
|
4
|
+
export var GuardType;
|
|
5
|
+
(function (GuardType) {
|
|
6
|
+
GuardType["CONTENT_FILTER"] = "content_filter";
|
|
7
|
+
GuardType["RATE_LIMITER"] = "rate_limiter";
|
|
8
|
+
GuardType["TOKEN_LIMITER"] = "token_limiter";
|
|
9
|
+
GuardType["PII_DETECTOR"] = "pii_detector";
|
|
10
|
+
GuardType["PROMPT_INJECTION"] = "prompt_injection";
|
|
11
|
+
GuardType["CUSTOM"] = "custom";
|
|
12
|
+
})(GuardType || (GuardType = {}));
|
|
13
|
+
export const GuardResultSchema = {
|
|
14
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
15
|
+
"type": "object",
|
|
16
|
+
"properties": {
|
|
17
|
+
"passed": {
|
|
18
|
+
"type": "boolean"
|
|
19
|
+
},
|
|
20
|
+
"errors": {
|
|
21
|
+
"type": "array",
|
|
22
|
+
"items": {
|
|
23
|
+
"type": "string"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"required": ["passed"],
|
|
28
|
+
"if": {
|
|
29
|
+
"properties": { "passed": { "const": false } }
|
|
30
|
+
},
|
|
31
|
+
"then": {
|
|
32
|
+
"required": ["errors"],
|
|
33
|
+
"properties": {
|
|
34
|
+
"errors": {
|
|
35
|
+
"minItems": 1
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"else": {
|
|
40
|
+
"properties": {
|
|
41
|
+
"errors": false
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"additionalProperties": false
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/plugin/guard.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACjB,8CAAiC,CAAA;IACjC,0CAA6B,CAAA;IAC7B,4CAA+B,CAAA;IAC/B,0CAA6B,CAAA;IAC7B,kDAAqC,CAAA;IACrC,8BAAiB,CAAA;AACrB,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB;AA2SD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,SAAS,EAAE,8CAA8C;IACzD,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE;QACV,QAAQ,EAAE;YACN,MAAM,EAAE,SAAS;SACpB;QACD,QAAQ,EAAE;YACN,MAAM,EAAE,OAAO;YACf,OAAO,EAAE;gBACL,MAAM,EAAE,QAAQ;aACnB;SACJ;KACJ;IACD,UAAU,EAAE,CAAC,QAAQ,CAAC;IACtB,IAAI,EAAE;QACF,YAAY,EAAE,EAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,EAAC;KAC7C;IACD,MAAM,EAAE;QACJ,UAAU,EAAE,CAAC,QAAQ,CAAC;QACtB,YAAY,EAAE;YACV,QAAQ,EAAE;gBACN,UAAU,EAAE,CAAC;aAChB;SACJ;KACJ;IACD,MAAM,EAAE;QACJ,YAAY,EAAE;YACV,QAAQ,EAAE,KAAK;SAClB;KACJ;IACD,sBAAsB,EAAE,KAAK;CAChC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin SDK version for compatibility checking
|
|
3
|
+
*/
|
|
4
|
+
export declare const PLUGIN_SDK_VERSION = "0.1.0";
|
|
5
|
+
export * from './base';
|
|
6
|
+
export * from './context';
|
|
7
|
+
export * from './provider';
|
|
8
|
+
export * from './errors';
|
|
9
|
+
export * from './evaluator';
|
|
10
|
+
export * from './guard';
|
|
11
|
+
export * from './manifest';
|
|
12
|
+
export * from './provider';
|
|
13
|
+
export * from './registry';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin SDK version for compatibility checking
|
|
3
|
+
*/
|
|
4
|
+
export const PLUGIN_SDK_VERSION = '0.1.0';
|
|
5
|
+
export * from './base';
|
|
6
|
+
export * from './context';
|
|
7
|
+
export * from './provider';
|
|
8
|
+
export * from './errors';
|
|
9
|
+
export * from './evaluator';
|
|
10
|
+
export * from './guard';
|
|
11
|
+
export * from './manifest';
|
|
12
|
+
export * from './provider';
|
|
13
|
+
export * from './registry';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|